{"version":3,"sources":["src/app/pages/CalorieFriend/Plans/PlanMeals/Meal/MealLayout/MealItemPresentation/meal-item-presentation.module.ts","node_modules/@ngx-formly/core/__ivy_ngcc__/fesm2015/ngx-formly-core.js","node_modules/rxjs/internal/util/isIterable.js","src/app/pages/CalorieFriend/FitnessPlans/PlanDef/fitness-plan-def-base.component.ts","node_modules/rxjs/internal/scheduled/scheduleObservable.js","node_modules/rxjs/internal/scheduled/scheduleArray.js","src/app/pages/CalorieFriend/FitnessPlans/FitnessSummary/fitness-summary.component.ts","src/app/pages/CalorieFriend/FitnessPlans/FitnessSummary/fitness-summary.component.html","src/app/pages/CalorieFriend/FitnessPlans/ExerciseEdit/exercise-edit.component.html","src/app/pages/CalorieFriend/FitnessPlans/ExerciseEdit/exercise-edit.component.ts","src/app/pages/CalorieFriend/FitnessPlans/FitnessItemPresentation/fitness-item-presentation-base.component.ts","src/app/pages/CalorieFriend/FitnessPlans/FitnessItemPresentation/fitness-item-presentation.component.html","src/app/pages/CalorieFriend/FitnessPlans/FitnessItemPresentation/fitness-item-presentation.component.ts","src/app/pages/CalorieFriend/FitnessPlans/AddFitnessItems/add-fitness-items.component.html","src/app/pages/CalorieFriend/FitnessPlans/AddFitnessItems/add-fitness-items.component.ts","src/app/pages/CalorieFriend/FitnessPlans/FitnessItemsListPresentation/fitness-items-list-presentation.component.html","src/app/pages/CalorieFriend/FitnessPlans/FitnessItemsListPresentation/fitness-items-list-presentation.component.ts","src/app/pages/CalorieFriend/FitnessPlans/FitnessBlock/fitness-block.component.html","src/app/pages/CalorieFriend/FitnessPlans/FitnessBlock/fitness-block-mobile.component.html","src/app/pages/CalorieFriend/FitnessPlans/FitnessBlock/fitness-block.component.ts","src/app/pages/CalorieFriend/FitnessPlans/FitnessWorkout/FitnessWorkoutOverlay/fitness-workout-overlay.component.html","src/app/pages/CalorieFriend/FitnessPlans/FitnessWorkout/FitnessWorkoutOverlay/fitness-workout-overlay.component.ts","src/app/pages/CalorieFriend/FitnessPlans/FitnessItemPresentation/fitness-item-presentation-overlay.component.html","src/app/pages/CalorieFriend/FitnessPlans/FitnessItemPresentation/fitness-item-presentation-overlay.component.ts","src/app/pages/CalorieFriend/FitnessPlans/FitnessWorkout/fitness-workout.component.html","src/app/pages/CalorieFriend/FitnessPlans/FitnessWorkout/fitness-workout.component.ts","src/app/pages/CalorieFriend/FitnessPlans/PlanDay/fitness-plan-day.component.html","src/app/pages/CalorieFriend/FitnessPlans/PlanDay/fitness-plan-day.component.ts","src/app/pages/CalorieFriend/PatientSheetView/biometric-history-list/biometric-history-list.component.html","src/app/pages/CalorieFriend/PatientSheetView/biometric-history-list/biometric-history-list.component.ts","src/app/pages/CalorieFriend/PatientSheetView/assessment-list/assessment-list.component.html","src/app/pages/CalorieFriend/PatientSheetView/assessment-list/assessment-list.component.ts","src/app/pages/CalorieFriend/PatientSheetView/patient-progress/patient-progress.component.ts","src/app/pages/CalorieFriend/PatientSheetView/patient-progress/patient-progress.component.html","src/app/pages/CalorieFriend/CustomUIOps.ts","node_modules/rxjs/internal/util/subscribeTo.js","src/app/pages/CalorieFriend/Goals/GoalDef/goal-def.component.ts","src/app/pages/CalorieFriend/Goals/GoalDef/goal-def.component.html","node_modules/rxjs/internal/util/isPromise.js","node_modules/rxjs/internal/util/pipe.js","node_modules/rxjs/internal/scheduled/scheduled.js","node_modules/rxjs/internal/Subscriber.js","node_modules/rxjs/internal/util/isObject.js","node_modules/rxjs/internal/Observer.js","node_modules/chartjs-plugin-annotation/src/events.js","node_modules/rxjs/internal/util/isInteropObservable.js","node_modules/rxjs/internal/util/UnsubscriptionError.js","node_modules/rxjs/internal/scheduled/scheduleIterable.js","node_modules/rxjs/internal/observable/forkJoin.js","node_modules/rxjs/internal/util/hostReportError.js","node_modules/chartjs-plugin-annotation/src/types/box.js","node_modules/rxjs/internal/util/subscribeToArray.js","src/app/pages/CalorieFriend/Plans/PlanTemplate/ListSelection/plan-template-select.component.ts","src/app/pages/CalorieFriend/Plans/PlanTemplate/ListSelection/plan-template-select.component.html","node_modules/rxjs/internal/Observable.js","src/app/pages/CalorieFriend/PatientSheetView/Assessments/edit-assessment.component.ts","src/app/pages/CalorieFriend/PatientSheetView/Assessments/edit-assessment.component.html","src/app/@core/utils/defaultFormValues.ts","src/app/admin/public-templates/template-create/template-create.component.ts","src/app/admin/public-templates/template-create/template-create.component.html","node_modules/rxjs/internal/symbol/iterator.js","src/app/pages/CalorieFriend/Plans/PlanMeals/Meal/MealLayout/MealPresentation/meal-presentation.module.ts","node_modules/rxjs/internal/util/toSubscriber.js","node_modules/chartjs-plugin-annotation/src/index.js","node_modules/rxjs/internal/util/subscribeToPromise.js","node_modules/file-saver/src/FileSaver.js","src/app/pages/CalorieFriend/PatientSheetView/patient-general-info/patient-general-info.component.ts","src/app/pages/CalorieFriend/PatientSheetView/patient-general-info/patient-general-info.component.html","node_modules/rxjs/internal/observable/from.js","node_modules/chartjs-plugin-annotation/src/annotation.js","src/app/pages/CalorieFriend/custom-exercise/CustomExerciseDef/customexercise-def.component.ts","src/app/pages/CalorieFriend/custom-exercise/CustomExerciseDef/customexercise-def.component.html","src/app/pages/CalorieFriend/PatientSheetView/Assessments/DescriptiveValues.ts","src/app/pages/CalorieFriend/Plans/PlanMeals/Meal/MealLayout/MealItemsPresentation/meal-items-presentation.module.ts","node_modules/d3-selection/src/selector.js","node_modules/d3-selection/src/selectorAll.js","node_modules/d3-selection/src/matcher.js","node_modules/d3-selection/src/selection/sparse.js","node_modules/d3-selection/src/selection/enter.js","node_modules/d3-selection/src/selection/data.js","node_modules/d3-selection/src/selection/sort.js","node_modules/d3-selection/src/selection/call.js","node_modules/d3-selection/src/namespaces.js","node_modules/d3-selection/src/namespace.js","node_modules/d3-selection/src/selection/attr.js","node_modules/d3-selection/src/window.js","node_modules/d3-selection/src/selection/style.js","node_modules/d3-selection/src/selection/property.js","node_modules/d3-selection/src/selection/classed.js","node_modules/d3-selection/src/selection/text.js","node_modules/d3-selection/src/selection/html.js","node_modules/d3-selection/src/selection/raise.js","node_modules/d3-selection/src/selection/lower.js","node_modules/d3-selection/src/creator.js","node_modules/d3-selection/src/selection/insert.js","node_modules/d3-selection/src/selection/remove.js","node_modules/d3-selection/src/selection/clone.js","node_modules/d3-selection/src/selection/on.js","node_modules/d3-selection/src/selection/dispatch.js","node_modules/d3-selection/src/selection/index.js","node_modules/d3-selection/src/selection/select.js","node_modules/d3-selection/src/selection/selectAll.js","node_modules/d3-selection/src/selection/filter.js","node_modules/d3-selection/src/constant.js","node_modules/d3-selection/src/selection/exit.js","node_modules/d3-selection/src/selection/join.js","node_modules/d3-selection/src/selection/merge.js","node_modules/d3-selection/src/selection/order.js","node_modules/d3-selection/src/selection/nodes.js","node_modules/d3-selection/src/selection/node.js","node_modules/d3-selection/src/selection/size.js","node_modules/d3-selection/src/selection/empty.js","node_modules/d3-selection/src/selection/each.js","node_modules/d3-selection/src/selection/append.js","node_modules/d3-selection/src/selection/datum.js","node_modules/d3-dispatch/src/dispatch.js","node_modules/d3-color/src/define.js","node_modules/d3-color/src/color.js","node_modules/d3-interpolate/src/basis.js","node_modules/d3-interpolate/src/constant.js","node_modules/d3-interpolate/src/color.js","node_modules/d3-interpolate/src/rgb.js","node_modules/d3-interpolate/src/basisClosed.js","node_modules/d3-interpolate/src/date.js","node_modules/d3-timer/src/timer.js","node_modules/d3-interpolate/src/number.js","node_modules/d3-interpolate/src/string.js","node_modules/d3-timer/src/timeout.js","node_modules/d3-transition/src/transition/schedule.js","node_modules/d3-transition/src/interrupt.js","node_modules/d3-interpolate/src/transform/parse.js","node_modules/d3-interpolate/src/transform/decompose.js","node_modules/d3-interpolate/src/transform/index.js","node_modules/d3-transition/src/transition/tween.js","node_modules/d3-transition/src/transition/interpolate.js","node_modules/d3-transition/src/transition/attr.js","node_modules/d3-transition/src/transition/attrTween.js","node_modules/d3-transition/src/transition/delay.js","node_modules/d3-transition/src/transition/duration.js","node_modules/d3-transition/src/transition/ease.js","node_modules/d3-transition/src/transition/on.js","node_modules/d3-transition/src/transition/remove.js","node_modules/d3-transition/src/transition/selection.js","node_modules/d3-transition/src/transition/style.js","node_modules/d3-transition/src/transition/styleTween.js","node_modules/d3-transition/src/transition/textTween.js","node_modules/d3-transition/src/transition/index.js","node_modules/d3-transition/src/transition/select.js","node_modules/d3-transition/src/transition/selectAll.js","node_modules/d3-transition/src/transition/filter.js","node_modules/d3-transition/src/transition/merge.js","node_modules/d3-transition/src/transition/transition.js","node_modules/d3-transition/src/transition/text.js","node_modules/d3-transition/src/transition/end.js","node_modules/d3-transition/src/selection/transition.js","node_modules/d3-ease/src/cubic.js","node_modules/d3-brush/src/brush.js","node_modules/d3-transition/src/selection/index.js","node_modules/d3-transition/src/selection/interrupt.js","node_modules/d3-array/src/ascending.js","node_modules/d3-array/src/ticks.js","node_modules/d3-time/src/interval.js","node_modules/d3-time/src/year.js","node_modules/d3-time/src/week.js","node_modules/d3-time/src/duration.js","node_modules/d3-time/src/month.js","node_modules/d3-time/src/day.js","node_modules/d3-time/src/millisecond.js","node_modules/d3-time/src/hour.js","node_modules/d3-time/src/minute.js","node_modules/d3-time/src/second.js","node_modules/d3-time/src/utcWeek.js","node_modules/d3-time/src/utcDay.js","node_modules/d3-time/src/utcYear.js","node_modules/d3-time-format/src/locale.js","node_modules/d3-array/src/bisector.js","node_modules/d3-time-format/src/defaultLocale.js","node_modules/d3-array/src/bisect.js","node_modules/d3-scale/src/time.js","node_modules/d3-format/src/formatSpecifier.js","node_modules/d3-format/src/formatDecimal.js","node_modules/d3-format/src/locale.js","node_modules/d3-shape/src/curve/linear.js","node_modules/d3-format/src/defaultLocale.js","node_modules/d3-scale/src/ordinal.js","node_modules/d3-path/src/path.js","node_modules/d3-shape/src/line.js","node_modules/d3-shape/src/noop.js","node_modules/d3-shape/src/curve/cardinal.js","node_modules/d3-shape/src/curve/cardinalClosed.js","node_modules/d3-shape/src/curve/radial.js","node_modules/d3-shape/src/math.js","node_modules/d3-shape/src/arc.js","node_modules/d3-hierarchy/src/treemap/dice.js","node_modules/d3-hierarchy/src/treemap/slice.js","node_modules/d3-hierarchy/src/hierarchy/count.js","node_modules/d3-hierarchy/src/hierarchy/index.js","node_modules/d3-hierarchy/src/treemap/squarify.js","node_modules/d3-hierarchy/src/hierarchy/each.js","node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","node_modules/d3-hierarchy/src/hierarchy/sum.js","node_modules/d3-hierarchy/src/hierarchy/sort.js","node_modules/d3-hierarchy/src/hierarchy/path.js","node_modules/d3-hierarchy/src/hierarchy/ancestors.js","node_modules/d3-hierarchy/src/hierarchy/descendants.js","node_modules/d3-hierarchy/src/hierarchy/leaves.js","node_modules/d3-hierarchy/src/hierarchy/links.js","node_modules/d3-hierarchy/src/stratify.js","node_modules/@swimlane/ngx-charts/__ivy_ngcc__/fesm2015/swimlane-ngx-charts.js","node_modules/ngx-image-cropper/node_modules/tslib/tslib.es6.js","node_modules/ngx-image-cropper/__ivy_ngcc__/fesm2015/ngx-image-cropper.js","src/app/pages/CalorieFriend/calorie-friend.component.ts","src/app/pages/CalorieFriend/Patients/UpgradePlan/upgrade-plan.component.ts","src/app/pages/CalorieFriend/Patients/UpgradePlan/upgrade-plan.component.html","src/app/pages/CalorieFriend/InitialUserInfo/UserInfoEnums.ts","src/app/pages/CalorieFriend/InitialUserInfo/initial-user-info.component.ts","src/app/pages/CalorieFriend/InitialUserInfo/initial-user-info.component.html","src/app/pages/CalorieFriend/premium-modal/premium-modal.component.ts","src/app/pages/CalorieFriend/premium-modal/premium-modal.component.html","src/app/pages/CalorieFriend/premium-trial-reminder/premium-trial-reminder.component.html","src/app/pages/CalorieFriend/premium-trial-reminder/premium-trial-reminder.component.ts","src/app/pages/CalorieFriend/Patients/CustomPatientNameField/CustomPatientNameField.component.ts","src/app/pages/CalorieFriend/Patients/patients.component.html","src/app/pages/CalorieFriend/Patients/patients.component.ts","src/app/pages/CalorieFriend/Patient/patient.component.html","src/app/pages/CalorieFriend/Patient/patient.component.ts","src/app/pages/CalorieFriend/Goals/GoalList/goal-list.component.ts","src/app/pages/CalorieFriend/Goals/GoalList/goal-list.component.html","src/app/pages/CalorieFriend/Goals/goal-form-resolver.module.ts","src/app/SupportOps.ts","src/app/pages/CalorieFriend/how-to-modal/how-to-modal.component.html","src/app/pages/CalorieFriend/how-to-modal/how-to-modal.component.ts","src/app/pages/CalorieFriend/Plans/PlanDef/PlanService.ts","src/app/pages/CalorieFriend/Plans/PlanDef/edit-plan-def.component.html","src/app/pages/CalorieFriend/Plans/PlanDef/plan-def.component.ts","src/app/pages/CalorieFriend/Plans/PlanDef/plan-day-label.component.html","src/app/pages/CalorieFriend/Plans/PlanList/template-generate.component.ts","src/app/pages/CalorieFriend/Plans/PlanList/plan-list.component.ts","src/app/pages/CalorieFriend/Plans/PlanList/plan-list.component.html","src/app/pages/CalorieFriend/Patients/SectionLayout/section-layout.component.ts","src/app/pages/CalorieFriend/Patients/SectionLayout/section-layout.component.html","src/app/pages/CalorieFriend/PatientSheetView/program-overview/program-overview.component.ts","src/app/pages/CalorieFriend/PatientSheetView/program-overview/program-overview.component.html","src/app/pages/CalorieFriend/PatientSheetView/calendar-modal/calendar-modal.component.html","src/app/pages/CalorieFriend/PatientSheetView/calendar-modal/calendar-modal.component.ts","src/app/pages/CalorieFriend/FitnessPlans/plan-template-create/plan-template-create.component.ts","src/app/pages/CalorieFriend/FitnessPlans/plan-template-create/plan-template-create.component.html","src/app/pages/CalorieFriend/PatientSheetView/patient-program/plan-list-item/plan-list-item.component.html","src/app/pages/CalorieFriend/PatientSheetView/patient-program/plan-list-item/plan-list-item.component.ts","src/app/pages/CalorieFriend/PatientSheetView/patient-program/patient-program.component.html","src/app/pages/CalorieFriend/PatientSheetView/patient-program/patient-program.component.ts","src/app/pages/CalorieFriend/PatientSheetView/macro-goals/macro-goals.component.html","src/app/pages/CalorieFriend/PatientSheetView/macro-goals/macro-goals.component.ts","src/app/pages/CalorieFriend/PatientSheetView/patient-sheet-view.component.html","src/app/pages/CalorieFriend/PatientSheetView/patient-sheet-view.component.ts","src/app/pages/CalorieFriend/Plans/Viewer/View/meal-viewer.component.ts","src/app/pages/CalorieFriend/Plans/Viewer/View/meal-viewer.component.html","src/app/pages/CalorieFriend/SubscriptionPlan/subscription-plan.component.html","src/app/pages/CalorieFriend/SubscriptionPlan/subscription-plan.component.ts","src/app/pages/CalorieFriend/FitnessPlans/PlanDef/fitness-edit-plan-def.component.html","src/app/pages/CalorieFriend/FitnessPlans/PlanDef/fitness-plan-def.component.ts","src/app/pages/CalorieFriend/program-templates/program-template-create/program-template-create.component.ts","src/app/pages/CalorieFriend/program-templates/program-template-create/program-template-create.component.html","src/app/pages/CalorieFriend/assing-plan-client/assing-plan-client.component.html","src/app/pages/CalorieFriend/assing-plan-client/assing-plan-client.component.ts","src/app/pages/CalorieFriend/Plans/template-list/template-list.component.html","src/app/pages/CalorieFriend/Plans/template-list/template-list.component.ts","src/app/pages/CalorieFriend/Plans/fitness-plan-templates/templates.component.ts","src/app/pages/CalorieFriend/Plans/fitness-plan-templates/templates.component.html","src/app/pages/CalorieFriend/Plans/fitness-plan-templates/template.resolver.ts","src/app/pages/CalorieFriend/custom-exercise/exercise-list/exercise-list.component.html","src/app/pages/CalorieFriend/custom-exercise/exercise-list/exercise-list.component.ts","src/app/pages/CalorieFriend/Plans/meal-plan-templates/template.resolver.ts","src/app/pages/CalorieFriend/Plans/meal-plan-templates/templates.component.ts","src/app/pages/CalorieFriend/Plans/meal-plan-templates/templates.component.html","src/app/pages/CalorieFriend/custom-foods/food-list/food-list.component.html","src/app/pages/CalorieFriend/custom-foods/food-list/food-list.component.ts","src/app/pages/CalorieFriend/custom-foods/custom-foods.component.ts","src/app/pages/CalorieFriend/custom-foods/custom-foods.component.html","src/app/@components/app-settings/app-settings.component.html","src/app/@components/app-settings/app-settings.component.ts","src/app/pages/CalorieFriend/brand/brand.component.html","src/app/pages/CalorieFriend/brand/brand.component.ts","src/app/pages/CalorieFriend/help-guides/help-guides.component.ts","src/app/pages/CalorieFriend/help-guides/help-guides.component.html","src/app/pages/CalorieFriend/billing/payment-settings/payment-settings.component.html","src/app/pages/CalorieFriend/billing/payment-settings/payment-settings.component.ts","src/app/pages/CalorieFriend/billing/billing.component.html","src/app/pages/CalorieFriend/billing/billing.component.ts","src/app/pages/CalorieFriend/program-templates/program-templates.component.ts","src/app/pages/CalorieFriend/program-templates/program-templates.component.html","src/app/pages/CalorieFriend/program-templates/program-template-edit/program-template-edit.html","src/app/pages/CalorieFriend/program-templates/program-template-edit/program-template-edit.component.ts","src/app/pages/CalorieFriend/assessmentSetting/assessmentFormSettings.component.html","src/app/pages/CalorieFriend/assessmentSetting/assessmentFormSettings.component.ts","node_modules/@kolkov/angular-editor/__ivy_ngcc__/fesm2015/kolkov-angular-editor.js","src/app/pages/CalorieFriend/assessmentSetting/assessmentSetting.component.html","src/app/pages/CalorieFriend/calorie-friend-routing.module.ts","src/app/pages/CalorieFriend/assessmentSetting/assessmentSetting.component.ts","src/app/@theme/formly/formly-fields/formly-field-nb-input.ts","src/app/@theme/formly/formly-fields/formly-field-nb-radio.ts","src/app/@theme/formly/formly-fields/formly-field-nb-checkbox.ts","src/app/@theme/formly/formly-fields/formly-field-nb-textarea.ts","src/app/@theme/formly/formly-fields/formly-field-nb-select.ts","src/app/@theme/formly/formly-fields/formly-wrapper-error.ts","src/app/@theme/formly/formly-fields/formly-wrapper-error.component.ts","src/app/@theme/formly/formly-fields/formly-field-nb-input-number.ts","src/app/@theme/formly/formly-fields/formly-field-nb-weight.ts","src/app/@theme/formly/formly-nebullar.module.ts","src/app/pages/CalorieFriend/calorie-friend.module.ts","node_modules/rxjs/internal/util/isArray.js","node_modules/rxjs/internal/config.js","node_modules/rxjs/internal/scheduled/schedulePromise.js","node_modules/rxjs/internal/util/subscribeToObservable.js","node_modules/rxjs/internal/symbol/rxSubscriber.js","src/app/pages/CalorieFriend/Plans/Viewer/PatientProfile/patient-profile.component.ts","src/app/pages/CalorieFriend/Plans/Viewer/PatientProfile/patient-profile.component.html","src/app/pages/CalorieFriend/Plans/Viewer/PatientProfile/patient-profile-anonymous.component.html","src/app/pages/CalorieFriend/Plans/PlanDef/plan-def-base.component.ts","src/app/pages/CalorieFriend/Plans/PlanMeals/Meal/meal.component.ts","src/app/pages/CalorieFriend/Plans/PlanMeals/Meal/meal.component.html","src/app/pages/CalorieFriend/Plans/PlanDay/plan-day.component.html","src/app/pages/CalorieFriend/Plans/PlanDay/plan-day-mobile.component.html","src/app/pages/CalorieFriend/Plans/PlanDay/plan-day.report-component.html","src/app/pages/CalorieFriend/Plans/PlanDay/plan-day.component.ts","node_modules/rxjs/internal/util/subscribeToIterable.js","node_modules/rxjs/internal/util/isFunction.js","node_modules/rxjs/internal/operators/map.js","src/app/admin/public-foods/meal-metrics-graph/meal-metrics-graph.module.ts","node_modules/chartjs-plugin-annotation/src/types/line.js","src/app/pages/CalorieFriend/PatientSheetView/GoalsListView/goals-list-view.component.ts","src/app/pages/CalorieFriend/PatientSheetView/GoalsListView/goals-list-view.component.html","node_modules/rxjs/internal/util/noop.js","node_modules/chartjs-plugin-annotation/src/helpers.js","node_modules/chartjs-plugin-annotation/src/element.js","node_modules/rxjs/internal/util/isArrayLike.js","node_modules/rxjs/internal/util/canReportError.js","node_modules/rxjs/internal/Subscription.js","node_modules/rxjs/internal/symbol/observable.js"],"names":["MealItemPresentationModule","_c0","FormlyForm_formly_field_0_Template","rf","ctx","field_r2","$implicit","form","options","model","_c1","_c2","FormlyField_ng_template_0_Template","_c3","FormlyGroup_formly_field_0_Template","getFieldId","formId","field","index","id","type","template","isFunction","prototype","constructor","name","key","join","getKeyPath","_keyPath","path","indexOf","replace","split","Array","isArray","slice","FORMLY_VALIDATORS","assignFieldValue","value","paths","length","root","parent","undefined","resetOnHide","k","pop","reduce","i","isObject","test","clone","getFieldValue","reverseDeepMerge","dest","args","forEach","src","srcArg","isNullOrUndefined","obj2","obj1","Object","getPrototypeOf","isUndefined","x","changingThisBreaksApplicationSecurity","Set","Map","_isAMomentObject","Date","getTime","map","v","proto","c","create","setPrototypeOf","keys","newVal","prop","propDesc","getOwnPropertyDescriptor","get","defineProperty","defineHiddenProp","defaultValue","enumerable","writable","configurable","wrapProperty","o","setFn","_observers","fns","push","currentValue","firstChange","set","previousValue","changeFn","splice","FORMLY_CONFIG","FormlyConfig","this","types","validators","wrappers","messages","templateManipulators","preWrapper","postWrapper","extras","checkExpressionOn","lazyRender","showError","formControl","invalid","touched","parentForm","submitted","validation","show","extensions","config","setType","validator","setValidator","wrapper","setWrapper","manipulators","console","warn","manipulator","setManipulator","validationMessages","addValidatorMessage","message","extension","assign","option","hasOwnProperty","Error","mergeExtendedType","getType","defaultOptions","extendDefaults","extends","optionsTypes","componentRef","resolveFieldTypeRef","instance","component","_resolver","_injector","resolveComponentFactory","destroy","setTypeWrapper","class","method","extendedType","ɵfac","t","ɵprov","token","factory","providedIn","ngInjectableDef","FormlyFormBuilder","formlyConfig","componentFactoryResolver","injector","fieldGroup","core","_setOptions","callback","_updateTreeValidity","bind","_buildForm","_checkField","getExtensions","prePopulate","onPopulate","f","postPopulate","formState","fieldChanges","_hiddenFieldsForCheck","_markForCheck","_componentRefs","ref","markForCheck","_buildField","registerControl","control","emitEvent","setValidators","setAsyncValidators","templateOptions","disabled","disable","enable","registerOnDisabledChange","patchValue","updateControl","setControl","_hide","updateValidity","onlySelf","status","updateValueAndValidity","emit","opts","action","_forEachChild","cb","controls","FormlyForm","formlyBuilder","ngZone","immutable","parentFormGroup","modelChange","_modelChangeValue","modelChangeSubs","modelChange$","modelChangeSub","pipe","onStable","asObservable","subscribe","runGuarded","checkExpressionChange","_model","fields","_fields","_options","content","hasContent","node","nativeElement","nextSibling","nodeType","Node","ELEMENT_NODE","TEXT_NODE","textContent","trim","changes","clearControl","setOptions","updateInitialValue","clearModelSubscriptions","buildForm","trackModelChanges","unsubscribe","next","resetModel","_initialModel","resetForm","reset","emitModelChange","_trackModelChanges","rootKey","valueChanges","y","updateOn","debounce","modelOptions","default","parsers","parserFn","changeModel","observers","unshift","sub","ɵcmp","selectors","viewQuery","_t","first","inputs","outputs","features","ngContentSelectors","decls","vars","consts","directives","FormlyField","encapsulation","renderer","resolver","elementRef","hideDeprecation","warnDeprecation","hostObservers","componentRefs","hooksObservers","detectFieldBuild","m","triggerHook","render","resetRefs","containerRef","clear","wps","getWrapper","createComponent","attachComponentRef","viewRef","detach","destroyed","insert","renderField","changeDetectorRef","detectChanges","hooks","r","lifecycle","setStyle","className","removeAttribute","setAttribute","hide","filter","FormlyAttributes","_document","uiAttributesCache","uiAttributes","uiEvents","listeners","events","eventName","$event","onFocus","onBlur","onChange","to","document","listener","listen","e","attributes","attr","detachElementRef","attachElementRef","fieldAttrElements","toggleFocus","element","hasAttribute","toLowerCase","focus","isFocused","activeElement","some","contains","Promise","resolve","then","blur","Event","change","markAsDirty","ɵdir","hostBindings","onHostChange","FieldType","FieldWrapper","ɵFieldWrapper_BaseFactory","fieldComponent","FormlyGroup","super","arguments","ɵFormlyGroup_BaseFactory","hostVars","fieldGroupClassName","FormlyTemplateType","sanitizer","innerHtml","safeHtml","bypassSecurityTrustHtml","evalExpression","expression","thisArg","argVal","Function","apply","FieldExpressionExtension","checkLocked","ignoreCache","checkField","_expressionProperties","expressionProperties","expressionProperty","_evalExpression","setExprValue","subscription","onInit","onDestroy","hideExpression","parentExpression","argNames","error","expressionPaths","p","arrayPath","match","fieldChanged","sort","toggleFormControl","checkFieldExpressionChange","checkFieldVisibilityChange","expressionValue","JSON","stringify","hideExpressionResult","hidden","setDisabledState","every","fieldArray","fieldIndex","findIndex","removeAt","removeControl","setParent","target","_evalExpressionPath","lastIndex","emitExpressionChanges","property","FieldValidationExtension","initFieldValidation","getPredefinedFieldValidation","validatorName","wrapNgValidatorFn","VALIDATORS","opt","compose","required","pattern","minLength","maxLength","min","max","validatorOption","getValidator","errors","obj","handleAsyncResult","handleResult","ctrl","errorPath","childCtrl","_a","setErrors","_b","childErrors","FieldFormExtension","addFormControl","controlOptions","componentType","enabled","asyncValidator","mergeValidators","composeAsync","CoreExtension","getFieldComponentInstance","fieldTransforms","fieldTransform","initFieldOptions","label","placeholder","resetFieldOnHide","getMergedField","setDefaultValue","initFieldWrappers","fieldTemplateManipulators","el","a","defaultFormlyConfig","FormlyModule","configService","configs","addConfig","ngModule","providers","provide","multi","useFactory","deps","useValue","ɵmod","ɵinj","imports","iterator_1","exports","isIterable","input","iterator","FitnessPlanDefComponentBase","route","fb","dialogService","planService","toasterService","usersService","router","patientsService","programTemplateService","MealContents","UntitledFitnessPlan","PlanLabel","PlanNewLabel","PlanEditLabel","TemplateLabel","PlanNameLabel","PlanActiveLabel","PlanDeactiveActiveLabel","ActiveLabel","$localize","LoadFramTemplateLabel","NewDayLabel","NameLabel","AcceptLabel","BackLabel","ViewMealPlanLabel","UserProfileLabel","TemplateDescriptionLabel","TemplateNameLabel","SaveAsPDFLabel","DescriptionLabel","PlanNotesLabel","SubmitToPatientLabel","DefaultDayTitle","ProblemGenertingPDF","ProblemSendingToPatient","SuccessSendingToPatient","Created","Updated","ProblemSavingPlan","PatientName","PatientShortHandName","OriginalPatientName","IsPreferredUnitImperial","PatientID","NotificationToken","PlanIDSubject","ShowTemplateButton","Plans","PlanActive","TheDays","unsubscribe$","EditingTemplate","ShowEmailSubmit","HidePatientInfo","IsEditingTemplatePublic","selectedPlan","LoadData","DontShowViewPlan","TheTemplateName","TheTemplateDescription","PlanDescriptionStatic","PlanNotesStatic","PlanNotesWidth","PlanNotesHeight","FormConstants","SelectedDayIndex","inTutorial","inFinalTutorial","selectTemplateSubject","currentUserSubject","showSpinner","contentLoaded","isPlanTemplate","DayTableSettings","mode","actions","position","add","edit","editButtonContent","delete","deleteButtonContent","columns","title","TutorialIDs","Labels","InitPlanDefForm","snapshot","paramMap","params","childrenDirty","PlanDayComponents","IsDirty","PlanDayLabelComponents","isDirty","resetDirty","PlanForm","queryParamMap","dayId","isNaN","SetupPlan","getCurrentUser","user","currentUserID","loadPatientData","ThePlan","days","patientID","createdDate","description","notes","active","zOrder","INT32_MAX","duration","PlanView","queryParams","planId","loadPlanFromTemplate","planIndex","GetTemplateById","programTemplate","PreparePlan","programPlans","fitnessPlans","PrepareWorkItemPublishSubscribe","DaySource","patient","firstName","lastName","isPreferredUnitImperial","day","blocks","block","items","item","group","PlanName","PlanDescription","PlanNotes","TemplateName","TemplateDescription","initForm","event","setValue","tempIndex","setTimeout","planID","PlanID","dayOfWeek","createMeal","order","Math","b","UpdateDay","OrderDays","open","closeOnEsc","closeOnBackdropClick","context","Message","onClose","result","data","Res","Valid","IsValid","UpdateTemplate","res","handleSuccessResponse","err","handleWrongResponse","TheTemplateID","TheTemplateIsPublic","UpdatePlan","isFromTutorial","url","toString","observable","update","submitPatientNotification","navigate","Plan","Description","TemplateID","IsPublic","Template","thePlan","isPublic","navigateByUrl","success","danger","SelectedPlan","plan","appendToCurrentPlan","SavePlan","meal","dayID","currentId","ThisPlan","SaveAsPDFFromToken","SaveAsPDF","PDFData","close","Data","MealDays","selectedIndex","AskToRemove","RemoveDayCore","original","copied","prevDay","tempOrder","ordered","assignedDays","Observable_1","Subscription_1","observable_1","scheduleObservable","scheduler","Observable","subscriber","Subscription","schedule","complete","scheduleArray","closed","FitnessSummaryComponent","SummaryLabel","ExercisesLabel","RepsLabel","MinutesLabel","CalorieBurnedLabel","Exercises","Reps","Minutes","CalorieBurned","SummaryWidth","SummaryHeight","Width","Height","exercises","reps","minutes","calorieBurned","DayFitnessSummaryComponent","AGCDialogService","CurrentSelection","ApplyAllDaysLabel","ApplyAllDays","PlanDays","Day","ViewOnly","Processing","PrepareBlockItems","find","addedday","ExerciseEditComponent","exerciseProgressService","chdetRef","InputItem","FitnessItem","added","SetsBased","WeightType","RemoveCallBack","SaveCallBack","AboutLabel","ButtonLabel","ButtonAddedLabel","videoHtml","ShowEditButtons","Name","changed","settingDetails","isPlayingVideo","includeRest","restBeforeNextExercise","setsBased","RepsBased","sets","defaultRepsOrTime","defaultTempo","defaultRest","weightType","AbsoluteValue","defaultWeight","oneRepMax","instructions","setSettings","parse","IsTimeBasedType","round","getOneMaxRep","exerciceId","oneMaxRep","advanceOptionForm","array","RepsOrTime","Tempo","Rest","Weight","parseFloat","UsedWeight","CalculatedWeight","displayWeight","source","include","IsMaxRepType","saveSettings","useFemaleVersion","showAdvancedMode","customName","saveOneMaxRep","IsSuperSet","GetSupersetMaster","fitnessBlock","IsSupersetMaster","IsSuperSetSlave","blockType","onChanged","refreshSettings","resetSettings","applyItem","expand","prevSets","row","MaxRepBased","log","supersetMaster","Superset","TimeBased","cloneExercise","out","changeOneMaxRep","video","load","play","Close","onAdd","Save","Remove","FitnessItemPresentationComponentBase","ItemQuantity","ItemQuantityTimes","ShowQuanitity","FatPercent","SatFatPercent","CholesterolPercent","SodiumPercent","CarbPercent","FiberPercent","CircuitRest","OverlayItem","UpdateCallBack","IsPatientView","DeleteCallBack","IsViewOnly","IsLastItem","BlockOrder","ItemSelection","PortionSelectionWithQuantity","CurrentSelectedServingSizeIndex","VisualStyle","Updating","Item","IsSuperSetWithNext","restItem","BlockType","Circuit","floor","sec","restEnd","String","fromCharCode","FitnessItemPresentationComponent","PresDialogService","PresExerciseProgressService","workoutService","startExcercise","blockId","excerciseId","isWorkout","onDeleteItem","onSaveItem","time","baseString","fitnessItem","formatTime","AddFitnessItemsComponent","exerciseService","customExerciseService","toastService","patientService","nativeApp","deviceDetector","FriendlyNameLabel","CaloriesLabel","ProteinLabel","CarbLabel","FatLabel","ImageLabel","Select","CancelLabel","OptionsLabel","ExercisesListCountHTML","ListCountLabel","ListWithoutImageCountLabel","FilterLabel","CurrentFilter","AppliedFilter","NewMealItemLabel","NewCustomMealItemLabel","CustomExerciseListCountHTML","ListFromCustomExerciseCountLabel","LoadedCurrentlyActiveExercise","CurrentlyActiveExercise","Items","CustomItems","filterItems","filterCustomExerciseItems","allEquipments","allMuscleTargets","allBodyParts","selectedEquipments","selectedMuscleTargets","selectedBodyParts","withVideo","searchTimeout","SelectedExercise","ExerciseSource","gridDataSource","CustomExerciseSource","gridDataSourceForBlock","PrepRetrievedItems","elements","found","count","exercise","ex","isCustom","RefreshLists","RefreshCustomExercisesLists","GetFilterOptions","bodyParts","equipments","muscleTargets","localeCompare","isDesktop","isFromApp","SearchField","isFromAppFromAndroidApp","sendMessageToApp","loadExercise","FoundItem","PrepareSelectedList","FoundExercise","selected","Process","curEx","CallerParent","UpdateSelectedItem","ItemAdded","PerformItemAdd","Search","clearTimeout","self","ApplyFilterChange","query","GetFilterResult","addFilter","search","setPaging","refresh","ID","goal","endIndex","Accept","FilterChange","onNewCustomFitnessItem","onSelectedOptionsChange","FetchMoreItem","FetchMoreCustomItem","FitnessItemsListPresentationComponentBase","appRef","AllowAddingItems","deviceService","BlockUpdate","EmptyFitnessItem","selectedItem","DeleteIcon","AddIcon","PlanItems","CurrentX","CurrentY","EditingItem","Editing","Deleting","AllowAddtingItems","DeleteMealItemConfirmationMessage","AddItem","unsubscription$","Subject","ItemsContainer","rowLayout","ItemUpdateNotification","MaxRowItems","MealItemsList","FitnessBlock","SetMaxItemsPerRow","SepcificItemSubscribe","initTable","arr","getItemsTable","columnSize","clientWidth","itemsTable","planItemWithEmpty","_","outerIndex","rowIndex","previousContainer","container","previousIndex","currentIndex","previous","current","concat","Update","ActiveExercise","HoldItems","fitnessBlockID","possible","text","charAt","random","isQuickAdd","Procent1MR","makeRandom","searchWeight","videoName","imageName","imageNameFemale","muscleTarget","muscleSynergist","searchTerms","imageUrl","imageMediumUrl","femaleImageUrl","femaleImageMediumUrl","videoUrl","femaleVideoUrl","youtubeUrl","DeleteItem","SaveItem","hold","isObservable","takeUntil","RefeshList","FitnessItemsListPresentationComponent","PCDialogService","PCAppRef","PCChdetRef","onResize","SelectItems","CreateAndAddQuickItem","FitnessBlockComponentBase","cdRef","ShowCooldown","ShowWarmup","TheBlockLabel","BlockExercises","BlockReps","BlockMinutes","FitnessItemsView","Index","BlockProperitesForm","PrepareFitnessItemsObservables","PrepareMetrics","BlockNameEdit","CallbackThis","blockSummary","TotalReps","TotalSeconds","Cooldown","Warmup","CurrentLabel","ThisThis","Block","UpdateSecondValue","FitnessBlockComponent","cdRefBlock","dialogServiceBlock","ngOnInit","BlockNameChange","FitnessBlockMobileComponent","cdRefBlockMobile","dialogServiceBlockMobile","UpdateBlockLabel","getTimeString","second","showHour","h","s","FitnessWorkoutOverlayComponent","workoutTimerService","counter","timer","timerString","restTimer","restTimerString","currentExercise","onPauseEvent","onStopWorkoutEvent","totalRestTime","WorkoutMode","workoutTime","workoutTimerModeSubscription","workoutMode","workout","startRest","Workout","startTimer","_restTimerTimout","setInterval","clearInterval","startCounter","Pause","resume","pause","_timerTimeout","startWorkout","Start","start","defaultWorkout","patientId","Started","startDateTime","endDateTime","pauseWorkout","delay","OverlayFitnessItemPresentationComponent","OverlayDialogService","OverlayUsersService","OverlayRouter","OverlayExerciseProgressService","exerciseLogService","theme","OverlayDialogRef","currentUser","isPatientView","_chartData","graphData","lastTimeCompleted","dateTimeOptions","weekday","year","month","pending","setNumber","WorkoutDetailStatus","currentBlockLabel","destroy$","workoutSubscription","finally","init","OrderLabel","safeYoutubeSrc","bypassSecurityTrustResourceUrl","loadExerciceData","includes","getLastExerciseLog","finalize","lastDetails","detail","logDetail","d","RepsDone","dateTime","toLocaleDateString","weight","convert","trunc","toFixed","updateSettingsForCircuit","updateSettingsForSuperSet","refreshGraph","onBackdropClick","currentItem","patientWorkoutDataDetails","itemId","Completed","isCircuitSetNumber","repetitionCount","founded","workoutModeToString","isSupersetNumber","itemData","getExerciseStatus","toLocaleLowerCase","valueOf","firtsItem","circuitRest","Complete","redoWorkout","getExerciseLogsListByExerciseId","reverse","getJsTheme","chartjs","variables","labels","valuesFirstSetWeight","firstSetWeight","valuesFirstRepDone","datasets","fill","backgroundColor","borderColor","borderWidth","graphOptions","responsive","maintainAspectRatio","animation","onComplete","_chart","canvas","scales","xAxes","gridLines","display","color","axisLineColor","ticks","fontColor","textColor","yAxes","legend","usePointStyle","pointStyle","lineWidth","forceChartRefresh","exLogId","onNextHandler","nextIndex","exLog","fitnessItemID","firstRepsDone","toPromise","exProgress","firstRepDone","changeOneMaxRepByPatient","onNext","saveExerciseLog","FitnessWorkoutComponent","workoutTimer","blockIndex","itemIndex","setNo","circuitSetNoValue","getExerciseFromIndex","PlanDay","blockCircuitSetNo","itemsId","setNos","getTimeDiffDisplayString","timeStringDuration","_workoutModeSubscription","ev","gotToBLockExcercise","None","isCompleted","_workoutSubscription","setTime","moment","diff","getFirstIncomplete","circuitSetNo","_workoutStartExcerciseSubscription","Title","onCompleted","startExercise","currentSetNo","timeToRest","getCurrentExerciseLabel","itemDialog","hasScroll","newDetail","exerciseId","patientWorkoutDataId","exerciseLogId","exerciseName","updateWorkout","addDetail","gotoNextExercise","shouldDialogClose","dialogClass","findItemNotInDetails","detailsOfCurrentBlock","getDetailsOfCurrentBlock","superSetDetails","handleCircuit","isCircuitSetNumbers","circuitSetNumber","leftDetail","initialItemIndex","initialItem","itemDetail","isBreak","currItemDetail","checkSuperSetCompletedForWorkout","master","masterDetail","masterIndex","getTimeToRest","getNextExerciseForSuperset","details","checkBlockCircuitCompletedForWorkout","completeDlg","completeWorkout","confirmed","onStartWorkoutClicked","FitnessPlanDayComponentBase","DayLabel","NewDay","EditDay","TimeLabel","BlockLabel","WeekDayofToday","getDay","ShowSubmit","ParentPlanID","HidePlanName","DayExercises","DayReps","DayMinutes","NewDayView","DayFitnessSummaryView","DayNotesWidth","DayNotesHeight","MealTableSettings","DayForm","FitnessBlocks","InitDayForm","DayName","DayNotes","assignWeekDays","BlocksSource","NewBlock","PrepareDayObservables","PrepareMetricsTotalDayMetrics","OrderBlocks","updateFitnessSummaryUpdateBinding","view","orders","UpdateBlock","PrepareMealItemsObservables","removeBlockCore","useFilteredBlocks","prevBlock","nextBlock","clipboard","list","newItem","filteredBlocks","UpdateLabel","seconds","FitnessPlanDayComponent","PlanDayRef","PlanDayRoute","PlanDayFB","PlanDayDialogService","onAssignWeekDaysChagne","NotesChange","FitnessPlanDayMobieComponent","PlanDayMobieRef","PlanDayMobieRoute","PlanDayMobieFB","PlanDayMobieDialogService","cdRefMobie","PatientBiometricHistoryListComponent","biometricHistoryService","patientIsPreferredUnitImperial","displayedColumns","totalCount","dataList","paging","sortBy","orderBy","sortor","patientGuid","direction","loadDataList","pagination","paginator","pageIndex","pageNumber","pageSize","onSortChanged","PatientAssessmentListComponent","assessmentService","userStore","edited","MEAL_PLAN_COMPILANCE","ENERGY_LEVEL","STRESS_LEVEL","SLEEP_QUALITY","assessmentGuid","AssessmentGuid","PatientGuid","UserId","getUser","PatientProgressComponent","cd","AddPaitentLabel","UpdatePaitentLabel","GeneralInfoLabel","BiometricInfoLabel","PreferencesLabel","PreferredUnitLabel","HeightLabel","WeightLabel","BodyFatLabel","BMILabel","SourceLabel","MeasureDateLabel","WeeklyAssessmentLabel","StartDateLabel","EndDateLabel","MealPlanComplianceLabel","EnergyLevelLabel","StressLevelLabel","SleepQualityLabel","ProblemCeatingPatient","bioHistoryGraphData","biometricHistoryGraphDataSrc","isLoadingBiometricHistory","assessmentGraphDataSource","assessmentGraphData","isLoadingAssessmentsGraphData","assessmentSecondGraphData","validateNumber","notificationToken","AllHistoriesList","namedChartAnnotation","pluginService","register","refreshBioHistoryGraph","AllAssessmentsList","refreshAssessmentsGraph","onUpdated$","themeSubscription","getLabelFromDate","measureDateTime","valuesWeight","valuesBodyFat","bodyFat","valuesBMI","bmi","bioHistoryGraphOptions","annotation","annotations","scaleID","getFormattedTodayDate","chart","style","startDateString","valuesMealPlanCommpliances","mealPlanCompliance","valuesEnergyLevels","energyLevel","valuesStressLevels","stressLevel","valuesSleepQuality","sleepQuality","assessmentGraphOptions","assessmentSecondGraphOptions","forceAssessmentSecondChartRefresh","_chart2","_chart3","date","getMonth","getDate","biometricHistoryList","onAssessmentEdited","SetTabHeaderBackgroundColour","TabHTMLElement","Lists","getElementsByTagName","NameMaxLength","DescriptionMaxLength","NotesMaxLength","subscribeToArray_1","subscribeToPromise_1","subscribeToIterable_1","subscribeToObservable_1","isArrayLike_1","isPromise_1","isObject_1","subscribeTo","subscribeToObservable","isArrayLike","subscribeToArray","isPromise","subscribeToPromise","subscribeToIterable","TypeError","GoalDefComponent","dialogRef","location","goalService","GoalLabel","NewGoalLabel","EditGoalLabel","GoalNameLabel","GoalTypeLabel","GoalValueLabel","ProgressLabel","SaveGoalLabel","ProblemSavingGoal","GoalDateLabel","DisableDate","Progress","Patient","GoalValueMax","InitUserForm","loadGoalData","GoalForm","goalDate","setHours","setDate","GoalID","targetDate","GoalName","GoalType","GoalValue","back","ConvertToGoal","targetDateUtc","getTimezoneOffset","Back","progress","goalValue","goalType","goalName","SaveGoal","noop_1","pipeFromArray","prev","fn","noop","_i","scheduleObservable_1","schedulePromise_1","scheduleArray_1","scheduleIterable_1","isInteropObservable_1","isIterable_1","scheduled","isInteropObservable","schedulePromise","scheduleIterable","__extends","extendStatics","__proto__","__","isFunction_1","Observer_1","rxSubscriber_1","config_1","hostReportError_1","Subscriber","_super","destinationOrNext","_this","call","syncErrorValue","syncErrorThrown","syncErrorThrowable","isStopped","destination","empty","SafeSubscriber","rxSubscriber","_next","_error","_complete","_unsubscribeAndRecycle","_parentOrParents","_parentSubscriber","observerOrNext","_context","useDeprecatedSynchronousErrorHandling","__tryOrSetError","__tryOrUnsub","hostReportError","wrappedComplete","_unsubscribe","module","Chart","chartHelpers","helpers","collapseHoverEvents","hover","filteredEvents","dispatcher","ns","getRelativePosition","getNearestItems","dblClickSpeed","eventHandlers","eventHandlerName","getEventHandlerName","hovering","hoverEvent","createMouseEvent","onDblclick","onClick","clickTimeout","stopImmediatePropagation","preventDefault","eventHandler","UnsubscriptionError","UnsubscriptionErrorImpl","return","done","isArray_1","map_1","from_1","forkJoinInternal","sources","len","values","completed","emitted","_loop_1","from","hasValue","forkJoin","first_1","resultSelector_1","Annotation","Element","extend","setDataLimits","chartInstance","xScale","xScaleID","yScale","yScaleID","chartArea","ranges","isValid","xMin","getPixelForValue","left","xMax","right","yMin","bottom","yMax","top","configure","clip","x1","x2","y1","y2","inRange","mouseX","mouseY","getCenterPoint","getWidth","abs","getHeight","getArea","draw","_view","save","beginPath","rect","strokeStyle","fillStyle","width","height","fillRect","strokeRect","restore","BasePlanTemplateSelectComponent","service","joyrideService","tutorialService","ListTemplateLabel","SelectLabel","loading","expandAll","pageLoading","AppendToCurrentPlan","selectedDays","TemplateSource","GridPlanTemplateDataSource","parents","tutorialStates","SelectTemplate","steps","startTour","showPrevButton","showCounter","step","loadTemplates","myInput","indeterminate","searchInput","accordionComponent","openAll","closeAll","clientHeight","scrollTop","isApproximatelyEqual","scrollHeight","templates","filters","selectedTemplate","filterByName","initiateForm","parentsFormArray","childrenFormArray","getUniqueDayIds","checkDayIsSelected","children","note","allSelected","child","someSelected","parentValues","selectedChildren","z","temp","stopPropagation","uniqueIdsSet","total","EmtpyTemplates","SelectedEvent","isSelected","firstParent","acc","currArray","isTourInProgress","closeTour","PlanTemplateSelectComponent","planJoyrideService","planDialogService","planTutorialService","Cancel","onScroll","onSearchChange","onExpandChange","SelectPlan","FitnessPlanTemplateSelectComponent","fitnessPlanJoyrideService","fitnessPlanService","fitnessPlanDialogService","fitnessPlanTutorialService","canReportError_1","toSubscriber_1","pipe_1","getPromiseCtor","promiseCtor","_isScalar","_subscribe","lift","operator","sink","toSubscriber","_trySubscribe","canReportError","reject","operations","AssessmentProgressImageType","EditAssessmentComponent","assessmentsService","assessmentSettingService","PlanViewPatientsService","AssessmentForm","AddAssessmentLabel","UpdateAssessmentLabel","AssessmentLabel","SelectImageLabel","assessmentProgressImageType","SaveAssessmentLabel","CommentLabel","ProblemCeatingAssessment","isImperialUnit","customData","isImperial","imgHover","imgFoodItem","isLoading","isImageProgressUpload","DescriptiveValues","InitAssessmentForm","loadAssessmentData","ProgressImageUrl","Assessment","guid","progressImageUrl","progressImageLeftUrl","progressImageRightUrl","comment","patientName","submittedByPatient","startDate","StartDate","endDate","EndDate","endDateString","answersJson","fileProgressImage","fileProgressImageRight","fileProgressImageLeft","getByNotification","assessment","MealPlanCompliance","getAssessmentSettingsByUserId","formlyForm","customQuestion","uploadProgressImages","createdByUserId","defaultFormValues","defaultField","MealPlanComplianceValues","EnergyLevelValues","StressLevelValues","SleepQualityValues","MealPlanTemplateCreateComponent","mealPlanService","templatePlan","planGenerateForm","templateName","format","templateDescription","CreateTemplate","valid","onTemplateNameChange","onCreateTemplate","onCancel","getSymbolIterator","Symbol","$$iterator","NB_MODULES","MealPresentationModule","Subscriber_1","nextOrObserver","window","drawTimeOptions","afterDraw","afterDatasetsDraw","beforeDatasetsDraw","defaults","drawTime","labelDefaults","fontFamily","global","defaultFontFamily","fontSize","defaultFontSize","fontStyle","xPadding","yPadding","cornerRadius","xAdjust","yAdjust","line","box","annotationPlugin","promise","_global","download","xhr","XMLHttpRequest","responseType","onload","saveAs","response","onerror","send","corsEnabled","click","dispatchEvent","MouseEvent","evt","createEvent","initMouseEvent","isMacOSWebView","navigator","userAgent","HTMLAnchorElement","blob","URL","webkitURL","createElement","rel","href","origin","createObjectURL","revokeObjectURL","msSaveOrOpenBlob","autoBom","Blob","popup","body","innerText","force","isSafari","HTMLElement","safari","isChromeIOS","FileReader","reader","onloadend","readAsDataURL","PatientGeneralInfoComponent","tokenService","countriesService","goalsService","patientSubscriptionsMetaService","ConversionFactorsPreference","PaitentLabel","SavePatientLabel","FirstNameLabel","LastNameLabel","EmailLabel","BirthDateLabel","AddressInfoLabel","AddressLine1Label","AddressLine2Label","CountryInfoLabel","PostalCodeInfoLabel","PhoneInfoLabel","SearchCountryField","CountryISO","PhoneNumberFormat","preferredCountries","UnitedStates","Canada","PatientId","IsView","GoalListSource","Goals","PatientForm","InitPatientForm","subscriptionData","Countries","GoalsList","refreshGoals","Id","FirstName","LastName","EMail","DateOfBirth","AddressLine1","AddressLine2","Country","ZipPostalCode","PhoneNumber","BodyFat","genderFemale","conversionFactorPreference","checkInRequest","internationalNumber","ConvertToPatient","updateBiometrics","updateGeneralInfo","setPatientUpdated","StartValue","startValue","measureDateUtc","dateOfMeasure","measureDateLocal","birthDateUtc","dateOfBirth","birthDateLocal","eMail","addressLine1","addressLine2","country","zipPostalCode","phoneNumber","Source","DateOfMeasure","ChangeScale","subscribeTo_1","scheduled_1","annotationTypes","setAfterDataLimitsHook","axisOptions","decorate","scale","adjustScaleRange","easingDecimal","defaultDrawTime","transition","beforeInit","chartOptions","initConfig","firstRun","supported","ensureScalesHaveIDs","each","beforeUpdate","elementIds","objectId","cls","initialize","afterScaleUpdate","afterInit","watchFor","addEvent","removeEvent","deregisterers","CustomExerciseDefComponent","cdr","HeaderLabel","NewExerciseItemLabel","EditExerciseItemLabel","ExerciseNameLabel","DefaultServingSizeLabel","GeneralInfoSmallLabel","FatsLabel","SaturatedFatLabel","TransFatLabel","CholesterolLabel","SodiumLabel","CarbohydrateLabel","FiberLabel","SugarLabel","AlcoholLabel","SaveLabel","ProblemSavingExerciseItem","imgExerciseItem","videoExerciseItem","loadExerciseItemData","onChanges","ExerciseItemForm","file","imageFile","ImageName","VideoName","FileExerciseImage","ExerciseImageUrl","YoutubeUrl","FileExerciseVideo","ExerciseVideoUrl","exerciseVideoThumbnailUrl","urlOrFileValidator","ExerciseItem","ConvertToExerciseItem","ClearCache","replaceNullStringWithNull","exerciseImageUrl","exerciseVideoUrl","newUrl","finalUrl","files","_event","size","fileInput","onYoutubeUrlBlur","onUploadExerciseVideo","onUploadExerciseImage","AssessmentDescriptiveValues","MealItemsPresentationModule","none","selector","querySelector","querySelectorAll","matches","EnterNode","datum","ownerDocument","namespaceURI","_parent","__data__","bindIndex","enter","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","ascending","NaN","appendChild","insertBefore","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","attrRemove","attrRemoveNS","fullname","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","getAttribute","classedAdd","names","n","classedRemove","remove","classedTrue","classedFalse","classedFunction","textRemove","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","parentNode","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElementNS","creatorFixed","namespace","constantNull","removeChild","selection_cloneShallow","cloneNode","selection_cloneDeep","filterEvents","filterContextListener","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","parseTypenames","typenames","onRemove","typename","on","__on","j","removeEventListener","capture","wrap","addEventListener","CustomEvent","initEvent","bubbles","cancelable","dispatchConstant","dispatchFunction","mouseenter","mouseleave","Selection","groups","_groups","_parents","select","subgroups","subnode","subgroup","selectAll","selectorAll","matcher","enterGroup","updateGroup","i0","i1","_enter","_exit","sparse","onenter","append","onupdate","onexit","merge","groups0","groups1","selection","m0","merges","group0","group1","compareNode","compare","sortgroups","sortgroup","nodes","getAttributeNS","classed","html","creator","before","deep","dispatch","Dispatch","T","copy","that","definition","Color","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","l","exec","parseInt","rgbn","Rgb","rgba","hsla","g","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","Hsl","hslConvert","hsl2rgb","m1","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","displayable","formatHsl","brighter","pow","darker","nogamma","end","gamma","rgbGamma","rgbSpline","spline","colors","taskHead","taskTail","reA","reB","am","bm","bs","bi","q","number","timeout","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","restart","wake","t0","Infinity","sleep","poke","stop","elapsed","emptyOn","emptyTween","schedules","__transition","tween","state","tick","ease","timing","cssNode","cssRoot","cssView","svgNode","degrees","PI","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","sqrt","atan2","atan","interpolateTransform","pxComma","pxParen","degParen","xa","ya","xb","yb","interpolateTransformCss","transform","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","interpolate","value1","string00","interpolate0","string1","string0","string10","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","on0","on1","sit","styleInterpolate","styleTween","textInterpolate","textTween","Transition","_name","newId","selection_prototype","inherit","id0","id1","listener0","cancel","interrupt","defaultTiming","newInterval","floori","offseti","interval","ceil","d0","d1","offset","range","isFinite","setMonth","setFullYear","getFullYear","sunday","monday","thursday","getMilliseconds","getSeconds","getMinutes","getHours","getUTCSeconds","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","utcSunday","utcMonday","utcThursday","utcYear","setUTCMonth","setUTCFullYear","getUTCFullYear","pads","requoteRe","pad","sign","requote","formatRe","formatLookup","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatUTCDayOfMonth","formatUTCHour24","getUTCHours","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","getUTCMonth","formatUTCMinutes","getUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale","locale_dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","formats","utcFormats","newFormat","specifier","charCodeAt","X","re","formatSpecifier","FormatSpecifier","align","symbol","zero","comma","precision","Linear","decimal","thousands","grouping","currency","minus","Number","numerals","areaStart","_line","areaEnd","lineStart","_point","lineEnd","closePath","point","lineTo","moveTo","pi","tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","quadraticCurveTo","bezierCurveTo","arcTo","x0","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","w","_k","_x2","_y2","Cardinal","tension","CardinalClosed","Radial","curve","_curve","cardinal","custom","_x3","_x4","_x5","_y3","_y4","_y5","sum","hierarchy","childs","valued","defaultChildren","depth","eachBefore","computeHeight","copyData","squarify","ratio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","alpha","beta","rows","dice","eachAfter","ancestor","aNodes","ancestors","bNodes","descendants","leaves","links","TooltipContentComponent_span_4_ng_template_1_Template","TooltipContentComponent_span_4_Template","ctx_r1","TooltipContentComponent_span_5_Template","ctx_r2","InjectionService_1","InjectionService","applicationRef","globalRootViewContainer","_container","components","hostView","rootNodes","getComponentRootNode","bindings","bindingKeys","getOwnPropertyNames","bindingName","eventKeys","componentClass","getRootViewContainer","appendLocation","portalHost","portal","attach","projectComponentBindings","throttle","func","wait","later","leading","remaining","trailing","PlacementTypes","verticalPosition","elDimensions","popoverDimensions","alignment","horizontalPosition","PositionHelper","innerHeight","caretDimensions","popoverPosition","innerWidth","placement","spacing","flip","elmDim","hostDim","calculateVerticalCaret","calculateHorizontalCaret","calculateVerticalAlignment","calculateHorizontalAlignment","shouldFlip","TooltipContentComponent","clz","cssClass","nativeElm","host","getBoundingClientRect","checkFlip","positionContent","showCaret","positionCaret","addClass","caretElm","determinePlacement","onWindowResize","cssClasses","styles","descriptor","TooltipService","injectionService","createByType","assignDefaults","injectComponent","compsByType","idx","destroyByType","comps","appendComponent","has","AxesModule","TooltipModule","ChartCommonModule","AreaChartModule","BarChartModule","BubbleChartModule","HeatMapModule","LineChartModule","PieChartModule","PolarChartModule","NumberCardModule","TreeMapModule","GaugeModule","NgxChartsModule","SVGElement","HTMLDivElement","__awaiter","_arguments","P","generator","fulfilled","rejected","SuppressedError","ImageCropperComponent_img_2_Template","_r5","imageLoadedInView","imageVisible","safeTransformStyle","safeImgDataUrl","ImageCropperComponent_div_4_ng_container_2_Template","_r8","ctx_r7","startMove","moveTypes","Resize","ctx_r9","ctx_r10","ctx_r11","ctx_r12","ctx_r13","ctx_r14","ctx_r15","ctx_r16","ctx_r17","ctx_r18","ctx_r19","ctx_r20","ctx_r21","ctx_r22","ctx_r23","ImageCropperComponent_div_4_Template","_r25","keyboardAccess","ctx_r26","Move","ctx_r27","cropper","alignImage","marginLeft","roundCropper","hideResizeSquares","CropperSettings","aspectRatio","resizeToWidth","resizeToHeight","cropperMinWidth","cropperMinHeight","cropperMaxHeight","cropperMaxWidth","cropperStaticWidth","cropperStaticHeight","canvasRotation","initialStepSize","onlyScaleDown","imageQuality","autoCrop","containWithinAspectRatio","cropperScaledMinWidth","cropperScaledMinHeight","cropperScaledMaxWidth","cropperScaledMaxHeight","stepSize","validateOptions","MoveTypes","Pinch","CropService","sourceImage","loadedImage","settings","imagePosition","getImagePosition","cropCanvas","getContext","flipH","flipV","transformedImage","transformed","setTransform","translate","drawImage","image","output","cropperPosition","offsetImagePosition","getOffsetImagePosition","resizeRatio","getResizeRatio","width_source","height_source","ratio_w","ratio_h","ratio_w_half","ratio_h_half","img","getImageData","img2","createImageData","data2","center_y","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","xx_start","yy_start","xx_stop","yy_stop","yy","center_x","w0","xx","pos_x","putImageData","base64","toDataURL","getQuality","offsetWidth","offsetX","offsetY","exifTransform","ratioWidth","ratioHeight","ratios","CropperPositionService","sourceImageElement","offsetHeight","cropperWidth","cropperHeight","cropperHeightWithAspectRatio","cropperWidthWithAspectRatio","moveStart","diffX","getClientX","clientX","diffY","getClientY","clientY","maxSize","moveX","moveY","newWidth","newHeight","checkAspectRatio","overflowX","overflowY","overflowX1","overflowX2","overflowY1","overflowY2","touches","LoadImageService","autoRotateSupported","Image","cropperSettings","fileReader","loadImage","catch","imageBase64","imageType","isValidImageType","loadBase64Image","crossOrigin","originalImage","originalBase64","transformImageBase64","autoRotate","exifRotationOrBase64Image","DataView","binaryString","atob","bytes","Uint8Array","buffer","getUint16","byteLength","marker","getUint32","little","tags","transformLoadedImage","naturalWidth","naturalHeight","originalSize","transformedSize","getTransformedSize","transformedBase64","loadImageFromBase64","minHeightToContain","ImageCropperComponent","cropService","cropperPositionService","loadImageService","Hammer","setImageMaxSizeRetries","imageCropped","startCropImage","imageLoaded","cropperReady","loadImageFailed","onChangesUpdateSettings","onChangesInputImage","setLoadedImage","loadImageError","setMaxSize","setCropperScaledMinSize","setCropperScaledMaxSize","resetCropperPosition","checkCropperPosition","doAutoCrop","setCssTransform","setOptionsFromChanges","imageChangedEvent","imageURL","isValidImageChangedEvent","loadImageFile","loadImageFromURL","_c","bypassSecurityTrustStyle","activatePinchGesture","checkImageMaxSizeRecursively","sourceImageLoaded","resizeCropperPosition","hammer","onPinch","pinchStop","startPinch","changeKeyboardStepSize","keyboardMoveCropper","moveType","shiftKey","altKey","moveEvent","moveImg","moveStop","move","resize","setCropperScaledMinWidth","setCropperScaledMinHeight","maintainSize","crop","changeDetection","ImageCropperModule","base64ToFile","base64Image","byteString","ab","ArrayBuffer","ia","CalorieFriendComponent","UpgradePlanComponent","Upgrade","UserInfoEnums","BusinessTypeValues","CustomersPerMonth","InitialUserInfoComponent","SuccessSavingUserInfo","ProblemSavingUserInfo","UserInfoForm","businessName","address","convertToUser","updateCurrentInitial","setUser","PremiumModalComponent","CloseCallBack","OnPremiumCallBack","onPremium","PremiumTrialReminderComponent","nativeAppSerivce","onUserStateChange","isUnlimitedTrialActive","isUnlimitedTrial","daysLeft","daysLeftInProTrial","isFreePlan","isOnFreePlan","isOnDemoOfferPlan","CustomPatientNameFieldComponent","joyride","detectorRef","getThreadStatusText","isThreadOnline","rowData","DemoPatient","onTutorialNext","onClickLink","PatientsComponent","subscriptionPlansService","googleAnalyticsService","facebookPixelService","nativeAppService","chatService","chatThreadService","sidebarService","shouldManageSubscription","isUserEmailVerified","patientsCountInfo","isAddNewTutorial","isArchived","loaded","gaugeLabel","checkUserState","FacebookPixelService","PageViewEvent","eventEmitter","fromEvent","nameAndEmail","debounceTime","distinctUntilChanged","isEmailValid","isRegistrationCompleted","loadTutorial","getByCode","planCode","subscriptionPlan","updatePatientsCountInfo","isAmbasador","mergeMap","getThreads","threads","patientsWithChatThread","thread","th","users","chatThread","tutorialStarted","getDemoPatient","demoPatient","AddNewPatient","getActiveCount","patientsCount","checked","canAddNewPatients","unarchive","isPayingUser","onArchive","isDemoPatient","email","onShowPremiumDialog","autoFocus","archive","submitVerificationEmail","rowId","currentThread","onAddPatient","onArchivedChange","PatientComponent","layout","PlansLabel","GoalsLabel","GoalDisable","isTutorial","tempGoals","GoalsComponent","loadUser","showCanceled","isDeleted","NewPatient","NewPatientStep1","customTexts","SavePatient","SubscriptionId","goalDefs","fitnessProgramMode","mealProgramMode","RefreshPlans","onTutorialNext1","onChangePreferredUnit","GoalListComponent","GoalsListLabel","AddPatientLabel","CreatedDateLabel","TargetDateLabel","SucessDeleteGoal","FailDeleteGoal","GoalTableSettings","customProgress","valuePrepareFunction","cell","renderComponent","GoalsSource","setSort","handleGoalDeleteSuccessResponse","handleGoalDeleteWrongResponse","onEdit","onDelete","AddGoal","GoalFormResolverModule","GoalsService","of","getEmptyGoal","achievedDate","JSONStringify","object","cache","str","HowToModalComponent","isModal","link","helpLabel","HowToModalComponentDialog","nbDialogService","safeUrl","PlanDataService","MealPlanDefComponent","PlanDefDialogRef","PlanDefRoute","PlanDefLocation","PlanDefToasterService","PlanDefFormBuilder","PlanDefDialogService","PlanDefPlanService","PlanDefUsersService","PlanDefRouter","ProblemSavingTemplate","TemplateUpdated","templateData","templateUserID","userID","onSavePlan","onNameChange","OrderUp","OrderDown","RemoveDay","EditMealPlanDefComponent","PlanDefCdRef","planDataService","PatientDataService","ThePlanString","localStorage","setItem","AddMealPlanDefComponent","LoadFromTemplate","FinalStep","MealPlanViewComponent","PlanViewRoute","PlanViewUsersService","PlanViewFormBuilder","PlanViewDialogService","PlanViewPlanService","PlanViewToasterService","PlanViewRouter","PlanViewUnsubscribe$","Elements","getElementsByClassName","Sidebar","visibility","Header","parentElement","paddingTop","PlanDayLabelComponent","readonly","customfocusout","TheDayLabel","DayNameEdit","onCusomFocusout","onKeyup","TemplateGenerateComponent","onGenerateTemplate","PlanListComponent","plansService","PlanListLabel","AddPlanLabel","PlanActiveDaysLabel","PlanActiveStateLabel","SucessDeletePlan","FailDeletePlan","PlanSource","PlanListSource","PlansTableSettings","hideSubHeader","columnTitle","AddPlan","SectionLayoutComponent","ProgramOverviewComponent","patientStore","_isFitness","_patientLoaded","onPatientChanged","takeWhile","PatientCalendarModalComponent","fitnessPlansService","mealPlansService","toastrService","datePipe","programStartDate","activeDayIsOpen","isWaiting","_plansService","isFitness","today","FitnessPlanTemplateCreateComponent","PlanListItemComponent","activeChanged","duplicated","deleted","moved","_isFitnessPlan","durationOptions","_plan","loadAssignedWeekDays","reattach","programMode","ok","activeToggle","writeValue","activate","isProgramTemplate","durationSelect","isFitnessPlan","programTemplateId","duplicate","weekDays","assignedWeekDays","onDuplicate","PatientProgramComponent","activeRoute","fitnessPlansStore","mealPlansStore","isProgramMode","programEndDate","plans","_plansStore","destroyPlans","loadPlans","fitnessProgramStartDate","mealProgramStartDate","programVisibility","programViewType","programTemplateData","setPlans","mealPlan","reorderPlans","listById","p1","p2","isAlert","currentPlanId","toDateString","setPatient","_index","updateTemplate","movePlan","toISOString","meals","AddNewPlan","onPlanDropped","MacroGoalsComponent","macroGoalsService","foodService","ERROR_NO_ACTIVE_PLAN","MealCals","MealProtein","MealCarbs","MealNetCarbs","MealFats","protein","fats","carbs","switchMap","getAutoMacroGoals","share","autoMacroGoals","autoFillFromPlan","onAutoFillChange","patientNew","enableMacroGoals","calories","PatientSheetViewComponent","generalInfoView","toUpperCase","planType","tabGroup","u","startTutorial","resetPatient","patientFullName","getPatientSubscriptionItems","patientSubscriptionItem","canDeactivate","returnValue","planTypeValue","relativeTo","queryParamsHandling","replaceUrl","onSend","onChangeTab","MealViewerComponent","SubscriptionPlanComponent","paymentApi","subscriptionService","waiting","subscriptionPlans","allSubscriptionPlans","getStripeKey","stripeKey","hasPlanChoices","checkSelectedPlan","checkPlanSucceed","package_name","price","PurchaseEvent","content_name","planToPush","onSelect","priceId","planSubscription","updateSubscription","refreshCurrentUser","stripe","Stripe","createCheckoutSession","redirectToCheckout","sessionId","cancelSubscription","FitnessPlanDefComponent","PlandDefPatientService","programTempalteService","EditFitnessPlanDefComponent","EditView","AddFitnessPlanDefComponent","ProgramTemplateCreateComponent","AssingPlanClientComponent","api","showList","post","isMealPlan","PlanTemplateListComponent","publicOnly","editUrl","dataService","templateList","duplicateTemplate","deleteTemplate","onAddTemplate","FitnessPlanTemplatesComponent","FitnessPlanTemplateResolver","getEmptyTemplate","CustomExerciseListComponent","onAddCustomExercise","MealPlanTemplateResolver","MealPlanTemplatesComponent","FoodListComponent","customFoodService","filterByOnlyPublic","filterByNameOrDescription","onAddCustomFood","CustomFoodsComponent","AppSettingsComponent","appSettingService","settingsService","httpClient","userSettingsChange","configurations","appStorePassword","keyId","issuerId","username","teamId","teamName","bundleId","branchName","appSettings","configuration","userId","apkUrl","ipaUrl","abbUrl","googleAndroidServiceJson","googleIosServiceJson","runBuild","fileLoadEvent","readAsText","isCustomAppInProduction","customAppEnabled","userSettings","updateUserSettings","appLogo","logo","appColor","changeIsCustomAppInProduction","changeCustomAppEnabled","BrandComponent","tfAdminLoginService","isSaving","appLogoChangedEvent","splashColor","isIframeLoaded","isTfAdmin","loadBrand","isLoggedIn","appStoreUrl","playStoreUrl","logoSrc","appLogoSrc","appName","iframeDoc","iframe","contentDocument","contentWindow","previewLogo","fileName","cropperDlg","cropperDlgIcon","logoEditSrc","appLogoEditSrc","fileInputAppLogo","previewAppLogo","onSaveAnyway","updateCurrent","role","conversionFactorsPreference","street","secondAddress","city","zipCode","gHLApiKey","isRedirectingToSubscriptions","File","themeName","last","onLogoChange","onColorChanged","onIframeLoaded","onSave","HelpGuidesComponent","PaymentSettingsComponent","paymentSettingsService","connecting","currentAccount","connectToStripe","expressLogin","BillingComponent","ProgramTemplatesComponents","ProgramTemplateEditComponent","updatingTemplate","activeTab","tabIndex","currentUrl","updateUrlParameter","replaceState","param","paramVal","newAdditionalURL","tempArray","baseURL","additionalURL","AssessmentFormSettingsComponent","formStructureFields","foundedKey","foundKeyIsInDefault","onSubmit","AngularEditorToolbarComponent_div_0_div_55_Template","_r6","customClassId","setCustomClass","ctx_r3","customClassList","htmlMode","isButtonHidden","AngularEditorToolbarComponent_div_0_Template","_r9","triggerCommand","fontName","ctx_r28","setFontName","ctx_r30","setFontSize","_r1","insertColor","_r2","insertUrl","onFileChanged","_r4","insertVideo","ctx_r0","headings","fonts","fontSizes","_customClasses","isLinkButtonDisabled","linkSelected","AngularEditorComponent_angular_editor_toolbar_2_Template","_r7","executeCommand","uploadUrl","showToolbar","getFonts","customClasses","defaultFontName","toolbarHiddenButtons","AngularEditorComponent_angular_editor_toolbar_9_Template","_r10","ctx_r4","AeSelectComponent_button_8_Template","item_r3","optionSelect","i_r4","optionId","AeSelectComponent_span_9_Template","AngularEditorService","http","doc","saveSelection","getSelection","sel","getRangeAt","rangeCount","savedSelection","selectedText","createRange","command","execCommand","insertHtml","where","restoreSelection","removeAllRanges","addRange","callbackFn","uploadData","FormData","reportProgress","observe","withCredentials","uploadWithCredentials","separator","customClass","newTag","tagName","tag","insertYouTubeVideoTag","insertVimeoVideoTag","thumbnail_url_with_play_button","hasChildNodes","includePartiallySelectedContainers","startContainer","endNode","endContainer","rangeNodes","nextNode","commonAncestorContainer","getRangeSelectedNodes","tagNames","tagNamesArray","getSelectedNodes","replaceWithOwnChildren","angularEditorConfig","editable","spellcheck","minHeight","maxHeight","minWidth","enableToolbar","defaultParagraphSeparator","sanitize","toolbarPosition","outline","AngularEditorToolbarComponent","editorService","er","tagMap","BLOCKQUOTE","A","buttons","execute","classes","Boolean","queryCommandState","elementById","getElementById","removeClass","nodeName","foreColour","queryCommandValue","backColor","prompt","createLink","foreColor","toggleEditorModeButton","uploadImage","insertImage","srcElement","classId","createCustomClass","hiddenButtons","myInputFile","isDefined","AngularEditorComponent","defaultTabIndex","modeVisual","showPlaceholder","focused","viewMode","blurEvent","focusEvent","tabindex","parsedTabIndex","toggleEditorMode","removeSelectedElements","getCustomTags","onContentChange","textArea","executeInNextQueueIteration","onTouched","HTML","togglePlaceholder","refreshView","editorWrapper","isDisabled","bToSource","oContent","editableElement","createText","oPre","oCode","focusInstance","onTextAreaFocus","blurInstance","onTextAreaBlur","selectNodeContents","editorToolbar","setEditorMode","userSelection","triggerButtons","focusNode","els","triggerBlocks","setDefaultParagraphSeparator","useExisting","onTextAreaMouseOut","AeSelectComponent","elRef","opened","changeEvent","selectedOption","isHidden","selectedEl","labelButton","_handleArrowDown","_handleArrowUp","_handleSpace","_handleEnter","_handleTab","_handleBackspace","handleKeyDown","toggleOpen","isOpen","AngularEditorModule","routes","canActivate","redirectTo","pathMatch","AssessmentSettingComponent","userService","daysOfWeek","previewForm","assessmentFrequency","sendByEmail","sendByMessage","messageText","questionsToAsk","getAssessmentSettings","updateAssessmentSettings","tempData","CalorieFriendRoutingModule","forChild","FormlyFieldNbInput","FormlyFieldNbRadio","FormlyFieldNbCheckbox","FormlyFieldNbTextarea","FormlyFieldNbSelect","FormlyWrapperErrorMessageComponent","FormlyErrorWrapperComponent","FormlyFieldNbInputNumber","FormlyFieldNbWeight","displayValue","unit","convertKgToLbs","numericValue","convertLbsToKg","kg","lbs","onInputChange","FormlyNebularModule","forRoot","MAT_MODULES","CalorieFriendModule","themeService","ActivePatient","changeTheme","_enable_super_gross_mode_that_will_cause_bad_things","stack","obs","$$rxSubscriber","PatientProfileComponentBase","PatientInfoLabel","IsNotificationView","PatientProfileComponent","PatientProfileAnonymousComponent","MealPlanDefComponentBase","UntitledMealPlan","ShortHandName","BehaviorSubject","planListSource","loadData","setupPlan","PlanId","listByGuid","refreshPlans","preparePlan","substr","thisPlan","MealComponent","MealItemsLabel","AddItemLabel","TheMeal","ExistingMeals","ItemNameLabel","Qauntity","MealNameLabel","MealTimeLabel","ServingSizeSelectLabel","friendlyName","foodId","displayQuantitySelection","displayWithinGroup","isCustomFood","AssociatedObject","AdjustHeight","MealForm","InitMealForm","DayID","MealName","MealTime","MealDataSource","SetCallBack","MealCountUpdate","This","quantity","FoodItem","ActiveFood","mealItem","LoadedCurrentlyActiveFood","Quantity","food","mealID","MealsValid","CurrentTime","Duplicate","MealValid","UpdateItems","MealPlanDayComponentBase","FoodService","MealLabel","isNativeApp","DayMetricsGraphView","MealPresentationViews","MealSource","NewMeal","updateMealGraphUpdateBinding","PrepareMealItems","Time","NewTime","toDate","setMinutes","TimeString","UpdateMeal","MealItemsView","removeMealCore","itemMetrics","MealPlanDayComponent","PlanFoodService","MealPlanDayMobileLayoutComponent","MealPlanDayReportComponent","NameChange","iterable","project","MapOperator","MapSubscriber","GraphModule","LineFunction","getX","getY","intersects","epsilon","endValue","pixel","endPixel","labelBackgroundColor","labelFontFamily","labelFontSize","labelFontStyle","labelFontColor","labelXPadding","labelYPadding","labelCornerRadius","labelPosition","labelXAdjust","labelYAdjust","labelEnabled","labelContent","font","fontString","textWidth","measureText","textHeight","padWidth","padHeight","ret","labelX","labelY","labelWidth","labelHeight","borderDash","borderDashOffset","setLineDash","lineDashOffset","stroke","drawRoundedRectangle","textAlign","textBaseline","fillText","GoalsListViewComponent","GoalListLabel","AddGoalLabel","RemoveGoalLabel","GoalActiveDaysLabel","GoalActiveStateLabel","AllowEdit","GraphData","biometricsData","planValues","planValue","radius","labelOptions","overflow","shape","forceGoalsChartRefresh","charts","dateString","rawValue","callEach","substring","previousEvent","exception","canBubble","screenX","screenY","ctrlKey","metaKey","button","exception2","configMerge","scaleId","scaleMin","scaleMax","suggestedMin","suggestedMax","handleTickRangeOptions","minDistance","POSITIVE_INFINITY","nearestItems","center","distance","distanceBetweenPoints","sizeA","sizeB","observer","UnsubscriptionError_1","flattenUnsubscriptionErrors","errs","_subscriptions","teardown","EMPTY","tmp","subscriptions","subscriptionIndex"],"mappings":"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","sourceRoot":"webpack:///","sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { NbEvaIconsModule } from '@nebular/eva-icons';\r\nimport { NbIconModule } from '@nebular/theme';\r\n\r\nimport { MealItemPresentationComponent } from './meal-item-presentation.component';\r\nimport { OverlayMealItemPresentationComponent } from './overlay-meal-item-presentation/overlay-meal-item-presentation.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, NbEvaIconsModule, NbIconModule],\r\n declarations: [\r\n MealItemPresentationComponent,\r\n OverlayMealItemPresentationComponent,\r\n ],\r\n exports: [\r\n MealItemPresentationComponent,\r\n OverlayMealItemPresentationComponent,\r\n ],\r\n})\r\nexport class MealItemPresentationModule {}\r\n","import { DOCUMENT, CommonModule } from '@angular/common';\nimport { TemplateRef, Injectable, InjectionToken, NgModule, ANALYZE_FOR_ENTRY_COMPONENTS, Inject, Optional, Component, Input, ChangeDetectionStrategy, EventEmitter, Output, Attribute, ViewChild, ElementRef, NgZone, Directive, Renderer2, ViewContainerRef, ComponentFactoryResolver, Injector, ChangeDetectorRef, defineInjectable, inject, INJECTOR } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { __rest } from 'tslib';\nimport { debounceTime, switchMap, distinctUntilChanged, take, startWith, filter, map } from 'rxjs/operators';\nimport { AbstractControl, FormArray, FormGroup, FormControl, FormGroupDirective, Validators } from '@angular/forms';\nimport { isObservable, Subject, of, merge, Observable } from 'rxjs';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} form\n * @param {?} callback\n * @return {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/forms';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@angular/platform-browser';\n\nconst _c0 = [\"content\"];\nfunction FormlyForm_formly_field_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"formly-field\", 2);\n} if (rf & 2) {\n const field_r2 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"form\", field_r2.form)(\"options\", field_r2.options)(\"model\", field_r2.model)(\"field\", field_r2);\n} }\nconst _c1 = [\"*\"];\nconst _c2 = [\"container\"];\nfunction FormlyField_ng_template_0_Template(rf, ctx) { }\nconst _c3 = [\"fieldComponent\"];\nfunction FormlyGroup_formly_field_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"formly-field\", 1);\n} if (rf & 2) {\n const f_r1 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"field\", f_r1);\n} }\nfunction disableTreeValidityCall(form, callback) {\n /** @type {?} */\n const _updateTreeValidity = form._updateTreeValidity.bind(form);\n form._updateTreeValidity = (/**\n * @return {?}\n */\n () => { });\n callback();\n form._updateTreeValidity = _updateTreeValidity;\n}\n/**\n * @param {?} formId\n * @param {?} field\n * @param {?} index\n * @return {?}\n */\nfunction getFieldId(formId, field, index) {\n if (field.id)\n return field.id;\n /** @type {?} */\n let type = field.type;\n if (!type && field.template) {\n type = 'template';\n }\n if (isFunction(type)) {\n type = ((/** @type {?} */ (type))).prototype.constructor.name;\n }\n return [formId, type, field.key, index].join('_');\n}\n/**\n * @param {?} field\n * @return {?}\n */\nfunction getKeyPath(field) {\n if (!field.key) {\n return [];\n }\n /* We store the keyPath in the field for performance reasons. This function will be called frequently. */\n if (!field._keyPath || field._keyPath.key !== field.key) {\n /** @type {?} */\n let path = [];\n if (typeof field.key === 'string') {\n /** @type {?} */\n const key = field.key.indexOf('[') === -1\n ? field.key\n : field.key.replace(/\\[(\\w+)\\]/g, '.$1');\n path = key.indexOf('.') !== -1 ? key.split('.') : [key];\n }\n else if (Array.isArray(field.key)) {\n path = field.key.slice(0);\n }\n else {\n path = [`${field.key}`];\n }\n field._keyPath = { key: field.key, path };\n }\n return field._keyPath.path.slice(0);\n}\n/** @type {?} */\nconst FORMLY_VALIDATORS = ['required', 'pattern', 'minLength', 'maxLength', 'min', 'max'];\n/**\n * @param {?} field\n * @param {?} value\n * @return {?}\n */\nfunction assignFieldValue(field, value) {\n /** @type {?} */\n let paths = getKeyPath(field);\n if (paths.length === 0) {\n return;\n }\n /** @type {?} */\n let root = field;\n while (root.parent) {\n root = root.parent;\n paths = [...getKeyPath(root), ...paths];\n }\n if (value === undefined && field.resetOnHide) {\n /** @type {?} */\n const k = paths.pop();\n /** @type {?} */\n const m = paths.reduce((/**\n * @param {?} model\n * @param {?} path\n * @return {?}\n */\n (model, path) => model[path] || {}), root.model);\n delete m[k];\n return;\n }\n assignModelValue(root.model, paths, value);\n}\n/**\n * @param {?} model\n * @param {?} paths\n * @param {?} value\n * @return {?}\n */\nfunction assignModelValue(model, paths, value) {\n for (let i = 0; i < (paths.length - 1); i++) {\n /** @type {?} */\n const path = paths[i];\n if (!model[path] || !isObject(model[path])) {\n model[path] = /^\\d+$/.test(paths[i + 1]) ? [] : {};\n }\n model = model[path];\n }\n model[paths[paths.length - 1]] = clone(value);\n}\n/**\n * @param {?} field\n * @return {?}\n */\nfunction getFieldValue(field) {\n /** @type {?} */\n let model = field.parent.model;\n for (const path of getKeyPath(field)) {\n if (!model) {\n return model;\n }\n model = model[path];\n }\n return model;\n}\n/**\n * @param {?} dest\n * @param {...?} args\n * @return {?}\n */\nfunction reverseDeepMerge(dest, ...args) {\n args.forEach((/**\n * @param {?} src\n * @return {?}\n */\n src => {\n for (let srcArg in src) {\n if (isNullOrUndefined(dest[srcArg]) || isBlankString(dest[srcArg])) {\n dest[srcArg] = clone(src[srcArg]);\n }\n else if (objAndSameType(dest[srcArg], src[srcArg])) {\n reverseDeepMerge(dest[srcArg], src[srcArg]);\n }\n }\n }));\n return dest;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isBlankString(value) {\n return value === '';\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isFunction(value) {\n return typeof (value) === 'function';\n}\n/**\n * @param {?} obj1\n * @param {?} obj2\n * @return {?}\n */\nfunction objAndSameType(obj1, obj2) {\n return isObject(obj1) && isObject(obj2)\n && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2)\n && !(Array.isArray(obj1) || Array.isArray(obj2));\n}\n/**\n * @param {?} x\n * @return {?}\n */\nfunction isObject(x) {\n return x != null && typeof x === 'object';\n}\n/**\n * @param {?} obj\n * @return {?}\n */\nfunction isPromise(obj) {\n return !!obj && typeof obj.then === 'function';\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction clone(value) {\n if (!isObject(value)\n || isObservable(value)\n || (value instanceof TemplateRef)\n || /* instanceof SafeHtmlImpl */ value.changingThisBreaksApplicationSecurity\n || ['RegExp', 'FileList', 'File', 'Blob'].indexOf(value.constructor.name) !== -1) {\n return value;\n }\n if (value instanceof Set) {\n return new Set(value);\n }\n if (value instanceof Map) {\n return new Map(value);\n }\n // https://github.com/moment/moment/blob/master/moment.js#L252\n if (value._isAMomentObject && isFunction(value.clone)) {\n return value.clone();\n }\n if (value instanceof AbstractControl) {\n return null;\n }\n if (value instanceof Date) {\n return new Date(value.getTime());\n }\n if (Array.isArray(value)) {\n return value.slice(0).map((/**\n * @param {?} v\n * @return {?}\n */\n v => clone(v)));\n }\n // best way to clone a js object maybe\n // https://stackoverflow.com/questions/41474986/how-to-clone-a-javascript-es6-class-instance\n /** @type {?} */\n const proto = Object.getPrototypeOf(value);\n /** @type {?} */\n let c = Object.create(proto);\n c = Object.setPrototypeOf(c, proto);\n // need to make a deep copy so we dont use Object.assign\n // also Object.assign wont copy property descriptor exactly\n return Object.keys(value).reduce((/**\n * @param {?} newVal\n * @param {?} prop\n * @return {?}\n */\n (newVal, prop) => {\n /** @type {?} */\n const propDesc = Object.getOwnPropertyDescriptor(value, prop);\n if (propDesc.get) {\n Object.defineProperty(newVal, prop, propDesc);\n }\n else {\n newVal[prop] = clone(value[prop]);\n }\n return newVal;\n }), c);\n}\n/**\n * @param {?} field\n * @param {?} prop\n * @param {?} defaultValue\n * @return {?}\n */\nfunction defineHiddenProp(field, prop, defaultValue) {\n Object.defineProperty(field, prop, { enumerable: false, writable: true, configurable: true });\n field[prop] = defaultValue;\n}\n/**\n * @template T\n * @param {?} o\n * @param {?} prop\n * @param {?} setFn\n * @return {?}\n */\nfunction wrapProperty(o, prop, setFn) {\n if (!o._observers) {\n defineHiddenProp(o, '_observers', {});\n }\n if (!o._observers[prop]) {\n o._observers[prop] = [];\n }\n /** @type {?} */\n let fns = o._observers[prop];\n if (fns.indexOf(setFn) === -1) {\n fns.push(setFn);\n setFn({ currentValue: o[prop], firstChange: true });\n if (fns.length === 1) {\n defineHiddenProp(o, `___$${prop}`, o[prop]);\n Object.defineProperty(o, prop, {\n configurable: true,\n get: (/**\n * @return {?}\n */\n () => o[`___$${prop}`]),\n set: (/**\n * @param {?} currentValue\n * @return {?}\n */\n currentValue => {\n if (currentValue !== o[`___$${prop}`]) {\n /** @type {?} */\n const previousValue = o[`___$${prop}`];\n o[`___$${prop}`] = currentValue;\n fns.forEach((/**\n * @param {?} changeFn\n * @return {?}\n */\n changeFn => changeFn({ previousValue, currentValue, firstChange: false })));\n }\n }),\n });\n }\n }\n return (/**\n * @return {?}\n */\n () => fns.splice(fns.indexOf(setFn), 1));\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst FORMLY_CONFIG = new InjectionToken('FORMLY_CONFIG');\n/**\n * Maintains list of formly field directive types. This can be used to register new field templates.\n */\nclass FormlyConfig {\n constructor() {\n this.types = {};\n this.validators = {};\n this.wrappers = {};\n this.messages = {};\n this.templateManipulators = {\n preWrapper: [],\n postWrapper: [],\n };\n this.extras = {\n checkExpressionOn: 'changeDetectionCheck',\n lazyRender: false,\n showError: (/**\n * @param {?} field\n * @return {?}\n */\n function (field) {\n return field.formControl && field.formControl.invalid && (field.formControl.touched || (field.options.parentForm && field.options.parentForm.submitted) || !!(field.field.validation && field.field.validation.show));\n }),\n };\n this.extensions = {};\n }\n /**\n * @param {?} config\n * @return {?}\n */\n addConfig(config) {\n if (config.types) {\n config.types.forEach((/**\n * @param {?} type\n * @return {?}\n */\n type => this.setType(type)));\n }\n if (config.validators) {\n config.validators.forEach((/**\n * @param {?} validator\n * @return {?}\n */\n validator => this.setValidator(validator)));\n }\n if (config.wrappers) {\n config.wrappers.forEach((/**\n * @param {?} wrapper\n * @return {?}\n */\n wrapper => this.setWrapper(wrapper)));\n }\n if (config.manipulators) {\n console.warn(`NgxFormly: passing 'manipulators' config is deprecated, use custom extension instead.`);\n config.manipulators.forEach((/**\n * @param {?} manipulator\n * @return {?}\n */\n manipulator => this.setManipulator(manipulator)));\n }\n if (config.validationMessages) {\n config.validationMessages.forEach((/**\n * @param {?} validation\n * @return {?}\n */\n validation => this.addValidatorMessage(validation.name, validation.message)));\n }\n if (config.extensions) {\n config.extensions.forEach((/**\n * @param {?} c\n * @return {?}\n */\n c => this.extensions[c.name] = c.extension));\n }\n if (config.extras) {\n this.extras = Object.assign({}, this.extras, config.extras);\n }\n }\n /**\n * @param {?} options\n * @return {?}\n */\n setType(options) {\n if (Array.isArray(options)) {\n options.forEach((/**\n * @param {?} option\n * @return {?}\n */\n (option) => this.setType(option)));\n }\n else {\n if (!this.types[options.name]) {\n this.types[options.name] = (/** @type {?} */ ({ name: options.name }));\n }\n ['component', 'extends', 'defaultOptions', 'wrappers'].forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n if (options.hasOwnProperty(prop)) {\n this.types[options.name][prop] = options[prop];\n }\n }));\n }\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getType(name) {\n if (!this.types[name]) {\n throw new Error(`[Formly Error] The type \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n this.mergeExtendedType(name);\n return this.types[name];\n }\n /**\n * @param {?=} field\n * @return {?}\n */\n getMergedField(field = {}) {\n /** @type {?} */\n const type = this.getType(field.type);\n if (type.defaultOptions) {\n reverseDeepMerge(field, type.defaultOptions);\n }\n /** @type {?} */\n const extendDefaults = type.extends && this.getType(type.extends).defaultOptions;\n if (extendDefaults) {\n reverseDeepMerge(field, extendDefaults);\n }\n if (field && field.optionsTypes) {\n field.optionsTypes.forEach((/**\n * @param {?} option\n * @return {?}\n */\n option => {\n /** @type {?} */\n const defaultOptions = this.getType(option).defaultOptions;\n if (defaultOptions) {\n reverseDeepMerge(field, defaultOptions);\n }\n }));\n }\n /** @type {?} */\n const componentRef = this.resolveFieldTypeRef(field);\n if (componentRef && componentRef.instance && componentRef.instance.defaultOptions) {\n reverseDeepMerge(field, componentRef.instance.defaultOptions);\n }\n if (!field.wrappers && type.wrappers) {\n field.wrappers = [...type.wrappers];\n }\n }\n /**\n * \\@internal\n * @param {?=} field\n * @return {?}\n */\n resolveFieldTypeRef(field = {}) {\n if (!field.type) {\n return null;\n }\n /** @type {?} */\n const type = this.getType(field.type);\n if (!type.component || type['_componentRef']) {\n return type['_componentRef'];\n }\n const { _resolver, _injector } = field.parent.options;\n /** @type {?} */\n const componentRef = _resolver\n .resolveComponentFactory(type.component)\n .create(_injector);\n defineHiddenProp(type, '_componentRef', componentRef);\n componentRef.destroy();\n return type['_componentRef'];\n }\n /**\n * @param {?} options\n * @return {?}\n */\n setWrapper(options) {\n this.wrappers[options.name] = options;\n if (options.types) {\n options.types.forEach((/**\n * @param {?} type\n * @return {?}\n */\n (type) => {\n this.setTypeWrapper(type, options.name);\n }));\n }\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getWrapper(name) {\n if (!this.wrappers[name]) {\n throw new Error(`[Formly Error] The wrapper \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n return this.wrappers[name];\n }\n /**\n * @param {?} type\n * @param {?} name\n * @return {?}\n */\n setTypeWrapper(type, name) {\n if (!this.types[type]) {\n this.types[type] = (/** @type {?} */ ({}));\n }\n if (!this.types[type].wrappers) {\n this.types[type].wrappers = [];\n }\n if (this.types[type].wrappers.indexOf(name) === -1) {\n this.types[type].wrappers.push(name);\n }\n }\n /**\n * @param {?} options\n * @return {?}\n */\n setValidator(options) {\n this.validators[options.name] = options;\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getValidator(name) {\n if (!this.validators[name]) {\n throw new Error(`[Formly Error] The validator \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n return this.validators[name];\n }\n /**\n * @param {?} name\n * @param {?} message\n * @return {?}\n */\n addValidatorMessage(name, message) {\n this.messages[name] = message;\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getValidatorMessage(name) {\n return this.messages[name];\n }\n /**\n * @param {?} manipulator\n * @return {?}\n */\n setManipulator(manipulator) {\n new manipulator.class()[manipulator.method](this);\n }\n /**\n * @private\n * @param {?} name\n * @return {?}\n */\n mergeExtendedType(name) {\n if (!this.types[name].extends) {\n return;\n }\n /** @type {?} */\n const extendedType = this.getType(this.types[name].extends);\n if (!this.types[name].component) {\n this.types[name].component = extendedType.component;\n }\n if (!this.types[name].wrappers) {\n this.types[name].wrappers = extendedType.wrappers;\n }\n }\n}\nFormlyConfig.ɵfac = function FormlyConfig_Factory(t) { return new (t || FormlyConfig)(); };\nFormlyConfig.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: FormlyConfig, factory: FormlyConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ FormlyConfig.ngInjectableDef = defineInjectable({ factory: function FormlyConfig_Factory() { return new FormlyConfig(); }, token: FormlyConfig, providedIn: \"root\" });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(FormlyConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyFormBuilder {\n /**\n * @param {?} formlyConfig\n * @param {?} componentFactoryResolver\n * @param {?} injector\n */\n constructor(formlyConfig, componentFactoryResolver, injector) {\n this.formlyConfig = formlyConfig;\n this.componentFactoryResolver = componentFactoryResolver;\n this.injector = injector;\n }\n /**\n * @param {?} formControl\n * @param {?=} fieldGroup\n * @param {?=} model\n * @param {?=} options\n * @return {?}\n */\n buildForm(formControl, fieldGroup = [], model, options) {\n if (!this.formlyConfig.extensions.core) {\n throw new Error('NgxFormly: missing `forRoot()` call. use `forRoot()` when registering the `FormlyModule`.');\n }\n /** @type {?} */\n const field = { fieldGroup, model, formControl, options: this._setOptions(options) };\n disableTreeValidityCall(formControl, (/**\n * @return {?}\n */\n () => {\n this._buildForm(field);\n field.options._checkField(field, true);\n }));\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n _buildForm(field) {\n this.getExtensions().forEach((/**\n * @param {?} extension\n * @return {?}\n */\n extension => extension.prePopulate && extension.prePopulate(field)));\n this.getExtensions().forEach((/**\n * @param {?} extension\n * @return {?}\n */\n extension => extension.onPopulate && extension.onPopulate(field)));\n if (field.fieldGroup) {\n field.fieldGroup.forEach((/**\n * @param {?} f\n * @return {?}\n */\n (f) => this._buildForm(f)));\n }\n this.getExtensions().forEach((/**\n * @param {?} extension\n * @return {?}\n */\n extension => extension.postPopulate && extension.postPopulate(field)));\n }\n /**\n * @private\n * @return {?}\n */\n getExtensions() {\n return Object.keys(this.formlyConfig.extensions).map((/**\n * @param {?} name\n * @return {?}\n */\n name => this.formlyConfig.extensions[name]));\n }\n /**\n * @private\n * @param {?} options\n * @return {?}\n */\n _setOptions(options) {\n options = options || {};\n options.formState = options.formState || {};\n if (!options.showError) {\n options.showError = this.formlyConfig.extras.showError;\n }\n if (!options.fieldChanges) {\n defineHiddenProp(options, 'fieldChanges', new Subject());\n }\n if (!options._resolver) {\n defineHiddenProp(options, '_resolver', this.componentFactoryResolver);\n }\n if (!options._injector) {\n defineHiddenProp(options, '_injector', this.injector);\n }\n if (!options._hiddenFieldsForCheck) {\n options._hiddenFieldsForCheck = [];\n }\n if (!options._markForCheck) {\n options._markForCheck = (/**\n * @param {?} field\n * @return {?}\n */\n (field) => {\n if (field._componentRefs) {\n field._componentRefs.forEach((/**\n * @param {?} ref\n * @return {?}\n */\n ref => {\n // NOTE: we cannot use ref.changeDetectorRef, see https://github.com/ngx-formly/ngx-formly/issues/2191\n /** @type {?} */\n const changeDetectorRef = ref.injector.get(ChangeDetectorRef);\n changeDetectorRef.markForCheck();\n }));\n }\n if (field.fieldGroup) {\n field.fieldGroup.forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => options._markForCheck(f)));\n }\n });\n }\n if (!options._buildField) {\n options._buildField = (/**\n * @param {?} field\n * @return {?}\n */\n (field) => {\n this._setOptions(field.options);\n this._buildForm(field);\n ((/** @type {?} */ (field.options)))._checkField(field, true);\n return field;\n });\n }\n return options;\n }\n}\nFormlyFormBuilder.ɵfac = function FormlyFormBuilder_Factory(t) { return new (t || FormlyFormBuilder)(ɵngcc0.ɵɵinject(FormlyConfig), ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector)); };\nFormlyFormBuilder.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: FormlyFormBuilder, factory: FormlyFormBuilder.ɵfac, providedIn: 'root' });\n/** @nocollapse */\nFormlyFormBuilder.ctorParameters = () => [\n { type: FormlyConfig },\n { type: ComponentFactoryResolver },\n { type: Injector }\n];\n/** @nocollapse */ FormlyFormBuilder.ngInjectableDef = defineInjectable({ factory: function FormlyFormBuilder_Factory() { return new FormlyFormBuilder(inject(FormlyConfig), inject(ComponentFactoryResolver), inject(INJECTOR)); }, token: FormlyFormBuilder, providedIn: \"root\" });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(FormlyFormBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: FormlyConfig }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} field\n * @param {?=} emitEvent\n * @return {?}\n */\nfunction unregisterControl(field, emitEvent = false) {\n /** @type {?} */\n const control = field.formControl;\n /** @type {?} */\n const fieldIndex = control['_fields'] ? control['_fields'].indexOf(field) : -1;\n if (fieldIndex !== -1) {\n control['_fields'].splice(fieldIndex, 1);\n }\n /** @type {?} */\n const form = (/** @type {?} */ (control.parent));\n if (!form) {\n return;\n }\n /** @type {?} */\n const opts = { emitEvent };\n if (form instanceof FormArray) {\n /** @type {?} */\n const key = form.controls.findIndex((/**\n * @param {?} c\n * @return {?}\n */\n c => c === control));\n if (key !== -1) {\n updateControl(form, opts, (/**\n * @return {?}\n */\n () => form.removeAt(key)));\n }\n }\n else if (form instanceof FormGroup) {\n /** @type {?} */\n const paths = getKeyPath(field);\n /** @type {?} */\n const key = paths[paths.length - 1];\n if (form.get([key]) === control) {\n updateControl(form, opts, (/**\n * @return {?}\n */\n () => form.removeControl(key)));\n }\n }\n control.setParent(null);\n}\n/**\n * @param {?} field\n * @return {?}\n */\nfunction findControl(field) {\n if (field.formControl) {\n return field.formControl;\n }\n if (field['shareFormControl'] === false) {\n return null;\n }\n /** @type {?} */\n const form = (/** @type {?} */ (field.parent.formControl));\n return form ? form.get(getKeyPath(field)) : null;\n}\n/**\n * @param {?} field\n * @param {?=} control\n * @param {?=} emitEvent\n * @return {?}\n */\nfunction registerControl(field, control, emitEvent = false) {\n control = control || field.formControl;\n if (!control['_fields']) {\n defineHiddenProp(control, '_fields', []);\n }\n if (control['_fields'].indexOf(field) === -1) {\n control['_fields'].push(field);\n }\n if (!field.formControl && control) {\n defineHiddenProp(field, 'formControl', control);\n control.setValidators(null);\n control.setAsyncValidators(null);\n field.templateOptions.disabled = !!field.templateOptions.disabled;\n wrapProperty(field.templateOptions, 'disabled', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ firstChange, currentValue }) => {\n if (!firstChange) {\n currentValue ? field.formControl.disable() : field.formControl.enable();\n }\n }));\n if (control.registerOnDisabledChange) {\n control.registerOnDisabledChange((/**\n * @param {?} value\n * @return {?}\n */\n (value) => {\n field.templateOptions['___$disabled'] = value;\n // TODO remove in V6\n field.options && field.options._markForCheck(field);\n }));\n }\n }\n /** @type {?} */\n let parent = (/** @type {?} */ (field.parent.formControl));\n if (!parent || !field.key) {\n return;\n }\n /** @type {?} */\n const paths = getKeyPath(field);\n /** @type {?} */\n const value = getFieldValue(field);\n if (!(isNullOrUndefined(control.value) && isNullOrUndefined(value))\n && control.value !== value\n && control instanceof FormControl) {\n control.patchValue(value);\n }\n for (let i = 0; i < (paths.length - 1); i++) {\n /** @type {?} */\n const path = paths[i];\n if (!parent.get([path])) {\n updateControl(parent, { emitEvent }, (/**\n * @return {?}\n */\n () => parent.setControl(path, new FormGroup({}))));\n }\n parent = (/** @type {?} */ (parent.get([path])));\n }\n /** @type {?} */\n const key = paths[paths.length - 1];\n if (!field._hide && parent.get([key]) !== control) {\n updateControl(parent, { emitEvent }, (/**\n * @return {?}\n */\n () => parent.setControl(key, control)));\n }\n}\n/**\n * @param {?} c\n * @param {?=} onlySelf\n * @return {?}\n */\nfunction updateValidity(c, onlySelf = false) {\n /** @type {?} */\n const status = c.status;\n /** @type {?} */\n const value = c.value;\n c.updateValueAndValidity({ emitEvent: false, onlySelf });\n if (status !== c.status) {\n ((/** @type {?} */ (c.statusChanges))).emit(c.status);\n }\n if (value !== c.value) {\n ((/** @type {?} */ (c.valueChanges))).emit(c.value);\n }\n}\n/**\n * @param {?} form\n * @param {?} opts\n * @param {?} action\n * @return {?}\n */\nfunction updateControl(form, opts, action) {\n /**\n * workaround for https://github.com/angular/angular/issues/27679\n */\n if (form instanceof FormGroup && !form['__patchForEachChild']) {\n defineHiddenProp(form, '__patchForEachChild', true);\n ((/** @type {?} */ (form)))._forEachChild = (/**\n * @param {?} cb\n * @return {?}\n */\n (cb) => {\n Object\n .keys(form.controls)\n .forEach((/**\n * @param {?} k\n * @return {?}\n */\n k => form.controls[k] && cb(form.controls[k], k)));\n });\n }\n /**\n * workaround for https://github.com/angular/angular/issues/20439\n * @type {?}\n */\n const updateValueAndValidity = form.updateValueAndValidity.bind(form);\n if (opts.emitEvent === false) {\n form.updateValueAndValidity = (/**\n * @param {?} opts\n * @return {?}\n */\n (opts) => {\n updateValueAndValidity(Object.assign({}, (opts || {}), { emitEvent: false }));\n });\n }\n action();\n if (opts.emitEvent === false) {\n form.updateValueAndValidity = updateValueAndValidity;\n }\n}\n/**\n * @param {?} form\n * @return {?}\n */\nfunction clearControl(form) {\n form['_fields'] && delete form['_fields'];\n form.setValidators(null);\n form.setAsyncValidators(null);\n if (form instanceof FormGroup || form instanceof FormArray) {\n Object.keys(form.controls)\n .forEach((/**\n * @param {?} k\n * @return {?}\n */\n (k) => clearControl(form.controls[k])));\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyForm {\n /**\n * @param {?} formlyBuilder\n * @param {?} formlyConfig\n * @param {?} ngZone\n * @param {?} immutable\n * @param {?} parentFormGroup\n */\n constructor(formlyBuilder, formlyConfig, ngZone, \n // tslint:disable-next-line\n immutable, parentFormGroup) {\n this.formlyBuilder = formlyBuilder;\n this.formlyConfig = formlyConfig;\n this.ngZone = ngZone;\n this.parentFormGroup = parentFormGroup;\n this.modelChange = new EventEmitter();\n this.immutable = false;\n this._modelChangeValue = {};\n this.modelChangeSubs = [];\n this.modelChange$ = new Subject();\n this.modelChangeSub = this.modelChange$.pipe(switchMap((/**\n * @return {?}\n */\n () => this.ngZone.onStable.asObservable().pipe(take(1))))).subscribe((/**\n * @return {?}\n */\n () => this.ngZone.runGuarded((/**\n * @return {?}\n */\n () => {\n // runGuarded is used to keep the expression changes in-sync\n // https://github.com/ngx-formly/ngx-formly/issues/2095\n this.checkExpressionChange();\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }))));\n if (immutable !== null) {\n console.warn(`NgxFormly: passing 'immutable' attribute to 'formly-form' component is deprecated since v5.5, enable immutable mode through NgModule declaration instead.`);\n }\n this.immutable = (immutable !== null) || !!formlyConfig.extras.immutable;\n }\n /**\n * @param {?} model\n * @return {?}\n */\n set model(model) { this._model = this.immutable ? clone(model) : model; }\n /**\n * @return {?}\n */\n get model() {\n if (!this._model) {\n this._model = {};\n }\n return this._model;\n }\n /**\n * @param {?} fields\n * @return {?}\n */\n set fields(fields) { this._fields = this.immutable ? clone(fields) : fields; }\n /**\n * @return {?}\n */\n get fields() { return this._fields || []; }\n /**\n * @param {?} options\n * @return {?}\n */\n set options(options) { this._options = this.immutable ? clone(options) : options; }\n /**\n * @return {?}\n */\n get options() { return this._options; }\n /**\n * @param {?} content\n * @return {?}\n */\n set content(content) {\n if (content) {\n /** @type {?} */\n let hasContent = false;\n /** @type {?} */\n let node = content.nativeElement.nextSibling;\n while (node && !hasContent) {\n if (node.nodeType === Node.ELEMENT_NODE\n || node.nodeType === Node.TEXT_NODE && node.textContent && node.textContent.trim() !== '') {\n hasContent = true;\n }\n node = node.nextSibling;\n }\n if (hasContent) {\n console.warn(`NgxFormly: content projection for 'formly-form' component is deprecated since v5.5, you should avoid passing content inside the 'formly-form' tag.`);\n }\n }\n }\n /**\n * @return {?}\n */\n ngDoCheck() {\n if (this.formlyConfig.extras.checkExpressionOn === 'changeDetectionCheck') {\n this.checkExpressionChange();\n }\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n // https://github.com/ngx-formly/ngx-formly/issues/2294\n if (changes.model && this.field) {\n this.field.model = this.model;\n }\n if (changes.fields && this.form) {\n clearControl(this.form);\n }\n if (changes.fields || changes.form || (changes.model && this._modelChangeValue !== changes.model.currentValue)) {\n this.form = this.form || (new FormGroup({}));\n this.setOptions();\n this.options.updateInitialValue();\n this.clearModelSubscriptions();\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.trackModelChanges(this.fields);\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.modelChangeSub.unsubscribe();\n this.clearModelSubscriptions();\n }\n /**\n * @param {?} __0\n * @return {?}\n */\n changeModel({ key, value, field }) {\n assignFieldValue(field, value);\n this.modelChange$.next();\n }\n /**\n * @return {?}\n */\n setOptions() {\n if (!this.options) {\n this.options = {};\n }\n if (!this.options.resetModel) {\n this.options.resetModel = (/**\n * @param {?=} model\n * @return {?}\n */\n (model) => {\n model = clone(isNullOrUndefined(model) ? ((/** @type {?} */ (this.options)))._initialModel : model);\n if (this.model) {\n Object.keys(this.model).forEach((/**\n * @param {?} k\n * @return {?}\n */\n k => delete this.model[k]));\n Object.assign(this.model, model || {});\n }\n ((/** @type {?} */ (this.options)))._buildForm();\n // we should call `NgForm::resetForm` to ensure changing `submitted` state after resetting form\n // but only when the current component is a root one.\n if (this.options.parentForm && this.options.parentForm.control === this.form) {\n this.options.parentForm.resetForm(this.model);\n }\n else {\n this.form.reset(this.model);\n }\n });\n }\n if (!this.options.parentForm && this.parentFormGroup) {\n defineHiddenProp(this.options, 'parentForm', this.parentFormGroup);\n wrapProperty(this.options.parentForm, 'submitted', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ firstChange }) => {\n if (!firstChange) {\n this.checkExpressionChange();\n ((/** @type {?} */ (this.options)))._markForCheck({\n fieldGroup: this.fields,\n model: this.model,\n formControl: this.form,\n options: this.options,\n });\n }\n }));\n }\n if (!this.options.updateInitialValue) {\n this.options.updateInitialValue = (/**\n * @return {?}\n */\n () => ((/** @type {?} */ (this.options)))._initialModel = clone(this.model));\n }\n if (!((/** @type {?} */ (this.options)))._buildForm) {\n ((/** @type {?} */ (this.options)))._buildForm = (/**\n * @param {?=} emitModelChange\n * @return {?}\n */\n (emitModelChange = false) => {\n this.clearModelSubscriptions();\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.trackModelChanges(this.fields);\n if (emitModelChange) {\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }\n });\n }\n if (!((/** @type {?} */ (this.options)))._trackModelChanges) {\n ((/** @type {?} */ (this.options)))._trackModelChanges = (/**\n * @param {?=} emitModelChange\n * @return {?}\n */\n (emitModelChange = false) => {\n this.clearModelSubscriptions();\n this.trackModelChanges(this.fields);\n if (emitModelChange) {\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }\n });\n }\n }\n /**\n * @private\n * @return {?}\n */\n checkExpressionChange() {\n if (this.options && ((/** @type {?} */ (this.options)))._checkField) {\n ((/** @type {?} */ (this.options)))._checkField({\n fieldGroup: this.fields,\n model: this.model,\n formControl: this.form,\n options: this.options,\n });\n }\n }\n /**\n * @private\n * @param {?} fields\n * @param {?=} rootKey\n * @return {?}\n */\n trackModelChanges(fields, rootKey = []) {\n fields.forEach((/**\n * @param {?} field\n * @return {?}\n */\n field => {\n if (field.key && !field.fieldGroup && field.formControl) {\n /** @type {?} */\n const control = field.formControl;\n /** @type {?} */\n let valueChanges = control.valueChanges.pipe(distinctUntilChanged((/**\n * @param {?} x\n * @param {?} y\n * @return {?}\n */\n (x, y) => {\n if (x !== y || Array.isArray(x) || isObject(x)) {\n return false;\n }\n return true;\n })));\n const { updateOn, debounce } = field.modelOptions;\n if ((!updateOn || updateOn === 'change') && debounce && debounce.default > 0) {\n valueChanges = control.valueChanges.pipe(debounceTime(debounce.default));\n }\n this.modelChangeSubs.push(valueChanges.subscribe((/**\n * @param {?} value\n * @return {?}\n */\n (value) => {\n // workaround for https://github.com/angular/angular/issues/13792\n if (control instanceof FormControl && control['_fields'] && control['_fields'].length > 1) {\n control.patchValue(value, { emitEvent: false, onlySelf: true });\n }\n if (field.parsers && field.parsers.length > 0) {\n field.parsers.forEach((/**\n * @param {?} parserFn\n * @return {?}\n */\n parserFn => value = parserFn(value)));\n }\n this.changeModel({ key: [...rootKey, ...getKeyPath(field)].join('.'), value, field });\n })));\n // workaround for v5 (https://github.com/ngx-formly/ngx-formly/issues/2061)\n /** @type {?} */\n const observers = control.valueChanges['observers'];\n if (observers && observers.length > 1) {\n observers.unshift(observers.pop());\n }\n }\n if (field.fieldGroup && field.fieldGroup.length > 0) {\n this.trackModelChanges(field.fieldGroup, field.key ? [...rootKey, ...getKeyPath(field)] : rootKey);\n }\n }));\n }\n /**\n * @private\n * @return {?}\n */\n clearModelSubscriptions() {\n this.modelChangeSubs.forEach((/**\n * @param {?} sub\n * @return {?}\n */\n sub => sub.unsubscribe()));\n this.modelChangeSubs = [];\n }\n /**\n * @private\n * @return {?}\n */\n get field() {\n return this.fields && this.fields[0] && this.fields[0].parent;\n }\n}\nFormlyForm.ɵfac = function FormlyForm_Factory(t) { return new (t || FormlyForm)(ɵngcc0.ɵɵdirectiveInject(FormlyFormBuilder), ɵngcc0.ɵɵdirectiveInject(FormlyConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵinjectAttribute('immutable'), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FormGroupDirective, 8)); };\nFormlyForm.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: FormlyForm, selectors: [[\"formly-form\"]], viewQuery: function FormlyForm_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.content = _t.first);\n } }, inputs: { model: \"model\", fields: \"fields\", options: \"options\", form: \"form\" }, outputs: { modelChange: \"modelChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([FormlyFormBuilder]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c1, decls: 4, vars: 1, consts: [[\"hide-deprecation\", \"\", 3, \"form\", \"options\", \"model\", \"field\", 4, \"ngFor\", \"ngForOf\"], [\"content\", \"\"], [\"hide-deprecation\", \"\", 3, \"form\", \"options\", \"model\", \"field\"]], template: function FormlyForm_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, FormlyForm_formly_field_0_Template, 1, 4, \"formly-field\", 0);\n ɵngcc0.ɵɵelementContainerStart(1, null, 1);\n ɵngcc0.ɵɵprojection(3);\n ɵngcc0.ɵɵelementContainerEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.fields);\n } }, directives: function () { return [ɵngcc2.NgForOf, FormlyField]; }, encapsulation: 2 });\n/** @nocollapse */\nFormlyForm.ctorParameters = () => [\n { type: FormlyFormBuilder },\n { type: FormlyConfig },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Attribute, args: ['immutable',] }] },\n { type: FormGroupDirective, decorators: [{ type: Optional }] }\n];\nFormlyForm.propDecorators = {\n form: [{ type: Input }],\n model: [{ type: Input }],\n fields: [{ type: Input }],\n options: [{ type: Input }],\n modelChange: [{ type: Output }],\n content: [{ type: ViewChild, args: ['content',] }]\n};\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(FormlyForm, [{\n type: Component,\n args: [{\n selector: 'formly-form',\n template: `\n \n \n \n \n \n `,\n providers: [FormlyFormBuilder]\n }]\n }], function () { return [{ type: FormlyFormBuilder }, { type: FormlyConfig }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['immutable']\n }] }, { type: ɵngcc1.FormGroupDirective, decorators: [{\n type: Optional\n }] }]; }, { modelChange: [{\n type: Output\n }], model: [{\n type: Input\n }], fields: [{\n type: Input\n }], options: [{\n type: Input\n }], content: [{\n type: ViewChild,\n args: ['content']\n }], form: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyField {\n /**\n * @param {?} formlyConfig\n * @param {?} renderer\n * @param {?} resolver\n * @param {?} elementRef\n * @param {?} hideDeprecation\n */\n constructor(formlyConfig, renderer, resolver, elementRef, \n // tslint:disable-next-line\n hideDeprecation) {\n this.formlyConfig = formlyConfig;\n this.renderer = renderer;\n this.resolver = resolver;\n this.elementRef = elementRef;\n this.warnDeprecation = false;\n this.modelChange = new EventEmitter();\n this.hostObservers = [];\n this.componentRefs = [];\n this.hooksObservers = [];\n this.detectFieldBuild = false;\n this.warnDeprecation = hideDeprecation === null;\n }\n /**\n * @param {?} m\n * @return {?}\n */\n set model(m) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'model' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n /**\n * @param {?} form\n * @return {?}\n */\n set form(form) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'form' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n /**\n * @param {?} options\n * @return {?}\n */\n set options(options) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'options' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n this.triggerHook('afterContentInit');\n }\n /**\n * @return {?}\n */\n ngAfterContentChecked() {\n this.triggerHook('afterContentChecked');\n }\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n this.triggerHook('afterViewInit');\n }\n /**\n * @return {?}\n */\n ngAfterViewChecked() {\n this.triggerHook('afterViewChecked');\n }\n /**\n * @return {?}\n */\n ngDoCheck() {\n this.triggerHook('doCheck');\n if (this.detectFieldBuild && (this.field && this.field.options)) {\n this.render();\n }\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.triggerHook('onInit');\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n this.triggerHook('onChanges', changes);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.resetRefs(this.field);\n this.hostObservers.forEach((/**\n * @param {?} unsubscribe\n * @return {?}\n */\n unsubscribe => unsubscribe()));\n this.hooksObservers.forEach((/**\n * @param {?} unsubscribe\n * @return {?}\n */\n unsubscribe => unsubscribe()));\n this.triggerHook('onDestroy');\n }\n /**\n * @private\n * @param {?} containerRef\n * @param {?} f\n * @param {?=} wrappers\n * @return {?}\n */\n renderField(containerRef, f, wrappers = []) {\n if (this.containerRef === containerRef) {\n this.resetRefs(this.field);\n this.containerRef.clear();\n wrappers = this.field ? this.field.wrappers : [];\n }\n if (wrappers && wrappers.length > 0) {\n const [wrapper, ...wps] = wrappers;\n const { component } = this.formlyConfig.getWrapper(wrapper);\n /** @type {?} */\n const ref = containerRef.createComponent(this.resolver.resolveComponentFactory(component));\n this.attachComponentRef(ref, f);\n wrapProperty(ref.instance, 'fieldComponent', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ firstChange, previousValue, currentValue }) => {\n if (currentValue) {\n if (previousValue && previousValue['_lContainer'] === currentValue['_lContainer']) {\n return;\n }\n /** @type {?} */\n const viewRef = previousValue ? previousValue.detach() : null;\n if (viewRef && !viewRef.destroyed) {\n currentValue.insert(viewRef);\n }\n else {\n this.renderField(currentValue, f, wps);\n }\n !firstChange && ref.changeDetectorRef.detectChanges();\n }\n }));\n }\n else if (f && f.type) {\n const { component } = this.formlyConfig.getType(f.type);\n /** @type {?} */\n const ref = containerRef.createComponent(this.resolver.resolveComponentFactory(component));\n this.attachComponentRef(ref, f);\n }\n }\n /**\n * @private\n * @param {?} name\n * @param {?=} changes\n * @return {?}\n */\n triggerHook(name, changes) {\n if (this.field && this.field.hooks && this.field.hooks[name]) {\n if (!changes || changes.field) {\n /** @type {?} */\n const r = this.field.hooks[name](this.field);\n if (isObservable(r) && ['onInit', 'afterContentInit', 'afterViewInit'].indexOf(name) !== -1) {\n /** @type {?} */\n const sub = r.subscribe();\n this.hooksObservers.push((/**\n * @return {?}\n */\n () => sub.unsubscribe()));\n }\n }\n }\n if (this.field && this.field.lifecycle && this.field.lifecycle[name]) {\n this.field.lifecycle[name](this.field.form, this.field, this.field.model, this.field.options);\n }\n if (name === 'onChanges' && changes.field) {\n this.resetRefs(changes.field.previousValue);\n this.render();\n }\n }\n /**\n * @private\n * @template T\n * @param {?} ref\n * @param {?} field\n * @return {?}\n */\n attachComponentRef(ref, field) {\n this.componentRefs.push(ref);\n field._componentRefs.push(ref);\n Object.assign(ref.instance, { field });\n }\n /**\n * @private\n * @return {?}\n */\n render() {\n if (!this.field) {\n return;\n }\n // require Formly build\n if (!this.field.options) {\n this.detectFieldBuild = true;\n return;\n }\n this.detectFieldBuild = false;\n this.hostObservers.forEach((/**\n * @param {?} unsubscribe\n * @return {?}\n */\n unsubscribe => unsubscribe()));\n this.hostObservers = [\n wrapProperty(this.field, 'hide', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ firstChange, currentValue }) => {\n if (!firstChange || (firstChange && currentValue)) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', currentValue ? 'none' : '');\n }\n if (!this.formlyConfig.extras.lazyRender) {\n firstChange && this.renderField(this.containerRef, this.field);\n }\n else {\n if (currentValue) {\n this.containerRef.clear();\n if (this.field.className) {\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'class');\n }\n }\n else {\n this.renderField(this.containerRef, this.field);\n if (this.field.className) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'class', this.field.className);\n }\n }\n }\n })),\n wrapProperty(this.field, 'className', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ firstChange, currentValue }) => {\n if ((!firstChange || (firstChange && currentValue))\n && (!this.formlyConfig.extras.lazyRender || (this.field.hide !== true))) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'class', currentValue);\n }\n })),\n ];\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n resetRefs(field) {\n if (field) {\n if (field._componentRefs) {\n field._componentRefs = field._componentRefs.filter((/**\n * @param {?} ref\n * @return {?}\n */\n ref => this.componentRefs.indexOf(ref) === -1));\n }\n else {\n defineHiddenProp(this.field, '_componentRefs', []);\n }\n }\n this.componentRefs = [];\n }\n}\nFormlyField.ɵfac = function FormlyField_Factory(t) { return new (t || FormlyField)(ɵngcc0.ɵɵdirectiveInject(FormlyConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵinjectAttribute('hide-deprecation')); };\nFormlyField.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: FormlyField, selectors: [[\"formly-field\"]], viewQuery: function FormlyField_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵstaticViewQuery(_c2, true, ViewContainerRef);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.containerRef = _t.first);\n } }, inputs: { model: \"model\", form: \"form\", options: \"options\", field: \"field\" }, outputs: { modelChange: \"modelChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 2, vars: 0, consts: [[\"container\", \"\"]], template: function FormlyField_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, FormlyField_ng_template_0_Template, 0, 0, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, encapsulation: 2 });\n/** @nocollapse */\nFormlyField.ctorParameters = () => [\n { type: FormlyConfig },\n { type: Renderer2 },\n { type: ComponentFactoryResolver },\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Attribute, args: ['hide-deprecation',] }] }\n];\nFormlyField.propDecorators = {\n field: [{ type: Input }],\n model: [{ type: Input }],\n form: [{ type: Input }],\n options: [{ type: Input }],\n modelChange: [{ type: Output }],\n containerRef: [{ type: ViewChild, args: ['container', (/** @type {?} */ ({ read: ViewContainerRef, static: true })),] }]\n};\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(FormlyField, [{\n type: Component,\n args: [{\n selector: 'formly-field',\n template: ``\n }]\n }], function () { return [{ type: FormlyConfig }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['hide-deprecation']\n }] }]; }, { modelChange: [{\n type: Output\n }], model: [{\n type: Input\n }], form: [{\n type: Input\n }], options: [{\n type: Input\n }], field: [{\n type: Input\n }], containerRef: [{\n type: ViewChild,\n args: ['container', ( /** @type {?} */({ read: ViewContainerRef, static: true }))]\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyAttributes {\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _document\n */\n constructor(renderer, elementRef, _document) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.uiAttributesCache = {};\n this.uiAttributes = null;\n /**\n * HostBinding doesn't register listeners conditionally which may produce some perf issues.\n *\n * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1991\n */\n this.uiEvents = {\n listeners: [],\n events: ['click', 'keyup', 'keydown', 'keypress', 'focus', 'blur', 'change'],\n callback: (/**\n * @param {?} eventName\n * @param {?} $event\n * @return {?}\n */\n (eventName, $event) => {\n switch (eventName) {\n case 'focus':\n return this.onFocus($event);\n case 'blur':\n return this.onBlur($event);\n case 'change':\n return this.onChange($event);\n default:\n return this.to[eventName](this.field, $event);\n }\n }),\n };\n this.document = _document;\n }\n /**\n * @return {?}\n */\n get to() { return this.field.templateOptions || {}; }\n /**\n * @private\n * @return {?}\n */\n get fieldAttrElements() { return (this.field && this.field['_elementRefs']) || []; }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.field) {\n this.field.name && this.setAttribute('name', this.field.name);\n this.uiEvents.listeners.forEach((/**\n * @param {?} listener\n * @return {?}\n */\n (listener) => listener()));\n this.uiEvents.events.forEach((/**\n * @param {?} eventName\n * @return {?}\n */\n (eventName) => {\n if ((this.to && this.to[eventName]) || ['focus', 'blur', 'change'].indexOf(eventName) !== -1) {\n this.uiEvents.listeners.push(this.renderer.listen(this.elementRef.nativeElement, eventName, (/**\n * @param {?} e\n * @return {?}\n */\n (e) => this.uiEvents.callback(eventName, e))));\n }\n }));\n if (this.to && this.to.attributes) {\n wrapProperty(this.to, 'attributes', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ currentValue, previousValue }) => {\n if (previousValue) {\n Object.keys(previousValue).forEach((/**\n * @param {?} attr\n * @return {?}\n */\n attr => this.removeAttribute(attr)));\n }\n if (currentValue) {\n Object.keys(currentValue).forEach((/**\n * @param {?} attr\n * @return {?}\n */\n attr => {\n if (currentValue[attr] != null) {\n this.setAttribute(attr, currentValue[attr]);\n }\n }));\n }\n }));\n }\n this.detachElementRef(changes.field.previousValue);\n this.attachElementRef(changes.field.currentValue);\n if (this.fieldAttrElements.length === 1) {\n !this.id && this.field.id && this.setAttribute('id', this.field.id);\n wrapProperty(this.field, 'focus', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ currentValue }) => {\n this.toggleFocus(currentValue);\n }));\n }\n }\n if (changes.id) {\n this.setAttribute('id', this.id);\n }\n }\n /**\n * We need to re-evaluate all the attributes on every change detection cycle, because\n * by using a HostBinding we run into certain edge cases. This means that whatever logic\n * is in here has to be super lean or we risk seriously damaging or destroying the performance.\n *\n * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1317\n * Material issue: https://github.com/angular/components/issues/14024\n * @return {?}\n */\n ngDoCheck() {\n if (!this.uiAttributes) {\n /** @type {?} */\n const element = (/** @type {?} */ (this.elementRef.nativeElement));\n this.uiAttributes = [...FORMLY_VALIDATORS, 'tabindex', 'placeholder', 'readonly', 'disabled', 'step'].filter((/**\n * @param {?} attr\n * @return {?}\n */\n (attr) => !element.hasAttribute || !element.hasAttribute(attr)));\n }\n this.uiAttributes.forEach((/**\n * @param {?} attr\n * @return {?}\n */\n attr => {\n /** @type {?} */\n const value = this.to[attr];\n if (this.uiAttributesCache[attr] !== value\n && (!this.to.attributes || !this.to.attributes.hasOwnProperty(attr.toLowerCase()))) {\n this.uiAttributesCache[attr] = value;\n if (value || value === 0) {\n this.setAttribute(attr, value === true ? attr : `${value}`);\n }\n else {\n this.removeAttribute(attr);\n }\n }\n }));\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.uiEvents.listeners.forEach((/**\n * @param {?} listener\n * @return {?}\n */\n listener => listener()));\n this.detachElementRef(this.field);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n toggleFocus(value) {\n /** @type {?} */\n const element = this.fieldAttrElements ? this.fieldAttrElements[0] : null;\n if (!element || !element.nativeElement.focus) {\n return;\n }\n /** @type {?} */\n const isFocused = !!this.document.activeElement\n && this.fieldAttrElements\n .some((/**\n * @param {?} __0\n * @return {?}\n */\n ({ nativeElement }) => this.document.activeElement === nativeElement || nativeElement.contains(this.document.activeElement)));\n if (value && !isFocused) {\n Promise.resolve().then((/**\n * @return {?}\n */\n () => element.nativeElement.focus()));\n }\n else if (!value && isFocused) {\n Promise.resolve().then((/**\n * @return {?}\n */\n () => element.nativeElement.blur()));\n }\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n onFocus($event) {\n this.field['___$focus'] = true;\n if (this.to.focus) {\n this.to.focus(this.field, $event);\n }\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n onBlur($event) {\n this.field['___$focus'] = false;\n if (this.to.blur) {\n this.to.blur(this.field, $event);\n }\n }\n // handle custom `change` event, for regular ones rely on DOM listener\n /**\n * @param {?} $event\n * @return {?}\n */\n onHostChange($event) {\n if ($event instanceof Event) {\n return;\n }\n this.onChange($event);\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n onChange($event) {\n if (this.to.change) {\n this.to.change(this.field, $event);\n }\n if (this.field.formControl) {\n this.field.formControl.markAsDirty();\n }\n }\n /**\n * @private\n * @param {?} f\n * @return {?}\n */\n attachElementRef(f) {\n if (!f) {\n return;\n }\n if (f['_elementRefs'] && f['_elementRefs'].indexOf(this.elementRef) === -1) {\n f['_elementRefs'].push(this.elementRef);\n }\n else {\n defineHiddenProp(f, '_elementRefs', [this.elementRef]);\n }\n }\n /**\n * @private\n * @param {?} f\n * @return {?}\n */\n detachElementRef(f) {\n /** @type {?} */\n const index = f && f['_elementRefs'] ? this.fieldAttrElements.indexOf(this.elementRef) : -1;\n if (index !== -1) {\n this.field['_elementRefs'].splice(index, 1);\n }\n }\n /**\n * @private\n * @param {?} attr\n * @param {?} value\n * @return {?}\n */\n setAttribute(attr, value) {\n this.renderer.setAttribute(this.elementRef.nativeElement, attr, value);\n }\n /**\n * @private\n * @param {?} attr\n * @return {?}\n */\n removeAttribute(attr) {\n this.renderer.removeAttribute(this.elementRef.nativeElement, attr);\n }\n}\nFormlyAttributes.ɵfac = function FormlyAttributes_Factory(t) { return new (t || FormlyAttributes)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nFormlyAttributes.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: FormlyAttributes, selectors: [[\"\", \"formlyAttributes\", \"\"]], hostBindings: function FormlyAttributes_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function FormlyAttributes_change_HostBindingHandler($event) { return ctx.onHostChange($event); });\n } }, inputs: { field: [\"formlyAttributes\", \"field\"], id: \"id\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nFormlyAttributes.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nFormlyAttributes.propDecorators = {\n field: [{ type: Input, args: ['formlyAttributes',] }],\n id: [{ type: Input }]\n};\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(FormlyAttributes, [{\n type: Directive,\n args: [{\n selector: '[formlyAttributes]',\n host: {\n '(change)': 'onHostChange($event)'\n }\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { field: [{\n type: Input,\n args: ['formlyAttributes']\n }], id: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n * @template F\n */\nclass FieldType {\n /**\n * @return {?}\n */\n get model() { return this.field.model; }\n /**\n * @param {?} m\n * @return {?}\n */\n set model(m) { console.warn(`NgxFormly: passing 'model' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n /**\n * @return {?}\n */\n get form() { return (/** @type {?} */ (this.field.parent.formControl)); }\n /**\n * @param {?} form\n * @return {?}\n */\n set form(form) { console.warn(`NgxFormly: passing 'form' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n /**\n * @return {?}\n */\n get options() { return this.field.options; }\n /**\n * @param {?} options\n * @return {?}\n */\n set options(options) { console.warn(`NgxFormly: passing 'options' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n /**\n * @return {?}\n */\n get key() { return this.field.key; }\n /**\n * @return {?}\n */\n get formControl() { return (/** @type {?} */ (this.field.formControl)); }\n /**\n * @return {?}\n */\n get to() { return this.field.templateOptions || {}; }\n /**\n * @return {?}\n */\n get showError() { return this.options.showError(this); }\n /**\n * @return {?}\n */\n get id() { return this.field.id; }\n /**\n * @return {?}\n */\n get formState() { return this.options.formState || {}; }\n}\nFieldType.ɵfac = function FieldType_Factory(t) { return new (t || FieldType)(); };\nFieldType.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: FieldType, inputs: { model: \"model\", form: \"form\", options: \"options\", field: \"field\" } });\nFieldType.propDecorators = {\n field: [{ type: Input }],\n model: [{ type: Input }],\n form: [{ type: Input }],\n options: [{ type: Input }]\n};\n\n/**\n * @deprecated use `FieldType` instead\n * @abstract\n */\nclass Field extends FieldType {\n constructor() {\n super();\n console.warn(`NgxFormly: 'Field' has been renamed to 'FieldType', extend 'FieldType' instead.`);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// TODO remove `selector` in V6\n// tslint:disable-next-line\n/**\n * @abstract\n * @template F\n */\nclass FieldArrayType extends FieldType {\n /**\n * @param {?=} builder\n */\n constructor(builder) {\n super();\n this.defaultOptions = {\n defaultValue: [],\n };\n if (builder instanceof FormlyFormBuilder) {\n console.warn(`NgxFormly: passing 'FormlyFormBuilder' to '${this.constructor.name}' type is not required anymore, you may remove it!`);\n }\n }\n /**\n * @return {?}\n */\n get formControl() {\n return (/** @type {?} */ (this.field.formControl));\n }\n /**\n * @param {?} field\n * @return {?}\n */\n onPopulate(field) {\n if (!field.formControl && field.key) {\n /** @type {?} */\n const control = findControl(field);\n registerControl(field, control ? control : new FormArray([], { updateOn: field.modelOptions.updateOn }));\n }\n field.fieldGroup = field.fieldGroup || [];\n /** @type {?} */\n const length = field.model ? field.model.length : 0;\n if (field.fieldGroup.length > length) {\n for (let i = field.fieldGroup.length - 1; i >= length; --i) {\n unregisterControl(field.fieldGroup[i], true);\n field.fieldGroup.splice(i, 1);\n }\n }\n for (let i = field.fieldGroup.length; i < length; i++) {\n /** @type {?} */\n const f = Object.assign({}, clone(field.fieldArray), { key: `${i}` });\n field.fieldGroup.push(f);\n }\n }\n /**\n * @param {?=} i\n * @param {?=} initialModel\n * @param {?=} __2\n * @return {?}\n */\n add(i, initialModel, { markAsDirty } = { markAsDirty: true }) {\n i = isNullOrUndefined(i) ? this.field.fieldGroup.length : i;\n if (!this.model) {\n assignFieldValue(this.field, []);\n }\n this.model.splice(i, 0, initialModel ? clone(initialModel) : undefined);\n this._build();\n markAsDirty && this.formControl.markAsDirty();\n }\n /**\n * @param {?} i\n * @param {?=} __1\n * @return {?}\n */\n remove(i, { markAsDirty } = { markAsDirty: true }) {\n this.model.splice(i, 1);\n unregisterControl(this.field.fieldGroup[i], true);\n this.field.fieldGroup.splice(i, 1);\n this.field.fieldGroup.forEach((/**\n * @param {?} f\n * @param {?} key\n * @return {?}\n */\n (f, key) => f.key = `${key}`));\n this._build();\n markAsDirty && this.formControl.markAsDirty();\n }\n /**\n * @private\n * @return {?}\n */\n _build() {\n ((/** @type {?} */ (this.options)))._buildField(this.field);\n ((/** @type {?} */ (this.options)))._trackModelChanges(true);\n }\n}\nFieldArrayType.ɵfac = function FieldArrayType_Factory(t) { return new (t || FieldArrayType)(ɵngcc0.ɵɵdirectiveInject(FORMLY_CONFIG, 8)); };\nFieldArrayType.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: FieldArrayType, selectors: [[\"fieldArray\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nFieldArrayType.ctorParameters = () => [\n { type: FormlyFormBuilder, decorators: [{ type: Inject, args: [FORMLY_CONFIG,] }, { type: Optional }] }\n];\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(FieldArrayType, [{\n type: Directive,\n args: [{ selector: '[ɵfieldArray]' }]\n }], function () { return [{ type: FormlyFormBuilder, decorators: [{\n type: Inject,\n args: [FORMLY_CONFIG]\n }, {\n type: Optional\n }] }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n * @template F\n */\nclass FieldWrapper extends FieldType {\n}\nFieldWrapper.ɵfac = function FieldWrapper_Factory(t) { return ɵFieldWrapper_BaseFactory(t || FieldWrapper); };\nFieldWrapper.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: FieldWrapper, viewQuery: function FieldWrapper_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c3, true, ViewContainerRef);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fieldComponent = _t.first);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nFieldWrapper.propDecorators = {\n fieldComponent: [{ type: ViewChild, args: ['fieldComponent', (/** @type {?} */ ({ read: ViewContainerRef, static: false })),] }]\n};\nconst ɵFieldWrapper_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(FieldWrapper);\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyGroup extends FieldType {\n constructor() {\n super(...arguments);\n this.defaultOptions = {\n defaultValue: {},\n };\n }\n}\nFormlyGroup.ɵfac = function FormlyGroup_Factory(t) { return ɵFormlyGroup_BaseFactory(t || FormlyGroup); };\nFormlyGroup.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: FormlyGroup, selectors: [[\"formly-group\"]], hostVars: 2, hostBindings: function FormlyGroup_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassMap(ctx.field.fieldGroupClassName || \"\");\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1, decls: 2, vars: 1, consts: [[3, \"field\", 4, \"ngFor\", \"ngForOf\"], [3, \"field\"]], template: function FormlyGroup_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, FormlyGroup_formly_field_0_Template, 1, 1, \"formly-field\", 0);\n ɵngcc0.ɵɵprojection(1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.field.fieldGroup);\n } }, directives: [ɵngcc2.NgForOf, FormlyField], encapsulation: 2 });\nconst ɵFormlyGroup_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(FormlyGroup);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(FormlyGroup, [{\n type: Component,\n args: [{\n selector: 'formly-group',\n template: `\n \n \n `,\n host: {\n '[class]': 'field.fieldGroupClassName || \"\"'\n }\n }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyValidationMessage {\n /**\n * @param {?} formlyConfig\n */\n constructor(formlyConfig) {\n this.formlyConfig = formlyConfig;\n }\n /**\n * @return {?}\n */\n ngOnChanges() {\n /** @type {?} */\n const EXPR_VALIDATORS = FORMLY_VALIDATORS.map((/**\n * @param {?} v\n * @return {?}\n */\n v => `templateOptions.${v}`));\n this.errorMessage$ = merge(this.field.formControl.statusChanges, (!this.field.options\n ? of(null)\n : this.field.options.fieldChanges.pipe(filter((/**\n * @param {?} __0\n * @return {?}\n */\n ({ field, type, property }) => {\n return (field === this.field)\n && (type === 'expressionChanges')\n && ((property.indexOf('validation') !== -1)\n || (EXPR_VALIDATORS.indexOf(property) !== -1));\n }))))).pipe(startWith(null), switchMap((/**\n * @return {?}\n */\n () => isObservable(this.errorMessage)\n ? this.errorMessage\n : of(this.errorMessage))));\n }\n /**\n * @return {?}\n */\n get errorMessage() {\n /** @type {?} */\n const fieldForm = this.field.formControl;\n for (let error in fieldForm.errors) {\n if (fieldForm.errors.hasOwnProperty(error)) {\n /** @type {?} */\n let message = this.formlyConfig.getValidatorMessage(error);\n if (isObject(fieldForm.errors[error])) {\n if (fieldForm.errors[error].errorPath) {\n return;\n }\n if (fieldForm.errors[error].message) {\n message = fieldForm.errors[error].message;\n }\n }\n if (this.field.validation && this.field.validation.messages && this.field.validation.messages[error]) {\n message = this.field.validation.messages[error];\n }\n if (this.field.validators && this.field.validators[error] && this.field.validators[error].message) {\n message = this.field.validators[error].message;\n }\n if (this.field.asyncValidators && this.field.asyncValidators[error] && this.field.asyncValidators[error].message) {\n message = this.field.asyncValidators[error].message;\n }\n if (typeof message === 'function') {\n return message(fieldForm.errors[error], this.field);\n }\n return message;\n }\n }\n }\n}\nFormlyValidationMessage.ɵfac = function FormlyValidationMessage_Factory(t) { return new (t || FormlyValidationMessage)(ɵngcc0.ɵɵdirectiveInject(FormlyConfig)); };\nFormlyValidationMessage.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: FormlyValidationMessage, selectors: [[\"formly-validation-message\"]], inputs: { field: \"field\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 2, vars: 3, template: function FormlyValidationMessage_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n ɵngcc0.ɵɵpipe(1, \"async\");\n } if (rf & 2) {\n ɵngcc0.ɵɵtextInterpolate(ɵngcc0.ɵɵpipeBind1(1, 1, ctx.errorMessage$));\n } }, pipes: [ɵngcc2.AsyncPipe], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nFormlyValidationMessage.ctorParameters = () => [\n { type: FormlyConfig }\n];\nFormlyValidationMessage.propDecorators = {\n field: [{ type: Input }]\n};\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(FormlyValidationMessage, [{\n type: Component,\n args: [{\n selector: 'formly-validation-message',\n template: `{{ errorMessage$ | async }}`,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: FormlyConfig }]; }, { field: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyTemplateType extends FieldType {\n /**\n * @param {?} sanitizer\n */\n constructor(sanitizer) {\n super();\n this.sanitizer = sanitizer;\n this.innerHtml = { content: null, template: null };\n }\n /**\n * @return {?}\n */\n get template() {\n if (this.field && (this.field.template !== this.innerHtml.template)) {\n this.innerHtml = {\n template: this.field.template,\n content: this.to.safeHtml\n ? this.sanitizer.bypassSecurityTrustHtml(this.field.template)\n : this.field.template,\n };\n }\n return this.innerHtml.content;\n }\n}\nFormlyTemplateType.ɵfac = function FormlyTemplateType_Factory(t) { return new (t || FormlyTemplateType)(ɵngcc0.ɵɵdirectiveInject(ɵngcc3.DomSanitizer)); };\nFormlyTemplateType.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: FormlyTemplateType, selectors: [[\"formly-template\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, \"innerHtml\"]], template: function FormlyTemplateType_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"innerHtml\", ctx.template, ɵngcc0.ɵɵsanitizeHtml);\n } }, encapsulation: 2 });\n/** @nocollapse */\nFormlyTemplateType.ctorParameters = () => [\n { type: DomSanitizer }\n];\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(FormlyTemplateType, [{\n type: Component,\n args: [{\n selector: 'formly-template',\n template: `
`\n }]\n }], function () { return [{ type: ɵngcc3.DomSanitizer }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} expression\n * @param {?} argNames\n * @return {?}\n */\nfunction evalStringExpression(expression, argNames) {\n try {\n if (expression.indexOf('this.field') !== -1) {\n console.warn(`NgxFormly: using 'this.field' in expressionProperties is deprecated since v5.1, use 'field' instead.`);\n }\n return (/** @type {?} */ (Function(...argNames, `return ${expression};`)));\n }\n catch (error) {\n console.error(error);\n }\n}\n/**\n * @param {?} expression\n * @param {?} thisArg\n * @param {?} argVal\n * @return {?}\n */\nfunction evalExpression(expression, thisArg, argVal) {\n if (expression instanceof Function) {\n return expression.apply(thisArg, argVal);\n }\n else {\n return expression ? true : false;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@experimental\n */\nclass FieldExpressionExtension {\n /**\n * @param {?} field\n * @return {?}\n */\n prePopulate(field) {\n if (field.parent || field.options._checkField) {\n return;\n }\n /** @type {?} */\n let checkLocked = false;\n field.options._checkField = (/**\n * @param {?} f\n * @param {?} ignoreCache\n * @return {?}\n */\n (f, ignoreCache) => {\n if (!checkLocked) {\n checkLocked = true;\n this.checkField(f, ignoreCache);\n checkLocked = false;\n }\n });\n }\n /**\n * @param {?} field\n * @return {?}\n */\n postPopulate(field) {\n if (!field.parent || field._expressionProperties) {\n return;\n }\n // cache built expression\n defineHiddenProp(field, '_expressionProperties', {});\n if (field.expressionProperties) {\n for (const key in field.expressionProperties) {\n /** @type {?} */\n const expressionProperty = field.expressionProperties[key];\n if (typeof expressionProperty === 'string' || isFunction(expressionProperty)) {\n field._expressionProperties[key] = {\n expression: this._evalExpression(key, expressionProperty, key === 'templateOptions.disabled' && field.parent.expressionProperties && field.parent.expressionProperties.hasOwnProperty('templateOptions.disabled')\n ? (/**\n * @return {?}\n */\n () => field.parent.templateOptions.disabled)\n : undefined),\n };\n if (key === 'templateOptions.disabled') {\n Object.defineProperty(field._expressionProperties[key], 'expressionValue', {\n get: (/**\n * @return {?}\n */\n () => field.templateOptions.disabled),\n set: (/**\n * @return {?}\n */\n () => { }),\n enumerable: true,\n configurable: true,\n });\n }\n }\n else if (expressionProperty instanceof Observable) {\n /** @type {?} */\n const subscribe = (/**\n * @return {?}\n */\n () => ((/** @type {?} */ (expressionProperty)))\n .subscribe((/**\n * @param {?} v\n * @return {?}\n */\n v => {\n this.setExprValue(field, key, v);\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n })));\n /** @type {?} */\n let subscription = subscribe();\n /** @type {?} */\n const onInit = field.hooks.onInit;\n field.hooks.onInit = (/**\n * @return {?}\n */\n () => {\n if (subscription === null) {\n subscription = subscribe();\n }\n return onInit && onInit(field);\n });\n /** @type {?} */\n const onDestroy = field.hooks.onDestroy;\n field.hooks.onDestroy = (/**\n * @return {?}\n */\n () => {\n onDestroy && onDestroy(field);\n subscription.unsubscribe();\n subscription = null;\n });\n }\n }\n }\n if (field.hideExpression) {\n // delete hide value in order to force re-evaluate it in FormlyFormExpression.\n delete field.hide;\n field.hideExpression = this._evalExpression('hide', field.hideExpression, (/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n let root = field.parent;\n while (root.parent && !root.hide) {\n root = root.parent;\n }\n return root.hide;\n }));\n }\n else {\n wrapProperty(field, 'hide', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ currentValue, firstChange }) => {\n field._hide = currentValue;\n if (!firstChange || (firstChange && currentValue === true)) {\n field.options._hiddenFieldsForCheck.push(field);\n }\n }));\n }\n }\n /**\n * @private\n * @param {?} prop\n * @param {?} expression\n * @param {?=} parentExpression\n * @return {?}\n */\n _evalExpression(prop, expression, parentExpression) {\n return (/**\n * @param {...?} args\n * @return {?}\n */\n (...args) => {\n try {\n if (typeof expression === 'string') {\n expression = evalStringExpression(expression, ['model', 'formState', 'field']);\n }\n if (typeof expression !== 'function') {\n expression = (/**\n * @return {?}\n */\n () => !!expression);\n }\n return (parentExpression && parentExpression()) || expression(...args);\n }\n catch (error) {\n error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n throw error;\n }\n });\n }\n /**\n * @private\n * @param {?} field\n * @param {?} prop\n * @return {?}\n */\n _evalExpressionPath(field, prop) {\n if (field._expressionProperties[prop] && field._expressionProperties[prop].expressionPaths) {\n return field._expressionProperties[prop].expressionPaths;\n }\n /** @type {?} */\n let paths = [];\n if (prop.indexOf('[') === -1) {\n paths = prop.split('.');\n }\n else {\n prop\n .split(/[[\\]]{1,2}/) // https://stackoverflow.com/a/20198206\n .filter((/**\n * @param {?} p\n * @return {?}\n */\n p => p))\n .forEach(((/**\n * @param {?} path\n * @return {?}\n */\n path => {\n /** @type {?} */\n const arrayPath = path.match(/['|\"](.*?)['|\"]/);\n if (arrayPath) {\n paths.push(arrayPath[1]);\n }\n else {\n paths.push(...path.split('.').filter((/**\n * @param {?} p\n * @return {?}\n */\n p => p)));\n }\n })));\n }\n if (field._expressionProperties[prop]) {\n field._expressionProperties[prop].expressionPaths = paths;\n }\n return paths;\n }\n /**\n * @private\n * @param {?} field\n * @param {?=} ignoreCache\n * @return {?}\n */\n checkField(field, ignoreCache = false) {\n /** @type {?} */\n const fieldChanged = this._checkField(field, ignoreCache);\n field.options._hiddenFieldsForCheck\n .sort((/**\n * @param {?} f\n * @return {?}\n */\n f => f.hide ? -1 : 1))\n .forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => this.toggleFormControl(f, !!f.hide, !ignoreCache)));\n field.options._hiddenFieldsForCheck = [];\n if (fieldChanged) {\n this.checkField(field);\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n }\n }\n /**\n * @private\n * @param {?} field\n * @param {?=} ignoreCache\n * @return {?}\n */\n _checkField(field, ignoreCache = false) {\n /** @type {?} */\n let fieldChanged = false;\n field.fieldGroup.forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => {\n if (!f.options) {\n return;\n }\n this.checkFieldExpressionChange(f, ignoreCache) && (fieldChanged = true);\n if (this.checkFieldVisibilityChange(f, ignoreCache)) {\n field.options._hiddenFieldsForCheck.push(f);\n fieldChanged = true;\n }\n if (f.fieldGroup && f.fieldGroup.length > 0) {\n this._checkField(f, ignoreCache) && (fieldChanged = true);\n }\n }));\n return fieldChanged;\n }\n /**\n * @private\n * @param {?} field\n * @param {?} ignoreCache\n * @return {?}\n */\n checkFieldExpressionChange(field, ignoreCache) {\n if (!field || !field._expressionProperties) {\n return false;\n }\n /** @type {?} */\n let markForCheck = false;\n /** @type {?} */\n const expressionProperties = field._expressionProperties;\n for (const key in expressionProperties) {\n /** @type {?} */\n let expressionValue = evalExpression(expressionProperties[key].expression, { field }, [field.model, field.options.formState, field, ignoreCache]);\n if (key === 'templateOptions.disabled') {\n expressionValue = !!expressionValue;\n }\n if (ignoreCache || (expressionProperties[key].expressionValue !== expressionValue\n && (!(isObject(expressionValue) || isFunction(expressionValue))\n || (isFunction(expressionValue)\n && ('' + expressionProperties[key].expressionValue !== '' + expressionValue))\n || isObservable(expressionValue)\n || JSON.stringify(expressionValue) !== JSON.stringify(expressionProperties[key].expressionValue)))) {\n markForCheck = true;\n expressionProperties[key].expressionValue = expressionValue;\n this.setExprValue(field, key, expressionValue);\n }\n }\n return markForCheck;\n }\n /**\n * @private\n * @param {?} field\n * @param {?} ignoreCache\n * @return {?}\n */\n checkFieldVisibilityChange(field, ignoreCache) {\n if (!field || isNullOrUndefined(field.hideExpression)) {\n return false;\n }\n /** @type {?} */\n const hideExpressionResult = !!evalExpression(field.hideExpression, { field }, [field.model, field.options.formState, field, ignoreCache]);\n /** @type {?} */\n let markForCheck = false;\n if (hideExpressionResult !== field.hide || ignoreCache) {\n markForCheck = true;\n // toggle hide\n field.hide = hideExpressionResult;\n field.templateOptions.hidden = hideExpressionResult;\n }\n return markForCheck;\n }\n /**\n * @private\n * @param {?} field\n * @param {?} value\n * @return {?}\n */\n setDisabledState(field, value) {\n if (field.fieldGroup) {\n field.fieldGroup\n .filter((/**\n * @param {?} f\n * @return {?}\n */\n f => !f.expressionProperties || !f.expressionProperties.hasOwnProperty('templateOptions.disabled')))\n .forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => this.setDisabledState(f, value)));\n }\n if (field.key && field.templateOptions.disabled !== value) {\n field.templateOptions.disabled = value;\n }\n }\n /**\n * @private\n * @param {?} field\n * @param {?} hide\n * @param {?} resetOnHide\n * @return {?}\n */\n toggleFormControl(field, hide, resetOnHide) {\n if (field.fieldGroup) {\n field.fieldGroup\n .filter((/**\n * @param {?} f\n * @return {?}\n */\n f => !f.hideExpression))\n .forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => this.toggleFormControl(f, hide, resetOnHide)));\n }\n if (field.formControl && field.key) {\n defineHiddenProp(field, '_hide', !!(hide || field.hide));\n /** @type {?} */\n const c = field.formControl;\n if (c['_fields'] && c['_fields'].length > 1) {\n updateValidity(c);\n }\n if (hide === true && (!c['_fields'] || c['_fields'].every((/**\n * @param {?} f\n * @return {?}\n */\n f => !!f._hide)))) {\n unregisterControl(field, true);\n if (resetOnHide && field.resetOnHide) {\n field.formControl.reset({ value: undefined, disabled: field.formControl.disabled });\n if (field.fieldGroup) {\n assignFieldValue(field, undefined);\n if (field.formControl instanceof FormArray) {\n field.fieldGroup.length = 0;\n }\n }\n }\n }\n else if (hide === false) {\n if (field.resetOnHide && field.parent && !isUndefined(field.defaultValue) && isUndefined(getFieldValue(field))) {\n assignFieldValue(field, field.defaultValue);\n }\n registerControl(field, undefined, true);\n if (field.resetOnHide && field.fieldArray && (field.fieldGroup || []).length !== (field.model || []).length) {\n ((/** @type {?} */ (field.options)))._buildForm(true);\n }\n }\n }\n if (field.options.fieldChanges) {\n field.options.fieldChanges.next((/** @type {?} */ ({ field, type: 'hidden', value: hide })));\n }\n }\n /**\n * @private\n * @param {?} field\n * @param {?} prop\n * @param {?} value\n * @return {?}\n */\n setExprValue(field, prop, value) {\n try {\n /** @type {?} */\n let target = field;\n /** @type {?} */\n const paths = this._evalExpressionPath(field, prop);\n /** @type {?} */\n const lastIndex = paths.length - 1;\n for (let i = 0; i < lastIndex; i++) {\n target = target[paths[i]];\n }\n target[paths[lastIndex]] = value;\n }\n catch (error) {\n error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n throw error;\n }\n if (prop === 'templateOptions.disabled' && field.key) {\n this.setDisabledState(field, value);\n }\n if (prop.indexOf('model.') === 0) {\n /** @type {?} */\n const path = prop.replace(/^model\\./, '');\n /** @type {?} */\n const control = field.key && prop === path ? field.formControl : field.parent.formControl.get(path);\n if (control\n && !(isNullOrUndefined(control.value) && isNullOrUndefined(value))\n && control.value !== value) {\n control.patchValue(value);\n }\n }\n this.emitExpressionChanges(field, prop, value);\n }\n /**\n * @private\n * @param {?} field\n * @param {?} property\n * @param {?} value\n * @return {?}\n */\n emitExpressionChanges(field, property, value) {\n if (!field.options.fieldChanges) {\n return;\n }\n field.options.fieldChanges.next({\n field: field,\n type: 'expressionChanges',\n property,\n value,\n });\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@experimental\n */\nclass FieldValidationExtension {\n /**\n * @param {?} formlyConfig\n */\n constructor(formlyConfig) {\n this.formlyConfig = formlyConfig;\n }\n /**\n * @param {?} field\n * @return {?}\n */\n onPopulate(field) {\n this.initFieldValidation(field, 'validators');\n this.initFieldValidation(field, 'asyncValidators');\n }\n /**\n * @private\n * @param {?} field\n * @param {?} type\n * @return {?}\n */\n initFieldValidation(field, type) {\n /** @type {?} */\n const validators = [];\n if (type === 'validators' && !(field.hasOwnProperty('fieldGroup') && !field.key)) {\n validators.push(this.getPredefinedFieldValidation(field));\n }\n if (field[type]) {\n for (const validatorName in field[type]) {\n if (validatorName === 'validation' && !Array.isArray(field[type].validation)) {\n field[type].validation = [field[type].validation];\n console.warn(`NgxFormly(${field.key}): passing a non array value to the 'validation' is deprecated, pass an array instead`);\n }\n validatorName === 'validation'\n ? validators.push(...field[type].validation.map((/**\n * @param {?} v\n * @return {?}\n */\n v => this.wrapNgValidatorFn(field, v))))\n : validators.push(this.wrapNgValidatorFn(field, field[type][validatorName], validatorName));\n }\n }\n defineHiddenProp(field, '_' + type, validators);\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n getPredefinedFieldValidation(field) {\n /** @type {?} */\n let VALIDATORS = [];\n FORMLY_VALIDATORS.forEach((/**\n * @param {?} opt\n * @return {?}\n */\n opt => wrapProperty(field.templateOptions, opt, (/**\n * @param {?} __0\n * @return {?}\n */\n ({ currentValue, firstChange }) => {\n VALIDATORS = VALIDATORS.filter((/**\n * @param {?} o\n * @return {?}\n */\n o => o !== opt));\n if (currentValue != null && currentValue !== false) {\n VALIDATORS.push(opt);\n }\n if (!firstChange && field.formControl) {\n updateValidity(field.formControl);\n }\n }))));\n return (/**\n * @param {?} control\n * @return {?}\n */\n (control) => {\n if (VALIDATORS.length === 0) {\n return null;\n }\n return Validators.compose(VALIDATORS.map((/**\n * @param {?} opt\n * @return {?}\n */\n opt => (/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const value = field.templateOptions[opt];\n switch (opt) {\n case 'required':\n return Validators.required(control);\n case 'pattern':\n return Validators.pattern(value)(control);\n case 'minLength':\n return Validators.minLength(value)(control);\n case 'maxLength':\n return Validators.maxLength(value)(control);\n case 'min':\n return Validators.min(value)(control);\n case 'max':\n return Validators.max(value)(control);\n }\n }))))(control);\n });\n }\n /**\n * @private\n * @param {?} field\n * @param {?} validator\n * @param {?=} validatorName\n * @return {?}\n */\n wrapNgValidatorFn(field, validator, validatorName) {\n /** @type {?} */\n let validatorOption = null;\n if (typeof validator === 'string') {\n validatorOption = clone(this.formlyConfig.getValidator(validator));\n }\n if (typeof validator === 'object' && validator.name) {\n validatorOption = clone(this.formlyConfig.getValidator(validator.name));\n if (validator.options) {\n validatorOption.options = validator.options;\n }\n }\n if (typeof validator === 'object' && validator.expression) {\n const { expression } = validator, options = __rest(validator, [\"expression\"]);\n validatorOption = {\n name: validatorName,\n validation: expression,\n options: Object.keys(options).length > 0 ? options : null,\n };\n }\n if (typeof validator === 'function') {\n validatorOption = {\n name: validatorName,\n validation: validator,\n };\n }\n return (/**\n * @param {?} control\n * @return {?}\n */\n (control) => {\n /** @type {?} */\n const errors = validatorOption.validation(control, field, validatorOption.options);\n if (isPromise(errors)) {\n return errors.then((/**\n * @param {?} v\n * @return {?}\n */\n v => this.handleAsyncResult(field, validatorName ? !!v : v, validatorOption)));\n }\n if (isObservable(errors)) {\n return errors.pipe(map((/**\n * @param {?} v\n * @return {?}\n */\n v => this.handleAsyncResult(field, validatorName ? !!v : v, validatorOption))));\n }\n return this.handleResult(field, validatorName ? !!errors : errors, validatorOption);\n });\n }\n /**\n * @private\n * @param {?} field\n * @param {?} errors\n * @param {?} options\n * @return {?}\n */\n handleAsyncResult(field, errors, options) {\n // workaround for https://github.com/angular/angular/issues/13200\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n return this.handleResult(field, errors, options);\n }\n /**\n * @private\n * @param {?} field\n * @param {?} errors\n * @param {?} __2\n * @return {?}\n */\n handleResult(field, errors, { name, options }) {\n if (typeof errors === 'boolean') {\n errors = errors ? null : { [name]: options ? options : true };\n }\n /** @type {?} */\n const ctrl = field.formControl;\n ctrl['_childrenErrors'] && ctrl['_childrenErrors'][name] && ctrl['_childrenErrors'][name]();\n if (isObject(errors)) {\n Object.keys(errors).forEach((/**\n * @param {?} name\n * @return {?}\n */\n name => {\n /** @type {?} */\n const errorPath = errors[name].errorPath\n ? errors[name].errorPath\n : (options || {}).errorPath;\n /** @type {?} */\n const childCtrl = errorPath ? field.formControl.get(errorPath) : null;\n if (childCtrl) {\n const _a = errors[name], opts = __rest(_a, [\"errorPath\"]);\n childCtrl.setErrors(Object.assign({}, (childCtrl.errors || {}), { [name]: opts }));\n !ctrl['_childrenErrors'] && defineHiddenProp(ctrl, '_childrenErrors', {});\n ctrl['_childrenErrors'][name] = (/**\n * @return {?}\n */\n () => {\n const _a = childCtrl.errors || {}, _b = name, toDelete = _a[_b], childErrors = __rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\n childCtrl.setErrors(Object.keys(childErrors).length === 0 ? null : childErrors);\n });\n }\n }));\n }\n return errors;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@experimental\n */\nclass FieldFormExtension {\n /**\n * @param {?} config\n */\n constructor(config) {\n this.config = config;\n }\n /**\n * @param {?} field\n * @return {?}\n */\n prePopulate(field) {\n if (!this.root) {\n this.root = field;\n }\n }\n /**\n * @param {?} field\n * @return {?}\n */\n onPopulate(field) {\n if (!field.parent) {\n return;\n }\n if (field.fieldGroup && !field.key) {\n defineHiddenProp(field, 'formControl', field.parent.formControl);\n }\n else {\n this.addFormControl(field);\n }\n }\n /**\n * @param {?} field\n * @return {?}\n */\n postPopulate(field) {\n if (this.root !== field) {\n return;\n }\n this.root = null;\n this.setValidators(field);\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n addFormControl(field) {\n /** @type {?} */\n let control = findControl(field);\n if (!control) {\n /** @type {?} */\n const controlOptions = { updateOn: field.modelOptions.updateOn };\n /** @type {?} */\n const value = field.key ? getFieldValue(field) : field.defaultValue;\n /** @type {?} */\n const ref = this.config ? this.config.resolveFieldTypeRef(field) : null;\n if (ref && ref.componentType && ref.componentType['createControl']) {\n /** @type {?} */\n const component = ref.componentType;\n console.warn(`NgxFormly: '${component.name}::createControl' is deprecated since v5.0, use 'prePopulate' hook instead.`);\n control = component['createControl'](value, field);\n }\n else if (field.fieldGroup) {\n // TODO: move to postPopulate\n control = new FormGroup({}, controlOptions);\n }\n else {\n control = new FormControl(value, controlOptions);\n }\n }\n registerControl(field, control);\n }\n /**\n * @private\n * @param {?} field\n * @param {?=} disabled\n * @return {?}\n */\n setValidators(field, disabled = false) {\n /** @type {?} */\n let markForCheck = false;\n if (disabled === false && field.key && field.templateOptions && field.templateOptions.disabled) {\n disabled = true;\n }\n (field.fieldGroup || []).forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => this.setValidators(f, disabled) && (markForCheck = true)));\n if (field.key || !field.parent || (!field.key && !field.fieldGroup)) {\n const { formControl: c } = field;\n field.templateOptions = field.templateOptions || {};\n if (field.key && c && c instanceof FormControl) {\n if (disabled && c.enabled) {\n c.disable({ emitEvent: false, onlySelf: true });\n markForCheck = true;\n }\n if (!disabled && c.disabled) {\n c.enable({ emitEvent: false, onlySelf: true });\n markForCheck = true;\n }\n }\n if (c && (null === c.validator || null === c.asyncValidator)) {\n c.setValidators((/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const v = Validators.compose(this.mergeValidators(field, '_validators'));\n return v ? v(c) : null;\n }));\n c.setAsyncValidators((/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const v = Validators.composeAsync(this.mergeValidators(field, '_asyncValidators'));\n return v ? v(c) : of(null);\n }));\n markForCheck = true;\n }\n if (markForCheck) {\n updateValidity(c, true);\n // update validity of `FormGroup` instance created by field with nested key.\n /** @type {?} */\n let parent = c.parent;\n for (let i = 1; i < getKeyPath(field).length; i++) {\n if (parent) {\n updateValidity(parent, true);\n parent = parent.parent;\n }\n }\n }\n }\n return markForCheck;\n }\n /**\n * @private\n * @template T\n * @param {?} field\n * @param {?} type\n * @return {?}\n */\n mergeValidators(field, type) {\n /** @type {?} */\n const validators = [];\n /** @type {?} */\n const c = field.formControl;\n if (c && c['_fields'] && c['_fields'].length > 1) {\n c['_fields']\n .filter((/**\n * @param {?} f\n * @return {?}\n */\n (f) => !f._hide))\n .forEach((/**\n * @param {?} f\n * @return {?}\n */\n (f) => validators.push(...f[type])));\n }\n else if (field[type]) {\n validators.push(...field[type]);\n }\n if (field.fieldGroup) {\n field.fieldGroup\n .filter((/**\n * @param {?} f\n * @return {?}\n */\n f => !f.key && f.fieldGroup))\n .forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => validators.push(...this.mergeValidators(f, type))));\n }\n return validators;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@experimental\n */\nclass CoreExtension {\n /**\n * @param {?} formlyConfig\n */\n constructor(formlyConfig) {\n this.formlyConfig = formlyConfig;\n this.formId = 0;\n }\n /**\n * @param {?} field\n * @return {?}\n */\n prePopulate(field) {\n this.getFieldComponentInstance(field).prePopulate();\n if (field.parent) {\n return;\n }\n /** @type {?} */\n const fieldTransforms = (field.options && field.options.fieldTransform) || this.formlyConfig.extras.fieldTransform;\n (Array.isArray(fieldTransforms) ? fieldTransforms : [fieldTransforms]).forEach((/**\n * @param {?} fieldTransform\n * @return {?}\n */\n fieldTransform => {\n if (fieldTransform) {\n console.warn(`NgxFormly: fieldTransform is deprecated since v5.0, use custom extension instead.`);\n /** @type {?} */\n const fieldGroup = fieldTransform(field.fieldGroup, field.model, (/** @type {?} */ (field.formControl)), field.options);\n if (!fieldGroup) {\n throw new Error('fieldTransform must return an array of fields');\n }\n }\n }));\n }\n /**\n * @param {?} field\n * @return {?}\n */\n onPopulate(field) {\n this.initFieldOptions(field);\n this.getFieldComponentInstance(field).onPopulate();\n if (field.fieldGroup) {\n field.fieldGroup.forEach((/**\n * @param {?} f\n * @param {?} index\n * @return {?}\n */\n (f, index) => {\n Object.defineProperty(f, 'parent', { get: (/**\n * @return {?}\n */\n () => field), configurable: true });\n Object.defineProperty(f, 'index', { get: (/**\n * @return {?}\n */\n () => index), configurable: true });\n this.formId++;\n }));\n }\n }\n /**\n * @param {?} field\n * @return {?}\n */\n postPopulate(field) {\n this.getFieldComponentInstance(field).postPopulate();\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n initFieldOptions(field) {\n /** @type {?} */\n const root = (/** @type {?} */ (field.parent));\n if (!root) {\n return;\n }\n Object.defineProperty(field, 'form', { get: (/**\n * @return {?}\n */\n () => root.formControl), configurable: true });\n Object.defineProperty(field, 'options', { get: (/**\n * @return {?}\n */\n () => root.options), configurable: true });\n Object.defineProperty(field, 'model', {\n get: (/**\n * @return {?}\n */\n () => field.key && field.fieldGroup ? getFieldValue(field) : root.model),\n configurable: true,\n });\n reverseDeepMerge(field, {\n id: getFieldId(`formly_${this.formId}`, field, field['index']),\n hooks: {},\n modelOptions: {},\n validation: { messages: {} },\n templateOptions: !field.type || !field.key ? {} : {\n label: '',\n placeholder: '',\n focus: false,\n disabled: false,\n },\n });\n if (this.formlyConfig.extras.resetFieldOnHide && field.resetOnHide !== false) {\n field.resetOnHide = true;\n }\n if (field.lifecycle) {\n console.warn(`NgxFormly: 'lifecycle' is deprecated since v5.0, use 'hooks' instead.`);\n }\n if (field.type !== 'formly-template'\n && (field.template\n || (field.expressionProperties && field.expressionProperties.template))) {\n if (field.type) {\n console.warn(`NgxFormly: passing 'type' property is not allowed when 'template' is set.`);\n }\n field.type = 'formly-template';\n }\n if (!field.type && field.fieldGroup) {\n field.type = 'formly-group';\n }\n if (field.type) {\n this.formlyConfig.getMergedField(field);\n }\n if (field.parent) {\n /** @type {?} */\n let setDefaultValue = !isUndefined(field.key)\n && !isUndefined(field.defaultValue)\n && isUndefined(getFieldValue(field))\n && (!field.resetOnHide || !(field.hide || field.hideExpression));\n if (setDefaultValue && field.resetOnHide) {\n /** @type {?} */\n let parent = field.parent;\n while (parent && !parent.hideExpression && !parent.hide) {\n parent = parent.parent;\n }\n setDefaultValue = !parent || !(parent.hideExpression || parent.hide);\n }\n if (setDefaultValue) {\n assignFieldValue(field, field.defaultValue);\n }\n }\n this.initFieldWrappers(field);\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n initFieldWrappers(field) {\n field.wrappers = field.wrappers || [];\n /** @type {?} */\n const fieldTemplateManipulators = Object.assign({ preWrapper: [], postWrapper: [] }, (field.templateOptions.templateManipulators || {}));\n field.wrappers = [\n ...this.formlyConfig.templateManipulators.preWrapper.map((/**\n * @param {?} m\n * @return {?}\n */\n m => m(field))),\n ...fieldTemplateManipulators.preWrapper.map((/**\n * @param {?} m\n * @return {?}\n */\n m => m(field))),\n ...field.wrappers,\n ...this.formlyConfig.templateManipulators.postWrapper.map((/**\n * @param {?} m\n * @return {?}\n */\n m => m(field))),\n ...fieldTemplateManipulators.postWrapper.map((/**\n * @param {?} m\n * @return {?}\n */\n m => m(field))),\n ].filter((/**\n * @param {?} el\n * @param {?} i\n * @param {?} a\n * @return {?}\n */\n (el, i, a) => el && i === a.indexOf(el)));\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n getFieldComponentInstance(field) {\n /** @type {?} */\n const componentRef = this.formlyConfig.resolveFieldTypeRef(field);\n /** @type {?} */\n const instance = componentRef ? (/** @type {?} */ (componentRef.instance)) : {};\n return {\n prePopulate: (/**\n * @return {?}\n */\n () => instance.prePopulate && instance.prePopulate(field)),\n onPopulate: (/**\n * @return {?}\n */\n () => instance.onPopulate && instance.onPopulate(field)),\n postPopulate: (/**\n * @return {?}\n */\n () => instance.postPopulate && instance.postPopulate(field)),\n };\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} formlyConfig\n * @return {?}\n */\nfunction defaultFormlyConfig(formlyConfig) {\n return {\n types: [\n { name: 'formly-group', component: FormlyGroup },\n { name: 'formly-template', component: FormlyTemplateType },\n ],\n extensions: [\n { name: 'core', extension: new CoreExtension(formlyConfig) },\n { name: 'field-validation', extension: new FieldValidationExtension(formlyConfig) },\n { name: 'field-form', extension: new FieldFormExtension(formlyConfig) },\n { name: 'field-expression', extension: new FieldExpressionExtension() },\n ],\n };\n}\nclass FormlyModule {\n /**\n * @param {?} configService\n * @param {?=} configs\n */\n constructor(configService, configs = []) {\n if (!configs) {\n return;\n }\n configs.forEach((/**\n * @param {?} config\n * @return {?}\n */\n config => configService.addConfig(config)));\n }\n /**\n * @param {?=} config\n * @return {?}\n */\n static forRoot(config = {}) {\n return {\n ngModule: FormlyModule,\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: defaultFormlyConfig, deps: [FormlyConfig] },\n { provide: FORMLY_CONFIG, useValue: config, multi: true },\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: config, multi: true },\n FormlyConfig,\n FormlyFormBuilder,\n ],\n };\n }\n /**\n * @param {?=} config\n * @return {?}\n */\n static forChild(config = {}) {\n return {\n ngModule: FormlyModule,\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: defaultFormlyConfig, deps: [FormlyConfig] },\n { provide: FORMLY_CONFIG, useValue: config, multi: true },\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: config, multi: true },\n FormlyFormBuilder,\n ],\n };\n }\n}\nFormlyModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: FormlyModule });\nFormlyModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function FormlyModule_Factory(t) { return new (t || FormlyModule)(ɵngcc0.ɵɵinject(FormlyConfig), ɵngcc0.ɵɵinject(FORMLY_CONFIG, 8)); }, imports: [[CommonModule]] });\n/** @nocollapse */\nFormlyModule.ctorParameters = () => [\n { type: FormlyConfig },\n { type: Array, decorators: [{ type: Optional }, { type: Inject, args: [FORMLY_CONFIG,] }] }\n];\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FormlyModule, { declarations: function () { return [FormlyForm,\n FormlyField,\n FormlyAttributes,\n FormlyGroup,\n FormlyValidationMessage,\n FormlyTemplateType,\n FieldArrayType]; }, imports: function () { return [CommonModule]; }, exports: function () { return [FormlyForm,\n FormlyField,\n FormlyAttributes,\n FormlyGroup,\n FormlyValidationMessage]; } }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(FormlyModule, [{\n type: NgModule,\n args: [{\n declarations: [\n FormlyForm,\n FormlyField,\n FormlyAttributes,\n FormlyGroup,\n FormlyValidationMessage,\n FormlyTemplateType,\n ( /** @type {?} */(FieldArrayType)),\n ],\n entryComponents: [FormlyGroup, FormlyTemplateType],\n exports: [FormlyForm, FormlyField, FormlyAttributes, FormlyGroup, FormlyValidationMessage],\n imports: [CommonModule]\n }]\n }], function () { return [{ type: FormlyConfig }, { type: Array, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FORMLY_CONFIG]\n }] }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { FormlyForm, FormlyField, FormlyAttributes, FORMLY_CONFIG, FormlyConfig, FormlyFormBuilder, FieldType, Field, FieldArrayType, FieldWrapper, FormlyModule, defineHiddenProp as ɵdefineHiddenProp, reverseDeepMerge as ɵreverseDeepMerge, getFieldValue as ɵgetFieldValue, clone as ɵclone, wrapProperty as ɵwrapProperty, defaultFormlyConfig as ɵa, CoreExtension as ɵe, FieldExpressionExtension as ɵh, FieldFormExtension as ɵg, FieldValidationExtension as ɵf, FormlyTemplateType as ɵd, FormlyGroup as ɵb, FormlyValidationMessage as ɵc };\n\n//# sourceMappingURL=ngx-formly-core.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar iterator_1 = require(\"../symbol/iterator\");\nfunction isIterable(input) {\n return input && typeof input[iterator_1.iterator] === 'function';\n}\nexports.isIterable = isIterable;\n//# sourceMappingURL=isIterable.js.map","import { ViewChild, ViewChildren, QueryList, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { NbToastrService, NbDialogService } from '@nebular/theme';\r\nimport { saveAs } from 'file-saver/src/FileSaver';\r\nimport { MatTabGroup } from '@angular/material/tabs';\r\nimport { LocalDataSource } from 'ng2-smart-table';\r\n\r\nimport { format } from 'support';\r\nimport { CopyFitnessDay, CopyFitnessPlan } from 'app/BuildOps';\r\n\r\nimport { FitnessPlanDay, Short_WeekDays, WeekDays } from 'app/@core/interfaces/common/CalorieFriend/plan-day';\r\nimport {\r\n DEFAULT_DURATION,\r\n FitnessPlan,\r\n FitnessPlanData,\r\n ProgramTemplateData,\r\n TemplatePlan,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport { PatientData } from 'app/@core/interfaces/common/CalorieFriend/patients';\r\nimport { UsersService } from 'app/@core/backend/common/services/users.service';\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { FitnessBlock } from 'app/@core/interfaces/common/CalorieFriend/fitnessItem';\r\nimport { TutorialIDs } from 'app/@core/interfaces/common/CalorieFriend/tutorial';\r\nimport { User } from 'app/@core/interfaces/common/users';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\n\r\nimport { Labelling } from '../../general-text.component';\r\nimport { FormConstants } from '../../CustomUIOps';\r\nimport { FitnessPlanTemplateSelectComponent } from '../../Plans/PlanTemplate/ListSelection/plan-template-select.component';\r\nimport { Utility } from 'app/@core/utils/utility';\r\nimport { ProgramPlans } from 'app/@core/interfaces/common/CalorieFriend/program-template';\r\n\r\nexport class FitnessPlanDefComponentBase extends BaseComponentCanDeactivate implements OnInit {\r\n get IsDirty() {\r\n let childrenDirty = false;\r\n this.PlanDayComponents.forEach((c) => (childrenDirty = childrenDirty || c.IsDirty));\r\n this.PlanDayLabelComponents.forEach((c) => (childrenDirty = childrenDirty || c.IsDirty));\r\n return this.isDirty || childrenDirty;\r\n }\r\n\r\n resetDirty() {\r\n super.resetDirty();\r\n this.PlanDayComponents.forEach((c) => c.resetDirty());\r\n this.PlanDayLabelComponents.forEach((c) => c.resetDirty());\r\n }\r\n\r\n @ViewChildren('PlanDayLabel') PlanDayLabelComponents: QueryList;\r\n @ViewChildren('PlanDay') PlanDayComponents: QueryList;\r\n @ViewChild('PlanReport') PlanReport: any;\r\n @ViewChild('MealDays', { static: false }) MealDays: MatTabGroup;\r\n @ViewChild('MealContents', { static: false }) MealContents: any = null;\r\n\r\n readonly UntitledFitnessPlan: string = 'Untitled Workout Plan';\r\n\r\n PlanLabel = '';\r\n PlanNewLabel = 'New Plan';\r\n PlanEditLabel = 'Edit Plan';\r\n TemplateLabel = 'Template';\r\n PlanNameLabel = 'Plan Name';\r\n PlanActiveLabel = 'Set as Active';\r\n PlanDeactiveActiveLabel = 'Set as Inactive';\r\n ActiveLabel = $localize`:@@SetAsActive:Set as Active`;\r\n\r\n LoadFramTemplateLabel = 'Load from Template';\r\n NewDayLabel = 'Add New Day';\r\n NameLabel = 'Day';\r\n AcceptLabel = 'Save Plan';\r\n BackLabel = 'Back';\r\n ViewMealPlanLabel = 'Patient View';\r\n UserProfileLabel = 'Profile Info';\r\n TemplateDescriptionLabel = 'Template Description';\r\n TemplateNameLabel = 'Template Name';\r\n SaveAsPDFLabel = 'Save as PDF';\r\n DescriptionLabel = 'Description';\r\n PlanNotesLabel = 'Notes';\r\n SubmitToPatientLabel = 'Send Client View';\r\n DefaultDayTitle = 'Untitled Day';\r\n\r\n ProblemGenertingPDF = 'Problem occurre generating PDF Report. Try again. If problem continues contact support.';\r\n ProblemSendingToPatient = 'Problem sending patient view to patient.';\r\n SuccessSendingToPatient = 'Sent email to patient.';\r\n Created = 'Created';\r\n Updated = 'Updated';\r\n ProblemSavingPlan = 'Problem occured saving the Patient Plan';\r\n PatientName = '';\r\n PatientShortHandName = '';\r\n\r\n OriginalPatientName: string = '';\r\n IsPreferredUnitImperial: boolean = false;\r\n\r\n PatientID = null;\r\n NotificationToken: string = null;\r\n\r\n get PlanID() {\r\n return this.PlanIDSubject.value;\r\n }\r\n set PlanID(value: number) {\r\n this.PlanIDSubject.next(value);\r\n }\r\n PlanIDSubject = new BehaviorSubject(null);\r\n\r\n dayId: number;\r\n ShowTemplateButton = false;\r\n ref: any = null;\r\n Plans: Array = null;\r\n PlanActive: boolean = false;\r\n ThePlan: FitnessPlan;\r\n\r\n TheDays: Array = null;\r\n\r\n PlanForm: FormGroup;\r\n DaySource: LocalDataSource;\r\n protected readonly unsubscribe$ = new Subject();\r\n EditingTemplate = false;\r\n PlanView: boolean;\r\n ShowEmailSubmit: boolean = false;\r\n HidePatientInfo: boolean = false;\r\n\r\n IsEditingTemplatePublic: boolean = false;\r\n currentUserID: any;\r\n templateUserID: any;\r\n\r\n selectedPlan = null;\r\n LoadData = true;\r\n DontShowViewPlan: boolean = true;\r\n TheTemplateID: number;\r\n TheTemplateIsPublic: boolean;\r\n TheTemplateName = '';\r\n TheTemplateDescription = '';\r\n PlanDescriptionStatic = '';\r\n PlanNotesStatic = '';\r\n\r\n Labels: Labelling;\r\n\r\n PlanNotesWidth = '100%';\r\n PlanNotesHeight = '75px';\r\n\r\n FormConstants = FormConstants;\r\n\r\n SelectedDayIndex = 0;\r\n\r\n inTutorial: boolean = false;\r\n inFinalTutorial: boolean = false;\r\n selectTemplateSubject = new BehaviorSubject(null);\r\n currentUserSubject = new BehaviorSubject(null);\r\n\r\n showSpinner: boolean = false;\r\n contentLoaded: boolean = false;\r\n isPlanTemplate = false;\r\n planIndex;\r\n programTemplate: TemplatePlan;\r\n\r\n /**\r\n * Ng2 smart table settings for Days (Plan Days)\r\n */\r\n DayTableSettings = {\r\n mode: 'external',\r\n actions: {\r\n position: 'right',\r\n add: false,\r\n },\r\n edit: {\r\n editButtonContent:\r\n '',\r\n },\r\n delete: {\r\n deleteButtonContent: '',\r\n },\r\n columns: {\r\n name: { title: this.NameLabel, type: 'string', filter: false },\r\n },\r\n };\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private fb: FormBuilder,\r\n private dialogService: NbDialogService,\r\n private planService: FitnessPlanData,\r\n private toasterService: NbToastrService,\r\n private usersService: UsersService,\r\n private router: Router,\r\n private patientsService: PatientData,\r\n private programTemplateService: ProgramTemplateData\r\n ) {\r\n super(dialogService);\r\n this.Labels = new Labelling();\r\n\r\n this.InitPlanDefForm();\r\n\r\n if (!this.PatientID) this.PatientID = this.route.snapshot.paramMap.get('PatientId');\r\n\r\n this.route.params.subscribe((params) => {\r\n this.PlanIDSubject.next(params['PlanId']);\r\n });\r\n /**\r\n * @description disabled by @intel\r\n if (!this.PlanID) this.PlanID = this.route.snapshot.paramMap.get('PlanId');\r\n if (!this.PlanID) this.PlanID = this.route.snapshot.queryParams.PlanId;\r\n */\r\n\r\n if (!this.PatientID) this.NotificationToken = this.route.snapshot.paramMap.get('NotificationToken');\r\n else this.ShowEmailSubmit = true;\r\n }\r\n\r\n get PlanName() {\r\n return this.PlanForm.get('PlanName');\r\n }\r\n get PlanDescription() {\r\n return this.PlanForm.get('PlanDescription');\r\n }\r\n get PlanNotes() {\r\n return this.PlanForm.get('PlanNotes');\r\n }\r\n get TemplateName() {\r\n return this.PlanForm.get('TemplateName');\r\n }\r\n get TemplateDescription() {\r\n return this.PlanForm.get('TemplateDescription');\r\n }\r\n\r\n get IsViewTemplate() {\r\n const isPublic = this.route.snapshot.queryParamMap.get('public') === 'true';\r\n return isPublic;\r\n }\r\n\r\n /**\r\n * Initializes the component.\r\n * - Initalizes the Plan Def form.\r\n * - Gets the Patient ID / Patient NotificationToken and Plan ID from the URL.\r\n * - Initializes the Plan (Create) or loads the Plan (Edit) including its PlanDays data.\r\n */\r\n ngOnInit(): void {\r\n const dayId = +this.route.snapshot.queryParamMap.get('dayId');\r\n if (!isNaN(dayId)) this.dayId = dayId;\r\n\r\n this.SetupPlan();\r\n }\r\n\r\n SetupPlan() {\r\n const loadUser = this.usersService.getCurrentUser();\r\n loadUser.subscribe((user) => {\r\n if (user != null) this.currentUserID = user.id;\r\n this.currentUserSubject.next(user);\r\n });\r\n\r\n this.TheDays = null;\r\n\r\n if (this.NotificationToken) {\r\n this.loadPatientData(this.NotificationToken);\r\n } else {\r\n if (this.PatientID !== null || this.PatientID > 0) {\r\n this.loadPatientData(this.PatientID);\r\n }\r\n }\r\n\r\n if (this.ThePlan === null || this.ThePlan === undefined) {\r\n this.ThePlan = {\r\n id: null,\r\n days: new Array(),\r\n name: this.UntitledFitnessPlan,\r\n patientID: this.PatientID,\r\n createdDate: null,\r\n description: '',\r\n notes: '',\r\n active: false,\r\n zOrder: Utility.INT32_MAX,\r\n duration: DEFAULT_DURATION,\r\n };\r\n this.ShowTemplateButton = !this.PlanView;\r\n\r\n this.route.queryParams.subscribe((params) => {\r\n let planId = params['planId'];\r\n if (planId) {\r\n this.loadPlanFromTemplate(planId);\r\n }\r\n });\r\n this.route.params.subscribe((params) => {\r\n if (params['programTemplateId'] && params['planIndex']) {\r\n this.isPlanTemplate = true;\r\n this.planIndex = params['planIndex'];\r\n\r\n this.programTemplateService.GetTemplateById(params['programTemplateId']).subscribe((template) => {\r\n this.programTemplate = template;\r\n this.PreparePlan(template.programPlans.fitnessPlans[params['planIndex']]);\r\n });\r\n }\r\n });\r\n } else {\r\n this.PreparePlan(this.ThePlan);\r\n }\r\n\r\n if (!this.PlanView) this.PrepareWorkItemPublishSubscribe();\r\n\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n\r\n if (!this.EditingTemplate) {\r\n if (this.ThePlan.id !== null && this.ThePlan.id > 0) {\r\n this.PlanLabel = $localize`:@@EditPlan:Edit Plan`;\r\n this.DontShowViewPlan = false;\r\n } else {\r\n this.PlanLabel = $localize`:@@NewPlan:New Plan`;\r\n }\r\n } else {\r\n this.PlanLabel = this.TemplateLabel;\r\n }\r\n }\r\n\r\n loadPatientData(id) {\r\n if (id) {\r\n this.patientsService\r\n .get(id, null)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((patient) => {\r\n this.PatientShortHandName = patient.firstName[0] + '. ' + patient.lastName;\r\n this.OriginalPatientName = patient.name;\r\n this.IsPreferredUnitImperial = patient.isPreferredUnitImperial;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Method to prepare subscription for individual meal items\r\n */\r\n PrepareWorkItemPublishSubscribe() {\r\n if (\r\n this.ThePlan != null &&\r\n this.ThePlan !== undefined &&\r\n this.ThePlan.days != null &&\r\n this.ThePlan.days !== undefined &&\r\n this.ThePlan.days.length > 0\r\n ) {\r\n for (const day of this.ThePlan.days) {\r\n if (day.blocks != null && day.blocks !== undefined && day.blocks.length > 0) {\r\n for (const block of day.blocks) {\r\n if (block.items != null && block.items !== undefined && block.items.length > 0) {\r\n for (const item of block.items) {\r\n // if (!isObservable(item.Update)) { item.Update = new Subject(); }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Method to initialize the Plan Definition form.\r\n */\r\n InitPlanDefForm() {\r\n this.PlanForm = this.fb.group({\r\n PlanName: this.fb.control(this.UntitledFitnessPlan, [\r\n Validators.required,\r\n Validators.minLength(5),\r\n Validators.maxLength(50),\r\n ]),\r\n PlanDescription: this.fb.control('', [Validators.maxLength(150)]),\r\n PlanNotes: this.fb.control('', [Validators.maxLength(500)]),\r\n\r\n TemplateName: this.fb.control('', [Validators.required, Validators.minLength(5), Validators.maxLength(50)]),\r\n TemplateDescription: this.fb.control('', [Validators.maxLength(50)]),\r\n });\r\n\r\n this.initForm(this.PlanForm);\r\n }\r\n\r\n /**\r\n * override the initForm function\r\n */\r\n initForm(form) {\r\n form.valueChanges.subscribe(() => {\r\n this.isDirty = true;\r\n });\r\n }\r\n\r\n onNameChange(event) {\r\n if (this.PlanName.value === '') {\r\n this.PlanName.setValue(this.UntitledFitnessPlan);\r\n }\r\n }\r\n\r\n onLabelFocusout() {\r\n const tempIndex = this.SelectedDayIndex;\r\n this.SelectedDayIndex = -1;\r\n setTimeout(() => {\r\n this.SelectedDayIndex = tempIndex;\r\n }, 0);\r\n }\r\n\r\n // Method to add a new day to the plan definition.\r\n NewDay() {\r\n this.isDirty = true;\r\n\r\n const day: FitnessPlanDay = {\r\n id: -1,\r\n planID: this.PlanID,\r\n blocks: new Array(),\r\n name: this.DefaultDayTitle,\r\n notes: '',\r\n dayOfWeek: [],\r\n createMeal: true,\r\n order: this.ThePlan.days ? Math.max(...this.ThePlan.days.map((b) => b.order)) + 1 : 1,\r\n };\r\n\r\n this.UpdateDay(day);\r\n\r\n this.OrderDays(this.ThePlan.days.length - 1);\r\n }\r\n\r\n /**\r\n * Method to update the days list of the Plan with data of {day} object.\r\n * @param day PlanDay object\r\n */\r\n UpdateDay(day: FitnessPlanDay) {\r\n if (this.ThePlan.days == null || this.ThePlan.days === undefined) {\r\n this.ThePlan.days = new Array();\r\n }\r\n\r\n this.ThePlan.days.push(day);\r\n this.TheDays = this.ThePlan.days;\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n }\r\n\r\n /**\r\n * Event handler of the 'Edit' action to edit an existing PlanDay.\r\n * Opens the PlanDayComponent in a pop up window and updates its result to the days list using UpdateDay function.\r\n * @param $event Event object\r\n */\r\n onEdit($event) {}\r\n\r\n /**\r\n * Event handler of the 'Delete' action to delete an existing PlanDay.\r\n * Deletes the plan day and updates the list.\r\n * @param $event Event object\r\n */\r\n onDelete($event) {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: { Message: 'Are you sure to delete this day?' },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result) {\r\n if ($event !== null && $event !== undefined) {\r\n this.ThePlan.days = this.ThePlan.days.filter(\r\n (day) => day.id !== $event.data.id || day.name !== $event.data.name\r\n );\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Function to validate all input data for the plan definition.\r\n */\r\n IsValid(): Boolean {\r\n let Res: Boolean = false;\r\n\r\n if (this.Valid) {\r\n if (\r\n this.ThePlan != null &&\r\n this.ThePlan !== undefined &&\r\n this.ThePlan.days != null &&\r\n this.ThePlan.days !== undefined &&\r\n this.ThePlan.days.length > 0\r\n ) {\r\n for (const day of this.ThePlan.days) {\r\n Res = day.name != null && day.name !== undefined && day.name.trim().length > 0 ? true : false;\r\n if (!Res) break;\r\n }\r\n } else Res = true;\r\n }\r\n\r\n return Res;\r\n }\r\n\r\n /**\r\n * Function save the plan definition.\r\n * Checks if all data are valid and performs the save action.\r\n */\r\n SavePlan() {\r\n if (this.IsValid()) {\r\n if (!this.EditingTemplate && !this.programTemplate) {\r\n if (this.ThePlan.days !== null && this.ThePlan.days.length > 0) {\r\n this.ThePlan.name = this.PlanName.value;\r\n this.ThePlan.active = this.PlanActive;\r\n this.ThePlan.description = this.PlanDescription.value;\r\n this.ThePlan.notes = this.PlanNotes.value;\r\n\r\n this.ThePlan.patientID = this.PatientID;\r\n\r\n const UpdatePlan = CopyFitnessPlan(this.ThePlan, false, true);\r\n\r\n const isFromTutorial =\r\n this.route.snapshot.url.length > 2\r\n ? this.route.snapshot.url[2].toString().toLowerCase() === 'fromtutorial'\r\n : false;\r\n if (isFromTutorial) {\r\n UpdatePlan.active = true;\r\n UpdatePlan.duration = 12;\r\n }\r\n\r\n this.showSpinner = true;\r\n const observable =\r\n this.ThePlan === undefined ||\r\n (this.ThePlan !== undefined && (this.ThePlan.id == null || this.ThePlan.id <= 0))\r\n ? this.planService.create(UpdatePlan)\r\n : this.planService.update(UpdatePlan);\r\n\r\n this.resetDirty();\r\n\r\n observable.pipe(takeUntil(this.unsubscribe$)).subscribe(\r\n (data) => {\r\n this.PlanID = this.ThePlan.id = data.id;\r\n this.handleSuccessResponse();\r\n\r\n if (isFromTutorial && UpdatePlan.active) {\r\n this.planService.submitPatientNotification(this.PatientID, data.id).subscribe(() => {});\r\n }\r\n\r\n this.showSpinner = false;\r\n\r\n this.router.navigate([`/pages/CalorieFriend/FitnessPlanEdit/${this.PlanID}`]);\r\n },\r\n (err) => {\r\n this.handleWrongResponse(err);\r\n this.showSpinner = false;\r\n }\r\n );\r\n }\r\n } else if (this.programTemplate) {\r\n this.ThePlan.name = this.PlanName.value;\r\n this.ThePlan.active = this.PlanActive;\r\n this.ThePlan.description = this.PlanDescription.value;\r\n this.ThePlan.notes = this.PlanNotes.value;\r\n this.programTemplate.programPlans.fitnessPlans[this.planIndex] = CopyFitnessPlan(this.ThePlan, false);\r\n this.showSpinner = true;\r\n this.programTemplateService\r\n .UpdateTemplate(this.programTemplate, false)\r\n .pipe(\r\n finalize(() => {\r\n this.showSpinner = false;\r\n })\r\n )\r\n .subscribe(\r\n (res) => {\r\n this.handleSuccessResponse();\r\n },\r\n (err) => {\r\n this.handleWrongResponse(err);\r\n }\r\n );\r\n } else {\r\n this.ThePlan.name = this.PlanName.value;\r\n this.ThePlan.description = this.PlanDescription.value;\r\n this.ThePlan.notes = this.PlanNotes.value;\r\n\r\n this.ThePlan.active = this.PlanActive;\r\n this.ThePlan.patientID = this.PatientID;\r\n\r\n this.UpdateTemplate(\r\n this.ThePlan,\r\n this.PlanName.value,\r\n this.PlanDescription.value,\r\n this.TheTemplateID,\r\n this.TheTemplateIsPublic\r\n );\r\n\r\n this.resetDirty();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Function to update the template and its plan data.\r\n * Submits the data via API service.\r\n * @param Plan Plan object\r\n * @param TemplateName Template Name\r\n * @param Description Template Description\r\n * @param TemplateID Template Identifier\r\n */\r\n private UpdateTemplate(Plan, TemplateName, Description, TemplateID, IsPublic) {\r\n const Template = {\r\n id: TemplateID,\r\n name: TemplateName,\r\n description: Description,\r\n thePlan: CopyFitnessPlan(Plan),\r\n isPublic: IsPublic,\r\n };\r\n\r\n this.showSpinner = true;\r\n const observable = this.planService.UpdateTemplate(Template, false);\r\n\r\n observable.pipe(takeUntil(this.unsubscribe$)).subscribe(\r\n () => {\r\n this.handleSuccessResponse();\r\n this.showSpinner = false;\r\n // this._location.back();\r\n },\r\n (err) => {\r\n this.handleWrongResponse(null);\r\n this.showSpinner = false;\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Method to close the container dialog if it is opened in pop up dialog\r\n * or navigates back to the PatientSheetView page\r\n */\r\n Back() {\r\n this.router.navigateByUrl(\r\n '/pages/CalorieFriend/PatientSheetView/' + this.PatientID.toString() + '?planType=workout'\r\n );\r\n }\r\n\r\n handleSuccessResponse() {\r\n if (this.PatientShortHandName.length > 0) {\r\n if (this.ThePlan.id === null) this.toasterService.success('', `Plan created for ${this.PatientShortHandName}`);\r\n else this.toasterService.success('', `Plan saved for ${this.PatientShortHandName}`);\r\n } else {\r\n if (this.programTemplate) {\r\n this.toasterService.success('', `Plan saved.`);\r\n }\r\n if (this.ThePlan.id === null) this.toasterService.success('', `Plan created.`);\r\n else this.toasterService.success('', `Plan saved.`);\r\n }\r\n }\r\n\r\n handleWrongResponse(data) {\r\n let message = '';\r\n if (data && data.error === 'DuplicatedPlanName') {\r\n message = $localize`:@@DuplicatedPlanName:There is already a plan with the same name.`;\r\n } else if (data?.error) {\r\n message = data?.error;\r\n } else {\r\n message = this.ProblemSavingPlan;\r\n }\r\n\r\n this.toasterService.danger('', message);\r\n }\r\n\r\n /**\r\n * Function to open PlanTemplateSelectComponent in a pop up dialog to select the template to load plan data from.\r\n */\r\n SelectTemplate(isFromTutorial: boolean = false, user: User = null) {\r\n this.selectTemplateSubject = new BehaviorSubject(null);\r\n\r\n this.dialogService\r\n .open(FitnessPlanTemplateSelectComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: !isFromTutorial,\r\n context: {\r\n isFromTutorial: isFromTutorial,\r\n user: user,\r\n },\r\n })\r\n .onClose.subscribe((data) => {\r\n this.SelectedPlan(data);\r\n this.selectTemplateSubject.next(data?.plan);\r\n });\r\n }\r\n\r\n loadPlanFromTemplate(id) {\r\n this.planService.GetTemplateById(id).subscribe((data) => {\r\n let selectedPlan = { plan: data.thePlan, appendToCurrentPlan: false };\r\n this.SelectedPlan(selectedPlan);\r\n this.SavePlan();\r\n });\r\n }\r\n\r\n /**\r\n * Function to apply the data from the template to the current plan.\r\n * @param Plan Plan object\r\n */\r\n SelectedPlan(data) {\r\n const Plan = data?.plan;\r\n\r\n if (Plan) {\r\n // make sure none of the IDs are set in the items\r\n // this is a new plan with new days and new meals\r\n if (Plan.days != null && Plan.days.length > 0) {\r\n for (const day of Plan.days) {\r\n day.id = 0;\r\n day.planID = 0;\r\n\r\n if (day.blocks != null && day.blocks.length > 0) {\r\n for (const meal of day.blocks) {\r\n meal.id = 0;\r\n meal.dayID = 0;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (data.appendToCurrentPlan) {\r\n for (const day of Plan.days) {\r\n day.order = this.ThePlan.days.length + 1;\r\n this.ThePlan.days.push(day);\r\n }\r\n } else {\r\n const currentId = this.ThePlan.id;\r\n this.ThePlan = {\r\n ...Plan,\r\n zOrder: this.ThePlan.zOrder,\r\n duration: this.ThePlan.duration,\r\n createdDate: this.ThePlan.createdDate,\r\n name: Plan.name ? Plan.name : this.ThePlan.name,\r\n notes: Plan.notes ? Plan.notes : this.ThePlan.notes,\r\n description: Plan.description ? Plan.description : this.ThePlan.description,\r\n };\r\n this.ThePlan.patientID = this.PatientID;\r\n this.ThePlan.id = currentId;\r\n\r\n this.PlanForm.patchValue({\r\n PlanName: this.ThePlan.name,\r\n PlanDescription: this.ThePlan.description,\r\n PlanNotes: this.ThePlan.notes,\r\n });\r\n }\r\n\r\n // this.PlanActive = this.ThePlan.active;\r\n //this.PlanActive = false;\r\n\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n this.OrderDays();\r\n }\r\n }\r\n\r\n /**\r\n * Function to refresh the plans list to notify changes of the plan.\r\n */\r\n private RefreshPlan() {\r\n this.TheDays = null;\r\n\r\n if (this.LoadData) {\r\n if (this.PlanID) {\r\n this.planService.get(this.PlanID).subscribe((data) => {\r\n this.ThePlan = data;\r\n this.PlanID = data.id;\r\n this.PatientID = data.patientID;\r\n\r\n this.PreparePlan(this.ThePlan);\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Function to prepare the form to submit the plan definition.\r\n * @param ThisPlan Plan object\r\n */\r\n private PreparePlan(ThisPlan: FitnessPlan) {\r\n this.ThePlan = ThisPlan;\r\n\r\n if (this.ThePlan !== null && this.ThePlan !== undefined) {\r\n this.PlanForm.patchValue({\r\n PlanName: this.ThePlan.name,\r\n PlanDescription: this.ThePlan.description,\r\n PlanNotes: this.ThePlan.notes,\r\n TemplateName: this.TheTemplateName,\r\n TemplateDescription: this.TheTemplateDescription,\r\n });\r\n\r\n this.PlanActive = this.ThePlan.active;\r\n\r\n if (this.PlanActive) this.ActiveLabel = $localize`:@@SetAsInactive:Set as Inactive`;\r\n else this.ActiveLabel = $localize`:@@SetAsActive:Set as Active`;\r\n\r\n this.PlanDescriptionStatic = this.ThePlan.description;\r\n this.PlanNotesStatic = this.ThePlan.notes;\r\n\r\n this.PatientID = this.ThePlan.patientID;\r\n this.ShowTemplateButton = false;\r\n\r\n this.PrepareWorkItemPublishSubscribe();\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n this.TheDays = this.ThePlan.days;\r\n\r\n this.OrderDays();\r\n\r\n super.resetDirty();\r\n\r\n this.contentLoaded = true;\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of the 'Change' event of the 'Plans' drop down list on the 'Patient View'.\r\n * Prepares the plan for the presentation.\r\n * @param Plan Plan object\r\n */\r\n PlanChanged(Plan) {\r\n this.router.navigate([`/PatientView/Patient/${this.NotificationToken}/${Plan.id}`]);\r\n this.PreparePlan(Plan);\r\n }\r\n\r\n /**\r\n * Event handler of 'Save As PDF' action on the 'Patient View' page.\r\n * Saves the selected plan definition as PDF.\r\n */\r\n SaveAsPDF() {\r\n let observable = null;\r\n\r\n if (this.NotificationToken != null && this.NotificationToken !== undefined)\r\n observable = this.planService.SaveAsPDFFromToken(this.NotificationToken, this.ThePlan.id);\r\n else if (this.PatientID !== null && this.PatientID !== undefined)\r\n observable = this.planService.SaveAsPDF(this.PatientID, this.ThePlan.id);\r\n\r\n if (observable != null) {\r\n observable.pipe(takeUntil(this.unsubscribe$)).subscribe(\r\n (PDFData) => {\r\n saveAs(PDFData, format('PatientPlan_{0}.pdf', this.ThePlan.name));\r\n },\r\n (err) => {\r\n this.toasterService.danger('', this.ProblemGenertingPDF);\r\n }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of the 'Patient View' action on the Plan definition page.\r\n * Navigates to the 'Patient View' page.\r\n */\r\n ViewPlan() {\r\n if (\r\n this.NotificationToken != null &&\r\n this.NotificationToken !== undefined &&\r\n ((this.PlanID != null && this.PlanID !== undefined) || this.ThePlan != null)\r\n ) {\r\n const PlanID = this.PlanID != null && this.PlanID !== undefined ? this.PlanID : this.ThePlan.id;\r\n\r\n this.router.navigate([\r\n `/pages/CalorieFriend/PatientMealPlanNotification/` + this.NotificationToken + '/' + PlanID.toString(),\r\n ]);\r\n\r\n this.ref.close();\r\n } else if (\r\n this.PatientID != null &&\r\n this.PatientID !== undefined &&\r\n ((this.PlanID != null && this.PlanID !== undefined) || this.ThePlan != null)\r\n ) {\r\n const PlanID = this.PlanID != null && this.PlanID !== undefined ? this.PlanID : this.ThePlan.id;\r\n\r\n this.router.navigate([\r\n `/pages/CalorieFriend/PatientMealPlan/` + this.PatientID.toString() + '/' + PlanID.toString(),\r\n ]);\r\n\r\n this.ref.close();\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of the 'Profile Info' action on the 'Patient View' page.\r\n * Opens the Patient Profile component in a pop up dialog.\r\n */\r\n ViewPatientInfo() {}\r\n\r\n get Valid(): boolean {\r\n const Valid: boolean =\r\n this.PlanName &&\r\n this.PlanName.value &&\r\n this.PlanName.value.length > 0 &&\r\n this.ThePlan != null &&\r\n this.ThePlan !== undefined &&\r\n this.ThePlan.days != null &&\r\n this.ThePlan.days !== undefined &&\r\n this.ThePlan.days.length > 0;\r\n\r\n return Valid;\r\n }\r\n\r\n /**\r\n * Event handler of the 'Send Patient View' action of the 'Patient View' page.\r\n * Submits patient notification to send an e-mail to the patient.\r\n */\r\n SendPatientView() {\r\n const observable = this.planService.submitPatientNotification(this.PatientID, this.ThePlan.id);\r\n\r\n observable.pipe(takeUntil(this.unsubscribe$)).subscribe(\r\n (Data) => {\r\n this.toasterService.success('', this.SuccessSendingToPatient);\r\n },\r\n (err) => {\r\n this.toasterService.danger('', this.ProblemSendingToPatient);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Event handler of 'Set Active' action on the plan definition page.\r\n * Sets the current plan as the active one for the patient.\r\n */\r\n SetActive() {\r\n this.PlanActive = !this.PlanActive;\r\n\r\n if (this.PlanActive) this.ActiveLabel = $localize`:@@SetAsInactive:Set as Inactive`;\r\n else this.ActiveLabel = $localize`:@@SetAsActive:Set as Active`;\r\n\r\n this.isDirty = true;\r\n }\r\n\r\n /**\r\n * Checks if Day tab can be removed from the tab group\r\n */\r\n get CanRemoveDay() {\r\n if (\r\n this.ThePlan &&\r\n this.ThePlan.days &&\r\n this.ThePlan.days.length > 1 &&\r\n this.MealDays &&\r\n this.MealDays.selectedIndex >= 0\r\n )\r\n return true;\r\n return false;\r\n }\r\n\r\n /**\r\n * Removes the selected Day from the tab group and days list\r\n */\r\n RemoveDay() {\r\n let AskToRemove: boolean = true;\r\n const Remove: boolean = true;\r\n\r\n const index = this.MealDays.selectedIndex;\r\n\r\n if (this.ThePlan.days[index].id < 0) AskToRemove = false;\r\n\r\n if (AskToRemove) {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: {\r\n Message: $localize`:@@DeleteDay:Are you sure you want to delete the day?`,\r\n },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result) {\r\n this.RemoveDayCore(index);\r\n }\r\n });\r\n } else {\r\n this.RemoveDayCore(index);\r\n }\r\n }\r\n\r\n RemoveDayCore(index) {\r\n const t = this.ThePlan.days[index];\r\n\r\n this.ThePlan.days.splice(index, 1);\r\n this.TheDays = this.ThePlan.days;\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n\r\n if (this.MealDays.selectedIndex >= this.ThePlan.days.length) this.MealDays.selectedIndex--;\r\n this.SelectedDayIndex--;\r\n if (this.SelectedDayIndex < 0 && this.TheDays.length > 0) {\r\n this.SelectedDayIndex = 0;\r\n }\r\n\r\n this.isDirty = true;\r\n\r\n this.OrderDays();\r\n }\r\n\r\n /**\r\n * Removes the selected Day from the tab group and days list\r\n */\r\n CopyDay() {\r\n const AskToRemove: boolean = true;\r\n const Remove: boolean = true;\r\n\r\n const index = this.MealDays.selectedIndex;\r\n\r\n const original = this.ThePlan.days[index];\r\n const copied = CopyFitnessDay(original, true);\r\n copied.name = copied.name + ' Copy';\r\n (copied.order = Math.max(...this.ThePlan.days.map((b) => b.order)) + 1), this.ThePlan.days.push(copied);\r\n this.TheDays = this.ThePlan.days;\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n\r\n this.OrderDays(this.TheDays.length - 1);\r\n }\r\n\r\n OrderUp() {\r\n const index = this.MealDays.selectedIndex;\r\n const original = this.TheDays[index];\r\n\r\n if (index > 0) {\r\n const prevDay = this.TheDays[index - 1];\r\n const tempOrder = prevDay.order;\r\n prevDay.order = original.order;\r\n original.order = tempOrder;\r\n this.OrderDays(this.SelectedDayIndex - 1);\r\n }\r\n }\r\n\r\n OrderDown() {\r\n const index = this.MealDays.selectedIndex;\r\n const original = this.TheDays[index];\r\n\r\n if (index < this.TheDays.length - 1) {\r\n const prevDay = this.TheDays[index + 1];\r\n const tempOrder = prevDay.order;\r\n prevDay.order = original.order;\r\n original.order = tempOrder;\r\n this.OrderDays(this.SelectedDayIndex + 1);\r\n }\r\n }\r\n\r\n OrderDays(selectedIndex = -1) {\r\n if (!this.ThePlan || !this.ThePlan.days) return;\r\n\r\n this.ThePlan.days.sort((a, b) => (a.order > b.order ? 1 : -1));\r\n let index = 0;\r\n this.ThePlan.days.forEach((a) => {\r\n a.order = ++index;\r\n });\r\n\r\n this.TheDays = [];\r\n setTimeout(() => {\r\n this.TheDays = this.ThePlan.days;\r\n selectedIndex = this.ThePlan.days.findIndex((x) => x.id === this.dayId);\r\n this.SelectedDayIndex = selectedIndex >= 0 ? selectedIndex : 0;\r\n }, 50);\r\n }\r\n\r\n getOrderLabel(order) {\r\n if (!order) {\r\n order = 1;\r\n }\r\n return order;\r\n }\r\n\r\n getDaysOfWeeksString(day: FitnessPlanDay) {\r\n if (!day.dayOfWeek) return '';\r\n const ordered = day.dayOfWeek.sort((a, b) => a - b);\r\n const assignedDays: string[] = ordered\r\n .map((x, i) => {\r\n if (ordered.length > 2) {\r\n return Short_WeekDays[x];\r\n } else {\r\n return WeekDays[x];\r\n }\r\n })\r\n .filter((x) => x);\r\n\r\n return assignedDays.length === 0 ? '' : `${assignedDays.join(', ')}`;\r\n }\r\n\r\n public TutorialIDs = TutorialIDs;\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar Subscription_1 = require(\"../Subscription\");\nvar observable_1 = require(\"../symbol/observable\");\nfunction scheduleObservable(input, scheduler) {\n return new Observable_1.Observable(function (subscriber) {\n var sub = new Subscription_1.Subscription();\n sub.add(scheduler.schedule(function () {\n var observable = input[observable_1.observable]();\n sub.add(observable.subscribe({\n next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },\n error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },\n complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },\n }));\n }));\n return sub;\n });\n}\nexports.scheduleObservable = scheduleObservable;\n//# sourceMappingURL=scheduleObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar Subscription_1 = require(\"../Subscription\");\nfunction scheduleArray(input, scheduler) {\n return new Observable_1.Observable(function (subscriber) {\n var sub = new Subscription_1.Subscription();\n var i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\nexports.scheduleArray = scheduleArray;\n//# sourceMappingURL=scheduleArray.js.map","import { Component, Input, OnInit } from '@angular/core';\r\nimport { NbDialogService } from '@nebular/theme';\r\nimport {\r\n FitnessPlanDay,\r\n PlanDayProcessing,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan-day';\r\n\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\n\r\n/**\r\n * Component for Fitness Summary.\r\n */\r\n@Component({\r\n selector: 'app-fitness-summary',\r\n templateUrl: './fitness-summary.component.html',\r\n styleUrls: ['./fitness-summary.component.scss'],\r\n})\r\nexport class FitnessSummaryComponent extends BaseComponentCanDeactivate {\r\n SummaryLabel = $localize`:@@Summary:Summary`;\r\n ExercisesLabel = $localize`:@@Exercises:Exercises`;\r\n RepsLabel = $localize`:@@Reps:Reps`;\r\n MinutesLabel = $localize`:@@Minutes:Minutes`;\r\n CalorieBurnedLabel = $localize`:@@CalorieBurned:Cals Burned`;\r\n\r\n Exercises = 0;\r\n Reps = 0;\r\n Minutes = 0;\r\n CalorieBurned = 0;\r\n\r\n data: any;\r\n options: any;\r\n themeSubscription: any;\r\n\r\n SummaryWidth = '80px';\r\n @Input('SummaryWidth') set UpdateSummaryWidth(Width: string) {\r\n this.SummaryWidth = Width;\r\n }\r\n\r\n SummaryHeight = '80px';\r\n @Input('SummaryHeight') set UpdateSummaryHeight(Height: string) {\r\n this.SummaryHeight = Height;\r\n }\r\n\r\n /**\r\n * Input to specify Exercises.\r\n */\r\n @Input('Exercises') set UpdateExercises(exercises: number) {\r\n this.Exercises = exercises;\r\n }\r\n\r\n /**\r\n * Input to specify Reps.\r\n */\r\n @Input('Reps') set UpdateReps(reps: number) {\r\n this.Reps = reps;\r\n }\r\n\r\n /**\r\n * Input to specify Minutes.\r\n */\r\n @Input('Minutes') set UpdateMinutes(minutes: number) {\r\n this.Minutes = minutes;\r\n }\r\n\r\n /**\r\n * Input to specify CalorieBurned.\r\n */\r\n @Input('CalorieBurned') set UpdateFats(calorieBurned: number) {\r\n this.CalorieBurned = calorieBurned;\r\n }\r\n\r\n /** MealMetricsGraph ctor */\r\n constructor(dialogService: NbDialogService) {\r\n super(dialogService);\r\n }\r\n}\r\n\r\n/**\r\n * Component for Day Fitness Summary.\r\n * Inherits from FitnessSummaryComponent component.\r\n */\r\n@Component({\r\n selector: 'app-day-fitness-summary',\r\n templateUrl: './fitness-summary.component.html',\r\n styleUrls: ['./fitness-summary.component.scss'],\r\n})\r\nexport class DayFitnessSummaryComponent\r\n extends FitnessSummaryComponent\r\n implements OnInit {\r\n CurrentSelection = '';\r\n ApplyAllDaysLabel = 'Apply To All Days';\r\n ApplyAllDays: boolean = false;\r\n @Input('PlanDays') PlanDays: Array = null;\r\n @Input('ActiveDay') Day: FitnessPlanDay = null;\r\n @Input('ViewOnly') ViewOnly: boolean = false;\r\n\r\n Processing: Array = null;\r\n\r\n constructor(AGCDialogService: NbDialogService) {\r\n super(AGCDialogService);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.Processing = new Array();\r\n this.PrepareBlockItems();\r\n }\r\n\r\n /**\r\n * Function to update the processing list of Plan days.\r\n */\r\n PrepareBlockItems() {\r\n if (this.PlanDays != null && this.PlanDays !== undefined) {\r\n for (const day of this.PlanDays) {\r\n const found = this.Processing.find(\r\n (addedday) => addedday.Day.id === day.id,\r\n );\r\n if (found == null || found === undefined) {\r\n // to-do: found = new PlanDayProcessing(day, this.foodService);\r\n // to-do: this.Processing.push(found);\r\n }\r\n // to-do: found.UpdateProcessing();\r\n }\r\n }\r\n }\r\n\r\n CheckedChange($event) {\r\n this.ApplyAllDays = $event;\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n {{SummaryLabel}}\r\n
    \r\n
  • \r\n
    {{Exercises}} {{ExercisesLabel}}
    \r\n
  • \r\n
  • \r\n
    {{Reps}} {{RepsLabel}}
    \r\n
  • \r\n
  • \r\n
    {{Minutes}} {{MinutesLabel}}
    \r\n
  • \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n","\r\n\r\n \r\n
\r\n Edit Item\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n
{{FitnessItem.customName}}
\r\n
\r\n\r\n
\r\n
\r\n {{FitnessItem.name}}\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n
\r\n\r\n
Some vales are\r\n driven by first superset exercice settings.
\r\n
Some vales are\r\n driven by first circuit settings.
\r\n\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
Set{{RepLabel}}TempoRest (Sec.)\r\n Weight\r\n\r\n (%)\r\n ({{IsPreferredUnitImperial ? 'lbs'\r\n : 'Kg'}})\r\n\r\n
\r\n {{row.Set}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n
\r\n\r\n
\r\n
Additional Instructions
\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
0\">\r\n
\r\n One Max Rep:
\r\n {{PatientName}}\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n Use Female Version\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
","import {\r\n Component,\r\n ChangeDetectorRef,\r\n ViewEncapsulation,\r\n Input,\r\n ViewChild,\r\n ElementRef,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { NbDialogRef } from '@nebular/theme';\r\n\r\nimport {\r\n FitnessBlock,\r\n FitnessItem,\r\n FitnessItemHelper,\r\n SetsBased,\r\n SettingDetailRow,\r\n WeightType,\r\n} from 'app/@core/interfaces/common/CalorieFriend/fitnessItem';\r\nimport { CopyFitnessItem } from 'app/BuildOps';\r\nimport { ExerciseProgressData } from 'app/@core/interfaces/common/CalorieFriend/exercise-progress';\r\nimport { TreeMapModule } from '@swimlane/ngx-charts';\r\nimport {convertKgToPounds, convertPoundsToKg} from './../../../../@core/utils/preferredUnitImperialConvertor';\r\nimport { cloneDeep } from 'lodash';\r\nimport { FormArray, FormBuilder, FormGroup } from '@angular/forms';\r\n\r\nexport interface SelectionOption {\r\n selectName: string;\r\n selectIndex: number;\r\n}\r\n\r\n/**\r\n * Component for Serving Size Selection inside Meal Item Selection widget.\r\n */\r\n@Component({\r\n selector: 'app-exercise-edit',\r\n templateUrl: './exercise-edit.component.html',\r\n styleUrls: ['./exercise-edit.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\n\r\n/** ServiingSizeSelection component*/\r\nexport class ExerciseEditComponent {\r\n InputItem: FitnessItem = null;\r\n @Input('FitnessItem') FitnessItem: FitnessItem = null;\r\n\r\n @Input('PatientID') PatientID: number = -1;\r\n @Input('PatientName') PatientName: string = '';\r\n @Input('IsPreferredUnitImperial') IsPreferredUnitImperial: boolean = false;\r\n\r\n @Output() added = new EventEmitter();\r\n\r\n SetsBased = SetsBased;\r\n WeightType = WeightType;\r\n\r\n RemoveCallBack = null;\r\n SaveCallBack = null;\r\n\r\n AboutLabel = $localize`:@@SmallAbout:about`;\r\n\r\n ButtonLabel = 'Add To Plan';\r\n ButtonAddedLabel = 'Added!';\r\n videoHtml = \"\"\r\n\r\n @Input('ShowEditButtons') ShowEditButtons: boolean = false;\r\n Name = '';\r\n\r\n changed: boolean = false;\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n settingDetails: SettingDetailRow[] = [];\r\n\r\n isPlayingVideo: boolean = false;\r\n\r\n @ViewChild('video')\r\n public video: ElementRef;\r\n\r\n @ViewChild('image')\r\n public image: ElementRef;\r\n\r\n @Input('fitnessBlock') fitnessBlock: FitnessBlock;\r\n\r\n public advanceOptionForm: FormArray;\r\n\r\n /** ServiingSizeSelection ctor */\r\n constructor(\r\n private exerciseProgressService: ExerciseProgressData,\r\n private chdetRef: ChangeDetectorRef,\r\n protected ref: NbDialogRef,\r\n private fb: FormBuilder,\r\n ) { \r\n }\r\n\r\n /**\r\n * Initializes the component.\r\n * Prepares the selection.\r\n */\r\n ngOnInit() {\r\n\r\n if (!this.FitnessItem && this.InputItem) {\r\n this.FitnessItem = CopyFitnessItem(this.InputItem);\r\n\r\n if (\r\n this.FitnessItem.restBeforeNextExercise &&\r\n this.FitnessItem.restBeforeNextExercise > 0\r\n )\r\n this.includeRest = true;\r\n }\r\n\r\n\r\n if (this.FitnessItem) {\r\n if (!this.FitnessItem.setsBased)\r\n this.FitnessItem.setsBased = SetsBased.RepsBased;\r\n if (!this.FitnessItem.sets) this.FitnessItem.sets = 3;\r\n if (!this.FitnessItem.defaultRepsOrTime)\r\n this.FitnessItem.defaultRepsOrTime = 8;\r\n if (!this.FitnessItem.defaultTempo) this.FitnessItem.defaultTempo = '';\r\n if (!this.FitnessItem.defaultRest && this.FitnessItem.defaultRest != 0)\r\n this.FitnessItem.defaultRest = 60;\r\n if (this.FitnessItem.weightType == undefined)\r\n this.FitnessItem.weightType = WeightType.AbsoluteValue;\r\n if (!this.FitnessItem.defaultWeight) this.FitnessItem.defaultWeight = convertKgToPounds(this.FitnessItem.defaultWeight, this.IsPreferredUnitImperial);\r\n if (!this.FitnessItem.oneRepMax) this.FitnessItem.oneRepMax = 0;\r\n if (!this.FitnessItem.instructions) this.FitnessItem.instructions = '';\r\n\r\n if (!this.FitnessItem.setSettings) {\r\n this.settingDetails = [];\r\n this.FitnessItem.setSettings = JSON.stringify(this.settingDetails);\r\n } else {\r\n this.settingDetails = JSON.parse(this.FitnessItem.setSettings);\r\n }\r\n\r\n if (this.IsTimeBasedType) {\r\n this.FitnessItem.defaultRepsOrTime = Math.round((this.FitnessItem.defaultRepsOrTime / 60) * 100) / 100;\r\n }\r\n\r\n this.exerciseProgressService\r\n .getOneMaxRep(this.PatientID, this.FitnessItem.exerciceId)\r\n .subscribe((data) => {\r\n if (data)\r\n this.FitnessItem.oneRepMax = data.oneMaxRep;\r\n });\r\n }\r\n this.buildForm();\r\n }\r\n\r\n private buildForm(): void {\r\n this.advanceOptionForm = this.fb.array(this.settingDetails.map(res => {\r\n return this.fb.group({\r\n Set: [res.Set],\r\n RepsOrTime: [res.RepsOrTime],\r\n Tempo: [res.Tempo],\r\n Rest: [res.Rest],\r\n Weight: [convertKgToPounds(parseFloat(res.Weight), this.IsPreferredUnitImperial)],\r\n UsedWeight: [res.UsedWeight],\r\n CalculatedWeight: [res.CalculatedWeight],\r\n displayWeight: [res.displayWeight]\r\n }) \r\n }));\r\n }\r\n\r\n \r\n public getVideoUrl(source:string):string {\r\n return source + \"#t=0.001\"\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n // this.image.nativeElement.focus();\r\n }\r\n\r\n includeRest: boolean = false;\r\n get IncludeRest(): boolean {\r\n return this.includeRest;\r\n }\r\n\r\n set IncludeRest(include: boolean) {\r\n this.includeRest = include;\r\n if (this.includeRest) {\r\n this.FitnessItem.restBeforeNextExercise = 30;\r\n } else {\r\n this.FitnessItem.restBeforeNextExercise = 0;\r\n }\r\n }\r\n\r\n /**\r\n * Function to apply selection of the exercise item.\r\n * Calcuates the metrics and updates the exercise item information.\r\n * @param item Exercise item\r\n */\r\n private applyItem(): void {\r\n\r\n\r\n if (this.IsTimeBasedType) {\r\n this.FitnessItem.defaultRepsOrTime = this.FitnessItem.defaultRepsOrTime * 60;\r\n }\r\n\r\n\r\n if (this.IsMaxRepType) {\r\n this.FitnessItem.defaultRepsOrTime = 0;\r\n\r\n this.settingDetails.forEach(y => y.RepsOrTime = '0');\r\n }\r\n\r\n\r\n this.saveSettings();\r\n // copy back to the original from edit item\r\n this.InputItem.sets = this.FitnessItem.sets;\r\n this.InputItem.setsBased = this.FitnessItem.setsBased;\r\n this.InputItem.defaultRepsOrTime = this.FitnessItem.defaultRepsOrTime;\r\n this.InputItem.defaultTempo = this.FitnessItem.defaultTempo;\r\n this.InputItem.defaultRest = this.FitnessItem.defaultRest;\r\n this.InputItem.weightType = this.FitnessItem.weightType;\r\n this.InputItem.defaultWeight = this.FitnessItem.defaultWeight;\r\n this.InputItem.oneRepMax = this.FitnessItem.oneRepMax;\r\n this.InputItem.restBeforeNextExercise =\r\n this.FitnessItem.restBeforeNextExercise;\r\n\r\n\r\n this.InputItem.setSettings = this.FitnessItem.setSettings;\r\n\r\n\r\n this.InputItem.useFemaleVersion = this.FitnessItem.useFemaleVersion;\r\n this.InputItem.showAdvancedMode = this.FitnessItem.showAdvancedMode;\r\n this.InputItem.instructions = this.FitnessItem.instructions;\r\n this.InputItem.customName = this.FitnessItem.customName;\r\n\r\n\r\n\r\n\r\n\r\n\r\n this.saveOneMaxRep();\r\n\r\n if (this.SaveCallBack) {\r\n this.SaveCallBack();\r\n this.ref.close();\r\n }\r\n\r\n this.chdetRef.detectChanges();\r\n }\r\n\r\n\r\n get IsSuperSet() {\r\n return FitnessItemHelper.IsSuperSet(this.FitnessItem);\r\n }\r\n\r\n get GetSupersetMaster(): FitnessItem {\r\n return FitnessItemHelper.GetSupersetMaster(this.FitnessItem, this.fitnessBlock);\r\n }\r\n\r\n get IsSupersetMaster() {\r\n return FitnessItemHelper.IsSupersetMaster(this.FitnessItem, this.fitnessBlock);\r\n }\r\n\r\n get IsSuperSetSlave() {\r\n return FitnessItemHelper.IsSuperSetSlave(this.FitnessItem, this.fitnessBlock);\r\n }\r\n\r\n get IsValidSuperset() {\r\n return FitnessItemHelper.GetSupersetMaster(this.FitnessItem, this.fitnessBlock) != null;\r\n }\r\n\r\n get IsCircuitMode(): boolean {\r\n if (this.fitnessBlock && (this.fitnessBlock.blockType.toString() === 'Circuit' || this.fitnessBlock.blockType.toString() === '1')) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n toggleSettings() {\r\n this.FitnessItem.showAdvancedMode = !this.FitnessItem.showAdvancedMode;\r\n this.onChanged();\r\n }\r\n\r\n onAdvancedRepChange() {\r\n\r\n\r\n if (this.FitnessItem.setsBased == SetsBased.TimeBased) {\r\n\r\n }\r\n }\r\n\r\n resetSettings() {\r\n this.settingDetails = [];\r\n this.refreshSettings();\r\n }\r\n\r\n onChanged() {\r\n this.changed = true;\r\n\r\n if (!this.FitnessItem.defaultRepsOrTime) {\r\n this.FitnessItem.defaultRepsOrTime = 8;\r\n }\r\n\r\n if (this.FitnessItem.showAdvancedMode) {\r\n this.refreshSettings();\r\n } else {\r\n this.resetSettings();\r\n }\r\n }\r\n\r\n Save() {\r\n this.applyItem();\r\n\r\n this.ref.close();\r\n }\r\n\r\n Close() {\r\n this.ref.close();\r\n }\r\n\r\n Remove() {\r\n if (this.RemoveCallBack) {\r\n this.ref.close();\r\n this.RemoveCallBack();\r\n }\r\n }\r\n\r\n refreshSettings(expand: boolean = true) {\r\n // this.settingDetails = [];\r\n\r\n const prevSets = this.settingDetails.length;\r\n\r\n if (prevSets >= this.FitnessItem.sets) {\r\n this.settingDetails.splice(this.FitnessItem.sets);\r\n } else {\r\n for (let i = prevSets + 1; i <= this.FitnessItem.sets; i++) {\r\n const row = new SettingDetailRow();\r\n row.Set = i.toString();\r\n row.Tempo = this.FitnessItem.defaultTempo;\r\n\r\n if (this.FitnessItem.defaultRepsOrTime)\r\n row.RepsOrTime = this.FitnessItem.defaultRepsOrTime.toString();\r\n else row.RepsOrTime = '';\r\n\r\n\r\n // force 0 for MaxRepBased\r\n if (this.FitnessItem.setsBased == SetsBased.MaxRepBased) {\r\n row.RepsOrTime = '0';\r\n }\r\n\r\n if (this.FitnessItem.defaultWeight) {\r\n console.log('this.FitnessItem.defaultWeight', this.FitnessItem.defaultWeight)\r\n let defaultWeight = this.FitnessItem.defaultWeight;\r\n row.Weight = defaultWeight.toString();\r\n } else row.Weight = '';\r\n\r\n if (this.FitnessItem.defaultRest)\r\n row.Rest = this.FitnessItem.defaultRest.toString();\r\n else row.Rest = '';\r\n\r\n this.settingDetails.push(row);\r\n }\r\n }\r\n\r\n this.FitnessItem.setSettings = JSON.stringify(this.settingDetails);\r\n this.buildForm();\r\n this.changed = false;\r\n }\r\n\r\n get RepLabel() {\r\n\r\n\r\n let supersetMaster = this.GetSupersetMaster;\r\n\r\n if (supersetMaster != null) {\r\n if (supersetMaster.setsBased == SetsBased.RepsBased) return 'Reps';\r\n if (supersetMaster.setsBased == SetsBased.Superset) return 'Reps';\r\n if (supersetMaster.setsBased == SetsBased.MaxRepBased) return 'Reps';\r\n else return 'Time (min)';\r\n }\r\n\r\n if (this.FitnessItem.setsBased == SetsBased.RepsBased) return 'Reps';\r\n if (this.FitnessItem.setsBased == SetsBased.Superset) return 'Reps';\r\n if (this.FitnessItem.setsBased == SetsBased.MaxRepBased) return 'Reps';\r\n else return 'Time (min)';\r\n }\r\n\r\n get IsMaxRepType():boolean {\r\n let supersetMaster = this.GetSupersetMaster;\r\n if (supersetMaster != null) {\r\n if (supersetMaster.setsBased == SetsBased.MaxRepBased) return true;\r\n }\r\n if (this.FitnessItem.setsBased == SetsBased.MaxRepBased) return true;\r\n }\r\n\r\n \r\n get IsTimeBasedType():boolean {\r\n let supersetMaster = this.GetSupersetMaster;\r\n if (supersetMaster != null) {\r\n if (supersetMaster.setsBased == SetsBased.TimeBased) return true;\r\n }\r\n if (this.FitnessItem.setsBased == SetsBased.TimeBased) return true;\r\n if (this.FitnessItem.setsBased.toString() == SetsBased.TimeBased.toString()) return true;\r\n }\r\n\r\n onAdd() {\r\n this.changed = true;\r\n\r\n this.saveSettings();\r\n\r\n this.saveOneMaxRep();\r\n\r\n if (this.IsMaxRepType) {\r\n this.FitnessItem.defaultRepsOrTime = 0;\r\n\r\n this.settingDetails.forEach(y => y.RepsOrTime = '0');\r\n }\r\n\r\n const cloneExercise: any = cloneDeep(this.FitnessItem);\r\n\r\n if (this.IsTimeBasedType) {\r\n cloneExercise.defaultRepsOrTime = cloneExercise.defaultRepsOrTime * 60;\r\n }\r\n this.added.emit(cloneExercise);\r\n }\r\n\r\n saveSettings() {\r\n if (!this.FitnessItem.setSettings || !this.FitnessItem.showAdvancedMode) this.refreshSettings(false);\r\n let out = this.advanceOptionForm.value;\r\n if(this.IsPreferredUnitImperial) {\r\n out = this.advanceOptionForm.value.map(x => {\r\n return {\r\n ...x,\r\n Weight: convertPoundsToKg(x.Weight, this.IsPreferredUnitImperial)\r\n }\r\n })\r\n }\r\n\r\n this.FitnessItem.setSettings = JSON.stringify(out);\r\n }\r\n\r\n saveOneMaxRep() {\r\n const exProgress: any = {\r\n patientID: this.PatientID,\r\n exerciceId: this.FitnessItem.exerciceId,\r\n oneMaxRep: this.FitnessItem.oneRepMax,\r\n };\r\n\r\n this.exerciseProgressService\r\n .changeOneMaxRep(exProgress)\r\n .subscribe(() => { });\r\n }\r\n\r\n onVideoChange() {\r\n this.video.nativeElement.load();\r\n this.isPlayingVideo = false;\r\n }\r\n\r\n onPlayVideo() {\r\n this.isPlayingVideo = true;\r\n this.video.nativeElement.play();\r\n }\r\n\r\n onVideoEnded() {\r\n this.isPlayingVideo = false;\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ChangeDetectorRef,\r\n ViewEncapsulation,\r\n ComponentRef,\r\n ViewChild,\r\n OnInit,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport { NbDialogService } from '@nebular/theme';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport {\r\n FitnessItem,\r\n SetsBased,\r\n SettingDetailRow,\r\n WeightType,\r\n BlockType,\r\n FitnessBlock,\r\n FitnessItemHelper,\r\n} from 'app/@core/interfaces/common/CalorieFriend/fitnessItem';\r\nimport { ExerciseProgressData } from 'app/@core/interfaces/common/CalorieFriend/exercise-progress';\r\n/**\r\n * Base component for individual Meal/Food Item among the items list of one Meal Set presentation components.\r\n */\r\n@Component({\r\n selector: 'app-fitness-item-presentation-base',\r\n template: ``,\r\n styleUrls: [\r\n './fitness-item-presentation.component.scss',\r\n '../../global.component.scss',\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class FitnessItemPresentationComponentBase\r\n extends BaseComponentCanDeactivate\r\n implements OnInit\r\n{\r\n ItemQuantity = '';\r\n ItemQuantityTimes = '';\r\n ShowQuanitity = false;\r\n CurrentSelection = '';\r\n FatPercent = '';\r\n SatFatPercent = '';\r\n CholesterolPercent = '';\r\n SodiumPercent = '';\r\n CarbPercent = '';\r\n FiberPercent = '';\r\n\r\n AboutLabel = $localize`:@@SmallAbout:about`;\r\n\r\n Math = Math;\r\n\r\n WeightType = WeightType;\r\n\r\n @Input('BlockType') BlockType: BlockType;\r\n @Input('CircuitRest') CircuitRest: number = 0;\r\n\r\n @Input('FitnessItem') Item: FitnessItem;\r\n @Input('OverlayMealItem') OverlayItem: FitnessItem = null;\r\n @Input('UpdateCallBack') UpdateCallBack = null;\r\n\r\n @Input('PatientID') PatientID: number = -1;\r\n @Input('PatientName') PatientName: string = '';\r\n @Input('IsPreferredUnitImperial') IsPreferredUnitImperial: boolean = false;\r\n\r\n @Input('IsPatientView') IsPatientView: boolean = false;\r\n\r\n @Input('DeleteCallBack') DeleteCallBack = null;\r\n @Input('SaveCallBack') SaveCallBack = null;\r\n\r\n @Input('IsViewOnly') IsViewOnly: boolean = false;\r\n\r\n @Input('IsLastItem') IsLastItem: boolean = false;\r\n\r\n @Input('BlockOrder') BlockOrder: number = 1;\r\n @Input('fitnessBlock') fitnessBlock: FitnessBlock\r\n \r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n ItemSelection = '';\r\n PortionSelectionWithQuantity = '';\r\n\r\n CurrentSelectedServingSizeIndex = 0;\r\n\r\n VisualStyle = '';\r\n Updating: boolean = false;\r\n\r\n /** MealItemPresentation ctor */\r\n constructor(\r\n dialogService: NbDialogService,\r\n private exerciseProgressService: ExerciseProgressData // protected ref: NbDialogRef\r\n ) {\r\n super(dialogService);\r\n }\r\n\r\n\r\n public get IsSuperSet() {\r\n return FitnessItemHelper.IsSuperSet(this.Item);\r\n }\r\n\r\n public get GetSupersetMaster(): FitnessItem {\r\n return FitnessItemHelper.GetSupersetMaster(this.Item, this.fitnessBlock);\r\n }\r\n\r\n public get IsSupersetMaster() {\r\n return FitnessItemHelper.IsSupersetMaster(this.Item, this.fitnessBlock);\r\n }\r\n\r\n public get IsSuperSetWithNext() {\r\n return FitnessItemHelper.IsSuperSetWithNext(this.Item, this.fitnessBlock);\r\n }\r\n\r\n public get IsSuperSetSlave() {\r\n return FitnessItemHelper.IsSuperSetSlave(this.Item, this.fitnessBlock);\r\n }\r\n\r\n public get IsValidSuperset() {\r\n return FitnessItemHelper.GetSupersetMaster(this.Item, this.fitnessBlock) != null;\r\n }\r\n\r\n\r\n\r\n \r\n get RestToNext() {\r\n let restItem = this.Item.restBeforeNextExercise;\r\n\r\n if (this.BlockType.toString() === BlockType.Circuit.toString()) {\r\n restItem = this.CircuitRest;\r\n }\r\n\r\n if (restItem > 0) {\r\n if (restItem < 60) {\r\n return `${restItem} sec. rest`;\r\n } else {\r\n const min = Math.floor(restItem / 60);\r\n const sec = restItem % 60;\r\n if (sec > 0) {\r\n return `${min}m ${sec} s rest`;\r\n } else {\r\n return `${min} min rest`;\r\n }\r\n }\r\n } else {\r\n return 'No rest';\r\n }\r\n }\r\n\r\n \r\n get RestEnd() {\r\n let restItem = this.fitnessBlock.restEnd;\r\n\r\n if (restItem > 0) {\r\n if (restItem < 60) {\r\n return `${restItem} sec. rest`;\r\n } else {\r\n const min = Math.floor(restItem / 60);\r\n const sec = restItem % 60;\r\n if (sec > 0) {\r\n return `${min} m ${sec} s rest`;\r\n } else {\r\n return `${min} min rest`;\r\n }\r\n }\r\n } else {\r\n return 'No rest';\r\n }\r\n }\r\n\r\n\r\n\r\n /**\r\n * Initializes the component.\r\n * Sets the event handlers and subscribers for serving size changes.\r\n */\r\n ngOnInit(): void {\r\n if (this.OverlayItem != null && this.OverlayItem !== undefined) {\r\n this.Item = this.OverlayItem;\r\n }\r\n\r\n // one max rep\r\n // if (this.Item) {\r\n // this.exerciseProgressService\r\n // .getOneMaxRep(this.PatientID, this.Item.exerciceId)\r\n // .subscribe(\r\n // (data) => {\r\n // if (data) this.Item.oneRepMax = data.oneMaxRep;\r\n // },\r\n // () => {}\r\n // );\r\n // }\r\n }\r\n\r\n get OrderLabel(): string {\r\n if (this.BlockOrder > 0 && this.BlockOrder < 100) {\r\n return (\r\n String.fromCharCode(64 + this.BlockOrder) +\r\n (this.Item.order + 1).toString()\r\n );\r\n } else {\r\n return (this.Item.order + 1).toString();\r\n }\r\n }\r\n}\r\n","
\r\n
\r\n
{{ItemName}}
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n\r\n
{{Item.customName}}
\r\n\r\n \r\n \r\n \r\n\r\n\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n\r\n \r\n \r\n\r\n\r\n
\r\n\r\n
\r\n
\r\n {{ItemName}}\r\n
\r\n
\r\n
\r\n\r\n
\r\n {{OrderLabel}}\r\n
\r\n\r\n\r\n \r\n\r\n
\r\n
\r\n {{RestToNext}}\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n \r\n\r\n
\r\n
\r\n Superset\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n\r\n\r\n
","import {\r\n Component,\r\n Input,\r\n ChangeDetectorRef,\r\n ViewEncapsulation,\r\n ComponentRef,\r\n ViewChild,\r\n OnInit,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport {\r\n NbColorHelper,\r\n NbDialogRef,\r\n NbDialogService,\r\n NbThemeService,\r\n} from '@nebular/theme';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { UsersService } from 'app/@core/backend/common/services/users.service';\r\nimport { User } from 'app/@core/interfaces/common/users';\r\nimport { Router } from '@angular/router';\r\nimport {\r\n FitnessItem,\r\n SetsBased,\r\n SettingDetailRow,\r\n WeightType,\r\n BlockType,\r\n FitnessBlock,\r\n FitnessItemHelper,\r\n} from 'app/@core/interfaces/common/CalorieFriend/fitnessItem';\r\nimport { format } from 'support';\r\nimport { ExerciseEditComponent } from '../ExerciseEdit/exercise-edit.component';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { SafeResourceUrl } from '@angular/platform-browser';\r\nimport { ExerciseProgressData } from 'app/@core/interfaces/common/CalorieFriend/exercise-progress';\r\nimport { ExerciseLogData } from 'app/@core/interfaces/common/CalorieFriend/exerciseLog';\r\nimport {\r\n WorkoutDetail,\r\n WorkoutDetailStatus,\r\n} from 'app/@core/interfaces/common/CalorieFriend/workout';\r\nimport { OverlayFitnessItemPresentationComponent } from './fitness-item-presentation-overlay.component';\r\nimport { FitnessItemPresentationComponentBase } from './fitness-item-presentation-base.component';\r\nimport { WorkoutService } from 'app/@core/backend/common/services/CalorieFriend/workout.service';\r\n\r\n/**\r\n * Component for Meal Item presentation.\r\n * Inherits from the MealItemPresentationComponentBase component.\r\n */\r\n@Component({\r\n selector: 'app-fitness-item-presentation',\r\n templateUrl: './fitness-item-presentation.component.html',\r\n styleUrls: [\r\n './fitness-item-presentation.component.scss',\r\n '../../global.component.scss',\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class FitnessItemPresentationComponent\r\n extends FitnessItemPresentationComponentBase\r\n implements OnInit {\r\n\r\n\r\n\r\n constructor(\r\n private PresDialogService: NbDialogService,\r\n PresExerciseProgressService: ExerciseProgressData,\r\n private workoutService: WorkoutService,\r\n ) {\r\n super(PresDialogService, PresExerciseProgressService);\r\n }\r\n\r\n onClickImage(): void {\r\n if (this.IsViewOnly) return;\r\n\r\n\r\n if (this.IsPatientView) {\r\n // start exercise based on block and exercise id\r\n this.workoutService.startExcercise.next({\r\n blockId: this.fitnessBlock.id,\r\n excerciseId: this.Item.id,\r\n isWorkout: false,\r\n });\r\n } else {\r\n const ref: ComponentRef =\r\n this.PresDialogService.open(ExerciseEditComponent, {\r\n closeOnEsc: false,\r\n context: {\r\n InputItem: this.Item,\r\n PatientID: this.PatientID,\r\n PatientName: this.PatientName,\r\n IsPreferredUnitImperial: this.IsPreferredUnitImperial,\r\n fitnessBlock: this.fitnessBlock,\r\n ShowEditButtons: true,\r\n RemoveCallBack: this.onDeleteItem.bind(this),\r\n SaveCallBack: this.onSaveItem.bind(this),\r\n },\r\n }).componentRef;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n public getVideoUrl(source:string):string {\r\n return source + \"#t=0.001\"\r\n }\r\n\r\n onSaveItem() {\r\n if (this.Item && this.SaveCallBack) {\r\n this.SaveCallBack(this.Item);\r\n }\r\n }\r\n\r\n onDeleteItem() {\r\n if (this.Item && this.DeleteCallBack) {\r\n this.DeleteCallBack(this.Item);\r\n }\r\n }\r\n\r\n get ItemName() {\r\n const result = this.Item.name;\r\n return result;\r\n }\r\n\r\n\r\n formatTime(time) {\r\n if (time < 60) {\r\n return `${time} sec.`;\r\n } else {\r\n const min = Math.floor(time / 60);\r\n const sec = time % 60;\r\n if (sec > 0) {\r\n return `${min}m ${sec} s`;\r\n } else {\r\n return `${min} min`;\r\n }\r\n }\r\n }\r\n\r\n get ItemDescription() {\r\n\r\n\r\n\r\n let baseString = \"
{0} x {1} {2}\";\r\n let result = \"\";\r\n\r\n let fitnessItem = this.Item;\r\n\r\n\r\n if (this.IsSuperSet && this.GetSupersetMaster != null) {\r\n fitnessItem = this.GetSupersetMaster;\r\n }\r\n\r\n\r\n if (fitnessItem.setsBased === SetsBased.RepsBased || fitnessItem.setsBased.toString() === '0' || fitnessItem.setsBased === SetsBased.Superset || fitnessItem.setsBased.toString() === '3') {\r\n result = format(baseString, this.BlockType === BlockType.Circuit ? 1 : fitnessItem.sets, this.Item.defaultRepsOrTime, 'Reps')\r\n }\r\n\r\n if (fitnessItem.setsBased === SetsBased.TimeBased || fitnessItem.setsBased.toString() === '1') {\r\n result = format(baseString, this.BlockType === BlockType.Circuit ? 1 : fitnessItem.sets, this.formatTime(this.Item.defaultRepsOrTime), '')\r\n }\r\n\r\n if (fitnessItem.setsBased === SetsBased.MaxRepBased || fitnessItem.setsBased.toString() === '2') {\r\n result = format(baseString, this.BlockType === BlockType.Circuit ? 1 : fitnessItem.sets, \"Max Reps\", '')\r\n }\r\n\r\n result += '
';\r\n\r\n if (\r\n fitnessItem.defaultRest &&\r\n fitnessItem.defaultRest > 0 &&\r\n this.BlockType.toString() !== BlockType.Circuit.toString()\r\n ) {\r\n if (fitnessItem.defaultRest < 60) {\r\n result += format(\r\n \"
{0} sec Rest
\",\r\n fitnessItem.defaultRest\r\n );\r\n } else {\r\n result += format(\r\n \"
{0} min Rest
\",\r\n Math.round(fitnessItem.defaultRest / 60)\r\n );\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","\r\n\r\n \r\n
\r\n Add New Exercise\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n\r\n \r\n\r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n Search Filters\r\n \r\n
\r\n\r\n \r\n {{bodyPart.name}}\r\n \r\n\r\n \r\n\r\n {{muscle.name}}\r\n\r\n \r\n\r\n \r\n {{equip.name}}\r\n \r\n\r\n \r\n With Video\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { NbDialogRef, NbDialogService, NbToastrService } from '@nebular/theme';\r\nimport { IPageInfo } from 'ngx-virtual-scroller';\r\nimport { format } from 'support';\r\nimport { DataSource } from 'ng2-smart-table/lib/lib/data-source/data-source';\r\n\r\nimport {\r\n Exercise,\r\n ExerciseData,\r\n} from 'app/@core/interfaces/common/CalorieFriend/exercise';\r\nimport { Labelling } from '../../general-text.component';\r\nimport { CustomExerciseData } from 'app/@core/interfaces/common/CalorieFriend/custom-exercise';\r\nimport { FitnessItem } from 'app/@core/interfaces/common/CalorieFriend/fitnessItem';\r\nimport { PatientData } from 'app/@core/interfaces/common/CalorieFriend/patients';\r\nimport { CustomExerciseDefComponent } from '../../custom-exercise/CustomExerciseDef/customexercise-def.component';\r\nimport { NativeAppService } from 'app/@core/backend/common/services/native-app.service';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { cloneDeep } from 'lodash';\r\n\r\n/**\r\n * Component for Selection of Meal Items to add into a Meal\r\n */\r\n@Component({\r\n selector: 'app-add-fitness-items',\r\n templateUrl: './add-fitness-items.component.html',\r\n styleUrls: [\r\n './add-fitness-items.component.scss',\r\n '../../global.component.scss',\r\n ],\r\n})\r\nexport class AddFitnessItemsComponent {\r\n ExerciseSource: DataSource;\r\n CustomExerciseSource: DataSource;\r\n PublicCustomExerciseSource: DataSource;\r\n\r\n FriendlyNameLabel = 'Name';\r\n CaloriesLabel = 'Calories';\r\n ProteinLabel = 'Protein';\r\n CarbLabel = 'Carbs';\r\n FatLabel = 'Fats';\r\n ImageLabel = 'Image';\r\n Select = 'Select';\r\n AcceptLabel = 'Close';\r\n CancelLabel = 'Cancel';\r\n OptionsLabel = 'Options';\r\n ExercisesListCountHTML = '';\r\n ListCountLabel = $localize`:@@Exercises:Exercises`;\r\n\r\n ListWithoutImageCountLabel = $localize`:@@WithoutImages:Without Images`;\r\n FilterLabel = 'Filter';\r\n CurrentFilter = '';\r\n AppliedFilter = '';\r\n NewMealItemLabel = 'Add New Item To Workout Plan';\r\n NewCustomMealItemLabel = 'Add New Item';\r\n\r\n CustomExerciseListCountHTML = '';\r\n ListFromCustomExerciseCountLabel = $localize`:@@MyExercise:My Exercise`;\r\n\r\n Labels: Labelling;\r\n\r\n SelectedExercise: Array;\r\n\r\n LoadedCurrentlyActiveExercise: Array = null;\r\n private CurrentlyActiveExercise: Array = new Array();\r\n\r\n Items: Array = new Array();\r\n CustomItems: Array = new Array();\r\n\r\n filterItems = null;\r\n filterCustomExerciseItems = null;\r\n\r\n CallerParent: any;\r\n\r\n PatientID: number = -1;\r\n @Input('PatientName') PatientName: string = '';\r\n @Input('IsPreferredUnitImperial') IsPreferredUnitImperial: boolean = false;\r\n\r\n @ViewChild('ExerciseTable') Exercises: any = null;\r\n @ViewChild('SearchField') SearchField: ElementRef;\r\n\r\n allEquipments: Array = [];\r\n allMuscleTargets: Array = [];\r\n allBodyParts: Array = [];\r\n\r\n selectedEquipments: Array = [];\r\n selectedMuscleTargets: Array = [];\r\n selectedBodyParts: Array = [];\r\n withVideo: boolean = false;\r\n\r\n constructor(\r\n private exerciseService: ExerciseData,\r\n private customExerciseService: CustomExerciseData,\r\n private dialogService: NbDialogService,\r\n private toastService: NbToastrService,\r\n private patientService: PatientData,\r\n protected ref: NbDialogRef,\r\n private nativeApp: NativeAppService,\r\n private deviceDetector: DeviceDetectorService,\r\n ) {\r\n this.SelectedExercise = new Array();\r\n\r\n this.ExercisesListCountHTML = format('{0} {1}', 0, this.ListCountLabel);\r\n this.CustomExerciseListCountHTML = format(\r\n '{0} {1}',\r\n 0,\r\n this.ListFromCustomExerciseCountLabel\r\n );\r\n\r\n this.Labels = new Labelling();\r\n\r\n \r\n }\r\n\r\n /**\r\n * Initializes the component.\r\n * Initializes the data source for Exercises and Custom Exercises\r\n * and their subscriptions.\r\n */\r\n ngOnInit(): void {\r\n\r\n //force no keyboard on nativeApp.\r\n\r\n this.ExerciseSource = this.exerciseService.gridDataSource;\r\n this.CustomExerciseSource =\r\n this.customExerciseService.gridDataSourceForBlock;\r\n\r\n this.ExerciseSource.onChanged().subscribe((Data) => {\r\n this.PrepRetrievedItems(Data);\r\n\r\n for (const item of Data.elements) {\r\n const found = this.Items.find(\r\n (find) => find.exerciceId == item.exerciceId\r\n );\r\n\r\n if (found == null || found == undefined) {\r\n this.Items.push(item);\r\n }\r\n }\r\n\r\n this.ExercisesListCountHTML = format(\r\n '{0} ({1})',\r\n this.ListCountLabel,\r\n this.ExerciseSource.count()\r\n );\r\n });\r\n\r\n this.CustomExerciseSource.onChanged().subscribe((Data) => {\r\n this.PrepRetrievedItems(Data);\r\n\r\n for (const item of Data.elements) {\r\n const found = this.CustomItems.find(\r\n (find) => find.exerciceId == item.exerciceId\r\n );\r\n\r\n if (found == null || found == undefined) {\r\n this.CustomItems.push(item);\r\n }\r\n }\r\n\r\n this.CustomExerciseListCountHTML = format(\r\n '{0} ({1})',\r\n this.ListFromCustomExerciseCountLabel,\r\n this.CustomExerciseSource.count()\r\n );\r\n });\r\n\r\n // selected exercise\r\n // filter exercise\r\n if (this.CurrentlyActiveExercise !== null) {\r\n for (const exercise of this.CurrentlyActiveExercise) {\r\n if (exercise !== null && exercise !== undefined)\r\n this.SelectedExercise.push(exercise);\r\n }\r\n\r\n this.filterItems = this.CurrentlyActiveExercise.filter(\r\n (ex) => !ex.isCustom\r\n ).map((ex) => ex.exerciceId);\r\n this.RefreshLists();\r\n\r\n this.filterCustomExerciseItems = this.CurrentlyActiveExercise.filter(\r\n (ex) => ex.isCustom\r\n ).map((ex) => ex.exerciceId);\r\n\r\n this.RefreshCustomExercisesLists();\r\n }\r\n\r\n this.exerciseService.GetFilterOptions().subscribe((data) => {\r\n this.allBodyParts = data.bodyParts;\r\n this.allEquipments = data.equipments;\r\n this.allMuscleTargets = data.muscleTargets;\r\n\r\n\r\n this.allBodyParts.sort((a, b) => a.name.localeCompare(b.name));\r\n this.allEquipments.sort((a, b) => a.name.localeCompare(b.name));\r\n this.allMuscleTargets.sort((a, b) => a.name.localeCompare(b.name));\r\n });\r\n }\r\n\r\n isDesktop():boolean  {\r\n return this.deviceDetector.isDesktop() && !this.nativeApp.isFromApp();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.SearchField.nativeElement.focus();\r\n\r\n if (this.nativeApp.isFromAppFromAndroidApp())\r\n setTimeout(() => this.nativeApp.sendMessageToApp(\"PageY\", \"0\"), 25);\r\n }\r\n\r\n /**\r\n * Retrieve Item data and updates its presentation including selection UI.\r\n * @param Data Item data\r\n */\r\n private PrepRetrievedItems(Data) {\r\n if (\r\n this.CurrentlyActiveExercise != null &&\r\n this.CurrentlyActiveExercise != undefined\r\n ) {\r\n for (const loadExercise of Data.elements) {\r\n const FoundItem = this.CurrentlyActiveExercise.find(\r\n (ex) =>\r\n ex.exerciceId == loadExercise.exerciceId &&\r\n ex.isCustom == loadExercise.isCustom\r\n );\r\n if (FoundItem == null || FoundItem == undefined)\r\n this.CurrentlyActiveExercise.push(loadExercise);\r\n }\r\n } else this.CurrentlyActiveExercise = Data.elements;\r\n\r\n this.PrepareSelectedList();\r\n\r\n for (const exercise of Data.elements) {\r\n const FoundExercise = this.SelectedExercise.find(\r\n (x) =>\r\n x.exerciceId === exercise.exerciceId &&\r\n x.isCustom === exercise.isCustom\r\n );\r\n if (FoundExercise !== null && FoundExercise !== undefined)\r\n exercise.selected = FoundExercise.selected;\r\n else exercise.selected = false;\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of 'change' event of Item Selection.\r\n * Updates the 'Selected' status of the exercise item and add it to the selected exercises list.\r\n * @param event Event object\r\n */\r\n public onItemSelect(event) {\r\n if (event.data === null) {\r\n // full selection - de selection\r\n for (const exercise of this.CurrentlyActiveExercise) {\r\n exercise.selected = !exercise.selected;\r\n }\r\n } else {\r\n event.data.selected = !event.data.selected;\r\n\r\n if (event.data !== null && event.data !== undefined)\r\n this.SelectedExercise.push(event.data);\r\n }\r\n }\r\n\r\n /**\r\n * Function to update the selected exercises list.\r\n */\r\n private PrepareSelectedList() {\r\n if (\r\n this.CurrentlyActiveExercise !== null &&\r\n this.CurrentlyActiveExercise !== undefined\r\n ) {\r\n let Process: Boolean = false;\r\n\r\n for (const ex of this.CurrentlyActiveExercise) {\r\n Process = false;\r\n if (ex.selected !== undefined && ex.selected) {\r\n // see if the item is already in list\r\n const FoundExercise = this.SelectedExercise.find(\r\n (curEx) =>\r\n curEx.exerciceId === ex.exerciceId &&\r\n curEx.isCustom === ex.isCustom\r\n );\r\n if (\r\n FoundExercise === null ||\r\n (FoundExercise === undefined && ex !== null && ex !== undefined)\r\n ) {\r\n this.SelectedExercise.push(ex);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of Accept button\r\n */\r\n Accept() {\r\n this.ref.close();\r\n }\r\n\r\n /**\r\n * Event handler of Cancel button\r\n */\r\n Cancel() {\r\n this.ref.close();\r\n }\r\n\r\n /**\r\n * Add the selected exercise item to the caller's exercise list\r\n * @param exercise exercise item to add to the list\r\n */\r\n PerformItemAdd(exercise) {\r\n // emit the parent\r\n if (this.CallerParent && this.CallerParent.UpdateSelectedItem)\r\n this.CallerParent.UpdateSelectedItem([exercise]);\r\n\r\n // show toast\r\n this.toastService.success('', `${exercise.name} has been added to plan.`);\r\n }\r\n\r\n /**\r\n * Updates the selection and quantity for the Exercise item added\r\n * @param This Self referencing object\r\n * @param ItemAdded Item added\r\n */\r\n onAddItem(ItemAdded: FitnessItem) {\r\n \r\n this.PerformItemAdd(ItemAdded);\r\n\r\n return;\r\n\r\n }\r\n\r\n filteredExercises: string[];\r\n searchTimeout = null;\r\n\r\n /**\r\n * Event handler of the auto-complete action.\r\n * Searches the items within Name or Description fields by the {query} value\r\n * @param Search Query string to search items\r\n */\r\n FilterChange(Search) {\r\n this.CurrentFilter = Search;\r\n\r\n if (this.searchTimeout) {\r\n clearTimeout(this.searchTimeout);\r\n }\r\n this.searchTimeout = setTimeout(\r\n function (self) {\r\n self.ApplyFilterChange();\r\n },\r\n 700,\r\n this\r\n );\r\n }\r\n\r\n /**\r\n * Function to filter Exercises by query using API service\r\n * @param query Query\r\n */\r\n private filterFunc(query: string): Observable {\r\n return this.exerciseService.GetFilterResult(query);\r\n }\r\n\r\n /**\r\n * Activated Search\r\n */\r\n ApplyFilterChange() {\r\n if (this.searchTimeout) {\r\n clearTimeout(this.searchTimeout);\r\n }\r\n\r\n if (this.AppliedFilter != this.CurrentFilter) {\r\n this.RefreshLists();\r\n this.RefreshCustomExercisesLists();\r\n }\r\n\r\n this.AppliedFilter = this.CurrentFilter;\r\n }\r\n\r\n /**\r\n * Function to refresh data sources for tables.\r\n */\r\n private RefreshLists() {\r\n if (this.ExerciseSource !== null && this.ExerciseSource !== undefined) {\r\n this.ExerciseSource.addFilter(\r\n { field: 'OnlyPictures', search: 'true' },\r\n true,\r\n false\r\n );\r\n this.ExerciseSource.addFilter(\r\n { field: 'FriendlyName', search: this.CurrentFilter },\r\n true,\r\n false\r\n );\r\n this.ExerciseSource.addFilter(\r\n { field: 'Equipments', search: this.selectedEquipments },\r\n true,\r\n false\r\n );\r\n this.ExerciseSource.addFilter(\r\n { field: 'BodyParts', search: this.selectedBodyParts },\r\n true,\r\n false\r\n );\r\n this.ExerciseSource.addFilter(\r\n { field: 'MuscleTargets', search: this.selectedMuscleTargets },\r\n true,\r\n false\r\n );\r\n this.ExerciseSource.addFilter(\r\n { field: 'WithVideo', search: this.withVideo },\r\n true,\r\n false\r\n );\r\n\r\n this.Items = new Array();\r\n this.ExerciseSource.setPaging(1, 3, false);\r\n\r\n this.ExerciseSource.refresh();\r\n }\r\n }\r\n\r\n /**\r\n * Function to refresh data source for Custom Exercises list.\r\n */\r\n private RefreshCustomExercisesLists() {\r\n if (\r\n this.CustomExerciseSource !== null &&\r\n this.CustomExerciseSource !== undefined\r\n ) {\r\n this.CustomExerciseSource.addFilter(\r\n { field: 'FriendlyName', search: this.CurrentFilter },\r\n true,\r\n false\r\n );\r\n\r\n this.CustomItems = new Array();\r\n this.CustomExerciseSource.setPaging(1, 3, false);\r\n\r\n this.CustomExerciseSource.refresh();\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of 'New Item' action to add a new custom Exercise.\r\n * Opens CustomExerciseDefComponent in a pop up dialog.\r\n */\r\n onNewCustomFitnessItem() {\r\n // to-do: Custom Exercise\r\n this.dialogService\r\n .open(CustomExerciseDefComponent, {\r\n closeOnEsc: false,\r\n context: {\r\n ID: null,\r\n },\r\n })\r\n .onClose.subscribe((goal) => {\r\n this.RefreshCustomExercisesLists();\r\n });\r\n }\r\n\r\n FetchMoreItem(event: IPageInfo) {\r\n if (\r\n this.Items == null ||\r\n event.endIndex <= 0 ||\r\n event.endIndex !== this.Items.length - 1\r\n )\r\n return;\r\n\r\n this.ExerciseSource.setPaging((event.endIndex + 1) / 3 + 1, 3, true);\r\n }\r\n\r\n FetchMoreCustomItem(event: IPageInfo) {\r\n if (\r\n this.CustomItems == null ||\r\n event.endIndex <= 0 ||\r\n event.endIndex !== this.CustomItems.length - 1\r\n )\r\n return;\r\n\r\n this.CustomExerciseSource.setPaging(\r\n Math.round((event.endIndex + 1) / 3) + 1,\r\n 3,\r\n true\r\n );\r\n }\r\n\r\n onSelectedOptionsChange() {\r\n this.RefreshLists();\r\n }\r\n}\r\n","
\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n Add Exercice\r\n
\r\n
\r\n\r\n
\r\n
\r\n Quick Add\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
","import {\r\n Component,\r\n Input,\r\n ApplicationRef,\r\n ChangeDetectorRef,\r\n ViewChild,\r\n ViewChildren,\r\n QueryList,\r\n ElementRef,\r\n AfterContentChecked,\r\n OnInit,\r\n ComponentRef,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { NbDialogService, NbPopoverDirective } from '@nebular/theme';\r\nimport { Subject } from 'rxjs/Subject';\r\n\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { isObservable } from 'rxjs';\r\nimport {\r\n CdkDragDrop,\r\n moveItemInArray,\r\n transferArrayItem,\r\n} from '@angular/cdk/drag-drop';\r\nimport {\r\n FitnessBlock,\r\n FitnessItem,\r\n BlockType,\r\n SetsBased,\r\n WeightType,\r\n} from 'app/@core/interfaces/common/CalorieFriend/fitnessItem';\r\nimport { FitnessItemPresentationComponent } from '../FitnessItemPresentation/fitness-item-presentation.component';\r\nimport { FitnessItemPresentationComponentBase } from '../FitnessItemPresentation/fitness-item-presentation-base.component';\r\nimport { Exercise } from 'app/@core/interfaces/common/CalorieFriend/exercise';\r\nimport { AddFitnessItemsComponent } from '../AddFitnessItems/add-fitness-items.component';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\nimport { NativeAppService } from 'app/@core/backend/common/services/native-app.service';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { ExerciseEditComponent } from '../ExerciseEdit/exercise-edit.component';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n/**\r\n * Base Component class for Food Items List presentation in one Meal Set.\r\n */\r\nexport class FitnessItemsListPresentationComponentBase\r\n extends BaseComponentCanDeactivate\r\n implements OnInit, AfterContentChecked, OnDestroy {\r\n get IsDirty() {\r\n let childrenDirty = false;\r\n this.MealItemsList.forEach(\r\n (c) => (childrenDirty = childrenDirty || c.IsDirty)\r\n );\r\n return this.isDirty || childrenDirty;\r\n }\r\n\r\n resetDirty() {\r\n super.resetDirty();\r\n this.MealItemsList.forEach((c) => c.resetDirty());\r\n }\r\n\r\n @Input('FitnessBlock') protected FitnessBlock: FitnessBlock;\r\n @Input('BlockUpdate') BlockUpdate = null;\r\n @Input('PlanView') PlanView: boolean = false;\r\n\r\n @Input('BlockType') BlockType: BlockType;\r\n @Input('CircuitRest') CircuitRest: number = 0;\r\n\r\n @Input('PatientID') PatientID: number = -1;\r\n @Input('PatientName') PatientName: string = '';\r\n @Input('IsPreferredUnitImperial') IsPreferredUnitImperial: boolean = false;\r\n\r\n @ViewChild('scrollContainer') scrollContainer: any;\r\n @ViewChildren('FitnessItem')\r\n private MealItemsList: QueryList;\r\n\r\n EmptyFitnessItem: FitnessItem = null;\r\n\r\n selectedItem: FitnessItem = null;\r\n DeleteIcon = 'trash';\r\n AddIcon = 'plus-circle-outline';\r\n\r\n PlanItems: Array = null;\r\n\r\n CurrentX = -1;\r\n CurrentY = -1;\r\n EditingItem = false;\r\n Editing = false;\r\n Deleting = false;\r\n AllowAddtingItems = false;\r\n\r\n DeleteMealItemConfirmationMessage = $localize`:@@DeleteMealItemConfirmationMessage:Are you sure you want to remove this item?`;\r\n\r\n AddItem = null;\r\n \r\n unsubscription$ = new Subject();\r\n\r\n // to-do: overlay component for defining sets and reps\r\n // OverlayComponent = OverlayMealItemPresentationComponent;\r\n\r\n @ViewChild(NbPopoverDirective) popover: NbPopoverDirective;\r\n @ViewChild('ItemsContainer') ItemsContainer: any = null;\r\n @ViewChild('rowLayout') rowLayout: ElementRef = null;\r\n @ViewChildren(FitnessItemPresentationComponent)\r\n LoadedItems: QueryList;\r\n\r\n ItemUpdateNotification: Subject = null;\r\n MaxRowItems = 0;\r\n\r\n itemsTable: Array;\r\n\r\n /** MealItemsPresentation ctor */\r\n constructor(\r\n private dialogService: NbDialogService,\r\n appRef: ApplicationRef,\r\n chdetRef: ChangeDetectorRef,\r\n AllowAddingItems = false,\r\n private deviceService: DeviceDetectorService\r\n ) {\r\n super(dialogService);\r\n this.ItemUpdateNotification = new Subject();\r\n this.AllowAddtingItems = AllowAddingItems;\r\n }\r\n\r\n cdkDelay() {\r\n return this.deviceService.isDesktop() ? 0 : 100;\r\n }\r\n\r\n ngOnInit(): void {\r\n setTimeout(() => {\r\n if (this.FitnessBlock !== null && this.FitnessBlock !== undefined) {\r\n this.PlanItems = this.FitnessBlock.items;\r\n }\r\n\r\n if (this.PlanItems == null || this.PlanItems === undefined)\r\n this.PlanItems = new Array();\r\n\r\n // sorting\r\n this.PlanItems = this.PlanItems.sort((a, b) =>\r\n a.order > b.order ? 1 : -1\r\n );\r\n\r\n if (\r\n this.FitnessBlock.items == null ||\r\n this.FitnessBlock.items === undefined\r\n )\r\n this.FitnessBlock.items = new Array();\r\n\r\n this.SetMaxItemsPerRow();\r\n\r\n for (const item of this.PlanItems) {\r\n this.SepcificItemSubscribe(item);\r\n }\r\n });\r\n\r\n // this.ItemSubscribe();\r\n }\r\n\r\n ngAfterContentChecked() { }\r\n\r\n ngOnDestroy() {\r\n this.unsubscription$.next();\r\n this.unsubscription$.complete();\r\n }\r\n\r\n onResize($event) { }\r\n\r\n private SetMaxItemsPerRow() {\r\n this.initTable();\r\n }\r\n\r\n getCumIndex(x: number, y: number) {\r\n let count: number = 0;\r\n const arr = this.getItemsTable();\r\n for (let i = 0; i < arr.length; i++) {\r\n if (x === i) {\r\n return count + y;\r\n } else {\r\n count += arr[i].length;\r\n }\r\n }\r\n }\r\n\r\n getItemsTable(): FitnessItem[][] {\r\n if (!this.rowLayout) return [];\r\n const oneMealWidth = 230;\r\n const width = this.rowLayout.nativeElement.clientWidth;\r\n const columnSize = Math.round(width / oneMealWidth);\r\n // view has been resized? => update table with new column size\r\n if (columnSize !== this.MaxRowItems) {\r\n this.MaxRowItems = columnSize;\r\n this.initTable();\r\n }\r\n return this.itemsTable;\r\n }\r\n\r\n initTable() {\r\n if (!this.PlanItems) return;\r\n\r\n let order = 0;\r\n for (const item of this.PlanItems) {\r\n item.order = order++;\r\n }\r\n\r\n // create table rows based on input list\r\n // example: [1,2,3,4,5,6] => [ [1,2,3], [4,5,6] ]\r\n const planItemWithEmpty = [...this.PlanItems, this.EmptyFitnessItem];\r\n this.itemsTable = planItemWithEmpty\r\n .filter((_, outerIndex) => outerIndex % this.MaxRowItems === 0) // create outter list of rows\r\n .map(\r\n (\r\n _,\r\n rowIndex // fill each row from...\r\n ) =>\r\n planItemWithEmpty.slice(\r\n rowIndex * this.MaxRowItems, // ... row start and\r\n rowIndex * this.MaxRowItems + this.MaxRowItems // ...row end\r\n )\r\n );\r\n }\r\n\r\n reorderDroppedItem(event: CdkDragDrop) {\r\n // same row/container? => move item in same row\r\n if (event.previousContainer === event.container) {\r\n moveItemInArray(\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n } else {\r\n // different rows? => transfer item from one to another list\r\n transferArrayItem(\r\n event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n }\r\n\r\n // update items after drop: flatten matrix into list\r\n // example: [ [1,2,3], [4,5,6] ] => [1,2,3,4,5,6]\r\n this.PlanItems = this.itemsTable.reduce(\r\n (previous, current) => previous.concat(current),\r\n []\r\n );\r\n\r\n this.PlanItems = this.PlanItems.filter((item) => item != null);\r\n\r\n // re-initialize table - makes sure each row has same numbers of entries\r\n // example: [ [1,2], [3,4,5,6] ] => [ [1,2,3], [4,5,6] ]\r\n this.initTable();\r\n }\r\n\r\n SaveItem(item) {\r\n if (item) {\r\n item.Update.next();\r\n }\r\n }\r\n\r\n /**\r\n * Delete the selected meal item.\r\n */\r\n DeleteItem(item) {\r\n this.selectedItem = item;\r\n\r\n if (\r\n this.FitnessBlock !== null &&\r\n this.FitnessBlock !== undefined &&\r\n this.selectedItem !== null &&\r\n this.selectedItem !== undefined\r\n ) {\r\n const selectedItem = this.selectedItem;\r\n const dlg = this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: {\r\n Message: $localize`:@@DeleteMealItemConfirmationMessage:Are you sure you want to remove this item?`,\r\n },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result) {\r\n this.PlanItems = this.FitnessBlock.items =\r\n this.FitnessBlock.items.filter((x) => x !== selectedItem);\r\n this.SetMaxItemsPerRow();\r\n this.ItemUpdateNotification.next();\r\n }\r\n });\r\n }\r\n\r\n this.selectedItem = null;\r\n this.isDirty = true;\r\n }\r\n\r\n /**\r\n * Method to open the MealItemsComponent component in a pop up window\r\n * to select meal items.\r\n */\r\n SelectItems() {\r\n\r\n const ActiveExercise = new Array();\r\n\r\n if (\r\n this.FitnessBlock !== null &&\r\n this.FitnessBlock !== undefined &&\r\n this.FitnessBlock.items !== null &&\r\n this.FitnessBlock.items !== undefined\r\n ) {\r\n for (const fitnessItem of this.FitnessBlock.items) {\r\n ActiveExercise.push(fitnessItem);\r\n }\r\n }\r\n\r\n this.dialogService.open(AddFitnessItemsComponent, {\r\n closeOnEsc: false,\r\n // context: { LoadedCurrentlyActiveFood: ActiveFood }\r\n context: {\r\n LoadedCurrentlyActiveExercise: [],\r\n CallerParent: this,\r\n PatientID: this.PatientID,\r\n PatientName: this.PatientName,\r\n IsPreferredUnitImperial: this.IsPreferredUnitImperial,\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Method to update the meals list with the items added.\r\n * @param items Array of MealItem objects\r\n */\r\n public UpdateSelectedItem(items) {\r\n if (items !== null && items !== undefined) {\r\n let HoldItems = null;\r\n\r\n if (this.FitnessBlock && this.FitnessBlock.items)\r\n HoldItems = this.FitnessBlock.items;\r\n\r\n if (items !== null && items !== undefined) {\r\n for (const item of items) {\r\n item.id = null;\r\n item.fitnessBlockID = this.FitnessBlock.id;\r\n this.FitnessBlock.items.push(item);\r\n\r\n this.SepcificItemSubscribe(item);\r\n this.ItemUpdateNotification.next();\r\n }\r\n this.isDirty = true;\r\n }\r\n\r\n this.PlanItems = this.FitnessBlock.items;\r\n\r\n this.SetMaxItemsPerRow();\r\n }\r\n }\r\n\r\n\r\n makeRandom() {\r\n let possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890\";\r\n const lengthOfCode = 8;\r\n let text = \"\";\r\n for (let i = 0; i < lengthOfCode; i++) {\r\n text += possible.charAt(Math.floor(Math.random() * possible.length));\r\n }\r\n return text;\r\n }\r\n\r\n\r\n CreateAndAddQuickItem() {\r\n let item: FitnessItem = {\r\n name: 'Untiled Quick Add Item',\r\n isQuickAdd: true,\r\n Update: null,\r\n fitnessBlockID: this.FitnessBlock.id,\r\n sets: 3,\r\n setsBased: SetsBased.RepsBased,\r\n defaultRepsOrTime: 8,\r\n defaultTempo: '',\r\n defaultRest: 60,\r\n weightType: WeightType.Procent1MR,\r\n defaultWeight: 0,\r\n oneRepMax: 0,\r\n restBeforeNextExercise: 0,\r\n setSettings: '[{\"Set\":\"1\",\"Tempo\":\"\",\"RepsOrTime\":\"8\",\"Weight\":\"\",\"Rest\":\"60\"},{\"Set\":\"2\",\"Tempo\":\"\",\"RepsOrTime\":\"8\",\"Weight\":\"\",\"Rest\":\"60\"},{\"Set\":\"3\",\"Tempo\":\"\",\"RepsOrTime\":\"8\",\"Weight\":\"\",\"Rest\":\"60\"}]',\r\n order: 0,\r\n useFemaleVersion: false,\r\n showAdvancedMode: false,\r\n instructions: '',\r\n id: 0,\r\n exerciceId: this.makeRandom(),\r\n searchWeight: 0,\r\n videoName: '',\r\n imageName: '',\r\n imageNameFemale: '',\r\n equipments: [],\r\n bodyParts: [],\r\n muscleTarget: [],\r\n muscleSynergist: [],\r\n searchTerms: [],\r\n imageUrl: '',\r\n imageMediumUrl: '',\r\n femaleImageUrl: '',\r\n femaleImageMediumUrl: '',\r\n videoUrl: '',\r\n femaleVideoUrl: '',\r\n youtubeUrl: '',\r\n selected: false,\r\n isCustom: true,\r\n customName: 'Untiled Quick Add Item'\r\n }\r\n\r\n\r\n item.id = null;\r\n item.fitnessBlockID = this.FitnessBlock.id;\r\n this.FitnessBlock.items.push(item);\r\n\r\n this.SepcificItemSubscribe(item);\r\n this.ItemUpdateNotification.next();\r\n\r\n this.isDirty = true;\r\n\r\n\r\n this.PlanItems = this.FitnessBlock.items;\r\n\r\n this.SetMaxItemsPerRow();\r\n\r\n const ref: ComponentRef =\r\n this.dialogService.open(ExerciseEditComponent, {\r\n closeOnEsc: false,\r\n context: {\r\n InputItem: item,\r\n PatientID: this.PatientID,\r\n PatientName: this.PatientName,\r\n IsPreferredUnitImperial: this.IsPreferredUnitImperial,\r\n\r\n ShowEditButtons: true,\r\n RemoveCallBack: this.DeleteItem.bind(this,item),\r\n SaveCallBack: this.SaveItem.bind(this,item),\r\n },\r\n }).componentRef;\r\n\r\n\r\n\r\n }\r\n\r\n private RefeshList() {\r\n const hold = this.FitnessBlock.items;\r\n this.FitnessBlock.items = null;\r\n this.FitnessBlock.items = hold;\r\n return;\r\n }\r\n\r\n private ItemSubscribe() {\r\n if (this.FitnessBlock != null && this.FitnessBlock !== undefined) {\r\n for (const item of this.FitnessBlock.items) {\r\n this.SepcificItemSubscribe(item);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Method to subscribe the change of specific meal item.\r\n * @param item MealItem object\r\n */\r\n private SepcificItemSubscribe(item) {\r\n if (!isObservable(item.Update)) item.Update = new Subject();\r\n\r\n item.Update\r\n .pipe(takeUntil(this.unsubscription$))\r\n .subscribe((data) => {\r\n this.RefeshList();\r\n this.ItemUpdateNotification.next();\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Component for MealItems Presentation.\r\n * Inherits from the MealItemsPresentationComponentBase component.\r\n */\r\n@Component({\r\n selector: 'app-fitness-items-list-presentation',\r\n templateUrl: './fitness-items-list-presentation.component.html',\r\n styleUrls: [\r\n './fitness-items-list-presentation.component.scss',\r\n '../../global.component.scss',\r\n ],\r\n})\r\nexport class FitnessItemsListPresentationComponent extends FitnessItemsListPresentationComponentBase {\r\n constructor(\r\n PCDialogService: NbDialogService,\r\n PCAppRef: ApplicationRef,\r\n PCChdetRef: ChangeDetectorRef,\r\n deviceService: DeviceDetectorService\r\n ) {\r\n super(PCDialogService, PCAppRef, PCChdetRef, true, deviceService);\r\n }\r\n}\r\n\r\n/**\r\n * Component for MealItems Presentation.\r\n * Inherits from the MealItemsPresentationComponentBase component.\r\n */\r\n@Component({\r\n selector: 'app-fitness-items-list-presentation-mobile',\r\n templateUrl: './fitness-items-list-presentation-mobile.component.html',\r\n styleUrls: [\r\n './fitness-items-list-presentation.component.scss',\r\n '../../global.component.scss',\r\n ],\r\n})\r\nexport class FitnessItemsListPresentationMobileComponent extends FitnessItemsListPresentationComponentBase {\r\n constructor(\r\n MobilePCDialogService: NbDialogService,\r\n MobilePCAppRef: ApplicationRef,\r\n MobilePCChdetRef: ChangeDetectorRef,\r\n deviceService: DeviceDetectorService\r\n ) {\r\n super(\r\n MobilePCDialogService,\r\n MobilePCAppRef,\r\n MobilePCChdetRef,\r\n true,\r\n deviceService\r\n );\r\n }\r\n\r\n @Input('FitnessBlock') FitnessBlock: FitnessBlock;\r\n\r\n\r\n}\r\n","\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n {{FitnessBlock.blockType == BlockType.Block ? 'Block' : 'Circuit'}}\r\n \r\n
\r\n\r\n
\r\n \r\n Repeat
\r\n \r\n {{FitnessBlock.repetitionCount}}\r\n
\r\n
\r\n\r\n
\r\n \r\n Rest
\r\n \r\n {{FitnessBlock.circuitRest}}\r\n
\r\n
\r\n\r\n
\r\n \r\n Rest End
\r\n \r\n {{FitnessBlock.restEnd}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n Circuit, repeat {{FitnessBlock.repetitionCount}}X, {{FitnessBlock.circuitRest}} sec. Rest \r\n
\r\n \r\n
\r\n\r\n\r\n \r\n\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n","\r\n\r\n \r\n\r\n
\r\n \r\n {{FitnessBlockOrderName}}\r\n \r\n - \r\n Circuit, repeat {{FitnessBlock.repetitionCount}}X \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n OnInit,\r\n ChangeDetectionStrategy,\r\n OnDestroy,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { FormGroup } from '@angular/forms';\r\n\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { NbDialogService } from '@nebular/theme';\r\nimport { isObservable } from 'rxjs';\r\nimport { CalculateBlockSummary } from 'app/BuildOps';\r\nimport {\r\n BlockType,\r\n FitnessBlock,\r\n} from 'app/@core/interfaces/common/CalorieFriend/fitnessItem';\r\nimport { FitnessSummaryComponent } from '../FitnessSummary/fitness-summary.component';\r\nimport { FitnessItemsListPresentationComponent } from '../FitnessItemsListPresentation/fitness-items-list-presentation.component';\r\nimport { SmartEditComponent } from 'app/@components/smart-edit/smart-edit.component';\r\nimport { format } from 'support';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n/**\r\n * Base Component class for Block Set Presentation.\r\n * Consists of Block Items List and Metrics Graph View.\r\n */\r\nexport class FitnessBlockComponentBase\r\n extends BaseComponentCanDeactivate\r\n implements OnInit, AfterViewInit, OnDestroy {\r\n get IsDirty() {\r\n return (\r\n this.isDirty ||\r\n (this.FitnessItemsView != null && this.FitnessItemsView.IsDirty)\r\n );\r\n }\r\n\r\n resetDirty() {\r\n super.resetDirty();\r\n this.FitnessItemsView.resetDirty();\r\n }\r\n\r\n @Input('FitnessBlock') FitnessBlock: FitnessBlock;\r\n @Input('Index') Index: number;\r\n @Input('PlanView') PlanView: boolean = false;\r\n\r\n @Input('ShowCooldown') ShowCooldown: boolean = false;\r\n @Input('ShowWarmup') ShowWarmup: boolean = false;\r\n\r\n @Input('PatientID') PatientID: number = -1;\r\n @Input('PatientName') PatientName: string = '';\r\n @Input('IsPreferredUnitImperial') IsPreferredUnitImperial: boolean = false;\r\n\r\n TheBlockLabel = $localize`:@@Block:Block`;\r\n\r\n BlockExercises = 0;\r\n BlockReps = 0;\r\n BlockMinutes = 0;\r\n\r\n static clipboard: FitnessBlock;\r\n\r\n @ViewChild('FitnessItems')\r\n FitnessItemsView: FitnessItemsListPresentationComponent;\r\n @ViewChild('FitnessSummary') Summary: FitnessSummaryComponent;\r\n @ViewChild('BlockNameEdit') BlockNameEdit: SmartEditComponent;\r\n // to-do: for repetition and reps, circuits/block dropdown\r\n\r\n ItemUpdateNotification: Subject = null;\r\n\r\n BlockProperitesForm: FormGroup;\r\n\r\n BlockType = BlockType;\r\n\r\n unsubscription$ = new Subject();\r\n\r\n /**\r\n * Function to get Meal's label.\r\n */\r\n get BlockLabel() {\r\n return format(\r\n '{0} {1} ({2} {3})',\r\n this.TheBlockLabel,\r\n (this.Index + 1).toString(),\r\n this.FitnessBlock.name,\r\n this.FitnessBlock.blockType,\r\n );\r\n }\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n dialogService: NbDialogService,\r\n ) {\r\n super(dialogService);\r\n this.ItemUpdateNotification = new Subject();\r\n }\r\n \r\n get MealTime() {\r\n return this.BlockProperitesForm.get('MealTime');\r\n }\r\n\r\n /**\r\n * Initializes the Meal Items subscriptions.\r\n */\r\n ngOnInit(): void {\r\n this.PrepareFitnessItemsObservables();\r\n this.PrepareMetrics();\r\n }\r\n\r\n /**\r\n * AfterViewInit implementation.\r\n * Updates the metrics graph whenever the data has ben changed.\r\n */\r\n ngAfterViewInit() {\r\n this.FitnessItemsView?.ItemUpdateNotification\r\n ?.pipe(takeUntil(this.unsubscription$))\r\n ?.subscribe(() => {\r\n this.PrepareMetrics();\r\n });\r\n \r\n //this.cdRef.markForCheck();\r\n \r\n if (this.BlockNameEdit != null) {\r\n this.BlockNameEdit.CallbackThis = this;\r\n }\r\n \r\n // this.HTMLMealTime.defaultTime = this.PlanMeal.time;\r\n // this.HTMLMealTime.value = this.PlanMeal.time;\r\n }\r\n \r\n /**\r\n * Unsubscribe all subscriptions.\r\n */\r\n ngOnDestroy(): void {\r\n this.unsubscription$.next();\r\n this.unsubscription$.complete();\r\n }\r\n\r\n FitnessBlockItems() {\r\n return this.FitnessBlock.items.sort((a, b) => a.order - b.order);\r\n }\r\n\r\n MealTimeChange($event) {}\r\n\r\n /**\r\n * Function to prepare meal items' update subscriptions.\r\n */\r\n PrepareFitnessItemsObservables() {\r\n // for the meal items -- configure an observable\r\n // place an observable on the object\r\n if (this.FitnessBlock !== null && this.FitnessBlock !== undefined) {\r\n if (\r\n this.FitnessBlock.items !== null &&\r\n this.FitnessBlock.items !== undefined &&\r\n this.FitnessBlock.items.length > 0\r\n ) {\r\n for (const item of this.FitnessBlock.items) {\r\n if (!isObservable(item.Update)) item.Update = new Subject();\r\n\r\n item.Update\r\n .pipe(takeUntil(this.unsubscription$))\r\n .subscribe((data) => this.PrepareMetrics());\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Method to update the metrics data.\r\n */\r\n private PrepareMetrics() {\r\n const blockSummary = CalculateBlockSummary(this.FitnessBlock);\r\n\r\n this.BlockExercises = blockSummary.Exercises;\r\n this.BlockReps = blockSummary.TotalReps;\r\n this.BlockMinutes = Math.round(blockSummary.TotalSeconds / 60);\r\n\r\n if (this.FitnessBlock.blockType.toString() === BlockType.Cooldown.toString()) {\r\n this.FitnessBlock.order = 100;\r\n }\r\n\r\n if (this.FitnessBlock.blockType.toString() === BlockType.Warmup.toString()) {\r\n this.FitnessBlock.order = -100;\r\n }\r\n\r\n // notify Parent - FitnessDay component\r\n this.ItemUpdateNotification.next();\r\n }\r\n\r\n public UpdateBlockLabel(CurrentLabel: string, ThisThis) {\r\n ThisThis.FitnessBlock.name = CurrentLabel;\r\n\r\n if (\r\n ThisThis.FitnessBlock.blockType.toString() === BlockType.Block.toString() ||\r\n ThisThis.FitnessBlock.blockType.toString() === BlockType.Circuit.toString()\r\n )\r\n return format(\r\n '{0} {1} ({2})',\r\n ThisThis.TheBlockLabel,\r\n String.fromCharCode(64 + ThisThis.FitnessBlock.order),\r\n ThisThis.FitnessBlock.name,\r\n );\r\n\r\n if (ThisThis.FitnessBlock.blockType.toString() === BlockType.Cooldown.toString())\r\n return format('{0} ({1})', 'Cooldown', ThisThis.FitnessBlock.name);\r\n\r\n if (ThisThis.FitnessBlock.blockType.toString() === BlockType.Warmup.toString())\r\n return format('{0} ({1})', 'Warmup', ThisThis.FitnessBlock.name);\r\n\r\n }\r\n\r\n public UpdateLabel() {\r\n this.BlockNameEdit.UpdateSecondValue();\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n BlockNameChange($event) {\r\n this.FitnessBlock.name = $event.target.value;\r\n }\r\n\r\n /**\r\n * Removes the selected block\r\n */\r\n RemoveBlock() {}\r\n\r\n /**\r\n * Checks if Block can be removed from the Day\r\n */\r\n get CanRemoveBlock() {\r\n return true;\r\n }\r\n}\r\n\r\n/**\r\n * Component for Block Presentation.\r\n * Inherits from the BlockPresentationComponentBase component.\r\n */\r\n@Component({\r\n selector: 'app-fitness-block',\r\n templateUrl: './fitness-block.component.html',\r\n styleUrls: ['./fitness-block.component.scss', '../../global.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class FitnessBlockComponent\r\n extends FitnessBlockComponentBase\r\n implements OnInit, OnDestroy {\r\n constructor(\r\n cdRefBlock: ChangeDetectorRef,\r\n dialogServiceBlock: NbDialogService,\r\n ) {\r\n super(cdRefBlock, dialogServiceBlock);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n}\r\n\r\n/**\r\n * Component for Block Presentation Mobile.\r\n * Inherits from the BlockPresentationComponentBase component.\r\n */\r\n@Component({\r\n selector: 'app-fitness-block-mobile',\r\n templateUrl: './fitness-block-mobile.component.html',\r\n styleUrls: ['./fitness-block.component.scss', '../../global.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.Default\r\n})\r\nexport class FitnessBlockMobileComponent\r\n extends FitnessBlockComponentBase\r\n implements OnInit {\r\n constructor(\r\n cdRefBlockMobile: ChangeDetectorRef,\r\n dialogServiceBlockMobile: NbDialogService,\r\n ) {\r\n super(cdRefBlockMobile, dialogServiceBlockMobile);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n this.PlanView = true;\r\n }\r\n\r\n get FitnessBlockOrderName() {\r\n return this.UpdateBlockLabel(this.FitnessBlock.name, this);\r\n }\r\n}\r\n","
\r\n
\r\n 0\">\r\n
\r\n Rest\r\n
\r\n
{{ restTimerString }}
\r\n \r\n
\r\n \r\n

Exercise starting in

\r\n {{ restTime }}\r\n \r\n \r\n

GO!\r\n

\r\n

No Rest*

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
","import { WorkoutMode } from 'app/@core/backend/common/services/CalorieFriend/workout.service';\r\nimport { WorkoutService } from './../../../../../@core/backend/common/services/CalorieFriend/workout.service';\r\nimport { FitnessPlanDay } from 'app/@core/interfaces/common/CalorieFriend/plan-day';\r\nimport { FitnessPlan } from './../../../../../@core/interfaces/common/CalorieFriend/plan';\r\nimport { NbDialogService } from '@nebular/theme';\r\nimport * as DateFns from 'date-fns';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { Observable, Subject, Subscription } from 'rxjs';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\nimport {\r\n zoomInAnimation,\r\n zoomInOnEnterAnimation,\r\n} from 'app/@core/utils/animation';\r\nimport { WorkoutTimerService } from 'app/@core/backend/common/services/CalorieFriend/workout-timmer.service';\r\nimport { Workout, WorkoutStatus } from 'app/@core/interfaces/common/CalorieFriend/workout';\r\n\r\nconst getTimeString = (second, { showHour = true } = {}) => {\r\n let h = Math.floor(second / 3600);\r\n let m = showHour ? Math.floor((second % 3600) / 60) : Math.floor(second / 60);\r\n let s = second % 60;\r\n let vals = showHour ? [h, m, s] : [m, s];\r\n return vals.map((t) => ('0' + t).slice(-2)).join(':');\r\n};\r\n\r\n@Component({\r\n selector: 'app-fitness-workout-overlay',\r\n templateUrl: './fitness-workout-overlay.component.html',\r\n styleUrls: ['../fitness-workout.component.scss'],\r\n animations: [zoomInOnEnterAnimation({ delay: 100, duration: 800 })],\r\n})\r\nexport class FitnessWorkoutOverlayComponent implements OnInit {\r\n counter: number = null;\r\n timer: number = 0;\r\n timerString: string = '00:00:00';\r\n _timerTimeout: any;\r\n\r\n restTimer: number = 0;\r\n restTimerString: string = '00:00';\r\n _restTimerTimout: any;\r\n workoutTimerModeSubscription: Subscription;\r\n\r\n startDatetime: Date;\r\n lastDateTime: Date;\r\n\r\n @Input('currentExercise')\r\n currentExercise: string = '';\r\n\r\n @Output('onPause')\r\n onPauseEvent = new EventEmitter();\r\n\r\n @Output('onStopWorkout')\r\n onStopWorkoutEvent = new EventEmitter();\r\n\r\n /**\r\n * @description\r\n * Rest if greater than 0\r\n * No rest if equal to 0\r\n * Don't show rest if less than 0\r\n */\r\n @Input('restTime')\r\n totalRestTime: number = -1;\r\n public workoutMode: WorkoutMode;\r\n private workout: Workout;\r\n\r\n constructor(\r\n private workoutService: WorkoutService,\r\n private dialogService: NbDialogService,\r\n private workoutTimerService: WorkoutTimerService,\r\n ) { }\r\n\r\n // public workoutMode() {\r\n // return this.workoutService.workoutMode.value;\r\n // }\r\n readonly WorkoutMode = WorkoutMode;\r\n\r\n ngOnInit(): void {\r\n this.workoutTimerService.workoutTime.subscribe(res => {\r\n this.timer = res;\r\n this.timerString = this.workoutTimerService.formatTime(res);\r\n });\r\n this.workoutTimerModeSubscription = this.workoutTimerService.workoutMode.subscribe(res => {\r\n this.workoutMode = res;\r\n });\r\n this.workoutService.workout.subscribe(workout => {\r\n this.workout = workout;\r\n });\r\n if (this.totalRestTime > 0) {\r\n this.startRest();\r\n } else {\r\n setTimeout(() => {\r\n this.restTimer = 0;\r\n this.counter = -1;\r\n this.workoutMode = this.workoutTimerService.workoutMode.value;\r\n if(this.workoutMode != WorkoutMode.Workout) this.startTimer();\r\n }, 1200);\r\n }\r\n\r\n }\r\n /**\r\n * @description Start Rest\r\n */\r\n startRest() {\r\n this.restTimer = this.totalRestTime;\r\n this.restTimerString = getTimeString(this.restTimer, { showHour: false });\r\n\r\n this._restTimerTimout = setInterval(() => {\r\n if (this.restTimer <= 0) {\r\n clearInterval(this._restTimerTimout);\r\n this.startCounter();\r\n return;\r\n }\r\n this.restTimer--;\r\n this.restTimerString = getTimeString(this.restTimer, { showHour: false });\r\n }, 1000);\r\n }\r\n /**\r\n * @description Skip Rest\r\n */\r\n skipRest() {\r\n clearInterval(this._restTimerTimout);\r\n this.startCounter();\r\n }\r\n /**\r\n * @description Start counting animation.\r\n */\r\n startCounter() {\r\n this.restTimer = 0;\r\n this.counter = -1;\r\n this.workoutTimerService.reset();\r\n this.startTimer();\r\n }\r\n /**\r\n * @description Stop workout\r\n */\r\n onStopWorkout() {\r\n this.workoutTimerService.reset();\r\n this.onStopWorkoutEvent.emit();\r\n }\r\n\r\n timeStartStop() {\r\n if(this.workoutMode === WorkoutMode.Pause) {\r\n this.workoutTimerService.resume();\r\n\r\n } else if (this.workoutMode === WorkoutMode.Workout) {\r\n this.pause();\r\n }\r\n return;\r\n }\r\n /**\r\n * @description Pause workout\r\n */\r\n pauseWorkout() {\r\n if (this.counter >= 0) return;\r\n this.onPauseEvent.emit();\r\n /**\r\n * it's not necessary\r\n */\r\n this.pause();\r\n clearInterval(this._timerTimeout);\r\n }\r\n\r\n /**\r\n * @description Resume workout\r\n */\r\n resumeWorkout() {\r\n if (this.workoutService.workout.value != null) {\r\n this.workoutService.startWorkout();\r\n this.startTimer();\r\n }\r\n }\r\n\r\n\r\n\r\n /**\r\n * start Timer\r\n */\r\n // startTimer(resume: boolean = false) {\r\n // if (!resume) {\r\n // this.startDatetime = new Date();\r\n // this.lastDateTime = new Date();\r\n // this.workoutTimerService.reset();\r\n // this.workoutTimerService.resume();\r\n // } else {\r\n // this.startDatetime = new Date();\r\n // this.lastDateTime = new Date();\r\n // this.workoutTimerService.pause();\r\n // this.lastDateTime.setSeconds(this.lastDateTime.getSeconds() + this.timer);\r\n // }\r\n // }\r\n startTimer(){\r\n if(this.workoutMode == WorkoutMode.Start) {\r\n this.workoutTimerService.reset();\r\n this.workoutTimerService.start();\r\n } else {\r\n if(this.workoutMode == WorkoutMode.Pause) {\r\n this.workoutTimerService.resume();\r\n } else {\r\n this.pause();\r\n }\r\n }\r\n }\r\n pause(){\r\n let defaultWorkout: Workout;\r\n if(this.workout){\r\n defaultWorkout = {\r\n id: this.workout.id,\r\n planId: this.workout.planId,\r\n dayId: this.workout.dayId,\r\n patientId: this.workout.patientId,\r\n status: WorkoutStatus.Started,\r\n startDateTime: new Date(),\r\n endDateTime: new Date(),\r\n };\r\n }\r\n this.workoutService.pauseWorkout(defaultWorkout);\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n {{ Item.name }}\r\n
\r\n
\r\n {{ Item.customName }}\r\n
\r\n \r\n
\r\n\r\n\r\n\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n {{item.name}}
\r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n \r\n \r\n \"Fitness\r\n \r\n \r\n \r\n\r\n
\r\n {{ Item.customName }}\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
Instructions
\r\n
\r\n\r\n {{ Item.instructions }}\r\n
\r\n
\r\n
\r\n
\r\n One Max Rep: \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Set{{ RepLabel }}TempoRestWeight ({{ IsPreferredUnitImperial ? 'lbs' : 'Kg' }})\r\n Used Weight ({{ IsPreferredUnitImperial ? 'lbs' : 'Kg' }})\r\n \r\n Reps
Done\r\n
\r\n {{ row.Set }}\r\n \r\n {{ row.RepsOrTime }}\r\n \r\n \r\n Max\r\n\r\n \r\n {{ row.Tempo }}\r\n \r\n {{ row.Rest }}\r\n \r\n {{ row.displayWeight }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Last time completed: {{ lastTimeCompleted }}.
\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Progression\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import {\r\n Component,\r\n Input,\r\n ChangeDetectorRef,\r\n ViewEncapsulation,\r\n ViewChild,\r\n OnInit,\r\n} from '@angular/core';\r\nimport {\r\n NbDialogRef,\r\n NbDialogService,\r\n NbThemeService,\r\n} from '@nebular/theme';\r\nimport { Subject, Subscription } from 'rxjs';\r\n\r\nimport { UsersService } from 'app/@core/backend/common/services/users.service';\r\nimport { User } from 'app/@core/interfaces/common/users';\r\nimport { Router } from '@angular/router';\r\nimport {\r\n FitnessItem,\r\n SetsBased,\r\n SettingDetailRow,\r\n WeightType,\r\n BlockType,\r\n} from 'app/@core/interfaces/common/CalorieFriend/fitnessItem';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { SafeResourceUrl } from '@angular/platform-browser';\r\nimport { ExerciseProgressData } from 'app/@core/interfaces/common/CalorieFriend/exercise-progress';\r\nimport {\r\n ExerciseLog,\r\n ExerciseLogData,\r\n} from 'app/@core/interfaces/common/CalorieFriend/exerciseLog';\r\nimport {\r\n Workout,\r\n WorkoutDetail,\r\n WorkoutDetailStatus,\r\n} from 'app/@core/interfaces/common/CalorieFriend/workout';\r\nimport { FitnessItemPresentationComponentBase } from './fitness-item-presentation-base.component';\r\nimport { WorkoutMode, WorkoutService } from 'app/@core/backend/common/services/CalorieFriend/workout.service';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { ExerciseLogService } from 'app/@core/backend/common/services/CalorieFriend/exerciseLog-service';\r\n/**\r\n * Component for Overlay presentation of Meal Item.\r\n * Inherits from the MealItemPresentationComponentBase component.\r\n */\r\n@Component({\r\n selector: 'overlay-app-fitness-item-presentation',\r\n templateUrl: './fitness-item-presentation-overlay.component.html',\r\n styleUrls: ['./fitness-item-presentation.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class OverlayFitnessItemPresentationComponent\r\n extends FitnessItemPresentationComponentBase\r\n implements OnInit {\r\n constructor(\r\n OverlayDialogService: NbDialogService,\r\n private OverlayUsersService: UsersService,\r\n private OverlayRouter: Router,\r\n private sanitizer: DomSanitizer,\r\n private OverlayExerciseProgressService: ExerciseProgressData,\r\n private exerciseLogService: ExerciseLogService,\r\n private workoutService: WorkoutService,\r\n private theme: NbThemeService,\r\n private cdRef: ChangeDetectorRef,\r\n private OverlayDialogRef: NbDialogRef,\r\n ) {\r\n super(OverlayDialogService, OverlayExerciseProgressService);\r\n }\r\n\r\n currentUser: User = null;\r\n isPatientView: boolean = false;\r\n\r\n safeYoutubeSrc: SafeResourceUrl;\r\n settingDetails: SettingDetailRow[] = [];\r\n\r\n @ViewChild('chart', { static: false })\r\n _chart: any;\r\n _chartData: ExerciseLog[] = [];\r\n\r\n graphData: any = null;\r\n graphOptions: any;\r\n\r\n lastTimeCompleted = '';\r\n\r\n dateTimeOptions = {\r\n weekday: 'long',\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n };\r\n\r\n /**\r\n * occured when skipped or completed exercise\r\n */\r\n @Input('OnNextHandler')\r\n onNextHandler: (data: {\r\n status: WorkoutDetailStatus;\r\n exLogId?: number;\r\n nextIndex?: number;\r\n }) => void;\r\n\r\n @Input('pending')\r\n pending = true;\r\n\r\n /**\r\n * @description Description of Exercise; ex. A1, A1 - Set 1\r\n */\r\n @Input('currentExercise')\r\n currentExercise: string = '';\r\n\r\n\r\n @Input('setNumber')\r\n setNumber: number = 0;\r\n /**\r\n /**\r\n * @description true if dialog is opened in workout mode\r\n */\r\n @Input('isWorkout')\r\n isWorkout: boolean = false;\r\n\r\n readonly WorkoutDetailStatus = WorkoutDetailStatus;\r\n workoutSubscription: Subscription;\r\n currentBlockLabel = '';\r\n workout: Workout;\r\n private destroy$ = new Subject();\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.workoutSubscription = this.workoutService.workout.pipe(takeUntil(this.destroy$)).subscribe((res) => {\r\n this.workout = res;\r\n });\r\n this.OverlayDialogRef.onClose.pipe(takeUntil(this.destroy$)).subscribe(() => {\r\n if (this.isWorkout) {\r\n this.workoutService.pauseWorkout().finally(() => {\r\n this.workoutSubscription?.unsubscribe();\r\n });\r\n }\r\n });\r\n this.init();\r\n }\r\n\r\n init(): void {\r\n this.pending = true;\r\n if (this.Item) {\r\n this.OverlayExerciseProgressService\r\n .getOneMaxRep(this.PatientID, this.Item.exerciceId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(\r\n (data) => {\r\n if (data) this.Item.oneRepMax = data.oneMaxRep;\r\n },\r\n () => { }\r\n );\r\n }\r\n\r\n this.currentBlockLabel = this.OrderLabel;\r\n\r\n\r\n if (!this.currentExercise) {\r\n this.currentExercise = `${this.currentBlockLabel}${this.Item.order + 1}`;\r\n }\r\n if (this.Item.youtubeUrl && this.Item.youtubeUrl != 'null') {\r\n const id: string = this.Item.youtubeUrl.split('v=')[1];\r\n this.Item.youtubeUrl = 'https://www.youtube.com/embed/' + id;\r\n }\r\n\r\n this.safeYoutubeSrc = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n this.Item.youtubeUrl\r\n );\r\n\r\n this.loadExerciceData();\r\n\r\n const loadUser = this.OverlayUsersService.getCurrentUser();\r\n loadUser.subscribe((user) => {\r\n this.currentUser = user;\r\n });\r\n\r\n this.isPatientView = this.OverlayRouter.url.includes('/PatientView/');\r\n }\r\n loadExerciceData() {\r\n this.exerciseLogService\r\n .getLastExerciseLog(this.Item.id)\r\n .pipe(\r\n finalize(() => this.pending = false),\r\n takeUntil(this.destroy$),\r\n )\r\n .subscribe((data) => {\r\n this.settingDetails = JSON.parse(this.Item.setSettings);//FitnessItemHelper.GetSetSettings(this.Item);\r\n\r\n if (data.id === 0) {\r\n this.lastTimeCompleted = 'Never';\r\n } else {\r\n const lastDetails = JSON.parse(data.snapshot);\r\n for (const detail of this.settingDetails) {\r\n const logDetail = lastDetails.find((d) => d.Set === detail.Set);\r\n if (logDetail) {\r\n detail.UsedWeight = logDetail.UsedWeight;\r\n detail.RepsDone = logDetail.RepsDone;\r\n }\r\n }\r\n this.lastTimeCompleted = new Date(data.dateTime).toLocaleDateString(\r\n undefined,\r\n this.dateTimeOptions as any\r\n );\r\n }\r\n\r\n for (const detail of this.settingDetails) {\r\n let weight = +detail.Weight;\r\n let convert: boolean = false;\r\n\r\n if (weight == 0 && this.Item.defaultWeight > 0) {\r\n weight = +this.Item.defaultWeight;\r\n convert = true; //do not convert \"advanced settings\" but do convert defaultWeight. (this is weird, to be evaluated)\r\n }\r\n\r\n let result = 0;\r\n if (this.Item.weightType === WeightType.Procent1MR) {\r\n result = this.Item.oneRepMax * (weight / 100);\r\n } else result = weight;\r\n\r\n if (this.IsPreferredUnitImperial) {\r\n result = Math.round(result * 2.20462);\r\n } else {\r\n // result *= 2.205;\r\n }\r\n\r\n // if ((this.Item.setsBased === SetsBased.TimeBased)) {\r\n // detail.RepsOrTime = (Number(detail.RepsOrTime) / 60).toString();\r\n // }\r\n\r\n\r\n detail.CalculatedWeight = result;\r\n // weight *=2.205;\r\n // if(this.IsPreferredUnitImperial)\r\n // result *=2.205;\r\n if (this.Item.weightType === WeightType.Procent1MR) {\r\n if (this.Item.oneRepMax === null || this.Item.oneRepMax === 0) {\r\n detail.displayWeight = weight.toString() + ' % 1MR';\r\n } else {\r\n detail.displayWeight = `${Math.trunc(result).toFixed(1)} (${(weight)} % 1MR)`;\r\n }\r\n } else {\r\n detail.displayWeight = result.toString();\r\n }\r\n\r\n\r\n }\r\n\r\n this.updateSettingsForCircuit();\r\n this.updateSettingsForSuperSet();\r\n\r\n setTimeout(() => {\r\n this.refreshGraph();\r\n }, 200);\r\n\r\n this.OverlayDialogRef.onBackdropClick.pipe(takeUntil(this.destroy$)).subscribe(async () => {\r\n this.OverlayDialogRef.close();\r\n\r\n /*if (await this.shouldDialogClose()) {\r\n this.OverlayDialogRef.close();\r\n }*/\r\n });\r\n });\r\n }\r\n\r\n\r\n get OrderLabel(): string {\r\n if (this.fitnessBlock.order > 0 && this.fitnessBlock.order < 100) {\r\n return (\r\n String.fromCharCode(64 + this.fitnessBlock.order)\r\n );\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n\r\n\r\n ngAfterViewInit() { }\r\n\r\n get isCompleted() {\r\n let currentItem = this.workout?.patientWorkoutDataDetails?.find((d) => d.itemId === this.Item.id);\r\n return currentItem?.status === WorkoutDetailStatus.Completed && currentItem?.isCircuitSetNumber >= this.fitnessBlock.repetitionCount;\r\n }\r\n\r\n getExerciseStatus(itemId: number, order: number) {\r\n const founded: WorkoutDetail = this.workout?.patientWorkoutDataDetails?.find((d) => d.itemId === itemId);\r\n if (founded) {\r\n return founded.status;\r\n } else {\r\n return order === this.Item.order ? this.workoutService.workoutModeToString() : 'Pending';\r\n }\r\n }\r\n\r\n getSupersetTag(item: FitnessItem) {\r\n const founded: WorkoutDetail = this.workout?.patientWorkoutDataDetails?.find((d) => d.itemId === item.id);\r\n if (item.setsBased === SetsBased.Superset) {\r\n return `${item.sets}/${founded ? founded.isSupersetNumber : 0}`;\r\n }\r\n return null;\r\n\r\n }\r\n\r\n\r\n isItemCompleted(item: WorkoutDetail): boolean {\r\n const itemData = this.fitnessBlock.items.find((i) => i.id === item.itemId);\r\n return item.status === WorkoutDetailStatus.Completed && (item.isCircuitSetNumber >= this.fitnessBlock.repetitionCount || this.fitnessBlock.blockType !== BlockType.Circuit) && (item.isSupersetNumber >= itemData.sets || itemData.setsBased !== SetsBased.Superset);\r\n }\r\n\r\n getExerciseIcon(item): string {\r\n switch (this.getExerciseStatus(item.id, item.order).toLocaleLowerCase()) {\r\n case 'completed':\r\n return 'fa fa-check-double text-success'; // Font Awesome class for check mark with green color\r\n case 'skipped':\r\n return 'fa fa-forward text-warning'; // Font Awesome class for fast forward with yellow color\r\n case 'pending':\r\n return 'fa fa-hourglass-start text-primary'; // Font Awesome class for hourglass with blue color\r\n default:\r\n return 'fa fa-dumbbell text-secondary'; // Font Awesome class for exercise with grey color\r\n }\r\n }\r\n // Circuits are always 1X Reps\r\n updateSettingsForCircuit() {\r\n if (this.BlockType === BlockType.Circuit.valueOf()) {\r\n if (this.settingDetails.length > 1) {\r\n let firtsItem = this.settingDetails[0];\r\n this.settingDetails = [];\r\n this.settingDetails.push(firtsItem);\r\n this.settingDetails[0].Rest = this.fitnessBlock.circuitRest.toString();\r\n }\r\n\r\n this.fitnessBlock.items[0].imageUrl;\r\n }\r\n }\r\n\r\n updateSettingsForSuperSet() {\r\n\r\n //if (this.setNumber == 0) return;\r\n\r\n if (this.IsSuperSetWithNext || this.IsSuperSet) {\r\n if (this.settingDetails.length > 1) {\r\n let firtsItem = this.settingDetails[0];\r\n this.settingDetails = [];\r\n this.settingDetails.push(firtsItem);\r\n this.settingDetails[0].Rest = this.GetSupersetMaster?.defaultRest.toString();\r\n\r\n }\r\n\r\n this.fitnessBlock.items[0].imageUrl;\r\n }\r\n }\r\n\r\n\r\n public getVideoUrl(source: string): string {\r\n return source + \"#t=0.001\"\r\n }\r\n\r\n\r\n forceChartRefresh() {\r\n return;\r\n }\r\n\r\n async onClose() {\r\n this.OverlayDialogRef.close();\r\n return;\r\n }\r\n\r\n onStopWorkout() {\r\n this.OverlayDialogRef.close(WorkoutMode.Complete);\r\n this.workoutService.redoWorkout();\r\n }\r\n\r\n @Input('ShouldDialogClose')\r\n async shouldDialogClose(): Promise {\r\n return true;\r\n }\r\n get RepLabel() {\r\n if (this.Item.setsBased === SetsBased.RepsBased || this.Item.setsBased === SetsBased.Superset) return 'Reps';\r\n if (this.Item.setsBased === SetsBased.MaxRepBased) return 'Max Reps';\r\n else return 'Time (min.)';\r\n }\r\n\r\n get IsMaxRep(): boolean {\r\n if (this.Item.setsBased === SetsBased.MaxRepBased) return true;\r\n return false;\r\n }\r\n\r\n\r\n refreshGraph() {\r\n // graph data\r\n this.exerciseLogService\r\n .getExerciseLogsListByExerciseId(this.PatientID, this.Item.exerciceId)\r\n .then((data: ExerciseLog[]) => {\r\n this._chartData = data.sort((a, b) => new Date(b.dateTime).getTime() - new Date(a.dateTime).getTime()).slice(0, 10).reverse();\r\n this.theme.getJsTheme().subscribe((config) => {\r\n const colors = config.variables;\r\n const chartjs: any = config.variables.chartjs;\r\n\r\n const labels = this._chartData.map((b) =>\r\n new Date(b.dateTime).toLocaleDateString('en', {\r\n month: 'short',\r\n day: 'numeric',\r\n year: 'numeric',\r\n })\r\n );\r\n const valuesFirstSetWeight = this._chartData.map((b) => b.firstSetWeight);\r\n const valuesFirstRepDone = this._chartData.map((b) => JSON.parse(b.snapshot)?.[0]?.RepsDone);\r\n this.graphData = {\r\n labels: labels,\r\n datasets: [\r\n {\r\n data: valuesFirstSetWeight,\r\n label: 'First Set Weight',\r\n fill: false,\r\n backgroundColor: '#3498db',\r\n borderColor: '#3498db',\r\n borderWidth: 1,\r\n },\r\n {\r\n data: valuesFirstRepDone,\r\n label: 'First Rep Done',\r\n fill: false,\r\n backgroundColor: '#e74c3c',\r\n borderColor: '#e74c3c',\r\n borderWidth: 1,\r\n }\r\n ],\r\n };\r\n\r\n this.graphOptions = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n animation: {\r\n duration: 0,\r\n onComplete: () => {\r\n console.log('completed', this._chart.canvas);\r\n },\r\n },\r\n scales: {\r\n xAxes: [\r\n {\r\n gridLines: {\r\n display: false,\r\n color: chartjs.axisLineColor,\r\n },\r\n ticks: {\r\n fontColor: chartjs.textColor,\r\n },\r\n },\r\n ],\r\n yAxes: [\r\n {\r\n gridLines: {\r\n display: false,\r\n color: chartjs.axisLineColor,\r\n },\r\n ticks: {\r\n fontColor: chartjs.textColor,\r\n },\r\n },\r\n ],\r\n },\r\n legend: {\r\n labels: {\r\n fontColor: chartjs.textColor,\r\n usePointStyle: true,\r\n pointStyle: 'circle',\r\n lineWidth: 0,\r\n },\r\n position: 'bottom',\r\n },\r\n };\r\n\r\n this.forceChartRefresh();\r\n });\r\n });\r\n }\r\n\r\n async onNext(status: WorkoutDetailStatus, exLogId?: number) {\r\n this.pending = true;\r\n if (this.onNextHandler && this.isWorkout) {\r\n await this.onNextHandler({ status, exLogId, nextIndex: -1 });\r\n this.OverlayDialogRef.close();\r\n }\r\n this.pending = false;\r\n }\r\n\r\n async onGoToIndex(status: WorkoutDetailStatus, exLogId?: number, index?: number) {\r\n this.pending = true;\r\n if (this.onNextHandler && this.isWorkout) await this.onNextHandler({ status, exLogId, nextIndex: index });\r\n else {\r\n this.Item = this.fitnessBlock.items[index];\r\n this.OverlayItem = this.Item;\r\n this.init();\r\n }\r\n this.pending = false;\r\n }\r\n\r\n async saveExerciseLog() {\r\n this.pending = true;\r\n const exLog: any = {\r\n patientID: this.PatientID,\r\n fitnessItemID: this.Item.id,\r\n exerciceId: this.Item.exerciceId,\r\n snapshot: JSON.stringify(this.settingDetails),\r\n firstSetWeight: +this.settingDetails[0]?.UsedWeight,\r\n firstRepsDone: +this.settingDetails[0]?.RepsDone,\r\n };\r\n\r\n await this.exerciseLogService.create(exLog).toPromise();\r\n // refresh graph\r\n this.refreshGraph();\r\n\r\n this.loadExerciceData();\r\n\r\n const data = await this.exerciseLogService\r\n .getLastExerciseLog(this.Item.id)\r\n .toPromise();\r\n\r\n if (data.id === 0) {\r\n this.lastTimeCompleted = 'Never';\r\n } else {\r\n this.lastTimeCompleted = new Date(data.dateTime).toLocaleDateString(\r\n undefined,\r\n this.dateTimeOptions as any\r\n );\r\n }\r\n\r\n const exProgress: any = {\r\n patientID: this.PatientID,\r\n exerciceId: this.Item.exerciceId,\r\n oneMaxRep: this.Item.oneRepMax,\r\n firstSetWeight: +this.settingDetails[0]?.UsedWeight,\r\n firstRepDone: +this.settingDetails[0]?.RepsDone,\r\n };\r\n\r\n await this.OverlayExerciseProgressService.changeOneMaxRepByPatient(\r\n exProgress\r\n ).toPromise();\r\n\r\n await this.onNext(WorkoutDetailStatus.Completed, data.id);\r\n }\r\n}\r\n","
\r\n \r\n \r\n Redo Workout?\r\n \r\n \r\n \r\n End workout\r\n \r\n \r\n \r\n
Start Workout
\r\n
Completed
\r\n \r\n \r\n
\r\n {{workoutMode == WorkoutMode.Pause? 'Start': 'Pause'}} Workout
\r\n {{ currentExercise }} - {{ timeStringDuration }}\r\n
\r\n \r\n
\r\n\r\n\r\n \r\n \r\n
\r\n Completed!\r\n
\r\n
\r\n\r\n Workout is completed! \r\n\r\n \r\n
\r\n \r\n Ok\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import {\r\n Workout,\r\n WorkoutDetail,\r\n WorkoutDetailStatus,\r\n WorkoutStatus,\r\n} from 'app/@core/interfaces/common/CalorieFriend/workout';\r\nimport {\r\n WorkoutMode,\r\n WorkoutService,\r\n} from 'app/@core/backend/common/services/CalorieFriend/workout.service';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\nimport { FitnessPlanDay } from 'app/@core/interfaces/common/CalorieFriend/plan-day';\r\nimport { OverlayFitnessItemPresentationComponent } from './../FitnessItemPresentation/fitness-item-presentation-overlay.component';\r\nimport { NbDialogService, NbDialogRef } from '@nebular/theme';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { BlockType, FitnessBlock, FitnessItem, FitnessItemHelper, SetsBased } from 'app/@core/interfaces/common/CalorieFriend/fitnessItem';\r\nimport { Utility } from 'app/@core/utils/utility';\r\nimport { WorkoutTimerService } from 'app/@core/backend/common/services/CalorieFriend/workout-timmer.service';\r\nimport * as moment from 'moment';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-fitness-workout',\r\n templateUrl: './fitness-workout.component.html',\r\n styleUrls: ['./fitness-workout.component.scss'],\r\n})\r\nexport class FitnessWorkoutComponent implements OnInit, OnDestroy {\r\n constructor(\r\n private dialogService: NbDialogService,\r\n public workoutService: WorkoutService,\r\n private workoutTimer: WorkoutTimerService,\r\n ) { }\r\n\r\n @Input('PlanDay')\r\n PlanDay!: FitnessPlanDay;\r\n @Input('PatientID')\r\n PatientID!: number;\r\n @Input('IsPreferredUnitImperial')\r\n IsPreferredUnitImperial: boolean = false;\r\n @ViewChild('completeDlg')\r\n completeDlg: TemplateRef;\r\n\r\n workoutMode: WorkoutMode;\r\n workout: Workout;\r\n\r\n _workoutSubscription: Subscription;\r\n _workoutModeSubscription: Subscription;\r\n _workoutStartExcerciseSubscription: Subscription;\r\n private destroy$ = new Subject();\r\n\r\n pending = false;\r\n\r\n /**\r\n * @description Current Exercise\r\n */\r\n blockIndex: number = 0;\r\n itemIndex: number = 0;\r\n startDateTime: Date;\r\n setNo: number = 1;\r\n circuitSetNoValue: number = 1;\r\n time = 0;\r\n\r\n get currentExercise() {\r\n return `${String.fromCharCode(0x41 + this.blockIndex)}${this.itemIndex + 1\r\n }`;\r\n }\r\n\r\n get currentSetNo(): number {\r\n const itemsId = this.PlanDay.blocks[this.blockIndex].items.filter(item => item.setsBased !== SetsBased.Superset).map(item => item.id);\r\n const setNos = this.workout?.patientWorkoutDataDetails?.filter(detail => itemsId.includes(detail.itemId)).map(detail => detail.isCircuitSetNumber);\r\n return setNos?.length ? Math.max(...setNos) : 1;\r\n }\r\n\r\n get workoutDuration() {\r\n if (!this.workout) return 0;\r\n return Utility.getTimeDiffDisplayString(\r\n this.workout?.startDateTime,\r\n this.workout?.endDateTime,\r\n true\r\n );\r\n }\r\n public timeStringDuration;\r\n\r\n // get timeStringDuration() {\r\n // if (!this.workout) return 0;\r\n // return Utility.getTimerStringFromDates(\r\n // this.workout?.startDateTime,\r\n // this.workout?.endDateTime\r\n // );\r\n // }\r\n\r\n /**\r\n * @description dialog refs\r\n */\r\n itemDialog: NbDialogRef;\r\n\r\n ngOnInit(): void {\r\n this.pending = true;\r\n this.workoutTimer.workoutTime.pipe(takeUntil(this.destroy$)).subscribe(res => {\r\n this.timeStringDuration = this.workoutTimer.formatTime(res);\r\n });\r\n this._workoutModeSubscription = this.workoutTimer.workoutMode.pipe(takeUntil(this.destroy$)).subscribe(\r\n (mode: WorkoutMode) => {\r\n if (this.workoutService.dayId.value != this.PlanDay.id) return;\r\n this.workoutMode = mode;\r\n }\r\n );\r\n this.workoutService.startExcercise.pipe(takeUntil(this.destroy$)).subscribe((ev) => {\r\n if(ev) {\r\n this.workoutTimer.reset();\r\n if(!this.pending) this.gotToBLockExcercise(ev.excerciseId, ev.blockId, (this.workout && this.workout.status !== WorkoutStatus.None && !this.isCompleted()));\r\n }\r\n });\r\n\r\n this._workoutSubscription = this.workoutService.workout.subscribe(\r\n async (workout) => {\r\n /**\r\n * Ignore if not the current day.\r\n * Ignore if currently working out.\r\n */\r\n if (this.workoutService.dayId.value != this.PlanDay.id) return;\r\n\r\n this.pending = false;\r\n if(workout?.workoutTime) {\r\n this.time = workout.workoutTime;\r\n this.workoutTimer.setTime(this.time);\r\n } else {\r\n // get time difference between two dates in seconds using moment.js\r\n this.time = moment(workout?.startDateTime).diff(moment(this.workout?.endDateTime), 'seconds');\r\n }\r\n if(!this.workout) {\r\n this.workout = workout;\r\n const result = this.getFirstIncomplete();\r\n if(result) [this.blockIndex, this.itemIndex, this.setNo, this.circuitSetNoValue] = result;\r\n }\r\n this.workout = workout;\r\n }\r\n );\r\n }\r\n\r\n blockCircuitSetNo(blockIndex): number {\r\n const itemsId = this.PlanDay.blocks[blockIndex].items.map(item => item.id);\r\n const circuitSetNo = this.workout?.patientWorkoutDataDetails?.filter(detail => itemsId.includes(detail.itemId)).map(detail => detail.isCircuitSetNumber);\r\n return circuitSetNo?.length ? Math.max(...circuitSetNo) :1;\r\n}\r\n\r\n ngOnDestroy(): void {\r\n this._workoutSubscription?.unsubscribe();\r\n this._workoutModeSubscription?.unsubscribe();\r\n this._workoutStartExcerciseSubscription?.unsubscribe();\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n /**\r\n * @description object for WorkoutMode Enum\r\n */\r\n readonly WorkoutMode = WorkoutMode;\r\n\r\n /**\r\n * @description called when start button clicked\r\n */\r\n onStartWorkoutClicked() {\r\n if (this.workoutMode == WorkoutMode.Pause) {\r\n this.startWorkout();\r\n\r\n } else if (this.workoutMode == WorkoutMode.Workout) {\r\n this.pause();\r\n }\r\n else {\r\n const confirmDlg = this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: {\r\n Title: `Start Workout`,\r\n Message: $localize`:@@StartWorkoutConfirmationMessage:Are you ready to start this workout now?`,\r\n },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result){\r\n this.blockIndex = 0;\r\n this.itemIndex = 0;\r\n this.startWorkout();\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n }\r\n /**\r\n * @description Redo workout\r\n */\r\n redoWorkout(): void {\r\n this.workoutService.redoWorkout();\r\n }\r\n /**\r\n * @description start workout plan\r\n */\r\n startWorkout(): void {\r\n if (this.isCompleted()) {\r\n this.onCompleted();\r\n return;\r\n }\r\n\r\n const defaultWorkout: Workout = {\r\n id: this.workout?.id,\r\n planId: this.PlanDay.planID,\r\n dayId: this.PlanDay.id,\r\n patientId: this.PatientID,\r\n status: WorkoutStatus.Started,\r\n startDateTime: new Date(),\r\n endDateTime: new Date(),\r\n };\r\n this.workoutService.startWorkout(defaultWorkout);\r\n\r\n this.startExercise();\r\n }\r\n pause() {\r\n const defaultWorkout: Workout = {\r\n id: this.workout?.id,\r\n planId: this.PlanDay.planID,\r\n dayId: this.PlanDay.id,\r\n patientId: this.PatientID,\r\n status: WorkoutStatus.Started,\r\n workoutTime: this.workoutTimer.workoutTime.value,\r\n startDateTime: undefined,\r\n endDateTime: undefined\r\n };\r\n this.workoutService.pauseWorkout(defaultWorkout);\r\n }\r\n getCurrentExerciseLabel(){\r\n let block = this.PlanDay.blocks[this.blockIndex];\r\n let item = block.items[this.itemIndex];\r\n let currentExercise = `${String.fromCharCode(0x41 + this.blockIndex)}${this.itemIndex + 1\r\n }`;\r\n if (block.blockType == BlockType.Circuit) {\r\n currentExercise = `${currentExercise} - Set ${this.currentSetNo}`;\r\n }\r\n else if(FitnessItemHelper.IsSuperSet(item) || FitnessItemHelper.IsSuperSetWithNext(item, block)){\r\n currentExercise = `${currentExercise} - SuperSet ${this.setNo}`;\r\n }\r\n return currentExercise;\r\n }\r\n getTimeToRest(){\r\n let block = this.PlanDay.blocks[this.blockIndex];\r\n let item = block.items[this.itemIndex];\r\n if(block.blockType == BlockType.Block && FitnessItemHelper.IsSuperSet(item) && !FitnessItemHelper.IsSuperSetWithNext(item, block)){\r\n return FitnessItemHelper.GetSupersetMaster(item, block)?.defaultRest || -1;\r\n }\r\n if(block.blockType == BlockType.Circuit){\r\n //if last item of circuit then restEnd\r\n if(this.itemIndex == block.items.length - 1){\r\n return block.restEnd;\r\n }\r\n return block.circuitRest;\r\n }\r\n return -1; // not show rest at all\r\n }\r\n\r\n gotToBLockExcercise(itemId: number, blockId, isWorkout = true){\r\n let blockIndex = this.PlanDay.blocks.findIndex(x => x.id === blockId);\r\n if(blockIndex == -1) return;\r\n let itemIndex = this.PlanDay.blocks[blockIndex]?.items.findIndex(x => x.id === itemId);\r\n this.blockIndex = blockIndex;\r\n this.itemIndex = itemIndex;\r\n this.setNo = this.currentSetNo;\r\n this.workoutTimer.reset();\r\n this.startExercise(-1, isWorkout);\r\n }\r\n startExercise(timeToRest: number = -1, isWorkout = true) {\r\n let block = this.PlanDay.blocks[this.blockIndex];\r\n if(block.items.length == 0) this.blockIndex += 1;\r\n block = this.PlanDay.blocks[this.blockIndex];\r\n const currentExercise = this.getCurrentExerciseLabel();\r\n\r\n this.startDateTime = new Date();\r\n\r\n const nextEventHandler = async (ev: {\r\n status: WorkoutDetailStatus;\r\n exLogId?: number;\r\n nextIndex?: number;\r\n }) => {\r\n this.itemDialog.componentRef.instance.pending = true;\r\n const { status, exLogId, nextIndex } = ev;\r\n\r\n let block = this.PlanDay.blocks[this.blockIndex];\r\n let item = block?.items[this.itemIndex];\r\n\r\n let newDetail: WorkoutDetail = {\r\n blockId: block.id,\r\n exerciseId: item.exerciceId,\r\n itemId: item.id,\r\n startDateTime: this.startDateTime,\r\n endDateTime: new Date(),\r\n patientWorkoutDataId: this.workout.id,\r\n status: status,\r\n exerciseLogId: exLogId,\r\n isCircuitSetNumber: this.circuitSetNoValue,\r\n isSupersetNumber: this.setNo,\r\n exerciseName: this.getCurrentExerciseLabel(),\r\n customName: item.isCustom || item.isQuickAdd ? item.name : null,\r\n };\r\n\r\n await this.workoutService.updateWorkout(this.workout.id, {\r\n endDateTime: new Date(),\r\n workoutTime: this.workoutTimer.workoutTime.value\r\n });\r\n if(nextIndex == -1) {\r\n const newDetails = await this.workoutService.addDetail(newDetail);\r\n let patientWorkoutDataDetails = this.workout?.patientWorkoutDataDetails?.filter((d) => {\r\n return d.itemId !== newDetail.itemId;\r\n });\r\n patientWorkoutDataDetails.push(newDetail);\r\n this.workout = {\r\n ...this.workout,\r\n patientWorkoutDataDetails,\r\n };\r\n this.workoutService.workout.next(this.workout);\r\n }\r\n this.workoutTimer.reset();\r\n this.gotoNextExercise(ev.nextIndex);\r\n };\r\n\r\n this.itemDialog = this.dialogService.open(\r\n OverlayFitnessItemPresentationComponent,\r\n {\r\n hasScroll: false,\r\n closeOnBackdropClick: false,\r\n context: {\r\n OverlayItem: block.items[this.itemIndex],\r\n PatientID: this.PatientID,\r\n fitnessBlock:block,\r\n BlockType: block.blockType,\r\n CircuitRest: timeToRest,\r\n IsPreferredUnitImperial: this.IsPreferredUnitImperial,\r\n currentExercise: currentExercise,\r\n setNumber: this.setNo,\r\n isWorkout,\r\n onNextHandler: nextEventHandler,\r\n shouldDialogClose: async () => {\r\n const confirmDlg = this.dialogService.open(\r\n ConfirmMessageDialogComponent,\r\n {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: {\r\n Title: $localize`:@@Warning:Warning`,\r\n Message:\r\n 'Do you want to stop workout? You can resume workout anytime until end of day today.',\r\n },\r\n }\r\n );\r\n return confirmDlg.onClose.toPromise();\r\n },\r\n },\r\n dialogClass: 'overlay-meal-item-dialog',\r\n }\r\n );\r\n }\r\n\r\n getExerciseFromIndex = (blockIndex: number, itemIndex: number, setNo: number) => {\r\n let blocks = this.PlanDay.blocks;\r\n let circuitSetNoValue = this.blockCircuitSetNo(blockIndex);\r\n let block = blocks[blockIndex];\r\n let detail = this.workout?.patientWorkoutDataDetails?.find(detail => detail.itemId === block.items[itemIndex].id);\r\n if(!detail) return [blockIndex, itemIndex, setNo, circuitSetNoValue];\r\n return [blockIndex, itemIndex, detail.isSupersetNumber < block.items[itemIndex].sets? detail.isSupersetNumber + 1: detail.isSupersetNumber, circuitSetNoValue];\r\n };\r\n\r\n\r\n\r\n// Returns the indices of the first incomplete exercise\r\ngetFirstIncomplete(): [number, number, number, number] | null {\r\n const blocks = this.PlanDay.blocks;\r\n const patientWorkoutDataDetails: WorkoutDetail[] = this.workout?.patientWorkoutDataDetails;\r\n let blockIndex = 0;\r\n let itemIndex = 0;\r\n let setNo = 1;\r\n let circuitSetNoValue = 1;\r\n\r\n while (blockIndex < blocks.length) {\r\n const block = blocks[blockIndex];\r\n const item = this.findItemNotInDetails(block, patientWorkoutDataDetails);\r\n const detailsOfCurrentBlock = this.getDetailsOfCurrentBlock(block, patientWorkoutDataDetails);\r\n const circuitSetNo = this.blockCircuitSetNo(blockIndex);\r\n if(FitnessItemHelper.IsSuperSet(item)) {\r\n console.log(\"Is SuperSet\");\r\n itemIndex = block.items.indexOf(item);\r\n const superSetDetails = detailsOfCurrentBlock.find(detail => detail.itemId === item.id);\r\n if(!superSetDetails) {\r\n return [blockIndex, itemIndex, 1, circuitSetNo];\r\n }\r\n if(superSetDetails.isSupersetNumber < item.sets) {\r\n console.log(\"Is Circuit Set Number\", superSetDetails.isSupersetNumber, item.sets);\r\n return [blockIndex, itemIndex, superSetDetails.isSupersetNumber + 1, circuitSetNo];\r\n } else if(superSetDetails.isCircuitSetNumber != circuitSetNo) {\r\n return [blockIndex, itemIndex, 1, superSetDetails.isCircuitSetNumber];\r\n }\r\n }\r\n if (item) {\r\n itemIndex = block.items.indexOf(item);\r\n return [blockIndex, itemIndex, 1, circuitSetNo];\r\n }\r\n\r\n if (block.blockType === BlockType.Circuit) {\r\n const result = this.handleCircuit(block, detailsOfCurrentBlock);\r\n if (result !== null) {\r\n [itemIndex, setNo, circuitSetNoValue] = result;\r\n return [blockIndex, itemIndex, setNo, circuitSetNoValue];\r\n }\r\n }\r\n\r\n blockIndex++;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfindItemNotInDetails(block: FitnessBlock, patientWorkoutDataDetails: WorkoutDetail[]): FitnessItem | undefined {\r\n return block.items.find(item => {\r\n const detail = patientWorkoutDataDetails?.find(detail => detail.itemId === item.id);\r\n const blockIndex = this.PlanDay.blocks.findIndex(x => x.id == block.id);\r\n const blockCircuitSetNo = this.blockCircuitSetNo(blockIndex);\r\n if (!detail || detail.isCircuitSetNumber != blockCircuitSetNo) {\r\n return true; // Item not found in patientWorkoutDataDetails\r\n } else if (FitnessItemHelper.IsSuperSet(item) && (detail.isSupersetNumber < item.sets || detail.isCircuitSetNumber != blockCircuitSetNo)) {\r\n return true; // Incomplete superset workout\r\n }\r\n return false;\r\n });\r\n}\r\n\r\ngetDetailsOfCurrentBlock(block, patientWorkoutDataDetails: WorkoutDetail[]) : WorkoutDetail[]{\r\n return patientWorkoutDataDetails?.filter(detail => detail.blockId === block.id);\r\n}\r\n\r\n\r\nhandleCircuit(block: FitnessBlock, detailsOfCurrentBlock: WorkoutDetail[]) {\r\n const isCircuitSetNumbers = detailsOfCurrentBlock.map(detail => detail.isCircuitSetNumber);\r\n const circuitSetNumber = (isCircuitSetNumbers.length > 0 ? Math.max(...isCircuitSetNumbers): 1) || 1;\r\n const leftDetail = detailsOfCurrentBlock?.find(detail => detail.isCircuitSetNumber !== circuitSetNumber);\r\n if (leftDetail) {\r\n const itemIndex = block.items.findIndex(x => x.id == leftDetail.itemId);\r\n return [itemIndex, 1, circuitSetNumber];\r\n } else if(circuitSetNumber < block.repetitionCount) {\r\n return [0, 1, circuitSetNumber + 1];\r\n }\r\n return null;\r\n}\r\n\r\ngetNextExerciseForSuperset(blockIndex: number, itemIndex: number, setNo: number): [number, number, number, number] {\r\n const blocks = this.PlanDay.blocks;\r\n let block = blocks[blockIndex];\r\n let item = block.items[itemIndex];\r\n let initialItemIndex = itemIndex;\r\n let initialItem = item;\r\n let blockCircuitSetNo = this.blockCircuitSetNo(blockIndex);\r\n blockCircuitSetNo = blockCircuitSetNo < this.circuitSetNoValue? this.circuitSetNoValue: blockCircuitSetNo;\r\n let itemDetail = this.workout?.patientWorkoutDataDetails?.find(detail => detail.itemId === item.id);\r\n setNo = itemDetail.isSupersetNumber;\r\n let isBreak = false;\r\n while (itemIndex < block.items.length) {\r\n if (FitnessItemHelper.IsSuperSetWithNext(item, block)) {\r\n itemIndex++;\r\n item = block.items[itemIndex];\r\n let currItemDetail = this.workout?.patientWorkoutDataDetails?.find(detail => detail.itemId === item.id);\r\n let currentCompleted = this.checkSuperSetCompletedForWorkout(currItemDetail, item);\r\n if (!currentCompleted) {\r\n console.log(\"not Completed superset\");\r\n return [blockIndex, itemIndex, currItemDetail? currItemDetail.isSupersetNumber + 1: 1, blockCircuitSetNo];\r\n } else if(currItemDetail?.isCircuitSetNumber != blockCircuitSetNo) {\r\n console.log(\"Completed superset but not circuit set number\")\r\n return [blockIndex, itemIndex, 1, blockCircuitSetNo];\r\n }\r\n } else {\r\n console.log(\"Break and get next exercise\");\r\n isBreak = true;\r\n break;\r\n }\r\n }\r\n const master = FitnessItemHelper.GetSupersetMaster(initialItem, block);\r\n itemDetail = this.workout?.patientWorkoutDataDetails?.find(detail => detail.itemId === initialItem.id);\r\n setNo = itemDetail.isSupersetNumber;\r\n if (master) {\r\n const masterDetail = this.workout?.patientWorkoutDataDetails?.find(detail => detail.itemId === master.id);\r\n const masterIndex = block.items.findIndex(x => x.id == master.id);\r\n console.log(\"Master Index\", masterIndex, masterDetail?.isSupersetNumber, setNo);\r\n if(masterDetail?.isSupersetNumber >= setNo) {\r\n console.log(\"Here\")\r\n return this.getFirstIncomplete();\r\n }\r\n if (masterDetail) {\r\n return [blockIndex, masterIndex, masterDetail.isSupersetNumber + 1, blockCircuitSetNo];\r\n } else {\r\n return [blockIndex, masterIndex, 1, blockCircuitSetNo];\r\n }\r\n }\r\n if (initialItem.sets > setNo && itemDetail.isCircuitSetNumber === blockCircuitSetNo) {\r\n return [blockIndex, initialItemIndex, setNo + 1, blockCircuitSetNo];\r\n }\r\n return this.getFirstIncomplete();\r\n}\r\n gotoNextExercise(index:number = -1) {\r\n if (this.workoutMode != WorkoutMode.Workout)\r\n this.workoutService.startWorkout();\r\n if (this.isCompleted() && index==-1) {\r\n this.onCompleted();\r\n return;\r\n }\r\n\r\n const timeToRest = this.getTimeToRest();\r\n const currentItem = this.PlanDay.blocks[this.blockIndex].items[this.itemIndex];\r\n // TODO: Handle index - 1 checks first\r\n if(FitnessItemHelper.IsSuperSet(currentItem) && index === -1) {\r\n [this.blockIndex, this.itemIndex, this.setNo, this.circuitSetNoValue] = this.getNextExerciseForSuperset(this.blockIndex, this.itemIndex, this.setNo);\r\n } else {\r\n [this.blockIndex, this.itemIndex, this.setNo, this.circuitSetNoValue] = index > -1? this.getExerciseFromIndex(this.blockIndex,\r\n index,\r\n this.setNo) : this.getFirstIncomplete();\r\n }\r\n if (this.isCompleted() && index == -1) {\r\n this.onCompleted();\r\n return;\r\n }\r\n\r\n /**\r\n * Restart dialog, workout mode doesn't change\r\n */\r\n this.itemDialog.close(WorkoutMode.Workout);\r\n this.startExercise(timeToRest);\r\n }\r\n\r\n isCompleted() {\r\n const blocks = this.PlanDay.blocks;\r\n const details = this.workout?.patientWorkoutDataDetails;\r\n if(!details) return false;\r\n return blocks.every((block) =>\r\n block.items.every((item) => details.some(detail => detail.itemId === item.id &&\r\n this.checkBlockCircuitCompletedForWorkout(detail, block) && this.checkSuperSetCompletedForWorkout(detail, item)\r\n )\r\n )\r\n );\r\n }\r\n\r\n checkSuperSetCompletedForWorkout(detail: WorkoutDetail, item: FitnessItem) {\r\n if(FitnessItemHelper.IsSuperSet(item)){\r\n return detail?.isSupersetNumber + 1 >= item.sets;\r\n }\r\n return true;\r\n }\r\n\r\n checkBlockCircuitCompletedForWorkout(detail: WorkoutDetail, block: FitnessBlock) {\r\n if(block.blockType === BlockType.Circuit) {\r\n return detail.isCircuitSetNumber === block.repetitionCount;\r\n }\r\n return true;\r\n }\r\n\r\n onCompleted() {\r\n this.dialogService.open(this.completeDlg).onClose.pipe(takeUntil(this.destroy$)).subscribe(async () => {\r\n await this.workoutService.completeWorkout();\r\n this.itemDialog?.close(WorkoutMode.Complete);\r\n });\r\n }\r\n\r\n async stopWorkout() {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: {\r\n Title: $localize`:@@Warning:Warning`,\r\n Message: 'Would you like to override this workout as Completed?',\r\n },\r\n })\r\n .onClose.pipe(takeUntil(this.destroy$)).subscribe(async (confirmed: boolean) => {\r\n if (!confirmed) return;\r\n await this.workoutService.completeWorkout();\r\n });\r\n }\r\n}\r\n","\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n Day\r\n
    \r\n Day Name\r\n
    \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n\r\n \r\n
    \r\n
  • \r\n Assigned week days\r\n
  • \r\n
  • \r\n \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n \r\n
    \r\n
  • \r\n Notes\r\n
  • \r\n
  • \r\n \r\n \r\n\r\n \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n \r\n\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n OnInit,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { NbDialogService } from '@nebular/theme';\r\nimport { LocalDataSource } from 'ng2-smart-table';\r\nimport { Subject } from 'rxjs/Subject';\r\n\r\nimport { FitnessPlanDay } from '../../../../@core/interfaces/common/CalorieFriend/plan-day';\r\nimport { format } from '../../../../../support';\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { ViewChildren } from '@angular/core';\r\nimport { QueryList } from '@angular/core';\r\nimport { FormConstants } from '../../CustomUIOps';\r\nimport { isObservable } from 'rxjs';\r\nimport { CalculateBlockSummary, CopyFitnessItem } from 'app/BuildOps';\r\nimport { DayFitnessSummaryComponent } from '../FitnessSummary/fitness-summary.component';\r\nimport {\r\n BlockType,\r\n FitnessBlock,\r\n FitnessItem,\r\n} from 'app/@core/interfaces/common/CalorieFriend/fitnessItem';\r\nimport { FitnessBlockComponent } from '../FitnessBlock/fitness-block.component';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n/**\r\n * Base class for Plan Day components\r\n */\r\nexport class FitnessPlanDayComponentBase\r\n extends BaseComponentCanDeactivate\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n DayLabel = '';\r\n NewDay = $localize`:@@NewDay:New Day`;\r\n EditDay = $localize`:@@EditDay:Edit Day`;\r\n NameLabel = $localize`:@@Meal:Meal`;\r\n TimeLabel = $localize`:@@Time:Time`;\r\n BlockLabel = 'Block Name';\r\n\r\n readonly WeekDayofToday = new Date().getDay();\r\n\r\n PlanID = null;\r\n ShowSubmit = false;\r\n\r\n ParentPlanID: number = null;\r\n\r\n @Input('Day') Day: FitnessPlanDay;\r\n @Input('PlanDays') PlanDays: Array = null;\r\n @Input('PlanView') PlanView: boolean = false;\r\n @Input('HidePlanName') HidePlanName: boolean = false;\r\n\r\n @Input('PatientID') PatientID: number = -1;\r\n @Input('PatientName') PatientName: string = '';\r\n @Input('IsPreferredUnitImperial') IsPreferredUnitImperial: boolean = false;\r\n\r\n DayForm: FormGroup;\r\n BlocksSource: LocalDataSource;\r\n\r\n DayExercises = 0;\r\n DayReps = 0;\r\n DayMinutes = 0;\r\n\r\n NewDayView = false;\r\n isDirty = false;\r\n\r\n @ViewChildren('FitnessBlock')\r\n private FitnessBlocks: QueryList;\r\n @ViewChild('DayFitnessSummaryView')\r\n DayFitnessSummaryView: DayFitnessSummaryComponent = null;\r\n\r\n DayNotesWidth = '80%';\r\n DayNotesHeight = '200px';\r\n\r\n FormConstants = FormConstants;\r\n\r\n /**\r\n * Settings of the ng2 smart table of Meals\r\n */\r\n MealTableSettings = {\r\n mode: 'external',\r\n actions: {\r\n position: 'right',\r\n add: false,\r\n },\r\n edit: {\r\n editButtonContent:\r\n '',\r\n },\r\n delete: {\r\n deleteButtonContent:\r\n '',\r\n },\r\n columns: {\r\n name: { title: this.NameLabel, type: 'string', filter: false },\r\n time: { title: this.TimeLabel, type: 'string', filter: false },\r\n },\r\n };\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private fb: FormBuilder,\r\n private dialogService: NbDialogService,\r\n private chdetRef: ChangeDetectorRef\r\n ) {\r\n super(dialogService);\r\n }\r\n\r\n get DayName() {\r\n return this.DayForm.get('DayName');\r\n }\r\n get DayNotes() {\r\n return this.DayForm.get('DayNotes');\r\n }\r\n get assignWeekDays() {\r\n return this.DayForm.get('assignWeekDays');\r\n }\r\n\r\n get IsDirty() {\r\n let childrenDirty = false;\r\n this.FitnessBlocks.forEach(\r\n (c) => (childrenDirty = childrenDirty || c.IsDirty)\r\n );\r\n return (\r\n this.isDirty ||\r\n childrenDirty ||\r\n (this.DayFitnessSummaryView != null && this.DayFitnessSummaryView.IsDirty)\r\n );\r\n }\r\n\r\n resetDirty() {\r\n super.resetDirty();\r\n this.DayFitnessSummaryView.resetDirty();\r\n this.FitnessBlocks.forEach((c) => c.resetDirty());\r\n }\r\n\r\n /**\r\n * Initializes the component.\r\n * - Initializes the Day form.\r\n * - Gets the Plan ID from the URL\r\n * - Initalizes the Meals data source\r\n */\r\n ngOnInit(): void {\r\n // this.MealsOrdered();\r\n this.InitDayForm();\r\n\r\n if (!this.Day) {\r\n this.Day = {\r\n id: null,\r\n blocks: new Array(),\r\n name: '',\r\n planID: this.ParentPlanID,\r\n notes: '',\r\n dayOfWeek: [],\r\n createMeal: false,\r\n order: 1,\r\n };\r\n\r\n this.ShowSubmit = true;\r\n } else {\r\n this.DayForm.patchValue({\r\n DayName: this.Day.name,\r\n DayNotes: this.Day.notes,\r\n assignWeekDays: this.Day.dayOfWeek,\r\n });\r\n\r\n this.ShowSubmit = false;\r\n }\r\n\r\n this.BlocksSource = new LocalDataSource(this.Day.blocks); // create the source\r\n\r\n this.PlanID = this.route.snapshot.paramMap.get('PlanId');\r\n\r\n if (this.Day.id !== null && this.Day.id > 0) {\r\n this.DayLabel = this.EditDay;\r\n } else {\r\n this.DayLabel = this.NewDay;\r\n this.NewDayView = true;\r\n }\r\n\r\n if (\r\n this.Day != null &&\r\n this.Day !== undefined &&\r\n this.Day.createMeal &&\r\n this.Day.blocks.length === 0\r\n ) {\r\n this.NewBlock();\r\n }\r\n\r\n this.PrepareDayObservables();\r\n this.PrepareMetricsTotalDayMetrics();\r\n super.resetDirty();\r\n\r\n this.OrderBlocks();\r\n\r\n // this.chdetRef.detectChanges();\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n public showWarmup(block: FitnessBlock) {\r\n if (\r\n block.blockType.toString() === BlockType.Warmup.toString() ||\r\n this.Day.blocks.filter(\r\n (y) => y.blockType.toString() === BlockType.Warmup.toString()\r\n ).length === 0\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n public showCooldown(block: FitnessBlock) {\r\n if (\r\n block.blockType.toString() === BlockType.Cooldown.toString() ||\r\n this.Day.blocks.filter(\r\n (y) => y.blockType.toString() === BlockType.Cooldown.toString()\r\n ).length === 0\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * AfterViewInit implementation.\r\n * Updates the Metrics Graph for the day whenever view updates.\r\n */\r\n ngAfterViewInit() {\r\n this.updateFitnessSummaryUpdateBinding();\r\n }\r\n\r\n updateFitnessSummaryUpdateBinding() {\r\n if (this.FitnessBlocks) {\r\n this.FitnessBlocks.forEach((view) => {\r\n view.ItemUpdateNotification\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((data) => {\r\n this.PrepareDayObservables();\r\n this.DayFitnessSummaryView.PrepareBlockItems();\r\n this.PrepareMetricsTotalDayMetrics();\r\n this.OrderBlocks();\r\n\r\n this.chdetRef.detectChanges();\r\n });\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Method to initialize the Day form.\r\n */\r\n InitDayForm() {\r\n this.DayForm = this.fb.group({\r\n DayName: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(5),\r\n Validators.maxLength(50),\r\n ]),\r\n DayNotes: this.fb.control('', [Validators.maxLength(500)]),\r\n assignWeekDays: this.fb.control([]),\r\n });\r\n // this.initForm(this.DayForm);\r\n }\r\n\r\n /**\r\n * Method to open a New Meal component as a pop up window to add a new meal\r\n */\r\n NewBlock() {\r\n const orders = this.Day.blocks?.map((b) => b.order);\r\n const NewBlock: FitnessBlock = {\r\n id: -1,\r\n dayID: this.Day.id,\r\n name: format('{0}', this.BlockLabel),\r\n blockType: BlockType.Block,\r\n repetitionCount: 1,\r\n circuitRest: 0,\r\n restEnd: 0,\r\n items: null,\r\n order: Math.max(...(orders? orders: [0])) + 1,\r\n };\r\n\r\n this.UpdateBlock(NewBlock);\r\n this.OrderBlocks();\r\n this.chdetRef.detectChanges();\r\n this.updateFitnessSummaryUpdateBinding();\r\n }\r\n\r\n /**\r\n * Function to update the Day's block list with the {block} data.\r\n * @usageNotes\r\n * It is called after adding a new block or editing an existing one to update the blocks list.\r\n * @param block Meal object\r\n */\r\n UpdateBlock(block: FitnessBlock) {\r\n if (block !== null && block !== undefined) {\r\n // check if meal is in list --\r\n const found = this.Day.blocks?.find((element) => element === block);\r\n if (!found) {\r\n if(!this.Day.blocks) this.Day.blocks = [block];\r\n else this.Day.blocks.push(block);\r\n }\r\n\r\n if (this.DayFitnessSummaryView)\r\n this.DayFitnessSummaryView.PrepareBlockItems();\r\n this.PrepareMealItemsObservables(block);\r\n this.PrepareMetricsTotalDayMetrics();\r\n\r\n this.BlocksSource.refresh();\r\n\r\n this.isDirty = true;\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of 'Edit' action.\r\n * Opens the Meal component to edit an existing meal and updates the meals list.\r\n * @param $event Event object\r\n */\r\n onEdit($event) {}\r\n\r\n /**\r\n * Removes the selected meal\r\n */\r\n RemoveBlock(block) {\r\n if (block.items.length === 0) {\r\n this.removeBlockCore(block);\r\n return;\r\n }\r\n\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: { Message: 'Are you sure to delete this block?' },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result) {\r\n this.removeBlockCore(block);\r\n }\r\n });\r\n }\r\n\r\n removeBlockCore(block) {\r\n this.Day.blocks = this.Day.blocks.filter((m) => m !== block);\r\n this.BlocksSource = new LocalDataSource(this.Day.blocks); // create the source\r\n\r\n this.PrepareMetricsTotalDayMetrics();\r\n\r\n this.isDirty = true;\r\n\r\n this.OrderBlocks();\r\n }\r\n\r\n /**\r\n * Checks if Meal can be removed from the Day\r\n */\r\n get CanRemoveBlock() {\r\n if (this.Day.blocks && this.Day.blocks && this.Day.blocks.length > 1)\r\n return true;\r\n return false;\r\n }\r\n\r\n OrderUp(block) {\r\n const useFilteredBlocks = this.Day.blocks.filter(\r\n (y) =>\r\n y.blockType.toString() === BlockType.Block.toString() ||\r\n y.blockType.toString() === BlockType.Circuit.toString()\r\n );\r\n const index = useFilteredBlocks.findIndex((b) => b.order === block.order);\r\n\r\n if (index > 0) {\r\n const prevBlock = useFilteredBlocks[index - 1];\r\n const tempOrder = prevBlock.order;\r\n prevBlock.order = block.order;\r\n block.order = tempOrder;\r\n }\r\n this.OrderBlocks();\r\n }\r\n\r\n OrderDown(block) {\r\n const useFilteredBlocks = this.Day.blocks.filter(\r\n (y) =>\r\n y.blockType.toString() === BlockType.Block.toString() ||\r\n y.blockType.toString() === BlockType.Circuit.toString()\r\n );\r\n const index = useFilteredBlocks.findIndex((b) => b.order === block.order);\r\n\r\n if (index < useFilteredBlocks.length - 1) {\r\n const nextBlock = useFilteredBlocks[index + 1];\r\n const tempOrder = nextBlock.order;\r\n nextBlock.order = block.order;\r\n block.order = tempOrder;\r\n }\r\n this.OrderBlocks();\r\n }\r\n\r\n Copy(block: FitnessBlock) {\r\n FitnessBlockComponent.clipboard = block;\r\n }\r\n\r\n Paste(block: FitnessBlock) {\r\n const list: FitnessItem[] = [];\r\n\r\n if (FitnessBlockComponent.clipboard != null) {\r\n FitnessBlockComponent.clipboard.items.forEach((item) => {\r\n const newItem = CopyFitnessItem(item);\r\n newItem.fitnessBlockID = block.id;\r\n list.push(newItem);\r\n });\r\n }\r\n\r\n this.FitnessBlocks.find(\r\n (y) => y.FitnessBlock.order === block.order\r\n ).FitnessItemsView.UpdateSelectedItem(list);\r\n }\r\n\r\n HasClipboard(): boolean {\r\n return FitnessBlockComponent.clipboard != null;\r\n }\r\n\r\n Accept() {}\r\n\r\n Back() {\r\n // this.ref.close();\r\n }\r\n\r\n /**\r\n * Method to sort the meals list by its time\r\n */\r\n OrderBlocks() {\r\n const filteredBlocks = this.Day.blocks?.filter(\r\n (y) =>\r\n y.blockType.toString() !== BlockType.Warmup.toString() &&\r\n y.blockType.toString() !== BlockType.Cooldown.toString()\r\n );\r\n\r\n filteredBlocks?.sort((a, b) => (a.order > b.order ? 1 : -1));\r\n let index = 0;\r\n\r\n filteredBlocks?.forEach((a) => {\r\n a.order = ++index;\r\n });\r\n\r\n this.Day.blocks?.sort((a, b) => (a.order > b.order ? 1 : -1));\r\n\r\n if (this.FitnessBlocks) {\r\n this.FitnessBlocks.forEach((b) => b.UpdateLabel());\r\n }\r\n }\r\n\r\n /**\r\n * Method to prepare observables of the meals list by preparing observables for individual meal items\r\n */\r\n PrepareDayObservables() {\r\n // for the meal items -- configure an observable\r\n // place an observable on the object\r\n\r\n if (this.Day !== null && this.Day !== undefined) {\r\n if (\r\n this.Day.blocks !== null &&\r\n this.Day.blocks !== undefined &&\r\n this.Day.blocks.length > 0\r\n ) {\r\n for (const block of this.Day.blocks) {\r\n this.PrepareMealItemsObservables(block);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Method to prepare an observable of the {meal} object.\r\n * Creates a 'Update' sujbect to subscribe with the callback which update the Metrics Graph.\r\n * @param block Meal object\r\n */\r\n private PrepareMealItemsObservables(block) {\r\n if (block && block.items) {\r\n for (const item of block.items) {\r\n if (!isObservable(item.Update)) item.Update = new Subject();\r\n\r\n item.Update\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((data) => {\r\n this.PrepareMetricsTotalDayMetrics();\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Method to update Metrics graph data.\r\n */\r\n PrepareMetricsTotalDayMetrics() {\r\n let exercises = 0;\r\n let reps = 0;\r\n let seconds = 0;\r\n\r\n if (this.Day !== null && this.Day !== undefined) {\r\n if (\r\n this.Day.blocks !== null &&\r\n this.Day.blocks !== undefined &&\r\n this.Day.blocks.length > 0\r\n ) {\r\n for (const block of this.Day.blocks) {\r\n const blockSummary = CalculateBlockSummary(block);\r\n exercises += blockSummary.Exercises;\r\n reps += blockSummary.TotalReps;\r\n seconds += blockSummary.TotalSeconds;\r\n }\r\n\r\n this.DayExercises = Math.round(+exercises);\r\n this.DayReps = Math.round(+reps);\r\n this.DayMinutes = Math.round(+seconds / 60);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Event handler for Name field\r\n * @param $event Event object\r\n */\r\n NameChange($event) {\r\n this.Day.name = this.DayName.value;\r\n }\r\n\r\n /**\r\n * Event handler for Notes field\r\n * @param $event Event object\r\n */\r\n NotesChange($event) {\r\n this.Day.notes = $event.target.value;\r\n }\r\n\r\n onAssignWeekDaysChagne($event): void {\r\n if ($event.target) return;\r\n this.Day.dayOfWeek = $event;\r\n }\r\n\r\n ViewPlan() {}\r\n\r\n private MonitorMealChanges() {\r\n if (\r\n this.Day != null &&\r\n this.Day !== undefined &&\r\n this.Day.blocks != null &&\r\n this.Day.blocks !== undefined\r\n ) {\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Component for Plan Day View.\r\n * Inherits from the PlanDayComponentBase component.\r\n */\r\n@Component({\r\n selector: 'app-fitness-plan-day',\r\n templateUrl: './fitness-plan-day.component.html',\r\n styleUrls: [\r\n './fitness-plan-day.component.scss',\r\n '../../global.component.scss',\r\n ],\r\n})\r\nexport class FitnessPlanDayComponent extends FitnessPlanDayComponentBase {\r\n constructor(\r\n protected PlanDayRef: NbDialogService,\r\n PlanDayRoute: ActivatedRoute,\r\n PlanDayFB: FormBuilder,\r\n PlanDayDialogService: NbDialogService,\r\n cdRef: ChangeDetectorRef\r\n ) {\r\n super(PlanDayRoute, PlanDayFB, PlanDayDialogService, cdRef);\r\n }\r\n}\r\n\r\n/**\r\n * Component for Plan Day View.\r\n * Inherits from the PlanDayComponentBase component.\r\n */\r\n@Component({\r\n selector: 'app-fitness-plan-day-mobile',\r\n templateUrl: './fitness-plan-day.component.html',\r\n styleUrls: [\r\n './fitness-plan-day.component.scss',\r\n '../../global.component.scss',\r\n ],\r\n})\r\nexport class FitnessPlanDayMobieComponent extends FitnessPlanDayComponentBase {\r\n constructor(\r\n protected PlanDayMobieRef: NbDialogService,\r\n PlanDayMobieRoute: ActivatedRoute,\r\n PlanDayMobieFB: FormBuilder,\r\n PlanDayMobieDialogService: NbDialogService,\r\n cdRefMobie: ChangeDetectorRef\r\n ) {\r\n super(\r\n PlanDayMobieRoute,\r\n PlanDayMobieFB,\r\n PlanDayMobieDialogService,\r\n cdRefMobie\r\n );\r\n this.PlanView = true;\r\n this.HidePlanName = true;\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n Measure Date \r\n \r\n {{ row.measureDateTime }}\r\n \r\n \r\n\r\n \r\n \r\n Weight \r\n \r\n {{ weight(row.weight) }}\r\n \r\n \r\n\r\n \r\n \r\n Body Fat % \r\n \r\n {{ row.bodyFat }}\r\n \r\n \r\n\r\n \r\n \r\n BMI \r\n \r\n {{ row.bmi }}\r\n \r\n \r\n\r\n \r\n \r\n Source \r\n \r\n {{ row.source }}\r\n \r\n \r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n
\r\n No data found\r\n
\r\n","/**\r\n * Created by Vinicius\r\n */\r\n\r\nimport { Component, Input, OnDestroy, ViewChild } from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, MatSortable, Sort } from '@angular/material/sort';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\n\r\nimport {\r\n BiometricHistoryData,\r\n BiometricHistoryView,\r\n BiometricHistoryFilter,\r\n} from 'app/@core/interfaces/common/CalorieFriend/biometric-history';\r\n\r\n@Component({\r\n selector: 'app-patient-biometric-history-list',\r\n templateUrl: './biometric-history-list.component.html',\r\n styleUrls: ['./biometric-history-list.component.scss'],\r\n})\r\nexport class PatientBiometricHistoryListComponent implements OnDestroy {\r\n @Input() set patientId(value: number) {\r\n if (!value) return;\r\n this.paging.patientId = value;\r\n\r\n // default sort and load data initially\r\n this.sortor.sort({\r\n id: this.paging.sortBy,\r\n start: this.paging.orderBy,\r\n } as MatSortable);\r\n }\r\n @Input() set patientGuid(value: string) {\r\n if (!value?.length) return;\r\n this.paging.patientGuid = value;\r\n\r\n // default sort and load data initially\r\n this.sortor.sort({\r\n id: this.paging.sortBy,\r\n start: this.paging.orderBy,\r\n } as MatSortable);\r\n }\r\n @Input() patientIsPreferredUnitImperial: boolean = false;\r\n\r\n @ViewChild(MatPaginator, { static: true }) paginator?: MatPaginator;\r\n @ViewChild(MatSort, { static: true }) sortor?: MatSort;\r\n\r\n readonly displayedColumns = [\r\n 'measureDateTime',\r\n 'weight',\r\n 'bodyFat',\r\n 'bmi',\r\n 'source',\r\n ];\r\n totalCount: number = 0;\r\n dataList: BiometricHistoryView[] = [];\r\n\r\n private unsubscribe$ = new Subject();\r\n private paging: BiometricHistoryFilter = {\r\n sortBy: 'measureDateTime',\r\n orderBy: 'desc',\r\n };\r\n\r\n constructor(private biometricHistoryService: BiometricHistoryData) {}\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n onSortChanged(sort: Sort): void {\r\n this.paging.sortBy = sort.active;\r\n this.paging.orderBy = sort.direction;\r\n this.loadDataList(true);\r\n }\r\n\r\n loadDataList(pagination: boolean = false): void {\r\n if (!this.paging.patientId && !this.paging.patientGuid) return;\r\n\r\n if (!pagination && this.paginator) this.paginator.pageIndex = 0;\r\n this.paging.pageNumber = pagination\r\n ? this.paginator?.pageIndex + 1 ?? 1\r\n : 1;\r\n this.paging.pageSize = this.paginator?.pageSize ?? 10;\r\n\r\n this.biometricHistoryService\r\n .list(this.paging)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((res) => {\r\n this.totalCount = res.totalCount;\r\n this.dataList = res.items;\r\n });\r\n }\r\n\r\n weight(weight: number): string {\r\n return this.patientIsPreferredUnitImperial\r\n ? Math.round((weight / 0.453592) * 10) / 10 + ' lbs'\r\n : weight + ' kg';\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n Image\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n Date \r\n \r\n {{ row.endDateString }}\r\n \r\n \r\n\r\n\r\n \r\n \r\n Meal Plan Compliance\r\n \r\n \r\n {{ row.mealPlanCompliance }} - {{ MEAL_PLAN_COMPILANCE[row.mealPlanCompliance] }}\r\n \r\n \r\n\r\n \r\n \r\n Energy Level \r\n \r\n {{ row.energyLevel }} - {{ ENERGY_LEVEL[row.energyLevel] }}\r\n \r\n \r\n\r\n \r\n \r\n Stress Level \r\n \r\n {{ row.stressLevel }} - {{ STRESS_LEVEL[row.stressLevel] }}\r\n \r\n \r\n\r\n \r\n \r\n Sleep Quality \r\n \r\n {{ row.sleepQuality }} - {{ SLEEP_QUALITY[row.sleepQuality] }}\r\n \r\n \r\n\r\n \r\n \r\n Actions \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n
\r\n No data found\r\n
\r\n","/**\r\n * Created by Vinicius\r\n */\r\n\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, MatSortable, Sort } from '@angular/material/sort';\r\nimport { NbDialogService } from '@nebular/theme';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\n\r\nimport {\r\n AssessmentData,\r\n AssessmentFilter,\r\n AssessmentView,\r\n ENERGY_LEVEL,\r\n MEAL_PLAN_COMPILANCE,\r\n SLEEP_QUALITY,\r\n STRESS_LEVEL,\r\n} from 'app/@core/interfaces/common/CalorieFriend/assessment';\r\nimport { EditAssessmentComponent } from '../Assessments/edit-assessment.component';\r\nimport { UsersService } from './../../../../@core/backend/common/services/users.service';\r\nimport { UserStore } from 'app/@core/stores/user.store';\r\n\r\n@Component({\r\n selector: 'app-patient-assessment-list',\r\n templateUrl: './assessment-list.component.html',\r\n styleUrls: ['./assessment-list.component.scss'],\r\n})\r\nexport class PatientAssessmentListComponent implements OnDestroy {\r\n @Input() set patientId(value: number) {\r\n if (!value) return;\r\n this.paging.patientId = value;\r\n\r\n // default sort and load data initially\r\n this.sortor.sort({\r\n id: this.paging.sortBy,\r\n start: this.paging.orderBy,\r\n } as MatSortable);\r\n }\r\n @Input() set patientGuid(value: string) {\r\n if (!value?.length) return;\r\n this.paging.patientGuid = value;\r\n\r\n // default sort and load data initially\r\n this.sortor.sort({\r\n id: this.paging.sortBy,\r\n start: this.paging.orderBy,\r\n } as MatSortable);\r\n }\r\n @Input() patientIsPreferredUnitImperial: boolean = false;\r\n\r\n @Output() edited: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild(MatPaginator, { static: true }) paginator?: MatPaginator;\r\n @ViewChild(MatSort, { static: true }) sortor?: MatSort;\r\n\r\n readonly displayedColumns = [\r\n 'image',\r\n 'endDateString',\r\n 'mealPlanCompliance',\r\n 'energyLevel',\r\n 'stressLevel',\r\n 'sleepQuality',\r\n 'actions',\r\n ];\r\n totalCount: number = 0;\r\n dataList: AssessmentView[] = [];\r\n MEAL_PLAN_COMPILANCE = MEAL_PLAN_COMPILANCE;\r\n ENERGY_LEVEL = ENERGY_LEVEL;\r\n STRESS_LEVEL = STRESS_LEVEL;\r\n SLEEP_QUALITY = SLEEP_QUALITY;\r\n\r\n private unsubscribe$ = new Subject();\r\n private paging: AssessmentFilter = {\r\n sortBy: 'startDateString',\r\n orderBy: 'desc',\r\n };\r\n\r\n constructor(\r\n private assessmentService: AssessmentData,\r\n private dialogService: NbDialogService,\r\n private userStore: UserStore,\r\n ) {}\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n onSortChanged(sort: Sort): void {\r\n this.paging.sortBy = sort.active;\r\n this.paging.orderBy = sort.direction;\r\n this.loadDataList(true);\r\n }\r\n\r\n loadDataList(pagination: boolean = false): void {\r\n if (!this.paging.patientId && !this.paging.patientGuid) return;\r\n\r\n if (!pagination && this.paginator) this.paginator.pageIndex = 0;\r\n this.paging.pageNumber = pagination\r\n ? this.paginator?.pageIndex + 1 ?? 1\r\n : 1;\r\n this.paging.pageSize = this.paginator?.pageSize ?? 10;\r\n\r\n this.assessmentService\r\n .list(this.paging)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((res) => {\r\n this.totalCount = res.totalCount;\r\n this.dataList = res.items;\r\n });\r\n }\r\n\r\n weight(weight: number): string {\r\n return this.patientIsPreferredUnitImperial\r\n ? Math.round((weight / 0.453592) * 10) / 10 + ' lbs'\r\n : weight + ' kg';\r\n }\r\n\r\n onEdit(assessmentGuid: string): void {\r\n this.dialogService\r\n .open(EditAssessmentComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: {\r\n AssessmentGuid: assessmentGuid,\r\n PatientGuid: this.paging.patientGuid,\r\n UserId: this.userStore.getUser()?.id\r\n },\r\n })\r\n .onClose.subscribe(() => {\r\n this.loadDataList(true);\r\n this.edited.emit();\r\n });\r\n }\r\n}\r\n","import { Component, ViewChild, Input, OnInit, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { Observable } from 'rxjs';\r\nimport { Chart } from 'chart.js';\r\nimport * as ChartAnnotation from 'chartjs-plugin-annotation';\r\nimport { NbThemeService, NbColorHelper } from '@nebular/theme';\r\nimport { PatientData } from '../../../../@core/interfaces/common/CalorieFriend/patients';\r\nimport {\r\n BiometricHistoryData,\r\n BiometricHistoryView,\r\n} from '../../../../@core/interfaces/common/CalorieFriend/biometric-history';\r\nimport { GridData } from '../../../../@core/interfaces/common/grid-data';\r\nimport {\r\n AssessmentData,\r\n AssessmentView,\r\n} from '../../../../@core/interfaces/common/CalorieFriend/assessment';\r\nimport { Utility } from '../../../../@core/utils/utility';\r\nimport { ChangeDetectorRef } from '@angular/core';\r\nimport { PatientBiometricHistoryListComponent } from '../biometric-history-list/biometric-history-list.component';\r\n\r\n/**\r\n * Component for listing the Biometric History items and Assessment items of the Patient\r\n * as Graphs and Tables on the Patient Sheet View page\r\n */\r\n@Component({\r\n selector: 'app-patient-progress',\r\n templateUrl: './patient-progress.component.html',\r\n styleUrls: [\r\n './patient-progress.component.scss',\r\n '../../global.component.scss',\r\n ],\r\n})\r\nexport class PatientProgressComponent implements OnInit, OnDestroy {\r\n @Input() patientId: number;\r\n @Input() notificationToken: string;\r\n\r\n @ViewChild('biometricHistoryList', { static: false })\r\n biometricHistoryList?: PatientBiometricHistoryListComponent;\r\n\r\n private readonly unsubscribe$ = new Subject();\r\n ///////////////////////////////////////////////////////\r\n AddPaitentLabel = 'Add New Patient';\r\n UpdatePaitentLabel = 'Update Patient';\r\n\r\n // SavePatientLabel = \"Save measurements\";\r\n GeneralInfoLabel = 'General Info';\r\n BiometricInfoLabel = 'BioMetric Info';\r\n PreferencesLabel = 'Preferences';\r\n PreferredUnitLabel = 'Preferred Units';\r\n HeightLabel = 'Height';\r\n WeightLabel = 'Weight';\r\n BodyFatLabel = 'Body Fat %';\r\n BMILabel = 'BMI';\r\n SourceLabel = 'Source';\r\n MeasureDateLabel = 'Date of Measure';\r\n WeeklyAssessmentLabel = 'Weekly CheckIn';\r\n\r\n StartDateLabel = 'Start Date';\r\n EndDateLabel = 'End Date';\r\n MealPlanComplianceLabel = 'Meal Plan Compliance';\r\n EnergyLevelLabel = 'Energy Level';\r\n StressLevelLabel = 'Stress Level';\r\n SleepQualityLabel = 'Sleep Quality';\r\n\r\n Updated = 'Updated';\r\n ProblemCeatingPatient = 'A problem occurred creating the patient.';\r\n\r\n patientIsPreferredUnitImperial: boolean = false;\r\n\r\n // Bio History graph setting\r\n @ViewChild('chart1', { static: true }) _chart?: any;\r\n\r\n bioHistoryGraphData: any = null;\r\n biometricHistoryGraphDataSrc: Observable> =\r\n null;\r\n bioHistoryGraphOptions: any;\r\n public isLoadingBiometricHistory: boolean = false;\r\n\r\n // Assessments Graph setting\r\n @ViewChild('chart2', { static: true }) _chart2?: any;\r\n\r\n @ViewChild('chart3', { static: true }) _chart3?: any;\r\n\r\n assessmentGraphDataSource: Observable> = null;\r\n assessmentGraphData: any = null;\r\n public isLoadingAssessmentsGraphData: boolean = false;\r\n assessmentGraphOptions: any;\r\n assessmentSecondGraphData: any = null;\r\n assessmentSecondGraphOptions: any;\r\n\r\n themeSubscription: any;\r\n\r\n constructor(\r\n private router: Router,\r\n private patientsService: PatientData,\r\n private biometricHistoryService: BiometricHistoryData,\r\n private assessmentService: AssessmentData,\r\n private theme: NbThemeService,\r\n protected cd: ChangeDetectorRef,\r\n route: ActivatedRoute,\r\n ) {\r\n this.patientId = +route.snapshot.paramMap.get('PatientId');\r\n this.notificationToken = route.snapshot.paramMap.get('NotificationToken');\r\n }\r\n\r\n /**\r\n * Initializes the component.\r\n * It creates the Biometric History Form and Assessment Form.\r\n * It loads the patient data.\r\n * It initializes the settings for the Biometric History table and the Assessment table of the Patient.\r\n * It initializes the settings for the Biometric History graph and the Assesmment graph.\r\n */\r\n ngOnInit(): void {\r\n this.loadPatientData();\r\n\r\n this.biometricHistoryGraphDataSrc =\r\n this.biometricHistoryService.AllHistoriesList(\r\n this.patientId,\r\n this.notificationToken,\r\n );\r\n\r\n // Biometric History graph initializing\r\n const namedChartAnnotation = ChartAnnotation;\r\n namedChartAnnotation['id'] = 'annotation';\r\n Chart.pluginService.register(namedChartAnnotation);\r\n this.refreshBioHistoryGraph();\r\n\r\n this.assessmentGraphDataSource = this.assessmentService.AllAssessmentsList(\r\n this.patientId,\r\n this.notificationToken,\r\n );\r\n\r\n // Assessments graphs initializing\r\n this.refreshAssessmentsGraph();\r\n\r\n // binding change message of the service\r\n this.patientsService.onUpdated$.subscribe((id) => {\r\n if (this.patientId === id) {\r\n this.loadPatientData();\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n loadPatientData(): void {\r\n if (!this.patientId && !this.notificationToken) return;\r\n\r\n this.patientsService\r\n .get(this.patientId, this.notificationToken)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((patient) => {\r\n this.patientIsPreferredUnitImperial = patient.isPreferredUnitImperial;\r\n\r\n this.refreshBioHistoryGraph();\r\n this.refreshAssessmentsGraph();\r\n });\r\n }\r\n\r\n refreshBioHistoryGraph(): void {\r\n this.isLoadingBiometricHistory = true;\r\n this.biometricHistoryGraphDataSrc\r\n .pipe(finalize(() => this.isLoadingBiometricHistory = false))\r\n .subscribe((data) => {\r\n this.themeSubscription = this.theme.getJsTheme().subscribe((config) => {\r\n const colors = config.variables;\r\n const chartjs: any = config.variables.chartjs;\r\n\r\n const labels = data.items.map((b) =>\r\n this.getLabelFromDate(b.measureDateTime),\r\n );\r\n let valuesWeight = data.items.map((b) => b.weight);\r\n const valuesBodyFat = data.items.map((b) => b.bodyFat);\r\n const valuesBMI = data.items.map((b) => b.bmi);\r\n\r\n if (this.patientIsPreferredUnitImperial) {\r\n valuesWeight = valuesWeight.map(\r\n (b) => Math.round((b / 0.453592) * 10) / 10,\r\n );\r\n }\r\n\r\n this.bioHistoryGraphData = {\r\n labels: labels,\r\n datasets: [\r\n {\r\n data: valuesWeight,\r\n label: 'Weight',\r\n fill: false,\r\n backgroundColor: '#3498db',\r\n borderColor: '#3498db',\r\n borderWidth: 6\r\n },\r\n {\r\n data: valuesBodyFat,\r\n label: 'Body Fat %',\r\n fill: false,\r\n backgroundColor: '#2ecc71',\r\n borderColor: '#2ecc71',\r\n borderWidth: 6\r\n },\r\n {\r\n data: valuesBMI,\r\n label: 'BMI',\r\n fill: false,\r\n backgroundColor: '#c2cc2e',\r\n borderColor: '#c2cc2e',\r\n borderWidth: 6\r\n },\r\n ],\r\n };\r\n\r\n this.bioHistoryGraphOptions = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n animation: {\r\n duration: 0,\r\n },\r\n scales: {\r\n xAxes: [\r\n {\r\n gridLines: {\r\n display: false,\r\n color: chartjs.axisLineColor,\r\n },\r\n ticks: {\r\n fontColor: chartjs.textColor,\r\n },\r\n },\r\n ],\r\n yAxes: [\r\n {\r\n gridLines: {\r\n display: false,\r\n color: chartjs.axisLineColor,\r\n },\r\n ticks: {\r\n fontColor: chartjs.textColor,\r\n },\r\n },\r\n ],\r\n },\r\n legend: {\r\n labels: {\r\n fontColor: chartjs.textColor,\r\n usePointStyle : true,\r\n pointStyle: 'circle',\r\n lineWidth: 0,\r\n },\r\n position: 'bottom',\r\n },\r\n annotation: {\r\n annotations: [\r\n {\r\n type: 'line',\r\n mode: 'vertical',\r\n scaleID: 'x-axis-0',\r\n value: this.getFormattedTodayDate(),\r\n borderColor: 'orange',\r\n borderWidth: 2,\r\n label: {\r\n enabled: true,\r\n fontColor: 'orange',\r\n content: 'Today',\r\n },\r\n },\r\n ],\r\n },\r\n };\r\n\r\n this.forceChartRefresh();\r\n });\r\n });\r\n }\r\n\r\n\r\n\r\n forceChartRefresh() {\r\n setTimeout(() => {\r\n this._chart.chart.canvas.style =\r\n 'display: block; height: 250px; width: 100%;';\r\n this._chart.chart.update();\r\n this.cd.detectChanges();\r\n }, 30);\r\n }\r\n\r\n /**\r\n * Method to refresh Assessments graph\r\n */\r\n refreshAssessmentsGraph() {\r\n this.isLoadingAssessmentsGraphData = true;\r\n this.assessmentGraphDataSource\r\n .pipe(finalize(() => this.isLoadingAssessmentsGraphData = false))\r\n .subscribe((data) => {\r\n this.themeSubscription = this.theme.getJsTheme().subscribe((config) => {\r\n const colors = config.variables;\r\n const chartjs: any = config.variables.chartjs;\r\n\r\n const labels = data.items.map((b) => b.startDateString);\r\n let valuesWeight = data.items.map((b) => b.weight);\r\n const valuesBodyFat = data.items.map((b) => b.bodyFat);\r\n\r\n if (this.patientIsPreferredUnitImperial) {\r\n valuesWeight = valuesWeight.map(\r\n (b) => Math.round((b / 0.453592) * 10) / 10,\r\n );\r\n }\r\n\r\n const valuesMealPlanCommpliances = data.items.map(\r\n (b) => b.mealPlanCompliance,\r\n );\r\n const valuesEnergyLevels = data.items.map((b) => b.energyLevel);\r\n const valuesStressLevels = data.items.map((b) => b.stressLevel);\r\n const valuesSleepQuality = data.items.map((b) => b.sleepQuality);\r\n\r\n this.assessmentGraphData = {\r\n labels: labels,\r\n datasets: [\r\n {\r\n data: valuesWeight,\r\n label: 'Weight',\r\n fill: false,\r\n backgroundColor: '#3498db',\r\n borderColor: '#3498db',\r\n borderWidth: 6\r\n },\r\n {\r\n data: valuesBodyFat,\r\n label: 'Body Fat %',\r\n fill: false,\r\n backgroundColor: '#2ecc71',\r\n borderColor: '#2ecc71',\r\n borderWidth: 6\r\n },\r\n ],\r\n };\r\n\r\n this.assessmentGraphOptions = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n animation: {\r\n duration: 0,\r\n },\r\n scales: {\r\n xAxes: [\r\n {\r\n gridLines: {\r\n display: false,\r\n color: chartjs.axisLineColor,\r\n },\r\n ticks: {\r\n fontColor: chartjs.textColor,\r\n },\r\n },\r\n ],\r\n yAxes: [\r\n {\r\n gridLines: {\r\n display: false,\r\n color: chartjs.axisLineColor,\r\n },\r\n ticks: {\r\n fontColor: chartjs.textColor,\r\n },\r\n },\r\n ],\r\n },\r\n legend: {\r\n labels: {\r\n fontColor: chartjs.textColor,\r\n usePointStyle : true,\r\n pointStyle: 'circle',\r\n lineWidth: 0,\r\n },\r\n position: 'bottom',\r\n },\r\n annotation: {\r\n annotations: [\r\n {\r\n type: 'line',\r\n mode: 'vertical',\r\n scaleID: 'x-axis-0',\r\n value: this.getFormattedTodayDate(),\r\n borderColor: 'orange',\r\n borderWidth: 2,\r\n label: {\r\n enabled: true,\r\n fontColor: 'orange',\r\n content: 'Today',\r\n },\r\n },\r\n ],\r\n },\r\n };\r\n\r\n this.assessmentSecondGraphData = {\r\n labels: labels,\r\n datasets: [\r\n {\r\n data: valuesMealPlanCommpliances,\r\n label: 'Meal Plan Commpliance',\r\n fill: false,\r\n backgroundColor: '#3498db',\r\n borderColor: '#3498db',\r\n borderWidth: 6\r\n },\r\n {\r\n data: valuesEnergyLevels,\r\n label: 'Energy Level',\r\n fill: false,\r\n backgroundColor: '#2ecc71',\r\n borderColor: '#2ecc71',\r\n borderWidth: 6\r\n },\r\n {\r\n data: valuesStressLevels,\r\n label: 'Stress Level',\r\n fill: false,\r\n backgroundColor: '#c2cc2e',\r\n borderColor: '#c2cc2e',\r\n borderWidth: 6\r\n },\r\n {\r\n data: valuesSleepQuality,\r\n label: 'Sleep Quality',\r\n fill: false,\r\n backgroundColor: '#8f2ecc',\r\n borderColor: '#8f2ecc',\r\n borderWidth: 6\r\n },\r\n ],\r\n };\r\n\r\n this.assessmentSecondGraphOptions = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n animation: {\r\n duration: 0,\r\n },\r\n scales: {\r\n xAxes: [\r\n {\r\n gridLines: {\r\n display: false,\r\n color: chartjs.axisLineColor,\r\n },\r\n ticks: {\r\n fontColor: chartjs.textColor,\r\n },\r\n },\r\n ],\r\n yAxes: [\r\n {\r\n gridLines: {\r\n display: false,\r\n color: chartjs.axisLineColor,\r\n },\r\n ticks: {\r\n fontColor: chartjs.textColor,\r\n },\r\n },\r\n ],\r\n },\r\n legend: {\r\n labels: {\r\n fontColor: chartjs.textColor,\r\n usePointStyle : true,\r\n pointStyle: 'circle',\r\n lineWidth: 0,\r\n },\r\n position: 'bottom',\r\n },\r\n annotation: {\r\n annotations: [\r\n {\r\n type: 'line',\r\n mode: 'vertical',\r\n scaleID: 'x-axis-0',\r\n value: this.getFormattedTodayDate(),\r\n borderColor: 'orange',\r\n borderWidth: 2,\r\n label: {\r\n enabled: true,\r\n fontColor: 'orange',\r\n content: 'Today',\r\n },\r\n },\r\n ],\r\n },\r\n };\r\n\r\n //this.forceAssessmentChartRefresh();\r\n this.forceAssessmentSecondChartRefresh();\r\n });\r\n });\r\n }\r\n\r\n forceAssessmentChartRefresh() {\r\n setTimeout(() => {\r\n this._chart2.chart.canvas.style =\r\n 'display: block; height: 250px; width: 100%;';\r\n this._chart2.chart.update();\r\n this.cd.detectChanges();\r\n }, 30);\r\n }\r\n\r\n forceAssessmentSecondChartRefresh() {\r\n setTimeout(() => {\r\n this._chart3.chart.canvas.style =\r\n 'display: block; height: 250px; width: 100%;';\r\n this._chart3.chart.update();\r\n this.cd.detectChanges();\r\n }, 30);\r\n }\r\n\r\n getLabelFromDate(date: string): string {\r\n const items = date.split(', ')[1].split(' ');\r\n items.splice(2);\r\n const result = items.join(' ');\r\n return result;\r\n }\r\n\r\n getFormattedTodayDate(): string {\r\n const date = new Date();\r\n\r\n let month = (1 + date.getMonth()).toString();\r\n month = month.length > 1 ? month : '0' + month;\r\n\r\n let day = date.getDate().toString();\r\n day = day.length > 1 ? day : '0' + day;\r\n\r\n return month + '/' + day;\r\n }\r\n\r\n /**\r\n * Method to navigate to the Patients list page\r\n */\r\n Back() {\r\n this.router.navigate(['/pages/CalorieFriend/Patients']);\r\n }\r\n\r\n validateNumber = Utility.validateNumber;\r\n\r\n // Updated by Vinicius\r\n onAssessmentEdited() {\r\n this.refreshAssessmentsGraph();\r\n\r\n this.biometricHistoryList?.loadDataList(true);\r\n this.refreshBioHistoryGraph();\r\n }\r\n}\r\n","
\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
Biometrics History
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n\r\n

\r\n\r\n
\r\n\r\n
\r\n
Weekly CheckIn
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n","export function SetTabHeaderBackgroundColour(TabHTMLElement) {\r\n if (TabHTMLElement != null && TabHTMLElement !== undefined) {\r\n const Lists = TabHTMLElement.getElementsByTagName('ul');\r\n if (Lists != null && Lists !== undefined && Lists.length > 0) {\r\n Lists[0].style.backgroundColor = '#ECFFF3';\r\n }\r\n }\r\n}\r\n\r\nexport function SetViewDropColour(Backdrop) {\r\n let Continue = true;\r\n\r\n while (Backdrop != null && Backdrop !== undefined && Continue) {\r\n const HTML: string = Backdrop.innerHTML;\r\n if (HTML.includes('nb-layout-column')) {\r\n Backdrop.style.backgroundColor = '#FFFFFF';\r\n Continue = false;\r\n } else Backdrop = Backdrop.parentElement;\r\n }\r\n}\r\n\r\nexport const FormConstants = {\r\n NameMaxLength: 50,\r\n DescriptionMaxLength: 150,\r\n NotesMaxLength: 500,\r\n};\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar subscribeToArray_1 = require(\"./subscribeToArray\");\nvar subscribeToPromise_1 = require(\"./subscribeToPromise\");\nvar subscribeToIterable_1 = require(\"./subscribeToIterable\");\nvar subscribeToObservable_1 = require(\"./subscribeToObservable\");\nvar isArrayLike_1 = require(\"./isArrayLike\");\nvar isPromise_1 = require(\"./isPromise\");\nvar isObject_1 = require(\"./isObject\");\nvar iterator_1 = require(\"../symbol/iterator\");\nvar observable_1 = require(\"../symbol/observable\");\nexports.subscribeTo = function (result) {\n if (!!result && typeof result[observable_1.observable] === 'function') {\n return subscribeToObservable_1.subscribeToObservable(result);\n }\n else if (isArrayLike_1.isArrayLike(result)) {\n return subscribeToArray_1.subscribeToArray(result);\n }\n else if (isPromise_1.isPromise(result)) {\n return subscribeToPromise_1.subscribeToPromise(result);\n }\n else if (!!result && typeof result[iterator_1.iterator] === 'function') {\n return subscribeToIterable_1.subscribeToIterable(result);\n }\n else {\n var value = isObject_1.isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = \"You provided \" + value + \" where a stream was expected.\"\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n//# sourceMappingURL=subscribeTo.js.map","import { Component, OnInit } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { NbDialogRef, NbDialogService, NbToastrService } from '@nebular/theme';\r\n\r\nimport {\r\n GoalData,\r\n Goal,\r\n} from '../../../../@core/interfaces/common/CalorieFriend/goals';\r\nimport { Utility } from '../../../../@core/utils/utility';\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport {\r\n Patient,\r\n PatientData,\r\n} from 'app/@core/interfaces/common/CalorieFriend/patients';\r\n\r\n/**\r\n * Component for define a new goal.\r\n * @usageNotes\r\n * It is used to add a new goal on the Patient Sheet View.\r\n * It can be opened via NgDialogService as the content of the pop up dialog\r\n * or can be shown as a standalone page directly.\r\n */\r\n@Component({\r\n selector: 'app-goal-def',\r\n templateUrl: './goal-def.component.html',\r\n styleUrls: ['./goal-def.component.scss', '../../global.component.scss'],\r\n})\r\nexport class GoalDefComponent\r\n extends BaseComponentCanDeactivate\r\n implements OnInit {\r\n GoalLabel = '';\r\n NewGoalLabel = 'New Goal';\r\n EditGoalLabel = 'Edit Goal';\r\n\r\n GoalNameLabel = 'Goal Name';\r\n GoalTypeLabel = 'Goal Type';\r\n GoalValueLabel = 'Goal Value';\r\n ProgressLabel = 'Progress';\r\n\r\n SaveGoalLabel = 'Save';\r\n BackLabel = 'Back';\r\n Created = 'Created';\r\n Updated = 'Updated';\r\n ProblemSavingGoal = 'Problem occured saving the Goal';\r\n GoalDateLabel = 'Target Date';\r\n DisableDate = '0';\r\n\r\n GoalForm: FormGroup;\r\n\r\n PatientID = null;\r\n ID = null;\r\n Progress = 0;\r\n\r\n Patient: Patient = null;\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n /** GoalDef ctor */\r\n constructor(\r\n private route: ActivatedRoute,\r\n private fb: FormBuilder,\r\n private dialogRef: NbDialogRef,\r\n private location: Location,\r\n private goalService: GoalData,\r\n private patientService: PatientData,\r\n private toasterService: NbToastrService,\r\n dialogService: NbDialogService,\r\n ) {\r\n super(dialogService);\r\n\r\n this.PatientID = +this.route.snapshot.paramMap.get('PatientId');\r\n this.ID = +this.route.snapshot.paramMap.get('ID');\r\n\r\n this.InitUserForm();\r\n }\r\n\r\n /**\r\n * Initializes the component\r\n */\r\n ngOnInit(): void {\r\n this.InitUserForm();\r\n\r\n this.loadPatientData();\r\n\r\n if (this.ID === null || this.ID === 0) {\r\n this.GoalLabel = this.NewGoalLabel;\r\n this.DisableDate = '0';\r\n } else {\r\n this.GoalLabel = this.EditGoalLabel;\r\n this.loadGoalData(this.ID);\r\n this.DisableDate = '0';\r\n }\r\n }\r\n\r\n get GoalName() {\r\n return this.GoalForm.get('GoalName');\r\n }\r\n get GoalType() {\r\n return this.GoalForm.get('GoalType');\r\n }\r\n get GoalValue() {\r\n return this.GoalForm.get('GoalValue');\r\n }\r\n get targetDate() {\r\n return this.GoalForm.get('targetDate');\r\n }\r\n\r\n GoalValueMax: number = 1000;\r\n\r\n /**\r\n * Initializes the form for Goal edition\r\n */\r\n InitUserForm() {\r\n const goalDate = new Date();\r\n goalDate.setHours(0, 0, 0, 0);\r\n goalDate.setDate(goalDate.getDate() + 30);\r\n\r\n this.GoalForm = this.fb.group({\r\n GoalID: this.fb.control(''),\r\n PatientID: this.fb.control(''),\r\n ID: this.fb.control(''),\r\n targetDate: this.fb.control(goalDate, [Validators.required]),\r\n GoalName: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(1),\r\n Validators.max(200),\r\n ]),\r\n GoalType: this.fb.control('', [Validators.required]),\r\n GoalValue: this.fb.control('', [\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(1000),\r\n ]),\r\n });\r\n\r\n this.GoalForm.get('GoalType').valueChanges.subscribe((value) => {\r\n if (+value === 0) {\r\n this.GoalValueMax = 100;\r\n } else {\r\n this.GoalValueMax = 1000;\r\n }\r\n this.GoalForm.get('GoalValue').setValidators([\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(this.GoalValueMax),\r\n ]);\r\n this.GoalForm.get('GoalValue').updateValueAndValidity();\r\n });\r\n\r\n super.initForm(this.GoalForm);\r\n }\r\n\r\n /**\r\n * It closes the dialog if it is opened on it.\r\n * If not, it goes back to the previous page.\r\n */\r\n Back() {\r\n // this.router.navigate(['/pages/CalorieFriend/Goals/' + this.PatientID]);\r\n super.back(() => {\r\n if (this.dialogRef) this.dialogRef.close();\r\n else this.location.back();\r\n });\r\n }\r\n\r\n /**\r\n * Converts the object given as a parameter to the 'Goal' type\r\n * @param value Object to convert into Goal type\r\n */\r\n ConvertToGoal(value: any): Goal {\r\n const goal: Goal = value;\r\n return goal;\r\n }\r\n\r\n /**\r\n * It converts the inputs of the form into the Goal type\r\n * and submit the form to save them\r\n */\r\n SaveGoal() {\r\n const goal: any = this.ConvertToGoal(this.GoalForm.value);\r\n\r\n goal.id = this.ID;\r\n goal.PatientID = this.PatientID;\r\n\r\n const targetDateUtc = goal.targetDate;\r\n goal.targetDate = new Date(\r\n targetDateUtc.getTime() - targetDateUtc.getTimezoneOffset() * 60000,\r\n );\r\n\r\n if (this.Patient.isPreferredUnitImperial && goal.GoalType === 2) {\r\n goal.GoalValue = goal.GoalValue * 0.453592;\r\n }\r\n\r\n const observable =\r\n goal.id === null || goal.id === 0\r\n ? this.goalService.create(goal)\r\n : this.goalService.update(goal);\r\n\r\n this.resetDirty();\r\n\r\n observable.pipe(takeUntil(this.unsubscribe$)).subscribe(\r\n () => {\r\n this.handleSuccessResponse();\r\n },\r\n (err) => {\r\n this.handleWrongResponse();\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Handler of Success event of submit\r\n */\r\n handleSuccessResponse() {\r\n if (this.ID === null)\r\n this.toasterService.success('', `Item ${this.Created}!`);\r\n else this.toasterService.success('', `Item ${this.Updated}!`);\r\n\r\n this.Back();\r\n }\r\n\r\n /**\r\n * Handler of Fail event of submit\r\n */\r\n handleWrongResponse() {\r\n this.toasterService.danger('', this.ProblemSavingGoal);\r\n }\r\n\r\n /**\r\n * Loads the data of the Goal given by {id}\r\n * @param id The identifier of the Goal\r\n */\r\n loadGoalData(id) {\r\n if (id) {\r\n this.goalService\r\n .get(id)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((goal) => {\r\n this.Progress = goal.progress;\r\n\r\n let goalValue = goal.goalValue;\r\n if (this.Patient.isPreferredUnitImperial && goal.goalType === 2) {\r\n goalValue = Math.round((goalValue / 0.453592) * 10) / 10;\r\n } else {\r\n goalValue = Math.round(goalValue * 10) / 10;\r\n }\r\n\r\n this.GoalForm.patchValue({\r\n ID: this.ID,\r\n PatientID: this.PatientID,\r\n targetDate: new Date(goal.targetDate),\r\n GoalName: goal.goalName,\r\n GoalType: goal.goalType,\r\n GoalValue: goalValue,\r\n });\r\n\r\n super.resetDirty();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Loads the data of the Patient given by {PatientID}\r\n * @param id The identifier of the Goal\r\n */\r\n loadPatientData() {\r\n if (this.PatientID) {\r\n this.patientService\r\n .get(this.PatientID, null)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((p) => {\r\n this.Patient = p;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Validator that validates the number with the ##.# pattern\r\n */\r\n validateNumber = Utility.validateNumber;\r\n}\r\n","\r\n \r\n
\r\n New Goal\r\n Edit Goal\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
Goal Name
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
Target Date
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
Goal Type
\r\n
\r\n \r\n Body Fat %\r\n BMI\r\n Weight ({{Patient && Patient.isPreferredUnitImperial ? 'lbs':'kg'}})\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
Goal Value
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\nexports.isPromise = isPromise;\n//# sourceMappingURL=isPromise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar noop_1 = require(\"./noop\");\nfunction pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexports.pipe = pipe;\nfunction pipeFromArray(fns) {\n if (!fns) {\n return noop_1.noop;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\nexports.pipeFromArray = pipeFromArray;\n//# sourceMappingURL=pipe.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar scheduleObservable_1 = require(\"./scheduleObservable\");\nvar schedulePromise_1 = require(\"./schedulePromise\");\nvar scheduleArray_1 = require(\"./scheduleArray\");\nvar scheduleIterable_1 = require(\"./scheduleIterable\");\nvar isInteropObservable_1 = require(\"../util/isInteropObservable\");\nvar isPromise_1 = require(\"../util/isPromise\");\nvar isArrayLike_1 = require(\"../util/isArrayLike\");\nvar isIterable_1 = require(\"../util/isIterable\");\nfunction scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable_1.isInteropObservable(input)) {\n return scheduleObservable_1.scheduleObservable(input, scheduler);\n }\n else if (isPromise_1.isPromise(input)) {\n return schedulePromise_1.schedulePromise(input, scheduler);\n }\n else if (isArrayLike_1.isArrayLike(input)) {\n return scheduleArray_1.scheduleArray(input, scheduler);\n }\n else if (isIterable_1.isIterable(input) || typeof input === 'string') {\n return scheduleIterable_1.scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\nexports.scheduled = scheduled;\n//# sourceMappingURL=scheduled.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isFunction_1 = require(\"./util/isFunction\");\nvar Observer_1 = require(\"./Observer\");\nvar Subscription_1 = require(\"./Subscription\");\nvar rxSubscriber_1 = require(\"../internal/symbol/rxSubscriber\");\nvar config_1 = require(\"./config\");\nvar hostReportError_1 = require(\"./util/hostReportError\");\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this.syncErrorValue = null;\n _this.syncErrorThrown = false;\n _this.syncErrorThrowable = false;\n _this.isStopped = false;\n switch (arguments.length) {\n case 0:\n _this.destination = Observer_1.empty;\n break;\n case 1:\n if (!destinationOrNext) {\n _this.destination = Observer_1.empty;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n _this.destination = destinationOrNext;\n destinationOrNext.add(_this);\n }\n else {\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext);\n }\n break;\n }\n default:\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n break;\n }\n return _this;\n }\n Subscriber.prototype[rxSubscriber_1.rxSubscriber] = function () { return this; };\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _parentOrParents = this._parentOrParents;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n };\n return Subscriber;\n}(Subscription_1.Subscription));\nexports.Subscriber = Subscriber;\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this._parentSubscriber = _parentSubscriber;\n var next;\n var context = _this;\n if (isFunction_1.isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== Observer_1.empty) {\n context = Object.create(observerOrNext);\n if (isFunction_1.isFunction(context.unsubscribe)) {\n _this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = _this.unsubscribe.bind(_this);\n }\n }\n _this._context = context;\n _this._next = next;\n _this._error = error;\n _this._complete = complete;\n return _this;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!config_1.config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n var useDeprecatedSynchronousErrorHandling = config_1.config.useDeprecatedSynchronousErrorHandling;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError_1.hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError_1.hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!config_1.config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError_1.hostReportError(err);\n }\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n if (!config_1.config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError_1.hostReportError(err);\n return true;\n }\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\nexports.SafeSubscriber = SafeSubscriber;\n//# sourceMappingURL=Subscriber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isObject(x) {\n return x !== null && typeof x === 'object';\n}\nexports.isObject = isObject;\n//# sourceMappingURL=isObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar config_1 = require(\"./config\");\nvar hostReportError_1 = require(\"./util/hostReportError\");\nexports.empty = {\n closed: true,\n next: function (value) { },\n error: function (err) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError_1.hostReportError(err);\n }\n },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map","module.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\tvar helpers = require('./helpers.js')(Chart);\n\n\tfunction collapseHoverEvents(events) {\n\t\tvar hover = false;\n\t\tvar filteredEvents = events.filter(function(eventName) {\n\t\t\tswitch (eventName) {\n\t\t\t\tcase 'mouseenter':\n\t\t\t\tcase 'mouseover':\n\t\t\t\tcase 'mouseout':\n\t\t\t\tcase 'mouseleave':\n\t\t\t\t\thover = true;\n\t\t\t\t\treturn false;\n\n\t\t\t\tdefault:\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t});\n\t\tif (hover && filteredEvents.indexOf('mousemove') === -1) {\n\t\t\tfilteredEvents.push('mousemove');\n\t\t}\n\t\treturn filteredEvents;\n\t}\n\n\tfunction dispatcher(e) {\n\t\tvar ns = this.annotation;\n\t\tvar elements = helpers.elements(this);\n\t\tvar position = chartHelpers.getRelativePosition(e, this.chart);\n\t\tvar element = helpers.getNearestItems(elements, position);\n\t\tvar events = collapseHoverEvents(ns.options.events);\n\t\tvar dblClickSpeed = ns.options.dblClickSpeed;\n\t\tvar eventHandlers = [];\n\t\tvar eventHandlerName = helpers.getEventHandlerName(e.type);\n\t\tvar options = (element || {}).options;\n\n\t\t// Detect hover events\n\t\tif (e.type === 'mousemove') {\n\t\t\tif (element && !element.hovering) {\n\t\t\t\t// hover started\n\t\t\t\t['mouseenter', 'mouseover'].forEach(function(eventName) {\n\t\t\t\t\tvar eventHandlerName = helpers.getEventHandlerName(eventName);\n\t\t\t\t\tvar hoverEvent = helpers.createMouseEvent(eventName, e); // recreate the event to match the handler\n\t\t\t\t\telement.hovering = true;\n\t\t\t\t\tif (typeof options[eventHandlerName] === 'function') {\n\t\t\t\t\t\teventHandlers.push([ options[eventHandlerName], hoverEvent, element ]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (!element) {\n\t\t\t\t// hover ended\n\t\t\t\telements.forEach(function(element) {\n\t\t\t\t\tif (element.hovering) {\n\t\t\t\t\t\telement.hovering = false;\n\t\t\t\t\t\tvar options = element.options;\n\t\t\t\t\t\t['mouseout', 'mouseleave'].forEach(function(eventName) {\n\t\t\t\t\t\t\tvar eventHandlerName = helpers.getEventHandlerName(eventName);\n\t\t\t\t\t\t\tvar hoverEvent = helpers.createMouseEvent(eventName, e); // recreate the event to match the handler\n\t\t\t\t\t\t\tif (typeof options[eventHandlerName] === 'function') {\n\t\t\t\t\t\t\t\teventHandlers.push([ options[eventHandlerName], hoverEvent, element ]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Suppress duplicate click events during a double click\n\t\t// 1. click -> 2. click -> 3. dblclick\n\t\t//\n\t\t// 1: wait dblClickSpeed ms, then fire click\n\t\t// 2: cancel (1) if it is waiting then wait dblClickSpeed ms then fire click, else fire click immediately\n\t\t// 3: cancel (1) or (2) if waiting, then fire dblclick \n\t\tif (element && events.indexOf('dblclick') > -1 && typeof options.onDblclick === 'function') {\n\t\t\tif (e.type === 'click' && typeof options.onClick === 'function') {\n\t\t\t\tclearTimeout(element.clickTimeout);\n\t\t\t\telement.clickTimeout = setTimeout(function() {\n\t\t\t\t\tdelete element.clickTimeout;\n\t\t\t\t\toptions.onClick.call(element, e);\n\t\t\t\t}, dblClickSpeed);\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\te.preventDefault();\n\t\t\t\treturn;\n\t\t\t} else if (e.type === 'dblclick' && element.clickTimeout) {\n\t\t\t\tclearTimeout(element.clickTimeout);\n\t\t\t\tdelete element.clickTimeout;\n\t\t\t}\n\t\t}\n\n\t\t// Dispatch the event to the usual handler, but only if we haven't substituted it\n\t\tif (element && typeof options[eventHandlerName] === 'function' && eventHandlers.length === 0) {\n\t\t\teventHandlers.push([ options[eventHandlerName], e, element ]);\n\t\t}\n\n\t\tif (eventHandlers.length > 0) {\n\t\t\te.stopImmediatePropagation();\n\t\t\te.preventDefault();\n\t\t\teventHandlers.forEach(function(eventHandler) {\n\t\t\t\t// [handler, event, element]\n\t\t\t\teventHandler[0].call(eventHandler[2], eventHandler[1]);\n\t\t\t});\n\t\t}\n\t}\n\n\treturn {\n\t\tdispatcher: dispatcher,\n\t\tcollapseHoverEvents: collapseHoverEvents\n\t};\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar observable_1 = require(\"../symbol/observable\");\nfunction isInteropObservable(input) {\n return input && typeof input[observable_1.observable] === 'function';\n}\nexports.isInteropObservable = isInteropObservable;\n//# sourceMappingURL=isInteropObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar UnsubscriptionErrorImpl = (function () {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexports.UnsubscriptionError = UnsubscriptionErrorImpl;\n//# sourceMappingURL=UnsubscriptionError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar Subscription_1 = require(\"../Subscription\");\nvar iterator_1 = require(\"../symbol/iterator\");\nfunction scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable_1.Observable(function (subscriber) {\n var sub = new Subscription_1.Subscription();\n var iterator;\n sub.add(function () {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(function () {\n iterator = input[iterator_1.iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n var value;\n var done;\n try {\n var result = iterator.next();\n value = result.value;\n done = result.done;\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\nexports.scheduleIterable = scheduleIterable;\n//# sourceMappingURL=scheduleIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar isArray_1 = require(\"../util/isArray\");\nvar map_1 = require(\"../operators/map\");\nvar isObject_1 = require(\"../util/isObject\");\nvar from_1 = require(\"./from\");\nfunction forkJoin() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n if (sources.length === 1) {\n var first_1 = sources[0];\n if (isArray_1.isArray(first_1)) {\n return forkJoinInternal(first_1, null);\n }\n if (isObject_1.isObject(first_1) && Object.getPrototypeOf(first_1) === Object.prototype) {\n var keys = Object.keys(first_1);\n return forkJoinInternal(keys.map(function (key) { return first_1[key]; }), keys);\n }\n }\n if (typeof sources[sources.length - 1] === 'function') {\n var resultSelector_1 = sources.pop();\n sources = (sources.length === 1 && isArray_1.isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(map_1.map(function (args) { return resultSelector_1.apply(void 0, args); }));\n }\n return forkJoinInternal(sources, null);\n}\nexports.forkJoin = forkJoin;\nfunction forkJoinInternal(sources, keys) {\n return new Observable_1.Observable(function (subscriber) {\n var len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n var values = new Array(len);\n var completed = 0;\n var emitted = 0;\n var _loop_1 = function (i) {\n var source = from_1.from(sources[i]);\n var hasValue = false;\n subscriber.add(source.subscribe({\n next: function (value) {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: function (err) { return subscriber.error(err); },\n complete: function () {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce(function (result, key, i) { return (result[key] = values[i], result); }, {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n });\n}\n//# sourceMappingURL=forkJoin.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction hostReportError(err) {\n setTimeout(function () { throw err; }, 0);\n}\nexports.hostReportError = hostReportError;\n//# sourceMappingURL=hostReportError.js.map","// Box Annotation implementation\nmodule.exports = function(Chart) {\n\tvar helpers = require('../helpers.js')(Chart);\n\t\n\tvar BoxAnnotation = Chart.Annotation.Element.extend({\n\t\tsetDataLimits: function() {\n\t\t\tvar model = this._model;\n\t\t\tvar options = this.options;\n\t\t\tvar chartInstance = this.chartInstance;\n\n\t\t\tvar xScale = chartInstance.scales[options.xScaleID];\n\t\t\tvar yScale = chartInstance.scales[options.yScaleID];\n\t\t\tvar chartArea = chartInstance.chartArea;\n\n\t\t\t// Set the data range for this annotation\n\t\t\tmodel.ranges = {};\n\t\t\t\n\t\t\tif (!chartArea) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar min = 0;\n\t\t\tvar max = 0;\n\t\t\t\n\t\t\tif (xScale) {\n\t\t\t\tmin = helpers.isValid(options.xMin) ? options.xMin : xScale.getPixelForValue(chartArea.left);\n\t\t\t\tmax = helpers.isValid(options.xMax) ? options.xMax : xScale.getPixelForValue(chartArea.right);\n\n\t\t\t\tmodel.ranges[options.xScaleID] = {\n\t\t\t\t\tmin: Math.min(min, max),\n\t\t\t\t\tmax: Math.max(min, max)\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (yScale) {\n\t\t\t\tmin = helpers.isValid(options.yMin) ? options.yMin : yScale.getPixelForValue(chartArea.bottom);\n\t\t\t\tmax = helpers.isValid(options.yMax) ? options.yMax : yScale.getPixelForValue(chartArea.top);\n\n\t\t\t\tmodel.ranges[options.yScaleID] = {\n\t\t\t\t\tmin: Math.min(min, max),\n\t\t\t\t\tmax: Math.max(min, max)\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tconfigure: function() {\n\t\t\tvar model = this._model;\n\t\t\tvar options = this.options;\n\t\t\tvar chartInstance = this.chartInstance;\n\n\t\t\tvar xScale = chartInstance.scales[options.xScaleID];\n\t\t\tvar yScale = chartInstance.scales[options.yScaleID];\n\t\t\tvar chartArea = chartInstance.chartArea;\n\n\t\t\t// clip annotations to the chart area\n\t\t\tmodel.clip = {\n\t\t\t\tx1: chartArea.left,\n\t\t\t\tx2: chartArea.right,\n\t\t\t\ty1: chartArea.top,\n\t\t\t\ty2: chartArea.bottom\n\t\t\t};\n\n\t\t\tvar left = chartArea.left, \n\t\t\t\ttop = chartArea.top, \n\t\t\t\tright = chartArea.right, \n\t\t\t\tbottom = chartArea.bottom;\n\n\t\t\tvar min, max;\n\n\t\t\tif (xScale) {\n\t\t\t\tmin = helpers.isValid(options.xMin) ? xScale.getPixelForValue(options.xMin) : chartArea.left;\n\t\t\t\tmax = helpers.isValid(options.xMax) ? xScale.getPixelForValue(options.xMax) : chartArea.right;\n\t\t\t\tleft = Math.min(min, max);\n\t\t\t\tright = Math.max(min, max);\n\t\t\t}\n\n\t\t\tif (yScale) {\n\t\t\t\tmin = helpers.isValid(options.yMin) ? yScale.getPixelForValue(options.yMin) : chartArea.bottom;\n\t\t\t\tmax = helpers.isValid(options.yMax) ? yScale.getPixelForValue(options.yMax) : chartArea.top;\n\t\t\t\ttop = Math.min(min, max);\n\t\t\t\tbottom = Math.max(min, max);\n\t\t\t}\n\n\t\t\t// Ensure model has rect coordinates\n\t\t\tmodel.left = left;\n\t\t\tmodel.top = top;\n\t\t\tmodel.right = right;\n\t\t\tmodel.bottom = bottom;\n\n\t\t\t// Stylistic options\n\t\t\tmodel.borderColor = options.borderColor;\n\t\t\tmodel.borderWidth = options.borderWidth;\n\t\t\tmodel.backgroundColor = options.backgroundColor;\n\t\t},\n\t\tinRange: function(mouseX, mouseY) {\n\t\t\tvar model = this._model;\n\t\t\treturn model &&\n\t\t\t\tmouseX >= model.left && \n\t\t\t\tmouseX <= model.right && \n\t\t\t\tmouseY >= model.top && \n\t\t\t\tmouseY <= model.bottom;\n\t\t},\n\t\tgetCenterPoint: function() {\n\t\t\tvar model = this._model;\n\t\t\treturn {\n\t\t\t\tx: (model.right + model.left) / 2,\n\t\t\t\ty: (model.bottom + model.top) / 2\n\t\t\t};\n\t\t},\n\t\tgetWidth: function() {\n\t\t\tvar model = this._model;\n\t\t\treturn Math.abs(model.right - model.left);\n\t\t},\n\t\tgetHeight: function() {\n\t\t\tvar model = this._model;\n\t\t\treturn Math.abs(model.bottom - model.top);\n\t\t},\n\t\tgetArea: function() {\n\t\t\treturn this.getWidth() * this.getHeight();\n\t\t},\n\t\tdraw: function() {\n\t\t\tvar view = this._view;\n\t\t\tvar ctx = this.chartInstance.chart.ctx;\n\n\t\t\tctx.save();\n\n\t\t\t// Canvas setup\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(view.clip.x1, view.clip.y1, view.clip.x2 - view.clip.x1, view.clip.y2 - view.clip.y1);\n\t\t\tctx.clip();\n\n\t\t\tctx.lineWidth = view.borderWidth;\n\t\t\tctx.strokeStyle = view.borderColor;\n\t\t\tctx.fillStyle = view.backgroundColor;\n\n\t\t\t// Draw\n\t\t\tvar width = view.right - view.left,\n\t\t\t\theight = view.bottom - view.top;\n\t\t\tctx.fillRect(view.left, view.top, width, height);\n\t\t\tctx.strokeRect(view.left, view.top, width, height);\n\n\t\t\tctx.restore();\n\t\t}\n\t});\n\n\treturn BoxAnnotation;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscribeToArray = function (array) { return function (subscriber) {\n for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n}; };\n//# sourceMappingURL=subscribeToArray.js.map","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { JoyrideService } from 'ngx-joyride';\r\nimport { NbAccordionComponent, NbDialogRef, NbDialogService } from '@nebular/theme';\r\nimport { DataSource } from 'ng2-smart-table/lib/lib/data-source/data-source';\r\n\r\nimport { User } from 'app/@core/interfaces/common/users';\r\nimport {\r\n TutorialData,\r\n TutorialIDs,\r\n} from 'app/@core/interfaces/common/CalorieFriend/tutorial';\r\nimport {\r\n BasePlan,\r\n BasePlanData,\r\n FitnessPlan,\r\n FitnessPlanData,\r\n MealPlan,\r\n MealPlanData,\r\n TemplatePlan,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\nimport { GridData } from 'app/@core/interfaces/common/grid-data';\r\nimport { SmartPlanTemplateGridFilter } from 'app/@core/interfaces/common/CalorieFriend/mealTemplates';\r\nimport { FormArray, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { map, filter } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'template-name',\r\n template: ``,\r\n styleUrls: [\r\n './plan-template-select.component.scss',\r\n '../../../global.component.scss',\r\n ],\r\n})\r\nexport class TemplateNameComponent implements OnInit, AfterViewInit {\r\n Item = null;\r\n TemplateName = 'TEST';\r\n ActiveName = 'ActiveName';\r\n InActiveName = 'InActiveName';\r\n\r\n Active = true;\r\n\r\n @Input() value: any;\r\n @ViewChild('TemplateNameControl') TemplateNameElement: any = null;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.Item = this.value.Item;\r\n this.TemplateName = this.Item.name;\r\n }\r\n\r\n ngAfterViewInit() {\r\n try {\r\n const NameRow =\r\n this.TemplateNameElement.nativeElement.parentElement.parentElement\r\n .parentElement.parentElement.parentElement.parentElement\r\n .parentElement;\r\n\r\n if (this.Item.isSelected)\r\n this.TemplateNameElement.nativeElement.className =\r\n 'ActiveName BaseName';\r\n else\r\n this.TemplateNameElement.nativeElement.className =\r\n 'InActiveName BaseName';\r\n\r\n this.Item.SelectedEvent = (active) => {\r\n if (active)\r\n this.TemplateNameElement.nativeElement.className =\r\n 'ActiveName BaseName';\r\n else\r\n this.TemplateNameElement.nativeElement.className =\r\n 'InActiveName BaseName';\r\n };\r\n } catch { }\r\n }\r\n}\r\n\r\nexport class BasePlanTemplateSelectComponent implements OnInit, AfterViewInit {\r\n ListTemplateLabel = 'Plan Templates';\r\n TemplateNameLabel = 'Name';\r\n TemplateDescriptionLabel = 'Description';\r\n SelectLabel = 'Select';\r\n CancelLabel = 'Cancel';\r\n public templates: GridData>;\r\n public searchInput: string;\r\n private pageNumber: number = 1;\r\n public form: FormGroup;\r\n public loading: boolean = false;\r\n public expandAll: boolean = false;\r\n public pageLoading: boolean = false;\r\n @ViewChild('table') table: any;\r\n @ViewChild('accordion') accordionComponent: NbAccordionComponent;\r\n @ViewChild('myInput') myInput: ElementRef;\r\n\r\n TutorialIDs = TutorialIDs;\r\n\r\n SelectedPlan: BasePlan = null;\r\n\r\n TemplateSource: DataSource;\r\n\r\n isFromTutorial: boolean = false;\r\n user: User = null;\r\n\r\n AppendToCurrentPlan: boolean = false;\r\n selectedDays: any = {};\r\n\r\n constructor(\r\n private service: BasePlanData,\r\n private dialogService: NbDialogService,\r\n protected ref: NbDialogRef,\r\n public joyrideService: JoyrideService,\r\n private tutorialService: TutorialData,\r\n private fb: FormBuilder\r\n ) {\r\n this.TemplateSource = this.service.GridPlanTemplateDataSource;\r\n this.form = this.fb.group({\r\n parents: this.fb.array([]),\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.isFromTutorial) {\r\n // tutorial\r\n const tutorialStates = JSON.parse(this.user.tutorialStates ?? '{}');\r\n\r\n if (!tutorialStates[TutorialIDs.SelectTemplate] && this.isFromTutorial) {\r\n const steps = [];\r\n\r\n // add fake steps to make correct step numbers\r\n // for (let i = 0; i < 5; i++) steps.push('');\r\n\r\n steps.push(TutorialIDs.SelectTemplate);\r\n\r\n // add fake steps to make correct step numbers\r\n // for (let i = 0; i < 1; i++) steps.push('');\r\n\r\n this.joyrideService\r\n .startTour(\r\n {\r\n steps: steps,\r\n showPrevButton: false,\r\n showCounter: true,\r\n }, // Your steps order\r\n )\r\n .subscribe(\r\n (step) => {\r\n /*Do something*/\r\n },\r\n (error) => {\r\n /*handle error*/\r\n },\r\n () => {\r\n /*Tour is finished here, do something*/\r\n },\r\n );\r\n }\r\n }\r\n this.loading = true;\r\n this.loadTemplates();\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => {\r\n this.myInput.nativeElement.blur();\r\n }, 0);\r\n}\r\n\r\n public get isAnyDaySelected(): boolean {\r\n const {parents} = this.form.value;\r\n return parents.some(item=> item.parent === true || item.indeterminate=== true);\r\n }\r\n\r\n onSearchChange(event: any): void {\r\n if(this.loading) return;\r\n if(event.target.value) this.searchInput = event.target.value;\r\n else this.searchInput = null;\r\n this.pageNumber = 1;\r\n this.loading = true;\r\n this.loadTemplates();\r\n }\r\n\r\n public onExpandChange() {\r\n this.expandAll = !this.expandAll;\r\n if(this.expandAll) {\r\n this.accordionComponent.multi = true;\r\n this.accordionComponent.openAll();\r\n } else {\r\n this.accordionComponent.multi = false;\r\n this.accordionComponent.closeAll();\r\n }\r\n }\r\n\r\n onScroll(event: any) {\r\n const position = Math.floor(event.target.clientHeight + Math.round(event.target.scrollTop));\r\n const height = event.target.scrollHeight;\r\n if (this.isApproximatelyEqual(position, height) && !this.pageLoading && this.templates.items.length !== this.templates.totalCount) {\r\n this.pageNumber += 1;\r\n this.pageLoading = true;\r\n this.loadTemplates();\r\n }\r\n }\r\n\r\n isApproximatelyEqual(x, y) {\r\n return Math.abs(x - y) <= 1;\r\n }\r\n\r\n public loadTemplates(): void {\r\n let filters: SmartPlanTemplateGridFilter = {\r\n pageNumber: this.pageNumber,\r\n pageSize: 20,\r\n selectedTemplate: true,\r\n };\r\n if(this.searchInput) filters.filterByName = this.searchInput;\r\n\r\n this.service.list(filters).subscribe((res: GridData>) => {\r\n if(this.pageLoading) this.templates.items = [...this.templates.items, ...res.items]\r\n else if(res.items.length != 0 || res.totalCount == 0) this.templates = res;\r\n this.initiateForm(this.templates);\r\n this.loading = false;\r\n this.pageLoading = false;\r\n });\r\n }\r\n\r\nprivate initiateForm(templates): void {\r\n this.form = this.fb.group({\r\n parents: this.fb.array([]),\r\n });\r\n const parentsFormArray = this.form.get('parents') as FormArray;\r\n\r\n templates?.items?.forEach((parent, index: number) => {\r\n let childrenFormArray: FormArray;\r\n if(parent.thePlan?.days) {\r\n if(this.isFromTutorial && index == 0) {\r\n if(this.selectedDays[parent.id]) this.selectedDays[parent.id] = [...this.selectedDays[parent.id], ...parent.thePlan.days];\r\n else this.selectedDays[parent.id] = parent.thePlan.days;\r\n }\r\n childrenFormArray = this.fb.array(\r\n this.getUniqueDayIds(parent.id).map((day) => this.fb.group({\r\n selected: this.isFromTutorial && index == 0? true:this.checkDayIsSelected(parent.id, day),\r\n dayId: day\r\n }))\r\n );\r\n }\r\n\r\n const parentFormGroup = this.fb.group({\r\n parent: this.fb.control(this.isFromTutorial && index == 0? true: false),\r\n children: childrenFormArray,\r\n indeterminate: this.fb.control(false),\r\n description: [parent.description],\r\n name: [parent.name],\r\n note: [parent.note],\r\n planId: [parent.id]\r\n });\r\n if(childrenFormArray) {\r\n const allSelected = childrenFormArray.value.every((child)=> child.selected);\r\n const someSelected = childrenFormArray.value.some((child)=> child.selected) && !allSelected;\r\n parentFormGroup.get('parent').setValue(allSelected, { emitEvent: false });\r\n parentFormGroup.get('indeterminate').setValue(someSelected, { emitEvent: false });\r\n }\r\n\r\n parentFormGroup.get('children').valueChanges.subscribe((children) => {\r\n const parentValues = parentFormGroup.value;\r\n const allSelected = children?.every((child)=> child.selected);\r\n const someSelected = children?.some((child)=> child.selected) && !allSelected;\r\n parentFormGroup.get('parent').setValue(allSelected, { emitEvent: false });\r\n parentFormGroup.get('indeterminate').setValue(someSelected, { emitEvent: false });\r\n const selectedChildren = children?.filter(x => x.selected);\r\n const selectedTemplate = this.templates.items.find(x => x.id == parentValues.planId);\r\n if(this.selectedDays) {\r\n this.selectedDays[parentValues.planId] = selectedChildren?.map(x => {\r\n const findInSelectedDays = this.selectedDays[parentValues.planId]?.find(z => z.id === x.dayId);\r\n if(findInSelectedDays) {\r\n return findInSelectedDays;\r\n } else {\r\n return selectedTemplate.thePlan.days.find(z => z.id === x.dayId);\r\n }\r\n });\r\n if (this.selectedDays[parentValues.planId] && this.selectedDays[parentValues.planId].length == 0) {\r\n delete this.selectedDays[parentValues.planId];\r\n }\r\n }\r\n });\r\n parentFormGroup.get('parent').valueChanges.subscribe(res => {\r\n const temp = (parentFormGroup.get('children') as FormArray).value?.map((child) => ({\r\n ...child,\r\n selected: res,\r\n }));\r\n (parentFormGroup.get('children') as FormArray).setValue(temp);\r\n });\r\n parentsFormArray.push(parentFormGroup);\r\n });\r\n}\r\n\r\nonCheckboxClick(event: Event): void {\r\n event.stopPropagation();\r\n}\r\n\r\nprivate getUniqueDayIds(planId){\r\n const uniqueIdsSet = new Set();\r\n this.selectedDays[planId]?.forEach(item => uniqueIdsSet.add(item.id));\r\n this.templates?.items?.find(x => x.id == planId).thePlan?.days?.forEach(item => uniqueIdsSet.add(item.id));\r\n return [...uniqueIdsSet];\r\n}\r\n\r\ncheckDayIsSelected(planId, dayId): boolean {\r\n if(this.selectedDays[planId]) {\r\n const selected = this.selectedDays[planId].find(x => x.id == dayId);\r\n return !!selected;\r\n }\r\n return false;\r\n}\r\n\r\npublic get totalSelectedDays(): number {\r\n let total = 0;\r\n Object.values(this.selectedDays).forEach((item: any) => {\r\n if(item?.length) total += item?.length;\r\n });\r\n return total;\r\n}\r\n\r\n /**\r\n * Event handler of RowSelect event.\r\n * @param $event Event object\r\n */\r\n RowSelected($event) {\r\n const EmtpyTemplates: any = this.TemplateSource;\r\n\r\n // clear all items set\r\n for (const template of EmtpyTemplates.data) {\r\n if (template.SelectedEvent != null) template.SelectedEvent(false);\r\n }\r\n\r\n $event.data.isSelected = $event.isSelected;\r\n\r\n if ($event.isSelected) {\r\n this.SelectedPlan = $event.data.thePlan;\r\n } else {\r\n this.SelectedPlan = null;\r\n }\r\n\r\n if ($event.data.SelectedEvent != null)\r\n $event.data.SelectedEvent($event.isSelected);\r\n }\r\n\r\n /**\r\n * Event handler of 'SelectPlan' action.\r\n */\r\n SelectPlan() {\r\n let firstParent = this.form.value.parents.find(x => x.parent || x.indeterminate=== true);\r\n let out = {\r\n \"days\": Object.values(this.selectedDays).reduce((acc: any, currArray) => acc.concat(currArray), []),\r\n \"id\": 36,\r\n \"patientID\": 0,\r\n \"name\": firstParent.name,\r\n \"description\": firstParent.description,\r\n \"notes\": firstParent.note,\r\n \"active\": false,\r\n \"zOrder\": 2147483647,\r\n \"duration\": 2,\r\n \"createdDate\": \"0001-01-01T00:00:00\",\r\n \"updatedDate\": \"0001-01-01T00:00:00\",\r\n \"createdByUserId\": 0,\r\n \"updatedByUserId\": 0,\r\n \"hasError\": false\r\n }\r\n if (this.selectedDays !== null && this.selectedDays !== undefined) {\r\n if (this.isFromTutorial && this.joyrideService.isTourInProgress()) {\r\n this.tutorialService.save(TutorialIDs.SelectTemplate).subscribe(() => {\r\n const tutorialStates = JSON.parse(this.user.tutorialStates);\r\n tutorialStates[TutorialIDs.SelectTemplate] = true;\r\n this.user.tutorialStates = JSON.stringify(tutorialStates);\r\n });\r\n\r\n this.joyrideService.closeTour();\r\n\r\n this.ref.close({\r\n plan: out,\r\n appendToCurrentPlan: this.AppendToCurrentPlan,\r\n });\r\n } else {\r\n if (this.AppendToCurrentPlan) {\r\n this.ref.close({\r\n plan: out,\r\n appendToCurrentPlan: this.AppendToCurrentPlan,\r\n });\r\n } else {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: {\r\n Message:\r\n 'Loading from template will overwrite the current plan, are you sure?',\r\n },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result) {\r\n this.ref.close({\r\n plan: out,\r\n appendToCurrentPlan: this.AppendToCurrentPlan,\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of 'Cancel' action.\r\n */\r\n Cancel() {\r\n this.ref.close();\r\n }\r\n}\r\n\r\n/**\r\n * Component for Plan Template Selection.\r\n */\r\n@Component({\r\n selector: 'app-plan-template-select',\r\n templateUrl: './plan-template-select.component.html',\r\n styleUrls: ['./plan-template-select.component.scss'],\r\n})\r\nexport class PlanTemplateSelectComponent extends BasePlanTemplateSelectComponent {\r\n constructor(\r\n protected ref: NbDialogRef,\r\n public planJoyrideService: JoyrideService,\r\n planService: MealPlanData,\r\n planDialogService: NbDialogService,\r\n planTutorialService: TutorialData,\r\n fb: FormBuilder\r\n ) {\r\n super(\r\n planService,\r\n planDialogService,\r\n ref,\r\n planJoyrideService,\r\n planTutorialService,\r\n fb\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Component for Fitness Plan Template Selection.\r\n */\r\n@Component({\r\n selector: 'app-fitness-plan-template-select',\r\n templateUrl: './plan-template-select.component.html',\r\n styleUrls: ['./plan-template-select.component.scss'],\r\n})\r\nexport class FitnessPlanTemplateSelectComponent extends BasePlanTemplateSelectComponent {\r\n constructor(\r\n protected ref: NbDialogRef,\r\n public fitnessPlanJoyrideService: JoyrideService,\r\n fitnessPlanService: FitnessPlanData,\r\n fitnessPlanDialogService: NbDialogService,\r\n fitnessPlanTutorialService: TutorialData,\r\n fb: FormBuilder\r\n ) {\r\n super(\r\n fitnessPlanService,\r\n fitnessPlanDialogService,\r\n ref,\r\n fitnessPlanJoyrideService,\r\n fitnessPlanTutorialService,\r\n fb\r\n );\r\n }\r\n}\r\n","\r\n\r\n \r\n\r\n
\r\n Plan Templates\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n

Total: {{templates?.totalCount}}

\r\n \r\n Collapse all/open all\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n {{template.name}}\r\n \r\n

\r\n {{template.description}}\r\n

\r\n
\r\n \r\n Days: {{template?.thePlan?.days?.length? template?.thePlan?.days?.length:\r\n 0}}\r\n
\r\n \r\n \r\n
\r\n {{day.name}}\r\n
\r\n \r\n \r\n
No days for this template!
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{searchInput? 'Search returned 0 result' : 'No template found'}}
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n Select any template from the list and tap the Select Button.\r\n \r\n
\r\n
\r\n \r\n Total Selected Days {{totalSelectedDays}}\r\n
\r\n
\r\n \r\n Append to current plan.\r\n \r\n
\r\n
\r\n
\r\n\r\n
","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar canReportError_1 = require(\"./util/canReportError\");\nvar toSubscriber_1 = require(\"./util/toSubscriber\");\nvar observable_1 = require(\"./symbol/observable\");\nvar pipe_1 = require(\"./util/pipe\");\nvar config_1 = require(\"./config\");\nvar Observable = (function () {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber_1.toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config_1.config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config_1.config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError_1.canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var source = this.source;\n return source && source.subscribe(subscriber);\n };\n Observable.prototype[observable_1.observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipe_1.pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexports.Observable = Observable;\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config_1.config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\n\r\nimport { NbToastrService, NbDialogService, NbDialogRef } from '@nebular/theme';\r\nimport {\r\n Assessment,\r\n AssessmentData,\r\n} from '../../../../@core/interfaces/common/CalorieFriend/assessment';\r\nimport { Utility } from '../../../../@core/utils/utility';\r\nimport { AssessmentDescriptiveValues } from './DescriptiveValues';\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { AssessmentSettingService } from 'app/@core/backend/common/services/CalorieFriend/assessment-settings.service';\r\nimport { PatientData } from 'app/@core/interfaces/common/CalorieFriend/patients';\r\nimport { th } from 'date-fns/locale';\r\nimport { defaultFormValues } from 'app/@core/utils/defaultFormValues';\r\nimport { FormlyFormOptions } from '@ngx-formly/core';\r\n\r\nexport enum AssessmentProgressImageType {\r\n ProgressImage = '',\r\n ProgressImageLeft = 'Left',\r\n ProgressImageRight = 'Right',\r\n}\r\n\r\n/**\r\n * Component for the current user to edit assessment data\r\n */\r\n@Component({\r\n selector: 'app-edit-assessment',\r\n templateUrl: './edit-assessment.component.html',\r\n styleUrls: ['./edit-assessment.component.scss'],\r\n})\r\nexport class EditAssessmentComponent\r\n extends BaseComponentCanDeactivate\r\n implements OnInit {\r\n AssessmentForm: FormGroup = new FormGroup({});\r\n model: any = {}\r\n UserId: number = null;\r\n formlyForm: any;\r\n patientId: number;\r\n\r\n AddAssessmentLabel = 'Input Assessment Data';\r\n UpdateAssessmentLabel = 'Update Assessment';\r\n AssessmentLabel = '';\r\n ImageLabel = 'Image';\r\n SelectImageLabel = 'Select';\r\n assessmentProgressImageType: typeof AssessmentProgressImageType = AssessmentProgressImageType;\r\n\r\n SaveAssessmentLabel = 'Save Assessment';\r\n\r\n MealPlanComplianceLabel = 'Meal Plan Compliance';\r\n EnergyLevelLabel = 'Energy Level';\r\n StressLevelLabel = 'Stress Level';\r\n SleepQualityLabel = 'Sleep Quality';\r\n\r\n WeightLabel = 'Weight';\r\n BodyFatLabel = 'Body Fat %';\r\n CommentLabel = 'Comment';\r\n StartDateLabel = 'Start Date';\r\n EndDateLabel = 'End Date';\r\n\r\n PreferredUnitLabel = 'Preferred Unit';\r\n\r\n BackLabel = 'Back';\r\n Created = 'Created';\r\n Updated = 'Updated';\r\n ProblemCeatingAssessment = 'A problem occurred submitting the assessment.';\r\n\r\n PatientGuid: string = null;\r\n AssessmentGuid: string = null;\r\n PatientName: string = '';\r\n StartDate: any;\r\n EndDate: any;\r\n public isImperialUnit: boolean = false;\r\n options: FormlyFormOptions = {\r\n formState: {\r\n customData: {\r\n isImperial: true,\r\n // Add more custom data as needed\r\n }\r\n }\r\n };\r\n\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n imgHover: boolean = false;\r\n imgFoodItem: any = null;\r\n isLoading: boolean = false;\r\n isImageProgressUpload: boolean = true;\r\n\r\n /** Assessment ctor */\r\n constructor(\r\n private fb: FormBuilder,\r\n private assessmentsService: AssessmentData,\r\n private dialogRef: NbDialogRef,\r\n private toasterService: NbToastrService,\r\n private assessmentSettingService: AssessmentSettingService,\r\n private PlanViewPatientsService: PatientData,\r\n dialogService: NbDialogService,\r\n ) {\r\n super(dialogService);\r\n }\r\n\r\n DescriptiveValues = AssessmentDescriptiveValues;\r\n\r\n /**\r\n * Initializes the component.\r\n * It creates the Assessment Form and loads the assessment data into it.\r\n */\r\n ngOnInit(): void {\r\n this.InitAssessmentForm();\r\n\r\n if (this.AssessmentGuid !== null) {\r\n this.loadAssessmentData(this.AssessmentGuid);\r\n this.AssessmentLabel = this.UpdateAssessmentLabel;\r\n } else {\r\n this.AssessmentLabel = this.AddAssessmentLabel;\r\n }\r\n }\r\n\r\n /**\r\n * Initializes the Assessment Form.\r\n */\r\n InitAssessmentForm() {\r\n\r\n super.initForm(this.AssessmentForm);\r\n }\r\n\r\n /**\r\n * Converts the object given as a parameter {value} to the 'Assessment' type\r\n * @param value Object to convert into 'Assessment' type\r\n */\r\n ConvertToAssessment(value: any): Assessment {\r\n if (!value.ProgressImageUrl || value.ProgressImageUrl === 'null')\r\n value.ProgressImageUrl = null;\r\n\r\n const assessment: Assessment = value;\r\n return assessment;\r\n }\r\n\r\n /**\r\n * It converts the inputs of the assessment form into the Assessment type\r\n * and submit the form to save them\r\n */\r\n SaveAssessment() {\r\n this.model = {\r\n ...this.model,\r\n ...this.AssessmentForm.value,\r\n }\r\n let Assessment: Assessment = {\r\n id: this.model.id,\r\n guid: this.model.guid,\r\n height: this.model.height,\r\n weight: this.model.weight,\r\n bodyFat: this.model.bodyFat,\r\n mealPlanCompliance: this.model.mealPlanCompliance > 0 ? this.model.mealPlanCompliance : 0,\r\n energyLevel: this.model.energyLevel > 0 ? this.model.energyLevel : 0,\r\n stressLevel: this.model.stressLevel > 0 ? this.model.stressLevel : 0,\r\n sleepQuality: this.model.sleepQuality > 0 ? this.model.sleepQuality : 0,\r\n progressImageUrl: this.model.progressImageUrl,\r\n progressImageLeftUrl: this.model.progressImageLeftUrl,\r\n progressImageRightUrl: this.model.progressImageRightUrl,\r\n comment: this.model.comment ?? '',\r\n patientName: this.PatientName,\r\n patientID: this.patientId,\r\n submittedByPatient: false,\r\n startDate: this.StartDate,\r\n endDate: this.EndDate,\r\n startDateString: '',\r\n endDateString: '',\r\n answersJson: null,\r\n };\r\n\r\n if(this.model.fileProgressImage) {\r\n Assessment.fileProgressImage = this.model.fileProgressImage;\r\n delete this.model.fileProgressImage;\r\n }\r\n if(this.model.fileProgressImageRight) {\r\n Assessment.fileProgressImageRight = this.model.fileProgressImageRight;\r\n delete this.model.fileProgressImageRight;\r\n }\r\n if(this.model.fileProgressImageLeft) {\r\n Assessment.fileProgressImageLeft = this.model.fileProgressImageLeft;\r\n delete this.model.fileProgressImageLeft;\r\n }\r\n\r\n// Add the answersJson field after the Assessment object has been constructed\r\nAssessment.answersJson = JSON.stringify(this.model);\r\n // Assessment = this.ConvertToAssessment(\r\n // this.model,\r\n // );\r\n\r\n Assessment.guid = this.AssessmentGuid;\r\n Assessment.submittedByPatient = true;\r\n console.log(Assessment, this.model, this.AssessmentForm.value);\r\n const observable = this.assessmentsService.update(Assessment);\r\n\r\n super.resetDirty();\r\n this.isLoading = true;\r\n observable.pipe(takeUntil(this.unsubscribe$),\r\n finalize(() => this.isLoading = false)).subscribe(\r\n () => {\r\n // todo - refresh biometric history table\r\n // todo - test submit by patient\r\n this.handleSuccessResponse();\r\n this.model.fileProgressImage = Assessment.fileProgressImage;\r\n this.model.fileProgressImageLeft = Assessment.fileProgressImageLeft;\r\n this.model.fileProgressImageRight = Assessment.fileProgressImageRight;\r\n },\r\n (err) => {\r\n this.handleWrongResponse();\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Method to close the parent dialog container\r\n */\r\n Back() {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**\r\n * Handler of Success event of submit\r\n */\r\n handleSuccessResponse() {\r\n if (this.AssessmentGuid === null)\r\n this.toasterService.success('', `Item ${this.Created}!`);\r\n else this.toasterService.success('', `Item ${this.Updated}!`);\r\n\r\n this.Back();\r\n }\r\n\r\n /**\r\n * Handler of Fail event of submit\r\n */\r\n handleWrongResponse() {\r\n this.toasterService.danger('', this.ProblemCeatingAssessment);\r\n }\r\n\r\n /**\r\n * Loads the data of the Assessment given by {guid}\r\n * @param guid The identifier of the Assessment\r\n */\r\n loadAssessmentData(guid) {\r\n if (guid) {\r\n const loadAssessment = this.PatientGuid\r\n ? this.assessmentsService.getByNotification(guid, this.PatientGuid)\r\n : this.assessmentsService.get(guid);\r\n loadAssessment\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((assessment) => {\r\n this.PatientName = assessment.patientName;\r\n this.patientId = assessment.patientID;\r\n this.StartDate = assessment.startDateString;\r\n this.EndDate = assessment.endDateString;\r\n this.PlanViewPatientsService.get(assessment.patientID, null)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((patient) => {\r\n this.options.formState.customData.isImperial = patient.isPreferredUnitImperial;\r\n });\r\n\r\n this.model = {\r\n id: assessment.id,\r\n guid: assessment.guid,\r\n height: assessment.height,\r\n weight: assessment.weight,\r\n bodyFat: assessment.bodyFat,\r\n patientId: this.patientId,\r\n MealPlanCompliance:\r\n assessment.mealPlanCompliance > 0\r\n ? assessment.mealPlanCompliance\r\n : null,\r\n energyLevel:\r\n assessment.energyLevel > 0 ? assessment.energyLevel : null,\r\n stressLevel:\r\n assessment.stressLevel > 0 ? assessment.stressLevel : null,\r\n sleepQuality:\r\n assessment.sleepQuality > 0 ? assessment.sleepQuality : null,\r\n comment: assessment.comment ?? '',\r\n ...JSON.parse(assessment.answersJson??'{}'),\r\n progressImageUrl: assessment.progressImageUrl,\r\n progressImageLeftUrl: assessment.progressImageLeftUrl,\r\n progressImageRightUrl: assessment.progressImageRightUrl,\r\n };\r\n\r\n this.imgFoodItem = assessment.progressImageUrl;\r\n if (!this.imgFoodItem || this.imgFoodItem === '') {\r\n this.imgFoodItem = null;\r\n }\r\n if(this.UserId) {\r\n this.assessmentSettingService.getAssessmentSettingsByUserId(this.UserId)\r\n .pipe(finalize(()=> {\r\n this.isLoading = false;\r\n })).subscribe((data) => {\r\n if(data) {\r\n this.formlyForm = JSON.parse(data.customQuestion);\r\n this.isImageProgressUpload = data.uploadProgressImages;\r\n } else {\r\n this.formlyForm = defaultFormValues;\r\n }\r\n });\r\n } else {\r\n this.PlanViewPatientsService.get(null, this.PatientGuid)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((patient) => {\r\n this.options.formState.customData.isImperial = patient.isPreferredUnitImperial;\r\n console.log('Imperial', patient.isPreferredUnitImperial);\r\n this.assessmentSettingService.getAssessmentSettingsByUserId(patient.createdByUserId)\r\n .pipe(finalize(()=> {\r\n this.isLoading = false;\r\n })).subscribe((data) => {\r\n console.log(data);\r\n if(data) {\r\n this.formlyForm = JSON.parse(data.customQuestion);\r\n this.isImageProgressUpload = data.uploadProgressImages;\r\n } else {\r\n this.formlyForm = defaultFormValues;\r\n }\r\n });\r\n });\r\n }\r\n super.resetDirty();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Event handler for uploading the image\r\n * @param event Event object\r\n */\r\n OnInputImageFileChanged(event, type: AssessmentProgressImageType) {\r\n if (event) {\r\n this.model['fileProgressImage' + type] = event;\r\n this.model['progressImage' + type + 'Url'] = null;\r\n }\r\n }\r\n\r\n onResetFoodImage(type: AssessmentProgressImageType) {\r\n console.log(type);\r\n this.model['fileProgressImage' + type] = null;\r\n this.model['progressImage' + type + 'Url'] = null;\r\n }\r\n\r\n /**\r\n * Validator that validates the number with the ##.# pattern\r\n */\r\n validateNumber = Utility.validateNumber;\r\n}\r\n","\r\n \r\n
Edit Assessment Data
\r\n\r\n
\r\n \r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n Patient: {{PatientName}}\r\n
\r\n
\r\n\r\n
\r\n
\r\n Dates: {{StartDate}} - {{EndDate}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { AssessmentDescriptiveValues } from \"app/pages/CalorieFriend/PatientSheetView/Assessments/DescriptiveValues\";\r\nimport { getKeyValueFromJson } from \"./utility\";\r\n\r\nexport const defaultFormValues = [\r\n {\r\n key: 'height',\r\n type: 'nbInputNumber',\r\n name: 'Height',\r\n templateOptions: {\r\n minLength: 0,\r\n maxLength: 10,\r\n label: 'Height',\r\n placeholder: 'Height',\r\n },\r\n defaultField: true,\r\n },\r\n {\r\n key: 'weight',\r\n type: 'nbWeight',\r\n name: 'Weight',\r\n templateOptions: {\r\n minLength: 0,\r\n maxLength: 10,\r\n label: 'Weight',\r\n placeholder: 'Weight',\r\n },\r\n defaultField: true,\r\n },\r\n {\r\n key: 'bodyFat',\r\n type: 'nbInputNumber',\r\n name: 'Body Fat',\r\n templateOptions: {\r\n min: 0,\r\n max: 100,\r\n pattern: '^-?[0-9]*\\.?[0-9]{0,1}$',\r\n label: 'Body Fat',\r\n placeholder: 'Body Fat',\r\n },\r\n defaultField: true,\r\n },\r\n {\r\n key: 'mealPlanCompliance',\r\n type: 'nbSelect',\r\n name: 'Meal Plan Compliance',\r\n templateOptions: {\r\n required: true,\r\n label: 'Meal Plan Compliance',\r\n placeholder: \"Meal Plan Compliance\",\r\n options: getKeyValueFromJson(AssessmentDescriptiveValues.MealPlanComplianceValues),\r\n },\r\n defaultField: true,\r\n },\r\n {\r\n key: 'energyLevel',\r\n type: 'nbSelect',\r\n name: 'Energy Level',\r\n templateOptions: {\r\n required: true,\r\n options: getKeyValueFromJson(AssessmentDescriptiveValues.EnergyLevelValues),\r\n label: 'Energy Level',\r\n placeholder: 'Energy Level',\r\n },\r\n defaultField: true,\r\n },\r\n {\r\n key: 'stressLevel',\r\n type: 'nbSelect',\r\n name: 'Stress Level',\r\n templateOptions: {\r\n required: true,\r\n options: getKeyValueFromJson(AssessmentDescriptiveValues.StressLevelValues),\r\n label: 'Stress Level',\r\n placeholder: 'Stress Level',\r\n },\r\n defaultField: true,\r\n },\r\n {\r\n key: 'sleepQuality',\r\n type: 'nbSelect',\r\n name: 'Sleep Quality',\r\n templateOptions: {\r\n required: true,\r\n options: getKeyValueFromJson(AssessmentDescriptiveValues.SleepQualityValues),\r\n label: 'Sleep Quality',\r\n placeholder: 'Sleep Quality',\r\n },\r\n defaultField: true,\r\n },\r\n {\r\n key: 'comment',\r\n type: 'nbTextarea',\r\n name: 'Comment',\r\n templateOptions: {\r\n minLength: 0,\r\n maxLength: 1000,\r\n label: 'Comment',\r\n placeholder: 'Comment',\r\n },\r\n defaultField: true,\r\n },\r\n];\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormBuilder,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { NbDialogRef, NbDialogService, NbToastrService } from '@nebular/theme';\r\n\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport {\r\n DEFAULT_DURATION,\r\n MealPlan,\r\n MealPlanData,\r\n TemplatePlan,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport { Utility } from 'app/@core/utils/utility';\r\nimport * as moment from 'moment';\r\nimport { finalize } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-template-create',\r\n templateUrl: './template-create.component.html',\r\n styleUrls: ['./template-create.component.scss'],\r\n})\r\nexport class MealPlanTemplateCreateComponent\r\n extends BaseComponentCanDeactivate\r\n implements OnInit\r\n{\r\n planGenerateForm: FormGroup;\r\n templatePlan: MealPlan = null;\r\n isPublic: boolean = false;\r\n isLoading: boolean = false;\r\n\r\n get templateName(): AbstractControl {\r\n return this.planGenerateForm.get('templateName');\r\n }\r\n get templateDescription(): AbstractControl {\r\n return this.planGenerateForm.get('templateDescription');\r\n }\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private mealPlanService: MealPlanData,\r\n protected ref: NbDialogRef,\r\n private toasterService: NbToastrService,\r\n private router: Router,\r\n dialogService: NbDialogService\r\n ) {\r\n super(dialogService);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.templatePlan)\r\n this.templatePlan = {\r\n id: -1,\r\n days: null,\r\n name: 'New Plan',\r\n description: '',\r\n notes: '',\r\n patientID: null,\r\n createdDate: null,\r\n active: false,\r\n zOrder: Utility.INT32_MAX,\r\n duration: DEFAULT_DURATION,\r\n };\r\n\r\n this.initForm();\r\n }\r\n\r\n initForm(): void {\r\n this.planGenerateForm = this.fb.group({\r\n templateName: this.fb.control(`Untitled Meal Plan (${moment().format('MMM DD, YYYY')})`, [\r\n Validators.required,\r\n Validators.minLength(1),\r\n Validators.maxLength(50),\r\n ]),\r\n templateDescription: this.fb.control('', [Validators.maxLength(500)]),\r\n });\r\n super.initForm(this.planGenerateForm);\r\n }\r\n\r\n onCreateTemplate(): void {\r\n if (!this.templatePlan) return;\r\n\r\n const template: TemplatePlan = {\r\n name: this.templateName.value,\r\n description: this.templateDescription.value,\r\n thePlan: this.templatePlan,\r\n isPublic: this.isPublic,\r\n };\r\n\r\n super.resetDirty();\r\n this.isLoading = true;\r\n this.mealPlanService.CreateTemplate(template)\r\n .pipe(finalize(() => this.isLoading = false))\r\n .subscribe(\r\n (res: TemplatePlan) => {\r\n this.router.navigate([\r\n '/pages/CalorieFriend/Template/', res.id\r\n ]);\r\n this.toasterService.success('', `Item template has been created!`);\r\n this.ref.close();\r\n },\r\n () =>\r\n this.toasterService.danger('', 'Problem with creating the template.')\r\n );\r\n }\r\n\r\n onCancel(): void {\r\n super.back(() => this.ref.close());\r\n }\r\n\r\n onTemplateNameChange(): void {\r\n if (this.templateName.value === '')\r\n this.templateName.setValue('Untitled Meal Plan');\r\n }\r\n\r\n get valid(): boolean {\r\n return this.planGenerateForm.valid && !!this.templatePlan;\r\n }\r\n}\r\n","\r\n \r\n
Create Plan Template
\r\n
\r\n\r\n \r\n
\r\n
    \r\n
  • \r\n
    \r\n Name\r\n
    \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n
    \r\n
  • \r\n
    \r\n Description\r\n
    \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexports.getSymbolIterator = getSymbolIterator;\nexports.iterator = getSymbolIterator();\nexports.$$iterator = exports.iterator;\n//# sourceMappingURL=iterator.js.map","import { NgModule } from '@angular/core';\r\nimport { NbEvaIconsModule } from '@nebular/eva-icons';\r\nimport { ChartModule } from 'angular2-chartjs';\r\nimport { NbCheckboxModule, NbCardModule, NbIconModule } from '@nebular/theme';\r\n\r\nimport { ComponentsModule } from '../../../../../../../@components/components.module';\r\nimport { GraphModule } from 'app/admin/public-foods/meal-metrics-graph/meal-metrics-graph.module';\r\n\r\nimport {\r\n MealPresentationReportComponent,\r\n MobileMealPresentationComponent,\r\n MealPresentationComponent,\r\n} from './meal-presentation.component';\r\nimport { MealItemsPresentationModule } from '../MealItemsPresentation/meal-items-presentation.module';\r\nimport { MealItemPresentationModule } from '../MealItemPresentation/meal-item-presentation.module';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nconst NB_MODULES = [\r\n NbEvaIconsModule,\r\n NbIconModule,\r\n NbCheckboxModule,\r\n NbCardModule,\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ...NB_MODULES,\r\n GraphModule,\r\n ChartModule,\r\n ComponentsModule,\r\n MealItemPresentationModule,\r\n MealItemsPresentationModule,\r\n ],\r\n declarations: [\r\n MealPresentationReportComponent,\r\n MobileMealPresentationComponent,\r\n MealPresentationComponent,\r\n ],\r\n exports: [\r\n MealPresentationReportComponent,\r\n MobileMealPresentationComponent,\r\n MealPresentationComponent,\r\n ],\r\n})\r\nexport class MealPresentationModule {}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nvar rxSubscriber_1 = require(\"../symbol/rxSubscriber\");\nvar Observer_1 = require(\"../Observer\");\nfunction toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber_1.Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriber_1.rxSubscriber]) {\n return nextOrObserver[rxSubscriber_1.rxSubscriber]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber_1.Subscriber(Observer_1.empty);\n }\n return new Subscriber_1.Subscriber(nextOrObserver, error, complete);\n}\nexports.toSubscriber = toSubscriber;\n//# sourceMappingURL=toSubscriber.js.map","// Get the chart variable\nvar Chart = require('chart.js');\nChart = typeof(Chart) === 'function' ? Chart : window.Chart;\n\n// Configure plugin namespace\nChart.Annotation = Chart.Annotation || {};\n\nChart.Annotation.drawTimeOptions = {\n\tafterDraw: 'afterDraw',\n\tafterDatasetsDraw: 'afterDatasetsDraw',\n\tbeforeDatasetsDraw: 'beforeDatasetsDraw'\n};\n\nChart.Annotation.defaults = {\n\tdrawTime: 'afterDatasetsDraw',\n\tdblClickSpeed: 350, // ms\n\tevents: [],\n\tannotations: []\n};\n\nChart.Annotation.labelDefaults = {\n\tbackgroundColor: 'rgba(0,0,0,0.8)',\n\tfontFamily: Chart.defaults.global.defaultFontFamily,\n\tfontSize: Chart.defaults.global.defaultFontSize,\n\tfontStyle: 'bold',\n\tfontColor: '#fff',\n\txPadding: 6,\n\tyPadding: 6,\n\tcornerRadius: 6,\n\tposition: 'center',\n\txAdjust: 0,\n\tyAdjust: 0,\n\tenabled: false,\n\tcontent: null\n};\n\nChart.Annotation.Element = require('./element.js')(Chart);\n\nChart.Annotation.types = {\n\tline: require('./types/line.js')(Chart),\n\tbox: require('./types/box.js')(Chart)\n};\n\nvar annotationPlugin = require('./annotation.js')(Chart);\n\nmodule.exports = annotationPlugin;\nChart.pluginService.register(annotationPlugin);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hostReportError_1 = require(\"./hostReportError\");\nexports.subscribeToPromise = function (promise) { return function (subscriber) {\n promise.then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, hostReportError_1.hostReportError);\n return subscriber;\n}; };\n//# sourceMappingURL=subscribeToPromise.js.map","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom (blob, opts) {\n if (typeof opts === 'undefined') opts = { autoBom: false }\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = { autoBom: !opts }\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type })\n }\n return blob\n}\n\nfunction download (url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled (url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {}\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click (node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = _global.saveAs || (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs () { /* noop */ }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs (blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n var a = document.createElement('a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s\n setTimeout(function () { click(a) }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs (blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () { click(a) })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs (blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s\n }\n }\n)\n\n_global.saveAs = saveAs.saveAs = saveAs\n\nif (typeof module !== 'undefined') {\n module.exports = saveAs;\n}\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { Observable } from 'rxjs';\r\nimport { NbToastrService, NbDialogService } from '@nebular/theme';\r\nimport { NbTokenService } from '@nebular/auth';\r\nimport {\r\n SearchCountryField,\r\n CountryISO,\r\n PhoneNumberFormat,\r\n} from 'ngx-intl-tel-input';\r\n\r\nimport {\r\n GoalData,\r\n GoalView,\r\n} from '../../../../@core/interfaces/common/CalorieFriend/goals';\r\n\r\nimport {\r\n Patient,\r\n PatientData,\r\n} from '../../../../@core/interfaces/common/CalorieFriend/patients';\r\nimport {\r\n EMAIL_PATTERN,\r\n PHONE_PATTERN,\r\n} from '../../../../@auth/components/constants';\r\nimport { Utility } from '../../../../@core/utils/utility';\r\nimport {\r\n CountryData,\r\n Country,\r\n} from '../../../../@core/interfaces/common/countries';\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { PoundsAndKgComponent } from '../../../../../app/@components/pounds-and-kg/pounds-and-kg.component';\r\nimport { GridData } from 'app/@core/interfaces/common/grid-data';\r\nimport { PatientSubscriptionMeta } from 'app/@core/interfaces/common/CalorieFriend/patient-subscription';\r\nimport { PatientSubscriptionsMetaService } from 'app/@core/backend/common/services/CalorieFriend/patient-subscriptions-meta.service';\r\nimport { ConversionFactorsData } from 'app/@core/utils/conversionFactors.data';\r\n\r\n/**\r\n * Component for Patient's general information on the Patient Sheet View\r\n */\r\n@Component({\r\n selector: 'app-patient-general-info',\r\n templateUrl: './patient-general-info.component.html',\r\n styleUrls: [\r\n './patient-general-info.component.scss',\r\n '../../global.component.scss',\r\n ],\r\n})\r\nexport class PatientGeneralInfoComponent\r\n implements OnInit {\r\n PatientForm: FormGroup;\r\n\r\n ConversionFactorsPreference = ConversionFactorsData;\r\n\r\n AddPaitentLabel = 'Add New Patient';\r\n UpdatePaitentLabel = 'Update Patient';\r\n PaitentLabel = '';\r\n\r\n SavePatientLabel = 'Save Client General Info';\r\n GeneralInfoLabel = 'General Info';\r\n FirstNameLabel = 'First Name';\r\n NameLabel = 'Name';\r\n LastNameLabel = 'Last Name';\r\n EmailLabel = 'Email Address';\r\n BirthDateLabel = 'Date of Birth';\r\n AddressInfoLabel = 'Address';\r\n AddressLine1Label = 'Line 1';\r\n AddressLine2Label = 'Line 2';\r\n CountryInfoLabel = 'Country';\r\n PostalCodeInfoLabel = 'Zip / Postal Code';\r\n PhoneInfoLabel = 'Phone Number';\r\n\r\n BiometricInfoLabel = 'BioMetric Info';\r\n PreferencesLabel = 'Preferences';\r\n PreferredUnitLabel = 'Preferred Units';\r\n HeightLabel = 'Height';\r\n WeightLabel = 'Weight';\r\n BodyFatLabel = 'Body Fat %';\r\n SourceLabel = 'Source';\r\n BMILabel = 'BMI';\r\n MeasureDateLabel = 'Date of Measure';\r\n\r\n Updated = 'Updated';\r\n ProblemCeatingPatient = 'A problem occurred creating the patient.';\r\n\r\n SearchCountryField = SearchCountryField;\r\n CountryISO = CountryISO;\r\n PhoneNumberFormat = PhoneNumberFormat;\r\n preferredCountries: CountryISO[] = [\r\n CountryISO.UnitedStates,\r\n CountryISO.Canada,\r\n ];\r\n\r\n /**\r\n * Input Property which identifies the patient ID (number format)\r\n */\r\n @Input('PatientId') PatientId: number = -1;\r\n\r\n /**\r\n * Input Property which identifies the patient NotificationToken (GUID format)\r\n */\r\n @Input('NotificationToken') NotificationToken: string = null;\r\n\r\n /**\r\n * Input Property which identifies if it is for View or Edit\r\n */\r\n @Input('IsView') IsView: boolean = false;\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n GoalListSource: Observable> = null;\r\n Goals: Array = null;\r\n public isLoading: boolean = false;\r\n\r\n /** Patient ctor */\r\n constructor(\r\n private fb: FormBuilder,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private patientsService: PatientData,\r\n private tokenService: NbTokenService,\r\n private toasterService: NbToastrService,\r\n private countriesService: CountryData,\r\n private dialogService: NbDialogService,\r\n private goalsService: GoalData,\r\n private patientSubscriptionsMetaService: PatientSubscriptionsMetaService\r\n ) {\r\n //super(dialogService);\r\n }\r\n\r\n get Id() {\r\n return this.PatientForm.get('Id');\r\n }\r\n get FirstName() {\r\n return this.PatientForm.get('FirstName');\r\n }\r\n get LastName() {\r\n return this.PatientForm.get('LastName');\r\n }\r\n get EMail() {\r\n return this.PatientForm.get('EMail');\r\n }\r\n get DateOfBirth() {\r\n return this.PatientForm.get('DateOfBirth');\r\n }\r\n get AddressLine1() {\r\n return this.PatientForm.get('AddressLine1');\r\n }\r\n get AddressLine2() {\r\n return this.PatientForm.get('AddressLine2');\r\n }\r\n get Country() {\r\n return this.PatientForm.get('Country');\r\n }\r\n get ZipPostalCode() {\r\n return this.PatientForm.get('ZipPostalCode');\r\n }\r\n get PhoneNumber() {\r\n return this.PatientForm.get('PhoneNumber');\r\n }\r\n\r\n get Height() {\r\n return this.PatientForm.get('Height');\r\n }\r\n get Weight() {\r\n return this.PatientForm.get('Weight');\r\n }\r\n get BodyFat() {\r\n return this.PatientForm.get('BodyFat');\r\n }\r\n get Source() {\r\n return this.PatientForm.get('Source');\r\n }\r\n get DateOfMeasure() {\r\n return this.PatientForm.get('DateOfMeasure');\r\n }\r\n get IsPreferredUnitImperial() {\r\n return this.PatientForm.get('IsPreferredUnitImperial');\r\n }\r\n get genderFemale() {\r\n return this.PatientForm.get('genderFemale');\r\n }\r\n\r\n get SubscriptionId() {\r\n return this.PatientForm.get('SubscriptionId');\r\n }\r\n get BMI() {\r\n if (!this.Height.value || this.Height.value === 0) return 'N/A';\r\n return (\r\n (this.Weight.value / (this.Height.value * this.Height.value)) *\r\n 10000\r\n ).toFixed(1);\r\n }\r\n\r\n Countries: Observable;\r\n subscriptionData: GridData;\r\n\r\n /**\r\n * Initializes the component.\r\n * It creates the form to submit the general information of the patient\r\n * and loads the patient data.\r\n */\r\n ngOnInit(): void {\r\n this.InitPatientForm();\r\n this.patientSubscriptionsMetaService.list({}).subscribe((data: GridData) => {\r\n this.subscriptionData = data;\r\n });\r\n let id = this.route.snapshot.paramMap.get('PatientId');\r\n\r\n if (\r\n (id == null || id === undefined) &&\r\n this.PatientId != null &&\r\n this.PatientId !== undefined &&\r\n this.PatientId > 0\r\n )\r\n id = this.PatientId.toString();\r\n\r\n if (this.NotificationToken == null || this.NotificationToken === undefined)\r\n this.NotificationToken =\r\n this.route.snapshot.paramMap.get('NotificationToken');\r\n\r\n if (\r\n (id !== null && id !== undefined) ||\r\n (this.NotificationToken != null && this.NotificationToken !== undefined)\r\n ) {\r\n this.loadPatientData(id);\r\n this.PaitentLabel = this.UpdatePaitentLabel;\r\n } else {\r\n this.PaitentLabel = this.AddPaitentLabel;\r\n }\r\n\r\n // load countries\r\n this.Countries = this.countriesService.list();\r\n\r\n // load goals\r\n this.GoalListSource = this.goalsService.GoalsList(\r\n +id,\r\n this.NotificationToken,\r\n );\r\n this.refreshGoals();\r\n\r\n //super.resetDirty();\r\n }\r\n\r\n refreshGoals() {\r\n this.GoalListSource.subscribe((data) => {\r\n this.Goals = data.items;\r\n //super.resetDirty();\r\n });\r\n }\r\n\r\n /**\r\n * Initializes the Patient Form.\r\n */\r\n InitPatientForm() {\r\n this.PatientForm = this.fb.group({\r\n Id: this.fb.control(''),\r\n FirstName: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(0),\r\n Validators.maxLength(50),\r\n ]),\r\n LastName: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(0),\r\n Validators.maxLength(50),\r\n ]),\r\n EMail: this.fb.control('', [\r\n Validators.required,\r\n Validators.pattern(EMAIL_PATTERN),\r\n ]),\r\n DateOfBirth: this.fb.control(new Date(new Date().setHours(0, 0, 0, 0)), [\r\n Validators.required,\r\n ]),\r\n AddressLine1: this.fb.control('', [\r\n Validators.minLength(0),\r\n Validators.maxLength(1024),\r\n ]),\r\n AddressLine2: this.fb.control('', [\r\n Validators.minLength(0),\r\n Validators.maxLength(1024),\r\n ]),\r\n Country: this.fb.control('', [\r\n Validators.minLength(0),\r\n Validators.maxLength(1024),\r\n ]),\r\n ZipPostalCode: this.fb.control('', [\r\n Validators.minLength(0),\r\n Validators.maxLength(25),\r\n ]),\r\n PhoneNumber: this.fb.control(''),\r\n Height: this.fb.control('', [\r\n Validators.minLength(0),\r\n Validators.maxLength(15),\r\n ]),\r\n Weight: this.fb.control('', [\r\n Validators.minLength(0),\r\n Validators.maxLength(15),\r\n ]),\r\n BodyFat: this.fb.control('', [\r\n Validators.required,\r\n Validators.min(0),\r\n Validators.max(100),\r\n Validators.pattern('^-?[0-9]*.?[0-9]{0,1}$'),\r\n ]),\r\n // Source: this.fb.control('Clinical', [\r\n // Validators.required,\r\n // Validators.minLength(0),\r\n // Validators.maxLength(25),\r\n // ]),\r\n // DateOfMeasure: this.fb.control(\r\n // new Date(new Date().setHours(0, 0, 0, 0)),\r\n // [Validators.required],\r\n // ),\r\n IsPreferredUnitImperial: this.fb.control(false),\r\n genderFemale: this.fb.control(false),\r\n conversionFactorPreference: this.fb.control(null),\r\n checkInRequest: this.fb.control(true),\r\n // SubscriptionId: this.fb.control(0)\r\n });\r\n\r\n //super.initForm(this.PatientForm);\r\n }\r\n\r\n /**\r\n * Converts the object given as a parameter to the 'Patient' type\r\n * @param value Object to convert into 'Patient' type\r\n */\r\n ConvertToPatient(value: any): Patient {\r\n console.log(value);\r\n const patient: Patient = {\r\n ...value,\r\n PhoneNumber: (value.PhoneNumber ? value.PhoneNumber.internationalNumber : ''),\r\n };\r\n return patient;\r\n }\r\n\r\n /**\r\n * It converts the inputs of the form into the Patient type\r\n * and submit the form to save them\r\n */\r\n SavePatient() {\r\n if (this.IsView) return;\r\n\r\n const patient: Patient = this.ConvertToPatient(this.PatientForm.value);\r\n\r\n patient.id = this.PatientId;\r\n patient.updateBiometrics = true;\r\n patient.updateGeneralInfo = true;\r\n this.isLoading = true;\r\n\r\n const observable =\r\n patient.id === null\r\n ? this.patientsService.create(patient)\r\n : this.patientsService.update(patient, this.NotificationToken);\r\n\r\n //super.resetDirty();\r\n\r\n observable.pipe(takeUntil(this.unsubscribe$),\r\n finalize(() => this.isLoading = false)\r\n ).subscribe(\r\n () => {\r\n this.patientsService.setPatientUpdated(this.PatientId);\r\n this.handleSuccessResponse();\r\n },\r\n (err) => {\r\n this.handleWrongResponse();\r\n },\r\n );\r\n\r\n for (const goal of this.Goals) {\r\n if (goal.goalType.toLowerCase() === 'weight') {\r\n const SaveGoal = {\r\n GoalID: '',\r\n GoalName: goal.goalName,\r\n GoalType: 2,\r\n GoalValue: goal.goalValue,\r\n StartValue: goal.startValue,\r\n id: goal.id,\r\n ID: goal.id,\r\n PatientID: goal.patientID,\r\n targetDate: goal.targetDate,\r\n };\r\n\r\n this.goalsService\r\n .update(SaveGoal)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(\r\n () => {},\r\n (err) => {\r\n const t = 0;\r\n },\r\n );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Method to navigate to the patients list page\r\n */\r\n Back() {\r\n this.router.navigate(['/pages/CalorieFriend/Patients']);\r\n }\r\n\r\n /**\r\n * Handler of Success event of submit\r\n */\r\n handleSuccessResponse() {\r\n this.toasterService.success('', `Item ${this.Updated}!`);\r\n }\r\n\r\n /**\r\n * Handler of Fail event of submit\r\n */\r\n handleWrongResponse() {\r\n this.toasterService.danger('', this.ProblemCeatingPatient);\r\n }\r\n\r\n /**\r\n * Loads the data of the Patient given by {id}\r\n * @param id The identifier of the Patient\r\n */\r\n loadPatientData(id) {\r\n if (\r\n (id != null && id !== undefined) ||\r\n (this.NotificationToken != null && this.NotificationToken !== undefined)\r\n ) {\r\n this.isLoading = true;\r\n this.patientsService\r\n .get(id, this.NotificationToken)\r\n .pipe(\r\n takeUntil(this.unsubscribe$),\r\n finalize(() => this.isLoading = false)\r\n )\r\n .subscribe((patient) => {\r\n this.PatientId = patient.id;\r\n\r\n const measureDateUtc = new Date(patient.dateOfMeasure);\r\n const measureDateLocal = new Date(\r\n measureDateUtc.getTime() -\r\n measureDateUtc.getTimezoneOffset() * 60000,\r\n );\r\n\r\n const birthDateUtc = new Date(patient.dateOfBirth);\r\n const birthDateLocal = new Date(\r\n birthDateUtc.getTime() - birthDateUtc.getTimezoneOffset() * 60000,\r\n );\r\n\r\n this.PatientForm.patchValue({\r\n Id: patient.id,\r\n FirstName: patient.firstName,\r\n LastName: patient.lastName,\r\n EMail: patient.eMail,\r\n DateOfBirth: birthDateLocal,\r\n AddressLine1: patient.addressLine1,\r\n AddressLine2: patient.addressLine2,\r\n Country: patient.country,\r\n ZipPostalCode: patient.zipPostalCode,\r\n PhoneNumber: patient.phoneNumber,\r\n Height: patient.height,\r\n Weight: patient.weight,\r\n BodyFat: patient.bodyFat,\r\n Source: patient.source,\r\n DateOfMeasure: measureDateLocal,\r\n IsPreferredUnitImperial: patient.isPreferredUnitImperial,\r\n genderFemale: patient.genderFemale,\r\n conversionFactorPreference: patient.conversionFactorPreference,\r\n checkInRequest: patient.checkInRequest,\r\n });\r\n\r\n //super.resetDirty();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Validator that validates the number with the ##.# pattern\r\n */\r\n validateNumber = Utility.validateNumber;\r\n\r\n ChangeScale($event) {\r\n return;\r\n\r\n $event.stopImmediatePropagation();\r\n\r\n const IsImperial = !this.IsPreferredUnitImperial.value;\r\n\r\n // patient original weight\r\n const AdjustWeight = new PoundsAndKgComponent();\r\n\r\n // current weight\r\n if (IsImperial) AdjustWeight._value = this.Weight.value;\r\n else AdjustWeight.pounds = this.Weight.value;\r\n\r\n AdjustWeight.updateValues(!IsImperial);\r\n\r\n this.PatientForm.patchValue({\r\n Weight: IsImperial ? AdjustWeight.pounds : AdjustWeight._value,\r\n });\r\n\r\n for (const goal of this.Goals) {\r\n if (goal.goalType.toLowerCase() === 'weight') {\r\n // current weight\r\n if (IsImperial) AdjustWeight._value = goal.goalValue;\r\n else AdjustWeight.pounds = goal.goalValue;\r\n\r\n AdjustWeight.updateValues(!IsImperial);\r\n\r\n if (IsImperial) goal.goalValue = AdjustWeight.pounds;\r\n else goal.goalValue = AdjustWeight._value;\r\n\r\n // start weight\r\n if (IsImperial) AdjustWeight._value = goal.startValue;\r\n else AdjustWeight.pounds = goal.startValue;\r\n\r\n AdjustWeight.updateValues(!IsImperial);\r\n\r\n if (IsImperial) goal.startValue = AdjustWeight.pounds;\r\n else goal.startValue = AdjustWeight._value;\r\n }\r\n }\r\n }\r\n}\r\n","
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
Contact Info
\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n Name\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n Last Name\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n Email Address\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Mobile Number\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Date of Birth\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
Address
\r\n
\r\n\r\n \r\n
\r\n
\r\n Address\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Country\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{ item.name }}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Zip / Postal Code\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
BioMetric Info
\r\n
\r\n\r\n \r\n
\r\n
\r\n Height\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Weight\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n BMI\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n Body Fat %\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n Date of Measure\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n
Preferences
\r\n
\r\n\r\n \r\n
\r\n
\r\n Gender\r\n
\r\n
\r\n \r\n Male\r\n Female\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n Preferred Units\r\n
\r\n
\r\n
\r\n \r\n Metrics\r\n Imperial\r\n \r\n
\r\n
\r\n
\r\n
\r\n Conversion factor preference\r\n
\r\n \r\n {{ item.text }}\r\n \r\n
\r\n
\r\n
\r\n
\r\n Check In Request\r\n
\r\n
\r\n
\r\n \r\n Send Check In Requests\r\n Don't send Check In Requests\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n Save Client General Info\r\n \r\n
\r\n
\r\n \r\n\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar subscribeTo_1 = require(\"../util/subscribeTo\");\nvar scheduled_1 = require(\"../scheduled/scheduled\");\nfunction from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable_1.Observable) {\n return input;\n }\n return new Observable_1.Observable(subscribeTo_1.subscribeTo(input));\n }\n else {\n return scheduled_1.scheduled(input, scheduler);\n }\n}\nexports.from = from;\n//# sourceMappingURL=from.js.map","module.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\n\tvar helpers = require('./helpers.js')(Chart);\n\tvar events = require('./events.js')(Chart);\n\n\tvar annotationTypes = Chart.Annotation.types;\n\n\tfunction setAfterDataLimitsHook(axisOptions) {\n\t\thelpers.decorate(axisOptions, 'afterDataLimits', function(previous, scale) {\n\t\t\tif (previous) previous(scale);\n\t\t\thelpers.adjustScaleRange(scale);\n\t\t});\n\t}\n\n\tfunction draw(drawTime) {\n\t\treturn function(chartInstance, easingDecimal) {\n\t\t\tvar defaultDrawTime = chartInstance.annotation.options.drawTime;\n\n\t\t\thelpers.elements(chartInstance)\n\t\t\t\t.filter(function(element) {\n\t\t\t\t\treturn drawTime === (element.options.drawTime || defaultDrawTime);\n\t\t\t\t})\n\t\t\t\t.forEach(function(element) {\n\t\t\t\t\telement.transition(easingDecimal).draw();\n\t\t\t\t});\n\t\t};\n\t}\n\n\treturn {\n\t\tbeforeInit: function(chartInstance) {\n\t\t\tvar chartOptions = chartInstance.options;\n\n\t\t\t// Initialize chart instance plugin namespace\n\t\t\tvar ns = chartInstance.annotation = {\n\t\t\t\telements: {},\n\t\t\t\toptions: helpers.initConfig(chartOptions.annotation || {}),\n\t\t\t\tonDestroy: [],\n\t\t\t\tfirstRun: true,\n\t\t\t\tsupported: false\n\t\t\t};\n\n\t\t\t// Add the annotation scale adjuster to each scale's afterDataLimits hook\n\t\t\tchartInstance.ensureScalesHaveIDs();\n\t\t\tif (chartOptions.scales) {\n\t\t\t\tns.supported = true;\n\t\t\t\tchartHelpers.each(chartOptions.scales.xAxes, setAfterDataLimitsHook);\n\t\t\t\tchartHelpers.each(chartOptions.scales.yAxes, setAfterDataLimitsHook);\n\t\t\t}\n\t\t},\n\t\tbeforeUpdate: function(chartInstance) {\n\t\t\tvar ns = chartInstance.annotation;\n\n\t\t\tif (!ns.supported) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!ns.firstRun) {\n\t\t\t\tns.options = helpers.initConfig(chartInstance.options.annotation || {});\n\t\t\t} else {\n\t\t\t\tns.firstRun = false;\n\t\t\t}\n\n\t\t\tvar elementIds = [];\n\n\t\t\t// Add new elements, or update existing ones\n\t\t\tns.options.annotations.forEach(function(annotation) {\n\t\t\t\tvar id = annotation.id || helpers.objectId();\n\t\t\t\t\n\t\t\t\t// No element with that ID exists, and it's a valid annotation type\n\t\t\t\tif (!ns.elements[id] && annotationTypes[annotation.type]) {\n\t\t\t\t\tvar cls = annotationTypes[annotation.type];\n\t\t\t\t\tvar element = new cls({\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\toptions: annotation,\n\t\t\t\t\t\tchartInstance: chartInstance,\n\t\t\t\t\t});\n\t\t\t\t\telement.initialize();\n\t\t\t\t\tns.elements[id] = element;\n\t\t\t\t\tannotation.id = id;\n\t\t\t\t\telementIds.push(id);\n\t\t\t\t} else if (ns.elements[id]) {\n\t\t\t\t\t// Nothing to do for update, since the element config references\n\t\t\t\t\t// the same object that exists in the chart annotation config\n\t\t\t\t\telementIds.push(id);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Delete removed elements\n\t\t\tObject.keys(ns.elements).forEach(function(id) {\n\t\t\t\tif (elementIds.indexOf(id) === -1) {\n\t\t\t\t\tns.elements[id].destroy();\n\t\t\t\t\tdelete ns.elements[id];\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tafterScaleUpdate: function(chartInstance) {\n\t\t\thelpers.elements(chartInstance).forEach(function(element) {\n\t\t\t\telement.configure();\n\t\t\t});\n\t\t},\n\t\tbeforeDatasetsDraw: draw('beforeDatasetsDraw'),\n\t\tafterDatasetsDraw: draw('afterDatasetsDraw'),\n\t\tafterDraw: draw('afterDraw'),\n\t\tafterInit: function(chartInstance) {\n\t\t\t// Detect and intercept events that happen on an annotation element\n\t\t\tvar watchFor = chartInstance.annotation.options.events;\n\t\t\tif (chartHelpers.isArray(watchFor) && watchFor.length > 0) {\n\t\t\t\tvar canvas = chartInstance.chart.canvas;\n\t\t\t\tvar eventHandler = events.dispatcher.bind(chartInstance);\n\t\t\t\tevents.collapseHoverEvents(watchFor).forEach(function(eventName) {\n\t\t\t\t\tchartHelpers.addEvent(canvas, eventName, eventHandler);\n\t\t\t\t\tchartInstance.annotation.onDestroy.push(function() {\n\t\t\t\t\t\tchartHelpers.removeEvent(canvas, eventName, eventHandler);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdestroy: function(chartInstance) {\n\t\t\tvar deregisterers = chartInstance.annotation.onDestroy;\n\t\t\twhile (deregisterers.length > 0) {\n\t\t\t\tderegisterers.pop()();\n\t\t\t}\n\t\t}\n\t};\n};\n","import { Component, ElementRef, OnInit, ChangeDetectorRef } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { FormBuilder, FormGroup, ValidationErrors, Validators } from '@angular/forms';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { NbDialogRef, NbDialogService, NbToastrService } from '@nebular/theme';\r\n\r\nimport { Utility } from '../../../../@core/utils/utility';\r\nimport {\r\n CustomExercise,\r\n CustomExerciseData,\r\n} from '../../../../@core/interfaces/common/CalorieFriend/custom-exercise';\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { UserData } from 'app/@core/interfaces/common/users';\r\nimport { ExerciseData } from 'app/@core/interfaces/common/CalorieFriend/exercise';\r\n\r\n/**\r\n * Component for creation/edition of a Custom Exercise item\r\n */\r\n@Component({\r\n selector: 'app-customexercise-def',\r\n templateUrl: './customexercise-def.component.html',\r\n styleUrls: ['./customexercise-def.component.scss'],\r\n})\r\nexport class CustomExerciseDefComponent\r\n extends BaseComponentCanDeactivate\r\n implements OnInit {\r\n get IsDirty() {\r\n return this.isDirty;\r\n }\r\n\r\n HeaderLabel = '';\r\n NewExerciseItemLabel = 'Add Exercise Item';\r\n EditExerciseItemLabel = 'Edit Exercise Item';\r\n\r\n ExerciseNameLabel = $localize`:@@ExerciseName:Exercise Name`;\r\n DescriptionLabel = 'Description';\r\n DefaultServingSizeLabel = $localize`:@@DefaultServingSize:Default Serving Size`;\r\n\r\n GeneralInfoLabel = 'Nutrition Facts';\r\n GeneralInfoSmallLabel = 'About 100 grams';\r\n\r\n CaloriesLabel = 'Calories';\r\n FatsLabel = $localize`:@@Fats:Fats`;\r\n SaturatedFatLabel = 'Saturated Fat';\r\n TransFatLabel = 'Trans Fat';\r\n\r\n CholesterolLabel = 'Cholesterol';\r\n SodiumLabel = 'Sodium';\r\n\r\n CarbohydrateLabel = $localize`:@@Carbohydrate:Carbohydrate`;\r\n FiberLabel = 'Fiber';\r\n SugarLabel = 'Sugar';\r\n ProteinLabel = $localize`:@@Protein:Protein`;\r\n AlcoholLabel = 'Alcohol';\r\n\r\n SaveLabel = 'Save Item';\r\n BackLabel = 'Back';\r\n Created = 'Created';\r\n Updated = 'Updated';\r\n ProblemSavingExerciseItem = 'Problem occurred saving the Exercise Item';\r\n DisableDate = '0';\r\n\r\n ExerciseItemForm: FormGroup;\r\n\r\n ID = 0;\r\n IsPublic: boolean = false;\r\n currentUserID: any = null;\r\n isLoading = false;\r\n\r\n get IsForEdit() {\r\n return true;\r\n }\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private dialogRef: NbDialogRef,\r\n private location: Location,\r\n private customExerciseService: CustomExerciseData,\r\n private usersService: UserData,\r\n private exerciseService: ExerciseData,\r\n private toasterService: NbToastrService,\r\n dialogService: NbDialogService,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n super(dialogService);\r\n const loadUser = this.usersService.getCurrentUser();\r\n loadUser.subscribe((user) => {\r\n this.currentUserID = user.id;\r\n });\r\n }\r\n\r\n get TitleLabel() {\r\n let label = '';\r\n if (!this.ID) {\r\n label = $localize`:@@AddExerciseItem:Add Exercise Item`;\r\n } else {\r\n if (!this.currentUserID) {\r\n label = 'Loading...';\r\n } else {\r\n label = $localize`:@@EditExerciseItem:Edit Exercise Item`;\r\n }\r\n }\r\n return label;\r\n }\r\n\r\n /**\r\n * Initializes the component\r\n */\r\n ngOnInit(): void {\r\n this.InitUserForm();\r\n\r\n if (this.ID === null || this.ID === 0) {\r\n this.HeaderLabel = this.NewExerciseItemLabel;\r\n this.DisableDate = '0';\r\n } else {\r\n this.HeaderLabel = this.EditExerciseItemLabel;\r\n this.loadExerciseItemData(this.ID);\r\n this.DisableDate = '0';\r\n }\r\n\r\n this.onChanges();\r\n }\r\n\r\n /**\r\n * Set up the event handlers of the input controls of the form\r\n * so it should calculate the total Calorie automatically reflecting the changes\r\n */\r\n onChanges(): void { }\r\n\r\n get Name() {\r\n return this.ExerciseItemForm.get('Name');\r\n }\r\n get ImageName() {\r\n return this.ExerciseItemForm.get('ImageName');\r\n }\r\n get VideoName() {\r\n return this.ExerciseItemForm.get('VideoName');\r\n }\r\n\r\n get ExerciseImageUrl() {\r\n return this.ExerciseItemForm.get('ExerciseImageUrl');\r\n }\r\n get ExerciseVideoUrl() {\r\n return this.ExerciseItemForm.get('ExerciseVideoUrl');\r\n }\r\n get YoutubeUrl() {\r\n return this.ExerciseItemForm.get('YoutubeUrl');\r\n }\r\n\r\n get exerciseVideoThumbnailUrl() {\r\n return this.ExerciseItemForm.get('exerciseVideoThumbnailUrl');\r\n }\r\n\r\n urlOrFileValidator(control: FormGroup): ValidationErrors | null {\r\n const url = control.get('YoutubeUrl');\r\n const file = control.get('ExerciseVideoUrl');\r\n const imageFile = control.get('ExerciseImageUrl');\r\n if(!(url?.value || file?.value) && !imageFile?.value) {\r\n return { 'addOne': true };\r\n }\r\n return url?.value && file?.value ? { 'urlOrFile': true } : null;\r\n}\r\n\r\n /**\r\n * Initializes the form to create/edit a custom exercise item\r\n */\r\n InitUserForm() {\r\n this.ExerciseItemForm = this.fb.group({\r\n Name: this.fb.control(null, [Validators.required, Validators.minLength(1)]),\r\n ImageName: this.fb.control(null, []),\r\n VideoName: this.fb.control(null, []),\r\n FileExerciseImage: this.fb.control(null, []),\r\n ExerciseImageUrl: this.fb.control(null, []),\r\n YoutubeUrl: this.fb.control(null, [Validators.pattern(/^https?:\\/\\/www\\.youtube\\.com\\/watch\\?v=([a-zA-Z0-9_-]{11})$/gi)]),\r\n FileExerciseVideo: this.fb.control(null, []),\r\n ExerciseVideoUrl: this.fb.control(null, []),\r\n exerciseVideoThumbnailUrl: this.fb.control(null, []),\r\n }, { validators: this.urlOrFileValidator });\r\n super.initForm(this.ExerciseItemForm);\r\n }\r\n\r\n /**\r\n * It closes the dialog if it is opened on it.\r\n * If not, it goes back to the previous page.\r\n */\r\n Back() {\r\n super.back(() => {\r\n if (this.dialogRef) this.dialogRef.close();\r\n else this.location.back();\r\n });\r\n }\r\n\r\n /**\r\n * Converts the object given as a parameter to the 'Exercise' type\r\n * @param value Object to convert into 'Exercise' type\r\n */\r\n ConvertToExerciseItem(value: any): CustomExercise {\r\n if (!value.ExerciseImageUrl || value.ExerciseImageUrl === 'null')\r\n value.ExerciseImageUrl = null;\r\n if (!value.ExerciseVideoUrl || value.ExerciseVideoUrl === 'null')\r\n value.ExerciseVideoUrl = null;\r\n\r\n const customExercise: CustomExercise = value;\r\n\r\n return customExercise;\r\n }\r\n\r\n /**\r\n * It converts the inputs of the form into the Custom Exercise type\r\n * and submit the form to save them\r\n */\r\n SaveExerciseItem() {\r\n const ExerciseItem: CustomExercise = this.ConvertToExerciseItem(\r\n this.ExerciseItemForm.value,\r\n );\r\n\r\n ExerciseItem.id = this.ID ?? 0;\r\n\r\n const observable =\r\n ExerciseItem.id === null || ExerciseItem.id === 0\r\n ? this.customExerciseService.create(ExerciseItem)\r\n : this.customExerciseService.update(ExerciseItem);\r\n\r\n super.resetDirty();\r\n this.isLoading = true;\r\n observable.pipe(takeUntil(this.unsubscribe$),finalize(()=> {\r\n this.isLoading = false;\r\n })).subscribe(\r\n () => {\r\n this.handleSuccessResponse();\r\n this.exerciseService.ClearCache();\r\n },\r\n (err) => {\r\n this.handleWrongResponse();\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Handler of Success event of submit\r\n */\r\n handleSuccessResponse() {\r\n super.resetDirty();\r\n\r\n if (this.ID === null)\r\n this.toasterService.success('', `Item ${this.Created}!`);\r\n else this.toasterService.success('', `Item ${this.Updated}!`);\r\n\r\n this.Back();\r\n }\r\n\r\n /**\r\n * Handler of Fail event of submit\r\n */\r\n handleWrongResponse() {\r\n this.toasterService.danger('', this.ProblemSavingExerciseItem);\r\n }\r\n\r\n replaceNullStringWithNull(value: string): string {\r\n if (!value || value === 'null' || value === 'undefined') return null;\r\n return value;\r\n }\r\n\r\n /**\r\n * Loads the data of the Custom Exercise given by {id}\r\n * @param id The identifier of the Custom Exercise item\r\n */\r\n loadExerciseItemData(id) {\r\n if (id) {\r\n this.customExerciseService\r\n .get(id)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((item) => {\r\n this.ExerciseItemForm.patchValue({\r\n ID: this.ID,\r\n Name: this.replaceNullStringWithNull(item.name),\r\n ImageName: this.replaceNullStringWithNull(item.imageName),\r\n VideoName: this.replaceNullStringWithNull(item.videoName),\r\n ExerciseImageUrl: this.replaceNullStringWithNull(item.exerciseImageUrl),\r\n ExerciseVideoUrl: this.replaceNullStringWithNull(item.exerciseVideoUrl),\r\n YoutubeUrl: this.replaceNullStringWithNull(item.youtubeUrl),\r\n exerciseVideoThumbnailUrl: this.replaceNullStringWithNull(item.exerciseVideoThumbnailUrl),\r\n });\r\n this.videoExerciseItem = this.replaceNullStringWithNull(item.exerciseVideoUrl);\r\n this.imgExerciseItem = this.replaceNullStringWithNull(item.exerciseImageUrl);\r\n if (!this.imgExerciseItem || this.imgExerciseItem === '') {\r\n this.imgExerciseItem = null;\r\n }\r\n this.ExerciseItemForm.updateValueAndValidity();\r\n super.resetDirty();\r\n });\r\n }\r\n }\r\n\r\n\r\n \r\n public getVideoUrl(source:string):string {\r\n return source + \"#t=0.001\";\r\n }\r\n\r\n onYoutubeUrlBlur(): void {\r\n let url: string = this.YoutubeUrl.value;\r\n\r\n //convert share link to youtube link\r\n //example: https://youtu.be/JTifbDPZEE8\r\n\r\n if (url.toLowerCase().indexOf(\"youtu.be/\") > 0) {\r\n let newUrl = \"https://www.youtube.com/watch?v=\" + url.split(\"youtu.be/\")[1];\r\n this.YoutubeUrl.setValue(newUrl);\r\n url = newUrl;\r\n }\r\n\r\n\r\n if (\r\n (this.imgExerciseItem == null || this.imgExerciseItem === '') &&\r\n url.indexOf('v=') > 0\r\n ) {\r\n const id: string = url.split('v=')[1];\r\n const finalUrl: string =\r\n 'https://img.youtube.com/vi/' + id + '/hqdefault.jpg';\r\n this.ExerciseImageUrl.setValue(finalUrl);\r\n this.imgExerciseItem = finalUrl;\r\n }\r\n }\r\n /**\r\n * Validator that validates the number with the ##.# pattern\r\n */\r\n validateNumber = Utility.validateNumber;\r\n\r\n imgHover: boolean = false;\r\n imgExerciseItem: any = null;\r\n videoExerciseItem: any = null;\r\n\r\n /**\r\n * Event handler of uploading the exercise image\r\n * @param event Event object\r\n */\r\n onUploadExerciseImage(event): void {\r\n if (event.target.files.length > 0) {\r\n const file = event.target.files[0];\r\n\r\n const mimeType = file.type;\r\n if (mimeType.match(/image\\/*/) == null) {\r\n return;\r\n }\r\n\r\n this.ExerciseItemForm.patchValue({\r\n FileExerciseImage: file,\r\n ExerciseImageUrl: ' ',\r\n });\r\n\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = (_event) => {\r\n this.imgExerciseItem = reader.result;\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of uploading the exercise image\r\n * @param event Event object\r\n */\r\n onUploadExerciseVideo(event): void {\r\n if (event.target.files.length > 0) {\r\n const file = event.target.files[0];\r\n console.log(file.size)\r\n if(file.size > 75 * 1024 * 1024) {\r\n this.toasterService.danger('', 'Video size should be less than 75MB');\r\n return;\r\n }\r\n const mimeType = file.type;\r\n if (mimeType.match(/video\\/*/) == null) {\r\n return;\r\n }\r\n\r\n this.ExerciseItemForm.patchValue({\r\n FileExerciseVideo: file,\r\n ExerciseVideoUrl: 'Uploaded',\r\n });\r\n\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = (_event) => {\r\n this.videoExerciseItem = reader.result;\r\n };\r\n }\r\n }\r\n\r\n /**\r\n * Event handler for resetting the video\r\n */\r\n onResetExerciseVideo(fileInput: ElementRef = null) {\r\n this.videoExerciseItem = null;\r\n this.ExerciseItemForm.patchValue({\r\n ExerciseVideoUrl: null,\r\n FileExerciseVideo: null,\r\n exerciseVideoThumbnailUrl: null,\r\n });\r\n fileInput.nativeElement.value = null;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n /**\r\n * Event handler for resetting the image\r\n */\r\n onResetExerciseImage(fileInput: ElementRef = null) {\r\n this.imgExerciseItem = null;\r\n this.ExerciseItemForm.patchValue({\r\n ExerciseImageUrl: null,\r\n });\r\n fileInput.nativeElement.value = null;\r\n }\r\n}\r\n","\r\n \r\n
\r\n {{TitleLabel}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
Exercise Name *\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
Video Url
(ie: YouTube Link should not be share link)
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
Video\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
Upload Image\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n Only one field can be filled at a time.\r\n
\r\n
\r\n There should be either image or video. {{ExerciseItemForm.value.ExerciseVideoUrl}}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n","/**\r\n * The class to hold the descriptive values for Assessment data\r\n */\r\nexport class AssessmentDescriptiveValues {\r\n static MealPlanComplianceValues: {[key: string]: string} = {};\r\n static EnergyLevelValues: {[key: string]: string} = {};\r\n static StressLevelValues: {[key: string]: string} = {};\r\n static SleepQualityValues: {[key: string]: string} = {};\r\n\r\n static initialize() {\r\n // meal plan compliance\r\n AssessmentDescriptiveValues.MealPlanComplianceValues['1'] = $localize`:@@MealPlanComplianceValue1:Did not comply with meal plan.`;\r\n AssessmentDescriptiveValues.MealPlanComplianceValues['2'] = $localize`:@@MealPlanComplianceValue2:Partially complied with meal plan.`;\r\n AssessmentDescriptiveValues.MealPlanComplianceValues['3'] = $localize`:@@MealPlanComplianceValue3:Complied with about half of meal plan.`;\r\n AssessmentDescriptiveValues.MealPlanComplianceValues['4'] = $localize`:@@MealPlanComplianceValue4:Mostly complied with meal plan.`;\r\n AssessmentDescriptiveValues.MealPlanComplianceValues['5'] = $localize`:@@MealPlanComplianceValue5:Fully complied with meal plan.`;\r\n\r\n // energy level\r\n AssessmentDescriptiveValues.EnergyLevelValues['1'] = $localize`:@@EnergyLevelValue1:No energy.`;\r\n AssessmentDescriptiveValues.EnergyLevelValues['2'] = $localize`:@@EnergyLevelValue2:Lower energy than usual.`;\r\n AssessmentDescriptiveValues.EnergyLevelValues['3'] = $localize`:@@EnergyLevelValue3:Average energy level.`;\r\n AssessmentDescriptiveValues.EnergyLevelValues['4'] = $localize`:@@EnergyLevelValue4:More energy than usual.`;\r\n AssessmentDescriptiveValues.EnergyLevelValues['5'] = $localize`:@@EnergyLevelValue5:High-energy level.`;\r\n\r\n // stress level\r\n AssessmentDescriptiveValues.StressLevelValues['1'] = $localize`:@@StressLevelValue1:Very stressed.`;\r\n AssessmentDescriptiveValues.StressLevelValues['2'] = $localize`:@@StressLevelValue2:More stress than usual.`;\r\n AssessmentDescriptiveValues.StressLevelValues['3'] = $localize`:@@StressLevelValue3:About the same stress as usual.`;\r\n AssessmentDescriptiveValues.StressLevelValues['4'] = $localize`:@@StressLevelValue4:Lower stress than usual.`;\r\n AssessmentDescriptiveValues.StressLevelValues['5'] = $localize`:@@StressLevelValue5:No stress at all.`;\r\n\r\n // sleep quality\r\n AssessmentDescriptiveValues.SleepQualityValues['1'] = $localize`:@@SleepQualityValue1:Insomnia/No sleep at all.`;\r\n AssessmentDescriptiveValues.SleepQualityValues['2'] = $localize`:@@SleepQualityValue2:Lower quality of sleep than usual.`;\r\n AssessmentDescriptiveValues.SleepQualityValues['3'] = $localize`:@@SleepQualityValue3:About the same sleep quality as usual.`;\r\n AssessmentDescriptiveValues.SleepQualityValues['4'] = $localize`:@@SleepQualityValue4:Better quality of sleep than usual.`;\r\n AssessmentDescriptiveValues.SleepQualityValues['5'] = $localize`:@@SleepQualityValue5:Great quality/Restful sleep.`;\r\n\r\n }\r\n\r\n}\r\n\r\nAssessmentDescriptiveValues.initialize();\r\n","import { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { NbPopoverModule } from '@nebular/theme';\r\nimport { MealItemPresentationModule } from '../MealItemPresentation/meal-item-presentation.module';\r\nimport {\r\n MealItemsPresentationComponent,\r\n MobileMealItemsPresentationComponent,\r\n MealItemsPresentationReportComponent,\r\n} from './meal-items-presentation.component';\r\n\r\nconst NB_MODULES = [NbPopoverModule];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MealItemPresentationModule,\r\n ...NB_MODULES,\r\n DragDropModule,\r\n ],\r\n declarations: [\r\n MealItemsPresentationComponent,\r\n MobileMealItemsPresentationComponent,\r\n MealItemsPresentationReportComponent,\r\n ],\r\n exports: [\r\n MealItemsPresentationComponent,\r\n MobileMealItemsPresentationComponent,\r\n MealItemsPresentationReportComponent,\r\n ],\r\n})\r\nexport class MealItemsPresentationModule {}\r\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n return (!clean && that.__brush.emitter) || new Emitter(that, args);\n }\n\n function Emitter(that, args) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target),\n step;\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n return interval.every(step);\n }\n\n return interval;\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1]))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import { __decorate } from 'tslib';\nimport { ApplicationRef, ComponentFactoryResolver, Injector, Injectable, ElementRef, Renderer2, Input, ViewChild, HostBinding, HostListener, Component, ViewEncapsulation, EventEmitter, Output, ChangeDetectionStrategy, NgZone, Directive, ChangeDetectorRef, NgModule, ViewContainerRef, ContentChild } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { DomPortalHost, ComponentPortal } from '@angular/cdk/portal';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { select, event } from 'd3-selection';\nimport { brushX } from 'd3-brush';\nimport { scaleTime, scaleLinear, scalePoint, scaleQuantile, scaleOrdinal, scaleBand } from 'd3-scale';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { curveLinear, area, line, curveCardinalClosed, lineRadial, arc, pie } from 'd3-shape';\nimport { range, min, max } from 'd3-array';\nimport { interpolate } from 'd3-interpolate';\nimport { format } from 'd3-format';\nimport { rgb } from 'd3-color';\nimport { treemap, stratify } from 'd3-hierarchy';\nimport { timeFormat } from 'd3-time-format';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/platform-browser';\n\nconst _c0 = [\"caretElm\"];\nfunction TooltipContentComponent_span_4_ng_template_1_Template(rf, ctx) { }\nconst _c1 = function (a0) { return { model: a0 }; };\nfunction TooltipContentComponent_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtemplate(1, TooltipContentComponent_span_4_ng_template_1_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.template)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c1, ctx_r1.context));\n} }\nfunction TooltipContentComponent_span_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 6);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r2.title, ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction ChartComponent_ngx_charts_scale_legend_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelement(0, \"ngx-charts-scale-legend\", 4);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"horizontal\", ctx_r0.legendOptions && ctx_r0.legendOptions.position === \"below\")(\"valueRange\", ctx_r0.legendOptions.domain)(\"colors\", ctx_r0.legendOptions.colors)(\"height\", ctx_r0.view[1])(\"width\", ctx_r0.legendWidth);\n} }\nfunction ChartComponent_ngx_charts_legend_4_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-legend\", 5);\n ɵngcc0.ɵɵlistener(\"labelClick\", function ChartComponent_ngx_charts_legend_4_Template_ngx_charts_legend_labelClick_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.legendLabelClick.emit($event); })(\"labelActivate\", function ChartComponent_ngx_charts_legend_4_Template_ngx_charts_legend_labelActivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.legendLabelActivate.emit($event); })(\"labelDeactivate\", function ChartComponent_ngx_charts_legend_4_Template_ngx_charts_legend_labelDeactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.legendLabelDeactivate.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"horizontal\", ctx_r1.legendOptions && ctx_r1.legendOptions.position === \"below\")(\"data\", ctx_r1.legendOptions.domain)(\"title\", ctx_r1.legendOptions.title)(\"colors\", ctx_r1.legendOptions.colors)(\"height\", ctx_r1.view[1])(\"width\", ctx_r1.legendWidth)(\"activeEntries\", ctx_r1.activeEntries);\n} }\nconst _c2 = [\"*\"];\nconst _c3 = [\"ngx-charts-axis-label\", \"\"];\nconst _c4 = [\"ticksel\"];\nconst _c5 = [\"ngx-charts-x-axis-ticks\", \"\"];\nfunction XAxisTicksComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 3);\n ɵngcc0.ɵɵelementStart(1, \"title\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"text\", 4);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r3 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r1.tickTransform(tick_r3));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.tickFormat(tick_r3));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"font-size\", \"12px\");\n ɵngcc0.ɵɵattribute(\"text-anchor\", ctx_r1.textAnchor)(\"transform\", ctx_r1.textTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.tickTrim(ctx_r1.tickFormat(tick_r3)), \" \");\n} }\nfunction XAxisTicksComponent__svg_g_3__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"line\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r5.gridLineTransform());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"y1\", 0 - ctx_r5.gridLineHeight);\n} }\nfunction XAxisTicksComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, XAxisTicksComponent__svg_g_3__svg_g_1_Template, 2, 2, \"g\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r4 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.tickTransform(tick_r4));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.showGridLines);\n} }\nconst _c6 = [\"ngx-charts-x-axis\", \"\"];\nfunction XAxisComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function XAxisComponent__svg_g_1_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.emitTicksHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"trimTicks\", ctx_r0.trimTicks)(\"rotateTicks\", ctx_r0.rotateTicks)(\"maxTickLength\", ctx_r0.maxTickLength)(\"tickFormatting\", ctx_r0.tickFormatting)(\"tickArguments\", ctx_r0.tickArguments)(\"tickStroke\", ctx_r0.tickStroke)(\"scale\", ctx_r0.xScale)(\"orient\", ctx_r0.xOrient)(\"showGridLines\", ctx_r0.showGridLines)(\"gridLineHeight\", ctx_r0.dims.height)(\"width\", ctx_r0.dims.width)(\"tickValues\", ctx_r0.ticks);\n} }\nfunction XAxisComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 3);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"label\", ctx_r1.labelText)(\"offset\", ctx_r1.labelOffset)(\"orient\", \"bottom\")(\"height\", ctx_r1.dims.height)(\"width\", ctx_r1.dims.width);\n} }\nconst _c7 = [\"ngx-charts-y-axis-ticks\", \"\"];\nfunction YAxisTicksComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 4);\n ɵngcc0.ɵɵelementStart(1, \"title\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"text\", 5);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r5 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r1.transform(tick_r5));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.tickFormat(tick_r5));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"font-size\", \"12px\");\n ɵngcc0.ɵɵattribute(\"dy\", ctx_r1.dy)(\"x\", ctx_r1.x1)(\"y\", ctx_r1.y1)(\"text-anchor\", ctx_r1.textAnchor);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.tickTrim(ctx_r1.tickFormat(tick_r5)), \" \");\n} }\nfunction YAxisTicksComponent__svg_path_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"path\", 6);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"d\", ctx_r2.referenceAreaPath)(\"transform\", ctx_r2.gridLineTransform());\n} }\nfunction YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"line\", 9);\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵattribute(\"x2\", ctx_r8.gridLineWidth);\n} }\nfunction YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"line\", 9);\n} if (rf & 2) {\n const ctx_r9 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵattribute(\"x2\", 0 - ctx_r9.gridLineWidth);\n} }\nfunction YAxisTicksComponent__svg_g_4__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_1_Template, 1, 1, \"line\", 8);\n ɵngcc0.ɵɵtemplate(2, YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_2_Template, 1, 1, \"line\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r7.gridLineTransform());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.orient === \"left\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.orient === \"right\");\n} }\nfunction YAxisTicksComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, YAxisTicksComponent__svg_g_4__svg_g_1_Template, 3, 3, \"g\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r6 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r3.transform(tick_r6));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r3.showGridLines);\n} }\nfunction YAxisTicksComponent__svg_g_5__svg_g_1__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"title\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"text\", 11);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const refLine_r10 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r12 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r12.tickTrim(ctx_r12.tickFormat(refLine_r10.value)));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"dy\", ctx_r12.dy)(\"y\", 0 - 6)(\"x\", ctx_r12.gridLineWidth)(\"text-anchor\", ctx_r12.textAnchor);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", refLine_r10.name, \" \");\n} }\nfunction YAxisTicksComponent__svg_g_5__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"line\", 10);\n ɵngcc0.ɵɵtemplate(2, YAxisTicksComponent__svg_g_5__svg_g_1__svg_g_2_Template, 5, 6, \"g\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const refLine_r10 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r11 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r11.transform(refLine_r10.value));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"x2\", ctx_r11.gridLineWidth)(\"transform\", ctx_r11.gridLineTransform());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r11.showRefLabels);\n} }\nfunction YAxisTicksComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, YAxisTicksComponent__svg_g_5__svg_g_1_Template, 3, 4, \"g\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.showRefLines);\n} }\nconst _c8 = [\"ngx-charts-y-axis\", \"\"];\nfunction YAxisComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function YAxisComponent__svg_g_1_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.emitTicksWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"trimTicks\", ctx_r0.trimTicks)(\"maxTickLength\", ctx_r0.maxTickLength)(\"tickFormatting\", ctx_r0.tickFormatting)(\"tickArguments\", ctx_r0.tickArguments)(\"tickValues\", ctx_r0.ticks)(\"tickStroke\", ctx_r0.tickStroke)(\"scale\", ctx_r0.yScale)(\"orient\", ctx_r0.yOrient)(\"showGridLines\", ctx_r0.showGridLines)(\"gridLineWidth\", ctx_r0.dims.width)(\"referenceLines\", ctx_r0.referenceLines)(\"showRefLines\", ctx_r0.showRefLines)(\"showRefLabels\", ctx_r0.showRefLabels)(\"height\", ctx_r0.dims.height);\n} }\nfunction YAxisComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 3);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"label\", ctx_r1.labelText)(\"offset\", ctx_r1.labelOffset)(\"orient\", ctx_r1.yOrient)(\"height\", ctx_r1.dims.height)(\"width\", ctx_r1.dims.width);\n} }\nconst _c9 = [\"ngx-charts-circle-series\", \"\"];\nfunction CircleSeriesComponent__svg_g_0__svg_rect_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"rect\", 4);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"x\", ctx_r1.circle.cx - ctx_r1.circle.radius)(\"y\", ctx_r1.circle.cy)(\"width\", ctx_r1.circle.radius * 2)(\"height\", ctx_r1.circle.height)(\"fill\", ctx_r1.gradientFill);\n} }\nconst _c10 = function (a0) { return { name: a0 }; };\nfunction CircleSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"defs\");\n ɵngcc0.ɵɵelement(2, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, CircleSeriesComponent__svg_g_0__svg_rect_3_Template, 1, 6, \"rect\", 2);\n ɵngcc0.ɵɵelementStart(4, \"g\", 3);\n ɵngcc0.ɵɵlistener(\"select\", function CircleSeriesComponent__svg_g_0_Template__svg_g_select_4_listener() { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick(ctx_r2.circle.data); })(\"activate\", function CircleSeriesComponent__svg_g_0_Template__svg_g_activate_4_listener() { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.activateCircle(); })(\"deactivate\", function CircleSeriesComponent__svg_g_0_Template__svg_g_deactivate_4_listener() { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.deactivateCircle(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.circle.gradientStops);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.barVisible && ctx_r0.type === \"standard\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"active\", ctx_r0.isActive(ɵngcc0.ɵɵpureFunction1(18, _c10, ctx_r0.circle.seriesName)));\n ɵngcc0.ɵɵproperty(\"cx\", ctx_r0.circle.cx)(\"cy\", ctx_r0.circle.cy)(\"r\", ctx_r0.circle.radius)(\"fill\", ctx_r0.circle.color)(\"pointerEvents\", ctx_r0.circle.value === 0 ? \"none\" : \"all\")(\"data\", ctx_r0.circle.value)(\"classNames\", ctx_r0.circle.classNames)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.getTooltipText(ctx_r0.circle))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", ctx_r0.circle.data);\n} }\nconst _c11 = [\"ngx-charts-circle\", \"\"];\nconst _c12 = [\"ngx-charts-grid-panel\", \"\"];\nconst _c13 = [\"ngx-charts-grid-panel-series\", \"\"];\nfunction GridPanelSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 1);\n} if (rf & 2) {\n const gridPanel_r1 = ctx.$implicit;\n ɵngcc0.ɵɵclassProp(\"grid-panel\", true)(\"odd\", gridPanel_r1.class === \"odd\")(\"even\", gridPanel_r1.class === \"even\");\n ɵngcc0.ɵɵproperty(\"height\", gridPanel_r1.height)(\"width\", gridPanel_r1.width)(\"x\", gridPanel_r1.x)(\"y\", gridPanel_r1.y);\n} }\nconst _c14 = [\"ngx-charts-svg-linear-gradient\", \"\"];\nfunction SvgLinearGradientComponent__svg_stop_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"stop\");\n} if (rf & 2) {\n const stop_r1 = ctx.$implicit;\n ɵngcc0.ɵɵstyleProp(\"stop-color\", stop_r1.color)(\"stop-opacity\", stop_r1.opacity);\n ɵngcc0.ɵɵattribute(\"offset\", stop_r1.offset + \"%\");\n} }\nconst _c15 = [\"ngx-charts-svg-radial-gradient\", \"\"];\nfunction SvgRadialGradientComponent__svg_stop_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"stop\");\n} if (rf & 2) {\n const stop_r1 = ctx.$implicit;\n ɵngcc0.ɵɵstyleProp(\"stop-color\", stop_r1.color)(\"stop-opacity\", stop_r1.opacity);\n ɵngcc0.ɵɵattribute(\"offset\", stop_r1.offset + \"%\");\n} }\nconst _c16 = [\"ngx-charts-area\", \"\"];\nfunction AreaComponent__svg_defs_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"defs\");\n ɵngcc0.ɵɵelement(1, \"g\", 2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nconst _c17 = [\"ngx-charts-count-up\", \"\"];\nconst _c18 = [\"tooltipAnchor\"];\nconst _c19 = [\"ngx-charts-tooltip-area\", \"\"];\nfunction TooltipArea__svg_ng_template_2__xhtml_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵelement(1, \"span\", 7);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tooltipItem_r5 = ctx.$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"background-color\", tooltipItem_r5.color);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r4.getToolTipText(tooltipItem_r5), \" \");\n} }\nfunction TooltipArea__svg_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵtemplate(1, TooltipArea__svg_ng_template_2__xhtml_div_1_Template, 3, 3, \"div\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const model_r3 = ctx.model;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", model_r3);\n} }\nconst _c20 = [\"ngx-charts-timeline\", \"\"];\nfunction LegendComponent_header_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"header\", 4);\n ɵngcc0.ɵɵelementStart(1, \"span\", 5);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.title);\n} }\nfunction LegendComponent_li_4_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 6);\n ɵngcc0.ɵɵelementStart(1, \"ngx-charts-legend-entry\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function LegendComponent_li_4_Template_ngx_charts_legend_entry_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.labelClick.emit($event); })(\"activate\", function LegendComponent_li_4_Template_ngx_charts_legend_entry_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.activate($event); })(\"deactivate\", function LegendComponent_li_4_Template_ngx_charts_legend_entry_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.deactivate($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const entry_r2 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"label\", entry_r2.label)(\"formattedLabel\", entry_r2.formattedLabel)(\"color\", entry_r2.color)(\"isActive\", ctx_r1.isActive(entry_r2));\n} }\nfunction AdvancedLegendComponent_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 7);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"countTo\", ctx_r0.roundedTotal)(\"valueFormatting\", ctx_r0.valueFormatting);\n} }\nfunction AdvancedLegendComponent_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.valueFormatting ? ctx_r1.valueFormatting(ctx_r1.roundedTotal) : ctx_r1.defaultValueFormatting(ctx_r1.roundedTotal), \" \");\n} }\nfunction AdvancedLegendComponent_div_7_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 16);\n} if (rf & 2) {\n const legendItem_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"countTo\", legendItem_r3._value)(\"valueFormatting\", ctx_r4.valueFormatting);\n} }\nfunction AdvancedLegendComponent_div_7_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 17);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const legendItem_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r5.valueFormatting ? ctx_r5.valueFormatting(legendItem_r3.value) : ctx_r5.defaultValueFormatting(legendItem_r3.value), \" \");\n} }\nfunction AdvancedLegendComponent_div_7_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 18);\n} if (rf & 2) {\n const legendItem_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"countTo\", legendItem_r3.percentage)(\"countSuffix\", \"%\");\n} }\nfunction AdvancedLegendComponent_div_7_div_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 19);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const legendItem_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"\", legendItem_r3.percentage.toLocaleString(), \"%\");\n} }\nfunction AdvancedLegendComponent_div_7_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 9);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function AdvancedLegendComponent_div_7_Template_div_mouseenter_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const legendItem_r3 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.activate.emit(legendItem_r3.data); })(\"mouseleave\", function AdvancedLegendComponent_div_7_Template_div_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const legendItem_r3 = ctx.$implicit; const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.deactivate.emit(legendItem_r3.data); })(\"click\", function AdvancedLegendComponent_div_7_Template_div_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const legendItem_r3 = ctx.$implicit; const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ctx_r15.select.emit(legendItem_r3.data); });\n ɵngcc0.ɵɵelement(1, \"div\", 10);\n ɵngcc0.ɵɵtemplate(2, AdvancedLegendComponent_div_7_div_2_Template, 1, 2, \"div\", 11);\n ɵngcc0.ɵɵtemplate(3, AdvancedLegendComponent_div_7_div_3_Template, 2, 1, \"div\", 12);\n ɵngcc0.ɵɵelementStart(4, \"div\", 13);\n ɵngcc0.ɵɵtext(5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, AdvancedLegendComponent_div_7_div_6_Template, 1, 2, \"div\", 14);\n ɵngcc0.ɵɵtemplate(7, AdvancedLegendComponent_div_7_div_7_Template, 2, 1, \"div\", 15);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const legendItem_r3 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"border-left-color\", legendItem_r3.color);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(legendItem_r3.displayLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.animations);\n} }\nconst _c21 = [\"tooltipTemplate\"];\nconst _c22 = [\"seriesTooltipTemplate\"];\nfunction AreaChartComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction AreaChartComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction AreaChartComponent__svg_g_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r9 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"baseValue\", ctx_r2.baseValue)(\"colors\", ctx_r2.colors)(\"data\", series_r9)(\"activeEntries\", ctx_r2.activeEntries)(\"scaleType\", ctx_r2.scaleType)(\"gradient\", ctx_r2.gradient)(\"curve\", ctx_r2.curve)(\"animations\", ctx_r2.animations);\n} }\nfunction AreaChartComponent__svg_g_9__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"g\", 13);\n ɵngcc0.ɵɵlistener(\"select\", function AreaChartComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const series_r11 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.onClick($event, series_r11); })(\"activate\", function AreaChartComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.onActivate($event); })(\"deactivate\", function AreaChartComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r11 = ctx.$implicit;\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r10.xScale)(\"yScale\", ctx_r10.yScale)(\"colors\", ctx_r10.colors)(\"activeEntries\", ctx_r10.activeEntries)(\"data\", series_r11)(\"scaleType\", ctx_r10.scaleType)(\"visibleValue\", ctx_r10.hoveredVertical)(\"tooltipDisabled\", ctx_r10.tooltipDisabled)(\"tooltipTemplate\", ctx_r10.tooltipTemplate);\n} }\nfunction AreaChartComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 10);\n ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartComponent__svg_g_9_Template__svg_g_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.hideCircles(); });\n ɵngcc0.ɵɵelementStart(1, \"g\", 11);\n ɵngcc0.ɵɵlistener(\"hover\", function AreaChartComponent__svg_g_9_Template__svg_g_hover_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.updateHoveredVertical($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, AreaChartComponent__svg_g_9__svg_g_2_Template, 2, 9, \"g\", 12);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"dims\", ctx_r3.dims)(\"xSet\", ctx_r3.xSet)(\"xScale\", ctx_r3.xScale)(\"yScale\", ctx_r3.yScale)(\"results\", ctx_r3.results)(\"colors\", ctx_r3.colors)(\"tooltipDisabled\", ctx_r3.tooltipDisabled)(\"tooltipTemplate\", ctx_r3.seriesTooltipTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.results);\n} }\nfunction AreaChartComponent__svg_g_10__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 15);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r20 = ctx.$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r19.timelineXScale)(\"yScale\", ctx_r19.timelineYScale)(\"baseValue\", ctx_r19.baseValue)(\"colors\", ctx_r19.colors)(\"data\", series_r20)(\"scaleType\", ctx_r19.scaleType)(\"gradient\", ctx_r19.gradient)(\"curve\", ctx_r19.curve)(\"animations\", ctx_r19.animations);\n} }\nconst _c23 = function (a0, a1) { return [a0, a1]; };\nfunction AreaChartComponent__svg_g_10_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 14);\n ɵngcc0.ɵɵlistener(\"onDomainChange\", function AreaChartComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.updateDomain($event); });\n ɵngcc0.ɵɵtemplate(1, AreaChartComponent__svg_g_10__svg_g_1_Template, 2, 9, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"results\", ctx_r4.results)(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx_r4.timelineWidth, ctx_r4.height))(\"height\", ctx_r4.timelineHeight)(\"scheme\", ctx_r4.scheme)(\"customColors\", ctx_r4.customColors)(\"legend\", ctx_r4.legend)(\"scaleType\", ctx_r4.scaleType);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r4.timelineTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.results)(\"ngForTrackBy\", ctx_r4.trackBy);\n} }\nfunction AreaChartNormalizedComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartNormalizedComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction AreaChartNormalizedComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartNormalizedComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction AreaChartNormalizedComponent__svg_g_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r9 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"colors\", ctx_r2.colors)(\"data\", series_r9)(\"scaleType\", ctx_r2.scaleType)(\"activeEntries\", ctx_r2.activeEntries)(\"gradient\", ctx_r2.gradient)(\"curve\", ctx_r2.curve)(\"animations\", ctx_r2.animations);\n} }\nfunction AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"g\", 13);\n ɵngcc0.ɵɵlistener(\"select\", function AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const series_r11 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.onClick($event, series_r11); })(\"activate\", function AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.onActivate($event); })(\"deactivate\", function AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r11 = ctx.$implicit;\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r10.xScale)(\"yScale\", ctx_r10.yScale)(\"colors\", ctx_r10.colors)(\"activeEntries\", ctx_r10.activeEntries)(\"data\", series_r11)(\"scaleType\", ctx_r10.scaleType)(\"visibleValue\", ctx_r10.hoveredVertical)(\"tooltipDisabled\", ctx_r10.tooltipDisabled)(\"tooltipTemplate\", ctx_r10.tooltipTemplate);\n} }\nfunction AreaChartNormalizedComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 10);\n ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartNormalizedComponent__svg_g_9_Template__svg_g_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.hideCircles(); });\n ɵngcc0.ɵɵelementStart(1, \"g\", 11);\n ɵngcc0.ɵɵlistener(\"hover\", function AreaChartNormalizedComponent__svg_g_9_Template__svg_g_hover_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.updateHoveredVertical($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template, 2, 9, \"g\", 12);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"dims\", ctx_r3.dims)(\"xSet\", ctx_r3.xSet)(\"xScale\", ctx_r3.xScale)(\"yScale\", ctx_r3.yScale)(\"results\", ctx_r3.results)(\"colors\", ctx_r3.colors)(\"showPercentage\", true)(\"tooltipDisabled\", ctx_r3.tooltipDisabled)(\"tooltipTemplate\", ctx_r3.seriesTooltipTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.results);\n} }\nfunction AreaChartNormalizedComponent__svg_g_10__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 15);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r20 = ctx.$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r19.timelineXScale)(\"yScale\", ctx_r19.timelineYScale)(\"colors\", ctx_r19.colors)(\"data\", series_r20)(\"scaleType\", ctx_r19.scaleType)(\"gradient\", ctx_r19.gradient)(\"curve\", ctx_r19.curve)(\"animations\", ctx_r19.animations);\n} }\nfunction AreaChartNormalizedComponent__svg_g_10_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 14);\n ɵngcc0.ɵɵlistener(\"onDomainChange\", function AreaChartNormalizedComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.updateDomain($event); });\n ɵngcc0.ɵɵtemplate(1, AreaChartNormalizedComponent__svg_g_10__svg_g_1_Template, 2, 8, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"results\", ctx_r4.results)(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx_r4.timelineWidth, ctx_r4.height))(\"height\", ctx_r4.timelineHeight)(\"scheme\", ctx_r4.scheme)(\"customColors\", ctx_r4.customColors)(\"legend\", ctx_r4.legend)(\"scaleType\", ctx_r4.scaleType);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r4.timelineTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.results)(\"ngForTrackBy\", ctx_r4.trackBy);\n} }\nfunction AreaChartStackedComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartStackedComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction AreaChartStackedComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartStackedComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction AreaChartStackedComponent__svg_g_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r9 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"colors\", ctx_r2.colors)(\"data\", series_r9)(\"scaleType\", ctx_r2.scaleType)(\"gradient\", ctx_r2.gradient)(\"activeEntries\", ctx_r2.activeEntries)(\"curve\", ctx_r2.curve)(\"animations\", ctx_r2.animations);\n} }\nfunction AreaChartStackedComponent__svg_g_9__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"g\", 12);\n ɵngcc0.ɵɵlistener(\"select\", function AreaChartStackedComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const series_r11 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.onClick($event, series_r11); })(\"activate\", function AreaChartStackedComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.onActivate($event); })(\"deactivate\", function AreaChartStackedComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r11 = ctx.$implicit;\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r10.xScale)(\"yScale\", ctx_r10.yScale)(\"colors\", ctx_r10.colors)(\"activeEntries\", ctx_r10.activeEntries)(\"data\", series_r11)(\"scaleType\", ctx_r10.scaleType)(\"visibleValue\", ctx_r10.hoveredVertical)(\"tooltipDisabled\", ctx_r10.tooltipDisabled)(\"tooltipTemplate\", ctx_r10.tooltipTemplate);\n} }\nfunction AreaChartStackedComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 10);\n ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartStackedComponent__svg_g_9_Template__svg_g_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.hideCircles(); });\n ɵngcc0.ɵɵelementStart(1, \"g\", 11);\n ɵngcc0.ɵɵlistener(\"hover\", function AreaChartStackedComponent__svg_g_9_Template__svg_g_hover_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.updateHoveredVertical($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, AreaChartStackedComponent__svg_g_9__svg_g_2_Template, 2, 9, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"dims\", ctx_r3.dims)(\"xSet\", ctx_r3.xSet)(\"xScale\", ctx_r3.xScale)(\"yScale\", ctx_r3.yScale)(\"results\", ctx_r3.results)(\"colors\", ctx_r3.colors)(\"tooltipDisabled\", ctx_r3.tooltipDisabled)(\"tooltipTemplate\", ctx_r3.seriesTooltipTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.results)(\"ngForTrackBy\", ctx_r3.trackBy);\n} }\nfunction AreaChartStackedComponent__svg_g_10__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r20 = ctx.$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r19.timelineXScale)(\"yScale\", ctx_r19.timelineYScale)(\"colors\", ctx_r19.colors)(\"data\", series_r20)(\"scaleType\", ctx_r19.scaleType)(\"gradient\", ctx_r19.gradient)(\"curve\", ctx_r19.curve)(\"animations\", ctx_r19.animations);\n} }\nfunction AreaChartStackedComponent__svg_g_10_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 13);\n ɵngcc0.ɵɵlistener(\"onDomainChange\", function AreaChartStackedComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.updateDomain($event); });\n ɵngcc0.ɵɵtemplate(1, AreaChartStackedComponent__svg_g_10__svg_g_1_Template, 2, 8, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"results\", ctx_r4.results)(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx_r4.timelineWidth, ctx_r4.height))(\"height\", ctx_r4.timelineHeight)(\"scheme\", ctx_r4.scheme)(\"customColors\", ctx_r4.customColors)(\"legend\", ctx_r4.legend)(\"scaleType\", ctx_r4.scaleType);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r4.timelineTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.results)(\"ngForTrackBy\", ctx_r4.trackBy);\n} }\nconst _c24 = [\"ngx-charts-area-series\", \"\"];\nconst _c25 = [\"ngx-charts-bar\", \"\"];\nfunction BarComponent__svg_defs_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"defs\");\n ɵngcc0.ɵɵelement(1, \"g\", 2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"orientation\", ctx_r0.orientation)(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nfunction BarHorizontalComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarHorizontalComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks)(\"yAxisOffset\", ctx_r1.dataLabelMaxWidth.negative);\n} }\nfunction BarHorizontal2DComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontal2DComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.valueScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarHorizontal2DComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontal2DComponent__svg_g_4_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.groupScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks)(\"yAxisOffset\", ctx_r1.dataLabelMaxWidth.negative);\n} }\nfunction BarHorizontal2DComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"select\", function BarHorizontal2DComponent__svg_g_5_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onClick($event, group_r7); })(\"activate\", function BarHorizontal2DComponent__svg_g_5_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onActivate($event, group_r7); })(\"deactivate\", function BarHorizontal2DComponent__svg_g_5_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onDeactivate($event, group_r7); })(\"dataLabelWidthChanged\", function BarHorizontal2DComponent__svg_g_5_Template__svg_g_dataLabelWidthChanged_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const index_r8 = ctx.index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDataLabelMaxWidthChanged($event, index_r8); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const group_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.valueScale)(\"activeEntries\", ctx_r2.activeEntries)(\"yScale\", ctx_r2.innerScale)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"seriesName\", group_r7.name)(\"roundEdges\", ctx_r2.roundEdges)(\"animations\", ctx_r2.animations)(\"showDataLabel\", ctx_r2.showDataLabel)(\"dataLabelFormatting\", ctx_r2.dataLabelFormatting)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nfunction BarHorizontalNormalizedComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalNormalizedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarHorizontalNormalizedComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalNormalizedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarHorizontalNormalizedComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function BarHorizontalNormalizedComponent__svg_g_4_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = ctx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.onClick($event, group_r7); })(\"activate\", function BarHorizontalNormalizedComponent__svg_g_4_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = ctx.$implicit; const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onActivate($event, group_r7); })(\"deactivate\", function BarHorizontalNormalizedComponent__svg_g_4_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = ctx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onDeactivate($event, group_r7); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const group_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"activeEntries\", ctx_r2.activeEntries)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"seriesName\", group_r7.name)(\"animations\", ctx_r2.animations)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nfunction BarHorizontalStackedComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalStackedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarHorizontalStackedComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalStackedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks)(\"yAxisOffset\", ctx_r1.dataLabelMaxWidth.negative);\n} }\nfunction BarHorizontalStackedComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function BarHorizontalStackedComponent__svg_g_4_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onClick($event, group_r7); })(\"activate\", function BarHorizontalStackedComponent__svg_g_4_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onActivate($event, group_r7); })(\"deactivate\", function BarHorizontalStackedComponent__svg_g_4_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onDeactivate($event, group_r7); })(\"dataLabelWidthChanged\", function BarHorizontalStackedComponent__svg_g_4_Template__svg_g_dataLabelWidthChanged_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const index_r8 = ctx.index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDataLabelMaxWidthChanged($event, index_r8); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const group_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"activeEntries\", ctx_r2.activeEntries)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"seriesName\", group_r7.name)(\"animations\", ctx_r2.animations)(\"showDataLabel\", ctx_r2.showDataLabel)(\"dataLabelFormatting\", ctx_r2.dataLabelFormatting)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nfunction BarVerticalComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks)(\"xAxisOffset\", ctx_r0.dataLabelMaxHeight.negative);\n} }\nfunction BarVerticalComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarVertical2DComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVertical2DComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.groupScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks)(\"xAxisOffset\", ctx_r0.dataLabelMaxHeight.negative);\n} }\nfunction BarVertical2DComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVertical2DComponent__svg_g_4_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.valueScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarVertical2DComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"select\", function BarVertical2DComponent__svg_g_5_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onClick($event, group_r7); })(\"activate\", function BarVertical2DComponent__svg_g_5_Template__svg_g_activate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onActivate($event, group_r7); })(\"deactivate\", function BarVertical2DComponent__svg_g_5_Template__svg_g_deactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onDeactivate($event, group_r7); })(\"dataLabelHeightChanged\", function BarVertical2DComponent__svg_g_5_Template__svg_g_dataLabelHeightChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const index_r8 = ctx.index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDataLabelMaxHeightChanged($event, index_r8); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const group_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"activeEntries\", ctx_r2.activeEntries)(\"xScale\", ctx_r2.innerScale)(\"yScale\", ctx_r2.valueScale)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"showDataLabel\", ctx_r2.showDataLabel)(\"dataLabelFormatting\", ctx_r2.dataLabelFormatting)(\"seriesName\", group_r7.name)(\"roundEdges\", ctx_r2.roundEdges)(\"animations\", ctx_r2.animations)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n} }\nfunction BarVerticalNormalizedComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalNormalizedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarVerticalNormalizedComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalNormalizedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarVerticalNormalizedComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function BarVerticalNormalizedComponent__svg_g_4_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = ctx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.onClick($event, group_r7); })(\"activate\", function BarVerticalNormalizedComponent__svg_g_4_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = ctx.$implicit; const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onActivate($event, group_r7); })(\"deactivate\", function BarVerticalNormalizedComponent__svg_g_4_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = ctx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onDeactivate($event, group_r7); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const group_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"activeEntries\", ctx_r2.activeEntries)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"seriesName\", group_r7.name)(\"animations\", ctx_r2.animations)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nfunction BarVerticalStackedComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalStackedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks)(\"xAxisOffset\", ctx_r0.dataLabelMaxHeight.negative);\n} }\nfunction BarVerticalStackedComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalStackedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarVerticalStackedComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function BarVerticalStackedComponent__svg_g_4_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onClick($event, group_r7); })(\"activate\", function BarVerticalStackedComponent__svg_g_4_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onActivate($event, group_r7); })(\"deactivate\", function BarVerticalStackedComponent__svg_g_4_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = ctx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onDeactivate($event, group_r7); })(\"dataLabelHeightChanged\", function BarVerticalStackedComponent__svg_g_4_Template__svg_g_dataLabelHeightChanged_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const index_r8 = ctx.index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDataLabelMaxHeightChanged($event, index_r8); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const group_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"activeEntries\", ctx_r2.activeEntries)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"showDataLabel\", ctx_r2.showDataLabel)(\"dataLabelFormatting\", ctx_r2.dataLabelFormatting)(\"seriesName\", group_r7.name)(\"animations\", ctx_r2.animations)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nconst _c26 = [\"ngx-charts-series-vertical\", \"\"];\nfunction SeriesVerticalComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"select\", function SeriesVerticalComponent__svg_g_0_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.onClick($event); })(\"activate\", function SeriesVerticalComponent__svg_g_0_Template__svg_g_activate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.activate.emit($event); })(\"deactivate\", function SeriesVerticalComponent__svg_g_0_Template__svg_g_deactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.deactivate.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const bar_r2 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"@.disabled\", !ctx_r0.animations)(\"width\", bar_r2.width)(\"height\", bar_r2.height)(\"x\", bar_r2.x)(\"y\", bar_r2.y)(\"fill\", bar_r2.color)(\"stops\", bar_r2.gradientStops)(\"data\", bar_r2.data)(\"orientation\", \"vertical\")(\"roundEdges\", bar_r2.roundEdges)(\"gradient\", ctx_r0.gradient)(\"ariaLabel\", bar_r2.ariaLabel)(\"isActive\", ctx_r0.isActive(bar_r2.data))(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", ctx_r0.tooltipPlacement)(\"tooltipType\", ctx_r0.tooltipType)(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : bar_r2.tooltipText)(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", bar_r2.data)(\"noBarWhenZero\", ctx_r0.noBarWhenZero)(\"animations\", ctx_r0.animations);\n} }\nfunction SeriesVerticalComponent__svg_g_1__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 4);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function SeriesVerticalComponent__svg_g_1__svg_g_1_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const i_r9 = ctx.index; const ctx_r10 = ɵngcc0.ɵɵnextContext(2); return ctx_r10.dataLabelHeightChanged.emit({ size: $event, index: i_r9 }); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const b_r8 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"barX\", b_r8.x)(\"barY\", b_r8.y)(\"barWidth\", b_r8.width)(\"barHeight\", b_r8.height)(\"value\", b_r8.total)(\"valueFormatting\", ctx_r7.dataLabelFormatting)(\"orientation\", \"vertical\");\n} }\nfunction SeriesVerticalComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, SeriesVerticalComponent__svg_g_1__svg_g_1_Template, 1, 7, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.barsForDataLabels)(\"ngForTrackBy\", ctx_r1.trackDataLabelBy);\n} }\nconst _c27 = [\"ngx-charts-series-horizontal\", \"\"];\nfunction SeriesHorizontal__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"select\", function SeriesHorizontal__svg_g_0_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.click($event); })(\"activate\", function SeriesHorizontal__svg_g_0_Template__svg_g_activate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.activate.emit($event); })(\"deactivate\", function SeriesHorizontal__svg_g_0_Template__svg_g_deactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.deactivate.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const bar_r2 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"width\", bar_r2.width)(\"height\", bar_r2.height)(\"x\", bar_r2.x)(\"y\", bar_r2.y)(\"fill\", bar_r2.color)(\"stops\", bar_r2.gradientStops)(\"data\", bar_r2.data)(\"orientation\", \"horizontal\")(\"roundEdges\", bar_r2.roundEdges)(\"gradient\", ctx_r0.gradient)(\"isActive\", ctx_r0.isActive(bar_r2.data))(\"ariaLabel\", bar_r2.ariaLabel)(\"animations\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", ctx_r0.tooltipPlacement)(\"tooltipType\", ctx_r0.tooltipType)(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : bar_r2.tooltipText)(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", bar_r2.data)(\"noBarWhenZero\", ctx_r0.noBarWhenZero);\n} }\nfunction SeriesHorizontal__svg_g_1__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 4);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function SeriesHorizontal__svg_g_1__svg_g_1_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const i_r9 = ctx.index; const ctx_r10 = ɵngcc0.ɵɵnextContext(2); return ctx_r10.dataLabelWidthChanged.emit({ size: $event, index: i_r9 }); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const b_r8 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"barX\", b_r8.x)(\"barY\", b_r8.y)(\"barWidth\", b_r8.width)(\"barHeight\", b_r8.height)(\"value\", b_r8.total)(\"valueFormatting\", ctx_r7.dataLabelFormatting)(\"orientation\", \"horizontal\");\n} }\nfunction SeriesHorizontal__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, SeriesHorizontal__svg_g_1__svg_g_1_Template, 1, 7, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.barsForDataLabels)(\"ngForTrackBy\", ctx_r1.trackDataLabelBy);\n} }\nconst _c28 = [\"ngx-charts-bar-label\", \"\"];\nfunction BubbleChartComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BubbleChartComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"showGridLines\", ctx_r0.showGridLines)(\"dims\", ctx_r0.dims)(\"xScale\", ctx_r0.xScale)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BubbleChartComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BubbleChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"showGridLines\", ctx_r1.showGridLines)(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BubbleChartComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"select\", function BubbleChartComponent__svg_g_9_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const series_r7 = ctx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.onClick($event, series_r7); })(\"activate\", function BubbleChartComponent__svg_g_9_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onActivate($event); })(\"deactivate\", function BubbleChartComponent__svg_g_9_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"rScale\", ctx_r2.rScale)(\"xScaleType\", ctx_r2.xScaleType)(\"yScaleType\", ctx_r2.yScaleType)(\"xAxisLabel\", ctx_r2.xAxisLabel)(\"yAxisLabel\", ctx_r2.yAxisLabel)(\"colors\", ctx_r2.colors)(\"data\", series_r7)(\"activeEntries\", ctx_r2.activeEntries)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate);\n} }\nconst _c29 = [\"ngx-charts-bubble-series\", \"\"];\nfunction BubbleSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"g\");\n ɵngcc0.ɵɵelementStart(2, \"g\", 1);\n ɵngcc0.ɵɵlistener(\"select\", function BubbleSeriesComponent__svg_g_0_Template__svg_g_select_2_listener() { ɵngcc0.ɵɵrestoreView(_r3); const circle_r1 = ctx.$implicit; const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick(circle_r1.data); })(\"activate\", function BubbleSeriesComponent__svg_g_0_Template__svg_g_activate_2_listener() { ɵngcc0.ɵɵrestoreView(_r3); const circle_r1 = ctx.$implicit; const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.activateCircle(circle_r1); })(\"deactivate\", function BubbleSeriesComponent__svg_g_0_Template__svg_g_deactivate_2_listener() { ɵngcc0.ɵɵrestoreView(_r3); const circle_r1 = ctx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.deactivateCircle(circle_r1); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const circle_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", circle_r1.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"opacity\", circle_r1.opacity);\n ɵngcc0.ɵɵclassProp(\"active\", circle_r1.isActive);\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"cx\", 0)(\"cy\", 0)(\"r\", circle_r1.radius)(\"fill\", circle_r1.color)(\"pointerEvents\", \"all\")(\"data\", circle_r1.value)(\"classNames\", circle_r1.classNames)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.getTooltipText(circle_r1))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", circle_r1.data);\n} }\nconst _c30 = [\"ngx-charts-heat-map-cell\", \"\"];\nfunction HeatMapCellComponent__svg_defs_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"defs\");\n ɵngcc0.ɵɵelement(1, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nconst _c31 = [\"ngx-charts-heat-map-cell-series\", \"\"];\nconst _c32 = function (a0, a1, a2) { return { series: a0, name: a1, value: a2 }; };\nfunction HeatCellSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 1);\n ɵngcc0.ɵɵlistener(\"select\", function HeatCellSeriesComponent__svg_g_0_Template__svg_g_select_0_listener() { ɵngcc0.ɵɵrestoreView(_r3); const c_r1 = ctx.$implicit; const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick(c_r1.cell); })(\"activate\", function HeatCellSeriesComponent__svg_g_0_Template__svg_g_activate_0_listener() { ɵngcc0.ɵɵrestoreView(_r3); const c_r1 = ctx.$implicit; const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.activate.emit(c_r1.cell); })(\"deactivate\", function HeatCellSeriesComponent__svg_g_0_Template__svg_g_deactivate_0_listener() { ɵngcc0.ɵɵrestoreView(_r3); const c_r1 = ctx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.deactivate.emit(c_r1.cell); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const c_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"x\", c_r1.x)(\"y\", c_r1.y)(\"width\", c_r1.width)(\"height\", c_r1.height)(\"fill\", c_r1.fill)(\"data\", c_r1.data)(\"gradient\", ctx_r0.gradient)(\"animations\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.tooltipText(c_r1))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", ɵngcc0.ɵɵpureFunction3(14, _c32, c_r1.series, c_r1.label, c_r1.data));\n} }\nfunction HeatMapComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function HeatMapComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction HeatMapComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function HeatMapComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction HeatMapComponent__svg_rect_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"rect\");\n} if (rf & 2) {\n const rect_r7 = ctx.$implicit;\n ɵngcc0.ɵɵattribute(\"x\", rect_r7.x)(\"y\", rect_r7.y)(\"rx\", rect_r7.rx)(\"width\", rect_r7.width)(\"height\", rect_r7.height)(\"fill\", rect_r7.fill);\n} }\nconst _c33 = [\"ngx-charts-line\", \"\"];\nfunction LineChartComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function LineChartComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction LineChartComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function LineChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks)(\"referenceLines\", ctx_r1.referenceLines)(\"showRefLines\", ctx_r1.showRefLines)(\"showRefLabels\", ctx_r1.showRefLabels);\n} }\nfunction LineChartComponent__svg_g_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r9 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"colors\", ctx_r2.colors)(\"data\", series_r9)(\"activeEntries\", ctx_r2.activeEntries)(\"scaleType\", ctx_r2.scaleType)(\"curve\", ctx_r2.curve)(\"rangeFillOpacity\", ctx_r2.rangeFillOpacity)(\"hasRange\", ctx_r2.hasRange)(\"animations\", ctx_r2.animations);\n} }\nfunction LineChartComponent__svg_g_9__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"g\", 13);\n ɵngcc0.ɵɵlistener(\"select\", function LineChartComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.onClick($event); })(\"activate\", function LineChartComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.onActivate($event); })(\"deactivate\", function LineChartComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r11 = ctx.$implicit;\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r10.xScale)(\"yScale\", ctx_r10.yScale)(\"colors\", ctx_r10.colors)(\"data\", series_r11)(\"scaleType\", ctx_r10.scaleType)(\"visibleValue\", ctx_r10.hoveredVertical)(\"activeEntries\", ctx_r10.activeEntries)(\"tooltipDisabled\", ctx_r10.tooltipDisabled)(\"tooltipTemplate\", ctx_r10.tooltipTemplate);\n} }\nfunction LineChartComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 10);\n ɵngcc0.ɵɵlistener(\"mouseleave\", function LineChartComponent__svg_g_9_Template__svg_g_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.hideCircles(); });\n ɵngcc0.ɵɵelementStart(1, \"g\", 11);\n ɵngcc0.ɵɵlistener(\"hover\", function LineChartComponent__svg_g_9_Template__svg_g_hover_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.updateHoveredVertical($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, LineChartComponent__svg_g_9__svg_g_2_Template, 2, 9, \"g\", 12);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"dims\", ctx_r3.dims)(\"xSet\", ctx_r3.xSet)(\"xScale\", ctx_r3.xScale)(\"yScale\", ctx_r3.yScale)(\"results\", ctx_r3.results)(\"colors\", ctx_r3.colors)(\"tooltipDisabled\", ctx_r3.tooltipDisabled)(\"tooltipTemplate\", ctx_r3.seriesTooltipTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.results);\n} }\nfunction LineChartComponent__svg_g_10__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 15);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r20 = ctx.$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r19.timelineXScale)(\"yScale\", ctx_r19.timelineYScale)(\"colors\", ctx_r19.colors)(\"data\", series_r20)(\"scaleType\", ctx_r19.scaleType)(\"curve\", ctx_r19.curve)(\"hasRange\", ctx_r19.hasRange)(\"animations\", ctx_r19.animations);\n} }\nfunction LineChartComponent__svg_g_10_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 14);\n ɵngcc0.ɵɵlistener(\"onDomainChange\", function LineChartComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.updateDomain($event); });\n ɵngcc0.ɵɵtemplate(1, LineChartComponent__svg_g_10__svg_g_1_Template, 2, 8, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"results\", ctx_r4.results)(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx_r4.timelineWidth, ctx_r4.height))(\"height\", ctx_r4.timelineHeight)(\"scheme\", ctx_r4.scheme)(\"customColors\", ctx_r4.customColors)(\"scaleType\", ctx_r4.scaleType)(\"legend\", ctx_r4.legend);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r4.timelineTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.results)(\"ngForTrackBy\", ctx_r4.trackBy);\n} }\nconst _c34 = [\"ngx-charts-line-series\", \"\"];\nfunction LineSeriesComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 4);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nfunction LineSeriesComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 5);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"active\", ctx_r1.isActive(ctx_r1.data))(\"inactive\", ctx_r1.isInactive(ctx_r1.data));\n ɵngcc0.ɵɵproperty(\"data\", ctx_r1.data)(\"path\", ctx_r1.outerPath)(\"fill\", ctx_r1.hasGradient ? ctx_r1.gradientUrl : ctx_r1.colors.getColor(ctx_r1.data.name))(\"opacity\", ctx_r1.rangeFillOpacity)(\"animations\", ctx_r1.animations);\n} }\nfunction PolarChartComponent__svg_g_4__svg_circle_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\", 8);\n} if (rf & 2) {\n const r_r6 = ctx.$implicit;\n ɵngcc0.ɵɵattribute(\"r\", r_r6);\n} }\nfunction PolarChartComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, PolarChartComponent__svg_g_4__svg_circle_1_Template, 1, 1, \"circle\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.radiusTicks);\n} }\nfunction PolarChartComponent__svg_g_5__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 10);\n} if (rf & 2) {\n const tick_r8 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"data\", tick_r8)(\"radius\", ctx_r7.outerRadius)(\"label\", tick_r8.label)(\"max\", ctx_r7.outerRadius)(\"value\", ctx_r7.showGridLines ? 1 : ctx_r7.outerRadius)(\"explodeSlices\", true)(\"animations\", ctx_r7.animations)(\"labelTrim\", ctx_r7.labelTrim)(\"labelTrimSize\", ctx_r7.labelTrimSize);\n} }\nfunction PolarChartComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, PolarChartComponent__svg_g_5__svg_g_1_Template, 1, 9, \"g\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.thetaTicks);\n} }\nfunction PolarChartComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 11);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function PolarChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r2.yAxisScale)(\"dims\", ctx_r2.yAxisDims)(\"showGridLines\", ctx_r2.showGridLines)(\"showLabel\", ctx_r2.showYAxisLabel)(\"labelText\", ctx_r2.yAxisLabel)(\"trimTicks\", ctx_r2.trimYAxisTicks)(\"maxTickLength\", ctx_r2.maxYAxisTickLength)(\"tickFormatting\", ctx_r2.yAxisTickFormatting);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.transformYAxis);\n} }\nfunction PolarChartComponent__svg_g_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 12);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"label\", ctx_r3.xAxisLabel)(\"offset\", ctx_r3.labelOffset)(\"orient\", \"bottom\")(\"height\", ctx_r3.dims.height)(\"width\", ctx_r3.dims.width);\n} }\nfunction PolarChartComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"g\", 13);\n ɵngcc0.ɵɵlistener(\"select\", function PolarChartComponent__svg_g_9_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onClick($event); })(\"activate\", function PolarChartComponent__svg_g_9_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.onActivate($event); })(\"deactivate\", function PolarChartComponent__svg_g_9_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ctx_r15.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r11 = ctx.$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"gradient\", ctx_r4.gradient)(\"xScale\", ctx_r4.xScale)(\"yScale\", ctx_r4.yScale)(\"colors\", ctx_r4.colors)(\"data\", series_r11)(\"activeEntries\", ctx_r4.activeEntries)(\"scaleType\", ctx_r4.scaleType)(\"curve\", ctx_r4.curve)(\"rangeFillOpacity\", ctx_r4.rangeFillOpacity)(\"animations\", ctx_r4.animations)(\"tooltipDisabled\", ctx_r4.tooltipDisabled)(\"tooltipTemplate\", ctx_r4.tooltipTemplate);\n} }\nconst _c35 = [\"ngx-charts-polar-series\", \"\"];\nfunction PolarSeriesComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 4);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"color\", ctx_r0.seriesColor)(\"name\", ctx_r0.gradientId)(\"startOpacity\", 0.25)(\"endOpacity\", 1)(\"stops\", ctx_r0.gradientStops);\n} }\nfunction PolarSeriesComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"select\", function PolarSeriesComponent__svg_g_4_Template__svg_g_select_0_listener() { ɵngcc0.ɵɵrestoreView(_r4); const circle_r2 = ctx.$implicit; const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.select.emit(circle_r2.data); })(\"activate\", function PolarSeriesComponent__svg_g_4_Template__svg_g_activate_0_listener() { ɵngcc0.ɵɵrestoreView(_r4); const circle_r2 = ctx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.activate.emit({ name: circle_r2.data.series }); })(\"deactivate\", function PolarSeriesComponent__svg_g_4_Template__svg_g_deactivate_0_listener() { ɵngcc0.ɵɵrestoreView(_r4); const circle_r2 = ctx.$implicit; const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.deactivate.emit({ name: circle_r2.data.series }); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const circle_r2 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"opacity\", ctx_r1.inactive ? 0.2 : 1);\n ɵngcc0.ɵɵproperty(\"cx\", circle_r2.cx)(\"cy\", circle_r2.cy)(\"r\", ctx_r1.circleRadius)(\"fill\", circle_r2.color)(\"tooltipDisabled\", ctx_r1.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipTitle\", ctx_r1.tooltipTemplate ? undefined : ctx_r1.tooltipText(circle_r2))(\"tooltipTemplate\", ctx_r1.tooltipTemplate)(\"tooltipContext\", circle_r2.data);\n} }\nconst _c36 = [\"ngx-charts-pie-label\", \"\"];\nconst _c37 = [\"ngx-charts-pie-arc\", \"\"];\nfunction PieArcComponent__svg_defs_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"defs\");\n ɵngcc0.ɵɵelement(1, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"color\", ctx_r0.fill)(\"name\", ctx_r0.radialGradientId)(\"startOpacity\", ctx_r0.startOpacity);\n} }\nfunction PieGridComponent__svg_g_2__svg_text_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"text\", 10);\n} if (rf & 2) {\n const series_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"countTo\", series_r1.percent)(\"countSuffix\", \"%\");\n} }\nfunction PieGridComponent__svg_g_2__svg_text_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"text\", 11);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", series_r1.percent.toLocaleString(), \" \");\n} }\nfunction PieGridComponent__svg_g_2__svg_text_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"text\", 12);\n} if (rf & 2) {\n const series_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"countTo\", series_r1.total)(\"countPrefix\", ctx_r4.label + \": \");\n ɵngcc0.ɵɵattribute(\"y\", series_r1.outerRadius);\n} }\nfunction PieGridComponent__svg_g_2__svg_text_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"text\", 13);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"y\", series_r1.outerRadius);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate2(\" \", ctx_r5.label, \": \", series_r1.total.toLocaleString(), \" \");\n} }\nconst _c38 = function (a0) { return { data: a0 }; };\nfunction PieGridComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 3);\n ɵngcc0.ɵɵelementStart(1, \"g\", 4);\n ɵngcc0.ɵɵlistener(\"select\", function PieGridComponent__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onClick($event); })(\"activate\", function PieGridComponent__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onActivate($event); })(\"deactivate\", function PieGridComponent__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, PieGridComponent__svg_g_2__svg_text_2_Template, 1, 2, \"text\", 5);\n ɵngcc0.ɵɵtemplate(3, PieGridComponent__svg_g_2__svg_text_3_Template, 2, 1, \"text\", 6);\n ɵngcc0.ɵɵelementStart(4, \"text\", 7);\n ɵngcc0.ɵɵtext(5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, PieGridComponent__svg_g_2__svg_text_6_Template, 1, 3, \"text\", 8);\n ɵngcc0.ɵɵtemplate(7, PieGridComponent__svg_g_2__svg_text_7_Template, 2, 3, \"text\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", series_r1.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"colors\", series_r1.colors)(\"data\", series_r1.data)(\"innerRadius\", series_r1.innerRadius)(\"outerRadius\", series_r1.outerRadius)(\"animations\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.tooltipText(ɵngcc0.ɵɵpureFunction1(17, _c38, series_r1)))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", series_r1.data[0].data);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", series_r1.label, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.animations);\n} }\nconst _c39 = [\"ngx-charts-pie-grid-series\", \"\"];\nfunction PieGridSeriesComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"select\", function PieGridSeriesComponent__svg_g_1_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick($event); })(\"activate\", function PieGridSeriesComponent__svg_g_1_Template__svg_g_activate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.activate.emit($event); })(\"deactivate\", function PieGridSeriesComponent__svg_g_1_Template__svg_g_deactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.deactivate.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const arc_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"startAngle\", arc_r1.startAngle)(\"endAngle\", arc_r1.endAngle)(\"innerRadius\", ctx_r0.innerRadius)(\"outerRadius\", ctx_r0.outerRadius)(\"fill\", ctx_r0.color(arc_r1))(\"value\", arc_r1.data.value)(\"data\", arc_r1.data)(\"gradient\", false)(\"pointerEvents\", arc_r1.pointerEvents)(\"animate\", arc_r1.animate);\n ɵngcc0.ɵɵattribute(\"class\", arc_r1.class);\n} }\nconst _c40 = [\"ngx-charts-pie-series\", \"\"];\nfunction PieSeriesComponent__svg_g_0__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 3);\n} if (rf & 2) {\n const arc_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"data\", arc_r1)(\"radius\", ctx_r2.outerRadius)(\"color\", ctx_r2.color(arc_r1))(\"label\", ctx_r2.labelText(arc_r1))(\"labelTrim\", ctx_r2.trimLabels)(\"labelTrimSize\", ctx_r2.maxLabelLength)(\"max\", ctx_r2.max)(\"value\", arc_r1.value)(\"explodeSlices\", ctx_r2.explodeSlices)(\"animations\", ctx_r2.animations);\n} }\nfunction PieSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, PieSeriesComponent__svg_g_0__svg_g_1_Template, 1, 10, \"g\", 1);\n ɵngcc0.ɵɵelementStart(2, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"select\", function PieSeriesComponent__svg_g_0_Template__svg_g_select_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.onClick($event); })(\"activate\", function PieSeriesComponent__svg_g_0_Template__svg_g_activate_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.activate.emit($event); })(\"deactivate\", function PieSeriesComponent__svg_g_0_Template__svg_g_deactivate_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.deactivate.emit($event); })(\"dblclick\", function PieSeriesComponent__svg_g_0_Template__svg_g_dblclick_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.dblclick.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const arc_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.labelVisible(arc_r1));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"startAngle\", arc_r1.startAngle)(\"endAngle\", arc_r1.endAngle)(\"innerRadius\", ctx_r0.innerRadius)(\"outerRadius\", ctx_r0.outerRadius)(\"fill\", ctx_r0.color(arc_r1))(\"value\", arc_r1.data.value)(\"gradient\", ctx_r0.gradient)(\"data\", arc_r1.data)(\"max\", ctx_r0.max)(\"explodeSlices\", ctx_r0.explodeSlices)(\"isActive\", ctx_r0.isActive(arc_r1.data))(\"animate\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.getTooltipTitle(arc_r1))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", arc_r1.data);\n} }\nconst _c41 = [\"textEl\"];\nconst _c42 = [\"ngx-charts-card\", \"\"];\nfunction CardComponent__svg_path_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"path\", 7);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"fill\", ctx_r0.bandColor)(\"transform\", ctx_r0.transformBand)(\"d\", ctx_r0.bandPath);\n} }\nconst _c43 = [\"ngx-charts-card-series\", \"\"];\nfunction CardSeriesComponent__svg_rect_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"rect\", 2);\n} if (rf & 2) {\n const c_r2 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"fill\", ctx_r0.emptyColor);\n ɵngcc0.ɵɵattribute(\"x\", c_r2.x)(\"y\", c_r2.y)(\"width\", c_r2.width)(\"height\", c_r2.height);\n} }\nfunction CardSeriesComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 3);\n ɵngcc0.ɵɵlistener(\"select\", function CardSeriesComponent__svg_g_1_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.onClick($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const c_r3 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"x\", c_r3.x)(\"y\", c_r3.y)(\"width\", c_r3.width)(\"height\", c_r3.height)(\"color\", c_r3.color)(\"bandColor\", c_r3.bandColor)(\"textColor\", c_r3.textColor)(\"data\", c_r3.data)(\"label\", c_r3.label)(\"medianSize\", ctx_r1.medianSize)(\"valueFormatting\", ctx_r1.valueFormatting)(\"labelFormatting\", ctx_r1.labelFormatting)(\"animations\", ctx_r1.animations);\n} }\nconst _c44 = [\"ngx-charts-tree-map-cell\", \"\"];\nfunction TreeMapCellComponent__svg_defs_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"defs\");\n ɵngcc0.ɵɵelement(1, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nfunction TreeMapCellComponent__svg_foreignObject_3__xhtml_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 8);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"countTo\", ctx_r2.value)(\"valueFormatting\", ctx_r2.valueFormatting);\n} }\nfunction TreeMapCellComponent__svg_foreignObject_3__xhtml_span_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.formattedValue, \" \");\n} }\nfunction TreeMapCellComponent__svg_foreignObject_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"foreignObject\", 4);\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelementStart(1, \"p\");\n ɵngcc0.ɵɵelement(2, \"span\", 5);\n ɵngcc0.ɵɵelement(3, \"br\");\n ɵngcc0.ɵɵtemplate(4, TreeMapCellComponent__svg_foreignObject_3__xhtml_span_4_Template, 1, 2, \"span\", 6);\n ɵngcc0.ɵɵtemplate(5, TreeMapCellComponent__svg_foreignObject_3__xhtml_span_5_Template, 2, 1, \"span\", 7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"pointer-events\", \"none\");\n ɵngcc0.ɵɵattribute(\"x\", ctx_r1.x)(\"y\", ctx_r1.y)(\"width\", ctx_r1.width)(\"height\", ctx_r1.height);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"color\", ctx_r1.getTextColor())(\"height\", ctx_r1.height + \"px\")(\"width\", ctx_r1.width + \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r1.formattedLabel, ɵngcc0.ɵɵsanitizeHtml);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.animations);\n} }\nconst _c45 = [\"ngx-charts-tree-map-cell-series\", \"\"];\nfunction TreeMapCellSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 1);\n ɵngcc0.ɵɵlistener(\"select\", function TreeMapCellSeriesComponent__svg_g_0_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const c_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"data\", c_r1.data)(\"x\", c_r1.x)(\"y\", c_r1.y)(\"width\", c_r1.width)(\"height\", c_r1.height)(\"fill\", c_r1.fill)(\"label\", c_r1.label)(\"value\", c_r1.value)(\"valueType\", c_r1.valueType)(\"valueFormatting\", ctx_r0.valueFormatting)(\"labelFormatting\", ctx_r0.labelFormatting)(\"gradient\", ctx_r0.gradient)(\"animations\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.getTooltipText(c_r1))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", c_r1.data);\n} }\nconst _c46 = [\"valueTextEl\"];\nconst _c47 = [\"unitsTextEl\"];\nfunction LinearGaugeComponent__svg_line_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"line\", 10);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r0.transformLine)(\"stroke\", ctx_r0.colors.getColor(ctx_r0.units));\n} }\nfunction LinearGaugeComponent__svg_line_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"line\", 11);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r1.transformLine)(\"stroke\", ctx_r1.colors.getColor(ctx_r1.units));\n} }\nconst _c48 = function () { return {}; };\nfunction GaugeComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"select\", function GaugeComponent__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.onClick($event); })(\"activate\", function GaugeComponent__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.onActivate($event); })(\"deactivate\", function GaugeComponent__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const arc_r3 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r0.rotation);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"backgroundArc\", arc_r3.backgroundArc)(\"valueArc\", arc_r3.valueArc)(\"cornerRadius\", ctx_r0.cornerRadius)(\"colors\", ctx_r0.colors)(\"isActive\", ctx_r0.isActive(arc_r3.valueArc.data))(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"valueFormatting\", ctx_r0.valueFormatting)(\"animations\", ctx_r0.animations);\n} }\nfunction GaugeComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 6);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"bigSegments\", ctx_r1.bigSegments)(\"smallSegments\", ctx_r1.smallSegments)(\"min\", ctx_r1.min)(\"max\", ctx_r1.max)(\"radius\", ctx_r1.outerRadius)(\"angleSpan\", ctx_r1.angleSpan)(\"valueScale\", ctx_r1.valueScale)(\"startAngle\", ctx_r1.startAngle)(\"tickFormatting\", ctx_r1.axisTickFormatting);\n} }\nfunction GaugeComponent__svg_text_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"text\", 7, 8);\n ɵngcc0.ɵɵelementStart(2, \"tspan\", 9);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"tspan\", 10);\n ɵngcc0.ɵɵtext(5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"text-anchor\", \"middle\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.textTransform);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.displayValue);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.units);\n} }\nconst _c49 = [\"ngx-charts-gauge-arc\", \"\"];\nconst _c50 = [\"ngx-charts-gauge-axis\", \"\"];\nfunction GaugeAxisComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n ɵngcc0.ɵɵelement(1, \"path\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r3 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"d\", tick_r3.line);\n} }\nfunction GaugeAxisComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n ɵngcc0.ɵɵelementStart(1, \"text\", 3);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r4 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"text-anchor\", tick_r4.textAnchor);\n ɵngcc0.ɵɵattribute(\"transform\", tick_r4.textTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", tick_r4.text, \" \");\n} }\nfunction GaugeAxisComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 4);\n ɵngcc0.ɵɵelement(1, \"path\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r5 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"d\", tick_r5.line);\n} }\nvar InjectionService_1;\nfunction isViewContainerRef(x) {\n return x.element;\n}\n/**\n * Injection service is a helper to append components\n * dynamically to a known location in the DOM, most\n * noteably for dialogs/tooltips appending to body.\n *\n * @export\n */\nlet InjectionService = InjectionService_1 = class InjectionService {\n constructor(applicationRef, componentFactoryResolver, injector) {\n this.applicationRef = applicationRef;\n this.componentFactoryResolver = componentFactoryResolver;\n this.injector = injector;\n }\n /**\n * Sets a default global root view container. This is useful for\n * things like ngUpgrade that doesn't have a ApplicationRef root.\n *\n * @param container\n */\n static setGlobalRootViewContainer(container) {\n InjectionService_1.globalRootViewContainer = container;\n }\n /**\n * Gets the root view container to inject the component to.\n *\n * @memberOf InjectionService\n */\n getRootViewContainer() {\n if (this._container)\n return this._container;\n if (InjectionService_1.globalRootViewContainer)\n return InjectionService_1.globalRootViewContainer;\n if (this.applicationRef.components.length)\n return this.applicationRef.components[0];\n throw new Error('View Container not found! ngUpgrade needs to manually set this via setRootViewContainer or setGlobalRootViewContainer.');\n }\n /**\n * Overrides the default root view container. This is useful for\n * things like ngUpgrade that doesn't have a ApplicationRef root.\n *\n * @param container\n *\n * @memberOf InjectionService\n */\n setRootViewContainer(container) {\n this._container = container;\n }\n /**\n * Gets the html element for a component ref.\n *\n * @param componentRef\n *\n * @memberOf InjectionService\n */\n getComponentRootNode(component) {\n if (isViewContainerRef(component)) {\n return component.element.nativeElement;\n }\n if (component.hostView && component.hostView.rootNodes.length > 0) {\n return component.hostView.rootNodes[0];\n }\n // the top most component root node has no `hostView`\n return component.location.nativeElement;\n }\n /**\n * Gets the root component container html element.\n *\n * @memberOf InjectionService\n */\n getRootViewContainerNode(component) {\n return this.getComponentRootNode(component);\n }\n /**\n * Projects the bindings onto the component\n *\n * @param component\n * @param options\n *\n * @memberOf InjectionService\n */\n projectComponentBindings(component, bindings) {\n if (bindings) {\n if (bindings.inputs !== undefined) {\n const bindingKeys = Object.getOwnPropertyNames(bindings.inputs);\n for (const bindingName of bindingKeys) {\n component.instance[bindingName] = bindings.inputs[bindingName];\n }\n }\n if (bindings.outputs !== undefined) {\n const eventKeys = Object.getOwnPropertyNames(bindings.outputs);\n for (const eventName of eventKeys) {\n component.instance[eventName] = bindings.outputs[eventName];\n }\n }\n }\n return component;\n }\n /**\n * Appends a component to a adjacent location\n *\n * @param componentClass\n * @param [options={}]\n * @param [location]\n *\n * @memberOf InjectionService\n */\n appendComponent(componentClass, bindings = {}, location) {\n if (!location)\n location = this.getRootViewContainer();\n const appendLocation = this.getComponentRootNode(location);\n const portalHost = new DomPortalHost(appendLocation, this.componentFactoryResolver, this.applicationRef, this.injector);\n const portal = new ComponentPortal(componentClass);\n const componentRef = portalHost.attach(portal);\n this.projectComponentBindings(componentRef, bindings);\n return componentRef;\n }\n};\nInjectionService.ɵfac = function InjectionService_Factory(t) { return new (t || InjectionService)(ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector)); };\nInjectionService.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: InjectionService, factory: InjectionService.ɵfac });\nInjectionService.globalRootViewContainer = null;\nInjectionService.ctorParameters = () => [\n { type: ApplicationRef },\n { type: ComponentFactoryResolver },\n { type: Injector }\n];\n\n/**\n * Throttle a function\n *\n */\nfunction throttle(func, wait, options) {\n options = options || {};\n let context;\n let args;\n let result;\n let timeout = null;\n let previous = 0;\n function later() {\n previous = options.leading === false ? 0 : +new Date();\n timeout = null;\n result = func.apply(context, args);\n }\n return function () {\n const now = +new Date();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n/**\n * Throttle decorator\n *\n * class MyClass {\n * throttleable(10)\n * myFn() { ... }\n * }\n */\nfunction throttleable(duration, options) {\n return function innerDecorator(target, key, descriptor) {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: throttle(descriptor.value, duration, options)\n });\n return this[key];\n }\n };\n };\n}\n\nvar PlacementTypes;\n(function (PlacementTypes) {\n PlacementTypes[PlacementTypes[\"top\"] = 'top'] = \"top\";\n PlacementTypes[PlacementTypes[\"bottom\"] = 'bottom'] = \"bottom\";\n PlacementTypes[PlacementTypes[\"left\"] = 'left'] = \"left\";\n PlacementTypes[PlacementTypes[\"right\"] = 'right'] = \"right\";\n})(PlacementTypes || (PlacementTypes = {}));\n\nconst caretOffset = 7;\nfunction verticalPosition(elDimensions, popoverDimensions, alignment) {\n if (alignment === 'top') {\n return elDimensions.top - caretOffset;\n }\n if (alignment === 'bottom') {\n return elDimensions.top + elDimensions.height - popoverDimensions.height + caretOffset;\n }\n if (alignment === 'center') {\n return elDimensions.top + elDimensions.height / 2 - popoverDimensions.height / 2;\n }\n return undefined;\n}\nfunction horizontalPosition(elDimensions, popoverDimensions, alignment) {\n if (alignment === 'left') {\n return elDimensions.left - caretOffset;\n }\n if (alignment === 'right') {\n return elDimensions.left + elDimensions.width - popoverDimensions.width + caretOffset;\n }\n if (alignment === 'center') {\n return elDimensions.left + elDimensions.width / 2 - popoverDimensions.width / 2;\n }\n return undefined;\n}\n/**\n * Position helper for the popover directive.\n *\n * @export\n */\nclass PositionHelper {\n /**\n * Calculate vertical alignment position\n *\n * @memberOf PositionHelper\n */\n static calculateVerticalAlignment(elDimensions, popoverDimensions, alignment) {\n let result = verticalPosition(elDimensions, popoverDimensions, alignment);\n if (result + popoverDimensions.height > window.innerHeight) {\n result = window.innerHeight - popoverDimensions.height;\n }\n return result;\n }\n /**\n * Calculate vertical caret position\n *\n * @memberOf PositionHelper\n */\n static calculateVerticalCaret(elDimensions, popoverDimensions, caretDimensions, alignment) {\n let result;\n if (alignment === 'top') {\n result = elDimensions.height / 2 - caretDimensions.height / 2 + caretOffset;\n }\n if (alignment === 'bottom') {\n result = popoverDimensions.height - elDimensions.height / 2 - caretDimensions.height / 2 - caretOffset;\n }\n if (alignment === 'center') {\n result = popoverDimensions.height / 2 - caretDimensions.height / 2;\n }\n const popoverPosition = verticalPosition(elDimensions, popoverDimensions, alignment);\n if (popoverPosition + popoverDimensions.height > window.innerHeight) {\n result += popoverPosition + popoverDimensions.height - window.innerHeight;\n }\n return result;\n }\n /**\n * Calculate horz alignment position\n *\n * @memberOf PositionHelper\n */\n static calculateHorizontalAlignment(elDimensions, popoverDimensions, alignment) {\n let result = horizontalPosition(elDimensions, popoverDimensions, alignment);\n if (result + popoverDimensions.width > window.innerWidth) {\n result = window.innerWidth - popoverDimensions.width;\n }\n return result;\n }\n /**\n * Calculate horz caret position\n *\n * @memberOf PositionHelper\n */\n static calculateHorizontalCaret(elDimensions, popoverDimensions, caretDimensions, alignment) {\n let result;\n if (alignment === 'left') {\n result = elDimensions.width / 2 - caretDimensions.width / 2 + caretOffset;\n }\n if (alignment === 'right') {\n result = popoverDimensions.width - elDimensions.width / 2 - caretDimensions.width / 2 - caretOffset;\n }\n if (alignment === 'center') {\n result = popoverDimensions.width / 2 - caretDimensions.width / 2;\n }\n const popoverPosition = horizontalPosition(elDimensions, popoverDimensions, alignment);\n if (popoverPosition + popoverDimensions.width > window.innerWidth) {\n result += popoverPosition + popoverDimensions.width - window.innerWidth;\n }\n return result;\n }\n /**\n * Checks if the element's position should be flipped\n *\n * @memberOf PositionHelper\n */\n static shouldFlip(elDimensions, popoverDimensions, placement, spacing) {\n let flip = false;\n if (placement === 'right') {\n if (elDimensions.left + elDimensions.width + popoverDimensions.width + spacing > window.innerWidth) {\n flip = true;\n }\n }\n if (placement === 'left') {\n if (elDimensions.left - popoverDimensions.width - spacing < 0) {\n flip = true;\n }\n }\n if (placement === 'top') {\n if (elDimensions.top - popoverDimensions.height - spacing < 0) {\n flip = true;\n }\n }\n if (placement === 'bottom') {\n if (elDimensions.top + elDimensions.height + popoverDimensions.height + spacing > window.innerHeight) {\n flip = true;\n }\n }\n return flip;\n }\n /**\n * Position caret\n *\n * @memberOf PositionHelper\n */\n static positionCaret(placement, elmDim, hostDim, caretDimensions, alignment) {\n let top = 0;\n let left = 0;\n if (placement === PlacementTypes.right) {\n left = -7;\n top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n else if (placement === PlacementTypes.left) {\n left = elmDim.width;\n top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n else if (placement === PlacementTypes.top) {\n top = elmDim.height;\n left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n else if (placement === PlacementTypes.bottom) {\n top = -7;\n left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n return { top, left };\n }\n /**\n * Position content\n *\n * @memberOf PositionHelper\n */\n static positionContent(placement, elmDim, hostDim, spacing, alignment) {\n let top = 0;\n let left = 0;\n if (placement === PlacementTypes.right) {\n left = hostDim.left + hostDim.width + spacing;\n top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n }\n else if (placement === PlacementTypes.left) {\n left = hostDim.left - elmDim.width - spacing;\n top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n }\n else if (placement === PlacementTypes.top) {\n top = hostDim.top - elmDim.height - spacing;\n left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n }\n else if (placement === PlacementTypes.bottom) {\n top = hostDim.top + hostDim.height + spacing;\n left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n }\n return { top, left };\n }\n /**\n * Determine placement based on flip\n *\n * @memberOf PositionHelper\n */\n static determinePlacement(placement, elmDim, hostDim, spacing) {\n const shouldFlip = PositionHelper.shouldFlip(hostDim, elmDim, placement, spacing);\n if (shouldFlip) {\n if (placement === PlacementTypes.right) {\n return PlacementTypes.left;\n }\n else if (placement === PlacementTypes.left) {\n return PlacementTypes.right;\n }\n else if (placement === PlacementTypes.top) {\n return PlacementTypes.bottom;\n }\n else if (placement === PlacementTypes.bottom) {\n return PlacementTypes.top;\n }\n }\n return placement;\n }\n}\n\nlet TooltipContentComponent = class TooltipContentComponent {\n constructor(element, renderer) {\n this.element = element;\n this.renderer = renderer;\n }\n get cssClasses() {\n let clz = 'ngx-charts-tooltip-content';\n clz += ` position-${this.placement}`;\n clz += ` type-${this.type}`;\n clz += ` ${this.cssClass}`;\n return clz;\n }\n ngAfterViewInit() {\n setTimeout(this.position.bind(this));\n }\n position() {\n const nativeElm = this.element.nativeElement;\n const hostDim = this.host.nativeElement.getBoundingClientRect();\n // if no dims were found, never show\n if (!hostDim.height && !hostDim.width)\n return;\n const elmDim = nativeElm.getBoundingClientRect();\n this.checkFlip(hostDim, elmDim);\n this.positionContent(nativeElm, hostDim, elmDim);\n if (this.showCaret) {\n this.positionCaret(hostDim, elmDim);\n }\n // animate its entry\n setTimeout(() => this.renderer.addClass(nativeElm, 'animate'), 1);\n }\n positionContent(nativeElm, hostDim, elmDim) {\n const { top, left } = PositionHelper.positionContent(this.placement, elmDim, hostDim, this.spacing, this.alignment);\n this.renderer.setStyle(nativeElm, 'top', `${top}px`);\n this.renderer.setStyle(nativeElm, 'left', `${left}px`);\n }\n positionCaret(hostDim, elmDim) {\n const caretElm = this.caretElm.nativeElement;\n const caretDimensions = caretElm.getBoundingClientRect();\n const { top, left } = PositionHelper.positionCaret(this.placement, elmDim, hostDim, caretDimensions, this.alignment);\n this.renderer.setStyle(caretElm, 'top', `${top}px`);\n this.renderer.setStyle(caretElm, 'left', `${left}px`);\n }\n checkFlip(hostDim, elmDim) {\n this.placement = PositionHelper.determinePlacement(this.placement, elmDim, hostDim, this.spacing);\n }\n onWindowResize() {\n this.position();\n }\n};\nTooltipContentComponent.ɵfac = function TooltipContentComponent_Factory(t) { return new (t || TooltipContentComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nTooltipContentComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: TooltipContentComponent, selectors: [[\"ngx-tooltip-content\"]], viewQuery: function TooltipContentComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.caretElm = _t.first);\n } }, hostVars: 2, hostBindings: function TooltipContentComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"resize\", function TooltipContentComponent_resize_HostBindingHandler() { return ctx.onWindowResize(); }, false, ɵngcc0.ɵɵresolveWindow);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(ctx.cssClasses);\n } }, inputs: { placement: \"placement\", host: \"host\", showCaret: \"showCaret\", type: \"type\", alignment: \"alignment\", spacing: \"spacing\", cssClass: \"cssClass\", title: \"title\", template: \"template\", context: \"context\" }, decls: 6, vars: 6, consts: [[3, \"hidden\"], [\"caretElm\", \"\"], [1, \"tooltip-content\"], [4, \"ngIf\"], [3, \"innerHTML\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"innerHTML\"]], template: function TooltipContentComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵelement(1, \"span\", 0, 1);\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵtemplate(4, TooltipContentComponent_span_4_Template, 2, 4, \"span\", 3);\n ɵngcc0.ɵɵtemplate(5, TooltipContentComponent_span_5_Template, 1, 1, \"span\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate1(\"tooltip-caret position-\", ctx.placement, \"\");\n ɵngcc0.ɵɵproperty(\"hidden\", !ctx.showCaret);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\".ngx-charts-tooltip-content{position:fixed;border-radius:3px;z-index:5000;display:block;font-weight:400;opacity:0;pointer-events:none!important}.ngx-charts-tooltip-content.type-popover{background:#fff;color:#060709;border:1px solid #72809b;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);font-size:13px;padding:4px}.ngx-charts-tooltip-content.type-popover .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #fff}.ngx-charts-tooltip-content.type-tooltip{color:#fff;background:rgba(0,0,0,.75);font-size:12px;padding:0 10px;text-align:center;pointer-events:auto}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content .tooltip-label{display:block;line-height:1em;padding:8px 5px 5px;font-size:1em}.ngx-charts-tooltip-content .tooltip-val{display:block;font-size:1.3em;line-height:1em;padding:0 5px 8px}.ngx-charts-tooltip-content .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.position-right{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}.ngx-charts-tooltip-content.position-left{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}.ngx-charts-tooltip-content.position-top{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}.ngx-charts-tooltip-content.position-bottom{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}.ngx-charts-tooltip-content.animate{opacity:1;-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);pointer-events:auto}.area-tooltip-container{padding:5px 0;pointer-events:none}.tooltip-item{text-align:left;line-height:1.2em;padding:5px 0}.tooltip-item .tooltip-item-color{display:inline-block;height:12px;width:12px;margin-right:5px;color:#5b646b;border-radius:3px}\"], encapsulation: 2 });\nTooltipContentComponent.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 }\n];\n__decorate([\n Input()\n], TooltipContentComponent.prototype, \"host\", void 0);\n__decorate([\n Input()\n], TooltipContentComponent.prototype, \"showCaret\", void 0);\n__decorate([\n Input()\n], TooltipContentComponent.prototype, \"type\", void 0);\n__decorate([\n Input()\n], TooltipContentComponent.prototype, \"placement\", void 0);\n__decorate([\n Input()\n], TooltipContentComponent.prototype, \"alignment\", void 0);\n__decorate([\n Input()\n], TooltipContentComponent.prototype, \"spacing\", void 0);\n__decorate([\n Input()\n], TooltipContentComponent.prototype, \"cssClass\", void 0);\n__decorate([\n Input()\n], TooltipContentComponent.prototype, \"title\", void 0);\n__decorate([\n Input()\n], TooltipContentComponent.prototype, \"template\", void 0);\n__decorate([\n Input()\n], TooltipContentComponent.prototype, \"context\", void 0);\n__decorate([\n ViewChild('caretElm')\n], TooltipContentComponent.prototype, \"caretElm\", void 0);\n__decorate([\n HostBinding('class')\n], TooltipContentComponent.prototype, \"cssClasses\", null);\n__decorate([\n HostListener('window:resize'),\n throttleable(100)\n], TooltipContentComponent.prototype, \"onWindowResize\", null);\n\nclass InjectionRegisteryService {\n constructor(injectionService) {\n this.injectionService = injectionService;\n this.defaults = {};\n this.components = new Map();\n }\n getByType(type = this.type) {\n return this.components.get(type);\n }\n create(bindings) {\n return this.createByType(this.type, bindings);\n }\n createByType(type, bindings) {\n bindings = this.assignDefaults(bindings);\n const component = this.injectComponent(type, bindings);\n this.register(type, component);\n return component;\n }\n destroy(instance) {\n const compsByType = this.components.get(instance.componentType);\n if (compsByType && compsByType.length) {\n const idx = compsByType.indexOf(instance);\n if (idx > -1) {\n const component = compsByType[idx];\n component.destroy();\n compsByType.splice(idx, 1);\n }\n }\n }\n destroyAll() {\n this.destroyByType(this.type);\n }\n destroyByType(type) {\n const comps = this.components.get(type);\n if (comps && comps.length) {\n let i = comps.length - 1;\n while (i >= 0) {\n this.destroy(comps[i--]);\n }\n }\n }\n injectComponent(type, bindings) {\n return this.injectionService.appendComponent(type, bindings);\n }\n assignDefaults(bindings) {\n const inputs = Object.assign({}, this.defaults.inputs);\n const outputs = Object.assign({}, this.defaults.outputs);\n if (!bindings.inputs && !bindings.outputs) {\n bindings = { inputs: bindings };\n }\n if (inputs) {\n bindings.inputs = Object.assign(Object.assign({}, inputs), bindings.inputs);\n }\n if (outputs) {\n bindings.outputs = Object.assign(Object.assign({}, outputs), bindings.outputs);\n }\n return bindings;\n }\n register(type, component) {\n if (!this.components.has(type)) {\n this.components.set(type, []);\n }\n const types = this.components.get(type);\n types.push(component);\n }\n}\n\nlet TooltipService = class TooltipService extends InjectionRegisteryService {\n constructor(injectionService) {\n super(injectionService);\n this.type = TooltipContentComponent;\n }\n};\nTooltipService.ɵfac = function TooltipService_Factory(t) { return new (t || TooltipService)(ɵngcc0.ɵɵinject(InjectionService)); };\nTooltipService.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: TooltipService, factory: TooltipService.ɵfac });\nTooltipService.ctorParameters = () => [\n { type: InjectionService }\n];\n\nlet ChartComponent = class ChartComponent {\n constructor() {\n this.showLegend = false;\n this.animations = true;\n this.legendLabelClick = new EventEmitter();\n this.legendLabelActivate = new EventEmitter();\n this.legendLabelDeactivate = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n let legendColumns = 0;\n if (this.showLegend) {\n this.legendType = this.getLegendType();\n if (!this.legendOptions || this.legendOptions.position === 'right') {\n if (this.legendType === 'scaleLegend') {\n legendColumns = 1;\n }\n else {\n legendColumns = 2;\n }\n }\n }\n const chartColumns = 12 - legendColumns;\n this.chartWidth = Math.floor((this.view[0] * chartColumns) / 12.0);\n this.legendWidth =\n !this.legendOptions || this.legendOptions.position === 'right'\n ? Math.floor((this.view[0] * legendColumns) / 12.0)\n : this.chartWidth;\n }\n getLegendType() {\n if (this.legendOptions.scaleType === 'linear') {\n return 'scaleLegend';\n }\n else {\n return 'legend';\n }\n }\n};\nChartComponent.ɵfac = function ChartComponent_Factory(t) { return new (t || ChartComponent)(); };\nChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: ChartComponent, selectors: [[\"ngx-charts-chart\"]], inputs: { showLegend: \"showLegend\", animations: \"animations\", legendType: \"legendType\", view: \"view\", legendOptions: \"legendOptions\", data: \"data\", legendData: \"legendData\", colors: \"colors\", activeEntries: \"activeEntries\" }, outputs: { legendLabelClick: \"legendLabelClick\", legendLabelActivate: \"legendLabelActivate\", legendLabelDeactivate: \"legendLabelDeactivate\" }, features: [ɵngcc0.ɵɵProvidersFeature([TooltipService]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c2, decls: 5, vars: 8, consts: [[1, \"ngx-charts-outer\"], [1, \"ngx-charts\"], [\"class\", \"chart-legend\", 3, \"horizontal\", \"valueRange\", \"colors\", \"height\", \"width\", 4, \"ngIf\"], [\"class\", \"chart-legend\", 3, \"horizontal\", \"data\", \"title\", \"colors\", \"height\", \"width\", \"activeEntries\", \"labelClick\", \"labelActivate\", \"labelDeactivate\", 4, \"ngIf\"], [1, \"chart-legend\", 3, \"horizontal\", \"valueRange\", \"colors\", \"height\", \"width\"], [1, \"chart-legend\", 3, \"horizontal\", \"data\", \"title\", \"colors\", \"height\", \"width\", \"activeEntries\", \"labelClick\", \"labelActivate\", \"labelDeactivate\"]], template: function ChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"svg\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, ChartComponent_ngx_charts_scale_legend_3_Template, 1, 5, \"ngx-charts-scale-legend\", 2);\n ɵngcc0.ɵɵtemplate(4, ChartComponent_ngx_charts_legend_4_Template, 1, 7, \"ngx-charts-legend\", 3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.view[0], \"px\");\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"@.disabled\", !ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.chartWidth)(\"height\", ctx.view[1]);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLegend && ctx.legendType === \"scaleLegend\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLegend && ctx.legendType === \"legend\");\n } }, directives: function () { return [ɵngcc1.NgIf, ScaleLegendComponent,\n LegendComponent]; }, encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':enter', [style({ opacity: 0 }), animate('500ms 100ms', style({ opacity: 1 }))])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], ChartComponent.prototype, \"view\", void 0);\n__decorate([\n Input()\n], ChartComponent.prototype, \"showLegend\", void 0);\n__decorate([\n Input()\n], ChartComponent.prototype, \"legendOptions\", void 0);\n__decorate([\n Input()\n], ChartComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], ChartComponent.prototype, \"legendData\", void 0);\n__decorate([\n Input()\n], ChartComponent.prototype, \"legendType\", void 0);\n__decorate([\n Input()\n], ChartComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], ChartComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], ChartComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], ChartComponent.prototype, \"legendLabelClick\", void 0);\n__decorate([\n Output()\n], ChartComponent.prototype, \"legendLabelActivate\", void 0);\n__decorate([\n Output()\n], ChartComponent.prototype, \"legendLabelDeactivate\", void 0);\n\n/**\n * Visibility Observer\n */\nlet VisibilityObserver = class VisibilityObserver {\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n this.visible = new EventEmitter();\n this.isVisible = false;\n this.runCheck();\n }\n destroy() {\n clearTimeout(this.timeout);\n }\n onVisibilityChange() {\n // trigger zone recalc for columns\n this.zone.run(() => {\n this.isVisible = true;\n this.visible.emit(true);\n });\n }\n runCheck() {\n const check = () => {\n if (!this.element) {\n return;\n }\n // https://davidwalsh.name/offsetheight-visibility\n const { offsetHeight, offsetWidth } = this.element.nativeElement;\n if (offsetHeight && offsetWidth) {\n clearTimeout(this.timeout);\n this.onVisibilityChange();\n }\n else {\n clearTimeout(this.timeout);\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check(), 100);\n });\n }\n };\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check());\n });\n }\n};\nVisibilityObserver.ɵfac = function VisibilityObserver_Factory(t) { return new (t || VisibilityObserver)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nVisibilityObserver.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: VisibilityObserver, selectors: [[\"visibility-observer\"]], outputs: { visible: \"visible\" } });\nVisibilityObserver.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone }\n];\n__decorate([\n Output()\n], VisibilityObserver.prototype, \"visible\", void 0);\n\nlet BaseChartComponent = class BaseChartComponent {\n constructor(chartElement, zone, cd) {\n this.chartElement = chartElement;\n this.zone = zone;\n this.cd = cd;\n this.scheme = 'cool';\n this.schemeType = 'ordinal';\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngAfterViewInit() {\n this.bindWindowResizeEvent();\n // listen for visibility of the element for hidden by default scenario\n this.visibilityObserver = new VisibilityObserver(this.chartElement, this.zone);\n this.visibilityObserver.visible.subscribe(this.update.bind(this));\n }\n ngOnDestroy() {\n this.unbindEvents();\n if (this.visibilityObserver) {\n this.visibilityObserver.visible.unsubscribe();\n this.visibilityObserver.destroy();\n }\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n if (this.results) {\n this.results = this.cloneData(this.results);\n }\n else {\n this.results = [];\n }\n if (this.view) {\n this.width = this.view[0];\n this.height = this.view[1];\n }\n else {\n const dims = this.getContainerDims();\n if (dims) {\n this.width = dims.width;\n this.height = dims.height;\n }\n }\n // default values if width or height are 0 or undefined\n if (!this.width) {\n this.width = 600;\n }\n if (!this.height) {\n this.height = 400;\n }\n this.width = Math.floor(this.width);\n this.height = Math.floor(this.height);\n if (this.cd) {\n this.cd.markForCheck();\n }\n }\n getContainerDims() {\n let width;\n let height;\n const hostElem = this.chartElement.nativeElement;\n if (hostElem.parentNode !== null) {\n // Get the container dimensions\n const dims = hostElem.parentNode.getBoundingClientRect();\n width = dims.width;\n height = dims.height;\n }\n if (width && height) {\n return { width, height };\n }\n return null;\n }\n /**\n * Converts all date objects that appear as name\n * into formatted date strings\n */\n formatDates() {\n for (let i = 0; i < this.results.length; i++) {\n const g = this.results[i];\n g.label = g.name;\n if (g.label instanceof Date) {\n g.label = g.label.toLocaleDateString();\n }\n if (g.series) {\n for (let j = 0; j < g.series.length; j++) {\n const d = g.series[j];\n d.label = d.name;\n if (d.label instanceof Date) {\n d.label = d.label.toLocaleDateString();\n }\n }\n }\n }\n }\n unbindEvents() {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n bindWindowResizeEvent() {\n const source = fromEvent(window, 'resize');\n const subscription = source.pipe(debounceTime(200)).subscribe(e => {\n this.update();\n if (this.cd) {\n this.cd.markForCheck();\n }\n });\n this.resizeSubscription = subscription;\n }\n /**\n * Clones the data into a new object\n *\n * @memberOf BaseChart\n */\n cloneData(data) {\n const results = [];\n for (const item of data) {\n const copy = {\n name: item['name']\n };\n if (item['value'] !== undefined) {\n copy['value'] = item['value'];\n }\n if (item['series'] !== undefined) {\n copy['series'] = [];\n for (const seriesItem of item['series']) {\n const seriesItemCopy = Object.assign({}, seriesItem);\n copy['series'].push(seriesItemCopy);\n }\n }\n if (item['extra'] !== undefined) {\n copy['extra'] = JSON.parse(JSON.stringify(item['extra']));\n }\n results.push(copy);\n }\n return results;\n }\n};\nBaseChartComponent.ɵfac = function BaseChartComponent_Factory(t) { return new (t || BaseChartComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nBaseChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BaseChartComponent, selectors: [[\"base-chart\"]], inputs: { scheme: \"scheme\", schemeType: \"schemeType\", animations: \"animations\", results: \"results\", view: \"view\", customColors: \"customColors\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 1, vars: 0, template: function BaseChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\");\n } }, encapsulation: 2 });\nBaseChartComponent.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone },\n { type: ChangeDetectorRef }\n];\n__decorate([\n Input()\n], BaseChartComponent.prototype, \"results\", void 0);\n__decorate([\n Input()\n], BaseChartComponent.prototype, \"view\", void 0);\n__decorate([\n Input()\n], BaseChartComponent.prototype, \"scheme\", void 0);\n__decorate([\n Input()\n], BaseChartComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], BaseChartComponent.prototype, \"customColors\", void 0);\n__decorate([\n Input()\n], BaseChartComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], BaseChartComponent.prototype, \"select\", void 0);\n\nlet AxisLabelComponent = class AxisLabelComponent {\n constructor(element) {\n this.textHeight = 25;\n this.margin = 5;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.strokeWidth = '0.01';\n this.textAnchor = 'middle';\n this.transform = '';\n switch (this.orient) {\n case 'top':\n this.y = this.offset;\n this.x = this.width / 2;\n break;\n case 'bottom':\n this.y = this.offset;\n this.x = this.width / 2;\n break;\n case 'left':\n this.y = -(this.offset + this.textHeight + this.margin);\n this.x = -this.height / 2;\n this.transform = 'rotate(270)';\n break;\n case 'right':\n this.y = this.offset + this.margin;\n this.x = -this.height / 2;\n this.transform = 'rotate(270)';\n break;\n default:\n }\n }\n};\nAxisLabelComponent.ɵfac = function AxisLabelComponent_Factory(t) { return new (t || AxisLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nAxisLabelComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AxisLabelComponent, selectors: [[\"g\", \"ngx-charts-axis-label\", \"\"]], inputs: { orient: \"orient\", label: \"label\", offset: \"offset\", width: \"width\", height: \"height\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c3, decls: 2, vars: 6, template: function AxisLabelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"text\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"stroke-width\", ctx.strokeWidth)(\"x\", ctx.x)(\"y\", ctx.y)(\"text-anchor\", ctx.textAnchor)(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.label, \" \");\n } }, encapsulation: 2, changeDetection: 0 });\nAxisLabelComponent.ctorParameters = () => [\n { type: ElementRef }\n];\n__decorate([\n Input()\n], AxisLabelComponent.prototype, \"orient\", void 0);\n__decorate([\n Input()\n], AxisLabelComponent.prototype, \"label\", void 0);\n__decorate([\n Input()\n], AxisLabelComponent.prototype, \"offset\", void 0);\n__decorate([\n Input()\n], AxisLabelComponent.prototype, \"width\", void 0);\n__decorate([\n Input()\n], AxisLabelComponent.prototype, \"height\", void 0);\n\nfunction trimLabel(s, max = 16) {\n if (typeof s !== 'string') {\n if (typeof s === 'number') {\n return s + '';\n }\n else {\n return '';\n }\n }\n s = s.trim();\n if (s.length <= max) {\n return s;\n }\n else {\n return `${s.slice(0, max)}...`;\n }\n}\n\nfunction reduceTicks(ticks, maxTicks) {\n if (ticks.length > maxTicks) {\n const reduced = [];\n const modulus = Math.floor(ticks.length / maxTicks);\n for (let i = 0; i < ticks.length; i++) {\n if (i % modulus === 0) {\n reduced.push(ticks[i]);\n }\n }\n ticks = reduced;\n }\n return ticks;\n}\n\nlet XAxisTicksComponent = class XAxisTicksComponent {\n constructor() {\n this.tickArguments = [5];\n this.tickStroke = '#ccc';\n this.trimTicks = true;\n this.maxTickLength = 16;\n this.showGridLines = false;\n this.rotateTicks = true;\n this.dimensionsChanged = new EventEmitter();\n this.verticalSpacing = 20;\n this.rotateLabels = false;\n this.innerTickSize = 6;\n this.outerTickSize = 6;\n this.tickPadding = 3;\n this.textAnchor = 'middle';\n this.maxTicksLength = 0;\n this.maxAllowedLength = 16;\n this.height = 0;\n }\n ngOnChanges(changes) {\n this.update();\n }\n ngAfterViewInit() {\n setTimeout(() => this.updateDims());\n }\n updateDims() {\n const height = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().height, 10);\n if (height !== this.height) {\n this.height = height;\n this.dimensionsChanged.emit({ height });\n setTimeout(() => this.updateDims());\n }\n }\n update() {\n const scale = this.scale;\n this.ticks = this.getTicks();\n if (this.tickFormatting) {\n this.tickFormat = this.tickFormatting;\n }\n else if (scale.tickFormat) {\n this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n }\n else {\n this.tickFormat = function (d) {\n if (d.constructor.name === 'Date') {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n const angle = this.rotateTicks ? this.getRotationAngle(this.ticks) : null;\n this.adjustedScale = this.scale.bandwidth\n ? function (d) {\n return this.scale(d) + this.scale.bandwidth() * 0.5;\n }\n : this.scale;\n this.textTransform = '';\n if (angle && angle !== 0) {\n this.textTransform = `rotate(${angle})`;\n this.textAnchor = 'end';\n this.verticalSpacing = 10;\n }\n else {\n this.textAnchor = 'middle';\n }\n setTimeout(() => this.updateDims());\n }\n getRotationAngle(ticks) {\n let angle = 0;\n this.maxTicksLength = 0;\n for (let i = 0; i < ticks.length; i++) {\n const tick = this.tickFormat(ticks[i]).toString();\n let tickLength = tick.length;\n if (this.trimTicks) {\n tickLength = this.tickTrim(tick).length;\n }\n if (tickLength > this.maxTicksLength) {\n this.maxTicksLength = tickLength;\n }\n }\n const len = Math.min(this.maxTicksLength, this.maxAllowedLength);\n const charWidth = 8; // need to measure this\n const wordWidth = len * charWidth;\n let baseWidth = wordWidth;\n const maxBaseWidth = Math.floor(this.width / ticks.length);\n // calculate optimal angle\n while (baseWidth > maxBaseWidth && angle > -90) {\n angle -= 30;\n baseWidth = Math.cos(angle * (Math.PI / 180)) * wordWidth;\n }\n return angle;\n }\n getTicks() {\n let ticks;\n const maxTicks = this.getMaxTicks(20);\n const maxScaleTicks = this.getMaxTicks(100);\n if (this.tickValues) {\n ticks = this.tickValues;\n }\n else if (this.scale.ticks) {\n ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n }\n else {\n ticks = this.scale.domain();\n ticks = reduceTicks(ticks, maxTicks);\n }\n return ticks;\n }\n getMaxTicks(tickWidth) {\n return Math.floor(this.width / tickWidth);\n }\n tickTransform(tick) {\n return 'translate(' + this.adjustedScale(tick) + ',' + this.verticalSpacing + ')';\n }\n gridLineTransform() {\n return `translate(0,${-this.verticalSpacing - 5})`;\n }\n tickTrim(label) {\n return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n }\n};\nXAxisTicksComponent.ɵfac = function XAxisTicksComponent_Factory(t) { return new (t || XAxisTicksComponent)(); };\nXAxisTicksComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: XAxisTicksComponent, selectors: [[\"g\", \"ngx-charts-x-axis-ticks\", \"\"]], viewQuery: function XAxisTicksComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c4, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksElement = _t.first);\n } }, inputs: { tickArguments: \"tickArguments\", tickStroke: \"tickStroke\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", showGridLines: \"showGridLines\", rotateTicks: \"rotateTicks\", scale: \"scale\", orient: \"orient\", tickValues: \"tickValues\", tickFormatting: \"tickFormatting\", gridLineHeight: \"gridLineHeight\", width: \"width\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c5, decls: 4, vars: 2, consts: [[\"ticksel\", \"\"], [\"class\", \"tick\", 4, \"ngFor\", \"ngForOf\"], [4, \"ngFor\", \"ngForOf\"], [1, \"tick\"], [\"stroke-width\", \"0.01\"], [4, \"ngIf\"], [\"y2\", \"0\", 1, \"gridline-path\", \"gridline-path-vertical\"]], template: function XAxisTicksComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", null, 0);\n ɵngcc0.ɵɵtemplate(2, XAxisTicksComponent__svg_g_2_Template, 5, 7, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, XAxisTicksComponent__svg_g_3_Template, 2, 2, \"g\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], XAxisTicksComponent.prototype, \"scale\", void 0);\n__decorate([\n Input()\n], XAxisTicksComponent.prototype, \"orient\", void 0);\n__decorate([\n Input()\n], XAxisTicksComponent.prototype, \"tickArguments\", void 0);\n__decorate([\n Input()\n], XAxisTicksComponent.prototype, \"tickValues\", void 0);\n__decorate([\n Input()\n], XAxisTicksComponent.prototype, \"tickStroke\", void 0);\n__decorate([\n Input()\n], XAxisTicksComponent.prototype, \"trimTicks\", void 0);\n__decorate([\n Input()\n], XAxisTicksComponent.prototype, \"maxTickLength\", void 0);\n__decorate([\n Input()\n], XAxisTicksComponent.prototype, \"tickFormatting\", void 0);\n__decorate([\n Input()\n], XAxisTicksComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], XAxisTicksComponent.prototype, \"gridLineHeight\", void 0);\n__decorate([\n Input()\n], XAxisTicksComponent.prototype, \"width\", void 0);\n__decorate([\n Input()\n], XAxisTicksComponent.prototype, \"rotateTicks\", void 0);\n__decorate([\n Output()\n], XAxisTicksComponent.prototype, \"dimensionsChanged\", void 0);\n__decorate([\n ViewChild('ticksel')\n], XAxisTicksComponent.prototype, \"ticksElement\", void 0);\n\nlet XAxisComponent = class XAxisComponent {\n constructor() {\n this.rotateTicks = true;\n this.showGridLines = false;\n this.xOrient = 'bottom';\n this.xAxisOffset = 0;\n this.dimensionsChanged = new EventEmitter();\n this.xAxisClassName = 'x axis';\n this.labelOffset = 0;\n this.fill = 'none';\n this.stroke = 'stroke';\n this.tickStroke = '#ccc';\n this.strokeWidth = 'none';\n this.padding = 5;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.transform = `translate(0,${this.xAxisOffset + this.padding + this.dims.height})`;\n if (typeof this.xAxisTickCount !== 'undefined') {\n this.tickArguments = [this.xAxisTickCount];\n }\n }\n emitTicksHeight({ height }) {\n const newLabelOffset = height + 25 + 5;\n if (newLabelOffset !== this.labelOffset) {\n this.labelOffset = newLabelOffset;\n setTimeout(() => {\n this.dimensionsChanged.emit({ height });\n }, 0);\n }\n }\n};\nXAxisComponent.ɵfac = function XAxisComponent_Factory(t) { return new (t || XAxisComponent)(); };\nXAxisComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: XAxisComponent, selectors: [[\"g\", \"ngx-charts-x-axis\", \"\"]], viewQuery: function XAxisComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(XAxisTicksComponent, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksComponent = _t.first);\n } }, inputs: { rotateTicks: \"rotateTicks\", showGridLines: \"showGridLines\", xOrient: \"xOrient\", xAxisOffset: \"xAxisOffset\", xScale: \"xScale\", dims: \"dims\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", showLabel: \"showLabel\", labelText: \"labelText\", ticks: \"ticks\", xAxisTickInterval: \"xAxisTickInterval\", xAxisTickCount: \"xAxisTickCount\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c6, decls: 3, vars: 4, consts: [[\"ngx-charts-x-axis-ticks\", \"\", 3, \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"tickArguments\", \"tickStroke\", \"scale\", \"orient\", \"showGridLines\", \"gridLineHeight\", \"width\", \"tickValues\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\", 4, \"ngIf\"], [\"ngx-charts-x-axis-ticks\", \"\", 3, \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"tickArguments\", \"tickStroke\", \"scale\", \"orient\", \"showGridLines\", \"gridLineHeight\", \"width\", \"tickValues\", \"dimensionsChanged\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\"]], template: function XAxisComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, XAxisComponent__svg_g_1_Template, 1, 12, \"g\", 0);\n ɵngcc0.ɵɵtemplate(2, XAxisComponent__svg_g_2_Template, 1, 5, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"class\", ctx.xAxisClassName)(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xScale);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLabel);\n } }, directives: [ɵngcc1.NgIf, XAxisTicksComponent,\n AxisLabelComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], XAxisComponent.prototype, \"xScale\", void 0);\n__decorate([\n Input()\n], XAxisComponent.prototype, \"dims\", void 0);\n__decorate([\n Input()\n], XAxisComponent.prototype, \"trimTicks\", void 0);\n__decorate([\n Input()\n], XAxisComponent.prototype, \"rotateTicks\", void 0);\n__decorate([\n Input()\n], XAxisComponent.prototype, \"maxTickLength\", void 0);\n__decorate([\n Input()\n], XAxisComponent.prototype, \"tickFormatting\", void 0);\n__decorate([\n Input()\n], XAxisComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], XAxisComponent.prototype, \"showLabel\", void 0);\n__decorate([\n Input()\n], XAxisComponent.prototype, \"labelText\", void 0);\n__decorate([\n Input()\n], XAxisComponent.prototype, \"ticks\", void 0);\n__decorate([\n Input()\n], XAxisComponent.prototype, \"xAxisTickInterval\", void 0);\n__decorate([\n Input()\n], XAxisComponent.prototype, \"xAxisTickCount\", void 0);\n__decorate([\n Input()\n], XAxisComponent.prototype, \"xOrient\", void 0);\n__decorate([\n Input()\n], XAxisComponent.prototype, \"xAxisOffset\", void 0);\n__decorate([\n Output()\n], XAxisComponent.prototype, \"dimensionsChanged\", void 0);\n__decorate([\n ViewChild(XAxisTicksComponent)\n], XAxisComponent.prototype, \"ticksComponent\", void 0);\n\n/**\n * Generates a rounded rectanglar path\n *\n * @export\n * @param x, y, w, h, r, tl, tr, bl, br\n */\nfunction roundedRect(x, y, w, h, r, [tl, tr, bl, br]) {\n let retval = '';\n w = Math.floor(w);\n h = Math.floor(h);\n w = w === 0 ? 1 : w;\n h = h === 0 ? 1 : h;\n retval = `M${[x + r, y]}`;\n retval += `h${w - 2 * r}`;\n if (tr) {\n retval += `a${[r, r]} 0 0 1 ${[r, r]}`;\n }\n else {\n retval += `h${r}v${r}`;\n }\n retval += `v${h - 2 * r}`;\n if (br) {\n retval += `a${[r, r]} 0 0 1 ${[-r, r]}`;\n }\n else {\n retval += `v${r}h${-r}`;\n }\n retval += `h${2 * r - w}`;\n if (bl) {\n retval += `a${[r, r]} 0 0 1 ${[-r, -r]}`;\n }\n else {\n retval += `h${-r}v${-r}`;\n }\n retval += `v${2 * r - h}`;\n if (tl) {\n retval += `a${[r, r]} 0 0 1 ${[r, -r]}`;\n }\n else {\n retval += `v${-r}h${r}`;\n }\n retval += `z`;\n return retval;\n}\n\nlet YAxisTicksComponent = class YAxisTicksComponent {\n constructor() {\n this.tickArguments = [5];\n this.tickStroke = '#ccc';\n this.trimTicks = true;\n this.maxTickLength = 16;\n this.showGridLines = false;\n this.showRefLabels = false;\n this.showRefLines = false;\n this.dimensionsChanged = new EventEmitter();\n this.innerTickSize = 6;\n this.tickPadding = 3;\n this.verticalSpacing = 20;\n this.textAnchor = 'middle';\n this.width = 0;\n this.outerTickSize = 6;\n this.rotateLabels = false;\n this.referenceLineLength = 0;\n }\n ngOnChanges(changes) {\n this.update();\n }\n ngAfterViewInit() {\n setTimeout(() => this.updateDims());\n }\n updateDims() {\n const width = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().width, 10);\n if (width !== this.width) {\n this.width = width;\n this.dimensionsChanged.emit({ width });\n setTimeout(() => this.updateDims());\n }\n }\n update() {\n let scale;\n const sign = this.orient === 'top' || this.orient === 'right' ? -1 : 1;\n this.tickSpacing = Math.max(this.innerTickSize, 0) + this.tickPadding;\n scale = this.scale;\n this.ticks = this.getTicks();\n if (this.tickFormatting) {\n this.tickFormat = this.tickFormatting;\n }\n else if (scale.tickFormat) {\n this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n }\n else {\n this.tickFormat = function (d) {\n if (d.constructor.name === 'Date') {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n this.adjustedScale = scale.bandwidth\n ? function (d) {\n return scale(d) + scale.bandwidth() * 0.5;\n }\n : scale;\n if (this.showRefLines && this.referenceLines) {\n this.setReferencelines();\n }\n switch (this.orient) {\n case 'top':\n this.transform = function (tick) {\n return 'translate(' + this.adjustedScale(tick) + ',0)';\n };\n this.textAnchor = 'middle';\n this.y2 = this.innerTickSize * sign;\n this.y1 = this.tickSpacing * sign;\n this.dy = sign < 0 ? '0em' : '.71em';\n break;\n case 'bottom':\n this.transform = function (tick) {\n return 'translate(' + this.adjustedScale(tick) + ',0)';\n };\n this.textAnchor = 'middle';\n this.y2 = this.innerTickSize * sign;\n this.y1 = this.tickSpacing * sign;\n this.dy = sign < 0 ? '0em' : '.71em';\n break;\n case 'left':\n this.transform = function (tick) {\n return 'translate(0,' + this.adjustedScale(tick) + ')';\n };\n this.textAnchor = 'end';\n this.x2 = this.innerTickSize * -sign;\n this.x1 = this.tickSpacing * -sign;\n this.dy = '.32em';\n break;\n case 'right':\n this.transform = function (tick) {\n return 'translate(0,' + this.adjustedScale(tick) + ')';\n };\n this.textAnchor = 'start';\n this.x2 = this.innerTickSize * -sign;\n this.x1 = this.tickSpacing * -sign;\n this.dy = '.32em';\n break;\n default:\n }\n setTimeout(() => this.updateDims());\n }\n setReferencelines() {\n this.refMin = this.adjustedScale(Math.min.apply(null, this.referenceLines.map(item => item.value)));\n this.refMax = this.adjustedScale(Math.max.apply(null, this.referenceLines.map(item => item.value)));\n this.referenceLineLength = this.referenceLines.length;\n this.referenceAreaPath = roundedRect(0, this.refMax, this.gridLineWidth, this.refMin - this.refMax, 0, [\n false,\n false,\n false,\n false\n ]);\n }\n getTicks() {\n let ticks;\n const maxTicks = this.getMaxTicks(20);\n const maxScaleTicks = this.getMaxTicks(50);\n if (this.tickValues) {\n ticks = this.tickValues;\n }\n else if (this.scale.ticks) {\n ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n }\n else {\n ticks = this.scale.domain();\n ticks = reduceTicks(ticks, maxTicks);\n }\n return ticks;\n }\n getMaxTicks(tickHeight) {\n return Math.floor(this.height / tickHeight);\n }\n tickTransform(tick) {\n return `translate(${this.adjustedScale(tick)},${this.verticalSpacing})`;\n }\n gridLineTransform() {\n return `translate(5,0)`;\n }\n tickTrim(label) {\n return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n }\n};\nYAxisTicksComponent.ɵfac = function YAxisTicksComponent_Factory(t) { return new (t || YAxisTicksComponent)(); };\nYAxisTicksComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: YAxisTicksComponent, selectors: [[\"g\", \"ngx-charts-y-axis-ticks\", \"\"]], viewQuery: function YAxisTicksComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c4, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksElement = _t.first);\n } }, inputs: { tickArguments: \"tickArguments\", tickStroke: \"tickStroke\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", showGridLines: \"showGridLines\", showRefLabels: \"showRefLabels\", showRefLines: \"showRefLines\", scale: \"scale\", orient: \"orient\", tickValues: \"tickValues\", tickFormatting: \"tickFormatting\", gridLineWidth: \"gridLineWidth\", height: \"height\", referenceLines: \"referenceLines\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c7, decls: 6, vars: 4, consts: [[\"ticksel\", \"\"], [\"class\", \"tick\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"reference-area\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\"], [1, \"tick\"], [\"stroke-width\", \"0.01\"], [1, \"reference-area\"], [4, \"ngIf\"], [\"class\", \"gridline-path gridline-path-horizontal\", \"x1\", \"0\", 4, \"ngIf\"], [\"x1\", \"0\", 1, \"gridline-path\", \"gridline-path-horizontal\"], [\"x1\", \"0\", 1, \"refline-path\", \"gridline-path-horizontal\"], [1, \"refline-label\"]], template: function YAxisTicksComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", null, 0);\n ɵngcc0.ɵɵtemplate(2, YAxisTicksComponent__svg_g_2_Template, 5, 9, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, YAxisTicksComponent__svg_path_3_Template, 1, 2, \"path\", 2);\n ɵngcc0.ɵɵtemplate(4, YAxisTicksComponent__svg_g_4_Template, 2, 2, \"g\", 3);\n ɵngcc0.ɵɵtemplate(5, YAxisTicksComponent__svg_g_5_Template, 2, 1, \"g\", 3);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.referenceLineLength > 1 && ctx.refMax && ctx.refMin && ctx.showRefLines);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.referenceLines);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"scale\", void 0);\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"orient\", void 0);\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"tickArguments\", void 0);\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"tickValues\", void 0);\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"tickStroke\", void 0);\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"trimTicks\", void 0);\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"maxTickLength\", void 0);\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"tickFormatting\", void 0);\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"gridLineWidth\", void 0);\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"height\", void 0);\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"referenceLines\", void 0);\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"showRefLabels\", void 0);\n__decorate([\n Input()\n], YAxisTicksComponent.prototype, \"showRefLines\", void 0);\n__decorate([\n Output()\n], YAxisTicksComponent.prototype, \"dimensionsChanged\", void 0);\n__decorate([\n ViewChild('ticksel')\n], YAxisTicksComponent.prototype, \"ticksElement\", void 0);\n\nlet YAxisComponent = class YAxisComponent {\n constructor() {\n this.showGridLines = false;\n this.yOrient = 'left';\n this.yAxisOffset = 0;\n this.dimensionsChanged = new EventEmitter();\n this.yAxisClassName = 'y axis';\n this.labelOffset = 15;\n this.fill = 'none';\n this.stroke = '#CCC';\n this.tickStroke = '#CCC';\n this.strokeWidth = 1;\n this.padding = 5;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.offset = -(this.yAxisOffset + this.padding);\n if (this.yOrient === 'right') {\n this.labelOffset = 65;\n this.transform = `translate(${this.offset + this.dims.width} , 0)`;\n }\n else {\n this.offset = this.offset;\n this.transform = `translate(${this.offset} , 0)`;\n }\n if (this.yAxisTickCount !== undefined) {\n this.tickArguments = [this.yAxisTickCount];\n }\n }\n emitTicksWidth({ width }) {\n if (width !== this.labelOffset && this.yOrient === 'right') {\n this.labelOffset = width + this.labelOffset;\n setTimeout(() => {\n this.dimensionsChanged.emit({ width });\n }, 0);\n }\n else if (width !== this.labelOffset) {\n this.labelOffset = width;\n setTimeout(() => {\n this.dimensionsChanged.emit({ width });\n }, 0);\n }\n }\n};\nYAxisComponent.ɵfac = function YAxisComponent_Factory(t) { return new (t || YAxisComponent)(); };\nYAxisComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: YAxisComponent, selectors: [[\"g\", \"ngx-charts-y-axis\", \"\"]], viewQuery: function YAxisComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(YAxisTicksComponent, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksComponent = _t.first);\n } }, inputs: { showGridLines: \"showGridLines\", yOrient: \"yOrient\", yAxisOffset: \"yAxisOffset\", yScale: \"yScale\", dims: \"dims\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", ticks: \"ticks\", showLabel: \"showLabel\", labelText: \"labelText\", yAxisTickInterval: \"yAxisTickInterval\", yAxisTickCount: \"yAxisTickCount\", referenceLines: \"referenceLines\", showRefLines: \"showRefLines\", showRefLabels: \"showRefLabels\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c8, decls: 3, vars: 4, consts: [[\"ngx-charts-y-axis-ticks\", \"\", 3, \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"tickArguments\", \"tickValues\", \"tickStroke\", \"scale\", \"orient\", \"showGridLines\", \"gridLineWidth\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"height\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\", 4, \"ngIf\"], [\"ngx-charts-y-axis-ticks\", \"\", 3, \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"tickArguments\", \"tickValues\", \"tickStroke\", \"scale\", \"orient\", \"showGridLines\", \"gridLineWidth\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"height\", \"dimensionsChanged\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\"]], template: function YAxisComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, YAxisComponent__svg_g_1_Template, 1, 14, \"g\", 0);\n ɵngcc0.ɵɵtemplate(2, YAxisComponent__svg_g_2_Template, 1, 5, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"class\", ctx.yAxisClassName)(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yScale);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLabel);\n } }, directives: [ɵngcc1.NgIf, YAxisTicksComponent,\n AxisLabelComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], YAxisComponent.prototype, \"yScale\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"dims\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"trimTicks\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"maxTickLength\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"tickFormatting\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"ticks\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"showLabel\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"labelText\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"yAxisTickInterval\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"yAxisTickCount\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"yOrient\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"referenceLines\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"showRefLines\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"showRefLabels\", void 0);\n__decorate([\n Input()\n], YAxisComponent.prototype, \"yAxisOffset\", void 0);\n__decorate([\n Output()\n], YAxisComponent.prototype, \"dimensionsChanged\", void 0);\n__decorate([\n ViewChild(YAxisTicksComponent)\n], YAxisComponent.prototype, \"ticksComponent\", void 0);\n\nlet AxesModule = class AxesModule {\n};\nAxesModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: AxesModule });\nAxesModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function AxesModule_Factory(t) { return new (t || AxesModule)(); }, imports: [[CommonModule]] });\n\nvar StyleTypes;\n(function (StyleTypes) {\n StyleTypes[StyleTypes[\"popover\"] = 'popover'] = \"popover\";\n StyleTypes[StyleTypes[\"tooltip\"] = 'tooltip'] = \"tooltip\";\n})(StyleTypes || (StyleTypes = {}));\n\nvar AlignmentTypes;\n(function (AlignmentTypes) {\n AlignmentTypes[AlignmentTypes[\"left\"] = 'left'] = \"left\";\n AlignmentTypes[AlignmentTypes[\"center\"] = 'center'] = \"center\";\n AlignmentTypes[AlignmentTypes[\"right\"] = 'right'] = \"right\";\n})(AlignmentTypes || (AlignmentTypes = {}));\n\nvar ShowTypes;\n(function (ShowTypes) {\n ShowTypes[ShowTypes[\"all\"] = 'all'] = \"all\";\n ShowTypes[ShowTypes[\"focus\"] = 'focus'] = \"focus\";\n ShowTypes[ShowTypes[\"mouseover\"] = 'mouseover'] = \"mouseover\";\n})(ShowTypes || (ShowTypes = {}));\n\nlet TooltipDirective = class TooltipDirective {\n constructor(tooltipService, viewContainerRef, renderer) {\n this.tooltipService = tooltipService;\n this.viewContainerRef = viewContainerRef;\n this.renderer = renderer;\n this.tooltipCssClass = '';\n this.tooltipTitle = '';\n this.tooltipAppendToBody = true;\n this.tooltipSpacing = 10;\n this.tooltipDisabled = false;\n this.tooltipShowCaret = true;\n this.tooltipPlacement = PlacementTypes.top;\n this.tooltipAlignment = AlignmentTypes.center;\n this.tooltipType = StyleTypes.popover;\n this.tooltipCloseOnClickOutside = true;\n this.tooltipCloseOnMouseLeave = true;\n this.tooltipHideTimeout = 300;\n this.tooltipShowTimeout = 100;\n this.tooltipShowEvent = ShowTypes.all;\n this.tooltipImmediateExit = false;\n this.show = new EventEmitter();\n this.hide = new EventEmitter();\n }\n get listensForFocus() {\n return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.focus;\n }\n get listensForHover() {\n return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.mouseover;\n }\n ngOnDestroy() {\n this.hideTooltip(true);\n }\n onFocus() {\n if (this.listensForFocus) {\n this.showTooltip();\n }\n }\n onBlur() {\n if (this.listensForFocus) {\n this.hideTooltip(true);\n }\n }\n onMouseEnter() {\n if (this.listensForHover) {\n this.showTooltip();\n }\n }\n onMouseLeave(target) {\n if (this.listensForHover && this.tooltipCloseOnMouseLeave) {\n clearTimeout(this.timeout);\n if (this.component) {\n const contentDom = this.component.instance.element.nativeElement;\n const contains = contentDom.contains(target);\n if (contains)\n return;\n }\n this.hideTooltip(this.tooltipImmediateExit);\n }\n }\n onMouseClick() {\n if (this.listensForHover) {\n this.hideTooltip(true);\n }\n }\n showTooltip(immediate) {\n if (this.component || this.tooltipDisabled)\n return;\n const time = immediate ? 0 : this.tooltipShowTimeout;\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.tooltipService.destroyAll();\n const options = this.createBoundOptions();\n this.component = this.tooltipService.create(options);\n // add a tiny timeout to avoid event re-triggers\n setTimeout(() => {\n if (this.component) {\n this.addHideListeners(this.component.instance.element.nativeElement);\n }\n }, 10);\n this.show.emit(true);\n }, time);\n }\n addHideListeners(tooltip) {\n // on mouse enter, cancel the hide triggered by the leave\n this.mouseEnterContentEvent = this.renderer.listen(tooltip, 'mouseenter', () => {\n clearTimeout(this.timeout);\n });\n // content mouse leave listener\n if (this.tooltipCloseOnMouseLeave) {\n this.mouseLeaveContentEvent = this.renderer.listen(tooltip, 'mouseleave', () => {\n this.hideTooltip(this.tooltipImmediateExit);\n });\n }\n // content close on click outside\n if (this.tooltipCloseOnClickOutside) {\n this.documentClickEvent = this.renderer.listen(document, 'click', event => {\n const contains = tooltip.contains(event.target);\n if (!contains)\n this.hideTooltip();\n });\n }\n }\n hideTooltip(immediate = false) {\n if (!this.component)\n return;\n const destroyFn = () => {\n // remove events\n if (this.mouseLeaveContentEvent)\n this.mouseLeaveContentEvent();\n if (this.mouseEnterContentEvent)\n this.mouseEnterContentEvent();\n if (this.documentClickEvent)\n this.documentClickEvent();\n // emit events\n this.hide.emit(true);\n // destroy component\n this.tooltipService.destroy(this.component);\n this.component = undefined;\n };\n clearTimeout(this.timeout);\n if (!immediate) {\n this.timeout = setTimeout(destroyFn, this.tooltipHideTimeout);\n }\n else {\n destroyFn();\n }\n }\n createBoundOptions() {\n return {\n title: this.tooltipTitle,\n template: this.tooltipTemplate,\n host: this.viewContainerRef.element,\n placement: this.tooltipPlacement,\n alignment: this.tooltipAlignment,\n type: this.tooltipType,\n showCaret: this.tooltipShowCaret,\n cssClass: this.tooltipCssClass,\n spacing: this.tooltipSpacing,\n context: this.tooltipContext\n };\n }\n};\nTooltipDirective.ɵfac = function TooltipDirective_Factory(t) { return new (t || TooltipDirective)(ɵngcc0.ɵɵdirectiveInject(TooltipService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nTooltipDirective.ɵdir = ɵngcc0.ɵɵdefineDirective({ type: TooltipDirective, selectors: [[\"\", \"ngx-tooltip\", \"\"]], hostBindings: function TooltipDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"focusin\", function TooltipDirective_focusin_HostBindingHandler() { return ctx.onFocus(); })(\"blur\", function TooltipDirective_blur_HostBindingHandler() { return ctx.onBlur(); })(\"mouseenter\", function TooltipDirective_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function TooltipDirective_mouseleave_HostBindingHandler($event) { return ctx.onMouseLeave($event.target); })(\"click\", function TooltipDirective_click_HostBindingHandler() { return ctx.onMouseClick(); });\n } }, inputs: { tooltipCssClass: \"tooltipCssClass\", tooltipTitle: \"tooltipTitle\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipSpacing: \"tooltipSpacing\", tooltipDisabled: \"tooltipDisabled\", tooltipShowCaret: \"tooltipShowCaret\", tooltipPlacement: \"tooltipPlacement\", tooltipAlignment: \"tooltipAlignment\", tooltipType: \"tooltipType\", tooltipCloseOnClickOutside: \"tooltipCloseOnClickOutside\", tooltipCloseOnMouseLeave: \"tooltipCloseOnMouseLeave\", tooltipHideTimeout: \"tooltipHideTimeout\", tooltipShowTimeout: \"tooltipShowTimeout\", tooltipShowEvent: \"tooltipShowEvent\", tooltipImmediateExit: \"tooltipImmediateExit\", tooltipTemplate: \"tooltipTemplate\", tooltipContext: \"tooltipContext\" }, outputs: { show: \"show\", hide: \"hide\" } });\nTooltipDirective.ctorParameters = () => [\n { type: TooltipService },\n { type: ViewContainerRef },\n { type: Renderer2 }\n];\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipCssClass\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipTitle\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipAppendToBody\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipSpacing\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipShowCaret\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipPlacement\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipAlignment\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipType\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipCloseOnClickOutside\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipCloseOnMouseLeave\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipHideTimeout\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipShowTimeout\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipShowEvent\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipContext\", void 0);\n__decorate([\n Input()\n], TooltipDirective.prototype, \"tooltipImmediateExit\", void 0);\n__decorate([\n Output()\n], TooltipDirective.prototype, \"show\", void 0);\n__decorate([\n Output()\n], TooltipDirective.prototype, \"hide\", void 0);\n__decorate([\n HostListener('focusin')\n], TooltipDirective.prototype, \"onFocus\", null);\n__decorate([\n HostListener('blur')\n], TooltipDirective.prototype, \"onBlur\", null);\n__decorate([\n HostListener('mouseenter')\n], TooltipDirective.prototype, \"onMouseEnter\", null);\n__decorate([\n HostListener('mouseleave', ['$event.target'])\n], TooltipDirective.prototype, \"onMouseLeave\", null);\n__decorate([\n HostListener('click')\n], TooltipDirective.prototype, \"onMouseClick\", null);\n\nlet TooltipModule = class TooltipModule {\n};\nTooltipModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: TooltipModule });\nTooltipModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function TooltipModule_Factory(t) { return new (t || TooltipModule)(); }, providers: [InjectionService, TooltipService], imports: [[CommonModule]] });\n\n/**\n * Formats a label given a date, number or string.\n *\n * @export\n */\nfunction formatLabel(label) {\n if (label instanceof Date) {\n label = label.toLocaleDateString();\n }\n else {\n label = label.toLocaleString();\n }\n return label;\n}\n/**\n * Escapes a label.\n *\n * @export\n */\nfunction escapeLabel(label) {\n return label.toLocaleString().replace(/[&'`\"<>]/g, match => {\n return {\n '&': '&',\n // tslint:disable-next-line: quotemark\n \"'\": ''',\n '`': '`',\n '\"': '"',\n '<': '<',\n '>': '>'\n }[match];\n });\n}\n\nconst cache = {};\n/**\n * Generates a short id.\n *\n * Description:\n * A 4-character alphanumeric sequence (364 = 1.6 million)\n * This should only be used for JavaScript specific models.\n * http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\n *\n * Example: `ebgf`\n */\nfunction id() {\n let newId = ('0000' + ((Math.random() * Math.pow(36, 4)) << 0).toString(36)).slice(-4);\n // append a 'a' because neo gets mad\n newId = `a${newId}`;\n // ensure not already used\n if (!cache[newId]) {\n cache[newId] = true;\n return newId;\n }\n return id();\n}\n\nlet CircleSeriesComponent = class CircleSeriesComponent {\n constructor() {\n this.type = 'standard';\n this.tooltipDisabled = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.barVisible = false;\n }\n ngOnInit() {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.circle = this.getActiveCircle();\n }\n getActiveCircle() {\n const indexActiveDataPoint = this.data.series.findIndex(d => {\n const label = d.name;\n return label && this.visibleValue && label.toString() === this.visibleValue.toString() && d.value !== undefined;\n });\n if (indexActiveDataPoint === -1) {\n // No valid point is 'active/hovered over' at this moment.\n return undefined;\n }\n return this.mapDataPointToCircle(this.data.series[indexActiveDataPoint], indexActiveDataPoint);\n }\n mapDataPointToCircle(d, i) {\n const seriesName = this.data.name;\n const value = d.value;\n const label = d.name;\n const tooltipLabel = formatLabel(label);\n let cx;\n if (this.scaleType === 'time') {\n cx = this.xScale(label);\n }\n else if (this.scaleType === 'linear') {\n cx = this.xScale(Number(label));\n }\n else {\n cx = this.xScale(label);\n }\n const cy = this.yScale(this.type === 'standard' ? value : d.d1);\n const radius = 5;\n const height = this.yScale.range()[0] - cy;\n const opacity = 1;\n let color;\n if (this.colors.scaleType === 'linear') {\n if (this.type === 'standard') {\n color = this.colors.getColor(value);\n }\n else {\n color = this.colors.getColor(d.d1);\n }\n }\n else {\n color = this.colors.getColor(seriesName);\n }\n const data = Object.assign({}, d, {\n series: seriesName,\n value,\n name: label\n });\n return {\n classNames: [`circle-data-${i}`],\n value,\n label,\n data,\n cx,\n cy,\n radius,\n height,\n tooltipLabel,\n color,\n opacity,\n seriesName,\n gradientStops: this.getGradientStops(color),\n min: d.min,\n max: d.max\n };\n }\n getTooltipText({ tooltipLabel, value, seriesName, min, max }) {\n return `\n ${escapeLabel(seriesName)} • ${escapeLabel(tooltipLabel)}\n ${value.toLocaleString()}${this.getTooltipMinMaxText(min, max)}\n `;\n }\n getTooltipMinMaxText(min, max) {\n if (min !== undefined || max !== undefined) {\n let result = ' (';\n if (min !== undefined) {\n if (max === undefined) {\n result += '≥';\n }\n result += min.toLocaleString();\n if (max !== undefined) {\n result += ' - ';\n }\n }\n else if (max !== undefined) {\n result += '≤';\n }\n if (max !== undefined) {\n result += max.toLocaleString();\n }\n result += ')';\n return result;\n }\n else {\n return '';\n }\n }\n getGradientStops(color) {\n return [\n {\n offset: 0,\n color,\n opacity: 0.2\n },\n {\n offset: 100,\n color,\n opacity: 1\n }\n ];\n }\n onClick(data) {\n this.select.emit(data);\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n activateCircle() {\n this.barVisible = true;\n this.activate.emit({ name: this.data.name });\n }\n deactivateCircle() {\n this.barVisible = false;\n this.circle.opacity = 0;\n this.deactivate.emit({ name: this.data.name });\n }\n};\nCircleSeriesComponent.ɵfac = function CircleSeriesComponent_Factory(t) { return new (t || CircleSeriesComponent)(); };\nCircleSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CircleSeriesComponent, selectors: [[\"g\", \"ngx-charts-circle-series\", \"\"]], inputs: { type: \"type\", tooltipDisabled: \"tooltipDisabled\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", visibleValue: \"visibleValue\", activeEntries: \"activeEntries\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c9, decls: 1, vars: 1, consts: [[4, \"ngIf\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"], [\"class\", \"tooltip-bar\", 4, \"ngIf\"], [\"ngx-charts-circle\", \"\", \"ngx-tooltip\", \"\", 1, \"circle\", 3, \"cx\", \"cy\", \"r\", \"fill\", \"pointerEvents\", \"data\", \"classNames\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"], [1, \"tooltip-bar\"]], template: function CircleSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CircleSeriesComponent__svg_g_0_Template, 5, 20, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.circle);\n } }, directives: function () { return [ɵngcc1.NgIf, SvgLinearGradientComponent,\n CircleComponent,\n TooltipDirective]; }, encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 1 }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], CircleSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], CircleSeriesComponent.prototype, \"type\", void 0);\n__decorate([\n Input()\n], CircleSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n Input()\n], CircleSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n Input()\n], CircleSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], CircleSeriesComponent.prototype, \"scaleType\", void 0);\n__decorate([\n Input()\n], CircleSeriesComponent.prototype, \"visibleValue\", void 0);\n__decorate([\n Input()\n], CircleSeriesComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], CircleSeriesComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], CircleSeriesComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Output()\n], CircleSeriesComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], CircleSeriesComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], CircleSeriesComponent.prototype, \"deactivate\", void 0);\n\nlet CircleComponent = class CircleComponent {\n constructor() {\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n onClick() {\n this.select.emit(this.data);\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n ngOnChanges(changes) {\n this.classNames = Array.isArray(this.classNames) ? this.classNames.join(' ') : '';\n this.classNames += 'circle';\n }\n};\nCircleComponent.ɵfac = function CircleComponent_Factory(t) { return new (t || CircleComponent)(); };\nCircleComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CircleComponent, selectors: [[\"g\", \"ngx-charts-circle\", \"\"]], hostBindings: function CircleComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function CircleComponent_click_HostBindingHandler() { return ctx.onClick(); })(\"mouseenter\", function CircleComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function CircleComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n } }, inputs: { classNames: \"classNames\", cx: \"cx\", cy: \"cy\", r: \"r\", fill: \"fill\", stroke: \"stroke\", data: \"data\", circleOpacity: \"circleOpacity\", pointerEvents: \"pointerEvents\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c11, decls: 1, vars: 8, template: function CircleComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\");\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"cx\", ctx.cx)(\"cy\", ctx.cy)(\"r\", ctx.r)(\"fill\", ctx.fill)(\"stroke\", ctx.stroke)(\"opacity\", ctx.circleOpacity)(\"class\", ctx.classNames)(\"pointer-events\", ctx.pointerEvents);\n } }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], CircleComponent.prototype, \"cx\", void 0);\n__decorate([\n Input()\n], CircleComponent.prototype, \"cy\", void 0);\n__decorate([\n Input()\n], CircleComponent.prototype, \"r\", void 0);\n__decorate([\n Input()\n], CircleComponent.prototype, \"fill\", void 0);\n__decorate([\n Input()\n], CircleComponent.prototype, \"stroke\", void 0);\n__decorate([\n Input()\n], CircleComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], CircleComponent.prototype, \"classNames\", void 0);\n__decorate([\n Input()\n], CircleComponent.prototype, \"circleOpacity\", void 0);\n__decorate([\n Input()\n], CircleComponent.prototype, \"pointerEvents\", void 0);\n__decorate([\n Output()\n], CircleComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], CircleComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], CircleComponent.prototype, \"deactivate\", void 0);\n__decorate([\n HostListener('click')\n], CircleComponent.prototype, \"onClick\", null);\n__decorate([\n HostListener('mouseenter')\n], CircleComponent.prototype, \"onMouseEnter\", null);\n__decorate([\n HostListener('mouseleave')\n], CircleComponent.prototype, \"onMouseLeave\", null);\n\nlet GridPanelComponent = class GridPanelComponent {\n};\nGridPanelComponent.ɵfac = function GridPanelComponent_Factory(t) { return new (t || GridPanelComponent)(); };\nGridPanelComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: GridPanelComponent, selectors: [[\"g\", \"ngx-charts-grid-panel\", \"\"]], inputs: { path: \"path\", width: \"width\", height: \"height\", x: \"x\", y: \"y\" }, attrs: _c12, decls: 1, vars: 4, consts: [[\"stroke\", \"none\", 1, \"gridpanel\"]], template: function GridPanelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"rect\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"height\", ctx.height)(\"width\", ctx.width)(\"x\", ctx.x)(\"y\", ctx.y);\n } }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], GridPanelComponent.prototype, \"path\", void 0);\n__decorate([\n Input()\n], GridPanelComponent.prototype, \"width\", void 0);\n__decorate([\n Input()\n], GridPanelComponent.prototype, \"height\", void 0);\n__decorate([\n Input()\n], GridPanelComponent.prototype, \"x\", void 0);\n__decorate([\n Input()\n], GridPanelComponent.prototype, \"y\", void 0);\n\nlet GridPanelSeriesComponent = class GridPanelSeriesComponent {\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.gridPanels = this.getGridPanels();\n }\n getGridPanels() {\n return this.data.map(d => {\n let offset;\n let width;\n let height;\n let x;\n let y;\n let className = 'odd';\n if (this.orient === 'vertical') {\n const position = this.xScale(d.name);\n const positionIndex = Number.parseInt((position / this.xScale.step()).toString(), 10);\n if (positionIndex % 2 === 1) {\n className = 'even';\n }\n offset = this.xScale.bandwidth() * this.xScale.paddingInner();\n width = this.xScale.bandwidth() + offset;\n height = this.dims.height;\n x = this.xScale(d.name) - offset / 2;\n y = 0;\n }\n else if (this.orient === 'horizontal') {\n const position = this.yScale(d.name);\n const positionIndex = Number.parseInt((position / this.yScale.step()).toString(), 10);\n if (positionIndex % 2 === 1) {\n className = 'even';\n }\n offset = this.yScale.bandwidth() * this.yScale.paddingInner();\n width = this.dims.width;\n height = this.yScale.bandwidth() + offset;\n x = 0;\n y = this.yScale(d.name) - offset / 2;\n }\n return {\n name: d.name,\n class: className,\n height,\n width,\n x,\n y\n };\n });\n }\n};\nGridPanelSeriesComponent.ɵfac = function GridPanelSeriesComponent_Factory(t) { return new (t || GridPanelSeriesComponent)(); };\nGridPanelSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: GridPanelSeriesComponent, selectors: [[\"g\", \"ngx-charts-grid-panel-series\", \"\"]], inputs: { data: \"data\", dims: \"dims\", xScale: \"xScale\", yScale: \"yScale\", orient: \"orient\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c13, decls: 1, vars: 1, consts: [[\"ngx-charts-grid-panel\", \"\", 3, \"height\", \"width\", \"x\", \"y\", \"grid-panel\", \"odd\", \"even\", 4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-grid-panel\", \"\", 3, \"height\", \"width\", \"x\", \"y\"]], template: function GridPanelSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, GridPanelSeriesComponent__svg_g_0_Template, 1, 10, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.gridPanels);\n } }, directives: [ɵngcc1.NgForOf, GridPanelComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], GridPanelSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], GridPanelSeriesComponent.prototype, \"dims\", void 0);\n__decorate([\n Input()\n], GridPanelSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n Input()\n], GridPanelSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n Input()\n], GridPanelSeriesComponent.prototype, \"orient\", void 0);\n\nlet SvgLinearGradientComponent = class SvgLinearGradientComponent {\n constructor() {\n this.orientation = 'vertical';\n }\n ngOnChanges(changes) {\n this.x1 = '0%';\n this.x2 = '0%';\n this.y1 = '0%';\n this.y2 = '0%';\n if (this.orientation === 'horizontal') {\n this.x2 = '100%';\n }\n else if (this.orientation === 'vertical') {\n this.y1 = '100%';\n }\n }\n};\nSvgLinearGradientComponent.ɵfac = function SvgLinearGradientComponent_Factory(t) { return new (t || SvgLinearGradientComponent)(); };\nSvgLinearGradientComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: SvgLinearGradientComponent, selectors: [[\"g\", \"ngx-charts-svg-linear-gradient\", \"\"]], inputs: { orientation: \"orientation\", name: \"name\", stops: \"stops\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c14, decls: 2, vars: 6, consts: [[3, \"id\"], [3, \"stop-color\", \"stop-opacity\", 4, \"ngFor\", \"ngForOf\"]], template: function SvgLinearGradientComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"linearGradient\", 0);\n ɵngcc0.ɵɵtemplate(1, SvgLinearGradientComponent__svg_stop_1_Template, 1, 5, \"stop\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"id\", ctx.name);\n ɵngcc0.ɵɵattribute(\"x1\", ctx.x1)(\"y1\", ctx.y1)(\"x2\", ctx.x2)(\"y2\", ctx.y2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.stops);\n } }, directives: [ɵngcc1.NgForOf], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], SvgLinearGradientComponent.prototype, \"orientation\", void 0);\n__decorate([\n Input()\n], SvgLinearGradientComponent.prototype, \"name\", void 0);\n__decorate([\n Input()\n], SvgLinearGradientComponent.prototype, \"stops\", void 0);\n\nlet SvgRadialGradientComponent = class SvgRadialGradientComponent {\n constructor() {\n this.endOpacity = 1;\n this.cx = 0;\n this.cy = 0;\n }\n get stops() {\n return this.stopsInput || this.stopsDefault;\n }\n set stops(value) {\n this.stopsInput = value;\n }\n ngOnChanges(changes) {\n this.r = '30%';\n if ('color' in changes || 'startOpacity' in changes || 'endOpacity' in changes) {\n this.stopsDefault = [\n {\n offset: 0,\n color: this.color,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.color,\n opacity: this.endOpacity\n }\n ];\n }\n }\n};\nSvgRadialGradientComponent.ɵfac = function SvgRadialGradientComponent_Factory(t) { return new (t || SvgRadialGradientComponent)(); };\nSvgRadialGradientComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: SvgRadialGradientComponent, selectors: [[\"g\", \"ngx-charts-svg-radial-gradient\", \"\"]], inputs: { endOpacity: \"endOpacity\", cx: \"cx\", cy: \"cy\", stops: \"stops\", color: \"color\", name: \"name\", startOpacity: \"startOpacity\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c15, decls: 2, vars: 5, consts: [[\"gradientUnits\", \"userSpaceOnUse\", 3, \"id\"], [3, \"stop-color\", \"stop-opacity\", 4, \"ngFor\", \"ngForOf\"]], template: function SvgRadialGradientComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"radialGradient\", 0);\n ɵngcc0.ɵɵtemplate(1, SvgRadialGradientComponent__svg_stop_1_Template, 1, 5, \"stop\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"id\", ctx.name);\n ɵngcc0.ɵɵattribute(\"cx\", ctx.cx)(\"cy\", ctx.cy)(\"r\", ctx.r);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.stops);\n } }, directives: [ɵngcc1.NgForOf], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], SvgRadialGradientComponent.prototype, \"color\", void 0);\n__decorate([\n Input()\n], SvgRadialGradientComponent.prototype, \"name\", void 0);\n__decorate([\n Input()\n], SvgRadialGradientComponent.prototype, \"startOpacity\", void 0);\n__decorate([\n Input()\n], SvgRadialGradientComponent.prototype, \"endOpacity\", void 0);\n__decorate([\n Input()\n], SvgRadialGradientComponent.prototype, \"cx\", void 0);\n__decorate([\n Input()\n], SvgRadialGradientComponent.prototype, \"cy\", void 0);\n__decorate([\n Input()\n], SvgRadialGradientComponent.prototype, \"stops\", null);\n\nlet AreaComponent = class AreaComponent {\n constructor(element) {\n this.opacity = 1;\n this.startOpacity = 0.5;\n this.endOpacity = 1;\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.initialized = false;\n this.hasGradient = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n if (!this.initialized) {\n this.loadAnimation();\n this.initialized = true;\n }\n else {\n this.update();\n }\n }\n update() {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n if (this.gradient || this.stops) {\n this.gradientStops = this.getGradient();\n this.hasGradient = true;\n }\n else {\n this.hasGradient = false;\n }\n this.updatePathEl();\n }\n loadAnimation() {\n this.areaPath = this.startingPath;\n setTimeout(this.update.bind(this), 100);\n }\n updatePathEl() {\n const node = select(this.element).select('.area');\n if (this.animations) {\n node\n .transition()\n .duration(750)\n .attr('d', this.path);\n }\n else {\n node.attr('d', this.path);\n }\n }\n getGradient() {\n if (this.stops) {\n return this.stops;\n }\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.fill,\n opacity: this.endOpacity\n }\n ];\n }\n};\nAreaComponent.ɵfac = function AreaComponent_Factory(t) { return new (t || AreaComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nAreaComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AreaComponent, selectors: [[\"g\", \"ngx-charts-area\", \"\"]], inputs: { opacity: \"opacity\", startOpacity: \"startOpacity\", endOpacity: \"endOpacity\", gradient: \"gradient\", animations: \"animations\", data: \"data\", path: \"path\", startingPath: \"startingPath\", fill: \"fill\", activeLabel: \"activeLabel\", stops: \"stops\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c16, decls: 2, vars: 5, consts: [[4, \"ngIf\"], [1, \"area\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"]], template: function AreaComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, AreaComponent__svg_defs_0_Template, 2, 2, \"defs\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(1, \"path\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.gradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"opacity\", ctx.opacity);\n ɵngcc0.ɵɵattribute(\"d\", ctx.areaPath)(\"fill\", ctx.gradient ? ctx.gradientFill : ctx.fill);\n } }, directives: [ɵngcc1.NgIf, SvgLinearGradientComponent], encapsulation: 2, changeDetection: 0 });\nAreaComponent.ctorParameters = () => [\n { type: ElementRef }\n];\n__decorate([\n Input()\n], AreaComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], AreaComponent.prototype, \"path\", void 0);\n__decorate([\n Input()\n], AreaComponent.prototype, \"startingPath\", void 0);\n__decorate([\n Input()\n], AreaComponent.prototype, \"fill\", void 0);\n__decorate([\n Input()\n], AreaComponent.prototype, \"opacity\", void 0);\n__decorate([\n Input()\n], AreaComponent.prototype, \"startOpacity\", void 0);\n__decorate([\n Input()\n], AreaComponent.prototype, \"endOpacity\", void 0);\n__decorate([\n Input()\n], AreaComponent.prototype, \"activeLabel\", void 0);\n__decorate([\n Input()\n], AreaComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], AreaComponent.prototype, \"stops\", void 0);\n__decorate([\n Input()\n], AreaComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], AreaComponent.prototype, \"select\", void 0);\n\n// Robert Penner's easeOutExpo\nfunction easeOutExpo(t, b, c, d) {\n return (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b;\n}\n/**\n * Counts from a number to the end incrementally.\n */\nfunction count(countFrom, countTo, countDecimals, countDuration, callback) {\n const startVal = Number(countFrom);\n const endVal = Number(countTo);\n const countDown = startVal > endVal;\n const decimals = Math.max(0, countDecimals);\n const dec = Math.pow(10, decimals);\n const duration = Number(countDuration) * 1000;\n let startTime;\n function runCount(timestamp) {\n let frameVal;\n const progress = timestamp - startTime;\n if (countDown) {\n frameVal = startVal - easeOutExpo(progress, 0, startVal - endVal, duration);\n }\n else {\n frameVal = easeOutExpo(progress, startVal, endVal - startVal, duration);\n }\n if (countDown) {\n frameVal = frameVal < endVal ? endVal : frameVal;\n }\n else {\n frameVal = frameVal > endVal ? endVal : frameVal;\n }\n frameVal = Math.round(frameVal * dec) / dec;\n const tick = progress < duration;\n callback({\n value: frameVal,\n progress,\n timestamp,\n finished: !tick\n });\n if (tick) {\n return requestAnimationFrame(val => runCount(val));\n }\n }\n return requestAnimationFrame(timestamp => {\n startTime = timestamp;\n return runCount(timestamp);\n });\n}\n/**\n * Determine decimals places\n *\n * @export\n */\nfunction decimalChecker(countTo) {\n const endVal = Number(countTo);\n if (endVal % 1 !== 0 && Math.abs(endVal) <= 10) {\n return 2;\n }\n return 0;\n}\n\n/**\n * Count up component\n *\n * Loosely inspired by:\n * - https://github.com/izupet/angular2-counto\n * - https://inorganik.github.io/countUp.js/\n *\n * @export\n */\nlet CountUpDirective = class CountUpDirective {\n constructor(cd, element) {\n this.cd = cd;\n this.countDuration = 1;\n this.countPrefix = '';\n this.countSuffix = '';\n this.countChange = new EventEmitter();\n this.countFinish = new EventEmitter();\n this.value = '';\n this._countDecimals = 0;\n this._countTo = 0;\n this._countFrom = 0;\n this.nativeElement = element.nativeElement;\n }\n set countDecimals(val) {\n this._countDecimals = val;\n }\n get countDecimals() {\n if (this._countDecimals)\n return this._countDecimals;\n return decimalChecker(this.countTo);\n }\n set countTo(val) {\n this._countTo = parseFloat(val);\n this.start();\n }\n get countTo() {\n return this._countTo;\n }\n set countFrom(val) {\n this._countFrom = parseFloat(val);\n this.start();\n }\n get countFrom() {\n return this._countFrom;\n }\n ngOnDestroy() {\n cancelAnimationFrame(this.animationReq);\n }\n start() {\n cancelAnimationFrame(this.animationReq);\n const valueFormatting = this.valueFormatting || (value => `${this.countPrefix}${value.toLocaleString()}${this.countSuffix}`);\n const callback = ({ value, progress, finished }) => {\n this.value = valueFormatting(value);\n this.cd.markForCheck();\n if (!finished)\n this.countChange.emit({ value: this.value, progress });\n if (finished)\n this.countFinish.emit({ value: this.value, progress });\n };\n this.animationReq = count(this.countFrom, this.countTo, this.countDecimals, this.countDuration, callback);\n }\n};\nCountUpDirective.ɵfac = function CountUpDirective_Factory(t) { return new (t || CountUpDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nCountUpDirective.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CountUpDirective, selectors: [[\"\", \"ngx-charts-count-up\", \"\"]], inputs: { countDuration: \"countDuration\", countPrefix: \"countPrefix\", countSuffix: \"countSuffix\", countDecimals: \"countDecimals\", countTo: \"countTo\", countFrom: \"countFrom\", valueFormatting: \"valueFormatting\" }, outputs: { countChange: \"countChange\", countFinish: \"countFinish\" }, attrs: _c17, decls: 1, vars: 1, template: function CountUpDirective_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n } if (rf & 2) {\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.value, \" \");\n } }, encapsulation: 2 });\nCountUpDirective.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: ElementRef }\n];\n__decorate([\n Input()\n], CountUpDirective.prototype, \"countDuration\", void 0);\n__decorate([\n Input()\n], CountUpDirective.prototype, \"countPrefix\", void 0);\n__decorate([\n Input()\n], CountUpDirective.prototype, \"countSuffix\", void 0);\n__decorate([\n Input()\n], CountUpDirective.prototype, \"valueFormatting\", void 0);\n__decorate([\n Input()\n], CountUpDirective.prototype, \"countDecimals\", null);\n__decorate([\n Input()\n], CountUpDirective.prototype, \"countTo\", null);\n__decorate([\n Input()\n], CountUpDirective.prototype, \"countFrom\", null);\n__decorate([\n Output()\n], CountUpDirective.prototype, \"countChange\", void 0);\n__decorate([\n Output()\n], CountUpDirective.prototype, \"countFinish\", void 0);\n\n// If we don't check whether 'window' and 'global' variables are defined,\n// code will fail in browser/node with 'variable is undefined' error.\nlet root;\nif (typeof window !== 'undefined') {\n root = window;\n}\nelse if (typeof global !== 'undefined') {\n root = global;\n}\n// tslint:disable-next-line:variable-name\nconst MouseEvent = root.MouseEvent;\nfunction createMouseEvent(name, bubbles = false, cancelable = true) {\n // Calling new of an event does not work correctly on IE. The following is a tested workaround\n // See https://stackoverflow.com/questions/27176983/dispatchevent-not-working-in-ie11\n if (typeof MouseEvent === 'function') {\n // Sane browsers\n return new MouseEvent(name, { bubbles, cancelable });\n }\n else {\n // IE\n const event = document.createEvent('MouseEvent');\n event.initEvent(name, bubbles, cancelable);\n return event;\n }\n}\n\nlet TooltipArea = class TooltipArea {\n constructor() {\n this.anchorOpacity = 0;\n this.anchorPos = -1;\n this.anchorValues = [];\n this.showPercentage = false;\n this.tooltipDisabled = false;\n this.hover = new EventEmitter();\n }\n getValues(xVal) {\n const results = [];\n for (const group of this.results) {\n const item = group.series.find(d => d.name.toString() === xVal.toString());\n let groupName = group.name;\n if (groupName instanceof Date) {\n groupName = groupName.toLocaleDateString();\n }\n if (item) {\n const label = item.name;\n let val = item.value;\n if (this.showPercentage) {\n val = (item.d1 - item.d0).toFixed(2) + '%';\n }\n let color;\n if (this.colors.scaleType === 'linear') {\n let v = val;\n if (item.d1) {\n v = item.d1;\n }\n color = this.colors.getColor(v);\n }\n else {\n color = this.colors.getColor(group.name);\n }\n const data = Object.assign({}, item, {\n value: val,\n name: label,\n series: groupName,\n min: item.min,\n max: item.max,\n color\n });\n results.push(data);\n }\n }\n return results;\n }\n mouseMove(event) {\n const xPos = event.pageX - event.target.getBoundingClientRect().left;\n const closestIndex = this.findClosestPointIndex(xPos);\n const closestPoint = this.xSet[closestIndex];\n this.anchorPos = this.xScale(closestPoint);\n this.anchorPos = Math.max(0, this.anchorPos);\n this.anchorPos = Math.min(this.dims.width, this.anchorPos);\n this.anchorValues = this.getValues(closestPoint);\n if (this.anchorPos !== this.lastAnchorPos) {\n const ev = createMouseEvent('mouseleave');\n this.tooltipAnchor.nativeElement.dispatchEvent(ev);\n this.anchorOpacity = 0.7;\n this.hover.emit({\n value: closestPoint\n });\n this.showTooltip();\n this.lastAnchorPos = this.anchorPos;\n }\n }\n findClosestPointIndex(xPos) {\n let minIndex = 0;\n let maxIndex = this.xSet.length - 1;\n let minDiff = Number.MAX_VALUE;\n let closestIndex = 0;\n while (minIndex <= maxIndex) {\n const currentIndex = ((minIndex + maxIndex) / 2) | 0;\n const currentElement = this.xScale(this.xSet[currentIndex]);\n const curDiff = Math.abs(currentElement - xPos);\n if (curDiff < minDiff) {\n minDiff = curDiff;\n closestIndex = currentIndex;\n }\n if (currentElement < xPos) {\n minIndex = currentIndex + 1;\n }\n else if (currentElement > xPos) {\n maxIndex = currentIndex - 1;\n }\n else {\n minDiff = 0;\n closestIndex = currentIndex;\n break;\n }\n }\n return closestIndex;\n }\n showTooltip() {\n const event = createMouseEvent('mouseenter');\n this.tooltipAnchor.nativeElement.dispatchEvent(event);\n }\n hideTooltip() {\n const event = createMouseEvent('mouseleave');\n this.tooltipAnchor.nativeElement.dispatchEvent(event);\n this.anchorOpacity = 0;\n this.lastAnchorPos = -1;\n }\n getToolTipText(tooltipItem) {\n let result = '';\n if (tooltipItem.series !== undefined) {\n result += tooltipItem.series;\n }\n else {\n result += '???';\n }\n result += ': ';\n if (tooltipItem.value !== undefined) {\n result += tooltipItem.value.toLocaleString();\n }\n if (tooltipItem.min !== undefined || tooltipItem.max !== undefined) {\n result += ' (';\n if (tooltipItem.min !== undefined) {\n if (tooltipItem.max === undefined) {\n result += '≥';\n }\n result += tooltipItem.min.toLocaleString();\n if (tooltipItem.max !== undefined) {\n result += ' - ';\n }\n }\n else if (tooltipItem.max !== undefined) {\n result += '≤';\n }\n if (tooltipItem.max !== undefined) {\n result += tooltipItem.max.toLocaleString();\n }\n result += ')';\n }\n return result;\n }\n};\nTooltipArea.ɵfac = function TooltipArea_Factory(t) { return new (t || TooltipArea)(); };\nTooltipArea.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: TooltipArea, selectors: [[\"g\", \"ngx-charts-tooltip-area\", \"\"]], viewQuery: function TooltipArea_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c18, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipAnchor = _t.first);\n } }, inputs: { showPercentage: \"showPercentage\", tooltipDisabled: \"tooltipDisabled\", dims: \"dims\", xSet: \"xSet\", xScale: \"xScale\", yScale: \"yScale\", results: \"results\", colors: \"colors\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { hover: \"hover\" }, attrs: _c19, decls: 6, vars: 18, consts: [[\"y\", \"0\", 1, \"tooltip-area\", 2, \"opacity\", \"0\", \"cursor\", \"auto\", 3, \"mousemove\", \"mouseleave\"], [\"defaultTooltipTemplate\", \"\"], [\"y\", \"0\", \"ngx-tooltip\", \"\", 1, \"tooltip-anchor\", 3, \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipSpacing\", \"tooltipTemplate\", \"tooltipContext\", \"tooltipImmediateExit\"], [\"tooltipAnchor\", \"\"], [1, \"area-tooltip-container\"], [\"class\", \"tooltip-item\", 4, \"ngFor\", \"ngForOf\"], [1, \"tooltip-item\"], [1, \"tooltip-item-color\"]], template: function TooltipArea_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"rect\", 0);\n ɵngcc0.ɵɵlistener(\"mousemove\", function TooltipArea_Template__svg_rect_mousemove_1_listener($event) { return ctx.mouseMove($event); })(\"mouseleave\", function TooltipArea_Template__svg_rect_mouseleave_1_listener() { return ctx.hideTooltip(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, TooltipArea__svg_ng_template_2_Template, 2, 1, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelement(4, \"rect\", 2, 3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"x\", 0)(\"width\", ctx.dims.width)(\"height\", ctx.dims.height);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵstyleProp(\"opacity\", ctx.anchorOpacity)(\"pointer-events\", \"none\");\n ɵngcc0.ɵɵproperty(\"@animationState\", ctx.anchorOpacity !== 0 ? \"active\" : \"inactive\")(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipPlacement\", \"right\")(\"tooltipType\", \"tooltip\")(\"tooltipSpacing\", 15)(\"tooltipTemplate\", ctx.tooltipTemplate ? ctx.tooltipTemplate : _r0)(\"tooltipContext\", ctx.anchorValues)(\"tooltipImmediateExit\", true);\n ɵngcc0.ɵɵattribute(\"x\", ctx.anchorPos)(\"width\", 1)(\"height\", ctx.dims.height);\n } }, directives: [TooltipDirective, ɵngcc1.NgForOf], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition('inactive => active', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 0.7 }))\n ]),\n transition('active => inactive', [\n style({\n opacity: 0.7\n }),\n animate(250, style({ opacity: 0 }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], TooltipArea.prototype, \"dims\", void 0);\n__decorate([\n Input()\n], TooltipArea.prototype, \"xSet\", void 0);\n__decorate([\n Input()\n], TooltipArea.prototype, \"xScale\", void 0);\n__decorate([\n Input()\n], TooltipArea.prototype, \"yScale\", void 0);\n__decorate([\n Input()\n], TooltipArea.prototype, \"results\", void 0);\n__decorate([\n Input()\n], TooltipArea.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], TooltipArea.prototype, \"showPercentage\", void 0);\n__decorate([\n Input()\n], TooltipArea.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], TooltipArea.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Output()\n], TooltipArea.prototype, \"hover\", void 0);\n__decorate([\n ViewChild('tooltipAnchor', { static: false })\n], TooltipArea.prototype, \"tooltipAnchor\", void 0);\n\nlet Timeline = class Timeline {\n constructor(element, cd) {\n this.cd = cd;\n this.height = 50;\n this.select = new EventEmitter();\n this.onDomainChange = new EventEmitter();\n this.initialized = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n if (!this.initialized) {\n this.addBrush();\n this.initialized = true;\n }\n }\n update() {\n this.dims = this.getDims();\n this.height = this.dims.height;\n const offsetY = this.view[1] - this.height;\n this.xDomain = this.getXDomain();\n this.xScale = this.getXScale();\n if (this.brush) {\n this.updateBrush();\n }\n this.transform = `translate(0 , ${offsetY})`;\n this.filterId = 'filter' + id().toString();\n this.filter = `url(#${this.filterId})`;\n this.cd.markForCheck();\n }\n getXDomain() {\n let values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.name)) {\n values.push(d.name);\n }\n }\n }\n let domain = [];\n if (this.scaleType === 'time') {\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n }\n else if (this.scaleType === 'linear') {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n }\n else {\n domain = values;\n }\n return domain;\n }\n getXScale() {\n let scale;\n if (this.scaleType === 'time') {\n scale = scaleTime()\n .range([0, this.dims.width])\n .domain(this.xDomain);\n }\n else if (this.scaleType === 'linear') {\n scale = scaleLinear()\n .range([0, this.dims.width])\n .domain(this.xDomain);\n }\n else if (this.scaleType === 'ordinal') {\n scale = scalePoint()\n .range([0, this.dims.width])\n .padding(0.1)\n .domain(this.xDomain);\n }\n return scale;\n }\n addBrush() {\n if (this.brush)\n return;\n const height = this.height;\n const width = this.view[0];\n this.brush = brushX()\n .extent([\n [0, 0],\n [width, height]\n ])\n .on('brush end', () => {\n const selection = event.selection || this.xScale.range();\n const newDomain = selection.map(this.xScale.invert);\n this.onDomainChange.emit(newDomain);\n this.cd.markForCheck();\n });\n select(this.element)\n .select('.brush')\n .call(this.brush);\n }\n updateBrush() {\n if (!this.brush)\n return;\n const height = this.height;\n const width = this.view[0];\n this.brush.extent([\n [0, 0],\n [width, height]\n ]);\n select(this.element)\n .select('.brush')\n .call(this.brush);\n // clear hardcoded properties so they can be defined by CSS\n select(this.element)\n .select('.selection')\n .attr('fill', undefined)\n .attr('stroke', undefined)\n .attr('fill-opacity', undefined);\n this.cd.markForCheck();\n }\n getDims() {\n const width = this.view[0];\n const dims = {\n width,\n height: this.height\n };\n return dims;\n }\n};\nTimeline.ɵfac = function Timeline_Factory(t) { return new (t || Timeline)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nTimeline.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: Timeline, selectors: [[\"g\", \"ngx-charts-timeline\", \"\"]], inputs: { height: \"height\", view: \"view\", state: \"state\", results: \"results\", scheme: \"scheme\", customColors: \"customColors\", legend: \"legend\", miniChart: \"miniChart\", autoScale: \"autoScale\", scaleType: \"scaleType\" }, outputs: { select: \"select\", onDomainChange: \"onDomainChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c20, ngContentSelectors: _c2, decls: 7, vars: 4, consts: [[1, \"timeline\"], [\"in\", \"SourceGraphic\", \"type\", \"matrix\", \"values\", \"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\"], [1, \"embedded-chart\"], [\"x\", \"0\", \"y\", \"0\", 1, \"brush-background\"], [1, \"brush\"]], template: function Timeline_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n ɵngcc0.ɵɵelementStart(1, \"filter\");\n ɵngcc0.ɵɵelement(2, \"feColorMatrix\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"g\", 2);\n ɵngcc0.ɵɵprojection(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(5, \"rect\", 3);\n ɵngcc0.ɵɵelement(6, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"id\", ctx.filterId);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵattribute(\"width\", ctx.view[0])(\"height\", ctx.height);\n } }, styles: [\".timeline .brush-background{fill:rgba(0,0,0,.05)}.timeline .brush .selection{fill:rgba(0,0,0,.1);stroke-width:1px;stroke:#888}.timeline .brush .handle{fill-opacity:0}.timeline .embedded-chart{opacity:.6}\"], encapsulation: 2, changeDetection: 0 });\nTimeline.ctorParameters = () => [\n { type: ElementRef },\n { type: ChangeDetectorRef }\n];\n__decorate([\n Input()\n], Timeline.prototype, \"view\", void 0);\n__decorate([\n Input()\n], Timeline.prototype, \"state\", void 0);\n__decorate([\n Input()\n], Timeline.prototype, \"results\", void 0);\n__decorate([\n Input()\n], Timeline.prototype, \"scheme\", void 0);\n__decorate([\n Input()\n], Timeline.prototype, \"customColors\", void 0);\n__decorate([\n Input()\n], Timeline.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], Timeline.prototype, \"miniChart\", void 0);\n__decorate([\n Input()\n], Timeline.prototype, \"autoScale\", void 0);\n__decorate([\n Input()\n], Timeline.prototype, \"scaleType\", void 0);\n__decorate([\n Input()\n], Timeline.prototype, \"height\", void 0);\n__decorate([\n Output()\n], Timeline.prototype, \"select\", void 0);\n__decorate([\n Output()\n], Timeline.prototype, \"onDomainChange\", void 0);\n\nlet LegendComponent = class LegendComponent {\n constructor(cd) {\n this.cd = cd;\n this.horizontal = false;\n this.labelClick = new EventEmitter();\n this.labelActivate = new EventEmitter();\n this.labelDeactivate = new EventEmitter();\n this.legendEntries = [];\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.cd.markForCheck();\n this.legendEntries = this.getLegendEntries();\n }\n getLegendEntries() {\n const items = [];\n for (const label of this.data) {\n const formattedLabel = formatLabel(label);\n const idx = items.findIndex(i => {\n return i.label === formattedLabel;\n });\n if (idx === -1) {\n items.push({\n label,\n formattedLabel,\n color: this.colors.getColor(label)\n });\n }\n }\n return items;\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.label === d.name;\n });\n return item !== undefined;\n }\n activate(item) {\n this.labelActivate.emit(item);\n }\n deactivate(item) {\n this.labelDeactivate.emit(item);\n }\n trackBy(index, item) {\n return item.label;\n }\n};\nLegendComponent.ɵfac = function LegendComponent_Factory(t) { return new (t || LegendComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nLegendComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: LegendComponent, selectors: [[\"ngx-charts-legend\"]], inputs: { horizontal: \"horizontal\", data: \"data\", title: \"title\", colors: \"colors\", height: \"height\", width: \"width\", activeEntries: \"activeEntries\" }, outputs: { labelClick: \"labelClick\", labelActivate: \"labelActivate\", labelDeactivate: \"labelDeactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 5, vars: 9, consts: [[\"class\", \"legend-title\", 4, \"ngIf\"], [1, \"legend-wrap\"], [1, \"legend-labels\"], [\"class\", \"legend-label\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [1, \"legend-title\"], [1, \"legend-title-text\"], [1, \"legend-label\"], [3, \"label\", \"formattedLabel\", \"color\", \"isActive\", \"select\", \"activate\", \"deactivate\"]], template: function LegendComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtemplate(1, LegendComponent_header_1_Template, 3, 1, \"header\", 0);\n ɵngcc0.ɵɵelementStart(2, \"div\", 1);\n ɵngcc0.ɵɵelementStart(3, \"ul\", 2);\n ɵngcc0.ɵɵtemplate(4, LegendComponent_li_4_Template, 2, 4, \"li\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.width, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", (ctx.title == null ? null : ctx.title.length) > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"max-height\", ctx.height - 45, \"px\");\n ɵngcc0.ɵɵclassProp(\"horizontal-legend\", ctx.horizontal);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.legendEntries)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ɵngcc1.NgIf, ɵngcc1.NgForOf, LegendEntryComponent]; }, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .legend-title{white-space:nowrap;overflow:hidden;margin-left:10px;margin-bottom:5px;font-size:14px;font-weight:700}.chart-legend li,.chart-legend ul{padding:0;margin:0;list-style:none}.chart-legend .horizontal-legend li{display:inline-block}.chart-legend .legend-wrap{width:calc(100% - 10px)}.chart-legend .legend-labels{line-height:85%;list-style:none;text-align:left;float:left;width:100%;border-radius:3px;overflow-y:auto;overflow-x:hidden;white-space:nowrap;background:rgba(0,0,0,.05)}.chart-legend .legend-label{cursor:pointer;font-size:90%;margin:8px;color:#afb7c8}.chart-legend .legend-label:hover{color:#000;-webkit-transition:.2s;transition:.2s}.chart-legend .legend-label .active .legend-label-text{color:#000}.chart-legend .legend-label-color{display:inline-block;height:15px;width:15px;margin-right:5px;color:#5b646b;border-radius:3px}.chart-legend .legend-label-text{display:inline-block;vertical-align:top;line-height:15px;font-size:12px;width:calc(100% - 20px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chart-legend .legend-title-text{vertical-align:bottom;display:inline-block;line-height:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\"], encapsulation: 2, changeDetection: 0 });\nLegendComponent.ctorParameters = () => [\n { type: ChangeDetectorRef }\n];\n__decorate([\n Input()\n], LegendComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], LegendComponent.prototype, \"title\", void 0);\n__decorate([\n Input()\n], LegendComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], LegendComponent.prototype, \"height\", void 0);\n__decorate([\n Input()\n], LegendComponent.prototype, \"width\", void 0);\n__decorate([\n Input()\n], LegendComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], LegendComponent.prototype, \"horizontal\", void 0);\n__decorate([\n Output()\n], LegendComponent.prototype, \"labelClick\", void 0);\n__decorate([\n Output()\n], LegendComponent.prototype, \"labelActivate\", void 0);\n__decorate([\n Output()\n], LegendComponent.prototype, \"labelDeactivate\", void 0);\n\nlet LegendEntryComponent = class LegendEntryComponent {\n constructor() {\n this.isActive = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.toggle = new EventEmitter();\n }\n get trimmedLabel() {\n return this.formattedLabel || '(empty)';\n }\n onMouseEnter() {\n this.activate.emit({ name: this.label });\n }\n onMouseLeave() {\n this.deactivate.emit({ name: this.label });\n }\n};\nLegendEntryComponent.ɵfac = function LegendEntryComponent_Factory(t) { return new (t || LegendEntryComponent)(); };\nLegendEntryComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: LegendEntryComponent, selectors: [[\"ngx-charts-legend-entry\"]], hostBindings: function LegendEntryComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseenter\", function LegendEntryComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function LegendEntryComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n } }, inputs: { isActive: \"isActive\", color: \"color\", label: \"label\", formattedLabel: \"formattedLabel\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", toggle: \"toggle\" }, decls: 4, vars: 6, consts: [[\"tabindex\", \"-1\", 3, \"title\", \"click\"], [1, \"legend-label-color\", 3, \"click\"], [1, \"legend-label-text\"]], template: function LegendEntryComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function LegendEntryComponent_Template_span_click_0_listener() { return ctx.select.emit(ctx.formattedLabel); });\n ɵngcc0.ɵɵelementStart(1, \"span\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function LegendEntryComponent_Template_span_click_1_listener() { return ctx.toggle.emit(ctx.formattedLabel); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"span\", 2);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive);\n ɵngcc0.ɵɵproperty(\"title\", ctx.formattedLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"background-color\", ctx.color);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.trimmedLabel, \" \");\n } }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], LegendEntryComponent.prototype, \"color\", void 0);\n__decorate([\n Input()\n], LegendEntryComponent.prototype, \"label\", void 0);\n__decorate([\n Input()\n], LegendEntryComponent.prototype, \"formattedLabel\", void 0);\n__decorate([\n Input()\n], LegendEntryComponent.prototype, \"isActive\", void 0);\n__decorate([\n Output()\n], LegendEntryComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], LegendEntryComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], LegendEntryComponent.prototype, \"deactivate\", void 0);\n__decorate([\n Output()\n], LegendEntryComponent.prototype, \"toggle\", void 0);\n__decorate([\n HostListener('mouseenter')\n], LegendEntryComponent.prototype, \"onMouseEnter\", null);\n__decorate([\n HostListener('mouseleave')\n], LegendEntryComponent.prototype, \"onMouseLeave\", null);\n\nlet ScaleLegendComponent = class ScaleLegendComponent {\n constructor(sanitizer) {\n this.sanitizer = sanitizer;\n this.horizontal = false;\n }\n ngOnChanges(changes) {\n const gradientValues = this.gradientString(this.colors.range(), this.colors.domain());\n const direction = this.horizontal ? 'right' : 'bottom';\n this.gradient = this.sanitizer.bypassSecurityTrustStyle(`linear-gradient(to ${direction}, ${gradientValues})`);\n }\n /**\n * Generates the string used in the gradient stylesheet properties\n * @param colors array of colors\n * @param splits array of splits on a scale of (0, 1)\n */\n gradientString(colors, splits) {\n // add the 100%\n splits.push(1);\n const pairs = [];\n colors.reverse().forEach((c, i) => {\n pairs.push(`${c} ${Math.round(splits[i] * 100)}%`);\n });\n return pairs.join(', ');\n }\n};\nScaleLegendComponent.ɵfac = function ScaleLegendComponent_Factory(t) { return new (t || ScaleLegendComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.DomSanitizer)); };\nScaleLegendComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: ScaleLegendComponent, selectors: [[\"ngx-charts-scale-legend\"]], inputs: { horizontal: \"horizontal\", valueRange: \"valueRange\", colors: \"colors\", height: \"height\", width: \"width\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 8, vars: 10, consts: [[1, \"scale-legend\"], [1, \"scale-legend-label\"], [1, \"scale-legend-wrap\"]], template: function ScaleLegendComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵelementStart(2, \"span\");\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(4, \"div\", 2);\n ɵngcc0.ɵɵelementStart(5, \"div\", 1);\n ɵngcc0.ɵɵelementStart(6, \"span\");\n ɵngcc0.ɵɵtext(7);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"height\", ctx.horizontal ? undefined : ctx.height, \"px\")(\"width\", ctx.width, \"px\");\n ɵngcc0.ɵɵclassProp(\"horizontal-legend\", ctx.horizontal);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.valueRange[1].toLocaleString());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"background\", ctx.gradient, ɵngcc0.ɵɵdefaultStyleSanitizer);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.valueRange[0].toLocaleString());\n } }, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .scale-legend{text-align:center;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.chart-legend .scale-legend-wrap{display:inline-block;-webkit-box-flex:1;flex:1;width:30px;border-radius:5px;margin:0 auto}.chart-legend .scale-legend-label{font-size:12px}.chart-legend .horizontal-legend.scale-legend{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.chart-legend .horizontal-legend .scale-legend-wrap{width:auto;height:30px;margin:0 16px}\"], encapsulation: 2, changeDetection: 0 });\nScaleLegendComponent.ctorParameters = () => [\n { type: DomSanitizer }\n];\n__decorate([\n Input()\n], ScaleLegendComponent.prototype, \"valueRange\", void 0);\n__decorate([\n Input()\n], ScaleLegendComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], ScaleLegendComponent.prototype, \"height\", void 0);\n__decorate([\n Input()\n], ScaleLegendComponent.prototype, \"width\", void 0);\n__decorate([\n Input()\n], ScaleLegendComponent.prototype, \"horizontal\", void 0);\n\nlet AdvancedLegendComponent = class AdvancedLegendComponent {\n constructor() {\n this.label = 'Total';\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.legendItems = [];\n this.labelFormatting = label => label;\n this.percentageFormatting = percentage => percentage;\n this.defaultValueFormatting = value => value.toLocaleString();\n }\n ngOnChanges(changes) {\n this.update();\n }\n getTotal() {\n return this.data.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n update() {\n this.total = this.getTotal();\n this.roundedTotal = this.total;\n this.legendItems = this.getLegendItems();\n }\n getLegendItems() {\n return this.data.map(d => {\n const label = formatLabel(d.name);\n const value = d.value;\n const color = this.colors.getColor(label);\n const percentage = this.total > 0 ? (value / this.total) * 100 : 0;\n const formattedLabel = typeof this.labelFormatting === 'function' ? this.labelFormatting(label) : label;\n return {\n _value: value,\n data: d,\n value,\n color,\n label: formattedLabel,\n displayLabel: trimLabel(formattedLabel, 20),\n origialLabel: d.name,\n percentage: this.percentageFormatting ? this.percentageFormatting(percentage) : percentage.toLocaleString()\n };\n });\n }\n trackBy(item) {\n return item.formattedLabel;\n }\n};\nAdvancedLegendComponent.ɵfac = function AdvancedLegendComponent_Factory(t) { return new (t || AdvancedLegendComponent)(); };\nAdvancedLegendComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AdvancedLegendComponent, selectors: [[\"ngx-charts-advanced-legend\"]], inputs: { label: \"label\", animations: \"animations\", labelFormatting: \"labelFormatting\", percentageFormatting: \"percentageFormatting\", width: \"width\", data: \"data\", colors: \"colors\", valueFormatting: \"valueFormatting\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 8, vars: 7, consts: [[1, \"advanced-pie-legend\"], [\"class\", \"total-value\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"valueFormatting\", 4, \"ngIf\"], [\"class\", \"total-value\", 4, \"ngIf\"], [1, \"total-label\"], [1, \"legend-items-container\"], [1, \"legend-items\"], [\"tabindex\", \"-1\", \"class\", \"legend-item\", 3, \"mouseenter\", \"mouseleave\", \"click\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-count-up\", \"\", 1, \"total-value\", 3, \"countTo\", \"valueFormatting\"], [1, \"total-value\"], [\"tabindex\", \"-1\", 1, \"legend-item\", 3, \"mouseenter\", \"mouseleave\", \"click\"], [1, \"item-color\"], [\"class\", \"item-value\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"valueFormatting\", 4, \"ngIf\"], [\"class\", \"item-value\", 4, \"ngIf\"], [1, \"item-label\"], [\"class\", \"item-percent\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"countSuffix\", 4, \"ngIf\"], [\"class\", \"item-percent\", 4, \"ngIf\"], [\"ngx-charts-count-up\", \"\", 1, \"item-value\", 3, \"countTo\", \"valueFormatting\"], [1, \"item-value\"], [\"ngx-charts-count-up\", \"\", 1, \"item-percent\", 3, \"countTo\", \"countSuffix\"], [1, \"item-percent\"]], template: function AdvancedLegendComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, AdvancedLegendComponent_div_1_Template, 1, 2, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, AdvancedLegendComponent_div_2_Template, 2, 1, \"div\", 2);\n ɵngcc0.ɵɵelementStart(3, \"div\", 3);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"div\", 4);\n ɵngcc0.ɵɵelementStart(6, \"div\", 5);\n ɵngcc0.ɵɵtemplate(7, AdvancedLegendComponent_div_7_Template, 8, 7, \"div\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.width, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.label, \" \");\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.legendItems)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, CountUpDirective], styles: [\".advanced-pie-legend{float:left;position:relative;top:50%;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.advanced-pie-legend .total-value{font-size:36px}.advanced-pie-legend .total-label{font-size:24px;margin-bottom:19px}.advanced-pie-legend .legend-items-container{width:100%}.advanced-pie-legend .legend-items-container .legend-items{white-space:nowrap;overflow:auto}.advanced-pie-legend .legend-items-container .legend-items .legend-item{margin-right:20px;display:inline-block;cursor:pointer}.advanced-pie-legend .legend-items-container .legend-items .legend-item:focus{outline:0}.advanced-pie-legend .legend-items-container .legend-items .legend-item:hover{color:#000;-webkit-transition:.2s;transition:.2s}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-value{font-size:24px;margin-top:-6px;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-label{font-size:14px;opacity:.7;margin-left:11px;margin-top:-6px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-percent{font-size:24px;opacity:.7;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-color{border-left:4px solid;width:4px;height:42px;float:left;margin-right:7px}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], AdvancedLegendComponent.prototype, \"width\", void 0);\n__decorate([\n Input()\n], AdvancedLegendComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], AdvancedLegendComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], AdvancedLegendComponent.prototype, \"label\", void 0);\n__decorate([\n Input()\n], AdvancedLegendComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], AdvancedLegendComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], AdvancedLegendComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], AdvancedLegendComponent.prototype, \"deactivate\", void 0);\n__decorate([\n Input()\n], AdvancedLegendComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n Input()\n], AdvancedLegendComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n Input()\n], AdvancedLegendComponent.prototype, \"percentageFormatting\", void 0);\n\nconst COMPONENTS = [\n AreaComponent,\n BaseChartComponent,\n CountUpDirective,\n TooltipArea,\n ChartComponent,\n LegendComponent,\n LegendEntryComponent,\n ScaleLegendComponent,\n CircleComponent,\n CircleSeriesComponent,\n GridPanelComponent,\n GridPanelSeriesComponent,\n SvgLinearGradientComponent,\n SvgRadialGradientComponent,\n Timeline,\n AdvancedLegendComponent\n];\nlet ChartCommonModule = class ChartCommonModule {\n};\nChartCommonModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: ChartCommonModule });\nChartCommonModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function ChartCommonModule_Factory(t) { return new (t || ChartCommonModule)(); }, imports: [[CommonModule, AxesModule, TooltipModule],\n CommonModule,\n AxesModule,\n TooltipModule] });\n\nfunction calculateViewDimensions({ width, height, margins, showXAxis = false, showYAxis = false, xAxisHeight = 0, yAxisWidth = 0, showXLabel = false, showYLabel = false, showLegend = false, legendType = 'ordinal', legendPosition = 'right', columns = 12 }) {\n let xOffset = margins[3];\n let chartWidth = width;\n let chartHeight = height - margins[0] - margins[2];\n if (showLegend && legendPosition === 'right') {\n if (legendType === 'ordinal') {\n columns -= 2;\n }\n else {\n columns -= 1;\n }\n }\n chartWidth = (chartWidth * columns) / 12;\n chartWidth = chartWidth - margins[1] - margins[3];\n if (showXAxis) {\n chartHeight -= 5;\n chartHeight -= xAxisHeight;\n if (showXLabel) {\n // text height + spacing between axis label and tick labels\n const offset = 25 + 5;\n chartHeight -= offset;\n }\n }\n if (showYAxis) {\n chartWidth -= 5;\n chartWidth -= yAxisWidth;\n xOffset += yAxisWidth;\n xOffset += 10;\n if (showYLabel) {\n // text height + spacing between axis label and tick labels\n const offset = 25 + 5;\n chartWidth -= offset;\n xOffset += offset;\n }\n }\n chartWidth = Math.max(0, chartWidth);\n chartHeight = Math.max(0, chartHeight);\n return {\n width: Math.floor(chartWidth),\n height: Math.floor(chartHeight),\n xOffset: Math.floor(xOffset)\n };\n}\n\nlet colorSets = [\n {\n name: 'vivid',\n selectable: true,\n group: 'Ordinal',\n domain: [\n '#647c8a',\n '#3f51b5',\n '#2196f3',\n '#00b862',\n '#afdf0a',\n '#a7b61a',\n '#f3e562',\n '#ff9800',\n '#ff5722',\n '#ff4514'\n ]\n },\n {\n name: 'natural',\n selectable: true,\n group: 'Ordinal',\n domain: [\n '#bf9d76',\n '#e99450',\n '#d89f59',\n '#f2dfa7',\n '#a5d7c6',\n '#7794b1',\n '#afafaf',\n '#707160',\n '#ba9383',\n '#d9d5c3'\n ]\n },\n {\n name: 'cool',\n selectable: true,\n group: 'Ordinal',\n domain: [\n '#a8385d',\n '#7aa3e5',\n '#a27ea8',\n '#aae3f5',\n '#adcded',\n '#a95963',\n '#8796c0',\n '#7ed3ed',\n '#50abcc',\n '#ad6886'\n ]\n },\n {\n name: 'fire',\n selectable: true,\n group: 'Ordinal',\n domain: ['#ff3d00', '#bf360c', '#ff8f00', '#ff6f00', '#ff5722', '#e65100', '#ffca28', '#ffab00']\n },\n {\n name: 'solar',\n selectable: true,\n group: 'Continuous',\n domain: [\n '#fff8e1',\n '#ffecb3',\n '#ffe082',\n '#ffd54f',\n '#ffca28',\n '#ffc107',\n '#ffb300',\n '#ffa000',\n '#ff8f00',\n '#ff6f00'\n ]\n },\n {\n name: 'air',\n selectable: true,\n group: 'Continuous',\n domain: [\n '#e1f5fe',\n '#b3e5fc',\n '#81d4fa',\n '#4fc3f7',\n '#29b6f6',\n '#03a9f4',\n '#039be5',\n '#0288d1',\n '#0277bd',\n '#01579b'\n ]\n },\n {\n name: 'aqua',\n selectable: true,\n group: 'Continuous',\n domain: [\n '#e0f7fa',\n '#b2ebf2',\n '#80deea',\n '#4dd0e1',\n '#26c6da',\n '#00bcd4',\n '#00acc1',\n '#0097a7',\n '#00838f',\n '#006064'\n ]\n },\n {\n name: 'flame',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#A10A28',\n '#D3342D',\n '#EF6D49',\n '#FAAD67',\n '#FDDE90',\n '#DBED91',\n '#A9D770',\n '#6CBA67',\n '#2C9653',\n '#146738'\n ]\n },\n {\n name: 'ocean',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#1D68FB',\n '#33C0FC',\n '#4AFFFE',\n '#AFFFFF',\n '#FFFC63',\n '#FDBD2D',\n '#FC8A25',\n '#FA4F1E',\n '#FA141B',\n '#BA38D1'\n ]\n },\n {\n name: 'forest',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#55C22D',\n '#C1F33D',\n '#3CC099',\n '#AFFFFF',\n '#8CFC9D',\n '#76CFFA',\n '#BA60FB',\n '#EE6490',\n '#C42A1C',\n '#FC9F32'\n ]\n },\n {\n name: 'horizon',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#2597FB',\n '#65EBFD',\n '#99FDD0',\n '#FCEE4B',\n '#FEFCFA',\n '#FDD6E3',\n '#FCB1A8',\n '#EF6F7B',\n '#CB96E8',\n '#EFDEE0'\n ]\n },\n {\n name: 'neons',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#FF3333',\n '#FF33FF',\n '#CC33FF',\n '#0000FF',\n '#33CCFF',\n '#33FFFF',\n '#33FF66',\n '#CCFF33',\n '#FFCC00',\n '#FF6600'\n ]\n },\n {\n name: 'picnic',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#FAC51D',\n '#66BD6D',\n '#FAA026',\n '#29BB9C',\n '#E96B56',\n '#55ACD2',\n '#B7332F',\n '#2C83C9',\n '#9166B8',\n '#92E7E8'\n ]\n },\n {\n name: 'night',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#2B1B5A',\n '#501356',\n '#183356',\n '#28203F',\n '#391B3C',\n '#1E2B3C',\n '#120634',\n '#2D0432',\n '#051932',\n '#453080',\n '#75267D',\n '#2C507D',\n '#4B3880',\n '#752F7D',\n '#35547D'\n ]\n },\n {\n name: 'nightLights',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#4e31a5',\n '#9c25a7',\n '#3065ab',\n '#57468b',\n '#904497',\n '#46648b',\n '#32118d',\n '#a00fb3',\n '#1052a2',\n '#6e51bd',\n '#b63cc3',\n '#6c97cb',\n '#8671c1',\n '#b455be',\n '#7496c3'\n ]\n }\n];\n\nclass ColorHelper {\n constructor(scheme, type, domain, customColors) {\n if (typeof scheme === 'string') {\n scheme = colorSets.find(cs => {\n return cs.name === scheme;\n });\n }\n this.colorDomain = scheme.domain;\n this.scaleType = type;\n this.domain = domain;\n this.customColors = customColors;\n this.scale = this.generateColorScheme(scheme, type, this.domain);\n }\n generateColorScheme(scheme, type, domain) {\n if (typeof scheme === 'string') {\n scheme = colorSets.find(cs => {\n return cs.name === scheme;\n });\n }\n let colorScale;\n if (type === 'quantile') {\n colorScale = scaleQuantile()\n .range(scheme.domain)\n .domain(domain);\n }\n else if (type === 'ordinal') {\n colorScale = scaleOrdinal()\n .range(scheme.domain)\n .domain(domain);\n }\n else if (type === 'linear') {\n // linear schemes must have at least 2 colors\n const colorDomain = [...scheme.domain];\n if (colorDomain.length === 1) {\n colorDomain.push(colorDomain[0]);\n this.colorDomain = colorDomain;\n }\n const points = range(0, 1, 1.0 / colorDomain.length);\n colorScale = scaleLinear()\n .domain(points)\n .range(colorDomain);\n }\n return colorScale;\n }\n getColor(value) {\n if (value === undefined || value === null) {\n throw new Error('Value can not be null');\n }\n if (this.scaleType === 'linear') {\n const valueScale = scaleLinear()\n .domain(this.domain)\n .range([0, 1]);\n return this.scale(valueScale(value));\n }\n else {\n if (typeof this.customColors === 'function') {\n return this.customColors(value);\n }\n const formattedValue = value.toString();\n let found; // todo type customColors\n if (this.customColors && this.customColors.length > 0) {\n found = this.customColors.find(mapping => {\n return mapping.name.toLowerCase() === formattedValue.toLowerCase();\n });\n }\n if (found) {\n return found.value;\n }\n else {\n return this.scale(value);\n }\n }\n }\n getLinearGradientStops(value, start) {\n if (start === undefined) {\n start = this.domain[0];\n }\n const valueScale = scaleLinear()\n .domain(this.domain)\n .range([0, 1]);\n const colorValueScale = scaleBand()\n .domain(this.colorDomain)\n .range([0, 1]);\n const endColor = this.getColor(value);\n // generate the stops\n const startVal = valueScale(start);\n const startColor = this.getColor(start);\n const endVal = valueScale(value);\n let i = 1;\n let currentVal = startVal;\n const stops = [];\n stops.push({\n color: startColor,\n offset: startVal,\n originalOffset: startVal,\n opacity: 1\n });\n while (currentVal < endVal && i < this.colorDomain.length) {\n const color = this.colorDomain[i];\n const offset = colorValueScale(color);\n if (offset <= startVal) {\n i++;\n continue;\n }\n if (offset.toFixed(4) >= (endVal - colorValueScale.bandwidth()).toFixed(4)) {\n break;\n }\n stops.push({\n color,\n offset,\n opacity: 1\n });\n currentVal = offset;\n i++;\n }\n if (stops[stops.length - 1].offset < 100) {\n stops.push({\n color: endColor,\n offset: endVal,\n opacity: 1\n });\n }\n if (endVal === startVal) {\n stops[0].offset = 0;\n stops[1].offset = 100;\n }\n else {\n // normalize the offsets into percentages\n if (stops[stops.length - 1].offset !== 100) {\n for (const s of stops) {\n s.offset = ((s.offset - startVal) / (endVal - startVal)) * 100;\n }\n }\n }\n return stops;\n }\n}\n\n/**\n * Based on the data, return an array with unique values.\n *\n * @export\n * @returns array\n */\nfunction getUniqueXDomainValues(results) {\n const valueSet = new Set();\n for (const result of results) {\n for (const d of result.series) {\n valueSet.add(d.name);\n }\n }\n return Array.from(valueSet);\n}\n/**\n * Get the scaleType of enumerable of values.\n * @returns 'time', 'linear' or 'ordinal'\n */\nfunction getScaleType(values, checkDateType = true) {\n if (checkDateType) {\n const allDates = values.every(value => value instanceof Date);\n if (allDates) {\n return 'time';\n }\n }\n const allNumbers = values.every(value => typeof value === 'number');\n if (allNumbers) {\n return 'linear';\n }\n return 'ordinal';\n}\n\nlet AreaChartComponent = class AreaChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.baseValue = 'auto';\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === 'linear') {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (this.scaleType === 'time' || this.scaleType === 'linear') {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n if (this.scaleType === 'time') {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === 'linear') {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n const values = [...domain];\n if (!this.autoScale) {\n values.push(0);\n }\n if (this.baseValue !== 'auto') {\n values.push(this.baseValue);\n }\n const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === 'time') {\n scale = scaleTime();\n }\n else if (this.scaleType === 'linear') {\n scale = scaleLinear();\n }\n else if (this.scaleType === 'ordinal') {\n scale = scalePoint().padding(0.1);\n }\n scale.range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear()\n .range([height, 0])\n .domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getScaleType(values) {\n let date = true;\n let num = true;\n for (const value of values) {\n if (!this.isDate(value)) {\n date = false;\n }\n if (typeof value !== 'number') {\n num = false;\n }\n }\n if (date) {\n return 'time';\n }\n if (num) {\n return 'linear';\n }\n return 'ordinal';\n }\n isDate(value) {\n if (value instanceof Date) {\n return true;\n }\n return false;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n};\nAreaChartComponent.ɵfac = function AreaChartComponent_Factory(t) { return ɵAreaChartComponent_BaseFactory(t || AreaChartComponent); };\nAreaChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AreaChartComponent, selectors: [[\"ngx-charts-area-chart\"]], contentQueries: function AreaChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c22, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltipTemplate = _t.first);\n } }, hostBindings: function AreaChartComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n } }, inputs: { legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", baseValue: \"baseValue\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", legend: \"legend\", state: \"state\", xAxis: \"xAxis\", yAxis: \"yAxis\", autoScale: \"autoScale\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 11, vars: 20, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"area-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"mouseleave\", 4, \"ngIf\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\", 4, \"ngIf\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-area-series\", \"\", 3, \"xScale\", \"yScale\", \"baseValue\", \"colors\", \"data\", \"activeEntries\", \"scaleType\", \"gradient\", \"curve\", \"animations\"], [3, \"mouseleave\"], [\"ngx-charts-tooltip-area\", \"\", 3, \"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"tooltipDisabled\", \"tooltipTemplate\", \"hover\"], [4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-circle-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"activeEntries\", \"data\", \"scaleType\", \"visibleValue\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\"], [\"ngx-charts-area-series\", \"\", 3, \"xScale\", \"yScale\", \"baseValue\", \"colors\", \"data\", \"scaleType\", \"gradient\", \"curve\", \"animations\"]], template: function AreaChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function AreaChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function AreaChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function AreaChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"defs\");\n ɵngcc0.ɵɵelementStart(2, \"clipPath\");\n ɵngcc0.ɵɵelement(3, \"rect\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n ɵngcc0.ɵɵtemplate(5, AreaChartComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(6, AreaChartComponent__svg_g_6_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementStart(7, \"g\");\n ɵngcc0.ɵɵtemplate(8, AreaChartComponent__svg_g_8_Template, 2, 10, \"g\", 4);\n ɵngcc0.ɵɵtemplate(9, AreaChartComponent__svg_g_9_Template, 3, 9, \"g\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(10, AreaChartComponent__svg_g_10_Template, 2, 13, \"g\", 6);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tooltipDisabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.timeline && ctx.scaleType != \"ordinal\");\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent,\n YAxisComponent,\n AreaSeriesComponent,\n TooltipArea,\n CircleSeriesComponent,\n Timeline]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"state\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"baseValue\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"autoScale\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"timeline\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"curve\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"xScaleMin\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"yScaleMin\", void 0);\n__decorate([\n Input()\n], AreaChartComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n Output()\n], AreaChartComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], AreaChartComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], AreaChartComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n ContentChild('seriesTooltipTemplate')\n], AreaChartComponent.prototype, \"seriesTooltipTemplate\", void 0);\n__decorate([\n HostListener('mouseleave')\n], AreaChartComponent.prototype, \"hideCircles\", null);\n\nlet AreaChartNormalizedComponent = class AreaChartNormalizedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let d0 = 0;\n let total = 0;\n for (const group of this.results) {\n const d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === 'time') {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n total += d.value;\n }\n }\n for (const group of this.results) {\n let d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === 'time') {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n d.d0 = d0;\n d.d1 = d0 + d.value;\n d0 += d.value;\n }\n else {\n d = {\n name: val,\n value: 0,\n d0,\n d1: d0\n };\n group.series.push(d);\n }\n if (total > 0) {\n d.d0 = (d.d0 * 100) / total;\n d.d1 = (d.d1 * 100) / total;\n }\n else {\n d.d0 = 0;\n d.d1 = 0;\n }\n }\n }\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === 'time') {\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === 'linear') {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n return [0, 100];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === 'time') {\n scale = scaleTime();\n }\n else if (this.scaleType === 'linear') {\n scale = scaleLinear();\n }\n else if (this.scaleType === 'ordinal') {\n scale = scalePoint().padding(0.1);\n }\n scale.range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear()\n .range([height, 0])\n .domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n};\nAreaChartNormalizedComponent.ɵfac = function AreaChartNormalizedComponent_Factory(t) { return ɵAreaChartNormalizedComponent_BaseFactory(t || AreaChartNormalizedComponent); };\nAreaChartNormalizedComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AreaChartNormalizedComponent, selectors: [[\"ngx-charts-area-chart-normalized\"]], contentQueries: function AreaChartNormalizedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c22, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltipTemplate = _t.first);\n } }, hostBindings: function AreaChartNormalizedComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartNormalizedComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 11, vars: 20, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"area-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"mouseleave\", 4, \"ngIf\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\", 4, \"ngIf\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-area-series\", \"\", \"normalized\", \"true\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"activeEntries\", \"gradient\", \"curve\", \"animations\"], [3, \"mouseleave\"], [\"ngx-charts-tooltip-area\", \"\", 3, \"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"showPercentage\", \"tooltipDisabled\", \"tooltipTemplate\", \"hover\"], [4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-circle-series\", \"\", \"type\", \"stacked\", 3, \"xScale\", \"yScale\", \"colors\", \"activeEntries\", \"data\", \"scaleType\", \"visibleValue\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\"], [\"ngx-charts-area-series\", \"\", \"normalized\", \"true\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"gradient\", \"curve\", \"animations\"]], template: function AreaChartNormalizedComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function AreaChartNormalizedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function AreaChartNormalizedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function AreaChartNormalizedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"defs\");\n ɵngcc0.ɵɵelementStart(2, \"clipPath\");\n ɵngcc0.ɵɵelement(3, \"rect\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n ɵngcc0.ɵɵtemplate(5, AreaChartNormalizedComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(6, AreaChartNormalizedComponent__svg_g_6_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementStart(7, \"g\");\n ɵngcc0.ɵɵtemplate(8, AreaChartNormalizedComponent__svg_g_8_Template, 2, 9, \"g\", 4);\n ɵngcc0.ɵɵtemplate(9, AreaChartNormalizedComponent__svg_g_9_Template, 3, 10, \"g\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(10, AreaChartNormalizedComponent__svg_g_10_Template, 2, 13, \"g\", 6);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tooltipDisabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.timeline && ctx.scaleType != \"ordinal\");\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent,\n YAxisComponent,\n AreaSeriesComponent,\n TooltipArea,\n CircleSeriesComponent,\n Timeline]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"timeline\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"curve\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], AreaChartNormalizedComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Output()\n], AreaChartNormalizedComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], AreaChartNormalizedComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], AreaChartNormalizedComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n ContentChild('seriesTooltipTemplate')\n], AreaChartNormalizedComponent.prototype, \"seriesTooltipTemplate\", void 0);\n__decorate([\n HostListener('mouseleave')\n], AreaChartNormalizedComponent.prototype, \"hideCircles\", null);\n\nlet AreaChartStackedComponent = class AreaChartStackedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let d0 = 0;\n for (const group of this.results) {\n let d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === 'time') {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n d.d0 = d0;\n d.d1 = d0 + d.value;\n d0 += d.value;\n }\n else {\n d = {\n name: val,\n value: 0,\n d0,\n d1: d0\n };\n group.series.push(d);\n }\n }\n }\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === 'linear') {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (this.scaleType === 'time' || this.scaleType === 'linear') {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n if (this.scaleType === 'time') {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === 'linear') {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let sum = 0;\n for (const group of this.results) {\n const d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === 'time') {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n sum += d.value;\n }\n }\n domain.push(sum);\n }\n const min = this.yScaleMin ? this.yScaleMin : Math.min(0, ...domain);\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...domain);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === 'time') {\n scale = scaleTime();\n }\n else if (this.scaleType === 'linear') {\n scale = scaleLinear();\n }\n else if (this.scaleType === 'ordinal') {\n scale = scalePoint().padding(0.1);\n }\n scale.range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear()\n .range([height, 0])\n .domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n};\nAreaChartStackedComponent.ɵfac = function AreaChartStackedComponent_Factory(t) { return ɵAreaChartStackedComponent_BaseFactory(t || AreaChartStackedComponent); };\nAreaChartStackedComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AreaChartStackedComponent, selectors: [[\"ngx-charts-area-chart-stacked\"]], contentQueries: function AreaChartStackedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c22, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltipTemplate = _t.first);\n } }, hostBindings: function AreaChartStackedComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartStackedComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 11, vars: 20, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"area-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"mouseleave\", 4, \"ngIf\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\", 4, \"ngIf\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-area-series\", \"\", \"stacked\", \"true\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"gradient\", \"activeEntries\", \"curve\", \"animations\"], [3, \"mouseleave\"], [\"ngx-charts-tooltip-area\", \"\", 3, \"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"tooltipDisabled\", \"tooltipTemplate\", \"hover\"], [\"ngx-charts-circle-series\", \"\", \"type\", \"stacked\", 3, \"xScale\", \"yScale\", \"colors\", \"activeEntries\", \"data\", \"scaleType\", \"visibleValue\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\"], [\"ngx-charts-area-series\", \"\", \"stacked\", \"true\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"gradient\", \"curve\", \"animations\"]], template: function AreaChartStackedComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function AreaChartStackedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function AreaChartStackedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function AreaChartStackedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"defs\");\n ɵngcc0.ɵɵelementStart(2, \"clipPath\");\n ɵngcc0.ɵɵelement(3, \"rect\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n ɵngcc0.ɵɵtemplate(5, AreaChartStackedComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(6, AreaChartStackedComponent__svg_g_6_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementStart(7, \"g\");\n ɵngcc0.ɵɵtemplate(8, AreaChartStackedComponent__svg_g_8_Template, 2, 9, \"g\", 4);\n ɵngcc0.ɵɵtemplate(9, AreaChartStackedComponent__svg_g_9_Template, 3, 10, \"g\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(10, AreaChartStackedComponent__svg_g_10_Template, 2, 13, \"g\", 6);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tooltipDisabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.timeline && ctx.scaleType != \"ordinal\");\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent,\n YAxisComponent,\n AreaSeriesComponent,\n TooltipArea,\n CircleSeriesComponent,\n Timeline]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"timeline\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"curve\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"xScaleMin\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"yScaleMin\", void 0);\n__decorate([\n Input()\n], AreaChartStackedComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n Output()\n], AreaChartStackedComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], AreaChartStackedComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], AreaChartStackedComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n ContentChild('seriesTooltipTemplate')\n], AreaChartStackedComponent.prototype, \"seriesTooltipTemplate\", void 0);\n__decorate([\n HostListener('mouseleave')\n], AreaChartStackedComponent.prototype, \"hideCircles\", null);\n\nfunction sortLinear(data, property, direction = 'asc') {\n return data.sort((a, b) => {\n if (direction === 'asc') {\n return a[property] - b[property];\n }\n else {\n return b[property] - a[property];\n }\n });\n}\nfunction sortByDomain(data, property, direction = 'asc', domain) {\n return data.sort((a, b) => {\n const aVal = a[property];\n const bVal = b[property];\n const aIdx = domain.indexOf(aVal);\n const bIdx = domain.indexOf(bVal);\n if (direction === 'asc') {\n return aIdx - bIdx;\n }\n else {\n return bIdx - aIdx;\n }\n });\n}\nfunction sortByTime(data, property, direction = 'asc') {\n return data.sort((a, b) => {\n const aDate = a[property].getTime();\n const bDate = b[property].getTime();\n if (direction === 'asc') {\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n }\n else {\n if (aDate > bDate)\n return -1;\n if (bDate > aDate)\n return 1;\n return 0;\n }\n });\n}\n\nlet AreaSeriesComponent = class AreaSeriesComponent {\n constructor() {\n this.baseValue = 'auto';\n this.stacked = false;\n this.normalized = false;\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateGradient();\n let currentArea;\n let startingArea;\n const xProperty = d => {\n const label = d.name;\n return this.xScale(label);\n };\n if (this.stacked || this.normalized) {\n currentArea = area()\n .x(xProperty)\n .y0((d, i) => this.yScale(d.d0))\n .y1((d, i) => this.yScale(d.d1));\n startingArea = area()\n .x(xProperty)\n .y0(d => this.yScale.range()[0])\n .y1(d => this.yScale.range()[0]);\n }\n else {\n currentArea = area()\n .x(xProperty)\n .y0(() => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n .y1(d => this.yScale(d.value));\n startingArea = area()\n .x(xProperty)\n .y0(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n .y1(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)));\n }\n currentArea.curve(this.curve);\n startingArea.curve(this.curve);\n this.opacity = 0.8;\n let data = this.data.series;\n if (this.scaleType === 'linear') {\n data = sortLinear(data, 'name');\n }\n else if (this.scaleType === 'time') {\n data = sortByTime(data, 'name');\n }\n else {\n data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n this.path = currentArea(data);\n this.startingPath = startingArea(data);\n }\n updateGradient() {\n if (this.colors.scaleType === 'linear') {\n this.hasGradient = true;\n if (this.stacked || this.normalized) {\n const d0values = this.data.series.map(d => d.d0);\n const d1values = this.data.series.map(d => d.d1);\n const max = Math.max(...d1values);\n const min = Math.min(...d0values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n }\n else {\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max);\n }\n }\n else {\n this.hasGradient = false;\n this.gradientStops = undefined;\n }\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isInactive(entry) {\n if (!this.activeEntries || this.activeEntries.length === 0)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n};\nAreaSeriesComponent.ɵfac = function AreaSeriesComponent_Factory(t) { return new (t || AreaSeriesComponent)(); };\nAreaSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AreaSeriesComponent, selectors: [[\"g\", \"ngx-charts-area-series\", \"\"]], inputs: { baseValue: \"baseValue\", stacked: \"stacked\", normalized: \"normalized\", animations: \"animations\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", gradient: \"gradient\", curve: \"curve\", activeEntries: \"activeEntries\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c24, decls: 1, vars: 12, consts: [[\"ngx-charts-area\", \"\", 1, \"area-series\", 3, \"data\", \"path\", \"fill\", \"stops\", \"startingPath\", \"opacity\", \"gradient\", \"animations\"]], template: function AreaSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive(ctx.data))(\"inactive\", ctx.isInactive(ctx.data));\n ɵngcc0.ɵɵproperty(\"data\", ctx.data)(\"path\", ctx.path)(\"fill\", ctx.colors.getColor(ctx.data.name))(\"stops\", ctx.gradientStops)(\"startingPath\", ctx.startingPath)(\"opacity\", ctx.opacity)(\"gradient\", ctx.gradient || ctx.hasGradient)(\"animations\", ctx.animations);\n } }, directives: [AreaComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], AreaSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], AreaSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n Input()\n], AreaSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n Input()\n], AreaSeriesComponent.prototype, \"baseValue\", void 0);\n__decorate([\n Input()\n], AreaSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], AreaSeriesComponent.prototype, \"scaleType\", void 0);\n__decorate([\n Input()\n], AreaSeriesComponent.prototype, \"stacked\", void 0);\n__decorate([\n Input()\n], AreaSeriesComponent.prototype, \"normalized\", void 0);\n__decorate([\n Input()\n], AreaSeriesComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], AreaSeriesComponent.prototype, \"curve\", void 0);\n__decorate([\n Input()\n], AreaSeriesComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], AreaSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], AreaSeriesComponent.prototype, \"select\", void 0);\n\nlet AreaChartModule = class AreaChartModule {\n};\nAreaChartModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: AreaChartModule });\nAreaChartModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function AreaChartModule_Factory(t) { return new (t || AreaChartModule)(); }, imports: [[ChartCommonModule]] });\n\nlet BarComponent = class BarComponent {\n constructor(element) {\n this.roundEdges = true;\n this.gradient = false;\n this.offset = 0;\n this.isActive = false;\n this.animations = true;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.hasGradient = false;\n this.hideBar = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n if (changes.roundEdges) {\n this.loadAnimation();\n }\n this.update();\n }\n update() {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n if (this.gradient || this.stops) {\n this.gradientStops = this.getGradient();\n this.hasGradient = true;\n }\n else {\n this.hasGradient = false;\n }\n this.updatePathEl();\n this.checkToHideBar();\n }\n loadAnimation() {\n this.path = this.getStartingPath();\n setTimeout(this.update.bind(this), 100);\n }\n updatePathEl() {\n const node = select(this.element).select('.bar');\n const path = this.getPath();\n if (this.animations) {\n node\n .transition()\n .duration(500)\n .attr('d', path);\n }\n else {\n node.attr('d', path);\n }\n }\n getGradient() {\n if (this.stops) {\n return this.stops;\n }\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.getStartOpacity()\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n getStartingPath() {\n if (!this.animations) {\n return this.getPath();\n }\n let radius = this.getRadius();\n let path;\n if (this.roundEdges) {\n if (this.orientation === 'vertical') {\n radius = Math.min(this.height, radius);\n path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n }\n else if (this.orientation === 'horizontal') {\n radius = Math.min(this.width, radius);\n path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n }\n }\n else {\n if (this.orientation === 'vertical') {\n path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n }\n else if (this.orientation === 'horizontal') {\n path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n }\n }\n return path;\n }\n getPath() {\n let radius = this.getRadius();\n let path;\n if (this.roundEdges) {\n if (this.orientation === 'vertical') {\n radius = Math.min(this.height, radius);\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n else if (this.orientation === 'horizontal') {\n radius = Math.min(this.width, radius);\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n }\n else {\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n return path;\n }\n getRadius() {\n let radius = 0;\n if (this.roundEdges && this.height > 5 && this.width > 5) {\n radius = Math.floor(Math.min(5, this.height / 2, this.width / 2));\n }\n return radius;\n }\n getStartOpacity() {\n if (this.roundEdges) {\n return 0.2;\n }\n else {\n return 0.5;\n }\n }\n get edges() {\n let edges = [false, false, false, false];\n if (this.roundEdges) {\n if (this.orientation === 'vertical') {\n if (this.data.value > 0) {\n edges = [true, true, false, false];\n }\n else {\n edges = [false, false, true, true];\n }\n }\n else if (this.orientation === 'horizontal') {\n if (this.data.value > 0) {\n edges = [false, true, false, true];\n }\n else {\n edges = [true, false, true, false];\n }\n }\n }\n return edges;\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n checkToHideBar() {\n this.hideBar =\n this.noBarWhenZero &&\n ((this.orientation === 'vertical' && this.height === 0) ||\n (this.orientation === 'horizontal' && this.width === 0));\n }\n};\nBarComponent.ɵfac = function BarComponent_Factory(t) { return new (t || BarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nBarComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarComponent, selectors: [[\"g\", \"ngx-charts-bar\", \"\"]], hostBindings: function BarComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseenter\", function BarComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function BarComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n } }, inputs: { roundEdges: \"roundEdges\", gradient: \"gradient\", offset: \"offset\", isActive: \"isActive\", animations: \"animations\", noBarWhenZero: \"noBarWhenZero\", fill: \"fill\", data: \"data\", width: \"width\", height: \"height\", x: \"x\", y: \"y\", orientation: \"orientation\", stops: \"stops\", ariaLabel: \"ariaLabel\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c25, decls: 2, vars: 8, consts: [[4, \"ngIf\"], [\"stroke\", \"none\", \"role\", \"img\", \"tabIndex\", \"-1\", 1, \"bar\", 3, \"click\"], [\"ngx-charts-svg-linear-gradient\", \"\", 3, \"orientation\", \"name\", \"stops\"]], template: function BarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, BarComponent__svg_defs_0_Template, 2, 3, \"defs\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"path\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function BarComponent_Template__svg_path_click_1_listener() { return ctx.select.emit(ctx.data); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasGradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive)(\"hidden\", ctx.hideBar);\n ɵngcc0.ɵɵattribute(\"d\", ctx.path)(\"aria-label\", ctx.ariaLabel)(\"fill\", ctx.hasGradient ? ctx.gradientFill : ctx.fill);\n } }, directives: [ɵngcc1.NgIf, SvgLinearGradientComponent], encapsulation: 2, changeDetection: 0 });\nBarComponent.ctorParameters = () => [\n { type: ElementRef }\n];\n__decorate([\n Input()\n], BarComponent.prototype, \"fill\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"width\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"height\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"x\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"y\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"orientation\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"roundEdges\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"offset\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"isActive\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"stops\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"animations\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"ariaLabel\", void 0);\n__decorate([\n Input()\n], BarComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n Output()\n], BarComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], BarComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], BarComponent.prototype, \"deactivate\", void 0);\n__decorate([\n HostListener('mouseenter')\n], BarComponent.prototype, \"onMouseEnter\", null);\n__decorate([\n HostListener('mouseleave')\n], BarComponent.prototype, \"onMouseLeave\", null);\n\nlet BarHorizontalComponent = class BarHorizontalComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getXScale() {\n this.xDomain = this.getXDomain();\n const scale = scaleLinear()\n .range([0, this.dims.width])\n .domain(this.xDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale() {\n this.yDomain = this.getYDomain();\n const spacing = this.yDomain.length / (this.dims.height / this.barPadding + 1);\n return scaleBand()\n .rangeRound([0, this.dims.height])\n .paddingInner(spacing)\n .domain(this.yDomain);\n }\n getXDomain() {\n const values = this.results.map(d => d.value);\n const min = this.xScaleMin ? Math.min(this.xScaleMin, ...values) : Math.min(0, ...values);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...values) : Math.max(0, ...values);\n return [min, max];\n }\n getYDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.yDomain;\n }\n else {\n domain = this.xDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.yDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.xDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxWidthChanged(event) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n }\n else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (event.index === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n};\nBarHorizontalComponent.ɵfac = function BarHorizontalComponent_Factory(t) { return ɵBarHorizontalComponent_BaseFactory(t || BarHorizontalComponent); };\nBarHorizontalComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarHorizontalComponent, selectors: [[\"ngx-charts-bar-horizontal\"]], contentQueries: function BarHorizontalComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMax: \"xScaleMax\", xScaleMin: \"xScaleMin\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 25, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-series-horizontal\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"activeEntries\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\"]], template: function BarHorizontalComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function BarHorizontalComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function BarHorizontalComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, true); })(\"legendLabelDeactivate\", function BarHorizontalComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, true); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, BarHorizontalComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarHorizontalComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementStart(4, \"g\", 4);\n ɵngcc0.ɵɵlistener(\"select\", function BarHorizontalComponent_Template__svg_g_select_4_listener($event) { return ctx.onClick($event); })(\"activate\", function BarHorizontalComponent_Template__svg_g_activate_4_listener($event) { return ctx.onActivate($event); })(\"deactivate\", function BarHorizontalComponent_Template__svg_g_deactivate_4_listener($event) { return ctx.onDeactivate($event); })(\"dataLabelWidthChanged\", function BarHorizontalComponent_Template__svg_g_dataLabelWidthChanged_4_listener($event) { return ctx.onDataLabelMaxWidthChanged($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(22, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx.xScale)(\"yScale\", ctx.yScale)(\"colors\", ctx.colors)(\"series\", ctx.results)(\"dims\", ctx.dims)(\"gradient\", ctx.gradient)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"activeEntries\", ctx.activeEntries)(\"roundEdges\", ctx.roundEdges)(\"animations\", ctx.animations)(\"showDataLabel\", ctx.showDataLabel)(\"dataLabelFormatting\", ctx.dataLabelFormatting)(\"noBarWhenZero\", ctx.noBarWhenZero);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, SeriesHorizontal,\n XAxisComponent,\n YAxisComponent]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"barPadding\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"roundEdges\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"xScaleMin\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n Input()\n], BarHorizontalComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n Output()\n], BarHorizontalComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], BarHorizontalComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], BarHorizontalComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarHorizontal2DComponent = class BarHorizontal2DComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.groupPadding = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valuesDomain = this.getValueDomain();\n this.groupScale = this.getGroupScale();\n this.innerScale = this.getInnerScale();\n this.valueScale = this.getValueScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n return scaleBand()\n .rangeRound([0, this.dims.height])\n .paddingInner(spacing)\n .paddingOuter(spacing / 2)\n .domain(this.groupDomain);\n }\n getInnerScale() {\n const height = this.groupScale.bandwidth();\n const spacing = this.innerDomain.length / (height / this.barPadding + 1);\n return scaleBand()\n .rangeRound([0, height])\n .paddingInner(spacing)\n .domain(this.innerDomain);\n }\n getValueScale() {\n const scale = scaleLinear()\n .range([0, this.dims.width])\n .domain(this.valuesDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n const min = Math.min(0, ...domain);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(0, ...domain);\n return [min, max];\n }\n groupTransform(group) {\n return `translate(0, ${this.groupScale(group.label)})`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.innerDomain;\n }\n else {\n domain = this.valuesDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valuesDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxWidthChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n }\n else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n};\nBarHorizontal2DComponent.ɵfac = function BarHorizontal2DComponent_Factory(t) { return ɵBarHorizontal2DComponent_BaseFactory(t || BarHorizontal2DComponent); };\nBarHorizontal2DComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarHorizontal2DComponent, selectors: [[\"ngx-charts-bar-horizontal-2d\"]], contentQueries: function BarHorizontal2DComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", groupPadding: \"groupPadding\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMax: \"xScaleMax\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 6, vars: 17, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-grid-panel-series\", \"\", \"orient\", \"horizontal\", 3, \"xScale\", \"yScale\", \"data\", \"dims\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-series-horizontal\", \"\", 3, \"xScale\", \"activeEntries\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"seriesName\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"]], template: function BarHorizontal2DComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarHorizontal2DComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarHorizontal2DComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarHorizontal2DComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵelement(2, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarHorizontal2DComponent__svg_g_3_Template, 1, 10, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, BarHorizontal2DComponent__svg_g_4_Template, 1, 9, \"g\", 4);\n ɵngcc0.ɵɵtemplate(5, BarHorizontal2DComponent__svg_g_5_Template, 2, 17, \"g\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(14, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx.valueScale)(\"yScale\", ctx.groupScale)(\"data\", ctx.results)(\"dims\", ctx.dims);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent,\n GridPanelSeriesComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent,\n YAxisComponent,\n SeriesHorizontal]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"groupPadding\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"barPadding\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"roundEdges\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n Input()\n], BarHorizontal2DComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n Output()\n], BarHorizontal2DComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], BarHorizontal2DComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], BarHorizontal2DComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarHorizontalNormalizedComponent = class BarHorizontalNormalizedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n return [0, 100];\n }\n getYScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n return scaleBand()\n .rangeRound([0, this.dims.height])\n .paddingInner(spacing)\n .domain(this.groupDomain);\n }\n getXScale() {\n const scale = scaleLinear()\n .range([0, this.dims.width])\n .domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n groupTransform(group) {\n return `translate(0, ${this.yScale(group.name)})`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n};\nBarHorizontalNormalizedComponent.ɵfac = function BarHorizontalNormalizedComponent_Factory(t) { return ɵBarHorizontalNormalizedComponent_BaseFactory(t || BarHorizontalNormalizedComponent); };\nBarHorizontalNormalizedComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarHorizontalNormalizedComponent, selectors: [[\"ngx-charts-bar-horizontal-normalized\"]], contentQueries: function BarHorizontalNormalizedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-series-horizontal\", \"\", \"type\", \"normalized\", 3, \"xScale\", \"yScale\", \"activeEntries\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"seriesName\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\"]], template: function BarHorizontalNormalizedComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarHorizontalNormalizedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarHorizontalNormalizedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarHorizontalNormalizedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, BarHorizontalNormalizedComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarHorizontalNormalizedComponent__svg_g_3_Template, 1, 8, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, BarHorizontalNormalizedComponent__svg_g_4_Template, 2, 14, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent,\n YAxisComponent,\n SeriesHorizontal]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"barPadding\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], BarHorizontalNormalizedComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n Output()\n], BarHorizontalNormalizedComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], BarHorizontalNormalizedComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], BarHorizontalNormalizedComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarHorizontalStackedComponent = class BarHorizontalStackedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n let smallest = 0;\n let biggest = 0;\n for (const group of this.results) {\n let smallestSum = 0;\n let biggestSum = 0;\n for (const d of group.series) {\n if (d.value < 0) {\n smallestSum += d.value;\n }\n else {\n biggestSum += d.value;\n }\n smallest = d.value < smallest ? d.value : smallest;\n biggest = d.value > biggest ? d.value : biggest;\n }\n domain.push(smallestSum);\n domain.push(biggestSum);\n }\n domain.push(smallest);\n domain.push(biggest);\n const min = Math.min(0, ...domain);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(...domain);\n return [min, max];\n }\n getYScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n return scaleBand()\n .rangeRound([0, this.dims.height])\n .paddingInner(spacing)\n .domain(this.groupDomain);\n }\n getXScale() {\n const scale = scaleLinear()\n .range([0, this.dims.width])\n .domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n groupTransform(group) {\n return `translate(0, ${this.yScale(group.name)})`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxWidthChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n }\n else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n};\nBarHorizontalStackedComponent.ɵfac = function BarHorizontalStackedComponent_Factory(t) { return ɵBarHorizontalStackedComponent_BaseFactory(t || BarHorizontalStackedComponent); };\nBarHorizontalStackedComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarHorizontalStackedComponent, selectors: [[\"ngx-charts-bar-horizontal-stacked\"]], contentQueries: function BarHorizontalStackedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMax: \"xScaleMax\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-series-horizontal\", \"\", \"type\", \"stacked\", 3, \"xScale\", \"yScale\", \"colors\", \"series\", \"activeEntries\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"seriesName\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"]], template: function BarHorizontalStackedComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarHorizontalStackedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarHorizontalStackedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarHorizontalStackedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, BarHorizontalStackedComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarHorizontalStackedComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, BarHorizontalStackedComponent__svg_g_4_Template, 2, 16, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent,\n YAxisComponent,\n SeriesHorizontal]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"barPadding\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n Input()\n], BarHorizontalStackedComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n Output()\n], BarHorizontalStackedComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], BarHorizontalStackedComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], BarHorizontalStackedComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarVerticalComponent = class BarVerticalComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n getXScale() {\n this.xDomain = this.getXDomain();\n const spacing = this.xDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand()\n .range([0, this.dims.width])\n .paddingInner(spacing)\n .domain(this.xDomain);\n }\n getYScale() {\n this.yDomain = this.getYDomain();\n const scale = scaleLinear()\n .range([this.dims.height, 0])\n .domain(this.yDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getXDomain() {\n return this.results.map(d => d.label);\n }\n getYDomain() {\n const values = this.results.map(d => d.value);\n let min = this.yScaleMin ? Math.min(this.yScaleMin, ...values) : Math.min(0, ...values);\n if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n min = Math.min(min, ...this.yAxisTicks);\n }\n let max = this.yScaleMax ? Math.max(this.yScaleMax, ...values) : Math.max(0, ...values);\n if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n max = Math.max(max, ...this.yAxisTicks);\n }\n return [min, max];\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.xDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.xDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxHeightChanged(event) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n }\n else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (event.index === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n};\nBarVerticalComponent.ɵfac = function BarVerticalComponent_Factory(t) { return ɵBarVerticalComponent_BaseFactory(t || BarVerticalComponent); };\nBarVerticalComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarVerticalComponent, selectors: [[\"ngx-charts-bar-vertical\"]], contentQueries: function BarVerticalComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", yScaleMax: \"yScaleMax\", yScaleMin: \"yScaleMin\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 25, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-series-vertical\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"showDataLabel\", \"dataLabelFormatting\", \"activeEntries\", \"roundEdges\", \"animations\", \"noBarWhenZero\", \"activate\", \"deactivate\", \"select\", \"dataLabelHeightChanged\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"]], template: function BarVerticalComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function BarVerticalComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function BarVerticalComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, true); })(\"legendLabelDeactivate\", function BarVerticalComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, true); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, BarVerticalComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarVerticalComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementStart(4, \"g\", 4);\n ɵngcc0.ɵɵlistener(\"activate\", function BarVerticalComponent_Template__svg_g_activate_4_listener($event) { return ctx.onActivate($event); })(\"deactivate\", function BarVerticalComponent_Template__svg_g_deactivate_4_listener($event) { return ctx.onDeactivate($event); })(\"select\", function BarVerticalComponent_Template__svg_g_select_4_listener($event) { return ctx.onClick($event); })(\"dataLabelHeightChanged\", function BarVerticalComponent_Template__svg_g_dataLabelHeightChanged_4_listener($event) { return ctx.onDataLabelMaxHeightChanged($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(22, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx.xScale)(\"yScale\", ctx.yScale)(\"colors\", ctx.colors)(\"series\", ctx.results)(\"dims\", ctx.dims)(\"gradient\", ctx.gradient)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"showDataLabel\", ctx.showDataLabel)(\"dataLabelFormatting\", ctx.dataLabelFormatting)(\"activeEntries\", ctx.activeEntries)(\"roundEdges\", ctx.roundEdges)(\"animations\", ctx.animations)(\"noBarWhenZero\", ctx.noBarWhenZero);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, SeriesVerticalComponent,\n XAxisComponent,\n YAxisComponent]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"barPadding\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"roundEdges\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"yScaleMin\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n Input()\n], BarVerticalComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n Output()\n], BarVerticalComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], BarVerticalComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], BarVerticalComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarVertical2DComponent = class BarVertical2DComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.scaleType = 'ordinal';\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.groupPadding = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valuesDomain = this.getValueDomain();\n this.groupScale = this.getGroupScale();\n this.innerScale = this.getInnerScale();\n this.valueScale = this.getValueScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n onDataLabelMaxHeightChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n }\n else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n getGroupScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n return scaleBand()\n .rangeRound([0, this.dims.width])\n .paddingInner(spacing)\n .paddingOuter(spacing / 2)\n .domain(this.groupDomain);\n }\n getInnerScale() {\n const width = this.groupScale.bandwidth();\n const spacing = this.innerDomain.length / (width / this.barPadding + 1);\n return scaleBand()\n .rangeRound([0, width])\n .paddingInner(spacing)\n .domain(this.innerDomain);\n }\n getValueScale() {\n const scale = scaleLinear()\n .range([this.dims.height, 0])\n .domain(this.valuesDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n const min = Math.min(0, ...domain);\n const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(0, ...domain);\n return [min, max];\n }\n groupTransform(group) {\n return `translate(${this.groupScale(group.label)}, 0)`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.innerDomain;\n }\n else {\n domain = this.valuesDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valuesDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n};\nBarVertical2DComponent.ɵfac = function BarVertical2DComponent_Factory(t) { return ɵBarVertical2DComponent_BaseFactory(t || BarVertical2DComponent); };\nBarVertical2DComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarVertical2DComponent, selectors: [[\"ngx-charts-bar-vertical-2d\"]], contentQueries: function BarVertical2DComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", scaleType: \"scaleType\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", groupPadding: \"groupPadding\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", yScaleMax: \"yScaleMax\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 6, vars: 17, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-grid-panel-series\", \"\", \"orient\", \"vertical\", 3, \"xScale\", \"yScale\", \"data\", \"dims\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-series-vertical\", \"\", 3, \"activeEntries\", \"xScale\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"showDataLabel\", \"dataLabelFormatting\", \"seriesName\", \"roundEdges\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-series-vertical\", \"\", 3, \"activeEntries\", \"xScale\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"showDataLabel\", \"dataLabelFormatting\", \"seriesName\", \"roundEdges\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"]], template: function BarVertical2DComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarVertical2DComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarVertical2DComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarVertical2DComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵelement(2, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarVertical2DComponent__svg_g_3_Template, 1, 10, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, BarVertical2DComponent__svg_g_4_Template, 1, 9, \"g\", 4);\n ɵngcc0.ɵɵtemplate(5, BarVertical2DComponent__svg_g_5_Template, 1, 17, \"g\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(14, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx.groupScale)(\"yScale\", ctx.valueScale)(\"data\", ctx.results)(\"dims\", ctx.dims);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent,\n GridPanelSeriesComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent,\n YAxisComponent,\n SeriesVerticalComponent]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"scaleType\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"groupPadding\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"barPadding\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"roundEdges\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n Input()\n], BarVertical2DComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n Output()\n], BarVertical2DComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], BarVertical2DComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], BarVertical2DComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarVerticalNormalizedComponent = class BarVerticalNormalizedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n return [0, 100];\n }\n getXScale() {\n const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand()\n .rangeRound([0, this.dims.width])\n .paddingInner(spacing)\n .domain(this.groupDomain);\n }\n getYScale() {\n const scale = scaleLinear()\n .range([this.dims.height, 0])\n .domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n groupTransform(group) {\n return `translate(${this.xScale(group.name)}, 0)`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n};\nBarVerticalNormalizedComponent.ɵfac = function BarVerticalNormalizedComponent_Factory(t) { return ɵBarVerticalNormalizedComponent_BaseFactory(t || BarVerticalNormalizedComponent); };\nBarVerticalNormalizedComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarVerticalNormalizedComponent, selectors: [[\"ngx-charts-bar-vertical-normalized\"]], contentQueries: function BarVerticalNormalizedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-series-vertical\", \"\", \"type\", \"normalized\", 3, \"xScale\", \"yScale\", \"activeEntries\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"seriesName\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\"]], template: function BarVerticalNormalizedComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarVerticalNormalizedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarVerticalNormalizedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarVerticalNormalizedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, BarVerticalNormalizedComponent__svg_g_2_Template, 1, 9, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarVerticalNormalizedComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, BarVerticalNormalizedComponent__svg_g_4_Template, 2, 14, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent,\n YAxisComponent,\n SeriesVerticalComponent]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"barPadding\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], BarVerticalNormalizedComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n Output()\n], BarVerticalNormalizedComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], BarVerticalNormalizedComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], BarVerticalNormalizedComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet BarVerticalStackedComponent = class BarVerticalStackedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n let smallest = 0;\n let biggest = 0;\n for (const group of this.results) {\n let smallestSum = 0;\n let biggestSum = 0;\n for (const d of group.series) {\n if (d.value < 0) {\n smallestSum += d.value;\n }\n else {\n biggestSum += d.value;\n }\n smallest = d.value < smallest ? d.value : smallest;\n biggest = d.value > biggest ? d.value : biggest;\n }\n domain.push(smallestSum);\n domain.push(biggestSum);\n }\n domain.push(smallest);\n domain.push(biggest);\n const min = Math.min(0, ...domain);\n const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(...domain);\n return [min, max];\n }\n getXScale() {\n const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand()\n .rangeRound([0, this.dims.width])\n .paddingInner(spacing)\n .domain(this.groupDomain);\n }\n getYScale() {\n const scale = scaleLinear()\n .range([this.dims.height, 0])\n .domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n onDataLabelMaxHeightChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n }\n else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n groupTransform(group) {\n return `translate(${this.xScale(group.name) || 0}, 0)`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n};\nBarVerticalStackedComponent.ɵfac = function BarVerticalStackedComponent_Factory(t) { return ɵBarVerticalStackedComponent_BaseFactory(t || BarVerticalStackedComponent); };\nBarVerticalStackedComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarVerticalStackedComponent, selectors: [[\"ngx-charts-bar-vertical-stacked\"]], contentQueries: function BarVerticalStackedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", yScaleMax: \"yScaleMax\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-series-vertical\", \"\", \"type\", \"stacked\", 3, \"xScale\", \"yScale\", \"activeEntries\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"showDataLabel\", \"dataLabelFormatting\", \"seriesName\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"]], template: function BarVerticalStackedComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarVerticalStackedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarVerticalStackedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarVerticalStackedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, BarVerticalStackedComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarVerticalStackedComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, BarVerticalStackedComponent__svg_g_4_Template, 2, 16, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent,\n YAxisComponent,\n SeriesVerticalComponent]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"barPadding\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n Input()\n], BarVerticalStackedComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n Output()\n], BarVerticalStackedComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], BarVerticalStackedComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], BarVerticalStackedComponent.prototype, \"tooltipTemplate\", void 0);\n\nvar D0Types;\n(function (D0Types) {\n D0Types[\"positive\"] = \"positive\";\n D0Types[\"negative\"] = \"negative\";\n})(D0Types || (D0Types = {}));\nlet SeriesVerticalComponent = class SeriesVerticalComponent {\n constructor() {\n this.type = 'standard';\n this.tooltipDisabled = false;\n this.animations = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dataLabelHeightChanged = new EventEmitter();\n this.barsForDataLabels = [];\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateTooltipSettings();\n let width;\n if (this.series.length) {\n width = this.xScale.bandwidth();\n }\n width = Math.round(width);\n const yScaleMin = Math.max(this.yScale.domain()[0], 0);\n const d0 = {\n [D0Types.positive]: 0,\n [D0Types.negative]: 0\n };\n let d0Type = D0Types.positive;\n let total;\n if (this.type === 'normalized') {\n total = this.series.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n this.bars = this.series.map((d, index) => {\n let value = d.value;\n const label = this.getLabel(d);\n const formattedLabel = formatLabel(label);\n const roundEdges = this.roundEdges;\n d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n const bar = {\n value,\n label,\n roundEdges,\n data: d,\n width,\n formattedLabel,\n height: 0,\n x: 0,\n y: 0\n };\n if (this.type === 'standard') {\n bar.height = Math.abs(this.yScale(value) - this.yScale(yScaleMin));\n bar.x = this.xScale(label);\n if (value < 0) {\n bar.y = this.yScale(0);\n }\n else {\n bar.y = this.yScale(value);\n }\n }\n else if (this.type === 'stacked') {\n const offset0 = d0[d0Type];\n const offset1 = offset0 + value;\n d0[d0Type] += value;\n bar.height = this.yScale(offset0) - this.yScale(offset1);\n bar.x = 0;\n bar.y = this.yScale(offset1);\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n }\n else if (this.type === 'normalized') {\n let offset0 = d0[d0Type];\n let offset1 = offset0 + value;\n d0[d0Type] += value;\n if (total > 0) {\n offset0 = (offset0 * 100) / total;\n offset1 = (offset1 * 100) / total;\n }\n else {\n offset0 = 0;\n offset1 = 0;\n }\n bar.height = this.yScale(offset0) - this.yScale(offset1);\n bar.x = 0;\n bar.y = this.yScale(offset1);\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n value = (offset1 - offset0).toFixed(2) + '%';\n }\n if (this.colors.scaleType === 'ordinal') {\n bar.color = this.colors.getColor(label);\n }\n else {\n if (this.type === 'standard') {\n bar.color = this.colors.getColor(value);\n bar.gradientStops = this.colors.getLinearGradientStops(value);\n }\n else {\n bar.color = this.colors.getColor(bar.offset1);\n bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n }\n }\n let tooltipLabel = formattedLabel;\n bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n if (this.seriesName) {\n tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n bar.data.series = this.seriesName;\n bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n }\n bar.tooltipText = this.tooltipDisabled\n ? undefined\n : `\n ${escapeLabel(tooltipLabel)}\n ${value.toLocaleString()}\n `;\n return bar;\n });\n this.updateDataLabels();\n }\n updateDataLabels() {\n if (this.type === 'stacked') {\n this.barsForDataLabels = [];\n const section = {};\n section.series = this.seriesName;\n const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n section.total = totalPositive + totalNegative;\n section.x = 0;\n section.y = 0;\n if (section.total > 0) {\n section.height = this.yScale(totalPositive);\n }\n else {\n section.height = this.yScale(totalNegative);\n }\n section.width = this.xScale.bandwidth();\n this.barsForDataLabels.push(section);\n }\n else {\n this.barsForDataLabels = this.series.map(d => {\n const section = {};\n section.series = this.seriesName ? this.seriesName : d.label;\n section.total = d.value;\n section.x = this.xScale(d.label);\n section.y = this.yScale(0);\n section.height = this.yScale(section.total) - this.yScale(0);\n section.width = this.xScale.bandwidth();\n return section;\n });\n }\n }\n updateTooltipSettings() {\n this.tooltipPlacement = this.tooltipDisabled ? undefined : 'top';\n this.tooltipType = this.tooltipDisabled ? undefined : 'tooltip';\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n onClick(data) {\n this.select.emit(data);\n }\n getLabel(dataItem) {\n if (dataItem.label) {\n return dataItem.label;\n }\n return dataItem.name;\n }\n trackBy(index, bar) {\n return bar.label;\n }\n trackDataLabelBy(index, barLabel) {\n return index + '#' + barLabel.series + '#' + barLabel.total;\n }\n};\nSeriesVerticalComponent.ɵfac = function SeriesVerticalComponent_Factory(t) { return new (t || SeriesVerticalComponent)(); };\nSeriesVerticalComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: SeriesVerticalComponent, selectors: [[\"g\", \"ngx-charts-series-vertical\", \"\"]], inputs: { type: \"type\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", dims: \"dims\", series: \"series\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", gradient: \"gradient\", activeEntries: \"activeEntries\", seriesName: \"seriesName\", tooltipTemplate: \"tooltipTemplate\", roundEdges: \"roundEdges\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dataLabelHeightChanged: \"dataLabelHeightChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c26, decls: 2, vars: 3, consts: [[\"ngx-charts-bar\", \"\", \"ngx-tooltip\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"stops\", \"data\", \"orientation\", \"roundEdges\", \"gradient\", \"ariaLabel\", \"isActive\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"noBarWhenZero\", \"animations\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [4, \"ngIf\"], [\"ngx-charts-bar\", \"\", \"ngx-tooltip\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"stops\", \"data\", \"orientation\", \"roundEdges\", \"gradient\", \"ariaLabel\", \"isActive\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"noBarWhenZero\", \"animations\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-bar-label\", \"\", 3, \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"value\", \"valueFormatting\", \"orientation\", \"dimensionsChanged\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-bar-label\", \"\", 3, \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"value\", \"valueFormatting\", \"orientation\", \"dimensionsChanged\"]], template: function SeriesVerticalComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, SeriesVerticalComponent__svg_g_0_Template, 1, 22, \"g\", 0);\n ɵngcc0.ɵɵtemplate(1, SeriesVerticalComponent__svg_g_1_Template, 2, 2, \"g\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.bars)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showDataLabel);\n } }, directives: function () { return [ɵngcc1.NgForOf, ɵngcc1.NgIf, BarComponent,\n TooltipDirective,\n BarLabelComponent]; }, encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"dims\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"type\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"series\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"xScale\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"yScale\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"seriesName\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"roundEdges\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"animations\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"showDataLabel\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n Input()\n], SeriesVerticalComponent.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n Output()\n], SeriesVerticalComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], SeriesVerticalComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], SeriesVerticalComponent.prototype, \"deactivate\", void 0);\n__decorate([\n Output()\n], SeriesVerticalComponent.prototype, \"dataLabelHeightChanged\", void 0);\n\nlet SeriesHorizontal = class SeriesHorizontal {\n constructor() {\n this.barsForDataLabels = [];\n this.type = 'standard';\n this.tooltipDisabled = false;\n this.animations = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dataLabelWidthChanged = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateTooltipSettings();\n const d0 = {\n [D0Types.positive]: 0,\n [D0Types.negative]: 0\n };\n let d0Type;\n d0Type = D0Types.positive;\n let total;\n if (this.type === 'normalized') {\n total = this.series.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n const xScaleMin = Math.max(this.xScale.domain()[0], 0);\n this.bars = this.series.map((d, index) => {\n let value = d.value;\n const label = this.getLabel(d);\n const formattedLabel = formatLabel(label);\n const roundEdges = this.roundEdges;\n d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n const bar = {\n value,\n label,\n roundEdges,\n data: d,\n formattedLabel\n };\n bar.height = this.yScale.bandwidth();\n if (this.type === 'standard') {\n bar.width = Math.abs(this.xScale(value) - this.xScale(xScaleMin));\n if (value < 0) {\n bar.x = this.xScale(value);\n }\n else {\n bar.x = this.xScale(xScaleMin);\n }\n bar.y = this.yScale(label);\n }\n else if (this.type === 'stacked') {\n const offset0 = d0[d0Type];\n const offset1 = offset0 + value;\n d0[d0Type] += value;\n bar.width = this.xScale(offset1) - this.xScale(offset0);\n bar.x = this.xScale(offset0);\n bar.y = 0;\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n }\n else if (this.type === 'normalized') {\n let offset0 = d0[d0Type];\n let offset1 = offset0 + value;\n d0[d0Type] += value;\n if (total > 0) {\n offset0 = (offset0 * 100) / total;\n offset1 = (offset1 * 100) / total;\n }\n else {\n offset0 = 0;\n offset1 = 0;\n }\n bar.width = this.xScale(offset1) - this.xScale(offset0);\n bar.x = this.xScale(offset0);\n bar.y = 0;\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n value = (offset1 - offset0).toFixed(2) + '%';\n }\n if (this.colors.scaleType === 'ordinal') {\n bar.color = this.colors.getColor(label);\n }\n else {\n if (this.type === 'standard') {\n bar.color = this.colors.getColor(value);\n bar.gradientStops = this.colors.getLinearGradientStops(value);\n }\n else {\n bar.color = this.colors.getColor(bar.offset1);\n bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n }\n }\n let tooltipLabel = formattedLabel;\n bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n if (this.seriesName) {\n tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n bar.data.series = this.seriesName;\n bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n }\n bar.tooltipText = this.tooltipDisabled\n ? undefined\n : `\n ${escapeLabel(tooltipLabel)}\n ${value.toLocaleString()}\n `;\n return bar;\n });\n this.updateDataLabels();\n }\n updateDataLabels() {\n if (this.type === 'stacked') {\n this.barsForDataLabels = [];\n const section = {};\n section.series = this.seriesName;\n const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n section.total = totalPositive + totalNegative;\n section.x = 0;\n section.y = 0;\n // if total is positive then we show it on the right, otherwise on the left\n if (section.total > 0) {\n section.width = this.xScale(totalPositive);\n }\n else {\n section.width = this.xScale(totalNegative);\n }\n section.height = this.yScale.bandwidth();\n this.barsForDataLabels.push(section);\n }\n else {\n this.barsForDataLabels = this.series.map(d => {\n const section = {};\n section.series = this.seriesName ? this.seriesName : d.label;\n section.total = d.value;\n section.x = this.xScale(0);\n section.y = this.yScale(d.label);\n section.width = this.xScale(section.total) - this.xScale(0);\n section.height = this.yScale.bandwidth();\n return section;\n });\n }\n }\n updateTooltipSettings() {\n this.tooltipPlacement = this.tooltipDisabled ? undefined : 'top';\n this.tooltipType = this.tooltipDisabled ? undefined : 'tooltip';\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n getLabel(dataItem) {\n if (dataItem.label) {\n return dataItem.label;\n }\n return dataItem.name;\n }\n trackBy(index, bar) {\n return bar.label;\n }\n trackDataLabelBy(index, barLabel) {\n return index + '#' + barLabel.series + '#' + barLabel.total;\n }\n click(data) {\n this.select.emit(data);\n }\n};\nSeriesHorizontal.ɵfac = function SeriesHorizontal_Factory(t) { return new (t || SeriesHorizontal)(); };\nSeriesHorizontal.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: SeriesHorizontal, selectors: [[\"g\", \"ngx-charts-series-horizontal\", \"\"]], inputs: { type: \"type\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", dims: \"dims\", series: \"series\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", gradient: \"gradient\", activeEntries: \"activeEntries\", seriesName: \"seriesName\", tooltipTemplate: \"tooltipTemplate\", roundEdges: \"roundEdges\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dataLabelWidthChanged: \"dataLabelWidthChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c27, decls: 2, vars: 3, consts: [[\"ngx-charts-bar\", \"\", \"ngx-tooltip\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"stops\", \"data\", \"orientation\", \"roundEdges\", \"gradient\", \"isActive\", \"ariaLabel\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [4, \"ngIf\"], [\"ngx-charts-bar\", \"\", \"ngx-tooltip\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"stops\", \"data\", \"orientation\", \"roundEdges\", \"gradient\", \"isActive\", \"ariaLabel\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-bar-label\", \"\", 3, \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"value\", \"valueFormatting\", \"orientation\", \"dimensionsChanged\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-bar-label\", \"\", 3, \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"value\", \"valueFormatting\", \"orientation\", \"dimensionsChanged\"]], template: function SeriesHorizontal_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, SeriesHorizontal__svg_g_0_Template, 1, 21, \"g\", 0);\n ɵngcc0.ɵɵtemplate(1, SeriesHorizontal__svg_g_1_Template, 2, 2, \"g\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.bars)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showDataLabel);\n } }, directives: function () { return [ɵngcc1.NgForOf, ɵngcc1.NgIf, BarComponent,\n TooltipDirective,\n BarLabelComponent]; }, encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"dims\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"type\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"series\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"xScale\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"yScale\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"seriesName\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"roundEdges\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"animations\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"showDataLabel\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"dataLabelFormatting\", void 0);\n__decorate([\n Input()\n], SeriesHorizontal.prototype, \"noBarWhenZero\", void 0);\n__decorate([\n Output()\n], SeriesHorizontal.prototype, \"select\", void 0);\n__decorate([\n Output()\n], SeriesHorizontal.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], SeriesHorizontal.prototype, \"deactivate\", void 0);\n__decorate([\n Output()\n], SeriesHorizontal.prototype, \"dataLabelWidthChanged\", void 0);\n\nlet BarLabelComponent = class BarLabelComponent {\n constructor(element) {\n this.dimensionsChanged = new EventEmitter();\n this.horizontalPadding = 2;\n this.verticalPadding = 5;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n getSize() {\n const h = this.element.getBoundingClientRect().height;\n const w = this.element.getBoundingClientRect().width;\n return { height: h, width: w, negative: this.value < 0 };\n }\n ngAfterViewInit() {\n this.dimensionsChanged.emit(this.getSize());\n }\n update() {\n if (this.valueFormatting) {\n this.formatedValue = this.valueFormatting(this.value);\n }\n else {\n this.formatedValue = formatLabel(this.value);\n }\n if (this.orientation === 'horizontal') {\n this.x = this.barX + this.barWidth;\n // if the value is negative then it's on the left of the x0.\n // we need to put the data label in front of the bar\n if (this.value < 0) {\n this.x = this.x - this.horizontalPadding;\n this.textAnchor = 'end';\n }\n else {\n this.x = this.x + this.horizontalPadding;\n this.textAnchor = 'start';\n }\n this.y = this.barY + this.barHeight / 2;\n }\n else {\n // orientation must be \"vertical\"\n this.x = this.barX + this.barWidth / 2;\n this.y = this.barY + this.barHeight;\n if (this.value < 0) {\n this.y = this.y + this.verticalPadding;\n this.textAnchor = 'end';\n }\n else {\n this.y = this.y - this.verticalPadding;\n this.textAnchor = 'start';\n }\n this.transform = `rotate(-45, ${this.x} , ${this.y})`;\n }\n }\n};\nBarLabelComponent.ɵfac = function BarLabelComponent_Factory(t) { return new (t || BarLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nBarLabelComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BarLabelComponent, selectors: [[\"g\", \"ngx-charts-bar-label\", \"\"]], inputs: { value: \"value\", valueFormatting: \"valueFormatting\", barX: \"barX\", barY: \"barY\", barWidth: \"barWidth\", barHeight: \"barHeight\", orientation: \"orientation\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c28, decls: 2, vars: 5, consts: [[\"alignment-baseline\", \"middle\", 1, \"textDataLabel\"]], template: function BarLabelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"text\", 0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"text-anchor\", ctx.textAnchor)(\"transform\", ctx.transform)(\"x\", ctx.x)(\"y\", ctx.y);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.formatedValue, \" \");\n } }, styles: [\".textDataLabel[_ngcontent-%COMP%]{font-size:11px}\"], changeDetection: 0 });\nBarLabelComponent.ctorParameters = () => [\n { type: ElementRef }\n];\n__decorate([\n Input()\n], BarLabelComponent.prototype, \"value\", void 0);\n__decorate([\n Input()\n], BarLabelComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n Input()\n], BarLabelComponent.prototype, \"barX\", void 0);\n__decorate([\n Input()\n], BarLabelComponent.prototype, \"barY\", void 0);\n__decorate([\n Input()\n], BarLabelComponent.prototype, \"barWidth\", void 0);\n__decorate([\n Input()\n], BarLabelComponent.prototype, \"barHeight\", void 0);\n__decorate([\n Input()\n], BarLabelComponent.prototype, \"orientation\", void 0);\n__decorate([\n Output()\n], BarLabelComponent.prototype, \"dimensionsChanged\", void 0);\n\nlet BarChartModule = class BarChartModule {\n};\nBarChartModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: BarChartModule });\nBarChartModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function BarChartModule_Factory(t) { return new (t || BarChartModule)(); }, imports: [[ChartCommonModule]] });\n\nfunction getDomain(values, scaleType, autoScale, minVal, maxVal) {\n let domain = [];\n if (scaleType === 'linear') {\n values = values.map(v => Number(v));\n if (!autoScale) {\n values.push(0);\n }\n }\n if (scaleType === 'time' || scaleType === 'linear') {\n const min = minVal ? minVal : Math.min(...values);\n const max = maxVal ? maxVal : Math.max(...values);\n domain = [min, max];\n }\n else {\n domain = values;\n }\n return domain;\n}\nfunction getScale(domain, range, scaleType, roundDomains) {\n let scale;\n if (scaleType === 'time') {\n scale = scaleTime()\n .range(range)\n .domain(domain);\n }\n else if (scaleType === 'linear') {\n scale = scaleLinear()\n .range(range)\n .domain(domain);\n if (roundDomains) {\n scale = scale.nice();\n }\n }\n else if (scaleType === 'ordinal') {\n scale = scalePoint()\n .range([range[0], range[1]])\n .domain(domain);\n }\n return scale;\n}\n\nlet BubbleChartComponent = class BubbleChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.showGridLines = true;\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.xAxis = true;\n this.yAxis = true;\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.maxRadius = 10;\n this.minRadius = 3;\n this.schemeType = 'ordinal';\n this.tooltipDisabled = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.scaleType = 'linear';\n this.margin = [10, 20, 10, 20];\n this.bubblePadding = [0, 0, 0, 0];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.activeEntries = [];\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.seriesDomain = this.results.map(d => d.name);\n this.rDomain = this.getRDomain();\n this.xDomain = this.getXDomain();\n this.yDomain = this.getYDomain();\n this.transform = `translate(${this.dims.xOffset},${this.margin[0]})`;\n const colorDomain = this.schemeType === 'ordinal' ? this.seriesDomain : this.rDomain;\n this.colors = new ColorHelper(this.scheme, this.schemeType, colorDomain, this.customColors);\n this.data = this.results;\n this.minRadius = Math.max(this.minRadius, 1);\n this.maxRadius = Math.max(this.maxRadius, 1);\n this.rScale = this.getRScale(this.rDomain, [this.minRadius, this.maxRadius]);\n this.bubblePadding = [0, 0, 0, 0];\n this.setScales();\n this.bubblePadding = this.getBubblePadding();\n this.setScales();\n this.legendOptions = this.getLegendOptions();\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n hideCircles() {\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n getBubblePadding() {\n let yMin = 0;\n let xMin = 0;\n let yMax = this.dims.height;\n let xMax = this.dims.width;\n for (const s of this.data) {\n for (const d of s.series) {\n const r = this.rScale(d.r);\n const cx = this.xScaleType === 'linear' ? this.xScale(Number(d.x)) : this.xScale(d.x);\n const cy = this.yScaleType === 'linear' ? this.yScale(Number(d.y)) : this.yScale(d.y);\n xMin = Math.max(r - cx, xMin);\n yMin = Math.max(r - cy, yMin);\n yMax = Math.max(cy + r, yMax);\n xMax = Math.max(cx + r, xMax);\n }\n }\n xMax = Math.max(xMax - this.dims.width, 0);\n yMax = Math.max(yMax - this.dims.height, 0);\n return [yMin, xMax, yMax, xMin];\n }\n setScales() {\n let width = this.dims.width;\n if (this.xScaleMin === undefined && this.xScaleMax === undefined) {\n width = width - this.bubblePadding[1];\n }\n let height = this.dims.height;\n if (this.yScaleMin === undefined && this.yScaleMax === undefined) {\n height = height - this.bubblePadding[2];\n }\n this.xScale = this.getXScale(this.xDomain, width);\n this.yScale = this.getYScale(this.yDomain, height);\n }\n getYScale(domain, height) {\n return getScale(domain, [height, this.bubblePadding[0]], this.yScaleType, this.roundDomains);\n }\n getXScale(domain, width) {\n return getScale(domain, [this.bubblePadding[3], width], this.xScaleType, this.roundDomains);\n }\n getRScale(domain, range) {\n const scale = scaleLinear()\n .range(range)\n .domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n position: this.legendPosition,\n title: undefined\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.rDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n getXDomain() {\n const values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.x)) {\n values.push(d.x);\n }\n }\n }\n this.xScaleType = getScaleType(values);\n return getDomain(values, this.xScaleType, this.autoScale, this.xScaleMin, this.xScaleMax);\n }\n getYDomain() {\n const values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.y)) {\n values.push(d.y);\n }\n }\n }\n this.yScaleType = getScaleType(values);\n return getDomain(values, this.yScaleType, this.autoScale, this.yScaleMin, this.yScaleMax);\n }\n getRDomain() {\n let min = Infinity;\n let max = -Infinity;\n for (const results of this.results) {\n for (const d of results.series) {\n const value = Number(d.r) || 1;\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n return [min, max];\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n trackBy(index, item) {\n return item.name;\n }\n};\nBubbleChartComponent.ɵfac = function BubbleChartComponent_Factory(t) { return ɵBubbleChartComponent_BaseFactory(t || BubbleChartComponent); };\nBubbleChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BubbleChartComponent, selectors: [[\"ngx-charts-bubble-chart\"]], contentQueries: function BubbleChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, hostBindings: function BubbleChartComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseleave\", function BubbleChartComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n } }, inputs: { showGridLines: \"showGridLines\", legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", maxRadius: \"maxRadius\", minRadius: \"minRadius\", schemeType: \"schemeType\", tooltipDisabled: \"tooltipDisabled\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", autoScale: \"autoScale\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 10, vars: 20, consts: [[3, \"view\", \"showLegend\", \"activeEntries\", \"legendOptions\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"bubble-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"showGridLines\", \"dims\", \"xScale\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"showGridLines\", \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"x\", \"0\", \"y\", \"0\", 1, \"bubble-chart-area\", 2, \"fill\", \"rgb(255, 0, 0)\", \"opacity\", \"0\", \"cursor\", \"auto\", 3, \"mouseenter\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"showGridLines\", \"dims\", \"xScale\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"showGridLines\", \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-bubble-series\", \"\", 3, \"xScale\", \"yScale\", \"rScale\", \"xScaleType\", \"yScaleType\", \"xAxisLabel\", \"yAxisLabel\", \"colors\", \"data\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"]], template: function BubbleChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function BubbleChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function BubbleChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function BubbleChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"defs\");\n ɵngcc0.ɵɵelementStart(2, \"clipPath\");\n ɵngcc0.ɵɵelement(3, \"rect\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n ɵngcc0.ɵɵtemplate(5, BubbleChartComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(6, BubbleChartComponent__svg_g_6_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementStart(7, \"rect\", 4);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function BubbleChartComponent_Template__svg_rect_mouseenter_7_listener() { return ctx.deactivateAll(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(8, \"g\");\n ɵngcc0.ɵɵtemplate(9, BubbleChartComponent__svg_g_9_Template, 2, 13, \"g\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"activeEntries\", ctx.activeEntries)(\"legendOptions\", ctx.legendOptions)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width)(\"height\", ctx.dims.height);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.data)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent,\n YAxisComponent,\n BubbleSeriesComponent]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"maxRadius\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"minRadius\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"autoScale\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"xScaleMin\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"yScaleMin\", void 0);\n__decorate([\n Input()\n], BubbleChartComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n Output()\n], BubbleChartComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], BubbleChartComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], BubbleChartComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n HostListener('mouseleave')\n], BubbleChartComponent.prototype, \"hideCircles\", null);\n\nlet BubbleSeriesComponent = class BubbleSeriesComponent {\n constructor() {\n this.tooltipDisabled = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.circles = this.getCircles();\n }\n getCircles() {\n const seriesName = this.data.name;\n return this.data.series\n .map((d, i) => {\n if (typeof d.y !== 'undefined' && typeof d.x !== 'undefined') {\n const y = d.y;\n const x = d.x;\n const r = d.r;\n const radius = this.rScale(r || 1);\n const tooltipLabel = formatLabel(d.name);\n const cx = this.xScaleType === 'linear' ? this.xScale(Number(x)) : this.xScale(x);\n const cy = this.yScaleType === 'linear' ? this.yScale(Number(y)) : this.yScale(y);\n const color = this.colors.scaleType === 'linear' ? this.colors.getColor(r) : this.colors.getColor(seriesName);\n const isActive = !this.activeEntries.length ? true : this.isActive({ name: seriesName });\n const opacity = isActive ? 1 : 0.3;\n const data = Object.assign({}, d, {\n series: seriesName,\n name: d.name,\n value: d.y,\n x: d.x,\n radius: d.r\n });\n return {\n data,\n x,\n y,\n r,\n classNames: [`circle-data-${i}`],\n value: y,\n label: x,\n cx,\n cy,\n radius,\n tooltipLabel,\n color,\n opacity,\n seriesName,\n isActive,\n transform: `translate(${cx},${cy})`\n };\n }\n })\n .filter(circle => circle !== undefined);\n }\n getTooltipText(circle) {\n const hasRadius = typeof circle.r !== 'undefined';\n const hasTooltipLabel = circle.tooltipLabel && circle.tooltipLabel.length;\n const hasSeriesName = circle.seriesName && circle.seriesName.length;\n const radiusValue = hasRadius ? formatLabel(circle.r) : '';\n const xAxisLabel = this.xAxisLabel && this.xAxisLabel !== '' ? `${this.xAxisLabel}:` : '';\n const yAxisLabel = this.yAxisLabel && this.yAxisLabel !== '' ? `${this.yAxisLabel}:` : '';\n const x = formatLabel(circle.x);\n const y = formatLabel(circle.y);\n const name = hasSeriesName && hasTooltipLabel\n ? `${circle.seriesName} • ${circle.tooltipLabel}`\n : circle.seriesName + circle.tooltipLabel;\n const tooltipTitle = hasSeriesName || hasTooltipLabel ? `${escapeLabel(name)}` : '';\n return `\n ${tooltipTitle}\n \n ${escapeLabel(x)}
\n ${escapeLabel(y)}\n
\n \n ${escapeLabel(radiusValue)}\n \n `;\n }\n onClick(data) {\n this.select.emit(data);\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isVisible(circle) {\n if (this.activeEntries.length > 0) {\n return this.isActive({ name: circle.seriesName });\n }\n return circle.opacity !== 0;\n }\n activateCircle(circle) {\n circle.barVisible = true;\n this.activate.emit({ name: this.data.name });\n }\n deactivateCircle(circle) {\n circle.barVisible = false;\n this.deactivate.emit({ name: this.data.name });\n }\n trackBy(index, circle) {\n return `${circle.data.series} ${circle.data.name}`;\n }\n};\nBubbleSeriesComponent.ɵfac = function BubbleSeriesComponent_Factory(t) { return new (t || BubbleSeriesComponent)(); };\nBubbleSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: BubbleSeriesComponent, selectors: [[\"g\", \"ngx-charts-bubble-series\", \"\"]], inputs: { tooltipDisabled: \"tooltipDisabled\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", rScale: \"rScale\", xScaleType: \"xScaleType\", yScaleType: \"yScaleType\", colors: \"colors\", visibleValue: \"visibleValue\", activeEntries: \"activeEntries\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c29, decls: 1, vars: 2, consts: [[4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-circle\", \"\", \"ngx-tooltip\", \"\", 1, \"circle\", 3, \"cx\", \"cy\", \"r\", \"fill\", \"pointerEvents\", \"data\", \"classNames\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"]], template: function BubbleSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, BubbleSeriesComponent__svg_g_0_Template, 3, 19, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.circles)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgForOf, CircleComponent,\n TooltipDirective], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'scale(0)'\n }),\n animate(250, style({ opacity: 1, transform: 'scale(1)' }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], BubbleSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], BubbleSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n Input()\n], BubbleSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n Input()\n], BubbleSeriesComponent.prototype, \"rScale\", void 0);\n__decorate([\n Input()\n], BubbleSeriesComponent.prototype, \"xScaleType\", void 0);\n__decorate([\n Input()\n], BubbleSeriesComponent.prototype, \"yScaleType\", void 0);\n__decorate([\n Input()\n], BubbleSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], BubbleSeriesComponent.prototype, \"visibleValue\", void 0);\n__decorate([\n Input()\n], BubbleSeriesComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], BubbleSeriesComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], BubbleSeriesComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], BubbleSeriesComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], BubbleSeriesComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Output()\n], BubbleSeriesComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], BubbleSeriesComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], BubbleSeriesComponent.prototype, \"deactivate\", void 0);\n\nlet BubbleChartModule = class BubbleChartModule {\n};\nBubbleChartModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: BubbleChartModule });\nBubbleChartModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function BubbleChartModule_Factory(t) { return new (t || BubbleChartModule)(); }, imports: [[ChartCommonModule]] });\n\nlet HeatMapCellComponent = class HeatMapCellComponent {\n constructor(element) {\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.transform = `translate(${this.x} , ${this.y})`;\n this.startOpacity = 0.3;\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n this.gradientStops = this.getGradientStops();\n if (this.animations) {\n this.loadAnimation();\n }\n }\n getGradientStops() {\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n loadAnimation() {\n const node = select(this.element).select('.cell');\n node.attr('opacity', 0);\n this.animateToCurrentForm();\n }\n animateToCurrentForm() {\n const node = select(this.element).select('.cell');\n node\n .transition()\n .duration(750)\n .attr('opacity', 1);\n }\n onClick() {\n this.select.emit(this.data);\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n};\nHeatMapCellComponent.ɵfac = function HeatMapCellComponent_Factory(t) { return new (t || HeatMapCellComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nHeatMapCellComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: HeatMapCellComponent, selectors: [[\"g\", \"ngx-charts-heat-map-cell\", \"\"]], hostBindings: function HeatMapCellComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseenter\", function HeatMapCellComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function HeatMapCellComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n } }, inputs: { gradient: \"gradient\", animations: \"animations\", fill: \"fill\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", data: \"data\", label: \"label\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c30, decls: 3, vars: 5, consts: [[1, \"cell\"], [4, \"ngIf\"], [\"rx\", \"3\", 1, \"cell\", 2, \"cursor\", \"pointer\", 3, \"click\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"]], template: function HeatMapCellComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n ɵngcc0.ɵɵtemplate(1, HeatMapCellComponent__svg_defs_1_Template, 2, 2, \"defs\", 1);\n ɵngcc0.ɵɵelementStart(2, \"rect\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function HeatMapCellComponent_Template__svg_rect_click_2_listener() { return ctx.onClick(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.gradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"fill\", ctx.gradient ? ctx.gradientUrl : ctx.fill)(\"width\", ctx.width)(\"height\", ctx.height);\n } }, directives: [ɵngcc1.NgIf, SvgLinearGradientComponent], encapsulation: 2, changeDetection: 0 });\nHeatMapCellComponent.ctorParameters = () => [\n { type: ElementRef }\n];\n__decorate([\n Input()\n], HeatMapCellComponent.prototype, \"fill\", void 0);\n__decorate([\n Input()\n], HeatMapCellComponent.prototype, \"x\", void 0);\n__decorate([\n Input()\n], HeatMapCellComponent.prototype, \"y\", void 0);\n__decorate([\n Input()\n], HeatMapCellComponent.prototype, \"width\", void 0);\n__decorate([\n Input()\n], HeatMapCellComponent.prototype, \"height\", void 0);\n__decorate([\n Input()\n], HeatMapCellComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], HeatMapCellComponent.prototype, \"label\", void 0);\n__decorate([\n Input()\n], HeatMapCellComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], HeatMapCellComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], HeatMapCellComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], HeatMapCellComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], HeatMapCellComponent.prototype, \"deactivate\", void 0);\n__decorate([\n HostListener('mouseenter')\n], HeatMapCellComponent.prototype, \"onMouseEnter\", null);\n__decorate([\n HostListener('mouseleave')\n], HeatMapCellComponent.prototype, \"onMouseLeave\", null);\n\nlet HeatCellSeriesComponent = class HeatCellSeriesComponent {\n constructor() {\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n ngOnInit() {\n if (!this.tooltipText) {\n this.tooltipText = this.getTooltipText;\n }\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.cells = this.getCells();\n }\n getCells() {\n const cells = [];\n this.data.map(row => {\n row.series.map(cell => {\n const value = cell.value;\n cell.series = row.name;\n cells.push({\n row,\n cell,\n x: this.xScale(row.name),\n y: this.yScale(cell.name),\n width: this.xScale.bandwidth(),\n height: this.yScale.bandwidth(),\n fill: this.colors.getColor(value),\n data: value,\n label: formatLabel(cell.name),\n series: row.name\n });\n });\n });\n return cells;\n }\n getTooltipText({ label, data, series }) {\n return `\n ${escapeLabel(series)} • ${escapeLabel(label)}\n ${data.toLocaleString()}\n `;\n }\n trackBy(index, item) {\n return item.tooltipText;\n }\n onClick(data) {\n this.select.emit(data);\n }\n};\nHeatCellSeriesComponent.ɵfac = function HeatCellSeriesComponent_Factory(t) { return new (t || HeatCellSeriesComponent)(); };\nHeatCellSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: HeatCellSeriesComponent, selectors: [[\"g\", \"ngx-charts-heat-map-cell-series\", \"\"]], inputs: { tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", tooltipText: \"tooltipText\", data: \"data\", colors: \"colors\", xScale: \"xScale\", yScale: \"yScale\", gradient: \"gradient\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c31, decls: 1, vars: 2, consts: [[\"ngx-charts-heat-map-cell\", \"\", \"ngx-tooltip\", \"\", 3, \"x\", \"y\", \"width\", \"height\", \"fill\", \"data\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-heat-map-cell\", \"\", \"ngx-tooltip\", \"\", 3, \"x\", \"y\", \"width\", \"height\", \"fill\", \"data\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"]], template: function HeatCellSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, HeatCellSeriesComponent__svg_g_0_Template, 1, 18, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.cells)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgForOf, HeatMapCellComponent,\n TooltipDirective], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], HeatCellSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], HeatCellSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], HeatCellSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n Input()\n], HeatCellSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n Input()\n], HeatCellSeriesComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], HeatCellSeriesComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], HeatCellSeriesComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n Input()\n], HeatCellSeriesComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input()\n], HeatCellSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], HeatCellSeriesComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], HeatCellSeriesComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], HeatCellSeriesComponent.prototype, \"deactivate\", void 0);\n\nlet HeatMapComponent = class HeatMapComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.innerPadding = 8;\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.tooltipDisabled = false;\n this.activeEntries = [];\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.scaleType = 'linear';\n }\n update() {\n super.update();\n this.formatDates();\n this.xDomain = this.getXDomain();\n this.yDomain = this.getYDomain();\n this.valueDomain = this.getValueDomain();\n this.scaleType = getScaleType(this.valueDomain, false);\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.scaleType,\n legendPosition: this.legendPosition\n });\n if (this.scaleType === 'linear') {\n let min = this.min;\n let max = this.max;\n if (!this.min) {\n min = Math.min(0, ...this.valueDomain);\n }\n if (!this.max) {\n max = Math.max(...this.valueDomain);\n }\n this.valueDomain = [min, max];\n }\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.rects = this.getRects();\n }\n getXDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.name)) {\n domain.push(group.name);\n }\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.name)) {\n domain.push(d.name);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n return domain;\n }\n /**\n * Converts the input to gap paddingInner in fraction\n * Supports the following inputs:\n * Numbers: 8\n * Strings: \"8\", \"8px\", \"8%\"\n * Arrays: [8,2], \"8,2\", \"[8,2]\"\n * Mixed: [8,\"2%\"], [\"8px\",\"2%\"], \"8,2%\", \"[8,2%]\"\n *\n * @memberOf HeatMapComponent\n */\n getDimension(value, index = 0, N, L) {\n if (typeof value === 'string') {\n value = value\n .replace('[', '')\n .replace(']', '')\n .replace('px', '')\n // tslint:disable-next-line: quotemark\n .replace(\"'\", '');\n if (value.includes(',')) {\n value = value.split(',');\n }\n }\n if (Array.isArray(value) && typeof index === 'number') {\n return this.getDimension(value[index], null, N, L);\n }\n if (typeof value === 'string' && value.includes('%')) {\n return +value.replace('%', '') / 100;\n }\n return N / (L / +value + 1);\n }\n getXScale() {\n const f = this.getDimension(this.innerPadding, 0, this.xDomain.length, this.dims.width);\n return scaleBand()\n .rangeRound([0, this.dims.width])\n .domain(this.xDomain)\n .paddingInner(f);\n }\n getYScale() {\n const f = this.getDimension(this.innerPadding, 1, this.yDomain.length, this.dims.height);\n return scaleBand()\n .rangeRound([this.dims.height, 0])\n .domain(this.yDomain)\n .paddingInner(f);\n }\n getRects() {\n const rects = [];\n this.xDomain.map(xVal => {\n this.yDomain.map(yVal => {\n rects.push({\n x: this.xScale(xVal),\n y: this.yScale(yVal),\n rx: 3,\n width: this.xScale.bandwidth(),\n height: this.yScale.bandwidth(),\n fill: 'rgba(200,200,200,0.03)'\n });\n });\n });\n return rects;\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, this.scaleType, this.valueDomain);\n }\n getLegendOptions() {\n return {\n scaleType: this.scaleType,\n domain: this.valueDomain,\n colors: this.scaleType === 'ordinal' ? this.colors : this.colors.scale,\n title: this.scaleType === 'ordinal' ? this.legendTitle : undefined,\n position: this.legendPosition\n };\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n};\nHeatMapComponent.ɵfac = function HeatMapComponent_Factory(t) { return ɵHeatMapComponent_BaseFactory(t || HeatMapComponent); };\nHeatMapComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: HeatMapComponent, selectors: [[\"ngx-charts-heat-map\"]], contentQueries: function HeatMapComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", innerPadding: \"innerPadding\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", tooltipDisabled: \"tooltipDisabled\", activeEntries: \"activeEntries\", legend: \"legend\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", tooltipText: \"tooltipText\", min: \"min\", max: \"max\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 6, vars: 20, consts: [[3, \"view\", \"showLegend\", \"animations\", \"legendOptions\", \"legendLabelClick\"], [1, \"heat-map\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-heat-map-cell-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipTemplate\", \"tooltipText\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"]], template: function HeatMapComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function HeatMapComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, HeatMapComponent__svg_g_2_Template, 1, 9, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, HeatMapComponent__svg_g_3_Template, 1, 8, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, HeatMapComponent__svg_rect_4_Template, 1, 6, \"rect\", 4);\n ɵngcc0.ɵɵelementStart(5, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"select\", function HeatMapComponent_Template__svg_g_select_5_listener($event) { return ctx.onClick($event); })(\"activate\", function HeatMapComponent_Template__svg_g_activate_5_listener($event) { return ctx.onActivate($event, undefined); })(\"deactivate\", function HeatMapComponent_Template__svg_g_deactivate_5_listener($event) { return ctx.onDeactivate($event, undefined); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"animations\", ctx.animations)(\"legendOptions\", ctx.legendOptions);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.rects);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx.xScale)(\"yScale\", ctx.yScale)(\"colors\", ctx.colors)(\"data\", ctx.results)(\"gradient\", ctx.gradient)(\"animations\", ctx.animations)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipText\", ctx.tooltipText);\n } }, directives: [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, HeatCellSeriesComponent,\n XAxisComponent,\n YAxisComponent], styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"innerPadding\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"min\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"max\", void 0);\n__decorate([\n Input()\n], HeatMapComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Output()\n], HeatMapComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], HeatMapComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], HeatMapComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet HeatMapModule = class HeatMapModule {\n};\nHeatMapModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: HeatMapModule });\nHeatMapModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function HeatMapModule_Factory(t) { return new (t || HeatMapModule)(); }, imports: [[ChartCommonModule]] });\n\nlet LineComponent = class LineComponent {\n constructor(element) {\n this.element = element;\n this.fill = 'none';\n this.animations = true;\n this.select = new EventEmitter();\n this.initialized = false;\n }\n ngOnChanges(changes) {\n if (!this.initialized) {\n this.initialized = true;\n this.initialPath = this.path;\n }\n else {\n this.updatePathEl();\n }\n }\n updatePathEl() {\n const node = select(this.element.nativeElement).select('.line');\n if (this.animations) {\n node\n .transition()\n .duration(750)\n .attr('d', this.path);\n }\n else {\n node.attr('d', this.path);\n }\n }\n};\nLineComponent.ɵfac = function LineComponent_Factory(t) { return new (t || LineComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nLineComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: LineComponent, selectors: [[\"g\", \"ngx-charts-line\", \"\"]], inputs: { fill: \"fill\", animations: \"animations\", path: \"path\", stroke: \"stroke\", data: \"data\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c33, decls: 1, vars: 4, consts: [[\"stroke-width\", \"1.5px\", 1, \"line\"]], template: function LineComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"path\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"d\", ctx.initialPath)(\"fill\", ctx.fill)(\"stroke\", ctx.stroke);\n } }, encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':enter', [\n style({\n strokeDasharray: 2000,\n strokeDashoffset: 2000\n }),\n animate(1000, style({\n strokeDashoffset: 0\n }))\n ])\n ])\n ] }, changeDetection: 0 });\nLineComponent.ctorParameters = () => [\n { type: ElementRef }\n];\n__decorate([\n Input()\n], LineComponent.prototype, \"path\", void 0);\n__decorate([\n Input()\n], LineComponent.prototype, \"stroke\", void 0);\n__decorate([\n Input()\n], LineComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], LineComponent.prototype, \"fill\", void 0);\n__decorate([\n Input()\n], LineComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], LineComponent.prototype, \"select\", void 0);\n\nlet LineChartComponent = class LineChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.showRefLines = false;\n this.showRefLabels = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === 'linear') {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (this.scaleType === 'time' || this.scaleType === 'linear') {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n if (this.scaleType === 'time') {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === 'linear') {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (domain.indexOf(d.value) < 0) {\n domain.push(d.value);\n }\n if (d.min !== undefined) {\n this.hasRange = true;\n if (domain.indexOf(d.min) < 0) {\n domain.push(d.min);\n }\n }\n if (d.max !== undefined) {\n this.hasRange = true;\n if (domain.indexOf(d.max) < 0) {\n domain.push(d.max);\n }\n }\n }\n }\n const values = [...domain];\n if (!this.autoScale) {\n values.push(0);\n }\n const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === 'time') {\n scale = scaleTime()\n .range([0, width])\n .domain(domain);\n }\n else if (this.scaleType === 'linear') {\n scale = scaleLinear()\n .range([0, width])\n .domain(domain);\n if (this.roundDomains) {\n scale = scale.nice();\n }\n }\n else if (this.scaleType === 'ordinal') {\n scale = scalePoint()\n .range([0, width])\n .padding(0.1)\n .domain(domain);\n }\n return scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear()\n .range([height, 0])\n .domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data) {\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n this.deactivateAll();\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n};\nLineChartComponent.ɵfac = function LineChartComponent_Factory(t) { return ɵLineChartComponent_BaseFactory(t || LineChartComponent); };\nLineChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: LineChartComponent, selectors: [[\"ngx-charts-line-chart\"]], contentQueries: function LineChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c22, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltipTemplate = _t.first);\n } }, hostBindings: function LineChartComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseleave\", function LineChartComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n } }, inputs: { legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", showRefLines: \"showRefLines\", showRefLabels: \"showRefLabels\", legend: \"legend\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", autoScale: \"autoScale\", timeline: \"timeline\", gradient: \"gradient\", schemeType: \"schemeType\", rangeFillOpacity: \"rangeFillOpacity\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", referenceLines: \"referenceLines\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 11, vars: 20, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"line-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"mouseleave\", 4, \"ngIf\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"scaleType\", \"legend\", \"onDomainChange\", 4, \"ngIf\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"dimensionsChanged\"], [\"ngx-charts-line-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"activeEntries\", \"scaleType\", \"curve\", \"rangeFillOpacity\", \"hasRange\", \"animations\"], [3, \"mouseleave\"], [\"ngx-charts-tooltip-area\", \"\", 3, \"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"tooltipDisabled\", \"tooltipTemplate\", \"hover\"], [4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-circle-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"visibleValue\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"scaleType\", \"legend\", \"onDomainChange\"], [\"ngx-charts-line-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"curve\", \"hasRange\", \"animations\"]], template: function LineChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function LineChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function LineChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function LineChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"defs\");\n ɵngcc0.ɵɵelementStart(2, \"clipPath\");\n ɵngcc0.ɵɵelement(3, \"rect\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n ɵngcc0.ɵɵtemplate(5, LineChartComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(6, LineChartComponent__svg_g_6_Template, 1, 12, \"g\", 3);\n ɵngcc0.ɵɵelementStart(7, \"g\");\n ɵngcc0.ɵɵtemplate(8, LineChartComponent__svg_g_8_Template, 2, 11, \"g\", 4);\n ɵngcc0.ɵɵtemplate(9, LineChartComponent__svg_g_9_Template, 3, 9, \"g\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(10, LineChartComponent__svg_g_10_Template, 2, 13, \"g\", 6);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tooltipDisabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.timeline && ctx.scaleType != \"ordinal\");\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, XAxisComponent,\n YAxisComponent,\n LineSeriesComponent,\n TooltipArea,\n CircleSeriesComponent,\n Timeline]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], LineChartComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"autoScale\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"timeline\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"curve\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"rangeFillOpacity\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"trimXAxisTicks\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"rotateXAxisTicks\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"maxXAxisTickLength\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"xAxisTicks\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"yAxisTicks\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"showRefLines\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"referenceLines\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"showRefLabels\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"xScaleMin\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"xScaleMax\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"yScaleMin\", void 0);\n__decorate([\n Input()\n], LineChartComponent.prototype, \"yScaleMax\", void 0);\n__decorate([\n Output()\n], LineChartComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], LineChartComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], LineChartComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n ContentChild('seriesTooltipTemplate')\n], LineChartComponent.prototype, \"seriesTooltipTemplate\", void 0);\n__decorate([\n HostListener('mouseleave')\n], LineChartComponent.prototype, \"hideCircles\", null);\n\nlet LineSeriesComponent = class LineSeriesComponent {\n constructor() {\n this.animations = true;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateGradients();\n const data = this.sortData(this.data.series);\n const lineGen = this.getLineGenerator();\n this.path = lineGen(data) || '';\n const areaGen = this.getAreaGenerator();\n this.areaPath = areaGen(data) || '';\n if (this.hasRange) {\n const range = this.getRangeGenerator();\n this.outerPath = range(data) || '';\n }\n if (this.hasGradient) {\n this.stroke = this.gradientUrl;\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n if (max === min) {\n this.stroke = this.colors.getColor(max);\n }\n }\n else {\n this.stroke = this.colors.getColor(this.data.name);\n }\n }\n getLineGenerator() {\n return line()\n .x(d => {\n const label = d.name;\n let value;\n if (this.scaleType === 'time') {\n value = this.xScale(label);\n }\n else if (this.scaleType === 'linear') {\n value = this.xScale(Number(label));\n }\n else {\n value = this.xScale(label);\n }\n return value;\n })\n .y(d => this.yScale(d.value))\n .curve(this.curve);\n }\n getRangeGenerator() {\n return area()\n .x(d => {\n const label = d.name;\n let value;\n if (this.scaleType === 'time') {\n value = this.xScale(label);\n }\n else if (this.scaleType === 'linear') {\n value = this.xScale(Number(label));\n }\n else {\n value = this.xScale(label);\n }\n return value;\n })\n .y0(d => this.yScale(typeof d.min === 'number' ? d.min : d.value))\n .y1(d => this.yScale(typeof d.max === 'number' ? d.max : d.value))\n .curve(this.curve);\n }\n getAreaGenerator() {\n const xProperty = d => {\n const label = d.name;\n return this.xScale(label);\n };\n return area()\n .x(xProperty)\n .y0(() => this.yScale.range()[0])\n .y1(d => this.yScale(d.value))\n .curve(this.curve);\n }\n sortData(data) {\n if (this.scaleType === 'linear') {\n data = sortLinear(data, 'name');\n }\n else if (this.scaleType === 'time') {\n data = sortByTime(data, 'name');\n }\n else {\n data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n return data;\n }\n updateGradients() {\n if (this.colors.scaleType === 'linear') {\n this.hasGradient = true;\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n this.areaGradientStops = this.colors.getLinearGradientStops(max);\n }\n else {\n this.hasGradient = false;\n this.gradientStops = undefined;\n this.areaGradientStops = undefined;\n }\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isInactive(entry) {\n if (!this.activeEntries || this.activeEntries.length === 0)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n};\nLineSeriesComponent.ɵfac = function LineSeriesComponent_Factory(t) { return new (t || LineSeriesComponent)(); };\nLineSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: LineSeriesComponent, selectors: [[\"g\", \"ngx-charts-line-series\", \"\"]], inputs: { animations: \"animations\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", curve: \"curve\", activeEntries: \"activeEntries\", rangeFillOpacity: \"rangeFillOpacity\", hasRange: \"hasRange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c34, decls: 6, vars: 22, consts: [[\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\", 4, \"ngIf\"], [\"ngx-charts-area\", \"\", 1, \"line-highlight\", 3, \"data\", \"path\", \"fill\", \"opacity\", \"startOpacity\", \"gradient\", \"stops\", \"animations\"], [\"ngx-charts-line\", \"\", 1, \"line-series\", 3, \"data\", \"path\", \"stroke\", \"animations\"], [\"ngx-charts-area\", \"\", \"class\", \"line-series-range\", 3, \"data\", \"path\", \"fill\", \"active\", \"inactive\", \"opacity\", \"animations\", 4, \"ngIf\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"], [\"ngx-charts-area\", \"\", 1, \"line-series-range\", 3, \"data\", \"path\", \"fill\", \"opacity\", \"animations\"]], template: function LineSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelementStart(1, \"defs\");\n ɵngcc0.ɵɵtemplate(2, LineSeriesComponent__svg_g_2_Template, 1, 2, \"g\", 0);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"g\", 1);\n ɵngcc0.ɵɵelement(4, \"g\", 2);\n ɵngcc0.ɵɵtemplate(5, LineSeriesComponent__svg_g_5_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasGradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive(ctx.data))(\"inactive\", ctx.isInactive(ctx.data));\n ɵngcc0.ɵɵproperty(\"data\", ctx.data)(\"path\", ctx.areaPath)(\"fill\", ctx.hasGradient ? ctx.gradientUrl : ctx.colors.getColor(ctx.data.name))(\"opacity\", 0.25)(\"startOpacity\", 0)(\"gradient\", true)(\"stops\", ctx.areaGradientStops)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive(ctx.data))(\"inactive\", ctx.isInactive(ctx.data));\n ɵngcc0.ɵɵproperty(\"data\", ctx.data)(\"path\", ctx.path)(\"stroke\", ctx.stroke)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasRange);\n } }, directives: [ɵngcc1.NgIf, AreaComponent,\n LineComponent,\n SvgLinearGradientComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], LineSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], LineSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n Input()\n], LineSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n Input()\n], LineSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], LineSeriesComponent.prototype, \"scaleType\", void 0);\n__decorate([\n Input()\n], LineSeriesComponent.prototype, \"curve\", void 0);\n__decorate([\n Input()\n], LineSeriesComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], LineSeriesComponent.prototype, \"rangeFillOpacity\", void 0);\n__decorate([\n Input()\n], LineSeriesComponent.prototype, \"hasRange\", void 0);\n__decorate([\n Input()\n], LineSeriesComponent.prototype, \"animations\", void 0);\n\nlet LineChartModule = class LineChartModule {\n};\nLineChartModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: LineChartModule });\nLineChartModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function LineChartModule_Factory(t) { return new (t || LineChartModule)(); }, imports: [[ChartCommonModule]] });\n\nfunction isDate(value) {\n return toString.call(value) === '[object Date]';\n}\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n\nconst twoPI = 2 * Math.PI;\nlet PolarChartComponent = class PolarChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.showGridLines = true;\n this.curve = curveCardinalClosed;\n this.activeEntries = [];\n this.rangeFillOpacity = 0.15;\n this.trimYAxisTicks = true;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.showSeriesOnHover = true;\n this.gradient = false;\n this.yAxisMinScale = 0;\n this.labelTrim = true;\n this.labelTrimSize = 10;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n }\n update() {\n super.update();\n this.setDims();\n this.setScales();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.setTicks();\n }\n setDims() {\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n const halfWidth = Math.floor(this.dims.width / 2);\n const halfHeight = Math.floor(this.dims.height / 2);\n const outerRadius = (this.outerRadius = Math.min(halfHeight / 1.5, halfWidth / 1.5));\n const yOffset = Math.max(0, halfHeight - outerRadius);\n this.yAxisDims = Object.assign(Object.assign({}, this.dims), { width: halfWidth });\n this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n this.transformYAxis = `translate(0, ${yOffset})`;\n this.labelOffset = this.dims.height + 40;\n this.transformPlot = `translate(${halfWidth}, ${halfHeight})`;\n }\n setScales() {\n const xValues = this.getXValues();\n this.scaleType = getScaleType(xValues);\n this.xDomain = this.filteredDomain || this.getXDomain(xValues);\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, twoPI);\n this.yScale = this.getYScale(this.yDomain, this.outerRadius);\n this.yAxisScale = this.getYScale(this.yDomain.reverse(), this.outerRadius);\n }\n setTicks() {\n let tickFormat;\n if (this.xAxisTickFormatting) {\n tickFormat = this.xAxisTickFormatting;\n }\n else if (this.xScale.tickFormat) {\n tickFormat = this.xScale.tickFormat.apply(this.xScale, [5]);\n }\n else {\n tickFormat = d => {\n if (isDate(d)) {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n const outerRadius = this.outerRadius;\n const s = 1.1;\n this.thetaTicks = this.xDomain.map(d => {\n const startAngle = this.xScale(d);\n const dd = s * outerRadius * (startAngle > Math.PI ? -1 : 1);\n const label = tickFormat(d);\n const startPos = [outerRadius * Math.sin(startAngle), -outerRadius * Math.cos(startAngle)];\n const pos = [dd, s * startPos[1]];\n return {\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle: startAngle,\n value: outerRadius,\n label,\n startPos,\n pos\n };\n });\n const minDistance = 10;\n /* from pie chart, abstract out -*/\n for (let i = 0; i < this.thetaTicks.length - 1; i++) {\n const a = this.thetaTicks[i];\n for (let j = i + 1; j < this.thetaTicks.length; j++) {\n const b = this.thetaTicks[j];\n // if they're on the same side\n if (b.pos[0] * a.pos[0] > 0) {\n // if they're overlapping\n const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n if (o > 0) {\n // push the second up or down\n b.pos[1] += Math.sign(b.pos[0]) * o;\n }\n }\n }\n }\n this.radiusTicks = this.yAxisScale.ticks(Math.floor(this.dims.height / 50)).map(d => this.yScale(d));\n }\n getXValues() {\n const values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.name)) {\n values.push(d.name);\n }\n }\n }\n return values;\n }\n getXDomain(values = this.getXValues()) {\n if (this.scaleType === 'time') {\n const min = Math.min(...values);\n const max = Math.max(...values);\n return [min, max];\n }\n else if (this.scaleType === 'linear') {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n return [min, max];\n }\n return values;\n }\n getYValues() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (domain.indexOf(d.value) < 0) {\n domain.push(d.value);\n }\n if (d.min !== undefined) {\n if (domain.indexOf(d.min) < 0) {\n domain.push(d.min);\n }\n }\n if (d.max !== undefined) {\n if (domain.indexOf(d.max) < 0) {\n domain.push(d.max);\n }\n }\n }\n }\n return domain;\n }\n getYDomain(domain = this.getYValues()) {\n let min = Math.min(...domain);\n const max = Math.max(this.yAxisMinScale, ...domain);\n min = Math.max(0, min);\n if (!this.autoScale) {\n min = Math.min(0, min);\n }\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n switch (this.scaleType) {\n case 'time':\n return scaleTime()\n .range([0, width])\n .domain(domain);\n case 'linear':\n const scale = scaleLinear()\n .range([0, width])\n .domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n default:\n return scalePoint()\n .range([0, width - twoPI / domain.length])\n .padding(0)\n .domain(domain);\n }\n }\n getYScale(domain, height) {\n const scale = scaleLinear()\n .range([0, height])\n .domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n setColors() {\n const domain = this.schemeType === 'ordinal' ? this.seriesDomain : this.yDomain.reverse();\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n if (this.schemeType === 'ordinal') {\n return {\n scaleType: this.schemeType,\n colors: this.colors,\n domain: this.seriesDomain,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n return {\n scaleType: this.schemeType,\n colors: this.colors.scale,\n domain: this.yDomain,\n title: undefined,\n position: this.legendPosition\n };\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = this.showSeriesOnHover ? [item, ...this.activeEntries] : this.activeEntries;\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n trackBy(index, item) {\n return item.name;\n }\n};\nPolarChartComponent.ɵfac = function PolarChartComponent_Factory(t) { return ɵPolarChartComponent_BaseFactory(t || PolarChartComponent); };\nPolarChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PolarChartComponent, selectors: [[\"ngx-charts-polar-chart\"]], contentQueries: function PolarChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", rangeFillOpacity: \"rangeFillOpacity\", trimYAxisTicks: \"trimYAxisTicks\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", showSeriesOnHover: \"showSeriesOnHover\", gradient: \"gradient\", yAxisMinScale: \"yAxisMinScale\", labelTrim: \"labelTrim\", labelTrimSize: \"labelTrimSize\", legend: \"legend\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", autoScale: \"autoScale\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 10, vars: 18, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"polar-chart\", \"chart\"], [\"cx\", \"0\", \"cy\", \"0\", 1, \"polar-chart-background\"], [4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"gridline-path radial-gridline-path\", \"cx\", \"0\", \"cy\", \"0\", 4, \"ngFor\", \"ngForOf\"], [\"cx\", \"0\", \"cy\", \"0\", 1, \"gridline-path\", \"radial-gridline-path\"], [\"ngx-charts-pie-label\", \"\", 3, \"data\", \"radius\", \"label\", \"max\", \"value\", \"explodeSlices\", \"animations\", \"labelTrim\", \"labelTrimSize\", 4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-pie-label\", \"\", 3, \"data\", \"radius\", \"label\", \"max\", \"value\", \"explodeSlices\", \"animations\", \"labelTrim\", \"labelTrimSize\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"dimensionsChanged\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\"], [\"ngx-charts-polar-series\", \"\", 3, \"gradient\", \"xScale\", \"yScale\", \"colors\", \"data\", \"activeEntries\", \"scaleType\", \"curve\", \"rangeFillOpacity\", \"animations\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"]], template: function PolarChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function PolarChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function PolarChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function PolarChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵelementStart(2, \"g\");\n ɵngcc0.ɵɵelement(3, \"circle\", 2);\n ɵngcc0.ɵɵtemplate(4, PolarChartComponent__svg_g_4_Template, 2, 1, \"g\", 3);\n ɵngcc0.ɵɵtemplate(5, PolarChartComponent__svg_g_5_Template, 2, 1, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, PolarChartComponent__svg_g_6_Template, 1, 9, \"g\", 4);\n ɵngcc0.ɵɵtemplate(7, PolarChartComponent__svg_g_7_Template, 1, 5, \"g\", 5);\n ɵngcc0.ɵɵelementStart(8, \"g\");\n ɵngcc0.ɵɵtemplate(9, PolarChartComponent__svg_g_9_Template, 2, 13, \"g\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(15, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transformPlot);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"r\", ctx.outerRadius);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showGridLines);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis && ctx.showXAxisLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transformPlot);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, PieLabelComponent,\n YAxisComponent,\n AxisLabelComponent,\n PolarSeriesComponent]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".pie-label{font-size:11px}.pie-label.animation{-webkit-animation:750ms ease-in fadeIn;animation:750ms ease-in fadeIn}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{-webkit-animation:3s linear drawOut;animation:3s linear drawOut;-webkit-transition:d 750ms;transition:d 750ms}@-webkit-keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}@keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\", \".polar-chart .polar-chart-background{fill:none}.polar-chart .radial-gridline-path{stroke-dasharray:10 10;fill:none}.polar-chart .pie-label-line{stroke:#2f3646}.polar-charts-series .polar-series-area,.polar-series-path{pointer-events:none}\"], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ] }, changeDetection: 0 });\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"xAxis\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"yAxis\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"showXAxisLabel\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"showYAxisLabel\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"xAxisLabel\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"yAxisLabel\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"autoScale\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"showGridLines\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"curve\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"schemeType\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"rangeFillOpacity\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"trimYAxisTicks\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"maxYAxisTickLength\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"xAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"yAxisTickFormatting\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"roundDomains\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"showSeriesOnHover\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"yAxisMinScale\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"labelTrim\", void 0);\n__decorate([\n Input()\n], PolarChartComponent.prototype, \"labelTrimSize\", void 0);\n__decorate([\n Output()\n], PolarChartComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], PolarChartComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], PolarChartComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet PolarSeriesComponent = class PolarSeriesComponent {\n constructor() {\n this.tooltipDisabled = false;\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.circleRadius = 3;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateGradients();\n const line = this.getLineGenerator();\n const data = this.sortData(this.data.series);\n const seriesName = this.data.name;\n const linearScaleType = this.colors.scaleType === 'linear';\n const min = this.yScale.domain()[0];\n this.seriesColor = this.colors.getColor(linearScaleType ? min : seriesName);\n this.path = line(data) || '';\n this.circles = data.map(d => {\n const a = this.getAngle(d);\n const r = this.getRadius(d);\n const value = d.value;\n const color = this.colors.getColor(linearScaleType ? Math.abs(value) : seriesName);\n const cData = Object.assign({}, d, {\n series: seriesName,\n value,\n name: d.name\n });\n return {\n data: cData,\n cx: r * Math.sin(a),\n cy: -r * Math.cos(a),\n value,\n color,\n label: d.name\n };\n });\n this.active = this.isActive(this.data);\n this.inactive = this.isInactive(this.data);\n this.tooltipText = this.tooltipText || (c => this.defaultTooltipText(c));\n }\n getAngle(d) {\n const label = d.name;\n if (this.scaleType === 'time') {\n return this.xScale(label);\n }\n else if (this.scaleType === 'linear') {\n return this.xScale(Number(label));\n }\n return this.xScale(label);\n }\n getRadius(d) {\n return this.yScale(d.value);\n }\n getLineGenerator() {\n return lineRadial()\n .angle(d => this.getAngle(d))\n .radius(d => this.getRadius(d))\n .curve(this.curve);\n }\n sortData(data) {\n if (this.scaleType === 'linear') {\n return sortLinear(data, 'name');\n }\n else if (this.scaleType === 'time') {\n return sortByTime(data, 'name');\n }\n return sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isInactive(entry) {\n if (!this.activeEntries || this.activeEntries.length === 0)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n defaultTooltipText({ label, value }) {\n return `\n ${escapeLabel(this.data.name)} • ${escapeLabel(label)}\n ${value.toLocaleString()}\n `;\n }\n updateGradients() {\n this.hasGradient = this.gradient || this.colors.scaleType === 'linear';\n if (!this.hasGradient) {\n return;\n }\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n if (this.colors.scaleType === 'linear') {\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n }\n else {\n this.gradientStops = undefined;\n }\n }\n};\nPolarSeriesComponent.ɵfac = function PolarSeriesComponent_Factory(t) { return new (t || PolarSeriesComponent)(); };\nPolarSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PolarSeriesComponent, selectors: [[\"g\", \"ngx-charts-polar-series\", \"\"]], inputs: { tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", animations: \"animations\", tooltipText: \"tooltipText\", name: \"name\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", curve: \"curve\", activeEntries: \"activeEntries\", rangeFillOpacity: \"rangeFillOpacity\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c35, decls: 5, vars: 11, consts: [[1, \"polar-charts-series\"], [\"ngx-charts-svg-radial-gradient\", \"\", \"orientation\", \"vertical\", 3, \"color\", \"name\", \"startOpacity\", \"endOpacity\", \"stops\", 4, \"ngIf\"], [\"ngx-charts-line\", \"\", 1, \"polar-series-path\", 3, \"path\", \"stroke\", \"fill\", \"animations\"], [\"ngx-charts-circle\", \"\", \"class\", \"circle\", \"ngx-tooltip\", \"\", \"tooltipType\", \"tooltip\", 3, \"cx\", \"cy\", \"r\", \"fill\", \"opacity\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-svg-radial-gradient\", \"\", \"orientation\", \"vertical\", 3, \"color\", \"name\", \"startOpacity\", \"endOpacity\", \"stops\"], [\"ngx-charts-circle\", \"\", \"ngx-tooltip\", \"\", \"tooltipType\", \"tooltip\", 1, \"circle\", 3, \"cx\", \"cy\", \"r\", \"fill\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"]], template: function PolarSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n ɵngcc0.ɵɵelementStart(1, \"defs\");\n ɵngcc0.ɵɵtemplate(2, PolarSeriesComponent__svg_g_2_Template, 1, 5, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"g\", 2);\n ɵngcc0.ɵɵtemplate(4, PolarSeriesComponent__svg_g_4_Template, 1, 11, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasGradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"active\", ctx.active)(\"inactive\", ctx.inactive);\n ɵngcc0.ɵɵproperty(\"path\", ctx.path)(\"stroke\", ctx.hasGradient ? ctx.gradientUrl : ctx.seriesColor)(\"fill\", ctx.hasGradient ? ctx.gradientUrl : ctx.seriesColor)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵattribute(\"fill-opacity\", ctx.rangeFillOpacity);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.circles);\n } }, directives: [ɵngcc1.NgIf, LineComponent, ɵngcc1.NgForOf, SvgRadialGradientComponent,\n CircleComponent,\n TooltipDirective], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"name\", void 0);\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"xScale\", void 0);\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"yScale\", void 0);\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"scaleType\", void 0);\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"curve\", void 0);\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"rangeFillOpacity\", void 0);\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input()\n], PolarSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], PolarSeriesComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], PolarSeriesComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], PolarSeriesComponent.prototype, \"deactivate\", void 0);\n\nlet AdvancedPieChartComponent = class AdvancedPieChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.activeEntries = [];\n this.tooltipDisabled = false;\n this.label = 'Total';\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [20, 20, 20, 20];\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: (this.width * 4) / 12.0,\n height: this.height,\n margins: this.margin\n });\n this.formatDates();\n this.domain = this.getDomain();\n this.setColors();\n const xOffset = this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n this.legendWidth = this.width - this.dims.width - this.margin[1];\n this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2.5;\n this.innerRadius = this.outerRadius * 0.75;\n this.transform = `translate(${xOffset} , ${yOffset})`;\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n};\nAdvancedPieChartComponent.ɵfac = function AdvancedPieChartComponent_Factory(t) { return ɵAdvancedPieChartComponent_BaseFactory(t || AdvancedPieChartComponent); };\nAdvancedPieChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AdvancedPieChartComponent, selectors: [[\"ngx-charts-advanced-pie-chart\"]], contentQueries: function AdvancedPieChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", label: \"label\", gradient: \"gradient\", tooltipText: \"tooltipText\", valueFormatting: \"valueFormatting\", nameFormatting: \"nameFormatting\", percentageFormatting: \"percentageFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 7, vars: 37, consts: [[1, \"advanced-pie\", \"chart\"], [3, \"view\", \"showLegend\", \"animations\"], [1, \"pie\", \"chart\"], [\"ngx-charts-pie-series\", \"\", 3, \"colors\", \"series\", \"innerRadius\", \"activeEntries\", \"outerRadius\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"tooltipText\", \"animations\", \"select\", \"activate\", \"deactivate\"], [1, \"advanced-pie-legend-wrapper\"], [3, \"data\", \"colors\", \"width\", \"label\", \"animations\", \"valueFormatting\", \"labelFormatting\", \"percentageFormatting\", \"select\", \"activate\", \"deactivate\"]], template: function AdvancedPieChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵelementStart(1, \"div\", 0);\n ɵngcc0.ɵɵelementStart(2, \"ngx-charts-chart\", 1);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(3, \"g\", 2);\n ɵngcc0.ɵɵelementStart(4, \"g\", 3);\n ɵngcc0.ɵɵlistener(\"select\", function AdvancedPieChartComponent_Template__svg_g_select_4_listener($event) { return ctx.onClick($event); })(\"activate\", function AdvancedPieChartComponent_Template__svg_g_activate_4_listener($event) { return ctx.onActivate($event); })(\"deactivate\", function AdvancedPieChartComponent_Template__svg_g_deactivate_4_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelementStart(5, \"div\", 4);\n ɵngcc0.ɵɵelementStart(6, \"ngx-charts-advanced-legend\", 5);\n ɵngcc0.ɵɵlistener(\"select\", function AdvancedPieChartComponent_Template_ngx_charts_advanced_legend_select_6_listener($event) { return ctx.onClick($event); })(\"activate\", function AdvancedPieChartComponent_Template_ngx_charts_advanced_legend_activate_6_listener($event) { return ctx.onActivate($event, true); })(\"deactivate\", function AdvancedPieChartComponent_Template_ngx_charts_advanced_legend_deactivate_6_listener($event) { return ctx.onDeactivate($event, true); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.width, \"px\")(\"height\", ctx.height, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.dims.width, \"px\")(\"height\", ctx.dims.height, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(34, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"colors\", ctx.colors)(\"series\", ctx.results)(\"innerRadius\", ctx.innerRadius)(\"activeEntries\", ctx.activeEntries)(\"outerRadius\", ctx.outerRadius)(\"gradient\", ctx.gradient)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipText\", ctx.tooltipText)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.width - ctx.dims.width, \"px\")(\"height\", ctx.height, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"data\", ctx.results)(\"colors\", ctx.colors)(\"width\", ctx.width - ctx.dims.width - ctx.margin[1])(\"label\", ctx.label)(\"animations\", ctx.animations)(\"valueFormatting\", ctx.valueFormatting)(\"labelFormatting\", ctx.nameFormatting)(\"percentageFormatting\", ctx.percentageFormatting);\n } }, directives: function () { return [ChartComponent,\n PieSeriesComponent,\n AdvancedLegendComponent]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".advanced-pie{display:inline-block;float:left}.advanced-pie-legend-wrapper{display:inline-block}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], AdvancedPieChartComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], AdvancedPieChartComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], AdvancedPieChartComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], AdvancedPieChartComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n Input()\n], AdvancedPieChartComponent.prototype, \"label\", void 0);\n__decorate([\n Output()\n], AdvancedPieChartComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], AdvancedPieChartComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], AdvancedPieChartComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input()\n], AdvancedPieChartComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n Input()\n], AdvancedPieChartComponent.prototype, \"nameFormatting\", void 0);\n__decorate([\n Input()\n], AdvancedPieChartComponent.prototype, \"percentageFormatting\", void 0);\n\nlet PieLabelComponent = class PieLabelComponent {\n constructor() {\n this.animations = true;\n this.labelTrim = true;\n this.labelTrimSize = 10;\n this.isIE = /(edge|msie|trident)/i.test(navigator.userAgent);\n this.trimLabel = trimLabel;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n let startRadius = this.radius;\n if (this.explodeSlices) {\n startRadius = (this.radius * this.value) / this.max;\n }\n const innerArc = arc()\n .innerRadius(startRadius)\n .outerRadius(startRadius);\n // Calculate innerPos then scale outer position to match label position\n const innerPos = innerArc.centroid(this.data);\n let scale = this.data.pos[1] / innerPos[1];\n if (this.data.pos[1] === 0 || innerPos[1] === 0) {\n scale = 1;\n }\n const outerPos = [scale * innerPos[0], scale * innerPos[1]];\n this.line = `M${innerPos}L${outerPos}L${this.data.pos}`;\n }\n get textX() {\n return this.data.pos[0];\n }\n get textY() {\n return this.data.pos[1];\n }\n get styleTransform() {\n return this.isIE ? null : `translate3d(${this.textX}px,${this.textY}px, 0)`;\n }\n get attrTransform() {\n return !this.isIE ? null : `translate(${this.textX},${this.textY})`;\n }\n get textTransition() {\n return this.isIE || !this.animations ? null : 'transform 0.75s';\n }\n textAnchor() {\n return this.midAngle(this.data) < Math.PI ? 'start' : 'end';\n }\n midAngle(d) {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n};\nPieLabelComponent.ɵfac = function PieLabelComponent_Factory(t) { return new (t || PieLabelComponent)(); };\nPieLabelComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PieLabelComponent, selectors: [[\"g\", \"ngx-charts-pie-label\", \"\"]], inputs: { animations: \"animations\", labelTrim: \"labelTrim\", labelTrimSize: \"labelTrimSize\", data: \"data\", radius: \"radius\", label: \"label\", color: \"color\", max: \"max\", value: \"value\", explodeSlices: \"explodeSlices\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c36, decls: 6, vars: 17, consts: [[\"dy\", \".35em\", 1, \"pie-label\"], [\"fill\", \"none\", 1, \"pie-label-line\", \"line\"]], template: function PieLabelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"title\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(2, \"g\");\n ɵngcc0.ɵɵelementStart(3, \"text\", 0);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(5, \"path\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.label);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"transform\", ctx.styleTransform)(\"transition\", ctx.textTransition);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.attrTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"text-anchor\", ctx.textAnchor())(\"shape-rendering\", \"crispEdges\");\n ɵngcc0.ɵɵclassProp(\"animation\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.labelTrim ? ctx.trimLabel(ctx.label, ctx.labelTrimSize) : ctx.label, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"animation\", ctx.animations);\n ɵngcc0.ɵɵattribute(\"d\", ctx.line)(\"stroke\", ctx.color);\n } }, encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], PieLabelComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], PieLabelComponent.prototype, \"radius\", void 0);\n__decorate([\n Input()\n], PieLabelComponent.prototype, \"label\", void 0);\n__decorate([\n Input()\n], PieLabelComponent.prototype, \"color\", void 0);\n__decorate([\n Input()\n], PieLabelComponent.prototype, \"max\", void 0);\n__decorate([\n Input()\n], PieLabelComponent.prototype, \"value\", void 0);\n__decorate([\n Input()\n], PieLabelComponent.prototype, \"explodeSlices\", void 0);\n__decorate([\n Input()\n], PieLabelComponent.prototype, \"animations\", void 0);\n__decorate([\n Input()\n], PieLabelComponent.prototype, \"labelTrim\", void 0);\n__decorate([\n Input()\n], PieLabelComponent.prototype, \"labelTrimSize\", void 0);\n\nlet PieArcComponent = class PieArcComponent {\n constructor(element) {\n this.startAngle = 0;\n this.endAngle = Math.PI * 2;\n this.cornerRadius = 0;\n this.explodeSlices = false;\n this.gradient = false;\n this.animate = true;\n this.pointerEvents = true;\n this.isActive = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dblclick = new EventEmitter();\n this.initialized = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n getGradient() {\n return this.gradient ? this.gradientFill : this.fill;\n }\n getPointerEvents() {\n return this.pointerEvents ? 'auto' : 'none';\n }\n update() {\n const calc = this.calculateArc();\n this.startOpacity = 0.5;\n this.radialGradientId = 'linearGrad' + id().toString();\n this.gradientFill = `url(#${this.radialGradientId})`;\n if (this.animate) {\n if (this.initialized) {\n this.updateAnimation();\n }\n else {\n this.loadAnimation();\n this.initialized = true;\n }\n }\n else {\n this.path = calc.startAngle(this.startAngle).endAngle(this.endAngle)();\n }\n }\n calculateArc() {\n let outerRadius = this.outerRadius;\n if (this.explodeSlices && this.innerRadius === 0) {\n outerRadius = (this.outerRadius * this.value) / this.max;\n }\n return arc()\n .innerRadius(this.innerRadius)\n .outerRadius(outerRadius)\n .cornerRadius(this.cornerRadius);\n }\n loadAnimation() {\n const node = select(this.element)\n .selectAll('.arc')\n .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n const calc = this.calculateArc();\n node\n .transition()\n .attrTween('d', function (d) {\n this._current = this._current || d;\n const copyOfD = Object.assign({}, d);\n copyOfD.endAngle = copyOfD.startAngle;\n const interpolater = interpolate(copyOfD, copyOfD);\n this._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n })\n .transition()\n .duration(750)\n .attrTween('d', function (d) {\n this._current = this._current || d;\n const interpolater = interpolate(this._current, d);\n this._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n });\n }\n updateAnimation() {\n const node = select(this.element)\n .selectAll('.arc')\n .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n const calc = this.calculateArc();\n node\n .transition()\n .duration(750)\n .attrTween('d', function (d) {\n this._current = this._current || d;\n const interpolater = interpolate(this._current, d);\n this._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n });\n }\n onClick() {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(() => this.select.emit(this.data), 200);\n }\n onDblClick(event) {\n event.preventDefault();\n event.stopPropagation();\n clearTimeout(this._timeout);\n this.dblclick.emit({\n data: this.data,\n nativeEvent: event\n });\n }\n};\nPieArcComponent.ɵfac = function PieArcComponent_Factory(t) { return new (t || PieArcComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nPieArcComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PieArcComponent, selectors: [[\"g\", \"ngx-charts-pie-arc\", \"\"]], inputs: { startAngle: \"startAngle\", endAngle: \"endAngle\", cornerRadius: \"cornerRadius\", explodeSlices: \"explodeSlices\", gradient: \"gradient\", animate: \"animate\", pointerEvents: \"pointerEvents\", isActive: \"isActive\", fill: \"fill\", innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", value: \"value\", max: \"max\", data: \"data\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dblclick: \"dblclick\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c37, decls: 3, vars: 7, consts: [[1, \"arc-group\"], [4, \"ngIf\"], [1, \"arc\", 3, \"click\", \"dblclick\", \"mouseenter\", \"mouseleave\"], [\"ngx-charts-svg-radial-gradient\", \"\", \"orientation\", \"vertical\", 3, \"color\", \"name\", \"startOpacity\"]], template: function PieArcComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n ɵngcc0.ɵɵtemplate(1, PieArcComponent__svg_defs_1_Template, 2, 3, \"defs\", 1);\n ɵngcc0.ɵɵelementStart(2, \"path\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function PieArcComponent_Template__svg_path_click_2_listener() { return ctx.onClick(); })(\"dblclick\", function PieArcComponent_Template__svg_path_dblclick_2_listener($event) { return ctx.onDblClick($event); })(\"mouseenter\", function PieArcComponent_Template__svg_path_mouseenter_2_listener() { return ctx.activate.emit(ctx.data); })(\"mouseleave\", function PieArcComponent_Template__svg_path_mouseleave_2_listener() { return ctx.deactivate.emit(ctx.data); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.gradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"pointer-events\", ctx.getPointerEvents());\n ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive);\n ɵngcc0.ɵɵattribute(\"d\", ctx.path)(\"fill\", ctx.getGradient());\n } }, directives: [ɵngcc1.NgIf, SvgRadialGradientComponent], encapsulation: 2, changeDetection: 0 });\nPieArcComponent.ctorParameters = () => [\n { type: ElementRef }\n];\n__decorate([\n Input()\n], PieArcComponent.prototype, \"fill\", void 0);\n__decorate([\n Input()\n], PieArcComponent.prototype, \"startAngle\", void 0);\n__decorate([\n Input()\n], PieArcComponent.prototype, \"endAngle\", void 0);\n__decorate([\n Input()\n], PieArcComponent.prototype, \"innerRadius\", void 0);\n__decorate([\n Input()\n], PieArcComponent.prototype, \"outerRadius\", void 0);\n__decorate([\n Input()\n], PieArcComponent.prototype, \"cornerRadius\", void 0);\n__decorate([\n Input()\n], PieArcComponent.prototype, \"value\", void 0);\n__decorate([\n Input()\n], PieArcComponent.prototype, \"max\", void 0);\n__decorate([\n Input()\n], PieArcComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], PieArcComponent.prototype, \"explodeSlices\", void 0);\n__decorate([\n Input()\n], PieArcComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], PieArcComponent.prototype, \"animate\", void 0);\n__decorate([\n Input()\n], PieArcComponent.prototype, \"pointerEvents\", void 0);\n__decorate([\n Input()\n], PieArcComponent.prototype, \"isActive\", void 0);\n__decorate([\n Output()\n], PieArcComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], PieArcComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], PieArcComponent.prototype, \"deactivate\", void 0);\n__decorate([\n Output()\n], PieArcComponent.prototype, \"dblclick\", void 0);\n\nlet PieChartComponent = class PieChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.labels = false;\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.explodeSlices = false;\n this.doughnut = false;\n this.arcWidth = 0.25;\n this.activeEntries = [];\n this.tooltipDisabled = false;\n this.trimLabels = true;\n this.maxLabelLength = 10;\n this.dblclick = new EventEmitter();\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n update() {\n super.update();\n if (this.labels && this.hasNoOptionalMarginsSet()) {\n this.margins = [30, 80, 30, 80];\n }\n else if (!this.labels && this.hasNoOptionalMarginsSet()) {\n // default value for margins\n this.margins = [20, 20, 20, 20];\n }\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margins,\n showLegend: this.legend,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n const xOffset = this.margins[3] + this.dims.width / 2;\n const yOffset = this.margins[0] + this.dims.height / 2;\n this.translation = `translate(${xOffset}, ${yOffset})`;\n this.outerRadius = Math.min(this.dims.width, this.dims.height);\n if (this.labels) {\n // make room for labels\n this.outerRadius /= 3;\n }\n else {\n this.outerRadius /= 2;\n }\n this.innerRadius = 0;\n if (this.doughnut) {\n this.innerRadius = this.outerRadius * (1 - this.arcWidth);\n }\n this.domain = this.getDomain();\n // sort data according to domain\n this.data = this.results.sort((a, b) => {\n return this.domain.indexOf(a.name) - this.domain.indexOf(b.name);\n });\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n }\n getLegendOptions() {\n return {\n scaleType: 'ordinal',\n domain: this.domain,\n colors: this.colors,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n hasNoOptionalMarginsSet() {\n return !this.margins || this.margins.length <= 0;\n }\n};\nPieChartComponent.ɵfac = function PieChartComponent_Factory(t) { return ɵPieChartComponent_BaseFactory(t || PieChartComponent); };\nPieChartComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PieChartComponent, selectors: [[\"ngx-charts-pie-chart\"]], contentQueries: function PieChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { labels: \"labels\", legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", explodeSlices: \"explodeSlices\", doughnut: \"doughnut\", arcWidth: \"arcWidth\", activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", trimLabels: \"trimLabels\", maxLabelLength: \"maxLabelLength\", margins: \"margins\", gradient: \"gradient\", labelFormatting: \"labelFormatting\", tooltipText: \"tooltipText\" }, outputs: { dblclick: \"dblclick\", select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 24, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"pie-chart\", \"chart\"], [\"ngx-charts-pie-series\", \"\", 3, \"colors\", \"series\", \"showLabels\", \"labelFormatting\", \"trimLabels\", \"maxLabelLength\", \"activeEntries\", \"innerRadius\", \"outerRadius\", \"explodeSlices\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipTemplate\", \"tooltipText\", \"dblclick\", \"select\", \"activate\", \"deactivate\"]], template: function PieChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function PieChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, true); })(\"legendLabelDeactivate\", function PieChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, true); })(\"legendLabelClick\", function PieChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵelementStart(2, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"dblclick\", function PieChartComponent_Template__svg_g_dblclick_2_listener($event) { return ctx.dblclick.emit($event); })(\"select\", function PieChartComponent_Template__svg_g_select_2_listener($event) { return ctx.onClick($event); })(\"activate\", function PieChartComponent_Template__svg_g_activate_2_listener($event) { return ctx.onActivate($event); })(\"deactivate\", function PieChartComponent_Template__svg_g_deactivate_2_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(21, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.translation);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"colors\", ctx.colors)(\"series\", ctx.data)(\"showLabels\", ctx.labels)(\"labelFormatting\", ctx.labelFormatting)(\"trimLabels\", ctx.trimLabels)(\"maxLabelLength\", ctx.maxLabelLength)(\"activeEntries\", ctx.activeEntries)(\"innerRadius\", ctx.innerRadius)(\"outerRadius\", ctx.outerRadius)(\"explodeSlices\", ctx.explodeSlices)(\"gradient\", ctx.gradient)(\"animations\", ctx.animations)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipText\", ctx.tooltipText);\n } }, directives: function () { return [ChartComponent,\n PieSeriesComponent]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".pie-label{font-size:11px}.pie-label.animation{-webkit-animation:750ms ease-in fadeIn;animation:750ms ease-in fadeIn}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{-webkit-animation:3s linear drawOut;animation:3s linear drawOut;-webkit-transition:d 750ms;transition:d 750ms}@-webkit-keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}@keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], PieChartComponent.prototype, \"labels\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"explodeSlices\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"doughnut\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"arcWidth\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"trimLabels\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"maxLabelLength\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n Output()\n], PieChartComponent.prototype, \"dblclick\", void 0);\n__decorate([\n Input()\n], PieChartComponent.prototype, \"margins\", void 0);\n__decorate([\n Output()\n], PieChartComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], PieChartComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], PieChartComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], PieChartComponent.prototype, \"tooltipTemplate\", void 0);\n\nfunction gridSize(dims, len, minWidth) {\n let rows = 1;\n let cols = len;\n const width = dims.width;\n if (width > minWidth) {\n while (width / cols < minWidth) {\n rows += 1;\n cols = Math.ceil(len / rows);\n }\n }\n return [cols, rows];\n}\nfunction gridLayout(dims, data, minWidth, designatedTotal) {\n const xScale = scaleBand();\n const yScale = scaleBand();\n const width = dims.width;\n const height = dims.height;\n const [columns, rows] = gridSize(dims, data.length, minWidth);\n const xDomain = [];\n const yDomain = [];\n for (let i = 0; i < rows; i++) {\n yDomain.push(i);\n }\n for (let i = 0; i < columns; i++) {\n xDomain.push(i);\n }\n xScale.domain(xDomain);\n yScale.domain(yDomain);\n xScale.rangeRound([0, width], 0.1);\n yScale.rangeRound([0, height], 0.1);\n const res = [];\n const total = designatedTotal ? designatedTotal : getTotal(data);\n const cardWidth = xScale.bandwidth();\n const cardHeight = yScale.bandwidth();\n for (let i = 0; i < data.length; i++) {\n res[i] = {};\n res[i].data = {\n name: data[i] ? data[i].name : '',\n value: data[i] ? data[i].value : undefined,\n extra: data[i] ? data[i].extra : undefined,\n label: data[i] ? data[i].label : ''\n };\n res[i].x = xScale(i % columns);\n res[i].y = yScale(Math.floor(i / columns));\n res[i].width = cardWidth;\n res[i].height = cardHeight;\n res[i].data.percent = total > 0 ? res[i].data.value / total : 0;\n res[i].data.total = total;\n }\n return res;\n}\nfunction getTotal(results) {\n return results.map(d => (d ? d.value : 0)).reduce((sum, val) => sum + val, 0);\n}\n\nlet PieGridComponent = class PieGridComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.tooltipDisabled = false;\n this.label = 'Total';\n this.minWidth = 150;\n this.activeEntries = [];\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [20, 20, 20, 20];\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.formatDates();\n this.domain = this.getDomain();\n this.data = gridLayout(this.dims, this.results, this.minWidth, this.designatedTotal);\n this.transform = `translate(${this.margin[3]} , ${this.margin[0]})`;\n this.series = this.getSeries();\n this.setColors();\n this.tooltipText = this.tooltipText || this.defaultTooltipText;\n }\n defaultTooltipText({ data }) {\n const label = trimLabel(formatLabel(data.name));\n const val = data.value.toLocaleString();\n return `\n ${label}\n ${val}\n `;\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n getSeries() {\n const total = this.designatedTotal ? this.designatedTotal : this.getTotal();\n return this.data.map(d => {\n const baselineLabelHeight = 20;\n const padding = 10;\n const name = d.data.name;\n const label = formatLabel(name);\n const value = d.data.value;\n const radius = min([d.width - padding, d.height - baselineLabelHeight]) / 2 - 5;\n const innerRadius = radius * 0.9;\n let count = 0;\n const colors = () => {\n count += 1;\n if (count === 1) {\n return 'rgba(100,100,100,0.3)';\n }\n else {\n return this.colorScale.getColor(label);\n }\n };\n const xPos = d.x + (d.width - padding) / 2;\n const yPos = d.y + (d.height - baselineLabelHeight) / 2;\n return {\n transform: `translate(${xPos}, ${yPos})`,\n colors,\n innerRadius,\n outerRadius: radius,\n name,\n label: trimLabel(label),\n total: value,\n value,\n percent: format('.1%')(d.data.percent),\n data: [\n d,\n {\n data: {\n other: true,\n value: total - value,\n name: d.data.name\n }\n }\n ]\n };\n });\n }\n getTotal() {\n return this.results.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colorScale = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n};\nPieGridComponent.ɵfac = function PieGridComponent_Factory(t) { return ɵPieGridComponent_BaseFactory(t || PieGridComponent); };\nPieGridComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PieGridComponent, selectors: [[\"ngx-charts-pie-grid\"]], contentQueries: function PieGridComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { tooltipDisabled: \"tooltipDisabled\", label: \"label\", minWidth: \"minWidth\", activeEntries: \"activeEntries\", tooltipText: \"tooltipText\", designatedTotal: \"designatedTotal\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 8, consts: [[3, \"view\", \"showLegend\", \"animations\"], [1, \"pie-grid\", \"chart\"], [\"class\", \"pie-grid-item\", 4, \"ngFor\", \"ngForOf\"], [1, \"pie-grid-item\"], [\"ngx-charts-pie-grid-series\", \"\", \"ngx-tooltip\", \"\", 3, \"colors\", \"data\", \"innerRadius\", \"outerRadius\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"], [\"class\", \"label percent-label\", \"dy\", \"-0.5em\", \"x\", \"0\", \"y\", \"5\", \"ngx-charts-count-up\", \"\", \"text-anchor\", \"middle\", 3, \"countTo\", \"countSuffix\", 4, \"ngIf\"], [\"class\", \"label percent-label\", \"dy\", \"-0.5em\", \"x\", \"0\", \"y\", \"5\", \"text-anchor\", \"middle\", 4, \"ngIf\"], [\"dy\", \"0.5em\", \"x\", \"0\", \"y\", \"5\", \"text-anchor\", \"middle\", 1, \"label\"], [\"class\", \"label\", \"dy\", \"1.23em\", \"x\", \"0\", \"text-anchor\", \"middle\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"countPrefix\", 4, \"ngIf\"], [\"class\", \"label\", \"dy\", \"1.23em\", \"x\", \"0\", \"text-anchor\", \"middle\", 4, \"ngIf\"], [\"dy\", \"-0.5em\", \"x\", \"0\", \"y\", \"5\", \"ngx-charts-count-up\", \"\", \"text-anchor\", \"middle\", 1, \"label\", \"percent-label\", 3, \"countTo\", \"countSuffix\"], [\"dy\", \"-0.5em\", \"x\", \"0\", \"y\", \"5\", \"text-anchor\", \"middle\", 1, \"label\", \"percent-label\"], [\"dy\", \"1.23em\", \"x\", \"0\", \"text-anchor\", \"middle\", \"ngx-charts-count-up\", \"\", 1, \"label\", 3, \"countTo\", \"countPrefix\"], [\"dy\", \"1.23em\", \"x\", \"0\", \"text-anchor\", \"middle\", 1, \"label\"]], template: function PieGridComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, PieGridComponent__svg_g_2_Template, 8, 19, \"g\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(5, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.series);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgForOf, PieGridSeriesComponent,\n TooltipDirective, ɵngcc1.NgIf, CountUpDirective]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".pie-grid .arc1{opacity:.4}.pie-grid .percent-label{font-size:16px;font-weight:400}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], PieGridComponent.prototype, \"designatedTotal\", void 0);\n__decorate([\n Input()\n], PieGridComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], PieGridComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n Input()\n], PieGridComponent.prototype, \"label\", void 0);\n__decorate([\n Input()\n], PieGridComponent.prototype, \"minWidth\", void 0);\n__decorate([\n Input()\n], PieGridComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Output()\n], PieGridComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], PieGridComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], PieGridComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet PieGridSeriesComponent = class PieGridSeriesComponent {\n constructor(element) {\n this.innerRadius = 70;\n this.outerRadius = 80;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.layout = pie()\n .value(d => d.data.value)\n .sort(null);\n this.arcs = this.getArcs();\n }\n getArcs() {\n return this.layout(this.data).map((arc, index) => {\n const label = arc.data.data.name;\n const other = arc.data.data.other;\n if (index === 0) {\n arc.startAngle = 0;\n }\n const color = this.colors(label);\n return {\n data: arc.data.data,\n class: 'arc ' + 'arc' + index,\n fill: color,\n startAngle: other ? 0 : arc.startAngle,\n endAngle: arc.endAngle,\n animate: this.animations && !other,\n pointerEvents: !other\n };\n });\n }\n onClick(data) {\n this.select.emit(this.data[0].data);\n }\n trackBy(index, item) {\n return item.data.name;\n }\n label(arc) {\n return arc.data.name;\n }\n color(arc) {\n return this.colors(this.label(arc));\n }\n};\nPieGridSeriesComponent.ɵfac = function PieGridSeriesComponent_Factory(t) { return new (t || PieGridSeriesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nPieGridSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PieGridSeriesComponent, selectors: [[\"g\", \"ngx-charts-pie-grid-series\", \"\"]], inputs: { innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", animations: \"animations\", colors: \"colors\", data: \"data\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c39, decls: 2, vars: 2, consts: [[1, \"pie-grid-arcs\"], [\"ngx-charts-pie-arc\", \"\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"fill\", \"value\", \"data\", \"gradient\", \"pointerEvents\", \"animate\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-pie-arc\", \"\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"fill\", \"value\", \"data\", \"gradient\", \"pointerEvents\", \"animate\", \"select\", \"activate\", \"deactivate\"]], template: function PieGridSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n ɵngcc0.ɵɵtemplate(1, PieGridSeriesComponent__svg_g_1_Template, 1, 11, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.arcs)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgForOf, PieArcComponent], encapsulation: 2, changeDetection: 0 });\nPieGridSeriesComponent.ctorParameters = () => [\n { type: ElementRef }\n];\n__decorate([\n Input()\n], PieGridSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], PieGridSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], PieGridSeriesComponent.prototype, \"innerRadius\", void 0);\n__decorate([\n Input()\n], PieGridSeriesComponent.prototype, \"outerRadius\", void 0);\n__decorate([\n Input()\n], PieGridSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], PieGridSeriesComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], PieGridSeriesComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], PieGridSeriesComponent.prototype, \"deactivate\", void 0);\n\nlet PieSeriesComponent = class PieSeriesComponent {\n constructor() {\n this.series = [];\n this.innerRadius = 60;\n this.outerRadius = 80;\n this.trimLabels = true;\n this.maxLabelLength = 10;\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dblclick = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n const pieGenerator = pie()\n .value(d => d.value)\n .sort(null);\n const arcData = pieGenerator(this.series);\n this.max = max(arcData, d => {\n return d.value;\n });\n this.data = this.calculateLabelPositions(arcData);\n this.tooltipText = this.tooltipText || this.defaultTooltipText;\n }\n midAngle(d) {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n outerArc() {\n const factor = 1.5;\n return arc()\n .innerRadius(this.outerRadius * factor)\n .outerRadius(this.outerRadius * factor);\n }\n calculateLabelPositions(pieData) {\n const factor = 1.5;\n const minDistance = 10;\n const labelPositions = pieData;\n labelPositions.forEach(d => {\n d.pos = this.outerArc().centroid(d);\n d.pos[0] = factor * this.outerRadius * (this.midAngle(d) < Math.PI ? 1 : -1);\n });\n for (let i = 0; i < labelPositions.length - 1; i++) {\n const a = labelPositions[i];\n if (!this.labelVisible(a)) {\n continue;\n }\n for (let j = i + 1; j < labelPositions.length; j++) {\n const b = labelPositions[j];\n if (!this.labelVisible(b)) {\n continue;\n }\n // if they're on the same side\n if (b.pos[0] * a.pos[0] > 0) {\n // if they're overlapping\n const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n if (o > 0) {\n // push the second up or down\n b.pos[1] += Math.sign(b.pos[0]) * o;\n }\n }\n }\n }\n return labelPositions;\n }\n labelVisible(myArc) {\n return this.showLabels && myArc.endAngle - myArc.startAngle > Math.PI / 30;\n }\n getTooltipTitle(a) {\n return this.tooltipTemplate ? undefined : this.tooltipText(a);\n }\n labelText(myArc) {\n if (this.labelFormatting) {\n return this.labelFormatting(myArc.data.name);\n }\n return this.label(myArc);\n }\n label(myArc) {\n return formatLabel(myArc.data.name);\n }\n defaultTooltipText(myArc) {\n const label = this.label(myArc);\n const val = formatLabel(myArc.data.value);\n return `\n ${escapeLabel(label)}\n ${val}\n `;\n }\n color(myArc) {\n return this.colors.getColor(this.label(myArc));\n }\n trackBy(index, item) {\n return item.data.name;\n }\n onClick(data) {\n this.select.emit(data);\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n};\nPieSeriesComponent.ɵfac = function PieSeriesComponent_Factory(t) { return new (t || PieSeriesComponent)(); };\nPieSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: PieSeriesComponent, selectors: [[\"g\", \"ngx-charts-pie-series\", \"\"]], inputs: { series: \"series\", innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", trimLabels: \"trimLabels\", maxLabelLength: \"maxLabelLength\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", tooltipText: \"tooltipText\", colors: \"colors\", dims: \"dims\", explodeSlices: \"explodeSlices\", showLabels: \"showLabels\", gradient: \"gradient\", activeEntries: \"activeEntries\", labelFormatting: \"labelFormatting\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dblclick: \"dblclick\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c40, decls: 1, vars: 2, consts: [[4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-pie-label\", \"\", 3, \"data\", \"radius\", \"color\", \"label\", \"labelTrim\", \"labelTrimSize\", \"max\", \"value\", \"explodeSlices\", \"animations\", 4, \"ngIf\"], [\"ngx-charts-pie-arc\", \"\", \"ngx-tooltip\", \"\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"fill\", \"value\", \"gradient\", \"data\", \"max\", \"explodeSlices\", \"isActive\", \"animate\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\", \"dblclick\"], [\"ngx-charts-pie-label\", \"\", 3, \"data\", \"radius\", \"color\", \"label\", \"labelTrim\", \"labelTrimSize\", \"max\", \"value\", \"explodeSlices\", \"animations\"]], template: function PieSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, PieSeriesComponent__svg_g_0_Template, 3, 19, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.data)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf, PieArcComponent,\n TooltipDirective,\n PieLabelComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"series\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"dims\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"innerRadius\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"outerRadius\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"explodeSlices\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"showLabels\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"trimLabels\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"maxLabelLength\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"tooltipText\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input()\n], PieSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], PieSeriesComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], PieSeriesComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], PieSeriesComponent.prototype, \"deactivate\", void 0);\n__decorate([\n Output()\n], PieSeriesComponent.prototype, \"dblclick\", void 0);\n\nlet PieChartModule = class PieChartModule {\n};\nPieChartModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: PieChartModule });\nPieChartModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function PieChartModule_Factory(t) { return new (t || PieChartModule)(); }, imports: [[ChartCommonModule]] });\n\nlet PolarChartModule = class PolarChartModule {\n};\nPolarChartModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: PolarChartModule });\nPolarChartModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function PolarChartModule_Factory(t) { return new (t || PolarChartModule)(); }, imports: [[ChartCommonModule, PieChartModule, LineChartModule]] });\n\nlet CardComponent = class CardComponent {\n constructor(element, cd, zone) {\n this.cd = cd;\n this.zone = zone;\n this.animations = true;\n this.select = new EventEmitter();\n this.value = '';\n this.textFontSize = 12;\n this.textTransform = '';\n this.initialized = false;\n this.bandHeight = 10;\n this.textPadding = [10, 20, 5, 20];\n this.labelFontSize = 15;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n ngOnDestroy() {\n cancelAnimationFrame(this.animationReq);\n }\n update() {\n this.zone.run(() => {\n const hasValue = this.data && typeof this.data.value !== 'undefined';\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n const labelFormatting = this.labelFormatting || (card => escapeLabel(trimLabel(card.label, 55)));\n this.transform = `translate(${this.x} , ${this.y})`;\n this.textWidth = Math.max(0, this.width) - this.textPadding[1] - this.textPadding[3];\n this.cardWidth = Math.max(0, this.width);\n this.cardHeight = Math.max(0, this.height);\n this.label = this.label ? this.label : this.data.name;\n const cardData = {\n label: this.label,\n data: this.data,\n value: this.data.value\n };\n this.formattedLabel = labelFormatting(cardData);\n this.transformBand = `translate(0 , ${this.cardHeight - this.bandHeight})`;\n const value = hasValue ? valueFormatting(cardData) : '';\n this.value = this.paddedValue(value);\n this.setPadding();\n this.bandPath = roundedRect(0, 0, this.cardWidth, this.bandHeight, 3, [false, false, true, true]);\n setTimeout(() => {\n this.scaleText();\n this.value = value;\n if (hasValue && !this.initialized) {\n setTimeout(() => this.startCount(), 20);\n }\n }, 8);\n });\n }\n paddedValue(value) {\n if (this.medianSize && this.medianSize > value.length) {\n value += '\\u2007'.repeat(this.medianSize - value.length);\n }\n return value;\n }\n startCount() {\n if (!this.initialized && this.animations) {\n cancelAnimationFrame(this.animationReq);\n const val = this.data.value;\n const decs = decimalChecker(val);\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n const callback = ({ value, finished }) => {\n this.zone.run(() => {\n value = finished ? val : value;\n this.value = valueFormatting({ label: this.label, data: this.data, value });\n if (!finished) {\n this.value = this.paddedValue(this.value);\n }\n this.cd.markForCheck();\n });\n };\n this.animationReq = count(0, val, decs, 1, callback);\n this.initialized = true;\n }\n }\n scaleText() {\n this.zone.run(() => {\n const { width, height } = this.textEl.nativeElement.getBoundingClientRect();\n if (width === 0 || height === 0) {\n return;\n }\n const textPadding = (this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8);\n const availableWidth = this.cardWidth - 2 * textPadding;\n const availableHeight = this.cardHeight / 3;\n const resizeScale = Math.min(availableWidth / width, availableHeight / height);\n this.textFontSize = Math.floor(this.textFontSize * resizeScale);\n this.labelFontSize = Math.min(this.textFontSize, 15);\n this.setPadding();\n this.cd.markForCheck();\n });\n }\n setPadding() {\n this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8;\n const padding = this.cardHeight / 2;\n this.textPadding[0] = padding - this.textFontSize - this.labelFontSize / 2;\n this.textPadding[2] = padding - this.labelFontSize;\n }\n onClick() {\n this.select.emit(this.data);\n }\n};\nCardComponent.ɵfac = function CardComponent_Factory(t) { return new (t || CardComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nCardComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CardComponent, selectors: [[\"g\", \"ngx-charts-card\", \"\"]], viewQuery: function CardComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c41, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.textEl = _t.first);\n } }, inputs: { animations: \"animations\", label: \"label\", color: \"color\", bandColor: \"bandColor\", textColor: \"textColor\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", data: \"data\", medianSize: \"medianSize\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c42, decls: 10, vars: 25, consts: [[1, \"cell\", 3, \"click\"], [\"rx\", \"3\", \"ry\", \"3\", 1, \"card\"], [\"class\", \"card-band\", \"stroke\", \"none\", 4, \"ngIf\"], [\"x\", \"5\", \"alignment-baseline\", \"hanging\", 1, \"trimmed-label\"], [3, \"innerHTML\"], [\"text-anchor\", \"start\", \"alignment-baseline\", \"hanging\", 1, \"value-text\"], [\"textEl\", \"\"], [\"stroke\", \"none\", 1, \"card-band\"]], template: function CardComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function CardComponent_Template__svg_g_click_0_listener() { return ctx.onClick(); });\n ɵngcc0.ɵɵelement(1, \"rect\", 1);\n ɵngcc0.ɵɵtemplate(2, CardComponent__svg_path_2_Template, 1, 3, \"path\", 2);\n ɵngcc0.ɵɵelementStart(3, \"title\");\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"foreignObject\", 3);\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelement(6, \"p\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(7, \"text\", 5, 6);\n ɵngcc0.ɵɵtext(9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"fill\", ctx.color);\n ɵngcc0.ɵɵattribute(\"width\", ctx.cardWidth)(\"height\", ctx.cardHeight);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.bandColor && ctx.bandColor !== ctx.color);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx.label);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"x\", ctx.textPadding[3])(\"y\", ctx.cardHeight - ctx.textPadding[2])(\"width\", ctx.textWidth)(\"height\", ctx.labelFontSize + ctx.textPadding[2]);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"color\", ctx.textColor)(\"font-size\", ctx.labelFontSize, \"px\")(\"line-height\", ctx.labelFontSize, \"px\");\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx.formattedLabel, ɵngcc0.ɵɵsanitizeHtml);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"fill\", ctx.textColor)(\"font-size\", ctx.textFontSize, \"pt\");\n ɵngcc0.ɵɵattribute(\"x\", ctx.textPadding[3])(\"y\", ctx.textPadding[0]);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.value, \" \");\n } }, directives: [ɵngcc1.NgIf], encapsulation: 2, changeDetection: 0 });\nCardComponent.ctorParameters = () => [\n { type: ElementRef },\n { type: ChangeDetectorRef },\n { type: NgZone }\n];\n__decorate([\n Input()\n], CardComponent.prototype, \"color\", void 0);\n__decorate([\n Input()\n], CardComponent.prototype, \"bandColor\", void 0);\n__decorate([\n Input()\n], CardComponent.prototype, \"textColor\", void 0);\n__decorate([\n Input()\n], CardComponent.prototype, \"x\", void 0);\n__decorate([\n Input()\n], CardComponent.prototype, \"y\", void 0);\n__decorate([\n Input()\n], CardComponent.prototype, \"width\", void 0);\n__decorate([\n Input()\n], CardComponent.prototype, \"height\", void 0);\n__decorate([\n Input()\n], CardComponent.prototype, \"label\", void 0);\n__decorate([\n Input()\n], CardComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], CardComponent.prototype, \"medianSize\", void 0);\n__decorate([\n Input()\n], CardComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n Input()\n], CardComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n Input()\n], CardComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], CardComponent.prototype, \"select\", void 0);\n__decorate([\n ViewChild('textEl', { static: false })\n], CardComponent.prototype, \"textEl\", void 0);\n\n/**\n * Converts a hex to RGB\n *\n * @export\n */\nfunction hexToRgb(value) {\n // deprecated, use d3.color()\n return rgb(value);\n}\n/**\n * Accepts a color (string) and returns a inverted hex color (string)\n * http://stackoverflow.com/questions/9600295/automatically-change-text-color-to-assure-readability\n *\n * @export\n */\nfunction invertColor(value) {\n const color = rgb(value);\n const { r, g, b, opacity } = color;\n if (opacity === 0) {\n return color.toString();\n }\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n const depth = yiq >= 128 ? -0.8 : 0.8;\n return shadeRGBColor(color, depth);\n}\n/**\n * Given a rgb, it will darken/lighten\n * http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors\n *\n * @export\n * @param \\{ r, g, b }\n */\nfunction shadeRGBColor({ r, g, b }, percent) {\n const t = percent < 0 ? 0 : 255;\n const p = percent < 0 ? percent * -1 : percent;\n r = Math.round((t - r) * p) + r;\n g = Math.round((t - g) * p) + g;\n b = Math.round((t - b) * p) + b;\n return `rgb(${r}, ${g}, ${b})`;\n}\n\nlet CardSeriesComponent = class CardSeriesComponent {\n constructor() {\n this.innerPadding = 15;\n this.emptyColor = 'rgba(0, 0, 0, 0)';\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n if (this.data.length > 2) {\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n const sortedLengths = this.data\n .map(d => {\n const hasValue = d && d.data && typeof d.data.value !== 'undefined' && d.data.value !== null;\n return hasValue\n ? valueFormatting({\n data: d.data,\n label: d ? d.data.name : '',\n value: d && d.data ? d.data.value : ''\n }).length\n : 0;\n })\n .sort((a, b) => b - a);\n const idx = Math.ceil(this.data.length / 2);\n this.medianSize = sortedLengths[idx];\n }\n const cards = this.getCards();\n this.cards = cards.filter(d => d.data.value !== null);\n this.emptySlots = cards.filter(d => d.data.value === null);\n }\n getCards() {\n const yPadding = typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[0] + this.innerPadding[2];\n const xPadding = typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[1] + this.innerPadding[3];\n return this.data.map((d, index) => {\n let label = d.data.name;\n if (label && label.constructor.name === 'Date') {\n label = label.toLocaleDateString();\n }\n else {\n label = label ? label.toLocaleString() : label;\n }\n const value = d.data.value;\n const valueColor = label ? this.colors.getColor(label) : this.emptyColor;\n const color = this.cardColor || valueColor || '#000';\n return {\n x: d.x,\n y: d.y,\n width: d.width - xPadding,\n height: d.height - yPadding,\n color,\n bandColor: this.bandColor || valueColor,\n textColor: this.textColor || invertColor(color),\n label,\n data: d.data,\n tooltipText: `${label}: ${value}`\n };\n });\n }\n trackBy(index, card) {\n return card.label;\n }\n onClick(data) {\n this.select.emit(data);\n }\n};\nCardSeriesComponent.ɵfac = function CardSeriesComponent_Factory(t) { return new (t || CardSeriesComponent)(); };\nCardSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: CardSeriesComponent, selectors: [[\"g\", \"ngx-charts-card-series\", \"\"]], inputs: { innerPadding: \"innerPadding\", emptyColor: \"emptyColor\", animations: \"animations\", data: \"data\", slots: \"slots\", dims: \"dims\", colors: \"colors\", cardColor: \"cardColor\", bandColor: \"bandColor\", textColor: \"textColor\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c43, decls: 2, vars: 4, consts: [[\"class\", \"card-empty\", \"rx\", \"3\", \"ry\", \"3\", 3, \"fill\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-card\", \"\", 3, \"x\", \"y\", \"width\", \"height\", \"color\", \"bandColor\", \"textColor\", \"data\", \"label\", \"medianSize\", \"valueFormatting\", \"labelFormatting\", \"animations\", \"select\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"rx\", \"3\", \"ry\", \"3\", 1, \"card-empty\"], [\"ngx-charts-card\", \"\", 3, \"x\", \"y\", \"width\", \"height\", \"color\", \"bandColor\", \"textColor\", \"data\", \"label\", \"medianSize\", \"valueFormatting\", \"labelFormatting\", \"animations\", \"select\"]], template: function CardSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CardSeriesComponent__svg_rect_0_Template, 1, 6, \"rect\", 0);\n ɵngcc0.ɵɵtemplate(1, CardSeriesComponent__svg_g_1_Template, 1, 13, \"g\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.emptySlots)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.cards)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgForOf, CardComponent], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], CardSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], CardSeriesComponent.prototype, \"slots\", void 0);\n__decorate([\n Input()\n], CardSeriesComponent.prototype, \"dims\", void 0);\n__decorate([\n Input()\n], CardSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], CardSeriesComponent.prototype, \"innerPadding\", void 0);\n__decorate([\n Input()\n], CardSeriesComponent.prototype, \"cardColor\", void 0);\n__decorate([\n Input()\n], CardSeriesComponent.prototype, \"bandColor\", void 0);\n__decorate([\n Input()\n], CardSeriesComponent.prototype, \"emptyColor\", void 0);\n__decorate([\n Input()\n], CardSeriesComponent.prototype, \"textColor\", void 0);\n__decorate([\n Input()\n], CardSeriesComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n Input()\n], CardSeriesComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n Input()\n], CardSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], CardSeriesComponent.prototype, \"select\", void 0);\n\nlet NumberCardComponent = class NumberCardComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.emptyColor = 'rgba(0, 0, 0, 0)';\n this.innerPadding = 15;\n this.margin = [10, 10, 10, 10];\n }\n get clickable() {\n return !!this.select.observers.length;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.formatDates();\n this.domain = this.getDomain();\n this.setColors();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n const size = gridSize(this.dims, this.results.length, 150);\n const N = size[0] * size[1];\n const data = this.results.slice();\n while (data.length < N) {\n data.push({ value: null });\n }\n this.data = gridLayout(this.dims, data, 150, this.designatedTotal);\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n }\n};\nNumberCardComponent.ɵfac = function NumberCardComponent_Factory(t) { return ɵNumberCardComponent_BaseFactory(t || NumberCardComponent); };\nNumberCardComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: NumberCardComponent, selectors: [[\"ngx-charts-number-card\"]], inputs: { emptyColor: \"emptyColor\", innerPadding: \"innerPadding\", cardColor: \"cardColor\", bandColor: \"bandColor\", textColor: \"textColor\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", designatedTotal: \"designatedTotal\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 20, consts: [[3, \"view\", \"showLegend\", \"animations\"], [1, \"number-card\", \"chart\"], [\"ngx-charts-card-series\", \"\", 3, \"colors\", \"cardColor\", \"bandColor\", \"textColor\", \"emptyColor\", \"data\", \"dims\", \"innerPadding\", \"valueFormatting\", \"labelFormatting\", \"animations\", \"select\"]], template: function NumberCardComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵelementStart(2, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"select\", function NumberCardComponent_Template__svg_g_select_2_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"clickable\", ctx.clickable);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"colors\", ctx.colors)(\"cardColor\", ctx.cardColor)(\"bandColor\", ctx.bandColor)(\"textColor\", ctx.textColor)(\"emptyColor\", ctx.emptyColor)(\"data\", ctx.data)(\"dims\", ctx.dims)(\"innerPadding\", ctx.innerPadding)(\"valueFormatting\", ctx.valueFormatting)(\"labelFormatting\", ctx.labelFormatting)(\"animations\", ctx.animations);\n } }, directives: [ChartComponent,\n CardSeriesComponent], styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \"ngx-charts-number-card .cell .trimmed-label{font-size:12px;pointer-events:none;overflow:hidden;text-align:left;line-height:1em}ngx-charts-number-card .cell .trimmed-label p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;padding:0;margin:0}ngx-charts-number-card .cell .value-text{pointer-events:none}ngx-charts-number-card .number-card.clickable .cell .card,ngx-charts-number-card .number-card.clickable .cell .card-band{cursor:pointer}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], NumberCardComponent.prototype, \"cardColor\", void 0);\n__decorate([\n Input()\n], NumberCardComponent.prototype, \"bandColor\", void 0);\n__decorate([\n Input()\n], NumberCardComponent.prototype, \"emptyColor\", void 0);\n__decorate([\n Input()\n], NumberCardComponent.prototype, \"innerPadding\", void 0);\n__decorate([\n Input()\n], NumberCardComponent.prototype, \"textColor\", void 0);\n__decorate([\n Input()\n], NumberCardComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n Input()\n], NumberCardComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n Input()\n], NumberCardComponent.prototype, \"designatedTotal\", void 0);\n\nlet NumberCardModule = class NumberCardModule {\n};\nNumberCardModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NumberCardModule });\nNumberCardModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function NumberCardModule_Factory(t) { return new (t || NumberCardModule)(); }, imports: [[ChartCommonModule]] });\n\nlet TreeMapCellComponent = class TreeMapCellComponent {\n constructor(element) {\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.initialized = false;\n this.element = element.nativeElement;\n }\n ngOnChanges() {\n this.update();\n this.valueFormatting = this.valueFormatting || (value => value.toLocaleString());\n const labelFormatting = this.labelFormatting || (cell => escapeLabel(trimLabel(cell.label, 55)));\n const cellData = {\n data: this.data,\n label: this.label,\n value: this.value\n };\n this.formattedValue = this.valueFormatting(cellData.value);\n this.formattedLabel = labelFormatting(cellData);\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n this.gradientStops = this.getGradientStops();\n }\n update() {\n if (this.initialized) {\n this.animateToCurrentForm();\n }\n else {\n if (this.animations) {\n this.loadAnimation();\n }\n this.initialized = true;\n }\n }\n loadAnimation() {\n const node = select(this.element).select('.cell');\n node\n .attr('opacity', 0)\n .attr('x', this.x)\n .attr('y', this.y);\n this.animateToCurrentForm();\n }\n getTextColor() {\n return invertColor(this.fill);\n }\n animateToCurrentForm() {\n const node = select(this.element).select('.cell');\n if (this.animations) {\n node\n .transition()\n .duration(750)\n .attr('opacity', 1)\n .attr('x', this.x)\n .attr('y', this.y)\n .attr('width', this.width)\n .attr('height', this.height);\n }\n else {\n node\n .attr('opacity', 1)\n .attr('x', this.x)\n .attr('y', this.y)\n .attr('width', this.width)\n .attr('height', this.height);\n }\n }\n onClick() {\n this.select.emit(this.data);\n }\n getGradientStops() {\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: 0.3\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n};\nTreeMapCellComponent.ɵfac = function TreeMapCellComponent_Factory(t) { return new (t || TreeMapCellComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nTreeMapCellComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: TreeMapCellComponent, selectors: [[\"g\", \"ngx-charts-tree-map-cell\", \"\"]], inputs: { gradient: \"gradient\", animations: \"animations\", valueFormatting: \"valueFormatting\", data: \"data\", fill: \"fill\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", label: \"label\", value: \"value\", valueType: \"valueType\", labelFormatting: \"labelFormatting\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c44, decls: 4, vars: 9, consts: [[4, \"ngIf\"], [1, \"cell\", 3, \"click\"], [\"class\", \"treemap-label\", 3, \"pointer-events\", 4, \"ngIf\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"], [1, \"treemap-label\"], [1, \"treemap-label\", 3, \"innerHTML\"], [\"class\", \"treemap-val\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"valueFormatting\", 4, \"ngIf\"], [\"class\", \"treemap-val\", 4, \"ngIf\"], [\"ngx-charts-count-up\", \"\", 1, \"treemap-val\", 3, \"countTo\", \"valueFormatting\"], [1, \"treemap-val\"]], template: function TreeMapCellComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, TreeMapCellComponent__svg_defs_1_Template, 2, 2, \"defs\", 0);\n ɵngcc0.ɵɵelementStart(2, \"rect\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function TreeMapCellComponent_Template__svg_rect_click_2_listener() { return ctx.onClick(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, TreeMapCellComponent__svg_foreignObject_3_Template, 6, 15, \"foreignObject\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.gradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"cursor\", \"pointer\");\n ɵngcc0.ɵɵattribute(\"fill\", ctx.gradient ? ctx.gradientUrl : ctx.fill)(\"width\", ctx.width)(\"height\", ctx.height)(\"x\", ctx.x)(\"y\", ctx.y);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.width >= 70 && ctx.height >= 35);\n } }, directives: [ɵngcc1.NgIf, SvgLinearGradientComponent,\n CountUpDirective], encapsulation: 2, changeDetection: 0 });\nTreeMapCellComponent.ctorParameters = () => [\n { type: ElementRef }\n];\n__decorate([\n Input()\n], TreeMapCellComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], TreeMapCellComponent.prototype, \"fill\", void 0);\n__decorate([\n Input()\n], TreeMapCellComponent.prototype, \"x\", void 0);\n__decorate([\n Input()\n], TreeMapCellComponent.prototype, \"y\", void 0);\n__decorate([\n Input()\n], TreeMapCellComponent.prototype, \"width\", void 0);\n__decorate([\n Input()\n], TreeMapCellComponent.prototype, \"height\", void 0);\n__decorate([\n Input()\n], TreeMapCellComponent.prototype, \"label\", void 0);\n__decorate([\n Input()\n], TreeMapCellComponent.prototype, \"value\", void 0);\n__decorate([\n Input()\n], TreeMapCellComponent.prototype, \"valueType\", void 0);\n__decorate([\n Input()\n], TreeMapCellComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n Input()\n], TreeMapCellComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n Input()\n], TreeMapCellComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], TreeMapCellComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], TreeMapCellComponent.prototype, \"select\", void 0);\n\nlet TreeMapCellSeriesComponent = class TreeMapCellSeriesComponent {\n constructor() {\n this.gradient = false;\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.cells = this.getCells();\n }\n getCells() {\n return this.data.children\n .filter(d => {\n return d.depth === 1;\n })\n .map((d, index) => {\n const label = d.id;\n return {\n data: d.data,\n x: d.x0,\n y: d.y0,\n width: d.x1 - d.x0,\n height: d.y1 - d.y0,\n fill: this.colors.getColor(label),\n label,\n value: d.value,\n valueType: d.valueType\n };\n });\n }\n getTooltipText({ label, value }) {\n return `\n ${escapeLabel(label)}\n ${value.toLocaleString()}\n `;\n }\n onClick(data) {\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.label;\n }\n};\nTreeMapCellSeriesComponent.ɵfac = function TreeMapCellSeriesComponent_Factory(t) { return new (t || TreeMapCellSeriesComponent)(); };\nTreeMapCellSeriesComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: TreeMapCellSeriesComponent, selectors: [[\"g\", \"ngx-charts-tree-map-cell-series\", \"\"]], inputs: { gradient: \"gradient\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", data: \"data\", dims: \"dims\", colors: \"colors\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c45, decls: 1, vars: 2, consts: [[\"ngx-charts-tree-map-cell\", \"\", \"ngx-tooltip\", \"\", 3, \"data\", \"x\", \"y\", \"width\", \"height\", \"fill\", \"label\", \"value\", \"valueType\", \"valueFormatting\", \"labelFormatting\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-tree-map-cell\", \"\", \"ngx-tooltip\", \"\", 3, \"data\", \"x\", \"y\", \"width\", \"height\", \"fill\", \"label\", \"value\", \"valueType\", \"valueFormatting\", \"labelFormatting\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\"]], template: function TreeMapCellSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TreeMapCellSeriesComponent__svg_g_0_Template, 1, 19, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.cells)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgForOf, TreeMapCellComponent,\n TooltipDirective], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], TreeMapCellSeriesComponent.prototype, \"data\", void 0);\n__decorate([\n Input()\n], TreeMapCellSeriesComponent.prototype, \"dims\", void 0);\n__decorate([\n Input()\n], TreeMapCellSeriesComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], TreeMapCellSeriesComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n Input()\n], TreeMapCellSeriesComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n Input()\n], TreeMapCellSeriesComponent.prototype, \"gradient\", void 0);\n__decorate([\n Input()\n], TreeMapCellSeriesComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], TreeMapCellSeriesComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input()\n], TreeMapCellSeriesComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], TreeMapCellSeriesComponent.prototype, \"select\", void 0);\n\nlet TreeMapComponent = class TreeMapComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.tooltipDisabled = false;\n this.gradient = false;\n this.select = new EventEmitter();\n this.margin = [10, 10, 10, 10];\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.domain = this.getDomain();\n this.treemap = treemap().size([this.dims.width, this.dims.height]);\n const rootNode = {\n name: 'root',\n value: 0,\n isRoot: true\n };\n const root = stratify()\n .id(d => {\n let label = d.name;\n if (label.constructor.name === 'Date') {\n label = label.toLocaleDateString();\n }\n else {\n label = label.toLocaleString();\n }\n return label;\n })\n .parentId(d => (d.isRoot ? null : 'root'))([rootNode, ...this.results])\n .sum(d => d.value);\n this.data = this.treemap(root);\n this.setColors();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getDomain() {\n return this.results.map(d => d.name);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n }\n};\nTreeMapComponent.ɵfac = function TreeMapComponent_Factory(t) { return ɵTreeMapComponent_BaseFactory(t || TreeMapComponent); };\nTreeMapComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: TreeMapComponent, selectors: [[\"ngx-charts-tree-map\"]], contentQueries: function TreeMapComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", results: \"results\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 16, consts: [[3, \"view\", \"showLegend\", \"animations\"], [1, \"tree-map\", \"chart\"], [\"ngx-charts-tree-map-cell-series\", \"\", 3, \"colors\", \"data\", \"dims\", \"tooltipDisabled\", \"tooltipTemplate\", \"valueFormatting\", \"labelFormatting\", \"gradient\", \"animations\", \"select\"]], template: function TreeMapComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵelementStart(2, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"select\", function TreeMapComponent_Template__svg_g_select_2_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(13, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"colors\", ctx.colors)(\"data\", ctx.data)(\"dims\", ctx.dims)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"valueFormatting\", ctx.valueFormatting)(\"labelFormatting\", ctx.labelFormatting)(\"gradient\", ctx.gradient)(\"animations\", ctx.animations);\n } }, directives: [ChartComponent,\n TreeMapCellSeriesComponent], styles: [\".tree-map .treemap-val{font-size:1.3em;padding-top:5px;display:inline-block}.tree-map .treemap-label p{display:table-cell;text-align:center;line-height:1.2em;vertical-align:middle}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], TreeMapComponent.prototype, \"results\", void 0);\n__decorate([\n Input()\n], TreeMapComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], TreeMapComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n Input()\n], TreeMapComponent.prototype, \"labelFormatting\", void 0);\n__decorate([\n Input()\n], TreeMapComponent.prototype, \"gradient\", void 0);\n__decorate([\n Output()\n], TreeMapComponent.prototype, \"select\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], TreeMapComponent.prototype, \"tooltipTemplate\", void 0);\n\nlet TreeMapModule = class TreeMapModule {\n};\nTreeMapModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: TreeMapModule });\nTreeMapModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function TreeMapModule_Factory(t) { return new (t || TreeMapModule)(); }, imports: [[ChartCommonModule]] });\n\nlet LinearGaugeComponent = class LinearGaugeComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.min = 0;\n this.max = 100;\n this.value = 0;\n this.margin = [10, 20, 10, 20];\n this.valueResizeScale = 1;\n this.unitsResizeScale = 1;\n this.valueTextTransform = '';\n this.valueTranslate = '';\n this.unitsTextTransform = '';\n this.unitsTranslate = '';\n }\n ngAfterViewInit() {\n super.ngAfterViewInit();\n setTimeout(() => {\n this.scaleText('value');\n this.scaleText('units');\n });\n }\n update() {\n super.update();\n this.hasPreviousValue = this.previousValue !== undefined;\n this.max = Math.max(this.max, this.value);\n this.min = Math.min(this.min, this.value);\n if (this.hasPreviousValue) {\n this.max = Math.max(this.max, this.previousValue);\n this.min = Math.min(this.min, this.previousValue);\n }\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.valueDomain = this.getValueDomain();\n this.valueScale = this.getValueScale();\n this.displayValue = this.getDisplayValue();\n this.setColors();\n const xOffset = this.margin[3] + this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n this.transform = `translate(${xOffset}, ${yOffset})`;\n this.transformLine = `translate(${this.margin[3] + this.valueScale(this.previousValue)}, ${yOffset})`;\n this.valueTranslate = `translate(0, -15)`;\n this.unitsTranslate = `translate(0, 15)`;\n setTimeout(() => this.scaleText('value'), 50);\n setTimeout(() => this.scaleText('units'), 50);\n }\n getValueDomain() {\n return [this.min, this.max];\n }\n getValueScale() {\n return scaleLinear()\n .range([0, this.dims.width])\n .domain(this.valueDomain);\n }\n getDisplayValue() {\n if (this.valueFormatting) {\n return this.valueFormatting(this.value);\n }\n return this.value.toLocaleString();\n }\n scaleText(element, repeat = true) {\n let el;\n let resizeScale;\n if (element === 'value') {\n el = this.valueTextEl;\n resizeScale = this.valueResizeScale;\n }\n else {\n el = this.unitsTextEl;\n resizeScale = this.unitsResizeScale;\n }\n const { width, height } = el.nativeElement.getBoundingClientRect();\n if (width === 0 || height === 0)\n return;\n const oldScale = resizeScale;\n const availableWidth = this.dims.width;\n const availableHeight = Math.max(this.dims.height / 2 - 15, 0);\n const resizeScaleWidth = Math.floor((availableWidth / (width / resizeScale)) * 100) / 100;\n const resizeScaleHeight = Math.floor((availableHeight / (height / resizeScale)) * 100) / 100;\n resizeScale = Math.min(resizeScaleHeight, resizeScaleWidth);\n if (resizeScale !== oldScale) {\n if (element === 'value') {\n this.valueResizeScale = resizeScale;\n this.valueTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n else {\n this.unitsResizeScale = resizeScale;\n this.unitsTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n this.cd.markForCheck();\n if (repeat) {\n setTimeout(() => {\n this.scaleText(element, false);\n }, 50);\n }\n }\n }\n onClick() {\n this.select.emit({\n name: 'Value',\n value: this.value\n });\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, 'ordinal', [this.value], this.customColors);\n }\n};\nLinearGaugeComponent.ɵfac = function LinearGaugeComponent_Factory(t) { return ɵLinearGaugeComponent_BaseFactory(t || LinearGaugeComponent); };\nLinearGaugeComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: LinearGaugeComponent, selectors: [[\"ngx-charts-linear-gauge\"]], viewQuery: function LinearGaugeComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c46, true);\n ɵngcc0.ɵɵviewQuery(_c47, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.valueTextEl = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.unitsTextEl = _t.first);\n } }, inputs: { min: \"min\", max: \"max\", value: \"value\", units: \"units\", previousValue: \"previousValue\", valueFormatting: \"valueFormatting\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 15, vars: 38, consts: [[3, \"view\", \"showLegend\", \"animations\", \"click\"], [1, \"linear-gauge\", \"chart\"], [\"ngx-charts-bar\", \"\", 1, \"background-bar\", 3, \"width\", \"height\", \"x\", \"y\", \"data\", \"orientation\", \"roundEdges\", \"animations\"], [\"ngx-charts-bar\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"data\", \"orientation\", \"roundEdges\", \"animations\"], [\"x1\", \"0\", \"y1\", \"5\", \"x2\", \"0\", \"y2\", \"15\", 4, \"ngIf\"], [\"x1\", \"0\", \"y1\", \"-5\", \"x2\", \"0\", \"y2\", \"-15\", 4, \"ngIf\"], [\"alignment-baseline\", \"after-edge\", 1, \"value\"], [\"valueTextEl\", \"\"], [\"alignment-baseline\", \"before-edge\", 1, \"units\"], [\"unitsTextEl\", \"\"], [\"x1\", \"0\", \"y1\", \"5\", \"x2\", \"0\", \"y2\", \"15\"], [\"x1\", \"0\", \"y1\", \"-5\", \"x2\", \"0\", \"y2\", \"-15\"]], template: function LinearGaugeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function LinearGaugeComponent_Template_ngx_charts_chart_click_0_listener() { return ctx.onClick(); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵelement(2, \"g\", 2);\n ɵngcc0.ɵɵelement(3, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, LinearGaugeComponent__svg_line_4_Template, 1, 2, \"line\", 4);\n ɵngcc0.ɵɵtemplate(5, LinearGaugeComponent__svg_line_5_Template, 1, 2, \"line\", 5);\n ɵngcc0.ɵɵelementStart(6, \"g\");\n ɵngcc0.ɵɵelementStart(7, \"g\");\n ɵngcc0.ɵɵelementStart(8, \"text\", 6, 7);\n ɵngcc0.ɵɵtext(10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(11, \"g\");\n ɵngcc0.ɵɵelementStart(12, \"text\", 8, 9);\n ɵngcc0.ɵɵtext(14);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(33, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"width\", ctx.dims.width)(\"height\", 3)(\"x\", ctx.margin[3])(\"y\", ctx.dims.height / 2 + ctx.margin[0] - 2)(\"data\", ɵngcc0.ɵɵpureFunction0(36, _c48))(\"orientation\", \"horizontal\")(\"roundEdges\", true)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"width\", ctx.valueScale(ctx.value))(\"height\", 3)(\"x\", ctx.margin[3])(\"y\", ctx.dims.height / 2 + ctx.margin[0] - 2)(\"fill\", ctx.colors.getColor(ctx.units))(\"data\", ɵngcc0.ɵɵpureFunction0(37, _c48))(\"orientation\", \"horizontal\")(\"roundEdges\", true)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasPreviousValue);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasPreviousValue);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.valueTranslate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"text-anchor\", \"middle\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx.valueTextTransform);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.displayValue, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.unitsTranslate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"text-anchor\", \"middle\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx.unitsTextTransform);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.units, \" \");\n } }, directives: [ChartComponent,\n BarComponent, ɵngcc1.NgIf], styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".linear-gauge{cursor:pointer}.linear-gauge .background-bar path{fill:rgba(0,0,0,.05)}.linear-gauge .units{fill:#666}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], LinearGaugeComponent.prototype, \"min\", void 0);\n__decorate([\n Input()\n], LinearGaugeComponent.prototype, \"max\", void 0);\n__decorate([\n Input()\n], LinearGaugeComponent.prototype, \"value\", void 0);\n__decorate([\n Input()\n], LinearGaugeComponent.prototype, \"units\", void 0);\n__decorate([\n Input()\n], LinearGaugeComponent.prototype, \"previousValue\", void 0);\n__decorate([\n Input()\n], LinearGaugeComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n ViewChild('valueTextEl')\n], LinearGaugeComponent.prototype, \"valueTextEl\", void 0);\n__decorate([\n ViewChild('unitsTextEl')\n], LinearGaugeComponent.prototype, \"unitsTextEl\", void 0);\n\nlet GaugeComponent = class GaugeComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.min = 0;\n this.max = 100;\n this.bigSegments = 10;\n this.smallSegments = 5;\n this.showAxis = true;\n this.startAngle = -120;\n this.angleSpan = 240;\n this.activeEntries = [];\n this.tooltipDisabled = false;\n this.showText = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.resizeScale = 1;\n this.rotation = '';\n this.textTransform = 'scale(1, 1)';\n this.cornerRadius = 10;\n }\n ngAfterViewInit() {\n super.ngAfterViewInit();\n setTimeout(() => this.scaleText());\n }\n update() {\n super.update();\n if (!this.showAxis) {\n if (!this.margin) {\n this.margin = [10, 20, 10, 20];\n }\n }\n else {\n if (!this.margin) {\n this.margin = [60, 100, 60, 100];\n }\n }\n // make the starting angle positive\n if (this.startAngle < 0) {\n this.startAngle = (this.startAngle % 360) + 360;\n }\n this.angleSpan = Math.min(this.angleSpan, 360);\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showLegend: this.legend,\n legendPosition: this.legendPosition\n });\n this.domain = this.getDomain();\n this.valueDomain = this.getValueDomain();\n this.valueScale = this.getValueScale();\n this.displayValue = this.getDisplayValue();\n this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2;\n this.arcs = this.getArcs();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n const xOffset = this.margin[3] + this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n this.transform = `translate(${xOffset}, ${yOffset})`;\n this.rotation = `rotate(${this.startAngle})`;\n setTimeout(() => this.scaleText(), 50);\n }\n getArcs() {\n const arcs = [];\n const availableRadius = this.outerRadius * 0.7;\n const radiusPerArc = Math.min(availableRadius / this.results.length, 10);\n const arcWidth = radiusPerArc * 0.7;\n this.textRadius = this.outerRadius - this.results.length * radiusPerArc;\n this.cornerRadius = Math.floor(arcWidth / 2);\n let i = 0;\n for (const d of this.results) {\n const outerRadius = this.outerRadius - i * radiusPerArc;\n const innerRadius = outerRadius - arcWidth;\n const backgroundArc = {\n endAngle: (this.angleSpan * Math.PI) / 180,\n innerRadius,\n outerRadius,\n data: {\n value: this.max,\n name: d.name\n }\n };\n const valueArc = {\n endAngle: (Math.min(this.valueScale(d.value), this.angleSpan) * Math.PI) / 180,\n innerRadius,\n outerRadius,\n data: {\n value: d.value,\n name: d.name\n }\n };\n const arc = {\n backgroundArc,\n valueArc\n };\n arcs.push(arc);\n i++;\n }\n return arcs;\n }\n getDomain() {\n return this.results.map(d => d.name);\n }\n getValueDomain() {\n const values = this.results.map(d => d.value);\n const dataMin = Math.min(...values);\n const dataMax = Math.max(...values);\n if (this.min !== undefined) {\n this.min = Math.min(this.min, dataMin);\n }\n else {\n this.min = dataMin;\n }\n if (this.max !== undefined) {\n this.max = Math.max(this.max, dataMax);\n }\n else {\n this.max = dataMax;\n }\n return [this.min, this.max];\n }\n getValueScale() {\n return scaleLinear()\n .range([0, this.angleSpan])\n .nice()\n .domain(this.valueDomain);\n }\n getDisplayValue() {\n const value = this.results.map(d => d.value).reduce((a, b) => a + b, 0);\n if (this.textValue && 0 !== this.textValue.length) {\n return this.textValue.toLocaleString();\n }\n if (this.valueFormatting) {\n return this.valueFormatting(value);\n }\n return value.toLocaleString();\n }\n scaleText(repeat = true) {\n if (!this.showText) {\n return;\n }\n const { width } = this.textEl.nativeElement.getBoundingClientRect();\n const oldScale = this.resizeScale;\n if (width === 0) {\n this.resizeScale = 1;\n }\n else {\n const availableSpace = this.textRadius;\n this.resizeScale = Math.floor((availableSpace / (width / this.resizeScale)) * 100) / 100;\n }\n if (this.resizeScale !== oldScale) {\n this.textTransform = `scale(${this.resizeScale}, ${this.resizeScale})`;\n this.cd.markForCheck();\n if (repeat) {\n setTimeout(() => this.scaleText(false), 50);\n }\n }\n }\n onClick(data) {\n this.select.emit(data);\n }\n getLegendOptions() {\n return {\n scaleType: 'ordinal',\n colors: this.colors,\n domain: this.domain,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n trackBy(index, item) {\n return item.valueArc.data.name;\n }\n};\nGaugeComponent.ɵfac = function GaugeComponent_Factory(t) { return ɵGaugeComponent_BaseFactory(t || GaugeComponent); };\nGaugeComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: GaugeComponent, selectors: [[\"ngx-charts-gauge\"]], contentQueries: function GaugeComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, viewQuery: function GaugeComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c41, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.textEl = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", min: \"min\", max: \"max\", bigSegments: \"bigSegments\", smallSegments: \"smallSegments\", showAxis: \"showAxis\", startAngle: \"startAngle\", angleSpan: \"angleSpan\", activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", showText: \"showText\", margin: \"margin\", textValue: \"textValue\", units: \"units\", results: \"results\", axisTickFormatting: \"axisTickFormatting\", valueFormatting: \"valueFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"gauge\", \"chart\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-gauge-axis\", \"\", 3, \"bigSegments\", \"smallSegments\", \"min\", \"max\", \"radius\", \"angleSpan\", \"valueScale\", \"startAngle\", \"tickFormatting\", 4, \"ngIf\"], [\"alignment-baseline\", \"central\", 3, \"textAnchor\", 4, \"ngIf\"], [\"ngx-charts-gauge-arc\", \"\", 3, \"backgroundArc\", \"valueArc\", \"cornerRadius\", \"colors\", \"isActive\", \"tooltipDisabled\", \"tooltipTemplate\", \"valueFormatting\", \"animations\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-gauge-axis\", \"\", 3, \"bigSegments\", \"smallSegments\", \"min\", \"max\", \"radius\", \"angleSpan\", \"valueScale\", \"startAngle\", \"tickFormatting\"], [\"alignment-baseline\", \"central\"], [\"textEl\", \"\"], [\"x\", \"0\", \"dy\", \"0\"], [\"x\", \"0\", \"dy\", \"1.2em\"]], template: function GaugeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function GaugeComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function GaugeComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function GaugeComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, GaugeComponent__svg_g_2_Template, 2, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, GaugeComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, GaugeComponent__svg_text_4_Template, 6, 5, \"text\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.arcs)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showText);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgForOf, ɵngcc1.NgIf, GaugeArcComponent,\n GaugeAxisComponent]; }, styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".gauge .background-arc path{fill:rgba(0,0,0,.05)}.gauge .gauge-tick path{stroke:#666}.gauge .gauge-tick text{font-size:12px;fill:#666;font-weight:700}.gauge .gauge-tick-large path{stroke-width:2px}.gauge .gauge-tick-small path{stroke-width:1px}\"], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], GaugeComponent.prototype, \"legend\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"legendTitle\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"legendPosition\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"min\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"max\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"textValue\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"units\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"bigSegments\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"smallSegments\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"results\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"showAxis\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"startAngle\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"angleSpan\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"activeEntries\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"axisTickFormatting\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"showText\", void 0);\n__decorate([\n Input()\n], GaugeComponent.prototype, \"margin\", void 0);\n__decorate([\n Output()\n], GaugeComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], GaugeComponent.prototype, \"deactivate\", void 0);\n__decorate([\n ContentChild('tooltipTemplate')\n], GaugeComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n ViewChild('textEl')\n], GaugeComponent.prototype, \"textEl\", void 0);\n\nlet GaugeArcComponent = class GaugeArcComponent {\n constructor() {\n this.isActive = false;\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n tooltipText(arc) {\n const label = formatLabel(arc.data.name);\n let val;\n if (this.valueFormatting) {\n val = this.valueFormatting(arc.data.value);\n }\n else {\n val = formatLabel(arc.data.value);\n }\n return `\n ${escapeLabel(label)}\n ${val}\n `;\n }\n};\nGaugeArcComponent.ɵfac = function GaugeArcComponent_Factory(t) { return new (t || GaugeArcComponent)(); };\nGaugeArcComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: GaugeArcComponent, selectors: [[\"g\", \"ngx-charts-gauge-arc\", \"\"]], inputs: { isActive: \"isActive\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", backgroundArc: \"backgroundArc\", valueArc: \"valueArc\", cornerRadius: \"cornerRadius\", colors: \"colors\", valueFormatting: \"valueFormatting\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, attrs: _c49, decls: 2, vars: 23, consts: [[\"ngx-charts-pie-arc\", \"\", 1, \"background-arc\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"cornerRadius\", \"data\", \"animate\", \"pointerEvents\"], [\"ngx-charts-pie-arc\", \"\", \"ngx-tooltip\", \"\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"cornerRadius\", \"fill\", \"data\", \"animate\", \"isActive\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"]], template: function GaugeArcComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 0);\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵlistener(\"select\", function GaugeArcComponent_Template__svg_g_select_1_listener($event) { return ctx.select.emit($event); })(\"activate\", function GaugeArcComponent_Template__svg_g_activate_1_listener($event) { return ctx.activate.emit($event); })(\"deactivate\", function GaugeArcComponent_Template__svg_g_deactivate_1_listener($event) { return ctx.deactivate.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"startAngle\", 0)(\"endAngle\", ctx.backgroundArc.endAngle)(\"innerRadius\", ctx.backgroundArc.innerRadius)(\"outerRadius\", ctx.backgroundArc.outerRadius)(\"cornerRadius\", ctx.cornerRadius)(\"data\", ctx.backgroundArc.data)(\"animate\", false)(\"pointerEvents\", false);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"startAngle\", 0)(\"endAngle\", ctx.valueArc.endAngle)(\"innerRadius\", ctx.valueArc.innerRadius)(\"outerRadius\", ctx.valueArc.outerRadius)(\"cornerRadius\", ctx.cornerRadius)(\"fill\", ctx.colors.getColor(ctx.valueArc.data.name))(\"data\", ctx.valueArc.data)(\"animate\", ctx.animations)(\"isActive\", ctx.isActive)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx.tooltipTemplate ? undefined : ctx.tooltipText(ctx.valueArc))(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipContext\", ctx.valueArc.data);\n } }, directives: [PieArcComponent,\n TooltipDirective], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], GaugeArcComponent.prototype, \"backgroundArc\", void 0);\n__decorate([\n Input()\n], GaugeArcComponent.prototype, \"valueArc\", void 0);\n__decorate([\n Input()\n], GaugeArcComponent.prototype, \"cornerRadius\", void 0);\n__decorate([\n Input()\n], GaugeArcComponent.prototype, \"colors\", void 0);\n__decorate([\n Input()\n], GaugeArcComponent.prototype, \"isActive\", void 0);\n__decorate([\n Input()\n], GaugeArcComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input()\n], GaugeArcComponent.prototype, \"valueFormatting\", void 0);\n__decorate([\n Input()\n], GaugeArcComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input()\n], GaugeArcComponent.prototype, \"animations\", void 0);\n__decorate([\n Output()\n], GaugeArcComponent.prototype, \"select\", void 0);\n__decorate([\n Output()\n], GaugeArcComponent.prototype, \"activate\", void 0);\n__decorate([\n Output()\n], GaugeArcComponent.prototype, \"deactivate\", void 0);\n\nlet GaugeAxisComponent = class GaugeAxisComponent {\n constructor() {\n this.rotate = '';\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.rotationAngle = -90 + this.startAngle;\n this.rotate = `rotate(${this.rotationAngle})`;\n this.ticks = this.getTicks();\n }\n getTicks() {\n const bigTickSegment = this.angleSpan / this.bigSegments;\n const smallTickSegment = bigTickSegment / this.smallSegments;\n const tickLength = 20;\n const ticks = {\n big: [],\n small: []\n };\n const startDistance = this.radius + 10;\n const textDist = startDistance + tickLength + 10;\n for (let i = 0; i <= this.bigSegments; i++) {\n const angleDeg = i * bigTickSegment;\n const angle = (angleDeg * Math.PI) / 180;\n const textAnchor = this.getTextAnchor(angleDeg);\n let skip = false;\n if (i === 0 && this.angleSpan === 360) {\n skip = true;\n }\n if (!skip) {\n let text = Number.parseFloat(this.valueScale.invert(angleDeg).toString()).toLocaleString();\n if (this.tickFormatting) {\n text = this.tickFormatting(text);\n }\n ticks.big.push({\n line: this.getTickPath(startDistance, tickLength, angle),\n textAnchor,\n text,\n textTransform: `\n translate(${textDist * Math.cos(angle)}, ${textDist * Math.sin(angle)}) rotate(${-this.rotationAngle})\n `\n });\n }\n if (i === this.bigSegments) {\n continue;\n }\n for (let j = 1; j <= this.smallSegments; j++) {\n const smallAngleDeg = angleDeg + j * smallTickSegment;\n const smallAngle = (smallAngleDeg * Math.PI) / 180;\n ticks.small.push({\n line: this.getTickPath(startDistance, tickLength / 2, smallAngle)\n });\n }\n }\n return ticks;\n }\n getTextAnchor(angle) {\n // [0, 45] = 'middle';\n // [46, 135] = 'start';\n // [136, 225] = 'middle';\n // [226, 315] = 'end';\n angle = (this.startAngle + angle) % 360;\n let textAnchor = 'middle';\n if (angle > 45 && angle <= 135) {\n textAnchor = 'start';\n }\n else if (angle > 225 && angle <= 315) {\n textAnchor = 'end';\n }\n return textAnchor;\n }\n getTickPath(startDistance, tickLength, angle) {\n const y1 = startDistance * Math.sin(angle);\n const y2 = (startDistance + tickLength) * Math.sin(angle);\n const x1 = startDistance * Math.cos(angle);\n const x2 = (startDistance + tickLength) * Math.cos(angle);\n const points = [\n { x: x1, y: y1 },\n { x: x2, y: y2 }\n ];\n const lineGenerator = line()\n .x(d => d.x)\n .y(d => d.y);\n return lineGenerator(points);\n }\n};\nGaugeAxisComponent.ɵfac = function GaugeAxisComponent_Factory(t) { return new (t || GaugeAxisComponent)(); };\nGaugeAxisComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: GaugeAxisComponent, selectors: [[\"g\", \"ngx-charts-gauge-axis\", \"\"]], inputs: { bigSegments: \"bigSegments\", smallSegments: \"smallSegments\", min: \"min\", max: \"max\", angleSpan: \"angleSpan\", startAngle: \"startAngle\", radius: \"radius\", valueScale: \"valueScale\", tickFormatting: \"tickFormatting\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c50, decls: 4, vars: 4, consts: [[\"class\", \"gauge-tick gauge-tick-large\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"gauge-tick gauge-tick-small\", 4, \"ngFor\", \"ngForOf\"], [1, \"gauge-tick\", \"gauge-tick-large\"], [\"alignment-baseline\", \"central\"], [1, \"gauge-tick\", \"gauge-tick-small\"]], template: function GaugeAxisComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, GaugeAxisComponent__svg_g_1_Template, 2, 1, \"g\", 0);\n ɵngcc0.ɵɵtemplate(2, GaugeAxisComponent__svg_g_2_Template, 3, 4, \"g\", 0);\n ɵngcc0.ɵɵtemplate(3, GaugeAxisComponent__svg_g_3_Template, 2, 1, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"transform\", ctx.rotate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks.big);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks.big);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks.small);\n } }, directives: [ɵngcc1.NgForOf], encapsulation: 2, changeDetection: 0 });\n__decorate([\n Input()\n], GaugeAxisComponent.prototype, \"bigSegments\", void 0);\n__decorate([\n Input()\n], GaugeAxisComponent.prototype, \"smallSegments\", void 0);\n__decorate([\n Input()\n], GaugeAxisComponent.prototype, \"min\", void 0);\n__decorate([\n Input()\n], GaugeAxisComponent.prototype, \"max\", void 0);\n__decorate([\n Input()\n], GaugeAxisComponent.prototype, \"angleSpan\", void 0);\n__decorate([\n Input()\n], GaugeAxisComponent.prototype, \"startAngle\", void 0);\n__decorate([\n Input()\n], GaugeAxisComponent.prototype, \"radius\", void 0);\n__decorate([\n Input()\n], GaugeAxisComponent.prototype, \"valueScale\", void 0);\n__decorate([\n Input()\n], GaugeAxisComponent.prototype, \"tickFormatting\", void 0);\n\nlet GaugeModule = class GaugeModule {\n};\nGaugeModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: GaugeModule });\nGaugeModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function GaugeModule_Factory(t) { return new (t || GaugeModule)(); }, imports: [[ChartCommonModule, PieChartModule, BarChartModule]] });\n\n// The export is needed here to generate a valid polyfills.metadata.json file\nfunction ngxChartsPolyfills() {\n // IE11 fix\n // Ref: https://github.com/swimlane/ngx-charts/issues/386\n if (typeof SVGElement !== 'undefined' && typeof SVGElement.prototype.contains === 'undefined') {\n SVGElement.prototype.contains = HTMLDivElement.prototype.contains;\n }\n}\n\nlet NgxChartsModule = class NgxChartsModule {\n constructor() {\n ngxChartsPolyfills();\n }\n};\nNgxChartsModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: NgxChartsModule });\nNgxChartsModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function NgxChartsModule_Factory(t) { return new (t || NgxChartsModule)(); }, imports: [ChartCommonModule,\n AreaChartModule,\n BarChartModule,\n BubbleChartModule,\n HeatMapModule,\n LineChartModule,\n PolarChartModule,\n NumberCardModule,\n PieChartModule,\n TreeMapModule,\n GaugeModule] });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(InjectionService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }]; }, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TooltipContentComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-tooltip-content',\n template: `\n
\n \n
\n \n \n \n \n
\n
\n `,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts-tooltip-content{position:fixed;border-radius:3px;z-index:5000;display:block;font-weight:400;opacity:0;pointer-events:none!important}.ngx-charts-tooltip-content.type-popover{background:#fff;color:#060709;border:1px solid #72809b;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);font-size:13px;padding:4px}.ngx-charts-tooltip-content.type-popover .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #fff}.ngx-charts-tooltip-content.type-tooltip{color:#fff;background:rgba(0,0,0,.75);font-size:12px;padding:0 10px;text-align:center;pointer-events:auto}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-left{border-top:7px solid transparent;border-bottom:7px solid transparent;border-left:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-right{border-top:7px solid transparent;border-bottom:7px solid transparent;border-right:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-bottom{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content .tooltip-label{display:block;line-height:1em;padding:8px 5px 5px;font-size:1em}.ngx-charts-tooltip-content .tooltip-val{display:block;font-size:1.3em;line-height:1em;padding:0 5px 8px}.ngx-charts-tooltip-content .tooltip-caret{position:absolute;z-index:5001;width:0;height:0}.ngx-charts-tooltip-content.position-right{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}.ngx-charts-tooltip-content.position-left{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}.ngx-charts-tooltip-content.position-top{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}.ngx-charts-tooltip-content.position-bottom{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}.ngx-charts-tooltip-content.animate{opacity:1;-webkit-transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);pointer-events:auto}.area-tooltip-container{padding:5px 0;pointer-events:none}.tooltip-item{text-align:left;line-height:1.2em;padding:5px 0}.tooltip-item .tooltip-item-color{display:inline-block;height:12px;width:12px;margin-right:5px;color:#5b646b;border-radius:3px}\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { cssClasses: [{\n type: HostBinding,\n args: ['class']\n }], placement: [{\n type: Input\n }], onWindowResize: [{\n type: HostListener,\n args: ['window:resize']\n }], host: [{\n type: Input\n }], showCaret: [{\n type: Input\n }], type: [{\n type: Input\n }], alignment: [{\n type: Input\n }], spacing: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], title: [{\n type: Input\n }], template: [{\n type: Input\n }], context: [{\n type: Input\n }], caretElm: [{\n type: ViewChild,\n args: ['caretElm']\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TooltipService, [{\n type: Injectable\n }], function () { return [{ type: InjectionService }]; }, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(ChartComponent, [{\n type: Component,\n args: [{\n providers: [TooltipService],\n selector: 'ngx-charts-chart',\n template: `\n
\n \n \n \n \n \n \n \n
\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [style({ opacity: 0 }), animate('500ms 100ms', style({ opacity: 1 }))])\n ])\n ]\n }]\n }], function () { return []; }, { showLegend: [{\n type: Input\n }], animations: [{\n type: Input\n }], legendLabelClick: [{\n type: Output\n }], legendLabelActivate: [{\n type: Output\n }], legendLabelDeactivate: [{\n type: Output\n }], legendType: [{\n type: Input\n }], view: [{\n type: Input\n }], legendOptions: [{\n type: Input\n }], data: [{\n type: Input\n }], legendData: [{\n type: Input\n }], colors: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(VisibilityObserver, [{\n type: Directive,\n args: [{\n selector: 'visibility-observer'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { visible: [{\n type: Output\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BaseChartComponent, [{\n type: Component,\n args: [{\n selector: 'base-chart',\n template: `\n
\n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }]; }, { scheme: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], results: [{\n type: Input\n }], view: [{\n type: Input\n }], customColors: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AxisLabelComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-axis-label]',\n template: `\n \n {{ label }}\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { orient: [{\n type: Input\n }], label: [{\n type: Input\n }], offset: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(XAxisTicksComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-x-axis-ticks]',\n template: `\n \n \n {{ tickFormat(tick) }}\n \n {{ tickTrim(tickFormat(tick)) }}\n \n \n \n\n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { tickArguments: [{\n type: Input\n }], tickStroke: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], rotateTicks: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], scale: [{\n type: Input\n }], orient: [{\n type: Input\n }], tickValues: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], gridLineHeight: [{\n type: Input\n }], width: [{\n type: Input\n }], ticksElement: [{\n type: ViewChild,\n args: ['ticksel']\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(XAxisComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-x-axis]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { rotateTicks: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], xOrient: [{\n type: Input\n }], xAxisOffset: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], xScale: [{\n type: Input\n }], dims: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], showLabel: [{\n type: Input\n }], labelText: [{\n type: Input\n }], ticks: [{\n type: Input\n }], xAxisTickInterval: [{\n type: Input\n }], xAxisTickCount: [{\n type: Input\n }], ticksComponent: [{\n type: ViewChild,\n args: [XAxisTicksComponent]\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(YAxisTicksComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-y-axis-ticks]',\n template: `\n \n \n {{ tickFormat(tick) }}\n \n {{ tickTrim(tickFormat(tick)) }}\n \n \n \n\n 1 && refMax && refMin && showRefLines\"\n class=\"reference-area\"\n [attr.d]=\"referenceAreaPath\"\n [attr.transform]=\"gridLineTransform()\"\n />\n \n \n \n \n \n \n\n \n \n \n \n {{ tickTrim(tickFormat(refLine.value)) }}\n \n {{ refLine.name }}\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { tickArguments: [{\n type: Input\n }], tickStroke: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], showRefLabels: [{\n type: Input\n }], showRefLines: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], scale: [{\n type: Input\n }], orient: [{\n type: Input\n }], tickValues: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], gridLineWidth: [{\n type: Input\n }], height: [{\n type: Input\n }], referenceLines: [{\n type: Input\n }], ticksElement: [{\n type: ViewChild,\n args: ['ticksel']\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(YAxisComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-y-axis]',\n template: `\n \n \n\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { showGridLines: [{\n type: Input\n }], yOrient: [{\n type: Input\n }], yAxisOffset: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], yScale: [{\n type: Input\n }], dims: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], ticks: [{\n type: Input\n }], showLabel: [{\n type: Input\n }], labelText: [{\n type: Input\n }], yAxisTickInterval: [{\n type: Input\n }], yAxisTickCount: [{\n type: Input\n }], referenceLines: [{\n type: Input\n }], showRefLines: [{\n type: Input\n }], showRefLabels: [{\n type: Input\n }], ticksComponent: [{\n type: ViewChild,\n args: [YAxisTicksComponent]\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AxesModule, { declarations: function () { return [AxisLabelComponent,\n XAxisComponent,\n XAxisTicksComponent,\n YAxisComponent,\n YAxisTicksComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [AxisLabelComponent,\n XAxisComponent,\n XAxisTicksComponent,\n YAxisComponent,\n YAxisTicksComponent]; } }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AxesModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent],\n exports: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent]\n }]\n }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TooltipDirective, [{\n type: Directive,\n args: [{ selector: '[ngx-tooltip]' }]\n }], function () { return [{ type: TooltipService }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.Renderer2 }]; }, { tooltipCssClass: [{\n type: Input\n }], tooltipTitle: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], tooltipSpacing: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipShowCaret: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAlignment: [{\n type: Input\n }], tooltipType: [{\n type: Input\n }], tooltipCloseOnClickOutside: [{\n type: Input\n }], tooltipCloseOnMouseLeave: [{\n type: Input\n }], tooltipHideTimeout: [{\n type: Input\n }], tooltipShowTimeout: [{\n type: Input\n }], tooltipShowEvent: [{\n type: Input\n }], tooltipImmediateExit: [{\n type: Input\n }], show: [{\n type: Output\n }], hide: [{\n type: Output\n }], onFocus: [{\n type: HostListener,\n args: ['focusin']\n }], onBlur: [{\n type: HostListener,\n args: ['blur']\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave', ['$event.target']]\n }], onMouseClick: [{\n type: HostListener,\n args: ['click']\n }], tooltipTemplate: [{\n type: Input\n }], tooltipContext: [{\n type: Input\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TooltipModule, { declarations: function () { return [TooltipContentComponent,\n TooltipDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [TooltipContentComponent,\n TooltipDirective]; } }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TooltipModule, [{\n type: NgModule,\n args: [{\n declarations: [TooltipContentComponent, TooltipDirective],\n providers: [InjectionService, TooltipService],\n exports: [TooltipContentComponent, TooltipDirective],\n imports: [CommonModule],\n entryComponents: [TooltipContentComponent]\n }]\n }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(CircleSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-circle-series]',\n template: `\n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 1 }))\n ])\n ])\n ]\n }]\n }], function () { return []; }, { type: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], visibleValue: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(CircleComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-circle]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }], classNames: [{\n type: Input\n }], cx: [{\n type: Input\n }], cy: [{\n type: Input\n }], r: [{\n type: Input\n }], fill: [{\n type: Input\n }], stroke: [{\n type: Input\n }], data: [{\n type: Input\n }], circleOpacity: [{\n type: Input\n }], pointerEvents: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(GridPanelComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-grid-panel]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, { path: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(GridPanelSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-grid-panel-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, { data: [{\n type: Input\n }], dims: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], orient: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(SvgLinearGradientComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-svg-linear-gradient]',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { orientation: [{\n type: Input\n }], name: [{\n type: Input\n }], stops: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(SvgRadialGradientComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-svg-radial-gradient]',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { endOpacity: [{\n type: Input\n }], cx: [{\n type: Input\n }], cy: [{\n type: Input\n }], stops: [{\n type: Input\n }], color: [{\n type: Input\n }], name: [{\n type: Input\n }], startOpacity: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AreaComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-area]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { opacity: [{\n type: Input\n }], startOpacity: [{\n type: Input\n }], endOpacity: [{\n type: Input\n }], gradient: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], data: [{\n type: Input\n }], path: [{\n type: Input\n }], startingPath: [{\n type: Input\n }], fill: [{\n type: Input\n }], activeLabel: [{\n type: Input\n }], stops: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(CountUpDirective, [{\n type: Component,\n args: [{\n selector: '[ngx-charts-count-up]',\n template: `\n {{ value }}\n `\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { countDuration: [{\n type: Input\n }], countPrefix: [{\n type: Input\n }], countSuffix: [{\n type: Input\n }], countChange: [{\n type: Output\n }], countFinish: [{\n type: Output\n }], countDecimals: [{\n type: Input\n }], countTo: [{\n type: Input\n }], countFrom: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TooltipArea, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-tooltip-area]',\n template: `\n \n \n \n \n \n \n {{ getToolTipText(tooltipItem) }}\n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition('inactive => active', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 0.7 }))\n ]),\n transition('active => inactive', [\n style({\n opacity: 0.7\n }),\n animate(250, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], function () { return []; }, { showPercentage: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], hover: [{\n type: Output\n }], dims: [{\n type: Input\n }], xSet: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], results: [{\n type: Input\n }], colors: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], tooltipAnchor: [{\n type: ViewChild,\n args: ['tooltipAnchor', { static: false }]\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(Timeline, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-timeline]',\n template: `\n \n \n \n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".timeline .brush-background{fill:rgba(0,0,0,.05)}.timeline .brush .selection{fill:rgba(0,0,0,.1);stroke-width:1px;stroke:#888}.timeline .brush .handle{fill-opacity:0}.timeline .embedded-chart{opacity:.6}\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }]; }, { height: [{\n type: Input\n }], select: [{\n type: Output\n }], onDomainChange: [{\n type: Output\n }], view: [{\n type: Input\n }], state: [{\n type: Input\n }], results: [{\n type: Input\n }], scheme: [{\n type: Input\n }], customColors: [{\n type: Input\n }], legend: [{\n type: Input\n }], miniChart: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], scaleType: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LegendComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-legend',\n template: `\n
\n
0\">\n {{ title }}\n
\n
\n
    \n
  • \n \n \n
  • \n
\n
\n
\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .legend-title{white-space:nowrap;overflow:hidden;margin-left:10px;margin-bottom:5px;font-size:14px;font-weight:700}.chart-legend li,.chart-legend ul{padding:0;margin:0;list-style:none}.chart-legend .horizontal-legend li{display:inline-block}.chart-legend .legend-wrap{width:calc(100% - 10px)}.chart-legend .legend-labels{line-height:85%;list-style:none;text-align:left;float:left;width:100%;border-radius:3px;overflow-y:auto;overflow-x:hidden;white-space:nowrap;background:rgba(0,0,0,.05)}.chart-legend .legend-label{cursor:pointer;font-size:90%;margin:8px;color:#afb7c8}.chart-legend .legend-label:hover{color:#000;-webkit-transition:.2s;transition:.2s}.chart-legend .legend-label .active .legend-label-text{color:#000}.chart-legend .legend-label-color{display:inline-block;height:15px;width:15px;margin-right:5px;color:#5b646b;border-radius:3px}.chart-legend .legend-label-text{display:inline-block;vertical-align:top;line-height:15px;font-size:12px;width:calc(100% - 20px);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chart-legend .legend-title-text{vertical-align:bottom;display:inline-block;line-height:16px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}\"]\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }]; }, { horizontal: [{\n type: Input\n }], labelClick: [{\n type: Output\n }], labelActivate: [{\n type: Output\n }], labelDeactivate: [{\n type: Output\n }], data: [{\n type: Input\n }], title: [{\n type: Input\n }], colors: [{\n type: Input\n }], height: [{\n type: Input\n }], width: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LegendEntryComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-legend-entry',\n template: `\n \n \n \n {{ trimmedLabel }}\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { isActive: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], toggle: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }], color: [{\n type: Input\n }], label: [{\n type: Input\n }], formattedLabel: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(ScaleLegendComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-scale-legend',\n template: `\n \n
\n {{ valueRange[1].toLocaleString() }}\n
\n
\n
\n {{ valueRange[0].toLocaleString() }}\n
\n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .scale-legend{text-align:center;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.chart-legend .scale-legend-wrap{display:inline-block;-webkit-box-flex:1;flex:1;width:30px;border-radius:5px;margin:0 auto}.chart-legend .scale-legend-label{font-size:12px}.chart-legend .horizontal-legend.scale-legend{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.chart-legend .horizontal-legend .scale-legend-wrap{width:auto;height:30px;margin:0 16px}\"]\n }]\n }], function () { return [{ type: ɵngcc2.DomSanitizer }]; }, { horizontal: [{\n type: Input\n }], valueRange: [{\n type: Input\n }], colors: [{\n type: Input\n }], height: [{\n type: Input\n }], width: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AdvancedLegendComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-advanced-legend',\n template: `\n
\n
\n
\n {{ valueFormatting ? valueFormatting(roundedTotal) : defaultValueFormatting(roundedTotal) }}\n
\n
\n {{ label }}\n
\n
\n
\n \n
\n
\n
\n {{ valueFormatting ? valueFormatting(legendItem.value) : defaultValueFormatting(legendItem.value) }}\n
\n
{{ legendItem.displayLabel }}
\n
\n
{{ legendItem.percentage.toLocaleString() }}%
\n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".advanced-pie-legend{float:left;position:relative;top:50%;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.advanced-pie-legend .total-value{font-size:36px}.advanced-pie-legend .total-label{font-size:24px;margin-bottom:19px}.advanced-pie-legend .legend-items-container{width:100%}.advanced-pie-legend .legend-items-container .legend-items{white-space:nowrap;overflow:auto}.advanced-pie-legend .legend-items-container .legend-items .legend-item{margin-right:20px;display:inline-block;cursor:pointer}.advanced-pie-legend .legend-items-container .legend-items .legend-item:focus{outline:0}.advanced-pie-legend .legend-items-container .legend-items .legend-item:hover{color:#000;-webkit-transition:.2s;transition:.2s}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-value{font-size:24px;margin-top:-6px;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-label{font-size:14px;opacity:.7;margin-left:11px;margin-top:-6px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-percent{font-size:24px;opacity:.7;margin-left:11px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-color{border-left:4px solid;width:4px;height:42px;float:left;margin-right:7px}\"]\n }]\n }], function () { return []; }, { label: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], labelFormatting: [{\n type: Input\n }], percentageFormatting: [{\n type: Input\n }], width: [{\n type: Input\n }], data: [{\n type: Input\n }], colors: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ChartCommonModule, { declarations: function () { return [AreaComponent,\n BaseChartComponent,\n CountUpDirective,\n TooltipArea,\n ChartComponent,\n LegendComponent,\n LegendEntryComponent,\n ScaleLegendComponent,\n CircleComponent,\n CircleSeriesComponent,\n GridPanelComponent,\n GridPanelSeriesComponent,\n SvgLinearGradientComponent,\n SvgRadialGradientComponent,\n Timeline,\n AdvancedLegendComponent,\n VisibilityObserver]; }, imports: function () { return [CommonModule,\n AxesModule,\n TooltipModule]; }, exports: function () { return [CommonModule,\n AxesModule,\n TooltipModule,\n AreaComponent,\n BaseChartComponent,\n CountUpDirective,\n TooltipArea,\n ChartComponent,\n LegendComponent,\n LegendEntryComponent,\n ScaleLegendComponent,\n CircleComponent,\n CircleSeriesComponent,\n GridPanelComponent,\n GridPanelSeriesComponent,\n SvgLinearGradientComponent,\n SvgRadialGradientComponent,\n Timeline,\n AdvancedLegendComponent,\n VisibilityObserver]; } }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(ChartCommonModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AxesModule, TooltipModule],\n declarations: [...COMPONENTS, VisibilityObserver],\n exports: [CommonModule, AxesModule, TooltipModule, ...COMPONENTS, VisibilityObserver]\n }]\n }], null, null); })();\nconst ɵAreaChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(AreaChartComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AreaChartComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-area-chart',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], baseValue: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }], legend: [{\n type: Input\n }], state: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }] }); })();\nconst ɵAreaChartNormalizedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(AreaChartNormalizedComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AreaChartNormalizedComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-area-chart-normalized',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }] }); })();\nconst ɵAreaChartStackedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(AreaChartStackedComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AreaChartStackedComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-area-chart-stacked',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AreaSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-area-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { baseValue: [{\n type: Input\n }], stacked: [{\n type: Input\n }], normalized: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], gradient: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AreaChartModule, { declarations: [AreaChartComponent,\n AreaChartNormalizedComponent,\n AreaChartStackedComponent,\n AreaSeriesComponent], imports: [ChartCommonModule], exports: [AreaChartComponent,\n AreaChartNormalizedComponent,\n AreaChartStackedComponent,\n AreaSeriesComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AreaChartModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent],\n exports: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent]\n }]\n }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-bar]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { roundEdges: [{\n type: Input\n }], gradient: [{\n type: Input\n }], offset: [{\n type: Input\n }], isActive: [{\n type: Input\n }], animations: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }], fill: [{\n type: Input\n }], data: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], orientation: [{\n type: Input\n }], stops: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }] }); })();\nconst ɵBarHorizontalComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarHorizontalComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarHorizontalComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-horizontal',\n template: `\n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\nconst ɵBarHorizontal2DComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarHorizontal2DComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarHorizontal2DComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-horizontal-2d',\n template: `\n \n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], groupPadding: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\nconst ɵBarHorizontalNormalizedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarHorizontalNormalizedComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarHorizontalNormalizedComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-horizontal-normalized',\n template: `\n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\nconst ɵBarHorizontalStackedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarHorizontalStackedComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarHorizontalStackedComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-horizontal-stacked',\n template: `\n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\nconst ɵBarVerticalComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarVerticalComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarVerticalComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-vertical',\n template: `\n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\nconst ɵBarVertical2DComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarVertical2DComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarVertical2DComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-vertical-2d',\n template: `\n \n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], groupPadding: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\nconst ɵBarVerticalNormalizedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarVerticalNormalizedComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarVerticalNormalizedComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-vertical-normalized',\n template: `\n \n \n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\nconst ɵBarVerticalStackedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarVerticalStackedComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarVerticalStackedComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-vertical-stacked',\n template: `\n \n \n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(SeriesVerticalComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-series-vertical]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], function () { return []; }, { type: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], animations: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dataLabelHeightChanged: [{\n type: Output\n }], dims: [{\n type: Input\n }], series: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], seriesName: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(SeriesHorizontal, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-series-horizontal]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], function () { return []; }, { type: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], animations: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dataLabelWidthChanged: [{\n type: Output\n }], dims: [{\n type: Input\n }], series: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], seriesName: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarLabelComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-bar-label]',\n template: `\n \n {{ formatedValue }}\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".textDataLabel{font-size:11px}\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { dimensionsChanged: [{\n type: Output\n }], value: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], barX: [{\n type: Input\n }], barY: [{\n type: Input\n }], barWidth: [{\n type: Input\n }], barHeight: [{\n type: Input\n }], orientation: [{\n type: Input\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BarChartModule, { declarations: [BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent], imports: [ChartCommonModule], exports: [BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BarChartModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [\n BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent\n ],\n exports: [\n BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent\n ]\n }]\n }], null, null); })();\nconst ɵBubbleChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BubbleChartComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BubbleChartComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bubble-chart',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { showGridLines: [{\n type: Input\n }], legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], maxRadius: [{\n type: Input\n }], minRadius: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BubbleSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-bubble-series]',\n template: `\n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'scale(0)'\n }),\n animate(250, style({ opacity: 1, transform: 'scale(1)' }))\n ])\n ])\n ]\n }]\n }], function () { return []; }, { tooltipDisabled: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], rScale: [{\n type: Input\n }], xScaleType: [{\n type: Input\n }], yScaleType: [{\n type: Input\n }], colors: [{\n type: Input\n }], visibleValue: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BubbleChartModule, { declarations: [BubbleChartComponent,\n BubbleSeriesComponent], imports: [ChartCommonModule], exports: [BubbleChartComponent,\n BubbleSeriesComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(BubbleChartModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [BubbleChartComponent, BubbleSeriesComponent],\n exports: [BubbleChartComponent, BubbleSeriesComponent]\n }]\n }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(HeatMapCellComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-heat-map-cell]',\n template: `\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { gradient: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }], fill: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], data: [{\n type: Input\n }], label: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(HeatCellSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-heat-map-cell-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { tooltipDisabled: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipText: [{\n type: Input\n }], data: [{\n type: Input\n }], colors: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], gradient: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\nconst ɵHeatMapComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(HeatMapComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(HeatMapComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-heat-map',\n template: `\n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], innerPadding: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], legend: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(HeatMapModule, { declarations: [HeatMapCellComponent,\n HeatCellSeriesComponent,\n HeatMapComponent], imports: [ChartCommonModule], exports: [HeatMapCellComponent,\n HeatCellSeriesComponent,\n HeatMapComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(HeatMapModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent],\n exports: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent]\n }]\n }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LineComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-line]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n strokeDasharray: 2000,\n strokeDashoffset: 2000\n }),\n animate(1000, style({\n strokeDashoffset: 0\n }))\n ])\n ])\n ]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { fill: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], path: [{\n type: Input\n }], stroke: [{\n type: Input\n }], data: [{\n type: Input\n }] }); })();\nconst ɵLineChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(LineChartComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LineChartComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-line-chart',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showRefLines: [{\n type: Input\n }], showRefLabels: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }], legend: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], referenceLines: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LineSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-line-series]',\n template: `\n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { animations: [{\n type: Input\n }], data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], hasRange: [{\n type: Input\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(LineChartModule, { declarations: [LineComponent,\n LineChartComponent,\n LineSeriesComponent], imports: [ChartCommonModule], exports: [LineComponent,\n LineChartComponent,\n LineSeriesComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LineChartModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [LineComponent, LineChartComponent, LineSeriesComponent],\n exports: [LineComponent, LineChartComponent, LineSeriesComponent]\n }]\n }], null, null); })();\nconst ɵPolarChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(PolarChartComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PolarChartComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-polar-chart',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".pie-label{font-size:11px}.pie-label.animation{-webkit-animation:750ms ease-in fadeIn;animation:750ms ease-in fadeIn}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{-webkit-animation:3s linear drawOut;animation:3s linear drawOut;-webkit-transition:d 750ms;transition:d 750ms}@-webkit-keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}@keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\", \".polar-chart .polar-chart-background{fill:none}.polar-chart .radial-gridline-path{stroke-dasharray:10 10;fill:none}.polar-chart .pie-label-line{stroke:#2f3646}.polar-charts-series .polar-series-area,.polar-series-path{pointer-events:none}\"]\n }]\n }], null, { legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showSeriesOnHover: [{\n type: Input\n }], gradient: [{\n type: Input\n }], yAxisMinScale: [{\n type: Input\n }], labelTrim: [{\n type: Input\n }], labelTrimSize: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], legend: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PolarSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-polar-series]',\n template: `\n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipText: [{\n type: Input\n }], name: [{\n type: Input\n }], data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\nconst ɵAdvancedPieChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(AdvancedPieChartComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AdvancedPieChartComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-advanced-pie-chart',\n template: `\n
\n
\n \n \n \n \n \n
\n
\n \n \n
\n
\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".advanced-pie{display:inline-block;float:left}.advanced-pie-legend-wrapper{display:inline-block}\"]\n }]\n }], null, { activeEntries: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], label: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], gradient: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], valueFormatting: [{\n type: Input\n }], nameFormatting: [{\n type: Input\n }], percentageFormatting: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieLabelComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-label]',\n template: `\n {{ label }}\n \n \n {{ labelTrim ? trimLabel(label, labelTrimSize) : label }}\n \n \n
\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { animations: [{\n type: Input\n }], labelTrim: [{\n type: Input\n }], labelTrimSize: [{\n type: Input\n }], data: [{\n type: Input\n }], radius: [{\n type: Input\n }], label: [{\n type: Input\n }], color: [{\n type: Input\n }], max: [{\n type: Input\n }], value: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieArcComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-arc]',\n template: `\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { startAngle: [{\n type: Input\n }], endAngle: [{\n type: Input\n }], cornerRadius: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], gradient: [{\n type: Input\n }], animate: [{\n type: Input\n }], pointerEvents: [{\n type: Input\n }], isActive: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dblclick: [{\n type: Output\n }], fill: [{\n type: Input\n }], innerRadius: [{\n type: Input\n }], outerRadius: [{\n type: Input\n }], value: [{\n type: Input\n }], max: [{\n type: Input\n }], data: [{\n type: Input\n }] }); })();\nconst ɵPieChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(PieChartComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieChartComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-pie-chart',\n template: `\n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".pie-label{font-size:11px}.pie-label.animation{-webkit-animation:750ms ease-in fadeIn;animation:750ms ease-in fadeIn}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{-webkit-animation:3s linear drawOut;animation:3s linear drawOut;-webkit-transition:d 750ms;transition:d 750ms}@-webkit-keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}@keyframes drawOut{from{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\"]\n }]\n }], null, { labels: [{\n type: Input\n }], legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], doughnut: [{\n type: Input\n }], arcWidth: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], trimLabels: [{\n type: Input\n }], maxLabelLength: [{\n type: Input\n }], dblclick: [{\n type: Output\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], margins: [{\n type: Input\n }], gradient: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\nconst ɵPieGridComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(PieGridComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieGridComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-pie-grid',\n template: `\n \n \n \n \n \n \n {{ series.percent.toLocaleString() }}\n \n \n {{ series.label }}\n \n \n \n {{ label }}: {{ series.total.toLocaleString() }}\n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".pie-grid .arc1{opacity:.4}.pie-grid .percent-label{font-size:16px;font-weight:400}\"]\n }]\n }], null, { tooltipDisabled: [{\n type: Input\n }], label: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipText: [{\n type: Input\n }], designatedTotal: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieGridSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-grid-series]',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { innerRadius: [{\n type: Input\n }], outerRadius: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], colors: [{\n type: Input\n }], data: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-series]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { series: [{\n type: Input\n }], innerRadius: [{\n type: Input\n }], outerRadius: [{\n type: Input\n }], trimLabels: [{\n type: Input\n }], maxLabelLength: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dblclick: [{\n type: Output\n }], tooltipText: [{\n type: Input\n }], colors: [{\n type: Input\n }], dims: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], showLabels: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PieChartModule, { declarations: [AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent], imports: [ChartCommonModule], exports: [AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PieChartModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [\n AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent\n ],\n exports: [\n AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PolarChartModule, { declarations: [PolarChartComponent,\n PolarSeriesComponent], imports: [ChartCommonModule,\n PieChartModule,\n LineChartModule], exports: [PolarChartComponent,\n PolarSeriesComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(PolarChartModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule, PieChartModule, LineChartModule],\n declarations: [PolarChartComponent, PolarSeriesComponent],\n exports: [PolarChartComponent, PolarSeriesComponent]\n }]\n }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(CardComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-card]',\n template: `\n \n \n \n {{ label }}\n \n \n \n \n \n {{ value }}\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }]; }, { animations: [{\n type: Input\n }], select: [{\n type: Output\n }], label: [{\n type: Input\n }], color: [{\n type: Input\n }], bandColor: [{\n type: Input\n }], textColor: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], data: [{\n type: Input\n }], medianSize: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], textEl: [{\n type: ViewChild,\n args: ['textEl', { static: false }]\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(CardSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-card-series]',\n template: `\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { innerPadding: [{\n type: Input\n }], emptyColor: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], data: [{\n type: Input\n }], slots: [{\n type: Input\n }], dims: [{\n type: Input\n }], colors: [{\n type: Input\n }], cardColor: [{\n type: Input\n }], bandColor: [{\n type: Input\n }], textColor: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }] }); })();\nconst ɵNumberCardComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NumberCardComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(NumberCardComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-number-card',\n template: `\n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \"ngx-charts-number-card .cell .trimmed-label{font-size:12px;pointer-events:none;overflow:hidden;text-align:left;line-height:1em}ngx-charts-number-card .cell .trimmed-label p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%;padding:0;margin:0}ngx-charts-number-card .cell .value-text{pointer-events:none}ngx-charts-number-card .number-card.clickable .cell .card,ngx-charts-number-card .number-card.clickable .cell .card-band{cursor:pointer}\"]\n }]\n }], null, { emptyColor: [{\n type: Input\n }], innerPadding: [{\n type: Input\n }], cardColor: [{\n type: Input\n }], bandColor: [{\n type: Input\n }], textColor: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], designatedTotal: [{\n type: Input\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NumberCardModule, { declarations: [CardComponent,\n CardSeriesComponent,\n NumberCardComponent], imports: [ChartCommonModule], exports: [CardComponent,\n CardSeriesComponent,\n NumberCardComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(NumberCardModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [CardComponent, CardSeriesComponent, NumberCardComponent],\n exports: [CardComponent, CardSeriesComponent, NumberCardComponent]\n }]\n }], null, null); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TreeMapCellComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-tree-map-cell]',\n template: `\n \n \n \n \n \n = 70 && height >= 35\"\n [attr.x]=\"x\"\n [attr.y]=\"y\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n class=\"treemap-label\"\n [style.pointer-events]=\"'none'\"\n >\n \n \n \n \n \n \n {{ formattedValue }}\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { gradient: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], valueFormatting: [{\n type: Input\n }], data: [{\n type: Input\n }], fill: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], label: [{\n type: Input\n }], value: [{\n type: Input\n }], valueType: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TreeMapCellSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-tree-map-cell-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { gradient: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], data: [{\n type: Input\n }], dims: [{\n type: Input\n }], colors: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\nconst ɵTreeMapComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TreeMapComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TreeMapComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-tree-map',\n template: `\n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".tree-map .treemap-val{font-size:1.3em;padding-top:5px;display:inline-block}.tree-map .treemap-label p{display:table-cell;text-align:center;line-height:1.2em;vertical-align:middle}\"]\n }]\n }], null, { tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], select: [{\n type: Output\n }], results: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TreeMapModule, { declarations: [TreeMapCellComponent,\n TreeMapCellSeriesComponent,\n TreeMapComponent], imports: [ChartCommonModule], exports: [TreeMapCellComponent,\n TreeMapCellSeriesComponent,\n TreeMapComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(TreeMapModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent],\n exports: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent]\n }]\n }], null, null); })();\nconst ɵLinearGaugeComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(LinearGaugeComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LinearGaugeComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-linear-gauge',\n template: `\n \n \n \n \n\n \n\n \n\n \n \n \n {{ displayValue }}\n \n \n\n \n \n {{ units }}\n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".linear-gauge{cursor:pointer}.linear-gauge .background-bar path{fill:rgba(0,0,0,.05)}.linear-gauge .units{fill:#666}\"]\n }]\n }], null, { min: [{\n type: Input\n }], max: [{\n type: Input\n }], value: [{\n type: Input\n }], units: [{\n type: Input\n }], previousValue: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], valueTextEl: [{\n type: ViewChild,\n args: ['valueTextEl']\n }], unitsTextEl: [{\n type: ViewChild,\n args: ['unitsTextEl']\n }] }); })();\nconst ɵGaugeComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GaugeComponent);\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(GaugeComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-gauge',\n template: `\n \n \n \n \n \n\n \n\n \n {{ displayValue }}\n {{ units }}\n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:0}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:0}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;opacity:.2}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{stroke:#ddd;stroke-width:1;fill:none}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-width:1;stroke-dasharray:5;stroke-dashoffset:5}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill-opacity:.05;fill:#000}.ngx-charts .gridline-path-dotted{stroke:#ddd;stroke-width:1;fill:none;stroke-dasharray:1,20;stroke-dashoffset:3}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".gauge .background-arc path{fill:rgba(0,0,0,.05)}.gauge .gauge-tick path{stroke:#666}.gauge .gauge-tick text{font-size:12px;fill:#666;font-weight:700}.gauge .gauge-tick-large path{stroke-width:2px}.gauge .gauge-tick-small path{stroke-width:1px}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], bigSegments: [{\n type: Input\n }], smallSegments: [{\n type: Input\n }], showAxis: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], angleSpan: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showText: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], margin: [{\n type: Input\n }], textValue: [{\n type: Input\n }], units: [{\n type: Input\n }], results: [{\n type: Input\n }], axisTickFormatting: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], textEl: [{\n type: ViewChild,\n args: ['textEl']\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(GaugeArcComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-gauge-arc]',\n template: `\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { isActive: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], backgroundArc: [{\n type: Input\n }], valueArc: [{\n type: Input\n }], cornerRadius: [{\n type: Input\n }], colors: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(GaugeAxisComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-gauge-axis]',\n template: `\n \n \n \n \n \n \n {{ tick.text }}\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { bigSegments: [{\n type: Input\n }], smallSegments: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], angleSpan: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], radius: [{\n type: Input\n }], valueScale: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }] }); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(GaugeModule, { declarations: [LinearGaugeComponent,\n GaugeComponent,\n GaugeArcComponent,\n GaugeAxisComponent], imports: [ChartCommonModule,\n PieChartModule,\n BarChartModule], exports: [LinearGaugeComponent,\n GaugeComponent,\n GaugeArcComponent,\n GaugeAxisComponent] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(GaugeModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule, PieChartModule, BarChartModule],\n declarations: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent],\n exports: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxChartsModule, { exports: [ChartCommonModule,\n AreaChartModule,\n BarChartModule,\n BubbleChartModule,\n HeatMapModule,\n LineChartModule,\n PolarChartModule,\n NumberCardModule,\n PieChartModule,\n TreeMapModule,\n GaugeModule] }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(NgxChartsModule, [{\n type: NgModule,\n args: [{\n exports: [\n ChartCommonModule,\n AreaChartModule,\n BarChartModule,\n BubbleChartModule,\n HeatMapModule,\n LineChartModule,\n PolarChartModule,\n NumberCardModule,\n PieChartModule,\n TreeMapModule,\n GaugeModule\n ]\n }]\n }], function () { return []; }, null); })();\n\nfunction tickFormat(fieldType, groupByType) {\n return function (label) {\n if (label === 'No Value' || label === 'Other') {\n return label;\n }\n if (fieldType === 'date' && groupByType === 'groupBy') {\n const formatter = timeFormat('MM/DD/YYYY');\n return formatter(label);\n }\n return label.toString();\n };\n}\n\n/*\n * Public API Surface of ngx-charts\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AdvancedLegendComponent, AdvancedPieChartComponent, AlignmentTypes, AreaChartComponent, AreaChartModule, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaComponent, AreaSeriesComponent, AxesModule, AxisLabelComponent, BarChartModule, BarComponent, BarHorizontal2DComponent, BarHorizontalComponent, BarHorizontalNormalizedComponent, BarHorizontalStackedComponent, BarLabelComponent, BarVertical2DComponent, BarVerticalComponent, BarVerticalNormalizedComponent, BarVerticalStackedComponent, BaseChartComponent, BubbleChartComponent, BubbleChartModule, BubbleSeriesComponent, CardComponent, CardSeriesComponent, ChartCommonModule, ChartComponent, CircleComponent, CircleSeriesComponent, ColorHelper, CountUpDirective, D0Types, GaugeArcComponent, GaugeAxisComponent, GaugeComponent, GaugeModule, GridPanelComponent, GridPanelSeriesComponent, HeatCellSeriesComponent, HeatMapCellComponent, HeatMapComponent, HeatMapModule, LegendComponent, LegendEntryComponent, LineChartComponent, LineChartModule, LineComponent, LineSeriesComponent, LinearGaugeComponent, NgxChartsModule, NumberCardComponent, NumberCardModule, PieArcComponent, PieChartComponent, PieChartModule, PieGridComponent, PieGridSeriesComponent, PieLabelComponent, PieSeriesComponent, PolarChartComponent, PolarChartModule, PolarSeriesComponent, ScaleLegendComponent, SeriesHorizontal, SeriesVerticalComponent, ShowTypes, StyleTypes, SvgLinearGradientComponent, SvgRadialGradientComponent, Timeline, TooltipArea, TooltipContentComponent, TooltipDirective, TooltipModule, TooltipService, TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent, TreeMapModule, VisibilityObserver, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent, calculateViewDimensions, colorSets, count, decimalChecker, escapeLabel, formatLabel, getDomain, getScale, getScaleType, getUniqueXDomainValues, gridLayout, gridSize, hexToRgb, id, invertColor, reduceTicks, shadeRGBColor, sortByDomain, sortByTime, sortLinear, throttle, throttleable, tickFormat, trimLabel, InjectionRegisteryService as ɵa, InjectionService as ɵb };\n\n//# sourceMappingURL=swimlane-ngx-charts.js.map","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends,\r\n __assign,\r\n __rest,\r\n __decorate,\r\n __param,\r\n __metadata,\r\n __awaiter,\r\n __generator,\r\n __createBinding,\r\n __exportStar,\r\n __values,\r\n __read,\r\n __spread,\r\n __spreadArrays,\r\n __spreadArray,\r\n __await,\r\n __asyncGenerator,\r\n __asyncDelegator,\r\n __asyncValues,\r\n __makeTemplateObject,\r\n __importStar,\r\n __importDefault,\r\n __classPrivateFieldGet,\r\n __classPrivateFieldSet,\r\n __classPrivateFieldIn,\r\n __addDisposableResource,\r\n __disposeResources,\r\n};\r\n","import { Injectable, ɵɵdefineInjectable, EventEmitter, isDevMode, Component, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, Input, HostBinding, Output, HostListener, NgModule } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { __awaiter } from 'tslib';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/interfaces/cropper.settings.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/platform-browser';\nimport * as ɵngcc2 from '@angular/common';\n\nconst _c0 = [\"wrapper\"];\nconst _c1 = [\"sourceImage\"];\nfunction ImageCropperComponent_img_2_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"img\", 4, 5);\n ɵngcc0.ɵɵlistener(\"load\", function ImageCropperComponent_img_2_Template_img_load_0_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.imageLoadedInView(); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"visibility\", ctx_r1.imageVisible ? \"visible\" : \"hidden\")(\"transform\", ctx_r1.safeTransformStyle);\n ɵngcc0.ɵɵproperty(\"src\", ctx_r1.safeImgDataUrl, ɵngcc0.ɵɵsanitizeUrl);\n} }\nfunction ImageCropperComponent_div_4_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵelementStart(1, \"span\", 9);\n ɵngcc0.ɵɵlistener(\"mousedown\", function ImageCropperComponent_div_4_ng_container_2_Template_span_mousedown_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(2); return ctx_r7.startMove($event, ctx_r7.moveTypes.Resize, \"topleft\"); })(\"touchstart\", function ImageCropperComponent_div_4_ng_container_2_Template_span_touchstart_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r9 = ɵngcc0.ɵɵnextContext(2); return ctx_r9.startMove($event, ctx_r9.moveTypes.Resize, \"topleft\"); });\n ɵngcc0.ɵɵelement(2, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"span\", 11);\n ɵngcc0.ɵɵelement(4, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"span\", 12);\n ɵngcc0.ɵɵlistener(\"mousedown\", function ImageCropperComponent_div_4_ng_container_2_Template_span_mousedown_5_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r10 = ɵngcc0.ɵɵnextContext(2); return ctx_r10.startMove($event, ctx_r10.moveTypes.Resize, \"topright\"); })(\"touchstart\", function ImageCropperComponent_div_4_ng_container_2_Template_span_touchstart_5_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r11 = ɵngcc0.ɵɵnextContext(2); return ctx_r11.startMove($event, ctx_r11.moveTypes.Resize, \"topright\"); });\n ɵngcc0.ɵɵelement(6, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(7, \"span\", 13);\n ɵngcc0.ɵɵelement(8, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(9, \"span\", 14);\n ɵngcc0.ɵɵlistener(\"mousedown\", function ImageCropperComponent_div_4_ng_container_2_Template_span_mousedown_9_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.startMove($event, ctx_r12.moveTypes.Resize, \"bottomright\"); })(\"touchstart\", function ImageCropperComponent_div_4_ng_container_2_Template_span_touchstart_9_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r13 = ɵngcc0.ɵɵnextContext(2); return ctx_r13.startMove($event, ctx_r13.moveTypes.Resize, \"bottomright\"); });\n ɵngcc0.ɵɵelement(10, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(11, \"span\", 15);\n ɵngcc0.ɵɵelement(12, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(13, \"span\", 16);\n ɵngcc0.ɵɵlistener(\"mousedown\", function ImageCropperComponent_div_4_ng_container_2_Template_span_mousedown_13_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.startMove($event, ctx_r14.moveTypes.Resize, \"bottomleft\"); })(\"touchstart\", function ImageCropperComponent_div_4_ng_container_2_Template_span_touchstart_13_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.startMove($event, ctx_r15.moveTypes.Resize, \"bottomleft\"); });\n ɵngcc0.ɵɵelement(14, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(15, \"span\", 17);\n ɵngcc0.ɵɵelement(16, \"span\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(17, \"span\", 18);\n ɵngcc0.ɵɵlistener(\"mousedown\", function ImageCropperComponent_div_4_ng_container_2_Template_span_mousedown_17_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r16 = ɵngcc0.ɵɵnextContext(2); return ctx_r16.startMove($event, ctx_r16.moveTypes.Resize, \"top\"); })(\"touchstart\", function ImageCropperComponent_div_4_ng_container_2_Template_span_touchstart_17_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r17 = ɵngcc0.ɵɵnextContext(2); return ctx_r17.startMove($event, ctx_r17.moveTypes.Resize, \"top\"); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(18, \"span\", 19);\n ɵngcc0.ɵɵlistener(\"mousedown\", function ImageCropperComponent_div_4_ng_container_2_Template_span_mousedown_18_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.startMove($event, ctx_r18.moveTypes.Resize, \"right\"); })(\"touchstart\", function ImageCropperComponent_div_4_ng_container_2_Template_span_touchstart_18_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r19 = ɵngcc0.ɵɵnextContext(2); return ctx_r19.startMove($event, ctx_r19.moveTypes.Resize, \"right\"); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(19, \"span\", 20);\n ɵngcc0.ɵɵlistener(\"mousedown\", function ImageCropperComponent_div_4_ng_container_2_Template_span_mousedown_19_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r20 = ɵngcc0.ɵɵnextContext(2); return ctx_r20.startMove($event, ctx_r20.moveTypes.Resize, \"bottom\"); })(\"touchstart\", function ImageCropperComponent_div_4_ng_container_2_Template_span_touchstart_19_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r21 = ɵngcc0.ɵɵnextContext(2); return ctx_r21.startMove($event, ctx_r21.moveTypes.Resize, \"bottom\"); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(20, \"span\", 21);\n ɵngcc0.ɵɵlistener(\"mousedown\", function ImageCropperComponent_div_4_ng_container_2_Template_span_mousedown_20_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r22 = ɵngcc0.ɵɵnextContext(2); return ctx_r22.startMove($event, ctx_r22.moveTypes.Resize, \"left\"); })(\"touchstart\", function ImageCropperComponent_div_4_ng_container_2_Template_span_touchstart_20_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r23 = ɵngcc0.ɵɵnextContext(2); return ctx_r23.startMove($event, ctx_r23.moveTypes.Resize, \"left\"); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementContainerEnd();\n} }\nfunction ImageCropperComponent_div_4_Template(rf, ctx) { if (rf & 1) {\n const _r25 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵlistener(\"keydown\", function ImageCropperComponent_div_4_Template_div_keydown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r25); const ctx_r24 = ɵngcc0.ɵɵnextContext(); return ctx_r24.keyboardAccess($event); });\n ɵngcc0.ɵɵelementStart(1, \"div\", 7);\n ɵngcc0.ɵɵlistener(\"mousedown\", function ImageCropperComponent_div_4_Template_div_mousedown_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r25); const ctx_r26 = ɵngcc0.ɵɵnextContext(); return ctx_r26.startMove($event, ctx_r26.moveTypes.Move); })(\"touchstart\", function ImageCropperComponent_div_4_Template_div_touchstart_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r25); const ctx_r27 = ɵngcc0.ɵɵnextContext(); return ctx_r27.startMove($event, ctx_r27.moveTypes.Move); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, ImageCropperComponent_div_4_ng_container_2_Template, 21, 0, \"ng-container\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"top\", ctx_r2.cropper.y1, \"px\")(\"left\", ctx_r2.cropper.x1, \"px\")(\"width\", ctx_r2.cropper.x2 - ctx_r2.cropper.x1, \"px\")(\"height\", ctx_r2.cropper.y2 - ctx_r2.cropper.y1, \"px\")(\"margin-left\", ctx_r2.alignImage === \"center\" ? ctx_r2.marginLeft : null)(\"visibility\", ctx_r2.imageVisible ? \"visible\" : \"hidden\");\n ɵngcc0.ɵɵclassProp(\"ngx-ic-round\", ctx_r2.roundCropper);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.hideResizeSquares);\n} }\nclass CropperSettings {\n constructor() {\n // From options\n this.format = 'png';\n this.maintainAspectRatio = true;\n this.transform = {};\n this.aspectRatio = 1;\n this.resizeToWidth = 0;\n this.resizeToHeight = 0;\n this.cropperMinWidth = 0;\n this.cropperMinHeight = 0;\n this.cropperMaxHeight = 0;\n this.cropperMaxWidth = 0;\n this.cropperStaticWidth = 0;\n this.cropperStaticHeight = 0;\n this.canvasRotation = 0;\n this.initialStepSize = 3;\n this.roundCropper = false;\n this.onlyScaleDown = false;\n this.imageQuality = 92;\n this.autoCrop = true;\n this.backgroundColor = undefined;\n this.containWithinAspectRatio = false;\n this.hideResizeSquares = false;\n this.alignImage = 'center';\n // Internal\n this.cropperScaledMinWidth = 20;\n this.cropperScaledMinHeight = 20;\n this.cropperScaledMaxWidth = 20;\n this.cropperScaledMaxHeight = 20;\n this.stepSize = this.initialStepSize;\n }\n /**\n * @param {?} options\n * @return {?}\n */\n setOptions(options) {\n Object.keys(options)\n .filter((/**\n * @param {?} k\n * @return {?}\n */\n (k) => k in this))\n .forEach((/**\n * @param {?} k\n * @return {?}\n */\n (k) => this[k] = options[k]));\n this.validateOptions();\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n setOptionsFromChanges(changes) {\n Object.keys(changes)\n .filter((/**\n * @param {?} k\n * @return {?}\n */\n (k) => k in this))\n .forEach((/**\n * @param {?} k\n * @return {?}\n */\n (k) => this[k] = changes[k].currentValue));\n this.validateOptions();\n }\n /**\n * @private\n * @return {?}\n */\n validateOptions() {\n if (this.maintainAspectRatio && !this.aspectRatio) {\n throw new Error('`aspectRatio` should > 0 when `maintainAspectRatio` is enabled');\n }\n }\n}\nif (false) {\n /** @type {?} */\n CropperSettings.prototype.format;\n /** @type {?} */\n CropperSettings.prototype.maintainAspectRatio;\n /** @type {?} */\n CropperSettings.prototype.transform;\n /** @type {?} */\n CropperSettings.prototype.aspectRatio;\n /** @type {?} */\n CropperSettings.prototype.resizeToWidth;\n /** @type {?} */\n CropperSettings.prototype.resizeToHeight;\n /** @type {?} */\n CropperSettings.prototype.cropperMinWidth;\n /** @type {?} */\n CropperSettings.prototype.cropperMinHeight;\n /** @type {?} */\n CropperSettings.prototype.cropperMaxHeight;\n /** @type {?} */\n CropperSettings.prototype.cropperMaxWidth;\n /** @type {?} */\n CropperSettings.prototype.cropperStaticWidth;\n /** @type {?} */\n CropperSettings.prototype.cropperStaticHeight;\n /** @type {?} */\n CropperSettings.prototype.canvasRotation;\n /** @type {?} */\n CropperSettings.prototype.initialStepSize;\n /** @type {?} */\n CropperSettings.prototype.roundCropper;\n /** @type {?} */\n CropperSettings.prototype.onlyScaleDown;\n /** @type {?} */\n CropperSettings.prototype.imageQuality;\n /** @type {?} */\n CropperSettings.prototype.autoCrop;\n /** @type {?} */\n CropperSettings.prototype.backgroundColor;\n /** @type {?} */\n CropperSettings.prototype.containWithinAspectRatio;\n /** @type {?} */\n CropperSettings.prototype.hideResizeSquares;\n /** @type {?} */\n CropperSettings.prototype.alignImage;\n /** @type {?} */\n CropperSettings.prototype.cropperScaledMinWidth;\n /** @type {?} */\n CropperSettings.prototype.cropperScaledMinHeight;\n /** @type {?} */\n CropperSettings.prototype.cropperScaledMaxWidth;\n /** @type {?} */\n CropperSettings.prototype.cropperScaledMaxHeight;\n /** @type {?} */\n CropperSettings.prototype.stepSize;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/interfaces/move-start.interface.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction MoveStart() { }\nif (false) {\n /** @type {?} */\n MoveStart.prototype.active;\n /** @type {?} */\n MoveStart.prototype.type;\n /** @type {?} */\n MoveStart.prototype.position;\n /** @type {?} */\n MoveStart.prototype.x1;\n /** @type {?} */\n MoveStart.prototype.y1;\n /** @type {?} */\n MoveStart.prototype.x2;\n /** @type {?} */\n MoveStart.prototype.y2;\n /** @type {?} */\n MoveStart.prototype.clientX;\n /** @type {?} */\n MoveStart.prototype.clientY;\n}\n/** @enum {string} */\nconst MoveTypes = {\n Move: \"move\",\n Resize: \"resize\",\n Pinch: \"pinch\",\n};\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/utils/resize.utils.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/*\n * Hermite resize - fast image resize/resample using Hermite filter.\n * https://github.com/viliusle/Hermite-resize\n */\n/**\n * @param {?} canvas\n * @param {?} width\n * @param {?} height\n * @return {?}\n */\nfunction resizeCanvas(canvas, width, height) {\n /** @type {?} */\n const width_source = canvas.width;\n /** @type {?} */\n const height_source = canvas.height;\n width = Math.round(width);\n height = Math.round(height);\n /** @type {?} */\n const ratio_w = width_source / width;\n /** @type {?} */\n const ratio_h = height_source / height;\n /** @type {?} */\n const ratio_w_half = Math.ceil(ratio_w / 2);\n /** @type {?} */\n const ratio_h_half = Math.ceil(ratio_h / 2);\n /** @type {?} */\n const ctx = canvas.getContext('2d');\n if (ctx) {\n /** @type {?} */\n const img = ctx.getImageData(0, 0, width_source, height_source);\n /** @type {?} */\n const img2 = ctx.createImageData(width, height);\n /** @type {?} */\n const data = img.data;\n /** @type {?} */\n const data2 = img2.data;\n for (let j = 0; j < height; j++) {\n for (let i = 0; i < width; i++) {\n /** @type {?} */\n const x2 = (i + j * width) * 4;\n /** @type {?} */\n const center_y = j * ratio_h;\n /** @type {?} */\n let weight = 0;\n /** @type {?} */\n let weights = 0;\n /** @type {?} */\n let weights_alpha = 0;\n /** @type {?} */\n let gx_r = 0;\n /** @type {?} */\n let gx_g = 0;\n /** @type {?} */\n let gx_b = 0;\n /** @type {?} */\n let gx_a = 0;\n /** @type {?} */\n const xx_start = Math.floor(i * ratio_w);\n /** @type {?} */\n const yy_start = Math.floor(j * ratio_h);\n /** @type {?} */\n let xx_stop = Math.ceil((i + 1) * ratio_w);\n /** @type {?} */\n let yy_stop = Math.ceil((j + 1) * ratio_h);\n xx_stop = Math.min(xx_stop, width_source);\n yy_stop = Math.min(yy_stop, height_source);\n for (let yy = yy_start; yy < yy_stop; yy++) {\n /** @type {?} */\n const dy = Math.abs(center_y - yy) / ratio_h_half;\n /** @type {?} */\n const center_x = i * ratio_w;\n /** @type {?} */\n const w0 = dy * dy;\n for (let xx = xx_start; xx < xx_stop; xx++) {\n /** @type {?} */\n const dx = Math.abs(center_x - xx) / ratio_w_half;\n /** @type {?} */\n const w = Math.sqrt(w0 + dx * dx);\n if (w >= 1) {\n //pixel too far\n continue;\n }\n //hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n /** @type {?} */\n const pos_x = 4 * (xx + yy * width_source);\n //alpha\n gx_a += weight * data[pos_x + 3];\n weights_alpha += weight;\n //colors\n if (data[pos_x + 3] < 255)\n weight = weight * data[pos_x + 3] / 250;\n gx_r += weight * data[pos_x];\n gx_g += weight * data[pos_x + 1];\n gx_b += weight * data[pos_x + 2];\n weights += weight;\n }\n }\n data2[x2] = gx_r / weights;\n data2[x2 + 1] = gx_g / weights;\n data2[x2 + 2] = gx_b / weights;\n data2[x2 + 3] = gx_a / weights_alpha;\n }\n }\n canvas.width = width;\n canvas.height = height;\n //draw\n ctx.putImageData(img2, 0, 0);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/services/crop.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass CropService {\n /**\n * @param {?} sourceImage\n * @param {?} loadedImage\n * @param {?} cropper\n * @param {?} settings\n * @return {?}\n */\n crop(sourceImage, loadedImage, cropper, settings) {\n /** @type {?} */\n const imagePosition = this.getImagePosition(sourceImage, loadedImage, cropper, settings);\n /** @type {?} */\n const width = imagePosition.x2 - imagePosition.x1;\n /** @type {?} */\n const height = imagePosition.y2 - imagePosition.y1;\n /** @type {?} */\n const cropCanvas = (/** @type {?} */ (document.createElement('canvas')));\n cropCanvas.width = width;\n cropCanvas.height = height;\n /** @type {?} */\n const ctx = cropCanvas.getContext('2d');\n if (!ctx) {\n return;\n }\n if (settings.backgroundColor != null) {\n ctx.fillStyle = settings.backgroundColor;\n ctx.fillRect(0, 0, width, height);\n }\n /** @type {?} */\n const scaleX = (settings.transform.scale || 1) * (settings.transform.flipH ? -1 : 1);\n /** @type {?} */\n const scaleY = (settings.transform.scale || 1) * (settings.transform.flipV ? -1 : 1);\n /** @type {?} */\n const transformedImage = loadedImage.transformed;\n ctx.setTransform(scaleX, 0, 0, scaleY, transformedImage.size.width / 2, transformedImage.size.height / 2);\n ctx.translate(-imagePosition.x1 / scaleX, -imagePosition.y1 / scaleY);\n ctx.rotate((settings.transform.rotate || 0) * Math.PI / 180);\n ctx.drawImage(transformedImage.image, -transformedImage.size.width / 2, -transformedImage.size.height / 2);\n /** @type {?} */\n const output = {\n width, height,\n imagePosition,\n cropperPosition: Object.assign({}, cropper)\n };\n if (settings.containWithinAspectRatio) {\n output.offsetImagePosition = this.getOffsetImagePosition(sourceImage, loadedImage, cropper, settings);\n }\n /** @type {?} */\n const resizeRatio = this.getResizeRatio(width, height, settings);\n if (resizeRatio !== 1) {\n output.width = Math.round(width * resizeRatio);\n output.height = settings.maintainAspectRatio\n ? Math.round(output.width / settings.aspectRatio)\n : Math.round(height * resizeRatio);\n resizeCanvas(cropCanvas, output.width, output.height);\n }\n output.base64 = cropCanvas.toDataURL('image/' + settings.format, this.getQuality(settings));\n return output;\n }\n /**\n * @private\n * @param {?} sourceImage\n * @param {?} loadedImage\n * @param {?} cropper\n * @param {?} settings\n * @return {?}\n */\n getImagePosition(sourceImage, loadedImage, cropper, settings) {\n /** @type {?} */\n const sourceImageElement = sourceImage.nativeElement;\n /** @type {?} */\n const ratio = loadedImage.transformed.size.width / sourceImageElement.offsetWidth;\n /** @type {?} */\n const out = {\n x1: Math.round(cropper.x1 * ratio),\n y1: Math.round(cropper.y1 * ratio),\n x2: Math.round(cropper.x2 * ratio),\n y2: Math.round(cropper.y2 * ratio)\n };\n if (!settings.containWithinAspectRatio) {\n out.x1 = Math.max(out.x1, 0);\n out.y1 = Math.max(out.y1, 0);\n out.x2 = Math.min(out.x2, loadedImage.transformed.size.width);\n out.y2 = Math.min(out.y2, loadedImage.transformed.size.height);\n }\n return out;\n }\n /**\n * @private\n * @param {?} sourceImage\n * @param {?} loadedImage\n * @param {?} cropper\n * @param {?} settings\n * @return {?}\n */\n getOffsetImagePosition(sourceImage, loadedImage, cropper, settings) {\n /** @type {?} */\n const canvasRotation = settings.canvasRotation + loadedImage.exifTransform.rotate;\n /** @type {?} */\n const sourceImageElement = sourceImage.nativeElement;\n /** @type {?} */\n const ratio = loadedImage.transformed.size.width / sourceImageElement.offsetWidth;\n /** @type {?} */\n let offsetX;\n /** @type {?} */\n let offsetY;\n if (canvasRotation % 2) {\n offsetX = (loadedImage.transformed.size.width - loadedImage.original.size.height) / 2;\n offsetY = (loadedImage.transformed.size.height - loadedImage.original.size.width) / 2;\n }\n else {\n offsetX = (loadedImage.transformed.size.width - loadedImage.original.size.width) / 2;\n offsetY = (loadedImage.transformed.size.height - loadedImage.original.size.height) / 2;\n }\n /** @type {?} */\n const out = {\n x1: Math.round(cropper.x1 * ratio) - offsetX,\n y1: Math.round(cropper.y1 * ratio) - offsetY,\n x2: Math.round(cropper.x2 * ratio) - offsetX,\n y2: Math.round(cropper.y2 * ratio) - offsetY\n };\n if (!settings.containWithinAspectRatio) {\n out.x1 = Math.max(out.x1, 0);\n out.y1 = Math.max(out.y1, 0);\n out.x2 = Math.min(out.x2, loadedImage.transformed.size.width);\n out.y2 = Math.min(out.y2, loadedImage.transformed.size.height);\n }\n return out;\n }\n /**\n * @param {?} width\n * @param {?} height\n * @param {?} settings\n * @return {?}\n */\n getResizeRatio(width, height, settings) {\n /** @type {?} */\n const ratioWidth = settings.resizeToWidth / width;\n /** @type {?} */\n const ratioHeight = settings.resizeToHeight / height;\n /** @type {?} */\n const ratios = new Array();\n if (settings.resizeToWidth > 0) {\n ratios.push(ratioWidth);\n }\n if (settings.resizeToHeight > 0) {\n ratios.push(ratioHeight);\n }\n /** @type {?} */\n const result = ratios.length === 0 ? 1 : Math.min(...ratios);\n if (result > 1 && !settings.onlyScaleDown) {\n return result;\n }\n return Math.min(result, 1);\n }\n /**\n * @param {?} settings\n * @return {?}\n */\n getQuality(settings) {\n return Math.min(1, Math.max(0, settings.imageQuality / 100));\n }\n}\nCropService.ɵfac = function CropService_Factory(t) { return new (t || CropService)(); };\n/** @nocollapse */ CropService.ɵprov = ɵɵdefineInjectable({ factory: function CropService_Factory() { return new CropService(); }, token: CropService, providedIn: \"root\" });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(CropService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/services/cropper-position.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass CropperPositionService {\n /**\n * @param {?} sourceImage\n * @param {?} cropperPosition\n * @param {?} settings\n * @return {?}\n */\n resetCropperPosition(sourceImage, cropperPosition, settings) {\n if (!(sourceImage === null || sourceImage === void 0 ? void 0 : sourceImage.nativeElement)) {\n return;\n }\n /** @type {?} */\n const sourceImageElement = sourceImage.nativeElement;\n if (settings.cropperStaticHeight && settings.cropperStaticWidth) {\n cropperPosition.x1 = 0;\n cropperPosition.x2 = sourceImageElement.offsetWidth > settings.cropperStaticWidth ?\n settings.cropperStaticWidth : sourceImageElement.offsetWidth;\n cropperPosition.y1 = 0;\n cropperPosition.y2 = sourceImageElement.offsetHeight > settings.cropperStaticHeight ?\n settings.cropperStaticHeight : sourceImageElement.offsetHeight;\n }\n else {\n /** @type {?} */\n const cropperWidth = Math.min(settings.cropperScaledMaxWidth, sourceImageElement.offsetWidth);\n /** @type {?} */\n const cropperHeight = Math.min(settings.cropperScaledMaxHeight, sourceImageElement.offsetHeight);\n if (!settings.maintainAspectRatio) {\n cropperPosition.x1 = 0;\n cropperPosition.x2 = cropperWidth;\n cropperPosition.y1 = 0;\n cropperPosition.y2 = cropperHeight;\n }\n else if (sourceImageElement.offsetWidth / settings.aspectRatio < sourceImageElement.offsetHeight) {\n cropperPosition.x1 = 0;\n cropperPosition.x2 = cropperWidth;\n /** @type {?} */\n const cropperHeightWithAspectRatio = cropperWidth / settings.aspectRatio;\n cropperPosition.y1 = (sourceImageElement.offsetHeight - cropperHeightWithAspectRatio) / 2;\n cropperPosition.y2 = cropperPosition.y1 + cropperHeightWithAspectRatio;\n }\n else {\n cropperPosition.y1 = 0;\n cropperPosition.y2 = cropperHeight;\n /** @type {?} */\n const cropperWidthWithAspectRatio = cropperHeight * settings.aspectRatio;\n cropperPosition.x1 = (sourceImageElement.offsetWidth - cropperWidthWithAspectRatio) / 2;\n cropperPosition.x2 = cropperPosition.x1 + cropperWidthWithAspectRatio;\n }\n }\n }\n /**\n * @param {?} event\n * @param {?} moveStart\n * @param {?} cropperPosition\n * @return {?}\n */\n move(event, moveStart, cropperPosition) {\n /** @type {?} */\n const diffX = this.getClientX(event) - moveStart.clientX;\n /** @type {?} */\n const diffY = this.getClientY(event) - moveStart.clientY;\n cropperPosition.x1 = moveStart.x1 + diffX;\n cropperPosition.y1 = moveStart.y1 + diffY;\n cropperPosition.x2 = moveStart.x2 + diffX;\n cropperPosition.y2 = moveStart.y2 + diffY;\n }\n /**\n * @param {?} event\n * @param {?} moveStart\n * @param {?} cropperPosition\n * @param {?} maxSize\n * @param {?} settings\n * @return {?}\n */\n resize(event, moveStart, cropperPosition, maxSize, settings) {\n /** @type {?} */\n const moveX = this.getClientX(event) - moveStart.clientX;\n /** @type {?} */\n const moveY = this.getClientY(event) - moveStart.clientY;\n switch (moveStart.position) {\n case 'left':\n cropperPosition.x1 = Math.min(Math.max(moveStart.x1 + moveX, cropperPosition.x2 - settings.cropperScaledMaxWidth), cropperPosition.x2 - settings.cropperScaledMinWidth);\n break;\n case 'topleft':\n cropperPosition.x1 = Math.min(Math.max(moveStart.x1 + moveX, cropperPosition.x2 - settings.cropperScaledMaxWidth), cropperPosition.x2 - settings.cropperScaledMinWidth);\n cropperPosition.y1 = Math.min(Math.max(moveStart.y1 + moveY, cropperPosition.y2 - settings.cropperScaledMaxHeight), cropperPosition.y2 - settings.cropperScaledMinHeight);\n break;\n case 'top':\n cropperPosition.y1 = Math.min(Math.max(moveStart.y1 + moveY, cropperPosition.y2 - settings.cropperScaledMaxHeight), cropperPosition.y2 - settings.cropperScaledMinHeight);\n break;\n case 'topright':\n cropperPosition.x2 = Math.max(Math.min(moveStart.x2 + moveX, cropperPosition.x1 + settings.cropperScaledMaxWidth), cropperPosition.x1 + settings.cropperScaledMinWidth);\n cropperPosition.y1 = Math.min(Math.max(moveStart.y1 + moveY, cropperPosition.y2 - settings.cropperScaledMaxHeight), cropperPosition.y2 - settings.cropperScaledMinHeight);\n break;\n case 'right':\n cropperPosition.x2 = Math.max(Math.min(moveStart.x2 + moveX, cropperPosition.x1 + settings.cropperScaledMaxWidth), cropperPosition.x1 + settings.cropperScaledMinWidth);\n break;\n case 'bottomright':\n cropperPosition.x2 = Math.max(Math.min(moveStart.x2 + moveX, cropperPosition.x1 + settings.cropperScaledMaxWidth), cropperPosition.x1 + settings.cropperScaledMinWidth);\n cropperPosition.y2 = Math.max(Math.min(moveStart.y2 + moveY, cropperPosition.y1 + settings.cropperScaledMaxHeight), cropperPosition.y1 + settings.cropperScaledMinHeight);\n break;\n case 'bottom':\n cropperPosition.y2 = Math.max(Math.min(moveStart.y2 + moveY, cropperPosition.y1 + settings.cropperScaledMaxHeight), cropperPosition.y1 + settings.cropperScaledMinHeight);\n break;\n case 'bottomleft':\n cropperPosition.x1 = Math.min(Math.max(moveStart.x1 + moveX, cropperPosition.x2 - settings.cropperScaledMaxWidth), cropperPosition.x2 - settings.cropperScaledMinWidth);\n cropperPosition.y2 = Math.max(Math.min(moveStart.y2 + moveY, cropperPosition.y1 + settings.cropperScaledMaxHeight), cropperPosition.y1 + settings.cropperScaledMinHeight);\n break;\n case 'center':\n /** @type {?} */\n const scale = event.scale;\n /** @type {?} */\n const newWidth = Math.min(Math.max(settings.cropperScaledMinWidth, (Math.abs(moveStart.x2 - moveStart.x1)) * scale), settings.cropperScaledMaxWidth);\n /** @type {?} */\n const newHeight = Math.min(Math.max(settings.cropperScaledMinHeight, (Math.abs(moveStart.y2 - moveStart.y1)) * scale), settings.cropperScaledMaxHeight);\n cropperPosition.x1 = moveStart.clientX - newWidth / 2;\n cropperPosition.x2 = moveStart.clientX + newWidth / 2;\n cropperPosition.y1 = moveStart.clientY - newHeight / 2;\n cropperPosition.y2 = moveStart.clientY + newHeight / 2;\n if (cropperPosition.x1 < 0) {\n cropperPosition.x2 -= cropperPosition.x1;\n cropperPosition.x1 = 0;\n }\n else if (cropperPosition.x2 > maxSize.width) {\n cropperPosition.x1 -= (cropperPosition.x2 - maxSize.width);\n cropperPosition.x2 = maxSize.width;\n }\n if (cropperPosition.y1 < 0) {\n cropperPosition.y2 -= cropperPosition.y1;\n cropperPosition.y1 = 0;\n }\n else if (cropperPosition.y2 > maxSize.height) {\n cropperPosition.y1 -= (cropperPosition.y2 - maxSize.height);\n cropperPosition.y2 = maxSize.height;\n }\n break;\n }\n if (settings.maintainAspectRatio) {\n this.checkAspectRatio(moveStart.position, cropperPosition, maxSize, settings);\n }\n }\n /**\n * @param {?} position\n * @param {?} cropperPosition\n * @param {?} maxSize\n * @param {?} settings\n * @return {?}\n */\n checkAspectRatio(position, cropperPosition, maxSize, settings) {\n /** @type {?} */\n let overflowX = 0;\n /** @type {?} */\n let overflowY = 0;\n switch (position) {\n case 'top':\n cropperPosition.x2 = cropperPosition.x1 + (cropperPosition.y2 - cropperPosition.y1) * settings.aspectRatio;\n overflowX = Math.max(cropperPosition.x2 - maxSize.width, 0);\n overflowY = Math.max(0 - cropperPosition.y1, 0);\n if (overflowX > 0 || overflowY > 0) {\n cropperPosition.x2 -= (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;\n cropperPosition.y1 += (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;\n }\n break;\n case 'bottom':\n cropperPosition.x2 = cropperPosition.x1 + (cropperPosition.y2 - cropperPosition.y1) * settings.aspectRatio;\n overflowX = Math.max(cropperPosition.x2 - maxSize.width, 0);\n overflowY = Math.max(cropperPosition.y2 - maxSize.height, 0);\n if (overflowX > 0 || overflowY > 0) {\n cropperPosition.x2 -= (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;\n cropperPosition.y2 -= (overflowY * settings.aspectRatio) > overflowX ? overflowY : (overflowX / settings.aspectRatio);\n }\n break;\n case 'topleft':\n cropperPosition.y1 = cropperPosition.y2 - (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;\n overflowX = Math.max(0 - cropperPosition.x1, 0);\n overflowY = Math.max(0 - cropperPosition.y1, 0);\n if (overflowX > 0 || overflowY > 0) {\n cropperPosition.x1 += (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;\n cropperPosition.y1 += (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;\n }\n break;\n case 'topright':\n cropperPosition.y1 = cropperPosition.y2 - (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;\n overflowX = Math.max(cropperPosition.x2 - maxSize.width, 0);\n overflowY = Math.max(0 - cropperPosition.y1, 0);\n if (overflowX > 0 || overflowY > 0) {\n cropperPosition.x2 -= (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;\n cropperPosition.y1 += (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;\n }\n break;\n case 'right':\n case 'bottomright':\n cropperPosition.y2 = cropperPosition.y1 + (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;\n overflowX = Math.max(cropperPosition.x2 - maxSize.width, 0);\n overflowY = Math.max(cropperPosition.y2 - maxSize.height, 0);\n if (overflowX > 0 || overflowY > 0) {\n cropperPosition.x2 -= (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;\n cropperPosition.y2 -= (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;\n }\n break;\n case 'left':\n case 'bottomleft':\n cropperPosition.y2 = cropperPosition.y1 + (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;\n overflowX = Math.max(0 - cropperPosition.x1, 0);\n overflowY = Math.max(cropperPosition.y2 - maxSize.height, 0);\n if (overflowX > 0 || overflowY > 0) {\n cropperPosition.x1 += (overflowY * settings.aspectRatio) > overflowX ? (overflowY * settings.aspectRatio) : overflowX;\n cropperPosition.y2 -= (overflowY * settings.aspectRatio) > overflowX ? overflowY : overflowX / settings.aspectRatio;\n }\n break;\n case 'center':\n cropperPosition.x2 = cropperPosition.x1 + (cropperPosition.y2 - cropperPosition.y1) * settings.aspectRatio;\n cropperPosition.y2 = cropperPosition.y1 + (cropperPosition.x2 - cropperPosition.x1) / settings.aspectRatio;\n /** @type {?} */\n const overflowX1 = Math.max(0 - cropperPosition.x1, 0);\n /** @type {?} */\n const overflowX2 = Math.max(cropperPosition.x2 - maxSize.width, 0);\n /** @type {?} */\n const overflowY1 = Math.max(cropperPosition.y2 - maxSize.height, 0);\n /** @type {?} */\n const overflowY2 = Math.max(0 - cropperPosition.y1, 0);\n if (overflowX1 > 0 || overflowX2 > 0 || overflowY1 > 0 || overflowY2 > 0) {\n cropperPosition.x1 += (overflowY1 * settings.aspectRatio) > overflowX1 ? (overflowY1 * settings.aspectRatio) : overflowX1;\n cropperPosition.x2 -= (overflowY2 * settings.aspectRatio) > overflowX2 ? (overflowY2 * settings.aspectRatio) : overflowX2;\n cropperPosition.y1 += (overflowY2 * settings.aspectRatio) > overflowX2 ? overflowY2 : overflowX2 / settings.aspectRatio;\n cropperPosition.y2 -= (overflowY1 * settings.aspectRatio) > overflowX1 ? overflowY1 : overflowX1 / settings.aspectRatio;\n }\n break;\n }\n }\n /**\n * @param {?} event\n * @return {?}\n */\n getClientX(event) {\n var _a;\n return ((_a = event.touches) === null || _a === void 0 ? void 0 : _a[0].clientX) || event.clientX || 0;\n }\n /**\n * @param {?} event\n * @return {?}\n */\n getClientY(event) {\n var _a;\n return ((_a = event.touches) === null || _a === void 0 ? void 0 : _a[0].clientY) || event.clientY || 0;\n }\n}\nCropperPositionService.ɵfac = function CropperPositionService_Factory(t) { return new (t || CropperPositionService)(); };\n/** @nocollapse */ CropperPositionService.ɵprov = ɵɵdefineInjectable({ factory: function CropperPositionService_Factory() { return new CropperPositionService(); }, token: CropperPositionService, providedIn: \"root\" });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(CropperPositionService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/utils/exif.utils.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// Black 2x1 JPEG, with the following meta information set:\n// - EXIF Orientation: 6 (Rotated 90° CCW)\n// Source: https://github.com/blueimp/JavaScript-Load-Image\n/** @type {?} */\nconst testAutoOrientationImageURL = 'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' +\n 'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' +\n 'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' +\n 'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/x' +\n 'ABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAA' +\n 'AAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==';\n/**\n * @return {?}\n */\nfunction supportsAutomaticRotation() {\n return new Promise((/**\n * @param {?} resolve\n * @return {?}\n */\n (resolve) => {\n /** @type {?} */\n const img = new Image();\n img.onload = (/**\n * @return {?}\n */\n () => {\n // Check if browser supports automatic image orientation:\n /** @type {?} */\n const supported = img.width === 1 && img.height === 2;\n resolve(supported);\n });\n img.src = testAutoOrientationImageURL;\n }));\n}\n/**\n * @param {?} exifRotationOrBase64Image\n * @return {?}\n */\nfunction getTransformationsFromExifData(exifRotationOrBase64Image) {\n if (typeof exifRotationOrBase64Image === 'string') {\n exifRotationOrBase64Image = getExifRotation(exifRotationOrBase64Image);\n }\n switch (exifRotationOrBase64Image) {\n case 2:\n return { rotate: 0, flip: true };\n case 3:\n return { rotate: 2, flip: false };\n case 4:\n return { rotate: 2, flip: true };\n case 5:\n return { rotate: 1, flip: true };\n case 6:\n return { rotate: 1, flip: false };\n case 7:\n return { rotate: 3, flip: true };\n case 8:\n return { rotate: 3, flip: false };\n default:\n return { rotate: 0, flip: false };\n }\n}\n/**\n * @param {?} imageBase64\n * @return {?}\n */\nfunction getExifRotation(imageBase64) {\n /** @type {?} */\n const view = new DataView(base64ToArrayBuffer(imageBase64));\n if (view.getUint16(0, false) !== 0xFFD8) {\n return -2;\n }\n /** @type {?} */\n const length = view.byteLength;\n /** @type {?} */\n let offset = 2;\n while (offset < length) {\n if (view.getUint16(offset + 2, false) <= 8)\n return -1;\n /** @type {?} */\n const marker = view.getUint16(offset, false);\n offset += 2;\n if (marker == 0xFFE1) {\n if (view.getUint32(offset += 2, false) !== 0x45786966) {\n return -1;\n }\n /** @type {?} */\n const little = view.getUint16(offset += 6, false) == 0x4949;\n offset += view.getUint32(offset + 4, little);\n /** @type {?} */\n const tags = view.getUint16(offset, little);\n offset += 2;\n for (let i = 0; i < tags; i++) {\n if (view.getUint16(offset + (i * 12), little) == 0x0112) {\n return view.getUint16(offset + (i * 12) + 8, little);\n }\n }\n }\n else if ((marker & 0xFF00) !== 0xFF00) {\n break;\n }\n else {\n offset += view.getUint16(offset, false);\n }\n }\n return -1;\n}\n/**\n * @param {?} imageBase64\n * @return {?}\n */\nfunction base64ToArrayBuffer(imageBase64) {\n imageBase64 = imageBase64.replace(/^data\\:([^\\;]+)\\;base64,/gmi, '');\n /** @type {?} */\n const binaryString = atob(imageBase64);\n /** @type {?} */\n const len = binaryString.length;\n /** @type {?} */\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes.buffer;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/services/load-image.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction LoadImageBase64() { }\nif (false) {\n /** @type {?} */\n LoadImageBase64.prototype.originalImage;\n /** @type {?} */\n LoadImageBase64.prototype.originalBase64;\n}\nclass LoadImageService {\n constructor() {\n this.autoRotateSupported = supportsAutomaticRotation();\n }\n /**\n * @param {?} file\n * @param {?} cropperSettings\n * @return {?}\n */\n loadImageFile(file, cropperSettings) {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n /** @type {?} */\n const fileReader = new FileReader();\n fileReader.onload = (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.loadImage(event.target.result, file.type, cropperSettings)\n .then(resolve)\n .catch(reject);\n });\n fileReader.readAsDataURL(file);\n }));\n }\n /**\n * @private\n * @param {?} imageBase64\n * @param {?} imageType\n * @param {?} cropperSettings\n * @return {?}\n */\n loadImage(imageBase64, imageType, cropperSettings) {\n if (!this.isValidImageType(imageType)) {\n return Promise.reject(new Error('Invalid image type'));\n }\n return this.loadBase64Image(imageBase64, cropperSettings);\n }\n /**\n * @private\n * @param {?} type\n * @return {?}\n */\n isValidImageType(type) {\n return /image\\/(png|jpg|jpeg|bmp|gif|tiff|webp)/.test(type);\n }\n /**\n * @param {?} url\n * @param {?} cropperSettings\n * @return {?}\n */\n loadImageFromURL(url, cropperSettings) {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n /** @type {?} */\n const img = new Image();\n img.onerror = (/**\n * @return {?}\n */\n () => reject);\n img.onload = (/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const canvas = document.createElement('canvas');\n /** @type {?} */\n const context = canvas.getContext('2d');\n canvas.width = img.width;\n canvas.height = img.height;\n context.drawImage(img, 0, 0);\n this.loadBase64Image(canvas.toDataURL(), cropperSettings).then(resolve);\n });\n img.crossOrigin = 'anonymous';\n img.src = url;\n }));\n }\n /**\n * @param {?} imageBase64\n * @param {?} cropperSettings\n * @return {?}\n */\n loadBase64Image(imageBase64, cropperSettings) {\n return new Promise((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n /** @type {?} */\n const originalImage = new Image();\n originalImage.onload = (/**\n * @return {?}\n */\n () => resolve({\n originalImage,\n originalBase64: imageBase64\n }));\n originalImage.onerror = reject;\n originalImage.src = imageBase64;\n })).then((/**\n * @param {?} res\n * @return {?}\n */\n (res) => this.transformImageBase64(res, cropperSettings)));\n }\n /**\n * @private\n * @param {?} res\n * @param {?} cropperSettings\n * @return {?}\n */\n transformImageBase64(res, cropperSettings) {\n return __awaiter(this, void 0, void 0, function* () {\n /** @type {?} */\n const autoRotate = yield this.autoRotateSupported;\n /** @type {?} */\n const exifTransform = yield getTransformationsFromExifData(autoRotate ? -1 : res.originalBase64);\n if (!res.originalImage || !res.originalImage.complete) {\n return Promise.reject(new Error('No image loaded'));\n }\n /** @type {?} */\n const loadedImage = {\n original: {\n base64: res.originalBase64,\n image: res.originalImage,\n size: {\n width: res.originalImage.naturalWidth,\n height: res.originalImage.naturalHeight\n }\n },\n exifTransform\n };\n return this.transformLoadedImage(loadedImage, cropperSettings);\n });\n }\n /**\n * @param {?} loadedImage\n * @param {?} cropperSettings\n * @return {?}\n */\n transformLoadedImage(loadedImage, cropperSettings) {\n return __awaiter(this, void 0, void 0, function* () {\n /** @type {?} */\n const canvasRotation = cropperSettings.canvasRotation + loadedImage.exifTransform.rotate;\n /** @type {?} */\n const originalSize = {\n width: loadedImage.original.image.naturalWidth,\n height: loadedImage.original.image.naturalHeight\n };\n if (canvasRotation === 0 && !loadedImage.exifTransform.flip && !cropperSettings.containWithinAspectRatio) {\n return {\n original: {\n base64: loadedImage.original.base64,\n image: loadedImage.original.image,\n size: Object.assign({}, originalSize)\n },\n transformed: {\n base64: loadedImage.original.base64,\n image: loadedImage.original.image,\n size: Object.assign({}, originalSize)\n },\n exifTransform: loadedImage.exifTransform\n };\n }\n /** @type {?} */\n const transformedSize = this.getTransformedSize(originalSize, loadedImage.exifTransform, cropperSettings);\n /** @type {?} */\n const canvas = document.createElement('canvas');\n canvas.width = transformedSize.width;\n canvas.height = transformedSize.height;\n /** @type {?} */\n const ctx = canvas.getContext('2d');\n ctx.setTransform(loadedImage.exifTransform.flip ? -1 : 1, 0, 0, 1, canvas.width / 2, canvas.height / 2);\n ctx.rotate(Math.PI * (canvasRotation / 2));\n ctx.drawImage(loadedImage.original.image, -originalSize.width / 2, -originalSize.height / 2);\n /** @type {?} */\n const transformedBase64 = canvas.toDataURL();\n /** @type {?} */\n const transformedImage = yield this.loadImageFromBase64(transformedBase64);\n return {\n original: {\n base64: loadedImage.original.base64,\n image: loadedImage.original.image,\n size: Object.assign({}, originalSize)\n },\n transformed: {\n base64: transformedBase64,\n image: transformedImage,\n size: {\n width: transformedImage.width,\n height: transformedImage.height\n }\n },\n exifTransform: loadedImage.exifTransform\n };\n });\n }\n /**\n * @private\n * @param {?} imageBase64\n * @return {?}\n */\n loadImageFromBase64(imageBase64) {\n return new Promise(((/**\n * @param {?} resolve\n * @param {?} reject\n * @return {?}\n */\n (resolve, reject) => {\n /** @type {?} */\n const image = new Image();\n image.onload = (/**\n * @return {?}\n */\n () => resolve(image));\n image.onerror = reject;\n image.src = imageBase64;\n })));\n }\n /**\n * @private\n * @param {?} originalSize\n * @param {?} exifTransform\n * @param {?} cropperSettings\n * @return {?}\n */\n getTransformedSize(originalSize, exifTransform, cropperSettings) {\n /** @type {?} */\n const canvasRotation = cropperSettings.canvasRotation + exifTransform.rotate;\n if (cropperSettings.containWithinAspectRatio) {\n if (canvasRotation % 2) {\n /** @type {?} */\n const minWidthToContain = originalSize.width * cropperSettings.aspectRatio;\n /** @type {?} */\n const minHeightToContain = originalSize.height / cropperSettings.aspectRatio;\n return {\n width: Math.max(originalSize.height, minWidthToContain),\n height: Math.max(originalSize.width, minHeightToContain)\n };\n }\n else {\n /** @type {?} */\n const minWidthToContain = originalSize.height * cropperSettings.aspectRatio;\n /** @type {?} */\n const minHeightToContain = originalSize.width / cropperSettings.aspectRatio;\n return {\n width: Math.max(originalSize.width, minWidthToContain),\n height: Math.max(originalSize.height, minHeightToContain)\n };\n }\n }\n if (canvasRotation % 2) {\n return {\n height: originalSize.width,\n width: originalSize.height\n };\n }\n return {\n width: originalSize.width,\n height: originalSize.height\n };\n }\n}\nLoadImageService.ɵfac = function LoadImageService_Factory(t) { return new (t || LoadImageService)(); };\n/** @nocollapse */ LoadImageService.ɵprov = ɵɵdefineInjectable({ factory: function LoadImageService_Factory() { return new LoadImageService(); }, token: LoadImageService, providedIn: \"root\" });\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(LoadImageService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\nif (false) {\n /**\n * @type {?}\n * @private\n */\n LoadImageService.prototype.autoRotateSupported;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/utils/keyboard.utils.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} key\n * @return {?}\n */\nfunction getPositionForKey(key) {\n switch (key) {\n case 'ArrowUp':\n return 'top';\n case 'ArrowRight':\n return 'right';\n case 'ArrowDown':\n return 'bottom';\n case 'ArrowLeft':\n default:\n return 'left';\n }\n}\n/**\n * @param {?} key\n * @return {?}\n */\nfunction getInvertedPositionForKey(key) {\n switch (key) {\n case 'ArrowUp':\n return 'bottom';\n case 'ArrowRight':\n return 'left';\n case 'ArrowDown':\n return 'top';\n case 'ArrowLeft':\n default:\n return 'right';\n }\n}\n/**\n * @param {?} key\n * @param {?} stepSize\n * @return {?}\n */\nfunction getEventForKey(key, stepSize) {\n switch (key) {\n case 'ArrowUp':\n return { clientX: 0, clientY: stepSize * -1 };\n case 'ArrowRight':\n return { clientX: stepSize, clientY: 0 };\n case 'ArrowDown':\n return { clientX: 0, clientY: stepSize };\n case 'ArrowLeft':\n default:\n return { clientX: stepSize * -1, clientY: 0 };\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/component/image-cropper.component.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ImageCropperComponent {\n /**\n * @param {?} cropService\n * @param {?} cropperPositionService\n * @param {?} loadImageService\n * @param {?} sanitizer\n * @param {?} cd\n */\n constructor(cropService, cropperPositionService, loadImageService, sanitizer, cd) {\n this.cropService = cropService;\n this.cropperPositionService = cropperPositionService;\n this.loadImageService = loadImageService;\n this.sanitizer = sanitizer;\n this.cd = cd;\n this.Hammer = (window === null || window === void 0 ? void 0 : window['Hammer']) || null;\n this.settings = new CropperSettings();\n this.setImageMaxSizeRetries = 0;\n this.marginLeft = '0px';\n this.moveTypes = MoveTypes;\n this.imageVisible = false;\n this.format = this.settings.format;\n this.transform = {};\n this.maintainAspectRatio = this.settings.maintainAspectRatio;\n this.aspectRatio = this.settings.aspectRatio;\n this.resizeToWidth = this.settings.resizeToWidth;\n this.resizeToHeight = this.settings.resizeToHeight;\n this.cropperMinWidth = this.settings.cropperMinWidth;\n this.cropperMinHeight = this.settings.cropperMinHeight;\n this.cropperMaxHeight = this.settings.cropperMaxHeight;\n this.cropperMaxWidth = this.settings.cropperMaxWidth;\n this.cropperStaticWidth = this.settings.cropperStaticWidth;\n this.cropperStaticHeight = this.settings.cropperStaticHeight;\n this.canvasRotation = this.settings.canvasRotation;\n this.initialStepSize = this.settings.initialStepSize;\n this.roundCropper = this.settings.roundCropper;\n this.onlyScaleDown = this.settings.onlyScaleDown;\n this.imageQuality = this.settings.imageQuality;\n this.autoCrop = this.settings.autoCrop;\n this.backgroundColor = this.settings.backgroundColor;\n this.containWithinAspectRatio = this.settings.containWithinAspectRatio;\n this.hideResizeSquares = this.settings.hideResizeSquares;\n this.cropper = {\n x1: -100,\n y1: -100,\n x2: 10000,\n y2: 10000\n };\n this.alignImage = this.settings.alignImage;\n this.disabled = false;\n this.imageCropped = new EventEmitter();\n this.startCropImage = new EventEmitter();\n this.imageLoaded = new EventEmitter();\n this.cropperReady = new EventEmitter();\n this.loadImageFailed = new EventEmitter();\n this.reset();\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n var _a;\n this.onChangesUpdateSettings(changes);\n this.onChangesInputImage(changes);\n if (((_a = this.loadedImage) === null || _a === void 0 ? void 0 : _a.original.image.complete) && (changes.containWithinAspectRatio || changes.canvasRotation)) {\n this.loadImageService\n .transformLoadedImage(this.loadedImage, this.settings)\n .then((/**\n * @param {?} res\n * @return {?}\n */\n (res) => this.setLoadedImage(res)))\n .catch((/**\n * @param {?} err\n * @return {?}\n */\n (err) => this.loadImageError(err)));\n }\n if (changes.cropper || changes.maintainAspectRatio || changes.aspectRatio) {\n this.setMaxSize();\n this.setCropperScaledMinSize();\n this.setCropperScaledMaxSize();\n if (this.maintainAspectRatio && (changes.maintainAspectRatio || changes.aspectRatio)) {\n this.resetCropperPosition();\n }\n else if (changes.cropper) {\n this.checkCropperPosition(false);\n this.doAutoCrop();\n }\n this.cd.markForCheck();\n }\n if (changes.transform) {\n this.transform = this.transform || {};\n this.setCssTransform();\n this.doAutoCrop();\n }\n }\n /**\n * @private\n * @param {?} changes\n * @return {?}\n */\n onChangesUpdateSettings(changes) {\n this.settings.setOptionsFromChanges(changes);\n if (this.settings.cropperStaticHeight && this.settings.cropperStaticWidth) {\n this.settings.setOptions({\n hideResizeSquares: true,\n cropperMinWidth: this.settings.cropperStaticWidth,\n cropperMinHeight: this.settings.cropperStaticHeight,\n cropperMaxHeight: this.settings.cropperStaticHeight,\n cropperMaxWidth: this.settings.cropperStaticWidth,\n maintainAspectRatio: false\n });\n }\n }\n /**\n * @private\n * @param {?} changes\n * @return {?}\n */\n onChangesInputImage(changes) {\n if (changes.imageChangedEvent || changes.imageURL || changes.imageBase64 || changes.imageFile) {\n this.reset();\n }\n if (changes.imageChangedEvent && this.isValidImageChangedEvent()) {\n this.loadImageFile(this.imageChangedEvent.target.files[0]);\n }\n if (changes.imageURL && this.imageURL) {\n this.loadImageFromURL(this.imageURL);\n }\n if (changes.imageBase64 && this.imageBase64) {\n this.loadBase64Image(this.imageBase64);\n }\n if (changes.imageFile && this.imageFile) {\n this.loadImageFile(this.imageFile);\n }\n }\n /**\n * @private\n * @return {?}\n */\n isValidImageChangedEvent() {\n var _a, _b, _c;\n return ((_c = (_b = (_a = this.imageChangedEvent) === null || _a === void 0 ? void 0 : _a.target) === null || _b === void 0 ? void 0 : _b.files) === null || _c === void 0 ? void 0 : _c.length) > 0;\n }\n /**\n * @private\n * @return {?}\n */\n setCssTransform() {\n this.safeTransformStyle = this.sanitizer.bypassSecurityTrustStyle('scaleX(' + (this.transform.scale || 1) * (this.transform.flipH ? -1 : 1) + ')' +\n 'scaleY(' + (this.transform.scale || 1) * (this.transform.flipV ? -1 : 1) + ')' +\n 'rotate(' + (this.transform.rotate || 0) + 'deg)');\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.settings.stepSize = this.initialStepSize;\n this.activatePinchGesture();\n }\n /**\n * @private\n * @return {?}\n */\n reset() {\n this.imageVisible = false;\n this.loadedImage = null;\n this.safeImgDataUrl = 'data:image/png;base64,iVBORw0KGg'\n + 'oAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAU'\n + 'AAarVyFEAAAAASUVORK5CYII=';\n this.moveStart = {\n active: false,\n type: null,\n position: null,\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n clientX: 0,\n clientY: 0\n };\n this.maxSize = {\n width: 0,\n height: 0\n };\n this.cropper.x1 = -100;\n this.cropper.y1 = -100;\n this.cropper.x2 = 10000;\n this.cropper.y2 = 10000;\n }\n /**\n * @private\n * @param {?} file\n * @return {?}\n */\n loadImageFile(file) {\n this.loadImageService\n .loadImageFile(file, this.settings)\n .then((/**\n * @param {?} res\n * @return {?}\n */\n (res) => this.setLoadedImage(res)))\n .catch((/**\n * @param {?} err\n * @return {?}\n */\n (err) => this.loadImageError(err)));\n }\n /**\n * @private\n * @param {?} imageBase64\n * @return {?}\n */\n loadBase64Image(imageBase64) {\n this.loadImageService\n .loadBase64Image(imageBase64, this.settings)\n .then((/**\n * @param {?} res\n * @return {?}\n */\n (res) => this.setLoadedImage(res)))\n .catch((/**\n * @param {?} err\n * @return {?}\n */\n (err) => this.loadImageError(err)));\n }\n /**\n * @private\n * @param {?} url\n * @return {?}\n */\n loadImageFromURL(url) {\n this.loadImageService\n .loadImageFromURL(url, this.settings)\n .then((/**\n * @param {?} res\n * @return {?}\n */\n (res) => this.setLoadedImage(res)))\n .catch((/**\n * @param {?} err\n * @return {?}\n */\n (err) => this.loadImageError(err)));\n }\n /**\n * @private\n * @param {?} loadedImage\n * @return {?}\n */\n setLoadedImage(loadedImage) {\n this.loadedImage = loadedImage;\n this.safeImgDataUrl = this.sanitizer.bypassSecurityTrustResourceUrl(loadedImage.transformed.base64);\n this.cd.markForCheck();\n }\n /**\n * @private\n * @param {?} error\n * @return {?}\n */\n loadImageError(error) {\n console.error(error);\n this.loadImageFailed.emit();\n }\n /**\n * @return {?}\n */\n imageLoadedInView() {\n if (this.loadedImage != null) {\n this.imageLoaded.emit(this.loadedImage);\n this.setImageMaxSizeRetries = 0;\n setTimeout((/**\n * @return {?}\n */\n () => this.checkImageMaxSizeRecursively()));\n }\n }\n /**\n * @private\n * @return {?}\n */\n checkImageMaxSizeRecursively() {\n if (this.setImageMaxSizeRetries > 40) {\n this.loadImageFailed.emit();\n }\n else if (this.sourceImageLoaded()) {\n this.setMaxSize();\n this.setCropperScaledMinSize();\n this.setCropperScaledMaxSize();\n this.resetCropperPosition();\n this.cropperReady.emit(Object.assign({}, this.maxSize));\n this.cd.markForCheck();\n }\n else {\n this.setImageMaxSizeRetries++;\n setTimeout((/**\n * @return {?}\n */\n () => this.checkImageMaxSizeRecursively()), 50);\n }\n }\n /**\n * @private\n * @return {?}\n */\n sourceImageLoaded() {\n var _a, _b;\n return ((_b = (_a = this.sourceImage) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.offsetWidth) > 0;\n }\n /**\n * @return {?}\n */\n onResize() {\n if (!this.loadedImage) {\n return;\n }\n this.resizeCropperPosition();\n this.setMaxSize();\n this.setCropperScaledMinSize();\n this.setCropperScaledMaxSize();\n }\n /**\n * @private\n * @return {?}\n */\n activatePinchGesture() {\n if (this.Hammer) {\n /** @type {?} */\n const hammer = new this.Hammer(this.wrapper.nativeElement);\n hammer.get('pinch').set({ enable: true });\n hammer.on('pinchmove', this.onPinch.bind(this));\n hammer.on('pinchend', this.pinchStop.bind(this));\n hammer.on('pinchstart', this.startPinch.bind(this));\n }\n else if (isDevMode()) {\n console.warn('[NgxImageCropper] Could not find HammerJS - Pinch Gesture won\\'t work');\n }\n }\n /**\n * @private\n * @return {?}\n */\n resizeCropperPosition() {\n /** @type {?} */\n const sourceImageElement = this.sourceImage.nativeElement;\n if (this.maxSize.width !== sourceImageElement.offsetWidth || this.maxSize.height !== sourceImageElement.offsetHeight) {\n this.cropper.x1 = this.cropper.x1 * sourceImageElement.offsetWidth / this.maxSize.width;\n this.cropper.x2 = this.cropper.x2 * sourceImageElement.offsetWidth / this.maxSize.width;\n this.cropper.y1 = this.cropper.y1 * sourceImageElement.offsetHeight / this.maxSize.height;\n this.cropper.y2 = this.cropper.y2 * sourceImageElement.offsetHeight / this.maxSize.height;\n }\n }\n /**\n * @return {?}\n */\n resetCropperPosition() {\n this.cropperPositionService.resetCropperPosition(this.sourceImage, this.cropper, this.settings);\n this.doAutoCrop();\n this.imageVisible = true;\n }\n /**\n * @param {?} event\n * @return {?}\n */\n keyboardAccess(event) {\n this.changeKeyboardStepSize(event);\n this.keyboardMoveCropper(event);\n }\n /**\n * @private\n * @param {?} event\n * @return {?}\n */\n changeKeyboardStepSize(event) {\n /** @type {?} */\n const key = +event.key;\n if (key >= 1 && key <= 9) {\n this.settings.stepSize = key;\n }\n }\n /**\n * @private\n * @param {?} event\n * @return {?}\n */\n keyboardMoveCropper(event) {\n /** @type {?} */\n const keyboardWhiteList = ['ArrowUp', 'ArrowDown', 'ArrowRight', 'ArrowLeft'];\n if (!(keyboardWhiteList.includes(event.key))) {\n return;\n }\n /** @type {?} */\n const moveType = event.shiftKey ? MoveTypes.Resize : MoveTypes.Move;\n /** @type {?} */\n const position = event.altKey ? getInvertedPositionForKey(event.key) : getPositionForKey(event.key);\n /** @type {?} */\n const moveEvent = getEventForKey(event.key, this.settings.stepSize);\n event.preventDefault();\n event.stopPropagation();\n this.startMove({ clientX: 0, clientY: 0 }, moveType, position);\n this.moveImg(moveEvent);\n this.moveStop();\n }\n /**\n * @param {?} event\n * @param {?} moveType\n * @param {?=} position\n * @return {?}\n */\n startMove(event, moveType, position = null) {\n var _a, _b;\n if (((_a = this.moveStart) === null || _a === void 0 ? void 0 : _a.active) && ((_b = this.moveStart) === null || _b === void 0 ? void 0 : _b.type) === MoveTypes.Pinch) {\n return;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n this.moveStart = Object.assign({ active: true, type: moveType, position, clientX: this.cropperPositionService.getClientX(event), clientY: this.cropperPositionService.getClientY(event) }, this.cropper);\n }\n /**\n * @param {?} event\n * @return {?}\n */\n startPinch(event) {\n if (!this.safeImgDataUrl) {\n return;\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n this.moveStart = Object.assign({ active: true, type: MoveTypes.Pinch, position: 'center', clientX: this.cropper.x1 + (this.cropper.x2 - this.cropper.x1) / 2, clientY: this.cropper.y1 + (this.cropper.y2 - this.cropper.y1) / 2 }, this.cropper);\n }\n /**\n * @param {?} event\n * @return {?}\n */\n moveImg(event) {\n if (this.moveStart.active) {\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n if (this.moveStart.type === MoveTypes.Move) {\n this.cropperPositionService.move(event, this.moveStart, this.cropper);\n this.checkCropperPosition(true);\n }\n else if (this.moveStart.type === MoveTypes.Resize) {\n if (!this.cropperStaticWidth && !this.cropperStaticHeight) {\n this.cropperPositionService.resize(event, this.moveStart, this.cropper, this.maxSize, this.settings);\n }\n this.checkCropperPosition(false);\n }\n this.cd.detectChanges();\n }\n }\n /**\n * @param {?} event\n * @return {?}\n */\n onPinch(event) {\n if (this.moveStart.active) {\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n if (event.preventDefault) {\n event.preventDefault();\n }\n if (this.moveStart.type === MoveTypes.Pinch) {\n this.cropperPositionService.resize(event, this.moveStart, this.cropper, this.maxSize, this.settings);\n this.checkCropperPosition(false);\n }\n this.cd.detectChanges();\n }\n }\n /**\n * @private\n * @return {?}\n */\n setMaxSize() {\n if (this.sourceImage) {\n /** @type {?} */\n const sourceImageElement = this.sourceImage.nativeElement;\n this.maxSize.width = sourceImageElement.offsetWidth;\n this.maxSize.height = sourceImageElement.offsetHeight;\n this.marginLeft = this.sanitizer.bypassSecurityTrustStyle('calc(50% - ' + this.maxSize.width / 2 + 'px)');\n }\n }\n /**\n * @private\n * @return {?}\n */\n setCropperScaledMinSize() {\n var _a, _b;\n if ((_b = (_a = this.loadedImage) === null || _a === void 0 ? void 0 : _a.transformed) === null || _b === void 0 ? void 0 : _b.image) {\n this.setCropperScaledMinWidth();\n this.setCropperScaledMinHeight();\n }\n else {\n this.settings.cropperScaledMinWidth = 20;\n this.settings.cropperScaledMinHeight = 20;\n }\n }\n /**\n * @private\n * @return {?}\n */\n setCropperScaledMinWidth() {\n this.settings.cropperScaledMinWidth = this.cropperMinWidth > 0\n ? Math.max(20, this.cropperMinWidth / this.loadedImage.transformed.image.width * this.maxSize.width)\n : 20;\n }\n /**\n * @private\n * @return {?}\n */\n setCropperScaledMinHeight() {\n if (this.maintainAspectRatio) {\n this.settings.cropperScaledMinHeight = Math.max(20, this.settings.cropperScaledMinWidth / this.aspectRatio);\n }\n else if (this.cropperMinHeight > 0) {\n this.settings.cropperScaledMinHeight = Math.max(20, this.cropperMinHeight / this.loadedImage.transformed.image.height * this.maxSize.height);\n }\n else {\n this.settings.cropperScaledMinHeight = 20;\n }\n }\n /**\n * @private\n * @return {?}\n */\n setCropperScaledMaxSize() {\n var _a, _b;\n if ((_b = (_a = this.loadedImage) === null || _a === void 0 ? void 0 : _a.transformed) === null || _b === void 0 ? void 0 : _b.image) {\n /** @type {?} */\n const ratio = this.loadedImage.transformed.size.width / this.maxSize.width;\n this.settings.cropperScaledMaxWidth = this.cropperMaxWidth > 20 ? this.cropperMaxWidth / ratio : this.maxSize.width;\n this.settings.cropperScaledMaxHeight = this.cropperMaxHeight > 20 ? this.cropperMaxHeight / ratio : this.maxSize.height;\n if (this.maintainAspectRatio) {\n if (this.settings.cropperScaledMaxWidth > this.settings.cropperScaledMaxHeight * this.aspectRatio) {\n this.settings.cropperScaledMaxWidth = this.settings.cropperScaledMaxHeight * this.aspectRatio;\n }\n else if (this.settings.cropperScaledMaxWidth < this.settings.cropperScaledMaxHeight * this.aspectRatio) {\n this.settings.cropperScaledMaxHeight = this.settings.cropperScaledMaxWidth / this.aspectRatio;\n }\n }\n }\n else {\n this.settings.cropperScaledMaxWidth = this.maxSize.width;\n this.settings.cropperScaledMaxHeight = this.maxSize.height;\n }\n }\n /**\n * @private\n * @param {?=} maintainSize\n * @return {?}\n */\n checkCropperPosition(maintainSize = false) {\n if (this.cropper.x1 < 0) {\n this.cropper.x2 -= maintainSize ? this.cropper.x1 : 0;\n this.cropper.x1 = 0;\n }\n if (this.cropper.y1 < 0) {\n this.cropper.y2 -= maintainSize ? this.cropper.y1 : 0;\n this.cropper.y1 = 0;\n }\n if (this.cropper.x2 > this.maxSize.width) {\n this.cropper.x1 -= maintainSize ? (this.cropper.x2 - this.maxSize.width) : 0;\n this.cropper.x2 = this.maxSize.width;\n }\n if (this.cropper.y2 > this.maxSize.height) {\n this.cropper.y1 -= maintainSize ? (this.cropper.y2 - this.maxSize.height) : 0;\n this.cropper.y2 = this.maxSize.height;\n }\n }\n /**\n * @return {?}\n */\n moveStop() {\n if (this.moveStart.active) {\n this.moveStart.active = false;\n this.doAutoCrop();\n }\n }\n /**\n * @return {?}\n */\n pinchStop() {\n if (this.moveStart.active) {\n this.moveStart.active = false;\n this.doAutoCrop();\n }\n }\n /**\n * @private\n * @return {?}\n */\n doAutoCrop() {\n if (this.autoCrop) {\n this.crop();\n }\n }\n /**\n * @return {?}\n */\n crop() {\n var _a, _b;\n if (((_b = (_a = this.loadedImage) === null || _a === void 0 ? void 0 : _a.transformed) === null || _b === void 0 ? void 0 : _b.image) != null) {\n this.startCropImage.emit();\n /** @type {?} */\n const output = this.cropService.crop(this.sourceImage, this.loadedImage, this.cropper, this.settings);\n if (output != null) {\n this.imageCropped.emit(output);\n }\n return output;\n }\n return null;\n }\n}\nImageCropperComponent.ɵfac = function ImageCropperComponent_Factory(t) { return new (t || ImageCropperComponent)(ɵngcc0.ɵɵdirectiveInject(CropService), ɵngcc0.ɵɵdirectiveInject(CropperPositionService), ɵngcc0.ɵɵdirectiveInject(LoadImageService), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DomSanitizer), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nImageCropperComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: ImageCropperComponent, selectors: [[\"image-cropper\"]], viewQuery: function ImageCropperComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵstaticViewQuery(_c0, true);\n ɵngcc0.ɵɵviewQuery(_c1, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.wrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.sourceImage = _t.first);\n } }, hostVars: 4, hostBindings: function ImageCropperComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"resize\", function ImageCropperComponent_resize_HostBindingHandler() { return ctx.onResize(); }, false, ɵngcc0.ɵɵresolveWindow)(\"mousemove\", function ImageCropperComponent_mousemove_HostBindingHandler($event) { return ctx.moveImg($event); }, false, ɵngcc0.ɵɵresolveDocument)(\"touchmove\", function ImageCropperComponent_touchmove_HostBindingHandler($event) { return ctx.moveImg($event); }, false, ɵngcc0.ɵɵresolveDocument)(\"mouseup\", function ImageCropperComponent_mouseup_HostBindingHandler() { return ctx.moveStop(); }, false, ɵngcc0.ɵɵresolveDocument)(\"touchend\", function ImageCropperComponent_touchend_HostBindingHandler() { return ctx.moveStop(); }, false, ɵngcc0.ɵɵresolveDocument);\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"text-align\", ctx.alignImage);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n } }, inputs: { format: \"format\", transform: \"transform\", maintainAspectRatio: \"maintainAspectRatio\", aspectRatio: \"aspectRatio\", resizeToWidth: \"resizeToWidth\", resizeToHeight: \"resizeToHeight\", cropperMinWidth: \"cropperMinWidth\", cropperMinHeight: \"cropperMinHeight\", cropperMaxHeight: \"cropperMaxHeight\", cropperMaxWidth: \"cropperMaxWidth\", cropperStaticWidth: \"cropperStaticWidth\", cropperStaticHeight: \"cropperStaticHeight\", canvasRotation: \"canvasRotation\", initialStepSize: \"initialStepSize\", roundCropper: \"roundCropper\", onlyScaleDown: \"onlyScaleDown\", imageQuality: \"imageQuality\", autoCrop: \"autoCrop\", backgroundColor: \"backgroundColor\", containWithinAspectRatio: \"containWithinAspectRatio\", hideResizeSquares: \"hideResizeSquares\", cropper: \"cropper\", alignImage: \"alignImage\", disabled: \"disabled\", imageChangedEvent: \"imageChangedEvent\", imageURL: \"imageURL\", imageBase64: \"imageBase64\", imageFile: \"imageFile\" }, outputs: { imageCropped: \"imageCropped\", startCropImage: \"startCropImage\", imageLoaded: \"imageLoaded\", cropperReady: \"cropperReady\", loadImageFailed: \"loadImageFailed\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 5, vars: 10, consts: [[\"wrapper\", \"\"], [\"class\", \"ngx-ic-source-image\", 3, \"src\", \"visibility\", \"transform\", \"load\", 4, \"ngIf\"], [1, \"ngx-ic-overlay\"], [\"class\", \"ngx-ic-cropper\", \"tabindex\", \"0\", 3, \"ngx-ic-round\", \"top\", \"left\", \"width\", \"height\", \"margin-left\", \"visibility\", \"keydown\", 4, \"ngIf\"], [1, \"ngx-ic-source-image\", 3, \"src\", \"load\"], [\"sourceImage\", \"\"], [\"tabindex\", \"0\", 1, \"ngx-ic-cropper\", 3, \"keydown\"], [1, \"ngx-ic-move\", 3, \"mousedown\", \"touchstart\"], [4, \"ngIf\"], [1, \"ngx-ic-resize\", \"ngx-ic-topleft\", 3, \"mousedown\", \"touchstart\"], [1, \"ngx-ic-square\"], [1, \"ngx-ic-resize\", \"ngx-ic-top\"], [1, \"ngx-ic-resize\", \"ngx-ic-topright\", 3, \"mousedown\", \"touchstart\"], [1, \"ngx-ic-resize\", \"ngx-ic-right\"], [1, \"ngx-ic-resize\", \"ngx-ic-bottomright\", 3, \"mousedown\", \"touchstart\"], [1, \"ngx-ic-resize\", \"ngx-ic-bottom\"], [1, \"ngx-ic-resize\", \"ngx-ic-bottomleft\", 3, \"mousedown\", \"touchstart\"], [1, \"ngx-ic-resize\", \"ngx-ic-left\"], [1, \"ngx-ic-resize-bar\", \"ngx-ic-top\", 3, \"mousedown\", \"touchstart\"], [1, \"ngx-ic-resize-bar\", \"ngx-ic-right\", 3, \"mousedown\", \"touchstart\"], [1, \"ngx-ic-resize-bar\", \"ngx-ic-bottom\", 3, \"mousedown\", \"touchstart\"], [1, \"ngx-ic-resize-bar\", \"ngx-ic-left\", 3, \"mousedown\", \"touchstart\"]], template: function ImageCropperComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", null, 0);\n ɵngcc0.ɵɵtemplate(2, ImageCropperComponent_img_2_Template, 2, 5, \"img\", 1);\n ɵngcc0.ɵɵelement(3, \"div\", 2);\n ɵngcc0.ɵɵtemplate(4, ImageCropperComponent_div_4_Template, 3, 15, \"div\", 3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"background\", ctx.imageVisible && ctx.backgroundColor, ɵngcc0.ɵɵdefaultStyleSanitizer);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.safeImgDataUrl);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.maxSize.width, \"px\")(\"height\", ctx.maxSize.height, \"px\")(\"margin-left\", ctx.alignImage === \"center\" ? ctx.marginLeft : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.imageVisible);\n } }, directives: [ɵngcc2.NgIf], styles: [\"[_nghost-%COMP%]{display:flex;max-height:100%;max-width:100%;overflow:hidden;padding:5px;text-align:center}[_nghost-%COMP%], [_nghost-%COMP%] > div[_ngcontent-%COMP%]{position:relative;width:100%}[_nghost-%COMP%] > div[_ngcontent-%COMP%] img.ngx-ic-source-image[_ngcontent-%COMP%]{max-height:100%;max-width:100%;transform-origin:center}[_nghost-%COMP%] .ngx-ic-overlay[_ngcontent-%COMP%]{left:0;outline:var(--cropper-overlay-color,#fff) solid 100vw;pointer-events:none;position:absolute;top:0;touch-action:none}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%]{background:transparent;color:#53535c;display:flex;outline:100vw solid hsla(0,0%,100%,.3);outline:var(--cropper-outline-color,hsla(0,0%,100%,.3)) solid 100vw;position:absolute;touch-action:none}@media (orientation:portrait){[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%]{outline-width:100vh}}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%]:after{border:1px dashed;bottom:0;color:inherit;content:\\\"\\\";left:0;opacity:.75;pointer-events:none;position:absolute;right:0;top:0;z-index:1}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-move[_ngcontent-%COMP%]{border:1px solid hsla(0,0%,100%,.5);cursor:move;width:100%}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%]:focus .ngx-ic-move[_ngcontent-%COMP%]{border-color:#1e90ff;border-width:2px}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize[_ngcontent-%COMP%]{display:inline-block;line-height:6px;opacity:.85;padding:8px;position:absolute;z-index:1}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize[_ngcontent-%COMP%] .ngx-ic-square[_ngcontent-%COMP%]{background:#53535c;border:1px solid hsla(0,0%,100%,.5);box-sizing:content-box;display:inline-block;height:6px;width:6px}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize.ngx-ic-topleft[_ngcontent-%COMP%]{cursor:nwse-resize;left:-12px;top:-12px}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize.ngx-ic-top[_ngcontent-%COMP%]{cursor:ns-resize;left:calc(50% - 12px);top:-12px}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize.ngx-ic-topright[_ngcontent-%COMP%]{cursor:nesw-resize;right:-12px;top:-12px}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize.ngx-ic-right[_ngcontent-%COMP%]{cursor:ew-resize;right:-12px;top:calc(50% - 12px)}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize.ngx-ic-bottomright[_ngcontent-%COMP%]{bottom:-12px;cursor:nwse-resize;right:-12px}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize.ngx-ic-bottom[_ngcontent-%COMP%]{bottom:-12px;cursor:ns-resize;left:calc(50% - 12px)}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize.ngx-ic-bottomleft[_ngcontent-%COMP%]{bottom:-12px;cursor:nesw-resize;left:-12px}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize.ngx-ic-left[_ngcontent-%COMP%]{cursor:ew-resize;left:-12px;top:calc(50% - 12px)}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize-bar[_ngcontent-%COMP%]{position:absolute;z-index:1}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize-bar.ngx-ic-top[_ngcontent-%COMP%]{cursor:ns-resize;height:22px;left:11px;top:-11px;width:calc(100% - 22px)}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize-bar.ngx-ic-right[_ngcontent-%COMP%]{cursor:ew-resize;height:calc(100% - 22px);right:-11px;top:11px;width:22px}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize-bar.ngx-ic-bottom[_ngcontent-%COMP%]{bottom:-11px;cursor:ns-resize;height:22px;left:11px;width:calc(100% - 22px)}[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize-bar.ngx-ic-left[_ngcontent-%COMP%]{cursor:ew-resize;height:calc(100% - 22px);left:-11px;top:11px;width:22px}[_nghost-%COMP%] .ngx-ic-cropper.ngx-ic-round[_ngcontent-%COMP%]{outline-color:transparent}[_nghost-%COMP%] .ngx-ic-cropper.ngx-ic-round[_ngcontent-%COMP%]:after{border-radius:100%;box-shadow:0 0 0 100vw hsla(0,0%,100%,.3);box-shadow:0 0 0 100vw var(--cropper-outline-color,hsla(0,0%,100%,.3))}@media (orientation:portrait){[_nghost-%COMP%] .ngx-ic-cropper.ngx-ic-round[_ngcontent-%COMP%]:after{box-shadow:0 0 0 100vh hsla(0,0%,100%,.3);box-shadow:0 0 0 100vh var(--cropper-outline-color,hsla(0,0%,100%,.3))}}[_nghost-%COMP%] .ngx-ic-cropper.ngx-ic-round[_ngcontent-%COMP%] .ngx-ic-move[_ngcontent-%COMP%]{border-radius:100%}.disabled[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-move[_ngcontent-%COMP%], .disabled[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize[_ngcontent-%COMP%], .disabled[_nghost-%COMP%] .ngx-ic-cropper[_ngcontent-%COMP%] .ngx-ic-resize-bar[_ngcontent-%COMP%]{display:none}\"], changeDetection: 0 });\n/** @nocollapse */\nImageCropperComponent.ctorParameters = () => [\n { type: CropService },\n { type: CropperPositionService },\n { type: LoadImageService },\n { type: DomSanitizer },\n { type: ChangeDetectorRef }\n];\nImageCropperComponent.propDecorators = {\n wrapper: [{ type: ViewChild, args: ['wrapper', { static: true },] }],\n sourceImage: [{ type: ViewChild, args: ['sourceImage', { static: false },] }],\n imageChangedEvent: [{ type: Input }],\n imageURL: [{ type: Input }],\n imageBase64: [{ type: Input }],\n imageFile: [{ type: Input }],\n format: [{ type: Input }],\n transform: [{ type: Input }],\n maintainAspectRatio: [{ type: Input }],\n aspectRatio: [{ type: Input }],\n resizeToWidth: [{ type: Input }],\n resizeToHeight: [{ type: Input }],\n cropperMinWidth: [{ type: Input }],\n cropperMinHeight: [{ type: Input }],\n cropperMaxHeight: [{ type: Input }],\n cropperMaxWidth: [{ type: Input }],\n cropperStaticWidth: [{ type: Input }],\n cropperStaticHeight: [{ type: Input }],\n canvasRotation: [{ type: Input }],\n initialStepSize: [{ type: Input }],\n roundCropper: [{ type: Input }],\n onlyScaleDown: [{ type: Input }],\n imageQuality: [{ type: Input }],\n autoCrop: [{ type: Input }],\n backgroundColor: [{ type: Input }],\n containWithinAspectRatio: [{ type: Input }],\n hideResizeSquares: [{ type: Input }],\n cropper: [{ type: Input }],\n alignImage: [{ type: HostBinding, args: ['style.text-align',] }, { type: Input }],\n disabled: [{ type: HostBinding, args: ['class.disabled',] }, { type: Input }],\n imageCropped: [{ type: Output }],\n startCropImage: [{ type: Output }],\n imageLoaded: [{ type: Output }],\n cropperReady: [{ type: Output }],\n loadImageFailed: [{ type: Output }],\n onResize: [{ type: HostListener, args: ['window:resize',] }],\n moveImg: [{ type: HostListener, args: ['document:mousemove', ['$event'],] }, { type: HostListener, args: ['document:touchmove', ['$event'],] }],\n moveStop: [{ type: HostListener, args: ['document:mouseup',] }, { type: HostListener, args: ['document:touchend',] }]\n};\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(ImageCropperComponent, [{\n type: Component,\n args: [{\n selector: 'image-cropper',\n template: \"
\\n \\n
\\n
\\n \\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\":host{display:flex;max-height:100%;max-width:100%;overflow:hidden;padding:5px;text-align:center}:host,:host>div{position:relative;width:100%}:host>div img.ngx-ic-source-image{max-height:100%;max-width:100%;transform-origin:center}:host .ngx-ic-overlay{left:0;outline:var(--cropper-overlay-color,#fff) solid 100vw;pointer-events:none;position:absolute;top:0;touch-action:none}:host .ngx-ic-cropper{background:transparent;color:#53535c;display:flex;outline:100vw solid hsla(0,0%,100%,.3);outline:var(--cropper-outline-color,hsla(0,0%,100%,.3)) solid 100vw;position:absolute;touch-action:none}@media (orientation:portrait){:host .ngx-ic-cropper{outline-width:100vh}}:host .ngx-ic-cropper:after{border:1px dashed;bottom:0;color:inherit;content:\\\"\\\";left:0;opacity:.75;pointer-events:none;position:absolute;right:0;top:0;z-index:1}:host .ngx-ic-cropper .ngx-ic-move{border:1px solid hsla(0,0%,100%,.5);cursor:move;width:100%}:host .ngx-ic-cropper:focus .ngx-ic-move{border-color:#1e90ff;border-width:2px}:host .ngx-ic-cropper .ngx-ic-resize{display:inline-block;line-height:6px;opacity:.85;padding:8px;position:absolute;z-index:1}:host .ngx-ic-cropper .ngx-ic-resize .ngx-ic-square{background:#53535c;border:1px solid hsla(0,0%,100%,.5);box-sizing:content-box;display:inline-block;height:6px;width:6px}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-topleft{cursor:nwse-resize;left:-12px;top:-12px}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-top{cursor:ns-resize;left:calc(50% - 12px);top:-12px}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-topright{cursor:nesw-resize;right:-12px;top:-12px}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-right{cursor:ew-resize;right:-12px;top:calc(50% - 12px)}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottomright{bottom:-12px;cursor:nwse-resize;right:-12px}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottom{bottom:-12px;cursor:ns-resize;left:calc(50% - 12px)}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-bottomleft{bottom:-12px;cursor:nesw-resize;left:-12px}:host .ngx-ic-cropper .ngx-ic-resize.ngx-ic-left{cursor:ew-resize;left:-12px;top:calc(50% - 12px)}:host .ngx-ic-cropper .ngx-ic-resize-bar{position:absolute;z-index:1}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-top{cursor:ns-resize;height:22px;left:11px;top:-11px;width:calc(100% - 22px)}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-right{cursor:ew-resize;height:calc(100% - 22px);right:-11px;top:11px;width:22px}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-bottom{bottom:-11px;cursor:ns-resize;height:22px;left:11px;width:calc(100% - 22px)}:host .ngx-ic-cropper .ngx-ic-resize-bar.ngx-ic-left{cursor:ew-resize;height:calc(100% - 22px);left:-11px;top:11px;width:22px}:host .ngx-ic-cropper.ngx-ic-round{outline-color:transparent}:host .ngx-ic-cropper.ngx-ic-round:after{border-radius:100%;box-shadow:0 0 0 100vw hsla(0,0%,100%,.3);box-shadow:0 0 0 100vw var(--cropper-outline-color,hsla(0,0%,100%,.3))}@media (orientation:portrait){:host .ngx-ic-cropper.ngx-ic-round:after{box-shadow:0 0 0 100vh hsla(0,0%,100%,.3);box-shadow:0 0 0 100vh var(--cropper-outline-color,hsla(0,0%,100%,.3))}}:host .ngx-ic-cropper.ngx-ic-round .ngx-ic-move{border-radius:100%}:host.disabled .ngx-ic-cropper .ngx-ic-move,:host.disabled .ngx-ic-cropper .ngx-ic-resize,:host.disabled .ngx-ic-cropper .ngx-ic-resize-bar{display:none}\"]\n }]\n }], function () { return [{ type: CropService }, { type: CropperPositionService }, { type: LoadImageService }, { type: ɵngcc1.DomSanitizer }, { type: ɵngcc0.ChangeDetectorRef }]; }, { format: [{\n type: Input\n }], transform: [{\n type: Input\n }], maintainAspectRatio: [{\n type: Input\n }], aspectRatio: [{\n type: Input\n }], resizeToWidth: [{\n type: Input\n }], resizeToHeight: [{\n type: Input\n }], cropperMinWidth: [{\n type: Input\n }], cropperMinHeight: [{\n type: Input\n }], cropperMaxHeight: [{\n type: Input\n }], cropperMaxWidth: [{\n type: Input\n }], cropperStaticWidth: [{\n type: Input\n }], cropperStaticHeight: [{\n type: Input\n }], canvasRotation: [{\n type: Input\n }], initialStepSize: [{\n type: Input\n }], roundCropper: [{\n type: Input\n }], onlyScaleDown: [{\n type: Input\n }], imageQuality: [{\n type: Input\n }], autoCrop: [{\n type: Input\n }], backgroundColor: [{\n type: Input\n }], containWithinAspectRatio: [{\n type: Input\n }], hideResizeSquares: [{\n type: Input\n }], cropper: [{\n type: Input\n }], alignImage: [{\n type: HostBinding,\n args: ['style.text-align']\n }, {\n type: Input\n }], disabled: [{\n type: HostBinding,\n args: ['class.disabled']\n }, {\n type: Input\n }], imageCropped: [{\n type: Output\n }], startCropImage: [{\n type: Output\n }], imageLoaded: [{\n type: Output\n }], cropperReady: [{\n type: Output\n }], loadImageFailed: [{\n type: Output\n }], onResize: [{\n type: HostListener,\n args: ['window:resize']\n }], moveImg: [{\n type: HostListener,\n args: ['document:mousemove', ['$event']]\n }, {\n type: HostListener,\n args: ['document:touchmove', ['$event']]\n }], moveStop: [{\n type: HostListener,\n args: ['document:mouseup']\n }, {\n type: HostListener,\n args: ['document:touchend']\n }], wrapper: [{\n type: ViewChild,\n args: ['wrapper', { static: true }]\n }], sourceImage: [{\n type: ViewChild,\n args: ['sourceImage', { static: false }]\n }], imageChangedEvent: [{\n type: Input\n }], imageURL: [{\n type: Input\n }], imageBase64: [{\n type: Input\n }], imageFile: [{\n type: Input\n }] }); })();\nif (false) {\n /**\n * @type {?}\n * @private\n */\n ImageCropperComponent.prototype.Hammer;\n /**\n * @type {?}\n * @private\n */\n ImageCropperComponent.prototype.settings;\n /**\n * @type {?}\n * @private\n */\n ImageCropperComponent.prototype.setImageMaxSizeRetries;\n /**\n * @type {?}\n * @private\n */\n ImageCropperComponent.prototype.moveStart;\n /**\n * @type {?}\n * @private\n */\n ImageCropperComponent.prototype.loadedImage;\n /** @type {?} */\n ImageCropperComponent.prototype.safeImgDataUrl;\n /** @type {?} */\n ImageCropperComponent.prototype.safeTransformStyle;\n /** @type {?} */\n ImageCropperComponent.prototype.marginLeft;\n /** @type {?} */\n ImageCropperComponent.prototype.maxSize;\n /** @type {?} */\n ImageCropperComponent.prototype.moveTypes;\n /** @type {?} */\n ImageCropperComponent.prototype.imageVisible;\n /** @type {?} */\n ImageCropperComponent.prototype.wrapper;\n /** @type {?} */\n ImageCropperComponent.prototype.sourceImage;\n /** @type {?} */\n ImageCropperComponent.prototype.imageChangedEvent;\n /** @type {?} */\n ImageCropperComponent.prototype.imageURL;\n /** @type {?} */\n ImageCropperComponent.prototype.imageBase64;\n /** @type {?} */\n ImageCropperComponent.prototype.imageFile;\n /** @type {?} */\n ImageCropperComponent.prototype.format;\n /** @type {?} */\n ImageCropperComponent.prototype.transform;\n /** @type {?} */\n ImageCropperComponent.prototype.maintainAspectRatio;\n /** @type {?} */\n ImageCropperComponent.prototype.aspectRatio;\n /** @type {?} */\n ImageCropperComponent.prototype.resizeToWidth;\n /** @type {?} */\n ImageCropperComponent.prototype.resizeToHeight;\n /** @type {?} */\n ImageCropperComponent.prototype.cropperMinWidth;\n /** @type {?} */\n ImageCropperComponent.prototype.cropperMinHeight;\n /** @type {?} */\n ImageCropperComponent.prototype.cropperMaxHeight;\n /** @type {?} */\n ImageCropperComponent.prototype.cropperMaxWidth;\n /** @type {?} */\n ImageCropperComponent.prototype.cropperStaticWidth;\n /** @type {?} */\n ImageCropperComponent.prototype.cropperStaticHeight;\n /** @type {?} */\n ImageCropperComponent.prototype.canvasRotation;\n /** @type {?} */\n ImageCropperComponent.prototype.initialStepSize;\n /** @type {?} */\n ImageCropperComponent.prototype.roundCropper;\n /** @type {?} */\n ImageCropperComponent.prototype.onlyScaleDown;\n /** @type {?} */\n ImageCropperComponent.prototype.imageQuality;\n /** @type {?} */\n ImageCropperComponent.prototype.autoCrop;\n /** @type {?} */\n ImageCropperComponent.prototype.backgroundColor;\n /** @type {?} */\n ImageCropperComponent.prototype.containWithinAspectRatio;\n /** @type {?} */\n ImageCropperComponent.prototype.hideResizeSquares;\n /** @type {?} */\n ImageCropperComponent.prototype.cropper;\n /** @type {?} */\n ImageCropperComponent.prototype.alignImage;\n /** @type {?} */\n ImageCropperComponent.prototype.disabled;\n /** @type {?} */\n ImageCropperComponent.prototype.imageCropped;\n /** @type {?} */\n ImageCropperComponent.prototype.startCropImage;\n /** @type {?} */\n ImageCropperComponent.prototype.imageLoaded;\n /** @type {?} */\n ImageCropperComponent.prototype.cropperReady;\n /** @type {?} */\n ImageCropperComponent.prototype.loadImageFailed;\n /**\n * @type {?}\n * @private\n */\n ImageCropperComponent.prototype.cropService;\n /**\n * @type {?}\n * @private\n */\n ImageCropperComponent.prototype.cropperPositionService;\n /**\n * @type {?}\n * @private\n */\n ImageCropperComponent.prototype.loadImageService;\n /**\n * @type {?}\n * @private\n */\n ImageCropperComponent.prototype.sanitizer;\n /**\n * @type {?}\n * @private\n */\n ImageCropperComponent.prototype.cd;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/image-cropper.module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ImageCropperModule {\n}\nImageCropperModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: ImageCropperModule });\nImageCropperModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function ImageCropperModule_Factory(t) { return new (t || ImageCropperModule)(); }, imports: [[\n CommonModule\n ]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ImageCropperModule, { declarations: function () { return [ImageCropperComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [ImageCropperComponent]; } }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(ImageCropperModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule\n ],\n declarations: [\n ImageCropperComponent\n ],\n exports: [\n ImageCropperComponent\n ]\n }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/interfaces/index.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/utils/blob.utils.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} base64Image\n * @return {?}\n */\nfunction base64ToFile(base64Image) {\n /** @type {?} */\n const split = base64Image.split(',');\n /** @type {?} */\n const type = split[0].replace('data:', '').replace(';base64', '');\n /** @type {?} */\n const byteString = atob(split[1]);\n /** @type {?} */\n const ab = new ArrayBuffer(byteString.length);\n /** @type {?} */\n const ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i += 1) {\n ia[i] = byteString.charCodeAt(i);\n }\n return new Blob([ab], { type });\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: public-api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: ngx-image-cropper.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { ImageCropperComponent, ImageCropperModule, base64ToFile, resizeCanvas, CropService as ɵa, CropperPositionService as ɵb, LoadImageService as ɵc };\n\n//# sourceMappingURL=ngx-image-cropper.js.map","import { Component, HostListener, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-calorie-friend',\r\n template: `\r\n \r\n




\r\n `,\r\n styles: [\r\n `\r\n .bottom-padding {\r\n display: none;\r\n }\r\n\r\n @media screen and (max-width: 531px) {\r\n .bottom-padding {\r\n display: block;\r\n }\r\n }\r\n `,\r\n ],\r\n})\r\nexport class CalorieFriendComponent implements OnInit {\r\n constructor() {}\r\n // convert window inner height to lvh\r\n // convertWindowInnerHeightToLvh() {\r\n // const vh = window.innerHeight * 0.01;\r\n // (document.getElementsByClassName('scrollable-container')[0] as any).style.height = window.innerHeight - 75 + 'px';\r\n // }\r\n ngOnInit(): void {\r\n // set resize event\r\n // this.convertWindowInnerHeightToLvh();\r\n }\r\n // set resize using hostlistener\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event) {\r\n // this.convertWindowInnerHeightToLvh();\r\n }\r\n\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { NbDialogRef } from '@nebular/theme';\r\n\r\n/**\r\n * Component for prompt message to upgrade the subscription plan.\r\n */\r\n@Component({\r\n selector: 'app-upgrade-plan',\r\n templateUrl: './upgrade-plan.component.html',\r\n styleUrls: ['./upgrade-plan.component.scss'],\r\n})\r\nexport class UpgradePlanComponent {\r\n public Message =\r\n 'You have reached the maximum amount of patient in your current plan. Upgrade plan to add a new patient.';\r\n\r\n SaveGoalLabel = 'Save';\r\n BackLabel = 'Back';\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n constructor(\r\n private router: Router,\r\n private dialogRef: NbDialogRef,\r\n ) {}\r\n\r\n /**\r\n * It closes the dialog if it is opened on it.\r\n * If not, it goes back to the previous page.\r\n */\r\n Back() {\r\n this.dialogRef.close('cancel');\r\n }\r\n\r\n /**\r\n * It redirect to the profile page to upgrade the plan\r\n */\r\n Upgrade() {\r\n this.dialogRef.close();\r\n this.router.navigate(['/pages/CalorieFriend/manage-subscription']);\r\n }\r\n}\r\n","\r\n \r\n
\r\n Upgrade Plan\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n {{Message}}\r\n \r\n\r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n","/**\r\n * The class to hold the descriptive values for Assessment data\r\n */\r\nexport class UserInfoEnums {\r\n static BusinessTypeValues: {[key: number]: string} = {};\r\n static CustomersPerMonth: {[key: number]: string} = {};\r\n\r\n\r\n static initialize() {\r\n // Business Types\r\n UserInfoEnums.BusinessTypeValues[1] = $localize`:@@BusinessTypeDietitian:Dietitian`;\r\n UserInfoEnums.BusinessTypeValues[2] = $localize`:@@BusinessTypeGymOwner:Gym Owner`;\r\n UserInfoEnums.BusinessTypeValues[3] = $localize`:@@BusinessTypeCoach:Coach`;\r\n UserInfoEnums.BusinessTypeValues[4] = $localize`:@@BusinessTypeDoctor:Doctor`;\r\n UserInfoEnums.BusinessTypeValues[5] = $localize`:@@BusinessTypeOther:Other`;\r\n\r\n // Customers Per Month\r\n UserInfoEnums.CustomersPerMonth[1] = '1-5';\r\n UserInfoEnums.CustomersPerMonth[2] = '6-10';\r\n UserInfoEnums.CustomersPerMonth[3] = '11-20';\r\n UserInfoEnums.CustomersPerMonth[4] = '21-50';\r\n UserInfoEnums.CustomersPerMonth[5] = '50+';\r\n\r\n }\r\n\r\n}\r\n\r\nUserInfoEnums.initialize();\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport {\r\n SearchCountryField,\r\n CountryISO,\r\n PhoneNumberFormat,\r\n} from 'ngx-intl-tel-input';\r\n\r\nimport { NbAuthOAuth2JWTToken, NbTokenService } from '@nebular/auth';\r\nimport { NbDialogRef, NbDialogService, NbToastrService } from '@nebular/theme';\r\n\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { UserStore } from 'app/@core/stores/user.store';\r\nimport { User, UserData } from 'app/@core/interfaces/common/users';\r\nimport { Country, CountryData } from 'app/@core/interfaces/common/countries';\r\nimport { PHONE_PATTERN } from 'app/@auth/components';\r\nimport { UserInfoEnums } from './UserInfoEnums';\r\n\r\n/**\r\n * Component for creation/edition of a Custom Food item\r\n */\r\n@Component({\r\n selector: 'app-initial-user-info',\r\n templateUrl: './initial-user-info.component.html',\r\n styleUrls: ['./initial-user-info.component.scss'],\r\n})\r\nexport class InitialUserInfoComponent\r\n extends BaseComponentCanDeactivate\r\n implements OnInit\r\n{\r\n SuccessSavingUserInfo = $localize`:@@SuccessSavingUserInfo:User information saved!`;\r\n ProblemSavingUserInfo = $localize`:@@ProblemSavingUserInfo:Problem occurred when saving User information!`;\r\n\r\n UserInfoForm: FormGroup;\r\n\r\n UserInfoEnums = UserInfoEnums;\r\n\r\n ID = 0;\r\n currentUser: User;\r\n\r\n Countries: Observable;\r\n\r\n SearchCountryField = SearchCountryField;\r\n CountryISO = CountryISO;\r\n PhoneNumberFormat = PhoneNumberFormat;\r\n preferredCountries: CountryISO[] = [\r\n CountryISO.UnitedStates,\r\n CountryISO.Canada,\r\n ];\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private dialogRef: NbDialogRef,\r\n private usersService: UserData,\r\n private toasterService: NbToastrService,\r\n private countriesService: CountryData,\r\n private userStore: UserStore,\r\n private tokenService: NbTokenService,\r\n dialogService: NbDialogService\r\n ) {\r\n super(dialogService);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.InitUserForm();\r\n\r\n this.Countries = this.countriesService.list();\r\n\r\n const loadUser = this.usersService.getCurrentUser();\r\n\r\n loadUser.subscribe((user) => {\r\n this.currentUser = user;\r\n this.UserInfoForm.setValue({\r\n id: user.id ? user.id : '',\r\n firstName: user.firstName ? user.firstName : '',\r\n lastName: user.lastName ? user.lastName : '',\r\n businessName: user.businessName ? user.businessName : '',\r\n phoneNumber: user.phoneNumber ? user.phoneNumber : '',\r\n // Country: user.address && user.address.country ? user.address.country : '',\r\n //businessType: user.businessType ? user.businessType : '',\r\n //customersPerMonth: user.customersPerMonth ? user.customersPerMonth : '',\r\n address: {\r\n country:\r\n user.address && user.address.country ? user.address.country : '',\r\n },\r\n });\r\n });\r\n }\r\n\r\n get firstName() {\r\n return this.UserInfoForm.get('firstName');\r\n }\r\n get lastName() {\r\n return this.UserInfoForm.get('lastName');\r\n }\r\n get businessName() {\r\n return this.UserInfoForm.get('businessName');\r\n }\r\n get phoneNumber() {\r\n return this.UserInfoForm.get('phoneNumber');\r\n }\r\n get country() {\r\n return this.UserInfoForm.get('address.country');\r\n }\r\n get businessType() {\r\n return this.UserInfoForm.get('businessType');\r\n }\r\n get customersPerMonth() {\r\n return this.UserInfoForm.get('customersPerMonth');\r\n }\r\n\r\n /**\r\n * Initializes the form to create/edit a custom food item\r\n */\r\n InitUserForm() {\r\n this.UserInfoForm = this.fb.group({\r\n id: this.fb.control(''),\r\n firstName: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(1),\r\n ]),\r\n lastName: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(1),\r\n ]),\r\n businessName: this.fb.control('', [Validators.minLength(1)]),\r\n phoneNumber: this.fb.control('', [Validators.required]),\r\n // Country: this.fb.control('', [Validators.required, Validators.minLength(1)]),\r\n /* businessType: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(1),\r\n ]),\r\n customersPerMonth: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(1),\r\n ]),*/\r\n address: this.fb.group({\r\n country: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(1),\r\n ]),\r\n }),\r\n });\r\n super.initForm(this.UserInfoForm);\r\n }\r\n\r\n convertToUser(value: any): User {\r\n const user: User = {\r\n ...value,\r\n phoneNumber: value.phoneNumber.internationalNumber,\r\n };\r\n return user;\r\n }\r\n\r\n /**\r\n * It converts the inputs of the form into the Custom Food type\r\n * and submit the form to save them\r\n */\r\n save() {\r\n const user: User = this.convertToUser(this.UserInfoForm.value);\r\n user.id = this.currentUser.id;\r\n\r\n this.usersService.updateCurrentInitial(user).subscribe(\r\n (result: any) => {\r\n this.tokenService.set(\r\n new NbAuthOAuth2JWTToken(result, 'email', new Date())\r\n );\r\n this.handleSuccessResponse();\r\n this.userStore.setUser(user);\r\n this.dialogRef.close(true);\r\n },\r\n (err) => {\r\n this.handleWrongResponse();\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Handler of Success event of submit\r\n */\r\n handleSuccessResponse() {\r\n super.resetDirty();\r\n\r\n this.toasterService.success('', this.SuccessSavingUserInfo);\r\n }\r\n\r\n /**\r\n * Handler of Fail event of submit\r\n */\r\n handleWrongResponse() {\r\n this.toasterService.danger('', this.ProblemSavingUserInfo);\r\n }\r\n}\r\n","\r\n \r\n
🚀 Almost done!
\r\n
\r\n\r\n \r\n
\r\n
\r\n 🙏 Please tell us a bit about you.\r\n
\r\n\r\n
\r\n
\r\n First Name *\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Last Name *\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Business Name\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Mobile Number *\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n Country *\r\n
\r\n
\r\n \r\n United States of America\r\n Canada\r\n United Kingdom\r\n Australia\r\n New Zealand\r\n Other\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n
\r\n \r\n Submit\r\n \r\n
\r\n
\r\n
\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NbDialogRef, NbDialogService } from '@nebular/theme';\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\n\r\n@Component({\r\n selector: 'ngx-premium-modal',\r\n templateUrl: './premium-modal.component.html',\r\n styleUrls: ['./premium-modal.component.scss']\r\n})\r\nexport class PremiumModalComponent\r\n extends BaseComponentCanDeactivate\r\n implements OnInit {\r\n\r\n CloseCallBack = null;\r\n OnPremiumCallBack = null;\r\n\r\n constructor(\r\n private dialogRef: NbDialogRef,\r\n private dialogService: NbDialogService,\r\n private router: Router,) {\r\n\r\n super(dialogService);\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n onPremium(): void {\r\n if (this.dialogRef) this.dialogRef.close();\r\n if (this.OnPremiumCallBack != null) this.OnPremiumCallBack();\r\n this.router.navigateByUrl('/pages/CalorieFriend/manage-subscription');\r\n\r\n }\r\n Close() {\r\n if (this.CloseCallBack != null) this.CloseCallBack();\r\n if (this.dialogRef) this.dialogRef.close();\r\n }\r\n\r\n\r\n}\r\n","\r\n \r\n
Upgrade your account
\r\n \r\n
\r\n\r\n \r\n

You need to upgrade your account to a premium paid subscription to enjoy some features.

\r\n \r\n

\r\n

Upgrade today and get access to

\r\n
\r\n
    \r\n
  • \r\n Archive/Unarchive Clients.\r\n
  • \r\n
  • \r\n Customized Branding.\r\n
  • \r\n
  • \r\n Train more clients. \r\n
  • \r\n
  • \r\n Unlimited Templates and customs items.\r\n
  • \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
","\r\n Pssst! You currently are on \"Unlimited Clients Promo\" plan for $29.99/Month.\r\n \r\n \r\n You have {{ daysLeft }} days to update your payment information and\r\n keep this privilege.\r\n \r\n \r\n\r\n\r\n\r\n Your \"Unlimited Clients Promo\" subscriptions trial is expired and you have\r\n been reverted to the free plan.\r\n \r\n \r\n Update your payment information to reactivate.\r\n \r\n \r\n\r\n\r\n\r\n\r\n You are currently on the Free Plan, tap here to compares plans and upgrade.\r\n\r\n\r\n\r\n\r\n You are currently on the Pro Promo Plan, tap here to compares plans and upgrade.\r\n\r\n\r\n\r\n\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { User } from 'app/@core/interfaces/common/users';\r\nimport { UserStore } from 'app/@core/stores/user.store';\r\nimport { DeviceDetectorModule, DeviceInfo } from 'ngx-device-detector';\r\nimport { NativeAppService } from 'app/@core/backend/common/services/native-app.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'ngx-premium-trial-reminder',\r\n templateUrl: './premium-trial-reminder.component.html',\r\n styleUrls: ['./premium-trial-reminder.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PremiumTrialReminderComponent implements OnInit {\r\n daysLeft: number;\r\n isUnlimitedTrialActive: boolean;\r\n isUnlimitedTrial: boolean;\r\n isFreePlan: boolean;\r\n isOnDemoOfferPlan:boolean;\r\n\r\n private readonly unsubscribe$: Subject = new Subject();\r\n\r\n constructor(private userStore: UserStore, private nativeAppSerivce: NativeAppService, private router:Router, private cdRef: ChangeDetectorRef) { }\r\n\r\n ngOnInit(): void {\r\n this.userStore\r\n .onUserStateChange()\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((user: User) => {\r\n if (!user) return;\r\n\r\n this.isUnlimitedTrialActive = this.userStore.isUnlimitedTrialActive();\r\n this.isUnlimitedTrial = this.userStore.isUnlimitedTrial();\r\n this.daysLeft = this.userStore.daysLeftInProTrial();\r\n this.isFreePlan = this.userStore.isOnFreePlan() && !this.nativeAppSerivce.isFromApp();\r\n this.isOnDemoOfferPlan = this.userStore.isOnDemoOfferPlan();\r\n this.cdRef.detectChanges();\r\n\r\n });\r\n }\r\n\r\n\r\n onLinkClick() {\r\n this.router.navigateByUrl(\"/pages/CalorieFriend/manage-subscription\");\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { getThreadStatusText, isThreadOnline, parseISODate } from 'app/@chat/utils/utils';\r\nimport {\r\n TutorialData,\r\n TutorialIDs,\r\n} from 'app/@core/interfaces/common/CalorieFriend/tutorial';\r\nimport { ViewCell } from 'ng2-smart-table';\r\nimport { JoyrideService } from 'ngx-joyride';\r\nimport { interval } from 'rxjs';\r\n\r\n/**\r\n * Component to represent the custom Patient Name field on the ng2 smart table\r\n */\r\n@Component({\r\n template: `\r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {{ rowData.name }}\r\n Try me!\r\n
\r\n
\r\n {{ getThreadStatusText(rowData.chatThread, false) }}\r\n
\r\n
\r\n \r\n \r\n  App Installed!\r\n
\r\n
\r\n \r\n \r\n This is your client’s list. We added a Demo Client so you can test all\r\n features easily. Once you are comfortable, simply delete it using the\r\n trash can.\r\n \r\n `,\r\n styleUrls: ['./CustomPatientNameField.component.scss'],\r\n selector: 'app-custom-patient-name',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CustomPatientNameFieldComponent implements ViewCell {\r\n @Input() value: any; // This hold the cell value\r\n @Input() rowData: any; // This holds the entire row object\r\n\r\n public constructor(\r\n private router: Router,\r\n private tutorialService: TutorialData,\r\n private joyride: JoyrideService,\r\n private detectorRef: ChangeDetectorRef\r\n ) {\r\n \r\n interval(30 * 1000).subscribe(() => {\r\n this.detectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * Event handler of 'Click' event of the link.\r\n * It navigates to the Patient Sheet View page of the Patient of the current row\r\n */\r\n onClickLink() {\r\n if (this.joyride.isTourInProgress()) return;\r\n this.router.navigate([\r\n `/pages/CalorieFriend/PatientSheetView/${this.rowData.id}`,\r\n ]);\r\n }\r\n\r\n onTutorialNext() {\r\n this.tutorialService.save(TutorialIDs.DemoPatient).subscribe(() => {});\r\n }\r\n\r\n TutorialIDs = TutorialIDs;\r\n\r\n readonly getThreadStatusText = getThreadStatusText;\r\n readonly isThreadOnline = isThreadOnline;\r\n}\r\n","\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n
Clients {{patientsCountInfo}}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n\r\n \r\n\r\n\r\n\r\n 7\r\n\r\n \r\n \r\n Name \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n Plans \r\n {{row.plansCount}} {{row.plansCount > 1 ? 'Plans' : 'Plan' }}, {{row.goalsCount}} {{row.goalsCount > 1 ? 'Goals' : 'Goal' }}\r\n \r\n\r\n \r\n \r\n 7-Day Compliance \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n Created \r\n {{row.createdDate | date:'mediumDate'}} \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n \r\n\r\n\r\n
\r\n\r\n \r\n Adding new clients is simple, tap the “Add New” client and we will show you how it works!\r\n \r\n\r\n \r\n
\r\n \r\n Show Deleted\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n","import {\r\n Component,\r\n ComponentRef,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Subject, fromEvent } from 'rxjs';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n map,\r\n mergeMap,\r\n takeUntil,\r\n} from 'rxjs/operators';\r\nimport { GoogleAnalyticsService } from 'google-analytics.service';\r\nimport { JoyrideService } from 'ngx-joyride';\r\nimport { NbDialogService, NbToastrService, NbSidebarService } from '@nebular/theme';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, MatSortable, Sort } from '@angular/material/sort';\r\n\r\nimport {\r\n PatientData,\r\n PatientFilter,\r\n PatientWithChatThread,\r\n} from 'app/@core/interfaces/common/CalorieFriend/patients';\r\nimport { User, UserData } from 'app/@core/interfaces/common/users';\r\nimport {\r\n SubscriptionPlan,\r\n SubscriptionPlanData,\r\n} from 'app/@core/interfaces/common/CalorieFriend/subscriptionPlan';\r\nimport {\r\n TutorialData,\r\n TutorialIDs,\r\n} from 'app/@core/interfaces/common/CalorieFriend/tutorial';\r\nimport { FacebookPixelService } from 'app/@theme/services/FacebookPixelService';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\nimport { UserStore } from 'app/@core/stores/user.store';\r\n\r\nimport { UpgradePlanComponent } from './UpgradePlan/upgrade-plan.component';\r\nimport { InitialUserInfoComponent } from '../InitialUserInfo/initial-user-info.component';\r\nimport { PremiumModalComponent } from '../premium-modal/premium-modal.component';\r\nimport { NativeAppService } from 'app/@core/backend/common/services/native-app.service';\r\nimport { TheadTitlesRowComponent } from 'ng2-smart-table/lib/components/thead/rows/thead-titles-row.component';\r\nimport { ChatThreadService } from 'app/@chat/services/chat-thread.service';\r\nimport { ChatService } from 'app/@chat/chat.service';\r\nimport { GridData } from 'app/@core/interfaces/common/grid-data';\r\n\r\n@Component({\r\n selector: 'app-patients',\r\n templateUrl: './patients.component.html',\r\n styleUrls: ['./patients.component.scss'],\r\n})\r\nexport class PatientsComponent implements OnInit, OnDestroy {\r\n @ViewChild(MatPaginator, { static: true }) paginator?: MatPaginator;\r\n @ViewChild(MatSort, { static: true }) sortor?: MatSort;\r\n @ViewChild('search', { static: true }) searchInput?: ElementRef;\r\n\r\n static tutorialStarted: boolean = false;\r\n\r\n readonly TutorialIDs = TutorialIDs;\r\n readonly displayedColumns = ['name', 'plansCount', 'compliance', 'createdDate', 'actions'];\r\n totalCount: number = 0;\r\n dataList: PatientWithChatThread[] = [];\r\n user: User;\r\n shouldManageSubscription: boolean = false;\r\n isUserEmailVerified: boolean = false;\r\n patientsCountInfo: string = '';\r\n isAddNewTutorial: boolean = false;\r\n subscriptionPlan: SubscriptionPlan;\r\n maxPatientCount: number;\r\n contentLoaded: boolean = false;\r\n\r\n private readonly unsubscribe$ = new Subject();\r\n private paging: PatientFilter = {\r\n isArchived: false,\r\n sortBy: 'createdDate',\r\n orderBy: 'desc',\r\n };\r\n private loaded: boolean = false;\r\n\r\n constructor(\r\n public readonly joyrideService: JoyrideService,\r\n private router: Router,\r\n private patientsService: PatientData,\r\n private usersService: UserData,\r\n private userStore: UserStore,\r\n private subscriptionPlansService: SubscriptionPlanData,\r\n private dialogService: NbDialogService,\r\n private toasterService: NbToastrService,\r\n private googleAnalyticsService: GoogleAnalyticsService,\r\n private readonly tutorialService: TutorialData,\r\n protected facebookPixelService: FacebookPixelService,\r\n private nativeAppService: NativeAppService,\r\n private chatService: ChatService,\r\n private chatThreadService: ChatThreadService,\r\n private sidebarService: NbSidebarService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.usersService.getCurrentUser().subscribe((user) => {\r\n this.userStore.setUser(user);\r\n\r\n if (this.userStore.getUser()) {\r\n this.checkUserState(this.userStore.getUser());\r\n }\r\n else\r\n this.userStore\r\n .onUserStateChange()\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((user) => this.checkUserState(user));\r\n\r\n // every visit - update FB and GA\r\n // fb pixel\r\n this.facebookPixelService.load(FacebookPixelService.PageViewEvent);\r\n\r\n // GA\r\n this.googleAnalyticsService.eventEmitter(FacebookPixelService.PageViewEvent, 'Patients', 'Index');\r\n\r\n // default sort and load data initially\r\n this.sortor.sort({\r\n id: this.paging.sortBy,\r\n start: this.paging.orderBy,\r\n } as MatSortable);\r\n\r\n // search event\r\n fromEvent(this.searchInput.nativeElement, 'keyup')\r\n .pipe(\r\n takeUntil(this.unsubscribe$),\r\n filter((x) => x !== this.paging.nameAndEmail),\r\n debounceTime(250),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(() => {\r\n this.paging.nameAndEmail = this.searchInput.nativeElement.value;\r\n this.loadDataList();\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n private checkUserState(user: User): void {\r\n if (!user || this.loaded) return;\r\n this.loaded = true;\r\n\r\n this.isUserEmailVerified = user.isEmailValid;\r\n this.user = user;\r\n\r\n // load initial user info\r\n if (!user.isRegistrationCompleted) {\r\n setTimeout(() =>\r\n this.dialogService\r\n .open(InitialUserInfoComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n })\r\n .onClose.subscribe(() => {\r\n this.user.isRegistrationCompleted = true;\r\n setTimeout(() => this.loadTutorial(), 1000);\r\n })\r\n );\r\n } else {\r\n setTimeout(() => this.loadTutorial(), 1000);\r\n }\r\n\r\n // load current plan\r\n this.subscriptionPlansService\r\n .getByCode(this.user.planCode)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((plan) => {\r\n this.subscriptionPlan = plan;\r\n this.updatePatientsCountInfo();\r\n });\r\n\r\n // subscription info\r\n this.shouldManageSubscription = user?.isAmbasador === false && user?.selectedPlan !== user?.planCode;\r\n }\r\n\r\n onSortChanged(sort: Sort): void {\r\n this.paging.sortBy = sort.active;\r\n this.paging.orderBy = sort.direction;\r\n this.loadDataList(true);\r\n }\r\n\r\n loadDataList(pagination: boolean = false): void {\r\n this.contentLoaded = false;\r\n console.log('initial');\r\n if (!pagination && this.paginator) this.paginator.pageIndex = 0;\r\n this.paging.pageNumber = pagination ? this.paginator?.pageIndex + 1 ?? 1 : 1;\r\n this.paging.pageSize = this.paginator?.pageSize ?? 10;\r\n\r\n this.patientsService\r\n .list(this.paging)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .pipe(\r\n mergeMap((res) => {\r\n return this.chatService.getThreads().pipe(\r\n map((threads) => {\r\n const patientsWithChatThread = res.items.map((patient) => {\r\n const thread = threads.find((th) => th.users[0].id == patient.id);\r\n return {\r\n ...patient,\r\n chatThread: thread,\r\n };\r\n });\r\n\r\n const gridData: GridData = {\r\n ...res,\r\n items: patientsWithChatThread,\r\n };\r\n\r\n return gridData;\r\n })\r\n );\r\n })\r\n )\r\n .subscribe((res) => {\r\n this.totalCount = res.totalCount;\r\n this.dataList = res.items;\r\n console.log(res.items);\r\n this.contentLoaded = true;\r\n });\r\n }\r\n\r\n private loadTutorial(): void {\r\n if (!this.user.isRegistrationCompleted) return;\r\n if (this.nativeAppService.isFromApp()) return;\r\n if (PatientsComponent.tutorialStarted) return; //extra cautius, has issue once where tutorial was able to restart when was completed.\r\n\r\n // demo patient tutorial\r\n this.patientsService\r\n .getDemoPatient()\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((demoPatient) => {\r\n if (!demoPatient) return;\r\n\r\n const tutorialStates = JSON.parse(this.user.tutorialStates ?? '{}');\r\n const steps = [];\r\n\r\n // check the tutorial step 1 - demo patient\r\n if (!tutorialStates[TutorialIDs.DemoPatient]) {\r\n steps.push(TutorialIDs.DemoPatient);\r\n steps.push(TutorialIDs.AddNewPatient);\r\n } else {\r\n return;\r\n }\r\n\r\n PatientsComponent.tutorialStarted = true;\r\n this.joyrideService\r\n .startTour({\r\n steps: steps,\r\n showPrevButton: false,\r\n showCounter: true,\r\n })\r\n .subscribe((step) => {\r\n if (step.name === TutorialIDs.AddNewPatient) this.isAddNewTutorial = true;\r\n });\r\n });\r\n }\r\n\r\n private updatePatientsCountInfo(): void {\r\n this.patientsService\r\n .getActiveCount()\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((count) => {\r\n if (this.subscriptionPlan?.patientsCount > 999 || this.userStore.isUnlimitedTrialActive()) {\r\n this.patientsCountInfo = '(' + count + ')';\r\n } else {\r\n this.patientsCountInfo = '(' + count + '/' + +this.subscriptionPlan?.patientsCount + ')';\r\n }\r\n });\r\n }\r\n\r\n onDelete(id: number): void {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: { Message: 'Are you sure to delete this patient?' },\r\n })\r\n .onClose.subscribe((res) => {\r\n if (!res) return;\r\n this.patientsService\r\n .delete(id)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(\r\n () => {\r\n this.patientsService.setPatientUpdated(id);\r\n this.toasterService.success('', 'Successfully deleted Client');\r\n this.loadDataList(true);\r\n this.updatePatientsCountInfo();\r\n },\r\n () => this.toasterService.danger('', 'Problem occurred while delelting Client')\r\n );\r\n });\r\n }\r\n\r\n onArchivedChange(checked: boolean): void {\r\n this.paging.isArchived = checked;\r\n this.loadDataList();\r\n }\r\n\r\n onUnarchive(id: number): void {\r\n this.patientsService\r\n .getActiveCount()\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((count) => {\r\n this.patientsCountInfo = '(' + count + '/' + +this.subscriptionPlan?.patientsCount + ')';\r\n if (!this.canAddNewPatients(count)) {\r\n this.dialogService.open(UpgradePlanComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n });\r\n } else {\r\n // ok, we can continue\r\n this.patientsService\r\n .unarchive(id)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(\r\n () => {\r\n this.toasterService.success('', 'Successfully unarchived Client');\r\n this.patientsService.setPatientUpdated(id);\r\n this.loadDataList(true);\r\n this.updatePatientsCountInfo();\r\n },\r\n () => this.toasterService.danger('', 'Problem occurred while unarchiving Client')\r\n );\r\n }\r\n });\r\n }\r\n\r\n tryArchiveClient(id) {\r\n if (this.userStore.isPayingUser()) {\r\n this.onArchive(id);\r\n } else {\r\n this.patientsService\r\n .get(id, null)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((patient) => {\r\n // allow demo client or tutorial client being created.\r\n if (patient.isDemoPatient || patient.eMail == this.user.email) {\r\n this.onArchive(id);\r\n } else {\r\n this.onShowPremiumDialog();\r\n }\r\n });\r\n }\r\n }\r\n\r\n onShowPremiumDialog() {\r\n const ref: ComponentRef = this.dialogService.open(PremiumModalComponent, {\r\n closeOnBackdropClick: false,\r\n closeOnEsc: false,\r\n autoFocus: false,\r\n context: {},\r\n }).componentRef;\r\n }\r\n\r\n onArchive(id: number): void {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: {\r\n Message:\r\n 'Warning, archiving a patient will disable patient zone and patient assessments. Archived patients can be re-activated later.',\r\n },\r\n })\r\n .onClose.subscribe((res) => {\r\n if (!res) return;\r\n this.patientsService\r\n .archive(id)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(\r\n () => {\r\n this.toasterService.success('', 'Successfully archived Client');\r\n this.patientsService.setPatientUpdated(id);\r\n this.loadDataList(true);\r\n this.updatePatientsCountInfo();\r\n },\r\n () => this.toasterService.danger('', 'Problem occurred while archiving Client')\r\n );\r\n });\r\n }\r\n\r\n onAddPatient(): void {\r\n this.googleAnalyticsService.eventEmitter('add_patient', 'Patients', 'Add');\r\n\r\n if (this.joyrideService.isTourInProgress()) {\r\n // close the tutorial\r\n this.joyrideService.closeTour();\r\n\r\n // save the tutorial position\r\n this.tutorialService.save(TutorialIDs.AddNewPatient).subscribe(() => {});\r\n\r\n // navigate to new client page\r\n this.router.navigate(['/pages/CalorieFriend/NewPatient/FromTutorial']);\r\n return;\r\n }\r\n\r\n this.patientsService\r\n .getActiveCount()\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((count) => {\r\n this.patientsCountInfo = '(' + count + '/' + +this.subscriptionPlan?.patientsCount + ')';\r\n if (!this.canAddNewPatients(count)) {\r\n this.dialogService.open(UpgradePlanComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n });\r\n } else {\r\n this.router.navigate(['/pages/CalorieFriend/NewPatient/']);\r\n }\r\n });\r\n }\r\n\r\n onResendConfirmation(): void {\r\n this.usersService.submitVerificationEmail(this.user.email).subscribe((res) => {\r\n if (res) this.toasterService.success('', 'Confirmation email has been sent.');\r\n else this.toasterService.danger('', 'Problem occurred while sending confirmation email.');\r\n });\r\n }\r\n\r\n onCloseEmailWarning(): void {\r\n this.isUserEmailVerified = true;\r\n }\r\n\r\n onClosePaymentWarning(): void {\r\n this.shouldManageSubscription = false;\r\n }\r\n\r\n get showNotificationPanel(): boolean {\r\n if (this.shouldManageSubscription) return true;\r\n if (this.user && this.user.isRegistrationCompleted) return false;\r\n if (this.isAddNewTutorial) false;\r\n if (this.isUserEmailVerified) return true;\r\n return false;\r\n }\r\n\r\n private canAddNewPatients(count: number) {\r\n if (this.subscriptionPlan?.patientsCount > 0 && count >= +this.subscriptionPlan?.patientsCount) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n openChatWindow(rowId) {\r\n const thread = this.dataList.find((item) => item.id == rowId)?.chatThread;\r\n this.chatThreadService.currentThread = thread;\r\n this.sidebarService.expand('right');\r\n }\r\n \r\n readonly gaugeLabel = (value) => `${Math.round(value * 10) / 10}%`;\r\n}\r\n","
\r\n\r\n \r\n
\r\n Add New Client\r\n Edit Client\r\n
\r\n
\r\n\r\n \r\n \r\n Let's create yourself as a client! We pre-filled these fields for you.\r\n \r\n\r\n \r\n Press the Save Client to create this client and move to the next step. You will also be able to edit client\r\n details later.\r\n \r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
Contact Info
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n
Name
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
Last Name
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
Email Address
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
Mobile Number
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
Date of Birth
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
Address
\r\n
\r\n\r\n \r\n
\r\n
Address
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
Country
\r\n
\r\n
\r\n \r\n {{ item.name }}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
Zip / Postal Code
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
Preferences
\r\n
\r\n\r\n \r\n
\r\n
Gender
\r\n
\r\n
\r\n \r\n Male\r\n Female\r\n \r\n
\r\n
\r\n\r\n
\r\n
Preferred Units
\r\n
\r\n
\r\n
\r\n \r\n Metrics\r\n Imperial\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Check In Request\r\n
\r\n
\r\n
\r\n \r\n Send Check In Requests\r\n Don't send Check In Requests\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
BioMetric Info
\r\n
\r\n\r\n \r\n
\r\n
Height
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
Weight
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
BMI
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
Body Fat %
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
Date of Measure
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n 0\">\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
Billing & Packages
\r\n
\r\n\r\n \r\n
0\">\r\n
Invite to Subscription
\r\n
\r\n
\r\n \r\n \r\n {{ option.invoiceItems[0].itemDescription }}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n No package found, to invite a client to a package/subscription, please go to Billing & Packages and create a new package.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n\r\n \r\n \r\n Save Client\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { forkJoin } from 'rxjs/internal/observable/forkJoin';\r\nimport {\r\n NbToastrService,\r\n NbDialogService,\r\n NbLayoutScrollService,\r\n} from '@nebular/theme';\r\nimport { JoyrideService } from 'ngx-joyride';\r\nimport {\r\n SearchCountryField,\r\n CountryISO,\r\n PhoneNumberFormat,\r\n} from 'ngx-intl-tel-input';\r\n\r\nimport {\r\n PatientData,\r\n Patient,\r\n} from '../../../@core/interfaces/common/CalorieFriend/patients';\r\nimport {\r\n EMAIL_PATTERN,\r\n PHONE_PATTERN,\r\n} from '../../../@auth/components/constants';\r\nimport { Goal } from '../../../@core/interfaces/common/CalorieFriend/goals';\r\nimport { Utility } from '../../../@core/utils/utility';\r\nimport {\r\n Country,\r\n CountryData,\r\n} from '../../../@core/interfaces/common/countries';\r\nimport {\r\n TutorialData,\r\n TutorialIDs,\r\n} from 'app/@core/interfaces/common/CalorieFriend/tutorial';\r\nimport { SubscriptionPlanData } from 'app/@core/interfaces/common/CalorieFriend/subscriptionPlan';\r\nimport { UserData } from 'app/@core/interfaces/common/users';\r\nimport { TempGoalListComponent } from '../Goals/TempGoalList/temp-goal-list.component';\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { UpgradePlanComponent } from '../Patients/UpgradePlan/upgrade-plan.component';\r\nimport { PatientSubscriptionsMetaService } from 'app/@core/backend/common/services/CalorieFriend/patient-subscriptions-meta.service';\r\nimport { GridData } from 'app/@core/interfaces/common/grid-data';\r\nimport { PatientSubscriptionMeta } from 'app/@core/interfaces/common/CalorieFriend/patient-subscription';\r\n\r\n/**\r\n * Component for creation/edition of the Patient\r\n */\r\n@Component({\r\n selector: 'app-add-patient',\r\n templateUrl: './patient.component.html',\r\n styleUrls: ['./patient.component.scss', '../global.component.scss'],\r\n})\r\nexport class PatientComponent\r\n extends BaseComponentCanDeactivate\r\n implements OnInit {\r\n PatientForm: FormGroup;\r\n\r\n AddPaitentLabel = 'Add New Client';\r\n UpdatePaitentLabel = 'Update Client';\r\n PaitentLabel = '';\r\n\r\n SavePatientLabel = 'Save Client';\r\n GeneralInfoLabel = 'General Info';\r\n FirstNameLabel = 'First Name';\r\n NameLabel = 'Name';\r\n LastNameLabel = 'Last Name';\r\n EmailLabel = 'Email Address';\r\n BirthDateLabel = 'Date of Birth';\r\n AddressInfoLabel = 'Address';\r\n AddressLine1Label = 'Line 1';\r\n AddressLine2Label = 'Line 2';\r\n CountryInfoLabel = 'Country';\r\n PostalCodeInfoLabel = 'Zip / Postal Code';\r\n PhoneInfoLabel = 'Phone Number';\r\n BiometricInfoLabel = 'BioMetric Info';\r\n PreferencesLabel = 'Preferences';\r\n PreferredUnitLabel = 'Preferred Units';\r\n HeightLabel = 'Height';\r\n WeightLabel = 'Weight';\r\n BodyFatLabel = 'Body Fat %';\r\n SourceLabel = 'Source';\r\n BMILabel = 'BMI';\r\n MeasureDateLabel = 'Date of Measure';\r\n BackLabel = 'Back';\r\n Created = 'Created';\r\n Updated = 'Updated';\r\n ProblemCeatingPatient = 'A problem occurred creating the patient.';\r\n PlansLabel = 'Plans';\r\n GoalsLabel = 'Goals';\r\n\r\n GoalDisable = '1';\r\n PatientId: number = null;\r\n isTutorial: boolean = false;\r\n\r\n SearchCountryField = SearchCountryField;\r\n CountryISO = CountryISO;\r\n PhoneNumberFormat = PhoneNumberFormat;\r\n preferredCountries: CountryISO[] = [\r\n CountryISO.UnitedStates,\r\n CountryISO.Canada,\r\n ];\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n Countries: Observable;\r\n\r\n tempGoals: Array = new Array();\r\n\r\n @ViewChild('Goals') private GoalsComponent: TempGoalListComponent = null;\r\n\r\n public subscriptionData: GridData;\r\n\r\n /** Patient ctor */\r\n constructor(\r\n private fb: FormBuilder,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private patientsService: PatientData,\r\n private toasterService: NbToastrService,\r\n private countriesService: CountryData,\r\n private dialogService: NbDialogService,\r\n private subscriptionPlansService: SubscriptionPlanData,\r\n private usersService: UserData,\r\n public readonly joyrideService: JoyrideService,\r\n private readonly tutorialService: TutorialData,\r\n private patientSubscriptionsMetaService: PatientSubscriptionsMetaService,\r\n private layout: NbLayoutScrollService\r\n ) {\r\n super(dialogService);\r\n }\r\n\r\n get Id() {\r\n return this.PatientForm.get('Id');\r\n }\r\n get FirstName() {\r\n return this.PatientForm.get('FirstName');\r\n }\r\n get LastName() {\r\n return this.PatientForm.get('LastName');\r\n }\r\n get EMail() {\r\n return this.PatientForm.get('EMail');\r\n }\r\n get DateOfBirth() {\r\n return this.PatientForm.get('DateOfBirth');\r\n }\r\n get AddressLine1() {\r\n return this.PatientForm.get('AddressLine1');\r\n }\r\n get AddressLine2() {\r\n return this.PatientForm.get('AddressLine2');\r\n }\r\n get Country() {\r\n return this.PatientForm.get('Country');\r\n }\r\n get ZipPostalCode() {\r\n return this.PatientForm.get('ZipPostalCode');\r\n }\r\n get PhoneNumber() {\r\n return this.PatientForm.get('PhoneNumber');\r\n }\r\n get Height() {\r\n return this.PatientForm.get('Height');\r\n }\r\n get Weight() {\r\n return this.PatientForm.get('Weight');\r\n }\r\n get BodyFat() {\r\n return this.PatientForm.get('BodyFat');\r\n }\r\n get Source() {\r\n return this.PatientForm.get('Source');\r\n }\r\n get DateOfMeasure() {\r\n return this.PatientForm.get('DateOfMeasure');\r\n }\r\n get IsPreferredUnitImperial() {\r\n return this.PatientForm.get('IsPreferredUnitImperial');\r\n }\r\n get genderFemale() {\r\n return this.PatientForm.get('genderFemale');\r\n }\r\n get BMI() {\r\n if (!this.Height.value || this.Height.value === 0) return 'N/A';\r\n return (\r\n (this.Weight.value / (this.Height.value * this.Height.value)) *\r\n 10000\r\n ).toFixed(1);\r\n }\r\n\r\n get SubscriptionId() {\r\n return this.PatientForm.get('SubscriptionId');\r\n }\r\n\r\n /**\r\n * Initializes the component.\r\n * It creates the patient Form and loads the patient data if it is for edition of an existing patient.\r\n */\r\n ngOnInit(): void {\r\n const loadUser = this.usersService.getCurrentUser();\r\n this.patientSubscriptionsMetaService.list({\r\n showCanceled: false,\r\n isDeleted: false\r\n }).subscribe((data: GridData) => {\r\n this.subscriptionData = data;\r\n });\r\n\r\n forkJoin([loadUser, this.patientsService.getActiveCount()]).subscribe(\r\n (data) => {\r\n const user = data[0];\r\n const count = data[1];\r\n\r\n const loadCurrentSubPlan = this.subscriptionPlansService.getByCode(\r\n user.planCode\r\n );\r\n loadCurrentSubPlan.subscribe((plan) => {\r\n const curSubPlan = plan;\r\n\r\n if (\r\n curSubPlan.patientsCount !== -1 &&\r\n count >= curSubPlan.patientsCount\r\n ) {\r\n this.dialogService\r\n .open(UpgradePlanComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result === 'cancel') {\r\n this.router.navigate(['/pages/CalorieFriend/Patients/']);\r\n }\r\n });\r\n }\r\n });\r\n\r\n this.isTutorial =\r\n this.route.snapshot.url.length > 1\r\n ? this.route.snapshot.url[1].toString().toLowerCase() ===\r\n 'fromtutorial'\r\n : false;\r\n\r\n const tutorialStates = JSON.parse(user.tutorialStates ?? '{}');\r\n\r\n // check the tutorial step 1 - demo patient\r\n if (!tutorialStates[TutorialIDs.NewPatient] && this.isTutorial) {\r\n // show tutorial\r\n setTimeout(() => {\r\n const steps = [];\r\n\r\n // add two empty steps\r\n //steps.push('');\r\n //steps.push('');\r\n\r\n // pre-fill data\r\n this.FirstName.setValue(user.firstName);\r\n this.LastName.setValue(user.lastName);\r\n\r\n this.EMail.setValue(user.email);\r\n this.PhoneNumber.setValue(user.phoneNumber);\r\n\r\n this.Height.setValue('180');\r\n this.Weight.setValue('75');\r\n\r\n steps.push(TutorialIDs.NewPatientStep1);\r\n steps.push('');\r\n // add fake steps to make correct step numbers\r\n //for (let i = 0; i < 4; i++) steps.push('');\r\n\r\n this.joyrideService\r\n .startTour(\r\n {\r\n steps: steps,\r\n showPrevButton: false,\r\n showCounter: true,\r\n customTexts: {\r\n next: 'Okay',\r\n },\r\n } // Your steps order\r\n )\r\n .subscribe();\r\n }, 1000);\r\n }\r\n }\r\n );\r\n\r\n this.InitUserForm();\r\n\r\n const id = this.route.snapshot.paramMap.get('id');\r\n\r\n if (id !== null) {\r\n this.loadPatientData(id);\r\n this.PaitentLabel = this.UpdatePaitentLabel;\r\n this.GoalDisable = '0';\r\n } else {\r\n this.PaitentLabel = this.AddPaitentLabel;\r\n this.GoalDisable = '0';\r\n }\r\n\r\n // load countries\r\n this.Countries = this.countriesService.list();\r\n }\r\n\r\n @ViewChild('saveElement') saveElement: any;\r\n @ViewChild('topElement') topElement: any;\r\n\r\n onTutorialNext1() {\r\n this.joyrideService.closeTour();\r\n this.SavePatient();\r\n return;\r\n\r\n setTimeout(() => {\r\n this.saveElement.hostElement.nativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'start',\r\n });\r\n\r\n // show tutorial\r\n setTimeout(() => {\r\n const steps = [];\r\n\r\n // add two empty steps\r\n //steps.push('');\r\n //steps.push('');\r\n\r\n steps.push(TutorialIDs.NewPatientStep2);\r\n\r\n // add fake steps to make correct step numbers\r\n //for (let i = 0; i < 4; i++) steps.push('');\r\n\r\n this.joyrideService\r\n .startTour(\r\n {\r\n steps: steps,\r\n showPrevButton: false,\r\n showCounter: true,\r\n } // Your steps order\r\n )\r\n .subscribe(\r\n (step) => {\r\n /*Do something*/\r\n },\r\n (error) => {\r\n /*handle error*/\r\n },\r\n () => {\r\n /*Tour is finished here, do something*/\r\n }\r\n );\r\n }, 1000);\r\n }, 1000);\r\n }\r\n\r\n onTutorialNext2() {\r\n this.SavePatient();\r\n }\r\n\r\n onTutorialDone() {\r\n this.tutorialService.save(TutorialIDs.NewPatient).subscribe(() => { });\r\n }\r\n\r\n /**\r\n * Initializes the patient Form\r\n */\r\n InitUserForm() {\r\n this.PatientForm = this.fb.group({\r\n Id: this.fb.control(''),\r\n FirstName: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(0),\r\n Validators.maxLength(50),\r\n ]),\r\n LastName: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(0),\r\n Validators.maxLength(50),\r\n ]),\r\n EMail: this.fb.control('', [\r\n Validators.required,\r\n Validators.pattern(EMAIL_PATTERN),\r\n ]),\r\n DateOfBirth: this.fb.control(new Date(new Date().setHours(0, 0, 0, 0)), [\r\n Validators.required,\r\n ]),\r\n AddressLine1: this.fb.control('', [\r\n Validators.minLength(0),\r\n Validators.maxLength(1024),\r\n ]),\r\n AddressLine2: this.fb.control('', [\r\n Validators.minLength(0),\r\n Validators.maxLength(1024),\r\n ]),\r\n Country: this.fb.control('', [\r\n Validators.minLength(0),\r\n Validators.maxLength(1024),\r\n ]),\r\n ZipPostalCode: this.fb.control('', [\r\n Validators.minLength(0),\r\n Validators.maxLength(25),\r\n ]),\r\n PhoneNumber: this.fb.control(''),\r\n Height: this.fb.control('', [\r\n Validators.minLength(0),\r\n Validators.maxLength(15),\r\n ]),\r\n Weight: this.fb.control('', [\r\n Validators.minLength(0),\r\n Validators.maxLength(15),\r\n ]),\r\n Source: this.fb.control('Clinical', [\r\n Validators.required,\r\n Validators.minLength(0),\r\n Validators.maxLength(25),\r\n ]),\r\n BodyFat: this.fb.control('', [\r\n Validators.min(0),\r\n Validators.max(100),\r\n Validators.pattern('^-?[0-9]*.?[0-9]{0,1}$'),\r\n ]),\r\n DateOfMeasure: this.fb.control(\r\n new Date(new Date().setHours(0, 0, 0, 0)),\r\n [Validators.required]\r\n ),\r\n IsPreferredUnitImperial: this.fb.control(true),\r\n genderFemale: this.fb.control(false),\r\n SubscriptionId: this.fb.control(0),\r\n checkInRequest: this.fb.control(true),\r\n });\r\n\r\n super.initForm(this.PatientForm);\r\n }\r\n\r\n /**\r\n * Converts the object given as a parameter to the 'Patient' type\r\n * @param value Object to convert into 'Patient' type\r\n */\r\n ConvertToPatient(value: any): Patient {\r\n const patient: Patient = {\r\n ...value,\r\n PhoneNumber: (value.PhoneNumber ? value.PhoneNumber.internationalNumber : ''),\r\n };\r\n return patient;\r\n }\r\n\r\n /**\r\n * It converts the inputs of the form into the Patient type\r\n * and submit the form to save them\r\n */\r\n SavePatient() {\r\n const patient: Patient = this.ConvertToPatient(this.PatientForm.value);\r\n\r\n patient.id = this.PatientId;\r\n patient.updateBiometrics = true;\r\n patient.updateGeneralInfo = true;\r\n patient.goalDefs = this.tempGoals;\r\n\r\n if (patient.id === null) {\r\n patient.fitnessProgramMode = -1;\r\n patient.mealProgramMode = -1;\r\n\r\n if (this.isTutorial) {\r\n patient.fitnessProgramMode = 1;\r\n }\r\n }\r\n\r\n const observable =\r\n patient.id === null\r\n ? this.patientsService.create(patient)\r\n : this.patientsService.update(patient, null);\r\n\r\n this.resetDirty();\r\n\r\n observable.pipe(takeUntil(this.unsubscribe$)).subscribe(\r\n (data) => {\r\n // go to patients list or patient page\r\n if (this.isTutorial) {\r\n // save the step\r\n this.tutorialService.save(TutorialIDs.NewPatient).subscribe(() => { });\r\n\r\n // close tutorial\r\n //this.joyrideService.closeTour();\r\n\r\n // go to patient page (use full refresh)\r\n //this.layout.scrollTo(0,0);\r\n\r\n //fix for iOS bug.\r\n //window.location.href = `/pages/CalorieFriend/PatientSheetView/${data.id}/FromTutorial`;\r\n this.router.navigate([\r\n `/pages/CalorieFriend/PatientSheetView/${data.id}/FromTutorial`,\r\n ]);\r\n } else {\r\n this.patientsService.setPatientUpdated(data.id);\r\n this.handleSuccessResponse();\r\n this.router.navigate([\r\n `/pages/CalorieFriend/PatientSheetView/${data.id}`,\r\n ]);\r\n }\r\n },\r\n (err) => {\r\n this.handleWrongResponse();\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Navigates to the Patients list page\r\n */\r\n Back() {\r\n this.router.navigate(['/pages/CalorieFriend/Patients']);\r\n }\r\n\r\n /**\r\n * Handler of Success event of submit\r\n */\r\n handleSuccessResponse() {\r\n if (this.PatientId === null)\r\n this.toasterService.success('', `New Client Created!`);\r\n else this.toasterService.success('', `Client Updated!`);\r\n }\r\n\r\n /**\r\n * Handler of Fail event of submit\r\n */\r\n handleWrongResponse() {\r\n this.toasterService.danger('', this.ProblemCeatingPatient);\r\n }\r\n\r\n /**\r\n * Loads the data of the Patient given by {id}\r\n * @param id The identifier of the Patient\r\n */\r\n loadPatientData(id) {\r\n if (id) {\r\n this.patientsService\r\n .get(id, null)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((patient) => {\r\n this.PatientId = patient.id;\r\n\r\n const measureDateUtc = new Date(patient.dateOfMeasure);\r\n const measureDateLocal = new Date(\r\n measureDateUtc.getTime() -\r\n measureDateUtc.getTimezoneOffset() * 60000\r\n );\r\n\r\n const birthDateUtc = new Date(patient.dateOfBirth);\r\n const birthDateLocal = new Date(\r\n birthDateUtc.getTime() - birthDateUtc.getTimezoneOffset() * 60000\r\n );\r\n\r\n this.PatientForm.patchValue({\r\n Id: patient.id,\r\n FirstName: patient.firstName,\r\n LastName: patient.lastName,\r\n EMail: patient.eMail,\r\n DateOfBirth: birthDateLocal,\r\n AddressLine1: patient.addressLine1,\r\n AddressLine2: patient.addressLine2,\r\n Country: patient.country,\r\n ZipPostalCode: patient.zipPostalCode,\r\n PhoneNumber: patient.phoneNumber,\r\n Height: patient.height,\r\n Weight: patient.weight,\r\n BodyFat: patient.bodyFat,\r\n DateOfMeasure: measureDateLocal,\r\n IsPreferredUnitImperial: patient.isPreferredUnitImperial,\r\n genderFemale: patient.genderFemale,\r\n });\r\n\r\n super.resetDirty();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Navigates to the page of Goals list of the patient\r\n */\r\n Goals() {\r\n if (this.PatientId > 0) {\r\n this.router.navigate(['/pages/CalorieFriend/Goals/' + this.PatientId]);\r\n }\r\n }\r\n\r\n /**\r\n * Navigates to the page of the Plans list of the patient\r\n */\r\n Plans() {\r\n this.router.navigate(['/pages/CalorieFriend/PlanList/' + this.PatientId]);\r\n }\r\n\r\n onChangePreferredUnit() {\r\n this.GoalsComponent.RefreshPlans();\r\n }\r\n\r\n /**\r\n * Validator that validates the number with the ##.# pattern\r\n */\r\n validateNumber = Utility.validateNumber;\r\n\r\n TutorialIDs = TutorialIDs;\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { DataSource } from 'ng2-smart-table/lib/lib/data-source/data-source';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { NbToastrService, NbProgressBarModule } from '@nebular/theme';\r\n\r\nimport { GoalData } from '../../../../@core/interfaces/common/CalorieFriend/goals';\r\n\r\nimport { NgxFilterByNumberComponent } from '../../../../@components/custom-smart-table-components/filter-by-number/filter-by-number.component';\r\nimport { NgxNumberFieldComponent } from '../../../../@components/custom-smart-table-components/number-field/number-field.component';\r\nimport { NgxDateFieldComponent } from '../../../../@components/custom-smart-table-components/date-field/date-field.component';\r\nimport { GoalTypeFieldComponent } from '../../../../@components/custom-smart-table-components/goaltype-field/goaltype-field.component';\r\nimport { ProgressbarComponent } from '../../../../@components/progressbar/progressbar.component';\r\n\r\n/**\r\n * Component for listing the Goals of a patient\r\n */\r\n@Component({\r\n selector: 'app-goal-list',\r\n templateUrl: './goal-list.component.html',\r\n styleUrls: ['./goal-list.component.scss'],\r\n})\r\n\r\nexport class GoalListComponent {\r\n GoalsListLabel = 'Goals';\r\n AddPatientLabel = 'Add New';\r\n\r\n CreatedDateLabel = 'Created Date';\r\n StartDateLabel = 'Start Date';\r\n TargetDateLabel = 'Target Date';\r\n\r\n GoalTypeLabel = 'Goal Type';\r\n GoalValueLabel = 'Goal Value';\r\n ProgressLabel = 'Progress';\r\n\r\n SucessDeleteGoal = 'Sucessfully deleted Goal';\r\n FailDeleteGoal = 'Problem occurred delelting Goal';\r\n BackLabel = 'Back';\r\n\r\n GoalsSource: DataSource;\r\n PatientId: number = null;\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n /** GoalList ctor */\r\n constructor(\r\n private goalsService: GoalData,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private toasterService: NbToastrService,\r\n ) {\r\n this.GoalsSource = this.goalsService.gridDataSource;\r\n }\r\n\r\n /**\r\n * Settings of the ng2 smart table of Goals\r\n */\r\n GoalTableSettings =\r\n {\r\n mode: 'external',\r\n actions:\r\n {\r\n position: 'right',\r\n add: false,\r\n },\r\n edit: { editButtonContent: '' },\r\n delete: { deleteButtonContent: ''},\r\n columns:\r\n {\r\n createdDate: {\r\n title: this.CreatedDateLabel,\r\n type: 'date',\r\n filter: {\r\n type: 'custom',\r\n component: NgxDateFieldComponent,\r\n },\r\n },\r\n startDate: {\r\n title: this.StartDateLabel,\r\n type: 'date',\r\n filter: {\r\n type: 'custom',\r\n component: NgxDateFieldComponent,\r\n },\r\n },\r\n targetDate: {\r\n title: this.TargetDateLabel,\r\n type: 'date',\r\n filter: {\r\n type: 'custom',\r\n component: NgxDateFieldComponent,\r\n },\r\n },\r\n goalType: {\r\n title: this.GoalTypeLabel,\r\n type: 'string',\r\n filter: {\r\n type: 'custom',\r\n component: GoalTypeFieldComponent,\r\n },\r\n },\r\n goalValue: {\r\n title: this.GoalValueLabel,\r\n type: 'string',\r\n filter: {\r\n type: 'custom',\r\n component: NgxNumberFieldComponent,\r\n },\r\n },\r\n customProgress: {\r\n title: 'Progress',\r\n type: 'custom',\r\n filter: false,\r\n valuePrepareFunction: (cell, row) => {\r\n return row.progress;\r\n },\r\n renderComponent: ProgressbarComponent,\r\n },\r\n },\r\n };\r\n\r\n /**\r\n * Initializes the component.\r\n * Gets the Patient ID from the given url and sets the filtering and sorting by that Patient ID.\r\n */\r\n ngOnInit(): void {\r\n this.PatientId = +this.route.snapshot.paramMap.get('PatientId');\r\n this.GoalsSource.addFilter({ field: 'patientID', search: this.PatientId });\r\n this.GoalsSource.setSort([{ field: 'targetDate', direction: 'desc' }]);\r\n }\r\n\r\n /**\r\n * Navigates to the page for creation of a new Goal for the Patient\r\n */\r\n AddGoal() {\r\n this.router.navigate(['/pages/CalorieFriend/NewGoal/' + this.PatientId]);\r\n }\r\n\r\n /**\r\n * Navigates to the page for edition of an existing goal of the Patient\r\n * @param $event Event object\r\n */\r\n onEdit($event) {\r\n this.router.navigate([`/pages/CalorieFriend/Goal/${$event.data.patientID}/${$event.data.id}`]);\r\n }\r\n\r\n /**\r\n * Event handler of the 'Click' event of the 'Delete' action.\r\n * It deletes a Goal with {id} (given by $event object).\r\n * @param $event Event object\r\n */\r\n onDelete($event) {\r\n const observable = this.goalsService.delete($event.data.id);\r\n\r\n observable\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(() => {\r\n this.handleGoalDeleteSuccessResponse();\r\n },\r\n err => {\r\n this.handleGoalDeleteWrongResponse();\r\n },\r\n );\r\n }\r\n\r\n /**\r\n * Handler of Success event of Delete action of an existing item\r\n */\r\n handleGoalDeleteSuccessResponse() {\r\n this.toasterService.success('', this.SucessDeleteGoal);\r\n // refresh screen\r\n this.GoalsSource.refresh();\r\n }\r\n\r\n /**\r\n * Handler of Fail event of Delete action of an existing item\r\n */\r\n handleGoalDeleteWrongResponse() {\r\n this.toasterService.danger('', this.FailDeleteGoal);\r\n }\r\n\r\n /**\r\n * Navigates to the page of the patient\r\n */\r\n Back() {\r\n this.router.navigate([`/pages/CalorieFriend/Patient/` + this.PatientId]);\r\n }\r\n}\r\n","\r\n\r\n \r\n
Goals
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n","import { Observable } from 'rxjs/Observable';\r\nimport { Resolve, ActivatedRouteSnapshot } from '@angular/router';\r\nimport { Injectable } from '@angular/core';\r\nimport { forkJoin, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { GoalData, Goal } from '../../../@core/interfaces/common/CalorieFriend/goals';\r\n\r\n\r\n@Injectable()\r\nexport class GoalFormResolverModule implements Resolve> {\r\n constructor(private GoalsService: GoalData) { }\r\n\r\n resolve(route: ActivatedRouteSnapshot) {\r\n return forkJoin(\r\n route.params.id ? this.GoalsService.get(route.params.id) : of(this.getEmptyGoal()),\r\n )\r\n .pipe(map(([goal]: [Goal]) => {\r\n return { goal };\r\n }));\r\n }\r\n\r\n private getEmptyGoal(): Goal {\r\n return {\r\n id: undefined,\r\n PatientID: undefined,\r\n goalType: 0,\r\n goalValue: 0,\r\n startValue: 0,\r\n targetDate: new Date(),\r\n startDate: new Date(),\r\n createdDate: new Date(),\r\n achievedDate: new Date(),\r\n goalName: '',\r\n progress: 0,\r\n };\r\n }\r\n\r\n}\r\n","import { EventEmitter } from '@angular/core';\r\n\r\nexport function JSONStringify(object) {\r\n let cache = [];\r\n const str = JSON.stringify(\r\n object,\r\n // custom replacer fxn - gets around\r\n // \"TypeError: Converting circular structure to JSON\"\r\n function (key, value) {\r\n if (typeof value === 'object' && value !== null) {\r\n if (cache.indexOf(value) !== -1) {\r\n // Circular reference found, discard key\r\n return;\r\n }\r\n // Store value in our collection\r\n cache.push(value);\r\n }\r\n return value;\r\n },\r\n 4,\r\n );\r\n cache = null; // enable garbage collection\r\n return str;\r\n}\r\n\r\nexport class ObservableArray {\r\n onArrayChanges: EventEmitter = new EventEmitter();\r\n onRemovedItem: EventEmitter = new EventEmitter();\r\n onAddedItem: EventEmitter = new EventEmitter();\r\n\r\n onComponentChanges: EventEmitter = new EventEmitter();\r\n\r\n length(): number {\r\n return this.collection.length;\r\n }\r\n\r\n private collectionCount: number = 0;\r\n private isStartup: boolean = true;\r\n constructor(public array: any[]) {\r\n this.onComponentChanges.subscribe((data) => {\r\n this.array = data;\r\n this.onChanges();\r\n });\r\n }\r\n\r\n private collection: any[] = [];\r\n private subscriptions: any[] = [];\r\n\r\n onChanges(): void {\r\n const collectionModel = new CollectionModel();\r\n collectionModel.originalValue = this.collection;\r\n collectionModel.newValue = this.isStartup ? this.collection : this.array;\r\n collectionModel.isRecordAdded = this.isAddedItem();\r\n collectionModel.isRecordRemoved = this.isRemovedItem();\r\n\r\n this.collectionCount = this.collection.length;\r\n\r\n if (this.isAddedItem()) {\r\n this.onAddedItem.emit(collectionModel);\r\n }\r\n\r\n if (this.isRemovedItem()) {\r\n this.onRemovedItem.emit(collectionModel);\r\n }\r\n\r\n if (this.isChanged()) {\r\n this.updateCollection();\r\n this.onArrayChanges.emit(collectionModel);\r\n this.publish(collectionModel);\r\n this.isStartup = false;\r\n }\r\n }\r\n private isChanged(): boolean {\r\n let isChanged = false;\r\n if (this.array) {\r\n isChanged = this.array.length !== this.collectionCount;\r\n }\r\n return isChanged || this.isStartup;\r\n }\r\n private isAddedItem(): boolean {\r\n let isAddedItem = false;\r\n if (this.array) {\r\n isAddedItem = this.array.length > this.collectionCount;\r\n }\r\n return isAddedItem;\r\n }\r\n private isRemovedItem(): boolean {\r\n let isRemoved = false;\r\n if (this.array) {\r\n isRemoved = this.array.length < this.collectionCount;\r\n }\r\n return isRemoved;\r\n }\r\n\r\n private updateCollection() {\r\n this.collection = this.array;\r\n }\r\n\r\n private publish(payload?: any) {\r\n for (const callback of this.subscriptions) {\r\n callback(payload);\r\n }\r\n }\r\n\r\n subscribe(callback: (payload?: any) => void) {\r\n this.subscriptions.push(callback);\r\n }\r\n}\r\n\r\nexport class CollectionModel {\r\n originalValue: any[] = [];\r\n newValue: any[] = [];\r\n isRecordAdded: boolean = false;\r\n isRecordRemoved: boolean = false;\r\n}\r\n","\r\n \r\n
{{helpLabel}}
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n How-To Video\r\n
","import { Component, ComponentRef, Input, OnInit, Sanitizer } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { NbDialogRef, NbDialogService } from '@nebular/theme';\r\n\r\n@Component({\r\n selector: 'ngx-how-to-modal',\r\n templateUrl: './how-to-modal.component.html',\r\n styleUrls: ['./how-to-modal.component.scss']\r\n})\r\nexport class HowToModalComponent implements OnInit {\r\n\r\n constructor(private dialogService: NbDialogService\r\n ) { }\r\n\r\n @Input() helpLabel: any;\r\n @Input() link: string;\r\n\r\n public isModal = false;\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n onPlayedClick(): void {\r\n const ref: ComponentRef =\r\n this.dialogService.open(HowToModalComponentDialog, {\r\n closeOnBackdropClick: true,\r\n closeOnEsc: true,\r\n autoFocus: false,\r\n context: {\r\n link: this.link,\r\n helpLabel: this.helpLabel\r\n },\r\n }).componentRef;\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'ngx-how-to-modal-dialog',\r\n templateUrl: './how-to-modal.component.html',\r\n styleUrls: ['./how-to-modal.component.scss']\r\n})\r\nexport class HowToModalComponentDialog implements OnInit {\r\n\r\n public safeUrl:any;\r\n public isModal = true;\r\n @Input() helpLabel: any;\r\n @Input() link: string;\r\n\r\n\r\n constructor(private nbDialogService: NbDialogService,\r\n private dialogRef: NbDialogRef,\r\n private sanitizer: DomSanitizer) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n this.link\r\n );\r\n \r\n\r\n\r\n\r\n }\r\n\r\n\r\n\r\n\r\n onClose(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n\r\n\r\n","import { MealPlan } from '../../../../@core/interfaces/common/CalorieFriend/plan';\r\n\r\n/**\r\n * The class to hold the current plan data.\r\n */\r\nexport class PlanDataService {\r\n public thePlan: MealPlan ;\r\n}\r\n","
\r\n
\r\n \r\n Back to\r\n {{ PatientShortHandName }}\r\n \r\n
\r\n
\r\n\r\n\r\n Hurray! You created your first plan! At this point, feel free to explore the\r\n plan builder, it’s very easy to use. Simply hit the “Save Plan” button to save\r\n any changes you are making!\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n {{ PlanLabel }} \r\n
\r\n
\r\n \r\n \r\n Save Plan\r\n \r\n
\r\n \r\n\r\n \r\n To save time, let’s load a template from the template database.\r\n \r\n\r\n \r\n \r\n Load Template\r\n \r\n
\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
    \r\n \r\n Plan Name\r\n \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n
    \r\n \r\n Description\r\n \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n
    \r\n
  • \r\n {{ PlanNotesLabel }}\r\n
  • \r\n
  • \r\n \r\n \r\n \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Day {{ getOrderLabel(day.order) }} ({{\r\n day.name\r\n }})\r\n
\r\n
{{getDaysOfWeeksString(day)}}
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ViewChild,\r\n ElementRef,\r\n AfterViewInit,\r\n AfterContentChecked,\r\n Input,\r\n Optional,\r\n EventEmitter,\r\n Output,\r\n ChangeDetectorRef,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { NbToastrService, NbDialogRef, NbDialogService } from '@nebular/theme';\r\nimport { JoyrideService } from 'ngx-joyride';\r\n\r\nimport { format } from 'support';\r\nimport { JSONStringify } from 'app/SupportOps';\r\n\r\nimport { MealPlanDay } from 'app/@core/interfaces/common/CalorieFriend/plan-day';\r\nimport { MealPlanData, ProgramTemplateData } from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport { PatientData } from 'app/@core/interfaces/common/CalorieFriend/patients';\r\nimport { UsersService } from 'app/@core/backend/common/services/users.service';\r\nimport {\r\n TutorialData,\r\n TutorialIDs,\r\n} from 'app/@core/interfaces/common/CalorieFriend/tutorial';\r\nimport { User } from 'app/@core/interfaces/common/users';\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { SmartEditComponent } from 'app/@components/smart-edit/smart-edit.component';\r\n\r\nimport { PlanDataService } from './PlanService';\r\nimport { MealPlanDefComponentBase } from './plan-def-base.component';\r\n\r\n/**\r\n * Component to edit plan data on the 'Edit Template' page.\r\n * Inherits from the PlanDefComponentBase component.\r\n */\r\n@Component({\r\n selector: 'ngx-plan-def',\r\n templateUrl: './edit-plan-def.component.html',\r\n styleUrls: ['./plan-def.component.scss', '../../global.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MealPlanDefComponent\r\n extends MealPlanDefComponentBase\r\n implements OnInit {\r\n constructor(\r\n @Optional() protected PlanDefDialogRef: NbDialogRef,\r\n private PlanDefRoute: ActivatedRoute,\r\n private PlanDefLocation: Location,\r\n private PlanDefToasterService: NbToastrService,\r\n PlanDefFormBuilder: FormBuilder,\r\n PlanDefDialogService: NbDialogService,\r\n PlanDefPlanService: MealPlanData,\r\n PlanDefUsersService: UsersService,\r\n PlanDefRouter: Router,\r\n patientsService: PatientData,\r\n programTemplateService: ProgramTemplateData,\r\n ) {\r\n super(\r\n PlanDefRoute,\r\n PlanDefFormBuilder,\r\n PlanDefDialogService,\r\n PlanDefPlanService,\r\n PlanDefToasterService,\r\n PlanDefUsersService,\r\n PlanDefRouter,\r\n patientsService,\r\n programTemplateService,\r\n );\r\n\r\n this.ref = PlanDefDialogRef;\r\n\r\n const templateData = this.PlanDefRoute.snapshot.data.templateData;\r\n if (templateData && templateData.template) {\r\n this.EditingTemplate = true;\r\n this.ThePlan = templateData.template.thePlan;\r\n this.TheTemplateID = templateData.template.id;\r\n this.TheTemplateIsPublic = templateData.template.isPublic;\r\n this.templateUserID = templateData.template.userID;\r\n this.ThePlan.name = templateData.template.name;\r\n this.ThePlan.description = templateData.template.description;\r\n this.TheTemplateName = templateData.template.name;\r\n this.TheTemplateDescription = templateData.template.description;\r\n }\r\n }\r\n\r\n\r\n onSavePlan(): void {\r\n super.SavePlan();\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n this.PatientShortHandName = \"Templates\";\r\n\r\n if (!this.ThePlan && !this.ThePlan.days?.length) {\r\n this.NewDay();\r\n }\r\n }\r\n\r\n ProblemSavingTemplate = 'Problem updating template';\r\n TemplateUpdated = 'Template Updated';\r\n\r\n /**\r\n * Event handler of Success event of Updating a template.\r\n */\r\n handleSuccessResponse() {\r\n this.PlanDefToasterService.success('', `${this.TemplateUpdated}!`);\r\n }\r\n\r\n /**\r\n * Event handler of Fail event of Updating a template.\r\n */\r\n handleWrongResponse(data: any) {\r\n this.PlanDefToasterService.danger('', this.ProblemSavingTemplate);\r\n }\r\n\r\n /**\r\n * Method to close the container dialog if it is opened in pop up dialog\r\n * or navigates back to the PatientSheetView page\r\n */\r\n Back() {\r\n this.PlanDefLocation.back();\r\n }\r\n}\r\n\r\n/**\r\n * Component for the Edit Plan page.\r\n * Inherits from the PlanDefComponentBase component.\r\n */\r\n@Component({\r\n selector: 'ngx-plan-def-edit',\r\n templateUrl: './edit-plan-def.component.html',\r\n styleUrls: ['./plan-def.component.scss', '../../global.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class EditMealPlanDefComponent\r\n extends MealPlanDefComponentBase\r\n implements AfterContentChecked, OnInit {\r\n constructor(\r\n protected PlanDefDialogRef: NbDialogService,\r\n private PlanDefCdRef: ChangeDetectorRef,\r\n route: ActivatedRoute,\r\n PlanDefFormBuilder: FormBuilder,\r\n PlanDefDialogService: NbDialogService,\r\n planService: MealPlanData,\r\n PlanDefToasterService: NbToastrService,\r\n PlanDefUsersService: UsersService,\r\n PlanDefRouter: Router,\r\n planDataService: PlanDataService,\r\n PatientDataService: PatientData,\r\n programTemplate: ProgramTemplateData,\r\n ) {\r\n super(\r\n route,\r\n PlanDefFormBuilder,\r\n PlanDefDialogService,\r\n planService,\r\n PlanDefToasterService,\r\n PlanDefUsersService,\r\n PlanDefRouter,\r\n PatientDataService,\r\n programTemplate,\r\n );\r\n\r\n this.ref = PlanDefDialogRef;\r\n this.ThePlan = planDataService.thePlan;\r\n }\r\n\r\n ngAfterContentChecked() {\r\n this.PlanDefCdRef.detectChanges();\r\n }\r\n\r\n /**\r\n * Initializes the component.\r\n */\r\n ngOnInit(): void {\r\n this.InitPlanDefForm();\r\n\r\n /*if (!this.ThePlan) {\r\n const retrievedPlan = localStorage.getItem('ThePlan');\r\n this.ThePlan = JSON.parse(retrievedPlan);\r\n this.init();\r\n return;\r\n }*/\r\n\r\n // get the plan by the id from the query\r\n const id = this.route.snapshot.paramMap.get('planId');\r\n this.planService.get(+id).subscribe((data) => {\r\n this.ThePlan = data;\r\n this.PlanID = data.id;\r\n this.PatientID = data.patientID;\r\n this.init();\r\n });\r\n\r\n\r\n\r\n\r\n\r\n }\r\n\r\n private init(): void {\r\n super.ngOnInit();\r\n\r\n this.loadPatientData(this.ThePlan.patientID);\r\n\r\n window.addEventListener('beforeunload', () => {\r\n // this control works on data loaded via data service\r\n // strategy -- need to set the data so is caught\r\n // when page reloads\r\n if (this.ThePlan.id != null && this.ThePlan !== undefined) {\r\n const Plan = this.ThePlan;\r\n const ThePlanString = JSONStringify(Plan);\r\n localStorage.setItem('ThePlan', ThePlanString);\r\n }\r\n });\r\n }\r\n\r\n onSavePlan() {\r\n this.SavePlan();\r\n }\r\n}\r\n\r\n/**\r\n * Component for the Add Plan page.\r\n */\r\n@Component({\r\n selector: 'app-plan-add',\r\n templateUrl: './edit-plan-def.component.html',\r\n styleUrls: ['./plan-def.component.scss', '../../global.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AddMealPlanDefComponent\r\n extends MealPlanDefComponentBase\r\n implements OnInit {\r\n constructor(\r\n private PlanDefRoute: ActivatedRoute,\r\n protected PlanDefDialogRef: NbDialogService,\r\n public joyrideService: JoyrideService,\r\n private tutorialService: TutorialData,\r\n PlanDefFormBuilder: FormBuilder,\r\n PlanDefDialogService: NbDialogService,\r\n PlanDefPlanService: MealPlanData,\r\n PlanDefToasterService: NbToastrService,\r\n PlanDefUsersService: UsersService,\r\n PlanDefRouter: Router,\r\n planDataService: PlanDataService,\r\n PatientDataService: PatientData,\r\n programTemplate: ProgramTemplateData,\r\n ) {\r\n super(\r\n PlanDefRoute,\r\n PlanDefFormBuilder,\r\n PlanDefDialogService,\r\n PlanDefPlanService,\r\n PlanDefToasterService,\r\n PlanDefUsersService,\r\n PlanDefRouter,\r\n PatientDataService,\r\n programTemplate,\r\n );\r\n\r\n this.ref = PlanDefDialogRef;\r\n this.ThePlan = null;\r\n }\r\n\r\n currentUser: User = null;\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.NewDay();\r\n\r\n this.currentUserSubject.subscribe((user) => {\r\n if (user == null) return;\r\n\r\n this.currentUser = user;\r\n\r\n const isFromTutorial =\r\n this.PlanDefRoute.snapshot.url.length > 2\r\n ? this.PlanDefRoute.snapshot.url[2].toString().toLowerCase() ===\r\n 'fromtutorial'\r\n : false;\r\n\r\n const tutorialStates = JSON.parse(user.tutorialStates ?? '{}');\r\n const steps = [];\r\n\r\n // check the tutorial step 5 - New Plan\r\n if (!tutorialStates[TutorialIDs.LoadFromTemplate] && isFromTutorial) {\r\n this.inTutorial = true;\r\n\r\n steps.push(TutorialIDs.LoadFromTemplate);\r\n\r\n setTimeout(() => {\r\n this.joyrideService\r\n .startTour(\r\n {\r\n steps: steps,\r\n showPrevButton: false,\r\n showCounter: true,\r\n } // Your steps order\r\n )\r\n .subscribe((step) => {\r\n this.inTutorial = step.name === TutorialIDs.LoadFromTemplate;\r\n });\r\n }, 1000);\r\n }\r\n });\r\n }\r\n\r\n onSavePlan() {\r\n this.joyrideService.closeTour();\r\n\r\n this.SavePlan();\r\n\r\n const isFromTutorial =\r\n this.PlanDefRoute.snapshot.url.length > 2\r\n ? this.PlanDefRoute.snapshot.url[2].toString().toLowerCase() ===\r\n 'fromtutorial'\r\n : false;\r\n\r\n if (isFromTutorial) {\r\n this.tutorialService.save(TutorialIDs.FinalStep).subscribe(() => { });\r\n }\r\n\r\n this.inFinalTutorial = false;\r\n }\r\n\r\n SelectTemplate() {\r\n this.inTutorial = false;\r\n\r\n const isFromTutorial =\r\n this.PlanDefRoute.snapshot.url.length > 2\r\n ? this.PlanDefRoute.snapshot.url[2].toString().toLowerCase() ===\r\n 'fromtutorial'\r\n : false;\r\n\r\n super.SelectTemplate(isFromTutorial, this.currentUser);\r\n\r\n // save tutorial position\r\n this.tutorialService.save(TutorialIDs.LoadFromTemplate).subscribe(() => { });\r\n\r\n this.joyrideService.closeTour();\r\n\r\n this.selectTemplateSubject.subscribe((plan) => {\r\n if (plan) {\r\n const tutorialStates = JSON.parse(\r\n this.currentUser.tutorialStates ?? '{}'\r\n );\r\n\r\n // final tutorial step\r\n if (!tutorialStates[TutorialIDs.FinalStep] && isFromTutorial) {\r\n const steps = [TutorialIDs.FinalStep];\r\n\r\n this.inFinalTutorial = true;\r\n\r\n setTimeout(() => {\r\n this.joyrideService\r\n .startTour(\r\n {\r\n steps: steps,\r\n showPrevButton: false,\r\n showCounter: false,\r\n } // Your steps order\r\n )\r\n .subscribe((step) => {\r\n this.inFinalTutorial = step.name === TutorialIDs.FinalStep;\r\n });\r\n }, 1000);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Component for Plan View page.\r\n */\r\n@Component({\r\n selector: 'app-meal-plan-view',\r\n templateUrl: './edit-plan-def.component.html',\r\n styleUrls: ['./plan-def.component.scss', '../../global.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MealPlanViewComponent\r\n extends MealPlanDefComponentBase\r\n implements OnInit {\r\n protected readonly PlanViewUnsubscribe$ = new Subject();\r\n constructor(\r\n private PlanViewRoute: ActivatedRoute,\r\n private PlanViewPatientsService: PatientData,\r\n private PlanViewUsersService: UsersService,\r\n PlanViewFormBuilder: FormBuilder,\r\n PlanViewDialogService: NbDialogService,\r\n PlanViewPlanService: MealPlanData,\r\n PlanViewToasterService: NbToastrService,\r\n PlanViewRouter: Router,\r\n PatientDataService: PatientData,\r\n programTemplate: ProgramTemplateData,\r\n ) {\r\n super(\r\n PlanViewRoute,\r\n PlanViewFormBuilder,\r\n PlanViewDialogService,\r\n PlanViewPlanService,\r\n PlanViewToasterService,\r\n PlanViewUsersService,\r\n PlanViewRouter,\r\n PatientDataService,\r\n programTemplate,\r\n );\r\n this.PlanView = true;\r\n this.ref = null;\r\n\r\n this.PlanViewRoute.queryParams.subscribe((params) => {\r\n this.PlanID = params['planID'];\r\n });\r\n }\r\n\r\n\r\n onSavePlan(): void {\r\n super.SavePlan();\r\n }\r\n\r\n /**\r\n * Initializes the component.\r\n * Based on the settings of the current user and View type, initializes the view settings for elements.\r\n */\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n this.PatientShortHandName = \"Templates\";\r\n\r\n const loadUser = this.PlanViewUsersService.getCurrentUser();\r\n loadUser.subscribe((user) => {\r\n if (user) {\r\n this.ShowEmailSubmit = true;\r\n this.HidePatientInfo = false;\r\n } else {\r\n this.ShowEmailSubmit = false;\r\n this.HidePatientInfo = true;\r\n }\r\n });\r\n console.log(\"Plandef\", this.PatientID);\r\n if (\r\n (this.PatientID !== null && this.PatientID !== undefined) ||\r\n this.NotificationToken != null\r\n )\r\n this.PlanViewPatientsService.get(this.PatientID, this.NotificationToken)\r\n .pipe(takeUntil(this.PlanViewUnsubscribe$))\r\n .subscribe((patient) => {\r\n this.PatientName = format(\r\n \"{0} {1}'s View\",\r\n patient.firstName,\r\n patient.lastName\r\n );\r\n });\r\n\r\n if (\r\n this.NotificationToken != null &&\r\n this.NotificationToken !== undefined\r\n ) {\r\n // manually hide components of view --\r\n let Elements = document.getElementsByClassName('menu-sidebar');\r\n if (Elements != null && Elements !== undefined && Elements.length > 0) {\r\n const Sidebar: any = Elements[0];\r\n Sidebar.style.visibility = 'hidden';\r\n Sidebar.style.width = '0px';\r\n }\r\n\r\n Elements = document.getElementsByClassName('header-container');\r\n if (Elements != null && Elements !== undefined && Elements.length > 0) {\r\n const container: any = Elements[0];\r\n const Header = container.parentElement.parentElement.parentElement;\r\n Header.style.visibility = 'hidden';\r\n Header.style.height = '0px';\r\n }\r\n\r\n Elements = document.getElementsByClassName('layout-container');\r\n if (Elements != null && Elements !== undefined && Elements.length > 0) {\r\n const container: any = Elements[0];\r\n container.style.paddingTop = '0px';\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Component for Plan's Report View page.\r\n */\r\n@Component({\r\n selector: 'app-meal-plan-report-view',\r\n templateUrl: './plan-def-report.component.html',\r\n styleUrls: ['./plan-def.component.scss', '../../global.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ReportMealPlanViewComponent\r\n extends MealPlanDefComponentBase\r\n implements OnInit, AfterViewInit {\r\n protected readonly PlanViewUnsubscribe$ = new Subject();\r\n @ViewChild('ReportContent') ReportContent: ElementRef;\r\n\r\n constructor(\r\n PlanViewRoute: ActivatedRoute,\r\n PlanViewFormBuilder: FormBuilder,\r\n PlanViewDialogService: NbDialogService,\r\n PlanViewPlanService: MealPlanData,\r\n PlanViewToasterService: NbToastrService,\r\n PlanViewUsersService: UsersService,\r\n PlanViewRouter: Router,\r\n PatientDataService: PatientData,\r\n programTemplate: ProgramTemplateData,\r\n ) {\r\n super(\r\n PlanViewRoute,\r\n PlanViewFormBuilder,\r\n PlanViewDialogService,\r\n PlanViewPlanService,\r\n PlanViewToasterService,\r\n PlanViewUsersService,\r\n PlanViewRouter,\r\n PatientDataService,\r\n programTemplate,\r\n );\r\n this.PlanView = true;\r\n this.ref = null;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadData = false;\r\n super.ngOnInit();\r\n }\r\n\r\n /**\r\n * Generates the PDF of the plan.\r\n * @param Plan Plan object\r\n */\r\n PrepareReport(Plan) {\r\n if (this.ThePlan.id !== Plan.id) {\r\n this.DaySource = null;\r\n this.TheDays = null;\r\n this.SelectedPlan(Plan);\r\n } else {\r\n this.GeneratePDF(this.ReportContent.nativeElement.innerHTML);\r\n }\r\n }\r\n\r\n ngAfterViewInit() { }\r\n\r\n private GeneratePDF(HTMLContent) { }\r\n}\r\n\r\n/**\r\n * Component for Plan Day's header label.\r\n */\r\n@Component({\r\n selector: 'app-plan-day-label',\r\n templateUrl: './plan-day-label.component.html',\r\n styleUrls: ['./plan-def.component.scss', '../../global.component.scss'],\r\n})\r\nexport class PlanDayLabelComponent extends BaseComponentCanDeactivate {\r\n /** PlanDayLabel ctor */\r\n\r\n @Input('Day') Day: MealPlanDay;\r\n @Input('readonly') readonly: boolean = false;\r\n\r\n @Output() customfocusout: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild('DayNameEdit') DayNameEdit: SmartEditComponent;\r\n\r\n TheDayLabel = $localize`:@@Day:Day`;\r\n\r\n constructor(\r\n dialogService: NbDialogService,\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n super(dialogService);\r\n }\r\n\r\n onCusomFocusout() {\r\n this.customfocusout.emit();\r\n }\r\n\r\n /**\r\n * Keyup event handler of the label input.\r\n * @param $event Event object\r\n */\r\n onKeyup($event) {\r\n if (this.Day != null && this.Day !== undefined) {\r\n this.Day.name = $event.target.value;\r\n this.isDirty = true;\r\n }\r\n }\r\n\r\n GetDayLabel(CurrentLabel: string, ThisThis) {\r\n return format(\r\n '{0} {1} ({2})',\r\n ThisThis.TheDayLabel,\r\n ThisThis.Day.order,\r\n ThisThis.Day.name\r\n );\r\n }\r\n\r\n public UpdateLabel() {\r\n this.DayNameEdit.UpdateSecondValue();\r\n this.cdRef.detectChanges();\r\n }\r\n}\r\n","\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { NbDialogService } from '@nebular/theme';\r\n\r\nimport { MealPlanTemplateCreateComponent } from 'app/admin/public-templates/template-create/template-create.component';\r\nimport { MealPlan } from '../../../../@core/interfaces/common/CalorieFriend/plan';\r\n\r\n/**\r\n * Component for 'Generate Template' csutom field / cell of ng2 smart table.\r\n */\r\n@Component({\r\n template: `\r\n Generate\r\n `,\r\n})\r\nexport class TemplateGenerateComponent implements OnInit {\r\n @Input() value: any;\r\n\r\n private plan: MealPlan = null;\r\n\r\n constructor(private dialogService: NbDialogService) {}\r\n\r\n ngOnInit(): void {\r\n this.plan = this.value.ThePlan;\r\n }\r\n\r\n onGenerateTemplate(): void {\r\n this.dialogService.open(MealPlanTemplateCreateComponent, {\r\n closeOnEsc: false,\r\n context: { templatePlan: this.plan },\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { NbToastrService, NbDialogService } from '@nebular/theme';\r\nimport { LocalDataSource } from 'ng2-smart-table';\r\nimport { DataSource } from 'ng2-smart-table/lib/lib/data-source/data-source';\r\n\r\nimport {\r\n MealPlanData,\r\n MealPlan,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\n\r\nimport { MealPlanDefComponent } from '../PlanDef/plan-def.component';\r\nimport { TemplateGenerateComponent } from './template-generate.component';\r\n\r\n@Component({\r\n selector: 'app-plan-list',\r\n templateUrl: './plan-list.component.html',\r\n styleUrls: ['./plan-list.component.scss'],\r\n})\r\nexport class PlanListComponent implements OnInit {\r\n PlanListLabel = 'Plans';\r\n AddPlanLabel = 'New Plan';\r\n PlanNameLabel = 'Name';\r\n PlanActiveDaysLabel = 'Days';\r\n PlanActiveStateLabel = 'Active';\r\n AcceptLabel = 'SAVE PLANS';\r\n BackLabel = 'Back';\r\n TemplateLabel = 'Template';\r\n SucessDeletePlan = 'Sucessfully deleted Plan';\r\n FailDeletePlan = 'Problem occurred deelting Plan';\r\n\r\n PatientID = null;\r\n\r\n Plans: Array = null;\r\n PlanSource: LocalDataSource = null;\r\n PlanListSource: DataSource = null;\r\n\r\n PlansTableSettings = {\r\n hideSubHeader: true,\r\n mode: 'external',\r\n actions: {\r\n columnTitle: $localize`:@@Actions:Actions`,\r\n position: 'right',\r\n add: false,\r\n },\r\n edit: {\r\n editButtonContent:\r\n '',\r\n },\r\n delete: {\r\n deleteButtonContent:\r\n '',\r\n },\r\n columns: {\r\n name: { title: $localize`:@@Name:Name`, type: 'string', filter: false },\r\n // days: { title: this.PlanActiveDaysLabel, type: 'number', filter: false },\r\n active: {\r\n title: $localize`:@@Active:Active`,\r\n type: 'boolean',\r\n filter: false,\r\n },\r\n template: {\r\n title: $localize`:@@Template:Template`,\r\n type: 'custom',\r\n renderComponent: TemplateGenerateComponent,\r\n valuePrepareFunction: (value, row, cell) => {\r\n return { ThePlan: row };\r\n },\r\n filter: false,\r\n },\r\n },\r\n };\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private dialogService: NbDialogService,\r\n private plansService: MealPlanData,\r\n private toasterService: NbToastrService\r\n ) {\r\n this.PlanListSource = this.plansService.gridDataSource;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.PatientID = +this.route.snapshot.paramMap.get('PatientId');\r\n this.PlanListSource.addFilter({\r\n field: 'patientId',\r\n search: this.PatientID,\r\n });\r\n\r\n this.Plans = new Array();\r\n this.PlanSource = new LocalDataSource(this.Plans); // create the source\r\n }\r\n\r\n AddPlan() {\r\n this.dialogService\r\n .open(MealPlanDefComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: { PatientID: this.PatientID },\r\n })\r\n .onClose.subscribe((plan) => this.UpdatePlan(plan));\r\n }\r\n\r\n UpdatePlan(Plan: MealPlan) {\r\n if (Plan !== null && Plan !== undefined) {\r\n this.Plans = this.Plans.filter(\r\n (plan) => plan.id !== Plan.id || plan.name !== Plan.name\r\n );\r\n this.Plans.push(Plan);\r\n this.PlanSource = new LocalDataSource(this.Plans); // create the source\r\n }\r\n\r\n this.PlanListSource.refresh();\r\n }\r\n\r\n onEdit($event) {\r\n this.dialogService\r\n .open(MealPlanDefComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: {\r\n ThePlan: $event.data,\r\n },\r\n })\r\n .onClose.subscribe((plan) => this.UpdatePlan(plan));\r\n }\r\n\r\n onDelete($event) {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: { Message: 'Are you sure to delete this plan?' },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result) {\r\n const observable = this.plansService.delete($event.data.id);\r\n\r\n observable.pipe(takeUntil(this.unsubscribe$)).subscribe(\r\n () => {\r\n this.handleGoalDeleteSuccessResponse();\r\n },\r\n (err) => {\r\n this.handleGoalDeleteWrongResponse();\r\n }\r\n );\r\n }\r\n });\r\n }\r\n\r\n handleGoalDeleteSuccessResponse() {\r\n this.toasterService.success('', this.SucessDeletePlan);\r\n this.PlanListSource.refresh();\r\n }\r\n\r\n handleGoalDeleteWrongResponse() {\r\n this.toasterService.danger('', this.FailDeletePlan);\r\n }\r\n\r\n Back() {\r\n this.router.navigate([`/pages/CalorieFriend/Patient/${this.PatientID}`]);\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-section-layout',\r\n templateUrl: './section-layout.component.html',\r\n styleUrls: ['./section-layout.component.scss'],\r\n})\r\nexport class SectionLayoutComponent {\r\n PlanLabel = 'Plans';\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n","import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { PatientCalendarComponent } from 'app/@components/patient-calendar/patient-calendar.component';\r\nimport { PatientsService } from 'app/@core/backend/common/services/CalorieFriend/patients.service';\r\nimport { Patient, PatientData } from 'app/@core/interfaces/common/CalorieFriend/patients';\r\nimport { PatientStore } from 'app/@core/stores/patient.store';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil, takeWhile } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ngx-program-overview',\r\n templateUrl: './program-overview.component.html',\r\n styleUrls: ['./program-overview.component.scss']\r\n})\r\nexport class ProgramOverviewComponent implements OnInit {\r\n\r\n\r\n private readonly unsubscribe$: Subject = new Subject();\r\n public _isFitness: boolean = false;\r\n private _patientLoaded: boolean = false;\r\n\r\n\r\n constructor(private patientService: PatientData,\r\n private route: ActivatedRoute,\r\n private cdRef: ChangeDetectorRef,\r\n private patientStore: PatientStore) { }\r\n\r\n patient: any;\r\n private loaded: boolean = false;\r\n\r\n @ViewChild('patientCalendarComponent') patientCalendarComponent: PatientCalendarComponent;\r\n\r\n ngOnInit(): void {\r\n this.patientStore\r\n .onPatientChanged()\r\n .pipe(\r\n takeWhile(() => !this._patientLoaded),\r\n takeUntil(this.unsubscribe$),\r\n filter((patient) => !!patient)\r\n )\r\n .subscribe((patient) => {\r\n this.patient = patient;\r\n this.unsubscribe$.unsubscribe();\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n","\r\n\r\n \r\n\r\n \r\n\r\n\r\n \r\n\r\n\r\n","\r\n
\r\n
\r\n\r\n \r\n
\r\n {{ patient.firstName + ' ' + patient.lastName }}'s Program\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n 0 || isFuture\">\r\n
\r\n \r\n  Send App Invite\r\n \r\n
\r\n
\r\n
\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n} from '@angular/core';\r\nimport { NbDialogRef, NbToastrService, NbDialogService } from '@nebular/theme';\r\n\r\nimport { Patient } from 'app/@core/interfaces/common/CalorieFriend/patients';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\nimport {\r\n FitnessPlanData,\r\n MealPlanData,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport { DatePipe } from '@angular/common';\r\n@Component({\r\n selector: 'app-patient-calendar-modal',\r\n templateUrl: './calendar-modal.component.html',\r\n styleUrls: ['./calendar-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [DatePipe],\r\n})\r\nexport class PatientCalendarModalComponent {\r\n patient: Patient;\r\n isFitness: boolean;\r\n planId: number;\r\n programStartDate: Date = null;\r\n activeDayIsOpen: boolean = false;\r\n isWaiting: boolean = false;\r\n\r\n private _plansService: FitnessPlanData | MealPlanData = null;\r\n\r\n constructor(\r\n private ref: NbDialogRef,\r\n private fitnessPlansService: FitnessPlanData,\r\n private mealPlansService: MealPlanData,\r\n private toastrService: NbToastrService,\r\n private dialogService: NbDialogService,\r\n private datePipe: DatePipe,\r\n private cdRef: ChangeDetectorRef\r\n ) {}\r\n\r\n get plansService(): FitnessPlanData | MealPlanData {\r\n if (!this._plansService) {\r\n this._plansService = this.isFitness\r\n ? this.fitnessPlansService\r\n : this.mealPlansService;\r\n }\r\n\r\n return this._plansService;\r\n }\r\n\r\n onClose(): void {\r\n this.ref.close();\r\n }\r\n\r\n onSendToClient(): void {\r\n\r\n /*\r\n if (this.isFuture()) {\r\n this.dialogService.open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: {\r\n isAlert: true,\r\n Message: `Plan will also automatically be sent on ${this.datePipe.transform(\r\n this.programStartDate\r\n )}.`,\r\n Title: 'Info',\r\n },\r\n });\r\n return;\r\n }*/\r\n\r\n if (this.isWaiting || !this.planId) return;\r\n\r\n this.isWaiting = true;\r\n this.cdRef.detectChanges();\r\n\r\n this.plansService\r\n .submitPatientNotification(this.patient.id, this.planId, true)\r\n .subscribe(() => this.toastrService.success('', 'Plan sent successfully'))\r\n .add(() => {\r\n this.isWaiting = false;\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n\r\n isFuture(): boolean {\r\n const today = new Date();\r\n return this.programStartDate > today;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormBuilder,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { NbDialogRef, NbDialogService, NbToastrService } from '@nebular/theme';\r\n\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport {\r\n DEFAULT_DURATION,\r\n FitnessPlan,\r\n FitnessPlanData,\r\n TemplatePlan,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport { Utility } from 'app/@core/utils/utility';\r\nimport * as moment from 'moment';\r\nimport { finalize } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-fitness-plan-template-create',\r\n templateUrl: './plan-template-create.component.html',\r\n styleUrls: ['./plan-template-create.component.scss'],\r\n})\r\nexport class FitnessPlanTemplateCreateComponent\r\n extends BaseComponentCanDeactivate\r\n implements OnInit\r\n{\r\n planGenerateForm: FormGroup;\r\n templatePlan: FitnessPlan = null;\r\n isPublic: boolean = false;\r\n isLoading: boolean = false;\r\n\r\n get templateName(): AbstractControl {\r\n return this.planGenerateForm.get('templateName');\r\n }\r\n get templateDescription(): AbstractControl {\r\n return this.planGenerateForm.get('templateDescription');\r\n }\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private fitnessPlanService: FitnessPlanData,\r\n protected ref: NbDialogRef,\r\n private toasterService: NbToastrService,\r\n private router: Router,\r\n dialogService: NbDialogService\r\n ) {\r\n super(dialogService);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.templatePlan)\r\n this.templatePlan = {\r\n id: -1,\r\n days: null,\r\n name: 'New Plan',\r\n description: '',\r\n notes: '',\r\n patientID: null,\r\n createdDate: null,\r\n active: false,\r\n zOrder: Utility.INT32_MAX,\r\n duration: DEFAULT_DURATION,\r\n };\r\n\r\n this.initForm();\r\n }\r\n\r\n initForm(): void {\r\n this.planGenerateForm = this.fb.group({\r\n templateName: this.fb.control(`Untitled Fitness Plan (${moment().format('MMM DD, YYYY')})`, [\r\n Validators.required,\r\n Validators.minLength(1),\r\n Validators.maxLength(50),\r\n ]),\r\n templateDescription: this.fb.control('', [Validators.maxLength(500)]),\r\n });\r\n super.initForm(this.planGenerateForm);\r\n }\r\n\r\n onCreateTemplate(): void {\r\n if (!this.templatePlan) return;\r\n\r\n const template: TemplatePlan = {\r\n name: this.templateName.value,\r\n description: this.templateDescription.value,\r\n thePlan: this.templatePlan,\r\n isPublic: this.isPublic,\r\n };\r\n\r\n super.resetDirty();\r\n this.isLoading = true;\r\n this.fitnessPlanService.CreateTemplate(template)\r\n .pipe(finalize(() => this.isLoading = false))\r\n .subscribe(\r\n (res) => {\r\n this.router.navigate(['/pages/CalorieFriend/FitnessTemplate', res.id]);\r\n this.toasterService.success('', `Item template has been created!`);\r\n this.ref.close();\r\n },\r\n () =>\r\n this.toasterService.danger('', 'Problem with creating the template.')\r\n );\r\n }\r\n\r\n onCancel(): void {\r\n super.back(() => this.ref.close());\r\n }\r\n\r\n onTemplateNameChange(): void {\r\n if (this.templateName.value === '')\r\n this.templateName.setValue(`Untitled Fitness Plan (${moment().format('MMM DD, YYYY')})`);\r\n }\r\n\r\n get valid(): boolean {\r\n return this.planGenerateForm.valid && !!this.templatePlan;\r\n }\r\n}\r\n","\r\n \r\n
Create Plan Template
\r\n
\r\n\r\n \r\n
\r\n \r\n
    \r\n
  • \r\n
    \r\n Name\r\n
    \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n\r\n \r\n
    \r\n
  • \r\n
    \r\n Description\r\n
    \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","\r\n \r\n
\r\n \r\n \r\n
{{ plan?.name }}
\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n \r\n {{ option.label }}\r\n \r\n \r\n
  • \r\n
\r\n\r\n \r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • {{ plan?.days?.length }} {{ assignedWeekDays }}
  • \r\n
\r\n\r\n \r\n\r\n \r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • {{ startDate | date }}
  • \r\n
\r\n\r\n \r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • {{ endDate | date }}
  • \r\n
\r\n\r\n \r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n
\r\n\r\n \r\n
\r\n Created {{\r\n plan?.createdDate | date }}\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n Select Specified Date\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport {\r\n NbDialogService,\r\n NbSelectComponent,\r\n NbToastrService,\r\n NbToggleComponent,\r\n} from '@nebular/theme';\r\n\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\nimport { NativeAppService } from 'app/@core/backend/common/services/native-app.service';\r\nimport {\r\n FitnessPlan,\r\n FitnessPlanData,\r\n MealPlan,\r\n MealPlanData,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport {\r\n FitnessPlanDay,\r\n MealPlanDay,\r\n Short_WeekDays,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan-day';\r\n\r\nimport { MealPlanTemplateCreateComponent } from 'app/admin/public-templates/template-create/template-create.component';\r\nimport { Subject } from 'rxjs';\r\nimport { retryWhen } from 'rxjs-compat/operator/retryWhen';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { FitnessPlanTemplateCreateComponent } from '../../../FitnessPlans/plan-template-create/plan-template-create.component';\r\n\r\n@Component({\r\n selector: 'ngx-plan-list-item',\r\n templateUrl: './plan-list-item.component.html',\r\n styleUrls: ['./plan-list-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PlanListItemComponent implements OnDestroy {\r\n @Input() set isFitnessPlan(value: boolean) {\r\n this._isFitnessPlan = value;\r\n this._plansService = value\r\n ? this.fitnessPlansService\r\n : this.mealPlansService;\r\n }\r\n get isFitnessPlan(): boolean {\r\n return this._isFitnessPlan;\r\n }\r\n\r\n @Input() patientId: number;\r\n @Input() patientGuid: string;\r\n @Input() programMode: boolean;\r\n @Input() isProgramTemplate: boolean;\r\n @Input() set plan(value: FitnessPlan | MealPlan) {\r\n this._plan = value;\r\n this.loadAssignedWeekDays();\r\n this.isWaiting = false;\r\n this.cdRef.reattach();\r\n this.cdRef.markForCheck();\r\n }\r\n get plan(): FitnessPlan | MealPlan {\r\n return this._plan;\r\n }\r\n @Input() startDate: Date;\r\n @Input() endDate: Date;\r\n @Input() planIndex: number;\r\n @Input() programTemplateId: number;\r\n\r\n @Output() changed = new EventEmitter();\r\n @Output() activeChanged = new EventEmitter();\r\n @Output() duplicated = new EventEmitter();\r\n @Output() deleted = new EventEmitter();\r\n @Output() moved = new EventEmitter();\r\n\r\n @ViewChild('activeToggle', { static: true }) activeToggle?: NbToggleComponent;\r\n @ViewChild('durationSelect', { static: false })\r\n durationSelect?: NbSelectComponent;\r\n\r\n private _isFitnessPlan: boolean = false;\r\n private _plansService: FitnessPlanData | MealPlanData;\r\n private _plan: FitnessPlan | MealPlan;\r\n\r\n isWaiting: boolean = true;\r\n assignedWeekDays: string;\r\n readonly durationOptions = [\r\n { label: '1 week', value: 1 },\r\n ...Array.from({ length: 15 }, (_, i) => i + 2).map((i) => ({\r\n label: `${i} weeks`,\r\n value: i,\r\n })),\r\n ];\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n constructor(\r\n private router: Router,\r\n public nativeAppService: NativeAppService,\r\n private fitnessPlansService: FitnessPlanData,\r\n private mealPlansService: MealPlanData,\r\n private dialogService: NbDialogService,\r\n private toastrService: NbToastrService,\r\n private cdRef: ChangeDetectorRef\r\n ) {\r\n console.log(\"plan list detach\");\r\n this.cdRef.detach();\r\n }\r\n ngOnDestroy(): void {\r\n this.unsubscribe$.next();\r\n }\r\n\r\n onSend(): void {\r\n if (this.programMode) return;\r\n\r\n /*if (!this._plan.active) {\r\n this.onActiveChanged(true);\r\n return;\r\n }*/\r\n\r\n this.isWaiting = true;\r\n this.cdRef.markForCheck();\r\n\r\n this._plansService\r\n .submitPatientNotification(this.patientId, this._plan.id)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(() => this.toastrService.success('', 'Plan sent successfully'))\r\n .add(() => {\r\n this.isWaiting = false;\r\n this.cdRef.markForCheck();\r\n });\r\n }\r\n\r\n onActiveChanged(active: boolean): void {\r\n if (this.programMode) return;\r\n\r\n if (!this.plan.active) {\r\n this.plan.active = true;\r\n return;\r\n\r\n } \r\n\r\n\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: {\r\n Title: active ? 'Activate the plan' : 'Disable the plan',\r\n Message: active\r\n ? 'Are you sure you want to set this plan Active? This plan will become the default option for the patient zone and the user will be notified.'\r\n : 'Are you sure you want to set this plan Disabled?',\r\n },\r\n })\r\n .onClose.subscribe((ok: boolean) => {\r\n if (!ok) {\r\n this.activeToggle?.writeValue(!active);\r\n this.plan.active = false;\r\n return;\r\n }\r\n\r\n this.isWaiting = true;\r\n this.cdRef.markForCheck();\r\n\r\n this._plansService\r\n .activate(this._plan.id, active)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(\r\n () => {\r\n this._plan.active = active;\r\n this.cdRef.markForCheck();\r\n this.activeChanged.emit(this._plan);\r\n if (!active) return;\r\n\r\n this._plansService\r\n .submitPatientNotification(this.patientId, this._plan.id)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(() =>\r\n this.toastrService.success('', 'Plan sent successfully')\r\n )\r\n .add(() => {\r\n this.isWaiting = false;\r\n this.cdRef.markForCheck();\r\n });\r\n },\r\n () => {\r\n this._plan.active = !active;\r\n this.cdRef.markForCheck();\r\n this.toastrService.danger('', 'Error in activating plan');\r\n }\r\n );\r\n });\r\n }\r\n\r\n onDurationChanged(value: number): void {\r\n if(this.isProgramTemplate) {\r\n this._plan.duration = value;\r\n this.changed.emit(this._plan);\r\n return;\r\n }\r\n this.isWaiting = true;\r\n this.cdRef.markForCheck();\r\n\r\n this._plansService\r\n .update({ ...this._plan, duration: value })\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(\r\n () => {\r\n this._plan.duration = value;\r\n this.changed.emit(this._plan);\r\n },\r\n () => {\r\n this.durationSelect?.writeValue(this._plan.duration);\r\n this.toastrService.danger('', 'Error in duration update');\r\n }\r\n )\r\n .add(() => {\r\n this.isWaiting = false;\r\n this.cdRef.markForCheck();\r\n });\r\n }\r\n\r\n onEdit(): void {\r\n if(this.isProgramTemplate) {\r\n this.router.navigateByUrl(\r\n `/pages/CalorieFriend/program-template/${this.isFitnessPlan ? 'fitness' : 'meal'\r\n }/${this.programTemplateId}/${this.planIndex}`\r\n );\r\n } else {\r\n this.router.navigateByUrl(\r\n `/pages/CalorieFriend/${this._isFitnessPlan ? 'Fitness' : 'Meal'\r\n }PlanEdit/${this._plan.id}`\r\n );\r\n }\r\n }\r\n\r\n onClientLinkClick(): void {\r\n this.nativeAppService.sendMessageToApp(\r\n 'openblank',\r\n `/PatientView/Patient/${this.patientGuid}/${this._isFitnessPlan ? 'Workout' : 'Meal'\r\n }/${this._plan.id}`\r\n );\r\n }\r\n\r\n onSaveAsTemplate(): void {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: {\r\n Message: 'Are you sure to create a template from this plan?',\r\n },\r\n })\r\n .onClose.subscribe((res) => {\r\n if (!res) return;\r\n\r\n if (this._isFitnessPlan)\r\n this.dialogService.open(FitnessPlanTemplateCreateComponent, {\r\n closeOnEsc: false,\r\n context: {\r\n templatePlan: this._plan as FitnessPlan,\r\n },\r\n });\r\n else\r\n this.dialogService.open(MealPlanTemplateCreateComponent, {\r\n closeOnEsc: false,\r\n context: {\r\n templatePlan: this._plan as MealPlan,\r\n },\r\n });\r\n });\r\n }\r\n\r\n onDuplicate(): void {\r\n if(!this.isProgramTemplate) {\r\n this.isWaiting = true;\r\n this.cdRef.markForCheck();\r\n\r\n this._plansService\r\n .duplicate(this._plan.id)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((res) => this.duplicated.emit(res as (MealPlan | FitnessPlan)))\r\n .add(() => {\r\n this.isWaiting = false;\r\n this.cdRef.markForCheck();\r\n });\r\n } else {\r\n this.duplicated.emit(this._plan as (MealPlan | FitnessPlan))\r\n }\r\n }\r\n\r\n onDelete(): void {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: { Message: 'Are you sure to delete this plan?' },\r\n })\r\n .onClose.subscribe((res) => {\r\n if (!res) return;\r\n if(!this.isProgramTemplate) {\r\n this.isWaiting = true;\r\n this.cdRef.markForCheck();\r\n this._plansService\r\n .delete(this._plan.id)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(\r\n () => {\r\n this.toastrService.success('', 'Sucessfully deleted Plan');\r\n this.deleted.emit(this._plan.id);\r\n },\r\n () =>\r\n this.toastrService.danger('', 'Problem occurred deleting Plan')\r\n )\r\n .add(() => {\r\n this.isWaiting = false;\r\n this.cdRef.markForCheck();\r\n });\r\n } else {\r\n this.deleted.emit(this._plan.id);\r\n }\r\n });\r\n }\r\n\r\n onUp(): void {\r\n this.moved.emit(-1);\r\n }\r\n\r\n onDown(): void {\r\n this.moved.emit(1);\r\n }\r\n\r\n private loadAssignedWeekDays(): void {\r\n const weekDays: boolean[] = new Array(7);\r\n\r\n this._plan.days.forEach((day: FitnessPlanDay | MealPlanDay) =>\r\n day.dayOfWeek.forEach((x) => (weekDays[x] = true))\r\n );\r\n const assignedDays: string[] = weekDays\r\n .map((x, i) => {\r\n if (x) return Short_WeekDays[i];\r\n return null;\r\n })\r\n .filter((x) => x);\r\n this.assignedWeekDays =\r\n assignedDays.length === 0 ? '' : `(${assignedDays.join(', ')})`;\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n Setting a plan as \"Active\" or tapping the \"Send Plan\" button will\r\n deliver the plan to the client by Email.
It will also show as\r\n the default plan in the Client's View.\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n Program Mode (Disabled)\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n\r\n
0 && !isProgramTemplate\">\r\n\r\n\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n Show Complete Calendar\r\n Show Only Current Phase\r\n Show Next 4 Weeks\r\n Show Next 8 Weeks\r\n Show Next 12 Weeks\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n You can create Meal or Exercise plans, in this example, let’s create a\r\n Workout Plan. Tap the Add New Plan button.\r\n \r\n\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n
\r\n\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
","import { Component, ChangeDetectorRef, Input, OnDestroy, ChangeDetectionStrategy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { filter, finalize, switchMap, takeUntil, takeWhile } from 'rxjs/operators';\r\nimport { JoyrideService } from 'ngx-joyride';\r\nimport { NbDialogService } from '@nebular/theme';\r\n\r\nimport {\r\n BasePlan,\r\n DEFAULT_DURATION,\r\n FitnessPlan,\r\n FitnessPlanData,\r\n MealPlan,\r\n MealPlanData,\r\n ProgramTemplateData,\r\n TemplatePlan,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport { Patient, PatientData, PatientProgramViewType } from 'app/@core/interfaces/common/CalorieFriend/patients';\r\nimport { TutorialData, TutorialIDs } from 'app/@core/interfaces/common/CalorieFriend/tutorial';\r\nimport { FitnessPlansStore, MealPlansStore } from 'app/@core/stores/plans.store';\r\nimport { PatientStore } from 'app/@core/stores/patient.store';\r\n\r\nimport { PatientCalendarModalComponent } from '../calendar-modal/calendar-modal.component';\r\nimport { FitnessPlanDay, MealPlanDay } from 'app/@core/interfaces/common/CalorieFriend/plan-day';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { NativeAppService } from '../../../../@core/backend/common/services/native-app.service';\r\nimport { ProgramPlans } from 'app/@core/interfaces/common/CalorieFriend/program-template';\r\nimport { Utility } from 'app/@core/utils/utility';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'app-patient-program',\r\n templateUrl: './patient-program.component.html',\r\n styleUrls: ['./patient-program.component.scss'],\r\n // changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PatientProgramComponent implements OnDestroy, OnInit {\r\n @Input() set isFitness(value: boolean) {\r\n this._isFitness = value;\r\n }\r\n\r\n @Input() public isProgramTemplate: boolean;\r\n\r\n get isFitness(): boolean {\r\n return this._isFitness;\r\n }\r\n\r\n readonly TutorialIDs = TutorialIDs;\r\n isWaiting: boolean = true;\r\n isProgramMode: boolean = false;\r\n programStartDate: Date = new Date();\r\n programEndDate: Date = null;\r\n patient: Patient;\r\n plans: (MealPlan | FitnessPlan)[] = [];\r\n programVisibility: any;\r\n\r\n public programTemplateData: TemplatePlan;\r\n\r\n private readonly unsubscribe$: Subject = new Subject();\r\n public _isFitness: boolean = false;\r\n private _plansService: FitnessPlanData | MealPlanData = null;\r\n private _plansStore: FitnessPlansStore | MealPlansStore = null;\r\n private _patientLoaded: boolean = false;\r\n\r\n constructor(\r\n public joyrideService: JoyrideService,\r\n private router: Router,\r\n private activeRoute: ActivatedRoute,\r\n private patientService: PatientData,\r\n private patientStore: PatientStore,\r\n private fitnessPlansService: FitnessPlanData,\r\n private fitnessPlansStore: FitnessPlansStore,\r\n private mealPlansService: MealPlanData,\r\n private mealPlansStore: MealPlansStore,\r\n private tutorialService: TutorialData,\r\n private dialogService: NbDialogService,\r\n private cdRef: ChangeDetectorRef,\r\n private deviceService: DeviceDetectorService,\r\n private nativeApp: NativeAppService,\r\n private programTemplateService: ProgramTemplateData\r\n ) {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._plansStore.destroyPlans();\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n }\r\n\r\n private init(): void {\r\n this._plansService = this._isFitness ? this.fitnessPlansService : this.mealPlansService;\r\n this._plansStore = this._isFitness ? this.fitnessPlansStore : this.mealPlansStore;\r\n if (!this.isProgramTemplate) {\r\n this.patientStore\r\n .onPatientChanged()\r\n .pipe(\r\n takeWhile(() => !this._patientLoaded),\r\n takeUntil(this.unsubscribe$),\r\n filter((patient) => !!patient)\r\n )\r\n .subscribe((patient) => {\r\n this._patientLoaded = true;\r\n this.patient = patient;\r\n this.isProgramMode = this._isFitness ? patient.fitnessProgramMode > 0 : patient.mealProgramMode > 0;\r\n this.programStartDate = new Date(\r\n this._isFitness ? patient.fitnessProgramStartDate : patient.mealProgramStartDate\r\n );\r\n\r\n if (patient.programViewType) {\r\n this.programVisibility = PatientProgramViewType[patient.programViewType].valueOf().toString();\r\n } else {\r\n this.programVisibility = '0';\r\n }\r\n\r\n if (this.programStartDate < new Date(1970, 1, 1)) this.programStartDate = new Date();\r\n this.loadPlans();\r\n });\r\n } else {\r\n this.isProgramMode = true;\r\n this.loadPlans();\r\n }\r\n }\r\n\r\n private loadPlans(): void {\r\n if (!this.isProgramTemplate) {\r\n this.isWaiting = true;\r\n this.cdRef.detectChanges();\r\n this._plansService\r\n .listById(this.patient.id)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((data) => {\r\n this._plansStore.setPlans(data.items as (MealPlan | FitnessPlan)[]);\r\n this.plans = data.items;\r\n this.programEndDate = this.endDate(this.plans?.length - 1);\r\n this.reorderPlans();\r\n this.cdRef.markForCheck();\r\n })\r\n .add(() => {\r\n this.isWaiting = false;\r\n this.cdRef.detectChanges();\r\n this.cdRef.markForCheck();\r\n });\r\n } else {\r\n this.isWaiting = true;\r\n this.programTemplateService\r\n .GetTemplateById(this.activeRoute.snapshot.params.id)\r\n .subscribe((data) => {\r\n this.programTemplateData = data;\r\n if (this.isFitness) {\r\n this.plans = this.programTemplateData.programPlans?.fitnessPlans;\r\n this._plansStore.setPlans(this.programTemplateData.programPlans?.fitnessPlans as FitnessPlan[]);\r\n } else {\r\n this.plans = this.programTemplateData.programPlans?.mealPlan;\r\n this._plansStore.setPlans(this.programTemplateData.programPlans?.mealPlan as MealPlan[]);\r\n }\r\n this.programStartDate = new Date();\r\n this.programEndDate = this.plans? this.endDate(this.plans.length - 1): null;\r\n this.reorderPlans();\r\n this.cdRef.detectChanges();\r\n this.cdRef.markForCheck();\r\n })\r\n .add(() => {\r\n this.isWaiting = false;\r\n this.cdRef.detectChanges();\r\n this.cdRef.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n reorderPlans() {\r\n if (!this.isProgramMode) {\r\n this.plans.sort((p1, p2) => {\r\n if (p1.active) return -1;\r\n if (p2.active) return 1;\r\n return p1.createdDate > p2.createdDate ? -1 : 1;\r\n });\r\n\r\n //this.plans = this.plans.sort((a, b) => new Date(b.createdDate).getTime() - new Date(a.createdDate).getTime());\r\n //this.plans = this.plans.sort((a, b) => Number(b.active) - Number(a.active));\r\n }\r\n }\r\n\r\n onProgramToClient(): void {\r\n if (!this.isProgramMode) return;\r\n\r\n if (\r\n this.plans\r\n .filter((x) => x.active)\r\n .some(\r\n (plan: FitnessPlan | MealPlan) =>\r\n (plan.days as any[]).reduce(\r\n (assignedDays: number, day: FitnessPlanDay | MealPlanDay) => assignedDays + day.dayOfWeek.length,\r\n 0\r\n ) === 0\r\n )\r\n ) {\r\n this.dialogService.open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: {\r\n Title: 'Warning',\r\n Message:\r\n 'Plans in Program Mode must have at least one week day assigned. Please tap the edit button and assign Plan days to week days (Sunday through Monday).',\r\n isAlert: true,\r\n },\r\n });\r\n return;\r\n }\r\n\r\n let currentPlanId = 0;\r\n if (this.plans?.length > 0) {\r\n const startDate = new Date(this.programStartDate);\r\n startDate.setHours(0, 0, 0, 0);\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n\r\n if (startDate.toDateString() === today.toDateString() || startDate > today) currentPlanId = this.plans[0].id;\r\n if (startDate < today) {\r\n let i = 0;\r\n while (i < this.plans.length) {\r\n startDate.setDate(startDate.getDate() + this.plans[i].duration * 7);\r\n if (startDate > today) break;\r\n i++;\r\n }\r\n if (i < this.plans.length) currentPlanId = this.plans[i].id;\r\n }\r\n }\r\n\r\n this.dialogService.open(PatientCalendarModalComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: {\r\n patient: this.patient,\r\n programStartDate: this.programStartDate,\r\n isFitness: this.isFitness,\r\n planId: currentPlanId,\r\n },\r\n });\r\n }\r\n\r\n onProgramViewTypeChange(): void {\r\n if (this.isWaiting) return;\r\n console.log('Here 2');\r\n this.isWaiting = true;\r\n this.cdRef.detectChanges();\r\n\r\n this.patientService\r\n .update({\r\n ...this.patient,\r\n ['programViewType']: this.programVisibility as number,\r\n })\r\n .subscribe(() => {\r\n (this.patient['programViewType'] = this.programVisibility as number),\r\n this.patientStore.setPatient(this.patient);\r\n this.cdRef.markForCheck();\r\n this.loadPlans();\r\n })\r\n .add(() => {\r\n this.isWaiting = false;\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n\r\n onProgramModeChanged(mode: boolean): void {\r\n if (this.isWaiting) return;\r\n console.log('Here 4');\r\n this.isWaiting = true;\r\n this.cdRef.detectChanges();\r\n\r\n this.patientService\r\n .update({\r\n ...this.patient,\r\n [`${this._isFitness ? 'fitness' : 'meal'}ProgramMode`]: mode ? 1 : -1,\r\n })\r\n .subscribe(() => {\r\n this.patient[`${this._isFitness ? 'fitness' : 'meal'}ProgramMode`] = mode ? 1 : -1;\r\n this.patientStore.setPatient(this.patient);\r\n this.isProgramMode = mode;\r\n this.cdRef.markForCheck();\r\n this.loadPlans();\r\n })\r\n .add(() => {\r\n this.isWaiting = false;\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n\r\n onProgramStartDateChanged(date: Date): void {\r\n if (this.isWaiting) return;\r\n console.log('here 5');\r\n this.isWaiting = true;\r\n this.cdRef.detectChanges();\r\n\r\n //example....\r\n //let t = { ...this.patient, ['somevale']: 'test' };\r\n\r\n this.patientService\r\n .update({\r\n ...this.patient,\r\n [`${this._isFitness ? 'fitness' : 'meal'}ProgramStartDate`]: date,\r\n })\r\n .subscribe(() => {\r\n this.patient[`${this._isFitness ? 'fitness' : 'meal'}ProgramStartDate`] = date;\r\n this.patientStore.setPatient(this.patient);\r\n this.programStartDate = date;\r\n if (this.programStartDate < new Date(1970)) this.programStartDate = new Date();\r\n if (this.plans.length > 0) this.programEndDate = this.endDate(this.plans.length - 1);\r\n })\r\n .add(() => {\r\n this.isWaiting = false;\r\n this.cdRef.detectChanges();\r\n });\r\n }\r\n\r\n planTrackBy(_index: number, plan: BasePlan): number {\r\n return plan.id;\r\n }\r\n\r\n startDate(index: number): Date {\r\n const startDate = new Date(this.programStartDate);\r\n for (let i = 0; i < index; i++) startDate.setDate(startDate.getDate() + this.plans[i].duration * 7);\r\n return startDate;\r\n }\r\n endDate(index: number): Date {\r\n const endDate = this.startDate(index);\r\n endDate.setDate(endDate.getDate() + this.plans[index]?.duration * 7);\r\n return endDate;\r\n }\r\n\r\n onChanged(_plan: MealPlan | FitnessPlan, index: number): void {\r\n this.plans[index] = _plan;\r\n if (!this.isProgramTemplate) this.programEndDate = this.endDate(this.plans.length - 1);\r\n this.cdRef.detectChanges();\r\n this.reorderPlans();\r\n this.updateTemplate();\r\n }\r\n\r\n onActiveChanged(_plan: MealPlan | FitnessPlan): void {\r\n if (!this.isProgramMode) {\r\n if (_plan.active) {\r\n this.plans.filter((y) => y.id != _plan.id).forEach((y) => (y.active = false));\r\n }\r\n this.reorderPlans();\r\n }\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n\r\n onDuplicated(plan: MealPlan | FitnessPlan): void {\r\n this.plans.push({ ...plan, zOrder: this.plans.length + 1 });\r\n if (!this.isProgramTemplate) this.programEndDate = this.endDate(this.plans.length - 1);\r\n this.reorderPlans();\r\n this.cdRef.markForCheck();\r\n this.cdRef.detectChanges();\r\n this.updateTemplate();\r\n }\r\n\r\n onDeleted(planId: number, index: number): void {\r\n if (!this.isProgramTemplate) {\r\n this.plans = this.plans.filter((x) => x.id !== planId).map((plan, i) => ({ ...plan, zOrder: i + 1 }));\r\n } else {\r\n this.plans = this.plans.filter((x, i) => i !== index).map((plan, i) => ({ ...plan, zOrder: i + 1 }));\r\n }\r\n if (!this.isProgramTemplate) this.programEndDate = this.endDate(this.plans.length - 1);\r\n this.reorderPlans();\r\n this.cdRef.markForCheck();\r\n this.cdRef.detectChanges();\r\n this.updateTemplate();\r\n }\r\n\r\n onMoved(step: number, index: number): void {\r\n if (this.plans.length < 2) return;\r\n\r\n const currentIndex = (index + step + this.plans.length) % this.plans.length;\r\n if (currentIndex === index) return;\r\n\r\n moveItemInArray(this.plans, index, currentIndex);\r\n\r\n this.isWaiting = true;\r\n this.cdRef.detectChanges();\r\n\r\n // fix the index after moving\r\n this.plans = this.plans.map((plan, i) => ({ ...plan, zOrder: i + 1 }));\r\n if (!this.isProgramTemplate) {\r\n this._plansService\r\n .movePlan(this.patient.id, this.plans[currentIndex].id, index, currentIndex)\r\n .subscribe()\r\n .add(() => this.loadPlans());\r\n } else {\r\n this.updateTemplate();\r\n }\r\n }\r\n\r\n updateTemplate(): void {\r\n if (this.isFitness) this.programTemplateData.programPlans.fitnessPlans = this.plans as FitnessPlan[];\r\n else this.programTemplateData.programPlans.mealPlan = this.plans as MealPlan[];\r\n this.programTemplateService\r\n .UpdateTemplate(this.programTemplateData, false)\r\n .subscribe()\r\n .add(() => this.loadPlans());\r\n }\r\n\r\n onAddPlan(): void {\r\n if (this.isWaiting) return;\r\n if (this.isProgramTemplate) {\r\n if (!this.plans) this.plans = [];\r\n if(!this.isFitness) {\r\n this.plans.push({\r\n id: null,\r\n days: [\r\n {\r\n id: -1,\r\n meals: [\r\n {\r\n id: -1,\r\n dayID: -1,\r\n name: 'Meal Name',\r\n time: '8:00 AM',\r\n items: null,\r\n },\r\n ],\r\n name: 'Untitled Day',\r\n notes: '',\r\n dayOfWeek: [],\r\n createMeal: true,\r\n order: 1,\r\n },\r\n ],\r\n name: 'Untitled Meal Plan',\r\n patientID: null,\r\n createdDate: new Date().toISOString(),\r\n description: '',\r\n notes: '',\r\n zOrder: this.plans.length + 1,\r\n duration: DEFAULT_DURATION,\r\n active: false,\r\n } as MealPlan);\r\n }\r\n else {\r\n this.plans.push({\r\n id: null,\r\n days: [\r\n {\r\n id: -1,\r\n blocks: [\r\n {\r\n \"id\": -1,\r\n \"dayID\": -1,\r\n \"name\": \"Block Name\",\r\n \"blockType\": 0,\r\n \"repetitionCount\": 1,\r\n \"circuitRest\": 0,\r\n \"restEnd\": 0,\r\n \"items\": null,\r\n \"order\": 1\r\n }\r\n ],\r\n name: 'Untitled Day',\r\n notes: '',\r\n dayOfWeek: [],\r\n createMeal: true,\r\n order: 1,\r\n },\r\n ],\r\n name: 'Untitled Fitness Plan',\r\n patientID: null,\r\n createdDate: new Date().toISOString(),\r\n description: '',\r\n notes: '',\r\n zOrder: this.plans.length + 1,\r\n duration: DEFAULT_DURATION,\r\n active: false,\r\n } as FitnessPlan);\r\n }\r\n this.cdRef.markForCheck();\r\n this.cdRef.detectChanges();\r\n if (this.programTemplateData.programPlans) {\r\n this.updateTemplate();\r\n } else {\r\n this.programTemplateData.programPlans = {\r\n mealPlan: null,\r\n fitnessPlans: null,\r\n };\r\n this.updateTemplate();\r\n }\r\n return;\r\n }\r\n const isTutorial = this.joyrideService.isTourInProgress();\r\n this.joyrideService.closeTour();\r\n this.tutorialService.save(TutorialIDs.AddNewPlan).subscribe();\r\n this.router.navigate([\r\n `/pages/CalorieFriend/${this._isFitness ? 'NewFitnessPlan' : 'NewPlan'}/` +\r\n this.patient.id.toString() +\r\n (isTutorial ? '/FromTutorial' : ''),\r\n ]);\r\n }\r\n\r\n onPlanDropped(event: CdkDragDrop) {\r\n moveItemInArray(this.plans, event.previousIndex, event.currentIndex);\r\n\r\n this.isWaiting = true;\r\n this.cdRef.detectChanges();\r\n if (!this.isProgramTemplate) {\r\n this._plansService\r\n .movePlan(this.patient.id, this.plans[event.currentIndex].id, event.previousIndex, event.currentIndex)\r\n .subscribe()\r\n .add(() => this.loadPlans());\r\n } else {\r\n this.plans[event.currentIndex].zOrder = event.currentIndex + 1;\r\n this.plans[event.previousIndex].zOrder = event.previousIndex + 1;\r\n this.updateTemplate();\r\n }\r\n }\r\n\r\n cdkDelay() {\r\n if (this.isProgramMode) {\r\n return this.deviceService.isDesktop() && !this.nativeApp.isFromApp() ? 0 : 200;\r\n } else {\r\n return 1000 * 1000;\r\n }\r\n }\r\n\r\n disableCDK() {\r\n if (this.nativeApp.isFromApp()) return true;\r\n if (!this.deviceService.isDesktop()) return true;\r\n return false;\r\n }\r\n\r\n get shouldShowActivePlanWarning(): boolean {\r\n return this.plans?.length > 0 && !this.plans.filter((y) => y.active)?.length;\r\n }\r\n}\r\n","\r\n \r\n Enable Macro Goals
Beta
\r\n \r\n Goals\r\n \r\n
\r\n \r\n Automatically calculate macro goals based on active meal plan (update daily).\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n  % ({{ MealProtein }} g.)\r\n
\r\n
\r\n \r\n \r\n  % ({{ MealCarbs }} g.)\r\n
\r\n
\r\n \r\n \r\n  % ({{ MealFats }} g.)\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MealPlansService } from 'app/@core/backend/common/services/CalorieFriend/plan.service';\r\nimport { MealPlan, MealPlanData } from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport { PatientStore } from 'app/@core/stores/patient.store';\r\nimport { of, Observable, Subject, forkJoin } from 'rxjs';\r\nimport { share, switchMap, takeUntil, tap } from 'rxjs/operators';\r\nimport { CalculateMetrics, CopyMealItem } from 'app/BuildOps';\r\nimport { MealItem } from 'app/@core/interfaces/common/CalorieFriend/meal';\r\nimport { FoodService } from 'app/@core/backend/common/services/CalorieFriend/food.service';\r\nimport { FoodData, FoodItemModel } from 'app/@core/interfaces/common/CalorieFriend/food';\r\nimport { MacroGoals, Patient, PatientData } from 'app/@core/interfaces/common/CalorieFriend/patients';\r\nimport { NbToastrService } from '@nebular/theme';\r\nimport { MealPlanDay } from 'app/@core/interfaces/common/CalorieFriend/plan-day';\r\nimport { MacroGoalsData } from 'app/@core/interfaces/common/CalorieFriend/macro-goals';\r\n@Component({\r\n selector: 'app-macro-goals',\r\n templateUrl: './macro-goals.component.html',\r\n styleUrls: ['./macro-goals.component.scss'],\r\n})\r\nexport class MacroGoalsComponent implements OnInit, OnDestroy {\r\n readonly ERROR_NO_ACTIVE_PLAN = 'Sorry, no active meal plans found.';\r\n\r\n MealCals = 0;\r\n MealProtein = 0;\r\n MealCarbs = 0;\r\n MealNetCarbs = 0;\r\n MealFats = 0;\r\n\r\n loading = false;\r\n isDirty = false;\r\n\r\n patient: Patient;\r\n\r\n // currentMealPlanDay: Observable;\r\n autoMacroGoals: MacroGoals;\r\n\r\n get isMacros100Per(): boolean {\r\n const total = Math.floor(this.patient.protein + this.patient.fats + this.patient.carbs);\r\n return total >= 99 && total <= 101;\r\n }\r\n\r\n constructor(\r\n private macroGoalsService: MacroGoalsData,\r\n private patientStore: PatientStore,\r\n private foodService: FoodData,\r\n private patientService: PatientData,\r\n private toastrService: NbToastrService\r\n ) {}\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n ngOnInit() {\r\n this.patientStore.onPatientChanged().subscribe({\r\n next: (patient) => {\r\n this.patient = { ...patient };\r\n this.isDirty = false;\r\n this.refresh();\r\n },\r\n });\r\n const autoMacroGoals$ = this.patientStore.onPatientChanged().pipe(\r\n switchMap((patient) => {\r\n if (patient?.id) return this.macroGoalsService.getAutoMacroGoals(patient.id);\r\n return of(null);\r\n }),\r\n takeUntil(this.unsubscribe$),\r\n share()\r\n );\r\n\r\n autoMacroGoals$.subscribe({\r\n next: (res) => {\r\n this.autoMacroGoals = res;\r\n \r\n if (this.patient?.autoFillFromPlan) {\r\n if (this.autoMacroGoals) {\r\n this.onAutoFillChange(true);\r\n } else {\r\n this.patient.autoFillFromPlan = false;\r\n //this.onAutoFillChange(false);\r\n }\r\n }\r\n this.refresh();\r\n },\r\n });\r\n /* \r\n this.currentMealPlanDay = this.patientStore.onPatientChanged().pipe(\r\n switchMap((patient) => {\r\n if (patient?.id) return this.mealPlanService.getCurrentPlanDay(patient.id);\r\n return of(null);\r\n }),\r\n share()\r\n );\r\n\r\n this.currentMealPlanDay.subscribe({\r\n next: (mealPlanDay) => {\r\n this.PrepareMetricsTotalDayMetrics(mealPlanDay);\r\n },\r\n }); */\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe$.complete();\r\n }\r\n /**\r\n * Method to update Metrics graph data.\r\n \r\n PrepareMetricsTotalDayMetrics(mealPlanDay: MealPlanDay) {\r\n this.MealCals = 0;\r\n this.MealProtein = 0;\r\n this.MealCarbs = 0;\r\n this.MealNetCarbs = 0;\r\n this.MealFats = 0;\r\n\r\n const day = mealPlanDay;\r\n if (day == null || day == undefined) return;\r\n if (day.meals == null || day.meals == undefined || day.meals.length <= 0) return;\r\n\r\n const allItems$: Observable[] = [],\r\n allItems: MealItem[] = [];\r\n for (const meal of day.meals) {\r\n if (meal.items) {\r\n for (const item of meal.items) {\r\n allItems$.push(\r\n this.foodService.getFoodDefintion(\r\n item.foodId.toString(),\r\n (item.selectedServingSizeIndex || 0) + 1,\r\n item.isCustomFood\r\n )\r\n );\r\n allItems.push(item);\r\n }\r\n }\r\n }\r\n\r\n forkJoin(allItems$).subscribe({\r\n next: (result) => {\r\n for (let i in result) {\r\n const item = allItems[i];\r\n item.Current = result[i];\r\n\r\n const itemMetrics = CalculateMetrics(item);\r\n\r\n this.MealCals += itemMetrics.MealCals;\r\n this.MealProtein += itemMetrics.MealProtein;\r\n this.MealCarbs += itemMetrics.MealCarbs;\r\n this.MealNetCarbs += itemMetrics.MealNetCarbs;\r\n this.MealFats += itemMetrics.MealFats;\r\n }\r\n\r\n \r\n this.refresh(mealPlanDay);\r\n },\r\n });\r\n }\r\n*/\r\n onAutoFillChange(checked: boolean) {\r\n if (this.patient.autoFillFromPlan != checked) {\r\n this.isDirty = true;\r\n }\r\n this.patient.autoFillFromPlan = checked;\r\n if (checked && this.autoMacroGoals) {\r\n this.patient = {\r\n ...this.patient,\r\n ...this.autoMacroGoals\r\n }\r\n }\r\n \r\n this.refresh();\r\n }\r\n\r\n onEnableMacroChange(checked: boolean) {\r\n let patientNew: Patient = { ...this.patientStore.patient(), enableMacroGoals: checked };\r\n console.log(checked);\r\n if (this.patientStore.patient().enableMacroGoals != checked) this.save(patientNew);\r\n }\r\n\r\n onSave() {\r\n this.save(this.patient);\r\n }\r\n\r\n onDirty() {\r\n this.refresh();\r\n this.isDirty = true;\r\n }\r\n\r\n private save(patient: Patient) {\r\n this.loading = true;\r\n this.patient.calories = Math.round(this.patient.calories); // calories should be an integer\r\n this.patientService.update(patient).subscribe({\r\n next: (patient) => {\r\n this.loading = false;\r\n this.patientStore.setPatient(patient);\r\n this.toastrService.success('Macro goals saved successfully', 'Success');\r\n },\r\n error: (err) => {\r\n this.loading = false;\r\n this.toastrService.danger('Error saving the macro goals', 'Error');\r\n },\r\n });\r\n }\r\n\r\n private refresh() {\r\n if (!this.patient) return;\r\n\r\n const { calories = 0, protein = 0, carbs = 0, fats = 0 } = this.patient;\r\n\r\n this.MealCals = calories;\r\n this.MealProtein = Math.round(this.MealCals * protein / 100 / 4);\r\n this.MealCarbs = this.MealNetCarbs = Math.round((this.MealCals * carbs) / 100 / 4);\r\n this.MealFats = Math.round((this.MealCals * fats) / 100 / 9);\r\n\r\n }\r\n}\r\n","\r\n\r\n Back to Clients\r\n\r\n\r\n\r\n \r\n
\r\n {{ patientFullName }}
Package: {{patientSubscriptionItem?.itemDescription}}
\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n Program\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Workout Plans\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Meal Plans\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Macro Goals\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Goals\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Progress\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n General Info\r\n \r\n \r\n \r\n \r\n \r\n
\r\n","import {\r\n Component,\r\n ViewChild,\r\n HostListener,\r\n OnInit,\r\n AfterViewInit,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { MatTabChangeEvent } from '@angular/material/tabs';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { JoyrideService } from 'ngx-joyride';\r\n\r\nimport { SetTabHeaderBackgroundColour } from '../CustomUIOps';\r\n\r\nimport { UserStore } from 'app/@core/stores/user.store';\r\nimport { User } from 'app/@core/interfaces/common/users';\r\nimport {\r\n Patient,\r\n PatientData,\r\n} from 'app/@core/interfaces/common/CalorieFriend/patients';\r\nimport { TutorialIDs } from 'app/@core/interfaces/common/CalorieFriend/tutorial';\r\nimport { PatientStore } from 'app/@core/stores/patient.store';\r\nimport { IComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\n\r\nimport { GoalsListViewComponent } from './GoalsListView/goals-list-view.component';\r\nimport { PatientGeneralInfoComponent } from './patient-general-info/patient-general-info.component';\r\nimport { Observable } from 'rxjs';\r\nimport { ProgramOverviewComponent } from './program-overview/program-overview.component';\r\nimport { NbToastrService } from '@nebular/theme';\r\nimport { FitnessPlanData, MealPlanData, ProgramTemplateData } from 'app/@core/interfaces/common/CalorieFriend/plan';\r\n\r\n@Component({\r\n selector: 'app-patient-sheet-view',\r\n templateUrl: './patient-sheet-view.component.html',\r\n styleUrls: [\r\n './patient-sheet-view.component.scss',\r\n '../global.component.scss',\r\n ],\r\n})\r\nexport class PatientSheetViewComponent implements OnInit, AfterViewInit {\r\n\r\n @ViewChild('tabGroup') tabGroup?;\r\n @ViewChild('generalInfo') generalInfoView: PatientGeneralInfoComponent = null;\r\n @ViewChild('goals') goalsView: GoalsListViewComponent;\r\n @ViewChild('programOverviewComponent') programOverviewComponent: ProgramOverviewComponent;\r\n\r\n patient: Patient;\r\n patientId: number;\r\n patientFullName: string;\r\n\r\n private readonly unsubscribe$: Subject = new Subject();\r\n public isTutorial: boolean = false;\r\n public patientSubscriptionItem: any;\r\n public loading: boolean = false;\r\n private planType: string;\r\n public currentIndex: number = 0;\r\n\r\n constructor(\r\n public joyrideService: JoyrideService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private userStore: UserStore,\r\n private patientsService: PatientData,\r\n private fitnessPlansService: FitnessPlanData,\r\n private toastrService: NbToastrService,\r\n private patientStore: PatientStore,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.patientId = +this.route.snapshot.paramMap.get('PatientId');\r\n this.isTutorial = this.route.snapshot.url[2]?.toString().toUpperCase() === 'FROMTUTORIAL';\r\n this.planType = this.route.snapshot.queryParamMap.get('planType');\r\n\r\n this.loadPatientData();\r\n\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.isTutorial) {\r\n this.tabGroup.selectedIndex = 1;\r\n }\r\n\r\n // set the background color of the tab group\r\n SetTabHeaderBackgroundColour(this.tabGroup.nativeElement);\r\n if (this.planType?.toUpperCase() === 'WORKOUT')\r\n this.tabGroup.selectedIndex = 1;\r\n else if (this.planType?.toUpperCase() === 'MEALPLAN')\r\n this.tabGroup.selectedIndex = 2;\r\n else if (this.planType?.toUpperCase() === 'MICROGOALS')\r\n this.tabGroup.selectedIndex = 3;\r\n else if (this.planType?.toUpperCase() === 'GOALS')\r\n this.tabGroup.selectedIndex = 4;\r\n else if (this.planType?.toUpperCase() === 'PROGRESS')\r\n this.tabGroup.selectedIndex = 5;\r\n else if (this.planType?.toUpperCase() === 'GENERALINFO')\r\n this.tabGroup.selectedIndex = 6;\r\n else if (this.planType?.toUpperCase() === 'PROGRAM')\r\n this.tabGroup.selectedIndex = 0;\r\n\r\n this.userStore\r\n .onUserStateChange()\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((u => this.startTutorial(u, this.isTutorial)));\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.patientStore.resetPatient();\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n private loadPatientData(): void {\r\n if (!this.patientId) return;\r\n\r\n this.patientsService\r\n .get(this.patientId, null)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((patient) => {\r\n this.patient = patient;\r\n this.patientStore.setPatient(patient);\r\n this.patientFullName = patient.name;\r\n });\r\n this.patientsService.getPatientSubscriptionItems(this.patientId).subscribe((items) => {\r\n this.patientSubscriptionItem = items;\r\n });\r\n }\r\n\r\n @HostListener('window:beforeunload', ['$event'])\r\n unloadNotification($event: any) {\r\n if (!this.canDeactivate()) {\r\n $event.returnValue =\r\n 'This message is displayed to the user in IE and Edge when they navigate without using Angular routing (type another URL/close the browser/etc)';\r\n }\r\n }\r\n\r\n canDeactivate(): boolean {\r\n return true;\r\n }\r\n\r\n\r\n private startTutorial(user: User, isFromTutorial:boolean): void {\r\n if (!user) return;\r\n\r\n const tutorialStates = JSON.parse(user.tutorialStates ?? '{}');\r\n\r\n // check the tutorial step 1 - demo patient\r\n if (!tutorialStates[TutorialIDs.AddNewPlan] && isFromTutorial) {\r\n setTimeout(() => {\r\n this.joyrideService\r\n .startTour({\r\n steps: ['', '', '', TutorialIDs.AddNewPlan, '', '', ''],\r\n showPrevButton: false,\r\n showCounter: true,\r\n })\r\n .subscribe();\r\n }, 1000);\r\n }\r\n }\r\n\r\n onSend() {\r\n this.loading = true;\r\n this.fitnessPlansService\r\n .submitPatientNotification(this.patient.id, -1, true)\r\n .pipe(\r\n finalize(() => this.loading = false)\r\n )\r\n .subscribe(() => {\r\n\r\n let message = \"App Invite sent via Email.\"\r\n if (this.patient.phoneNumber.length > 0) {\r\n message = \"App Invite sent via Email and SMS.\"\r\n }\r\n this.toastrService.success('', message);\r\n })\r\n .add(() => {\r\n\r\n });\r\n }\r\n\r\n onChangeTab($event: MatTabChangeEvent): void {\r\n this.currentIndex = $event.index;\r\n let planTypeValue = '';\r\n\r\n switch (this.currentIndex) {\r\n case 1:\r\n planTypeValue = 'workout';\r\n break;\r\n case 2:\r\n planTypeValue = 'mealplan';\r\n break;\r\n case 3:\r\n planTypeValue = 'microgoals';\r\n break;\r\n case 4:\r\n planTypeValue = 'goals';\r\n break;\r\n case 5:\r\n planTypeValue = 'progress';\r\n break;\r\n case 6:\r\n planTypeValue = 'generalinfo';\r\n break;\r\n case 0:\r\n default:\r\n planTypeValue = 'program';\r\n break;\r\n }\r\n\r\n // Update the URL with the new planTypeValue as a query parameter\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { planType: planTypeValue },\r\n queryParamsHandling: 'merge', // Merge with existing query params\r\n replaceUrl: true // Replace the current URL without adding to the history stack\r\n });\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-meal-viewer',\r\n templateUrl: './meal-viewer.component.html',\r\n})\r\nexport class MealViewerComponent {}\r\n","\r\n","\r\n\r\n \r\n
Subscription Plan
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n
Manage Payment Card
\r\n
\r\n\r\n \r\n\r\n
\r\n Your subscription is currently pending payment information. Please update payment information as soon as possible to avoid losing any privileges.\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
{{plan.planName}}
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n \r\n Up to {{plan.patientsCount}}\r\n clients\r\n Unlimited clients\r\n
\r\n\r\n
\r\n Archive/Unarchive Clients\r\n
\r\n\r\n\r\n
\r\n Coach and Client Apps\r\n
\r\n\r\n
\r\n Automated Client CheckIn\r\n
\r\n\r\n
\r\n Curated Meal Plans Templates\r\n
\r\n\r\n
\r\n Customize Branding and upload your Logo\r\n
\r\n\r\n
\r\n\r\n
$ {{plan.price}} USD/month
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n Current\r\n Plan\r\n Selected\r\n Plan\r\n (Pending)\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n \r\n
Subscription Plan
\r\n
\r\n\r\n \r\n\r\n Sorry, you cannot perform this action on the mobile app. Please contact us for more details.\r\n\r\n \r\n
\r\n","/**\r\n * Updated by Milos\r\n */\r\n\r\nimport { Component, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { GoogleAnalyticsService } from 'google-analytics.service';\r\n\r\nimport { User, UserData } from 'app/@core/interfaces/common/users';\r\nimport { PaymentApi } from 'app/@core/backend/common/api/CalorieFriend/payment.api';\r\nimport {\r\n SubscriptionPlan,\r\n SubscriptionPlanData,\r\n} from 'app/@core/interfaces/common/CalorieFriend/subscriptionPlan';\r\nimport { FacebookPixelService } from 'app/@theme/services/FacebookPixelService';\r\nimport { UserStore } from 'app/@core/stores/user.store';\r\nimport { NativeAppService } from 'app/@core/backend/common/services/native-app.service';\r\nimport { NbDialogService } from '@nebular/theme';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\n\r\ndeclare var Stripe: any;\r\n\r\n@Component({\r\n selector: 'app-subscription-plan',\r\n templateUrl: './subscription-plan.component.html',\r\n styleUrls: ['./subscription-plan.component.scss'],\r\n})\r\nexport class SubscriptionPlanComponent implements OnDestroy {\r\n waiting: boolean = true;\r\n currentUser: User;\r\n subscriptionPlans: SubscriptionPlan[] = [];\r\n\r\n private readonly unsubscribe$ = new Subject();\r\n private allSubscriptionPlans: SubscriptionPlan[] = [];\r\n private stripeKey: string;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private usersService: UserData,\r\n private userStore: UserStore,\r\n private paymentApi: PaymentApi,\r\n private facebookPixelService: FacebookPixelService,\r\n private googleAnalyticsService: GoogleAnalyticsService,\r\n subscriptionService: SubscriptionPlanData,\r\n public nativeAppService: NativeAppService,\r\n public dialogService: NbDialogService\r\n ) {\r\n // get stripe key\r\n paymentApi\r\n .getStripeKey()\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((res) => (this.stripeKey = res.key));\r\n\r\n // get all/selectable subscription plans\r\n subscriptionService\r\n .list()\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((plans) => {\r\n this.allSubscriptionPlans = plans;\r\n this.subscriptionPlans = plans.filter((x) => x.hasPlanChoices);\r\n\r\n if (userStore.settings(true)) this.checkSelectedPlan();\r\n else\r\n userStore\r\n .onUserStateChange()\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(() => this.checkSelectedPlan());\r\n });\r\n\r\n this.checkPlanSucceed();\r\n }\r\n\r\n isFromApp() {\r\n return this.nativeAppService.isFromApp();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n private checkPlanSucceed(): void {\r\n const success = this.route.snapshot.queryParamMap.get('success');\r\n if (success === 'true') {\r\n const package_name =\r\n this.route.snapshot.queryParamMap.get('package_name');\r\n const currency = this.route.snapshot.queryParamMap.get('currency');\r\n const price = this.route.snapshot.queryParamMap.get('price');\r\n\r\n // fb pixel\r\n this.facebookPixelService.load(FacebookPixelService.PurchaseEvent, {\r\n content_name: package_name,\r\n currency: currency,\r\n value: price,\r\n });\r\n\r\n // GA\r\n const gaLabel = `content_name=${package_name}¤cy=${currency}&value=${price}`;\r\n this.googleAnalyticsService.eventEmitter(\r\n FacebookPixelService.PurchaseEvent,\r\n 'Subscription',\r\n 'Pay',\r\n gaLabel,\r\n );\r\n }\r\n }\r\n\r\n private checkSelectedPlan(): void {\r\n const user = this.userStore.getUser();\r\n if (!user) return;\r\n this.currentUser = user;\r\n\r\n const choicablePlan = this.subscriptionPlans.find(\r\n (x) => x.planCode === user.selectedPlan,\r\n );\r\n if (!choicablePlan) {\r\n const planToPush = this.allSubscriptionPlans.find(\r\n (x) => x.planCode === this.currentUser.selectedPlan,\r\n );\r\n if (planToPush) this.subscriptionPlans = [planToPush].concat(this.subscriptionPlans);\r\n }\r\n\r\n this.waiting = false;\r\n }\r\n\r\n onClickManageInvalid(e: Event, planCode: string) {\r\n const plan = this.subscriptionPlans.find((a) => a.planCode === planCode);\r\n\r\n this.onSelect(e, plan);\r\n }\r\n\r\n onSelect(e: Event, plan: SubscriptionPlan) {\r\n e.preventDefault();\r\n\r\n this.usersService.getCurrentUser().subscribe((user) => {\r\n this.waiting = true;\r\n\r\n if (!plan.priceId || plan.planCode === 'free') {\r\n // cancel\r\n\r\n //MUST CHECK PATIUENT COUNT AND ASK TO ACTIVE HERE. \r\n\r\n\r\n this.waiting = false;\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: {\r\n Message:\r\n 'Reverting to free plan will cancel your subscription and some clients will lose access to their app. Are you sure?',\r\n },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result) {\r\n this.paymentApi.cancelSubscription().subscribe(\r\n (data) => {\r\n this.refreshCurrentUser();\r\n },\r\n (error) => {\r\n this.refreshCurrentUser();\r\n },\r\n );\r\n }\r\n });\r\n\r\n\r\n \r\n } else {\r\n if (\r\n this.currentUser.selectedPlan === 'free' ||\r\n !this.currentUser.planSubscription\r\n ) {\r\n // new one\r\n const stripe = Stripe(this.stripeKey);\r\n\r\n // You'll have to define PRICE_ID as a price ID before this code block\r\n this.createCheckoutSession(plan.priceId).then(function (data) {\r\n // Call Stripe.js method to redirect to the new Checkout page\r\n stripe\r\n .redirectToCheckout({\r\n sessionId: data.sessionId,\r\n })\r\n .then((result) => {\r\n console.log(result);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n })\r\n .finally(() => {\r\n this.waiting = false;\r\n });\r\n });\r\n } else {\r\n // upgrade\r\n this.paymentApi.updateSubscription(plan.priceId).subscribe(\r\n (data) => {\r\n this.refreshCurrentUser();\r\n },\r\n (error) => {\r\n console.log(error);\r\n this.waiting = false;\r\n },\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n private refreshCurrentUser() {\r\n setTimeout(() => {\r\n this.usersService.getCurrentUser().subscribe((user) => {\r\n this.currentUser = user;\r\n this.waiting = false;\r\n this.userStore.setUser(user);\r\n });\r\n }, 100);\r\n }\r\n\r\n private createCheckoutSession(priceId): Promise {\r\n return this.paymentApi.createCheckoutSession(priceId).toPromise();\r\n }\r\n\r\n private updatePaymentInformation() {\r\n\r\n\r\n if (this.currentUser.selectedPlan === 'ltd199-trial') {\r\n window.location.href = 'https://go.trainerfriend.com/ltd';\r\n return;\r\n }\r\n\r\n\r\n const stripe = Stripe(this.stripeKey);\r\n\r\n // You'll have to define PRICE_ID as a price ID before this code block\r\n this.createCheckoutSession('').then(function (data) {\r\n // Call Stripe.js method to redirect to the new Checkout page\r\n stripe\r\n .redirectToCheckout({\r\n sessionId: data.sessionId,\r\n })\r\n .then((result) => {\r\n console.log(result);\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n })\r\n .finally(() => {\r\n this.waiting = false;\r\n });\r\n });\r\n }\r\n\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n\r\n Hurray! You created your first plan! At this point, feel free to explore the plan builder, it’s very easy to use.\r\n Simply hit the “Save Plan” button to save any changes you are making!\r\n\r\n\r\n\r\n\r\n \r\n\r\n
\r\n {{PlanLabel}} \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n To save time, let’s load a template from the template database.\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
    \r\n
  • Plan Name
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n
    \r\n
  • \r\n Description\r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n
    \r\n
  • \r\n {{PlanNotesLabel}}\r\n
  • \r\n
  • \r\n \r\n \r\n \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
{{getDaysOfWeeksString(day)}}
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ViewChild,\r\n ElementRef,\r\n AfterContentChecked,\r\n Optional,\r\n ChangeDetectorRef,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { NbDialogRef, NbDialogService, NbToastrService } from '@nebular/theme';\r\nimport { JoyrideService } from 'ngx-joyride';\r\n\r\nimport { FitnessPlanData, ProgramTemplateData } from '../../../../@core/interfaces/common/CalorieFriend/plan';\r\nimport { PatientData } from '../../../../@core/interfaces/common/CalorieFriend/patients';\r\nimport { UsersService } from '../../../../@core/backend/common/services/users.service';\r\nimport { User } from 'app/@core/interfaces/common/users';\r\nimport {\r\n TutorialData,\r\n TutorialIDs,\r\n} from 'app/@core/interfaces/common/CalorieFriend/tutorial';\r\nimport { FitnessPlanDefComponentBase } from './fitness-plan-def-base.component';\r\n\r\n/**\r\n * Component to edit plan data on the 'Edit Template' page.\r\n * Inherits from the PlanDefComponentBase component.\r\n */\r\n@Component({\r\n selector: 'app-fitness-plan-def',\r\n templateUrl: './fitness-edit-plan-def.component.html',\r\n styleUrls: [\r\n './fitness-plan-def.component.scss',\r\n '../../global.component.scss',\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class FitnessPlanDefComponent\r\n extends FitnessPlanDefComponentBase\r\n implements OnInit {\r\n constructor(\r\n @Optional() protected PlanDefDialogRef: NbDialogRef,\r\n private PlanDefRoute: ActivatedRoute,\r\n private PlanDefToasterService: NbToastrService,\r\n private PlanDefLocation: Location,\r\n PlanDefFormBuilder: FormBuilder,\r\n PlanDefDialogService: NbDialogService,\r\n PlanDefPlanService: FitnessPlanData,\r\n PlanDefUsersService: UsersService,\r\n PlanDefRouter: Router,\r\n PlandDefPatientService: PatientData,\r\n programTempalteService: ProgramTemplateData,\r\n ) {\r\n super(\r\n PlanDefRoute,\r\n PlanDefFormBuilder,\r\n PlanDefDialogService,\r\n PlanDefPlanService,\r\n PlanDefToasterService,\r\n PlanDefUsersService,\r\n PlanDefRouter,\r\n PlandDefPatientService,\r\n programTempalteService\r\n );\r\n\r\n this.ref = PlanDefDialogRef;\r\n\r\n const templateData = this.PlanDefRoute.snapshot.data.templateData;\r\n\r\n if (templateData && templateData.template) {\r\n this.EditingTemplate = true;\r\n this.ThePlan = templateData.template.thePlan;\r\n this.TheTemplateID = templateData.template.id;\r\n this.TheTemplateIsPublic = templateData.template.isPublic;\r\n this.templateUserID = templateData.template.userID;\r\n this.ThePlan.name = templateData.template.name;\r\n this.ThePlan.description = templateData.template.description;\r\n this.TheTemplateName = templateData.template.name;\r\n this.TheTemplateDescription = templateData.template.description;\r\n }\r\n }\r\n\r\n\r\n onSavePlan(): void {\r\n super.SavePlan();\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n\r\n this.PatientShortHandName = \"Templates\"\r\n if (\r\n this.ThePlan != null &&\r\n (this.ThePlan.days == null || this.ThePlan.days.length === 0)\r\n ) {\r\n this.NewDay();\r\n }\r\n }\r\n\r\n ProblemSavingTemplate = 'Problem updating template';\r\n TemplateUpdated = 'Template Updated';\r\n\r\n /**\r\n * Event handler of Success event of Updating a template.\r\n */\r\n handleSuccessResponse() {\r\n this.PlanDefToasterService.success('', `${this.TemplateUpdated}!`);\r\n }\r\n\r\n /**\r\n * Event handler of Fail event of Updating a template.\r\n */\r\n handleWrongResponse(data: any) {\r\n this.PlanDefToasterService.danger('', this.ProblemSavingTemplate);\r\n }\r\n\r\n /**\r\n * Method to close the container dialog if it is opened in pop up dialog\r\n * or navigates back to the PatientSheetView page\r\n */\r\n Back() {\r\n this.PlanDefLocation.back();\r\n }\r\n}\r\n\r\n/**\r\n * Component for the Edit Plan page.\r\n * Inherits from the PlanDefComponentBase component.\r\n */\r\n@Component({\r\n selector: 'app-fitness-plan-edit',\r\n templateUrl: './fitness-edit-plan-def.component.html',\r\n styleUrls: [\r\n './fitness-plan-def.component.scss',\r\n '../../global.component.scss',\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class EditFitnessPlanDefComponent\r\n extends FitnessPlanDefComponentBase\r\n implements OnInit, AfterContentChecked {\r\n @ViewChild('EditView', { read: ElementRef }) private EditView: any = null;\r\n\r\n constructor(\r\n private PlanDefRoute: ActivatedRoute,\r\n protected PlanDefDialogRef: NbDialogService,\r\n private PlanDefPlanService: FitnessPlanData,\r\n private PlanDefCdRef: ChangeDetectorRef,\r\n PlanDefFormBuilder: FormBuilder,\r\n PlanDefDialogService: NbDialogService,\r\n PlanDefToasterService: NbToastrService,\r\n PlanDefUsersService: UsersService,\r\n PlanDefRouter: Router,\r\n PlandDefPatientService: PatientData,\r\n programTemplateService: ProgramTemplateData,\r\n ) {\r\n super(\r\n PlanDefRoute,\r\n PlanDefFormBuilder,\r\n PlanDefDialogService,\r\n PlanDefPlanService,\r\n PlanDefToasterService,\r\n PlanDefUsersService,\r\n PlanDefRouter,\r\n PlandDefPatientService,\r\n programTemplateService\r\n );\r\n\r\n this.ref = PlanDefDialogRef;\r\n }\r\n\r\n ngAfterContentChecked() {\r\n this.PlanDefCdRef.detectChanges();\r\n }\r\n\r\n ngOnInit(): void {\r\n // get the plan by the id from the query\r\n const id = this.PlanDefRoute.snapshot.paramMap.get('PlanId');\r\n this.PlanDefPlanService.get(+id).subscribe((data) => {\r\n this.ThePlan = data;\r\n //this.PlanID = data.id;\r\n this.PatientID = data.patientID;\r\n\r\n super.ngOnInit();\r\n });\r\n }\r\n\r\n onSavePlan() {\r\n this.SavePlan();\r\n }\r\n}\r\n\r\n/**\r\n * Component for the Add Plan page.\r\n */\r\n@Component({\r\n selector: 'app-fitness-template-def',\r\n templateUrl: './fitness-edit-plan-def.component.html',\r\n styleUrls: [\r\n './fitness-plan-def.component.scss',\r\n '../../global.component.scss',\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AddFitnessPlanDefComponent\r\n extends FitnessPlanDefComponentBase\r\n implements OnInit {\r\n constructor(\r\n private PlanDefRoute: ActivatedRoute,\r\n protected PlanDefDialogRef: NbDialogService,\r\n public joyrideService: JoyrideService,\r\n private tutorialService: TutorialData,\r\n PlanDefFormBuilder: FormBuilder,\r\n PlanDefDialogService: NbDialogService,\r\n PlanDefPlanService: FitnessPlanData,\r\n PlanDefToasterService: NbToastrService,\r\n PlanDefUsersService: UsersService,\r\n PlanDefRouter: Router,\r\n PlandDefPatientService: PatientData,\r\n programTemplateService: ProgramTemplateData,\r\n ) {\r\n super(\r\n PlanDefRoute,\r\n PlanDefFormBuilder,\r\n PlanDefDialogService,\r\n PlanDefPlanService,\r\n PlanDefToasterService,\r\n PlanDefUsersService,\r\n PlanDefRouter,\r\n PlandDefPatientService,\r\n programTemplateService\r\n );\r\n\r\n this.ref = PlanDefDialogRef;\r\n this.ThePlan = null;\r\n }\r\n\r\n currentUser: User = null;\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.NewDay();\r\n\r\n this.currentUserSubject.subscribe((user) => {\r\n if (user == null) return;\r\n\r\n this.currentUser = user;\r\n\r\n const isFromTutorial =\r\n this.PlanDefRoute.snapshot.url.length > 2\r\n ? this.PlanDefRoute.snapshot.url[2].toString().toLowerCase() ===\r\n 'fromtutorial'\r\n : false;\r\n\r\n const tutorialStates = JSON.parse(user.tutorialStates ?? '{}');\r\n const steps = [];\r\n\r\n // check the tutorial step 5 - New Plan\r\n if (!tutorialStates[TutorialIDs.LoadFromTemplate] && isFromTutorial) {\r\n this.inTutorial = true;\r\n\r\n // for (let i = 0; i < 4; i++) steps.push('');\r\n\r\n steps.push(TutorialIDs.LoadFromTemplate);\r\n\r\n // fill the fake steps to make step numbers correct\r\n // for (let i = 0; i < 2; i++) steps.push('');\r\n\r\n setTimeout(() => {\r\n this.joyrideService\r\n .startTour(\r\n {\r\n steps: steps,\r\n showPrevButton: false,\r\n showCounter: true,\r\n } // Your steps order\r\n )\r\n .subscribe(\r\n (step) => {\r\n /*Do something*/\r\n this.inTutorial = step.name === TutorialIDs.LoadFromTemplate;\r\n },\r\n (error) => {\r\n /*handle error*/\r\n },\r\n () => {\r\n /*Tour is finished here, do something*/\r\n }\r\n );\r\n }, 1000);\r\n }\r\n });\r\n }\r\n\r\n onSavePlan() {\r\n this.joyrideService.closeTour();\r\n\r\n this.SavePlan();\r\n\r\n const isFromTutorial =\r\n this.PlanDefRoute.snapshot.url.length > 2\r\n ? this.PlanDefRoute.snapshot.url[2].toString().toLowerCase() ===\r\n 'fromtutorial'\r\n : false;\r\n\r\n if (isFromTutorial) {\r\n this.tutorialService.save(TutorialIDs.FinalStep).subscribe(() => { });\r\n }\r\n\r\n this.inFinalTutorial = false;\r\n }\r\n\r\n SelectTemplate() {\r\n this.inTutorial = false;\r\n\r\n const isFromTutorial =\r\n this.PlanDefRoute.snapshot.url.length > 2\r\n ? this.PlanDefRoute.snapshot.url[2].toString().toLowerCase() ===\r\n 'fromtutorial'\r\n : false;\r\n\r\n super.SelectTemplate(isFromTutorial, this.currentUser);\r\n\r\n // save tutorial position\r\n this.tutorialService.save(TutorialIDs.LoadFromTemplate).subscribe(() => { });\r\n\r\n this.joyrideService.closeTour();\r\n\r\n this.selectTemplateSubject.subscribe((plan) => {\r\n if (plan) {\r\n const tutorialStates = JSON.parse(\r\n this.currentUser.tutorialStates ?? '{}'\r\n );\r\n\r\n // final tutorial step\r\n if (!tutorialStates[TutorialIDs.FinalStep] && isFromTutorial) {\r\n const steps = [TutorialIDs.FinalStep];\r\n\r\n this.inFinalTutorial = true;\r\n\r\n setTimeout(() => {\r\n this.joyrideService\r\n .startTour(\r\n {\r\n steps: steps,\r\n showPrevButton: false,\r\n showCounter: false,\r\n } // Your steps order\r\n )\r\n .subscribe(\r\n (step) => {\r\n /*Do something*/\r\n this.inFinalTutorial = step.name === TutorialIDs.FinalStep;\r\n },\r\n (error) => {\r\n /*handle error*/\r\n },\r\n () => {\r\n /*Tour is finished here, do something*/\r\n }\r\n );\r\n }, 1000);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormBuilder,\r\n FormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { NbDialogRef, NbDialogService, NbToastrService } from '@nebular/theme';\r\n\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport {\r\n DEFAULT_DURATION,\r\n FitnessPlan,\r\n FitnessPlanData,\r\n ProgramTemplateData,\r\n TemplatePlan,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport { ProgramPlans, ProgramTemplate } from 'app/@core/interfaces/common/CalorieFriend/program-template';\r\nimport { Utility } from 'app/@core/utils/utility';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'app-fitness-plan-template-create',\r\n templateUrl: './program-template-create.component.html',\r\n styleUrls: ['./program-template-create.component.scss'],\r\n})\r\nexport class ProgramTemplateCreateComponent\r\n extends BaseComponentCanDeactivate\r\n implements OnInit\r\n{\r\n planGenerateForm: FormGroup;\r\n templatePlan: ProgramPlans = null;\r\n isPublic: boolean = false;\r\n\r\n get templateName(): AbstractControl {\r\n return this.planGenerateForm.get('templateName');\r\n }\r\n get templateDescription(): AbstractControl {\r\n return this.planGenerateForm.get('templateDescription');\r\n }\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private programTemplateService: ProgramTemplateData,\r\n protected ref: NbDialogRef,\r\n private toasterService: NbToastrService,\r\n private router: Router,\r\n dialogService: NbDialogService\r\n ) {\r\n super(dialogService);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.templatePlan)\r\n this.templatePlan = {\r\n fitnessPlans: null,\r\n mealPlan: null,\r\n };\r\n\r\n this.initForm();\r\n }\r\n\r\n initForm(): void {\r\n this.planGenerateForm = this.fb.group({\r\n templateName: this.fb.control(`Untitled Fitness Plan (${moment().format('MMM DD, YYYY')})`, [\r\n Validators.required,\r\n Validators.minLength(1),\r\n Validators.maxLength(50),\r\n ]),\r\n templateDescription: this.fb.control('', [Validators.maxLength(500)]),\r\n });\r\n super.initForm(this.planGenerateForm);\r\n }\r\n\r\n onCreateTemplate(): void {\r\n if (!this.templatePlan) return;\r\n\r\n const template: TemplatePlan = {\r\n name: this.templateName.value,\r\n description: this.templateDescription.value,\r\n programPlans: null,\r\n isPublic: this.isPublic,\r\n };\r\n super.resetDirty();\r\n this.programTemplateService.CreateTemplate(template).subscribe(\r\n (res) => {\r\n this.toasterService.success('', `Item template has been created!`);\r\n this.router.navigate(['/pages/CalorieFriend/program-template', res.id]);\r\n this.ref.close();\r\n },\r\n () =>\r\n this.toasterService.danger('', 'Problem with creating the template.')\r\n );\r\n }\r\n\r\n onCancel(): void {\r\n super.back(() => this.ref.close());\r\n }\r\n\r\n onTemplateNameChange(): void {\r\n if (this.templateName.value === '')\r\n this.templateName.setValue(`Untitled Fitness Plan (${moment().format('MMM DD, YYYY')})`);\r\n }\r\n\r\n get valid(): boolean {\r\n return this.planGenerateForm.valid && !!this.templatePlan;\r\n }\r\n}\r\n","\r\n \r\n
Create Program Template
\r\n
\r\n\r\n \r\n
\r\n \r\n
    \r\n
  • \r\n
    \r\n Name\r\n
    \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n\r\n \r\n
    \r\n
  • \r\n
    \r\n Description\r\n
    \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","\r\n\r\n \r\n {{ e.name }} \r\n \r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpService } from 'app/@core/backend/common/api/http.service';\r\nimport { PatientData, PatientFilter } from 'app/@core/interfaces/common/CalorieFriend/patients';\r\nimport { ProgramTemplateData, TemplatePlan } from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport { ProgramPlans, ProgramTemplate } from 'app/@core/interfaces/common/CalorieFriend/program-template';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'ngx-assing-plan-client',\r\n templateUrl: './assing-plan-client.component.html',\r\n styleUrls: ['./assing-plan-client.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AssingPlanClientComponent implements OnInit {\r\n\r\n @Input() isMealPlan: boolean;\r\n @Input() planId: number;\r\n @Input() isProgramTemplate: boolean;\r\n @Input() programTemplate: TemplatePlan;\r\n\r\n constructor(private patientsService: PatientData,\r\n private cd: ChangeDetectorRef,\r\n private router: Router,\r\n private api: HttpService) { }\r\n\r\n private readonly unsubscribe$ = new Subject();\r\n dataList: any[] = [];\r\n\r\n showList: boolean = false;\r\n private paging: PatientFilter = {\r\n isArchived: false,\r\n sortBy: 'createdDate',\r\n orderBy: 'desc',\r\n pageSize: 1000,\r\n };\r\n\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n\r\n onAssingPlanClicked() {\r\n this.showList = true;\r\n\r\n this.patientsService\r\n .list(this.paging)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((res) => {\r\n this.dataList = res.items;\r\n this.cd.detectChanges();\r\n });\r\n\r\n\r\n\r\n }\r\n\r\n onSelectItem(id) {\r\n if(this.isProgramTemplate) {\r\n this.programTemplate.programPlans.mealPlan = this.programTemplate.programPlans.mealPlan?.map(x => {\r\n return {...x, patientID: id}\r\n });\r\n this.programTemplate.programPlans.fitnessPlans = this.programTemplate.programPlans.fitnessPlans?.map(x => {\r\n return {...x, patientID: id}\r\n });\r\n this.api.post('program-template/template/assign-patient', this.programTemplate).subscribe(res => {\r\n if(res) {\r\n this.router.navigate([\r\n '/pages/CalorieFriend/PatientSheetView/' + id.toString(), \r\n ]);\r\n }\r\n })\r\n return\r\n }\r\n let route = !this.isMealPlan ? '/pages/CalorieFriend/NewFitnessPlan/' : '/pages/CalorieFriend/NewPlan/'\r\n\r\n this.router.navigate([\r\n route + id.toString(), \r\n ], { queryParams: { planId: this.planId.toString() } });\r\n\r\n }\r\n\r\n}\r\n","\r\n \r\n \r\n
{{title}}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n Name \r\n {{row.name}} \r\n \r\n\r\n \r\n \r\n Description \r\n \r\n {{row.description}}\r\n \r\n \r\n\r\n \r\n \r\n Actions \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n Assign \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n
\r\n\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n * Public Templates created by TrainerFriend.com nutritionist.\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n","/**\r\n * Created by Vinicius\r\n */\r\n\r\nimport {\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { Sort } from '@angular/material/sort';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n takeUntil,\r\n} from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { fromEvent, Observable } from 'rxjs';\r\nimport { NbDialogService, NbToastrService } from '@nebular/theme';\r\n\r\nimport {\r\n BasePlanFilter,\r\n FitnessPlanData,\r\n MealPlanData,\r\n ProgramTemplateData,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\nimport { MealPlanTemplateCreateComponent } from 'app/admin/public-templates/template-create/template-create.component';\r\n\r\nimport { FitnessPlanTemplateCreateComponent } from '../../FitnessPlans/plan-template-create/plan-template-create.component';\r\nimport { ProgramTemplateCreateComponent } from '../../program-templates/program-template-create/program-template-create.component';\r\n\r\n@Component({\r\n selector: 'app-plan-template-list',\r\n templateUrl: './template-list.component.html',\r\n styleUrls: ['./template-list.component.scss'],\r\n})\r\nexport class PlanTemplateListComponent implements OnInit, OnDestroy {\r\n @Input() title: string = '';\r\n @Input() readonly: boolean = true;\r\n @Input() set publicOnly(value: boolean) {\r\n if (value === undefined) delete this.paging.publicOnly;\r\n else this.paging.publicOnly = value;\r\n this.loadDataList();\r\n }\r\n @Input() set planType(value: string) {\r\n if (!value?.length) return;\r\n this.isMealPlan = value.toUpperCase() === 'MEAL'; // MEAL or WORKOUT\r\n this.isProgramTemplate = value.toUpperCase() === 'PROGRAM'; // PROGRAM or TEMPLATE\r\n this.editUrl =\r\n '/pages/CalorieFriend/' +\r\n (this.isMealPlan ? 'Template/' : this.isProgramTemplate ? 'program-template/' :'FitnessTemplate/');\r\n }\r\n\r\n @ViewChild(MatPaginator, { static: true }) paginator?: MatPaginator;\r\n @ViewChild('search', { static: true }) searchInput?: ElementRef;\r\n\r\n readonly displayedColumns = ['name', 'description', 'actions','assing'];\r\n totalCount: number = 0;\r\n dataList: any[] = [];\r\n editUrl: string;\r\n contentLoaded:boolean = false;\r\n\r\n private unsubscribe$ = new Subject();\r\n private paging: BasePlanFilter = {};\r\n public isMealPlan: boolean;\r\n public isProgramTemplate: boolean;\r\n\r\n constructor(\r\n private mealPlanService: MealPlanData,\r\n private fitnessPlanService: FitnessPlanData,\r\n private programTemplateService: ProgramTemplateData,\r\n private toasterService: NbToastrService,\r\n private dialogService: NbDialogService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n fromEvent(this.searchInput.nativeElement, 'keyup')\r\n .pipe(\r\n takeUntil(this.unsubscribe$),\r\n filter((x) => x !== this.paging.name),\r\n debounceTime(250),\r\n distinctUntilChanged(),\r\n )\r\n .subscribe(() => {\r\n this.paging.name = this.searchInput.nativeElement.value;\r\n this.loadDataList();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n onSortChanged(sort: Sort): void {\r\n this.paging.sortBy = sort.active;\r\n this.paging.orderBy = sort.direction;\r\n this.loadDataList(true);\r\n }\r\n\r\n private dataService(): MealPlanData | FitnessPlanData | ProgramTemplateData {\r\n if(this.isProgramTemplate) {\r\n return this.programTemplateService;\r\n }\r\n return this.isMealPlan ? this.mealPlanService : this.fitnessPlanService;\r\n }\r\n\r\n loadDataList(pagination: boolean = false): void {\r\n if (!pagination && this.paginator) this.paginator.pageIndex = 0;\r\n this.paging.pageNumber = pagination\r\n ? this.paginator?.pageIndex + 1 ?? 1\r\n : 1;\r\n this.paging.pageSize = this.paginator?.pageSize ?? 10;\r\n\r\n (this.dataService().templateList(this.paging) as Observable)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((res) => {\r\n this.totalCount = res.totalCount;\r\n this.dataList = res.items;\r\n this.contentLoaded = true;\r\n });\r\n }\r\n\r\n onAddTemplate(): void {\r\n if (this.readonly) return;\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: { Message: 'Do you want to create a template?' },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (!result) return;\r\n const option = {\r\n context: { isPublic: false },\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n };\r\n (this.isMealPlan\r\n ? this.dialogService.open(MealPlanTemplateCreateComponent, option)\r\n : this.isProgramTemplate\r\n ? this.dialogService.open(ProgramTemplateCreateComponent, option)\r\n : this.dialogService.open(FitnessPlanTemplateCreateComponent, option)\r\n ).onClose.subscribe(() => this.loadDataList(true));\r\n });\r\n }\r\n\r\n onDuplicate(id: number): void {\r\n if (this.readonly) return;\r\n (this.dataService().duplicateTemplate(id) as Observable)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(\r\n () => {\r\n this.toasterService.success('', 'Template has been duplicated!');\r\n this.loadDataList(true);\r\n },\r\n () =>\r\n this.toasterService.danger(\r\n '',\r\n 'There was a problem duplicating the template!',\r\n ),\r\n );\r\n }\r\n\r\n onDelete(id: number): void {\r\n if (this.readonly) return;\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: { Message: 'Are you sure you want to delete the template?' },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (!result) return;\r\n (this.dataService().deleteTemplate(id) as Observable)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(\r\n () => {\r\n this.toasterService.success('', 'Template has been deleted');\r\n this.loadDataList(true);\r\n },\r\n () =>\r\n this.toasterService.danger(\r\n '',\r\n 'There was a problem deleting the template!',\r\n ),\r\n );\r\n });\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-fitness-plan-templates',\r\n templateUrl: './templates.component.html',\r\n})\r\nexport class FitnessPlanTemplatesComponent {}\r\n","\r\n\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { Resolve, ActivatedRouteSnapshot } from '@angular/router';\r\nimport { Observable, forkJoin, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport {\r\n FitnessPlan,\r\n FitnessPlanData,\r\n TemplatePlan,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan';\r\n\r\n@Injectable()\r\nexport class FitnessPlanTemplateResolver implements Resolve> {\r\n constructor(private planService: FitnessPlanData) {}\r\n\r\n resolve(route: ActivatedRouteSnapshot) {\r\n return forkJoin([\r\n route.params.id\r\n ? this.planService.GetTemplateById(route.params.id)\r\n : of(this.getEmptyTemplate()),\r\n ]).pipe(map(([template]) => ({ template })));\r\n }\r\n\r\n private getEmptyTemplate(): TemplatePlan {\r\n return {\r\n id: 0,\r\n name: '',\r\n description: '',\r\n thePlan: null,\r\n isPublic: false,\r\n };\r\n }\r\n}\r\n","\r\n \r\n \r\n
My Exercise
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n Image\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n Name \r\n {{row.name}} \r\n \r\n\r\n \r\n \r\n Last Update \r\n \r\n {{row.updatedDate | date:'mediumDate'}}\r\n \r\n \r\n\r\n \r\n \r\n Actions \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","/**\r\n * Updated by Vinicius\r\n */\r\n\r\nimport {\r\n Component,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, MatSortable, Sort } from '@angular/material/sort';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n takeUntil,\r\n} from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { fromEvent } from 'rxjs';\r\nimport { NbToastrService, NbDialogService } from '@nebular/theme';\r\n\r\nimport {\r\n CustomExercise,\r\n CustomExerciseData,\r\n CustomExerciseFilter,\r\n} from 'app/@core/interfaces/common/CalorieFriend/custom-exercise';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\nimport { CustomExerciseDefComponent } from '../CustomExerciseDef/customexercise-def.component';\r\n\r\n@Component({\r\n selector: 'app-custom-exercise-list',\r\n templateUrl: './exercise-list.component.html',\r\n styleUrls: ['./exercise-list.component.scss'],\r\n})\r\nexport class CustomExerciseListComponent implements OnInit, OnDestroy {\r\n @ViewChild(MatPaginator, { static: true }) paginator?: MatPaginator;\r\n @ViewChild(MatSort, { static: true }) sortor?: MatSort;\r\n @ViewChild('search', { static: true }) searchInput?: ElementRef;\r\n\r\n readonly displayedColumns = ['image', 'name', 'updatedDate', 'actions'];\r\n totalCount: number = 0;\r\n dataList: CustomExercise[] = [];\r\n contentLoaded:boolean = false;\r\n\r\n private unsubscribe$ = new Subject();\r\n private paging: CustomExerciseFilter = {\r\n sortBy: 'updatedDate',\r\n orderBy: 'desc',\r\n };\r\n\r\n constructor(\r\n private customExerciseService: CustomExerciseData,\r\n private toastrService: NbToastrService,\r\n private dialogService: NbDialogService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n // default sort and load data initially\r\n this.sortor.sort({\r\n id: this.paging.sortBy,\r\n start: this.paging.orderBy,\r\n } as MatSortable);\r\n\r\n fromEvent(this.searchInput.nativeElement, 'keyup')\r\n .pipe(\r\n takeUntil(this.unsubscribe$),\r\n filter((x) => x !== this.paging.Name),\r\n debounceTime(250),\r\n distinctUntilChanged(),\r\n )\r\n .subscribe(() => {\r\n this.paging.Name = this.searchInput.nativeElement.value;\r\n this.loadDataList();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n onSortChanged(sort: Sort): void {\r\n this.paging.sortBy = sort.active;\r\n this.paging.orderBy = sort.direction;\r\n this.loadDataList(true);\r\n }\r\n\r\n loadDataList(pagination: boolean = false): void {\r\n if (!pagination && this.paginator) this.paginator.pageIndex = 0;\r\n this.paging.pageNumber = pagination\r\n ? this.paginator?.pageIndex + 1 ?? 1\r\n : 1;\r\n this.paging.pageSize = this.paginator?.pageSize ?? 10;\r\n\r\n this.customExerciseService\r\n .list(this.paging)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((res) => {\r\n this.totalCount = res.totalCount;\r\n res.items.forEach((x) => {\r\n x.exerciseVideoThumbnailUrl = x.exerciseVideoThumbnailUrl && x.exerciseVideoThumbnailUrl !== 'null'? x.exerciseVideoThumbnailUrl : null;\r\n });\r\n this.dataList = res.items;\r\n this.contentLoaded = true;\r\n });\r\n }\r\n\r\n\r\n public getVideoUrl(source:string):string {\r\n return source + \"#t=0.001\"\r\n }\r\n\r\n onAddCustomExercise() {\r\n this.dialogService\r\n .open(CustomExerciseDefComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: { ID: null },\r\n })\r\n .onClose.subscribe((res) => {\r\n //if (!res) return;\r\n this.loadDataList(true);\r\n });\r\n }\r\n\r\n onEdit(id: number) {\r\n this.dialogService\r\n .open(CustomExerciseDefComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: { ID: id },\r\n })\r\n .onClose.subscribe((res) => {\r\n //if (!res) return;\r\n this.loadDataList(true);\r\n });\r\n }\r\n\r\n onDelete(id: number) {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: { Message: 'Are you sure to delete this custom exercise?' },\r\n })\r\n .onClose.subscribe((res) => {\r\n if (!res) return;\r\n this.customExerciseService\r\n .delete(id)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(\r\n () => {\r\n this.toastrService.success(\r\n '',\r\n 'Successfully deleted Custom Exercise',\r\n );\r\n this.loadDataList(true);\r\n },\r\n () =>\r\n this.toastrService.danger(\r\n '',\r\n 'Problem occurred delelting Custom Exercise',\r\n ),\r\n );\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Resolve, ActivatedRouteSnapshot } from '@angular/router';\r\nimport { Observable, forkJoin, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport {\r\n MealPlan,\r\n MealPlanData,\r\n TemplatePlan,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan';\r\n\r\n@Injectable()\r\nexport class MealPlanTemplateResolver implements Resolve> {\r\n constructor(private planService: MealPlanData) {}\r\n\r\n resolve(route: ActivatedRouteSnapshot) {\r\n return forkJoin([\r\n route.params.id\r\n ? this.planService.GetTemplateById(route.params.id)\r\n : of(this.getEmptyTemplate()),\r\n ]).pipe(map(([template]) => ({ template })));\r\n }\r\n\r\n private getEmptyTemplate(): TemplatePlan {\r\n return {\r\n id: 0,\r\n name: '',\r\n description: '',\r\n thePlan: null,\r\n isPublic: false,\r\n };\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-meal-plan-templates',\r\n templateUrl: './templates.component.html',\r\n})\r\nexport class MealPlanTemplatesComponent {}\r\n","\r\n\r\n\r\n\r\n\r\n\r\n","\r\n \r\n \r\n
{{title}}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n Image\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n Name \r\n {{row.name}} \r\n \r\n\r\n \r\n \r\n Description \r\n \r\n {{row.description}}\r\n \r\n \r\n\r\n \r\n \r\n Last Update \r\n \r\n {{row.updatedDate | date:'mediumDate'}}\r\n \r\n \r\n\r\n \r\n \r\n Actions \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n","/**\r\n * Created by Vinicius\r\n */\r\n\r\nimport {\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, MatSortable, Sort } from '@angular/material/sort';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n takeUntil,\r\n} from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { fromEvent } from 'rxjs';\r\nimport { NbDialogService, NbToastrService } from '@nebular/theme';\r\n\r\nimport {\r\n CustomFoodData,\r\n CustomFoodFilter,\r\n} from 'app/@core/interfaces/common/CalorieFriend/custom-food';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\nimport { CustomFoodComponent } from 'app/admin/public-foods/custom-food/custom-food.component';\r\n\r\n@Component({\r\n selector: 'app-food-list',\r\n templateUrl: './food-list.component.html',\r\n styleUrls: ['./food-list.component.scss'],\r\n})\r\nexport class FoodListComponent implements OnInit, OnDestroy {\r\n @Input() title: string = '';\r\n @Input() readonly: boolean = true;\r\n @Input() set publicOnly(value: boolean) {\r\n if (value === undefined) delete this.paging.filterByOnlyPublic;\r\n else this.paging.filterByOnlyPublic = value;\r\n\r\n // default sort and load data initially\r\n this.sortor.sort({\r\n id: this.paging.sortBy,\r\n start: this.paging.orderBy,\r\n } as MatSortable);\r\n }\r\n\r\n @ViewChild(MatPaginator, { static: true }) paginator?: MatPaginator;\r\n @ViewChild(MatSort, { static: true }) sortor?: MatSort;\r\n @ViewChild('search', { static: true }) searchInput?: ElementRef;\r\n\r\n readonly displayedColumns = [\r\n 'image',\r\n 'name',\r\n 'description',\r\n 'updatedDate',\r\n 'actions',\r\n ];\r\n totalCount: number = 0;\r\n dataList: any[] = [];\r\n editUrl: string;\r\n contentLoaded:boolean = false;\r\n\r\n private unsubscribe$ = new Subject();\r\n private paging: CustomFoodFilter = { sortBy: 'updatedDate', orderBy: 'desc' };\r\n\r\n constructor(\r\n private customFoodService: CustomFoodData,\r\n private toasterService: NbToastrService,\r\n private dialogService: NbDialogService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n fromEvent(this.searchInput.nativeElement, 'keyup')\r\n .pipe(\r\n takeUntil(this.unsubscribe$),\r\n filter((x) => x !== this.paging.filterByNameOrDescription),\r\n debounceTime(250),\r\n distinctUntilChanged(),\r\n )\r\n .subscribe(() => {\r\n this.paging.filterByNameOrDescription =\r\n this.searchInput.nativeElement.value;\r\n this.loadDataList();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n onSortChanged(sort: Sort): void {\r\n this.paging.sortBy = sort.active;\r\n this.paging.orderBy = sort.direction;\r\n this.loadDataList(true);\r\n }\r\n\r\n loadDataList(pagination: boolean = false): void {\r\n if (!pagination && this.paginator) this.paginator.pageIndex = 0;\r\n this.paging.pageNumber = pagination\r\n ? this.paginator?.pageIndex + 1 ?? 1\r\n : 1;\r\n this.paging.pageSize = this.paginator?.pageSize ?? 10;\r\n\r\n this.customFoodService\r\n .list(this.paging)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((res) => {\r\n this.totalCount = res.totalCount;\r\n this.dataList = res.items;\r\n this.contentLoaded = true;\r\n });\r\n }\r\n\r\n onAddCustomFood(): void {\r\n if (this.readonly) return;\r\n this.dialogService\r\n .open(CustomFoodComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n })\r\n .onClose.subscribe(() => this.loadDataList(true));\r\n }\r\n\r\n onEdit(id: number): void {\r\n this.dialogService\r\n .open(CustomFoodComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: { id },\r\n })\r\n .onClose.subscribe(() => this.loadDataList(true));\r\n }\r\n\r\n onDelete(id: number): void {\r\n if (this.readonly) return;\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: { Message: 'Are you sure to delete this custom food?' },\r\n })\r\n .onClose.subscribe((res) => {\r\n if (!res) return;\r\n this.customFoodService\r\n .delete(id)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(\r\n () => {\r\n this.toasterService.success(\r\n '',\r\n 'Successfully deleted Custom Food',\r\n );\r\n this.loadDataList(true);\r\n },\r\n () =>\r\n this.toasterService.danger(\r\n '',\r\n 'Problem occurred delelting Custom Food',\r\n ),\r\n );\r\n });\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ngx-custom-foods',\r\n templateUrl: './custom-foods.component.html',\r\n})\r\nexport class CustomFoodsComponent {}\r\n","\r\n\r\n\r\n","\r\n \r\n App Settings\r\n \r\n \r\n
\r\n Download APK\r\n
\r\n
\r\n Download IPA\r\n
\r\n
\r\n Download ABB\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n

Current App Version is : {{configurations.version}}

\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { SettingsService } from \"app/@core/backend/common/services/settings.service\";\r\nimport { TfAdminLoginService } from \"app/@core/backend/common/services/tfAdminLogin.service\";\r\nimport { AppSettings, AppSettingsData } from \"app/@core/interfaces/common/appSettings\";\r\nimport { Settings } from \"app/@core/interfaces/common/settings\";\r\nimport { User } from \"app/@core/interfaces/common/users\";\r\nimport { JSONStringify } from \"app/SupportOps\";\r\n\r\nexport interface AppSettingsConfigurations {\r\n appStorePassword: string | null;\r\n keyId: string | null;\r\n issuerId: string | null;\r\n username: string | null;\r\n teamId: string | null;\r\n teamName: string | null;\r\n bundleId: string | null;\r\n branchName: string | null;\r\n token: string | null;\r\n version?: string;\r\n}\r\n\r\n@Component({\r\n selector: \"app-settings\",\r\n templateUrl: \"./app-settings.component.html\",\r\n styleUrls: [\"./app-settings.component.scss\"],\r\n})\r\nexport class AppSettingsComponent implements OnInit {\r\n public appSettings: AppSettings;\r\n @Input() public disabled: boolean = false;\r\n @Input() public user: User;\r\n @Input() public userSettings: Settings;\r\n @Output() public userSettingsChange = new EventEmitter<{\r\n user: User,\r\n settings: Settings,\r\n }>();\r\n public configurations: AppSettingsConfigurations = {\r\n appStorePassword: null,\r\n keyId: null,\r\n issuerId: null,\r\n username: null,\r\n teamId: null,\r\n teamName: null,\r\n bundleId: null,\r\n branchName: null,\r\n token: null,\r\n };\r\n constructor(\r\n private appSettingService: AppSettingsData,\r\n private settingsService: SettingsService,\r\n private httpClient: HttpClient,\r\n ) {}\r\n ngOnInit(): void {\r\n\r\n this.appSettingService.get(this.user.id).subscribe(res => {\r\n console.log(res);\r\n if(res) {\r\n this.appSettings = res;\r\n if(res.configuration)\r\n this.configurations = JSON.parse(res.configuration);\r\n } else {\r\n this.appSettings = {\r\n userId: this.user.id,\r\n apkUrl: null,\r\n ipaUrl: null,\r\n abbUrl: null,\r\n googleAndroidServiceJson: null,\r\n googleIosServiceJson: null,\r\n id: null,\r\n configuration: JSONStringify(this.configurations),\r\n }\r\n }\r\n });\r\n }\r\n\r\n public runBuild() {\r\n this.appSettingService.runBuild(this.user.id).subscribe(res => {\r\n console.log(res);\r\n });\r\n }\r\n\r\n tokenFileUpload(event: any): void{\r\n const file = event.target.files[0];\r\n if (!file) {\r\n return;\r\n }\r\n\r\n const reader = new FileReader();\r\n reader.onload = (fileLoadEvent) => {\r\n const text = fileLoadEvent.target.result;\r\n this.configurations.token = text as string;\r\n }\r\n reader.readAsText(file);\r\n }\r\n\r\n changeIsCustomAppInProduction(event) {\r\n this.user.isCustomAppInProduction = event;\r\n }\r\n\r\n changeCustomAppEnabled(event) {\r\n this.user.customAppEnabled = event;\r\n }\r\n\r\n saveChanges() {\r\n this.appSettings.configuration = JSONStringify(this.configurations);\r\n this.appSettingService.update(this.appSettings).subscribe(res => {\r\n console.log(res);\r\n });\r\n this.userSettingsChange.emit({\r\n user: this.user,\r\n settings: this.userSettings,\r\n });\r\n this.settingsService.updateUserSettings({...this.userSettings,id: this.user.id, appLogo: null, logo: null, color: JSON.stringify(this.userSettings.color), appColor: JSON.stringify(this.userSettings.appColor)}).subscribe(res => {\r\n console.log(res);\r\n });\r\n }\r\n\r\n\r\n syncTfToGhl() {\r\n this.httpClient.get(`https://trainerfriend-function-prod.azurewebsites.net/api/SyncTrainerfriendToGhl?email=${this.user.email}`).subscribe(res => {\r\n console.log(\"Synced\");\r\n });\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n
Customize Branding for Website
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
Current Logo
\r\n
\r\n\r\n \r\n

\r\n You can customize the main logo branding.
\r\n Upload logo on transparent background or white background for better result.\r\n

\r\n 0 ? logoSrc : '/assets/images/logo.png'\" alt=\"logo branding\"\r\n class=\"w-100 mb-3 d-block\" style=\"max-width: 400px; max-height: 200px; object-fit: contain;\">\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
Color Theme
\r\n
\r\n\r\n \r\n

\r\n You can also select a main color switch to better reflect your branding.\r\n

\r\n \r\n \r\n
\r\n
\r\n

\r\n
\r\n \r\n
\r\n \r\n \r\n
Preview
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
Customize Branding for Mobile application
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
Current App Logo
\r\n
\r\n\r\n \r\n

\r\n You can customize the main logo branding.
\r\n Upload logo on transparent background or white background for better result.\r\n

\r\n
\r\n
\r\n 0 ? appLogoSrc : '/assets/images/logo.png'\" alt=\"logo branding\" alt=\"Android Icon Preview\"/>\r\n
\r\n
\r\n 0 ? appLogoSrc : '/assets/images/logo.png'\" alt=\"logo branding\" alt=\"iOS Icon Preview\"/>\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
Splash screen
\r\n
\r\n\r\n \r\n

\r\n You can also select a main color switch to better reflect your branding.\r\n

\r\n \r\n \r\n
\r\n
\r\n

\r\n
\r\n
\r\n \r\n \r\n
Preview
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n 0 ? logoSrc : '/assets/images/logo.png'\" alt=\"Logo\" class=\"logo\">\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n
Crop Image
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n \r\n \r\n
Crop Icon Image
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n","/**\r\n * Created by Vinicius\r\n */\r\n\r\nimport {\r\n Component,\r\n ComponentRef,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { NbDialogRef, NbDialogService, NbToastrService } from '@nebular/theme';\r\nimport { Subject } from 'rxjs';\r\nimport { last, map, takeUntil } from 'rxjs/operators';\r\nimport { ImageCroppedEvent, base64ToFile } from 'ngx-image-cropper';\r\nimport { SettingsData } from 'app/@core/interfaces/common/settings';\r\nimport { UserStore } from 'app/@core/stores/user.store';\r\nimport { COLORS, ColorSetting } from 'app/@theme/styles/colors';\r\nimport { replaceRootStyle } from 'app/@core/utils/themes';\r\nimport { PremiumModalComponent } from '../premium-modal/premium-modal.component';\r\nimport { JSONStringify } from 'app/SupportOps';\r\nimport { AppSettingsService } from 'app/@core/backend/common/services/appSettings.service';\r\nimport { AppSettings } from 'app/@core/interfaces/common/appSettings';\r\nimport { AppSettingsConfigurations } from 'app/@components/app-settings/app-settings.component';\r\nimport { User } from 'app/@core/interfaces/common/users';\r\nimport { TfAdminLoginService } from 'app/@core/backend/common/services/tfAdminLogin.service';\r\nimport { UsersService } from 'app/@core/backend/common/services/users.service';\r\n\r\n@Component({\r\n selector: 'ngx-brand',\r\n templateUrl: './brand.component.html',\r\n styleUrls: ['./brand.component.scss'],\r\n})\r\nexport class BrandComponent implements OnDestroy, OnInit {\r\n @ViewChild('cropperDlg', { static: true })\r\n cropperDlg?: TemplateRef;\r\n @ViewChild('cropperDlgIcon', { static: true })\r\n cropperDlgIcon?: TemplateRef;\r\n @ViewChild('upgradeDlg', { static: true })\r\n upgradeDlg?: TemplateRef;\r\n @ViewChild('iframe', { static: true }) iframe?: ElementRef;\r\n @ViewChild('file', { static: true }) fileInput?: ElementRef;\r\n @ViewChild('fileAppLogo', { static: true }) fileInputAppLogo?: ElementRef;\r\n @ViewChild('fileAppSplashScreenLogo', { static: true }) fileInputAppSplashScreenLogo?: ElementRef;\r\n\r\n\r\n isSaving: boolean = false;\r\n logoSrc: string;\r\n logoEditSrc: string;\r\n imageChangedEvent: any = '';\r\n appLogoSrc: string;\r\n appLogoEditSrc: string;\r\n appLogoChangedEvent: any = '';\r\n appName: string;\r\n color: ColorSetting = COLORS[0];\r\n splashColor: ColorSetting = COLORS[0];\r\n isIframeLoaded: boolean = false;\r\n changed: boolean = false;\r\n public configurations: AppSettingsConfigurations;\r\n public appSettings: AppSettings;\r\n public user: User;\r\n public isTfAdmin: boolean = false;\r\n\r\n private readonly unsubscribe$ = new Subject();\r\n private fileName: string;\r\n private iframeDoc: Document;\r\n public userSettings: any;\r\n\r\n constructor(\r\n private settingsService: SettingsData,\r\n private userStore: UserStore,\r\n private toastrService: NbToastrService,\r\n private dialogService: NbDialogService,\r\n private appSettingService: AppSettingsService,\r\n private tfAdminLoginService: TfAdminLoginService,\r\n private usersService: UsersService,\r\n ) {\r\n if (userStore.settings(true)) this.loadBrand();\r\n else\r\n userStore\r\n .onUserStateChange()\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe(() => this.loadBrand());\r\n }\r\n ngOnInit(): void {\r\n this.isTfAdmin = this.tfAdminLoginService.isLoggedIn;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n public get appStoreUrl(): string {\r\n return this.userStore.settings(true)?.appStoreUrl;\r\n }\r\n\r\n public get playStoreUrl(): string {\r\n return this.userStore.settings(true)?.playStoreUrl;\r\n }\r\n\r\n public get isCustomAppEnabled(): boolean {\r\n return this.userStore.customAppEnabled() || true;\r\n }\r\n\r\n private loadBrand(): void {\r\n this.user = this.userStore.getUser();\r\n this.logoSrc = this.userStore.settings(true)?.logo;\r\n this.color = this.userStore.settings(true)?.color ?? COLORS[0];\r\n this.splashColor = this.userStore.settings(true)?.appColor ?? COLORS[0];\r\n this.appLogoSrc = this.userStore.settings(true)?.appLogo;\r\n this.appName = this.userStore.settings(true)?.appName;\r\n this.userSettings = this.userStore.settings(true);\r\n console.log(\"Loading brand...\");\r\n if(this.user) {\r\n this.appSettingService.get(this.user.id).subscribe(res => {\r\n console.log('configurations',res);\r\n if(res) {\r\n this.appSettings = res;\r\n if(res.configuration)\r\n this.configurations = JSON.parse(res.configuration);\r\n }\r\n });\r\n }\r\n }\r\n\r\n public get isCustomAppInProduction(): boolean {\r\n return this.userStore.isCustomAppInProduction();\r\n }\r\n\r\n public get customAppEnabled(): boolean {\r\n return this.userStore.customAppEnabled();\r\n }\r\n\r\n onIframeLoaded(): void {\r\n this.iframeDoc =\r\n this.iframe.nativeElement.contentDocument ||\r\n this.iframe.nativeElement.contentWindow.document;\r\n this.isIframeLoaded = true;\r\n this.previewLogo();\r\n replaceRootStyle(this.iframeDoc, this.color);\r\n }\r\n\r\n onLogoChange(event): void {\r\n const files = event.target.files;\r\n if (!files?.length) return;\r\n\r\n this.fileName = files[0].name;\r\n this.imageChangedEvent = event;\r\n\r\n this.dialogService.open(this.cropperDlg, {\r\n closeOnBackdropClick: false,\r\n closeOnEsc: false,\r\n autoFocus: false,\r\n });\r\n }\r\n\r\n onAppLogoChange(event): void {\r\n const files = event.target.files;\r\n if (!files?.length) return;\r\n\r\n this.appLogoChangedEvent = event;\r\n\r\n this.dialogService.open(this.cropperDlgIcon, {\r\n closeOnBackdropClick: false,\r\n closeOnEsc: false,\r\n autoFocus: false,\r\n });\r\n }\r\n\r\n onImageCropped(event: ImageCroppedEvent): void {\r\n this.logoEditSrc = event.base64;\r\n this.fileInput.nativeElement.value = '';\r\n this.changed = true;\r\n }\r\n\r\n onImageIconCropped(event: ImageCroppedEvent): void {\r\n this.appLogoEditSrc = event.base64;\r\n this.fileInputAppLogo.nativeElement.value = '';\r\n this.changed = true;\r\n }\r\n\r\n onLoadImageFailed(event): void {\r\n this.toastrService.danger('', 'Loading image failed.');\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n\r\n onLoadImageIconFailed(event): void {\r\n this.toastrService.danger('', 'Loading image failed.');\r\n this.fileInputAppLogo.nativeElement.value = '';\r\n }\r\n\r\n onCancelImageCropping(ref: NbDialogRef): void {\r\n ref.close();\r\n this.fileInput.nativeElement.value = '';\r\n }\r\n\r\n onCancelImageIconCropping(ref: NbDialogRef): void {\r\n ref.close();\r\n this.fileInputAppLogo.nativeElement.value = '';\r\n }\r\n\r\n onUpdateLogo(ref: NbDialogRef): void {\r\n this.logoSrc = this.logoEditSrc;\r\n ref.close();\r\n this.previewLogo();\r\n }\r\n\r\n onUpdateLogoIcon(ref: NbDialogRef): void {\r\n this.appLogoSrc = this.appLogoEditSrc;\r\n ref.close();\r\n this.previewAppLogo();\r\n }\r\n\r\n // change logo on iframe\r\n private previewLogo(): void {\r\n if (!this.logoSrc?.length) return;\r\n this.iframeDoc\r\n .querySelector('img.image-logo')\r\n .setAttribute('src', this.logoSrc);\r\n }\r\n\r\n private previewAppLogo(): void {\r\n if (!this.appLogoSrc?.length) return;\r\n this.iframeDoc\r\n .querySelector('img.logo')\r\n .setAttribute('src', this.appLogoSrc);\r\n }\r\n\r\n onColorChanged(color: ColorSetting): void {\r\n this.color = color;\r\n console.log(this.color);\r\n\r\n this.changed = true;\r\n replaceRootStyle(this.iframeDoc, color);\r\n }\r\n\r\n onSplashColorChanged(color: ColorSetting): void {\r\n this.splashColor = color;\r\n this.changed = true;\r\n }\r\n\r\n onSave(): void {\r\n if (this.userStore.isPayingUser()) {\r\n this.onSaveAnyway(false);\r\n return;\r\n }\r\n\r\n this.onShowPremiumDialog();\r\n }\r\n\r\n onShowPremiumDialog() {\r\n const ref: ComponentRef =\r\n this.dialogService.open(PremiumModalComponent, {\r\n closeOnBackdropClick: false,\r\n closeOnEsc: false,\r\n autoFocus: false,\r\n context: {\r\n CloseCallBack: this.onSaveAnyway.bind(this, false),\r\n OnPremiumCallBack: this.onSaveAnyway.bind(this, true),\r\n },\r\n }).componentRef;\r\n }\r\n\r\n saveAppSettings({user, settings}): void {\r\n // const userData: User = {...this.user,\r\n // isCustomAppInProduction: user.isCustomAppInProduction,\r\n // customAppEnabled: user.customAppEnabled};\r\n // console.log(userData);\r\n this.usersService.updateCurrent(\r\n {\r\n id: user.id ? user.id : '',\r\n role: user.role ? user.role : '',\r\n firstName: user.firstName ? user.firstName : '',\r\n lastName: user.lastName ? user.lastName : '',\r\n phoneNumber: user.phoneNumber ? user.phoneNumber : '',\r\n businessName: user.businessName ? user.businessName : '',\r\n email: user.email ? user.email : '',\r\n conversionFactorsPreference: user.conversionFactorsPreference? user.conversionFactorsPreference: 'g',\r\n address: {\r\n street:\r\n user.address && user.address.street ? user.address.street : '',\r\n secondAddress:\r\n user.address && user.address.secondAddress\r\n ? user.address.secondAddress\r\n : '',\r\n city: user.address && user.address.city ? user.address.city : '',\r\n country:\r\n user.address && user.address.country ? user.address.country : '',\r\n zipCode:\r\n user.address && user.address.zipCode ? user.address.zipCode : '',\r\n },\r\n isCustomAppInProduction: user.isCustomAppInProduction,\r\n customAppEnabled: user.customAppEnabled,\r\n gHLApiKey: user.gHLApiKey && user.gHLApiKey.length > 1? user.gHLApiKey: null,\r\n }\r\n ).subscribe(\r\n (result: User) => {\r\n this.userStore.setUser(user);\r\n this.toastrService.success('', 'User app settings is updated.');\r\n },\r\n () => {\r\n this.toastrService.danger('', 'User updating failed.');\r\n }\r\n );\r\n }\r\n\r\n\r\n private onSaveAnyway(isRedirectingToSubscriptions): void {\r\n\r\n this.isSaving = true;\r\n let logo;\r\n if (this.logoEditSrc)\r\n logo = new File([base64ToFile(this.logoEditSrc)], this.fileName, {\r\n type: 'image/png',\r\n });\r\n else logo = this.logoSrc;\r\n let appLogo;\r\n if (this.appLogoEditSrc)\r\n appLogo = new File([base64ToFile(this.appLogoEditSrc)], this.fileName, {\r\n type: 'image/png',\r\n });\r\n else appLogo = this.appLogoSrc;\r\n this.settingsService\r\n .updateCurrent({\r\n themeName: this.userStore.settings(true)?.themeName || 'default',\r\n logo,\r\n appLogo,\r\n appColor: this.splashColor,\r\n color: this.color,\r\n appName: this.appName,\r\n })\r\n .pipe(\r\n takeUntil(this.unsubscribe$),\r\n last(),\r\n map((res) => res.body),\r\n )\r\n .subscribe(\r\n (settings) => {\r\n this.logoSrc =\r\n this.logoEditSrc?.length > 0 ? settings.logo : this.logoSrc;\r\n this.logoEditSrc = null;\r\n this.userStore.setSettings(settings);\r\n if (!isRedirectingToSubscriptions) this.toastrService.success('', 'Branding config is updated.');\r\n this.isSaving = false;\r\n },\r\n () => {\r\n if (!isRedirectingToSubscriptions) this.toastrService.danger('', 'Branding config updating failed.');\r\n this.isSaving = false;\r\n },\r\n );\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ngx-help-guides',\r\n templateUrl: './help-guides.component.html',\r\n styleUrls: ['./help-guides.component.scss']\r\n})\r\nexport class HelpGuidesComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","

Help help using TrainerFriend?

\r\n

\r\n Feeling a little lost on how to use TrainerFriend? We have created a series of short video tutorial to help you get\r\n started. Videos are recorded while using the app on a PC/Desktop but the process is the same using the mobile\r\n version.\r\n

\r\n\r\n
\r\n\r\n
\r\n \r\n\r\n\r\n
\r\n
\r\n\r\n

Adding a new client.

\r\n
\r\n

Everything starts with a client. Learn how to add a client and the various options.


Once a client is created, it can always be updated by going onto Clients => General Info.

\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n","\r\n
To Get Started, Connect to with Stripe
\r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { PaymentSettingsService } from 'app/@core/backend/common/services/CalorieFriend/payment-settings.service';\r\nimport { NbToastrService } from '@nebular/theme';\r\nimport { Observable } from 'rxjs';\r\nimport { StripeAccount } from 'app/@core/interfaces/common/stripe';\r\nimport { finalize } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-payment-settings',\r\n templateUrl: './payment-settings.component.html',\r\n styleUrls: ['./payment-settings.component.scss'],\r\n})\r\nexport class PaymentSettingsComponent implements OnInit {\r\n constructor(\r\n private paymentSettingsService: PaymentSettingsService,\r\n private toastrService: NbToastrService\r\n ) {}\r\n\r\n connecting = false;\r\n currentAccount: Observable;\r\n\r\n ngOnInit() {\r\n this.currentAccount = this.paymentSettingsService.currentAccount;\r\n this.paymentSettingsService.isLoading.subscribe((status: boolean) => {\r\n this.connecting = status;\r\n });\r\n }\r\n\r\n connectToStripe() {\r\n this.connecting = true;\r\n this.paymentSettingsService.connectToStripe().subscribe({\r\n next: () => {\r\n this.connecting = false;\r\n },\r\n error: (e: any) => {\r\n this.connecting = false;\r\n this.toastrService.danger(e.message, 'An error occurred');\r\n },\r\n });\r\n }\r\n\r\n reset() {\r\n this.connecting = true;\r\n this.paymentSettingsService.reset().subscribe((status: boolean) => {\r\n this.connecting = false;\r\n });\r\n }\r\n\r\n expressLogin() {\r\n this.connecting = true;\r\n this.paymentSettingsService.expressLogin().pipe(finalize(()=>this.connecting = false)).subscribe((res) => {\r\n window.open(res.url, \"_blank\");\r\n });\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n \r\n Packages & Subscriptions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Invoices\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Settings\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { PaymentSettingsService } from 'app/@core/backend/common/services/CalorieFriend/payment-settings.service';\r\nimport { StripeAccount } from 'app/@core/interfaces/common/stripe';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-billing',\r\n templateUrl: './billing.component.html',\r\n styleUrls: ['./billing.component.scss']\r\n})\r\nexport class BillingComponent implements OnInit {\r\n\r\n currentAccount: Observable;\r\n isLoading: boolean = false;\r\n\r\n constructor(private paymentSettingsService: PaymentSettingsService) { }\r\n\r\n ngOnInit() {\r\n this.paymentSettingsService.isLoading.subscribe((status: boolean): void =>{\r\n this.isLoading = status;\r\n });\r\n this.currentAccount = this.paymentSettingsService.currentAccount;\r\n }\r\n\r\n}\r\n","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'app-program-templates',\r\n templateUrl: './program-templates.component.html',\r\n styleUrls: ['./program-templates.component.scss'],\r\n})\r\nexport class ProgramTemplatesComponents {\r\n \r\n}","\r\n\r\n","
\r\n
\r\n \r\n Back to Program Template\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
    \r\n \r\n Plan Name\r\n \r\n
  • \r\n \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Programs\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Workout Plans\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Meal Plans\r\n \r\n \r\n \r\n \r\n
\r\n
","import { Component, OnInit } from \"@angular/core\";\r\nimport { MatTabChangeEvent } from \"@angular/material/tabs\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { Location } from '@angular/common';\r\nimport { PlanDataService } from \"../../Plans/PlanDef/PlanService\";\r\nimport { ProgramTemplateData, TemplatePlan } from \"app/@core/interfaces/common/CalorieFriend/plan\";\r\nimport { ProgramPlans } from \"app/@core/interfaces/common/CalorieFriend/program-template\";\r\nimport { finalize } from \"rxjs/operators\";\r\n\r\n\r\n@Component({\r\n selector: 'app-program-template-edit',\r\n templateUrl: 'program-template-edit.html',\r\n styleUrls: ['./program-template-edit.scss'],\r\n})\r\nexport class ProgramTemplateEditComponent implements OnInit {\r\n public selectedIndex: number = 0;\r\n public template :TemplatePlan;\r\n constructor(private router: Router, private activeRoute: ActivatedRoute, private location: Location,\r\n private programTemplateService: ProgramTemplateData) { }\r\n\r\n ngOnInit(): void {\r\n this.activeRoute.params.subscribe((params) => {\r\n this.programTemplateService.GetTemplateById(params.id).subscribe((data) => {\r\n this.template = data;\r\n });\r\n });\r\n this.activeRoute.queryParams.subscribe((params) => {\r\n if(params.activeTab){\r\n this.selectedIndex = params.activeTab;\r\n }\r\n });\r\n }\r\n\r\n public onChangeTab(event: MatTabChangeEvent) {\r\n console.log(event);\r\n this.selectedIndex = event.index;\r\n const tabIndex = event.index;\r\n const currentUrl = this.location.path();\r\n const newUrl = this.updateUrlParameter(currentUrl, 'activeTab', tabIndex.toString());\r\n this.location.replaceState(newUrl);\r\n }\r\n\r\n Back(){\r\n this.router.navigate(['/pages/CalorieFriend/program-template']);\r\n } \r\n public updatingTemplate: boolean = false;\r\n\r\n onNameChange($event) {\r\n if(this.template && (typeof $event) === \"string\" && this.template?.name!== $event) {\r\n this.template.name = $event;\r\n this.updatingTemplate = true;\r\n this.programTemplateService.UpdateTemplate(this.template, true)\r\n .pipe(finalize(() => this.updatingTemplate = false))\r\n .subscribe((data) => {\r\n });\r\n }\r\n }\r\n\r\n updateUrlParameter(url: string, param: string, paramVal: string): string {\r\n let newAdditionalURL = \"\";\r\n let tempArray = url.split(\"?\");\r\n let baseURL = tempArray[0];\r\n let additionalURL = tempArray[1];\r\n let temp = \"\";\r\n if (additionalURL) {\r\n tempArray = additionalURL.split(\"&\");\r\n for (let i=0; i) {}\r\n removeOption(index: number): void {\r\n (this.field.templateOptions.options as []).splice(index,1)\r\n }\r\n addOption(): void {\r\n (this.field.templateOptions.options as any[]).push({\r\n label: '',\r\n value: ''\r\n })\r\n }\r\n\r\n public get validKeyString(): string {\r\n if(!this.field.key || this.field.key?.toString().trim() === '') {\r\n return 'Key is required'\r\n }\r\n let foundedKey = this.formStructureFields.find((field) => field.key === this.field.key);\r\n let foundKeyIsInDefault = defaultFormValues.find((field) => field.key === this.field.key);\r\n if(foundedKey || foundKeyIsInDefault) {\r\n return 'Key already exists';\r\n }\r\n return null;\r\n }\r\n\r\n onSubmit() {\r\n if(this.field.templateOptions.options) {\r\n this.field.templateOptions.options = (this.field.templateOptions.options as any[])?.map(x => ({\r\n ...x,\r\n value: x.label\r\n }));\r\n }\r\n this.dialogRef.close(this.field);\r\n }\r\n\r\n close() {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","import { Injectable, Inject, EventEmitter, Component, Renderer2, ElementRef, Input, Output, ViewChild, SecurityContext, forwardRef, ChangeDetectorRef, Attribute, HostBinding, HostListener, ViewEncapsulation, NgModule } from '@angular/core';\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/angular-editor.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common/http';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@angular/forms';\nimport * as ɵngcc4 from '@angular/platform-browser';\n\nconst _c0 = [\"fileInput\"];\nfunction AngularEditorToolbarComponent_div_0_div_55_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵelementStart(1, \"ae-select\", 63);\n ɵngcc0.ɵɵlistener(\"ngModelChange\", function AngularEditorToolbarComponent_div_0_div_55_Template_ae_select_ngModelChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(2); return ctx_r5.customClassId = $event; })(\"change\", function AngularEditorToolbarComponent_div_0_div_55_Template_ae_select_change_1_listener() { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r7 = ɵngcc0.ɵɵnextContext(2); return ctx_r7.setCustomClass(ctx_r7.customClassId); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"options\", ctx_r3.customClassList)(\"ngModel\", ctx_r3.customClassId)(\"disabled\", ctx_r3.htmlMode)(\"hidden\", ctx_r3.isButtonHidden(\"customClasses\"));\n} }\nfunction AngularEditorToolbarComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 1);\n ɵngcc0.ɵɵelementStart(1, \"div\", 2);\n ɵngcc0.ɵɵelementStart(2, \"button\", 3);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_2_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.triggerCommand(\"undo\"); });\n ɵngcc0.ɵɵelement(3, \"i\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"button\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_4_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.triggerCommand(\"redo\"); });\n ɵngcc0.ɵɵelement(5, \"i\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 2);\n ɵngcc0.ɵɵelementStart(7, \"button\", 7);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_7_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.triggerCommand(\"bold\"); });\n ɵngcc0.ɵɵelement(8, \"i\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(9, \"button\", 9);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_9_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.triggerCommand(\"italic\"); });\n ɵngcc0.ɵɵelement(10, \"i\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(11, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_11_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.triggerCommand(\"underline\"); });\n ɵngcc0.ɵɵelement(12, \"i\", 12);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(13, \"button\", 13);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_13_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.triggerCommand(\"strikeThrough\"); });\n ɵngcc0.ɵɵelement(14, \"i\", 14);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(15, \"button\", 15);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_15_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ctx_r15.triggerCommand(\"subscript\"); });\n ɵngcc0.ɵɵelement(16, \"i\", 16);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(17, \"button\", 17);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_17_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.triggerCommand(\"superscript\"); });\n ɵngcc0.ɵɵelement(18, \"i\", 18);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(19, \"div\", 2);\n ɵngcc0.ɵɵelementStart(20, \"button\", 19);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_20_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r17 = ɵngcc0.ɵɵnextContext(); return ctx_r17.triggerCommand(\"justifyLeft\"); });\n ɵngcc0.ɵɵelement(21, \"i\", 20);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(22, \"button\", 21);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_22_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.triggerCommand(\"justifyCenter\"); });\n ɵngcc0.ɵɵelement(23, \"i\", 22);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(24, \"button\", 23);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_24_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r19 = ɵngcc0.ɵɵnextContext(); return ctx_r19.triggerCommand(\"justifyRight\"); });\n ɵngcc0.ɵɵelement(25, \"i\", 24);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(26, \"button\", 25);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_26_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.triggerCommand(\"justifyFull\"); });\n ɵngcc0.ɵɵelement(27, \"i\", 26);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(28, \"div\", 2);\n ɵngcc0.ɵɵelementStart(29, \"button\", 27);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_29_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.triggerCommand(\"indent\"); });\n ɵngcc0.ɵɵelement(30, \"i\", 28);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(31, \"button\", 29);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_31_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r22 = ɵngcc0.ɵɵnextContext(); return ctx_r22.triggerCommand(\"outdent\"); });\n ɵngcc0.ɵɵelement(32, \"i\", 30);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(33, \"div\", 2);\n ɵngcc0.ɵɵelementStart(34, \"button\", 31);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_34_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r23 = ɵngcc0.ɵɵnextContext(); return ctx_r23.triggerCommand(\"insertUnorderedList\"); });\n ɵngcc0.ɵɵelement(35, \"i\", 32);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(36, \"button\", 33);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_36_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r24 = ɵngcc0.ɵɵnextContext(); return ctx_r24.triggerCommand(\"insertOrderedList\"); });\n ɵngcc0.ɵɵelement(37, \"i\", 34);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(38, \"div\", 2);\n ɵngcc0.ɵɵelementStart(39, \"ae-select\", 35);\n ɵngcc0.ɵɵlistener(\"ngModelChange\", function AngularEditorToolbarComponent_div_0_Template_ae_select_ngModelChange_39_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r25 = ɵngcc0.ɵɵnextContext(); return ctx_r25.block = $event; })(\"change\", function AngularEditorToolbarComponent_div_0_Template_ae_select_change_39_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r26 = ɵngcc0.ɵɵnextContext(); return ctx_r26.triggerCommand(ctx_r26.block); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(40, \"div\", 2);\n ɵngcc0.ɵɵelementStart(41, \"ae-select\", 36);\n ɵngcc0.ɵɵlistener(\"ngModelChange\", function AngularEditorToolbarComponent_div_0_Template_ae_select_ngModelChange_41_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r27 = ɵngcc0.ɵɵnextContext(); return ctx_r27.fontName = $event; })(\"change\", function AngularEditorToolbarComponent_div_0_Template_ae_select_change_41_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r28 = ɵngcc0.ɵɵnextContext(); return ctx_r28.setFontName(ctx_r28.fontName); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(42, \"div\", 2);\n ɵngcc0.ɵɵelementStart(43, \"ae-select\", 37);\n ɵngcc0.ɵɵlistener(\"ngModelChange\", function AngularEditorToolbarComponent_div_0_Template_ae_select_ngModelChange_43_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r29 = ɵngcc0.ɵɵnextContext(); return ctx_r29.fontSize = $event; })(\"change\", function AngularEditorToolbarComponent_div_0_Template_ae_select_change_43_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r30 = ɵngcc0.ɵɵnextContext(); return ctx_r30.setFontSize(ctx_r30.fontSize); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(44, \"div\", 2);\n ɵngcc0.ɵɵelementStart(45, \"input\", 38, 39);\n ɵngcc0.ɵɵlistener(\"change\", function AngularEditorToolbarComponent_div_0_Template_input_change_45_listener() { ɵngcc0.ɵɵrestoreView(_r9); const _r1 = ɵngcc0.ɵɵreference(46); const ctx_r31 = ɵngcc0.ɵɵnextContext(); return ctx_r31.insertColor(_r1.value, \"textColor\"); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(47, \"button\", 40);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_47_listener() { ɵngcc0.ɵɵrestoreView(_r9); const _r1 = ɵngcc0.ɵɵreference(46); const ctx_r32 = ɵngcc0.ɵɵnextContext(); ctx_r32.focus(); return _r1.click(); });\n ɵngcc0.ɵɵelementStart(48, \"span\", 41);\n ɵngcc0.ɵɵelement(49, \"i\", 42);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(50, \"input\", 38, 43);\n ɵngcc0.ɵɵlistener(\"change\", function AngularEditorToolbarComponent_div_0_Template_input_change_50_listener() { ɵngcc0.ɵɵrestoreView(_r9); const _r2 = ɵngcc0.ɵɵreference(51); const ctx_r33 = ɵngcc0.ɵɵnextContext(); return ctx_r33.insertColor(_r2.value, \"backgroundColor\"); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(52, \"button\", 44);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_52_listener() { ɵngcc0.ɵɵrestoreView(_r9); const _r2 = ɵngcc0.ɵɵreference(51); const ctx_r34 = ɵngcc0.ɵɵnextContext(); ctx_r34.focus(); return _r2.click(); });\n ɵngcc0.ɵɵelementStart(53, \"span\", 45);\n ɵngcc0.ɵɵelement(54, \"i\", 42);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(55, AngularEditorToolbarComponent_div_0_div_55_Template, 2, 4, \"div\", 46);\n ɵngcc0.ɵɵelementStart(56, \"div\", 2);\n ɵngcc0.ɵɵelementStart(57, \"button\", 47);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_57_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r35 = ɵngcc0.ɵɵnextContext(); return ctx_r35.insertUrl(); });\n ɵngcc0.ɵɵelement(58, \"i\", 48);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(59, \"button\", 49);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_59_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r36 = ɵngcc0.ɵɵnextContext(); return ctx_r36.triggerCommand(\"unlink\"); });\n ɵngcc0.ɵɵelement(60, \"i\", 50);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(61, \"input\", 51, 52);\n ɵngcc0.ɵɵlistener(\"change\", function AngularEditorToolbarComponent_div_0_Template_input_change_61_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r37 = ɵngcc0.ɵɵnextContext(); return ctx_r37.onFileChanged($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(63, \"button\", 53);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_63_listener() { ɵngcc0.ɵɵrestoreView(_r9); const _r4 = ɵngcc0.ɵɵreference(62); const ctx_r38 = ɵngcc0.ɵɵnextContext(); ctx_r38.focus(); return _r4.click(); });\n ɵngcc0.ɵɵelement(64, \"i\", 54);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(65, \"button\", 55);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_65_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r39 = ɵngcc0.ɵɵnextContext(); return ctx_r39.insertVideo(); });\n ɵngcc0.ɵɵelement(66, \"i\", 56);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(67, \"button\", 57);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_67_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r40 = ɵngcc0.ɵɵnextContext(); return ctx_r40.triggerCommand(\"insertHorizontalRule\"); });\n ɵngcc0.ɵɵelement(68, \"i\", 58);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(69, \"div\", 2);\n ɵngcc0.ɵɵelementStart(70, \"button\", 59);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_70_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r41 = ɵngcc0.ɵɵnextContext(); return ctx_r41.triggerCommand(\"removeFormat\"); });\n ɵngcc0.ɵɵelement(71, \"i\", 60);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(72, \"div\", 2);\n ɵngcc0.ɵɵelementStart(73, \"button\", 61);\n ɵngcc0.ɵɵlistener(\"click\", function AngularEditorToolbarComponent_div_0_Template_button_click_73_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r42 = ɵngcc0.ɵɵnextContext(); return ctx_r42.triggerCommand(\"toggleEditorMode\"); });\n ɵngcc0.ɵɵelement(74, \"i\", 62);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"hidden\", ctx_r0.isButtonHidden(\"undo\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"hidden\", ctx_r0.isButtonHidden(\"redo\"));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"id\", \"bold-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"bold\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"italic-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"italic\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"underline-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"underline\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"strikeThrough-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"strikeThrough\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"subscript-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"subscript\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"superscript-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"superscript\"));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"id\", \"justifyLeft-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"justifyLeft\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"justifyCenter-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"justifyCenter\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"justifyRight-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"justifyRight\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"justifyFull-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"justifyFull\"));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"id\", \"indent-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"indent\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"outdent-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"outdent\"));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"id\", \"insertUnorderedList-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"insertUnorderedList\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"insertOrderedList-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"insertOrderedList\"));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"options\", ctx_r0.headings)(\"ngModel\", ctx_r0.block)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"heading\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"options\", ctx_r0.fonts)(\"ngModel\", ctx_r0.fontName)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"fontName\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"options\", ctx_r0.fontSizes)(\"ngModel\", ctx_r0.fontSize)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"fontSize\"));\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"id\", \"foregroundColorPicker-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"textColor\"));\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"id\", \"backgroundColorPicker-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"backgroundColor\"));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0._customClasses);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"link-\" + ctx_r0.id)(\"disabled\", ctx_r0.isLinkButtonDisabled)(\"hidden\", ctx_r0.isButtonHidden(\"link\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"unlink-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode || !ctx_r0.linkSelected)(\"hidden\", ctx_r0.isButtonHidden(\"unlink\"));\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"id\", \"insertImage-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"insertImage\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"insertVideo-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"insertVideo\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"id\", \"insertHorizontalRule-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"insertHorizontalRule\"));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"id\", \"clearFormatting-\" + ctx_r0.id)(\"disabled\", ctx_r0.htmlMode)(\"hidden\", ctx_r0.isButtonHidden(\"removeFormat\"));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"id\", \"toggleEditorMode-\" + ctx_r0.id)(\"hidden\", ctx_r0.isButtonHidden(\"toggleEditorMode\"));\n} }\nconst _c1 = [\"editor\"];\nconst _c2 = [\"editorWrapper\"];\nconst _c3 = [\"editorToolbar\"];\nfunction AngularEditorComponent_angular_editor_toolbar_2_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"angular-editor-toolbar\", 8, 9);\n ɵngcc0.ɵɵlistener(\"execute\", function AngularEditorComponent_angular_editor_toolbar_2_Template_angular_editor_toolbar_execute_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.executeCommand($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"id\", ctx_r1.id)(\"uploadUrl\", ctx_r1.config.uploadUrl)(\"showToolbar\", ctx_r1.config.showToolbar !== undefined ? ctx_r1.config.showToolbar : true)(\"fonts\", ctx_r1.getFonts())(\"customClasses\", ctx_r1.config.customClasses)(\"defaultFontName\", ctx_r1.config.defaultFontName)(\"defaultFontSize\", ctx_r1.config.defaultFontSize)(\"hiddenButtons\", ctx_r1.config.toolbarHiddenButtons);\n} }\nfunction AngularEditorComponent_angular_editor_toolbar_9_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"angular-editor-toolbar\", 8, 9);\n ɵngcc0.ɵɵlistener(\"execute\", function AngularEditorComponent_angular_editor_toolbar_9_Template_angular_editor_toolbar_execute_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.executeCommand($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"id\", ctx_r4.id)(\"uploadUrl\", ctx_r4.config.uploadUrl)(\"showToolbar\", ctx_r4.config.showToolbar !== undefined ? ctx_r4.config.showToolbar : true)(\"fonts\", ctx_r4.getFonts())(\"customClasses\", ctx_r4.config.customClasses)(\"defaultFontName\", ctx_r4.config.defaultFontName)(\"defaultFontSize\", ctx_r4.config.defaultFontSize)(\"hiddenButtons\", ctx_r4.config.toolbarHiddenButtons);\n} }\nconst _c4 = [\"labelButton\"];\nconst _c5 = function (a0, a1) { return { \"selected\": a0, \"focused\": a1 }; };\nfunction AeSelectComponent_button_8_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 9);\n ɵngcc0.ɵɵlistener(\"click\", function AeSelectComponent_button_8_Template_button_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const item_r3 = ctx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.optionSelect(item_r3, $event); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r3 = ctx.$implicit;\n const i_r4 = ctx.index;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction2(2, _c5, item_r3.value === ctx_r1.value, i_r4 === ctx_r1.optionId));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", item_r3.label, \" \");\n} }\nfunction AeSelectComponent_span_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 10);\n ɵngcc0.ɵɵtext(1, \"No items for select\");\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c6 = function (a0) { return { \"ae-expanded\": a0 }; };\nfunction UploadResponse() { }\nif (false) {\n /** @type {?} */\n UploadResponse.prototype.imageUrl;\n}\nclass AngularEditorService {\n /**\n * @param {?} http\n * @param {?} doc\n */\n constructor(http, doc) {\n this.http = http;\n this.doc = doc;\n /**\n * save selection when the editor is focussed out\n */\n this.saveSelection = (/**\n * @return {?}\n */\n () => {\n if (this.doc.getSelection) {\n /** @type {?} */\n const sel = this.doc.getSelection();\n if (sel.getRangeAt && sel.rangeCount) {\n this.savedSelection = sel.getRangeAt(0);\n this.selectedText = sel.toString();\n }\n }\n else if (this.doc.getSelection && this.doc.createRange) {\n this.savedSelection = document.createRange();\n }\n else {\n this.savedSelection = null;\n }\n });\n }\n /**\n * Executed command from editor header buttons exclude toggleEditorMode\n * @param {?} command string from triggerCommand\n * @return {?}\n */\n executeCommand(command) {\n /** @type {?} */\n const commands = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'pre'];\n if (commands.includes(command)) {\n this.doc.execCommand('formatBlock', false, command);\n return;\n }\n this.doc.execCommand(command, false, null);\n }\n /**\n * Create URL link\n * @param {?} url string from UI prompt\n * @return {?}\n */\n createLink(url) {\n if (!url.includes('http')) {\n this.doc.execCommand('createlink', false, url);\n }\n else {\n /** @type {?} */\n const newUrl = '' + this.selectedText + '';\n this.insertHtml(newUrl);\n }\n }\n /**\n * insert color either font or background\n *\n * @param {?} color color to be inserted\n * @param {?} where where the color has to be inserted either text/background\n * @return {?}\n */\n insertColor(color, where) {\n /** @type {?} */\n const restored = this.restoreSelection();\n if (restored) {\n if (where === 'textColor') {\n this.doc.execCommand('foreColor', false, color);\n }\n else {\n this.doc.execCommand('hiliteColor', false, color);\n }\n }\n }\n /**\n * Set font name\n * @param {?} fontName string\n * @return {?}\n */\n setFontName(fontName) {\n this.doc.execCommand('fontName', false, fontName);\n }\n /**\n * Set font size\n * @param {?} fontSize string\n * @return {?}\n */\n setFontSize(fontSize) {\n this.doc.execCommand('fontSize', false, fontSize);\n }\n /**\n * Create raw HTML\n * @param {?} html HTML string\n * @return {?}\n */\n insertHtml(html) {\n /** @type {?} */\n const isHTMLInserted = this.doc.execCommand('insertHTML', false, html);\n if (!isHTMLInserted) {\n throw new Error('Unable to perform the operation');\n }\n }\n /**\n * restore selection when the editor is focused in\n *\n * saved selection when the editor is focused out\n * @return {?}\n */\n restoreSelection() {\n if (this.savedSelection) {\n if (this.doc.getSelection) {\n /** @type {?} */\n const sel = this.doc.getSelection();\n sel.removeAllRanges();\n sel.addRange(this.savedSelection);\n return true;\n }\n else if (this.doc.getSelection /*&& this.savedSelection.select*/) {\n // this.savedSelection.select();\n return true;\n }\n }\n else {\n return false;\n }\n }\n /**\n * setTimeout used for execute 'saveSelection' method in next event loop iteration\n * @param {?} callbackFn\n * @param {?=} timeout\n * @return {?}\n */\n executeInNextQueueIteration(callbackFn, timeout = 1e2) {\n setTimeout(callbackFn, timeout);\n }\n /**\n * check any selection is made or not\n * @private\n * @return {?}\n */\n checkSelection() {\n /** @type {?} */\n const selectedText = this.savedSelection.toString();\n if (selectedText.length === 0) {\n throw new Error('No Selection Made');\n }\n return true;\n }\n /**\n * Upload file to uploadUrl\n * @param {?} file The file\n * @return {?}\n */\n uploadImage(file) {\n /** @type {?} */\n const uploadData = new FormData();\n uploadData.append('file', file, file.name);\n return this.http.post(this.uploadUrl, uploadData, {\n reportProgress: true,\n observe: 'events',\n withCredentials: this.uploadWithCredentials,\n });\n }\n /**\n * Insert image with Url\n * @param {?} imageUrl The imageUrl.\n * @return {?}\n */\n insertImage(imageUrl) {\n this.doc.execCommand('insertImage', false, imageUrl);\n }\n /**\n * @param {?} separator\n * @return {?}\n */\n setDefaultParagraphSeparator(separator) {\n this.doc.execCommand('defaultParagraphSeparator', false, separator);\n }\n /**\n * @param {?} customClass\n * @return {?}\n */\n createCustomClass(customClass) {\n /** @type {?} */\n let newTag = this.selectedText;\n if (customClass) {\n /** @type {?} */\n const tagName = customClass.tag ? customClass.tag : 'span';\n newTag = '<' + tagName + ' class=\"' + customClass.class + '\">' + this.selectedText + '';\n }\n this.insertHtml(newTag);\n }\n /**\n * @param {?} videoUrl\n * @return {?}\n */\n insertVideo(videoUrl) {\n if (videoUrl.match('www.youtube.com')) {\n this.insertYouTubeVideoTag(videoUrl);\n }\n if (videoUrl.match('vimeo.com')) {\n this.insertVimeoVideoTag(videoUrl);\n }\n }\n /**\n * @private\n * @param {?} videoUrl\n * @return {?}\n */\n insertYouTubeVideoTag(videoUrl) {\n /** @type {?} */\n const id = videoUrl.split('v=')[1];\n /** @type {?} */\n const imageUrl = `https://img.youtube.com/vi/${id}/0.jpg`;\n /** @type {?} */\n const thumbnail = `\n
\n \n \n \"click\n \n
`;\n this.insertHtml(thumbnail);\n }\n /**\n * @private\n * @param {?} videoUrl\n * @return {?}\n */\n insertVimeoVideoTag(videoUrl) {\n /** @type {?} */\n const sub = this.http.get(`https://vimeo.com/api/oembed.json?url=${videoUrl}`).subscribe((/**\n * @param {?} data\n * @return {?}\n */\n data => {\n /** @type {?} */\n const imageUrl = data.thumbnail_url_with_play_button;\n /** @type {?} */\n const thumbnail = `
\n \n \"${data.title}\"/\n \n
`;\n this.insertHtml(thumbnail);\n sub.unsubscribe();\n }));\n }\n /**\n * @param {?} node\n * @return {?}\n */\n nextNode(node) {\n if (node.hasChildNodes()) {\n return node.firstChild;\n }\n else {\n while (node && !node.nextSibling) {\n node = node.parentNode;\n }\n if (!node) {\n return null;\n }\n return node.nextSibling;\n }\n }\n /**\n * @param {?} range\n * @param {?} includePartiallySelectedContainers\n * @return {?}\n */\n getRangeSelectedNodes(range, includePartiallySelectedContainers) {\n /** @type {?} */\n let node = range.startContainer;\n /** @type {?} */\n const endNode = range.endContainer;\n /** @type {?} */\n let rangeNodes = [];\n // Special case for a range that is contained within a single node\n if (node === endNode) {\n rangeNodes = [node];\n }\n else {\n // Iterate nodes until we hit the end container\n while (node && node !== endNode) {\n rangeNodes.push(node = this.nextNode(node));\n }\n // Add partially selected nodes at the start of the range\n node = range.startContainer;\n while (node && node !== range.commonAncestorContainer) {\n rangeNodes.unshift(node);\n node = node.parentNode;\n }\n }\n // Add ancestors of the range container, if required\n if (includePartiallySelectedContainers) {\n node = range.commonAncestorContainer;\n while (node) {\n rangeNodes.push(node);\n node = node.parentNode;\n }\n }\n return rangeNodes;\n }\n /**\n * @return {?}\n */\n getSelectedNodes() {\n /** @type {?} */\n const nodes = [];\n if (this.doc.getSelection) {\n /** @type {?} */\n const sel = this.doc.getSelection();\n for (let i = 0, len = sel.rangeCount; i < len; ++i) {\n nodes.push.apply(nodes, this.getRangeSelectedNodes(sel.getRangeAt(i), true));\n }\n }\n return nodes;\n }\n /**\n * @param {?} el\n * @return {?}\n */\n replaceWithOwnChildren(el) {\n /** @type {?} */\n const parent = el.parentNode;\n while (el.hasChildNodes()) {\n parent.insertBefore(el.firstChild, el);\n }\n parent.removeChild(el);\n }\n /**\n * @param {?} tagNames\n * @return {?}\n */\n removeSelectedElements(tagNames) {\n /** @type {?} */\n const tagNamesArray = tagNames.toLowerCase().split(',');\n this.getSelectedNodes().forEach((/**\n * @param {?} node\n * @return {?}\n */\n (node) => {\n if (node.nodeType === 1 &&\n tagNamesArray.indexOf(node.tagName.toLowerCase()) > -1) {\n // Remove the node and replace it with its children\n this.replaceWithOwnChildren(node);\n }\n }));\n }\n}\nAngularEditorService.ɵfac = function AngularEditorService_Factory(t) { return new (t || AngularEditorService)(ɵngcc0.ɵɵinject(ɵngcc1.HttpClient), ɵngcc0.ɵɵinject(DOCUMENT)); };\nAngularEditorService.ɵprov = ɵngcc0.ɵɵdefineInjectable({ token: AngularEditorService, factory: AngularEditorService.ɵfac });\n/** @nocollapse */\nAngularEditorService.ctorParameters = () => [\n { type: HttpClient },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AngularEditorService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.HttpClient }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\nif (false) {\n /** @type {?} */\n AngularEditorService.prototype.savedSelection;\n /** @type {?} */\n AngularEditorService.prototype.selectedText;\n /** @type {?} */\n AngularEditorService.prototype.uploadUrl;\n /** @type {?} */\n AngularEditorService.prototype.uploadWithCredentials;\n /**\n * save selection when the editor is focussed out\n * @type {?}\n */\n AngularEditorService.prototype.saveSelection;\n /**\n * @type {?}\n * @private\n */\n AngularEditorService.prototype.http;\n /**\n * @type {?}\n * @private\n */\n AngularEditorService.prototype.doc;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/config.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction CustomClass() { }\nif (false) {\n /** @type {?} */\n CustomClass.prototype.name;\n /** @type {?} */\n CustomClass.prototype.class;\n /** @type {?|undefined} */\n CustomClass.prototype.tag;\n}\n/**\n * @record\n */\nfunction Font() { }\nif (false) {\n /** @type {?} */\n Font.prototype.name;\n /** @type {?} */\n Font.prototype.class;\n}\n/**\n * @record\n */\nfunction AngularEditorConfig() { }\nif (false) {\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.editable;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.spellcheck;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.height;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.minHeight;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.maxHeight;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.width;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.minWidth;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.translate;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.enableToolbar;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.showToolbar;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.placeholder;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.defaultParagraphSeparator;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.defaultFontName;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.defaultFontSize;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.uploadUrl;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.uploadWithCredentials;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.fonts;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.customClasses;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.sanitize;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.toolbarPosition;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.outline;\n /** @type {?|undefined} */\n AngularEditorConfig.prototype.toolbarHiddenButtons;\n}\n/** @type {?} */\nconst angularEditorConfig = {\n editable: true,\n spellcheck: true,\n height: 'auto',\n minHeight: '0',\n maxHeight: 'auto',\n width: 'auto',\n minWidth: '0',\n translate: 'yes',\n enableToolbar: true,\n showToolbar: true,\n placeholder: 'Enter text here...',\n defaultParagraphSeparator: '',\n defaultFontName: '',\n defaultFontSize: '',\n fonts: [\n { class: 'arial', name: 'Arial' },\n { class: 'times-new-roman', name: 'Times New Roman' },\n { class: 'calibri', name: 'Calibri' },\n { class: 'comic-sans-ms', name: 'Comic Sans MS' }\n ],\n uploadUrl: 'v1/image',\n uploadWithCredentials: false,\n sanitize: true,\n toolbarPosition: 'top',\n outline: true,\n};\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/angular-editor-toolbar.component.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass AngularEditorToolbarComponent {\n /**\n * @param {?} r\n * @param {?} editorService\n * @param {?} er\n * @param {?} doc\n */\n constructor(r, editorService, er, doc) {\n this.r = r;\n this.editorService = editorService;\n this.er = er;\n this.doc = doc;\n this.htmlMode = false;\n this.linkSelected = false;\n this.block = 'default';\n this.fontName = 'Times New Roman';\n this.fontSize = '3';\n this.headings = [\n {\n label: 'Heading 1',\n value: 'h1',\n },\n {\n label: 'Heading 2',\n value: 'h2',\n },\n {\n label: 'Heading 3',\n value: 'h3',\n },\n {\n label: 'Heading 4',\n value: 'h4',\n },\n {\n label: 'Heading 5',\n value: 'h5',\n },\n {\n label: 'Heading 6',\n value: 'h6',\n },\n {\n label: 'Heading 7',\n value: 'h7',\n },\n {\n label: 'Paragraph',\n value: 'p',\n },\n {\n label: 'Predefined',\n value: 'pre'\n },\n {\n label: 'Standard',\n value: 'div'\n },\n {\n label: 'default',\n value: 'default'\n }\n ];\n this.fontSizes = [\n {\n label: '1',\n value: '1',\n },\n {\n label: '2',\n value: '2',\n },\n {\n label: '3',\n value: '3',\n },\n {\n label: '4',\n value: '4',\n },\n {\n label: '5',\n value: '5',\n },\n {\n label: '6',\n value: '6',\n },\n {\n label: '7',\n value: '7',\n }\n ];\n this.customClassId = '-1';\n this.customClassList = [{ label: '', value: '' }];\n // uploadUrl: string;\n this.tagMap = {\n BLOCKQUOTE: 'indent',\n A: 'link'\n };\n this.select = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P', 'PRE', 'DIV'];\n this.buttons = ['bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'justifyLeft', 'justifyCenter',\n 'justifyRight', 'justifyFull', 'indent', 'outdent', 'insertUnorderedList', 'insertOrderedList', 'link'];\n this.fonts = [{ label: '', value: '' }];\n this.execute = new EventEmitter();\n }\n /**\n * @param {?} classes\n * @return {?}\n */\n set customClasses(classes) {\n if (classes) {\n this._customClasses = classes;\n this.customClassList = this._customClasses.map((/**\n * @param {?} x\n * @param {?} i\n * @return {?}\n */\n (x, i) => ({ label: x.name, value: i.toString() })));\n this.customClassList.unshift({ label: 'Clear Class', value: '-1' });\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set defaultFontName(value) {\n if (value) {\n this.fontName = value;\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set defaultFontSize(value) {\n if (value) {\n this.fontSize = value;\n }\n }\n /**\n * @return {?}\n */\n get isLinkButtonDisabled() {\n return this.htmlMode || !Boolean(this.editorService.selectedText);\n }\n /**\n * Trigger command from editor header buttons\n * @param {?} command string from toolbar buttons\n * @return {?}\n */\n triggerCommand(command) {\n this.execute.emit(command);\n }\n /**\n * highlight editor buttons when cursor moved or positioning\n * @return {?}\n */\n triggerButtons() {\n if (!this.showToolbar) {\n return;\n }\n this.buttons.forEach((/**\n * @param {?} e\n * @return {?}\n */\n e => {\n /** @type {?} */\n const result = this.doc.queryCommandState(e);\n /** @type {?} */\n const elementById = this.doc.getElementById(e + '-' + this.id);\n if (result) {\n this.r.addClass(elementById, 'active');\n }\n else {\n this.r.removeClass(elementById, 'active');\n }\n }));\n }\n /**\n * trigger highlight editor buttons when cursor moved or positioning in block\n * @param {?} nodes\n * @return {?}\n */\n triggerBlocks(nodes) {\n if (!this.showToolbar) {\n return;\n }\n this.linkSelected = nodes.findIndex((/**\n * @param {?} x\n * @return {?}\n */\n x => x.nodeName === 'A')) > -1;\n /** @type {?} */\n let found = false;\n this.select.forEach((/**\n * @param {?} y\n * @return {?}\n */\n y => {\n /** @type {?} */\n const node = nodes.find((/**\n * @param {?} x\n * @return {?}\n */\n x => x.nodeName === y));\n if (node !== undefined && y === node.nodeName) {\n if (found === false) {\n this.block = node.nodeName.toLowerCase();\n found = true;\n }\n }\n else if (found === false) {\n this.block = 'default';\n }\n }));\n found = false;\n if (this._customClasses) {\n this._customClasses.forEach((/**\n * @param {?} y\n * @param {?} index\n * @return {?}\n */\n (y, index) => {\n /** @type {?} */\n const node = nodes.find((/**\n * @param {?} x\n * @return {?}\n */\n x => {\n if (x instanceof Element) {\n return x.className === y.class;\n }\n }));\n if (node !== undefined) {\n if (found === false) {\n this.customClassId = index.toString();\n found = true;\n }\n }\n else if (found === false) {\n this.customClassId = '-1';\n }\n }));\n }\n Object.keys(this.tagMap).map((/**\n * @param {?} e\n * @return {?}\n */\n e => {\n /** @type {?} */\n const elementById = this.doc.getElementById(this.tagMap[e] + '-' + this.id);\n /** @type {?} */\n const node = nodes.find((/**\n * @param {?} x\n * @return {?}\n */\n x => x.nodeName === e));\n if (node !== undefined && e === node.nodeName) {\n this.r.addClass(elementById, 'active');\n }\n else {\n this.r.removeClass(elementById, 'active');\n }\n }));\n this.foreColour = this.doc.queryCommandValue('ForeColor');\n this.fontSize = this.doc.queryCommandValue('FontSize');\n this.fontName = this.doc.queryCommandValue('FontName').replace(/\"/g, '');\n this.backColor = this.doc.queryCommandValue('backColor');\n }\n /**\n * insert URL link\n * @return {?}\n */\n insertUrl() {\n /** @type {?} */\n let url = 'https:\\/\\/';\n /** @type {?} */\n const selection = this.editorService.savedSelection;\n if (selection && selection.commonAncestorContainer.parentElement.nodeName === 'A') {\n /** @type {?} */\n const parent = (/** @type {?} */ (selection.commonAncestorContainer.parentElement));\n if (parent.href !== '') {\n url = parent.href;\n }\n }\n url = prompt('Insert URL link', url);\n if (url && url !== '' && url !== 'https://') {\n this.editorService.createLink(url);\n }\n }\n /**\n * insert Video link\n * @return {?}\n */\n insertVideo() {\n this.execute.emit('');\n /** @type {?} */\n const url = prompt('Insert Video link', `https://`);\n if (url && url !== '' && url !== `https://`) {\n this.editorService.insertVideo(url);\n }\n }\n /**\n * insert color\n * @param {?} color\n * @param {?} where\n * @return {?}\n */\n insertColor(color, where) {\n this.editorService.insertColor(color, where);\n this.execute.emit('');\n }\n /**\n * set font Name/family\n * @param {?} foreColor string\n * @return {?}\n */\n setFontName(foreColor) {\n this.editorService.setFontName(foreColor);\n this.execute.emit('');\n }\n /**\n * set font Size\n * @param {?} fontSize string\n * @return {?}\n */\n setFontSize(fontSize) {\n this.editorService.setFontSize(fontSize);\n this.execute.emit('');\n }\n /**\n * toggle editor mode (WYSIWYG or SOURCE)\n * @param {?} m boolean\n * @return {?}\n */\n setEditorMode(m) {\n /** @type {?} */\n const toggleEditorModeButton = this.doc.getElementById('toggleEditorMode' + '-' + this.id);\n if (m) {\n this.r.addClass(toggleEditorModeButton, 'active');\n }\n else {\n this.r.removeClass(toggleEditorModeButton, 'active');\n }\n this.htmlMode = m;\n }\n /**\n * Upload image when file is selected\n * @param {?} event\n * @return {?}\n */\n onFileChanged(event) {\n /** @type {?} */\n const file = event.target.files[0];\n if (file.type.includes('image/')) {\n if (this.uploadUrl) {\n this.editorService.uploadImage(file).subscribe((/**\n * @param {?} e\n * @return {?}\n */\n e => {\n if (e instanceof HttpResponse) {\n this.editorService.insertImage(e.body.imageUrl);\n event.srcElement.value = null;\n }\n }));\n }\n else {\n /** @type {?} */\n const reader = new FileReader();\n reader.onload = (/**\n * @param {?} e\n * @return {?}\n */\n (e) => {\n /** @type {?} */\n const fr = (/** @type {?} */ (e.currentTarget));\n this.editorService.insertImage(fr.result.toString());\n });\n reader.readAsDataURL(file);\n }\n }\n }\n /**\n * Set custom class\n * @param {?} classId\n * @return {?}\n */\n setCustomClass(classId) {\n if (classId === '-1') {\n this.execute.emit('clear');\n }\n else {\n this.editorService.createCustomClass(this._customClasses[+classId]);\n }\n }\n /**\n * @param {?} name\n * @return {?}\n */\n isButtonHidden(name) {\n if (!name) {\n return false;\n }\n if (!(this.hiddenButtons instanceof Array)) {\n return false;\n }\n /** @type {?} */\n let result;\n for (const arr of this.hiddenButtons) {\n if (arr instanceof Array) {\n result = arr.find((/**\n * @param {?} item\n * @return {?}\n */\n item => item === name));\n }\n if (result) {\n break;\n }\n }\n return result !== undefined;\n }\n /**\n * @return {?}\n */\n focus() {\n this.execute.emit('focus');\n console.log('focused');\n }\n}\nAngularEditorToolbarComponent.ɵfac = function AngularEditorToolbarComponent_Factory(t) { return new (t || AngularEditorToolbarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(AngularEditorService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nAngularEditorToolbarComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AngularEditorToolbarComponent, selectors: [[\"angular-editor-toolbar\"]], viewQuery: function AngularEditorToolbarComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵstaticViewQuery(_c0, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.myInputFile = _t.first);\n } }, inputs: { fonts: \"fonts\", customClasses: \"customClasses\", defaultFontName: \"defaultFontName\", defaultFontSize: \"defaultFontSize\", id: \"id\", uploadUrl: \"uploadUrl\", showToolbar: \"showToolbar\", hiddenButtons: \"hiddenButtons\" }, outputs: { execute: \"execute\" }, decls: 1, vars: 1, consts: [[\"class\", \"angular-editor-toolbar\", 4, \"ngIf\"], [1, \"angular-editor-toolbar\"], [1, \"angular-editor-toolbar-set\"], [\"type\", \"button\", \"title\", \"Undo\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"hidden\", \"click\"], [1, \"fa\", \"fa-undo\"], [\"type\", \"button\", \"title\", \"Redo\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"hidden\", \"click\"], [1, \"fa\", \"fa-repeat\"], [\"type\", \"button\", \"title\", \"Bold\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-bold\"], [\"type\", \"button\", \"title\", \"Italic\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-italic\"], [\"type\", \"button\", \"title\", \"Underline\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-underline\"], [\"type\", \"button\", \"title\", \"Strikethrough\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-strikethrough\"], [\"type\", \"button\", \"title\", \"Subscript\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-subscript\"], [\"type\", \"button\", \"title\", \"Superscript\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-superscript\"], [\"type\", \"button\", \"title\", \"Justify Left\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-align-left\"], [\"type\", \"button\", \"title\", \"Justify Center\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-align-center\"], [\"type\", \"button\", \"title\", \"Justify Right\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-align-right\"], [\"type\", \"button\", \"title\", \"Justify Full\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-align-justify\"], [\"type\", \"button\", \"title\", \"Indent\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-indent\"], [\"type\", \"button\", \"title\", \"Outdent\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-outdent\"], [\"type\", \"button\", \"title\", \"Unordered List\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-list-ul\"], [\"type\", \"button\", \"title\", \"Ordered List\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-list-ol\"], [\"tabindex\", \"-1\", 1, \"select-heading\", 3, \"options\", \"ngModel\", \"disabled\", \"hidden\", \"ngModelChange\", \"change\"], [\"tabindex\", \"-1\", 1, \"select-font\", 3, \"options\", \"ngModel\", \"disabled\", \"hidden\", \"ngModelChange\", \"change\"], [\"tabindex\", \"-1\", 1, \"select-font-size\", 3, \"options\", \"ngModel\", \"disabled\", \"hidden\", \"ngModelChange\", \"change\"], [\"type\", \"color\", 2, \"display\", \"none\", 3, \"change\"], [\"fgInput\", \"\"], [\"type\", \"button\", \"title\", \"Text Color\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"color-label\", \"foreground\"], [1, \"fa\", \"fa-font\"], [\"bgInput\", \"\"], [\"type\", \"button\", \"title\", \"Background Color\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"color-label\", \"background\"], [\"class\", \"angular-editor-toolbar-set\", 4, \"ngIf\"], [\"type\", \"button\", \"title\", \"Insert Link\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-link\"], [\"type\", \"button\", \"title\", \"Unlink\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-chain-broken\"], [\"accept\", \"image/*\", \"type\", \"file\", 2, \"display\", \"none\", 3, \"change\"], [\"fileInput\", \"\"], [\"type\", \"button\", \"title\", \"Insert Image\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-image\"], [\"type\", \"button\", \"title\", \"Insert Video\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-video-camera\"], [\"type\", \"button\", \"title\", \"Horizontal Line\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-minus\"], [\"type\", \"button\", \"title\", \"Clear Formatting\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"disabled\", \"hidden\", \"click\"], [1, \"fa\", \"fa-remove\"], [\"type\", \"button\", \"title\", \"HTML Code\", \"tabindex\", \"-1\", 1, \"angular-editor-button\", 3, \"id\", \"hidden\", \"click\"], [1, \"fa\", \"fa-code\"], [\"tabindex\", \"-1\", 1, \"select-custom-style\", 3, \"options\", \"ngModel\", \"disabled\", \"hidden\", \"ngModelChange\", \"change\"]], template: function AngularEditorToolbarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, AngularEditorToolbarComponent_div_0_Template, 75, 83, \"div\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showToolbar);\n } }, directives: function () { return [ɵngcc2.NgIf, AeSelectComponent, ɵngcc3.NgControlStatus, ɵngcc3.NgModel]; }, styles: [\"@charset \\\"UTF-8\\\";@font-face{font-family:FontAwesome;src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format(\\\"embedded-opentype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0) format(\\\"woff2\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0) format(\\\"woff\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0) format(\\\"truetype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format(\\\"svg\\\");font-weight:400;font-style:normal}.fa[_ngcontent-%COMP%]{display:inline-block;font:14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg[_ngcontent-%COMP%]{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x[_ngcontent-%COMP%]{font-size:2em}.fa-3x[_ngcontent-%COMP%]{font-size:3em}.fa-4x[_ngcontent-%COMP%]{font-size:4em}.fa-5x[_ngcontent-%COMP%]{font-size:5em}.fa-fw[_ngcontent-%COMP%]{width:1.2857142857em;text-align:center}.fa-ul[_ngcontent-%COMP%]{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul[_ngcontent-%COMP%] > li[_ngcontent-%COMP%]{position:relative}.fa-li[_ngcontent-%COMP%]{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg[_ngcontent-%COMP%]{left:-1.8571428571em}.fa-border[_ngcontent-%COMP%]{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left[_ngcontent-%COMP%]{float:left}.fa-pull-right[_ngcontent-%COMP%]{float:right}.fa.fa-pull-left[_ngcontent-%COMP%]{margin-right:.3em}.fa.fa-pull-right[_ngcontent-%COMP%]{margin-left:.3em}.pull-right[_ngcontent-%COMP%]{float:right}.pull-left[_ngcontent-%COMP%]{float:left}.fa.pull-left[_ngcontent-%COMP%]{margin-right:.3em}.fa.pull-right[_ngcontent-%COMP%]{margin-left:.3em}.fa-spin[_ngcontent-%COMP%]{-webkit-animation:2s linear infinite fa-spin;animation:2s linear infinite fa-spin}.fa-pulse[_ngcontent-%COMP%]{-webkit-animation:1s steps(8) infinite fa-spin;animation:1s steps(8) infinite fa-spin}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90[_ngcontent-%COMP%]{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180[_ngcontent-%COMP%]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270[_ngcontent-%COMP%]{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal[_ngcontent-%COMP%]{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical[_ngcontent-%COMP%]{-webkit-transform:scale(1,-1);transform:scale(1,-1)}[_ngcontent-%COMP%]:root .fa-flip-horizontal[_ngcontent-%COMP%], [_ngcontent-%COMP%]:root .fa-flip-vertical[_ngcontent-%COMP%], [_ngcontent-%COMP%]:root .fa-rotate-180[_ngcontent-%COMP%], [_ngcontent-%COMP%]:root .fa-rotate-270[_ngcontent-%COMP%], [_ngcontent-%COMP%]:root .fa-rotate-90[_ngcontent-%COMP%]{-webkit-filter:none;filter:none}.fa-stack[_ngcontent-%COMP%]{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x[_ngcontent-%COMP%], .fa-stack-2x[_ngcontent-%COMP%]{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x[_ngcontent-%COMP%]{line-height:inherit}.fa-stack-2x[_ngcontent-%COMP%]{font-size:2em}.fa-inverse[_ngcontent-%COMP%]{color:#fff}.fa-glass[_ngcontent-%COMP%]:before{content:\\\"\\uF000\\\"}.fa-music[_ngcontent-%COMP%]:before{content:\\\"\\uF001\\\"}.fa-search[_ngcontent-%COMP%]:before{content:\\\"\\uF002\\\"}.fa-envelope-o[_ngcontent-%COMP%]:before{content:\\\"\\uF003\\\"}.fa-heart[_ngcontent-%COMP%]:before{content:\\\"\\uF004\\\"}.fa-star[_ngcontent-%COMP%]:before{content:\\\"\\uF005\\\"}.fa-star-o[_ngcontent-%COMP%]:before{content:\\\"\\uF006\\\"}.fa-user[_ngcontent-%COMP%]:before{content:\\\"\\uF007\\\"}.fa-film[_ngcontent-%COMP%]:before{content:\\\"\\uF008\\\"}.fa-th-large[_ngcontent-%COMP%]:before{content:\\\"\\uF009\\\"}.fa-th[_ngcontent-%COMP%]:before{content:\\\"\\uF00A\\\"}.fa-th-list[_ngcontent-%COMP%]:before{content:\\\"\\uF00B\\\"}.fa-check[_ngcontent-%COMP%]:before{content:\\\"\\uF00C\\\"}.fa-close[_ngcontent-%COMP%]:before, .fa-remove[_ngcontent-%COMP%]:before, .fa-times[_ngcontent-%COMP%]:before{content:\\\"\\uF00D\\\"}.fa-search-plus[_ngcontent-%COMP%]:before{content:\\\"\\uF00E\\\"}.fa-search-minus[_ngcontent-%COMP%]:before{content:\\\"\\uF010\\\"}.fa-power-off[_ngcontent-%COMP%]:before{content:\\\"\\uF011\\\"}.fa-signal[_ngcontent-%COMP%]:before{content:\\\"\\uF012\\\"}.fa-cog[_ngcontent-%COMP%]:before, .fa-gear[_ngcontent-%COMP%]:before{content:\\\"\\uF013\\\"}.fa-trash-o[_ngcontent-%COMP%]:before{content:\\\"\\uF014\\\"}.fa-home[_ngcontent-%COMP%]:before{content:\\\"\\uF015\\\"}.fa-file-o[_ngcontent-%COMP%]:before{content:\\\"\\uF016\\\"}.fa-clock-o[_ngcontent-%COMP%]:before{content:\\\"\\uF017\\\"}.fa-road[_ngcontent-%COMP%]:before{content:\\\"\\uF018\\\"}.fa-download[_ngcontent-%COMP%]:before{content:\\\"\\uF019\\\"}.fa-arrow-circle-o-down[_ngcontent-%COMP%]:before{content:\\\"\\uF01A\\\"}.fa-arrow-circle-o-up[_ngcontent-%COMP%]:before{content:\\\"\\uF01B\\\"}.fa-inbox[_ngcontent-%COMP%]:before{content:\\\"\\uF01C\\\"}.fa-play-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF01D\\\"}.fa-repeat[_ngcontent-%COMP%]:before, .fa-rotate-right[_ngcontent-%COMP%]:before{content:\\\"\\uF01E\\\"}.fa-refresh[_ngcontent-%COMP%]:before{content:\\\"\\uF021\\\"}.fa-list-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF022\\\"}.fa-lock[_ngcontent-%COMP%]:before{content:\\\"\\uF023\\\"}.fa-flag[_ngcontent-%COMP%]:before{content:\\\"\\uF024\\\"}.fa-headphones[_ngcontent-%COMP%]:before{content:\\\"\\uF025\\\"}.fa-volume-off[_ngcontent-%COMP%]:before{content:\\\"\\uF026\\\"}.fa-volume-down[_ngcontent-%COMP%]:before{content:\\\"\\uF027\\\"}.fa-volume-up[_ngcontent-%COMP%]:before{content:\\\"\\uF028\\\"}.fa-qrcode[_ngcontent-%COMP%]:before{content:\\\"\\uF029\\\"}.fa-barcode[_ngcontent-%COMP%]:before{content:\\\"\\uF02A\\\"}.fa-tag[_ngcontent-%COMP%]:before{content:\\\"\\uF02B\\\"}.fa-tags[_ngcontent-%COMP%]:before{content:\\\"\\uF02C\\\"}.fa-book[_ngcontent-%COMP%]:before{content:\\\"\\uF02D\\\"}.fa-bookmark[_ngcontent-%COMP%]:before{content:\\\"\\uF02E\\\"}.fa-print[_ngcontent-%COMP%]:before{content:\\\"\\uF02F\\\"}.fa-camera[_ngcontent-%COMP%]:before{content:\\\"\\uF030\\\"}.fa-font[_ngcontent-%COMP%]:before{content:\\\"\\uF031\\\"}.fa-bold[_ngcontent-%COMP%]:before{content:\\\"\\uF032\\\"}.fa-italic[_ngcontent-%COMP%]:before{content:\\\"\\uF033\\\"}.fa-text-height[_ngcontent-%COMP%]:before{content:\\\"\\uF034\\\"}.fa-text-width[_ngcontent-%COMP%]:before{content:\\\"\\uF035\\\"}.fa-align-left[_ngcontent-%COMP%]:before{content:\\\"\\uF036\\\"}.fa-align-center[_ngcontent-%COMP%]:before{content:\\\"\\uF037\\\"}.fa-align-right[_ngcontent-%COMP%]:before{content:\\\"\\uF038\\\"}.fa-align-justify[_ngcontent-%COMP%]:before{content:\\\"\\uF039\\\"}.fa-list[_ngcontent-%COMP%]:before{content:\\\"\\uF03A\\\"}.fa-dedent[_ngcontent-%COMP%]:before, .fa-outdent[_ngcontent-%COMP%]:before{content:\\\"\\uF03B\\\"}.fa-indent[_ngcontent-%COMP%]:before{content:\\\"\\uF03C\\\"}.fa-video-camera[_ngcontent-%COMP%]:before{content:\\\"\\uF03D\\\"}.fa-image[_ngcontent-%COMP%]:before, .fa-photo[_ngcontent-%COMP%]:before, .fa-picture-o[_ngcontent-%COMP%]:before{content:\\\"\\uF03E\\\"}.fa-pencil[_ngcontent-%COMP%]:before{content:\\\"\\uF040\\\"}.fa-map-marker[_ngcontent-%COMP%]:before{content:\\\"\\uF041\\\"}.fa-adjust[_ngcontent-%COMP%]:before{content:\\\"\\uF042\\\"}.fa-tint[_ngcontent-%COMP%]:before{content:\\\"\\uF043\\\"}.fa-edit[_ngcontent-%COMP%]:before, .fa-pencil-square-o[_ngcontent-%COMP%]:before{content:\\\"\\uF044\\\"}.fa-share-square-o[_ngcontent-%COMP%]:before{content:\\\"\\uF045\\\"}.fa-check-square-o[_ngcontent-%COMP%]:before{content:\\\"\\uF046\\\"}.fa-arrows[_ngcontent-%COMP%]:before{content:\\\"\\uF047\\\"}.fa-step-backward[_ngcontent-%COMP%]:before{content:\\\"\\uF048\\\"}.fa-fast-backward[_ngcontent-%COMP%]:before{content:\\\"\\uF049\\\"}.fa-backward[_ngcontent-%COMP%]:before{content:\\\"\\uF04A\\\"}.fa-play[_ngcontent-%COMP%]:before{content:\\\"\\uF04B\\\"}.fa-pause[_ngcontent-%COMP%]:before{content:\\\"\\uF04C\\\"}.fa-stop[_ngcontent-%COMP%]:before{content:\\\"\\uF04D\\\"}.fa-forward[_ngcontent-%COMP%]:before{content:\\\"\\uF04E\\\"}.fa-fast-forward[_ngcontent-%COMP%]:before{content:\\\"\\uF050\\\"}.fa-step-forward[_ngcontent-%COMP%]:before{content:\\\"\\uF051\\\"}.fa-eject[_ngcontent-%COMP%]:before{content:\\\"\\uF052\\\"}.fa-chevron-left[_ngcontent-%COMP%]:before{content:\\\"\\uF053\\\"}.fa-chevron-right[_ngcontent-%COMP%]:before{content:\\\"\\uF054\\\"}.fa-plus-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF055\\\"}.fa-minus-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF056\\\"}.fa-times-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF057\\\"}.fa-check-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF058\\\"}.fa-question-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF059\\\"}.fa-info-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF05A\\\"}.fa-crosshairs[_ngcontent-%COMP%]:before{content:\\\"\\uF05B\\\"}.fa-times-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF05C\\\"}.fa-check-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF05D\\\"}.fa-ban[_ngcontent-%COMP%]:before{content:\\\"\\uF05E\\\"}.fa-arrow-left[_ngcontent-%COMP%]:before{content:\\\"\\uF060\\\"}.fa-arrow-right[_ngcontent-%COMP%]:before{content:\\\"\\uF061\\\"}.fa-arrow-up[_ngcontent-%COMP%]:before{content:\\\"\\uF062\\\"}.fa-arrow-down[_ngcontent-%COMP%]:before{content:\\\"\\uF063\\\"}.fa-mail-forward[_ngcontent-%COMP%]:before, .fa-share[_ngcontent-%COMP%]:before{content:\\\"\\uF064\\\"}.fa-expand[_ngcontent-%COMP%]:before{content:\\\"\\uF065\\\"}.fa-compress[_ngcontent-%COMP%]:before{content:\\\"\\uF066\\\"}.fa-plus[_ngcontent-%COMP%]:before{content:\\\"\\uF067\\\"}.fa-minus[_ngcontent-%COMP%]:before{content:\\\"\\uF068\\\"}.fa-asterisk[_ngcontent-%COMP%]:before{content:\\\"\\uF069\\\"}.fa-exclamation-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF06A\\\"}.fa-gift[_ngcontent-%COMP%]:before{content:\\\"\\uF06B\\\"}.fa-leaf[_ngcontent-%COMP%]:before{content:\\\"\\uF06C\\\"}.fa-fire[_ngcontent-%COMP%]:before{content:\\\"\\uF06D\\\"}.fa-eye[_ngcontent-%COMP%]:before{content:\\\"\\uF06E\\\"}.fa-eye-slash[_ngcontent-%COMP%]:before{content:\\\"\\uF070\\\"}.fa-exclamation-triangle[_ngcontent-%COMP%]:before, .fa-warning[_ngcontent-%COMP%]:before{content:\\\"\\uF071\\\"}.fa-plane[_ngcontent-%COMP%]:before{content:\\\"\\uF072\\\"}.fa-calendar[_ngcontent-%COMP%]:before{content:\\\"\\uF073\\\"}.fa-random[_ngcontent-%COMP%]:before{content:\\\"\\uF074\\\"}.fa-comment[_ngcontent-%COMP%]:before{content:\\\"\\uF075\\\"}.fa-magnet[_ngcontent-%COMP%]:before{content:\\\"\\uF076\\\"}.fa-chevron-up[_ngcontent-%COMP%]:before{content:\\\"\\uF077\\\"}.fa-chevron-down[_ngcontent-%COMP%]:before{content:\\\"\\uF078\\\"}.fa-retweet[_ngcontent-%COMP%]:before{content:\\\"\\uF079\\\"}.fa-shopping-cart[_ngcontent-%COMP%]:before{content:\\\"\\uF07A\\\"}.fa-folder[_ngcontent-%COMP%]:before{content:\\\"\\uF07B\\\"}.fa-folder-open[_ngcontent-%COMP%]:before{content:\\\"\\uF07C\\\"}.fa-arrows-v[_ngcontent-%COMP%]:before{content:\\\"\\uF07D\\\"}.fa-arrows-h[_ngcontent-%COMP%]:before{content:\\\"\\uF07E\\\"}.fa-bar-chart-o[_ngcontent-%COMP%]:before, .fa-bar-chart[_ngcontent-%COMP%]:before{content:\\\"\\uF080\\\"}.fa-twitter-square[_ngcontent-%COMP%]:before{content:\\\"\\uF081\\\"}.fa-facebook-square[_ngcontent-%COMP%]:before{content:\\\"\\uF082\\\"}.fa-camera-retro[_ngcontent-%COMP%]:before{content:\\\"\\uF083\\\"}.fa-key[_ngcontent-%COMP%]:before{content:\\\"\\uF084\\\"}.fa-cogs[_ngcontent-%COMP%]:before, .fa-gears[_ngcontent-%COMP%]:before{content:\\\"\\uF085\\\"}.fa-comments[_ngcontent-%COMP%]:before{content:\\\"\\uF086\\\"}.fa-thumbs-o-up[_ngcontent-%COMP%]:before{content:\\\"\\uF087\\\"}.fa-thumbs-o-down[_ngcontent-%COMP%]:before{content:\\\"\\uF088\\\"}.fa-star-half[_ngcontent-%COMP%]:before{content:\\\"\\uF089\\\"}.fa-heart-o[_ngcontent-%COMP%]:before{content:\\\"\\uF08A\\\"}.fa-sign-out[_ngcontent-%COMP%]:before{content:\\\"\\uF08B\\\"}.fa-linkedin-square[_ngcontent-%COMP%]:before{content:\\\"\\uF08C\\\"}.fa-thumb-tack[_ngcontent-%COMP%]:before{content:\\\"\\uF08D\\\"}.fa-external-link[_ngcontent-%COMP%]:before{content:\\\"\\uF08E\\\"}.fa-sign-in[_ngcontent-%COMP%]:before{content:\\\"\\uF090\\\"}.fa-trophy[_ngcontent-%COMP%]:before{content:\\\"\\uF091\\\"}.fa-github-square[_ngcontent-%COMP%]:before{content:\\\"\\uF092\\\"}.fa-upload[_ngcontent-%COMP%]:before{content:\\\"\\uF093\\\"}.fa-lemon-o[_ngcontent-%COMP%]:before{content:\\\"\\uF094\\\"}.fa-phone[_ngcontent-%COMP%]:before{content:\\\"\\uF095\\\"}.fa-square-o[_ngcontent-%COMP%]:before{content:\\\"\\uF096\\\"}.fa-bookmark-o[_ngcontent-%COMP%]:before{content:\\\"\\uF097\\\"}.fa-phone-square[_ngcontent-%COMP%]:before{content:\\\"\\uF098\\\"}.fa-twitter[_ngcontent-%COMP%]:before{content:\\\"\\uF099\\\"}.fa-facebook-f[_ngcontent-%COMP%]:before, .fa-facebook[_ngcontent-%COMP%]:before{content:\\\"\\uF09A\\\"}.fa-github[_ngcontent-%COMP%]:before{content:\\\"\\uF09B\\\"}.fa-unlock[_ngcontent-%COMP%]:before{content:\\\"\\uF09C\\\"}.fa-credit-card[_ngcontent-%COMP%]:before{content:\\\"\\uF09D\\\"}.fa-feed[_ngcontent-%COMP%]:before, .fa-rss[_ngcontent-%COMP%]:before{content:\\\"\\uF09E\\\"}.fa-hdd-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0A0\\\"}.fa-bullhorn[_ngcontent-%COMP%]:before{content:\\\"\\uF0A1\\\"}.fa-bell[_ngcontent-%COMP%]:before{content:\\\"\\uF0F3\\\"}.fa-certificate[_ngcontent-%COMP%]:before{content:\\\"\\uF0A3\\\"}.fa-hand-o-right[_ngcontent-%COMP%]:before{content:\\\"\\uF0A4\\\"}.fa-hand-o-left[_ngcontent-%COMP%]:before{content:\\\"\\uF0A5\\\"}.fa-hand-o-up[_ngcontent-%COMP%]:before{content:\\\"\\uF0A6\\\"}.fa-hand-o-down[_ngcontent-%COMP%]:before{content:\\\"\\uF0A7\\\"}.fa-arrow-circle-left[_ngcontent-%COMP%]:before{content:\\\"\\uF0A8\\\"}.fa-arrow-circle-right[_ngcontent-%COMP%]:before{content:\\\"\\uF0A9\\\"}.fa-arrow-circle-up[_ngcontent-%COMP%]:before{content:\\\"\\uF0AA\\\"}.fa-arrow-circle-down[_ngcontent-%COMP%]:before{content:\\\"\\uF0AB\\\"}.fa-globe[_ngcontent-%COMP%]:before{content:\\\"\\uF0AC\\\"}.fa-wrench[_ngcontent-%COMP%]:before{content:\\\"\\uF0AD\\\"}.fa-tasks[_ngcontent-%COMP%]:before{content:\\\"\\uF0AE\\\"}.fa-filter[_ngcontent-%COMP%]:before{content:\\\"\\uF0B0\\\"}.fa-briefcase[_ngcontent-%COMP%]:before{content:\\\"\\uF0B1\\\"}.fa-arrows-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF0B2\\\"}.fa-group[_ngcontent-%COMP%]:before, .fa-users[_ngcontent-%COMP%]:before{content:\\\"\\uF0C0\\\"}.fa-chain[_ngcontent-%COMP%]:before, .fa-link[_ngcontent-%COMP%]:before{content:\\\"\\uF0C1\\\"}.fa-cloud[_ngcontent-%COMP%]:before{content:\\\"\\uF0C2\\\"}.fa-flask[_ngcontent-%COMP%]:before{content:\\\"\\uF0C3\\\"}.fa-cut[_ngcontent-%COMP%]:before, .fa-scissors[_ngcontent-%COMP%]:before{content:\\\"\\uF0C4\\\"}.fa-copy[_ngcontent-%COMP%]:before, .fa-files-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0C5\\\"}.fa-paperclip[_ngcontent-%COMP%]:before{content:\\\"\\uF0C6\\\"}.fa-floppy-o[_ngcontent-%COMP%]:before, .fa-save[_ngcontent-%COMP%]:before{content:\\\"\\uF0C7\\\"}.fa-square[_ngcontent-%COMP%]:before{content:\\\"\\uF0C8\\\"}.fa-bars[_ngcontent-%COMP%]:before, .fa-navicon[_ngcontent-%COMP%]:before, .fa-reorder[_ngcontent-%COMP%]:before{content:\\\"\\uF0C9\\\"}.fa-list-ul[_ngcontent-%COMP%]:before{content:\\\"\\uF0CA\\\"}.fa-list-ol[_ngcontent-%COMP%]:before{content:\\\"\\uF0CB\\\"}.fa-strikethrough[_ngcontent-%COMP%]:before{content:\\\"\\uF0CC\\\"}.fa-underline[_ngcontent-%COMP%]:before{content:\\\"\\uF0CD\\\"}.fa-table[_ngcontent-%COMP%]:before{content:\\\"\\uF0CE\\\"}.fa-magic[_ngcontent-%COMP%]:before{content:\\\"\\uF0D0\\\"}.fa-truck[_ngcontent-%COMP%]:before{content:\\\"\\uF0D1\\\"}.fa-pinterest[_ngcontent-%COMP%]:before{content:\\\"\\uF0D2\\\"}.fa-pinterest-square[_ngcontent-%COMP%]:before{content:\\\"\\uF0D3\\\"}.fa-google-plus-square[_ngcontent-%COMP%]:before{content:\\\"\\uF0D4\\\"}.fa-google-plus[_ngcontent-%COMP%]:before{content:\\\"\\uF0D5\\\"}.fa-money[_ngcontent-%COMP%]:before{content:\\\"\\uF0D6\\\"}.fa-caret-down[_ngcontent-%COMP%]:before{content:\\\"\\uF0D7\\\"}.fa-caret-up[_ngcontent-%COMP%]:before{content:\\\"\\uF0D8\\\"}.fa-caret-left[_ngcontent-%COMP%]:before{content:\\\"\\uF0D9\\\"}.fa-caret-right[_ngcontent-%COMP%]:before{content:\\\"\\uF0DA\\\"}.fa-columns[_ngcontent-%COMP%]:before{content:\\\"\\uF0DB\\\"}.fa-sort[_ngcontent-%COMP%]:before, .fa-unsorted[_ngcontent-%COMP%]:before{content:\\\"\\uF0DC\\\"}.fa-sort-desc[_ngcontent-%COMP%]:before, .fa-sort-down[_ngcontent-%COMP%]:before{content:\\\"\\uF0DD\\\"}.fa-sort-asc[_ngcontent-%COMP%]:before, .fa-sort-up[_ngcontent-%COMP%]:before{content:\\\"\\uF0DE\\\"}.fa-envelope[_ngcontent-%COMP%]:before{content:\\\"\\uF0E0\\\"}.fa-linkedin[_ngcontent-%COMP%]:before{content:\\\"\\uF0E1\\\"}.fa-rotate-left[_ngcontent-%COMP%]:before, .fa-undo[_ngcontent-%COMP%]:before{content:\\\"\\uF0E2\\\"}.fa-gavel[_ngcontent-%COMP%]:before, .fa-legal[_ngcontent-%COMP%]:before{content:\\\"\\uF0E3\\\"}.fa-dashboard[_ngcontent-%COMP%]:before, .fa-tachometer[_ngcontent-%COMP%]:before{content:\\\"\\uF0E4\\\"}.fa-comment-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0E5\\\"}.fa-comments-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0E6\\\"}.fa-bolt[_ngcontent-%COMP%]:before, .fa-flash[_ngcontent-%COMP%]:before{content:\\\"\\uF0E7\\\"}.fa-sitemap[_ngcontent-%COMP%]:before{content:\\\"\\uF0E8\\\"}.fa-umbrella[_ngcontent-%COMP%]:before{content:\\\"\\uF0E9\\\"}.fa-clipboard[_ngcontent-%COMP%]:before, .fa-paste[_ngcontent-%COMP%]:before{content:\\\"\\uF0EA\\\"}.fa-lightbulb-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0EB\\\"}.fa-exchange[_ngcontent-%COMP%]:before{content:\\\"\\uF0EC\\\"}.fa-cloud-download[_ngcontent-%COMP%]:before{content:\\\"\\uF0ED\\\"}.fa-cloud-upload[_ngcontent-%COMP%]:before{content:\\\"\\uF0EE\\\"}.fa-user-md[_ngcontent-%COMP%]:before{content:\\\"\\uF0F0\\\"}.fa-stethoscope[_ngcontent-%COMP%]:before{content:\\\"\\uF0F1\\\"}.fa-suitcase[_ngcontent-%COMP%]:before{content:\\\"\\uF0F2\\\"}.fa-bell-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0A2\\\"}.fa-coffee[_ngcontent-%COMP%]:before{content:\\\"\\uF0F4\\\"}.fa-cutlery[_ngcontent-%COMP%]:before{content:\\\"\\uF0F5\\\"}.fa-file-text-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0F6\\\"}.fa-building-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0F7\\\"}.fa-hospital-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0F8\\\"}.fa-ambulance[_ngcontent-%COMP%]:before{content:\\\"\\uF0F9\\\"}.fa-medkit[_ngcontent-%COMP%]:before{content:\\\"\\uF0FA\\\"}.fa-fighter-jet[_ngcontent-%COMP%]:before{content:\\\"\\uF0FB\\\"}.fa-beer[_ngcontent-%COMP%]:before{content:\\\"\\uF0FC\\\"}.fa-h-square[_ngcontent-%COMP%]:before{content:\\\"\\uF0FD\\\"}.fa-plus-square[_ngcontent-%COMP%]:before{content:\\\"\\uF0FE\\\"}.fa-angle-double-left[_ngcontent-%COMP%]:before{content:\\\"\\uF100\\\"}.fa-angle-double-right[_ngcontent-%COMP%]:before{content:\\\"\\uF101\\\"}.fa-angle-double-up[_ngcontent-%COMP%]:before{content:\\\"\\uF102\\\"}.fa-angle-double-down[_ngcontent-%COMP%]:before{content:\\\"\\uF103\\\"}.fa-angle-left[_ngcontent-%COMP%]:before{content:\\\"\\uF104\\\"}.fa-angle-right[_ngcontent-%COMP%]:before{content:\\\"\\uF105\\\"}.fa-angle-up[_ngcontent-%COMP%]:before{content:\\\"\\uF106\\\"}.fa-angle-down[_ngcontent-%COMP%]:before{content:\\\"\\uF107\\\"}.fa-desktop[_ngcontent-%COMP%]:before{content:\\\"\\uF108\\\"}.fa-laptop[_ngcontent-%COMP%]:before{content:\\\"\\uF109\\\"}.fa-tablet[_ngcontent-%COMP%]:before{content:\\\"\\uF10A\\\"}.fa-mobile-phone[_ngcontent-%COMP%]:before, .fa-mobile[_ngcontent-%COMP%]:before{content:\\\"\\uF10B\\\"}.fa-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF10C\\\"}.fa-quote-left[_ngcontent-%COMP%]:before{content:\\\"\\uF10D\\\"}.fa-quote-right[_ngcontent-%COMP%]:before{content:\\\"\\uF10E\\\"}.fa-spinner[_ngcontent-%COMP%]:before{content:\\\"\\uF110\\\"}.fa-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF111\\\"}.fa-mail-reply[_ngcontent-%COMP%]:before, .fa-reply[_ngcontent-%COMP%]:before{content:\\\"\\uF112\\\"}.fa-github-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF113\\\"}.fa-folder-o[_ngcontent-%COMP%]:before{content:\\\"\\uF114\\\"}.fa-folder-open-o[_ngcontent-%COMP%]:before{content:\\\"\\uF115\\\"}.fa-smile-o[_ngcontent-%COMP%]:before{content:\\\"\\uF118\\\"}.fa-frown-o[_ngcontent-%COMP%]:before{content:\\\"\\uF119\\\"}.fa-meh-o[_ngcontent-%COMP%]:before{content:\\\"\\uF11A\\\"}.fa-gamepad[_ngcontent-%COMP%]:before{content:\\\"\\uF11B\\\"}.fa-keyboard-o[_ngcontent-%COMP%]:before{content:\\\"\\uF11C\\\"}.fa-flag-o[_ngcontent-%COMP%]:before{content:\\\"\\uF11D\\\"}.fa-flag-checkered[_ngcontent-%COMP%]:before{content:\\\"\\uF11E\\\"}.fa-terminal[_ngcontent-%COMP%]:before{content:\\\"\\uF120\\\"}.fa-code[_ngcontent-%COMP%]:before{content:\\\"\\uF121\\\"}.fa-mail-reply-all[_ngcontent-%COMP%]:before, .fa-reply-all[_ngcontent-%COMP%]:before{content:\\\"\\uF122\\\"}.fa-star-half-empty[_ngcontent-%COMP%]:before, .fa-star-half-full[_ngcontent-%COMP%]:before, .fa-star-half-o[_ngcontent-%COMP%]:before{content:\\\"\\uF123\\\"}.fa-location-arrow[_ngcontent-%COMP%]:before{content:\\\"\\uF124\\\"}.fa-crop[_ngcontent-%COMP%]:before{content:\\\"\\uF125\\\"}.fa-code-fork[_ngcontent-%COMP%]:before{content:\\\"\\uF126\\\"}.fa-chain-broken[_ngcontent-%COMP%]:before, .fa-unlink[_ngcontent-%COMP%]:before{content:\\\"\\uF127\\\"}.fa-question[_ngcontent-%COMP%]:before{content:\\\"\\uF128\\\"}.fa-info[_ngcontent-%COMP%]:before{content:\\\"\\uF129\\\"}.fa-exclamation[_ngcontent-%COMP%]:before{content:\\\"\\uF12A\\\"}.fa-superscript[_ngcontent-%COMP%]:before{content:\\\"\\uF12B\\\"}.fa-subscript[_ngcontent-%COMP%]:before{content:\\\"\\uF12C\\\"}.fa-eraser[_ngcontent-%COMP%]:before{content:\\\"\\uF12D\\\"}.fa-puzzle-piece[_ngcontent-%COMP%]:before{content:\\\"\\uF12E\\\"}.fa-microphone[_ngcontent-%COMP%]:before{content:\\\"\\uF130\\\"}.fa-microphone-slash[_ngcontent-%COMP%]:before{content:\\\"\\uF131\\\"}.fa-shield[_ngcontent-%COMP%]:before{content:\\\"\\uF132\\\"}.fa-calendar-o[_ngcontent-%COMP%]:before{content:\\\"\\uF133\\\"}.fa-fire-extinguisher[_ngcontent-%COMP%]:before{content:\\\"\\uF134\\\"}.fa-rocket[_ngcontent-%COMP%]:before{content:\\\"\\uF135\\\"}.fa-maxcdn[_ngcontent-%COMP%]:before{content:\\\"\\uF136\\\"}.fa-chevron-circle-left[_ngcontent-%COMP%]:before{content:\\\"\\uF137\\\"}.fa-chevron-circle-right[_ngcontent-%COMP%]:before{content:\\\"\\uF138\\\"}.fa-chevron-circle-up[_ngcontent-%COMP%]:before{content:\\\"\\uF139\\\"}.fa-chevron-circle-down[_ngcontent-%COMP%]:before{content:\\\"\\uF13A\\\"}.fa-html5[_ngcontent-%COMP%]:before{content:\\\"\\uF13B\\\"}.fa-css3[_ngcontent-%COMP%]:before{content:\\\"\\uF13C\\\"}.fa-anchor[_ngcontent-%COMP%]:before{content:\\\"\\uF13D\\\"}.fa-unlock-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF13E\\\"}.fa-bullseye[_ngcontent-%COMP%]:before{content:\\\"\\uF140\\\"}.fa-ellipsis-h[_ngcontent-%COMP%]:before{content:\\\"\\uF141\\\"}.fa-ellipsis-v[_ngcontent-%COMP%]:before{content:\\\"\\uF142\\\"}.fa-rss-square[_ngcontent-%COMP%]:before{content:\\\"\\uF143\\\"}.fa-play-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF144\\\"}.fa-ticket[_ngcontent-%COMP%]:before{content:\\\"\\uF145\\\"}.fa-minus-square[_ngcontent-%COMP%]:before{content:\\\"\\uF146\\\"}.fa-minus-square-o[_ngcontent-%COMP%]:before{content:\\\"\\uF147\\\"}.fa-level-up[_ngcontent-%COMP%]:before{content:\\\"\\uF148\\\"}.fa-level-down[_ngcontent-%COMP%]:before{content:\\\"\\uF149\\\"}.fa-check-square[_ngcontent-%COMP%]:before{content:\\\"\\uF14A\\\"}.fa-pencil-square[_ngcontent-%COMP%]:before{content:\\\"\\uF14B\\\"}.fa-external-link-square[_ngcontent-%COMP%]:before{content:\\\"\\uF14C\\\"}.fa-share-square[_ngcontent-%COMP%]:before{content:\\\"\\uF14D\\\"}.fa-compass[_ngcontent-%COMP%]:before{content:\\\"\\uF14E\\\"}.fa-caret-square-o-down[_ngcontent-%COMP%]:before, .fa-toggle-down[_ngcontent-%COMP%]:before{content:\\\"\\uF150\\\"}.fa-caret-square-o-up[_ngcontent-%COMP%]:before, .fa-toggle-up[_ngcontent-%COMP%]:before{content:\\\"\\uF151\\\"}.fa-caret-square-o-right[_ngcontent-%COMP%]:before, .fa-toggle-right[_ngcontent-%COMP%]:before{content:\\\"\\uF152\\\"}.fa-eur[_ngcontent-%COMP%]:before, .fa-euro[_ngcontent-%COMP%]:before{content:\\\"\\uF153\\\"}.fa-gbp[_ngcontent-%COMP%]:before{content:\\\"\\uF154\\\"}.fa-dollar[_ngcontent-%COMP%]:before, .fa-usd[_ngcontent-%COMP%]:before{content:\\\"\\uF155\\\"}.fa-inr[_ngcontent-%COMP%]:before, .fa-rupee[_ngcontent-%COMP%]:before{content:\\\"\\uF156\\\"}.fa-cny[_ngcontent-%COMP%]:before, .fa-jpy[_ngcontent-%COMP%]:before, .fa-rmb[_ngcontent-%COMP%]:before, .fa-yen[_ngcontent-%COMP%]:before{content:\\\"\\uF157\\\"}.fa-rouble[_ngcontent-%COMP%]:before, .fa-rub[_ngcontent-%COMP%]:before, .fa-ruble[_ngcontent-%COMP%]:before{content:\\\"\\uF158\\\"}.fa-krw[_ngcontent-%COMP%]:before, .fa-won[_ngcontent-%COMP%]:before{content:\\\"\\uF159\\\"}.fa-bitcoin[_ngcontent-%COMP%]:before, .fa-btc[_ngcontent-%COMP%]:before{content:\\\"\\uF15A\\\"}.fa-file[_ngcontent-%COMP%]:before{content:\\\"\\uF15B\\\"}.fa-file-text[_ngcontent-%COMP%]:before{content:\\\"\\uF15C\\\"}.fa-sort-alpha-asc[_ngcontent-%COMP%]:before{content:\\\"\\uF15D\\\"}.fa-sort-alpha-desc[_ngcontent-%COMP%]:before{content:\\\"\\uF15E\\\"}.fa-sort-amount-asc[_ngcontent-%COMP%]:before{content:\\\"\\uF160\\\"}.fa-sort-amount-desc[_ngcontent-%COMP%]:before{content:\\\"\\uF161\\\"}.fa-sort-numeric-asc[_ngcontent-%COMP%]:before{content:\\\"\\uF162\\\"}.fa-sort-numeric-desc[_ngcontent-%COMP%]:before{content:\\\"\\uF163\\\"}.fa-thumbs-up[_ngcontent-%COMP%]:before{content:\\\"\\uF164\\\"}.fa-thumbs-down[_ngcontent-%COMP%]:before{content:\\\"\\uF165\\\"}.fa-youtube-square[_ngcontent-%COMP%]:before{content:\\\"\\uF166\\\"}.fa-youtube[_ngcontent-%COMP%]:before{content:\\\"\\uF167\\\"}.fa-xing[_ngcontent-%COMP%]:before{content:\\\"\\uF168\\\"}.fa-xing-square[_ngcontent-%COMP%]:before{content:\\\"\\uF169\\\"}.fa-youtube-play[_ngcontent-%COMP%]:before{content:\\\"\\uF16A\\\"}.fa-dropbox[_ngcontent-%COMP%]:before{content:\\\"\\uF16B\\\"}.fa-stack-overflow[_ngcontent-%COMP%]:before{content:\\\"\\uF16C\\\"}.fa-instagram[_ngcontent-%COMP%]:before{content:\\\"\\uF16D\\\"}.fa-flickr[_ngcontent-%COMP%]:before{content:\\\"\\uF16E\\\"}.fa-adn[_ngcontent-%COMP%]:before{content:\\\"\\uF170\\\"}.fa-bitbucket[_ngcontent-%COMP%]:before{content:\\\"\\uF171\\\"}.fa-bitbucket-square[_ngcontent-%COMP%]:before{content:\\\"\\uF172\\\"}.fa-tumblr[_ngcontent-%COMP%]:before{content:\\\"\\uF173\\\"}.fa-tumblr-square[_ngcontent-%COMP%]:before{content:\\\"\\uF174\\\"}.fa-long-arrow-down[_ngcontent-%COMP%]:before{content:\\\"\\uF175\\\"}.fa-long-arrow-up[_ngcontent-%COMP%]:before{content:\\\"\\uF176\\\"}.fa-long-arrow-left[_ngcontent-%COMP%]:before{content:\\\"\\uF177\\\"}.fa-long-arrow-right[_ngcontent-%COMP%]:before{content:\\\"\\uF178\\\"}.fa-apple[_ngcontent-%COMP%]:before{content:\\\"\\uF179\\\"}.fa-windows[_ngcontent-%COMP%]:before{content:\\\"\\uF17A\\\"}.fa-android[_ngcontent-%COMP%]:before{content:\\\"\\uF17B\\\"}.fa-linux[_ngcontent-%COMP%]:before{content:\\\"\\uF17C\\\"}.fa-dribbble[_ngcontent-%COMP%]:before{content:\\\"\\uF17D\\\"}.fa-skype[_ngcontent-%COMP%]:before{content:\\\"\\uF17E\\\"}.fa-foursquare[_ngcontent-%COMP%]:before{content:\\\"\\uF180\\\"}.fa-trello[_ngcontent-%COMP%]:before{content:\\\"\\uF181\\\"}.fa-female[_ngcontent-%COMP%]:before{content:\\\"\\uF182\\\"}.fa-male[_ngcontent-%COMP%]:before{content:\\\"\\uF183\\\"}.fa-gittip[_ngcontent-%COMP%]:before, .fa-gratipay[_ngcontent-%COMP%]:before{content:\\\"\\uF184\\\"}.fa-sun-o[_ngcontent-%COMP%]:before{content:\\\"\\uF185\\\"}.fa-moon-o[_ngcontent-%COMP%]:before{content:\\\"\\uF186\\\"}.fa-archive[_ngcontent-%COMP%]:before{content:\\\"\\uF187\\\"}.fa-bug[_ngcontent-%COMP%]:before{content:\\\"\\uF188\\\"}.fa-vk[_ngcontent-%COMP%]:before{content:\\\"\\uF189\\\"}.fa-weibo[_ngcontent-%COMP%]:before{content:\\\"\\uF18A\\\"}.fa-renren[_ngcontent-%COMP%]:before{content:\\\"\\uF18B\\\"}.fa-pagelines[_ngcontent-%COMP%]:before{content:\\\"\\uF18C\\\"}.fa-stack-exchange[_ngcontent-%COMP%]:before{content:\\\"\\uF18D\\\"}.fa-arrow-circle-o-right[_ngcontent-%COMP%]:before{content:\\\"\\uF18E\\\"}.fa-arrow-circle-o-left[_ngcontent-%COMP%]:before{content:\\\"\\uF190\\\"}.fa-caret-square-o-left[_ngcontent-%COMP%]:before, .fa-toggle-left[_ngcontent-%COMP%]:before{content:\\\"\\uF191\\\"}.fa-dot-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF192\\\"}.fa-wheelchair[_ngcontent-%COMP%]:before{content:\\\"\\uF193\\\"}.fa-vimeo-square[_ngcontent-%COMP%]:before{content:\\\"\\uF194\\\"}.fa-try[_ngcontent-%COMP%]:before, .fa-turkish-lira[_ngcontent-%COMP%]:before{content:\\\"\\uF195\\\"}.fa-plus-square-o[_ngcontent-%COMP%]:before{content:\\\"\\uF196\\\"}.fa-space-shuttle[_ngcontent-%COMP%]:before{content:\\\"\\uF197\\\"}.fa-slack[_ngcontent-%COMP%]:before{content:\\\"\\uF198\\\"}.fa-envelope-square[_ngcontent-%COMP%]:before{content:\\\"\\uF199\\\"}.fa-wordpress[_ngcontent-%COMP%]:before{content:\\\"\\uF19A\\\"}.fa-openid[_ngcontent-%COMP%]:before{content:\\\"\\uF19B\\\"}.fa-bank[_ngcontent-%COMP%]:before, .fa-institution[_ngcontent-%COMP%]:before, .fa-university[_ngcontent-%COMP%]:before{content:\\\"\\uF19C\\\"}.fa-graduation-cap[_ngcontent-%COMP%]:before, .fa-mortar-board[_ngcontent-%COMP%]:before{content:\\\"\\uF19D\\\"}.fa-yahoo[_ngcontent-%COMP%]:before{content:\\\"\\uF19E\\\"}.fa-google[_ngcontent-%COMP%]:before{content:\\\"\\uF1A0\\\"}.fa-reddit[_ngcontent-%COMP%]:before{content:\\\"\\uF1A1\\\"}.fa-reddit-square[_ngcontent-%COMP%]:before{content:\\\"\\uF1A2\\\"}.fa-stumbleupon-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF1A3\\\"}.fa-stumbleupon[_ngcontent-%COMP%]:before{content:\\\"\\uF1A4\\\"}.fa-delicious[_ngcontent-%COMP%]:before{content:\\\"\\uF1A5\\\"}.fa-digg[_ngcontent-%COMP%]:before{content:\\\"\\uF1A6\\\"}.fa-pied-piper-pp[_ngcontent-%COMP%]:before{content:\\\"\\uF1A7\\\"}.fa-pied-piper-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF1A8\\\"}.fa-drupal[_ngcontent-%COMP%]:before{content:\\\"\\uF1A9\\\"}.fa-joomla[_ngcontent-%COMP%]:before{content:\\\"\\uF1AA\\\"}.fa-language[_ngcontent-%COMP%]:before{content:\\\"\\uF1AB\\\"}.fa-fax[_ngcontent-%COMP%]:before{content:\\\"\\uF1AC\\\"}.fa-building[_ngcontent-%COMP%]:before{content:\\\"\\uF1AD\\\"}.fa-child[_ngcontent-%COMP%]:before{content:\\\"\\uF1AE\\\"}.fa-paw[_ngcontent-%COMP%]:before{content:\\\"\\uF1B0\\\"}.fa-spoon[_ngcontent-%COMP%]:before{content:\\\"\\uF1B1\\\"}.fa-cube[_ngcontent-%COMP%]:before{content:\\\"\\uF1B2\\\"}.fa-cubes[_ngcontent-%COMP%]:before{content:\\\"\\uF1B3\\\"}.fa-behance[_ngcontent-%COMP%]:before{content:\\\"\\uF1B4\\\"}.fa-behance-square[_ngcontent-%COMP%]:before{content:\\\"\\uF1B5\\\"}.fa-steam[_ngcontent-%COMP%]:before{content:\\\"\\uF1B6\\\"}.fa-steam-square[_ngcontent-%COMP%]:before{content:\\\"\\uF1B7\\\"}.fa-recycle[_ngcontent-%COMP%]:before{content:\\\"\\uF1B8\\\"}.fa-automobile[_ngcontent-%COMP%]:before, .fa-car[_ngcontent-%COMP%]:before{content:\\\"\\uF1B9\\\"}.fa-cab[_ngcontent-%COMP%]:before, .fa-taxi[_ngcontent-%COMP%]:before{content:\\\"\\uF1BA\\\"}.fa-tree[_ngcontent-%COMP%]:before{content:\\\"\\uF1BB\\\"}.fa-spotify[_ngcontent-%COMP%]:before{content:\\\"\\uF1BC\\\"}.fa-deviantart[_ngcontent-%COMP%]:before{content:\\\"\\uF1BD\\\"}.fa-soundcloud[_ngcontent-%COMP%]:before{content:\\\"\\uF1BE\\\"}.fa-database[_ngcontent-%COMP%]:before{content:\\\"\\uF1C0\\\"}.fa-file-pdf-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C1\\\"}.fa-file-word-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C2\\\"}.fa-file-excel-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C3\\\"}.fa-file-powerpoint-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C4\\\"}.fa-file-image-o[_ngcontent-%COMP%]:before, .fa-file-photo-o[_ngcontent-%COMP%]:before, .fa-file-picture-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C5\\\"}.fa-file-archive-o[_ngcontent-%COMP%]:before, .fa-file-zip-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C6\\\"}.fa-file-audio-o[_ngcontent-%COMP%]:before, .fa-file-sound-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C7\\\"}.fa-file-movie-o[_ngcontent-%COMP%]:before, .fa-file-video-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C8\\\"}.fa-file-code-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C9\\\"}.fa-vine[_ngcontent-%COMP%]:before{content:\\\"\\uF1CA\\\"}.fa-codepen[_ngcontent-%COMP%]:before{content:\\\"\\uF1CB\\\"}.fa-jsfiddle[_ngcontent-%COMP%]:before{content:\\\"\\uF1CC\\\"}.fa-life-bouy[_ngcontent-%COMP%]:before, .fa-life-buoy[_ngcontent-%COMP%]:before, .fa-life-ring[_ngcontent-%COMP%]:before, .fa-life-saver[_ngcontent-%COMP%]:before, .fa-support[_ngcontent-%COMP%]:before{content:\\\"\\uF1CD\\\"}.fa-circle-o-notch[_ngcontent-%COMP%]:before{content:\\\"\\uF1CE\\\"}.fa-ra[_ngcontent-%COMP%]:before, .fa-rebel[_ngcontent-%COMP%]:before, .fa-resistance[_ngcontent-%COMP%]:before{content:\\\"\\uF1D0\\\"}.fa-empire[_ngcontent-%COMP%]:before, .fa-ge[_ngcontent-%COMP%]:before{content:\\\"\\uF1D1\\\"}.fa-git-square[_ngcontent-%COMP%]:before{content:\\\"\\uF1D2\\\"}.fa-git[_ngcontent-%COMP%]:before{content:\\\"\\uF1D3\\\"}.fa-hacker-news[_ngcontent-%COMP%]:before, .fa-y-combinator-square[_ngcontent-%COMP%]:before, .fa-yc-square[_ngcontent-%COMP%]:before{content:\\\"\\uF1D4\\\"}.fa-tencent-weibo[_ngcontent-%COMP%]:before{content:\\\"\\uF1D5\\\"}.fa-qq[_ngcontent-%COMP%]:before{content:\\\"\\uF1D6\\\"}.fa-wechat[_ngcontent-%COMP%]:before, .fa-weixin[_ngcontent-%COMP%]:before{content:\\\"\\uF1D7\\\"}.fa-paper-plane[_ngcontent-%COMP%]:before, .fa-send[_ngcontent-%COMP%]:before{content:\\\"\\uF1D8\\\"}.fa-paper-plane-o[_ngcontent-%COMP%]:before, .fa-send-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1D9\\\"}.fa-history[_ngcontent-%COMP%]:before{content:\\\"\\uF1DA\\\"}.fa-circle-thin[_ngcontent-%COMP%]:before{content:\\\"\\uF1DB\\\"}.fa-header[_ngcontent-%COMP%]:before{content:\\\"\\uF1DC\\\"}.fa-paragraph[_ngcontent-%COMP%]:before{content:\\\"\\uF1DD\\\"}.fa-sliders[_ngcontent-%COMP%]:before{content:\\\"\\uF1DE\\\"}.fa-share-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF1E0\\\"}.fa-share-alt-square[_ngcontent-%COMP%]:before{content:\\\"\\uF1E1\\\"}.fa-bomb[_ngcontent-%COMP%]:before{content:\\\"\\uF1E2\\\"}.fa-futbol-o[_ngcontent-%COMP%]:before, .fa-soccer-ball-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1E3\\\"}.fa-tty[_ngcontent-%COMP%]:before{content:\\\"\\uF1E4\\\"}.fa-binoculars[_ngcontent-%COMP%]:before{content:\\\"\\uF1E5\\\"}.fa-plug[_ngcontent-%COMP%]:before{content:\\\"\\uF1E6\\\"}.fa-slideshare[_ngcontent-%COMP%]:before{content:\\\"\\uF1E7\\\"}.fa-twitch[_ngcontent-%COMP%]:before{content:\\\"\\uF1E8\\\"}.fa-yelp[_ngcontent-%COMP%]:before{content:\\\"\\uF1E9\\\"}.fa-newspaper-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1EA\\\"}.fa-wifi[_ngcontent-%COMP%]:before{content:\\\"\\uF1EB\\\"}.fa-calculator[_ngcontent-%COMP%]:before{content:\\\"\\uF1EC\\\"}.fa-paypal[_ngcontent-%COMP%]:before{content:\\\"\\uF1ED\\\"}.fa-google-wallet[_ngcontent-%COMP%]:before{content:\\\"\\uF1EE\\\"}.fa-cc-visa[_ngcontent-%COMP%]:before{content:\\\"\\uF1F0\\\"}.fa-cc-mastercard[_ngcontent-%COMP%]:before{content:\\\"\\uF1F1\\\"}.fa-cc-discover[_ngcontent-%COMP%]:before{content:\\\"\\uF1F2\\\"}.fa-cc-amex[_ngcontent-%COMP%]:before{content:\\\"\\uF1F3\\\"}.fa-cc-paypal[_ngcontent-%COMP%]:before{content:\\\"\\uF1F4\\\"}.fa-cc-stripe[_ngcontent-%COMP%]:before{content:\\\"\\uF1F5\\\"}.fa-bell-slash[_ngcontent-%COMP%]:before{content:\\\"\\uF1F6\\\"}.fa-bell-slash-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1F7\\\"}.fa-trash[_ngcontent-%COMP%]:before{content:\\\"\\uF1F8\\\"}.fa-copyright[_ngcontent-%COMP%]:before{content:\\\"\\uF1F9\\\"}.fa-at[_ngcontent-%COMP%]:before{content:\\\"\\uF1FA\\\"}.fa-eyedropper[_ngcontent-%COMP%]:before{content:\\\"\\uF1FB\\\"}.fa-paint-brush[_ngcontent-%COMP%]:before{content:\\\"\\uF1FC\\\"}.fa-birthday-cake[_ngcontent-%COMP%]:before{content:\\\"\\uF1FD\\\"}.fa-area-chart[_ngcontent-%COMP%]:before{content:\\\"\\uF1FE\\\"}.fa-pie-chart[_ngcontent-%COMP%]:before{content:\\\"\\uF200\\\"}.fa-line-chart[_ngcontent-%COMP%]:before{content:\\\"\\uF201\\\"}.fa-lastfm[_ngcontent-%COMP%]:before{content:\\\"\\uF202\\\"}.fa-lastfm-square[_ngcontent-%COMP%]:before{content:\\\"\\uF203\\\"}.fa-toggle-off[_ngcontent-%COMP%]:before{content:\\\"\\uF204\\\"}.fa-toggle-on[_ngcontent-%COMP%]:before{content:\\\"\\uF205\\\"}.fa-bicycle[_ngcontent-%COMP%]:before{content:\\\"\\uF206\\\"}.fa-bus[_ngcontent-%COMP%]:before{content:\\\"\\uF207\\\"}.fa-ioxhost[_ngcontent-%COMP%]:before{content:\\\"\\uF208\\\"}.fa-angellist[_ngcontent-%COMP%]:before{content:\\\"\\uF209\\\"}.fa-cc[_ngcontent-%COMP%]:before{content:\\\"\\uF20A\\\"}.fa-ils[_ngcontent-%COMP%]:before, .fa-shekel[_ngcontent-%COMP%]:before, .fa-sheqel[_ngcontent-%COMP%]:before{content:\\\"\\uF20B\\\"}.fa-meanpath[_ngcontent-%COMP%]:before{content:\\\"\\uF20C\\\"}.fa-buysellads[_ngcontent-%COMP%]:before{content:\\\"\\uF20D\\\"}.fa-connectdevelop[_ngcontent-%COMP%]:before{content:\\\"\\uF20E\\\"}.fa-dashcube[_ngcontent-%COMP%]:before{content:\\\"\\uF210\\\"}.fa-forumbee[_ngcontent-%COMP%]:before{content:\\\"\\uF211\\\"}.fa-leanpub[_ngcontent-%COMP%]:before{content:\\\"\\uF212\\\"}.fa-sellsy[_ngcontent-%COMP%]:before{content:\\\"\\uF213\\\"}.fa-shirtsinbulk[_ngcontent-%COMP%]:before{content:\\\"\\uF214\\\"}.fa-simplybuilt[_ngcontent-%COMP%]:before{content:\\\"\\uF215\\\"}.fa-skyatlas[_ngcontent-%COMP%]:before{content:\\\"\\uF216\\\"}.fa-cart-plus[_ngcontent-%COMP%]:before{content:\\\"\\uF217\\\"}.fa-cart-arrow-down[_ngcontent-%COMP%]:before{content:\\\"\\uF218\\\"}.fa-diamond[_ngcontent-%COMP%]:before{content:\\\"\\uF219\\\"}.fa-ship[_ngcontent-%COMP%]:before{content:\\\"\\uF21A\\\"}.fa-user-secret[_ngcontent-%COMP%]:before{content:\\\"\\uF21B\\\"}.fa-motorcycle[_ngcontent-%COMP%]:before{content:\\\"\\uF21C\\\"}.fa-street-view[_ngcontent-%COMP%]:before{content:\\\"\\uF21D\\\"}.fa-heartbeat[_ngcontent-%COMP%]:before{content:\\\"\\uF21E\\\"}.fa-venus[_ngcontent-%COMP%]:before{content:\\\"\\uF221\\\"}.fa-mars[_ngcontent-%COMP%]:before{content:\\\"\\uF222\\\"}.fa-mercury[_ngcontent-%COMP%]:before{content:\\\"\\uF223\\\"}.fa-intersex[_ngcontent-%COMP%]:before, .fa-transgender[_ngcontent-%COMP%]:before{content:\\\"\\uF224\\\"}.fa-transgender-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF225\\\"}.fa-venus-double[_ngcontent-%COMP%]:before{content:\\\"\\uF226\\\"}.fa-mars-double[_ngcontent-%COMP%]:before{content:\\\"\\uF227\\\"}.fa-venus-mars[_ngcontent-%COMP%]:before{content:\\\"\\uF228\\\"}.fa-mars-stroke[_ngcontent-%COMP%]:before{content:\\\"\\uF229\\\"}.fa-mars-stroke-v[_ngcontent-%COMP%]:before{content:\\\"\\uF22A\\\"}.fa-mars-stroke-h[_ngcontent-%COMP%]:before{content:\\\"\\uF22B\\\"}.fa-neuter[_ngcontent-%COMP%]:before{content:\\\"\\uF22C\\\"}.fa-genderless[_ngcontent-%COMP%]:before{content:\\\"\\uF22D\\\"}.fa-facebook-official[_ngcontent-%COMP%]:before{content:\\\"\\uF230\\\"}.fa-pinterest-p[_ngcontent-%COMP%]:before{content:\\\"\\uF231\\\"}.fa-whatsapp[_ngcontent-%COMP%]:before{content:\\\"\\uF232\\\"}.fa-server[_ngcontent-%COMP%]:before{content:\\\"\\uF233\\\"}.fa-user-plus[_ngcontent-%COMP%]:before{content:\\\"\\uF234\\\"}.fa-user-times[_ngcontent-%COMP%]:before{content:\\\"\\uF235\\\"}.fa-bed[_ngcontent-%COMP%]:before, .fa-hotel[_ngcontent-%COMP%]:before{content:\\\"\\uF236\\\"}.fa-viacoin[_ngcontent-%COMP%]:before{content:\\\"\\uF237\\\"}.fa-train[_ngcontent-%COMP%]:before{content:\\\"\\uF238\\\"}.fa-subway[_ngcontent-%COMP%]:before{content:\\\"\\uF239\\\"}.fa-medium[_ngcontent-%COMP%]:before{content:\\\"\\uF23A\\\"}.fa-y-combinator[_ngcontent-%COMP%]:before, .fa-yc[_ngcontent-%COMP%]:before{content:\\\"\\uF23B\\\"}.fa-optin-monster[_ngcontent-%COMP%]:before{content:\\\"\\uF23C\\\"}.fa-opencart[_ngcontent-%COMP%]:before{content:\\\"\\uF23D\\\"}.fa-expeditedssl[_ngcontent-%COMP%]:before{content:\\\"\\uF23E\\\"}.fa-battery-4[_ngcontent-%COMP%]:before, .fa-battery-full[_ngcontent-%COMP%]:before, .fa-battery[_ngcontent-%COMP%]:before{content:\\\"\\uF240\\\"}.fa-battery-3[_ngcontent-%COMP%]:before, .fa-battery-three-quarters[_ngcontent-%COMP%]:before{content:\\\"\\uF241\\\"}.fa-battery-2[_ngcontent-%COMP%]:before, .fa-battery-half[_ngcontent-%COMP%]:before{content:\\\"\\uF242\\\"}.fa-battery-1[_ngcontent-%COMP%]:before, .fa-battery-quarter[_ngcontent-%COMP%]:before{content:\\\"\\uF243\\\"}.fa-battery-0[_ngcontent-%COMP%]:before, .fa-battery-empty[_ngcontent-%COMP%]:before{content:\\\"\\uF244\\\"}.fa-mouse-pointer[_ngcontent-%COMP%]:before{content:\\\"\\uF245\\\"}.fa-i-cursor[_ngcontent-%COMP%]:before{content:\\\"\\uF246\\\"}.fa-object-group[_ngcontent-%COMP%]:before{content:\\\"\\uF247\\\"}.fa-object-ungroup[_ngcontent-%COMP%]:before{content:\\\"\\uF248\\\"}.fa-sticky-note[_ngcontent-%COMP%]:before{content:\\\"\\uF249\\\"}.fa-sticky-note-o[_ngcontent-%COMP%]:before{content:\\\"\\uF24A\\\"}.fa-cc-jcb[_ngcontent-%COMP%]:before{content:\\\"\\uF24B\\\"}.fa-cc-diners-club[_ngcontent-%COMP%]:before{content:\\\"\\uF24C\\\"}.fa-clone[_ngcontent-%COMP%]:before{content:\\\"\\uF24D\\\"}.fa-balance-scale[_ngcontent-%COMP%]:before{content:\\\"\\uF24E\\\"}.fa-hourglass-o[_ngcontent-%COMP%]:before{content:\\\"\\uF250\\\"}.fa-hourglass-1[_ngcontent-%COMP%]:before, .fa-hourglass-start[_ngcontent-%COMP%]:before{content:\\\"\\uF251\\\"}.fa-hourglass-2[_ngcontent-%COMP%]:before, .fa-hourglass-half[_ngcontent-%COMP%]:before{content:\\\"\\uF252\\\"}.fa-hourglass-3[_ngcontent-%COMP%]:before, .fa-hourglass-end[_ngcontent-%COMP%]:before{content:\\\"\\uF253\\\"}.fa-hourglass[_ngcontent-%COMP%]:before{content:\\\"\\uF254\\\"}.fa-hand-grab-o[_ngcontent-%COMP%]:before, .fa-hand-rock-o[_ngcontent-%COMP%]:before{content:\\\"\\uF255\\\"}.fa-hand-paper-o[_ngcontent-%COMP%]:before, .fa-hand-stop-o[_ngcontent-%COMP%]:before{content:\\\"\\uF256\\\"}.fa-hand-scissors-o[_ngcontent-%COMP%]:before{content:\\\"\\uF257\\\"}.fa-hand-lizard-o[_ngcontent-%COMP%]:before{content:\\\"\\uF258\\\"}.fa-hand-spock-o[_ngcontent-%COMP%]:before{content:\\\"\\uF259\\\"}.fa-hand-pointer-o[_ngcontent-%COMP%]:before{content:\\\"\\uF25A\\\"}.fa-hand-peace-o[_ngcontent-%COMP%]:before{content:\\\"\\uF25B\\\"}.fa-trademark[_ngcontent-%COMP%]:before{content:\\\"\\uF25C\\\"}.fa-registered[_ngcontent-%COMP%]:before{content:\\\"\\uF25D\\\"}.fa-creative-commons[_ngcontent-%COMP%]:before{content:\\\"\\uF25E\\\"}.fa-gg[_ngcontent-%COMP%]:before{content:\\\"\\uF260\\\"}.fa-gg-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF261\\\"}.fa-tripadvisor[_ngcontent-%COMP%]:before{content:\\\"\\uF262\\\"}.fa-odnoklassniki[_ngcontent-%COMP%]:before{content:\\\"\\uF263\\\"}.fa-odnoklassniki-square[_ngcontent-%COMP%]:before{content:\\\"\\uF264\\\"}.fa-get-pocket[_ngcontent-%COMP%]:before{content:\\\"\\uF265\\\"}.fa-wikipedia-w[_ngcontent-%COMP%]:before{content:\\\"\\uF266\\\"}.fa-safari[_ngcontent-%COMP%]:before{content:\\\"\\uF267\\\"}.fa-chrome[_ngcontent-%COMP%]:before{content:\\\"\\uF268\\\"}.fa-firefox[_ngcontent-%COMP%]:before{content:\\\"\\uF269\\\"}.fa-opera[_ngcontent-%COMP%]:before{content:\\\"\\uF26A\\\"}.fa-internet-explorer[_ngcontent-%COMP%]:before{content:\\\"\\uF26B\\\"}.fa-television[_ngcontent-%COMP%]:before, .fa-tv[_ngcontent-%COMP%]:before{content:\\\"\\uF26C\\\"}.fa-contao[_ngcontent-%COMP%]:before{content:\\\"\\uF26D\\\"}.fa-500px[_ngcontent-%COMP%]:before{content:\\\"\\uF26E\\\"}.fa-amazon[_ngcontent-%COMP%]:before{content:\\\"\\uF270\\\"}.fa-calendar-plus-o[_ngcontent-%COMP%]:before{content:\\\"\\uF271\\\"}.fa-calendar-minus-o[_ngcontent-%COMP%]:before{content:\\\"\\uF272\\\"}.fa-calendar-times-o[_ngcontent-%COMP%]:before{content:\\\"\\uF273\\\"}.fa-calendar-check-o[_ngcontent-%COMP%]:before{content:\\\"\\uF274\\\"}.fa-industry[_ngcontent-%COMP%]:before{content:\\\"\\uF275\\\"}.fa-map-pin[_ngcontent-%COMP%]:before{content:\\\"\\uF276\\\"}.fa-map-signs[_ngcontent-%COMP%]:before{content:\\\"\\uF277\\\"}.fa-map-o[_ngcontent-%COMP%]:before{content:\\\"\\uF278\\\"}.fa-map[_ngcontent-%COMP%]:before{content:\\\"\\uF279\\\"}.fa-commenting[_ngcontent-%COMP%]:before{content:\\\"\\uF27A\\\"}.fa-commenting-o[_ngcontent-%COMP%]:before{content:\\\"\\uF27B\\\"}.fa-houzz[_ngcontent-%COMP%]:before{content:\\\"\\uF27C\\\"}.fa-vimeo[_ngcontent-%COMP%]:before{content:\\\"\\uF27D\\\"}.fa-black-tie[_ngcontent-%COMP%]:before{content:\\\"\\uF27E\\\"}.fa-fonticons[_ngcontent-%COMP%]:before{content:\\\"\\uF280\\\"}.fa-reddit-alien[_ngcontent-%COMP%]:before{content:\\\"\\uF281\\\"}.fa-edge[_ngcontent-%COMP%]:before{content:\\\"\\uF282\\\"}.fa-credit-card-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF283\\\"}.fa-codiepie[_ngcontent-%COMP%]:before{content:\\\"\\uF284\\\"}.fa-modx[_ngcontent-%COMP%]:before{content:\\\"\\uF285\\\"}.fa-fort-awesome[_ngcontent-%COMP%]:before{content:\\\"\\uF286\\\"}.fa-usb[_ngcontent-%COMP%]:before{content:\\\"\\uF287\\\"}.fa-product-hunt[_ngcontent-%COMP%]:before{content:\\\"\\uF288\\\"}.fa-mixcloud[_ngcontent-%COMP%]:before{content:\\\"\\uF289\\\"}.fa-scribd[_ngcontent-%COMP%]:before{content:\\\"\\uF28A\\\"}.fa-pause-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF28B\\\"}.fa-pause-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF28C\\\"}.fa-stop-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF28D\\\"}.fa-stop-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF28E\\\"}.fa-shopping-bag[_ngcontent-%COMP%]:before{content:\\\"\\uF290\\\"}.fa-shopping-basket[_ngcontent-%COMP%]:before{content:\\\"\\uF291\\\"}.fa-hashtag[_ngcontent-%COMP%]:before{content:\\\"\\uF292\\\"}.fa-bluetooth[_ngcontent-%COMP%]:before{content:\\\"\\uF293\\\"}.fa-bluetooth-b[_ngcontent-%COMP%]:before{content:\\\"\\uF294\\\"}.fa-percent[_ngcontent-%COMP%]:before{content:\\\"\\uF295\\\"}.fa-gitlab[_ngcontent-%COMP%]:before{content:\\\"\\uF296\\\"}.fa-wpbeginner[_ngcontent-%COMP%]:before{content:\\\"\\uF297\\\"}.fa-wpforms[_ngcontent-%COMP%]:before{content:\\\"\\uF298\\\"}.fa-envira[_ngcontent-%COMP%]:before{content:\\\"\\uF299\\\"}.fa-universal-access[_ngcontent-%COMP%]:before{content:\\\"\\uF29A\\\"}.fa-wheelchair-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF29B\\\"}.fa-question-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF29C\\\"}.fa-blind[_ngcontent-%COMP%]:before{content:\\\"\\uF29D\\\"}.fa-audio-description[_ngcontent-%COMP%]:before{content:\\\"\\uF29E\\\"}.fa-volume-control-phone[_ngcontent-%COMP%]:before{content:\\\"\\uF2A0\\\"}.fa-braille[_ngcontent-%COMP%]:before{content:\\\"\\uF2A1\\\"}.fa-assistive-listening-systems[_ngcontent-%COMP%]:before{content:\\\"\\uF2A2\\\"}.fa-american-sign-language-interpreting[_ngcontent-%COMP%]:before, .fa-asl-interpreting[_ngcontent-%COMP%]:before{content:\\\"\\uF2A3\\\"}.fa-deaf[_ngcontent-%COMP%]:before, .fa-deafness[_ngcontent-%COMP%]:before, .fa-hard-of-hearing[_ngcontent-%COMP%]:before{content:\\\"\\uF2A4\\\"}.fa-glide[_ngcontent-%COMP%]:before{content:\\\"\\uF2A5\\\"}.fa-glide-g[_ngcontent-%COMP%]:before{content:\\\"\\uF2A6\\\"}.fa-sign-language[_ngcontent-%COMP%]:before, .fa-signing[_ngcontent-%COMP%]:before{content:\\\"\\uF2A7\\\"}.fa-low-vision[_ngcontent-%COMP%]:before{content:\\\"\\uF2A8\\\"}.fa-viadeo[_ngcontent-%COMP%]:before{content:\\\"\\uF2A9\\\"}.fa-viadeo-square[_ngcontent-%COMP%]:before{content:\\\"\\uF2AA\\\"}.fa-snapchat[_ngcontent-%COMP%]:before{content:\\\"\\uF2AB\\\"}.fa-snapchat-ghost[_ngcontent-%COMP%]:before{content:\\\"\\uF2AC\\\"}.fa-snapchat-square[_ngcontent-%COMP%]:before{content:\\\"\\uF2AD\\\"}.fa-pied-piper[_ngcontent-%COMP%]:before{content:\\\"\\uF2AE\\\"}.fa-first-order[_ngcontent-%COMP%]:before{content:\\\"\\uF2B0\\\"}.fa-yoast[_ngcontent-%COMP%]:before{content:\\\"\\uF2B1\\\"}.fa-themeisle[_ngcontent-%COMP%]:before{content:\\\"\\uF2B2\\\"}.fa-google-plus-circle[_ngcontent-%COMP%]:before, .fa-google-plus-official[_ngcontent-%COMP%]:before{content:\\\"\\uF2B3\\\"}.fa-fa[_ngcontent-%COMP%]:before, .fa-font-awesome[_ngcontent-%COMP%]:before{content:\\\"\\uF2B4\\\"}.fa-handshake-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2B5\\\"}.fa-envelope-open[_ngcontent-%COMP%]:before{content:\\\"\\uF2B6\\\"}.fa-envelope-open-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2B7\\\"}.fa-linode[_ngcontent-%COMP%]:before{content:\\\"\\uF2B8\\\"}.fa-address-book[_ngcontent-%COMP%]:before{content:\\\"\\uF2B9\\\"}.fa-address-book-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2BA\\\"}.fa-address-card[_ngcontent-%COMP%]:before, .fa-vcard[_ngcontent-%COMP%]:before{content:\\\"\\uF2BB\\\"}.fa-address-card-o[_ngcontent-%COMP%]:before, .fa-vcard-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2BC\\\"}.fa-user-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF2BD\\\"}.fa-user-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2BE\\\"}.fa-user-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2C0\\\"}.fa-id-badge[_ngcontent-%COMP%]:before{content:\\\"\\uF2C1\\\"}.fa-drivers-license[_ngcontent-%COMP%]:before, .fa-id-card[_ngcontent-%COMP%]:before{content:\\\"\\uF2C2\\\"}.fa-drivers-license-o[_ngcontent-%COMP%]:before, .fa-id-card-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2C3\\\"}.fa-quora[_ngcontent-%COMP%]:before{content:\\\"\\uF2C4\\\"}.fa-free-code-camp[_ngcontent-%COMP%]:before{content:\\\"\\uF2C5\\\"}.fa-telegram[_ngcontent-%COMP%]:before{content:\\\"\\uF2C6\\\"}.fa-thermometer-4[_ngcontent-%COMP%]:before, .fa-thermometer-full[_ngcontent-%COMP%]:before, .fa-thermometer[_ngcontent-%COMP%]:before{content:\\\"\\uF2C7\\\"}.fa-thermometer-3[_ngcontent-%COMP%]:before, .fa-thermometer-three-quarters[_ngcontent-%COMP%]:before{content:\\\"\\uF2C8\\\"}.fa-thermometer-2[_ngcontent-%COMP%]:before, .fa-thermometer-half[_ngcontent-%COMP%]:before{content:\\\"\\uF2C9\\\"}.fa-thermometer-1[_ngcontent-%COMP%]:before, .fa-thermometer-quarter[_ngcontent-%COMP%]:before{content:\\\"\\uF2CA\\\"}.fa-thermometer-0[_ngcontent-%COMP%]:before, .fa-thermometer-empty[_ngcontent-%COMP%]:before{content:\\\"\\uF2CB\\\"}.fa-shower[_ngcontent-%COMP%]:before{content:\\\"\\uF2CC\\\"}.fa-bath[_ngcontent-%COMP%]:before, .fa-bathtub[_ngcontent-%COMP%]:before, .fa-s15[_ngcontent-%COMP%]:before{content:\\\"\\uF2CD\\\"}.fa-podcast[_ngcontent-%COMP%]:before{content:\\\"\\uF2CE\\\"}.fa-window-maximize[_ngcontent-%COMP%]:before{content:\\\"\\uF2D0\\\"}.fa-window-minimize[_ngcontent-%COMP%]:before{content:\\\"\\uF2D1\\\"}.fa-window-restore[_ngcontent-%COMP%]:before{content:\\\"\\uF2D2\\\"}.fa-times-rectangle[_ngcontent-%COMP%]:before, .fa-window-close[_ngcontent-%COMP%]:before{content:\\\"\\uF2D3\\\"}.fa-times-rectangle-o[_ngcontent-%COMP%]:before, .fa-window-close-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2D4\\\"}.fa-bandcamp[_ngcontent-%COMP%]:before{content:\\\"\\uF2D5\\\"}.fa-grav[_ngcontent-%COMP%]:before{content:\\\"\\uF2D6\\\"}.fa-etsy[_ngcontent-%COMP%]:before{content:\\\"\\uF2D7\\\"}.fa-imdb[_ngcontent-%COMP%]:before{content:\\\"\\uF2D8\\\"}.fa-ravelry[_ngcontent-%COMP%]:before{content:\\\"\\uF2D9\\\"}.fa-eercast[_ngcontent-%COMP%]:before{content:\\\"\\uF2DA\\\"}.fa-microchip[_ngcontent-%COMP%]:before{content:\\\"\\uF2DB\\\"}.fa-snowflake-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2DC\\\"}.fa-superpowers[_ngcontent-%COMP%]:before{content:\\\"\\uF2DD\\\"}.fa-wpexplorer[_ngcontent-%COMP%]:before{content:\\\"\\uF2DE\\\"}.fa-meetup[_ngcontent-%COMP%]:before{content:\\\"\\uF2E0\\\"}.sr-only[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable[_ngcontent-%COMP%]:active, .sr-only-focusable[_ngcontent-%COMP%]:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}a[_ngcontent-%COMP%]{cursor:pointer}.angular-editor-textarea[_ngcontent-%COMP%]{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea[_ngcontent-%COMP%]:after{content:\\\"\\\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:rgba(255,255,255,.5)}.angular-editor-toolbar[_ngcontent-%COMP%]{font:100 .8rem/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;padding:.2rem;border:1px solid #ddd}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%]{display:none;margin-right:5px;vertical-align:baseline}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;min-width:2rem;float:left}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button.focus[_ngcontent-%COMP%], .angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]:focus{outline:0}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]:disabled > .color-label[_ngcontent-%COMP%]{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]:disabled > .color-label.background[_ngcontent-%COMP%], .angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]:disabled > .color-label.foreground[_ngcontent-%COMP%] [_ngcontent-%COMP%]:after{background:#555}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button.active[_ngcontent-%COMP%]{background:#fff5b9}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button.active[_ngcontent-%COMP%]:hover{background-color:#fffa98}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid rgba(255,255,255,0);border-radius:5px;outline:0;padding:.4rem;cursor:pointer}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%]{display:inline-block;width:90px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%]:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font[_ngcontent-%COMP%]{display:inline-block;width:90px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font[_ngcontent-%COMP%]:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%]{display:inline-block;width:50px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%]:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-custom-style[_ngcontent-%COMP%]{display:inline-block;width:90px}@supports not (-moz-appearance:none){.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] optgroup[_ngcontent-%COMP%]{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] option[_ngcontent-%COMP%]{border:1px solid;background-color:#fff}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .default[_ngcontent-%COMP%]{font-size:16px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .h1[_ngcontent-%COMP%]{font-size:24px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .h2[_ngcontent-%COMP%]{font-size:20px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .h3[_ngcontent-%COMP%]{font-size:16px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .h4[_ngcontent-%COMP%]{font-size:15px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .h5[_ngcontent-%COMP%]{font-size:14px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .h6[_ngcontent-%COMP%]{font-size:13px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .div[_ngcontent-%COMP%], .angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .pre[_ngcontent-%COMP%]{font-size:12px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font[_ngcontent-%COMP%] optgroup[_ngcontent-%COMP%]{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font[_ngcontent-%COMP%] option[_ngcontent-%COMP%]{border:1px solid;background-color:#fff}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] optgroup[_ngcontent-%COMP%]{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] option[_ngcontent-%COMP%]{border:1px solid;background-color:#fff}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size1[_ngcontent-%COMP%]{font-size:10px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size2[_ngcontent-%COMP%]{font-size:12px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size3[_ngcontent-%COMP%]{font-size:14px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size4[_ngcontent-%COMP%]{font-size:16px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size5[_ngcontent-%COMP%]{font-size:18px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size6[_ngcontent-%COMP%]{font-size:20px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size7[_ngcontent-%COMP%]{font-size:22px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-custom-style[_ngcontent-%COMP%] optgroup[_ngcontent-%COMP%]{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-custom-style[_ngcontent-%COMP%] option[_ngcontent-%COMP%]{border:1px solid;background-color:#fff}}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-custom-style[_ngcontent-%COMP%]:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-custom-style[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .color-label[_ngcontent-%COMP%]{position:relative;cursor:pointer}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .background[_ngcontent-%COMP%]{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .foreground[_ngcontent-%COMP%] [_ngcontent-%COMP%]:after{position:absolute;content:\\\"\\\";left:-1px;top:auto;bottom:-3px;right:auto;width:15px;height:2px;z-index:0;background:#1b1b1b}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%]:not([style*=\\\"display:none\\\"]):not([style*=\\\"display: none\\\"]), .select-button[_ngcontent-%COMP%]{display:inline-block}.select-button.disabled[_ngcontent-%COMP%]{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}\"] });\n/** @nocollapse */\nAngularEditorToolbarComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: AngularEditorService },\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nAngularEditorToolbarComponent.propDecorators = {\n id: [{ type: Input }],\n uploadUrl: [{ type: Input }],\n showToolbar: [{ type: Input }],\n fonts: [{ type: Input }],\n customClasses: [{ type: Input }],\n defaultFontName: [{ type: Input }],\n defaultFontSize: [{ type: Input }],\n hiddenButtons: [{ type: Input }],\n execute: [{ type: Output }],\n myInputFile: [{ type: ViewChild, args: ['fileInput', { static: true },] }]\n};\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AngularEditorToolbarComponent, [{\n type: Component,\n args: [{\n selector: 'angular-editor-toolbar',\n template: \"
\\n
\\n \\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n \\n
\\n
\\n\\n \\n
\\n
\\n\\n \\n \\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\",\n styles: [\"@charset \\\"UTF-8\\\";/*!\\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\\n */@font-face{font-family:FontAwesome;src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format(\\\"embedded-opentype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0) format(\\\"woff2\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0) format(\\\"woff\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0) format(\\\"truetype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format(\\\"svg\\\");font-weight:400;font-style:normal}.fa{display:inline-block;font:14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:2s linear infinite fa-spin;animation:2s linear infinite fa-spin}.fa-pulse{-webkit-animation:1s steps(8) infinite fa-spin;animation:1s steps(8) infinite fa-spin}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\\\"\\uF000\\\"}.fa-music:before{content:\\\"\\uF001\\\"}.fa-search:before{content:\\\"\\uF002\\\"}.fa-envelope-o:before{content:\\\"\\uF003\\\"}.fa-heart:before{content:\\\"\\uF004\\\"}.fa-star:before{content:\\\"\\uF005\\\"}.fa-star-o:before{content:\\\"\\uF006\\\"}.fa-user:before{content:\\\"\\uF007\\\"}.fa-film:before{content:\\\"\\uF008\\\"}.fa-th-large:before{content:\\\"\\uF009\\\"}.fa-th:before{content:\\\"\\uF00A\\\"}.fa-th-list:before{content:\\\"\\uF00B\\\"}.fa-check:before{content:\\\"\\uF00C\\\"}.fa-close:before,.fa-remove:before,.fa-times:before{content:\\\"\\uF00D\\\"}.fa-search-plus:before{content:\\\"\\uF00E\\\"}.fa-search-minus:before{content:\\\"\\uF010\\\"}.fa-power-off:before{content:\\\"\\uF011\\\"}.fa-signal:before{content:\\\"\\uF012\\\"}.fa-cog:before,.fa-gear:before{content:\\\"\\uF013\\\"}.fa-trash-o:before{content:\\\"\\uF014\\\"}.fa-home:before{content:\\\"\\uF015\\\"}.fa-file-o:before{content:\\\"\\uF016\\\"}.fa-clock-o:before{content:\\\"\\uF017\\\"}.fa-road:before{content:\\\"\\uF018\\\"}.fa-download:before{content:\\\"\\uF019\\\"}.fa-arrow-circle-o-down:before{content:\\\"\\uF01A\\\"}.fa-arrow-circle-o-up:before{content:\\\"\\uF01B\\\"}.fa-inbox:before{content:\\\"\\uF01C\\\"}.fa-play-circle-o:before{content:\\\"\\uF01D\\\"}.fa-repeat:before,.fa-rotate-right:before{content:\\\"\\uF01E\\\"}.fa-refresh:before{content:\\\"\\uF021\\\"}.fa-list-alt:before{content:\\\"\\uF022\\\"}.fa-lock:before{content:\\\"\\uF023\\\"}.fa-flag:before{content:\\\"\\uF024\\\"}.fa-headphones:before{content:\\\"\\uF025\\\"}.fa-volume-off:before{content:\\\"\\uF026\\\"}.fa-volume-down:before{content:\\\"\\uF027\\\"}.fa-volume-up:before{content:\\\"\\uF028\\\"}.fa-qrcode:before{content:\\\"\\uF029\\\"}.fa-barcode:before{content:\\\"\\uF02A\\\"}.fa-tag:before{content:\\\"\\uF02B\\\"}.fa-tags:before{content:\\\"\\uF02C\\\"}.fa-book:before{content:\\\"\\uF02D\\\"}.fa-bookmark:before{content:\\\"\\uF02E\\\"}.fa-print:before{content:\\\"\\uF02F\\\"}.fa-camera:before{content:\\\"\\uF030\\\"}.fa-font:before{content:\\\"\\uF031\\\"}.fa-bold:before{content:\\\"\\uF032\\\"}.fa-italic:before{content:\\\"\\uF033\\\"}.fa-text-height:before{content:\\\"\\uF034\\\"}.fa-text-width:before{content:\\\"\\uF035\\\"}.fa-align-left:before{content:\\\"\\uF036\\\"}.fa-align-center:before{content:\\\"\\uF037\\\"}.fa-align-right:before{content:\\\"\\uF038\\\"}.fa-align-justify:before{content:\\\"\\uF039\\\"}.fa-list:before{content:\\\"\\uF03A\\\"}.fa-dedent:before,.fa-outdent:before{content:\\\"\\uF03B\\\"}.fa-indent:before{content:\\\"\\uF03C\\\"}.fa-video-camera:before{content:\\\"\\uF03D\\\"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:\\\"\\uF03E\\\"}.fa-pencil:before{content:\\\"\\uF040\\\"}.fa-map-marker:before{content:\\\"\\uF041\\\"}.fa-adjust:before{content:\\\"\\uF042\\\"}.fa-tint:before{content:\\\"\\uF043\\\"}.fa-edit:before,.fa-pencil-square-o:before{content:\\\"\\uF044\\\"}.fa-share-square-o:before{content:\\\"\\uF045\\\"}.fa-check-square-o:before{content:\\\"\\uF046\\\"}.fa-arrows:before{content:\\\"\\uF047\\\"}.fa-step-backward:before{content:\\\"\\uF048\\\"}.fa-fast-backward:before{content:\\\"\\uF049\\\"}.fa-backward:before{content:\\\"\\uF04A\\\"}.fa-play:before{content:\\\"\\uF04B\\\"}.fa-pause:before{content:\\\"\\uF04C\\\"}.fa-stop:before{content:\\\"\\uF04D\\\"}.fa-forward:before{content:\\\"\\uF04E\\\"}.fa-fast-forward:before{content:\\\"\\uF050\\\"}.fa-step-forward:before{content:\\\"\\uF051\\\"}.fa-eject:before{content:\\\"\\uF052\\\"}.fa-chevron-left:before{content:\\\"\\uF053\\\"}.fa-chevron-right:before{content:\\\"\\uF054\\\"}.fa-plus-circle:before{content:\\\"\\uF055\\\"}.fa-minus-circle:before{content:\\\"\\uF056\\\"}.fa-times-circle:before{content:\\\"\\uF057\\\"}.fa-check-circle:before{content:\\\"\\uF058\\\"}.fa-question-circle:before{content:\\\"\\uF059\\\"}.fa-info-circle:before{content:\\\"\\uF05A\\\"}.fa-crosshairs:before{content:\\\"\\uF05B\\\"}.fa-times-circle-o:before{content:\\\"\\uF05C\\\"}.fa-check-circle-o:before{content:\\\"\\uF05D\\\"}.fa-ban:before{content:\\\"\\uF05E\\\"}.fa-arrow-left:before{content:\\\"\\uF060\\\"}.fa-arrow-right:before{content:\\\"\\uF061\\\"}.fa-arrow-up:before{content:\\\"\\uF062\\\"}.fa-arrow-down:before{content:\\\"\\uF063\\\"}.fa-mail-forward:before,.fa-share:before{content:\\\"\\uF064\\\"}.fa-expand:before{content:\\\"\\uF065\\\"}.fa-compress:before{content:\\\"\\uF066\\\"}.fa-plus:before{content:\\\"\\uF067\\\"}.fa-minus:before{content:\\\"\\uF068\\\"}.fa-asterisk:before{content:\\\"\\uF069\\\"}.fa-exclamation-circle:before{content:\\\"\\uF06A\\\"}.fa-gift:before{content:\\\"\\uF06B\\\"}.fa-leaf:before{content:\\\"\\uF06C\\\"}.fa-fire:before{content:\\\"\\uF06D\\\"}.fa-eye:before{content:\\\"\\uF06E\\\"}.fa-eye-slash:before{content:\\\"\\uF070\\\"}.fa-exclamation-triangle:before,.fa-warning:before{content:\\\"\\uF071\\\"}.fa-plane:before{content:\\\"\\uF072\\\"}.fa-calendar:before{content:\\\"\\uF073\\\"}.fa-random:before{content:\\\"\\uF074\\\"}.fa-comment:before{content:\\\"\\uF075\\\"}.fa-magnet:before{content:\\\"\\uF076\\\"}.fa-chevron-up:before{content:\\\"\\uF077\\\"}.fa-chevron-down:before{content:\\\"\\uF078\\\"}.fa-retweet:before{content:\\\"\\uF079\\\"}.fa-shopping-cart:before{content:\\\"\\uF07A\\\"}.fa-folder:before{content:\\\"\\uF07B\\\"}.fa-folder-open:before{content:\\\"\\uF07C\\\"}.fa-arrows-v:before{content:\\\"\\uF07D\\\"}.fa-arrows-h:before{content:\\\"\\uF07E\\\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\\\"\\uF080\\\"}.fa-twitter-square:before{content:\\\"\\uF081\\\"}.fa-facebook-square:before{content:\\\"\\uF082\\\"}.fa-camera-retro:before{content:\\\"\\uF083\\\"}.fa-key:before{content:\\\"\\uF084\\\"}.fa-cogs:before,.fa-gears:before{content:\\\"\\uF085\\\"}.fa-comments:before{content:\\\"\\uF086\\\"}.fa-thumbs-o-up:before{content:\\\"\\uF087\\\"}.fa-thumbs-o-down:before{content:\\\"\\uF088\\\"}.fa-star-half:before{content:\\\"\\uF089\\\"}.fa-heart-o:before{content:\\\"\\uF08A\\\"}.fa-sign-out:before{content:\\\"\\uF08B\\\"}.fa-linkedin-square:before{content:\\\"\\uF08C\\\"}.fa-thumb-tack:before{content:\\\"\\uF08D\\\"}.fa-external-link:before{content:\\\"\\uF08E\\\"}.fa-sign-in:before{content:\\\"\\uF090\\\"}.fa-trophy:before{content:\\\"\\uF091\\\"}.fa-github-square:before{content:\\\"\\uF092\\\"}.fa-upload:before{content:\\\"\\uF093\\\"}.fa-lemon-o:before{content:\\\"\\uF094\\\"}.fa-phone:before{content:\\\"\\uF095\\\"}.fa-square-o:before{content:\\\"\\uF096\\\"}.fa-bookmark-o:before{content:\\\"\\uF097\\\"}.fa-phone-square:before{content:\\\"\\uF098\\\"}.fa-twitter:before{content:\\\"\\uF099\\\"}.fa-facebook-f:before,.fa-facebook:before{content:\\\"\\uF09A\\\"}.fa-github:before{content:\\\"\\uF09B\\\"}.fa-unlock:before{content:\\\"\\uF09C\\\"}.fa-credit-card:before{content:\\\"\\uF09D\\\"}.fa-feed:before,.fa-rss:before{content:\\\"\\uF09E\\\"}.fa-hdd-o:before{content:\\\"\\uF0A0\\\"}.fa-bullhorn:before{content:\\\"\\uF0A1\\\"}.fa-bell:before{content:\\\"\\uF0F3\\\"}.fa-certificate:before{content:\\\"\\uF0A3\\\"}.fa-hand-o-right:before{content:\\\"\\uF0A4\\\"}.fa-hand-o-left:before{content:\\\"\\uF0A5\\\"}.fa-hand-o-up:before{content:\\\"\\uF0A6\\\"}.fa-hand-o-down:before{content:\\\"\\uF0A7\\\"}.fa-arrow-circle-left:before{content:\\\"\\uF0A8\\\"}.fa-arrow-circle-right:before{content:\\\"\\uF0A9\\\"}.fa-arrow-circle-up:before{content:\\\"\\uF0AA\\\"}.fa-arrow-circle-down:before{content:\\\"\\uF0AB\\\"}.fa-globe:before{content:\\\"\\uF0AC\\\"}.fa-wrench:before{content:\\\"\\uF0AD\\\"}.fa-tasks:before{content:\\\"\\uF0AE\\\"}.fa-filter:before{content:\\\"\\uF0B0\\\"}.fa-briefcase:before{content:\\\"\\uF0B1\\\"}.fa-arrows-alt:before{content:\\\"\\uF0B2\\\"}.fa-group:before,.fa-users:before{content:\\\"\\uF0C0\\\"}.fa-chain:before,.fa-link:before{content:\\\"\\uF0C1\\\"}.fa-cloud:before{content:\\\"\\uF0C2\\\"}.fa-flask:before{content:\\\"\\uF0C3\\\"}.fa-cut:before,.fa-scissors:before{content:\\\"\\uF0C4\\\"}.fa-copy:before,.fa-files-o:before{content:\\\"\\uF0C5\\\"}.fa-paperclip:before{content:\\\"\\uF0C6\\\"}.fa-floppy-o:before,.fa-save:before{content:\\\"\\uF0C7\\\"}.fa-square:before{content:\\\"\\uF0C8\\\"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:\\\"\\uF0C9\\\"}.fa-list-ul:before{content:\\\"\\uF0CA\\\"}.fa-list-ol:before{content:\\\"\\uF0CB\\\"}.fa-strikethrough:before{content:\\\"\\uF0CC\\\"}.fa-underline:before{content:\\\"\\uF0CD\\\"}.fa-table:before{content:\\\"\\uF0CE\\\"}.fa-magic:before{content:\\\"\\uF0D0\\\"}.fa-truck:before{content:\\\"\\uF0D1\\\"}.fa-pinterest:before{content:\\\"\\uF0D2\\\"}.fa-pinterest-square:before{content:\\\"\\uF0D3\\\"}.fa-google-plus-square:before{content:\\\"\\uF0D4\\\"}.fa-google-plus:before{content:\\\"\\uF0D5\\\"}.fa-money:before{content:\\\"\\uF0D6\\\"}.fa-caret-down:before{content:\\\"\\uF0D7\\\"}.fa-caret-up:before{content:\\\"\\uF0D8\\\"}.fa-caret-left:before{content:\\\"\\uF0D9\\\"}.fa-caret-right:before{content:\\\"\\uF0DA\\\"}.fa-columns:before{content:\\\"\\uF0DB\\\"}.fa-sort:before,.fa-unsorted:before{content:\\\"\\uF0DC\\\"}.fa-sort-desc:before,.fa-sort-down:before{content:\\\"\\uF0DD\\\"}.fa-sort-asc:before,.fa-sort-up:before{content:\\\"\\uF0DE\\\"}.fa-envelope:before{content:\\\"\\uF0E0\\\"}.fa-linkedin:before{content:\\\"\\uF0E1\\\"}.fa-rotate-left:before,.fa-undo:before{content:\\\"\\uF0E2\\\"}.fa-gavel:before,.fa-legal:before{content:\\\"\\uF0E3\\\"}.fa-dashboard:before,.fa-tachometer:before{content:\\\"\\uF0E4\\\"}.fa-comment-o:before{content:\\\"\\uF0E5\\\"}.fa-comments-o:before{content:\\\"\\uF0E6\\\"}.fa-bolt:before,.fa-flash:before{content:\\\"\\uF0E7\\\"}.fa-sitemap:before{content:\\\"\\uF0E8\\\"}.fa-umbrella:before{content:\\\"\\uF0E9\\\"}.fa-clipboard:before,.fa-paste:before{content:\\\"\\uF0EA\\\"}.fa-lightbulb-o:before{content:\\\"\\uF0EB\\\"}.fa-exchange:before{content:\\\"\\uF0EC\\\"}.fa-cloud-download:before{content:\\\"\\uF0ED\\\"}.fa-cloud-upload:before{content:\\\"\\uF0EE\\\"}.fa-user-md:before{content:\\\"\\uF0F0\\\"}.fa-stethoscope:before{content:\\\"\\uF0F1\\\"}.fa-suitcase:before{content:\\\"\\uF0F2\\\"}.fa-bell-o:before{content:\\\"\\uF0A2\\\"}.fa-coffee:before{content:\\\"\\uF0F4\\\"}.fa-cutlery:before{content:\\\"\\uF0F5\\\"}.fa-file-text-o:before{content:\\\"\\uF0F6\\\"}.fa-building-o:before{content:\\\"\\uF0F7\\\"}.fa-hospital-o:before{content:\\\"\\uF0F8\\\"}.fa-ambulance:before{content:\\\"\\uF0F9\\\"}.fa-medkit:before{content:\\\"\\uF0FA\\\"}.fa-fighter-jet:before{content:\\\"\\uF0FB\\\"}.fa-beer:before{content:\\\"\\uF0FC\\\"}.fa-h-square:before{content:\\\"\\uF0FD\\\"}.fa-plus-square:before{content:\\\"\\uF0FE\\\"}.fa-angle-double-left:before{content:\\\"\\uF100\\\"}.fa-angle-double-right:before{content:\\\"\\uF101\\\"}.fa-angle-double-up:before{content:\\\"\\uF102\\\"}.fa-angle-double-down:before{content:\\\"\\uF103\\\"}.fa-angle-left:before{content:\\\"\\uF104\\\"}.fa-angle-right:before{content:\\\"\\uF105\\\"}.fa-angle-up:before{content:\\\"\\uF106\\\"}.fa-angle-down:before{content:\\\"\\uF107\\\"}.fa-desktop:before{content:\\\"\\uF108\\\"}.fa-laptop:before{content:\\\"\\uF109\\\"}.fa-tablet:before{content:\\\"\\uF10A\\\"}.fa-mobile-phone:before,.fa-mobile:before{content:\\\"\\uF10B\\\"}.fa-circle-o:before{content:\\\"\\uF10C\\\"}.fa-quote-left:before{content:\\\"\\uF10D\\\"}.fa-quote-right:before{content:\\\"\\uF10E\\\"}.fa-spinner:before{content:\\\"\\uF110\\\"}.fa-circle:before{content:\\\"\\uF111\\\"}.fa-mail-reply:before,.fa-reply:before{content:\\\"\\uF112\\\"}.fa-github-alt:before{content:\\\"\\uF113\\\"}.fa-folder-o:before{content:\\\"\\uF114\\\"}.fa-folder-open-o:before{content:\\\"\\uF115\\\"}.fa-smile-o:before{content:\\\"\\uF118\\\"}.fa-frown-o:before{content:\\\"\\uF119\\\"}.fa-meh-o:before{content:\\\"\\uF11A\\\"}.fa-gamepad:before{content:\\\"\\uF11B\\\"}.fa-keyboard-o:before{content:\\\"\\uF11C\\\"}.fa-flag-o:before{content:\\\"\\uF11D\\\"}.fa-flag-checkered:before{content:\\\"\\uF11E\\\"}.fa-terminal:before{content:\\\"\\uF120\\\"}.fa-code:before{content:\\\"\\uF121\\\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\\\"\\uF122\\\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\\\"\\uF123\\\"}.fa-location-arrow:before{content:\\\"\\uF124\\\"}.fa-crop:before{content:\\\"\\uF125\\\"}.fa-code-fork:before{content:\\\"\\uF126\\\"}.fa-chain-broken:before,.fa-unlink:before{content:\\\"\\uF127\\\"}.fa-question:before{content:\\\"\\uF128\\\"}.fa-info:before{content:\\\"\\uF129\\\"}.fa-exclamation:before{content:\\\"\\uF12A\\\"}.fa-superscript:before{content:\\\"\\uF12B\\\"}.fa-subscript:before{content:\\\"\\uF12C\\\"}.fa-eraser:before{content:\\\"\\uF12D\\\"}.fa-puzzle-piece:before{content:\\\"\\uF12E\\\"}.fa-microphone:before{content:\\\"\\uF130\\\"}.fa-microphone-slash:before{content:\\\"\\uF131\\\"}.fa-shield:before{content:\\\"\\uF132\\\"}.fa-calendar-o:before{content:\\\"\\uF133\\\"}.fa-fire-extinguisher:before{content:\\\"\\uF134\\\"}.fa-rocket:before{content:\\\"\\uF135\\\"}.fa-maxcdn:before{content:\\\"\\uF136\\\"}.fa-chevron-circle-left:before{content:\\\"\\uF137\\\"}.fa-chevron-circle-right:before{content:\\\"\\uF138\\\"}.fa-chevron-circle-up:before{content:\\\"\\uF139\\\"}.fa-chevron-circle-down:before{content:\\\"\\uF13A\\\"}.fa-html5:before{content:\\\"\\uF13B\\\"}.fa-css3:before{content:\\\"\\uF13C\\\"}.fa-anchor:before{content:\\\"\\uF13D\\\"}.fa-unlock-alt:before{content:\\\"\\uF13E\\\"}.fa-bullseye:before{content:\\\"\\uF140\\\"}.fa-ellipsis-h:before{content:\\\"\\uF141\\\"}.fa-ellipsis-v:before{content:\\\"\\uF142\\\"}.fa-rss-square:before{content:\\\"\\uF143\\\"}.fa-play-circle:before{content:\\\"\\uF144\\\"}.fa-ticket:before{content:\\\"\\uF145\\\"}.fa-minus-square:before{content:\\\"\\uF146\\\"}.fa-minus-square-o:before{content:\\\"\\uF147\\\"}.fa-level-up:before{content:\\\"\\uF148\\\"}.fa-level-down:before{content:\\\"\\uF149\\\"}.fa-check-square:before{content:\\\"\\uF14A\\\"}.fa-pencil-square:before{content:\\\"\\uF14B\\\"}.fa-external-link-square:before{content:\\\"\\uF14C\\\"}.fa-share-square:before{content:\\\"\\uF14D\\\"}.fa-compass:before{content:\\\"\\uF14E\\\"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:\\\"\\uF150\\\"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:\\\"\\uF151\\\"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:\\\"\\uF152\\\"}.fa-eur:before,.fa-euro:before{content:\\\"\\uF153\\\"}.fa-gbp:before{content:\\\"\\uF154\\\"}.fa-dollar:before,.fa-usd:before{content:\\\"\\uF155\\\"}.fa-inr:before,.fa-rupee:before{content:\\\"\\uF156\\\"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:\\\"\\uF157\\\"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:\\\"\\uF158\\\"}.fa-krw:before,.fa-won:before{content:\\\"\\uF159\\\"}.fa-bitcoin:before,.fa-btc:before{content:\\\"\\uF15A\\\"}.fa-file:before{content:\\\"\\uF15B\\\"}.fa-file-text:before{content:\\\"\\uF15C\\\"}.fa-sort-alpha-asc:before{content:\\\"\\uF15D\\\"}.fa-sort-alpha-desc:before{content:\\\"\\uF15E\\\"}.fa-sort-amount-asc:before{content:\\\"\\uF160\\\"}.fa-sort-amount-desc:before{content:\\\"\\uF161\\\"}.fa-sort-numeric-asc:before{content:\\\"\\uF162\\\"}.fa-sort-numeric-desc:before{content:\\\"\\uF163\\\"}.fa-thumbs-up:before{content:\\\"\\uF164\\\"}.fa-thumbs-down:before{content:\\\"\\uF165\\\"}.fa-youtube-square:before{content:\\\"\\uF166\\\"}.fa-youtube:before{content:\\\"\\uF167\\\"}.fa-xing:before{content:\\\"\\uF168\\\"}.fa-xing-square:before{content:\\\"\\uF169\\\"}.fa-youtube-play:before{content:\\\"\\uF16A\\\"}.fa-dropbox:before{content:\\\"\\uF16B\\\"}.fa-stack-overflow:before{content:\\\"\\uF16C\\\"}.fa-instagram:before{content:\\\"\\uF16D\\\"}.fa-flickr:before{content:\\\"\\uF16E\\\"}.fa-adn:before{content:\\\"\\uF170\\\"}.fa-bitbucket:before{content:\\\"\\uF171\\\"}.fa-bitbucket-square:before{content:\\\"\\uF172\\\"}.fa-tumblr:before{content:\\\"\\uF173\\\"}.fa-tumblr-square:before{content:\\\"\\uF174\\\"}.fa-long-arrow-down:before{content:\\\"\\uF175\\\"}.fa-long-arrow-up:before{content:\\\"\\uF176\\\"}.fa-long-arrow-left:before{content:\\\"\\uF177\\\"}.fa-long-arrow-right:before{content:\\\"\\uF178\\\"}.fa-apple:before{content:\\\"\\uF179\\\"}.fa-windows:before{content:\\\"\\uF17A\\\"}.fa-android:before{content:\\\"\\uF17B\\\"}.fa-linux:before{content:\\\"\\uF17C\\\"}.fa-dribbble:before{content:\\\"\\uF17D\\\"}.fa-skype:before{content:\\\"\\uF17E\\\"}.fa-foursquare:before{content:\\\"\\uF180\\\"}.fa-trello:before{content:\\\"\\uF181\\\"}.fa-female:before{content:\\\"\\uF182\\\"}.fa-male:before{content:\\\"\\uF183\\\"}.fa-gittip:before,.fa-gratipay:before{content:\\\"\\uF184\\\"}.fa-sun-o:before{content:\\\"\\uF185\\\"}.fa-moon-o:before{content:\\\"\\uF186\\\"}.fa-archive:before{content:\\\"\\uF187\\\"}.fa-bug:before{content:\\\"\\uF188\\\"}.fa-vk:before{content:\\\"\\uF189\\\"}.fa-weibo:before{content:\\\"\\uF18A\\\"}.fa-renren:before{content:\\\"\\uF18B\\\"}.fa-pagelines:before{content:\\\"\\uF18C\\\"}.fa-stack-exchange:before{content:\\\"\\uF18D\\\"}.fa-arrow-circle-o-right:before{content:\\\"\\uF18E\\\"}.fa-arrow-circle-o-left:before{content:\\\"\\uF190\\\"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:\\\"\\uF191\\\"}.fa-dot-circle-o:before{content:\\\"\\uF192\\\"}.fa-wheelchair:before{content:\\\"\\uF193\\\"}.fa-vimeo-square:before{content:\\\"\\uF194\\\"}.fa-try:before,.fa-turkish-lira:before{content:\\\"\\uF195\\\"}.fa-plus-square-o:before{content:\\\"\\uF196\\\"}.fa-space-shuttle:before{content:\\\"\\uF197\\\"}.fa-slack:before{content:\\\"\\uF198\\\"}.fa-envelope-square:before{content:\\\"\\uF199\\\"}.fa-wordpress:before{content:\\\"\\uF19A\\\"}.fa-openid:before{content:\\\"\\uF19B\\\"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:\\\"\\uF19C\\\"}.fa-graduation-cap:before,.fa-mortar-board:before{content:\\\"\\uF19D\\\"}.fa-yahoo:before{content:\\\"\\uF19E\\\"}.fa-google:before{content:\\\"\\uF1A0\\\"}.fa-reddit:before{content:\\\"\\uF1A1\\\"}.fa-reddit-square:before{content:\\\"\\uF1A2\\\"}.fa-stumbleupon-circle:before{content:\\\"\\uF1A3\\\"}.fa-stumbleupon:before{content:\\\"\\uF1A4\\\"}.fa-delicious:before{content:\\\"\\uF1A5\\\"}.fa-digg:before{content:\\\"\\uF1A6\\\"}.fa-pied-piper-pp:before{content:\\\"\\uF1A7\\\"}.fa-pied-piper-alt:before{content:\\\"\\uF1A8\\\"}.fa-drupal:before{content:\\\"\\uF1A9\\\"}.fa-joomla:before{content:\\\"\\uF1AA\\\"}.fa-language:before{content:\\\"\\uF1AB\\\"}.fa-fax:before{content:\\\"\\uF1AC\\\"}.fa-building:before{content:\\\"\\uF1AD\\\"}.fa-child:before{content:\\\"\\uF1AE\\\"}.fa-paw:before{content:\\\"\\uF1B0\\\"}.fa-spoon:before{content:\\\"\\uF1B1\\\"}.fa-cube:before{content:\\\"\\uF1B2\\\"}.fa-cubes:before{content:\\\"\\uF1B3\\\"}.fa-behance:before{content:\\\"\\uF1B4\\\"}.fa-behance-square:before{content:\\\"\\uF1B5\\\"}.fa-steam:before{content:\\\"\\uF1B6\\\"}.fa-steam-square:before{content:\\\"\\uF1B7\\\"}.fa-recycle:before{content:\\\"\\uF1B8\\\"}.fa-automobile:before,.fa-car:before{content:\\\"\\uF1B9\\\"}.fa-cab:before,.fa-taxi:before{content:\\\"\\uF1BA\\\"}.fa-tree:before{content:\\\"\\uF1BB\\\"}.fa-spotify:before{content:\\\"\\uF1BC\\\"}.fa-deviantart:before{content:\\\"\\uF1BD\\\"}.fa-soundcloud:before{content:\\\"\\uF1BE\\\"}.fa-database:before{content:\\\"\\uF1C0\\\"}.fa-file-pdf-o:before{content:\\\"\\uF1C1\\\"}.fa-file-word-o:before{content:\\\"\\uF1C2\\\"}.fa-file-excel-o:before{content:\\\"\\uF1C3\\\"}.fa-file-powerpoint-o:before{content:\\\"\\uF1C4\\\"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:\\\"\\uF1C5\\\"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:\\\"\\uF1C6\\\"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:\\\"\\uF1C7\\\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\\\"\\uF1C8\\\"}.fa-file-code-o:before{content:\\\"\\uF1C9\\\"}.fa-vine:before{content:\\\"\\uF1CA\\\"}.fa-codepen:before{content:\\\"\\uF1CB\\\"}.fa-jsfiddle:before{content:\\\"\\uF1CC\\\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:\\\"\\uF1CD\\\"}.fa-circle-o-notch:before{content:\\\"\\uF1CE\\\"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:\\\"\\uF1D0\\\"}.fa-empire:before,.fa-ge:before{content:\\\"\\uF1D1\\\"}.fa-git-square:before{content:\\\"\\uF1D2\\\"}.fa-git:before{content:\\\"\\uF1D3\\\"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:\\\"\\uF1D4\\\"}.fa-tencent-weibo:before{content:\\\"\\uF1D5\\\"}.fa-qq:before{content:\\\"\\uF1D6\\\"}.fa-wechat:before,.fa-weixin:before{content:\\\"\\uF1D7\\\"}.fa-paper-plane:before,.fa-send:before{content:\\\"\\uF1D8\\\"}.fa-paper-plane-o:before,.fa-send-o:before{content:\\\"\\uF1D9\\\"}.fa-history:before{content:\\\"\\uF1DA\\\"}.fa-circle-thin:before{content:\\\"\\uF1DB\\\"}.fa-header:before{content:\\\"\\uF1DC\\\"}.fa-paragraph:before{content:\\\"\\uF1DD\\\"}.fa-sliders:before{content:\\\"\\uF1DE\\\"}.fa-share-alt:before{content:\\\"\\uF1E0\\\"}.fa-share-alt-square:before{content:\\\"\\uF1E1\\\"}.fa-bomb:before{content:\\\"\\uF1E2\\\"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:\\\"\\uF1E3\\\"}.fa-tty:before{content:\\\"\\uF1E4\\\"}.fa-binoculars:before{content:\\\"\\uF1E5\\\"}.fa-plug:before{content:\\\"\\uF1E6\\\"}.fa-slideshare:before{content:\\\"\\uF1E7\\\"}.fa-twitch:before{content:\\\"\\uF1E8\\\"}.fa-yelp:before{content:\\\"\\uF1E9\\\"}.fa-newspaper-o:before{content:\\\"\\uF1EA\\\"}.fa-wifi:before{content:\\\"\\uF1EB\\\"}.fa-calculator:before{content:\\\"\\uF1EC\\\"}.fa-paypal:before{content:\\\"\\uF1ED\\\"}.fa-google-wallet:before{content:\\\"\\uF1EE\\\"}.fa-cc-visa:before{content:\\\"\\uF1F0\\\"}.fa-cc-mastercard:before{content:\\\"\\uF1F1\\\"}.fa-cc-discover:before{content:\\\"\\uF1F2\\\"}.fa-cc-amex:before{content:\\\"\\uF1F3\\\"}.fa-cc-paypal:before{content:\\\"\\uF1F4\\\"}.fa-cc-stripe:before{content:\\\"\\uF1F5\\\"}.fa-bell-slash:before{content:\\\"\\uF1F6\\\"}.fa-bell-slash-o:before{content:\\\"\\uF1F7\\\"}.fa-trash:before{content:\\\"\\uF1F8\\\"}.fa-copyright:before{content:\\\"\\uF1F9\\\"}.fa-at:before{content:\\\"\\uF1FA\\\"}.fa-eyedropper:before{content:\\\"\\uF1FB\\\"}.fa-paint-brush:before{content:\\\"\\uF1FC\\\"}.fa-birthday-cake:before{content:\\\"\\uF1FD\\\"}.fa-area-chart:before{content:\\\"\\uF1FE\\\"}.fa-pie-chart:before{content:\\\"\\uF200\\\"}.fa-line-chart:before{content:\\\"\\uF201\\\"}.fa-lastfm:before{content:\\\"\\uF202\\\"}.fa-lastfm-square:before{content:\\\"\\uF203\\\"}.fa-toggle-off:before{content:\\\"\\uF204\\\"}.fa-toggle-on:before{content:\\\"\\uF205\\\"}.fa-bicycle:before{content:\\\"\\uF206\\\"}.fa-bus:before{content:\\\"\\uF207\\\"}.fa-ioxhost:before{content:\\\"\\uF208\\\"}.fa-angellist:before{content:\\\"\\uF209\\\"}.fa-cc:before{content:\\\"\\uF20A\\\"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:\\\"\\uF20B\\\"}.fa-meanpath:before{content:\\\"\\uF20C\\\"}.fa-buysellads:before{content:\\\"\\uF20D\\\"}.fa-connectdevelop:before{content:\\\"\\uF20E\\\"}.fa-dashcube:before{content:\\\"\\uF210\\\"}.fa-forumbee:before{content:\\\"\\uF211\\\"}.fa-leanpub:before{content:\\\"\\uF212\\\"}.fa-sellsy:before{content:\\\"\\uF213\\\"}.fa-shirtsinbulk:before{content:\\\"\\uF214\\\"}.fa-simplybuilt:before{content:\\\"\\uF215\\\"}.fa-skyatlas:before{content:\\\"\\uF216\\\"}.fa-cart-plus:before{content:\\\"\\uF217\\\"}.fa-cart-arrow-down:before{content:\\\"\\uF218\\\"}.fa-diamond:before{content:\\\"\\uF219\\\"}.fa-ship:before{content:\\\"\\uF21A\\\"}.fa-user-secret:before{content:\\\"\\uF21B\\\"}.fa-motorcycle:before{content:\\\"\\uF21C\\\"}.fa-street-view:before{content:\\\"\\uF21D\\\"}.fa-heartbeat:before{content:\\\"\\uF21E\\\"}.fa-venus:before{content:\\\"\\uF221\\\"}.fa-mars:before{content:\\\"\\uF222\\\"}.fa-mercury:before{content:\\\"\\uF223\\\"}.fa-intersex:before,.fa-transgender:before{content:\\\"\\uF224\\\"}.fa-transgender-alt:before{content:\\\"\\uF225\\\"}.fa-venus-double:before{content:\\\"\\uF226\\\"}.fa-mars-double:before{content:\\\"\\uF227\\\"}.fa-venus-mars:before{content:\\\"\\uF228\\\"}.fa-mars-stroke:before{content:\\\"\\uF229\\\"}.fa-mars-stroke-v:before{content:\\\"\\uF22A\\\"}.fa-mars-stroke-h:before{content:\\\"\\uF22B\\\"}.fa-neuter:before{content:\\\"\\uF22C\\\"}.fa-genderless:before{content:\\\"\\uF22D\\\"}.fa-facebook-official:before{content:\\\"\\uF230\\\"}.fa-pinterest-p:before{content:\\\"\\uF231\\\"}.fa-whatsapp:before{content:\\\"\\uF232\\\"}.fa-server:before{content:\\\"\\uF233\\\"}.fa-user-plus:before{content:\\\"\\uF234\\\"}.fa-user-times:before{content:\\\"\\uF235\\\"}.fa-bed:before,.fa-hotel:before{content:\\\"\\uF236\\\"}.fa-viacoin:before{content:\\\"\\uF237\\\"}.fa-train:before{content:\\\"\\uF238\\\"}.fa-subway:before{content:\\\"\\uF239\\\"}.fa-medium:before{content:\\\"\\uF23A\\\"}.fa-y-combinator:before,.fa-yc:before{content:\\\"\\uF23B\\\"}.fa-optin-monster:before{content:\\\"\\uF23C\\\"}.fa-opencart:before{content:\\\"\\uF23D\\\"}.fa-expeditedssl:before{content:\\\"\\uF23E\\\"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:\\\"\\uF240\\\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\\\"\\uF241\\\"}.fa-battery-2:before,.fa-battery-half:before{content:\\\"\\uF242\\\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\\\"\\uF243\\\"}.fa-battery-0:before,.fa-battery-empty:before{content:\\\"\\uF244\\\"}.fa-mouse-pointer:before{content:\\\"\\uF245\\\"}.fa-i-cursor:before{content:\\\"\\uF246\\\"}.fa-object-group:before{content:\\\"\\uF247\\\"}.fa-object-ungroup:before{content:\\\"\\uF248\\\"}.fa-sticky-note:before{content:\\\"\\uF249\\\"}.fa-sticky-note-o:before{content:\\\"\\uF24A\\\"}.fa-cc-jcb:before{content:\\\"\\uF24B\\\"}.fa-cc-diners-club:before{content:\\\"\\uF24C\\\"}.fa-clone:before{content:\\\"\\uF24D\\\"}.fa-balance-scale:before{content:\\\"\\uF24E\\\"}.fa-hourglass-o:before{content:\\\"\\uF250\\\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\\\"\\uF251\\\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\\\"\\uF252\\\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\\\"\\uF253\\\"}.fa-hourglass:before{content:\\\"\\uF254\\\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\\\"\\uF255\\\"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:\\\"\\uF256\\\"}.fa-hand-scissors-o:before{content:\\\"\\uF257\\\"}.fa-hand-lizard-o:before{content:\\\"\\uF258\\\"}.fa-hand-spock-o:before{content:\\\"\\uF259\\\"}.fa-hand-pointer-o:before{content:\\\"\\uF25A\\\"}.fa-hand-peace-o:before{content:\\\"\\uF25B\\\"}.fa-trademark:before{content:\\\"\\uF25C\\\"}.fa-registered:before{content:\\\"\\uF25D\\\"}.fa-creative-commons:before{content:\\\"\\uF25E\\\"}.fa-gg:before{content:\\\"\\uF260\\\"}.fa-gg-circle:before{content:\\\"\\uF261\\\"}.fa-tripadvisor:before{content:\\\"\\uF262\\\"}.fa-odnoklassniki:before{content:\\\"\\uF263\\\"}.fa-odnoklassniki-square:before{content:\\\"\\uF264\\\"}.fa-get-pocket:before{content:\\\"\\uF265\\\"}.fa-wikipedia-w:before{content:\\\"\\uF266\\\"}.fa-safari:before{content:\\\"\\uF267\\\"}.fa-chrome:before{content:\\\"\\uF268\\\"}.fa-firefox:before{content:\\\"\\uF269\\\"}.fa-opera:before{content:\\\"\\uF26A\\\"}.fa-internet-explorer:before{content:\\\"\\uF26B\\\"}.fa-television:before,.fa-tv:before{content:\\\"\\uF26C\\\"}.fa-contao:before{content:\\\"\\uF26D\\\"}.fa-500px:before{content:\\\"\\uF26E\\\"}.fa-amazon:before{content:\\\"\\uF270\\\"}.fa-calendar-plus-o:before{content:\\\"\\uF271\\\"}.fa-calendar-minus-o:before{content:\\\"\\uF272\\\"}.fa-calendar-times-o:before{content:\\\"\\uF273\\\"}.fa-calendar-check-o:before{content:\\\"\\uF274\\\"}.fa-industry:before{content:\\\"\\uF275\\\"}.fa-map-pin:before{content:\\\"\\uF276\\\"}.fa-map-signs:before{content:\\\"\\uF277\\\"}.fa-map-o:before{content:\\\"\\uF278\\\"}.fa-map:before{content:\\\"\\uF279\\\"}.fa-commenting:before{content:\\\"\\uF27A\\\"}.fa-commenting-o:before{content:\\\"\\uF27B\\\"}.fa-houzz:before{content:\\\"\\uF27C\\\"}.fa-vimeo:before{content:\\\"\\uF27D\\\"}.fa-black-tie:before{content:\\\"\\uF27E\\\"}.fa-fonticons:before{content:\\\"\\uF280\\\"}.fa-reddit-alien:before{content:\\\"\\uF281\\\"}.fa-edge:before{content:\\\"\\uF282\\\"}.fa-credit-card-alt:before{content:\\\"\\uF283\\\"}.fa-codiepie:before{content:\\\"\\uF284\\\"}.fa-modx:before{content:\\\"\\uF285\\\"}.fa-fort-awesome:before{content:\\\"\\uF286\\\"}.fa-usb:before{content:\\\"\\uF287\\\"}.fa-product-hunt:before{content:\\\"\\uF288\\\"}.fa-mixcloud:before{content:\\\"\\uF289\\\"}.fa-scribd:before{content:\\\"\\uF28A\\\"}.fa-pause-circle:before{content:\\\"\\uF28B\\\"}.fa-pause-circle-o:before{content:\\\"\\uF28C\\\"}.fa-stop-circle:before{content:\\\"\\uF28D\\\"}.fa-stop-circle-o:before{content:\\\"\\uF28E\\\"}.fa-shopping-bag:before{content:\\\"\\uF290\\\"}.fa-shopping-basket:before{content:\\\"\\uF291\\\"}.fa-hashtag:before{content:\\\"\\uF292\\\"}.fa-bluetooth:before{content:\\\"\\uF293\\\"}.fa-bluetooth-b:before{content:\\\"\\uF294\\\"}.fa-percent:before{content:\\\"\\uF295\\\"}.fa-gitlab:before{content:\\\"\\uF296\\\"}.fa-wpbeginner:before{content:\\\"\\uF297\\\"}.fa-wpforms:before{content:\\\"\\uF298\\\"}.fa-envira:before{content:\\\"\\uF299\\\"}.fa-universal-access:before{content:\\\"\\uF29A\\\"}.fa-wheelchair-alt:before{content:\\\"\\uF29B\\\"}.fa-question-circle-o:before{content:\\\"\\uF29C\\\"}.fa-blind:before{content:\\\"\\uF29D\\\"}.fa-audio-description:before{content:\\\"\\uF29E\\\"}.fa-volume-control-phone:before{content:\\\"\\uF2A0\\\"}.fa-braille:before{content:\\\"\\uF2A1\\\"}.fa-assistive-listening-systems:before{content:\\\"\\uF2A2\\\"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:\\\"\\uF2A3\\\"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:\\\"\\uF2A4\\\"}.fa-glide:before{content:\\\"\\uF2A5\\\"}.fa-glide-g:before{content:\\\"\\uF2A6\\\"}.fa-sign-language:before,.fa-signing:before{content:\\\"\\uF2A7\\\"}.fa-low-vision:before{content:\\\"\\uF2A8\\\"}.fa-viadeo:before{content:\\\"\\uF2A9\\\"}.fa-viadeo-square:before{content:\\\"\\uF2AA\\\"}.fa-snapchat:before{content:\\\"\\uF2AB\\\"}.fa-snapchat-ghost:before{content:\\\"\\uF2AC\\\"}.fa-snapchat-square:before{content:\\\"\\uF2AD\\\"}.fa-pied-piper:before{content:\\\"\\uF2AE\\\"}.fa-first-order:before{content:\\\"\\uF2B0\\\"}.fa-yoast:before{content:\\\"\\uF2B1\\\"}.fa-themeisle:before{content:\\\"\\uF2B2\\\"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:\\\"\\uF2B3\\\"}.fa-fa:before,.fa-font-awesome:before{content:\\\"\\uF2B4\\\"}.fa-handshake-o:before{content:\\\"\\uF2B5\\\"}.fa-envelope-open:before{content:\\\"\\uF2B6\\\"}.fa-envelope-open-o:before{content:\\\"\\uF2B7\\\"}.fa-linode:before{content:\\\"\\uF2B8\\\"}.fa-address-book:before{content:\\\"\\uF2B9\\\"}.fa-address-book-o:before{content:\\\"\\uF2BA\\\"}.fa-address-card:before,.fa-vcard:before{content:\\\"\\uF2BB\\\"}.fa-address-card-o:before,.fa-vcard-o:before{content:\\\"\\uF2BC\\\"}.fa-user-circle:before{content:\\\"\\uF2BD\\\"}.fa-user-circle-o:before{content:\\\"\\uF2BE\\\"}.fa-user-o:before{content:\\\"\\uF2C0\\\"}.fa-id-badge:before{content:\\\"\\uF2C1\\\"}.fa-drivers-license:before,.fa-id-card:before{content:\\\"\\uF2C2\\\"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:\\\"\\uF2C3\\\"}.fa-quora:before{content:\\\"\\uF2C4\\\"}.fa-free-code-camp:before{content:\\\"\\uF2C5\\\"}.fa-telegram:before{content:\\\"\\uF2C6\\\"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:\\\"\\uF2C7\\\"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:\\\"\\uF2C8\\\"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:\\\"\\uF2C9\\\"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:\\\"\\uF2CA\\\"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:\\\"\\uF2CB\\\"}.fa-shower:before{content:\\\"\\uF2CC\\\"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:\\\"\\uF2CD\\\"}.fa-podcast:before{content:\\\"\\uF2CE\\\"}.fa-window-maximize:before{content:\\\"\\uF2D0\\\"}.fa-window-minimize:before{content:\\\"\\uF2D1\\\"}.fa-window-restore:before{content:\\\"\\uF2D2\\\"}.fa-times-rectangle:before,.fa-window-close:before{content:\\\"\\uF2D3\\\"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:\\\"\\uF2D4\\\"}.fa-bandcamp:before{content:\\\"\\uF2D5\\\"}.fa-grav:before{content:\\\"\\uF2D6\\\"}.fa-etsy:before{content:\\\"\\uF2D7\\\"}.fa-imdb:before{content:\\\"\\uF2D8\\\"}.fa-ravelry:before{content:\\\"\\uF2D9\\\"}.fa-eercast:before{content:\\\"\\uF2DA\\\"}.fa-microchip:before{content:\\\"\\uF2DB\\\"}.fa-snowflake-o:before{content:\\\"\\uF2DC\\\"}.fa-superpowers:before{content:\\\"\\uF2DD\\\"}.fa-wpexplorer:before{content:\\\"\\uF2DE\\\"}.fa-meetup:before{content:\\\"\\uF2E0\\\"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}a{cursor:pointer}.angular-editor-textarea{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea:after{content:\\\"\\\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:rgba(255,255,255,.5)}.angular-editor-toolbar{font:100 .8rem/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;padding:.2rem;border:1px solid #ddd}.angular-editor-toolbar .angular-editor-toolbar-set{display:none;margin-right:5px;vertical-align:baseline}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;min-width:2rem;float:left}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.focus,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:focus{outline:0}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.background,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.foreground :after{background:#555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active{background:#fff5b9}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active:hover{background-color:#fffa98}.angular-editor-toolbar .angular-editor-toolbar-set select{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid rgba(255,255,255,0);border-radius:5px;outline:0;padding:.4rem;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading{display:inline-block;width:90px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar .angular-editor-toolbar-set .select-font{display:inline-block;width:90px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size{display:inline-block;width:50px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style{display:inline-block;width:90px}@supports not (-moz-appearance:none){.angular-editor-toolbar .angular-editor-toolbar-set .select-heading optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .default{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h1{font-size:24px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h2{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h3{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h4{font-size:15px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h5{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h6{font-size:13px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .div,.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .pre{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size1{font-size:10px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size2{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size3{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size4{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size5{font-size:18px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size6{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size7{font-size:22px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar .angular-editor-toolbar-set .color-label{position:relative;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .background{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar .angular-editor-toolbar-set .foreground :after{position:absolute;content:\\\"\\\";left:-1px;top:auto;bottom:-3px;right:auto;width:15px;height:2px;z-index:0;background:#1b1b1b}.angular-editor-toolbar .angular-editor-toolbar-set:not([style*=\\\"display:none\\\"]):not([style*=\\\"display: none\\\"]),.select-button{display:inline-block}.select-button.disabled{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}\"]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: AngularEditorService }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { fonts: [{\n type: Input\n }], execute: [{\n type: Output\n }], customClasses: [{\n type: Input\n }], defaultFontName: [{\n type: Input\n }], defaultFontSize: [{\n type: Input\n }], id: [{\n type: Input\n }], uploadUrl: [{\n type: Input\n }], showToolbar: [{\n type: Input\n }], hiddenButtons: [{\n type: Input\n }], myInputFile: [{\n type: ViewChild,\n args: ['fileInput', { static: true }]\n }] }); })();\nif (false) {\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.htmlMode;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.linkSelected;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.block;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.fontName;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.fontSize;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.foreColour;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.backColor;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.headings;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.fontSizes;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.customClassId;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype._customClasses;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.customClassList;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.tagMap;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.select;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.buttons;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.id;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.uploadUrl;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.showToolbar;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.fonts;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.hiddenButtons;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.execute;\n /** @type {?} */\n AngularEditorToolbarComponent.prototype.myInputFile;\n /**\n * @type {?}\n * @private\n */\n AngularEditorToolbarComponent.prototype.r;\n /**\n * @type {?}\n * @private\n */\n AngularEditorToolbarComponent.prototype.editorService;\n /**\n * @type {?}\n * @private\n */\n AngularEditorToolbarComponent.prototype.er;\n /**\n * @type {?}\n * @private\n */\n AngularEditorToolbarComponent.prototype.doc;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/utils.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/angular-editor.component.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass AngularEditorComponent {\n /**\n * @param {?} r\n * @param {?} editorService\n * @param {?} doc\n * @param {?} sanitizer\n * @param {?} cdRef\n * @param {?} defaultTabIndex\n * @param {?} autoFocus\n */\n constructor(r, editorService, doc, sanitizer, cdRef, defaultTabIndex, autoFocus) {\n this.r = r;\n this.editorService = editorService;\n this.doc = doc;\n this.sanitizer = sanitizer;\n this.cdRef = cdRef;\n this.autoFocus = autoFocus;\n this.modeVisual = true;\n this.showPlaceholder = false;\n this.disabled = false;\n this.focused = false;\n this.touched = false;\n this.changed = false;\n this.id = '';\n this.config = angularEditorConfig;\n this.placeholder = '';\n this.viewMode = new EventEmitter();\n /**\n * emits `blur` event when focused out from the textarea\n */\n // tslint:disable-next-line:no-output-native no-output-rename\n this.blurEvent = new EventEmitter();\n /**\n * emits `focus` event when focused in to the textarea\n */\n // tslint:disable-next-line:no-output-rename no-output-native\n this.focusEvent = new EventEmitter();\n this.tabindex = -1;\n /** @type {?} */\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = (parsedTabIndex || parsedTabIndex === 0) ? parsedTabIndex : null;\n }\n /**\n * @return {?}\n */\n onFocus() {\n this.focus();\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.config.toolbarPosition = this.config.toolbarPosition ? this.config.toolbarPosition : angularEditorConfig.toolbarPosition;\n }\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n if (isDefined(this.autoFocus)) {\n this.focus();\n }\n }\n /**\n * Executed command from editor header buttons\n * @param {?} command string from triggerCommand\n * @return {?}\n */\n executeCommand(command) {\n this.focus();\n if (command === 'focus') {\n return;\n }\n if (command === 'toggleEditorMode') {\n this.toggleEditorMode(this.modeVisual);\n }\n else if (command !== '') {\n if (command === 'clear') {\n this.editorService.removeSelectedElements(this.getCustomTags());\n this.onContentChange(this.textArea.nativeElement);\n }\n else if (command === 'default') {\n this.editorService.removeSelectedElements('h1,h2,h3,h4,h5,h6,p,pre');\n this.onContentChange(this.textArea.nativeElement);\n }\n else {\n this.editorService.executeCommand(command);\n }\n this.exec();\n }\n }\n /**\n * focus event\n * @param {?} event\n * @return {?}\n */\n onTextAreaFocus(event) {\n if (this.focused) {\n event.stopPropagation();\n return;\n }\n this.focused = true;\n this.focusEvent.emit(event);\n if (!this.touched || !this.changed) {\n this.editorService.executeInNextQueueIteration((/**\n * @return {?}\n */\n () => {\n this.configure();\n this.touched = true;\n }));\n }\n }\n /**\n * \\@description fires when cursor leaves textarea\n * @param {?} event\n * @return {?}\n */\n onTextAreaMouseOut(event) {\n this.editorService.saveSelection();\n }\n /**\n * blur event\n * @param {?} event\n * @return {?}\n */\n onTextAreaBlur(event) {\n /**\n * save selection if focussed out\n */\n this.editorService.executeInNextQueueIteration(this.editorService.saveSelection);\n if (typeof this.onTouched === 'function') {\n this.onTouched();\n }\n if (event.relatedTarget !== null) {\n /** @type {?} */\n const parent = ((/** @type {?} */ (event.relatedTarget))).parentElement;\n if (!parent.classList.contains('angular-editor-toolbar-set') && !parent.classList.contains('ae-picker')) {\n this.blurEvent.emit(event);\n this.focused = false;\n }\n }\n }\n /**\n * focus the text area when the editor is focused\n * @return {?}\n */\n focus() {\n if (this.modeVisual) {\n this.textArea.nativeElement.focus();\n }\n else {\n /** @type {?} */\n const sourceText = this.doc.getElementById('sourceText' + this.id);\n sourceText.focus();\n this.focused = true;\n }\n }\n /**\n * Executed from the contenteditable section while the input property changes\n * @param {?} element html element from contenteditable\n * @return {?}\n */\n onContentChange(element) {\n /** @type {?} */\n let html = '';\n if (this.modeVisual) {\n html = element.innerHTML;\n }\n else {\n html = element.innerText;\n }\n if ((!html || html === '
')) {\n html = '';\n }\n if (typeof this.onChange === 'function') {\n this.onChange(this.config.sanitize || this.config.sanitize === undefined ?\n this.sanitizer.sanitize(SecurityContext.HTML, html) : html);\n if ((!html) !== this.showPlaceholder) {\n this.togglePlaceholder(this.showPlaceholder);\n }\n }\n this.changed = true;\n }\n /**\n * Set the function to be called\n * when the control receives a change event.\n *\n * @param {?} fn a function\n * @return {?}\n */\n registerOnChange(fn) {\n this.onChange = (/**\n * @param {?} e\n * @return {?}\n */\n e => (e === '
' ? fn('') : fn(e)));\n }\n /**\n * Set the function to be called\n * when the control receives a touch event.\n *\n * @param {?} fn a function\n * @return {?}\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * Write a new value to the element.\n *\n * @param {?} value value to be executed when there is a change in contenteditable\n * @return {?}\n */\n writeValue(value) {\n if ((!value || value === '
' || value === '') !== this.showPlaceholder) {\n this.togglePlaceholder(this.showPlaceholder);\n }\n if (value === undefined || value === '' || value === '
') {\n value = null;\n }\n this.refreshView(value);\n }\n /**\n * refresh view/HTML of the editor\n *\n * @param {?} value html string from the editor\n * @return {?}\n */\n refreshView(value) {\n /** @type {?} */\n const normalizedValue = value === null ? '' : value;\n this.r.setProperty(this.textArea.nativeElement, 'innerHTML', normalizedValue);\n return;\n }\n /**\n * toggles placeholder based on input string\n *\n * @param {?} value A HTML string from the editor\n * @return {?}\n */\n togglePlaceholder(value) {\n if (!value) {\n this.r.addClass(this.editorWrapper.nativeElement, 'show-placeholder');\n this.showPlaceholder = true;\n }\n else {\n this.r.removeClass(this.editorWrapper.nativeElement, 'show-placeholder');\n this.showPlaceholder = false;\n }\n }\n /**\n * Implements disabled state for this element\n *\n * @param {?} isDisabled Disabled flag\n * @return {?}\n */\n setDisabledState(isDisabled) {\n /** @type {?} */\n const div = this.textArea.nativeElement;\n /** @type {?} */\n const action = isDisabled ? 'addClass' : 'removeClass';\n this.r[action](div, 'disabled');\n this.disabled = isDisabled;\n }\n /**\n * toggles editor mode based on bToSource bool\n *\n * @param {?} bToSource A boolean value from the editor\n * @return {?}\n */\n toggleEditorMode(bToSource) {\n /** @type {?} */\n let oContent;\n /** @type {?} */\n const editableElement = this.textArea.nativeElement;\n if (bToSource) {\n oContent = this.r.createText(editableElement.innerHTML);\n this.r.setProperty(editableElement, 'innerHTML', '');\n this.r.setProperty(editableElement, 'contentEditable', false);\n /** @type {?} */\n const oPre = this.r.createElement('pre');\n this.r.setStyle(oPre, 'margin', '0');\n this.r.setStyle(oPre, 'outline', 'none');\n /** @type {?} */\n const oCode = this.r.createElement('code');\n this.r.setProperty(oCode, 'id', 'sourceText' + this.id);\n this.r.setStyle(oCode, 'display', 'block');\n this.r.setStyle(oCode, 'white-space', 'pre-wrap');\n this.r.setStyle(oCode, 'word-break', 'keep-all');\n this.r.setStyle(oCode, 'outline', 'none');\n this.r.setStyle(oCode, 'margin', '0');\n this.r.setStyle(oCode, 'background-color', '#fff5b9');\n this.r.setProperty(oCode, 'contentEditable', true);\n this.r.appendChild(oCode, oContent);\n this.focusInstance = this.r.listen(oCode, 'focus', (/**\n * @param {?} event\n * @return {?}\n */\n (event) => this.onTextAreaFocus(event)));\n this.blurInstance = this.r.listen(oCode, 'blur', (/**\n * @param {?} event\n * @return {?}\n */\n (event) => this.onTextAreaBlur(event)));\n this.r.appendChild(oPre, oCode);\n this.r.appendChild(editableElement, oPre);\n // ToDo move to service\n this.doc.execCommand('defaultParagraphSeparator', false, 'div');\n this.modeVisual = false;\n this.viewMode.emit(false);\n oCode.focus();\n }\n else {\n if (this.doc.querySelectorAll) {\n this.r.setProperty(editableElement, 'innerHTML', editableElement.innerText);\n }\n else {\n oContent = this.doc.createRange();\n oContent.selectNodeContents(editableElement.firstChild);\n this.r.setProperty(editableElement, 'innerHTML', oContent.toString());\n }\n this.r.setProperty(editableElement, 'contentEditable', true);\n this.modeVisual = true;\n this.viewMode.emit(true);\n this.onContentChange(editableElement);\n editableElement.focus();\n }\n this.editorToolbar.setEditorMode(!this.modeVisual);\n }\n /**\n * toggles editor buttons when cursor moved or positioning\n *\n * Send a node array from the contentEditable of the editor\n * @return {?}\n */\n exec() {\n this.editorToolbar.triggerButtons();\n /** @type {?} */\n let userSelection;\n if (this.doc.getSelection) {\n userSelection = this.doc.getSelection();\n this.editorService.executeInNextQueueIteration(this.editorService.saveSelection);\n }\n /** @type {?} */\n let a = userSelection.focusNode;\n /** @type {?} */\n const els = [];\n while (a && a.id !== 'editor') {\n els.unshift(a);\n a = a.parentNode;\n }\n this.editorToolbar.triggerBlocks(els);\n }\n /**\n * @private\n * @return {?}\n */\n configure() {\n this.editorService.uploadUrl = this.config.uploadUrl;\n this.editorService.uploadWithCredentials = this.config.uploadWithCredentials;\n if (this.config.defaultParagraphSeparator) {\n this.editorService.setDefaultParagraphSeparator(this.config.defaultParagraphSeparator);\n }\n if (this.config.defaultFontName) {\n this.editorService.setFontName(this.config.defaultFontName);\n }\n if (this.config.defaultFontSize) {\n this.editorService.setFontSize(this.config.defaultFontSize);\n }\n }\n /**\n * @return {?}\n */\n getFonts() {\n /** @type {?} */\n const fonts = this.config.fonts ? this.config.fonts : angularEditorConfig.fonts;\n return fonts.map((/**\n * @param {?} x\n * @return {?}\n */\n x => {\n return { label: x.name, value: x.name };\n }));\n }\n /**\n * @return {?}\n */\n getCustomTags() {\n /** @type {?} */\n const tags = ['span'];\n this.config.customClasses.forEach((/**\n * @param {?} x\n * @return {?}\n */\n x => {\n if (x.tag !== undefined) {\n if (!tags.includes(x.tag)) {\n tags.push(x.tag);\n }\n }\n }));\n return tags.join(',');\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n if (this.blurInstance) {\n this.blurInstance();\n }\n if (this.focusInstance) {\n this.focusInstance();\n }\n }\n /**\n * @param {?} html\n * @return {?}\n */\n filterStyles(html) {\n html = html.replace('position: fixed;', '');\n return html;\n }\n}\nAngularEditorComponent.ɵfac = function AngularEditorComponent_Factory(t) { return new (t || AngularEditorComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(AngularEditorService), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc4.DomSanitizer), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵinjectAttribute('tabindex'), ɵngcc0.ɵɵinjectAttribute('autofocus')); };\nAngularEditorComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AngularEditorComponent, selectors: [[\"angular-editor\"]], viewQuery: function AngularEditorComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵstaticViewQuery(_c1, true);\n ɵngcc0.ɵɵstaticViewQuery(_c2, true);\n ɵngcc0.ɵɵviewQuery(_c3, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.textArea = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.editorWrapper = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.editorToolbar = _t.first);\n } }, hostVars: 1, hostBindings: function AngularEditorComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"focus\", function AngularEditorComponent_focus_HostBindingHandler() { return ctx.onFocus(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx.tabindex);\n } }, inputs: { id: \"id\", config: \"config\", placeholder: \"placeholder\", tabIndex: \"tabIndex\" }, outputs: { viewMode: \"viewMode\", blurEvent: \"blur\", focusEvent: \"focus\", html: \"html\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(( /**\n * @return {?}\n */() => AngularEditorComponent)),\n multi: true\n },\n AngularEditorService\n ])], decls: 10, vars: 19, consts: [[1, \"angular-editor\"], [\"angularEditor\", \"\"], [3, \"id\", \"uploadUrl\", \"showToolbar\", \"fonts\", \"customClasses\", \"defaultFontName\", \"defaultFontSize\", \"hiddenButtons\", \"execute\", 4, \"ngIf\"], [1, \"angular-editor-wrapper\"], [\"editorWrapper\", \"\"], [1, \"angular-editor-textarea\", 3, \"input\", \"focus\", \"blur\", \"click\", \"keyup\", \"mouseout\"], [\"editor\", \"\"], [1, \"angular-editor-placeholder\"], [3, \"id\", \"uploadUrl\", \"showToolbar\", \"fonts\", \"customClasses\", \"defaultFontName\", \"defaultFontSize\", \"hiddenButtons\", \"execute\"], [\"editorToolbar\", \"\"]], template: function AngularEditorComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1);\n ɵngcc0.ɵɵtemplate(2, AngularEditorComponent_angular_editor_toolbar_2_Template, 2, 8, \"angular-editor-toolbar\", 2);\n ɵngcc0.ɵɵelementStart(3, \"div\", 3, 4);\n ɵngcc0.ɵɵelementStart(5, \"div\", 5, 6);\n ɵngcc0.ɵɵlistener(\"input\", function AngularEditorComponent_Template_div_input_5_listener($event) { return ctx.onContentChange($event.target); })(\"focus\", function AngularEditorComponent_Template_div_focus_5_listener($event) { return ctx.onTextAreaFocus($event); })(\"blur\", function AngularEditorComponent_Template_div_blur_5_listener($event) { return ctx.onTextAreaBlur($event); })(\"click\", function AngularEditorComponent_Template_div_click_5_listener() { return ctx.exec(); })(\"keyup\", function AngularEditorComponent_Template_div_keyup_5_listener() { return ctx.exec(); })(\"mouseout\", function AngularEditorComponent_Template_div_mouseout_5_listener($event) { return ctx.onTextAreaMouseOut($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(7, \"span\", 7);\n ɵngcc0.ɵɵtext(8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, AngularEditorComponent_angular_editor_toolbar_9_Template, 2, 8, \"angular-editor-toolbar\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.config.width)(\"min-width\", ctx.config.minWidth);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.config.toolbarPosition === \"top\");\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵstyleProp(\"height\", ctx.config.height)(\"min-height\", ctx.config.minHeight)(\"max-height\", ctx.config.maxHeight)(\"outline\", ctx.config.outline === false ? \"none\" : undefined);\n ɵngcc0.ɵɵattribute(\"contenteditable\", ctx.config.editable)(\"tabindex\", ctx.disabled ? 0 - 1 : ctx.tabIndex)(\"translate\", ctx.config.translate)(\"spellcheck\", ctx.config.spellcheck);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.placeholder || ctx.config[\"placeholder\"]);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.config.toolbarPosition === \"bottom\");\n } }, directives: [ɵngcc2.NgIf, AngularEditorToolbarComponent], styles: [\"@charset \\\"UTF-8\\\";@font-face{font-family:FontAwesome;src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format(\\\"embedded-opentype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0) format(\\\"woff2\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0) format(\\\"woff\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0) format(\\\"truetype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format(\\\"svg\\\");font-weight:400;font-style:normal}.fa[_ngcontent-%COMP%]{display:inline-block;font:14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg[_ngcontent-%COMP%]{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x[_ngcontent-%COMP%]{font-size:2em}.fa-3x[_ngcontent-%COMP%]{font-size:3em}.fa-4x[_ngcontent-%COMP%]{font-size:4em}.fa-5x[_ngcontent-%COMP%]{font-size:5em}.fa-fw[_ngcontent-%COMP%]{width:1.2857142857em;text-align:center}.fa-ul[_ngcontent-%COMP%]{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul[_ngcontent-%COMP%] > li[_ngcontent-%COMP%]{position:relative}.fa-li[_ngcontent-%COMP%]{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg[_ngcontent-%COMP%]{left:-1.8571428571em}.fa-border[_ngcontent-%COMP%]{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left[_ngcontent-%COMP%]{float:left}.fa-pull-right[_ngcontent-%COMP%]{float:right}.fa.fa-pull-left[_ngcontent-%COMP%]{margin-right:.3em}.fa.fa-pull-right[_ngcontent-%COMP%]{margin-left:.3em}.pull-right[_ngcontent-%COMP%]{float:right}.pull-left[_ngcontent-%COMP%]{float:left}.fa.pull-left[_ngcontent-%COMP%]{margin-right:.3em}.fa.pull-right[_ngcontent-%COMP%]{margin-left:.3em}.fa-spin[_ngcontent-%COMP%]{-webkit-animation:2s linear infinite fa-spin;animation:2s linear infinite fa-spin}.fa-pulse[_ngcontent-%COMP%]{-webkit-animation:1s steps(8) infinite fa-spin;animation:1s steps(8) infinite fa-spin}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90[_ngcontent-%COMP%]{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180[_ngcontent-%COMP%]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270[_ngcontent-%COMP%]{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal[_ngcontent-%COMP%]{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical[_ngcontent-%COMP%]{-webkit-transform:scale(1,-1);transform:scale(1,-1)}[_ngcontent-%COMP%]:root .fa-flip-horizontal[_ngcontent-%COMP%], [_ngcontent-%COMP%]:root .fa-flip-vertical[_ngcontent-%COMP%], [_ngcontent-%COMP%]:root .fa-rotate-180[_ngcontent-%COMP%], [_ngcontent-%COMP%]:root .fa-rotate-270[_ngcontent-%COMP%], [_ngcontent-%COMP%]:root .fa-rotate-90[_ngcontent-%COMP%]{-webkit-filter:none;filter:none}.fa-stack[_ngcontent-%COMP%]{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x[_ngcontent-%COMP%], .fa-stack-2x[_ngcontent-%COMP%]{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x[_ngcontent-%COMP%]{line-height:inherit}.fa-stack-2x[_ngcontent-%COMP%]{font-size:2em}.fa-inverse[_ngcontent-%COMP%]{color:#fff}.fa-glass[_ngcontent-%COMP%]:before{content:\\\"\\uF000\\\"}.fa-music[_ngcontent-%COMP%]:before{content:\\\"\\uF001\\\"}.fa-search[_ngcontent-%COMP%]:before{content:\\\"\\uF002\\\"}.fa-envelope-o[_ngcontent-%COMP%]:before{content:\\\"\\uF003\\\"}.fa-heart[_ngcontent-%COMP%]:before{content:\\\"\\uF004\\\"}.fa-star[_ngcontent-%COMP%]:before{content:\\\"\\uF005\\\"}.fa-star-o[_ngcontent-%COMP%]:before{content:\\\"\\uF006\\\"}.fa-user[_ngcontent-%COMP%]:before{content:\\\"\\uF007\\\"}.fa-film[_ngcontent-%COMP%]:before{content:\\\"\\uF008\\\"}.fa-th-large[_ngcontent-%COMP%]:before{content:\\\"\\uF009\\\"}.fa-th[_ngcontent-%COMP%]:before{content:\\\"\\uF00A\\\"}.fa-th-list[_ngcontent-%COMP%]:before{content:\\\"\\uF00B\\\"}.fa-check[_ngcontent-%COMP%]:before{content:\\\"\\uF00C\\\"}.fa-close[_ngcontent-%COMP%]:before, .fa-remove[_ngcontent-%COMP%]:before, .fa-times[_ngcontent-%COMP%]:before{content:\\\"\\uF00D\\\"}.fa-search-plus[_ngcontent-%COMP%]:before{content:\\\"\\uF00E\\\"}.fa-search-minus[_ngcontent-%COMP%]:before{content:\\\"\\uF010\\\"}.fa-power-off[_ngcontent-%COMP%]:before{content:\\\"\\uF011\\\"}.fa-signal[_ngcontent-%COMP%]:before{content:\\\"\\uF012\\\"}.fa-cog[_ngcontent-%COMP%]:before, .fa-gear[_ngcontent-%COMP%]:before{content:\\\"\\uF013\\\"}.fa-trash-o[_ngcontent-%COMP%]:before{content:\\\"\\uF014\\\"}.fa-home[_ngcontent-%COMP%]:before{content:\\\"\\uF015\\\"}.fa-file-o[_ngcontent-%COMP%]:before{content:\\\"\\uF016\\\"}.fa-clock-o[_ngcontent-%COMP%]:before{content:\\\"\\uF017\\\"}.fa-road[_ngcontent-%COMP%]:before{content:\\\"\\uF018\\\"}.fa-download[_ngcontent-%COMP%]:before{content:\\\"\\uF019\\\"}.fa-arrow-circle-o-down[_ngcontent-%COMP%]:before{content:\\\"\\uF01A\\\"}.fa-arrow-circle-o-up[_ngcontent-%COMP%]:before{content:\\\"\\uF01B\\\"}.fa-inbox[_ngcontent-%COMP%]:before{content:\\\"\\uF01C\\\"}.fa-play-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF01D\\\"}.fa-repeat[_ngcontent-%COMP%]:before, .fa-rotate-right[_ngcontent-%COMP%]:before{content:\\\"\\uF01E\\\"}.fa-refresh[_ngcontent-%COMP%]:before{content:\\\"\\uF021\\\"}.fa-list-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF022\\\"}.fa-lock[_ngcontent-%COMP%]:before{content:\\\"\\uF023\\\"}.fa-flag[_ngcontent-%COMP%]:before{content:\\\"\\uF024\\\"}.fa-headphones[_ngcontent-%COMP%]:before{content:\\\"\\uF025\\\"}.fa-volume-off[_ngcontent-%COMP%]:before{content:\\\"\\uF026\\\"}.fa-volume-down[_ngcontent-%COMP%]:before{content:\\\"\\uF027\\\"}.fa-volume-up[_ngcontent-%COMP%]:before{content:\\\"\\uF028\\\"}.fa-qrcode[_ngcontent-%COMP%]:before{content:\\\"\\uF029\\\"}.fa-barcode[_ngcontent-%COMP%]:before{content:\\\"\\uF02A\\\"}.fa-tag[_ngcontent-%COMP%]:before{content:\\\"\\uF02B\\\"}.fa-tags[_ngcontent-%COMP%]:before{content:\\\"\\uF02C\\\"}.fa-book[_ngcontent-%COMP%]:before{content:\\\"\\uF02D\\\"}.fa-bookmark[_ngcontent-%COMP%]:before{content:\\\"\\uF02E\\\"}.fa-print[_ngcontent-%COMP%]:before{content:\\\"\\uF02F\\\"}.fa-camera[_ngcontent-%COMP%]:before{content:\\\"\\uF030\\\"}.fa-font[_ngcontent-%COMP%]:before{content:\\\"\\uF031\\\"}.fa-bold[_ngcontent-%COMP%]:before{content:\\\"\\uF032\\\"}.fa-italic[_ngcontent-%COMP%]:before{content:\\\"\\uF033\\\"}.fa-text-height[_ngcontent-%COMP%]:before{content:\\\"\\uF034\\\"}.fa-text-width[_ngcontent-%COMP%]:before{content:\\\"\\uF035\\\"}.fa-align-left[_ngcontent-%COMP%]:before{content:\\\"\\uF036\\\"}.fa-align-center[_ngcontent-%COMP%]:before{content:\\\"\\uF037\\\"}.fa-align-right[_ngcontent-%COMP%]:before{content:\\\"\\uF038\\\"}.fa-align-justify[_ngcontent-%COMP%]:before{content:\\\"\\uF039\\\"}.fa-list[_ngcontent-%COMP%]:before{content:\\\"\\uF03A\\\"}.fa-dedent[_ngcontent-%COMP%]:before, .fa-outdent[_ngcontent-%COMP%]:before{content:\\\"\\uF03B\\\"}.fa-indent[_ngcontent-%COMP%]:before{content:\\\"\\uF03C\\\"}.fa-video-camera[_ngcontent-%COMP%]:before{content:\\\"\\uF03D\\\"}.fa-image[_ngcontent-%COMP%]:before, .fa-photo[_ngcontent-%COMP%]:before, .fa-picture-o[_ngcontent-%COMP%]:before{content:\\\"\\uF03E\\\"}.fa-pencil[_ngcontent-%COMP%]:before{content:\\\"\\uF040\\\"}.fa-map-marker[_ngcontent-%COMP%]:before{content:\\\"\\uF041\\\"}.fa-adjust[_ngcontent-%COMP%]:before{content:\\\"\\uF042\\\"}.fa-tint[_ngcontent-%COMP%]:before{content:\\\"\\uF043\\\"}.fa-edit[_ngcontent-%COMP%]:before, .fa-pencil-square-o[_ngcontent-%COMP%]:before{content:\\\"\\uF044\\\"}.fa-share-square-o[_ngcontent-%COMP%]:before{content:\\\"\\uF045\\\"}.fa-check-square-o[_ngcontent-%COMP%]:before{content:\\\"\\uF046\\\"}.fa-arrows[_ngcontent-%COMP%]:before{content:\\\"\\uF047\\\"}.fa-step-backward[_ngcontent-%COMP%]:before{content:\\\"\\uF048\\\"}.fa-fast-backward[_ngcontent-%COMP%]:before{content:\\\"\\uF049\\\"}.fa-backward[_ngcontent-%COMP%]:before{content:\\\"\\uF04A\\\"}.fa-play[_ngcontent-%COMP%]:before{content:\\\"\\uF04B\\\"}.fa-pause[_ngcontent-%COMP%]:before{content:\\\"\\uF04C\\\"}.fa-stop[_ngcontent-%COMP%]:before{content:\\\"\\uF04D\\\"}.fa-forward[_ngcontent-%COMP%]:before{content:\\\"\\uF04E\\\"}.fa-fast-forward[_ngcontent-%COMP%]:before{content:\\\"\\uF050\\\"}.fa-step-forward[_ngcontent-%COMP%]:before{content:\\\"\\uF051\\\"}.fa-eject[_ngcontent-%COMP%]:before{content:\\\"\\uF052\\\"}.fa-chevron-left[_ngcontent-%COMP%]:before{content:\\\"\\uF053\\\"}.fa-chevron-right[_ngcontent-%COMP%]:before{content:\\\"\\uF054\\\"}.fa-plus-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF055\\\"}.fa-minus-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF056\\\"}.fa-times-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF057\\\"}.fa-check-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF058\\\"}.fa-question-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF059\\\"}.fa-info-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF05A\\\"}.fa-crosshairs[_ngcontent-%COMP%]:before{content:\\\"\\uF05B\\\"}.fa-times-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF05C\\\"}.fa-check-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF05D\\\"}.fa-ban[_ngcontent-%COMP%]:before{content:\\\"\\uF05E\\\"}.fa-arrow-left[_ngcontent-%COMP%]:before{content:\\\"\\uF060\\\"}.fa-arrow-right[_ngcontent-%COMP%]:before{content:\\\"\\uF061\\\"}.fa-arrow-up[_ngcontent-%COMP%]:before{content:\\\"\\uF062\\\"}.fa-arrow-down[_ngcontent-%COMP%]:before{content:\\\"\\uF063\\\"}.fa-mail-forward[_ngcontent-%COMP%]:before, .fa-share[_ngcontent-%COMP%]:before{content:\\\"\\uF064\\\"}.fa-expand[_ngcontent-%COMP%]:before{content:\\\"\\uF065\\\"}.fa-compress[_ngcontent-%COMP%]:before{content:\\\"\\uF066\\\"}.fa-plus[_ngcontent-%COMP%]:before{content:\\\"\\uF067\\\"}.fa-minus[_ngcontent-%COMP%]:before{content:\\\"\\uF068\\\"}.fa-asterisk[_ngcontent-%COMP%]:before{content:\\\"\\uF069\\\"}.fa-exclamation-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF06A\\\"}.fa-gift[_ngcontent-%COMP%]:before{content:\\\"\\uF06B\\\"}.fa-leaf[_ngcontent-%COMP%]:before{content:\\\"\\uF06C\\\"}.fa-fire[_ngcontent-%COMP%]:before{content:\\\"\\uF06D\\\"}.fa-eye[_ngcontent-%COMP%]:before{content:\\\"\\uF06E\\\"}.fa-eye-slash[_ngcontent-%COMP%]:before{content:\\\"\\uF070\\\"}.fa-exclamation-triangle[_ngcontent-%COMP%]:before, .fa-warning[_ngcontent-%COMP%]:before{content:\\\"\\uF071\\\"}.fa-plane[_ngcontent-%COMP%]:before{content:\\\"\\uF072\\\"}.fa-calendar[_ngcontent-%COMP%]:before{content:\\\"\\uF073\\\"}.fa-random[_ngcontent-%COMP%]:before{content:\\\"\\uF074\\\"}.fa-comment[_ngcontent-%COMP%]:before{content:\\\"\\uF075\\\"}.fa-magnet[_ngcontent-%COMP%]:before{content:\\\"\\uF076\\\"}.fa-chevron-up[_ngcontent-%COMP%]:before{content:\\\"\\uF077\\\"}.fa-chevron-down[_ngcontent-%COMP%]:before{content:\\\"\\uF078\\\"}.fa-retweet[_ngcontent-%COMP%]:before{content:\\\"\\uF079\\\"}.fa-shopping-cart[_ngcontent-%COMP%]:before{content:\\\"\\uF07A\\\"}.fa-folder[_ngcontent-%COMP%]:before{content:\\\"\\uF07B\\\"}.fa-folder-open[_ngcontent-%COMP%]:before{content:\\\"\\uF07C\\\"}.fa-arrows-v[_ngcontent-%COMP%]:before{content:\\\"\\uF07D\\\"}.fa-arrows-h[_ngcontent-%COMP%]:before{content:\\\"\\uF07E\\\"}.fa-bar-chart-o[_ngcontent-%COMP%]:before, .fa-bar-chart[_ngcontent-%COMP%]:before{content:\\\"\\uF080\\\"}.fa-twitter-square[_ngcontent-%COMP%]:before{content:\\\"\\uF081\\\"}.fa-facebook-square[_ngcontent-%COMP%]:before{content:\\\"\\uF082\\\"}.fa-camera-retro[_ngcontent-%COMP%]:before{content:\\\"\\uF083\\\"}.fa-key[_ngcontent-%COMP%]:before{content:\\\"\\uF084\\\"}.fa-cogs[_ngcontent-%COMP%]:before, .fa-gears[_ngcontent-%COMP%]:before{content:\\\"\\uF085\\\"}.fa-comments[_ngcontent-%COMP%]:before{content:\\\"\\uF086\\\"}.fa-thumbs-o-up[_ngcontent-%COMP%]:before{content:\\\"\\uF087\\\"}.fa-thumbs-o-down[_ngcontent-%COMP%]:before{content:\\\"\\uF088\\\"}.fa-star-half[_ngcontent-%COMP%]:before{content:\\\"\\uF089\\\"}.fa-heart-o[_ngcontent-%COMP%]:before{content:\\\"\\uF08A\\\"}.fa-sign-out[_ngcontent-%COMP%]:before{content:\\\"\\uF08B\\\"}.fa-linkedin-square[_ngcontent-%COMP%]:before{content:\\\"\\uF08C\\\"}.fa-thumb-tack[_ngcontent-%COMP%]:before{content:\\\"\\uF08D\\\"}.fa-external-link[_ngcontent-%COMP%]:before{content:\\\"\\uF08E\\\"}.fa-sign-in[_ngcontent-%COMP%]:before{content:\\\"\\uF090\\\"}.fa-trophy[_ngcontent-%COMP%]:before{content:\\\"\\uF091\\\"}.fa-github-square[_ngcontent-%COMP%]:before{content:\\\"\\uF092\\\"}.fa-upload[_ngcontent-%COMP%]:before{content:\\\"\\uF093\\\"}.fa-lemon-o[_ngcontent-%COMP%]:before{content:\\\"\\uF094\\\"}.fa-phone[_ngcontent-%COMP%]:before{content:\\\"\\uF095\\\"}.fa-square-o[_ngcontent-%COMP%]:before{content:\\\"\\uF096\\\"}.fa-bookmark-o[_ngcontent-%COMP%]:before{content:\\\"\\uF097\\\"}.fa-phone-square[_ngcontent-%COMP%]:before{content:\\\"\\uF098\\\"}.fa-twitter[_ngcontent-%COMP%]:before{content:\\\"\\uF099\\\"}.fa-facebook-f[_ngcontent-%COMP%]:before, .fa-facebook[_ngcontent-%COMP%]:before{content:\\\"\\uF09A\\\"}.fa-github[_ngcontent-%COMP%]:before{content:\\\"\\uF09B\\\"}.fa-unlock[_ngcontent-%COMP%]:before{content:\\\"\\uF09C\\\"}.fa-credit-card[_ngcontent-%COMP%]:before{content:\\\"\\uF09D\\\"}.fa-feed[_ngcontent-%COMP%]:before, .fa-rss[_ngcontent-%COMP%]:before{content:\\\"\\uF09E\\\"}.fa-hdd-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0A0\\\"}.fa-bullhorn[_ngcontent-%COMP%]:before{content:\\\"\\uF0A1\\\"}.fa-bell[_ngcontent-%COMP%]:before{content:\\\"\\uF0F3\\\"}.fa-certificate[_ngcontent-%COMP%]:before{content:\\\"\\uF0A3\\\"}.fa-hand-o-right[_ngcontent-%COMP%]:before{content:\\\"\\uF0A4\\\"}.fa-hand-o-left[_ngcontent-%COMP%]:before{content:\\\"\\uF0A5\\\"}.fa-hand-o-up[_ngcontent-%COMP%]:before{content:\\\"\\uF0A6\\\"}.fa-hand-o-down[_ngcontent-%COMP%]:before{content:\\\"\\uF0A7\\\"}.fa-arrow-circle-left[_ngcontent-%COMP%]:before{content:\\\"\\uF0A8\\\"}.fa-arrow-circle-right[_ngcontent-%COMP%]:before{content:\\\"\\uF0A9\\\"}.fa-arrow-circle-up[_ngcontent-%COMP%]:before{content:\\\"\\uF0AA\\\"}.fa-arrow-circle-down[_ngcontent-%COMP%]:before{content:\\\"\\uF0AB\\\"}.fa-globe[_ngcontent-%COMP%]:before{content:\\\"\\uF0AC\\\"}.fa-wrench[_ngcontent-%COMP%]:before{content:\\\"\\uF0AD\\\"}.fa-tasks[_ngcontent-%COMP%]:before{content:\\\"\\uF0AE\\\"}.fa-filter[_ngcontent-%COMP%]:before{content:\\\"\\uF0B0\\\"}.fa-briefcase[_ngcontent-%COMP%]:before{content:\\\"\\uF0B1\\\"}.fa-arrows-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF0B2\\\"}.fa-group[_ngcontent-%COMP%]:before, .fa-users[_ngcontent-%COMP%]:before{content:\\\"\\uF0C0\\\"}.fa-chain[_ngcontent-%COMP%]:before, .fa-link[_ngcontent-%COMP%]:before{content:\\\"\\uF0C1\\\"}.fa-cloud[_ngcontent-%COMP%]:before{content:\\\"\\uF0C2\\\"}.fa-flask[_ngcontent-%COMP%]:before{content:\\\"\\uF0C3\\\"}.fa-cut[_ngcontent-%COMP%]:before, .fa-scissors[_ngcontent-%COMP%]:before{content:\\\"\\uF0C4\\\"}.fa-copy[_ngcontent-%COMP%]:before, .fa-files-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0C5\\\"}.fa-paperclip[_ngcontent-%COMP%]:before{content:\\\"\\uF0C6\\\"}.fa-floppy-o[_ngcontent-%COMP%]:before, .fa-save[_ngcontent-%COMP%]:before{content:\\\"\\uF0C7\\\"}.fa-square[_ngcontent-%COMP%]:before{content:\\\"\\uF0C8\\\"}.fa-bars[_ngcontent-%COMP%]:before, .fa-navicon[_ngcontent-%COMP%]:before, .fa-reorder[_ngcontent-%COMP%]:before{content:\\\"\\uF0C9\\\"}.fa-list-ul[_ngcontent-%COMP%]:before{content:\\\"\\uF0CA\\\"}.fa-list-ol[_ngcontent-%COMP%]:before{content:\\\"\\uF0CB\\\"}.fa-strikethrough[_ngcontent-%COMP%]:before{content:\\\"\\uF0CC\\\"}.fa-underline[_ngcontent-%COMP%]:before{content:\\\"\\uF0CD\\\"}.fa-table[_ngcontent-%COMP%]:before{content:\\\"\\uF0CE\\\"}.fa-magic[_ngcontent-%COMP%]:before{content:\\\"\\uF0D0\\\"}.fa-truck[_ngcontent-%COMP%]:before{content:\\\"\\uF0D1\\\"}.fa-pinterest[_ngcontent-%COMP%]:before{content:\\\"\\uF0D2\\\"}.fa-pinterest-square[_ngcontent-%COMP%]:before{content:\\\"\\uF0D3\\\"}.fa-google-plus-square[_ngcontent-%COMP%]:before{content:\\\"\\uF0D4\\\"}.fa-google-plus[_ngcontent-%COMP%]:before{content:\\\"\\uF0D5\\\"}.fa-money[_ngcontent-%COMP%]:before{content:\\\"\\uF0D6\\\"}.fa-caret-down[_ngcontent-%COMP%]:before{content:\\\"\\uF0D7\\\"}.fa-caret-up[_ngcontent-%COMP%]:before{content:\\\"\\uF0D8\\\"}.fa-caret-left[_ngcontent-%COMP%]:before{content:\\\"\\uF0D9\\\"}.fa-caret-right[_ngcontent-%COMP%]:before{content:\\\"\\uF0DA\\\"}.fa-columns[_ngcontent-%COMP%]:before{content:\\\"\\uF0DB\\\"}.fa-sort[_ngcontent-%COMP%]:before, .fa-unsorted[_ngcontent-%COMP%]:before{content:\\\"\\uF0DC\\\"}.fa-sort-desc[_ngcontent-%COMP%]:before, .fa-sort-down[_ngcontent-%COMP%]:before{content:\\\"\\uF0DD\\\"}.fa-sort-asc[_ngcontent-%COMP%]:before, .fa-sort-up[_ngcontent-%COMP%]:before{content:\\\"\\uF0DE\\\"}.fa-envelope[_ngcontent-%COMP%]:before{content:\\\"\\uF0E0\\\"}.fa-linkedin[_ngcontent-%COMP%]:before{content:\\\"\\uF0E1\\\"}.fa-rotate-left[_ngcontent-%COMP%]:before, .fa-undo[_ngcontent-%COMP%]:before{content:\\\"\\uF0E2\\\"}.fa-gavel[_ngcontent-%COMP%]:before, .fa-legal[_ngcontent-%COMP%]:before{content:\\\"\\uF0E3\\\"}.fa-dashboard[_ngcontent-%COMP%]:before, .fa-tachometer[_ngcontent-%COMP%]:before{content:\\\"\\uF0E4\\\"}.fa-comment-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0E5\\\"}.fa-comments-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0E6\\\"}.fa-bolt[_ngcontent-%COMP%]:before, .fa-flash[_ngcontent-%COMP%]:before{content:\\\"\\uF0E7\\\"}.fa-sitemap[_ngcontent-%COMP%]:before{content:\\\"\\uF0E8\\\"}.fa-umbrella[_ngcontent-%COMP%]:before{content:\\\"\\uF0E9\\\"}.fa-clipboard[_ngcontent-%COMP%]:before, .fa-paste[_ngcontent-%COMP%]:before{content:\\\"\\uF0EA\\\"}.fa-lightbulb-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0EB\\\"}.fa-exchange[_ngcontent-%COMP%]:before{content:\\\"\\uF0EC\\\"}.fa-cloud-download[_ngcontent-%COMP%]:before{content:\\\"\\uF0ED\\\"}.fa-cloud-upload[_ngcontent-%COMP%]:before{content:\\\"\\uF0EE\\\"}.fa-user-md[_ngcontent-%COMP%]:before{content:\\\"\\uF0F0\\\"}.fa-stethoscope[_ngcontent-%COMP%]:before{content:\\\"\\uF0F1\\\"}.fa-suitcase[_ngcontent-%COMP%]:before{content:\\\"\\uF0F2\\\"}.fa-bell-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0A2\\\"}.fa-coffee[_ngcontent-%COMP%]:before{content:\\\"\\uF0F4\\\"}.fa-cutlery[_ngcontent-%COMP%]:before{content:\\\"\\uF0F5\\\"}.fa-file-text-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0F6\\\"}.fa-building-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0F7\\\"}.fa-hospital-o[_ngcontent-%COMP%]:before{content:\\\"\\uF0F8\\\"}.fa-ambulance[_ngcontent-%COMP%]:before{content:\\\"\\uF0F9\\\"}.fa-medkit[_ngcontent-%COMP%]:before{content:\\\"\\uF0FA\\\"}.fa-fighter-jet[_ngcontent-%COMP%]:before{content:\\\"\\uF0FB\\\"}.fa-beer[_ngcontent-%COMP%]:before{content:\\\"\\uF0FC\\\"}.fa-h-square[_ngcontent-%COMP%]:before{content:\\\"\\uF0FD\\\"}.fa-plus-square[_ngcontent-%COMP%]:before{content:\\\"\\uF0FE\\\"}.fa-angle-double-left[_ngcontent-%COMP%]:before{content:\\\"\\uF100\\\"}.fa-angle-double-right[_ngcontent-%COMP%]:before{content:\\\"\\uF101\\\"}.fa-angle-double-up[_ngcontent-%COMP%]:before{content:\\\"\\uF102\\\"}.fa-angle-double-down[_ngcontent-%COMP%]:before{content:\\\"\\uF103\\\"}.fa-angle-left[_ngcontent-%COMP%]:before{content:\\\"\\uF104\\\"}.fa-angle-right[_ngcontent-%COMP%]:before{content:\\\"\\uF105\\\"}.fa-angle-up[_ngcontent-%COMP%]:before{content:\\\"\\uF106\\\"}.fa-angle-down[_ngcontent-%COMP%]:before{content:\\\"\\uF107\\\"}.fa-desktop[_ngcontent-%COMP%]:before{content:\\\"\\uF108\\\"}.fa-laptop[_ngcontent-%COMP%]:before{content:\\\"\\uF109\\\"}.fa-tablet[_ngcontent-%COMP%]:before{content:\\\"\\uF10A\\\"}.fa-mobile-phone[_ngcontent-%COMP%]:before, .fa-mobile[_ngcontent-%COMP%]:before{content:\\\"\\uF10B\\\"}.fa-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF10C\\\"}.fa-quote-left[_ngcontent-%COMP%]:before{content:\\\"\\uF10D\\\"}.fa-quote-right[_ngcontent-%COMP%]:before{content:\\\"\\uF10E\\\"}.fa-spinner[_ngcontent-%COMP%]:before{content:\\\"\\uF110\\\"}.fa-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF111\\\"}.fa-mail-reply[_ngcontent-%COMP%]:before, .fa-reply[_ngcontent-%COMP%]:before{content:\\\"\\uF112\\\"}.fa-github-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF113\\\"}.fa-folder-o[_ngcontent-%COMP%]:before{content:\\\"\\uF114\\\"}.fa-folder-open-o[_ngcontent-%COMP%]:before{content:\\\"\\uF115\\\"}.fa-smile-o[_ngcontent-%COMP%]:before{content:\\\"\\uF118\\\"}.fa-frown-o[_ngcontent-%COMP%]:before{content:\\\"\\uF119\\\"}.fa-meh-o[_ngcontent-%COMP%]:before{content:\\\"\\uF11A\\\"}.fa-gamepad[_ngcontent-%COMP%]:before{content:\\\"\\uF11B\\\"}.fa-keyboard-o[_ngcontent-%COMP%]:before{content:\\\"\\uF11C\\\"}.fa-flag-o[_ngcontent-%COMP%]:before{content:\\\"\\uF11D\\\"}.fa-flag-checkered[_ngcontent-%COMP%]:before{content:\\\"\\uF11E\\\"}.fa-terminal[_ngcontent-%COMP%]:before{content:\\\"\\uF120\\\"}.fa-code[_ngcontent-%COMP%]:before{content:\\\"\\uF121\\\"}.fa-mail-reply-all[_ngcontent-%COMP%]:before, .fa-reply-all[_ngcontent-%COMP%]:before{content:\\\"\\uF122\\\"}.fa-star-half-empty[_ngcontent-%COMP%]:before, .fa-star-half-full[_ngcontent-%COMP%]:before, .fa-star-half-o[_ngcontent-%COMP%]:before{content:\\\"\\uF123\\\"}.fa-location-arrow[_ngcontent-%COMP%]:before{content:\\\"\\uF124\\\"}.fa-crop[_ngcontent-%COMP%]:before{content:\\\"\\uF125\\\"}.fa-code-fork[_ngcontent-%COMP%]:before{content:\\\"\\uF126\\\"}.fa-chain-broken[_ngcontent-%COMP%]:before, .fa-unlink[_ngcontent-%COMP%]:before{content:\\\"\\uF127\\\"}.fa-question[_ngcontent-%COMP%]:before{content:\\\"\\uF128\\\"}.fa-info[_ngcontent-%COMP%]:before{content:\\\"\\uF129\\\"}.fa-exclamation[_ngcontent-%COMP%]:before{content:\\\"\\uF12A\\\"}.fa-superscript[_ngcontent-%COMP%]:before{content:\\\"\\uF12B\\\"}.fa-subscript[_ngcontent-%COMP%]:before{content:\\\"\\uF12C\\\"}.fa-eraser[_ngcontent-%COMP%]:before{content:\\\"\\uF12D\\\"}.fa-puzzle-piece[_ngcontent-%COMP%]:before{content:\\\"\\uF12E\\\"}.fa-microphone[_ngcontent-%COMP%]:before{content:\\\"\\uF130\\\"}.fa-microphone-slash[_ngcontent-%COMP%]:before{content:\\\"\\uF131\\\"}.fa-shield[_ngcontent-%COMP%]:before{content:\\\"\\uF132\\\"}.fa-calendar-o[_ngcontent-%COMP%]:before{content:\\\"\\uF133\\\"}.fa-fire-extinguisher[_ngcontent-%COMP%]:before{content:\\\"\\uF134\\\"}.fa-rocket[_ngcontent-%COMP%]:before{content:\\\"\\uF135\\\"}.fa-maxcdn[_ngcontent-%COMP%]:before{content:\\\"\\uF136\\\"}.fa-chevron-circle-left[_ngcontent-%COMP%]:before{content:\\\"\\uF137\\\"}.fa-chevron-circle-right[_ngcontent-%COMP%]:before{content:\\\"\\uF138\\\"}.fa-chevron-circle-up[_ngcontent-%COMP%]:before{content:\\\"\\uF139\\\"}.fa-chevron-circle-down[_ngcontent-%COMP%]:before{content:\\\"\\uF13A\\\"}.fa-html5[_ngcontent-%COMP%]:before{content:\\\"\\uF13B\\\"}.fa-css3[_ngcontent-%COMP%]:before{content:\\\"\\uF13C\\\"}.fa-anchor[_ngcontent-%COMP%]:before{content:\\\"\\uF13D\\\"}.fa-unlock-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF13E\\\"}.fa-bullseye[_ngcontent-%COMP%]:before{content:\\\"\\uF140\\\"}.fa-ellipsis-h[_ngcontent-%COMP%]:before{content:\\\"\\uF141\\\"}.fa-ellipsis-v[_ngcontent-%COMP%]:before{content:\\\"\\uF142\\\"}.fa-rss-square[_ngcontent-%COMP%]:before{content:\\\"\\uF143\\\"}.fa-play-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF144\\\"}.fa-ticket[_ngcontent-%COMP%]:before{content:\\\"\\uF145\\\"}.fa-minus-square[_ngcontent-%COMP%]:before{content:\\\"\\uF146\\\"}.fa-minus-square-o[_ngcontent-%COMP%]:before{content:\\\"\\uF147\\\"}.fa-level-up[_ngcontent-%COMP%]:before{content:\\\"\\uF148\\\"}.fa-level-down[_ngcontent-%COMP%]:before{content:\\\"\\uF149\\\"}.fa-check-square[_ngcontent-%COMP%]:before{content:\\\"\\uF14A\\\"}.fa-pencil-square[_ngcontent-%COMP%]:before{content:\\\"\\uF14B\\\"}.fa-external-link-square[_ngcontent-%COMP%]:before{content:\\\"\\uF14C\\\"}.fa-share-square[_ngcontent-%COMP%]:before{content:\\\"\\uF14D\\\"}.fa-compass[_ngcontent-%COMP%]:before{content:\\\"\\uF14E\\\"}.fa-caret-square-o-down[_ngcontent-%COMP%]:before, .fa-toggle-down[_ngcontent-%COMP%]:before{content:\\\"\\uF150\\\"}.fa-caret-square-o-up[_ngcontent-%COMP%]:before, .fa-toggle-up[_ngcontent-%COMP%]:before{content:\\\"\\uF151\\\"}.fa-caret-square-o-right[_ngcontent-%COMP%]:before, .fa-toggle-right[_ngcontent-%COMP%]:before{content:\\\"\\uF152\\\"}.fa-eur[_ngcontent-%COMP%]:before, .fa-euro[_ngcontent-%COMP%]:before{content:\\\"\\uF153\\\"}.fa-gbp[_ngcontent-%COMP%]:before{content:\\\"\\uF154\\\"}.fa-dollar[_ngcontent-%COMP%]:before, .fa-usd[_ngcontent-%COMP%]:before{content:\\\"\\uF155\\\"}.fa-inr[_ngcontent-%COMP%]:before, .fa-rupee[_ngcontent-%COMP%]:before{content:\\\"\\uF156\\\"}.fa-cny[_ngcontent-%COMP%]:before, .fa-jpy[_ngcontent-%COMP%]:before, .fa-rmb[_ngcontent-%COMP%]:before, .fa-yen[_ngcontent-%COMP%]:before{content:\\\"\\uF157\\\"}.fa-rouble[_ngcontent-%COMP%]:before, .fa-rub[_ngcontent-%COMP%]:before, .fa-ruble[_ngcontent-%COMP%]:before{content:\\\"\\uF158\\\"}.fa-krw[_ngcontent-%COMP%]:before, .fa-won[_ngcontent-%COMP%]:before{content:\\\"\\uF159\\\"}.fa-bitcoin[_ngcontent-%COMP%]:before, .fa-btc[_ngcontent-%COMP%]:before{content:\\\"\\uF15A\\\"}.fa-file[_ngcontent-%COMP%]:before{content:\\\"\\uF15B\\\"}.fa-file-text[_ngcontent-%COMP%]:before{content:\\\"\\uF15C\\\"}.fa-sort-alpha-asc[_ngcontent-%COMP%]:before{content:\\\"\\uF15D\\\"}.fa-sort-alpha-desc[_ngcontent-%COMP%]:before{content:\\\"\\uF15E\\\"}.fa-sort-amount-asc[_ngcontent-%COMP%]:before{content:\\\"\\uF160\\\"}.fa-sort-amount-desc[_ngcontent-%COMP%]:before{content:\\\"\\uF161\\\"}.fa-sort-numeric-asc[_ngcontent-%COMP%]:before{content:\\\"\\uF162\\\"}.fa-sort-numeric-desc[_ngcontent-%COMP%]:before{content:\\\"\\uF163\\\"}.fa-thumbs-up[_ngcontent-%COMP%]:before{content:\\\"\\uF164\\\"}.fa-thumbs-down[_ngcontent-%COMP%]:before{content:\\\"\\uF165\\\"}.fa-youtube-square[_ngcontent-%COMP%]:before{content:\\\"\\uF166\\\"}.fa-youtube[_ngcontent-%COMP%]:before{content:\\\"\\uF167\\\"}.fa-xing[_ngcontent-%COMP%]:before{content:\\\"\\uF168\\\"}.fa-xing-square[_ngcontent-%COMP%]:before{content:\\\"\\uF169\\\"}.fa-youtube-play[_ngcontent-%COMP%]:before{content:\\\"\\uF16A\\\"}.fa-dropbox[_ngcontent-%COMP%]:before{content:\\\"\\uF16B\\\"}.fa-stack-overflow[_ngcontent-%COMP%]:before{content:\\\"\\uF16C\\\"}.fa-instagram[_ngcontent-%COMP%]:before{content:\\\"\\uF16D\\\"}.fa-flickr[_ngcontent-%COMP%]:before{content:\\\"\\uF16E\\\"}.fa-adn[_ngcontent-%COMP%]:before{content:\\\"\\uF170\\\"}.fa-bitbucket[_ngcontent-%COMP%]:before{content:\\\"\\uF171\\\"}.fa-bitbucket-square[_ngcontent-%COMP%]:before{content:\\\"\\uF172\\\"}.fa-tumblr[_ngcontent-%COMP%]:before{content:\\\"\\uF173\\\"}.fa-tumblr-square[_ngcontent-%COMP%]:before{content:\\\"\\uF174\\\"}.fa-long-arrow-down[_ngcontent-%COMP%]:before{content:\\\"\\uF175\\\"}.fa-long-arrow-up[_ngcontent-%COMP%]:before{content:\\\"\\uF176\\\"}.fa-long-arrow-left[_ngcontent-%COMP%]:before{content:\\\"\\uF177\\\"}.fa-long-arrow-right[_ngcontent-%COMP%]:before{content:\\\"\\uF178\\\"}.fa-apple[_ngcontent-%COMP%]:before{content:\\\"\\uF179\\\"}.fa-windows[_ngcontent-%COMP%]:before{content:\\\"\\uF17A\\\"}.fa-android[_ngcontent-%COMP%]:before{content:\\\"\\uF17B\\\"}.fa-linux[_ngcontent-%COMP%]:before{content:\\\"\\uF17C\\\"}.fa-dribbble[_ngcontent-%COMP%]:before{content:\\\"\\uF17D\\\"}.fa-skype[_ngcontent-%COMP%]:before{content:\\\"\\uF17E\\\"}.fa-foursquare[_ngcontent-%COMP%]:before{content:\\\"\\uF180\\\"}.fa-trello[_ngcontent-%COMP%]:before{content:\\\"\\uF181\\\"}.fa-female[_ngcontent-%COMP%]:before{content:\\\"\\uF182\\\"}.fa-male[_ngcontent-%COMP%]:before{content:\\\"\\uF183\\\"}.fa-gittip[_ngcontent-%COMP%]:before, .fa-gratipay[_ngcontent-%COMP%]:before{content:\\\"\\uF184\\\"}.fa-sun-o[_ngcontent-%COMP%]:before{content:\\\"\\uF185\\\"}.fa-moon-o[_ngcontent-%COMP%]:before{content:\\\"\\uF186\\\"}.fa-archive[_ngcontent-%COMP%]:before{content:\\\"\\uF187\\\"}.fa-bug[_ngcontent-%COMP%]:before{content:\\\"\\uF188\\\"}.fa-vk[_ngcontent-%COMP%]:before{content:\\\"\\uF189\\\"}.fa-weibo[_ngcontent-%COMP%]:before{content:\\\"\\uF18A\\\"}.fa-renren[_ngcontent-%COMP%]:before{content:\\\"\\uF18B\\\"}.fa-pagelines[_ngcontent-%COMP%]:before{content:\\\"\\uF18C\\\"}.fa-stack-exchange[_ngcontent-%COMP%]:before{content:\\\"\\uF18D\\\"}.fa-arrow-circle-o-right[_ngcontent-%COMP%]:before{content:\\\"\\uF18E\\\"}.fa-arrow-circle-o-left[_ngcontent-%COMP%]:before{content:\\\"\\uF190\\\"}.fa-caret-square-o-left[_ngcontent-%COMP%]:before, .fa-toggle-left[_ngcontent-%COMP%]:before{content:\\\"\\uF191\\\"}.fa-dot-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF192\\\"}.fa-wheelchair[_ngcontent-%COMP%]:before{content:\\\"\\uF193\\\"}.fa-vimeo-square[_ngcontent-%COMP%]:before{content:\\\"\\uF194\\\"}.fa-try[_ngcontent-%COMP%]:before, .fa-turkish-lira[_ngcontent-%COMP%]:before{content:\\\"\\uF195\\\"}.fa-plus-square-o[_ngcontent-%COMP%]:before{content:\\\"\\uF196\\\"}.fa-space-shuttle[_ngcontent-%COMP%]:before{content:\\\"\\uF197\\\"}.fa-slack[_ngcontent-%COMP%]:before{content:\\\"\\uF198\\\"}.fa-envelope-square[_ngcontent-%COMP%]:before{content:\\\"\\uF199\\\"}.fa-wordpress[_ngcontent-%COMP%]:before{content:\\\"\\uF19A\\\"}.fa-openid[_ngcontent-%COMP%]:before{content:\\\"\\uF19B\\\"}.fa-bank[_ngcontent-%COMP%]:before, .fa-institution[_ngcontent-%COMP%]:before, .fa-university[_ngcontent-%COMP%]:before{content:\\\"\\uF19C\\\"}.fa-graduation-cap[_ngcontent-%COMP%]:before, .fa-mortar-board[_ngcontent-%COMP%]:before{content:\\\"\\uF19D\\\"}.fa-yahoo[_ngcontent-%COMP%]:before{content:\\\"\\uF19E\\\"}.fa-google[_ngcontent-%COMP%]:before{content:\\\"\\uF1A0\\\"}.fa-reddit[_ngcontent-%COMP%]:before{content:\\\"\\uF1A1\\\"}.fa-reddit-square[_ngcontent-%COMP%]:before{content:\\\"\\uF1A2\\\"}.fa-stumbleupon-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF1A3\\\"}.fa-stumbleupon[_ngcontent-%COMP%]:before{content:\\\"\\uF1A4\\\"}.fa-delicious[_ngcontent-%COMP%]:before{content:\\\"\\uF1A5\\\"}.fa-digg[_ngcontent-%COMP%]:before{content:\\\"\\uF1A6\\\"}.fa-pied-piper-pp[_ngcontent-%COMP%]:before{content:\\\"\\uF1A7\\\"}.fa-pied-piper-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF1A8\\\"}.fa-drupal[_ngcontent-%COMP%]:before{content:\\\"\\uF1A9\\\"}.fa-joomla[_ngcontent-%COMP%]:before{content:\\\"\\uF1AA\\\"}.fa-language[_ngcontent-%COMP%]:before{content:\\\"\\uF1AB\\\"}.fa-fax[_ngcontent-%COMP%]:before{content:\\\"\\uF1AC\\\"}.fa-building[_ngcontent-%COMP%]:before{content:\\\"\\uF1AD\\\"}.fa-child[_ngcontent-%COMP%]:before{content:\\\"\\uF1AE\\\"}.fa-paw[_ngcontent-%COMP%]:before{content:\\\"\\uF1B0\\\"}.fa-spoon[_ngcontent-%COMP%]:before{content:\\\"\\uF1B1\\\"}.fa-cube[_ngcontent-%COMP%]:before{content:\\\"\\uF1B2\\\"}.fa-cubes[_ngcontent-%COMP%]:before{content:\\\"\\uF1B3\\\"}.fa-behance[_ngcontent-%COMP%]:before{content:\\\"\\uF1B4\\\"}.fa-behance-square[_ngcontent-%COMP%]:before{content:\\\"\\uF1B5\\\"}.fa-steam[_ngcontent-%COMP%]:before{content:\\\"\\uF1B6\\\"}.fa-steam-square[_ngcontent-%COMP%]:before{content:\\\"\\uF1B7\\\"}.fa-recycle[_ngcontent-%COMP%]:before{content:\\\"\\uF1B8\\\"}.fa-automobile[_ngcontent-%COMP%]:before, .fa-car[_ngcontent-%COMP%]:before{content:\\\"\\uF1B9\\\"}.fa-cab[_ngcontent-%COMP%]:before, .fa-taxi[_ngcontent-%COMP%]:before{content:\\\"\\uF1BA\\\"}.fa-tree[_ngcontent-%COMP%]:before{content:\\\"\\uF1BB\\\"}.fa-spotify[_ngcontent-%COMP%]:before{content:\\\"\\uF1BC\\\"}.fa-deviantart[_ngcontent-%COMP%]:before{content:\\\"\\uF1BD\\\"}.fa-soundcloud[_ngcontent-%COMP%]:before{content:\\\"\\uF1BE\\\"}.fa-database[_ngcontent-%COMP%]:before{content:\\\"\\uF1C0\\\"}.fa-file-pdf-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C1\\\"}.fa-file-word-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C2\\\"}.fa-file-excel-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C3\\\"}.fa-file-powerpoint-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C4\\\"}.fa-file-image-o[_ngcontent-%COMP%]:before, .fa-file-photo-o[_ngcontent-%COMP%]:before, .fa-file-picture-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C5\\\"}.fa-file-archive-o[_ngcontent-%COMP%]:before, .fa-file-zip-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C6\\\"}.fa-file-audio-o[_ngcontent-%COMP%]:before, .fa-file-sound-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C7\\\"}.fa-file-movie-o[_ngcontent-%COMP%]:before, .fa-file-video-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C8\\\"}.fa-file-code-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1C9\\\"}.fa-vine[_ngcontent-%COMP%]:before{content:\\\"\\uF1CA\\\"}.fa-codepen[_ngcontent-%COMP%]:before{content:\\\"\\uF1CB\\\"}.fa-jsfiddle[_ngcontent-%COMP%]:before{content:\\\"\\uF1CC\\\"}.fa-life-bouy[_ngcontent-%COMP%]:before, .fa-life-buoy[_ngcontent-%COMP%]:before, .fa-life-ring[_ngcontent-%COMP%]:before, .fa-life-saver[_ngcontent-%COMP%]:before, .fa-support[_ngcontent-%COMP%]:before{content:\\\"\\uF1CD\\\"}.fa-circle-o-notch[_ngcontent-%COMP%]:before{content:\\\"\\uF1CE\\\"}.fa-ra[_ngcontent-%COMP%]:before, .fa-rebel[_ngcontent-%COMP%]:before, .fa-resistance[_ngcontent-%COMP%]:before{content:\\\"\\uF1D0\\\"}.fa-empire[_ngcontent-%COMP%]:before, .fa-ge[_ngcontent-%COMP%]:before{content:\\\"\\uF1D1\\\"}.fa-git-square[_ngcontent-%COMP%]:before{content:\\\"\\uF1D2\\\"}.fa-git[_ngcontent-%COMP%]:before{content:\\\"\\uF1D3\\\"}.fa-hacker-news[_ngcontent-%COMP%]:before, .fa-y-combinator-square[_ngcontent-%COMP%]:before, .fa-yc-square[_ngcontent-%COMP%]:before{content:\\\"\\uF1D4\\\"}.fa-tencent-weibo[_ngcontent-%COMP%]:before{content:\\\"\\uF1D5\\\"}.fa-qq[_ngcontent-%COMP%]:before{content:\\\"\\uF1D6\\\"}.fa-wechat[_ngcontent-%COMP%]:before, .fa-weixin[_ngcontent-%COMP%]:before{content:\\\"\\uF1D7\\\"}.fa-paper-plane[_ngcontent-%COMP%]:before, .fa-send[_ngcontent-%COMP%]:before{content:\\\"\\uF1D8\\\"}.fa-paper-plane-o[_ngcontent-%COMP%]:before, .fa-send-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1D9\\\"}.fa-history[_ngcontent-%COMP%]:before{content:\\\"\\uF1DA\\\"}.fa-circle-thin[_ngcontent-%COMP%]:before{content:\\\"\\uF1DB\\\"}.fa-header[_ngcontent-%COMP%]:before{content:\\\"\\uF1DC\\\"}.fa-paragraph[_ngcontent-%COMP%]:before{content:\\\"\\uF1DD\\\"}.fa-sliders[_ngcontent-%COMP%]:before{content:\\\"\\uF1DE\\\"}.fa-share-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF1E0\\\"}.fa-share-alt-square[_ngcontent-%COMP%]:before{content:\\\"\\uF1E1\\\"}.fa-bomb[_ngcontent-%COMP%]:before{content:\\\"\\uF1E2\\\"}.fa-futbol-o[_ngcontent-%COMP%]:before, .fa-soccer-ball-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1E3\\\"}.fa-tty[_ngcontent-%COMP%]:before{content:\\\"\\uF1E4\\\"}.fa-binoculars[_ngcontent-%COMP%]:before{content:\\\"\\uF1E5\\\"}.fa-plug[_ngcontent-%COMP%]:before{content:\\\"\\uF1E6\\\"}.fa-slideshare[_ngcontent-%COMP%]:before{content:\\\"\\uF1E7\\\"}.fa-twitch[_ngcontent-%COMP%]:before{content:\\\"\\uF1E8\\\"}.fa-yelp[_ngcontent-%COMP%]:before{content:\\\"\\uF1E9\\\"}.fa-newspaper-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1EA\\\"}.fa-wifi[_ngcontent-%COMP%]:before{content:\\\"\\uF1EB\\\"}.fa-calculator[_ngcontent-%COMP%]:before{content:\\\"\\uF1EC\\\"}.fa-paypal[_ngcontent-%COMP%]:before{content:\\\"\\uF1ED\\\"}.fa-google-wallet[_ngcontent-%COMP%]:before{content:\\\"\\uF1EE\\\"}.fa-cc-visa[_ngcontent-%COMP%]:before{content:\\\"\\uF1F0\\\"}.fa-cc-mastercard[_ngcontent-%COMP%]:before{content:\\\"\\uF1F1\\\"}.fa-cc-discover[_ngcontent-%COMP%]:before{content:\\\"\\uF1F2\\\"}.fa-cc-amex[_ngcontent-%COMP%]:before{content:\\\"\\uF1F3\\\"}.fa-cc-paypal[_ngcontent-%COMP%]:before{content:\\\"\\uF1F4\\\"}.fa-cc-stripe[_ngcontent-%COMP%]:before{content:\\\"\\uF1F5\\\"}.fa-bell-slash[_ngcontent-%COMP%]:before{content:\\\"\\uF1F6\\\"}.fa-bell-slash-o[_ngcontent-%COMP%]:before{content:\\\"\\uF1F7\\\"}.fa-trash[_ngcontent-%COMP%]:before{content:\\\"\\uF1F8\\\"}.fa-copyright[_ngcontent-%COMP%]:before{content:\\\"\\uF1F9\\\"}.fa-at[_ngcontent-%COMP%]:before{content:\\\"\\uF1FA\\\"}.fa-eyedropper[_ngcontent-%COMP%]:before{content:\\\"\\uF1FB\\\"}.fa-paint-brush[_ngcontent-%COMP%]:before{content:\\\"\\uF1FC\\\"}.fa-birthday-cake[_ngcontent-%COMP%]:before{content:\\\"\\uF1FD\\\"}.fa-area-chart[_ngcontent-%COMP%]:before{content:\\\"\\uF1FE\\\"}.fa-pie-chart[_ngcontent-%COMP%]:before{content:\\\"\\uF200\\\"}.fa-line-chart[_ngcontent-%COMP%]:before{content:\\\"\\uF201\\\"}.fa-lastfm[_ngcontent-%COMP%]:before{content:\\\"\\uF202\\\"}.fa-lastfm-square[_ngcontent-%COMP%]:before{content:\\\"\\uF203\\\"}.fa-toggle-off[_ngcontent-%COMP%]:before{content:\\\"\\uF204\\\"}.fa-toggle-on[_ngcontent-%COMP%]:before{content:\\\"\\uF205\\\"}.fa-bicycle[_ngcontent-%COMP%]:before{content:\\\"\\uF206\\\"}.fa-bus[_ngcontent-%COMP%]:before{content:\\\"\\uF207\\\"}.fa-ioxhost[_ngcontent-%COMP%]:before{content:\\\"\\uF208\\\"}.fa-angellist[_ngcontent-%COMP%]:before{content:\\\"\\uF209\\\"}.fa-cc[_ngcontent-%COMP%]:before{content:\\\"\\uF20A\\\"}.fa-ils[_ngcontent-%COMP%]:before, .fa-shekel[_ngcontent-%COMP%]:before, .fa-sheqel[_ngcontent-%COMP%]:before{content:\\\"\\uF20B\\\"}.fa-meanpath[_ngcontent-%COMP%]:before{content:\\\"\\uF20C\\\"}.fa-buysellads[_ngcontent-%COMP%]:before{content:\\\"\\uF20D\\\"}.fa-connectdevelop[_ngcontent-%COMP%]:before{content:\\\"\\uF20E\\\"}.fa-dashcube[_ngcontent-%COMP%]:before{content:\\\"\\uF210\\\"}.fa-forumbee[_ngcontent-%COMP%]:before{content:\\\"\\uF211\\\"}.fa-leanpub[_ngcontent-%COMP%]:before{content:\\\"\\uF212\\\"}.fa-sellsy[_ngcontent-%COMP%]:before{content:\\\"\\uF213\\\"}.fa-shirtsinbulk[_ngcontent-%COMP%]:before{content:\\\"\\uF214\\\"}.fa-simplybuilt[_ngcontent-%COMP%]:before{content:\\\"\\uF215\\\"}.fa-skyatlas[_ngcontent-%COMP%]:before{content:\\\"\\uF216\\\"}.fa-cart-plus[_ngcontent-%COMP%]:before{content:\\\"\\uF217\\\"}.fa-cart-arrow-down[_ngcontent-%COMP%]:before{content:\\\"\\uF218\\\"}.fa-diamond[_ngcontent-%COMP%]:before{content:\\\"\\uF219\\\"}.fa-ship[_ngcontent-%COMP%]:before{content:\\\"\\uF21A\\\"}.fa-user-secret[_ngcontent-%COMP%]:before{content:\\\"\\uF21B\\\"}.fa-motorcycle[_ngcontent-%COMP%]:before{content:\\\"\\uF21C\\\"}.fa-street-view[_ngcontent-%COMP%]:before{content:\\\"\\uF21D\\\"}.fa-heartbeat[_ngcontent-%COMP%]:before{content:\\\"\\uF21E\\\"}.fa-venus[_ngcontent-%COMP%]:before{content:\\\"\\uF221\\\"}.fa-mars[_ngcontent-%COMP%]:before{content:\\\"\\uF222\\\"}.fa-mercury[_ngcontent-%COMP%]:before{content:\\\"\\uF223\\\"}.fa-intersex[_ngcontent-%COMP%]:before, .fa-transgender[_ngcontent-%COMP%]:before{content:\\\"\\uF224\\\"}.fa-transgender-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF225\\\"}.fa-venus-double[_ngcontent-%COMP%]:before{content:\\\"\\uF226\\\"}.fa-mars-double[_ngcontent-%COMP%]:before{content:\\\"\\uF227\\\"}.fa-venus-mars[_ngcontent-%COMP%]:before{content:\\\"\\uF228\\\"}.fa-mars-stroke[_ngcontent-%COMP%]:before{content:\\\"\\uF229\\\"}.fa-mars-stroke-v[_ngcontent-%COMP%]:before{content:\\\"\\uF22A\\\"}.fa-mars-stroke-h[_ngcontent-%COMP%]:before{content:\\\"\\uF22B\\\"}.fa-neuter[_ngcontent-%COMP%]:before{content:\\\"\\uF22C\\\"}.fa-genderless[_ngcontent-%COMP%]:before{content:\\\"\\uF22D\\\"}.fa-facebook-official[_ngcontent-%COMP%]:before{content:\\\"\\uF230\\\"}.fa-pinterest-p[_ngcontent-%COMP%]:before{content:\\\"\\uF231\\\"}.fa-whatsapp[_ngcontent-%COMP%]:before{content:\\\"\\uF232\\\"}.fa-server[_ngcontent-%COMP%]:before{content:\\\"\\uF233\\\"}.fa-user-plus[_ngcontent-%COMP%]:before{content:\\\"\\uF234\\\"}.fa-user-times[_ngcontent-%COMP%]:before{content:\\\"\\uF235\\\"}.fa-bed[_ngcontent-%COMP%]:before, .fa-hotel[_ngcontent-%COMP%]:before{content:\\\"\\uF236\\\"}.fa-viacoin[_ngcontent-%COMP%]:before{content:\\\"\\uF237\\\"}.fa-train[_ngcontent-%COMP%]:before{content:\\\"\\uF238\\\"}.fa-subway[_ngcontent-%COMP%]:before{content:\\\"\\uF239\\\"}.fa-medium[_ngcontent-%COMP%]:before{content:\\\"\\uF23A\\\"}.fa-y-combinator[_ngcontent-%COMP%]:before, .fa-yc[_ngcontent-%COMP%]:before{content:\\\"\\uF23B\\\"}.fa-optin-monster[_ngcontent-%COMP%]:before{content:\\\"\\uF23C\\\"}.fa-opencart[_ngcontent-%COMP%]:before{content:\\\"\\uF23D\\\"}.fa-expeditedssl[_ngcontent-%COMP%]:before{content:\\\"\\uF23E\\\"}.fa-battery-4[_ngcontent-%COMP%]:before, .fa-battery-full[_ngcontent-%COMP%]:before, .fa-battery[_ngcontent-%COMP%]:before{content:\\\"\\uF240\\\"}.fa-battery-3[_ngcontent-%COMP%]:before, .fa-battery-three-quarters[_ngcontent-%COMP%]:before{content:\\\"\\uF241\\\"}.fa-battery-2[_ngcontent-%COMP%]:before, .fa-battery-half[_ngcontent-%COMP%]:before{content:\\\"\\uF242\\\"}.fa-battery-1[_ngcontent-%COMP%]:before, .fa-battery-quarter[_ngcontent-%COMP%]:before{content:\\\"\\uF243\\\"}.fa-battery-0[_ngcontent-%COMP%]:before, .fa-battery-empty[_ngcontent-%COMP%]:before{content:\\\"\\uF244\\\"}.fa-mouse-pointer[_ngcontent-%COMP%]:before{content:\\\"\\uF245\\\"}.fa-i-cursor[_ngcontent-%COMP%]:before{content:\\\"\\uF246\\\"}.fa-object-group[_ngcontent-%COMP%]:before{content:\\\"\\uF247\\\"}.fa-object-ungroup[_ngcontent-%COMP%]:before{content:\\\"\\uF248\\\"}.fa-sticky-note[_ngcontent-%COMP%]:before{content:\\\"\\uF249\\\"}.fa-sticky-note-o[_ngcontent-%COMP%]:before{content:\\\"\\uF24A\\\"}.fa-cc-jcb[_ngcontent-%COMP%]:before{content:\\\"\\uF24B\\\"}.fa-cc-diners-club[_ngcontent-%COMP%]:before{content:\\\"\\uF24C\\\"}.fa-clone[_ngcontent-%COMP%]:before{content:\\\"\\uF24D\\\"}.fa-balance-scale[_ngcontent-%COMP%]:before{content:\\\"\\uF24E\\\"}.fa-hourglass-o[_ngcontent-%COMP%]:before{content:\\\"\\uF250\\\"}.fa-hourglass-1[_ngcontent-%COMP%]:before, .fa-hourglass-start[_ngcontent-%COMP%]:before{content:\\\"\\uF251\\\"}.fa-hourglass-2[_ngcontent-%COMP%]:before, .fa-hourglass-half[_ngcontent-%COMP%]:before{content:\\\"\\uF252\\\"}.fa-hourglass-3[_ngcontent-%COMP%]:before, .fa-hourglass-end[_ngcontent-%COMP%]:before{content:\\\"\\uF253\\\"}.fa-hourglass[_ngcontent-%COMP%]:before{content:\\\"\\uF254\\\"}.fa-hand-grab-o[_ngcontent-%COMP%]:before, .fa-hand-rock-o[_ngcontent-%COMP%]:before{content:\\\"\\uF255\\\"}.fa-hand-paper-o[_ngcontent-%COMP%]:before, .fa-hand-stop-o[_ngcontent-%COMP%]:before{content:\\\"\\uF256\\\"}.fa-hand-scissors-o[_ngcontent-%COMP%]:before{content:\\\"\\uF257\\\"}.fa-hand-lizard-o[_ngcontent-%COMP%]:before{content:\\\"\\uF258\\\"}.fa-hand-spock-o[_ngcontent-%COMP%]:before{content:\\\"\\uF259\\\"}.fa-hand-pointer-o[_ngcontent-%COMP%]:before{content:\\\"\\uF25A\\\"}.fa-hand-peace-o[_ngcontent-%COMP%]:before{content:\\\"\\uF25B\\\"}.fa-trademark[_ngcontent-%COMP%]:before{content:\\\"\\uF25C\\\"}.fa-registered[_ngcontent-%COMP%]:before{content:\\\"\\uF25D\\\"}.fa-creative-commons[_ngcontent-%COMP%]:before{content:\\\"\\uF25E\\\"}.fa-gg[_ngcontent-%COMP%]:before{content:\\\"\\uF260\\\"}.fa-gg-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF261\\\"}.fa-tripadvisor[_ngcontent-%COMP%]:before{content:\\\"\\uF262\\\"}.fa-odnoklassniki[_ngcontent-%COMP%]:before{content:\\\"\\uF263\\\"}.fa-odnoklassniki-square[_ngcontent-%COMP%]:before{content:\\\"\\uF264\\\"}.fa-get-pocket[_ngcontent-%COMP%]:before{content:\\\"\\uF265\\\"}.fa-wikipedia-w[_ngcontent-%COMP%]:before{content:\\\"\\uF266\\\"}.fa-safari[_ngcontent-%COMP%]:before{content:\\\"\\uF267\\\"}.fa-chrome[_ngcontent-%COMP%]:before{content:\\\"\\uF268\\\"}.fa-firefox[_ngcontent-%COMP%]:before{content:\\\"\\uF269\\\"}.fa-opera[_ngcontent-%COMP%]:before{content:\\\"\\uF26A\\\"}.fa-internet-explorer[_ngcontent-%COMP%]:before{content:\\\"\\uF26B\\\"}.fa-television[_ngcontent-%COMP%]:before, .fa-tv[_ngcontent-%COMP%]:before{content:\\\"\\uF26C\\\"}.fa-contao[_ngcontent-%COMP%]:before{content:\\\"\\uF26D\\\"}.fa-500px[_ngcontent-%COMP%]:before{content:\\\"\\uF26E\\\"}.fa-amazon[_ngcontent-%COMP%]:before{content:\\\"\\uF270\\\"}.fa-calendar-plus-o[_ngcontent-%COMP%]:before{content:\\\"\\uF271\\\"}.fa-calendar-minus-o[_ngcontent-%COMP%]:before{content:\\\"\\uF272\\\"}.fa-calendar-times-o[_ngcontent-%COMP%]:before{content:\\\"\\uF273\\\"}.fa-calendar-check-o[_ngcontent-%COMP%]:before{content:\\\"\\uF274\\\"}.fa-industry[_ngcontent-%COMP%]:before{content:\\\"\\uF275\\\"}.fa-map-pin[_ngcontent-%COMP%]:before{content:\\\"\\uF276\\\"}.fa-map-signs[_ngcontent-%COMP%]:before{content:\\\"\\uF277\\\"}.fa-map-o[_ngcontent-%COMP%]:before{content:\\\"\\uF278\\\"}.fa-map[_ngcontent-%COMP%]:before{content:\\\"\\uF279\\\"}.fa-commenting[_ngcontent-%COMP%]:before{content:\\\"\\uF27A\\\"}.fa-commenting-o[_ngcontent-%COMP%]:before{content:\\\"\\uF27B\\\"}.fa-houzz[_ngcontent-%COMP%]:before{content:\\\"\\uF27C\\\"}.fa-vimeo[_ngcontent-%COMP%]:before{content:\\\"\\uF27D\\\"}.fa-black-tie[_ngcontent-%COMP%]:before{content:\\\"\\uF27E\\\"}.fa-fonticons[_ngcontent-%COMP%]:before{content:\\\"\\uF280\\\"}.fa-reddit-alien[_ngcontent-%COMP%]:before{content:\\\"\\uF281\\\"}.fa-edge[_ngcontent-%COMP%]:before{content:\\\"\\uF282\\\"}.fa-credit-card-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF283\\\"}.fa-codiepie[_ngcontent-%COMP%]:before{content:\\\"\\uF284\\\"}.fa-modx[_ngcontent-%COMP%]:before{content:\\\"\\uF285\\\"}.fa-fort-awesome[_ngcontent-%COMP%]:before{content:\\\"\\uF286\\\"}.fa-usb[_ngcontent-%COMP%]:before{content:\\\"\\uF287\\\"}.fa-product-hunt[_ngcontent-%COMP%]:before{content:\\\"\\uF288\\\"}.fa-mixcloud[_ngcontent-%COMP%]:before{content:\\\"\\uF289\\\"}.fa-scribd[_ngcontent-%COMP%]:before{content:\\\"\\uF28A\\\"}.fa-pause-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF28B\\\"}.fa-pause-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF28C\\\"}.fa-stop-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF28D\\\"}.fa-stop-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF28E\\\"}.fa-shopping-bag[_ngcontent-%COMP%]:before{content:\\\"\\uF290\\\"}.fa-shopping-basket[_ngcontent-%COMP%]:before{content:\\\"\\uF291\\\"}.fa-hashtag[_ngcontent-%COMP%]:before{content:\\\"\\uF292\\\"}.fa-bluetooth[_ngcontent-%COMP%]:before{content:\\\"\\uF293\\\"}.fa-bluetooth-b[_ngcontent-%COMP%]:before{content:\\\"\\uF294\\\"}.fa-percent[_ngcontent-%COMP%]:before{content:\\\"\\uF295\\\"}.fa-gitlab[_ngcontent-%COMP%]:before{content:\\\"\\uF296\\\"}.fa-wpbeginner[_ngcontent-%COMP%]:before{content:\\\"\\uF297\\\"}.fa-wpforms[_ngcontent-%COMP%]:before{content:\\\"\\uF298\\\"}.fa-envira[_ngcontent-%COMP%]:before{content:\\\"\\uF299\\\"}.fa-universal-access[_ngcontent-%COMP%]:before{content:\\\"\\uF29A\\\"}.fa-wheelchair-alt[_ngcontent-%COMP%]:before{content:\\\"\\uF29B\\\"}.fa-question-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF29C\\\"}.fa-blind[_ngcontent-%COMP%]:before{content:\\\"\\uF29D\\\"}.fa-audio-description[_ngcontent-%COMP%]:before{content:\\\"\\uF29E\\\"}.fa-volume-control-phone[_ngcontent-%COMP%]:before{content:\\\"\\uF2A0\\\"}.fa-braille[_ngcontent-%COMP%]:before{content:\\\"\\uF2A1\\\"}.fa-assistive-listening-systems[_ngcontent-%COMP%]:before{content:\\\"\\uF2A2\\\"}.fa-american-sign-language-interpreting[_ngcontent-%COMP%]:before, .fa-asl-interpreting[_ngcontent-%COMP%]:before{content:\\\"\\uF2A3\\\"}.fa-deaf[_ngcontent-%COMP%]:before, .fa-deafness[_ngcontent-%COMP%]:before, .fa-hard-of-hearing[_ngcontent-%COMP%]:before{content:\\\"\\uF2A4\\\"}.fa-glide[_ngcontent-%COMP%]:before{content:\\\"\\uF2A5\\\"}.fa-glide-g[_ngcontent-%COMP%]:before{content:\\\"\\uF2A6\\\"}.fa-sign-language[_ngcontent-%COMP%]:before, .fa-signing[_ngcontent-%COMP%]:before{content:\\\"\\uF2A7\\\"}.fa-low-vision[_ngcontent-%COMP%]:before{content:\\\"\\uF2A8\\\"}.fa-viadeo[_ngcontent-%COMP%]:before{content:\\\"\\uF2A9\\\"}.fa-viadeo-square[_ngcontent-%COMP%]:before{content:\\\"\\uF2AA\\\"}.fa-snapchat[_ngcontent-%COMP%]:before{content:\\\"\\uF2AB\\\"}.fa-snapchat-ghost[_ngcontent-%COMP%]:before{content:\\\"\\uF2AC\\\"}.fa-snapchat-square[_ngcontent-%COMP%]:before{content:\\\"\\uF2AD\\\"}.fa-pied-piper[_ngcontent-%COMP%]:before{content:\\\"\\uF2AE\\\"}.fa-first-order[_ngcontent-%COMP%]:before{content:\\\"\\uF2B0\\\"}.fa-yoast[_ngcontent-%COMP%]:before{content:\\\"\\uF2B1\\\"}.fa-themeisle[_ngcontent-%COMP%]:before{content:\\\"\\uF2B2\\\"}.fa-google-plus-circle[_ngcontent-%COMP%]:before, .fa-google-plus-official[_ngcontent-%COMP%]:before{content:\\\"\\uF2B3\\\"}.fa-fa[_ngcontent-%COMP%]:before, .fa-font-awesome[_ngcontent-%COMP%]:before{content:\\\"\\uF2B4\\\"}.fa-handshake-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2B5\\\"}.fa-envelope-open[_ngcontent-%COMP%]:before{content:\\\"\\uF2B6\\\"}.fa-envelope-open-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2B7\\\"}.fa-linode[_ngcontent-%COMP%]:before{content:\\\"\\uF2B8\\\"}.fa-address-book[_ngcontent-%COMP%]:before{content:\\\"\\uF2B9\\\"}.fa-address-book-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2BA\\\"}.fa-address-card[_ngcontent-%COMP%]:before, .fa-vcard[_ngcontent-%COMP%]:before{content:\\\"\\uF2BB\\\"}.fa-address-card-o[_ngcontent-%COMP%]:before, .fa-vcard-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2BC\\\"}.fa-user-circle[_ngcontent-%COMP%]:before{content:\\\"\\uF2BD\\\"}.fa-user-circle-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2BE\\\"}.fa-user-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2C0\\\"}.fa-id-badge[_ngcontent-%COMP%]:before{content:\\\"\\uF2C1\\\"}.fa-drivers-license[_ngcontent-%COMP%]:before, .fa-id-card[_ngcontent-%COMP%]:before{content:\\\"\\uF2C2\\\"}.fa-drivers-license-o[_ngcontent-%COMP%]:before, .fa-id-card-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2C3\\\"}.fa-quora[_ngcontent-%COMP%]:before{content:\\\"\\uF2C4\\\"}.fa-free-code-camp[_ngcontent-%COMP%]:before{content:\\\"\\uF2C5\\\"}.fa-telegram[_ngcontent-%COMP%]:before{content:\\\"\\uF2C6\\\"}.fa-thermometer-4[_ngcontent-%COMP%]:before, .fa-thermometer-full[_ngcontent-%COMP%]:before, .fa-thermometer[_ngcontent-%COMP%]:before{content:\\\"\\uF2C7\\\"}.fa-thermometer-3[_ngcontent-%COMP%]:before, .fa-thermometer-three-quarters[_ngcontent-%COMP%]:before{content:\\\"\\uF2C8\\\"}.fa-thermometer-2[_ngcontent-%COMP%]:before, .fa-thermometer-half[_ngcontent-%COMP%]:before{content:\\\"\\uF2C9\\\"}.fa-thermometer-1[_ngcontent-%COMP%]:before, .fa-thermometer-quarter[_ngcontent-%COMP%]:before{content:\\\"\\uF2CA\\\"}.fa-thermometer-0[_ngcontent-%COMP%]:before, .fa-thermometer-empty[_ngcontent-%COMP%]:before{content:\\\"\\uF2CB\\\"}.fa-shower[_ngcontent-%COMP%]:before{content:\\\"\\uF2CC\\\"}.fa-bath[_ngcontent-%COMP%]:before, .fa-bathtub[_ngcontent-%COMP%]:before, .fa-s15[_ngcontent-%COMP%]:before{content:\\\"\\uF2CD\\\"}.fa-podcast[_ngcontent-%COMP%]:before{content:\\\"\\uF2CE\\\"}.fa-window-maximize[_ngcontent-%COMP%]:before{content:\\\"\\uF2D0\\\"}.fa-window-minimize[_ngcontent-%COMP%]:before{content:\\\"\\uF2D1\\\"}.fa-window-restore[_ngcontent-%COMP%]:before{content:\\\"\\uF2D2\\\"}.fa-times-rectangle[_ngcontent-%COMP%]:before, .fa-window-close[_ngcontent-%COMP%]:before{content:\\\"\\uF2D3\\\"}.fa-times-rectangle-o[_ngcontent-%COMP%]:before, .fa-window-close-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2D4\\\"}.fa-bandcamp[_ngcontent-%COMP%]:before{content:\\\"\\uF2D5\\\"}.fa-grav[_ngcontent-%COMP%]:before{content:\\\"\\uF2D6\\\"}.fa-etsy[_ngcontent-%COMP%]:before{content:\\\"\\uF2D7\\\"}.fa-imdb[_ngcontent-%COMP%]:before{content:\\\"\\uF2D8\\\"}.fa-ravelry[_ngcontent-%COMP%]:before{content:\\\"\\uF2D9\\\"}.fa-eercast[_ngcontent-%COMP%]:before{content:\\\"\\uF2DA\\\"}.fa-microchip[_ngcontent-%COMP%]:before{content:\\\"\\uF2DB\\\"}.fa-snowflake-o[_ngcontent-%COMP%]:before{content:\\\"\\uF2DC\\\"}.fa-superpowers[_ngcontent-%COMP%]:before{content:\\\"\\uF2DD\\\"}.fa-wpexplorer[_ngcontent-%COMP%]:before{content:\\\"\\uF2DE\\\"}.fa-meetup[_ngcontent-%COMP%]:before{content:\\\"\\uF2E0\\\"}.sr-only[_ngcontent-%COMP%]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable[_ngcontent-%COMP%]:active, .sr-only-focusable[_ngcontent-%COMP%]:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}a[_ngcontent-%COMP%]{cursor:pointer}.angular-editor-textarea[_ngcontent-%COMP%]{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea[_ngcontent-%COMP%]:after{content:\\\"\\\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:rgba(255,255,255,.5)}.angular-editor-toolbar[_ngcontent-%COMP%]{font:100 .8rem/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;padding:.2rem;border:1px solid #ddd}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%]{display:none;margin-right:5px;vertical-align:baseline}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;min-width:2rem;float:left}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button.focus[_ngcontent-%COMP%], .angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]:focus{outline:0}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]:disabled > .color-label[_ngcontent-%COMP%]{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]:disabled > .color-label.background[_ngcontent-%COMP%], .angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button[_ngcontent-%COMP%]:disabled > .color-label.foreground[_ngcontent-%COMP%] [_ngcontent-%COMP%]:after{background:#555}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button.active[_ngcontent-%COMP%]{background:#fff5b9}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .angular-editor-button.active[_ngcontent-%COMP%]:hover{background-color:#fffa98}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid rgba(255,255,255,0);border-radius:5px;outline:0;padding:.4rem;cursor:pointer}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%]{display:inline-block;width:90px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%]:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font[_ngcontent-%COMP%]{display:inline-block;width:90px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font[_ngcontent-%COMP%]:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%]{display:inline-block;width:50px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%]:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-custom-style[_ngcontent-%COMP%]{display:inline-block;width:90px}@supports not (-moz-appearance:none){.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] optgroup[_ngcontent-%COMP%]{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] option[_ngcontent-%COMP%]{border:1px solid;background-color:#fff}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .default[_ngcontent-%COMP%]{font-size:16px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .h1[_ngcontent-%COMP%]{font-size:24px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .h2[_ngcontent-%COMP%]{font-size:20px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .h3[_ngcontent-%COMP%]{font-size:16px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .h4[_ngcontent-%COMP%]{font-size:15px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .h5[_ngcontent-%COMP%]{font-size:14px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .h6[_ngcontent-%COMP%]{font-size:13px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .div[_ngcontent-%COMP%], .angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-heading[_ngcontent-%COMP%] .pre[_ngcontent-%COMP%]{font-size:12px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font[_ngcontent-%COMP%] optgroup[_ngcontent-%COMP%]{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font[_ngcontent-%COMP%] option[_ngcontent-%COMP%]{border:1px solid;background-color:#fff}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] optgroup[_ngcontent-%COMP%]{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] option[_ngcontent-%COMP%]{border:1px solid;background-color:#fff}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size1[_ngcontent-%COMP%]{font-size:10px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size2[_ngcontent-%COMP%]{font-size:12px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size3[_ngcontent-%COMP%]{font-size:14px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size4[_ngcontent-%COMP%]{font-size:16px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size5[_ngcontent-%COMP%]{font-size:18px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size6[_ngcontent-%COMP%]{font-size:20px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-font-size[_ngcontent-%COMP%] .size7[_ngcontent-%COMP%]{font-size:22px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-custom-style[_ngcontent-%COMP%] optgroup[_ngcontent-%COMP%]{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-custom-style[_ngcontent-%COMP%] option[_ngcontent-%COMP%]{border:1px solid;background-color:#fff}}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-custom-style[_ngcontent-%COMP%]:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .select-custom-style[_ngcontent-%COMP%]:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .color-label[_ngcontent-%COMP%]{position:relative;cursor:pointer}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .background[_ngcontent-%COMP%]{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%] .foreground[_ngcontent-%COMP%] [_ngcontent-%COMP%]:after{position:absolute;content:\\\"\\\";left:-1px;top:auto;bottom:-3px;right:auto;width:15px;height:2px;z-index:0;background:#1b1b1b}.angular-editor-toolbar[_ngcontent-%COMP%] .angular-editor-toolbar-set[_ngcontent-%COMP%]:not([style*=\\\"display:none\\\"]):not([style*=\\\"display: none\\\"]){display:inline-block}.angular-editor[_ngcontent-%COMP%]{position:relative}.angular-editor[_ngcontent-%COMP%] [contenteditable=true]:empty:before{content:attr(placeholder);color:#868e96;opacity:1}.angular-editor[_ngcontent-%COMP%] .angular-editor-wrapper[_ngcontent-%COMP%]{position:relative}.angular-editor[_ngcontent-%COMP%] .angular-editor-wrapper[_ngcontent-%COMP%] .angular-editor-textarea[_ngcontent-%COMP%]{min-height:5rem;padding:.5rem .8rem 1rem;border:1px solid #ddd;background-color:transparent;overflow-x:hidden;overflow-y:auto;position:relative}.angular-editor[_ngcontent-%COMP%] .angular-editor-wrapper[_ngcontent-%COMP%] .angular-editor-textarea[_ngcontent-%COMP%] blockquote{margin-left:1rem;border-left:.2em solid #dfe2e5;padding-left:.5rem}.angular-editor[_ngcontent-%COMP%] .angular-editor-wrapper[_ngcontent-%COMP%] p{margin-bottom:0}.angular-editor[_ngcontent-%COMP%] .angular-editor-wrapper[_ngcontent-%COMP%] .angular-editor-placeholder[_ngcontent-%COMP%]{display:none;position:absolute;top:0;padding:.5rem .8rem 1rem .9rem;color:#6c757d;opacity:.75}.angular-editor[_ngcontent-%COMP%] .angular-editor-wrapper.show-placeholder[_ngcontent-%COMP%] .angular-editor-placeholder[_ngcontent-%COMP%]{display:block}.angular-editor[_ngcontent-%COMP%] .angular-editor-wrapper.disabled[_ngcontent-%COMP%]{cursor:not-allowed;opacity:.5;pointer-events:none}\"] });\n/** @nocollapse */\nAngularEditorComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: AngularEditorService },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: DomSanitizer },\n { type: ChangeDetectorRef },\n { type: String, decorators: [{ type: Attribute, args: ['tabindex',] }] },\n { type: undefined, decorators: [{ type: Attribute, args: ['autofocus',] }] }\n];\nAngularEditorComponent.propDecorators = {\n id: [{ type: Input }],\n config: [{ type: Input }],\n placeholder: [{ type: Input }],\n tabIndex: [{ type: Input }],\n html: [{ type: Output }],\n textArea: [{ type: ViewChild, args: ['editor', { static: true },] }],\n editorWrapper: [{ type: ViewChild, args: ['editorWrapper', { static: true },] }],\n editorToolbar: [{ type: ViewChild, args: ['editorToolbar', { static: false },] }],\n viewMode: [{ type: Output }],\n blurEvent: [{ type: Output, args: ['blur',] }],\n focusEvent: [{ type: Output, args: ['focus',] }],\n tabindex: [{ type: HostBinding, args: ['attr.tabindex',] }],\n onFocus: [{ type: HostListener, args: ['focus',] }]\n};\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AngularEditorComponent, [{\n type: Component,\n args: [{\n selector: 'angular-editor',\n template: \"
\\n \\n\\n
\\n
\\n
\\n {{ placeholder || config['placeholder'] }}\\n
\\n \\n
\\n\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(( /**\n * @return {?}\n */() => AngularEditorComponent)),\n multi: true\n },\n AngularEditorService\n ],\n styles: [\"@charset \\\"UTF-8\\\";/*!\\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\\n */@font-face{font-family:FontAwesome;src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?v=4.7.0);src:url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format(\\\"embedded-opentype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff2?v=4.7.0) format(\\\"woff2\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.woff?v=4.7.0) format(\\\"woff\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.ttf?v=4.7.0) format(\\\"truetype\\\"),url(https://netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format(\\\"svg\\\");font-weight:400;font-style:normal}.fa{display:inline-block;font:14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:2s linear infinite fa-spin;animation:2s linear infinite fa-spin}.fa-pulse{-webkit-animation:1s steps(8) infinite fa-spin;animation:1s steps(8) infinite fa-spin}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:\\\"\\uF000\\\"}.fa-music:before{content:\\\"\\uF001\\\"}.fa-search:before{content:\\\"\\uF002\\\"}.fa-envelope-o:before{content:\\\"\\uF003\\\"}.fa-heart:before{content:\\\"\\uF004\\\"}.fa-star:before{content:\\\"\\uF005\\\"}.fa-star-o:before{content:\\\"\\uF006\\\"}.fa-user:before{content:\\\"\\uF007\\\"}.fa-film:before{content:\\\"\\uF008\\\"}.fa-th-large:before{content:\\\"\\uF009\\\"}.fa-th:before{content:\\\"\\uF00A\\\"}.fa-th-list:before{content:\\\"\\uF00B\\\"}.fa-check:before{content:\\\"\\uF00C\\\"}.fa-close:before,.fa-remove:before,.fa-times:before{content:\\\"\\uF00D\\\"}.fa-search-plus:before{content:\\\"\\uF00E\\\"}.fa-search-minus:before{content:\\\"\\uF010\\\"}.fa-power-off:before{content:\\\"\\uF011\\\"}.fa-signal:before{content:\\\"\\uF012\\\"}.fa-cog:before,.fa-gear:before{content:\\\"\\uF013\\\"}.fa-trash-o:before{content:\\\"\\uF014\\\"}.fa-home:before{content:\\\"\\uF015\\\"}.fa-file-o:before{content:\\\"\\uF016\\\"}.fa-clock-o:before{content:\\\"\\uF017\\\"}.fa-road:before{content:\\\"\\uF018\\\"}.fa-download:before{content:\\\"\\uF019\\\"}.fa-arrow-circle-o-down:before{content:\\\"\\uF01A\\\"}.fa-arrow-circle-o-up:before{content:\\\"\\uF01B\\\"}.fa-inbox:before{content:\\\"\\uF01C\\\"}.fa-play-circle-o:before{content:\\\"\\uF01D\\\"}.fa-repeat:before,.fa-rotate-right:before{content:\\\"\\uF01E\\\"}.fa-refresh:before{content:\\\"\\uF021\\\"}.fa-list-alt:before{content:\\\"\\uF022\\\"}.fa-lock:before{content:\\\"\\uF023\\\"}.fa-flag:before{content:\\\"\\uF024\\\"}.fa-headphones:before{content:\\\"\\uF025\\\"}.fa-volume-off:before{content:\\\"\\uF026\\\"}.fa-volume-down:before{content:\\\"\\uF027\\\"}.fa-volume-up:before{content:\\\"\\uF028\\\"}.fa-qrcode:before{content:\\\"\\uF029\\\"}.fa-barcode:before{content:\\\"\\uF02A\\\"}.fa-tag:before{content:\\\"\\uF02B\\\"}.fa-tags:before{content:\\\"\\uF02C\\\"}.fa-book:before{content:\\\"\\uF02D\\\"}.fa-bookmark:before{content:\\\"\\uF02E\\\"}.fa-print:before{content:\\\"\\uF02F\\\"}.fa-camera:before{content:\\\"\\uF030\\\"}.fa-font:before{content:\\\"\\uF031\\\"}.fa-bold:before{content:\\\"\\uF032\\\"}.fa-italic:before{content:\\\"\\uF033\\\"}.fa-text-height:before{content:\\\"\\uF034\\\"}.fa-text-width:before{content:\\\"\\uF035\\\"}.fa-align-left:before{content:\\\"\\uF036\\\"}.fa-align-center:before{content:\\\"\\uF037\\\"}.fa-align-right:before{content:\\\"\\uF038\\\"}.fa-align-justify:before{content:\\\"\\uF039\\\"}.fa-list:before{content:\\\"\\uF03A\\\"}.fa-dedent:before,.fa-outdent:before{content:\\\"\\uF03B\\\"}.fa-indent:before{content:\\\"\\uF03C\\\"}.fa-video-camera:before{content:\\\"\\uF03D\\\"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:\\\"\\uF03E\\\"}.fa-pencil:before{content:\\\"\\uF040\\\"}.fa-map-marker:before{content:\\\"\\uF041\\\"}.fa-adjust:before{content:\\\"\\uF042\\\"}.fa-tint:before{content:\\\"\\uF043\\\"}.fa-edit:before,.fa-pencil-square-o:before{content:\\\"\\uF044\\\"}.fa-share-square-o:before{content:\\\"\\uF045\\\"}.fa-check-square-o:before{content:\\\"\\uF046\\\"}.fa-arrows:before{content:\\\"\\uF047\\\"}.fa-step-backward:before{content:\\\"\\uF048\\\"}.fa-fast-backward:before{content:\\\"\\uF049\\\"}.fa-backward:before{content:\\\"\\uF04A\\\"}.fa-play:before{content:\\\"\\uF04B\\\"}.fa-pause:before{content:\\\"\\uF04C\\\"}.fa-stop:before{content:\\\"\\uF04D\\\"}.fa-forward:before{content:\\\"\\uF04E\\\"}.fa-fast-forward:before{content:\\\"\\uF050\\\"}.fa-step-forward:before{content:\\\"\\uF051\\\"}.fa-eject:before{content:\\\"\\uF052\\\"}.fa-chevron-left:before{content:\\\"\\uF053\\\"}.fa-chevron-right:before{content:\\\"\\uF054\\\"}.fa-plus-circle:before{content:\\\"\\uF055\\\"}.fa-minus-circle:before{content:\\\"\\uF056\\\"}.fa-times-circle:before{content:\\\"\\uF057\\\"}.fa-check-circle:before{content:\\\"\\uF058\\\"}.fa-question-circle:before{content:\\\"\\uF059\\\"}.fa-info-circle:before{content:\\\"\\uF05A\\\"}.fa-crosshairs:before{content:\\\"\\uF05B\\\"}.fa-times-circle-o:before{content:\\\"\\uF05C\\\"}.fa-check-circle-o:before{content:\\\"\\uF05D\\\"}.fa-ban:before{content:\\\"\\uF05E\\\"}.fa-arrow-left:before{content:\\\"\\uF060\\\"}.fa-arrow-right:before{content:\\\"\\uF061\\\"}.fa-arrow-up:before{content:\\\"\\uF062\\\"}.fa-arrow-down:before{content:\\\"\\uF063\\\"}.fa-mail-forward:before,.fa-share:before{content:\\\"\\uF064\\\"}.fa-expand:before{content:\\\"\\uF065\\\"}.fa-compress:before{content:\\\"\\uF066\\\"}.fa-plus:before{content:\\\"\\uF067\\\"}.fa-minus:before{content:\\\"\\uF068\\\"}.fa-asterisk:before{content:\\\"\\uF069\\\"}.fa-exclamation-circle:before{content:\\\"\\uF06A\\\"}.fa-gift:before{content:\\\"\\uF06B\\\"}.fa-leaf:before{content:\\\"\\uF06C\\\"}.fa-fire:before{content:\\\"\\uF06D\\\"}.fa-eye:before{content:\\\"\\uF06E\\\"}.fa-eye-slash:before{content:\\\"\\uF070\\\"}.fa-exclamation-triangle:before,.fa-warning:before{content:\\\"\\uF071\\\"}.fa-plane:before{content:\\\"\\uF072\\\"}.fa-calendar:before{content:\\\"\\uF073\\\"}.fa-random:before{content:\\\"\\uF074\\\"}.fa-comment:before{content:\\\"\\uF075\\\"}.fa-magnet:before{content:\\\"\\uF076\\\"}.fa-chevron-up:before{content:\\\"\\uF077\\\"}.fa-chevron-down:before{content:\\\"\\uF078\\\"}.fa-retweet:before{content:\\\"\\uF079\\\"}.fa-shopping-cart:before{content:\\\"\\uF07A\\\"}.fa-folder:before{content:\\\"\\uF07B\\\"}.fa-folder-open:before{content:\\\"\\uF07C\\\"}.fa-arrows-v:before{content:\\\"\\uF07D\\\"}.fa-arrows-h:before{content:\\\"\\uF07E\\\"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:\\\"\\uF080\\\"}.fa-twitter-square:before{content:\\\"\\uF081\\\"}.fa-facebook-square:before{content:\\\"\\uF082\\\"}.fa-camera-retro:before{content:\\\"\\uF083\\\"}.fa-key:before{content:\\\"\\uF084\\\"}.fa-cogs:before,.fa-gears:before{content:\\\"\\uF085\\\"}.fa-comments:before{content:\\\"\\uF086\\\"}.fa-thumbs-o-up:before{content:\\\"\\uF087\\\"}.fa-thumbs-o-down:before{content:\\\"\\uF088\\\"}.fa-star-half:before{content:\\\"\\uF089\\\"}.fa-heart-o:before{content:\\\"\\uF08A\\\"}.fa-sign-out:before{content:\\\"\\uF08B\\\"}.fa-linkedin-square:before{content:\\\"\\uF08C\\\"}.fa-thumb-tack:before{content:\\\"\\uF08D\\\"}.fa-external-link:before{content:\\\"\\uF08E\\\"}.fa-sign-in:before{content:\\\"\\uF090\\\"}.fa-trophy:before{content:\\\"\\uF091\\\"}.fa-github-square:before{content:\\\"\\uF092\\\"}.fa-upload:before{content:\\\"\\uF093\\\"}.fa-lemon-o:before{content:\\\"\\uF094\\\"}.fa-phone:before{content:\\\"\\uF095\\\"}.fa-square-o:before{content:\\\"\\uF096\\\"}.fa-bookmark-o:before{content:\\\"\\uF097\\\"}.fa-phone-square:before{content:\\\"\\uF098\\\"}.fa-twitter:before{content:\\\"\\uF099\\\"}.fa-facebook-f:before,.fa-facebook:before{content:\\\"\\uF09A\\\"}.fa-github:before{content:\\\"\\uF09B\\\"}.fa-unlock:before{content:\\\"\\uF09C\\\"}.fa-credit-card:before{content:\\\"\\uF09D\\\"}.fa-feed:before,.fa-rss:before{content:\\\"\\uF09E\\\"}.fa-hdd-o:before{content:\\\"\\uF0A0\\\"}.fa-bullhorn:before{content:\\\"\\uF0A1\\\"}.fa-bell:before{content:\\\"\\uF0F3\\\"}.fa-certificate:before{content:\\\"\\uF0A3\\\"}.fa-hand-o-right:before{content:\\\"\\uF0A4\\\"}.fa-hand-o-left:before{content:\\\"\\uF0A5\\\"}.fa-hand-o-up:before{content:\\\"\\uF0A6\\\"}.fa-hand-o-down:before{content:\\\"\\uF0A7\\\"}.fa-arrow-circle-left:before{content:\\\"\\uF0A8\\\"}.fa-arrow-circle-right:before{content:\\\"\\uF0A9\\\"}.fa-arrow-circle-up:before{content:\\\"\\uF0AA\\\"}.fa-arrow-circle-down:before{content:\\\"\\uF0AB\\\"}.fa-globe:before{content:\\\"\\uF0AC\\\"}.fa-wrench:before{content:\\\"\\uF0AD\\\"}.fa-tasks:before{content:\\\"\\uF0AE\\\"}.fa-filter:before{content:\\\"\\uF0B0\\\"}.fa-briefcase:before{content:\\\"\\uF0B1\\\"}.fa-arrows-alt:before{content:\\\"\\uF0B2\\\"}.fa-group:before,.fa-users:before{content:\\\"\\uF0C0\\\"}.fa-chain:before,.fa-link:before{content:\\\"\\uF0C1\\\"}.fa-cloud:before{content:\\\"\\uF0C2\\\"}.fa-flask:before{content:\\\"\\uF0C3\\\"}.fa-cut:before,.fa-scissors:before{content:\\\"\\uF0C4\\\"}.fa-copy:before,.fa-files-o:before{content:\\\"\\uF0C5\\\"}.fa-paperclip:before{content:\\\"\\uF0C6\\\"}.fa-floppy-o:before,.fa-save:before{content:\\\"\\uF0C7\\\"}.fa-square:before{content:\\\"\\uF0C8\\\"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:\\\"\\uF0C9\\\"}.fa-list-ul:before{content:\\\"\\uF0CA\\\"}.fa-list-ol:before{content:\\\"\\uF0CB\\\"}.fa-strikethrough:before{content:\\\"\\uF0CC\\\"}.fa-underline:before{content:\\\"\\uF0CD\\\"}.fa-table:before{content:\\\"\\uF0CE\\\"}.fa-magic:before{content:\\\"\\uF0D0\\\"}.fa-truck:before{content:\\\"\\uF0D1\\\"}.fa-pinterest:before{content:\\\"\\uF0D2\\\"}.fa-pinterest-square:before{content:\\\"\\uF0D3\\\"}.fa-google-plus-square:before{content:\\\"\\uF0D4\\\"}.fa-google-plus:before{content:\\\"\\uF0D5\\\"}.fa-money:before{content:\\\"\\uF0D6\\\"}.fa-caret-down:before{content:\\\"\\uF0D7\\\"}.fa-caret-up:before{content:\\\"\\uF0D8\\\"}.fa-caret-left:before{content:\\\"\\uF0D9\\\"}.fa-caret-right:before{content:\\\"\\uF0DA\\\"}.fa-columns:before{content:\\\"\\uF0DB\\\"}.fa-sort:before,.fa-unsorted:before{content:\\\"\\uF0DC\\\"}.fa-sort-desc:before,.fa-sort-down:before{content:\\\"\\uF0DD\\\"}.fa-sort-asc:before,.fa-sort-up:before{content:\\\"\\uF0DE\\\"}.fa-envelope:before{content:\\\"\\uF0E0\\\"}.fa-linkedin:before{content:\\\"\\uF0E1\\\"}.fa-rotate-left:before,.fa-undo:before{content:\\\"\\uF0E2\\\"}.fa-gavel:before,.fa-legal:before{content:\\\"\\uF0E3\\\"}.fa-dashboard:before,.fa-tachometer:before{content:\\\"\\uF0E4\\\"}.fa-comment-o:before{content:\\\"\\uF0E5\\\"}.fa-comments-o:before{content:\\\"\\uF0E6\\\"}.fa-bolt:before,.fa-flash:before{content:\\\"\\uF0E7\\\"}.fa-sitemap:before{content:\\\"\\uF0E8\\\"}.fa-umbrella:before{content:\\\"\\uF0E9\\\"}.fa-clipboard:before,.fa-paste:before{content:\\\"\\uF0EA\\\"}.fa-lightbulb-o:before{content:\\\"\\uF0EB\\\"}.fa-exchange:before{content:\\\"\\uF0EC\\\"}.fa-cloud-download:before{content:\\\"\\uF0ED\\\"}.fa-cloud-upload:before{content:\\\"\\uF0EE\\\"}.fa-user-md:before{content:\\\"\\uF0F0\\\"}.fa-stethoscope:before{content:\\\"\\uF0F1\\\"}.fa-suitcase:before{content:\\\"\\uF0F2\\\"}.fa-bell-o:before{content:\\\"\\uF0A2\\\"}.fa-coffee:before{content:\\\"\\uF0F4\\\"}.fa-cutlery:before{content:\\\"\\uF0F5\\\"}.fa-file-text-o:before{content:\\\"\\uF0F6\\\"}.fa-building-o:before{content:\\\"\\uF0F7\\\"}.fa-hospital-o:before{content:\\\"\\uF0F8\\\"}.fa-ambulance:before{content:\\\"\\uF0F9\\\"}.fa-medkit:before{content:\\\"\\uF0FA\\\"}.fa-fighter-jet:before{content:\\\"\\uF0FB\\\"}.fa-beer:before{content:\\\"\\uF0FC\\\"}.fa-h-square:before{content:\\\"\\uF0FD\\\"}.fa-plus-square:before{content:\\\"\\uF0FE\\\"}.fa-angle-double-left:before{content:\\\"\\uF100\\\"}.fa-angle-double-right:before{content:\\\"\\uF101\\\"}.fa-angle-double-up:before{content:\\\"\\uF102\\\"}.fa-angle-double-down:before{content:\\\"\\uF103\\\"}.fa-angle-left:before{content:\\\"\\uF104\\\"}.fa-angle-right:before{content:\\\"\\uF105\\\"}.fa-angle-up:before{content:\\\"\\uF106\\\"}.fa-angle-down:before{content:\\\"\\uF107\\\"}.fa-desktop:before{content:\\\"\\uF108\\\"}.fa-laptop:before{content:\\\"\\uF109\\\"}.fa-tablet:before{content:\\\"\\uF10A\\\"}.fa-mobile-phone:before,.fa-mobile:before{content:\\\"\\uF10B\\\"}.fa-circle-o:before{content:\\\"\\uF10C\\\"}.fa-quote-left:before{content:\\\"\\uF10D\\\"}.fa-quote-right:before{content:\\\"\\uF10E\\\"}.fa-spinner:before{content:\\\"\\uF110\\\"}.fa-circle:before{content:\\\"\\uF111\\\"}.fa-mail-reply:before,.fa-reply:before{content:\\\"\\uF112\\\"}.fa-github-alt:before{content:\\\"\\uF113\\\"}.fa-folder-o:before{content:\\\"\\uF114\\\"}.fa-folder-open-o:before{content:\\\"\\uF115\\\"}.fa-smile-o:before{content:\\\"\\uF118\\\"}.fa-frown-o:before{content:\\\"\\uF119\\\"}.fa-meh-o:before{content:\\\"\\uF11A\\\"}.fa-gamepad:before{content:\\\"\\uF11B\\\"}.fa-keyboard-o:before{content:\\\"\\uF11C\\\"}.fa-flag-o:before{content:\\\"\\uF11D\\\"}.fa-flag-checkered:before{content:\\\"\\uF11E\\\"}.fa-terminal:before{content:\\\"\\uF120\\\"}.fa-code:before{content:\\\"\\uF121\\\"}.fa-mail-reply-all:before,.fa-reply-all:before{content:\\\"\\uF122\\\"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:\\\"\\uF123\\\"}.fa-location-arrow:before{content:\\\"\\uF124\\\"}.fa-crop:before{content:\\\"\\uF125\\\"}.fa-code-fork:before{content:\\\"\\uF126\\\"}.fa-chain-broken:before,.fa-unlink:before{content:\\\"\\uF127\\\"}.fa-question:before{content:\\\"\\uF128\\\"}.fa-info:before{content:\\\"\\uF129\\\"}.fa-exclamation:before{content:\\\"\\uF12A\\\"}.fa-superscript:before{content:\\\"\\uF12B\\\"}.fa-subscript:before{content:\\\"\\uF12C\\\"}.fa-eraser:before{content:\\\"\\uF12D\\\"}.fa-puzzle-piece:before{content:\\\"\\uF12E\\\"}.fa-microphone:before{content:\\\"\\uF130\\\"}.fa-microphone-slash:before{content:\\\"\\uF131\\\"}.fa-shield:before{content:\\\"\\uF132\\\"}.fa-calendar-o:before{content:\\\"\\uF133\\\"}.fa-fire-extinguisher:before{content:\\\"\\uF134\\\"}.fa-rocket:before{content:\\\"\\uF135\\\"}.fa-maxcdn:before{content:\\\"\\uF136\\\"}.fa-chevron-circle-left:before{content:\\\"\\uF137\\\"}.fa-chevron-circle-right:before{content:\\\"\\uF138\\\"}.fa-chevron-circle-up:before{content:\\\"\\uF139\\\"}.fa-chevron-circle-down:before{content:\\\"\\uF13A\\\"}.fa-html5:before{content:\\\"\\uF13B\\\"}.fa-css3:before{content:\\\"\\uF13C\\\"}.fa-anchor:before{content:\\\"\\uF13D\\\"}.fa-unlock-alt:before{content:\\\"\\uF13E\\\"}.fa-bullseye:before{content:\\\"\\uF140\\\"}.fa-ellipsis-h:before{content:\\\"\\uF141\\\"}.fa-ellipsis-v:before{content:\\\"\\uF142\\\"}.fa-rss-square:before{content:\\\"\\uF143\\\"}.fa-play-circle:before{content:\\\"\\uF144\\\"}.fa-ticket:before{content:\\\"\\uF145\\\"}.fa-minus-square:before{content:\\\"\\uF146\\\"}.fa-minus-square-o:before{content:\\\"\\uF147\\\"}.fa-level-up:before{content:\\\"\\uF148\\\"}.fa-level-down:before{content:\\\"\\uF149\\\"}.fa-check-square:before{content:\\\"\\uF14A\\\"}.fa-pencil-square:before{content:\\\"\\uF14B\\\"}.fa-external-link-square:before{content:\\\"\\uF14C\\\"}.fa-share-square:before{content:\\\"\\uF14D\\\"}.fa-compass:before{content:\\\"\\uF14E\\\"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:\\\"\\uF150\\\"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:\\\"\\uF151\\\"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:\\\"\\uF152\\\"}.fa-eur:before,.fa-euro:before{content:\\\"\\uF153\\\"}.fa-gbp:before{content:\\\"\\uF154\\\"}.fa-dollar:before,.fa-usd:before{content:\\\"\\uF155\\\"}.fa-inr:before,.fa-rupee:before{content:\\\"\\uF156\\\"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:\\\"\\uF157\\\"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:\\\"\\uF158\\\"}.fa-krw:before,.fa-won:before{content:\\\"\\uF159\\\"}.fa-bitcoin:before,.fa-btc:before{content:\\\"\\uF15A\\\"}.fa-file:before{content:\\\"\\uF15B\\\"}.fa-file-text:before{content:\\\"\\uF15C\\\"}.fa-sort-alpha-asc:before{content:\\\"\\uF15D\\\"}.fa-sort-alpha-desc:before{content:\\\"\\uF15E\\\"}.fa-sort-amount-asc:before{content:\\\"\\uF160\\\"}.fa-sort-amount-desc:before{content:\\\"\\uF161\\\"}.fa-sort-numeric-asc:before{content:\\\"\\uF162\\\"}.fa-sort-numeric-desc:before{content:\\\"\\uF163\\\"}.fa-thumbs-up:before{content:\\\"\\uF164\\\"}.fa-thumbs-down:before{content:\\\"\\uF165\\\"}.fa-youtube-square:before{content:\\\"\\uF166\\\"}.fa-youtube:before{content:\\\"\\uF167\\\"}.fa-xing:before{content:\\\"\\uF168\\\"}.fa-xing-square:before{content:\\\"\\uF169\\\"}.fa-youtube-play:before{content:\\\"\\uF16A\\\"}.fa-dropbox:before{content:\\\"\\uF16B\\\"}.fa-stack-overflow:before{content:\\\"\\uF16C\\\"}.fa-instagram:before{content:\\\"\\uF16D\\\"}.fa-flickr:before{content:\\\"\\uF16E\\\"}.fa-adn:before{content:\\\"\\uF170\\\"}.fa-bitbucket:before{content:\\\"\\uF171\\\"}.fa-bitbucket-square:before{content:\\\"\\uF172\\\"}.fa-tumblr:before{content:\\\"\\uF173\\\"}.fa-tumblr-square:before{content:\\\"\\uF174\\\"}.fa-long-arrow-down:before{content:\\\"\\uF175\\\"}.fa-long-arrow-up:before{content:\\\"\\uF176\\\"}.fa-long-arrow-left:before{content:\\\"\\uF177\\\"}.fa-long-arrow-right:before{content:\\\"\\uF178\\\"}.fa-apple:before{content:\\\"\\uF179\\\"}.fa-windows:before{content:\\\"\\uF17A\\\"}.fa-android:before{content:\\\"\\uF17B\\\"}.fa-linux:before{content:\\\"\\uF17C\\\"}.fa-dribbble:before{content:\\\"\\uF17D\\\"}.fa-skype:before{content:\\\"\\uF17E\\\"}.fa-foursquare:before{content:\\\"\\uF180\\\"}.fa-trello:before{content:\\\"\\uF181\\\"}.fa-female:before{content:\\\"\\uF182\\\"}.fa-male:before{content:\\\"\\uF183\\\"}.fa-gittip:before,.fa-gratipay:before{content:\\\"\\uF184\\\"}.fa-sun-o:before{content:\\\"\\uF185\\\"}.fa-moon-o:before{content:\\\"\\uF186\\\"}.fa-archive:before{content:\\\"\\uF187\\\"}.fa-bug:before{content:\\\"\\uF188\\\"}.fa-vk:before{content:\\\"\\uF189\\\"}.fa-weibo:before{content:\\\"\\uF18A\\\"}.fa-renren:before{content:\\\"\\uF18B\\\"}.fa-pagelines:before{content:\\\"\\uF18C\\\"}.fa-stack-exchange:before{content:\\\"\\uF18D\\\"}.fa-arrow-circle-o-right:before{content:\\\"\\uF18E\\\"}.fa-arrow-circle-o-left:before{content:\\\"\\uF190\\\"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:\\\"\\uF191\\\"}.fa-dot-circle-o:before{content:\\\"\\uF192\\\"}.fa-wheelchair:before{content:\\\"\\uF193\\\"}.fa-vimeo-square:before{content:\\\"\\uF194\\\"}.fa-try:before,.fa-turkish-lira:before{content:\\\"\\uF195\\\"}.fa-plus-square-o:before{content:\\\"\\uF196\\\"}.fa-space-shuttle:before{content:\\\"\\uF197\\\"}.fa-slack:before{content:\\\"\\uF198\\\"}.fa-envelope-square:before{content:\\\"\\uF199\\\"}.fa-wordpress:before{content:\\\"\\uF19A\\\"}.fa-openid:before{content:\\\"\\uF19B\\\"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:\\\"\\uF19C\\\"}.fa-graduation-cap:before,.fa-mortar-board:before{content:\\\"\\uF19D\\\"}.fa-yahoo:before{content:\\\"\\uF19E\\\"}.fa-google:before{content:\\\"\\uF1A0\\\"}.fa-reddit:before{content:\\\"\\uF1A1\\\"}.fa-reddit-square:before{content:\\\"\\uF1A2\\\"}.fa-stumbleupon-circle:before{content:\\\"\\uF1A3\\\"}.fa-stumbleupon:before{content:\\\"\\uF1A4\\\"}.fa-delicious:before{content:\\\"\\uF1A5\\\"}.fa-digg:before{content:\\\"\\uF1A6\\\"}.fa-pied-piper-pp:before{content:\\\"\\uF1A7\\\"}.fa-pied-piper-alt:before{content:\\\"\\uF1A8\\\"}.fa-drupal:before{content:\\\"\\uF1A9\\\"}.fa-joomla:before{content:\\\"\\uF1AA\\\"}.fa-language:before{content:\\\"\\uF1AB\\\"}.fa-fax:before{content:\\\"\\uF1AC\\\"}.fa-building:before{content:\\\"\\uF1AD\\\"}.fa-child:before{content:\\\"\\uF1AE\\\"}.fa-paw:before{content:\\\"\\uF1B0\\\"}.fa-spoon:before{content:\\\"\\uF1B1\\\"}.fa-cube:before{content:\\\"\\uF1B2\\\"}.fa-cubes:before{content:\\\"\\uF1B3\\\"}.fa-behance:before{content:\\\"\\uF1B4\\\"}.fa-behance-square:before{content:\\\"\\uF1B5\\\"}.fa-steam:before{content:\\\"\\uF1B6\\\"}.fa-steam-square:before{content:\\\"\\uF1B7\\\"}.fa-recycle:before{content:\\\"\\uF1B8\\\"}.fa-automobile:before,.fa-car:before{content:\\\"\\uF1B9\\\"}.fa-cab:before,.fa-taxi:before{content:\\\"\\uF1BA\\\"}.fa-tree:before{content:\\\"\\uF1BB\\\"}.fa-spotify:before{content:\\\"\\uF1BC\\\"}.fa-deviantart:before{content:\\\"\\uF1BD\\\"}.fa-soundcloud:before{content:\\\"\\uF1BE\\\"}.fa-database:before{content:\\\"\\uF1C0\\\"}.fa-file-pdf-o:before{content:\\\"\\uF1C1\\\"}.fa-file-word-o:before{content:\\\"\\uF1C2\\\"}.fa-file-excel-o:before{content:\\\"\\uF1C3\\\"}.fa-file-powerpoint-o:before{content:\\\"\\uF1C4\\\"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:\\\"\\uF1C5\\\"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:\\\"\\uF1C6\\\"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:\\\"\\uF1C7\\\"}.fa-file-movie-o:before,.fa-file-video-o:before{content:\\\"\\uF1C8\\\"}.fa-file-code-o:before{content:\\\"\\uF1C9\\\"}.fa-vine:before{content:\\\"\\uF1CA\\\"}.fa-codepen:before{content:\\\"\\uF1CB\\\"}.fa-jsfiddle:before{content:\\\"\\uF1CC\\\"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:\\\"\\uF1CD\\\"}.fa-circle-o-notch:before{content:\\\"\\uF1CE\\\"}.fa-ra:before,.fa-rebel:before,.fa-resistance:before{content:\\\"\\uF1D0\\\"}.fa-empire:before,.fa-ge:before{content:\\\"\\uF1D1\\\"}.fa-git-square:before{content:\\\"\\uF1D2\\\"}.fa-git:before{content:\\\"\\uF1D3\\\"}.fa-hacker-news:before,.fa-y-combinator-square:before,.fa-yc-square:before{content:\\\"\\uF1D4\\\"}.fa-tencent-weibo:before{content:\\\"\\uF1D5\\\"}.fa-qq:before{content:\\\"\\uF1D6\\\"}.fa-wechat:before,.fa-weixin:before{content:\\\"\\uF1D7\\\"}.fa-paper-plane:before,.fa-send:before{content:\\\"\\uF1D8\\\"}.fa-paper-plane-o:before,.fa-send-o:before{content:\\\"\\uF1D9\\\"}.fa-history:before{content:\\\"\\uF1DA\\\"}.fa-circle-thin:before{content:\\\"\\uF1DB\\\"}.fa-header:before{content:\\\"\\uF1DC\\\"}.fa-paragraph:before{content:\\\"\\uF1DD\\\"}.fa-sliders:before{content:\\\"\\uF1DE\\\"}.fa-share-alt:before{content:\\\"\\uF1E0\\\"}.fa-share-alt-square:before{content:\\\"\\uF1E1\\\"}.fa-bomb:before{content:\\\"\\uF1E2\\\"}.fa-futbol-o:before,.fa-soccer-ball-o:before{content:\\\"\\uF1E3\\\"}.fa-tty:before{content:\\\"\\uF1E4\\\"}.fa-binoculars:before{content:\\\"\\uF1E5\\\"}.fa-plug:before{content:\\\"\\uF1E6\\\"}.fa-slideshare:before{content:\\\"\\uF1E7\\\"}.fa-twitch:before{content:\\\"\\uF1E8\\\"}.fa-yelp:before{content:\\\"\\uF1E9\\\"}.fa-newspaper-o:before{content:\\\"\\uF1EA\\\"}.fa-wifi:before{content:\\\"\\uF1EB\\\"}.fa-calculator:before{content:\\\"\\uF1EC\\\"}.fa-paypal:before{content:\\\"\\uF1ED\\\"}.fa-google-wallet:before{content:\\\"\\uF1EE\\\"}.fa-cc-visa:before{content:\\\"\\uF1F0\\\"}.fa-cc-mastercard:before{content:\\\"\\uF1F1\\\"}.fa-cc-discover:before{content:\\\"\\uF1F2\\\"}.fa-cc-amex:before{content:\\\"\\uF1F3\\\"}.fa-cc-paypal:before{content:\\\"\\uF1F4\\\"}.fa-cc-stripe:before{content:\\\"\\uF1F5\\\"}.fa-bell-slash:before{content:\\\"\\uF1F6\\\"}.fa-bell-slash-o:before{content:\\\"\\uF1F7\\\"}.fa-trash:before{content:\\\"\\uF1F8\\\"}.fa-copyright:before{content:\\\"\\uF1F9\\\"}.fa-at:before{content:\\\"\\uF1FA\\\"}.fa-eyedropper:before{content:\\\"\\uF1FB\\\"}.fa-paint-brush:before{content:\\\"\\uF1FC\\\"}.fa-birthday-cake:before{content:\\\"\\uF1FD\\\"}.fa-area-chart:before{content:\\\"\\uF1FE\\\"}.fa-pie-chart:before{content:\\\"\\uF200\\\"}.fa-line-chart:before{content:\\\"\\uF201\\\"}.fa-lastfm:before{content:\\\"\\uF202\\\"}.fa-lastfm-square:before{content:\\\"\\uF203\\\"}.fa-toggle-off:before{content:\\\"\\uF204\\\"}.fa-toggle-on:before{content:\\\"\\uF205\\\"}.fa-bicycle:before{content:\\\"\\uF206\\\"}.fa-bus:before{content:\\\"\\uF207\\\"}.fa-ioxhost:before{content:\\\"\\uF208\\\"}.fa-angellist:before{content:\\\"\\uF209\\\"}.fa-cc:before{content:\\\"\\uF20A\\\"}.fa-ils:before,.fa-shekel:before,.fa-sheqel:before{content:\\\"\\uF20B\\\"}.fa-meanpath:before{content:\\\"\\uF20C\\\"}.fa-buysellads:before{content:\\\"\\uF20D\\\"}.fa-connectdevelop:before{content:\\\"\\uF20E\\\"}.fa-dashcube:before{content:\\\"\\uF210\\\"}.fa-forumbee:before{content:\\\"\\uF211\\\"}.fa-leanpub:before{content:\\\"\\uF212\\\"}.fa-sellsy:before{content:\\\"\\uF213\\\"}.fa-shirtsinbulk:before{content:\\\"\\uF214\\\"}.fa-simplybuilt:before{content:\\\"\\uF215\\\"}.fa-skyatlas:before{content:\\\"\\uF216\\\"}.fa-cart-plus:before{content:\\\"\\uF217\\\"}.fa-cart-arrow-down:before{content:\\\"\\uF218\\\"}.fa-diamond:before{content:\\\"\\uF219\\\"}.fa-ship:before{content:\\\"\\uF21A\\\"}.fa-user-secret:before{content:\\\"\\uF21B\\\"}.fa-motorcycle:before{content:\\\"\\uF21C\\\"}.fa-street-view:before{content:\\\"\\uF21D\\\"}.fa-heartbeat:before{content:\\\"\\uF21E\\\"}.fa-venus:before{content:\\\"\\uF221\\\"}.fa-mars:before{content:\\\"\\uF222\\\"}.fa-mercury:before{content:\\\"\\uF223\\\"}.fa-intersex:before,.fa-transgender:before{content:\\\"\\uF224\\\"}.fa-transgender-alt:before{content:\\\"\\uF225\\\"}.fa-venus-double:before{content:\\\"\\uF226\\\"}.fa-mars-double:before{content:\\\"\\uF227\\\"}.fa-venus-mars:before{content:\\\"\\uF228\\\"}.fa-mars-stroke:before{content:\\\"\\uF229\\\"}.fa-mars-stroke-v:before{content:\\\"\\uF22A\\\"}.fa-mars-stroke-h:before{content:\\\"\\uF22B\\\"}.fa-neuter:before{content:\\\"\\uF22C\\\"}.fa-genderless:before{content:\\\"\\uF22D\\\"}.fa-facebook-official:before{content:\\\"\\uF230\\\"}.fa-pinterest-p:before{content:\\\"\\uF231\\\"}.fa-whatsapp:before{content:\\\"\\uF232\\\"}.fa-server:before{content:\\\"\\uF233\\\"}.fa-user-plus:before{content:\\\"\\uF234\\\"}.fa-user-times:before{content:\\\"\\uF235\\\"}.fa-bed:before,.fa-hotel:before{content:\\\"\\uF236\\\"}.fa-viacoin:before{content:\\\"\\uF237\\\"}.fa-train:before{content:\\\"\\uF238\\\"}.fa-subway:before{content:\\\"\\uF239\\\"}.fa-medium:before{content:\\\"\\uF23A\\\"}.fa-y-combinator:before,.fa-yc:before{content:\\\"\\uF23B\\\"}.fa-optin-monster:before{content:\\\"\\uF23C\\\"}.fa-opencart:before{content:\\\"\\uF23D\\\"}.fa-expeditedssl:before{content:\\\"\\uF23E\\\"}.fa-battery-4:before,.fa-battery-full:before,.fa-battery:before{content:\\\"\\uF240\\\"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:\\\"\\uF241\\\"}.fa-battery-2:before,.fa-battery-half:before{content:\\\"\\uF242\\\"}.fa-battery-1:before,.fa-battery-quarter:before{content:\\\"\\uF243\\\"}.fa-battery-0:before,.fa-battery-empty:before{content:\\\"\\uF244\\\"}.fa-mouse-pointer:before{content:\\\"\\uF245\\\"}.fa-i-cursor:before{content:\\\"\\uF246\\\"}.fa-object-group:before{content:\\\"\\uF247\\\"}.fa-object-ungroup:before{content:\\\"\\uF248\\\"}.fa-sticky-note:before{content:\\\"\\uF249\\\"}.fa-sticky-note-o:before{content:\\\"\\uF24A\\\"}.fa-cc-jcb:before{content:\\\"\\uF24B\\\"}.fa-cc-diners-club:before{content:\\\"\\uF24C\\\"}.fa-clone:before{content:\\\"\\uF24D\\\"}.fa-balance-scale:before{content:\\\"\\uF24E\\\"}.fa-hourglass-o:before{content:\\\"\\uF250\\\"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:\\\"\\uF251\\\"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:\\\"\\uF252\\\"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:\\\"\\uF253\\\"}.fa-hourglass:before{content:\\\"\\uF254\\\"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:\\\"\\uF255\\\"}.fa-hand-paper-o:before,.fa-hand-stop-o:before{content:\\\"\\uF256\\\"}.fa-hand-scissors-o:before{content:\\\"\\uF257\\\"}.fa-hand-lizard-o:before{content:\\\"\\uF258\\\"}.fa-hand-spock-o:before{content:\\\"\\uF259\\\"}.fa-hand-pointer-o:before{content:\\\"\\uF25A\\\"}.fa-hand-peace-o:before{content:\\\"\\uF25B\\\"}.fa-trademark:before{content:\\\"\\uF25C\\\"}.fa-registered:before{content:\\\"\\uF25D\\\"}.fa-creative-commons:before{content:\\\"\\uF25E\\\"}.fa-gg:before{content:\\\"\\uF260\\\"}.fa-gg-circle:before{content:\\\"\\uF261\\\"}.fa-tripadvisor:before{content:\\\"\\uF262\\\"}.fa-odnoklassniki:before{content:\\\"\\uF263\\\"}.fa-odnoklassniki-square:before{content:\\\"\\uF264\\\"}.fa-get-pocket:before{content:\\\"\\uF265\\\"}.fa-wikipedia-w:before{content:\\\"\\uF266\\\"}.fa-safari:before{content:\\\"\\uF267\\\"}.fa-chrome:before{content:\\\"\\uF268\\\"}.fa-firefox:before{content:\\\"\\uF269\\\"}.fa-opera:before{content:\\\"\\uF26A\\\"}.fa-internet-explorer:before{content:\\\"\\uF26B\\\"}.fa-television:before,.fa-tv:before{content:\\\"\\uF26C\\\"}.fa-contao:before{content:\\\"\\uF26D\\\"}.fa-500px:before{content:\\\"\\uF26E\\\"}.fa-amazon:before{content:\\\"\\uF270\\\"}.fa-calendar-plus-o:before{content:\\\"\\uF271\\\"}.fa-calendar-minus-o:before{content:\\\"\\uF272\\\"}.fa-calendar-times-o:before{content:\\\"\\uF273\\\"}.fa-calendar-check-o:before{content:\\\"\\uF274\\\"}.fa-industry:before{content:\\\"\\uF275\\\"}.fa-map-pin:before{content:\\\"\\uF276\\\"}.fa-map-signs:before{content:\\\"\\uF277\\\"}.fa-map-o:before{content:\\\"\\uF278\\\"}.fa-map:before{content:\\\"\\uF279\\\"}.fa-commenting:before{content:\\\"\\uF27A\\\"}.fa-commenting-o:before{content:\\\"\\uF27B\\\"}.fa-houzz:before{content:\\\"\\uF27C\\\"}.fa-vimeo:before{content:\\\"\\uF27D\\\"}.fa-black-tie:before{content:\\\"\\uF27E\\\"}.fa-fonticons:before{content:\\\"\\uF280\\\"}.fa-reddit-alien:before{content:\\\"\\uF281\\\"}.fa-edge:before{content:\\\"\\uF282\\\"}.fa-credit-card-alt:before{content:\\\"\\uF283\\\"}.fa-codiepie:before{content:\\\"\\uF284\\\"}.fa-modx:before{content:\\\"\\uF285\\\"}.fa-fort-awesome:before{content:\\\"\\uF286\\\"}.fa-usb:before{content:\\\"\\uF287\\\"}.fa-product-hunt:before{content:\\\"\\uF288\\\"}.fa-mixcloud:before{content:\\\"\\uF289\\\"}.fa-scribd:before{content:\\\"\\uF28A\\\"}.fa-pause-circle:before{content:\\\"\\uF28B\\\"}.fa-pause-circle-o:before{content:\\\"\\uF28C\\\"}.fa-stop-circle:before{content:\\\"\\uF28D\\\"}.fa-stop-circle-o:before{content:\\\"\\uF28E\\\"}.fa-shopping-bag:before{content:\\\"\\uF290\\\"}.fa-shopping-basket:before{content:\\\"\\uF291\\\"}.fa-hashtag:before{content:\\\"\\uF292\\\"}.fa-bluetooth:before{content:\\\"\\uF293\\\"}.fa-bluetooth-b:before{content:\\\"\\uF294\\\"}.fa-percent:before{content:\\\"\\uF295\\\"}.fa-gitlab:before{content:\\\"\\uF296\\\"}.fa-wpbeginner:before{content:\\\"\\uF297\\\"}.fa-wpforms:before{content:\\\"\\uF298\\\"}.fa-envira:before{content:\\\"\\uF299\\\"}.fa-universal-access:before{content:\\\"\\uF29A\\\"}.fa-wheelchair-alt:before{content:\\\"\\uF29B\\\"}.fa-question-circle-o:before{content:\\\"\\uF29C\\\"}.fa-blind:before{content:\\\"\\uF29D\\\"}.fa-audio-description:before{content:\\\"\\uF29E\\\"}.fa-volume-control-phone:before{content:\\\"\\uF2A0\\\"}.fa-braille:before{content:\\\"\\uF2A1\\\"}.fa-assistive-listening-systems:before{content:\\\"\\uF2A2\\\"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before{content:\\\"\\uF2A3\\\"}.fa-deaf:before,.fa-deafness:before,.fa-hard-of-hearing:before{content:\\\"\\uF2A4\\\"}.fa-glide:before{content:\\\"\\uF2A5\\\"}.fa-glide-g:before{content:\\\"\\uF2A6\\\"}.fa-sign-language:before,.fa-signing:before{content:\\\"\\uF2A7\\\"}.fa-low-vision:before{content:\\\"\\uF2A8\\\"}.fa-viadeo:before{content:\\\"\\uF2A9\\\"}.fa-viadeo-square:before{content:\\\"\\uF2AA\\\"}.fa-snapchat:before{content:\\\"\\uF2AB\\\"}.fa-snapchat-ghost:before{content:\\\"\\uF2AC\\\"}.fa-snapchat-square:before{content:\\\"\\uF2AD\\\"}.fa-pied-piper:before{content:\\\"\\uF2AE\\\"}.fa-first-order:before{content:\\\"\\uF2B0\\\"}.fa-yoast:before{content:\\\"\\uF2B1\\\"}.fa-themeisle:before{content:\\\"\\uF2B2\\\"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:\\\"\\uF2B3\\\"}.fa-fa:before,.fa-font-awesome:before{content:\\\"\\uF2B4\\\"}.fa-handshake-o:before{content:\\\"\\uF2B5\\\"}.fa-envelope-open:before{content:\\\"\\uF2B6\\\"}.fa-envelope-open-o:before{content:\\\"\\uF2B7\\\"}.fa-linode:before{content:\\\"\\uF2B8\\\"}.fa-address-book:before{content:\\\"\\uF2B9\\\"}.fa-address-book-o:before{content:\\\"\\uF2BA\\\"}.fa-address-card:before,.fa-vcard:before{content:\\\"\\uF2BB\\\"}.fa-address-card-o:before,.fa-vcard-o:before{content:\\\"\\uF2BC\\\"}.fa-user-circle:before{content:\\\"\\uF2BD\\\"}.fa-user-circle-o:before{content:\\\"\\uF2BE\\\"}.fa-user-o:before{content:\\\"\\uF2C0\\\"}.fa-id-badge:before{content:\\\"\\uF2C1\\\"}.fa-drivers-license:before,.fa-id-card:before{content:\\\"\\uF2C2\\\"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:\\\"\\uF2C3\\\"}.fa-quora:before{content:\\\"\\uF2C4\\\"}.fa-free-code-camp:before{content:\\\"\\uF2C5\\\"}.fa-telegram:before{content:\\\"\\uF2C6\\\"}.fa-thermometer-4:before,.fa-thermometer-full:before,.fa-thermometer:before{content:\\\"\\uF2C7\\\"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:\\\"\\uF2C8\\\"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:\\\"\\uF2C9\\\"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:\\\"\\uF2CA\\\"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:\\\"\\uF2CB\\\"}.fa-shower:before{content:\\\"\\uF2CC\\\"}.fa-bath:before,.fa-bathtub:before,.fa-s15:before{content:\\\"\\uF2CD\\\"}.fa-podcast:before{content:\\\"\\uF2CE\\\"}.fa-window-maximize:before{content:\\\"\\uF2D0\\\"}.fa-window-minimize:before{content:\\\"\\uF2D1\\\"}.fa-window-restore:before{content:\\\"\\uF2D2\\\"}.fa-times-rectangle:before,.fa-window-close:before{content:\\\"\\uF2D3\\\"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:\\\"\\uF2D4\\\"}.fa-bandcamp:before{content:\\\"\\uF2D5\\\"}.fa-grav:before{content:\\\"\\uF2D6\\\"}.fa-etsy:before{content:\\\"\\uF2D7\\\"}.fa-imdb:before{content:\\\"\\uF2D8\\\"}.fa-ravelry:before{content:\\\"\\uF2D9\\\"}.fa-eercast:before{content:\\\"\\uF2DA\\\"}.fa-microchip:before{content:\\\"\\uF2DB\\\"}.fa-snowflake-o:before{content:\\\"\\uF2DC\\\"}.fa-superpowers:before{content:\\\"\\uF2DD\\\"}.fa-wpexplorer:before{content:\\\"\\uF2DE\\\"}.fa-meetup:before{content:\\\"\\uF2E0\\\"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}a{cursor:pointer}.angular-editor-textarea{min-height:150px;overflow:auto;margin-top:5px;resize:vertical}.angular-editor-textarea:after{content:\\\"\\\";position:absolute;bottom:0;right:0;display:block;width:8px;height:8px;cursor:nwse-resize;background-color:rgba(255,255,255,.5)}.angular-editor-toolbar{font:100 .8rem/15px Roboto,Arial,sans-serif;background-color:#f5f5f5;padding:.2rem;border:1px solid #ddd}.angular-editor-toolbar .angular-editor-toolbar-set{display:none;margin-right:5px;vertical-align:baseline}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button{background-color:#fff;vertical-align:middle;border:1px solid #ddd;padding:.4rem;min-width:2rem;float:left}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.focus,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:focus{outline:0}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label{pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.background,.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button:disabled>.color-label.foreground :after{background:#555}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active{background:#fff5b9}.angular-editor-toolbar .angular-editor-toolbar-set .angular-editor-button.active:hover{background-color:#fffa98}.angular-editor-toolbar .angular-editor-toolbar-set select{font-size:11px;width:90px;vertical-align:middle;background-color:transparent;border:.5px solid rgba(255,255,255,0);border-radius:5px;outline:0;padding:.4rem;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading{display:inline-block;width:90px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar .angular-editor-toolbar-set .select-font{display:inline-block;width:90px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size{display:inline-block;width:50px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style{display:inline-block;width:90px}@supports not (-moz-appearance:none){.angular-editor-toolbar .angular-editor-toolbar-set .select-heading optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .default{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h1{font-size:24px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h2{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h3{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h4{font-size:15px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h5{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .h6{font-size:13px}.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .div,.angular-editor-toolbar .angular-editor-toolbar-set .select-heading .pre{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size option{border:1px solid;background-color:#fff}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size1{font-size:10px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size2{font-size:12px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size3{font-size:14px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size4{font-size:16px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size5{font-size:18px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size6{font-size:20px}.angular-editor-toolbar .angular-editor-toolbar-set .select-font-size .size7{font-size:22px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style optgroup{font-size:12px;background-color:#f4f4f4;padding:5px}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style option{border:1px solid;background-color:#fff}}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.angular-editor-toolbar .angular-editor-toolbar-set .select-custom-style:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.angular-editor-toolbar .angular-editor-toolbar-set .color-label{position:relative;cursor:pointer}.angular-editor-toolbar .angular-editor-toolbar-set .background{font-size:smaller;background:#1b1b1b;color:#fff;padding:3px}.angular-editor-toolbar .angular-editor-toolbar-set .foreground :after{position:absolute;content:\\\"\\\";left:-1px;top:auto;bottom:-3px;right:auto;width:15px;height:2px;z-index:0;background:#1b1b1b}.angular-editor-toolbar .angular-editor-toolbar-set:not([style*=\\\"display:none\\\"]):not([style*=\\\"display: none\\\"]){display:inline-block}.angular-editor{position:relative}.angular-editor ::ng-deep [contenteditable=true]:empty:before{content:attr(placeholder);color:#868e96;opacity:1}.angular-editor .angular-editor-wrapper{position:relative}.angular-editor .angular-editor-wrapper .angular-editor-textarea{min-height:5rem;padding:.5rem .8rem 1rem;border:1px solid #ddd;background-color:transparent;overflow-x:hidden;overflow-y:auto;position:relative}.angular-editor .angular-editor-wrapper .angular-editor-textarea ::ng-deep blockquote{margin-left:1rem;border-left:.2em solid #dfe2e5;padding-left:.5rem}.angular-editor .angular-editor-wrapper ::ng-deep p{margin-bottom:0}.angular-editor .angular-editor-wrapper .angular-editor-placeholder{display:none;position:absolute;top:0;padding:.5rem .8rem 1rem .9rem;color:#6c757d;opacity:.75}.angular-editor .angular-editor-wrapper.show-placeholder .angular-editor-placeholder{display:block}.angular-editor .angular-editor-wrapper.disabled{cursor:not-allowed;opacity:.5;pointer-events:none}\"]\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: AngularEditorService }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc4.DomSanitizer }, { type: ɵngcc0.ChangeDetectorRef }, { type: String, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['autofocus']\n }] }]; }, { id: [{\n type: Input\n }], config: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], viewMode: [{\n type: Output\n }], blurEvent: [{\n type: Output,\n args: ['blur']\n }], focusEvent: [{\n type: Output,\n args: ['focus']\n }], tabindex: [{\n type: HostBinding,\n args: ['attr.tabindex']\n }], tabIndex: [{\n type: Input\n }], onFocus: [{\n type: HostListener,\n args: ['focus']\n }], html: [{\n type: Output\n }], textArea: [{\n type: ViewChild,\n args: ['editor', { static: true }]\n }], editorWrapper: [{\n type: ViewChild,\n args: ['editorWrapper', { static: true }]\n }], editorToolbar: [{\n type: ViewChild,\n args: ['editorToolbar', { static: false }]\n }] }); })();\nif (false) {\n /**\n * @type {?}\n * @private\n */\n AngularEditorComponent.prototype.onChange;\n /**\n * @type {?}\n * @private\n */\n AngularEditorComponent.prototype.onTouched;\n /** @type {?} */\n AngularEditorComponent.prototype.modeVisual;\n /** @type {?} */\n AngularEditorComponent.prototype.showPlaceholder;\n /** @type {?} */\n AngularEditorComponent.prototype.disabled;\n /** @type {?} */\n AngularEditorComponent.prototype.focused;\n /** @type {?} */\n AngularEditorComponent.prototype.touched;\n /** @type {?} */\n AngularEditorComponent.prototype.changed;\n /** @type {?} */\n AngularEditorComponent.prototype.focusInstance;\n /** @type {?} */\n AngularEditorComponent.prototype.blurInstance;\n /** @type {?} */\n AngularEditorComponent.prototype.id;\n /** @type {?} */\n AngularEditorComponent.prototype.config;\n /** @type {?} */\n AngularEditorComponent.prototype.placeholder;\n /** @type {?} */\n AngularEditorComponent.prototype.tabIndex;\n /** @type {?} */\n AngularEditorComponent.prototype.html;\n /** @type {?} */\n AngularEditorComponent.prototype.textArea;\n /** @type {?} */\n AngularEditorComponent.prototype.editorWrapper;\n /** @type {?} */\n AngularEditorComponent.prototype.editorToolbar;\n /** @type {?} */\n AngularEditorComponent.prototype.viewMode;\n /**\n * emits `blur` event when focused out from the textarea\n * @type {?}\n */\n AngularEditorComponent.prototype.blurEvent;\n /**\n * emits `focus` event when focused in to the textarea\n * @type {?}\n */\n AngularEditorComponent.prototype.focusEvent;\n /** @type {?} */\n AngularEditorComponent.prototype.tabindex;\n /**\n * @type {?}\n * @private\n */\n AngularEditorComponent.prototype.r;\n /**\n * @type {?}\n * @private\n */\n AngularEditorComponent.prototype.editorService;\n /**\n * @type {?}\n * @private\n */\n AngularEditorComponent.prototype.doc;\n /**\n * @type {?}\n * @private\n */\n AngularEditorComponent.prototype.sanitizer;\n /**\n * @type {?}\n * @private\n */\n AngularEditorComponent.prototype.cdRef;\n /**\n * @type {?}\n * @private\n */\n AngularEditorComponent.prototype.autoFocus;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ae-select/ae-select.component.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction SelectOption() { }\nif (false) {\n /** @type {?} */\n SelectOption.prototype.label;\n /** @type {?} */\n SelectOption.prototype.value;\n}\nclass AeSelectComponent {\n /**\n * @param {?} elRef\n * @param {?} r\n */\n constructor(elRef, r) {\n this.elRef = elRef;\n this.r = r;\n this.options = [];\n this.disabled = false;\n this.optionId = 0;\n this.opened = false;\n this.hidden = 'inline-block';\n // tslint:disable-next-line:no-output-native no-output-rename\n this.changeEvent = new EventEmitter();\n this.onChange = (/**\n * @return {?}\n */\n () => {\n });\n this.onTouched = (/**\n * @return {?}\n */\n () => {\n });\n }\n /**\n * @return {?}\n */\n get label() {\n return this.selectedOption && this.selectedOption.hasOwnProperty('label') ? this.selectedOption.label : 'Select';\n }\n /**\n * @return {?}\n */\n get value() {\n return this.selectedOption.value;\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.selectedOption = this.options[0];\n if (isDefined(this.isHidden) && this.isHidden) {\n this.hide();\n }\n }\n /**\n * @return {?}\n */\n hide() {\n this.hidden = 'none';\n }\n /**\n * @param {?} option\n * @param {?} event\n * @return {?}\n */\n optionSelect(option, event) {\n event.stopPropagation();\n this.setValue(option.value);\n this.onChange(this.selectedOption.value);\n this.changeEvent.emit(this.selectedOption.value);\n this.onTouched();\n this.opened = false;\n }\n /**\n * @param {?} event\n * @return {?}\n */\n toggleOpen(event) {\n // event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.opened = !this.opened;\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n onClick($event) {\n if (!this.elRef.nativeElement.contains($event.target)) {\n this.close();\n }\n }\n /**\n * @return {?}\n */\n close() {\n this.opened = false;\n }\n /**\n * @return {?}\n */\n get isOpen() {\n return this.opened;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n writeValue(value) {\n if (!value || typeof value !== 'string') {\n return;\n }\n this.setValue(value);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n setValue(value) {\n /** @type {?} */\n let index = 0;\n /** @type {?} */\n const selectedEl = this.options.find((/**\n * @param {?} el\n * @param {?} i\n * @return {?}\n */\n (el, i) => {\n index = i;\n return el.value === value;\n }));\n if (selectedEl) {\n this.selectedOption = selectedEl;\n this.optionId = index;\n }\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnChange(fn) {\n this.onChange = fn;\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnTouched(fn) {\n this.onTouched = fn;\n }\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n setDisabledState(isDisabled) {\n this.labelButton.nativeElement.disabled = isDisabled;\n /** @type {?} */\n const div = this.labelButton.nativeElement;\n /** @type {?} */\n const action = isDisabled ? 'addClass' : 'removeClass';\n this.r[action](div, 'disabled');\n this.disabled = isDisabled;\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n handleKeyDown($event) {\n if (!this.opened) {\n return;\n }\n // console.log($event.key);\n // if (KeyCode[$event.key]) {\n switch ($event.key) {\n case 'ArrowDown':\n this._handleArrowDown($event);\n break;\n case 'ArrowUp':\n this._handleArrowUp($event);\n break;\n case 'Space':\n this._handleSpace($event);\n break;\n case 'Enter':\n this._handleEnter($event);\n break;\n case 'Tab':\n this._handleTab($event);\n break;\n case 'Escape':\n this.close();\n $event.preventDefault();\n break;\n case 'Backspace':\n this._handleBackspace();\n break;\n }\n // } else if ($event.key && $event.key.length === 1) {\n // this._keyPress$.next($event.key.toLocaleLowerCase());\n // }\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n _handleArrowDown($event) {\n if (this.optionId < this.options.length - 1) {\n this.optionId++;\n }\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n _handleArrowUp($event) {\n if (this.optionId >= 1) {\n this.optionId--;\n }\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n _handleSpace($event) {\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n _handleEnter($event) {\n this.optionSelect(this.options[this.optionId], $event);\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n _handleTab($event) {\n }\n /**\n * @return {?}\n */\n _handleBackspace() {\n }\n}\nAeSelectComponent.ɵfac = function AeSelectComponent_Factory(t) { return new (t || AeSelectComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nAeSelectComponent.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: AeSelectComponent, selectors: [[\"ae-select\"]], viewQuery: function AeSelectComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵstaticViewQuery(_c4, true);\n } if (rf & 2) {\n var _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.labelButton = _t.first);\n } }, hostVars: 2, hostBindings: function AeSelectComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function AeSelectComponent_click_HostBindingHandler($event) { return ctx.onClick($event); }, false, ɵngcc0.ɵɵresolveDocument)(\"keydown\", function AeSelectComponent_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"display\", ctx.hidden);\n } }, inputs: { options: \"options\", isHidden: [\"hidden\", \"isHidden\"] }, outputs: { changeEvent: \"change\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(( /**\n * @return {?}\n */() => AeSelectComponent)),\n multi: true\n }\n ])], decls: 10, vars: 7, consts: [[1, \"ae-font\", \"ae-picker\", 3, \"ngClass\"], [\"tabindex\", \"0\", \"type\", \"button\", \"role\", \"button\", 1, \"ae-picker-label\", 3, \"tabIndex\", \"click\"], [\"labelButton\", \"\"], [\"viewBox\", \"0 0 18 18\"], [\"points\", \"7 11 9 13 11 11 7 11\", 1, \"ae-stroke\"], [\"points\", \"7 7 9 5 11 7 7 7\", 1, \"ae-stroke\"], [1, \"ae-picker-options\"], [\"tabindex\", \"-1\", \"type\", \"button\", \"role\", \"button\", \"class\", \"ae-picker-item\", 3, \"ngClass\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"dropdown-item\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"type\", \"button\", \"role\", \"button\", 1, \"ae-picker-item\", 3, \"ngClass\", \"click\"], [1, \"dropdown-item\"]], template: function AeSelectComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n ɵngcc0.ɵɵelementStart(1, \"button\", 1, 2);\n ɵngcc0.ɵɵlistener(\"click\", function AeSelectComponent_Template_button_click_1_listener($event) { return ctx.toggleOpen($event); });\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(4, \"svg\", 3);\n ɵngcc0.ɵɵelement(5, \"polygon\", 4);\n ɵngcc0.ɵɵelement(6, \"polygon\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelementStart(7, \"span\", 6);\n ɵngcc0.ɵɵtemplate(8, AeSelectComponent_button_8_Template, 2, 5, \"button\", 7);\n ɵngcc0.ɵɵtemplate(9, AeSelectComponent_span_9_Template, 2, 0, \"span\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(5, _c6, ctx.isOpen));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"tabIndex\", 0 - 1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\"\", ctx.label, \" \");\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.options);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.options.length);\n } }, directives: [ɵngcc2.NgClass, ɵngcc2.NgForOf, ɵngcc2.NgIf], styles: [\".ae-font.ae-picker{color:#444;display:inline-block;float:left;width:100%;position:relative;vertical-align:middle}.ae-font .ae-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:10px;position:relative;width:100%;line-height:26px;vertical-align:middle;font-size:85%;text-align:left;background-color:#fff;min-width:2rem;float:left;border:1px solid #ddd;text-overflow:clip;overflow:hidden;white-space:nowrap}.ae-font .ae-picker-label:before{content:\\\"\\\";position:absolute;right:0;top:0;width:20px;height:100%;background:-webkit-gradient(linear,left top,right top,from(white),to(#fff));background:linear-gradient(to right,#fff,#fff 100%)}.ae-font .ae-picker-label:focus{outline:0}.ae-font .ae-picker-label:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.ae-font .ae-picker-label:hover:before{background:-webkit-gradient(linear,left top,right top,color-stop(100%,#f5f5f5),to(#fff));background:linear-gradient(to right,#f5f5f5 100%,#fff 100%)}.ae-font .ae-picker-label:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.ae-font .ae-picker-label:disabled:before{background:-webkit-gradient(linear,left top,right top,color-stop(100%,#f5f5f5),to(#fff));background:linear-gradient(to right,#f5f5f5 100%,#fff 100%)}.ae-font .ae-picker-label svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ae-font .ae-picker-label svg:not(:root){overflow:hidden}.ae-font .ae-picker-label svg .ae-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ae-font .ae-picker-options{background-color:#fff;display:none;min-width:100%;position:absolute;white-space:nowrap;z-index:3;border:1px solid transparent;box-shadow:rgba(0,0,0,.2) 0 2px 8px}.ae-font .ae-picker-options .ae-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px;padding-left:5px;z-index:3;text-align:left;background-color:transparent;min-width:2rem;width:100%;border:0 solid #ddd}.ae-font .ae-picker-options .ae-picker-item.selected{color:#06c;background-color:#fff4c2}.ae-font .ae-picker-options .ae-picker-item.focused,.ae-font .ae-picker-options .ae-picker-item:hover{background-color:#fffa98}.ae-font.ae-expanded{display:block;margin-top:-1px;z-index:1}.ae-font.ae-expanded .ae-picker-label,.ae-font.ae-expanded .ae-picker-label svg{color:#ccc;z-index:2}.ae-font.ae-expanded .ae-picker-label svg .ae-stroke{stroke:#ccc}.ae-font.ae-expanded .ae-picker-options{display:block;margin-top:-1px;top:100%;z-index:3;border-color:#ccc}\"], encapsulation: 2 });\n/** @nocollapse */\nAeSelectComponent.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 }\n];\nAeSelectComponent.propDecorators = {\n options: [{ type: Input }],\n isHidden: [{ type: Input, args: ['hidden',] }],\n hidden: [{ type: HostBinding, args: ['style.display',] }],\n changeEvent: [{ type: Output, args: ['change',] }],\n labelButton: [{ type: ViewChild, args: ['labelButton', { static: true },] }],\n onClick: [{ type: HostListener, args: ['document:click', ['$event'],] }],\n handleKeyDown: [{ type: HostListener, args: ['keydown', ['$event'],] }]\n};\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AeSelectComponent, [{\n type: Component,\n args: [{\n selector: 'ae-select',\n template: \"\\n \\n \\n \\n No items for select\\n \\n\\n\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(( /**\n * @return {?}\n */() => AeSelectComponent)),\n multi: true\n }\n ],\n styles: [\".ae-font.ae-picker{color:#444;display:inline-block;float:left;width:100%;position:relative;vertical-align:middle}.ae-font .ae-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:10px;position:relative;width:100%;line-height:26px;vertical-align:middle;font-size:85%;text-align:left;background-color:#fff;min-width:2rem;float:left;border:1px solid #ddd;text-overflow:clip;overflow:hidden;white-space:nowrap}.ae-font .ae-picker-label:before{content:\\\"\\\";position:absolute;right:0;top:0;width:20px;height:100%;background:-webkit-gradient(linear,left top,right top,from(white),to(#fff));background:linear-gradient(to right,#fff,#fff 100%)}.ae-font .ae-picker-label:focus{outline:0}.ae-font .ae-picker-label:hover{cursor:pointer;background-color:#f1f1f1;-webkit-transition:.2s;transition:.2s}.ae-font .ae-picker-label:hover:before{background:-webkit-gradient(linear,left top,right top,color-stop(100%,#f5f5f5),to(#fff));background:linear-gradient(to right,#f5f5f5 100%,#fff 100%)}.ae-font .ae-picker-label:disabled{background-color:#f5f5f5;pointer-events:none;cursor:not-allowed}.ae-font .ae-picker-label:disabled:before{background:-webkit-gradient(linear,left top,right top,color-stop(100%,#f5f5f5),to(#fff));background:linear-gradient(to right,#f5f5f5 100%,#fff 100%)}.ae-font .ae-picker-label svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ae-font .ae-picker-label svg:not(:root){overflow:hidden}.ae-font .ae-picker-label svg .ae-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ae-font .ae-picker-options{background-color:#fff;display:none;min-width:100%;position:absolute;white-space:nowrap;z-index:3;border:1px solid transparent;box-shadow:rgba(0,0,0,.2) 0 2px 8px}.ae-font .ae-picker-options .ae-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px;padding-left:5px;z-index:3;text-align:left;background-color:transparent;min-width:2rem;width:100%;border:0 solid #ddd}.ae-font .ae-picker-options .ae-picker-item.selected{color:#06c;background-color:#fff4c2}.ae-font .ae-picker-options .ae-picker-item.focused,.ae-font .ae-picker-options .ae-picker-item:hover{background-color:#fffa98}.ae-font.ae-expanded{display:block;margin-top:-1px;z-index:1}.ae-font.ae-expanded .ae-picker-label,.ae-font.ae-expanded .ae-picker-label svg{color:#ccc;z-index:2}.ae-font.ae-expanded .ae-picker-label svg .ae-stroke{stroke:#ccc}.ae-font.ae-expanded .ae-picker-options{display:block;margin-top:-1px;top:100%;z-index:3;border-color:#ccc}\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { options: [{\n type: Input\n }], hidden: [{\n type: HostBinding,\n args: ['style.display']\n }], changeEvent: [{\n type: Output,\n args: ['change']\n }], onClick: [{\n type: HostListener,\n args: ['document:click', ['$event']]\n }], handleKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], isHidden: [{\n type: Input,\n args: ['hidden']\n }], labelButton: [{\n type: ViewChild,\n args: ['labelButton', { static: true }]\n }] }); })();\nif (false) {\n /** @type {?} */\n AeSelectComponent.prototype.options;\n /** @type {?} */\n AeSelectComponent.prototype.isHidden;\n /** @type {?} */\n AeSelectComponent.prototype.selectedOption;\n /** @type {?} */\n AeSelectComponent.prototype.disabled;\n /** @type {?} */\n AeSelectComponent.prototype.optionId;\n /** @type {?} */\n AeSelectComponent.prototype.opened;\n /** @type {?} */\n AeSelectComponent.prototype.hidden;\n /** @type {?} */\n AeSelectComponent.prototype.changeEvent;\n /** @type {?} */\n AeSelectComponent.prototype.labelButton;\n /** @type {?} */\n AeSelectComponent.prototype.onChange;\n /** @type {?} */\n AeSelectComponent.prototype.onTouched;\n /**\n * @type {?}\n * @private\n */\n AeSelectComponent.prototype.elRef;\n /**\n * @type {?}\n * @private\n */\n AeSelectComponent.prototype.r;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/angular-editor.module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass AngularEditorModule {\n}\nAngularEditorModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: AngularEditorModule });\nAngularEditorModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function AngularEditorModule_Factory(t) { return new (t || AngularEditorModule)(); }, imports: [[\n CommonModule, FormsModule, ReactiveFormsModule\n ]] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AngularEditorModule, { declarations: function () { return [AngularEditorComponent,\n AngularEditorToolbarComponent,\n AeSelectComponent]; }, imports: function () { return [CommonModule, FormsModule, ReactiveFormsModule]; }, exports: function () { return [AngularEditorComponent,\n AngularEditorToolbarComponent]; } }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(AngularEditorModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule, FormsModule, ReactiveFormsModule\n ],\n declarations: [AngularEditorComponent, AngularEditorToolbarComponent, AeSelectComponent],\n exports: [AngularEditorComponent, AngularEditorToolbarComponent]\n }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: public-api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: kolkov-angular-editor.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { AngularEditorComponent, AngularEditorModule, AngularEditorService, AngularEditorToolbarComponent, AeSelectComponent as ɵa };\n\n//# sourceMappingURL=kolkov-angular-editor.js.map","\r\n \r\n Client Checkin\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n CheckIn Setting\r\n \r\n \r\n Allow To Upload Progress Images\r\n
\r\n \r\n
\r\n \r\n Weekly\r\n Monthly\r\n BiWeekly\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Select on which day you want the system to prompt your client to checkin. Not selecting any day will\r\n disable prompt.

\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n Message\r\n \r\n
\r\n Send By Email\r\n Send by TrainerFriend Chat\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n CheckIn Form\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
{{ field.name }}
\r\n
\r\n
\r\n \r\n
\r\n
{{ field.name }}
\r\n
All default fields are used
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Drag and drop fields here\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { CalorieFriendComponent } from './calorie-friend.component';\r\n\r\nimport { PatientsComponent } from './Patients/patients.component';\r\nimport { PatientComponent } from './Patient/patient.component';\r\n\r\nimport { GoalListComponent } from './Goals/GoalList/goal-list.component';\r\nimport { GoalDefComponent } from './Goals/GoalDef/goal-def.component';\r\nimport { GoalFormResolverModule } from './Goals/goal-form-resolver.module';\r\n\r\nimport { SectionLayoutComponent } from './Patients/SectionLayout/section-layout.component';\r\nimport { PatientSheetViewComponent } from './PatientSheetView/patient-sheet-view.component';\r\n\r\nimport { MealViewerComponent } from './Plans/Viewer/View/meal-viewer.component';\r\nimport {\r\n EditMealPlanDefComponent,\r\n AddMealPlanDefComponent,\r\n MealPlanDefComponent,\r\n} from './Plans/PlanDef/plan-def.component';\r\n\r\nimport { AuthGuard } from '../../@auth/guards/auth.guard';\r\nimport { PendingChangesGuard } from 'app/@auth/guards/changes.guard';\r\nimport { InitialFormGuard } from 'app/@auth/guards/initial-form.guard';\r\nimport { SubscriptionPlanComponent } from './SubscriptionPlan/subscription-plan.component';\r\nimport {\r\n AddFitnessPlanDefComponent,\r\n EditFitnessPlanDefComponent,\r\n FitnessPlanDefComponent,\r\n} from './FitnessPlans/PlanDef/fitness-plan-def.component';\r\nimport { FitnessPlanTemplatesComponent } from './Plans/fitness-plan-templates/templates.component';\r\nimport { FitnessPlanTemplateResolver } from './Plans/fitness-plan-templates/template.resolver';\r\nimport { CustomExerciseListComponent } from './custom-exercise/exercise-list/exercise-list.component';\r\nimport { MealPlanTemplateResolver } from './Plans/meal-plan-templates/template.resolver';\r\nimport { MealPlanTemplatesComponent } from './Plans/meal-plan-templates/templates.component';\r\nimport { CustomFoodsComponent } from './custom-foods/custom-foods.component';\r\nimport { BrandComponent } from './brand/brand.component';\r\nimport { HelpGuidesComponent } from './help-guides/help-guides.component';\r\nimport { BillingComponent } from './billing/billing.component';\r\nimport { ProgramTemplatesComponents } from './program-templates/program-templates.component';\r\nimport { ProgramTemplateEditComponent } from './program-templates/program-template-edit/program-template-edit.component';\r\nimport { AssessmentSettingComponent } from './assessmentSetting/assessmentSetting.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: CalorieFriendComponent,\r\n children: [\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n path: '',\r\n redirectTo: 'Patients',\r\n pathMatch: 'full',\r\n },\r\n {\r\n canActivate: [AuthGuard],\r\n path: 'Patients',\r\n component: PatientsComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n canDeactivate: [PendingChangesGuard],\r\n path: 'NewPatient',\r\n component: PatientComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n canDeactivate: [PendingChangesGuard],\r\n path: 'NewPatient/FromTutorial',\r\n component: PatientComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n path: 'Patient/:id',\r\n component: PatientComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n canDeactivate: [PendingChangesGuard],\r\n path: 'PatientSheetView/:PatientId',\r\n component: PatientSheetViewComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n canDeactivate: [PendingChangesGuard],\r\n path: 'PatientSheetView/:PatientId/FromTutorial',\r\n component: PatientSheetViewComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n path: 'Goals/:PatientId',\r\n component: GoalListComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n path: 'NewGoal/:PatientId',\r\n component: GoalDefComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n path: 'Goal/:PatientId/:ID',\r\n component: GoalDefComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n path: 'PlanList/:PatientId',\r\n component: SectionLayoutComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n path: 'my-food',\r\n component: CustomFoodsComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n path: 'plans/templates/meal',\r\n component: MealPlanTemplatesComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n canDeactivate: [PendingChangesGuard],\r\n path: 'Template/:id',\r\n component: MealPlanDefComponent,\r\n resolve: { templateData: MealPlanTemplateResolver },\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n path: 'MealPlan/:PatientId',\r\n component: MealViewerComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n canDeactivate: [PendingChangesGuard],\r\n path: 'MealPlanEdit/:planId',\r\n component: EditMealPlanDefComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n path: 'PatientMealPlan/:PatientId/:PlanId',\r\n component: MealViewerComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n canDeactivate: [PendingChangesGuard],\r\n path: 'NewPlan/:PatientId',\r\n component: AddMealPlanDefComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n canDeactivate: [PendingChangesGuard],\r\n path: 'NewPlan/:PatientId/FromTutorial',\r\n component: AddMealPlanDefComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n path: 'manage-subscription',\r\n component: SubscriptionPlanComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n canDeactivate: [PendingChangesGuard],\r\n path: 'NewFitnessPlan/:PatientId',\r\n component: AddFitnessPlanDefComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n canDeactivate: [PendingChangesGuard],\r\n path: 'NewFitnessPlan/:PatientId/FromTutorial',\r\n component: AddFitnessPlanDefComponent,\r\n },\r\n\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n canDeactivate: [PendingChangesGuard],\r\n path: 'FitnessPlanEdit/:PlanId',\r\n component: EditFitnessPlanDefComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n path: 'plans/templates/fitness',\r\n component: FitnessPlanTemplatesComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n canDeactivate: [PendingChangesGuard],\r\n path: 'FitnessTemplate/:id',\r\n component: FitnessPlanDefComponent,\r\n resolve: { templateData: FitnessPlanTemplateResolver },\r\n },\r\n {\r\n canActivate: [AuthGuard, InitialFormGuard],\r\n path: 'my-exercise',\r\n component: CustomExerciseListComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard],\r\n path: 'brand',\r\n component: BrandComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard],\r\n path: 'help',\r\n component: HelpGuidesComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard],\r\n path: 'Billing',\r\n component: BillingComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard],\r\n path: 'program-template',\r\n component: ProgramTemplatesComponents,\r\n },\r\n {\r\n canActivate: [AuthGuard],\r\n path: 'program-template/:id',\r\n component: ProgramTemplateEditComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard],\r\n path: 'program-template/meal/:programTemplateId/:planIndex',\r\n component: MealPlanDefComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard],\r\n path: 'program-template/fitness/:programTemplateId/:planIndex',\r\n component: FitnessPlanDefComponent,\r\n },\r\n {\r\n canActivate: [AuthGuard],\r\n path: 'settings',\r\n component: AssessmentSettingComponent,\r\n }\r\n ],\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n providers: [GoalFormResolverModule],\r\n})\r\nexport class CalorieFriendRoutingModule {}\r\n","import { CdkDragDrop, copyArrayItem, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { NbDialogService, NbToastRef, NbToastrService } from '@nebular/theme';\r\nimport { FormlyFieldConfig, FormlyFormOptions } from '@ngx-formly/core';\r\nimport { AssessmentSettingService } from 'app/@core/backend/common/services/CalorieFriend/assessment-settings.service';\r\nimport { UserStore } from 'app/@core/stores/user.store';\r\nimport {cloneDeep} from 'lodash';\r\nimport { AssessmentFormSettingsComponent } from './assessmentFormSettings.component';\r\nimport { AssessmentDescriptiveValues } from '../PatientSheetView/Assessments/DescriptiveValues';\r\nimport { defaultFormValues } from 'app/@core/utils/defaultFormValues';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { UsersService } from 'app/@core/backend/common/services/users.service';\r\n\r\n@Component({\r\n selector: 'app-assessment-setting',\r\n templateUrl: './assessmentSetting.component.html',\r\n styleUrls: ['./assessmentSetting.component.scss'],\r\n})\r\nexport class AssessmentSettingComponent implements OnInit {\r\n public form: FormGroup;\r\n public daysOfWeek = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n public primaryColor;\r\n public secondaryColor;\r\n public previewForm: boolean = false;\r\n public isLoading: boolean = false;\r\n options: FormlyFormOptions = {\r\n formState: {\r\n customData: {\r\n isImperial: true,\r\n // Add more custom data as needed\r\n }\r\n }\r\n };\r\n\r\n fields = [\r\n { type: 'nbInput', name: 'Text Input', templateOptions: { label: 'Label', placeholder: 'Placeholder', required: false } },\r\n { type: 'nbInputNumber', name: 'Number Input', templateOptions: { label: 'Label', placeholder: 'Placeholder', required: false } },\r\n { type: 'nbCheckbox', name: 'Checkbox', templateOptions: { label: 'Label', required: false } },\r\n { type: 'nbRadio', name: 'Radio', templateOptions: { label: 'Label', options: [{ value: 'Option 1', label: 'Option 1' }, { value: 'Option 2', label: 'Option 2' }], required: false } },\r\n { type: 'nbSelect', name: 'Dropdown', templateOptions: { label: 'Label', options: [{ value: 'Option 1', label: 'Option 1' }, { value: 'Option 2', label: 'Option 2' }], required: false } },\r\n { type: 'nbTextarea', name: 'Textarea', templateOptions: { label: 'Label', placeholder: 'Placeholder', required: false } },\r\n // { type: 'nbWeight', name: 'Weight', templateOptions: { label: 'Label', placeholder: 'Placeholder', required: false, isImperial: false } },\r\n // add more field types as needed\r\n ];\r\n\r\n default = defaultFormValues;\r\n\r\n formStructureFields: FormlyFieldConfig[] = [ ];\r\n model={};\r\n constructor(private assessmentSettingService: AssessmentSettingService,\r\n private dialogService: NbDialogService,\r\n private fb: FormBuilder,\r\n private toasterService: NbToastrService,\r\n private userService: UsersService,\r\n ) {\r\n this.form = this.fb.group({\r\n id: [null],\r\n uploadProgressImages: [true],\r\n assessmentFrequency: [1],\r\n sendByEmail: [true],\r\n sendByMessage: [false],\r\n messageText: [`

Hello {ClientName},


\r\n

\r\n In order to assist you in achieving your goals, we kindly request that you complete a quick self-assessment form on how things went this week. Filling out the form should take you less than a minute, and over time, it will provide crucial information on how to optimize and personalize your plan.\r\n

`],\r\n daysOfWeek: [['Sunday']],\r\n questionsToAsk: [null],\r\n customQuestion: [null],\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.getAssessmentSettings();\r\n }\r\n\r\n public getAssessmentSettings(): void {\r\n this.isLoading = true;\r\n this.assessmentSettingService.getAssessmentSettings()\r\n .pipe(finalize(() => this.isLoading = false))\r\n .subscribe((data) => {\r\n if(data)\r\n {this.form.patchValue({\r\n ...data,\r\n messageText: data?.messageText || `

Hello {ClientName},


\r\n

\r\n In order to assist you in achieving your goals, we kindly request that you complete a quick self-assessment form on how things went this week. Filling out the form should take you less than a minute, and over time, it will provide crucial information on how to optimize and personalize your plan.\r\n

`,\r\n daysOfWeek: JSON.parse(data?.daysOfWeek || '[\"Sunday\"]'),\r\n });\r\n if(data?.customQuestion) {\r\n this.formStructureFields = JSON.parse(data.customQuestion);\r\n }\r\n }else {\r\n this.formStructureFields = this.default;\r\n }\r\n }, error => {\r\n this.formStructureFields = this.default;\r\n });\r\n }\r\n\r\n public get defaultFields(): FormlyFieldConfig[] {\r\n let obj = {};\r\n this.formStructureFields.forEach((field) => {\r\n obj[field.key.toString()] = true;\r\n });\r\n return this.default.filter((field) => !obj[field.key.toString()]);\r\n }\r\n\r\n public onSubmit(): void {\r\n if (this.form.valid) {\r\n this.isLoading = true;\r\n // this.formStructureFields = this.formStructureFields.map((field,index) => {\r\n // field.key = `${field.type}__${Date.now()}__${index}`;\r\n // return field;\r\n // });\r\n this.assessmentSettingService.updateAssessmentSettings({...this.form.value, daysOfWeek: JSON.stringify(this.form.value.daysOfWeek), customQuestion: JSON.stringify(this.formStructureFields)})\r\n .pipe(finalize(() => this.isLoading = false))\r\n .subscribe(() => {\r\n this.toasterService.success('','Assessment settings updated successfully');\r\n }, error => {\r\n this.toasterService.danger('','Error updating Assessment settings');\r\n });\r\n }\r\n }\r\n\r\n public onDaySelectChange(day: string): void {\r\n const days = this.form.get('daysOfWeek').value || [];\r\n if (days.includes(day)) {\r\n const index = days.indexOf(day);\r\n if (index >= 0) {\r\n days.splice(index, 1);\r\n }\r\n } else {\r\n days.push(day);\r\n }\r\n this.form.get('daysOfWeek').setValue(days);\r\n }\r\n\r\n drop(event: CdkDragDrop) {\r\n if (event.previousContainer === event.container) {\r\n console.log(\"Moving\");\r\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n } else {\r\n console.log(\"Copying...\", event.container.data, event.previousContainer.data[event.previousIndex].type);\r\n let tempData = cloneDeep(event.previousContainer.data) as FormlyFieldConfig[];\r\n if(!(tempData[event.previousIndex] as any).defaultField) tempData[event.previousIndex].key = `${event.previousContainer.data[event.previousIndex].type}__${Date.now()}__${event.container.data.length + 1}`;\r\n copyArrayItem(tempData,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex);\r\n }\r\n }\r\n addDuplicate(field: FormlyFieldConfig): void {\r\n let temp = cloneDeep(field);\r\n temp.key = `${field.type}_${this.formStructureFields.length + 1}`;\r\n this.formStructureFields.push(temp);\r\n }\r\n deleteField(index: number): void {\r\n this.formStructureFields.splice(index, 1);\r\n }\r\n\r\n editField(index: number): void {\r\n this.dialogService.open(AssessmentFormSettingsComponent, {\r\n context: {\r\n field: cloneDeep(this.formStructureFields[index]),\r\n },\r\n }).onClose.subscribe((data) => {\r\n if (data) {\r\n this.formStructureFields[index] = data;\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { FieldType } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'formly-field-nb-input',\r\n template: `\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n

{{to.label}} is required.

\r\n
\r\n
\r\n `,\r\n})\r\nexport class FormlyFieldNbInput extends FieldType { }\r\n","import { Component } from '@angular/core';\r\nimport { FieldType } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'formly-field-nb-radio',\r\n template: `\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {{ option.label }}\r\n \r\n

{{to.label}} is required.

\r\n
\r\n
\r\n `,\r\n})\r\nexport class FormlyFieldNbRadio extends FieldType {}\r\n","import { Component } from '@angular/core';\r\nimport { FieldType } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'formly-field-nb-checkbox',\r\n template: `\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{ to.label }}\r\n
\r\n
\r\n `,\r\n})\r\nexport class FormlyFieldNbCheckbox extends FieldType {}\r\n","import { Component } from '@angular/core';\r\nimport { FieldType } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'formly-field-nb-textarea',\r\n template: `\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n

{{to.label}} is required.

\r\n
\r\n `,\r\n})\r\nexport class FormlyFieldNbTextarea extends FieldType {}\r\n","import { Component } from '@angular/core';\r\nimport { FieldType } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'formly-field-nb-select',\r\n template: `\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {{ option.label }}\r\n \r\n

{{to.label}} is required.

\r\n
\r\n
\r\n `,\r\n})\r\nexport class FormlyFieldNbSelect extends FieldType { }\r\n","// error-message.component.ts\r\nimport { Component, Input } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { FormlyFieldConfig } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'formly-error-message',\r\n template: `\r\n
{{ errorMessage }}
\r\n `,\r\n})\r\nexport class FormlyWrapperErrorMessageComponent {\r\n @Input() field: FormlyFieldConfig;\r\n\r\n get errorMessage() {\r\n for (let error in this.field.formControl.errors) {\r\n if (this.field.formControl.errors.hasOwnProperty(error) && this.field.formControl.touched) {\r\n return this.field.validation.messages[error];\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n","// error-wrapper.component.ts\r\nimport { Component } from '@angular/core';\r\nimport { FieldWrapper } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'formly-wrapper-error',\r\n template: `\r\n \r\n \r\n `,\r\n})\r\nexport class FormlyErrorWrapperComponent extends FieldWrapper {}\r\n","import { Component } from '@angular/core';\r\nimport { FieldType } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'formly-field-nb-input-number',\r\n template: `\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n

{{to.label}} is required.

\r\n
\r\n
\r\n `,\r\n})\r\nexport class FormlyFieldNbInputNumber extends FieldType { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FieldType } from '@ngx-formly/core';\r\n\r\n@Component({\r\n selector: 'formly-field-nb-weight',\r\n template: `\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n

{{to.label}} is required.

\r\n
\r\n
\r\n `,\r\n})\r\nexport class FormlyFieldNbWeight extends FieldType implements OnInit {\r\n type: string = 'number';\r\n displayValue: number | null = null; // This will hold the display value\r\n\r\n ngOnInit() {\r\n this.to.unit = this.options.formState.customData.isImperial ? 'lbs' : 'kg';\r\n // Initialize displayValue based on the formControl value\r\n this.displayValue = this.options.formState.customData.isImperial ? this.convertKgToLbs(this.formControl.value) : this.formControl.value;\r\n }\r\n\r\n onInputChange(value: string) {\r\n let numericValue = parseFloat(value);\r\n // Convert the display value back to kg before setting it to the form control\r\n if (this.options.formState.customData.isImperial) {\r\n this.formControl.setValue(this.convertLbsToKg(numericValue));\r\n } else {\r\n this.formControl.setValue(numericValue);\r\n }\r\n }\r\n\r\n convertKgToLbs(kg: number): number {\r\n return +((kg * 2.20462).toFixed(2));\r\n }\r\n\r\n convertLbsToKg(lbs: number): number {\r\n return +((lbs / 2.20462).toFixed(2));\r\n }\r\n}\r\n","// formly.module.ts\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FormlyModule } from '@ngx-formly/core';\r\nimport { FormlyFieldNbInput } from './formly-fields/formly-field-nb-input';\r\nimport { FormlyFieldNbRadio } from './formly-fields/formly-field-nb-radio';\r\nimport { FormlyFieldNbCheckbox } from './formly-fields/formly-field-nb-checkbox';\r\nimport { FormlyFieldNbTextarea } from './formly-fields/formly-field-nb-textarea';\r\nimport { NbCheckboxModule, NbInputModule, NbRadioModule, NbSelectModule } from '@nebular/theme';\r\nimport { FormlyFieldNbSelect } from './formly-fields/formly-field-nb-select';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormlyWrapperErrorMessageComponent } from './formly-fields/formly-wrapper-error';\r\nimport { FormlyErrorWrapperComponent } from './formly-fields/formly-wrapper-error.component';\r\nimport { FormlyFieldNbInputNumber } from './formly-fields/formly-field-nb-input-number';\r\nimport { PoundsAndKgComponent } from 'app/@components/pounds-and-kg/pounds-and-kg.component';\r\nimport { FormlyFieldNbWeight } from './formly-fields/formly-field-nb-weight';\r\nimport { ComponentsModule } from 'app/@components/components.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n NbInputModule,\r\n NbSelectModule,\r\n NbCheckboxModule,\r\n NbRadioModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ComponentsModule,\r\n FormlyModule.forRoot({\r\n wrappers: [\r\n { name: 'formly-wrapper-error', component: FormlyErrorWrapperComponent },\r\n ],\r\n types: [\r\n { name: 'nbInput', component: FormlyFieldNbInput },\r\n { name: 'nbRadio', component: FormlyFieldNbRadio },\r\n { name: 'nbCheckbox', component: FormlyFieldNbCheckbox },\r\n { name: 'nbTextarea', component: FormlyFieldNbTextarea },\r\n { name: 'nbSelect', component: FormlyFieldNbSelect },\r\n { name: 'nbInputNumber', component: FormlyFieldNbInputNumber },\r\n { name: 'nbWeight', component: FormlyFieldNbWeight },\r\n ],\r\n }),\r\n ],\r\n declarations: [\r\n FormlyFieldNbInput,\r\n FormlyFieldNbRadio,\r\n FormlyFieldNbCheckbox,\r\n FormlyFieldNbTextarea,\r\n FormlyFieldNbSelect,\r\n FormlyWrapperErrorMessageComponent,\r\n FormlyFieldNbInputNumber,\r\n FormlyErrorWrapperComponent,\r\n FormlyFieldNbWeight,\r\n ],\r\n exports: [\r\n ReactiveFormsModule,\r\n FormlyModule,\r\n CommonModule,\r\n ]\r\n})\r\nexport class FormlyNebularModule { }\r\n","import { WorkoutLogsModalComponent } from './PatientSheetView/workout-logs-modal/workout-logs-modal.component';\r\nimport { WorkoutService } from './../../@core/backend/common/services/CalorieFriend/workout.service';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { NgxChartsModule } from '@swimlane/ngx-charts';\r\nimport { ChartModule } from 'angular2-chartjs';\r\nimport { VirtualScrollerModule } from 'ngx-virtual-scroller';\r\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\r\nimport { OwlDateTimeModule, OwlNativeDateTimeModule } from 'ng-pick-datetime';\r\nimport { NgxIntlTelInputModule } from 'ngx-intl-tel-input';\r\nimport { GaugeModule } from \"angular-gauge\";\r\nimport {\r\n NbTabsetModule,\r\n NbToggleModule,\r\n NbSelectModule,\r\n NbProgressBarModule,\r\n NbDialogModule,\r\n NbPopoverModule,\r\n NbFormFieldModule,\r\n NbAutocompleteModule,\r\n NbAccordionModule,\r\n NbIconModule,\r\n NbCardModule,\r\n NbInputModule,\r\n NbSpinnerModule,\r\n NbRadioModule,\r\n NbDatepickerModule,\r\n NbCheckboxModule,\r\n NbButtonModule,\r\n NbAlertModule,\r\n NbThemeService,\r\n NbUserModule,\r\n NbCalendarModule,\r\n NbBadgeModule,\r\n NbTooltipModule\r\n} from '@nebular/theme';\r\nimport { NbEvaIconsModule } from '@nebular/eva-icons';\r\nimport { JoyrideModule } from 'ngx-joyride';\r\nimport { Ng2SmartTableModule } from 'ng2-smart-table';\r\nimport { ImageCropperModule } from 'ngx-image-cropper';\r\nimport { CalendarModule, DateAdapter } from 'angular-calendar';\r\nimport { adapterFactory } from 'angular-calendar/date-adapters/date-fns';\r\n\r\nimport { MaterialModule } from 'app/@components/material.module';\r\nimport { ComponentsModule } from '../../@components/components.module';\r\nimport { GraphModule } from 'app/admin/public-foods/meal-metrics-graph/meal-metrics-graph.module';\r\nimport { MealPresentationModule } from './Plans/PlanMeals/Meal/MealLayout/MealPresentation/meal-presentation.module';\r\nimport { MealItemsPresentationModule } from './Plans/PlanMeals/Meal/MealLayout/MealItemsPresentation/meal-items-presentation.module';\r\nimport { MealItemPresentationModule } from './Plans/PlanMeals/Meal/MealLayout/MealItemPresentation/meal-item-presentation.module';\r\nimport { CalorieFriendRoutingModule } from './calorie-friend-routing.module';\r\n\r\nimport { CalorieFriendComponent } from './calorie-friend.component';\r\nimport { PatientsComponent } from './Patients/patients.component';\r\nimport { PatientComponent } from './Patient/patient.component';\r\nimport { PaymentInfoComponent } from './Dashboard/payment-info/payment-info.component';\r\nimport { GoalListComponent } from './Goals/GoalList/goal-list.component';\r\nimport { GoalDefComponent } from './Goals/GoalDef/goal-def.component';\r\nimport { SectionLayoutComponent } from './Patients/SectionLayout/section-layout.component';\r\nimport { PlanListComponent } from './Plans/PlanList/plan-list.component';\r\nimport {\r\n MealPlanDefComponent,\r\n MealPlanViewComponent,\r\n EditMealPlanDefComponent,\r\n PlanDayLabelComponent,\r\n AddMealPlanDefComponent,\r\n} from './Plans/PlanDef/plan-def.component';\r\nimport { MealComponent } from './Plans/PlanMeals/Meal/meal.component';\r\nimport {\r\n MealPlanDayComponent,\r\n MealPlanDayStaticComponent,\r\n MealPlanDayReportComponent,\r\n MealPlanDayDialogComponent,\r\n MealPlanDayMobileLayoutComponent,\r\n} from './Plans/PlanDay/plan-day.component';\r\nimport { MealItemsComponent } from './Plans/PlanMeals/MealItems/meal-items.component';\r\nimport { MealQuantityComponent } from './Plans/PlanMeals/Meal/MealQuantity/meal-quantity.component';\r\nimport {\r\n FitnessPlanTemplateSelectComponent,\r\n PlanTemplateSelectComponent,\r\n TemplateNameComponent,\r\n} from './Plans/PlanTemplate/ListSelection/plan-template-select.component';\r\nimport { TemplateGenerateComponent } from './Plans/PlanList/template-generate.component';\r\nimport { TempGoalListComponent } from './Goals/TempGoalList/temp-goal-list.component';\r\nimport { TempGoalDefComponent } from './Goals/TempGoalDef/temp-goal-def.component';\r\nimport { ServingSizeComponent } from './Plans/PlanMeals/Meal/ServingSize/serving-size.component';\r\nimport {\r\n ServingSizeSelectionComponent,\r\n ServingSizeSelectionDiaryComponent,\r\n} from './Plans/PlanMeals/Meal/ServingSize/Selection/serving-size-selection.component';\r\nimport { NutritionalFactsComponent } from './Plans/PlanMeals/Meal/NutritionalFacts/nutritional-facts.component';\r\nimport { ItemPortionsComponent } from './Plans/PlanMeals/Meal/ItemPortions/item-portions.component';\r\nimport { PatientGeneralInfoComponent } from './PatientSheetView/patient-general-info/patient-general-info.component';\r\nimport { GoalsListViewComponent } from './PatientSheetView/GoalsListView/goals-list-view.component';\r\nimport { MealViewerComponent } from './Plans/Viewer/View/meal-viewer.component';\r\nimport { PatientProgressComponent } from './PatientSheetView/patient-progress/patient-progress.component';\r\nimport { CustomPatientNameFieldComponent } from './Patients/CustomPatientNameField/CustomPatientNameField.component';\r\nimport { ReportMealPlanViewComponent } from './Plans/PlanDef/plan-def.component';\r\nimport {\r\n PatientProfileComponent,\r\n PatientProfileAnonymousComponent,\r\n} from './Plans/Viewer/PatientProfile/patient-profile.component';\r\nimport { AssessmentInputComponent } from './Customers/Assessments/assessment.component';\r\nimport { PlanDataService } from './Plans/PlanDef/PlanService';\r\nimport { UpgradePlanComponent } from './Patients/UpgradePlan/upgrade-plan.component';\r\nimport { InitialUserInfoComponent } from './InitialUserInfo/initial-user-info.component';\r\nimport { SubscriptionPlanComponent } from './SubscriptionPlan/subscription-plan.component';\r\nimport { TutorialFinalModalComponent } from './tutorial-final-modal/TutorialFinalModal.component';\r\nimport {\r\n AddFitnessPlanDefComponent,\r\n EditFitnessPlanDefComponent,\r\n FitnessPlanDefComponent,\r\n} from './FitnessPlans/PlanDef/fitness-plan-def.component';\r\nimport {\r\n DayFitnessSummaryComponent,\r\n FitnessSummaryComponent,\r\n} from './FitnessPlans/FitnessSummary/fitness-summary.component';\r\nimport {\r\n FitnessPlanDayComponent,\r\n FitnessPlanDayMobieComponent,\r\n} from './FitnessPlans/PlanDay/fitness-plan-day.component';\r\nimport { ExerciseEditComponent } from './FitnessPlans/ExerciseEdit/exercise-edit.component';\r\nimport {\r\n FitnessBlockComponent,\r\n FitnessBlockMobileComponent,\r\n} from './FitnessPlans/FitnessBlock/fitness-block.component';\r\nimport {\r\n FitnessItemsListPresentationComponent,\r\n FitnessItemsListPresentationMobileComponent,\r\n} from './FitnessPlans/FitnessItemsListPresentation/fitness-items-list-presentation.component';\r\nimport { FitnessItemPresentationComponent } from './FitnessPlans/FitnessItemPresentation/fitness-item-presentation.component';\r\nimport { OverlayFitnessItemPresentationComponent } from './FitnessPlans/FitnessItemPresentation/fitness-item-presentation-overlay.component';\r\nimport { AddFitnessItemsComponent } from './FitnessPlans/AddFitnessItems/add-fitness-items.component';\r\nimport { FitnessPlanTemplateCreateComponent } from './FitnessPlans/plan-template-create/plan-template-create.component';\r\nimport { FitnessPlanTemplatesComponent } from './Plans/fitness-plan-templates/templates.component';\r\nimport { FitnessPlanTemplateResolver } from './Plans/fitness-plan-templates/template.resolver';\r\nimport { CustomExerciseListComponent } from './custom-exercise/exercise-list/exercise-list.component';\r\nimport { CustomExerciseDefComponent } from './custom-exercise/CustomExerciseDef/customexercise-def.component';\r\nimport { PatientExerciseProgressListComponent } from './PatientSheetView/exercise-progress-list/exercise-progress-list.component';\r\nimport { EditAssessmentComponent } from './PatientSheetView/Assessments/edit-assessment.component';\r\nimport { PatientSheetViewComponent } from './PatientSheetView/patient-sheet-view.component';\r\nimport { ThemeModule } from 'app/@theme/theme.module';\r\nimport { PatientBiometricHistoryListComponent } from './PatientSheetView/biometric-history-list/biometric-history-list.component';\r\nimport { PatientAssessmentListComponent } from './PatientSheetView/assessment-list/assessment-list.component';\r\nimport { PlanTemplateListComponent } from './Plans/template-list/template-list.component';\r\nimport { MealPlanTemplatesComponent } from './Plans/meal-plan-templates/templates.component';\r\nimport { MealPlanTemplateResolver } from './Plans/meal-plan-templates/template.resolver';\r\nimport { FoodListComponent } from './custom-foods/food-list/food-list.component';\r\nimport { CustomFoodsComponent } from './custom-foods/custom-foods.component';\r\nimport { BrandComponent } from './brand/brand.component';\r\nimport { PremiumModalComponent } from './premium-modal/premium-modal.component';\r\nimport { PremiumTrialReminderComponent } from './premium-trial-reminder/premium-trial-reminder.component';\r\nimport { AssingPlanClientComponent } from './assing-plan-client/assing-plan-client.component';\r\nimport { HelpGuidesComponent } from './help-guides/help-guides.component';\r\nimport { PlanListItemComponent } from './PatientSheetView/patient-program/plan-list-item/plan-list-item.component';\r\nimport { PatientCalendarModalComponent } from './PatientSheetView/calendar-modal/calendar-modal.component';\r\nimport { PatientProgramComponent } from './PatientSheetView/patient-program/patient-program.component';\r\nimport { HowToModalComponent } from './how-to-modal/how-to-modal.component';\r\nimport { HowToModalComponentDialog } from './how-to-modal/how-to-modal.component';\r\nimport { FitnessWorkoutComponent } from './FitnessPlans/FitnessWorkout/fitness-workout.component';\r\nimport { FitnessWorkoutOverlayComponent } from './FitnessPlans/FitnessWorkout/FitnessWorkoutOverlay/fitness-workout-overlay.component';\r\nimport { FitnessWorkoutLogItemComponent } from './FitnessPlans/FitnessWorkoutLogItem/fitness-workout-log-item.component';\r\nimport { ExerciseService } from 'app/@core/backend/common/services/CalorieFriend/exercise-service';\r\nimport { ExerciseLogService } from 'app/@core/backend/common/services/CalorieFriend/exerciseLog-service';\r\nimport { FoodDiaryLogModalComponent } from './PatientSheetView/food-diary-log-modal/food-diary-log-modal.component';\r\nimport { FoodDiaryAppComponent } from 'app/frontends/food-tracking/food-diary-app/food-diary-app.component';\r\nimport { ProgramOverviewComponent } from './PatientSheetView/program-overview/program-overview.component';\r\nimport { PaymentSettingsService } from 'app/@core/backend/common/services/CalorieFriend/payment-settings.service';\r\nimport { InvoicesService } from 'app/@core/backend/common/services/CalorieFriend/invoices.service';\r\nimport { RecurringInvoicesService } from 'app/@core/backend/common/services/CalorieFriend/recurring-invoices.service';\r\nimport { PatientsService } from 'app/@core/backend/common/services/CalorieFriend/patients.service';\r\nimport { MacroGoalsComponent } from './PatientSheetView/macro-goals/macro-goals.component';\r\nimport { BillingComponent } from './billing/billing.component';\r\nimport { PaymentSettingsComponent } from './billing/payment-settings/payment-settings.component';\r\nimport { PatientSubscriptionsMetaService } from 'app/@core/backend/common/services/CalorieFriend/patient-subscriptions-meta.service';\r\nimport { PatientSubscriptionsDataService } from 'app/@core/backend/common/services/CalorieFriend/patient-subscriptions-data.service';\r\nimport { GramConverterPipe } from 'app/@theme/pipes';\r\nimport { ProgramTemplatesComponents } from './program-templates/program-templates.component';\r\nimport { ProgramTemplateCreateComponent } from './program-templates/program-template-create/program-template-create.component';\r\nimport { ProgramTemplateEditComponent } from './program-templates/program-template-edit/program-template-edit.component';\r\nimport { AssessmentSettingComponent } from './assessmentSetting/assessmentSetting.component';\r\nimport { FormlyNebularModule } from 'app/@theme/formly/formly-nebullar.module';\r\nimport { AssessmentFormSettingsComponent } from './assessmentSetting/assessmentFormSettings.component';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { WorkoutLogsDetailsComponent } from './PatientSheetView/workout-logs-modal/workout-logs-details/workout-logs-details.component';\r\nimport { AppSettingsComponent } from 'app/@components/app-settings/app-settings.component';\r\n\r\nconst NB_MODULES = [\r\n NbButtonModule,\r\n NbInputModule,\r\n NbTabsetModule,\r\n NbToggleModule,\r\n NbSelectModule,\r\n NbProgressBarModule,\r\n NbPopoverModule,\r\n NbDialogModule.forChild(),\r\n NbFormFieldModule,\r\n NbEvaIconsModule,\r\n NbAutocompleteModule,\r\n NbAccordionModule,\r\n NbIconModule,\r\n NbCardModule,\r\n NbAlertModule,\r\n NbSpinnerModule,\r\n NbRadioModule,\r\n NbCalendarModule,\r\n NbDatepickerModule,\r\n NbCheckboxModule,\r\n NbBadgeModule,\r\n NbTooltipModule\r\n];\r\n\r\nconst MAT_MODULES = [MaterialModule];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CalorieFriendRoutingModule,\r\n ThemeModule,\r\n ComponentsModule,\r\n NbUserModule,\r\n AngularEditorModule,\r\n ...NB_MODULES,\r\n ...MAT_MODULES,\r\n GraphModule,\r\n MealPresentationModule,\r\n MealItemPresentationModule,\r\n MealItemsPresentationModule,\r\n Ng2SmartTableModule,\r\n NgxMaterialTimepickerModule,\r\n OwlDateTimeModule,\r\n OwlNativeDateTimeModule,\r\n NgxChartsModule,\r\n VirtualScrollerModule,\r\n DragDropModule,\r\n ChartModule,\r\n JoyrideModule.forChild(),\r\n ImageCropperModule,\r\n CalendarModule.forRoot({\r\n provide: DateAdapter,\r\n useFactory: adapterFactory,\r\n }),\r\n NgxIntlTelInputModule,\r\n GaugeModule.forRoot(),\r\n FormlyNebularModule,\r\n ],\r\n declarations: [\r\n CalorieFriendComponent,\r\n PatientsComponent,\r\n PatientComponent,\r\n GoalListComponent,\r\n GoalDefComponent,\r\n SectionLayoutComponent,\r\n PlanListComponent,\r\n MealPlanDefComponent,\r\n MealComponent,\r\n MealPlanDayComponent,\r\n MealPlanDayMobileLayoutComponent,\r\n MealItemsComponent,\r\n MealQuantityComponent,\r\n PlanTemplateSelectComponent,\r\n TemplateNameComponent,\r\n PaymentInfoComponent,\r\n TemplateGenerateComponent,\r\n TempGoalListComponent,\r\n TempGoalDefComponent,\r\n ServingSizeComponent,\r\n ServingSizeSelectionComponent,\r\n ServingSizeSelectionDiaryComponent,\r\n NutritionalFactsComponent,\r\n ItemPortionsComponent,\r\n CustomPatientNameFieldComponent,\r\n PatientGeneralInfoComponent,\r\n GoalsListViewComponent,\r\n PatientProgressComponent,\r\n MealPlanTemplatesComponent, // @Vinicius\r\n PlanTemplateListComponent, // @Vinicius\r\n MealViewerComponent,\r\n MealPlanDayStaticComponent,\r\n ReportMealPlanViewComponent,\r\n MealPlanViewComponent,\r\n MealPlanDayReportComponent,\r\n PatientProfileComponent,\r\n PatientProfileAnonymousComponent,\r\n AssessmentInputComponent,\r\n EditMealPlanDefComponent,\r\n PlanDayLabelComponent,\r\n MealPlanDayDialogComponent,\r\n AddMealPlanDefComponent,\r\n UpgradePlanComponent,\r\n InitialUserInfoComponent,\r\n SubscriptionPlanComponent,\r\n TutorialFinalModalComponent,\r\n FitnessPlanDayMobieComponent,\r\n AddFitnessPlanDefComponent,\r\n EditFitnessPlanDefComponent,\r\n FitnessSummaryComponent,\r\n DayFitnessSummaryComponent,\r\n FitnessPlanDayComponent,\r\n FitnessPlanDefComponent,\r\n FitnessBlockComponent,\r\n FitnessBlockMobileComponent,\r\n FitnessItemsListPresentationComponent,\r\n FitnessItemsListPresentationMobileComponent,\r\n FitnessItemPresentationComponent,\r\n ExerciseEditComponent,\r\n AddFitnessItemsComponent,\r\n FitnessPlanTemplateCreateComponent,\r\n ProgramTemplateCreateComponent,\r\n ProgramTemplateEditComponent,\r\n FitnessPlanTemplatesComponent, // @Vinicius\r\n FitnessPlanTemplateSelectComponent,\r\n CustomExerciseListComponent, // @Vinicius\r\n CustomExerciseDefComponent,\r\n OverlayFitnessItemPresentationComponent,\r\n PatientExerciseProgressListComponent, // @Milos\r\n PatientBiometricHistoryListComponent, // @Vinicius\r\n PatientAssessmentListComponent, // @Vinicius\r\n EditAssessmentComponent,\r\n PatientSheetViewComponent,\r\n FoodListComponent, // @Vinicius\r\n CustomFoodsComponent,\r\n BrandComponent,\r\n PremiumModalComponent,\r\n PremiumTrialReminderComponent,\r\n AssingPlanClientComponent,\r\n HelpGuidesComponent, // @Vinicius\r\n PatientProgramComponent, // @Vinicius\r\n PlanListItemComponent, // @Vinicius\r\n PatientCalendarModalComponent,\r\n WorkoutLogsModalComponent, //@Intel\r\n WorkoutLogsDetailsComponent,\r\n HowToModalComponent,\r\n HowToModalComponentDialog, // @Vinicius\r\n FitnessWorkoutComponent, //@Intel\r\n FitnessWorkoutOverlayComponent, // @Intel\r\n FitnessWorkoutLogItemComponent,\r\n FoodDiaryLogModalComponent,\r\n FoodDiaryAppComponent,\r\n ProgramOverviewComponent, //@Intel\r\n MacroGoalsComponent,\r\n BillingComponent,\r\n PaymentSettingsComponent,\r\n ProgramTemplatesComponents,\r\n AssessmentSettingComponent,\r\n AssessmentFormSettingsComponent,\r\n AppSettingsComponent,\r\n ],\r\n providers: [\r\n PlanDataService,\r\n MealPlanTemplateResolver,\r\n FitnessPlanTemplateResolver,\r\n WorkoutService,\r\n ExerciseService,\r\n ExerciseLogService,\r\n PaymentSettingsService,\r\n InvoicesService,\r\n RecurringInvoicesService,\r\n PatientsService,\r\n PatientSubscriptionsMetaService,\r\n PatientSubscriptionsDataService,\r\n GramConverterPipe,\r\n ],\r\n exports: [\r\n PatientGeneralInfoComponent,\r\n GoalsListViewComponent,\r\n PatientProgressComponent,\r\n DayFitnessSummaryComponent,\r\n FitnessSummaryComponent,\r\n FitnessItemPresentationComponent,\r\n MealPlanDayMobileLayoutComponent,\r\n FitnessPlanDayMobieComponent,\r\n FitnessWorkoutLogItemComponent,\r\n AssessmentInputComponent,\r\n FoodDiaryAppComponent,\r\n ],\r\n})\r\nexport class CalorieFriendModule {\r\n ActivePatient: number = -1;\r\n\r\n constructor(private themeService: NbThemeService) {\r\n this.themeService.changeTheme('default');\r\n }\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArray = (function () { return Array.isArray || (function (x) { return x && typeof x.length === 'number'; }); })();\n//# sourceMappingURL=isArray.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexports.config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n var error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n//# sourceMappingURL=config.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Observable_1 = require(\"../Observable\");\nvar Subscription_1 = require(\"../Subscription\");\nfunction schedulePromise(input, scheduler) {\n return new Observable_1.Observable(function (subscriber) {\n var sub = new Subscription_1.Subscription();\n sub.add(scheduler.schedule(function () { return input.then(function (value) {\n sub.add(scheduler.schedule(function () {\n subscriber.next(value);\n sub.add(scheduler.schedule(function () { return subscriber.complete(); }));\n }));\n }, function (err) {\n sub.add(scheduler.schedule(function () { return subscriber.error(err); }));\n }); }));\n return sub;\n });\n}\nexports.schedulePromise = schedulePromise;\n//# sourceMappingURL=schedulePromise.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar observable_1 = require(\"../symbol/observable\");\nexports.subscribeToObservable = function (obj) { return function (subscriber) {\n var obs = obj[observable_1.observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n}; };\n//# sourceMappingURL=subscribeToObservable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rxSubscriber = (function () {\n return typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random();\n})();\nexports.$$rxSubscriber = exports.rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map","import { Component, OnInit } from '@angular/core';\r\n\r\n/**\r\n * Base Component for Patient Profile View\r\n */\r\nexport class PatientProfileComponentBase implements OnInit {\r\n PatientInfoLabel = 'Patient Info';\r\n WeeklyAssessmentLabel = 'Weekly CheckIn';\r\n GoalsLabel = 'Goals';\r\n ProgressLabel = 'Progress';\r\n PatientID = 0;\r\n NotificationToken = null;\r\n IsNotificationView: boolean = false;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n if (this.NotificationToken) this.IsNotificationView = true;\r\n }\r\n}\r\n\r\n/**\r\n * Component for Patient Profile (For logged-in users)\r\n */\r\n@Component({\r\n selector: 'app-patient-profile',\r\n templateUrl: './patient-profile.component.html',\r\n styleUrls: ['./patient-profile.component.scss'],\r\n})\r\nexport class PatientProfileComponent extends PatientProfileComponentBase {}\r\n\r\n/**\r\n * Component for Patient Profile (For anonymous users)\r\n */\r\n@Component({\r\n selector: 'app-patient-profile-anonymous',\r\n templateUrl: './patient-profile-anonymous.component.html',\r\n styleUrls: ['./patient-profile.component.scss'],\r\n})\r\nexport class PatientProfileAnonymousComponent extends PatientProfileComponentBase {}\r\n","\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n","\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import {\r\n ViewChild,\r\n ViewChildren,\r\n QueryList,\r\n OnInit,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport { NbToastrService, NbDialogService } from '@nebular/theme';\r\nimport { BehaviorSubject, isObservable, Observable } from 'rxjs';\r\nimport { saveAs } from 'file-saver/src/FileSaver';\r\nimport { MatTabGroup } from '@angular/material/tabs';\r\nimport { LocalDataSource } from 'ng2-smart-table';\r\nimport { format } from 'support';\r\n\r\nimport { CopyDay, CopyPlan } from 'app/BuildOps';\r\n\r\nimport { MealPlanDay, Short_WeekDays, WeekDays } from 'app/@core/interfaces/common/CalorieFriend/plan-day';\r\nimport { Meal } from 'app/@core/interfaces/common/CalorieFriend/meal';\r\nimport {\r\n MealPlanData,\r\n MealPlan,\r\n DEFAULT_DURATION,\r\n ProgramTemplateData,\r\n TemplatePlan,\r\n} from 'app/@core/interfaces/common/CalorieFriend/plan';\r\nimport { User } from 'app/@core/interfaces/common/users';\r\nimport { TutorialIDs } from 'app/@core/interfaces/common/CalorieFriend/tutorial';\r\nimport { UsersService } from 'app/@core/backend/common/services/users.service';\r\nimport { Patient, PatientData } from 'app/@core/interfaces/common/CalorieFriend/patients';\r\nimport { GridData } from 'app/@core/interfaces/common/grid-data';\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\n\r\nimport { MealPlanDayComponent } from '../PlanDay/plan-day.component';\r\nimport { PlanTemplateSelectComponent } from '../PlanTemplate/ListSelection/plan-template-select.component';\r\nimport {\r\n PatientProfileComponent,\r\n PatientProfileAnonymousComponent,\r\n} from '../Viewer/PatientProfile/patient-profile.component';\r\nimport { Labelling } from '../../general-text.component';\r\nimport { FormConstants } from '../../CustomUIOps';\r\nimport { Utility } from 'app/@core/utils/utility';\r\nimport { weeksToDays } from 'date-fns';\r\nimport { ProgramPlans } from 'app/@core/interfaces/common/CalorieFriend/program-template';\r\nimport { UpgradePlanComponent } from './../../Patients/UpgradePlan/upgrade-plan.component';\r\n\r\nexport class MealPlanDefComponentBase\r\n extends BaseComponentCanDeactivate\r\n implements OnInit, OnDestroy {\r\n get IsDirty() {\r\n let childrenDirty = false;\r\n this.PlanDayComponents.forEach(\r\n (c) => (childrenDirty = childrenDirty || c.IsDirty)\r\n );\r\n this.PlanDayLabelComponents.forEach(\r\n (c) => (childrenDirty = childrenDirty || c.IsDirty)\r\n );\r\n return this.isDirty || childrenDirty;\r\n }\r\n\r\n resetDirty() {\r\n super.resetDirty();\r\n this.PlanDayComponents.forEach((c) => c.resetDirty());\r\n this.PlanDayLabelComponents.forEach((c) => c.resetDirty());\r\n }\r\n\r\n @ViewChildren('PlanDayLabel') PlanDayLabelComponents: QueryList;\r\n @ViewChildren('PlanDay') PlanDayComponents: QueryList;\r\n @ViewChild('PlanReport') PlanReport: any;\r\n @ViewChild('MealDays', { static: false }) MealDays: MatTabGroup;\r\n @ViewChild('MealContents', { static: false }) MealContents: any = null;\r\n\r\n readonly UntitledMealPlan: string = 'Untitled Meal Plan';\r\n\r\n ShortHandName = '';\r\n inTutorial: boolean = false;\r\n inFinalTutorial: boolean = false;\r\n\r\n PlanLabel = '';\r\n PlanNewLabel = 'New Plan';\r\n PlanEditLabel = 'Edit Plan';\r\n TemplateLabel = 'Template';\r\n PlanNameLabel = 'Plan Name';\r\n PlanActiveLabel = 'Set as Active';\r\n PlanDeactiveActiveLabel = 'Set as Inactive';\r\n patient: Patient;\r\n ActiveLabel = $localize`:@@SetAsActive:Set as Active`;\r\n\r\n LoadFramTemplateLabel = 'Load from Template';\r\n NewDayLabel = 'Add New Day';\r\n NameLabel = 'Day';\r\n AcceptLabel = 'Save Plan';\r\n BackLabel = 'Back';\r\n ViewMealPlanLabel = 'Patient View';\r\n UserProfileLabel = 'Profile Info';\r\n TemplateDescriptionLabel = 'Template Description';\r\n TemplateNameLabel = 'Template Name';\r\n SaveAsPDFLabel = 'Save as PDF';\r\n DescriptionLabel = 'Description';\r\n PlanNotesLabel = 'Notes';\r\n SubmitToPatientLabel = 'Send Client View';\r\n DefaultDayTitle = 'Untitled Day';\r\n\r\n ProblemGenertingPDF =\r\n 'Problem occurre generating PDF Report. Try again. If problem continues contact support.';\r\n ProblemSendingToPatient = 'Problem sending patient view to patient.';\r\n SuccessSendingToPatient = 'Sent email to patient.';\r\n Created = 'Created';\r\n Updated = 'Updated';\r\n ProblemSavingPlan = 'Problem occured saving the Patient Plan';\r\n PatientName = '';\r\n\r\n PatientID = null;\r\n NotificationToken: string = null;\r\n PlanID = null;\r\n dayId: number;\r\n ShowTemplateButton = false;\r\n ref: any = null;\r\n plans: Array = null;\r\n PlanActive: boolean = false;\r\n ThePlan: MealPlan;\r\n isPlanTemplate: boolean = false;\r\n\r\n TheDays: Array = null;\r\n\r\n PlanForm: FormGroup = null;\r\n DaySource: LocalDataSource;\r\n protected readonly unsubscribe$ = new Subject();\r\n EditingTemplate = false;\r\n PlanView: boolean = false;\r\n ShowEmailSubmit: boolean = false;\r\n HidePatientInfo: boolean = false;\r\n\r\n IsEditingTemplatePublic: boolean = false;\r\n currentUserID: any;\r\n templateUserID: any;\r\n\r\n currentUserSubject = new BehaviorSubject(null);\r\n\r\n selectTemplateSubject = new BehaviorSubject(null);\r\n\r\n planListSource: Observable> = null;\r\n selectedPlan = null;\r\n loadData = true;\r\n DontShowViewPlan: boolean = true;\r\n TheTemplateID: number;\r\n TheTemplateIsPublic: boolean;\r\n TheTemplateName = '';\r\n TheTemplateDescription = '';\r\n PlanDescriptionStatic = '';\r\n PlanNotesStatic = '';\r\n PatientShortHandName = '';\r\n\r\n Labels: Labelling;\r\n\r\n PlanNotesWidth = '100%';\r\n PlanNotesHeight = '75px';\r\n\r\n FormConstants = FormConstants;\r\n\r\n SelectedDayIndex = 0;\r\n\r\n showSpinner: boolean = false;\r\n contentLoaded: boolean = false;\r\n planIndex: number;\r\n programTemplate: TemplatePlan;\r\n\r\n /**\r\n * Ng2 smart table settings for Days (Plan Days)\r\n */\r\n DayTableSettings = {\r\n mode: 'external',\r\n actions: {\r\n position: 'right',\r\n add: false,\r\n },\r\n edit: {\r\n editButtonContent:\r\n '',\r\n },\r\n delete: {\r\n deleteButtonContent:\r\n '',\r\n },\r\n columns: {\r\n name: { title: this.NameLabel, type: 'string', filter: false },\r\n },\r\n };\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n private fb: FormBuilder,\r\n private dialogService: NbDialogService,\r\n protected planService: MealPlanData,\r\n private toasterService: NbToastrService,\r\n private usersService: UsersService,\r\n private router: Router,\r\n private patientsService: PatientData,\r\n private programTemplateService: ProgramTemplateData,\r\n ) {\r\n super(dialogService);\r\n this.Labels = new Labelling();\r\n }\r\n\r\n /**\r\n * Initializes the component.\r\n * - Initalizes the Plan Def form.\r\n * - Gets the Patient ID / Patient NotificationToken and Plan ID from the URL.\r\n * - Initializes the Plan (Create) or loads the Plan (Edit) including its PlanDays data.\r\n */\r\n ngOnInit(): void {\r\n this.InitPlanDefForm();\r\n\r\n const dayId = +this.route.snapshot.queryParamMap.get('dayId');\r\n if (!isNaN(dayId)) this.dayId = dayId;\r\n\r\n this.setupPlan();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe$.next();\r\n this.unsubscribe$.complete();\r\n }\r\n\r\n get PlanName() {\r\n return this.PlanForm.get('PlanName');\r\n }\r\n get PlanDescription() {\r\n return this.PlanForm.get('PlanDescription');\r\n }\r\n get PlanNotes() {\r\n return this.PlanForm.get('PlanNotes');\r\n }\r\n get TemplateName() {\r\n return this.PlanForm.get('TemplateName');\r\n }\r\n get TemplateDescription() {\r\n return this.PlanForm.get('TemplateDescription');\r\n }\r\n\r\n get IsViewTemplate() {\r\n const isPublic = this.route.snapshot.queryParamMap.get('public') === \"true\";\r\n return isPublic;\r\n }\r\n\r\n\r\n\r\n private setupPlan() {\r\n this.usersService\r\n .getCurrentUser()\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((user) => {\r\n if (user != null) {\r\n this.currentUserID = user.id;\r\n this.currentUserSubject.next(user);\r\n }\r\n });\r\n\r\n if (this.PatientID === null || this.PatientID === undefined) {\r\n this.PatientID = this.route.snapshot.paramMap.get('PatientId');\r\n this.loadPatientData(this.PatientID);\r\n }\r\n\r\n if (this.PlanID == null || this.PlanID === undefined)\r\n this.PlanID = this.route.snapshot.paramMap.get('PlanId');\r\n\r\n if (this.PlanID == null || this.PlanID === undefined)\r\n this.PlanID = this.route.snapshot.queryParams.PlanId;\r\n\r\n if (this.PatientID == null || this.PatientID === undefined)\r\n this.NotificationToken =\r\n this.route.snapshot.paramMap.get('NotificationToken');\r\n else this.ShowEmailSubmit = true;\r\n\r\n if (!this.PlanView) {\r\n this.TheDays = null;\r\n\r\n if (!this.ThePlan) {\r\n this.ThePlan = {\r\n id: null,\r\n days: new Array(),\r\n name: this.UntitledMealPlan,\r\n patientID: this.PatientID,\r\n createdDate: null,\r\n description: '',\r\n notes: '',\r\n active: false,\r\n zOrder: Utility.INT32_MAX,\r\n duration: DEFAULT_DURATION,\r\n };\r\n this.ShowTemplateButton = true;\r\n\r\n this.route.queryParams.subscribe((params) => {\r\n let planId = params['planId'];\r\n if (planId) {\r\n this.loadPlanFromTemplate(planId);\r\n }\r\n });\r\n this.route.params.subscribe((params) => {\r\n if(params['programTemplateId'] && params['planIndex']) {\r\n this.isPlanTemplate = true;\r\n this.planIndex = params['planIndex'];\r\n\r\n this.programTemplateService.GetTemplateById(params['programTemplateId']).subscribe((template) => {\r\n this.programTemplate = template;\r\n this.preparePlan(template.programPlans.mealPlan[params['planIndex']]);\r\n });\r\n }\r\n });\r\n } else {\r\n this.preparePlan(this.ThePlan);\r\n }\r\n\r\n this.PrepareWorkItemPublishSubscribe();\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n } else {\r\n this.ThePlan = {\r\n id: null,\r\n days: new Array(),\r\n name: this.UntitledMealPlan,\r\n patientID: this.PatientID,\r\n createdDate: null,\r\n description: '',\r\n notes: '',\r\n active: false,\r\n zOrder: Utility.INT32_MAX,\r\n duration: DEFAULT_DURATION,\r\n };\r\n\r\n this.TheDays = new Array();\r\n\r\n this.planListSource = !this.NotificationToken\r\n ? (this.planService.listById(this.PatientID) as Observable<\r\n GridData\r\n >)\r\n : this.planService.listByGuid(this.NotificationToken);\r\n\r\n this.refreshPlans();\r\n }\r\n\r\n if (!this.EditingTemplate) {\r\n if (this.ThePlan?.id > 0) {\r\n this.PlanLabel = $localize`:@@EditPlan:Edit Plan`;\r\n this.DontShowViewPlan = false;\r\n } else this.PlanLabel = $localize`:@@NewPlan:New Plan`;\r\n } else this.PlanLabel = this.TemplateLabel;\r\n }\r\n\r\n loadPlanFromTemplate(id) {\r\n this.planService.GetTemplateById(id).subscribe((data) => {\r\n let selectedPlan = { plan: data.thePlan, appendToCurrentPlan: false };\r\n this.SelectedPlan(selectedPlan);\r\n this.SavePlan();\r\n });\r\n }\r\n\r\n /**\r\n * Method to prepare subscription for individual meal items\r\n */\r\n PrepareWorkItemPublishSubscribe() {\r\n if (\r\n this.ThePlan != null &&\r\n this.ThePlan !== undefined &&\r\n this.ThePlan.days != null &&\r\n this.ThePlan.days !== undefined &&\r\n this.ThePlan.days.length > 0\r\n ) {\r\n for (const day of this.ThePlan.days) {\r\n if (\r\n day.meals != null &&\r\n day.meals !== undefined &&\r\n day.meals.length > 0\r\n ) {\r\n for (const meal of day.meals) {\r\n if (\r\n meal.items != null &&\r\n meal.items !== undefined &&\r\n meal.items.length > 0\r\n ) {\r\n for (const item of meal.items) {\r\n if (!isObservable(item.Update)) {\r\n item.Update = new Subject();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n loadPatientData(id) {\r\n if (id) {\r\n this.patientsService\r\n .get(id, null)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((patient) => {\r\n this.patient = patient;\r\n this.PatientShortHandName =\r\n patient.firstName.substr(0, 1) + '. ' + patient.lastName;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Method to initialize the Plan Definition form.\r\n */\r\n InitPlanDefForm() {\r\n if (this.PlanForm) return;\r\n\r\n this.PlanForm = this.fb.group({\r\n PlanName: this.fb.control(this.UntitledMealPlan, [\r\n Validators.required,\r\n Validators.minLength(5),\r\n Validators.maxLength(50),\r\n ]),\r\n PlanDescription: this.fb.control('', [Validators.maxLength(150)]),\r\n PlanNotes: this.fb.control('', [Validators.maxLength(500)]),\r\n\r\n TemplateName: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(5),\r\n Validators.maxLength(50),\r\n ]),\r\n TemplateDescription: this.fb.control('', [Validators.maxLength(50)]),\r\n });\r\n\r\n this.initForm(this.PlanForm);\r\n }\r\n\r\n /**\r\n * override the initForm function\r\n */\r\n initForm(form) {\r\n form.valueChanges.subscribe(() => {\r\n this.isDirty = true;\r\n });\r\n }\r\n\r\n onNameChange(event) {\r\n if (this.PlanName.value === '') {\r\n this.PlanName.setValue(this.UntitledMealPlan);\r\n }\r\n }\r\n\r\n onLabelFocusout() {\r\n const tempIndex = this.SelectedDayIndex;\r\n this.SelectedDayIndex = -1;\r\n setTimeout(() => {\r\n this.SelectedDayIndex = tempIndex;\r\n }, 0);\r\n }\r\n\r\n /**\r\n * Method to add a new day to the plan definition.\r\n * Opens the PlanDayDialogComponent in a pop up window and update its result.\r\n */\r\n NewDay() {\r\n this.isDirty = true;\r\n\r\n const day: MealPlanDay = {\r\n id: -1,\r\n planID: this.PlanID,\r\n meals: new Array(),\r\n name: this.DefaultDayTitle,\r\n notes: '',\r\n dayOfWeek: [],\r\n createMeal: true,\r\n order: this.ThePlan.days\r\n ? Math.max(...this.ThePlan.days.map((b) => b.order)) + 1\r\n : 1,\r\n };\r\n\r\n this.UpdateDay(day);\r\n if (this.MealDays)\r\n this.MealDays.selectedIndex = this.ThePlan.days.length - 1;\r\n\r\n this.OrderDays(this.ThePlan.days.length - 1);\r\n this.SelectedDayIndex = this.ThePlan.days.length - 1;\r\n }\r\n\r\n /**\r\n * Method to update the days list of the Plan with data of {day} object.\r\n * @param day PlanDay object\r\n */\r\n UpdateDay(day: MealPlanDay) {\r\n if (this.ThePlan.days == null || this.ThePlan.days === undefined) {\r\n this.ThePlan.days = new Array();\r\n }\r\n\r\n this.ThePlan.days.push(day);\r\n this.TheDays = this.ThePlan.days;\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n }\r\n\r\n /**\r\n * Event handler of the 'Edit' action to edit an existing PlanDay.\r\n * Opens the PlanDayComponent in a pop up window and updates its result to the days list using UpdateDay function.\r\n * @param $event Event object\r\n */\r\n onEdit($event) {\r\n this.dialogService\r\n .open(MealPlanDayComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: {\r\n Day: $event.data,\r\n },\r\n })\r\n .onClose.subscribe((day) => this.UpdateDay(day));\r\n }\r\n\r\n /**\r\n * Event handler of the 'Delete' action to delete an existing PlanDay.\r\n * Deletes the plan day and updates the list.\r\n * @param $event Event object\r\n */\r\n onDelete($event) {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: { Message: 'Are you sure to delete this day?' },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result) {\r\n if ($event !== null && $event !== undefined) {\r\n this.ThePlan.days = this.ThePlan.days.filter(\r\n (day) =>\r\n day.id !== $event.data.id || day.name !== $event.data.name\r\n );\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Function to validate all input data for the plan definition.\r\n */\r\n IsValid(): Boolean {\r\n let Res: Boolean = false;\r\n\r\n if (this.Valid) {\r\n if (\r\n this.ThePlan != null &&\r\n this.ThePlan !== undefined &&\r\n this.ThePlan.days != null &&\r\n this.ThePlan.days !== undefined &&\r\n this.ThePlan.days.length > 0\r\n ) {\r\n for (const day of this.ThePlan.days) {\r\n Res =\r\n day.name != null &&\r\n day.name !== undefined &&\r\n day.name.trim().length > 0\r\n ? true\r\n : false;\r\n if (!Res) break;\r\n }\r\n } else Res = true;\r\n }\r\n\r\n return Res;\r\n }\r\n\r\n /**\r\n * Function save the plan definition.\r\n * Checks if all data are valid and performs the save action.\r\n */\r\n SavePlan() {\r\n if (this.IsValid()) {\r\n if (!this.EditingTemplate && !this.programTemplate) {\r\n if (this.ThePlan.days !== null && this.ThePlan.days.length > 0) {\r\n this.ThePlan.name = this.PlanName.value;\r\n this.ThePlan.active = this.PlanActive;\r\n this.ThePlan.description = this.PlanDescription.value;\r\n this.ThePlan.notes = this.PlanNotes.value;\r\n\r\n this.ThePlan.patientID = this.PatientID;\r\n\r\n const UpdatePlan = CopyPlan(this.ThePlan, false, true);\r\n\r\n const isFromTutorial =\r\n this.route.snapshot.url.length > 2\r\n ? this.route.snapshot.url[2].toString().toLowerCase() ===\r\n 'fromtutorial'\r\n : false;\r\n if (isFromTutorial) {\r\n UpdatePlan.active = true;\r\n }\r\n\r\n this.showSpinner = true;\r\n const observable =\r\n this.ThePlan === undefined ||\r\n (this.ThePlan !== undefined &&\r\n (this.ThePlan.id == null || this.ThePlan.id <= 0))\r\n ? this.planService.create(UpdatePlan)\r\n : this.planService.update(UpdatePlan);\r\n\r\n this.resetDirty();\r\n\r\n observable.pipe(takeUntil(this.unsubscribe$)).subscribe(\r\n (data) => {\r\n this.PlanID = this.ThePlan.id = data.id;\r\n this.handleSuccessResponse();\r\n\r\n this.planListSource = this.planService.listById(\r\n this.PatientID\r\n ) as Observable>;\r\n //this.refreshPlans();\r\n\r\n this.showSpinner = false;\r\n // submit notification to the patient\r\n if (isFromTutorial && UpdatePlan.active) {\r\n this.planService\r\n .submitPatientNotification(this.PatientID, data.id)\r\n .subscribe(() => { });\r\n }\r\n },\r\n (err) => {\r\n this.showSpinner = false;\r\n this.handleWrongResponse(err);\r\n }\r\n );\r\n }\r\n }\r\n else if(this.programTemplate) {\r\n this.ThePlan.name = this.PlanName.value;\r\n this.ThePlan.active = this.PlanActive;\r\n this.ThePlan.description = this.PlanDescription.value;\r\n this.ThePlan.notes = this.PlanNotes.value;\r\n this.programTemplate.programPlans.mealPlan[this.planIndex] = CopyPlan(this.ThePlan, false, false);\r\n this.showSpinner = true;\r\n this.programTemplateService.UpdateTemplate(this.programTemplate, false).pipe(finalize(() => {\r\n this.showSpinner = false;\r\n })).subscribe((res)=> {\r\n this.handleSuccessResponse();\r\n }, (err) => {\r\n this.handleWrongResponse(err);\r\n this.showSpinner = false;\r\n });\r\n }\r\n\r\n else {\r\n this.ThePlan.name = this.PlanName.value;\r\n this.ThePlan.description = this.PlanDescription.value;\r\n this.ThePlan.notes = this.PlanNotes.value;\r\n\r\n this.ThePlan.active = this.PlanActive;\r\n this.ThePlan.patientID = this.PatientID;\r\n\r\n this.UpdateTemplate(\r\n this.ThePlan,\r\n this.PlanName.value,\r\n this.PlanDescription.value,\r\n this.TheTemplateID,\r\n this.TheTemplateIsPublic\r\n );\r\n this.resetDirty();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Function to update the template and its plan data.\r\n * Submits the data via API service.\r\n * @param plan Plan object\r\n * @param TemplateName Template Name\r\n * @param Description Template Description\r\n * @param TemplateID Template Identifier\r\n */\r\n private UpdateTemplate(\r\n plan: MealPlan,\r\n TemplateName,\r\n Description,\r\n TemplateID,\r\n IsPublic\r\n ) {\r\n const Template = {\r\n id: TemplateID,\r\n name: TemplateName,\r\n description: Description,\r\n thePlan: CopyPlan(plan),\r\n isPublic: IsPublic,\r\n };\r\n\r\n this.showSpinner = true;\r\n\r\n const observable = this.planService.UpdateTemplate(Template, false);\r\n\r\n observable.pipe(takeUntil(this.unsubscribe$)).subscribe(\r\n () => {\r\n this.handleSuccessResponse();\r\n this.showSpinner = false;\r\n // this._location.back();\r\n },\r\n (err) => {\r\n this.handleWrongResponse(null);\r\n this.showSpinner = false;\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Method to close the container dialog if it is opened in pop up dialog\r\n * or navigates back to the PatientSheetView page\r\n */\r\n Back() {\r\n this.router.navigateByUrl(\r\n '/pages/CalorieFriend/PatientSheetView/' +\r\n this.PatientID.toString() +\r\n '?planType=mealplan'\r\n );\r\n }\r\n\r\n handleSuccessResponse() {\r\n if (this.PatientShortHandName.length > 0) {\r\n if (this.ThePlan.id === null)\r\n this.toasterService.success(\r\n '',\r\n `Plan created for ${this.PatientShortHandName}`\r\n );\r\n else\r\n this.toasterService.success(\r\n '',\r\n `Plan saved for ${this.PatientShortHandName}`\r\n );\r\n } else {\r\n if (this.ThePlan.id === null)\r\n this.toasterService.success('', `Plan created.`);\r\n else this.toasterService.success('', `Plan saved.`);\r\n }\r\n }\r\n\r\n handleWrongResponse(data) {\r\n let message = '';\r\n if (data && data.error === 'DuplicatedPlanName') {\r\n message = $localize`:@@DuplicatedPlanName:There is already a plan with the same name.`;\r\n } else {\r\n message = this.ProblemSavingPlan;\r\n }\r\n\r\n this.toasterService.danger('', message);\r\n }\r\n\r\n /**\r\n * Function to open PlanTemplateSelectComponent in a pop up dialog to select the template to load plan data from.\r\n */\r\n SelectTemplate(isFromTutorial: boolean = false, user: User = null) {\r\n this.selectTemplateSubject = new BehaviorSubject(null);\r\n\r\n this.dialogService\r\n .open(PlanTemplateSelectComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: !false,\r\n context: {\r\n isFromTutorial: false,\r\n user: user,\r\n },\r\n })\r\n .onClose.subscribe((data) => {\r\n this.SelectedPlan(data);\r\n this.selectTemplateSubject.next(data?.plan);\r\n });\r\n }\r\n\r\n /**\r\n * Function to apply the data from the template to the current plan.\r\n * @param Plan Plan object\r\n */\r\n SelectedPlan(data) {\r\n const plan = data?.plan;\r\n\r\n if (plan) {\r\n // make sure none of the IDs are set in the items\r\n // this is a new plan with new days and new meals\r\n if (plan.days != null && plan.days.length > 0) {\r\n for (const day of plan.days) {\r\n day.id = 0;\r\n day.planID = 0;\r\n\r\n if (day.blocks != null && day.blocks.length > 0) {\r\n for (const meal of day.blocks) {\r\n meal.id = 0;\r\n meal.dayID = 0;\r\n }\r\n }\r\n }\r\n }\r\n if(this.planIndex) {\r\n plan.zOrder = this.planIndex;\r\n }\r\n if (data.appendToCurrentPlan) {\r\n if (plan && plan.days) {\r\n for (const day of plan.days) {\r\n day.order = this.ThePlan.days.length + 1;\r\n this.ThePlan.days.push(day);\r\n }\r\n }\r\n } else {\r\n\r\n const currentId = this.ThePlan.id;\r\n\r\n this.ThePlan = {...plan, duration: this.ThePlan.duration, zOrder: this.ThePlan.zOrder, createdDate: this.ThePlan.createdDate, name: plan.name? plan.name :this.ThePlan.name, description: plan.description? plan.description: this.ThePlan.description, notes: plan.notes? plan.notes: this.ThePlan.notes };\r\n this.ThePlan.patientID = this.PatientID;\r\n this.ThePlan.id = currentId;\r\n\r\n this.PlanForm.patchValue({\r\n PlanName: this.ThePlan.name,\r\n PlanDescription: this.ThePlan.description,\r\n PlanNotes: this.ThePlan.notes,\r\n });\r\n }\r\n\r\n //this.PlanActive = false;\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n this.OrderDays();\r\n }\r\n\r\n }\r\n\r\n private refreshPlans() {\r\n this.TheDays = null;\r\n\r\n if (!this.loadData) return;\r\n\r\n this.planListSource.pipe(takeUntil(this.unsubscribe$)).subscribe((data) => {\r\n this.plans = data.items;\r\n\r\n if (this.plans?.length > 0) {\r\n this.selectedPlan = this.PlanID\r\n ? this.plans.find((plan) => plan.id === +this.PlanID)\r\n : this.plans[0];\r\n\r\n this.preparePlan(this.selectedPlan);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Function to prepare the form to submit the plan definition.\r\n * @param thisPlan Plan object\r\n */\r\n private preparePlan(thisPlan: MealPlan) {\r\n this.ThePlan = thisPlan;\r\n\r\n if (this.ThePlan !== null && this.ThePlan !== undefined) {\r\n this.PlanForm.patchValue({\r\n PlanName: this.ThePlan.name,\r\n PlanDescription: this.ThePlan.description,\r\n PlanNotes: this.ThePlan.notes,\r\n TemplateName: this.TheTemplateName,\r\n TemplateDescription: this.TheTemplateDescription,\r\n });\r\n\r\n this.PlanActive = this.ThePlan.active;\r\n\r\n if (this.PlanActive)\r\n this.ActiveLabel = $localize`:@@SetAsInactive:Set as Inactive`;\r\n else this.ActiveLabel = $localize`:@@SetAsActive:Set as Active`;\r\n\r\n this.PlanDescriptionStatic = this.ThePlan.description;\r\n this.PlanNotesStatic = this.ThePlan.notes;\r\n\r\n this.PatientID = this.ThePlan.patientID;\r\n this.ShowTemplateButton = false;\r\n\r\n this.PrepareWorkItemPublishSubscribe();\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n this.TheDays = this.ThePlan.days;\r\n\r\n super.resetDirty();\r\n\r\n this.OrderDays();\r\n this.contentLoaded = true;\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of the 'Change' event of the 'Plans' drop down list on the 'Patient View'.\r\n * Prepares the plan for the presentation.\r\n * @param plan Plan object\r\n */\r\n PlanChanged(plan) {\r\n // console.log(Plan);\r\n this.router.navigate([\r\n `/PatientView/Patient/${this.NotificationToken}/${plan.id}`,\r\n ]);\r\n this.preparePlan(plan);\r\n }\r\n\r\n /**\r\n * Event handler of 'Save As PDF' action on the 'Patient View' page.\r\n * Saves the selected plan definition as PDF.\r\n */\r\n SaveAsPDF() {\r\n let observable = null;\r\n\r\n if (this.NotificationToken != null && this.NotificationToken !== undefined)\r\n observable = this.planService.SaveAsPDFFromToken(\r\n this.NotificationToken,\r\n this.ThePlan.id\r\n );\r\n else if (this.PatientID !== null && this.PatientID !== undefined)\r\n observable = this.planService.SaveAsPDF(this.PatientID, this.ThePlan.id);\r\n\r\n if (observable != null) {\r\n observable.pipe(takeUntil(this.unsubscribe$)).subscribe(\r\n (PDFData) => {\r\n saveAs(PDFData, format('PatientPlan_{0}.pdf', this.ThePlan.name));\r\n },\r\n (err) => {\r\n this.toasterService.danger('', this.ProblemGenertingPDF);\r\n }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of the 'Patient View' action on the Plan definition page.\r\n * Navigates to the 'Patient View' page.\r\n */\r\n ViewPlan() {\r\n if (\r\n this.NotificationToken != null &&\r\n this.NotificationToken !== undefined &&\r\n ((this.PlanID != null && this.PlanID !== undefined) ||\r\n this.ThePlan != null)\r\n ) {\r\n const PlanID =\r\n this.PlanID != null && this.PlanID !== undefined\r\n ? this.PlanID\r\n : this.ThePlan.id;\r\n\r\n this.router.navigate([\r\n `/pages/CalorieFriend/PatientMealPlanNotification/` +\r\n this.NotificationToken +\r\n '/' +\r\n PlanID.toString(),\r\n ]);\r\n\r\n this.ref.close();\r\n } else if (\r\n this.PatientID != null &&\r\n this.PatientID !== undefined &&\r\n ((this.PlanID != null && this.PlanID !== undefined) ||\r\n this.ThePlan != null)\r\n ) {\r\n const PlanID =\r\n this.PlanID != null && this.PlanID !== undefined\r\n ? this.PlanID\r\n : this.ThePlan.id;\r\n\r\n this.router.navigate([\r\n `/pages/CalorieFriend/PatientMealPlan/` +\r\n this.PatientID.toString() +\r\n '/' +\r\n PlanID.toString(),\r\n ]);\r\n\r\n this.ref.close();\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of the 'Profile Info' action on the 'Patient View' page.\r\n * Opens the Patient Profile component in a pop up dialog.\r\n */\r\n ViewPatientInfo() {\r\n if (\r\n this.NotificationToken != null &&\r\n this.NotificationToken !== undefined\r\n ) {\r\n this.dialogService\r\n .open(PatientProfileAnonymousComponent, {\r\n closeOnEsc: false,\r\n context: { NotificationToken: this.NotificationToken },\r\n })\r\n .onClose.subscribe((plan) => { });\r\n } else if (this.PatientID != null && this.PatientID !== undefined) {\r\n this.dialogService\r\n .open(PatientProfileComponent, {\r\n closeOnEsc: false,\r\n context: { PatientID: this.PatientID },\r\n })\r\n .onClose.subscribe((plan) => { });\r\n }\r\n }\r\n\r\n get Valid(): boolean {\r\n const Valid: boolean =\r\n this.PlanName.value != null &&\r\n this.PlanName.value !== undefined &&\r\n this.PlanName.value.length > 0 &&\r\n this.ThePlan != null &&\r\n this.ThePlan !== undefined &&\r\n this.ThePlan.days != null &&\r\n this.ThePlan.days !== undefined &&\r\n this.ThePlan.days.length > 0;\r\n\r\n return Valid;\r\n }\r\n\r\n /**\r\n * Event handler of the 'Send Patient View' action of the 'Patient View' page.\r\n * Submits patient notification to send an e-mail to the patient.\r\n */\r\n SendPatientView() {\r\n const observable = this.planService.submitPatientNotification(\r\n this.PatientID,\r\n this.ThePlan.id\r\n );\r\n\r\n observable.pipe(takeUntil(this.unsubscribe$)).subscribe(\r\n (Data) => {\r\n this.toasterService.success('', this.SuccessSendingToPatient);\r\n },\r\n (err) => {\r\n this.toasterService.danger('', this.ProblemSendingToPatient);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Event handler of 'Set Active' action on the plan definition page.\r\n * Sets the current plan as the active one for the patient.\r\n */\r\n SetActive() {\r\n this.PlanActive = !this.PlanActive;\r\n\r\n if (this.PlanActive)\r\n this.ActiveLabel = $localize`:@@SetAsInactive:Set as Inactive`;\r\n else this.ActiveLabel = $localize`:@@SetAsActive:Set as Active`;\r\n\r\n this.isDirty = true;\r\n }\r\n\r\n /**\r\n * Checks if Day tab can be removed from the tab group\r\n */\r\n get CanRemoveDay() {\r\n return this.ThePlan?.days?.length > 1 && +this.MealDays?.selectedIndex >= 0;\r\n }\r\n\r\n /**\r\n * Removes the selected Day from the tab group and days list\r\n */\r\n RemoveDay() {\r\n let AskToRemove: boolean = true;\r\n const Remove: boolean = true;\r\n\r\n const index = this.MealDays.selectedIndex;\r\n\r\n if (this.ThePlan.days[index].id < 0) AskToRemove = false;\r\n\r\n if (AskToRemove) {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: {\r\n Message: $localize`:@@DeleteDay:Are you sure you want to delete the day?`,\r\n },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result) {\r\n this.RemoveDayCore(index);\r\n }\r\n });\r\n } else {\r\n this.RemoveDayCore(index);\r\n }\r\n }\r\n\r\n RemoveDayCore(index) {\r\n const t = this.ThePlan.days[index];\r\n\r\n this.ThePlan.days.splice(index, 1);\r\n this.TheDays = this.ThePlan.days;\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n\r\n if (this.MealDays.selectedIndex >= this.ThePlan.days.length)\r\n this.MealDays.selectedIndex--;\r\n this.SelectedDayIndex--;\r\n if (this.SelectedDayIndex < 0 && this.TheDays.length > 0) {\r\n this.SelectedDayIndex = 0;\r\n }\r\n\r\n this.OrderDays();\r\n }\r\n\r\n /**\r\n * Removes the selected Day from the tab group and days list\r\n */\r\n CopyDay() {\r\n const AskToRemove: boolean = true;\r\n const Remove: boolean = true;\r\n\r\n const index = this.MealDays.selectedIndex;\r\n\r\n const original = this.ThePlan.days[index];\r\n const copied = CopyDay(original, true);\r\n copied.name = copied.name + ' Copy';\r\n (copied.order = Math.max(...this.ThePlan.days.map((b) => b.order)) + 1),\r\n this.ThePlan.days.push(copied);\r\n this.TheDays = this.ThePlan.days;\r\n this.DaySource = new LocalDataSource(this.ThePlan.days); // create the source\r\n\r\n\r\n this.OrderDays(this.TheDays.length - 1);\r\n }\r\n\r\n OrderUp() {\r\n const index = this.MealDays.selectedIndex;\r\n const original = this.ThePlan.days[index];\r\n\r\n if (index > 0) {\r\n const prevDay = this.ThePlan.days[index - 1];\r\n const tempOrder = prevDay.order;\r\n prevDay.order = original.order;\r\n original.order = tempOrder;\r\n this.OrderDays(this.SelectedDayIndex - 1);\r\n }\r\n }\r\n\r\n OrderDown() {\r\n const index = this.MealDays.selectedIndex;\r\n const original = this.ThePlan.days[index];\r\n\r\n if (index < this.ThePlan.days.length - 1) {\r\n const prevDay = this.ThePlan.days[index + 1];\r\n const tempOrder = prevDay.order;\r\n prevDay.order = original.order;\r\n original.order = tempOrder;\r\n this.OrderDays(this.SelectedDayIndex + 1);\r\n }\r\n }\r\n\r\n OrderDays(selectedIndex = 0) {\r\n if (!this.ThePlan || !this.ThePlan.days) return;\r\n\r\n this.ThePlan.days.sort((a, b) => (a.order > b.order ? 1 : -1));\r\n let index = 0;\r\n this.ThePlan.days.forEach((a) => {\r\n a.order = ++index;\r\n });\r\n\r\n this.TheDays = [];\r\n\r\n\r\n if (selectedIndex >= 0) {\r\n setTimeout(() => {\r\n this.TheDays = this.ThePlan.days;\r\n this.SelectedDayIndex = selectedIndex >= 0 ? selectedIndex : 0;\r\n\r\n\r\n }, 50);\r\n }\r\n\r\n }\r\n\r\n getOrderLabel(order) {\r\n if (!order) {\r\n order = 1;\r\n }\r\n return order;\r\n }\r\n\r\n\r\n getDaysOfWeeksString(day: MealPlanDay) {\r\n\r\n if (!day.dayOfWeek) return \"\";\r\n const ordered = day.dayOfWeek.sort((a, b) => a - b);\r\n const assignedDays: string[] = ordered\r\n .map((x, i) => {\r\n\r\n if (ordered.length > 2) {\r\n return Short_WeekDays[x];\r\n } else {\r\n return WeekDays[x];\r\n }\r\n\r\n\r\n })\r\n .filter((x) => x);\r\n\r\n return assignedDays.length === 0 ? '' : `${assignedDays.join(', ')}`;\r\n }\r\n\r\n\r\n public TutorialIDs = TutorialIDs;\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NbDialogService } from '@nebular/theme';\r\nimport { LocalDataSource } from 'ng2-smart-table';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { NbDialogRef } from '@nebular/theme';\r\n\r\nimport { MealItemsComponent } from '../MealItems/meal-items.component';\r\nimport {\r\n Meal,\r\n MealItem,\r\n} from '../../../../../@core/interfaces/common/CalorieFriend/meal';\r\nimport { CalorieFriendFood } from '../../../../../@core/interfaces/common/CalorieFriend/food';\r\nimport { ServingSizeSelectionComponent } from './ServingSize/Selection/serving-size-selection.component';\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\n\r\n/**\r\n * Component for adding a new Meal with its meal items into the Day's Meals list.\r\n */\r\n@Component({\r\n selector: 'app-meal',\r\n templateUrl: './meal.component.html',\r\n styleUrls: ['./meal.component.scss'],\r\n})\r\nexport class MealComponent\r\n extends BaseComponentCanDeactivate\r\n implements OnInit {\r\n MealItemsLabel = 'Items';\r\n AddItemLabel = 'Add Item';\r\n DayID: number;\r\n TheMeal: Meal = null;\r\n ExistingMeals: Array = null;\r\n ItemNameLabel = $localize`:@@Item:Item`;\r\n ImageLabel = 'Image';\r\n Qauntity = 'Quantity';\r\n AcceptLabel = 'Accept';\r\n BackLabel = 'Back';\r\n MealNameLabel = $localize`:@@Name:Name`;\r\n MealTimeLabel = $localize`:@@Time:Time`;\r\n ServingSizeSelectLabel = $localize`:@@Serving:Serving`;\r\n\r\n MealForm: FormGroup;\r\n MealDataSource: LocalDataSource;\r\n\r\n /**\r\n * Ng2 smart table settings for Meal items\r\n */\r\n MealTableSettings = {\r\n hideSubHeader: true,\r\n mode: 'external',\r\n actions: {\r\n columnTitle: $localize`:@@Actions:Actions`,\r\n position: 'right',\r\n add: false,\r\n edit: false,\r\n },\r\n delete: {\r\n deleteButtonContent:\r\n '',\r\n },\r\n columns: {\r\n friendlyName: {\r\n title: this.ItemNameLabel,\r\n type: 'string',\r\n filter: false,\r\n valuePrepareFunction: (init, data) => {\r\n return data.friendlyName;\r\n },\r\n },\r\n // imageURL: {\r\n // title: this.ImageLabel,\r\n // type: 'html', filter: false,\r\n // valuePrepareFunction: (init, data) =>\r\n // {\r\n // return '';\r\n // }\r\n // },\r\n template: {\r\n title: this.ServingSizeSelectLabel,\r\n type: 'custom',\r\n renderComponent: ServingSizeSelectionComponent,\r\n filter: false,\r\n valuePrepareFunction: (value, row, cell) => {\r\n return {\r\n foodId: row.foodId,\r\n displayQuantitySelection: true,\r\n displayWithinGroup: false,\r\n isCustomFood: row.isCustomFood,\r\n AssociatedObject: row,\r\n AdjustHeight: false,\r\n };\r\n },\r\n },\r\n // quantity:\r\n // {\r\n // title: this.Qauntity, type: 'custom',\r\n // renderComponent: MealQuantityComponent,\r\n // valuePrepareFunction: (value, row, cell) =>\r\n // {\r\n // return { id: row.foodId, quantity: row.quantity };\r\n // },\r\n // filter: false,\r\n // onComponentInitFunction: (instance, row) =>\r\n // {\r\n // this.PrepQuantityUpdate(instance);\r\n // }\r\n // }\r\n },\r\n };\r\n\r\n /** Meal ctor */\r\n constructor(\r\n private dialogService: NbDialogService,\r\n protected ref: NbDialogRef,\r\n private fb: FormBuilder,\r\n ) {\r\n super(dialogService);\r\n }\r\n\r\n get MealName() {\r\n return this.MealForm.get('MealName');\r\n }\r\n get MealTime() {\r\n return this.MealForm.get('MealTime');\r\n }\r\n\r\n /**\r\n * Initializes the component.\r\n * Initializes the Meal form.\r\n */\r\n ngOnInit(): void {\r\n this.InitMealForm();\r\n\r\n if (this.TheMeal === null) {\r\n this.TheMeal = {\r\n id: null,\r\n name: '',\r\n time: '',\r\n items: null,\r\n dayID: this.DayID,\r\n };\r\n\r\n this.TheMeal.items = new Array();\r\n } else {\r\n this.MealForm.patchValue({\r\n MealName: this.TheMeal.name,\r\n MealTime: this.TheMeal.time,\r\n });\r\n\r\n if (this.MealDataSource !== null && this.MealDataSource !== undefined)\r\n this.MealDataSource.refresh();\r\n else this.MealDataSource = new LocalDataSource(this.TheMeal.items); // create the source\r\n }\r\n }\r\n\r\n /**\r\n * Sets the call back function for 'Quantity' change\r\n * @param instance\r\n */\r\n PrepQuantityUpdate(instance) {\r\n instance.SetCallBack(this, this.MealCountUpdate, 1);\r\n }\r\n\r\n /**\r\n * Updates the quantity of the food item.\r\n * @param This Self referencing object\r\n * @param id Food Item Id\r\n * @param quantity Food Quantity\r\n */\r\n MealCountUpdate(This, id: number, quantity: number) {\r\n if (\r\n This.TheMeal !== null &&\r\n This.TheMeal.items !== null &&\r\n This.TheMeal.items !== undefined\r\n ) {\r\n const FoodItem = This.TheMeal.items.find((obj) => obj.foodId === id);\r\n if (FoodItem !== null && FoodItem !== undefined) {\r\n FoodItem.quantity = quantity;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Function to display MealItemsComponent to select food items to add to the current Meal.\r\n */\r\n SelectItems() {\r\n const ActiveFood = new Array();\r\n\r\n for (const mealItem of this.TheMeal.items) {\r\n ActiveFood.push(mealItem);\r\n }\r\n\r\n this.dialogService\r\n .open(MealItemsComponent, {\r\n closeOnEsc: false,\r\n // context: { LoadedCurrentlyActiveFood: ActiveFood }\r\n context: { LoadedCurrentlyActiveFood: [] },\r\n })\r\n .onClose.subscribe((items) => {\r\n // this.UpdateSelectedItem(items);\r\n this.isDirty = true;\r\n });\r\n }\r\n\r\n /**\r\n * Function to update the items list of the Meal with the selected items.\r\n * @param items Meal Items list\r\n */\r\n UpdateSelectedItem(items) {\r\n if (items !== null && items !== undefined) {\r\n const HoldItems = null;\r\n const Quantity = 1;\r\n\r\n // if (this.TheMeal !== null && this.TheMeal.items !== null && this.TheMeal.items !== undefined)\r\n // HoldItems = this.TheMeal.items;\r\n\r\n this.TheMeal.items; // = new Array();\r\n\r\n if (items !== null && items !== undefined) {\r\n for (const food of items) {\r\n // see if item is in list --\r\n // if (HoldItems !== null) {\r\n // const Item = HoldItems.find(obj => obj.foodId === food.foodId);\r\n\r\n // if (Item !== null && Item !== undefined)\r\n // this.TheMeal.items.push(Item);\r\n // else {\r\n // food.id = null;\r\n // // food.quantity = Quantity;\r\n // food.mealID = this.TheMeal.id;\r\n // this.TheMeal.items.push(food);\r\n // }\r\n // }\r\n\r\n food.id = null;\r\n food.quantity = Quantity;\r\n food.mealID = this.TheMeal.id;\r\n this.TheMeal.items.push(food);\r\n }\r\n\r\n this.MealDataSource = new LocalDataSource(this.TheMeal.items); // create the source\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Function to check if the Meal form is valid for submit.\r\n */\r\n MealValid() {\r\n let MealsValid = true;\r\n\r\n if (\r\n this.TheMeal !== null &&\r\n this.TheMeal.items !== null &&\r\n this.TheMeal.items !== undefined &&\r\n this.TheMeal.items.length > 0\r\n ) {\r\n for (const item of this.TheMeal.items) {\r\n MealsValid = MealsValid && item.quantity > 0;\r\n if (!MealsValid) break;\r\n }\r\n } else MealsValid = false;\r\n\r\n if (MealsValid) {\r\n const CurrentTime = this.MealTime;\r\n MealsValid = CurrentTime.value !== '';\r\n\r\n if (MealsValid) {\r\n if (this.ExistingMeals !== null) {\r\n const Duplicate = this.ExistingMeals.find(\r\n (meal) => meal.name === this.MealName.value && meal !== this.TheMeal,\r\n );\r\n if (Duplicate !== null && Duplicate !== undefined) MealsValid = false;\r\n }\r\n\r\n if (MealsValid) {\r\n this.TheMeal.time = CurrentTime.value;\r\n this.TheMeal.name = this.MealName.value;\r\n }\r\n }\r\n }\r\n\r\n return MealsValid && this.MealForm.valid;\r\n }\r\n\r\n /**\r\n * Event handler of 'Accept' button's Click.\r\n */\r\n Accept() {\r\n if (this.MealValid()) {\r\n super.resetDirty();\r\n this.ref.close(this.TheMeal);\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of 'Back' button's Click\r\n */\r\n Back() {\r\n super.back(() => {\r\n this.ref.close();\r\n });\r\n }\r\n\r\n /**\r\n * Initializes the Meal form.\r\n */\r\n InitMealForm() {\r\n this.MealForm = this.fb.group({\r\n MealName: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(3),\r\n Validators.maxLength(25),\r\n ]),\r\n MealTime: this.fb.control(''),\r\n });\r\n\r\n super.initForm(this.MealForm);\r\n\r\n // vconst CurrentTime = this.MealTime;\r\n // CurrentTime.value = \"1:31 VPM\";\r\n\r\n // this.MealForm.patchValue({\r\n // MealTime: \"1:31 VPM\"\r\n // });\r\n }\r\n\r\n /**\r\n * Event handler of the 'Delete' action of meal items list.\r\n * @param $event Event object.\r\n */\r\n onDelete($event) {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: { Message: 'Are you sure to delete this meal item?' },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result) {\r\n const UpdateItems = this.TheMeal.items.filter(\r\n (obj) => obj.foodId !== $event.data.foodId,\r\n );\r\n\r\n this.TheMeal.items = new Array();\r\n\r\n for (const food of UpdateItems) {\r\n this.TheMeal.items.push(food);\r\n }\r\n\r\n this.MealDataSource = new LocalDataSource(this.TheMeal.items); // update list\r\n }\r\n });\r\n }\r\n}\r\n","\r\n \r\n
Items
\r\n
\r\n\r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
{{MealNameLabel}}
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{{MealTimeLabel}}
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n Day\r\n
    Day Name
    \r\n
  • \r\n
  • \r\n \r\n \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n\r\n \r\n
    \r\n
  • \r\n Assigned week days\r\n
  • \r\n
  • \r\n \r\n \r\n
  • \r\n
\r\n\r\n \r\n
    \r\n
  • \r\n Notes\r\n
  • \r\n
  • \r\n \r\n \r\n\r\n \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n * Tap on Food Item to view\r\n source information.\r\n
\r\n","
\r\n
Notes
\r\n
{{ Day.notes }}
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
","\r\n\r\n \r\n\r\n
\r\n
\r\n Day Name\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n OnInit,\r\n ViewChildren,\r\n QueryList,\r\n} from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { NbDialogService, NbDialogRef } from '@nebular/theme';\r\nimport { LocalDataSource } from 'ng2-smart-table';\r\nimport { isObservable } from 'rxjs';\r\nimport { Subject } from 'rxjs/Subject';\r\nimport * as moment from 'moment';\r\n\r\nimport { FoodData } from '../../../../@core/interfaces/common/CalorieFriend/food';\r\nimport { Meal, MealItem } from '../../../../@core/interfaces/common/CalorieFriend/meal';\r\nimport { MealPlanDay } from '../../../../@core/interfaces/common/CalorieFriend/plan-day';\r\nimport { NativeAppService } from 'app/@core/backend/common/services/native-app.service';\r\nimport { BaseComponentCanDeactivate } from 'app/@auth/guards/changes.guard';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\n\r\nimport { CalculateMetrics, CopyMealItem } from 'app/BuildOps';\r\nimport { AdjustMetricsGraphComponent } from 'app/admin/public-foods/meal-metrics-graph/meal-metrics-graph.component';\r\n\r\nimport { MealComponent } from '../PlanMeals/Meal/meal.component';\r\nimport { MealPresentationComponent } from '../PlanMeals/Meal/MealLayout/MealPresentation/meal-presentation.component';\r\nimport { format } from '../../../../../support';\r\nimport { FormConstants } from '../../CustomUIOps';\r\nimport { Patient } from 'app/@core/interfaces/common/CalorieFriend/patients';\r\n\r\n/**\r\n * Base class for Meal Plan Day components\r\n */\r\nexport class MealPlanDayComponentBase\r\n extends BaseComponentCanDeactivate\r\n implements OnInit, AfterViewInit {\r\n @Input() Patient: Patient\r\n DayLabel = '';\r\n NewDay = $localize`:@@NewDay:New Day`;\r\n EditDay = $localize`:@@EditDay:Edit Day`;\r\n NameLabel = $localize`:@@Meal:Meal`;\r\n TimeLabel = $localize`:@@Time:Time`;\r\n MealLabel = 'Meal Name';\r\n\r\n PlanID = null;\r\n ShowSubmit = false;\r\n\r\n ParentPlanID: number = null;\r\n\r\n @Input('Day') Day: MealPlanDay;\r\n @Input('PlanDays') PlanDays: Array = null;\r\n @Input('PlanView') PlanView: boolean = false;\r\n @Input('HidePlanName') HidePlanName: boolean = false;\r\n\r\n DayForm: FormGroup;\r\n MealSource: LocalDataSource;\r\n\r\n MealCals = 0;\r\n MealProtein = 0;\r\n MealCarbs = 0;\r\n MealNetCarbs = 0;\r\n MealFats = 0;\r\n NewDayView = false;\r\n isDirty = false;\r\n isNativeApp = false;\r\n\r\n @ViewChildren('MealPresentation')\r\n private MealPresentationViews: QueryList;\r\n @ViewChild('DayMetricsGraphView')\r\n DayMetricsGraphView: AdjustMetricsGraphComponent = null;\r\n\r\n DayNotesWidth = '80%';\r\n DayNotesHeight = '200px';\r\n\r\n FormConstants = FormConstants;\r\n\r\n /**\r\n * Settings of the ng2 smart table of Meals\r\n */\r\n MealTableSettings = {\r\n mode: 'external',\r\n actions: {\r\n position: 'right',\r\n add: false,\r\n },\r\n edit: {\r\n editButtonContent:\r\n '',\r\n },\r\n delete: {\r\n deleteButtonContent:\r\n '',\r\n },\r\n columns: {\r\n name: { title: this.NameLabel, type: 'string', filter: false },\r\n time: { title: this.TimeLabel, type: 'string', filter: false },\r\n },\r\n };\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private fb: FormBuilder,\r\n private dialogService: NbDialogService,\r\n private chdetRef: ChangeDetectorRef,\r\n private FoodService: FoodData,\r\n private nativeApp: NativeAppService\r\n ) {\r\n super(dialogService);\r\n }\r\n\r\n get DayName() {\r\n return this.DayForm.get('DayName');\r\n }\r\n get DayNotes() {\r\n return this.DayForm.get('DayNotes');\r\n }\r\n get assignWeekDays() {\r\n return this.DayForm.get('assignWeekDays');\r\n }\r\n\r\n get IsDirty() {\r\n let childrenDirty = false;\r\n this.MealPresentationViews.forEach(\r\n (c) => (childrenDirty = childrenDirty || c.IsDirty)\r\n );\r\n return (\r\n this.isDirty ||\r\n childrenDirty ||\r\n (this.DayMetricsGraphView != null && this.DayMetricsGraphView.IsDirty)\r\n );\r\n }\r\n\r\n resetDirty() {\r\n super.resetDirty();\r\n this.DayMetricsGraphView.resetDirty();\r\n this.MealPresentationViews.forEach((c) => c.resetDirty());\r\n }\r\n\r\n /**\r\n * Initializes the component.\r\n * - Initializes the Day form.\r\n * - Gets the Plan ID from the URL\r\n * - Initalizes the Meals data source\r\n */\r\n ngOnInit(): void {\r\n // this.MealsOrdered();\r\n this.InitDayForm();\r\n\r\n this.isNativeApp = this.nativeApp.isFromApp();\r\n\r\n if (!this.Day) {\r\n this.Day = {\r\n id: null,\r\n meals: new Array(),\r\n name: '',\r\n planID: this.ParentPlanID,\r\n notes: '',\r\n dayOfWeek: [],\r\n createMeal: false,\r\n order: 1,\r\n };\r\n\r\n this.ShowSubmit = true;\r\n } else {\r\n this.DayForm.patchValue({\r\n DayName: this.Day.name,\r\n DayNotes: this.Day.notes,\r\n assignWeekDays: this.Day.dayOfWeek,\r\n });\r\n\r\n this.ShowSubmit = false;\r\n }\r\n\r\n this.MealSource = new LocalDataSource(this.Day.meals); // create the source\r\n\r\n this.PlanID = this.route.snapshot.paramMap.get('PlanId');\r\n\r\n if (this.Day.id !== null && this.Day.id > 0) {\r\n this.DayLabel = this.EditDay;\r\n } else {\r\n this.DayLabel = this.NewDay;\r\n this.NewDayView = true;\r\n }\r\n\r\n if (!this.Day.meals) {\r\n this.Day.meals = new Array();\r\n }\r\n\r\n if (\r\n this.Day != null &&\r\n this.Day !== undefined &&\r\n this.Day.createMeal &&\r\n this.Day.meals.length === 0\r\n ) {\r\n this.NewMeal();\r\n }\r\n\r\n this.PrepareDayObservables();\r\n this.PrepareMetricsTotalDayMetrics();\r\n super.resetDirty();\r\n }\r\n\r\n /**\r\n * AfterViewInit implementation.\r\n * Updates the Metrics Graph for the day whenever view updates.\r\n */\r\n ngAfterViewInit() {\r\n this.updateMealGraphUpdateBinding();\r\n }\r\n\r\n updateMealGraphUpdateBinding() {\r\n if (this.MealPresentationViews) {\r\n this.MealPresentationViews.forEach((view) => {\r\n view.ItemUpdateNotification.subscribe((data) => {\r\n this.PrepareDayObservables();\r\n this.DayMetricsGraphView.PrepareMealItems();\r\n this.PrepareMetricsTotalDayMetrics();\r\n\r\n this.chdetRef.detectChanges();\r\n });\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Method to initialize the Day form.\r\n */\r\n InitDayForm() {\r\n this.DayForm = this.fb.group({\r\n DayName: this.fb.control('', [\r\n Validators.required,\r\n Validators.minLength(5),\r\n Validators.maxLength(50),\r\n ]),\r\n DayNotes: this.fb.control('', [Validators.maxLength(500)]),\r\n assignWeekDays: this.fb.control([]),\r\n });\r\n // this.initForm(this.DayForm);\r\n }\r\n\r\n /**\r\n * Method to open a New Meal component as a pop up window to add a new meal\r\n */\r\n NewMeal() {\r\n let Time = '6:00 AM';\r\n\r\n if (this.Day.meals.length > 0) {\r\n Time = this.Day.meals[this.Day.meals.length - 1].time;\r\n }\r\n\r\n const NewTime = moment(Time, 'hh:mm a').toDate();\r\n NewTime.setHours(NewTime.getHours() + 2);\r\n NewTime.setMinutes(NewTime.getMinutes());\r\n const TimeString = format(\r\n '{0}:{1} {2}',\r\n NewTime.getHours() > 12 ? NewTime.getHours() - 12 : NewTime.getHours(),\r\n NewTime.getMinutes() < 10\r\n ? '0' + NewTime.getMinutes()\r\n : NewTime.getMinutes(),\r\n NewTime.getHours() >= 12 ? 'PM' : 'AM'\r\n );\r\n\r\n const NewMeal: Meal = {\r\n id: -1,\r\n dayID: this.Day.id,\r\n name: format('{0}', this.MealLabel),\r\n time: TimeString,\r\n items: null,\r\n };\r\n\r\n this.UpdateMeal(NewMeal);\r\n\r\n this.chdetRef.detectChanges();\r\n\r\n this.updateMealGraphUpdateBinding();\r\n }\r\n\r\n /**\r\n * Function to update the Day's meal list with the {meal} data.\r\n * @usageNotes\r\n * It is called after adding a new meal or editing an existing one to update the meals list.\r\n * @param meal Meal object\r\n */\r\n UpdateMeal(meal: Meal) {\r\n if (meal !== null && meal !== undefined) {\r\n // check if meal is in list --\r\n const found = this.Day.meals.find((element) => element === meal);\r\n if (!found) {\r\n this.Day.meals.push(meal);\r\n }\r\n\r\n if (this.DayMetricsGraphView) this.DayMetricsGraphView.PrepareMealItems();\r\n this.PrepareMealItemsObservables(meal);\r\n this.PrepareMetricsTotalDayMetrics();\r\n\r\n this.MealSource.refresh();\r\n\r\n this.isDirty = true;\r\n }\r\n }\r\n\r\n /**\r\n * Event handler of 'Edit' action.\r\n * Opens the Meal component to edit an existing meal and updates the meals list.\r\n * @param $event Event object\r\n */\r\n onEdit($event) {\r\n this.dialogService\r\n .open(MealComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: {\r\n TheMeal: $event.data,\r\n ExistingMeals: this.Day.meals,\r\n DayID: this.Day.id,\r\n },\r\n })\r\n .onClose.subscribe((meal) => this.UpdateMeal(meal));\r\n }\r\n\r\n\r\n Copy(block: Meal) {\r\n MealPresentationComponent.clipboard = block;\r\n }\r\n\r\n\r\n Paste(block: Meal, index:Number) {\r\n const list: MealItem[] = [];\r\n\r\n if (MealPresentationComponent.clipboard != null) {\r\n MealPresentationComponent.clipboard.items.forEach((item) => {\r\n const newItem = CopyMealItem(item);\r\n newItem.mealID = block.id;\r\n list.push(newItem);\r\n });\r\n }\r\n\r\n\r\n this.MealPresentationViews.find(\r\n (y) => y.Index === index\r\n ).MealItemsView.UpdateSelectedItem(list);\r\n\r\n MealPresentationComponent.clipboard = null;\r\n }\r\n\r\n HasClipboard(): boolean {\r\n return MealPresentationComponent.clipboard != null;\r\n }\r\n\r\n\r\n /**\r\n * Removes the selected meal\r\n */\r\n RemoveMeal(meal) {\r\n if (meal.items.length === 0) {\r\n this.removeMealCore(meal);\r\n return;\r\n }\r\n\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: { Message: 'Are you sure to delete this meal?' },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result) {\r\n this.removeMealCore(meal);\r\n }\r\n });\r\n }\r\n\r\n removeMealCore(meal) {\r\n this.Day.meals = this.Day.meals.filter((m) => m !== meal);\r\n this.MealSource = new LocalDataSource(this.Day.meals); // create the source\r\n\r\n this.PrepareMetricsTotalDayMetrics();\r\n\r\n this.isDirty = true;\r\n }\r\n\r\n /**\r\n * Checks if Meal can be removed from the Day\r\n */\r\n get CanRemoveMeal() {\r\n if (this.Day.meals && this.Day.meals && this.Day.meals.length > 1)\r\n return true;\r\n return false;\r\n }\r\n\r\n Accept() { }\r\n\r\n Back() {\r\n // this.ref.close();\r\n }\r\n\r\n /**\r\n * Method to sort the meals list by its time\r\n */\r\n MealsOrdered() {\r\n if (\r\n this.Day !== null &&\r\n this.Day !== undefined &&\r\n this.Day.meals !== null &&\r\n this.Day.meals !== undefined &&\r\n this.Day.meals.length > 0\r\n ) {\r\n this.Day.meals.sort((a: Meal, b: Meal) => (a.time > b.time ? 1 : -1));\r\n }\r\n }\r\n\r\n /**\r\n * Method to prepare observables of the meals list by preparing observables for individual meal items\r\n */\r\n PrepareDayObservables() {\r\n // for the meal items -- configure an observable\r\n // place an observable on the object\r\n\r\n if (this.Day !== null && this.Day !== undefined) {\r\n if (\r\n this.Day.meals !== null &&\r\n this.Day.meals !== undefined &&\r\n this.Day.meals.length > 0\r\n ) {\r\n for (const meal of this.Day.meals) {\r\n this.PrepareMealItemsObservables(meal);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Method to prepare an observable of the {meal} object.\r\n * Creates a 'Update' sujbect to subscribe with the callback which update the Metrics Graph.\r\n * @param meal Meal object\r\n */\r\n private PrepareMealItemsObservables(meal) {\r\n if (meal && meal.items) {\r\n for (const item of meal.items) {\r\n if (!isObservable(item.Update)) item.Update = new Subject();\r\n\r\n item.Update.subscribe((data) => {\r\n this.PrepareMetricsTotalDayMetrics();\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Method to update Metrics graph data.\r\n */\r\n PrepareMetricsTotalDayMetrics() {\r\n this.MealCals = 0;\r\n this.MealProtein = 0;\r\n this.MealCarbs = 0;\r\n this.MealNetCarbs = 0;\r\n this.MealFats = 0;\r\n\r\n if (this.Day !== null && this.Day !== undefined) {\r\n if (\r\n this.Day.meals !== null &&\r\n this.Day.meals !== undefined &&\r\n this.Day.meals.length > 0\r\n ) {\r\n for (const meal of this.Day.meals) {\r\n if (meal.items) {\r\n for (const item of meal.items) {\r\n const itemMetrics = CalculateMetrics(item);\r\n this.MealCals += itemMetrics.MealCals;\r\n this.MealProtein += itemMetrics.MealProtein;\r\n this.MealCarbs += itemMetrics.MealCarbs;\r\n this.MealNetCarbs += itemMetrics.MealNetCarbs;\r\n this.MealFats += itemMetrics.MealFats;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Event handler for Name field\r\n * @param $event Event object\r\n */\r\n NameChange($event) {\r\n this.Day.name = this.DayName.value;\r\n }\r\n\r\n /**\r\n * Event handler for Notes field\r\n * @param $event Event object\r\n */\r\n NotesChange($event) {\r\n this.Day.notes = $event.target.value;\r\n }\r\n\r\n onAssignWeekDaysChagne($event): void {\r\n if ($event.target) return;\r\n this.Day.dayOfWeek = $event;\r\n }\r\n\r\n ViewPlan() { }\r\n\r\n private MonitorMealChanges() {\r\n if (\r\n this.Day != null &&\r\n this.Day !== undefined &&\r\n this.Day.meals != null &&\r\n this.Day.meals !== undefined\r\n ) {\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Component for Plan Day View.\r\n * Inherits from the PlanDayComponentBase component.\r\n */\r\n@Component({\r\n selector: 'app-plan-day-view',\r\n templateUrl: './plan-day.component.html',\r\n styleUrls: ['./plan-day.component.scss', '../../global.component.scss'],\r\n})\r\nexport class MealPlanDayComponent extends MealPlanDayComponentBase {\r\n constructor(\r\n protected PlanDayRef: NbDialogService,\r\n PlanDayRoute: ActivatedRoute,\r\n PlanDayFB: FormBuilder,\r\n PlanDayDialogService: NbDialogService,\r\n cdRef: ChangeDetectorRef,\r\n PlanFoodService: FoodData,\r\n nativeApp: NativeAppService\r\n ) {\r\n super(\r\n PlanDayRoute,\r\n PlanDayFB,\r\n PlanDayDialogService,\r\n cdRef,\r\n PlanFoodService,\r\n nativeApp\r\n );\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-plan-mobile-day',\r\n templateUrl: './plan-day-mobile.component.html',\r\n styleUrls: ['./plan-day.component.scss', '../../global.component.scss'],\r\n})\r\nexport class MealPlanDayMobileLayoutComponent extends MealPlanDayComponentBase { }\r\n\r\n/**\r\n * Component for showing Plan Day in a dialog.\r\n * Inherits from the PlanDayComponentBase component.\r\n */\r\n@Component({\r\n selector: 'app-plan-day-dialog',\r\n templateUrl: './plan-day.component.html',\r\n styleUrls: ['./plan-day.component.scss', '../../global.component.scss'],\r\n})\r\nexport class MealPlanDayDialogComponent extends MealPlanDayComponentBase {\r\n constructor(\r\n protected PlanDayService: NbDialogService,\r\n protected PlanDayRef: NbDialogRef,\r\n PlanDayRoute: ActivatedRoute,\r\n PlanDayFB: FormBuilder,\r\n cdRef: ChangeDetectorRef,\r\n PlanFoodService: FoodData,\r\n nativeApp: NativeAppService\r\n ) {\r\n super(\r\n PlanDayRoute,\r\n PlanDayFB,\r\n PlanDayService,\r\n cdRef,\r\n PlanFoodService,\r\n nativeApp\r\n );\r\n }\r\n\r\n Accept() {\r\n if (this.Day.meals !== null && this.Day.meals.length > 0) {\r\n this.Day.name = this.DayName.value;\r\n this.Day.notes = this.DayNotes.value;\r\n this.Day.dayOfWeek = this.assignWeekDays.value;\r\n this.PlanDayRef.close(this.Day);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Component for static Plan Day view.\r\n * Inherits from the PlanDayComponentBase component.\r\n */\r\n@Component({\r\n selector: 'app-plan-static-day',\r\n templateUrl: './plan-day.component.html',\r\n styleUrls: ['./plan-day.component.scss', '../../global.component.scss'],\r\n})\r\nexport class MealPlanDayStaticComponent extends MealPlanDayComponentBase {\r\n constructor(\r\n PlanDayRoute: ActivatedRoute,\r\n PlanDayFB: FormBuilder,\r\n cdRef: ChangeDetectorRef,\r\n PlanDayDialogService: NbDialogService,\r\n PlanFoodService: FoodData,\r\n nativeApp: NativeAppService\r\n ) {\r\n super(\r\n PlanDayRoute,\r\n PlanDayFB,\r\n PlanDayDialogService,\r\n cdRef,\r\n PlanFoodService,\r\n nativeApp\r\n );\r\n this.PlanView = true;\r\n }\r\n}\r\n\r\n/**\r\n * Component for Plan Day Report.\r\n * Inherits from the PlanDayComponentBase component.\r\n */\r\n@Component({\r\n selector: 'app-plan-report-day',\r\n templateUrl: './plan-day.report-component.html',\r\n styleUrls: ['./plan-day.component.scss'],\r\n})\r\n/** plan-day component*/\r\nexport class MealPlanDayReportComponent extends MealPlanDayComponentBase {\r\n constructor(\r\n PlanDayRoute: ActivatedRoute,\r\n PlanDayFB: FormBuilder,\r\n cdRef: ChangeDetectorRef,\r\n PlanDayDialogService: NbDialogService,\r\n PlanFoodService: FoodData,\r\n nativeApp: NativeAppService\r\n ) {\r\n super(\r\n PlanDayRoute,\r\n PlanDayFB,\r\n PlanDayDialogService,\r\n cdRef,\r\n PlanFoodService,\r\n nativeApp\r\n );\r\n }\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar iterator_1 = require(\"../symbol/iterator\");\nexports.subscribeToIterable = function (iterable) { return function (subscriber) {\n var iterator = iterable[iterator_1.iterator]();\n do {\n var item = iterator.next();\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(function () {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n}; };\n//# sourceMappingURL=subscribeToIterable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isFunction(x) {\n return typeof x === 'function';\n}\nexports.isFunction = isFunction;\n//# sourceMappingURL=isFunction.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nexports.map = map;\nvar MapOperator = (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexports.MapOperator = MapOperator;\nvar MapSubscriber = (function (_super) {\n __extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.count = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber_1.Subscriber));\n//# sourceMappingURL=map.js.map","import { NgModule } from '@angular/core';\r\nimport { NbEvaIconsModule } from '@nebular/eva-icons';\r\nimport { ChartModule } from 'angular2-chartjs';\r\nimport {\r\n NbCheckboxModule,\r\n NbTabsetModule,\r\n NbToggleModule,\r\n NbSelectModule,\r\n NbProgressBarModule,\r\n NbDialogModule,\r\n NbPopoverModule,\r\n NbFormFieldModule,\r\n NbAutocompleteModule,\r\n NbIconModule,\r\n NbAlertModule,\r\n NbButtonModule,\r\n} from '@nebular/theme';\r\n\r\nimport {\r\n AdjustMetricsGraphComponent,\r\n MealMetricsGraphComponent,\r\n} from './meal-metrics-graph.component';\r\n\r\nconst NB_MODULES = [\r\n NbEvaIconsModule,\r\n NbButtonModule,\r\n NbAlertModule,\r\n NbIconModule,\r\n NbCheckboxModule,\r\n NbTabsetModule,\r\n NbToggleModule,\r\n NbSelectModule,\r\n NbProgressBarModule,\r\n NbDialogModule,\r\n NbPopoverModule,\r\n NbFormFieldModule,\r\n NbAutocompleteModule,\r\n];\r\n\r\n@NgModule({\r\n imports: [...NB_MODULES, ChartModule],\r\n declarations: [MealMetricsGraphComponent, AdjustMetricsGraphComponent],\r\n exports: [MealMetricsGraphComponent, AdjustMetricsGraphComponent],\r\n})\r\nexport class GraphModule {}\r\n","// Line Annotation implementation\nmodule.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\tvar helpers = require('../helpers.js')(Chart);\n\n\tvar horizontalKeyword = 'horizontal';\n\tvar verticalKeyword = 'vertical';\n\n\tvar LineAnnotation = Chart.Annotation.Element.extend({\n\t\tsetDataLimits: function() {\n\t\t\tvar model = this._model;\n\t\t\tvar options = this.options;\n\n\t\t\t// Set the data range for this annotation\n\t\t\tmodel.ranges = {};\n\t\t\tmodel.ranges[options.scaleID] = {\n\t\t\t\tmin: options.value,\n\t\t\t\tmax: options.endValue || options.value\n\t\t\t};\n\t\t},\n\t\tconfigure: function() {\n\t\t\tvar model = this._model;\n\t\t\tvar options = this.options;\n\t\t\tvar chartInstance = this.chartInstance;\n\t\t\tvar ctx = chartInstance.chart.ctx;\n\n\t\t\tvar scale = chartInstance.scales[options.scaleID];\n\t\t\tvar pixel, endPixel;\n\t\t\tif (scale) {\n\t\t\t\tpixel = helpers.isValid(options.value) ? scale.getPixelForValue(options.value) : NaN;\n\t\t\t\tendPixel = helpers.isValid(options.endValue) ? scale.getPixelForValue(options.endValue) : pixel;\n\t\t\t}\n\n\t\t\tif (isNaN(pixel)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar chartArea = chartInstance.chartArea;\n\n\t\t\t// clip annotations to the chart area\n\t\t\tmodel.clip = {\n\t\t\t\tx1: chartArea.left,\n\t\t\t\tx2: chartArea.right,\n\t\t\t\ty1: chartArea.top,\n\t\t\t\ty2: chartArea.bottom\n\t\t\t};\n\n\t\t\tif (this.options.mode == horizontalKeyword) {\n\t\t\t\tmodel.x1 = chartArea.left;\n\t\t\t\tmodel.x2 = chartArea.right;\n\t\t\t\tmodel.y1 = pixel;\n\t\t\t\tmodel.y2 = endPixel;\n\t\t\t} else {\n\t\t\t\tmodel.y1 = chartArea.top;\n\t\t\t\tmodel.y2 = chartArea.bottom;\n\t\t\t\tmodel.x1 = pixel;\n\t\t\t\tmodel.x2 = endPixel;\n\t\t\t}\n\n\t\t\tmodel.line = new LineFunction(model);\n\t\t\tmodel.mode = options.mode;\n\n\t\t\t// Figure out the label:\n\t\t\tmodel.labelBackgroundColor = options.label.backgroundColor;\n\t\t\tmodel.labelFontFamily = options.label.fontFamily;\n\t\t\tmodel.labelFontSize = options.label.fontSize;\n\t\t\tmodel.labelFontStyle = options.label.fontStyle;\n\t\t\tmodel.labelFontColor = options.label.fontColor;\n\t\t\tmodel.labelXPadding = options.label.xPadding;\n\t\t\tmodel.labelYPadding = options.label.yPadding;\n\t\t\tmodel.labelCornerRadius = options.label.cornerRadius;\n\t\t\tmodel.labelPosition = options.label.position;\n\t\t\tmodel.labelXAdjust = options.label.xAdjust;\n\t\t\tmodel.labelYAdjust = options.label.yAdjust;\n\t\t\tmodel.labelEnabled = options.label.enabled;\n\t\t\tmodel.labelContent = options.label.content;\n\n\t\t\tctx.font = chartHelpers.fontString(model.labelFontSize, model.labelFontStyle, model.labelFontFamily);\n\t\t\tvar textWidth = ctx.measureText(model.labelContent).width;\n\t\t\tvar textHeight = ctx.measureText('M').width;\n\t\t\tvar labelPosition = calculateLabelPosition(model, textWidth, textHeight, model.labelXPadding, model.labelYPadding);\n\t\t\tmodel.labelX = labelPosition.x - model.labelXPadding;\n\t\t\tmodel.labelY = labelPosition.y - model.labelYPadding;\n\t\t\tmodel.labelWidth = textWidth + (2 * model.labelXPadding);\n\t\t\tmodel.labelHeight = textHeight + (2 * model.labelYPadding);\n\n\t\t\tmodel.borderColor = options.borderColor;\n\t\t\tmodel.borderWidth = options.borderWidth;\n\t\t\tmodel.borderDash = options.borderDash || [];\n\t\t\tmodel.borderDashOffset = options.borderDashOffset || 0;\n\t\t},\n\t\tinRange: function(mouseX, mouseY) {\n\t\t\tvar model = this._model;\n\t\t\t\n\t\t\treturn (\n\t\t\t\t// On the line\n\t\t\t\tmodel.line &&\n\t\t\t\tmodel.line.intersects(mouseX, mouseY, this.getHeight())\n\t\t\t) || (\n\t\t\t\t// On the label\n\t\t\t\tmodel.labelEnabled &&\n\t\t\t\tmodel.labelContent &&\n\t\t\t\tmouseX >= model.labelX && \n\t\t\t\tmouseX <= model.labelX + model.labelWidth && \n\t\t\t\tmouseY >= model.labelY && \n\t\t\t\tmouseY <= model.labelY + model.labelHeight\n\t\t\t);\n\t\t},\n\t\tgetCenterPoint: function() {\n\t\t\treturn {\n\t\t\t\tx: (this._model.x2 + this._model.x1) / 2,\n\t\t\t\ty: (this._model.y2 + this._model.y1) / 2\n\t\t\t};\n\t\t},\n\t\tgetWidth: function() {\n\t\t\treturn Math.abs(this._model.right - this._model.left);\n\t\t},\n\t\tgetHeight: function() {\n\t\t\treturn this._model.borderWidth || 1;\n\t\t},\n\t\tgetArea: function() {\n\t\t\treturn Math.sqrt(Math.pow(this.getWidth(), 2) + Math.pow(this.getHeight(), 2));\n\t\t},\n\t\tdraw: function() {\n\t\t\tvar view = this._view;\n\t\t\tvar ctx = this.chartInstance.chart.ctx;\n\n\t\t\tif (!view.clip) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.save();\n\n\t\t\t// Canvas setup\n\t\t\tctx.beginPath();\n\t\t\tctx.rect(view.clip.x1, view.clip.y1, view.clip.x2 - view.clip.x1, view.clip.y2 - view.clip.y1);\n\t\t\tctx.clip();\n\n\t\t\tctx.lineWidth = view.borderWidth;\n\t\t\tctx.strokeStyle = view.borderColor;\n\n\t\t\tif (ctx.setLineDash) {\n\t\t\t\tctx.setLineDash(view.borderDash);\n\t\t\t}\n\t\t\tctx.lineDashOffset = view.borderDashOffset;\n\n\t\t\t// Draw\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(view.x1, view.y1);\n\t\t\tctx.lineTo(view.x2, view.y2);\n\t\t\tctx.stroke();\n\n\t\t\tif (view.labelEnabled && view.labelContent) {\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.rect(view.clip.x1, view.clip.y1, view.clip.x2 - view.clip.x1, view.clip.y2 - view.clip.y1);\n\t\t\t\tctx.clip();\n\n\t\t\t\tctx.fillStyle = view.labelBackgroundColor;\n\t\t\t\t// Draw the tooltip\n\t\t\t\tchartHelpers.drawRoundedRectangle(\n\t\t\t\t\tctx,\n\t\t\t\t\tview.labelX, // x\n\t\t\t\t\tview.labelY, // y\n\t\t\t\t\tview.labelWidth, // width\n\t\t\t\t\tview.labelHeight, // height\n\t\t\t\t\tview.labelCornerRadius // radius\n\t\t\t\t);\n\t\t\t\tctx.fill();\n\n\t\t\t\t// Draw the text\n\t\t\t\tctx.font = chartHelpers.fontString(\n\t\t\t\t\tview.labelFontSize,\n\t\t\t\t\tview.labelFontStyle,\n\t\t\t\t\tview.labelFontFamily\n\t\t\t\t);\n\t\t\t\tctx.fillStyle = view.labelFontColor;\n\t\t\t\tctx.textAlign = 'center';\n\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\tctx.fillText(\n\t\t\t\t\tview.labelContent,\n\t\t\t\t\tview.labelX + (view.labelWidth / 2),\n\t\t\t\t\tview.labelY + (view.labelHeight / 2)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t}\n\t});\n\n\tfunction LineFunction(view) {\n\t\t// Describe the line in slope-intercept form (y = mx + b).\n\t\t// Note that the axes are rotated 90° CCW, which causes the\n\t\t// x- and y-axes to be swapped.\n\t\tvar m = (view.x2 - view.x1) / (view.y2 - view.y1);\n\t\tvar b = view.x1 || 0;\n\n\t\tthis.m = m;\n\t\tthis.b = b;\n\n\t\tthis.getX = function(y) {\n\t\t\t// Coordinates are relative to the origin of the canvas\n\t\t\treturn m * (y - view.y1) + b;\n\t\t};\n\n\t\tthis.getY = function(x) {\n\t\t\treturn ((x - b) / m) + view.y1;\n\t\t};\n\n\t\tthis.intersects = function(x, y, epsilon) {\n\t\t\tepsilon = epsilon || 0.001;\n\t\t\tvar dy = this.getY(x),\n\t\t\t\tdx = this.getX(y);\n\t\t\treturn (\n\t\t\t\t(!isFinite(dy) || Math.abs(y - dy) < epsilon) &&\n\t\t\t\t(!isFinite(dx) || Math.abs(x - dx) < epsilon)\n\t\t\t);\n\t\t};\n\t}\n\n\tfunction calculateLabelPosition(view, width, height, padWidth, padHeight) {\n\t\tvar line = view.line;\n\t\tvar ret = {}, xa = 0, ya = 0;\n\n\t\tswitch (true) {\n\t\t\t// top align\n\t\t\tcase view.mode == verticalKeyword && view.labelPosition == \"top\":\n\t\t\t\tya = padHeight + view.labelYAdjust;\n\t\t\t\txa = (width / 2) + view.labelXAdjust;\n\t\t\t\tret.y = view.y1 + ya;\n\t\t\t\tret.x = (isFinite(line.m) ? line.getX(ret.y) : view.x1) - xa;\n\t\t\tbreak;\n\n\t\t\t// bottom align\n\t\t\tcase view.mode == verticalKeyword && view.labelPosition == \"bottom\":\n\t\t\t\tya = height + padHeight + view.labelYAdjust;\n\t\t\t\txa = (width / 2) + view.labelXAdjust;\n\t\t\t\tret.y = view.y2 - ya;\n\t\t\t\tret.x = (isFinite(line.m) ? line.getX(ret.y) : view.x1) - xa;\n\t\t\tbreak;\n\n\t\t\t// left align\n\t\t\tcase view.mode == horizontalKeyword && view.labelPosition == \"left\":\n\t\t\t\txa = padWidth + view.labelXAdjust;\n\t\t\t\tya = -(height / 2) + view.labelYAdjust;\n\t\t\t\tret.x = view.x1 + xa;\n\t\t\t\tret.y = line.getY(ret.x) + ya;\n\t\t\tbreak;\n\n\t\t\t// right align\n\t\t\tcase view.mode == horizontalKeyword && view.labelPosition == \"right\":\n\t\t\t\txa = width + padWidth + view.labelXAdjust;\n\t\t\t\tya = -(height / 2) + view.labelYAdjust;\n\t\t\t\tret.x = view.x2 - xa;\n\t\t\t\tret.y = line.getY(ret.x) + ya;\n\t\t\tbreak;\n\n\t\t\t// center align\n\t\t\tdefault:\n\t\t\t\tret.x = ((view.x1 + view.x2 - width) / 2) + view.labelXAdjust;\n\t\t\t\tret.y = ((view.y1 + view.y2 - height) / 2) + view.labelYAdjust;\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\treturn LineAnnotation;\n};\n","import {\r\n Component,\r\n Input,\r\n OnInit,\r\n QueryList,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NbColorHelper, NbDialogService, NbThemeService } from '@nebular/theme';\r\nimport { finalize, takeUntil } from 'rxjs/operators';\r\nimport { NbToastrService } from '@nebular/theme';\r\nimport { Subject } from 'rxjs/Subject';\r\n\r\nimport { Observable } from 'rxjs';\r\nimport {\r\n Goal,\r\n GoalData,\r\n GoalView,\r\n} from '../../../../@core/interfaces/common/CalorieFriend/goals';\r\n\r\nimport { GoalDefComponent } from '../../Goals/GoalDef/goal-def.component';\r\n\r\nimport { Chart } from 'chart.js';\r\nimport * as ChartAnnotation from 'chartjs-plugin-annotation';\r\nimport {\r\n Patient,\r\n PatientData,\r\n} from 'app/@core/interfaces/common/CalorieFriend/patients';\r\nimport { ChangeDetectorRef } from '@angular/core';\r\nimport { ConfirmMessageDialogComponent } from 'app/@components/confirm-message-dialog/confirm-message-dialog.component';\r\nimport { GridData } from 'app/@core/interfaces/common/grid-data';\r\n\r\n/**\r\n * Component for listing the Goals items of the Patient\r\n * as Graphs and Tables on the Patient Sheet View page\r\n */\r\n@Component({\r\n selector: 'app-goals-list-view',\r\n templateUrl: './goals-list-view.component.html',\r\n styleUrls: [\r\n './goals-list-view.component.scss',\r\n '../../global.component.scss',\r\n ],\r\n})\r\nexport class GoalsListViewComponent implements OnInit {\r\n GoalListLabel = 'Goals';\r\n AddGoalLabel = 'Add New Goal';\r\n EditGoalLabel = 'Edit';\r\n RemoveGoalLabel = 'Remove';\r\n GoalNameLabel = 'Name';\r\n GoalActiveDaysLabel = 'Days';\r\n GoalActiveStateLabel = 'Active';\r\n AcceptLabel = 'SAVE PLANS';\r\n BackLabel = 'Back';\r\n TemplateLabel = 'Template';\r\n SucessDeleteGoal = 'Sucessfully deleted Goal';\r\n FailDeleteGoal = 'Problem occurred deelting Goal';\r\n\r\n @ViewChildren('chart') charts: QueryList;\r\n\r\n @Input('PatientID') PatientID: number = null;\r\n @Input('AllowEdit') AllowEdit: boolean = true;\r\n @Input('NotificationToken') NotificationToken: string = null;\r\n\r\n @Input('IsView') IsView: boolean = false;\r\n\r\n Goals: Array = null;\r\n GraphData: Array = null;\r\n GoalListSource: Observable> = null;\r\n isLoading = false;\r\n\r\n Patient: Patient = null;\r\n\r\n protected readonly unsubscribe$ = new Subject();\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private dialogService: NbDialogService,\r\n private goalsService: GoalData,\r\n private patientService: PatientData,\r\n private toasterService: NbToastrService,\r\n private theme: NbThemeService,\r\n protected cd: ChangeDetectorRef,\r\n ) {\r\n const namedChartAnnotation = ChartAnnotation;\r\n namedChartAnnotation['id'] = 'annotation';\r\n Chart.pluginService.register(namedChartAnnotation);\r\n }\r\n\r\n /**\r\n * Initializes the component.\r\n * It gets the Patient ID from the URL and initializes the settings for the Goals list of that Patient.\r\n */\r\n ngOnInit(): void {\r\n if (this.PatientID == null || this.PatientID === undefined)\r\n this.PatientID = +this.route.snapshot.paramMap.get('PatientId');\r\n\r\n if (this.NotificationToken == null || this.NotificationToken === undefined)\r\n this.NotificationToken =\r\n this.route.snapshot.paramMap.get('NotificationToken');\r\n\r\n this.GoalListSource = this.goalsService.GoalsList(\r\n this.PatientID,\r\n this.NotificationToken,\r\n );\r\n\r\n this.loadPatientData();\r\n\r\n this.refreshGoals();\r\n\r\n // binding change message of the service\r\n this.patientService.onUpdated$.subscribe((id) => {\r\n if (this.PatientID === id) {\r\n this.loadPatientData();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Loads the data of the Patient given by {PatientID}\r\n * @param id The identifier of the Goal\r\n */\r\n loadPatientData() {\r\n if (this.PatientID || this.NotificationToken) {\r\n this.patientService\r\n .get(this.PatientID, this.NotificationToken)\r\n .pipe(takeUntil(this.unsubscribe$))\r\n .subscribe((p) => {\r\n this.Patient = p;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Function to get the name from the Goal\r\n * @param goal\r\n */\r\n getGoalName(goal) {\r\n return (\r\n goal.goalName +\r\n ' (' +\r\n (goal.status === 0\r\n ? $localize`:@@Active:Active`\r\n : goal.status === 1\r\n ? $localize`:@@Achieved:Achieved`\r\n : $localize`:@@Expired:Expired`) +\r\n ')'\r\n );\r\n }\r\n\r\n /**\r\n * Method to refresh the goals list with data, progress bar and graph.\r\n */\r\n public refreshGoals() {\r\n this.isLoading = true;\r\n this.GoalListSource\r\n .pipe(finalize(() => this.isLoading = false))\r\n .subscribe((res) => {\r\n this.Goals = res.items;\r\n\r\n this.themeSubscription = this.theme.getJsTheme().subscribe((config) => {\r\n const colors = config.variables;\r\n const chartjs: any = config.variables.chartjs;\r\n\r\n this.GraphData = new Array();\r\n\r\n for (const g of this.Goals) {\r\n const labels = g.biometricsData.map((b) => b.date.toString());\r\n let values = g.biometricsData\r\n .filter((b) => b.value >= 0)\r\n .map((b) => b.value);\r\n let planValues = g.biometricsData.map((b) => b.planValue);\r\n\r\n if (this.Patient && this.Patient.isPreferredUnitImperial) {\r\n if (g.goalType === 'Weight') {\r\n g.goalValue = Math.round((g.goalValue * 2.20462));\r\n g.startValue = Math.round((g.startValue * 2.20462));\r\n values = values.map((b) => Math.round((b * 2.20462)));\r\n planValues = planValues.map(\r\n (v) => Math.round(v * 2.20462),\r\n );\r\n }\r\n } else {\r\n g.goalValue = Math.round(g.goalValue);\r\n g.startValue = Math.round(g.startValue);\r\n }\r\n\r\n const data = {\r\n labels: labels,\r\n datasets: [\r\n {\r\n data: values,\r\n label: $localize`:@@Measure:Measure`,\r\n fill: false,\r\n backgroundColor: '#3498db',\r\n borderColor: '#3498db',\r\n borderWidth: 7\r\n },\r\n {\r\n data: planValues,\r\n label: $localize`:@@Plan:Plan`,\r\n fill: false,\r\n backgroundColor: '#2ecc71',\r\n borderColor: '#2ecc71',\r\n borderWidth: 5\r\n },\r\n ],\r\n };\r\n\r\n this.GraphData.push(data);\r\n }\r\n\r\n this.options = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n animation: {\r\n duration: 0,\r\n },\r\n scales: {\r\n xAxes: [\r\n {\r\n gridLines: {\r\n display: false,\r\n },\r\n ticks: {\r\n fontColor: chartjs.textColor,\r\n },\r\n },\r\n ],\r\n yAxes: [\r\n {\r\n gridLines: {\r\n display: false,\r\n },\r\n ticks: {\r\n fontColor: chartjs.textColor,\r\n },\r\n },\r\n ],\r\n },\r\n legend: {\r\n labels: {\r\n fontColor: chartjs.textColor,\r\n usePointStyle : true,\r\n pointStyle: 'circle',\r\n lineWidth: 0,\r\n },\r\n position: 'bottom',\r\n },\r\n elements: {\r\n point:{\r\n radius: 0\r\n }\r\n },\r\n annotation: {\r\n annotations: [\r\n {\r\n type: 'line',\r\n mode: 'vertical',\r\n scaleID: 'x-axis-0',\r\n value: this.getFormattedTodayDate(),\r\n borderColor: 'orange',\r\n borderWidth: 2,\r\n labelOptions: {\r\n overflow: 'none',\r\n shape: 'rect',\r\n },\r\n label: {\r\n enabled: true,\r\n fontColor: 'orange',\r\n content: 'Today',\r\n position: 'bottom',\r\n xAdjust: -20,\r\n },\r\n },\r\n ],\r\n },\r\n };\r\n });\r\n\r\n this.forceGoalsChartRefresh();\r\n });\r\n }\r\n\r\n forceGoalsChartRefresh() {\r\n setTimeout(() => {\r\n for (const chart of this.charts) {\r\n chart.chart.canvas.style =\r\n 'display: block; height: 250px; width: 100%;';\r\n chart.chart.update();\r\n }\r\n this.cd.detectChanges();\r\n }, 30);\r\n }\r\n\r\n getFormattedTodayDate(): string {\r\n const date = new Date();\r\n\r\n let month = (1 + date.getMonth()).toString();\r\n month = month.length > 1 ? month : '0' + month;\r\n\r\n let day = date.getDate().toString();\r\n day = day.length > 1 ? day : '0' + day;\r\n\r\n return month + '/' + day;\r\n }\r\n\r\n /**\r\n * Method to add a new goal.\r\n * It opens the 'GoalDefComponent' component as a pop up dialog.\r\n */\r\n AddGoal() {\r\n this.dialogService\r\n .open(GoalDefComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: { PatientID: this.PatientID },\r\n })\r\n .onClose.subscribe((goal) => this.refreshGoals());\r\n }\r\n\r\n UpdateGoal(goal: Goal) {\r\n if (goal !== null && goal !== undefined) {\r\n // this.Goals = this.Goals.filter(goal => goal.id !== Goal.id || goal.name !== Goal.name);\r\n // this.Goals.push(Goal);\r\n // this.GoalSource = new LocalDataSource(this.Goals); // create the source\r\n }\r\n }\r\n\r\n /**\r\n * Method to edit an existing goal.\r\n * It opens the 'GoalDefComponent' component as a pop up dialog.\r\n */\r\n onEdit(row) {\r\n // this.router.navigate([`/pages/CalorieFriend/Goal/${this.PatientID}/${this.Goals[row].id}`]);\r\n\r\n this.dialogService\r\n .open(GoalDefComponent, {\r\n closeOnEsc: false,\r\n closeOnBackdropClick: false,\r\n context: {\r\n PatientID: this.PatientID,\r\n ID: this.Goals[row].id,\r\n },\r\n })\r\n .onClose.subscribe((goal) => this.refreshGoals());\r\n }\r\n\r\n /**\r\n * Event handler of the 'Click' event of the 'Delete' action.\r\n * It deletes a Goal in the row of index number - {row}.\r\n * @param row Row index number\r\n */\r\n onDelete(row) {\r\n this.dialogService\r\n .open(ConfirmMessageDialogComponent, {\r\n closeOnEsc: true,\r\n closeOnBackdropClick: true,\r\n context: { Message: 'Are you sure to delete this goal?' },\r\n })\r\n .onClose.subscribe((result) => {\r\n if (result) {\r\n const observable = this.goalsService.delete(this.Goals[row].id);\r\n observable.pipe(takeUntil(this.unsubscribe$)).subscribe(\r\n () => {\r\n this.handleGoalDeleteSuccessResponse();\r\n this.refreshGoals();\r\n },\r\n (err) => {\r\n this.handleGoalDeleteWrongResponse();\r\n },\r\n );\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Handler of Success event of Delete action of an existing goal\r\n */\r\n handleGoalDeleteSuccessResponse() {\r\n this.toasterService.success('', this.SucessDeleteGoal);\r\n }\r\n\r\n /**\r\n * Handler of Fail event of Delete action of an existing goal\r\n */\r\n handleGoalDeleteWrongResponse() {\r\n this.toasterService.danger('', this.FailDeleteGoal);\r\n }\r\n\r\n Accept() {}\r\n\r\n Back() {}\r\n\r\n getGoalDate(dateString): string {\r\n const date = new Date(dateString);\r\n return date.toDateString();\r\n }\r\n\r\n //#region Graph\r\n\r\n data: any;\r\n options: any;\r\n themeSubscription: any;\r\n\r\n //#endregion\r\n}\r\n","\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n {{getGoalName(g)}}\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
    \r\n
  • Created on:
  • \r\n
  • {{ g.createdDate }}
  • \r\n
\r\n
    \r\n
  • Updated on:
  • \r\n
  • {{ g.updatedDate }}
  • \r\n
\r\n
    \r\n
  • End date:
  • \r\n
  • {{ g.targetDate }}
  • \r\n
\r\n
    \r\n
  • Goal Type:
  • \r\n
  • {{ g.goalTypeDetail }}
  • \r\n
\r\n
    \r\n
  • Start {{g.goalType}}:
  • \r\n
  • {{ g.startValue }} {{g.goalType == 'Weight' ? (Patient && Patient.isPreferredUnitImperial ? 'lbs':'kg'):''}}
  • \r\n
\r\n
    \r\n
  • Target {{g.goalType}}:
  • \r\n
  • {{ g.goalValue }} {{g.goalType == 'Weight' ? (Patient && Patient.isPreferredUnitImperial ? 'lbs':'kg'):''}}
  • \r\n
\r\n
\r\n\r\n
\r\n 0 ? g.progress: 0\" [displayValue]=\"true\" class=\"{{g.progress > 0 ? '': 'zero-progress' }}\">\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction noop() { }\nexports.noop = noop;\n//# sourceMappingURL=noop.js.map","function noop() {}\n\nfunction elements(chartInstance) {\n\t// Turn the elements object into an array of elements\n\tvar elements = chartInstance.annotation.elements;\n\treturn Object.keys(elements).map(function(id) {\n\t\treturn elements[id];\n\t});\n}\n\nfunction objectId() {\n\treturn Math.random().toString(36).substr(2, 6);\n}\n\nfunction isValid(rawValue) {\n\tif (rawValue === null || typeof rawValue === 'undefined') {\n\t\treturn false;\n\t} else if (typeof rawValue === 'number') {\n\t\treturn isFinite(rawValue);\n\t} else {\n\t\treturn !!rawValue;\n\t}\n}\n\nfunction decorate(obj, prop, func) {\n\tvar prefix = '$';\n\tif (!obj[prefix + prop]) {\n\t\tif (obj[prop]) {\n\t\t\tobj[prefix + prop] = obj[prop].bind(obj);\n\t\t\tobj[prop] = function() {\n\t\t\t\tvar args = [ obj[prefix + prop] ].concat(Array.prototype.slice.call(arguments));\n\t\t\t\treturn func.apply(obj, args);\n\t\t\t};\n\t\t} else {\n\t\t\tobj[prop] = function() {\n\t\t\t\tvar args = [ undefined ].concat(Array.prototype.slice.call(arguments));\n\t\t\t\treturn func.apply(obj, args);\n\t\t\t};\n\t\t}\n\t}\n}\n\nfunction callEach(fns, method) {\n\tfns.forEach(function(fn) {\n\t\t(method ? fn[method] : fn)();\n\t});\n}\n\nfunction getEventHandlerName(eventName) {\n\treturn 'on' + eventName[0].toUpperCase() + eventName.substring(1);\n}\n\nfunction createMouseEvent(type, previousEvent) {\n\ttry {\n\t\treturn new MouseEvent(type, previousEvent);\n\t} catch (exception) {\n\t\ttry {\n\t\t\tvar m = document.createEvent('MouseEvent');\n\t\t\tm.initMouseEvent(\n\t\t\t\ttype,\n\t\t\t\tpreviousEvent.canBubble,\n\t\t\t\tpreviousEvent.cancelable,\n\t\t\t\tpreviousEvent.view,\n\t\t\t\tpreviousEvent.detail,\n\t\t\t\tpreviousEvent.screenX,\n\t\t\t\tpreviousEvent.screenY,\n\t\t\t\tpreviousEvent.clientX,\n\t\t\t\tpreviousEvent.clientY,\n\t\t\t\tpreviousEvent.ctrlKey,\n\t\t\t\tpreviousEvent.altKey,\n\t\t\t\tpreviousEvent.shiftKey,\n\t\t\t\tpreviousEvent.metaKey,\n\t\t\t\tpreviousEvent.button,\n\t\t\t\tpreviousEvent.relatedTarget\n\t\t\t);\n\t\t\treturn m;\n\t\t} catch (exception2) {\n\t\t\tvar e = document.createEvent('Event');\n\t\t\te.initEvent(\n\t\t\t\ttype,\n\t\t\t\tpreviousEvent.canBubble,\n\t\t\t\tpreviousEvent.cancelable\n\t\t\t);\n\t\t\treturn e;\n\t\t}\n\t}\n}\n\nmodule.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\n\tfunction initConfig(config) {\n\t\tconfig = chartHelpers.configMerge(Chart.Annotation.defaults, config);\n\t\tif (chartHelpers.isArray(config.annotations)) {\n\t\t\tconfig.annotations.forEach(function(annotation) {\n\t\t\t\tannotation.label = chartHelpers.configMerge(Chart.Annotation.labelDefaults, annotation.label);\n\t\t\t});\n\t\t}\n\t\treturn config;\n\t}\n\n\tfunction getScaleLimits(scaleId, annotations, scaleMin, scaleMax) {\n\t\tvar ranges = annotations.filter(function(annotation) {\n\t\t\treturn !!annotation._model.ranges[scaleId];\n\t\t}).map(function(annotation) {\n\t\t\treturn annotation._model.ranges[scaleId];\n\t\t});\n\n\t\tvar min = ranges.map(function(range) {\n\t\t\treturn Number(range.min);\n\t\t}).reduce(function(a, b) {\n\t\t\treturn isFinite(b) && !isNaN(b) && b < a ? b : a;\n\t\t}, scaleMin);\n\n\t\tvar max = ranges.map(function(range) {\n\t\t\treturn Number(range.max);\n\t\t}).reduce(function(a, b) {\n\t\t\treturn isFinite(b) && !isNaN(b) && b > a ? b : a;\n\t\t}, scaleMax);\n\n\t\treturn {\n\t\t\tmin: min,\n\t\t\tmax: max\n\t\t};\n\t}\n\n\tfunction adjustScaleRange(scale) {\n\t\t// Adjust the scale range to include annotation values\n\t\tvar range = getScaleLimits(scale.id, elements(scale.chart), scale.min, scale.max);\n\t\tif (typeof scale.options.ticks.min === 'undefined' && typeof scale.options.ticks.suggestedMin === 'undefined') {\n\t\t\tscale.min = range.min;\n\t\t}\n\t\tif (typeof scale.options.ticks.max === 'undefined' && typeof scale.options.ticks.suggestedMax === 'undefined') {\n\t\t\tscale.max = range.max;\n\t\t}\n\t\tif (scale.handleTickRangeOptions) {\n\t\t\tscale.handleTickRangeOptions();\n\t\t}\n\t}\n\n\tfunction getNearestItems(annotations, position) {\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\n\t\treturn annotations\n\t\t\t.filter(function(element) {\n\t\t\t\treturn element.inRange(position.x, position.y);\n\t\t\t})\n\t\t\t.reduce(function(nearestItems, element) {\n\t\t\t\tvar center = element.getCenterPoint();\n\t\t\t\tvar distance = chartHelpers.distanceBetweenPoints(position, center);\n\n\t\t\t\tif (distance < minDistance) {\n\t\t\t\t\tnearestItems = [element];\n\t\t\t\t\tminDistance = distance;\n\t\t\t\t} else if (distance === minDistance) {\n\t\t\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\t\t\tnearestItems.push(element);\n\t\t\t\t}\n\n\t\t\t\treturn nearestItems;\n\t\t\t}, [])\n\t\t\t.sort(function(a, b) {\n\t\t\t\t// If there are multiple elements equally close,\n\t\t\t\t// sort them by size, then by index\n\t\t\t\tvar sizeA = a.getArea(), sizeB = b.getArea();\n\t\t\t\treturn (sizeA > sizeB || sizeA < sizeB) ? sizeA - sizeB : a._index - b._index;\n\t\t\t})\n\t\t\t.slice(0, 1)[0]; // return only the top item\n\t}\n\n\treturn {\n\t\tinitConfig: initConfig,\n\t\telements: elements,\n\t\tcallEach: callEach,\n\t\tnoop: noop,\n\t\tobjectId: objectId,\n\t\tisValid: isValid,\n\t\tdecorate: decorate,\n\t\tadjustScaleRange: adjustScaleRange,\n\t\tgetNearestItems: getNearestItems,\n\t\tgetEventHandlerName: getEventHandlerName,\n\t\tcreateMouseEvent: createMouseEvent\n\t};\n};\n\n","module.exports = function(Chart) {\n\tvar chartHelpers = Chart.helpers;\n\t\n\tvar AnnotationElement = Chart.Element.extend({\n\t\tinitialize: function() {\n\t\t\tthis.hidden = false;\n\t\t\tthis.hovering = false;\n\t\t\tthis._model = chartHelpers.clone(this._model) || {};\n\t\t\tthis.setDataLimits();\n\t\t},\n\t\tdestroy: function() {},\n\t\tsetDataLimits: function() {},\n\t\tconfigure: function() {},\n\t\tinRange: function() {},\n\t\tgetCenterPoint: function() {},\n\t\tgetWidth: function() {},\n\t\tgetHeight: function() {},\n\t\tgetArea: function() {},\n\t\tdraw: function() {}\n\t});\n\n\treturn AnnotationElement;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Subscriber_1 = require(\"../Subscriber\");\nfunction canReportError(observer) {\n while (observer) {\n var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;\n if (closed_1 || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber_1.Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\nexports.canReportError = canReportError;\n//# sourceMappingURL=canReportError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar isArray_1 = require(\"./util/isArray\");\nvar isObject_1 = require(\"./util/isObject\");\nvar isFunction_1 = require(\"./util/isFunction\");\nvar UnsubscriptionError_1 = require(\"./util/UnsubscriptionError\");\nvar Subscription = (function () {\n function Subscription(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function () {\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parentOrParents = _a._parentOrParents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (var index = 0; index < _parentOrParents.length; ++index) {\n var parent_1 = _parentOrParents[index];\n parent_1.remove(this);\n }\n }\n if (isFunction_1.isFunction(_unsubscribe)) {\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError_1.UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray_1.isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject_1.isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError_1.UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError_1.UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function (teardown) {\n var subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n var _parentOrParents = subscription._parentOrParents;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n };\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexports.Subscription = Subscription;\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError_1.UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observable = (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })();\n//# sourceMappingURL=observable.js.map"]}