@magmonium/one 0.4.60 → 0.4.63

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.
Files changed (126) hide show
  1. package/assets/i18n/af.json +0 -2
  2. package/assets/i18n/am.json +0 -2
  3. package/assets/i18n/ar.json +0 -2
  4. package/assets/i18n/as.json +0 -2
  5. package/assets/i18n/az.json +0 -2
  6. package/assets/i18n/ba.json +0 -2
  7. package/assets/i18n/be.json +0 -2
  8. package/assets/i18n/bg.json +0 -2
  9. package/assets/i18n/bn.json +0 -2
  10. package/assets/i18n/br.json +0 -2
  11. package/assets/i18n/brx.json +0 -2
  12. package/assets/i18n/bs.json +0 -2
  13. package/assets/i18n/ca.json +0 -2
  14. package/assets/i18n/ceb.json +0 -2
  15. package/assets/i18n/cnr.json +0 -2
  16. package/assets/i18n/co.json +0 -2
  17. package/assets/i18n/cs.json +0 -2
  18. package/assets/i18n/cy.json +0 -2
  19. package/assets/i18n/da.json +0 -2
  20. package/assets/i18n/de.json +0 -2
  21. package/assets/i18n/doi.json +0 -2
  22. package/assets/i18n/el.json +0 -2
  23. package/assets/i18n/en.json +0 -2
  24. package/assets/i18n/eo.json +0 -2
  25. package/assets/i18n/es.json +0 -2
  26. package/assets/i18n/et.json +0 -2
  27. package/assets/i18n/eu.json +0 -2
  28. package/assets/i18n/fa.json +0 -2
  29. package/assets/i18n/fi.json +0 -2
  30. package/assets/i18n/fr.json +0 -2
  31. package/assets/i18n/fy.json +0 -2
  32. package/assets/i18n/ga.json +0 -2
  33. package/assets/i18n/gd.json +0 -2
  34. package/assets/i18n/gl.json +0 -2
  35. package/assets/i18n/gu.json +0 -2
  36. package/assets/i18n/ha.json +0 -2
  37. package/assets/i18n/haw.json +0 -2
  38. package/assets/i18n/he.json +0 -2
  39. package/assets/i18n/hi.json +0 -2
  40. package/assets/i18n/hmn.json +0 -2
  41. package/assets/i18n/hr.json +0 -2
  42. package/assets/i18n/hu.json +0 -2
  43. package/assets/i18n/hy.json +0 -2
  44. package/assets/i18n/id.json +0 -2
  45. package/assets/i18n/ie.json +0 -2
  46. package/assets/i18n/ig.json +0 -2
  47. package/assets/i18n/ilo.json +0 -2
  48. package/assets/i18n/is.json +0 -2
  49. package/assets/i18n/it.json +0 -2
  50. package/assets/i18n/iw.json +0 -2
  51. package/assets/i18n/ja.json +0 -2
  52. package/assets/i18n/jw.json +0 -2
  53. package/assets/i18n/ka.json +0 -2
  54. package/assets/i18n/kk.json +0 -2
  55. package/assets/i18n/km.json +0 -2
  56. package/assets/i18n/kn.json +0 -2
  57. package/assets/i18n/ko.json +0 -2
  58. package/assets/i18n/kok.json +0 -2
  59. package/assets/i18n/ks.json +0 -2
  60. package/assets/i18n/ku.json +0 -2
  61. package/assets/i18n/ky.json +0 -2
  62. package/assets/i18n/la.json +0 -2
  63. package/assets/i18n/lb.json +0 -2
  64. package/assets/i18n/lo.json +0 -2
  65. package/assets/i18n/lt.json +0 -2
  66. package/assets/i18n/lv.json +0 -2
  67. package/assets/i18n/ma.json +0 -2
  68. package/assets/i18n/mai.json +0 -2
  69. package/assets/i18n/me.json +0 -2
  70. package/assets/i18n/mg.json +0 -2
  71. package/assets/i18n/mi.json +0 -2
  72. package/assets/i18n/mk.json +0 -2
  73. package/assets/i18n/ml.json +0 -2
  74. package/assets/i18n/mn.json +0 -2
  75. package/assets/i18n/mni.json +0 -2
  76. package/assets/i18n/mr.json +0 -2
  77. package/assets/i18n/ms.json +0 -2
  78. package/assets/i18n/mt.json +0 -2
  79. package/assets/i18n/my.json +0 -2
  80. package/assets/i18n/ne.json +0 -2
  81. package/assets/i18n/nl.json +0 -2
  82. package/assets/i18n/no.json +0 -2
  83. package/assets/i18n/ny.json +0 -2
  84. package/assets/i18n/or.json +0 -2
  85. package/assets/i18n/pa.json +0 -2
  86. package/assets/i18n/pl.json +0 -2
  87. package/assets/i18n/ps.json +0 -2
  88. package/assets/i18n/pt.json +0 -2
  89. package/assets/i18n/rm.json +0 -2
  90. package/assets/i18n/ro.json +0 -2
  91. package/assets/i18n/ru.json +0 -2
  92. package/assets/i18n/sa.json +0 -2
  93. package/assets/i18n/sat.json +0 -2
  94. package/assets/i18n/sc.json +0 -2
  95. package/assets/i18n/sd.json +0 -2
  96. package/assets/i18n/si.json +0 -2
  97. package/assets/i18n/sk.json +0 -2
  98. package/assets/i18n/sl.json +0 -2
  99. package/assets/i18n/sm.json +0 -2
  100. package/assets/i18n/sn.json +0 -2
  101. package/assets/i18n/so.json +0 -2
  102. package/assets/i18n/sq.json +0 -2
  103. package/assets/i18n/sr.json +0 -2
  104. package/assets/i18n/st.json +0 -2
  105. package/assets/i18n/su.json +0 -2
  106. package/assets/i18n/sv.json +0 -2
  107. package/assets/i18n/sw.json +0 -2
  108. package/assets/i18n/ta.json +0 -2
  109. package/assets/i18n/te.json +0 -2
  110. package/assets/i18n/tg.json +0 -2
  111. package/assets/i18n/th.json +0 -2
  112. package/assets/i18n/tl.json +0 -2
  113. package/assets/i18n/tr.json +0 -2
  114. package/assets/i18n/uk.json +0 -2
  115. package/assets/i18n/ur.json +0 -2
  116. package/assets/i18n/uz.json +0 -2
  117. package/assets/i18n/vi.json +0 -2
  118. package/assets/i18n/xh.json +0 -2
  119. package/assets/i18n/yi.json +0 -2
  120. package/assets/i18n/yo.json +0 -2
  121. package/assets/i18n/zh.json +0 -2
  122. package/assets/i18n/zu.json +0 -2
  123. package/fesm2022/magmonium-one.mjs +185 -298
  124. package/fesm2022/magmonium-one.mjs.map +1 -1
  125. package/package.json +1 -1
  126. package/types/magmonium-one.d.ts +44 -27
@@ -7670,106 +7670,6 @@ i0.ɵɵngDeclareClassMetadata({
7670
7670
  }]
7671
7671
  }
7672
7672
  });
