@eric-emg/symphiq-components 1.3.7 → 1.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -57667,7 +57667,7 @@ function StickySubmitBarComponent_Conditional_5_Template(rf, ctx) { if (rf & 1)
57667
57667
  i0.ɵɵelementEnd();
57668
57668
  i0.ɵɵnamespaceHTML();
57669
57669
  i0.ɵɵelementStart(3, "p", 10);
57670
- i0.ɵɵtext(4, " Ready to save your targets ");
57670
+ i0.ɵɵtext(4, " Ready to calculate your targets ");
57671
57671
  i0.ɵɵelementEnd()();
57672
57672
  } if (rf & 2) {
57673
57673
  const ctx_r0 = i0.ɵɵnextContext();
@@ -57706,6 +57706,8 @@ function StickySubmitBarComponent_Conditional_10_Template(rf, ctx) { if (rf & 1)
57706
57706
  const ctx_r0 = i0.ɵɵnextContext();
57707
57707
  i0.ɵɵadvance();
57708
57708
  i0.ɵɵtextInterpolate(ctx_r0.buttonText());
57709
+ i0.ɵɵadvance();
57710
+ i0.ɵɵclassProp("w-6", ctx_r0.isSaveMode())("h-6", ctx_r0.isSaveMode())("w-5", !ctx_r0.isSaveMode())("h-5", !ctx_r0.isSaveMode());
57709
57711
  } }
57710
57712
  class StickySubmitBarComponent {
57711
57713
  constructor() {
@@ -57717,6 +57719,7 @@ class StickySubmitBarComponent {
57717
57719
  this.showCancelButton = input(false, ...(ngDevMode ? [{ debugName: "showCancelButton" }] : []));
57718
57720
  this.submitClick = output();
57719
57721
  this.cancelClick = output();
57722
+ this.isSaveMode = computed(() => this.buttonText().toLowerCase().includes('save'), ...(ngDevMode ? [{ debugName: "isSaveMode" }] : []));
57720
57723
  }
57721
57724
  containerClasses() {
57722
57725
  return this.viewMode() === ViewModeEnum.DARK
@@ -57758,7 +57761,7 @@ class StickySubmitBarComponent {
57758
57761
  this.cancelClick.emit();
57759
57762
  }
57760
57763
  static { this.ɵfac = function StickySubmitBarComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || StickySubmitBarComponent)(); }; }
57761
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: StickySubmitBarComponent, selectors: [["symphiq-sticky-submit-bar"]], inputs: { viewMode: [1, "viewMode"], isValid: [1, "isValid"], isSubmitting: [1, "isSubmitting"], validationMessage: [1, "validationMessage"], buttonText: [1, "buttonText"], showCancelButton: [1, "showCancelButton"] }, outputs: { submitClick: "submitClick", cancelClick: "cancelClick" }, decls: 11, vars: 6, consts: [[1, "fixed", "bottom-0", "left-0", "right-0", "z-50", "border-t", "backdrop-blur-md", "slide-up", 3, "ngClass"], [1, "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-4"], [1, "flex", "items-center", "justify-between", "gap-4"], [1, "flex-1"], [1, "flex", "items-center", "gap-2"], [1, "flex", "items-center", "gap-3"], [1, "px-6", "py-3", "rounded-xl", "font-semibold", "text-base", "transition-all", "duration-200", 3, "ngClass"], [1, "px-8", "py-3", "rounded-xl", "font-bold", "text-base", "transition-all", "duration-200", "flex", "items-center", "gap-2", "submit-button-enabled", 3, "click", "disabled", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", "text-yellow-500"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"], [1, "text-sm", "font-medium", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", "text-green-500"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "px-6", "py-3", "rounded-xl", "font-semibold", "text-base", "transition-all", "duration-200", 3, "click", "ngClass"], ["fill", "none", "viewBox", "0 0 24 24", 1, "animate-spin", "h-5", "w-5"], ["cx", "12", "cy", "12", "r", "10", "stroke", "currentColor", "stroke-width", "4", 1, "opacity-25"], ["fill", "currentColor", "d", "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z", 1, "opacity-75"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7l5 5m0 0l-5 5m5-5H6"]], template: function StickySubmitBarComponent_Template(rf, ctx) { if (rf & 1) {
57764
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: StickySubmitBarComponent, selectors: [["symphiq-sticky-submit-bar"]], inputs: { viewMode: [1, "viewMode"], isValid: [1, "isValid"], isSubmitting: [1, "isSubmitting"], validationMessage: [1, "validationMessage"], buttonText: [1, "buttonText"], showCancelButton: [1, "showCancelButton"] }, outputs: { submitClick: "submitClick", cancelClick: "cancelClick" }, decls: 11, vars: 30, consts: [[1, "fixed", "bottom-0", "left-0", "right-0", "z-50", "border-t", "backdrop-blur-md", "slide-up", 3, "ngClass"], [1, "max-w-7xl", "mx-auto", "px-4", "sm:px-6", "lg:px-8", "py-4"], [1, "bar-content", "flex", "items-center"], [1, "message-section"], [1, "flex", "items-center", "gap-2", "whitespace-nowrap"], [1, "button-container", "flex", "items-center", "gap-3"], [1, "px-6", "py-3", "rounded-xl", "font-semibold", "text-base", "transition-all", "duration-200", 3, "ngClass"], [1, "rounded-xl", "font-bold", "transition-all", "duration-300", "flex", "items-center", "submit-button-enabled", 3, "click", "disabled", "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", "text-yellow-500", "flex-shrink-0"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"], [1, "text-sm", "font-medium", 3, "ngClass"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "w-5", "h-5", "text-green-500", "flex-shrink-0"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"], [1, "px-6", "py-3", "rounded-xl", "font-semibold", "text-base", "transition-all", "duration-200", 3, "click", "ngClass"], ["fill", "none", "viewBox", "0 0 24 24", 1, "animate-spin", "h-5", "w-5"], ["cx", "12", "cy", "12", "r", "10", "stroke", "currentColor", "stroke-width", "4", 1, "opacity-25"], ["fill", "currentColor", "d", "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z", 1, "opacity-75"], ["fill", "none", "stroke", "currentColor", "viewBox", "0 0 24 24", 1, "transition-all", "duration-300"], ["stroke-linecap", "round", "stroke-linejoin", "round", "stroke-width", "2", "d", "M13 7l5 5m0 0l-5 5m5-5H6"]], template: function StickySubmitBarComponent_Template(rf, ctx) { if (rf & 1) {
57762
57765
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "div", 3);
57763
57766
  i0.ɵɵconditionalCreate(4, StickySubmitBarComponent_Conditional_4_Template, 5, 2, "div", 4)(5, StickySubmitBarComponent_Conditional_5_Template, 5, 1, "div", 4);
57764
57767
  i0.ɵɵelementEnd();
@@ -57766,84 +57769,91 @@ class StickySubmitBarComponent {
57766
57769
  i0.ɵɵconditionalCreate(7, StickySubmitBarComponent_Conditional_7_Template, 2, 1, "button", 6);
57767
57770
  i0.ɵɵelementStart(8, "button", 7);
57768
57771
  i0.ɵɵlistener("click", function StickySubmitBarComponent_Template_button_click_8_listener() { return ctx.handleSubmit(); });
57769
- i0.ɵɵconditionalCreate(9, StickySubmitBarComponent_Conditional_9_Template, 5, 0)(10, StickySubmitBarComponent_Conditional_10_Template, 4, 1);
57772
+ i0.ɵɵconditionalCreate(9, StickySubmitBarComponent_Conditional_9_Template, 5, 0)(10, StickySubmitBarComponent_Conditional_10_Template, 4, 9);
57770
57773
  i0.ɵɵelementEnd()()()()();
57771
57774
  } if (rf & 2) {
57772
57775
  i0.ɵɵproperty("ngClass", ctx.containerClasses());
57773
- i0.ɵɵadvance(4);
57776
+ i0.ɵɵadvance(2);
57777
+ i0.ɵɵclassProp("justify-center", ctx.isSaveMode())("justify-between", !ctx.isSaveMode());
57778
+ i0.ɵɵadvance();
57779
+ i0.ɵɵclassProp("hidden", ctx.isSaveMode())("visible", !ctx.isSaveMode());
57780
+ i0.ɵɵadvance();
57774
57781
  i0.ɵɵconditional(!ctx.isValid() ? 4 : 5);
57775
57782
  i0.ɵɵadvance(3);
57776
57783
  i0.ɵɵconditional(ctx.showCancelButton() ? 7 : -1);
57777
57784
  i0.ɵɵadvance();
57785
+ i0.ɵɵclassProp("px-12", ctx.isSaveMode())("py-4", ctx.isSaveMode())("text-lg", ctx.isSaveMode())("gap-3", ctx.isSaveMode())("px-8", !ctx.isSaveMode())("py-3", !ctx.isSaveMode())("text-base", !ctx.isSaveMode())("gap-2", !ctx.isSaveMode());
57778
57786
  i0.ɵɵproperty("disabled", !ctx.isValid() || ctx.isSubmitting())("ngClass", ctx.buttonClasses());
57779
57787
  i0.ɵɵadvance();
57780
57788
  i0.ɵɵconditional(ctx.isSubmitting() ? 9 : 10);
57781
- } }, dependencies: [CommonModule, i1$1.NgClass], styles: [".slide-up[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_slideUp .3s cubic-bezier(.4,0,.2,1) forwards}@keyframes _ngcontent-%COMP%_slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.submit-button-enabled[_ngcontent-%COMP%]{transition:all .2s ease-in-out}.submit-button-enabled[_ngcontent-%COMP%]:hover{transform:scale(1.02)}.submit-button-enabled[_ngcontent-%COMP%]:active{transform:scale(.98)}"], changeDetection: 0 }); }
57789
+ } }, dependencies: [CommonModule, i1$1.NgClass], styles: [".slide-up[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_slideUp .3s cubic-bezier(.4,0,.2,1) forwards}@keyframes _ngcontent-%COMP%_slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.submit-button-enabled[_ngcontent-%COMP%]{transition:all .2s ease-in-out}.submit-button-enabled[_ngcontent-%COMP%]:hover{transform:scale(1.02)}.submit-button-enabled[_ngcontent-%COMP%]:active{transform:scale(.98)}.message-section[_ngcontent-%COMP%]{transition:opacity .3s ease-out,max-width .3s ease-out,margin .3s ease-out;overflow:hidden}.message-section.hidden[_ngcontent-%COMP%]{opacity:0;max-width:0;margin-right:0}.message-section.visible[_ngcontent-%COMP%]{opacity:1;max-width:500px;margin-right:1rem}.bar-content[_ngcontent-%COMP%]{transition:justify-content .3s ease-out}.button-container[_ngcontent-%COMP%]{transition:all .3s ease-out}"], changeDetection: 0 }); }
57782
57790
  }