7673
- var SectionFooterComponent = class SectionFooterComponent {
7674
- sticky = input(false, ...ngDevMode ? [{ debugName: "sticky" }] : /* istanbul ignore next */ []);
7675
- align = input("right", ...ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []);
7676
- scrollSticky = injectScrollSticky(0, "none");
7677
- isSticky = computed(() => this.sticky() && this.scrollSticky(), ...ngDevMode ? [{ debugName: "isSticky" }] : /* istanbul ignore next */ []);
7678
- sectionContext = inject(SECTION_CONTEXT, { optional: true });
7679
- sidepanel = computed(() => this.sectionContext?.sidepanel() ?? false, ...ngDevMode ? [{ debugName: "sidepanel" }] : /* istanbul ignore next */ []);
7680
- noBorder = computed(() => this.sectionContext?.variant() === "noBorder", ...ngDevMode ? [{ debugName: "noBorder" }] : /* istanbul ignore next */ []);
7681
- static ɵfac = i0.ɵɵngDeclareFactory({
7682
- minVersion: "12.0.0",
7683
- version: "22.2.1",
7684
- ngImport: i0,
7685
- type: SectionFooterComponent,
7686
- deps: [],
7687
- target: i0.ɵɵFactoryTarget.Component
7688
- });
7689
- static ɵcmp = i0.ɵɵngDeclareComponent({
7690
- minVersion: "17.1.0",
7691
- version: "22.2.1",
7692
- type: SectionFooterComponent,
7693
- isStandalone: true,
7694
- selector: "m-section-footer",
7695
- inputs: {
7696
- sticky: {
7697
- classPropertyName: "sticky",
7698
- publicName: "sticky",
7699
- isSignal: true,
7700
- isRequired: false,
7701
- transformFunction: null
7702
- },
7703
- align: {
7704
- classPropertyName: "align",
7705
- publicName: "align",
7706
- isSignal: true,
7707
- isRequired: false,
7708
- transformFunction: null
7709
- }
7710
- },
7711
- host: {
7712
- properties: {
7713
- "class.is-sticky-enabled": "sticky()",
7714
- "class.is-sticky": "isSticky()",
7715
- "class.align-left": "align() === \"left\"",
7716
- "class.align-center": "align() === \"center\"",
7717
- "class.align-right": "align() === \"right\"",
7718
- "class.has-sidepanel": "sidepanel()",
7719
- "class.no-border": "noBorder()"
7720
- },
7721
- classAttribute: "m-section-footer"
7722
- },
7723
- ngImport: i0,
7724
- template: `<ng-content />`,
7725
- isInline: true,
7726
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;min-height:var(--section-footer-min-height, calc(var(--section-footer-py, .5rem) * 2 + 1.25rem));border-top:1px solid var(--m-backdrop-border);padding:var(--section-footer-py, .85rem) var(--section-px, 1rem);width:100%}:host(.no-border){border-top:none}:host(.align-left){justify-content:flex-start}:host(.align-center){justify-content:center}:host(.align-right){justify-content:flex-end}:host(.is-sticky-enabled){position:sticky;bottom:0;z-index:10}:host(.is-sticky-enabled){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}\n"],
7727
- changeDetection: i0.ChangeDetectionStrategy.OnPush
7728
- });
7729
- };
7730
- i0.ɵɵngDeclareClassMetadata({
7731
- minVersion: "12.0.0",
7732
- version: "22.2.1",
7733
- ngImport: i0,
7734
- type: SectionFooterComponent,
7735
- decorators: [{
7736
- type: Component,
7737
- args: [{
7738
- selector: "m-section-footer",
7739
- template: `<ng-content />`,
7740
- changeDetection: ChangeDetectionStrategy.OnPush,
7741
- host: {
7742
- class: "m-section-footer",
7743
- "[class.is-sticky-enabled]": "sticky()",
7744
- "[class.is-sticky]": "isSticky()",
7745
- "[class.align-left]": "align() === \"left\"",
7746
- "[class.align-center]": "align() === \"center\"",
7747
- "[class.align-right]": "align() === \"right\"",
7748
- "[class.has-sidepanel]": "sidepanel()",
7749
- "[class.no-border]": "noBorder()"
7750
- },
7751
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;min-height:var(--section-footer-min-height, calc(var(--section-footer-py, .5rem) * 2 + 1.25rem));border-top:1px solid var(--m-backdrop-border);padding:var(--section-footer-py, .85rem) var(--section-px, 1rem);width:100%}:host(.no-border){border-top:none}:host(.align-left){justify-content:flex-start}:host(.align-center){justify-content:center}:host(.align-right){justify-content:flex-end}:host(.is-sticky-enabled){position:sticky;bottom:0;z-index:10}:host(.is-sticky-enabled){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}\n"]
7752
- }]
7753
- }],
7754
- propDecorators: {
7755
- sticky: [{
7756
- type: i0.Input,
7757
- args: [{
7758
- isSignal: true,
7759
- alias: "sticky",
7760
- required: false
7761
- }]
7762
- }],
7763
- align: [{
7764
- type: i0.Input,
7765
- args: [{
7766
- isSignal: true,
7767
- alias: "align",
7768
- required: false
7769
- }]
7770
- }]
7771
- }
7772
- });
7773
7673
  const DEFAULT_PER_PAGE_OPTIONS = [
7774
7674
  10,
7775
7675
  25,
@@ -9781,7 +9681,6 @@ var SectionComponent = class SectionComponent extends ConfigComponent {
9781
9681
  hero = contentChild(SectionHeroComponent, ...ngDevMode ? [{ debugName: "hero" }] : /* istanbul ignore next */ []);
9782
9682
  jumbotron = contentChild(JumbotronComponent, ...ngDevMode ? [{ debugName: "jumbotron" }] : /* istanbul ignore next */ []);
9783
9683
  carousel = contentChild(CarouselComponent, ...ngDevMode ? [{ debugName: "carousel" }] : /* istanbul ignore next */ []);
9784
- footer = contentChild(SectionFooterComponent, ...ngDevMode ? [{ debugName: "footer" }] : /* istanbul ignore next */ []);
9785
9684
  pagination = contentChild(SectionPaginationComponent, ...ngDevMode ? [{ debugName: "pagination" }] : /* istanbul ignore next */ []);
9786
9685
  variant = input(void 0, ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
9787
9686
  maxWidth = input(...ngDevMode ? [void 0, { debugName: "maxWidth" }] : /* istanbul ignore next */ []);
@@ -10031,13 +9930,6 @@ var SectionComponent = class SectionComponent extends ConfigComponent {
10031
9930
  descendants: true,
10032
9931
  isSignal: true
10033
9932
  },
10034
- {
10035
- propertyName: "footer",
10036
- first: true,
10037
- predicate: SectionFooterComponent,
10038
- descendants: true,
10039
- isSignal: true
10040
- },
10041
9933
  {
10042
9934
  propertyName: "pagination",
10043
9935
  first: true,
@@ -10100,9 +9992,10 @@ var SectionComponent = class SectionComponent extends ConfigComponent {
10100
9992
  @if (pagination()) {
10101
9993
  <ng-content select="m-section-pagination" />
10102
9994
  }
10103
- @if (footer()) {
10104
- <ng-content select="m-section-footer" />
10105
- }
9995
+ <!-- Ungated for the header's reason: the design Canvas draws its
9996
+ footer through an ngTemplateOutlet, which a contentChild query
9997
+ never sees. -->
9998
+ <ng-content select="m-section-footer" />
10106
9999
  </div>
10107
10000
  </div>
10108
10001
  `,
@@ -10172,9 +10065,10 @@ i0.ɵɵngDeclareClassMetadata({
10172
10065
  @if (pagination()) {
10173
10066
  <ng-content select="m-section-pagination" />
10174
10067
  }
10175
- @if (footer()) {
10176
- <ng-content select="m-section-footer" />
10177
- }
10068
+ <!-- Ungated for the header's reason: the design Canvas draws its
10069
+ footer through an ngTemplateOutlet, which a contentChild query
10070
+ never sees. -->
10071
+ <ng-content select="m-section-footer" />
10178
10072
  </div>
10179
10073
  </div>
10180
10074
  `,
@@ -10267,10 +10161,6 @@ i0.ɵɵngDeclareClassMetadata({
10267
10161
  type: i0.ContentChild,
10268
10162
  args: [i0.forwardRef(() => CarouselComponent), { isSignal: true }]
10269
10163
  }],
10270
- footer: [{
10271
- type: i0.ContentChild,
10272
- args: [i0.forwardRef(() => SectionFooterComponent), { isSignal: true }]
10273
- }],
10274
10164
  pagination: [{
10275
10165
  type: i0.ContentChild,
10276
10166
  args: [i0.forwardRef(() => SectionPaginationComponent), { isSignal: true }]
@@ -14536,7 +14426,7 @@ const NavStore = signalStore({ providedIn: "root" }, withState(initialState$3),
14536
14426
  }, ...ngDevMode ? [{ debugName: "instanceLoaders" }] : /* istanbul ignore next */ []);
14537
14427
  const resolvedWidget = computed(() => {
14538
14428
  const hit = widgetEntry();
14539
- if (!hit || isNavMenuConfig(hit.entry) || isNavRowsConfig(hit.entry)) return null;
14429
+ if (!hit || isNavMenuConfig(hit.entry)) return null;
14540
14430
  const entry = hit.entry;
14541
14431
  if (typeof entry !== "function" && !("content" in entry)) return null;
14542
14432
  const config = normalizeNavWidgetEntry(entry);
@@ -17293,6 +17183,106 @@ i0.ɵɵngDeclareClassMetadata({
17293
17183
  }]
17294
17184
  }
17295
17185
  });
17186
+ var SectionFooterComponent = class SectionFooterComponent {
17187
+ sticky = input(false, ...ngDevMode ? [{ debugName: "sticky" }] : /* istanbul ignore next */ []);
17188
+ align = input("right", ...ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []);
17189
+ scrollSticky = injectScrollSticky(0, "none");
17190
+ isSticky = computed(() => this.sticky() && this.scrollSticky(), ...ngDevMode ? [{ debugName: "isSticky" }] : /* istanbul ignore next */ []);
17191
+ sectionContext = inject(SECTION_CONTEXT, { optional: true });
17192
+ sidepanel = computed(() => this.sectionContext?.sidepanel() ?? false, ...ngDevMode ? [{ debugName: "sidepanel" }] : /* istanbul ignore next */ []);
17193
+ noBorder = computed(() => this.sectionContext?.variant() === "noBorder", ...ngDevMode ? [{ debugName: "noBorder" }] : /* istanbul ignore next */ []);
17194
+ static ɵfac = i0.ɵɵngDeclareFactory({
17195
+ minVersion: "12.0.0",
17196
+ version: "22.2.1",
17197
+ ngImport: i0,
17198
+ type: SectionFooterComponent,
17199
+ deps: [],
17200
+ target: i0.ɵɵFactoryTarget.Component
17201
+ });
17202
+ static ɵcmp = i0.ɵɵngDeclareComponent({
17203
+ minVersion: "17.1.0",
17204
+ version: "22.2.1",
17205
+ type: SectionFooterComponent,
17206
+ isStandalone: true,
17207
+ selector: "m-section-footer",
17208
+ inputs: {
17209
+ sticky: {
17210
+ classPropertyName: "sticky",
17211
+ publicName: "sticky",
17212
+ isSignal: true,
17213
+ isRequired: false,
17214
+ transformFunction: null
17215
+ },
17216
+ align: {
17217
+ classPropertyName: "align",
17218
+ publicName: "align",
17219
+ isSignal: true,
17220
+ isRequired: false,
17221
+ transformFunction: null
17222
+ }
17223
+ },
17224
+ host: {
17225
+ properties: {
17226
+ "class.is-sticky-enabled": "sticky()",
17227
+ "class.is-sticky": "isSticky()",
17228
+ "class.align-left": "align() === \"left\"",
17229
+ "class.align-center": "align() === \"center\"",
17230
+ "class.align-right": "align() === \"right\"",
17231
+ "class.has-sidepanel": "sidepanel()",
17232
+ "class.no-border": "noBorder()"
17233
+ },
17234
+ classAttribute: "m-section-footer"
17235
+ },
17236
+ ngImport: i0,
17237
+ template: `<ng-content />`,
17238
+ isInline: true,
17239
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;min-height:var(--section-footer-min-height, calc(var(--section-footer-py, .5rem) * 2 + 1.25rem));border-top:1px solid var(--m-backdrop-border);padding:var(--section-footer-py, .85rem) var(--section-px, 1rem);width:100%}:host(.no-border){border-top:none}:host(.align-left){justify-content:flex-start}:host(.align-center){justify-content:center}:host(.align-right){justify-content:flex-end}:host(.is-sticky-enabled){position:sticky;bottom:0;z-index:10}:host(.is-sticky-enabled){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}\n"],
17240
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
17241
+ });
17242
+ };
17243
+ i0.ɵɵngDeclareClassMetadata({
17244
+ minVersion: "12.0.0",
17245
+ version: "22.2.1",
17246
+ ngImport: i0,
17247
+ type: SectionFooterComponent,
17248
+ decorators: [{
17249
+ type: Component,
17250
+ args: [{
17251
+ selector: "m-section-footer",
17252
+ template: `<ng-content />`,
17253
+ changeDetection: ChangeDetectionStrategy.OnPush,
17254
+ host: {
17255
+ class: "m-section-footer",
17256
+ "[class.is-sticky-enabled]": "sticky()",
17257
+ "[class.is-sticky]": "isSticky()",
17258
+ "[class.align-left]": "align() === \"left\"",
17259
+ "[class.align-center]": "align() === \"center\"",
17260
+ "[class.align-right]": "align() === \"right\"",
17261
+ "[class.has-sidepanel]": "sidepanel()",
17262
+ "[class.no-border]": "noBorder()"
17263
+ },
17264
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;min-height:var(--section-footer-min-height, calc(var(--section-footer-py, .5rem) * 2 + 1.25rem));border-top:1px solid var(--m-backdrop-border);padding:var(--section-footer-py, .85rem) var(--section-px, 1rem);width:100%}:host(.no-border){border-top:none}:host(.align-left){justify-content:flex-start}:host(.align-center){justify-content:center}:host(.align-right){justify-content:flex-end}:host(.is-sticky-enabled){position:sticky;bottom:0;z-index:10}:host(.is-sticky-enabled){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}\n"]
17265
+ }]
17266
+ }],
17267
+ propDecorators: {
17268
+ sticky: [{
17269
+ type: i0.Input,
17270
+ args: [{
17271
+ isSignal: true,
17272
+ alias: "sticky",
17273
+ required: false
17274
+ }]
17275
+ }],
17276
+ align: [{
17277
+ type: i0.Input,
17278
+ args: [{
17279
+ isSignal: true,
17280
+ alias: "align",
17281
+ required: false
17282
+ }]
17283
+ }]
17284
+ }
17285
+ });
17296
17286
  const SECTION_TABLE_CONTEXT = new InjectionToken("SECTION_TABLE_CONTEXT");
17297
17287
  const FOLDED_WIDTH = "3rem";
17298
17288
  var SectionTableComponent = class SectionTableComponent extends ConfigComponent {
@@ -18164,6 +18154,34 @@ const linePath = (t, y, sx, sy) => {
18164
18154
  for (let i = 0; i < t.length; i++) d += `${i ? "L" : "M"}${sx(t[i]).toFixed(1)} ${sy(y[i]).toFixed(1)}`;
18165
18155
  return d;
18166
18156
  };
18157
+ const smoothPath = (t, y, sx, sy) => {
18158
+ const n = t.length;
18159
+ if (n < 3) return linePath(t, y, sx, sy);
18160
+ const xs = t.map(sx);
18161
+ const ys = y.map(sy);
18162
+ const h = xs.slice(1).map((x, i) => x - xs[i]);
18163
+ const d = h.map((w, i) => w ? (ys[i + 1] - ys[i]) / w : 0);
18164
+ const m = new Array(n);
18165
+ for (let i = 1; i < n - 1; i++) {
18166
+ const [h0, h1, d0, d1] = [
18167
+ h[i - 1],
18168
+ h[i],
18169
+ d[i - 1],
18170
+ d[i]
18171
+ ];
18172
+ const p = h0 + h1 ? (d0 * h1 + d1 * h0) / (h0 + h1) : 0;
18173
+ m[i] = (Math.sign(d0) + Math.sign(d1)) * Math.min(Math.abs(d0), Math.abs(d1), .5 * Math.abs(p)) || 0;
18174
+ }
18175
+ m[0] = h[0] ? (3 * d[0] - m[1]) / 2 : m[1];
18176
+ m[n - 1] = h[n - 2] ? (3 * d[n - 2] - m[n - 2]) / 2 : m[n - 2];
18177
+ const f = (v) => v.toFixed(1);
18178
+ let path = `M${f(xs[0])} ${f(ys[0])}`;
18179
+ for (let i = 0; i < n - 1; i++) {
18180
+ const third = h[i] / 3;
18181
+ path += `C${f(xs[i] + third)} ${f(ys[i] + m[i] * third)} ${f(xs[i + 1] - third)} ${f(ys[i + 1] - m[i + 1] * third)} ${f(xs[i + 1])} ${f(ys[i + 1])}`;
18182
+ }
18183
+ return path;
18184
+ };
18167
18185
  const sampleChartPoints = (index, end = Date.UTC(2026, 0, 2)) => {
18168
18186
  const weeks = 52;
18169
18187
  const t = [];
@@ -18226,7 +18244,8 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
18226
18244
  window = model(void 0, ...ngDevMode ? [{ debugName: "window" }] : /* istanbul ignore next */ []);
18227
18245
  members = signal([], ...ngDevMode ? [{ debugName: "members" }] : /* istanbul ignore next */ []);
18228
18246
  locale = inject(LOCALE_ID);
18229
- tableId = `m-section-chart-table-${nextId++}`;
18247
+ uid = nextId++;
18248
+ tableId = `m-section-chart-table-${this.uid}`;
18230
18249
  width = signal(FALLBACK_WIDTH, ...ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []);
18231
18250
  dateFormat = new Intl.DateTimeFormat(this.locale, {
18232
18251
  day: "numeric",
@@ -18387,12 +18406,21 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
18387
18406
  paths = computed(() => {
18388
18407
  const sx = this.sx();
18389
18408
  const sy = this.sy();
18390
- return this.plotted().map(({ line, shown, ds }) => ({
18391
- d: linePath(ds.t, ds.y, sx, sy),
18392
- color: line.color,
18393
- endX: sx(line.t[line.t.length - 1]),
18394
- endY: sy(shown[shown.length - 1])
18395
- }));
18409
+ const minimal = this.minimal();
18410
+ const bottom = this.bottom().toFixed(1);
18411
+ return this.plotted().map(({ line, shown, ds }, i) => {
18412
+ const d = (minimal ? smoothPath : linePath)(ds.t, ds.y, sx, sy);
18413
+ const fillId = `m-section-chart-fill-${this.uid}-${i}`;
18414
+ return {
18415
+ d,
18416
+ color: line.color,
18417
+ endX: sx(line.t[line.t.length - 1]),
18418
+ endY: sy(shown[shown.length - 1]),
18419
+ area: minimal ? `${d}L${sx(ds.t[ds.t.length - 1]).toFixed(1)} ${bottom}L${sx(ds.t[0]).toFixed(1)} ${bottom}Z` : null,
18420
+ fillId,
18421
+ fill: `url(#${fillId})`
18422
+ };
18423
+ });
18396
18424
  }, ...ngDevMode ? [{ debugName: "paths" }] : /* istanbul ignore next */ []);
18397
18425
  yTicks = computed(() => {
18398
18426
  const extent = this.extent();
@@ -18888,8 +18916,8 @@ var SectionChartComponent = class SectionChartComponent extends ConfigComponent
18888
18916
  }],
18889
18917
  usesInheritance: true,
18890
18918
  ngImport: i0,
18891
- template: "<div class=\"m-section-chart__top\">\n <!-- Each series draws its own legend row: the row is the series' element,\n which is what the editor's Canvas selects it by. -->\n <div class=\"m-section-chart__legend\" role=\"list\">\n <ng-content />\n </div>\n @if (periodLabel(); as label) {\n <span class=\"m-section-chart__window\">{{ label }}</span>\n }\n</div>\n\n<div class=\"m-section-chart__plot\">\n <svg\n class=\"m-section-chart__svg\"\n role=\"img\"\n tabindex=\"0\"\n [class.is-measurable]=\"canMeasure()\"\n [attr.width]=\"width()\"\n [attr.height]=\"resolvedHeight()\"\n [attr.viewBox]=\"viewBox()\"\n [attr.aria-label]=\"windowLabel()\"\n [attr.aria-describedby]=\"tableId\"\n (pointerdown)=\"onPlotDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPlotUp()\"\n (pointercancel)=\"onPlotUp()\"\n (pointerleave)=\"clearHover()\"\n (blur)=\"clearHover()\"\n (keydown)=\"onKeydown($event)\"\n >\n @for (tick of yTicks(); track $index) {\n <svg:line\n class=\"m-section-chart__grid\"\n [class.m-section-chart__grid--zero]=\"tick.zero\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n />\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"end\"\n [attr.x]=\"left() - 8\"\n [attr.y]=\"tick.y + 4\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (!minimal()) {\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"bottom()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (tick of xTicks(); track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"bottom() + 18\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (measureView(); as band) {\n <svg:rect\n class=\"m-section-chart__band\"\n [attr.x]=\"band.start\"\n [attr.y]=\"top()\"\n [attr.width]=\"band.width\"\n [attr.height]=\"bottom() - top()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start\"\n [attr.x2]=\"band.start\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start + band.width\"\n [attr.x2]=\"band.start + band.width\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (path of paths(); track $index) {\n <svg:path\n class=\"m-section-chart__line\"\n [attr.d]=\"path.d\"\n [style.stroke]=\"path.color\"\n />\n }\n @if (!minimal()) {\n @for (path of paths(); track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"path.endX\"\n [attr.cy]=\"path.endY\"\n [style.fill]=\"path.color\"\n />\n }\n }\n @if (hover(); as h) {\n <svg:line\n class=\"m-section-chart__cross\"\n [attr.x1]=\"h.x\"\n [attr.x2]=\"h.x\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n @for (row of h.rows; track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"row.cx\"\n [attr.cy]=\"row.cy\"\n [style.fill]=\"row.color\"\n />\n }\n }\n </svg>\n\n @if (hover(); as h) {\n <div\n class=\"m-section-chart__tip\"\n role=\"status\"\n [class.m-section-chart__tip--flip]=\"h.flip\"\n [style.left.px]=\"h.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ h.title }}</span>\n @for (row of h.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n\n @if (measureView()?.card; as card) {\n <div\n class=\"m-section-chart__measure\"\n role=\"status\"\n [class.m-section-chart__measure--flip]=\"card.flip\"\n [style.left.px]=\"card.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ card.title }}</span>\n @for (row of card.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n</div>\n\n@if (presets().length > 1 && !minimal()) {\n <div class=\"m-section-chart__presets\">\n <m-section-toggle\n [items]=\"presets()\"\n [selectedIndex]=\"presetIndex()\"\n [border]=\"false\"\n (action)=\"selectPreset($event)\"\n >\n <ng-template [mSectionToggleItem]=\"presets()\" let-preset>\n <span class=\"m-section-chart__preset\">{{ preset.label }}</span>\n </ng-template>\n </m-section-toggle>\n </div>\n}\n\n@if (navigatorView(); as nav) {\n <svg\n class=\"m-section-chart__navigator\"\n role=\"slider\"\n tabindex=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-label]=\"'zoom' | translate\"\n [attr.aria-valuenow]=\"nav.position\"\n [attr.aria-valuetext]=\"windowLabel()\"\n [attr.width]=\"width()\"\n [attr.height]=\"navHeight\"\n [attr.viewBox]=\"navViewBox()\"\n (pointerdown)=\"onNavigatorDown($event)\"\n (pointermove)=\"onNavigatorMove($event)\"\n (pointerup)=\"onNavigatorUp()\"\n (pointercancel)=\"onNavigatorUp()\"\n (keydown)=\"onNavigatorKeydown($event)\"\n >\n <svg:path class=\"m-section-chart__nav-area\" [attr.d]=\"nav.area\" />\n <svg:path class=\"m-section-chart__nav-line\" [attr.d]=\"nav.d\" />\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"nav.base\"\n [attr.y2]=\"nav.base\"\n />\n @for (tick of nav.ticks; track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"nav.base + 15\"\n >\n {{ tick.label }}\n </svg:text>\n }\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"left()\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.start - left()\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"nav.end\"\n [attr.y]=\"navTop\"\n [attr.width]=\"right() - nav.end\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-window\"\n [attr.x]=\"nav.start\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.end - nav.start\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.start - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.end - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n </svg>\n}\n\n<table class=\"m-section-chart__table\" [id]=\"tableId\">\n <thead>\n <tr>\n <th scope=\"col\">{{ 'date' | translate }}</th>\n @for (column of table().columns; track $index) {\n <th scope=\"col\">\n {{ column.noTranslate ? column.label : (column.label | translate: column.params) }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of table().rows; track $index) {\n <tr>\n <td>{{ row.date }}</td>\n @for (cell of row.cells; track $index) {\n <td>{{ cell }}</td>\n }\n </tr>\n }\n </tbody>\n</table>\n",
18892
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;position:relative;width:100%;min-width:0}.m-section-chart__top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.5rem 1rem;margin-bottom:.5rem}.m-section-chart__legend{display:grid;gap:.15rem;min-width:0}.m-section-chart__tip-key{display:inline-block;width:.75rem;height:2px;border-radius:1px}.m-section-chart__window{color:var(--m-text-tertiary);font-size:.8rem}:host(.m-section-chart--minimal) .m-section-chart__top{flex-direction:column;gap:.15rem}:host(.m-section-chart--minimal) .m-section-chart__svg{cursor:default}.m-section-chart__plot{position:relative}.m-section-chart__svg{display:block;overflow:visible}.m-section-chart__svg:focus{outline:none}.m-section-chart__svg:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__svg.is-measurable{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none}.m-section-chart__band{fill:var(--m-text);opacity:.06}.m-section-chart__band-edge{stroke:var(--m-text-secondary);stroke-width:1}.m-section-chart__grid{stroke:var(--m-text-septenary);stroke-width:1}.m-section-chart__grid--zero{stroke:var(--m-text-quinary);stroke-width:1.5}.m-section-chart__axis{stroke:var(--m-text-quinary);stroke-width:1}.m-section-chart__tick{fill:var(--m-text-tertiary);font-size:11px;font-variant-numeric:tabular-nums}.m-section-chart__line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.m-section-chart__dot{stroke:var(--m-background);stroke-width:2}.m-section-chart__cross{stroke:var(--m-text-secondary);stroke-width:1;opacity:.55}.m-section-chart__tip,.m-section-chart__measure{position:absolute;z-index:2;display:grid;gap:.25rem;min-width:10rem;padding:.5rem .625rem;border:1px solid var(--m-backdrop-border);border-radius:.5rem;background:var(--m-background);box-shadow:0 6px 20px var(--m-backdrop-shadow);font-size:.75rem;pointer-events:none}.m-section-chart__tip{top:0;margin-left:.875rem}.m-section-chart__tip--flip{transform:translate(calc(-100% - 1.75rem))}.m-section-chart__measure{bottom:2.25rem}.m-section-chart__measure--flip{transform:translate(-100%)}.m-section-chart__tip-title{color:var(--m-text-secondary);font-weight:600}.m-section-chart__tip-row{display:grid;grid-template-columns:.75rem auto 1fr auto;align-items:center;gap:.5rem}.m-section-chart__tip-value{color:var(--m-text);font-weight:650;font-variant-numeric:tabular-nums}.m-section-chart__tip-label{color:var(--m-text-secondary);white-space:nowrap}.m-section-chart__tip-sub{color:var(--m-text-tertiary);font-variant-numeric:tabular-nums}.m-section-chart__presets{--section-px: 0;margin-top:.5rem}.m-section-chart__preset{font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums}.m-section-chart__navigator{display:block;margin-top:.25rem;overflow:visible;touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer}.m-section-chart__navigator:focus{outline:none}.m-section-chart__navigator:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__nav-area{fill:var(--m-text-tertiary);opacity:.12}.m-section-chart__nav-line{fill:none;stroke:var(--m-text-tertiary);stroke-width:1.25}.m-section-chart__nav-dim{fill:var(--m-background);opacity:.6}.m-section-chart__nav-window{fill:transparent;stroke:var(--m-text-secondary);stroke-width:1;cursor:grab}.m-section-chart__nav-handle{fill:var(--m-text-secondary);cursor:ew-resize}.m-section-chart__table{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}\n"],
18919
+ template: "<div class=\"m-section-chart__top\">\n <!-- Each series draws its own legend row: the row is the series' element,\n which is what the editor's Canvas selects it by. -->\n <div class=\"m-section-chart__legend\" role=\"list\">\n <ng-content />\n </div>\n @if (periodLabel(); as label) {\n <span class=\"m-section-chart__window\">{{ label }}</span>\n }\n</div>\n\n<div class=\"m-section-chart__plot\">\n <svg\n class=\"m-section-chart__svg\"\n role=\"img\"\n tabindex=\"0\"\n [class.is-measurable]=\"canMeasure()\"\n [attr.width]=\"width()\"\n [attr.height]=\"resolvedHeight()\"\n [attr.viewBox]=\"viewBox()\"\n [attr.aria-label]=\"windowLabel()\"\n [attr.aria-describedby]=\"tableId\"\n (pointerdown)=\"onPlotDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPlotUp()\"\n (pointercancel)=\"onPlotUp()\"\n (pointerleave)=\"clearHover()\"\n (blur)=\"clearHover()\"\n (keydown)=\"onKeydown($event)\"\n >\n @for (tick of yTicks(); track $index) {\n <svg:line\n class=\"m-section-chart__grid\"\n [class.m-section-chart__grid--zero]=\"tick.zero\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n />\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"end\"\n [attr.x]=\"left() - 8\"\n [attr.y]=\"tick.y + 4\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (!minimal()) {\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"bottom()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (tick of xTicks(); track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"bottom() + 18\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (measureView(); as band) {\n <svg:rect\n class=\"m-section-chart__band\"\n [attr.x]=\"band.start\"\n [attr.y]=\"top()\"\n [attr.width]=\"band.width\"\n [attr.height]=\"bottom() - top()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start\"\n [attr.x2]=\"band.start\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start + band.width\"\n [attr.x2]=\"band.start + band.width\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (path of paths(); track $index) {\n @if (path.area; as area) {\n <svg:defs>\n <svg:linearGradient [attr.id]=\"path.fillId\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <svg:stop offset=\"0\" stop-opacity=\"0.22\" [attr.stop-color]=\"path.color\" />\n <svg:stop offset=\"1\" stop-opacity=\"0\" [attr.stop-color]=\"path.color\" />\n </svg:linearGradient>\n </svg:defs>\n <svg:path class=\"m-section-chart__area\" [attr.d]=\"area\" [attr.fill]=\"path.fill\" />\n }\n }\n @for (path of paths(); track $index) {\n <svg:path\n class=\"m-section-chart__line\"\n [attr.d]=\"path.d\"\n [style.stroke]=\"path.color\"\n />\n }\n @if (!minimal()) {\n @for (path of paths(); track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"path.endX\"\n [attr.cy]=\"path.endY\"\n [style.fill]=\"path.color\"\n />\n }\n }\n @if (hover(); as h) {\n <svg:line\n class=\"m-section-chart__cross\"\n [attr.x1]=\"h.x\"\n [attr.x2]=\"h.x\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n @for (row of h.rows; track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"row.cx\"\n [attr.cy]=\"row.cy\"\n [style.fill]=\"row.color\"\n />\n }\n }\n </svg>\n\n @if (hover(); as h) {\n <div\n class=\"m-section-chart__tip\"\n role=\"status\"\n [class.m-section-chart__tip--flip]=\"h.flip\"\n [style.left.px]=\"h.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ h.title }}</span>\n @for (row of h.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n\n @if (measureView()?.card; as card) {\n <div\n class=\"m-section-chart__measure\"\n role=\"status\"\n [class.m-section-chart__measure--flip]=\"card.flip\"\n [style.left.px]=\"card.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ card.title }}</span>\n @for (row of card.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n</div>\n\n@if (presets().length > 1 && !minimal()) {\n <div class=\"m-section-chart__presets\">\n <m-section-toggle\n [items]=\"presets()\"\n [selectedIndex]=\"presetIndex()\"\n [border]=\"false\"\n (action)=\"selectPreset($event)\"\n >\n <ng-template [mSectionToggleItem]=\"presets()\" let-preset>\n <span class=\"m-section-chart__preset\">{{ preset.label }}</span>\n </ng-template>\n </m-section-toggle>\n </div>\n}\n\n@if (navigatorView(); as nav) {\n <svg\n class=\"m-section-chart__navigator\"\n role=\"slider\"\n tabindex=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-label]=\"'zoom' | translate\"\n [attr.aria-valuenow]=\"nav.position\"\n [attr.aria-valuetext]=\"windowLabel()\"\n [attr.width]=\"width()\"\n [attr.height]=\"navHeight\"\n [attr.viewBox]=\"navViewBox()\"\n (pointerdown)=\"onNavigatorDown($event)\"\n (pointermove)=\"onNavigatorMove($event)\"\n (pointerup)=\"onNavigatorUp()\"\n (pointercancel)=\"onNavigatorUp()\"\n (keydown)=\"onNavigatorKeydown($event)\"\n >\n <svg:path class=\"m-section-chart__nav-area\" [attr.d]=\"nav.area\" />\n <svg:path class=\"m-section-chart__nav-line\" [attr.d]=\"nav.d\" />\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"nav.base\"\n [attr.y2]=\"nav.base\"\n />\n @for (tick of nav.ticks; track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"nav.base + 15\"\n >\n {{ tick.label }}\n </svg:text>\n }\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"left()\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.start - left()\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"nav.end\"\n [attr.y]=\"navTop\"\n [attr.width]=\"right() - nav.end\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-window\"\n [attr.x]=\"nav.start\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.end - nav.start\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.start - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.end - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n </svg>\n}\n\n<table class=\"m-section-chart__table\" [id]=\"tableId\">\n <thead>\n <tr>\n <th scope=\"col\">{{ 'date' | translate }}</th>\n @for (column of table().columns; track $index) {\n <th scope=\"col\">\n {{ column.noTranslate ? column.label : (column.label | translate: column.params) }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of table().rows; track $index) {\n <tr>\n <td>{{ row.date }}</td>\n @for (cell of row.cells; track $index) {\n <td>{{ cell }}</td>\n }\n </tr>\n }\n </tbody>\n</table>\n",
18920
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;position:relative;width:100%;min-width:0}.m-section-chart__top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.5rem 1rem;margin-bottom:.5rem}.m-section-chart__legend{display:grid;gap:.15rem;min-width:0}.m-section-chart__tip-key{display:inline-block;width:.75rem;height:2px;border-radius:1px}.m-section-chart__window{color:var(--m-text-tertiary);font-size:.8rem}:host(.m-section-chart--minimal) .m-section-chart__svg{cursor:default}:host(.m-section-chart--minimal) .m-section-chart__line{stroke-width:2.25}.m-section-chart__area{stroke:none}.m-section-chart__plot{position:relative}.m-section-chart__svg{display:block;overflow:visible}.m-section-chart__svg:focus{outline:none}.m-section-chart__svg:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__svg.is-measurable{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none}.m-section-chart__band{fill:var(--m-text);opacity:.06}.m-section-chart__band-edge{stroke:var(--m-text-secondary);stroke-width:1}.m-section-chart__grid{stroke:var(--m-text-septenary);stroke-width:1}.m-section-chart__grid--zero{stroke:var(--m-text-quinary);stroke-width:1.5}.m-section-chart__axis{stroke:var(--m-text-quinary);stroke-width:1}.m-section-chart__tick{fill:var(--m-text-tertiary);font-size:11px;font-variant-numeric:tabular-nums}.m-section-chart__line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.m-section-chart__dot{stroke:var(--m-background);stroke-width:2}.m-section-chart__cross{stroke:var(--m-text-secondary);stroke-width:1;opacity:.55}.m-section-chart__tip,.m-section-chart__measure{position:absolute;z-index:2;display:grid;gap:.25rem;min-width:10rem;padding:.5rem .625rem;border:1px solid var(--m-backdrop-border);border-radius:.5rem;background:var(--m-background);box-shadow:0 6px 20px var(--m-backdrop-shadow);font-size:.75rem;pointer-events:none}.m-section-chart__tip{top:0;margin-left:.875rem}.m-section-chart__tip--flip{transform:translate(calc(-100% - 1.75rem))}.m-section-chart__measure{bottom:2.25rem}.m-section-chart__measure--flip{transform:translate(-100%)}.m-section-chart__tip-title{color:var(--m-text-secondary);font-weight:600}.m-section-chart__tip-row{display:grid;grid-template-columns:.75rem auto 1fr auto;align-items:center;gap:.5rem}.m-section-chart__tip-value{color:var(--m-text);font-weight:650;font-variant-numeric:tabular-nums}.m-section-chart__tip-label{color:var(--m-text-secondary);white-space:nowrap}.m-section-chart__tip-sub{color:var(--m-text-tertiary);font-variant-numeric:tabular-nums}.m-section-chart__presets{--section-px: 0;margin-top:.5rem}.m-section-chart__preset{font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums}.m-section-chart__navigator{display:block;margin-top:.25rem;overflow:visible;touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer}.m-section-chart__navigator:focus{outline:none}.m-section-chart__navigator:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__nav-area{fill:var(--m-text-tertiary);opacity:.12}.m-section-chart__nav-line{fill:none;stroke:var(--m-text-tertiary);stroke-width:1.25}.m-section-chart__nav-dim{fill:var(--m-background);opacity:.6}.m-section-chart__nav-window{fill:transparent;stroke:var(--m-text-secondary);stroke-width:1;cursor:grab}.m-section-chart__nav-handle{fill:var(--m-text-secondary);cursor:ew-resize}.m-section-chart__table{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}\n"],
18893
18921
  dependencies: [
18894
18922
  {
18895
18923
  kind: "component",
@@ -18949,8 +18977,8 @@ i0.ɵɵngDeclareClassMetadata({
18949
18977
  };
18950
18978
  }
18951
18979
  }],
18952
- template: "<div class=\"m-section-chart__top\">\n <!-- Each series draws its own legend row: the row is the series' element,\n which is what the editor's Canvas selects it by. -->\n <div class=\"m-section-chart__legend\" role=\"list\">\n <ng-content />\n </div>\n @if (periodLabel(); as label) {\n <span class=\"m-section-chart__window\">{{ label }}</span>\n }\n</div>\n\n<div class=\"m-section-chart__plot\">\n <svg\n class=\"m-section-chart__svg\"\n role=\"img\"\n tabindex=\"0\"\n [class.is-measurable]=\"canMeasure()\"\n [attr.width]=\"width()\"\n [attr.height]=\"resolvedHeight()\"\n [attr.viewBox]=\"viewBox()\"\n [attr.aria-label]=\"windowLabel()\"\n [attr.aria-describedby]=\"tableId\"\n (pointerdown)=\"onPlotDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPlotUp()\"\n (pointercancel)=\"onPlotUp()\"\n (pointerleave)=\"clearHover()\"\n (blur)=\"clearHover()\"\n (keydown)=\"onKeydown($event)\"\n >\n @for (tick of yTicks(); track $index) {\n <svg:line\n class=\"m-section-chart__grid\"\n [class.m-section-chart__grid--zero]=\"tick.zero\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n />\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"end\"\n [attr.x]=\"left() - 8\"\n [attr.y]=\"tick.y + 4\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (!minimal()) {\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"bottom()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (tick of xTicks(); track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"bottom() + 18\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (measureView(); as band) {\n <svg:rect\n class=\"m-section-chart__band\"\n [attr.x]=\"band.start\"\n [attr.y]=\"top()\"\n [attr.width]=\"band.width\"\n [attr.height]=\"bottom() - top()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start\"\n [attr.x2]=\"band.start\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start + band.width\"\n [attr.x2]=\"band.start + band.width\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (path of paths(); track $index) {\n <svg:path\n class=\"m-section-chart__line\"\n [attr.d]=\"path.d\"\n [style.stroke]=\"path.color\"\n />\n }\n @if (!minimal()) {\n @for (path of paths(); track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"path.endX\"\n [attr.cy]=\"path.endY\"\n [style.fill]=\"path.color\"\n />\n }\n }\n @if (hover(); as h) {\n <svg:line\n class=\"m-section-chart__cross\"\n [attr.x1]=\"h.x\"\n [attr.x2]=\"h.x\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n @for (row of h.rows; track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"row.cx\"\n [attr.cy]=\"row.cy\"\n [style.fill]=\"row.color\"\n />\n }\n }\n </svg>\n\n @if (hover(); as h) {\n <div\n class=\"m-section-chart__tip\"\n role=\"status\"\n [class.m-section-chart__tip--flip]=\"h.flip\"\n [style.left.px]=\"h.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ h.title }}</span>\n @for (row of h.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n\n @if (measureView()?.card; as card) {\n <div\n class=\"m-section-chart__measure\"\n role=\"status\"\n [class.m-section-chart__measure--flip]=\"card.flip\"\n [style.left.px]=\"card.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ card.title }}</span>\n @for (row of card.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n</div>\n\n@if (presets().length > 1 && !minimal()) {\n <div class=\"m-section-chart__presets\">\n <m-section-toggle\n [items]=\"presets()\"\n [selectedIndex]=\"presetIndex()\"\n [border]=\"false\"\n (action)=\"selectPreset($event)\"\n >\n <ng-template [mSectionToggleItem]=\"presets()\" let-preset>\n <span class=\"m-section-chart__preset\">{{ preset.label }}</span>\n </ng-template>\n </m-section-toggle>\n </div>\n}\n\n@if (navigatorView(); as nav) {\n <svg\n class=\"m-section-chart__navigator\"\n role=\"slider\"\n tabindex=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-label]=\"'zoom' | translate\"\n [attr.aria-valuenow]=\"nav.position\"\n [attr.aria-valuetext]=\"windowLabel()\"\n [attr.width]=\"width()\"\n [attr.height]=\"navHeight\"\n [attr.viewBox]=\"navViewBox()\"\n (pointerdown)=\"onNavigatorDown($event)\"\n (pointermove)=\"onNavigatorMove($event)\"\n (pointerup)=\"onNavigatorUp()\"\n (pointercancel)=\"onNavigatorUp()\"\n (keydown)=\"onNavigatorKeydown($event)\"\n >\n <svg:path class=\"m-section-chart__nav-area\" [attr.d]=\"nav.area\" />\n <svg:path class=\"m-section-chart__nav-line\" [attr.d]=\"nav.d\" />\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"nav.base\"\n [attr.y2]=\"nav.base\"\n />\n @for (tick of nav.ticks; track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"nav.base + 15\"\n >\n {{ tick.label }}\n </svg:text>\n }\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"left()\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.start - left()\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"nav.end\"\n [attr.y]=\"navTop\"\n [attr.width]=\"right() - nav.end\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-window\"\n [attr.x]=\"nav.start\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.end - nav.start\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.start - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.end - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n </svg>\n}\n\n<table class=\"m-section-chart__table\" [id]=\"tableId\">\n <thead>\n <tr>\n <th scope=\"col\">{{ 'date' | translate }}</th>\n @for (column of table().columns; track $index) {\n <th scope=\"col\">\n {{ column.noTranslate ? column.label : (column.label | translate: column.params) }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of table().rows; track $index) {\n <tr>\n <td>{{ row.date }}</td>\n @for (cell of row.cells; track $index) {\n <td>{{ cell }}</td>\n }\n </tr>\n }\n </tbody>\n</table>\n",
18953
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;position:relative;width:100%;min-width:0}.m-section-chart__top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.5rem 1rem;margin-bottom:.5rem}.m-section-chart__legend{display:grid;gap:.15rem;min-width:0}.m-section-chart__tip-key{display:inline-block;width:.75rem;height:2px;border-radius:1px}.m-section-chart__window{color:var(--m-text-tertiary);font-size:.8rem}:host(.m-section-chart--minimal) .m-section-chart__top{flex-direction:column;gap:.15rem}:host(.m-section-chart--minimal) .m-section-chart__svg{cursor:default}.m-section-chart__plot{position:relative}.m-section-chart__svg{display:block;overflow:visible}.m-section-chart__svg:focus{outline:none}.m-section-chart__svg:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__svg.is-measurable{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none}.m-section-chart__band{fill:var(--m-text);opacity:.06}.m-section-chart__band-edge{stroke:var(--m-text-secondary);stroke-width:1}.m-section-chart__grid{stroke:var(--m-text-septenary);stroke-width:1}.m-section-chart__grid--zero{stroke:var(--m-text-quinary);stroke-width:1.5}.m-section-chart__axis{stroke:var(--m-text-quinary);stroke-width:1}.m-section-chart__tick{fill:var(--m-text-tertiary);font-size:11px;font-variant-numeric:tabular-nums}.m-section-chart__line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.m-section-chart__dot{stroke:var(--m-background);stroke-width:2}.m-section-chart__cross{stroke:var(--m-text-secondary);stroke-width:1;opacity:.55}.m-section-chart__tip,.m-section-chart__measure{position:absolute;z-index:2;display:grid;gap:.25rem;min-width:10rem;padding:.5rem .625rem;border:1px solid var(--m-backdrop-border);border-radius:.5rem;background:var(--m-background);box-shadow:0 6px 20px var(--m-backdrop-shadow);font-size:.75rem;pointer-events:none}.m-section-chart__tip{top:0;margin-left:.875rem}.m-section-chart__tip--flip{transform:translate(calc(-100% - 1.75rem))}.m-section-chart__measure{bottom:2.25rem}.m-section-chart__measure--flip{transform:translate(-100%)}.m-section-chart__tip-title{color:var(--m-text-secondary);font-weight:600}.m-section-chart__tip-row{display:grid;grid-template-columns:.75rem auto 1fr auto;align-items:center;gap:.5rem}.m-section-chart__tip-value{color:var(--m-text);font-weight:650;font-variant-numeric:tabular-nums}.m-section-chart__tip-label{color:var(--m-text-secondary);white-space:nowrap}.m-section-chart__tip-sub{color:var(--m-text-tertiary);font-variant-numeric:tabular-nums}.m-section-chart__presets{--section-px: 0;margin-top:.5rem}.m-section-chart__preset{font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums}.m-section-chart__navigator{display:block;margin-top:.25rem;overflow:visible;touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer}.m-section-chart__navigator:focus{outline:none}.m-section-chart__navigator:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__nav-area{fill:var(--m-text-tertiary);opacity:.12}.m-section-chart__nav-line{fill:none;stroke:var(--m-text-tertiary);stroke-width:1.25}.m-section-chart__nav-dim{fill:var(--m-background);opacity:.6}.m-section-chart__nav-window{fill:transparent;stroke:var(--m-text-secondary);stroke-width:1;cursor:grab}.m-section-chart__nav-handle{fill:var(--m-text-secondary);cursor:ew-resize}.m-section-chart__table{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}\n"]
18980
+ template: "<div class=\"m-section-chart__top\">\n <!-- Each series draws its own legend row: the row is the series' element,\n which is what the editor's Canvas selects it by. -->\n <div class=\"m-section-chart__legend\" role=\"list\">\n <ng-content />\n </div>\n @if (periodLabel(); as label) {\n <span class=\"m-section-chart__window\">{{ label }}</span>\n }\n</div>\n\n<div class=\"m-section-chart__plot\">\n <svg\n class=\"m-section-chart__svg\"\n role=\"img\"\n tabindex=\"0\"\n [class.is-measurable]=\"canMeasure()\"\n [attr.width]=\"width()\"\n [attr.height]=\"resolvedHeight()\"\n [attr.viewBox]=\"viewBox()\"\n [attr.aria-label]=\"windowLabel()\"\n [attr.aria-describedby]=\"tableId\"\n (pointerdown)=\"onPlotDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPlotUp()\"\n (pointercancel)=\"onPlotUp()\"\n (pointerleave)=\"clearHover()\"\n (blur)=\"clearHover()\"\n (keydown)=\"onKeydown($event)\"\n >\n @for (tick of yTicks(); track $index) {\n <svg:line\n class=\"m-section-chart__grid\"\n [class.m-section-chart__grid--zero]=\"tick.zero\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n />\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"end\"\n [attr.x]=\"left() - 8\"\n [attr.y]=\"tick.y + 4\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (!minimal()) {\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"bottom()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (tick of xTicks(); track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"bottom() + 18\"\n >\n {{ tick.label }}\n </svg:text>\n }\n @if (measureView(); as band) {\n <svg:rect\n class=\"m-section-chart__band\"\n [attr.x]=\"band.start\"\n [attr.y]=\"top()\"\n [attr.width]=\"band.width\"\n [attr.height]=\"bottom() - top()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start\"\n [attr.x2]=\"band.start\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n <svg:line\n class=\"m-section-chart__band-edge\"\n [attr.x1]=\"band.start + band.width\"\n [attr.x2]=\"band.start + band.width\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n }\n @for (path of paths(); track $index) {\n @if (path.area; as area) {\n <svg:defs>\n <svg:linearGradient [attr.id]=\"path.fillId\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <svg:stop offset=\"0\" stop-opacity=\"0.22\" [attr.stop-color]=\"path.color\" />\n <svg:stop offset=\"1\" stop-opacity=\"0\" [attr.stop-color]=\"path.color\" />\n </svg:linearGradient>\n </svg:defs>\n <svg:path class=\"m-section-chart__area\" [attr.d]=\"area\" [attr.fill]=\"path.fill\" />\n }\n }\n @for (path of paths(); track $index) {\n <svg:path\n class=\"m-section-chart__line\"\n [attr.d]=\"path.d\"\n [style.stroke]=\"path.color\"\n />\n }\n @if (!minimal()) {\n @for (path of paths(); track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"path.endX\"\n [attr.cy]=\"path.endY\"\n [style.fill]=\"path.color\"\n />\n }\n }\n @if (hover(); as h) {\n <svg:line\n class=\"m-section-chart__cross\"\n [attr.x1]=\"h.x\"\n [attr.x2]=\"h.x\"\n [attr.y1]=\"top()\"\n [attr.y2]=\"bottom()\"\n />\n @for (row of h.rows; track $index) {\n <svg:circle\n class=\"m-section-chart__dot\"\n r=\"4\"\n [attr.cx]=\"row.cx\"\n [attr.cy]=\"row.cy\"\n [style.fill]=\"row.color\"\n />\n }\n }\n </svg>\n\n @if (hover(); as h) {\n <div\n class=\"m-section-chart__tip\"\n role=\"status\"\n [class.m-section-chart__tip--flip]=\"h.flip\"\n [style.left.px]=\"h.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ h.title }}</span>\n @for (row of h.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n\n @if (measureView()?.card; as card) {\n <div\n class=\"m-section-chart__measure\"\n role=\"status\"\n [class.m-section-chart__measure--flip]=\"card.flip\"\n [style.left.px]=\"card.x\"\n >\n <span class=\"m-section-chart__tip-title\">{{ card.title }}</span>\n @for (row of card.rows; track $index) {\n <span class=\"m-section-chart__tip-row\">\n <span class=\"m-section-chart__tip-key\" [style.background]=\"row.color\"></span>\n <span class=\"m-section-chart__tip-value\">{{ row.value }}</span>\n <span class=\"m-section-chart__tip-label\">{{\n row.noTranslate ? row.label : (row.label | translate: row.params)\n }}</span>\n <span class=\"m-section-chart__tip-sub\">{{ row.sub }}</span>\n </span>\n }\n </div>\n }\n</div>\n\n@if (presets().length > 1 && !minimal()) {\n <div class=\"m-section-chart__presets\">\n <m-section-toggle\n [items]=\"presets()\"\n [selectedIndex]=\"presetIndex()\"\n [border]=\"false\"\n (action)=\"selectPreset($event)\"\n >\n <ng-template [mSectionToggleItem]=\"presets()\" let-preset>\n <span class=\"m-section-chart__preset\">{{ preset.label }}</span>\n </ng-template>\n </m-section-toggle>\n </div>\n}\n\n@if (navigatorView(); as nav) {\n <svg\n class=\"m-section-chart__navigator\"\n role=\"slider\"\n tabindex=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-label]=\"'zoom' | translate\"\n [attr.aria-valuenow]=\"nav.position\"\n [attr.aria-valuetext]=\"windowLabel()\"\n [attr.width]=\"width()\"\n [attr.height]=\"navHeight\"\n [attr.viewBox]=\"navViewBox()\"\n (pointerdown)=\"onNavigatorDown($event)\"\n (pointermove)=\"onNavigatorMove($event)\"\n (pointerup)=\"onNavigatorUp()\"\n (pointercancel)=\"onNavigatorUp()\"\n (keydown)=\"onNavigatorKeydown($event)\"\n >\n <svg:path class=\"m-section-chart__nav-area\" [attr.d]=\"nav.area\" />\n <svg:path class=\"m-section-chart__nav-line\" [attr.d]=\"nav.d\" />\n <svg:line\n class=\"m-section-chart__axis\"\n [attr.x1]=\"left()\"\n [attr.x2]=\"right()\"\n [attr.y1]=\"nav.base\"\n [attr.y2]=\"nav.base\"\n />\n @for (tick of nav.ticks; track $index) {\n <svg:text\n class=\"m-section-chart__tick\"\n text-anchor=\"middle\"\n [attr.x]=\"tick.x\"\n [attr.y]=\"nav.base + 15\"\n >\n {{ tick.label }}\n </svg:text>\n }\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"left()\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.start - left()\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-dim\"\n [attr.x]=\"nav.end\"\n [attr.y]=\"navTop\"\n [attr.width]=\"right() - nav.end\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-window\"\n [attr.x]=\"nav.start\"\n [attr.y]=\"navTop\"\n [attr.width]=\"nav.end - nav.start\"\n [attr.height]=\"nav.base - navTop\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.start - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n <svg:rect\n class=\"m-section-chart__nav-handle\"\n rx=\"2\"\n width=\"6\"\n height=\"20\"\n [attr.x]=\"nav.end - 3\"\n [attr.y]=\"(nav.base + navTop) / 2 - 10\"\n />\n </svg>\n}\n\n<table class=\"m-section-chart__table\" [id]=\"tableId\">\n <thead>\n <tr>\n <th scope=\"col\">{{ 'date' | translate }}</th>\n @for (column of table().columns; track $index) {\n <th scope=\"col\">\n {{ column.noTranslate ? column.label : (column.label | translate: column.params) }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of table().rows; track $index) {\n <tr>\n <td>{{ row.date }}</td>\n @for (cell of row.cells; track $index) {\n <td>{{ cell }}</td>\n }\n </tr>\n }\n </tbody>\n</table>\n",
18981
+ styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;position:relative;width:100%;min-width:0}.m-section-chart__top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.5rem 1rem;margin-bottom:.5rem}.m-section-chart__legend{display:grid;gap:.15rem;min-width:0}.m-section-chart__tip-key{display:inline-block;width:.75rem;height:2px;border-radius:1px}.m-section-chart__window{color:var(--m-text-tertiary);font-size:.8rem}:host(.m-section-chart--minimal) .m-section-chart__svg{cursor:default}:host(.m-section-chart--minimal) .m-section-chart__line{stroke-width:2.25}.m-section-chart__area{stroke:none}.m-section-chart__plot{position:relative}.m-section-chart__svg{display:block;overflow:visible}.m-section-chart__svg:focus{outline:none}.m-section-chart__svg:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__svg.is-measurable{cursor:crosshair;touch-action:none;-webkit-user-select:none;user-select:none}.m-section-chart__band{fill:var(--m-text);opacity:.06}.m-section-chart__band-edge{stroke:var(--m-text-secondary);stroke-width:1}.m-section-chart__grid{stroke:var(--m-text-septenary);stroke-width:1}.m-section-chart__grid--zero{stroke:var(--m-text-quinary);stroke-width:1.5}.m-section-chart__axis{stroke:var(--m-text-quinary);stroke-width:1}.m-section-chart__tick{fill:var(--m-text-tertiary);font-size:11px;font-variant-numeric:tabular-nums}.m-section-chart__line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.m-section-chart__dot{stroke:var(--m-background);stroke-width:2}.m-section-chart__cross{stroke:var(--m-text-secondary);stroke-width:1;opacity:.55}.m-section-chart__tip,.m-section-chart__measure{position:absolute;z-index:2;display:grid;gap:.25rem;min-width:10rem;padding:.5rem .625rem;border:1px solid var(--m-backdrop-border);border-radius:.5rem;background:var(--m-background);box-shadow:0 6px 20px var(--m-backdrop-shadow);font-size:.75rem;pointer-events:none}.m-section-chart__tip{top:0;margin-left:.875rem}.m-section-chart__tip--flip{transform:translate(calc(-100% - 1.75rem))}.m-section-chart__measure{bottom:2.25rem}.m-section-chart__measure--flip{transform:translate(-100%)}.m-section-chart__tip-title{color:var(--m-text-secondary);font-weight:600}.m-section-chart__tip-row{display:grid;grid-template-columns:.75rem auto 1fr auto;align-items:center;gap:.5rem}.m-section-chart__tip-value{color:var(--m-text);font-weight:650;font-variant-numeric:tabular-nums}.m-section-chart__tip-label{color:var(--m-text-secondary);white-space:nowrap}.m-section-chart__tip-sub{color:var(--m-text-tertiary);font-variant-numeric:tabular-nums}.m-section-chart__presets{--section-px: 0;margin-top:.5rem}.m-section-chart__preset{font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums}.m-section-chart__navigator{display:block;margin-top:.25rem;overflow:visible;touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer}.m-section-chart__navigator:focus{outline:none}.m-section-chart__navigator:focus-visible{outline:2px solid var(--m-focus);outline-offset:4px;border-radius:4px}.m-section-chart__nav-area{fill:var(--m-text-tertiary);opacity:.12}.m-section-chart__nav-line{fill:none;stroke:var(--m-text-tertiary);stroke-width:1.25}.m-section-chart__nav-dim{fill:var(--m-background);opacity:.6}.m-section-chart__nav-window{fill:transparent;stroke:var(--m-text-secondary);stroke-width:1;cursor:grab}.m-section-chart__nav-handle{fill:var(--m-text-secondary);cursor:ew-resize}.m-section-chart__table{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}\n"]
18954
18982
  }]
18955
18983
  }],