57783
57791
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StickySubmitBarComponent, [{
57784
57792
  type: Component,
57785
- args: [{ selector: 'symphiq-sticky-submit-bar', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
57786
- <div
57787
- [ngClass]="containerClasses()"
57788
- class="fixed bottom-0 left-0 right-0 z-50 border-t backdrop-blur-md slide-up">
57789
- <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
57790
- <div class="flex items-center justify-between gap-4">
57791
- <div class="flex-1">
57792
- @if (!isValid()) {
57793
- <div class="flex items-center gap-2">
57794
- <svg class="w-5 h-5 text-yellow-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
57795
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path>
57796
- </svg>
57797
- <p [ngClass]="validationMessageClasses()" class="text-sm font-medium">
57798
- {{ validationMessage() || 'Please set a revenue target to continue' }}
57799
- </p>
57800
- </div>
57801
- } @else {
57802
- <div class="flex items-center gap-2">
57803
- <svg class="w-5 h-5 text-green-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
57804
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"></path>
57805
- </svg>
57806
- <p [ngClass]="readyMessageClasses()" class="text-sm font-medium">
57807
- Ready to save your targets
57808
- </p>
57809
- </div>
57810
- }
57811
- </div>
57812
-
57813
- <div class="flex items-center gap-3">
57814
- @if (showCancelButton()) {
57815
- <button
57816
- (click)="handleCancel()"
57817
- [ngClass]="cancelButtonClasses()"
57818
- class="px-6 py-3 rounded-xl font-semibold text-base transition-all duration-200">
57819
- Cancel
57820
- </button>
57821
- }
57822
- <button
57823
- (click)="handleSubmit()"
57824
- [disabled]="!isValid() || isSubmitting()"
57825
- [ngClass]="buttonClasses()"
57826
- class="px-8 py-3 rounded-xl font-bold text-base transition-all duration-200 flex items-center gap-2 submit-button-enabled">
57827
- @if (isSubmitting()) {
57828
- <svg class="animate-spin h-5 w-5" fill="none" viewBox="0 0 24 24">
57829
- <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
57830
- <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
57831
- </svg>
57832
- <span>Saving Targets...</span>
57833
- } @else {
57834
- <span>{{ buttonText() }}</span>
57835
- <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
57836
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
57837
- </svg>
57838
- }
57839
- </button>
57840
- </div>
57841
- </div>
57842
- </div>
57843
- </div>
57844
- `, styles: [".slide-up{animation:slideUp .3s cubic-bezier(.4,0,.2,1) forwards}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.submit-button-enabled{transition:all .2s ease-in-out}.submit-button-enabled:hover{transform:scale(1.02)}.submit-button-enabled:active{transform:scale(.98)}\n"] }]
57793
+ args: [{ selector: 'symphiq-sticky-submit-bar', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `
57794
+ <div
57795
+ [ngClass]="containerClasses()"
57796
+ class="fixed bottom-0 left-0 right-0 z-50 border-t backdrop-blur-md slide-up">
57797
+ <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
57798
+ <div class="bar-content flex items-center" [class.justify-center]="isSaveMode()" [class.justify-between]="!isSaveMode()">
57799
+ <div class="message-section" [class.hidden]="isSaveMode()" [class.visible]="!isSaveMode()">
57800
+ @if (!isValid()) {
57801
+ <div class="flex items-center gap-2 whitespace-nowrap">
57802
+ <svg class="w-5 h-5 text-yellow-500 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
57803
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"></path>
57804
+ </svg>
57805
+ <p [ngClass]="validationMessageClasses()" class="text-sm font-medium">
57806
+ {{ validationMessage() || 'Please set a revenue target to continue' }}
57807
+ </p>
57808
+ </div>
57809
+ } @else {
57810
+ <div class="flex items-center gap-2 whitespace-nowrap">
57811
+ <svg class="w-5 h-5 text-green-500 flex-shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24">
57812
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"></path>
57813
+ </svg>
57814
+ <p [ngClass]="readyMessageClasses()" class="text-sm font-medium">
57815
+ Ready to calculate your targets
57816
+ </p>
57817
+ </div>
57818
+ }
57819
+ </div>
57820
+
57821
+ <div class="button-container flex items-center gap-3">
57822
+ @if (showCancelButton()) {
57823
+ <button
57824
+ (click)="handleCancel()"
57825
+ [ngClass]="cancelButtonClasses()"
57826
+ class="px-6 py-3 rounded-xl font-semibold text-base transition-all duration-200">
57827
+ Cancel
57828
+ </button>
57829
+ }
57830
+ <button
57831
+ (click)="handleSubmit()"
57832
+ [disabled]="!isValid() || isSubmitting()"
57833
+ [ngClass]="buttonClasses()"
57834
+ class="rounded-xl font-bold transition-all duration-300 flex items-center submit-button-enabled"
57835
+ [class.px-12]="isSaveMode()" [class.py-4]="isSaveMode()" [class.text-lg]="isSaveMode()" [class.gap-3]="isSaveMode()"
57836
+ [class.px-8]="!isSaveMode()" [class.py-3]="!isSaveMode()" [class.text-base]="!isSaveMode()" [class.gap-2]="!isSaveMode()">
57837
+ @if (isSubmitting()) {
57838
+ <svg class="animate-spin h-5 w-5" fill="none" viewBox="0 0 24 24">
57839
+ <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
57840
+ <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
57841
+ </svg>
57842
+ <span>Saving Targets...</span>
57843
+ } @else {
57844
+ <span>{{ buttonText() }}</span>
57845
+ <svg class="transition-all duration-300" [class.w-6]="isSaveMode()" [class.h-6]="isSaveMode()" [class.w-5]="!isSaveMode()" [class.h-5]="!isSaveMode()" fill="none" stroke="currentColor" viewBox="0 0 24 24">
57846
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6"></path>
57847
+ </svg>
57848
+ }
57849
+ </button>
57850
+ </div>
57851
+ </div>
57852
+ </div>
57853
+ </div>
57854
+ `, styles: [".slide-up{animation:slideUp .3s cubic-bezier(.4,0,.2,1) forwards}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.submit-button-enabled{transition:all .2s ease-in-out}.submit-button-enabled:hover{transform:scale(1.02)}.submit-button-enabled:active{transform:scale(.98)}.message-section{transition:opacity .3s ease-out,max-width .3s ease-out,margin .3s ease-out;overflow:hidden}.message-section.hidden{opacity:0;max-width:0;margin-right:0}.message-section.visible{opacity:1;max-width:500px;margin-right:1rem}.bar-content{transition:justify-content .3s ease-out}.button-container{transition:all .3s ease-out}\n"] }]
57845
57855
  }], null, { viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], isValid: [{ type: i0.Input, args: [{ isSignal: true, alias: "isValid", required: false }] }], isSubmitting: [{ type: i0.Input, args: [{ isSignal: true, alias: "isSubmitting", required: false }] }], validationMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessage", required: false }] }], buttonText: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonText", required: false }] }], showCancelButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCancelButton", required: false }] }], submitClick: [{ type: i0.Output, args: ["submitClick"] }], cancelClick: [{ type: i0.Output, args: ["cancelClick"] }] }); })();
57846
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StickySubmitBarComponent, { className: "StickySubmitBarComponent", filePath: "lib/components/revenue-calculator-dashboard/sticky-submit-bar.component.ts", lineNumber: 99 }); })();
57856
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(StickySubmitBarComponent, { className: "StickySubmitBarComponent", filePath: "lib/components/revenue-calculator-dashboard/sticky-submit-bar.component.ts", lineNumber: 126 }); })();
57847
57857
 
57848
57858
  /**
57849
57859
  * Chart Constants