18956
18984
  ctorParameters: () => [],
@@ -38194,11 +38222,13 @@ var TreeGridComponent = class TreeGridComponent extends ConfigComponent {
38194
38222
  [style.max-height.px]="config()?.maxHeight || null"
38195
38223
  >
38196
38224
  <table class="m-table__table">
38197
- <m-table-header
38198
- [visibleColumns]="visibleColumns()"
38199
- [fixedCount]="effectiveFixedCount()"
38200
- [fixedOffset]="fixedOffsetFn()"
38201
- />
38225
+ @if (!config()?.hideHeader) {
38226
+ <m-table-header
38227
+ [visibleColumns]="visibleColumns()"
38228
+ [fixedCount]="effectiveFixedCount()"
38229
+ [fixedOffset]="fixedOffsetFn()"
38230
+ />
38231
+ }
38202
38232
  <tbody class="m-table-body">
38203
38233
  @for (flat of displayRows(); track flat.pathKey) {
38204
38234
  <tr
@@ -38624,11 +38654,13 @@ i0.ɵɵngDeclareClassMetadata({
38624
38654
  [style.max-height.px]="config()?.maxHeight || null"
38625
38655
  >
38626
38656
  <table class="m-table__table">
38627
- <m-table-header
38628
- [visibleColumns]="visibleColumns()"
38629
- [fixedCount]="effectiveFixedCount()"
38630
- [fixedOffset]="fixedOffsetFn()"
38631
- />
38657
+ @if (!config()?.hideHeader) {
38658
+ <m-table-header
38659
+ [visibleColumns]="visibleColumns()"
38660
+ [fixedCount]="effectiveFixedCount()"
38661
+ [fixedOffset]="fixedOffsetFn()"
38662
+ />
38663
+ }
38632
38664
  <tbody class="m-table-body">
38633
38665
  @for (flat of displayRows(); track flat.pathKey) {
38634
38666
  <tr
@@ -45306,133 +45338,6 @@ function provideUserTabs(tabs) {
45306
45338
  useValue: tabs
45307
45339
  }];
45308
45340
  }
45309
- var FooterComponent = class FooterComponent {
45310
- #navStore = inject(NavStore);
45311
- currentYear = (/* @__PURE__ */ new Date()).getFullYear();
45312
- activeApp = this.#navStore.currentWcConfig;
45313
- static ɵfac = i0.ɵɵngDeclareFactory({
45314
- minVersion: "12.0.0",
45315
- version: "22.2.1",
45316
- ngImport: i0,
45317
- type: FooterComponent,
45318
- deps: [],
45319
- target: i0.ɵɵFactoryTarget.Component
45320
- });
45321
- static ɵcmp = i0.ɵɵngDeclareComponent({
45322
- minVersion: "17.0.0",
45323
- version: "22.2.1",
45324
- type: FooterComponent,
45325
- isStandalone: true,
45326
- selector: "m-footer",
45327
- ngImport: i0,
45328
- template: `
45329
- <footer class="m-footer">
45330
- <div class="m-footer__inner">
45331
- <div class="m-footer__brand">
45332
- <m-icon name="copyright"></m-icon>
45333
- <span class="m-footer__copy">{{ 'with' | translate }} <span class="m-footer__heart">♥</span> {{ 'magmonium' | translate }}</span>
45334
- @if (activeApp(); as app) {
45335
- <span class="m-footer__sep">|</span>
45336
- <span class="m-footer__v">v{{ app.version }}</span>
45337
- }
45338
- </div>
45339
- @if (activeApp(); as app) {
45340
- <div class="m-footer__meta">
45341
- <div class="m-footer__meta-item">
45342
- <span class="m-footer__label">{{ 'app' | translate }}:</span>
45343
- <span class="m-footer__val">{{ app.app }}</span>
45344
- </div>
45345
- @if (app.timestamp) {
45346
- <div class="m-footer__meta-item">
45347
- <span class="m-footer__label">{{ 'built' | translate }}:</span>
45348
- <span class="m-footer__val">{{ app.timestamp | date: 'MMM d, HH:mm' }}</span>
45349
- </div>
45350
- }
45351
- </div>
45352
- }
45353
- </div>
45354
- </footer>
45355
- `,
45356
- isInline: true,
45357
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-footer{width:100%;padding:1.5rem 32px;border-top:1px solid var(--m-border);background:var(--m-background);color:var(--m-text-secondary);font-size:11px;font-weight:500;letter-spacing:.02em}.m-footer__inner{display:flex;justify-content:space-between;align-items:center;max-width:1920px;margin:0 auto}.m-footer__brand{display:flex;align-items:center;gap:.5rem}.m-footer__sep{opacity:.3;margin:0 .25rem}.m-footer__heart{color:var(--m-error)}.m-footer__v,.m-footer__copy{font-weight:700}.m-footer__meta{display:flex;gap:1.5rem}.m-footer__meta-item{display:flex;gap:.35rem}.m-footer__meta .m-footer__val{color:var(--m-text);font-weight:600}@media(max-width:768px){.m-footer{padding:1.25rem 20px}.m-footer__inner{flex-direction:column;align-items:flex-start;gap:.75rem}.m-footer__meta{gap:1rem;font-size:10px}}\n"],
45358
- dependencies: [
45359
- {
45360
- kind: "component",
45361
- type: IconComponent,
45362
- selector: "m-icon, m-one-icon",
45363
- inputs: [
45364
- "config",
45365
- "name",
45366
- "color",
45367
- "size",
45368
- "one",
45369
- "baseUrl",
45370
- "remote",
45371
- "shadow"
45372
- ],
45373
- outputs: ["configChange"]
45374
- },
45375
- {
45376
- kind: "pipe",
45377
- type: DatePipe,
45378
- name: "date"
45379
- },
45380
- {
45381
- kind: "pipe",
45382
- type: TranslatePipe,
45383
- name: "translate"
45384
- }
45385
- ],
45386
- changeDetection: i0.ChangeDetectionStrategy.OnPush
45387
- });
45388
- };
45389
- i0.ɵɵngDeclareClassMetadata({
45390
- minVersion: "12.0.0",
45391
- version: "22.2.1",
45392
- ngImport: i0,
45393
- type: FooterComponent,
45394
- decorators: [{
45395
- type: Component,
45396
- args: [{
45397
- selector: "m-footer",
45398
- imports: [
45399
- IconComponent,
45400
- DatePipe,
45401
- TranslatePipe
45402
- ],
45403
- template: `
45404
- <footer class="m-footer">
45405
- <div class="m-footer__inner">
45406
- <div class="m-footer__brand">
45407
- <m-icon name="copyright"></m-icon>
45408
- <span class="m-footer__copy">{{ 'with' | translate }} <span class="m-footer__heart">♥</span> {{ 'magmonium' | translate }}</span>
45409
- @if (activeApp(); as app) {
45410
- <span class="m-footer__sep">|</span>
45411
- <span class="m-footer__v">v{{ app.version }}</span>
45412
- }
45413
- </div>
45414
- @if (activeApp(); as app) {
45415
- <div class="m-footer__meta">
45416
- <div class="m-footer__meta-item">
45417
- <span class="m-footer__label">{{ 'app' | translate }}:</span>
45418
- <span class="m-footer__val">{{ app.app }}</span>
45419
- </div>
45420
- @if (app.timestamp) {
45421
- <div class="m-footer__meta-item">
45422
- <span class="m-footer__label">{{ 'built' | translate }}:</span>
45423
- <span class="m-footer__val">{{ app.timestamp | date: 'MMM d, HH:mm' }}</span>
45424
- </div>
45425
- }
45426
- </div>
45427
- }
45428
- </div>
45429
- </footer>
45430
- `,
45431
- changeDetection: ChangeDetectionStrategy.OnPush,
45432
- styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.m-footer{width:100%;padding:1.5rem 32px;border-top:1px solid var(--m-border);background:var(--m-background);color:var(--m-text-secondary);font-size:11px;font-weight:500;letter-spacing:.02em}.m-footer__inner{display:flex;justify-content:space-between;align-items:center;max-width:1920px;margin:0 auto}.m-footer__brand{display:flex;align-items:center;gap:.5rem}.m-footer__sep{opacity:.3;margin:0 .25rem}.m-footer__heart{color:var(--m-error)}.m-footer__v,.m-footer__copy{font-weight:700}.m-footer__meta{display:flex;gap:1.5rem}.m-footer__meta-item{display:flex;gap:.35rem}.m-footer__meta .m-footer__val{color:var(--m-text);font-weight:600}@media(max-width:768px){.m-footer{padding:1.25rem 20px}.m-footer__inner{flex-direction:column;align-items:flex-start;gap:.75rem}.m-footer__meta{gap:1rem;font-size:10px}}\n"]
45433
- }]
45434
- }]
45435
- });
45436
45341
  var NotificationElementComponent = class NotificationElementComponent {
45437
45342
  NotificationType = NotificationType;
45438
45343
  #notificationService = inject(NotificationService);
@@ -46011,33 +45916,22 @@ var FrameComponent = class FrameComponent {
46011
45916
  <div class="content">
46012
45917
  <ng-content />
46013
45918
  </div>
46014
- @if (!isPreview) {
46015
- <m-footer />
46016
- }
46017
45919
  </div>
46018
45920
  `,
46019
45921
  isInline: true,
46020
45922
  styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;min-height:100vh}.main{display:flex;flex-direction:column;width:100%;z-index:0;background-color:var(--m-background);min-height:100vh;box-sizing:border-box;transition:padding .5s cubic-bezier(.16,1,.3,1);padding-left:var(--m-nav-padding, 0)}.main.is-mobile{padding-left:0;padding-bottom:56px}.main .content{flex:1;width:100%}\n"],
46021
- dependencies: [
46022
- {
46023
- kind: "component",
46024
- type: NavComponent,
46025
- selector: "m-nav",
46026
- inputs: ["isHost", "showLogo"],
46027
- outputs: ["menuClicked"]
46028
- },
46029
- {
46030
- kind: "component",
46031
- type: FooterComponent,
46032
- selector: "m-footer"
46033
- },
46034
- {
46035
- kind: "component",
46036
- type: NotificationPopupComponent,
46037
- selector: "m-notification-popup",
46038
- outputs: ["actionClicked"]
46039
- }
46040
- ],
45923
+ dependencies: [{
45924
+ kind: "component",
45925
+ type: NavComponent,
45926
+ selector: "m-nav",
45927
+ inputs: ["isHost", "showLogo"],
45928
+ outputs: ["menuClicked"]
45929
+ }, {
45930
+ kind: "component",
45931
+ type: NotificationPopupComponent,
45932
+ selector: "m-notification-popup",
45933
+ outputs: ["actionClicked"]
45934
+ }],
46041
45935
  changeDetection: i0.ChangeDetectionStrategy.OnPush
46042
45936
  });
46043
45937
  };
@@ -46050,11 +45944,7 @@ i0.ɵɵngDeclareClassMetadata({
46050
45944
  type: Component,
46051
45945
  args: [{
46052
45946
  selector: "m-frame",
46053
- imports: [
46054
- NavComponent,
46055
- FooterComponent,
46056
- NotificationPopupComponent
46057
- ],
45947
+ imports: [NavComponent, NotificationPopupComponent],
46058
45948
  template: `
46059
45949
  <m-notification-popup />
46060
45950
  @if (!isPreview) {
@@ -46069,9 +45959,6 @@ i0.ɵɵngDeclareClassMetadata({
46069
45959
  <div class="content">
46070
45960
  <ng-content />
46071
45961
  </div>
46072
- @if (!isPreview) {
46073
- <m-footer />
46074
- }
46075
45962
  </div>
46076
45963
  `,
46077
45964
  changeDetection: ChangeDetectionStrategy.OnPush,