@magmonium/one 0.4.78 → 0.4.80

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 +4 -0
  2. package/assets/i18n/am.json +4 -0
  3. package/assets/i18n/ar.json +4 -0
  4. package/assets/i18n/as.json +4 -0
  5. package/assets/i18n/az.json +4 -0
  6. package/assets/i18n/ba.json +4 -0
  7. package/assets/i18n/be.json +4 -0
  8. package/assets/i18n/bg.json +4 -0
  9. package/assets/i18n/bn.json +4 -0
  10. package/assets/i18n/br.json +4 -0
  11. package/assets/i18n/brx.json +4 -0
  12. package/assets/i18n/bs.json +4 -0
  13. package/assets/i18n/ca.json +4 -0
  14. package/assets/i18n/ceb.json +4 -0
  15. package/assets/i18n/cnr.json +4 -0
  16. package/assets/i18n/co.json +4 -0
  17. package/assets/i18n/cs.json +4 -0
  18. package/assets/i18n/cy.json +4 -0
  19. package/assets/i18n/da.json +4 -0
  20. package/assets/i18n/de.json +4 -0
  21. package/assets/i18n/doi.json +4 -0
  22. package/assets/i18n/el.json +4 -0
  23. package/assets/i18n/en.json +44 -0
  24. package/assets/i18n/eo.json +4 -0
  25. package/assets/i18n/es.json +4 -0
  26. package/assets/i18n/et.json +4 -0
  27. package/assets/i18n/eu.json +4 -0
  28. package/assets/i18n/fa.json +4 -0
  29. package/assets/i18n/fi.json +4 -0
  30. package/assets/i18n/fr.json +4 -0
  31. package/assets/i18n/fy.json +4 -0
  32. package/assets/i18n/ga.json +4 -0
  33. package/assets/i18n/gd.json +4 -0
  34. package/assets/i18n/gl.json +4 -0
  35. package/assets/i18n/gu.json +4 -0
  36. package/assets/i18n/ha.json +4 -0
  37. package/assets/i18n/haw.json +4 -0
  38. package/assets/i18n/he.json +4 -0
  39. package/assets/i18n/hi.json +4 -0
  40. package/assets/i18n/hmn.json +4 -0
  41. package/assets/i18n/hr.json +4 -0
  42. package/assets/i18n/hu.json +4 -0
  43. package/assets/i18n/hy.json +4 -0
  44. package/assets/i18n/id.json +4 -0
  45. package/assets/i18n/ie.json +4 -0
  46. package/assets/i18n/ig.json +4 -0
  47. package/assets/i18n/ilo.json +4 -0
  48. package/assets/i18n/is.json +4 -0
  49. package/assets/i18n/it.json +4 -0
  50. package/assets/i18n/iw.json +4 -0
  51. package/assets/i18n/ja.json +4 -0
  52. package/assets/i18n/jw.json +4 -0
  53. package/assets/i18n/ka.json +4 -0
  54. package/assets/i18n/kk.json +4 -0
  55. package/assets/i18n/km.json +4 -0
  56. package/assets/i18n/kn.json +4 -0
  57. package/assets/i18n/ko.json +4 -0
  58. package/assets/i18n/kok.json +4 -0
  59. package/assets/i18n/ks.json +4 -0
  60. package/assets/i18n/ku.json +4 -0
  61. package/assets/i18n/ky.json +4 -0
  62. package/assets/i18n/la.json +4 -0
  63. package/assets/i18n/lb.json +4 -0
  64. package/assets/i18n/lo.json +4 -0
  65. package/assets/i18n/lt.json +4 -0
  66. package/assets/i18n/lv.json +4 -0
  67. package/assets/i18n/ma.json +4 -0
  68. package/assets/i18n/mai.json +4 -0
  69. package/assets/i18n/me.json +4 -0
  70. package/assets/i18n/mg.json +4 -0
  71. package/assets/i18n/mi.json +4 -0
  72. package/assets/i18n/mk.json +4 -0
  73. package/assets/i18n/ml.json +4 -0
  74. package/assets/i18n/mn.json +4 -0
  75. package/assets/i18n/mni.json +4 -0
  76. package/assets/i18n/mr.json +4 -0
  77. package/assets/i18n/ms.json +4 -0
  78. package/assets/i18n/mt.json +4 -0
  79. package/assets/i18n/my.json +4 -0
  80. package/assets/i18n/ne.json +4 -0
  81. package/assets/i18n/nl.json +4 -0
  82. package/assets/i18n/no.json +4 -0
  83. package/assets/i18n/ny.json +4 -0
  84. package/assets/i18n/or.json +4 -0
  85. package/assets/i18n/pa.json +4 -0
  86. package/assets/i18n/pl.json +4 -0
  87. package/assets/i18n/ps.json +4 -0
  88. package/assets/i18n/pt.json +4 -0
  89. package/assets/i18n/rm.json +4 -0
  90. package/assets/i18n/ro.json +4 -0
  91. package/assets/i18n/ru.json +4 -0
  92. package/assets/i18n/sa.json +4 -0
  93. package/assets/i18n/sat.json +4 -0
  94. package/assets/i18n/sc.json +4 -0
  95. package/assets/i18n/sd.json +4 -0
  96. package/assets/i18n/si.json +4 -0
  97. package/assets/i18n/sk.json +4 -0
  98. package/assets/i18n/sl.json +4 -0
  99. package/assets/i18n/sm.json +4 -0
  100. package/assets/i18n/sn.json +4 -0
  101. package/assets/i18n/so.json +4 -0
  102. package/assets/i18n/sq.json +4 -0
  103. package/assets/i18n/sr.json +4 -0
  104. package/assets/i18n/st.json +4 -0
  105. package/assets/i18n/su.json +4 -0
  106. package/assets/i18n/sv.json +4 -0
  107. package/assets/i18n/sw.json +4 -0
  108. package/assets/i18n/ta.json +4 -0
  109. package/assets/i18n/te.json +4 -0
  110. package/assets/i18n/tg.json +4 -0
  111. package/assets/i18n/th.json +4 -0
  112. package/assets/i18n/tl.json +4 -0
  113. package/assets/i18n/tr.json +4 -0
  114. package/assets/i18n/uk.json +4 -0
  115. package/assets/i18n/ur.json +4 -0
  116. package/assets/i18n/uz.json +4 -0
  117. package/assets/i18n/vi.json +4 -0
  118. package/assets/i18n/xh.json +4 -0
  119. package/assets/i18n/yi.json +4 -0
  120. package/assets/i18n/yo.json +4 -0
  121. package/assets/i18n/zh.json +4 -0
  122. package/assets/i18n/zu.json +4 -0
  123. package/fesm2022/magmonium-one.mjs +1024 -5
  124. package/fesm2022/magmonium-one.mjs.map +1 -1
  125. package/package.json +1 -1
  126. package/types/magmonium-one.d.ts +443 -4
@@ -33974,8 +33974,8 @@ var ScoreSetItemComponent = class ScoreSetItemComponent {
33974
33974
  }
33975
33975
  },
33976
33976
  ngImport: i0,
33977
- template: "@switch (shape()) {\n @case ('primary') {\n @if (set?.variant() === 'compact') {\n <span class=\"m-score-set__primary-name\">{{ model().name }}</span>\n <span class=\"m-score-set__primary-value\">{{ model().display }}</span>\n } @else {\n <span class=\"m-score-set__ring\" [style.--_fill]=\"model().value ?? 0\">\n <span class=\"m-score-set__primary-value\">{{ model().display }}</span>\n </span>\n <span class=\"m-score-set__primary-name\">{{ model().name }}</span>\n }\n @if (model().standing) {\n <span class=\"m-score-set__primary-standing\">{{ model().standing }}</span>\n }\n @if (set?.bandShown() && model().value !== null) {\n <span class=\"m-score-set__primary-band\">{{ model().bandText }}</span>\n }\n @if (set?.basis()) {\n <span class=\"m-score-set__primary-basis\">{{ set?.basis() }}</span>\n }\n }\n @case ('row') {\n <span class=\"m-score-set__row-dot\"></span>\n <span class=\"m-score-set__row-name\">{{ model().name }}</span>\n <span class=\"m-score-set__row-value\">{{ model().display }}</span>\n @if (model().standing) {\n <span class=\"m-score-set__row-standing\">{{ model().standing }}</span>\n }\n @if (set?.variant() !== 'compact') {\n <span class=\"m-score-set__row-track\">\n <span class=\"m-score-set__row-fill\" [style.width.%]=\"model().value ?? 0\"></span>\n </span>\n }\n }\n}\n@if (shape() !== 'none' && model().tip) {\n <span class=\"m-score-set__tip\" role=\"tooltip\" [id]=\"tipId\">\n <m-tooltip [text]=\"model().tip\" />\n </span>\n}\n",
33978
- 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{position:relative;border-radius:.5em;cursor:pointer}:host:hover,:host:focus-visible{background:color-mix(in srgb,var(--_tone) 8%,transparent)}:host:focus-visible{outline:2px solid var(--_tone);outline-offset:-2px}:host(.is-stale){opacity:.6}:host(.is-no-data){--_tone: var(--m-score-set-no-data);color:var(--m-text-secondary)}:host(.is-primary){grid-column:1;grid-row:1/span var(--_rows, 1);display:flex;flex-direction:column;align-items:center;gap:.25em;padding:.4em}:host(.is-row){grid-column:2;display:grid;grid-template-columns:.6em 1fr auto auto;grid-template-areas:\"dot name value standing\" \"track track track track\";align-items:center;column-gap:.5em;row-gap:.3em;padding:.4em .5em}:host(.is-compact){display:flex;flex-direction:column;align-items:flex-start;gap:.1em;padding:.45em .7em;border-bottom:3px solid var(--_tone);background:var(--m-background)}:host(.is-compact.is-primary){background:color-mix(in srgb,var(--_tone) 14%,var(--m-background))}.m-score-set__ring{display:grid;place-items:center;width:7.5em;aspect-ratio:1;border-radius:50%;background:conic-gradient(var(--_tone) calc(var(--_fill) * 1%),var(--m-border) 0);-webkit-mask:radial-gradient(circle,transparent 0 calc(50% - .65em),#000 calc(50% - .6em));mask:radial-gradient(circle,transparent 0 calc(50% - .65em),#000 calc(50% - .6em))}.m-score-set__primary-value{font-size:2.1em;font-weight:750;line-height:1}.m-score-set__primary-name{font-size:.75em;letter-spacing:.06em;text-transform:uppercase;color:var(--m-text-secondary)}.m-score-set__primary-standing{font-size:.8em;font-weight:600;color:var(--_tone)}.m-score-set__primary-band{font-size:.7em;font-weight:600;padding:.1em .6em;border-radius:99em;color:var(--_tone);background:color-mix(in srgb,var(--_tone) 18%,transparent)}.m-score-set__primary-basis{font-size:.7em;color:var(--m-text-secondary)}.m-score-set__row-dot{grid-area:dot;width:.55em;aspect-ratio:1;border-radius:50%;background:var(--_tone)}.m-score-set__row-name{grid-area:name;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m-score-set__row-value{grid-area:value;font-weight:650;font-variant-numeric:tabular-nums}.m-score-set__row-standing{grid-area:standing;font-size:.8em;color:var(--m-text-secondary)}.m-score-set__row-track{grid-area:track;height:.4em;border-radius:99em;overflow:hidden;background:var(--m-border)}.m-score-set__row-fill{display:block;height:100%;border-radius:inherit;background:var(--_tone)}.m-score-set__tip{position:absolute;z-index:2;top:100%;left:.5em;display:none}:host(:hover) .m-score-set__tip,:host(:focus-within) .m-score-set__tip{display:block}:host(.is-tip-dismissed) .m-score-set__tip{display:none}:host(.is-no-data) .m-score-set__row-track{background:repeating-linear-gradient(45deg,var(--m-border) 0 .25em,transparent .25em .5em)}:host(.is-compact) .m-score-set__row-dot{display:none}:host(.is-compact) .m-score-set__row-name,:host(.is-compact) .m-score-set__primary-name{order:-1;font-size:.7em;text-transform:none;letter-spacing:0;color:var(--m-text-secondary)}:host(.is-compact) .m-score-set__primary-value{font-size:1.6em;color:var(--_tone)}:host(.is-compact) .m-score-set__row-value{font-size:1.05em;color:var(--_tone)}:host(.is-compact) .m-score-set__row-standing{font-size:.7em}@container (max-width: 26em){:host(.is-primary),:host(.is-row){grid-column:1;grid-row:auto}}\n"],
33977
+ template: "@switch (shape()) {\n @case ('primary') {\n @if (set?.variant() === 'compact') {\n <span class=\"m-score-set__primary-name\">{{ model().name }}</span>\n <span class=\"m-score-set__primary-value\">{{ model().display }}</span>\n } @else {\n <span class=\"m-score-set__ring\" [style.--_fill]=\"model().value ?? 0\"></span>\n <span class=\"m-score-set__primary-value\">{{ model().display }}</span>\n <span class=\"m-score-set__primary-name\">{{ model().name }}</span>\n }\n @if (model().standing) {\n <span class=\"m-score-set__primary-standing\">{{ model().standing }}</span>\n }\n @if (set?.bandShown() && model().value !== null) {\n <span class=\"m-score-set__primary-band\">{{ model().bandText }}</span>\n }\n @if (set?.basis()) {\n <span class=\"m-score-set__primary-basis\">{{ set?.basis() }}</span>\n }\n }\n @case ('row') {\n <span class=\"m-score-set__row-dot\"></span>\n <span class=\"m-score-set__row-name\">{{ model().name }}</span>\n <span class=\"m-score-set__row-value\">{{ model().display }}</span>\n @if (model().standing) {\n <span class=\"m-score-set__row-standing\">{{ model().standing }}</span>\n }\n @if (set?.variant() !== 'compact') {\n <span class=\"m-score-set__row-track\">\n <span class=\"m-score-set__row-fill\" [style.width.%]=\"model().value ?? 0\"></span>\n </span>\n }\n }\n}\n@if (shape() !== 'none' && model().tip) {\n <span class=\"m-score-set__tip\" role=\"tooltip\" [id]=\"tipId\">\n <m-tooltip [text]=\"model().tip\" />\n </span>\n}\n",
33978
+ 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{position:relative;border-radius:.5em;cursor:pointer;text-align:start}:host:hover,:host:focus-visible{background:color-mix(in srgb,var(--_tone) 8%,transparent)}:host:focus-visible{outline:2px solid var(--_tone);outline-offset:-2px}:host(.is-stale){opacity:.6}:host(.is-no-data){--_tone: var(--m-score-set-no-data);color:var(--m-text-secondary)}:host(.is-primary){grid-column:1;grid-row:1/span var(--_rows, 1);display:flex;flex-direction:column;align-items:center;gap:.25em;padding:.4em}:host(.is-row){grid-column:2;display:grid;grid-template-columns:.6em 1fr auto auto;grid-template-areas:\"dot name value standing\" \"track track track track\";align-items:center;column-gap:.5em;row-gap:.3em;padding:.4em .5em}:host(.is-compact){display:flex;flex-direction:column;align-items:flex-start;gap:.1em;padding:.45em .7em;border-bottom:3px solid var(--_tone);background:var(--m-background)}:host(.is-compact.is-primary){background:color-mix(in srgb,var(--_tone) 14%,var(--m-background))}.m-score-set__ring{display:block;width:6em;aspect-ratio:1;border-radius:50%;background:conic-gradient(var(--_tone) calc(var(--_fill) * 1%),var(--m-border) 0);-webkit-mask:radial-gradient(circle,transparent 0 calc(50% - .65em),#000 calc(50% - .6em));mask:radial-gradient(circle,transparent 0 calc(50% - .65em),#000 calc(50% - .6em))}.m-score-set__primary-value{margin-top:.15em;font-size:2.1em;font-weight:750;line-height:1}.m-score-set__primary-name{font-size:.75em;letter-spacing:.06em;text-transform:uppercase;color:var(--m-text-secondary)}.m-score-set__primary-standing{font-size:.8em;font-weight:600;color:var(--_tone)}.m-score-set__primary-band{font-size:.7em;font-weight:600;padding:.1em .6em;border-radius:99em;color:var(--_tone);background:color-mix(in srgb,var(--_tone) 18%,transparent)}.m-score-set__primary-basis{font-size:.7em;color:var(--m-text-secondary)}.m-score-set__row-dot{grid-area:dot;width:.55em;aspect-ratio:1;border-radius:50%;background:var(--_tone)}.m-score-set__row-name{grid-area:name;justify-self:start;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m-score-set__row-value{grid-area:value;font-weight:650;font-variant-numeric:tabular-nums}.m-score-set__row-standing{grid-area:standing;font-size:.8em;color:var(--m-text-secondary)}.m-score-set__row-track{grid-area:track;height:.4em;border-radius:99em;overflow:hidden;background:var(--m-border)}.m-score-set__row-fill{display:block;height:100%;border-radius:inherit;background:var(--_tone)}.m-score-set__tip{position:absolute;z-index:2;top:100%;left:.5em;display:none}:host(:hover) .m-score-set__tip,:host(:focus-within) .m-score-set__tip{display:block}:host(.is-tip-dismissed) .m-score-set__tip{display:none}:host(.is-no-data) .m-score-set__row-track{background:repeating-linear-gradient(45deg,var(--m-border) 0 .25em,transparent .25em .5em)}:host(.is-compact) .m-score-set__row-dot{display:none}:host(.is-compact) .m-score-set__row-name,:host(.is-compact) .m-score-set__primary-name{order:-1;font-size:.7em;text-transform:none;letter-spacing:0;color:var(--m-text-secondary)}:host(.is-compact) .m-score-set__primary-value{font-size:1.6em;color:var(--_tone)}:host(.is-compact) .m-score-set__row-value{font-size:1.05em;color:var(--_tone)}:host(.is-compact) .m-score-set__row-standing{font-size:.7em}@container (max-width: 26em){:host(.is-primary),:host(.is-row){grid-column:1;grid-row:auto}}\n"],
33979
33979
  dependencies: [{
33980
33980
  kind: "component",
33981
33981
  type: TooltipComponent,
@@ -34016,8 +34016,8 @@ i0.ɵɵngDeclareClassMetadata({
34016
34016
  "(keydown)": "onKeydown($event)",
34017
34017
  "(focusout)": "tipDismissed.set(false)"
34018
34018
  },
34019
- template: "@switch (shape()) {\n @case ('primary') {\n @if (set?.variant() === 'compact') {\n <span class=\"m-score-set__primary-name\">{{ model().name }}</span>\n <span class=\"m-score-set__primary-value\">{{ model().display }}</span>\n } @else {\n <span class=\"m-score-set__ring\" [style.--_fill]=\"model().value ?? 0\">\n <span class=\"m-score-set__primary-value\">{{ model().display }}</span>\n </span>\n <span class=\"m-score-set__primary-name\">{{ model().name }}</span>\n }\n @if (model().standing) {\n <span class=\"m-score-set__primary-standing\">{{ model().standing }}</span>\n }\n @if (set?.bandShown() && model().value !== null) {\n <span class=\"m-score-set__primary-band\">{{ model().bandText }}</span>\n }\n @if (set?.basis()) {\n <span class=\"m-score-set__primary-basis\">{{ set?.basis() }}</span>\n }\n }\n @case ('row') {\n <span class=\"m-score-set__row-dot\"></span>\n <span class=\"m-score-set__row-name\">{{ model().name }}</span>\n <span class=\"m-score-set__row-value\">{{ model().display }}</span>\n @if (model().standing) {\n <span class=\"m-score-set__row-standing\">{{ model().standing }}</span>\n }\n @if (set?.variant() !== 'compact') {\n <span class=\"m-score-set__row-track\">\n <span class=\"m-score-set__row-fill\" [style.width.%]=\"model().value ?? 0\"></span>\n </span>\n }\n }\n}\n@if (shape() !== 'none' && model().tip) {\n <span class=\"m-score-set__tip\" role=\"tooltip\" [id]=\"tipId\">\n <m-tooltip [text]=\"model().tip\" />\n </span>\n}\n",
34020
- 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{position:relative;border-radius:.5em;cursor:pointer}:host:hover,:host:focus-visible{background:color-mix(in srgb,var(--_tone) 8%,transparent)}:host:focus-visible{outline:2px solid var(--_tone);outline-offset:-2px}:host(.is-stale){opacity:.6}:host(.is-no-data){--_tone: var(--m-score-set-no-data);color:var(--m-text-secondary)}:host(.is-primary){grid-column:1;grid-row:1/span var(--_rows, 1);display:flex;flex-direction:column;align-items:center;gap:.25em;padding:.4em}:host(.is-row){grid-column:2;display:grid;grid-template-columns:.6em 1fr auto auto;grid-template-areas:\"dot name value standing\" \"track track track track\";align-items:center;column-gap:.5em;row-gap:.3em;padding:.4em .5em}:host(.is-compact){display:flex;flex-direction:column;align-items:flex-start;gap:.1em;padding:.45em .7em;border-bottom:3px solid var(--_tone);background:var(--m-background)}:host(.is-compact.is-primary){background:color-mix(in srgb,var(--_tone) 14%,var(--m-background))}.m-score-set__ring{display:grid;place-items:center;width:7.5em;aspect-ratio:1;border-radius:50%;background:conic-gradient(var(--_tone) calc(var(--_fill) * 1%),var(--m-border) 0);-webkit-mask:radial-gradient(circle,transparent 0 calc(50% - .65em),#000 calc(50% - .6em));mask:radial-gradient(circle,transparent 0 calc(50% - .65em),#000 calc(50% - .6em))}.m-score-set__primary-value{font-size:2.1em;font-weight:750;line-height:1}.m-score-set__primary-name{font-size:.75em;letter-spacing:.06em;text-transform:uppercase;color:var(--m-text-secondary)}.m-score-set__primary-standing{font-size:.8em;font-weight:600;color:var(--_tone)}.m-score-set__primary-band{font-size:.7em;font-weight:600;padding:.1em .6em;border-radius:99em;color:var(--_tone);background:color-mix(in srgb,var(--_tone) 18%,transparent)}.m-score-set__primary-basis{font-size:.7em;color:var(--m-text-secondary)}.m-score-set__row-dot{grid-area:dot;width:.55em;aspect-ratio:1;border-radius:50%;background:var(--_tone)}.m-score-set__row-name{grid-area:name;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m-score-set__row-value{grid-area:value;font-weight:650;font-variant-numeric:tabular-nums}.m-score-set__row-standing{grid-area:standing;font-size:.8em;color:var(--m-text-secondary)}.m-score-set__row-track{grid-area:track;height:.4em;border-radius:99em;overflow:hidden;background:var(--m-border)}.m-score-set__row-fill{display:block;height:100%;border-radius:inherit;background:var(--_tone)}.m-score-set__tip{position:absolute;z-index:2;top:100%;left:.5em;display:none}:host(:hover) .m-score-set__tip,:host(:focus-within) .m-score-set__tip{display:block}:host(.is-tip-dismissed) .m-score-set__tip{display:none}:host(.is-no-data) .m-score-set__row-track{background:repeating-linear-gradient(45deg,var(--m-border) 0 .25em,transparent .25em .5em)}:host(.is-compact) .m-score-set__row-dot{display:none}:host(.is-compact) .m-score-set__row-name,:host(.is-compact) .m-score-set__primary-name{order:-1;font-size:.7em;text-transform:none;letter-spacing:0;color:var(--m-text-secondary)}:host(.is-compact) .m-score-set__primary-value{font-size:1.6em;color:var(--_tone)}:host(.is-compact) .m-score-set__row-value{font-size:1.05em;color:var(--_tone)}:host(.is-compact) .m-score-set__row-standing{font-size:.7em}@container (max-width: 26em){:host(.is-primary),:host(.is-row){grid-column:1;grid-row:auto}}\n"]
34019
+ template: "@switch (shape()) {\n @case ('primary') {\n @if (set?.variant() === 'compact') {\n <span class=\"m-score-set__primary-name\">{{ model().name }}</span>\n <span class=\"m-score-set__primary-value\">{{ model().display }}</span>\n } @else {\n <span class=\"m-score-set__ring\" [style.--_fill]=\"model().value ?? 0\"></span>\n <span class=\"m-score-set__primary-value\">{{ model().display }}</span>\n <span class=\"m-score-set__primary-name\">{{ model().name }}</span>\n }\n @if (model().standing) {\n <span class=\"m-score-set__primary-standing\">{{ model().standing }}</span>\n }\n @if (set?.bandShown() && model().value !== null) {\n <span class=\"m-score-set__primary-band\">{{ model().bandText }}</span>\n }\n @if (set?.basis()) {\n <span class=\"m-score-set__primary-basis\">{{ set?.basis() }}</span>\n }\n }\n @case ('row') {\n <span class=\"m-score-set__row-dot\"></span>\n <span class=\"m-score-set__row-name\">{{ model().name }}</span>\n <span class=\"m-score-set__row-value\">{{ model().display }}</span>\n @if (model().standing) {\n <span class=\"m-score-set__row-standing\">{{ model().standing }}</span>\n }\n @if (set?.variant() !== 'compact') {\n <span class=\"m-score-set__row-track\">\n <span class=\"m-score-set__row-fill\" [style.width.%]=\"model().value ?? 0\"></span>\n </span>\n }\n }\n}\n@if (shape() !== 'none' && model().tip) {\n <span class=\"m-score-set__tip\" role=\"tooltip\" [id]=\"tipId\">\n <m-tooltip [text]=\"model().tip\" />\n </span>\n}\n",
34020
+ 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{position:relative;border-radius:.5em;cursor:pointer;text-align:start}:host:hover,:host:focus-visible{background:color-mix(in srgb,var(--_tone) 8%,transparent)}:host:focus-visible{outline:2px solid var(--_tone);outline-offset:-2px}:host(.is-stale){opacity:.6}:host(.is-no-data){--_tone: var(--m-score-set-no-data);color:var(--m-text-secondary)}:host(.is-primary){grid-column:1;grid-row:1/span var(--_rows, 1);display:flex;flex-direction:column;align-items:center;gap:.25em;padding:.4em}:host(.is-row){grid-column:2;display:grid;grid-template-columns:.6em 1fr auto auto;grid-template-areas:\"dot name value standing\" \"track track track track\";align-items:center;column-gap:.5em;row-gap:.3em;padding:.4em .5em}:host(.is-compact){display:flex;flex-direction:column;align-items:flex-start;gap:.1em;padding:.45em .7em;border-bottom:3px solid var(--_tone);background:var(--m-background)}:host(.is-compact.is-primary){background:color-mix(in srgb,var(--_tone) 14%,var(--m-background))}.m-score-set__ring{display:block;width:6em;aspect-ratio:1;border-radius:50%;background:conic-gradient(var(--_tone) calc(var(--_fill) * 1%),var(--m-border) 0);-webkit-mask:radial-gradient(circle,transparent 0 calc(50% - .65em),#000 calc(50% - .6em));mask:radial-gradient(circle,transparent 0 calc(50% - .65em),#000 calc(50% - .6em))}.m-score-set__primary-value{margin-top:.15em;font-size:2.1em;font-weight:750;line-height:1}.m-score-set__primary-name{font-size:.75em;letter-spacing:.06em;text-transform:uppercase;color:var(--m-text-secondary)}.m-score-set__primary-standing{font-size:.8em;font-weight:600;color:var(--_tone)}.m-score-set__primary-band{font-size:.7em;font-weight:600;padding:.1em .6em;border-radius:99em;color:var(--_tone);background:color-mix(in srgb,var(--_tone) 18%,transparent)}.m-score-set__primary-basis{font-size:.7em;color:var(--m-text-secondary)}.m-score-set__row-dot{grid-area:dot;width:.55em;aspect-ratio:1;border-radius:50%;background:var(--_tone)}.m-score-set__row-name{grid-area:name;justify-self:start;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m-score-set__row-value{grid-area:value;font-weight:650;font-variant-numeric:tabular-nums}.m-score-set__row-standing{grid-area:standing;font-size:.8em;color:var(--m-text-secondary)}.m-score-set__row-track{grid-area:track;height:.4em;border-radius:99em;overflow:hidden;background:var(--m-border)}.m-score-set__row-fill{display:block;height:100%;border-radius:inherit;background:var(--_tone)}.m-score-set__tip{position:absolute;z-index:2;top:100%;left:.5em;display:none}:host(:hover) .m-score-set__tip,:host(:focus-within) .m-score-set__tip{display:block}:host(.is-tip-dismissed) .m-score-set__tip{display:none}:host(.is-no-data) .m-score-set__row-track{background:repeating-linear-gradient(45deg,var(--m-border) 0 .25em,transparent .25em .5em)}:host(.is-compact) .m-score-set__row-dot{display:none}:host(.is-compact) .m-score-set__row-name,:host(.is-compact) .m-score-set__primary-name{order:-1;font-size:.7em;text-transform:none;letter-spacing:0;color:var(--m-text-secondary)}:host(.is-compact) .m-score-set__primary-value{font-size:1.6em;color:var(--_tone)}:host(.is-compact) .m-score-set__row-value{font-size:1.05em;color:var(--_tone)}:host(.is-compact) .m-score-set__row-standing{font-size:.7em}@container (max-width: 26em){:host(.is-primary),:host(.is-row){grid-column:1;grid-row:auto}}\n"]
34021
34021
  }]
34022
34022
  }],
34023
34023
  propDecorators: {
@@ -34286,6 +34286,1025 @@ i0.ɵɵngDeclareClassMetadata({
34286
34286
  }]
34287
34287
  }
34288
34288
  });
34289
+ const gapPct = (level, value) => (level / value - 1) * 100;
34290
+ const formatGap = (gap) => `${gap > 0 ? "+" : gap < 0 ? "−" : ""}${Math.abs(gap).toFixed(1)}%`;
34291
+ const PAD = .04;
34292
+ const ladderScale = ({ value, levels, forward = [], maxSpanPct }) => {
34293
+ const within = (v) => Math.abs(gapPct(v, value)) <= maxSpanPct;
34294
+ const values = [
34295
+ value,
34296
+ ...levels,
34297
+ ...forward.filter(within)
34298
+ ];
34299
+ const min = Math.min(...values);
34300
+ const max = Math.max(...values);
34301
+ const span = max - min || Math.abs(max) * .02 || 1;
34302
+ const lo = max === min ? min - span / 2 : min - span * PAD;
34303
+ const width = max === min ? span : span * 1.08;
34304
+ const pos = (v) => (v - lo) / width * 100;
34305
+ return {
34306
+ pos,
34307
+ within,
34308
+ clamp: (v) => Math.max(0, Math.min(100, pos(v)))
34309
+ };
34310
+ };
34311
+ const layoutLanes = (items, minGapPx) => {
34312
+ const labels = [];
34313
+ const last = [null, null];
34314
+ for (const item of [...items].sort((a, b) => a.x - b.x)) {
34315
+ const lane = [0, 1].find((l) => !last[l] || item.x - last[l].x >= minGapPx);
34316
+ if (lane !== void 0) {
34317
+ const label = {
34318
+ lane,
34319
+ x: item.x,
34320
+ keys: [item.key]
34321
+ };
34322
+ labels.push(label);
34323
+ last[lane] = label;
34324
+ continue;
34325
+ }
34326
+ const [a, b] = last;
34327
+ (Math.abs(a.x - item.x) <= Math.abs(b.x - item.x) ? a : b).keys.push(item.key);
34328
+ }
34329
+ return labels;
34330
+ };
34331
+ const PRICE_LADDER_RULES = [
34332
+ "golden-cross",
34333
+ "death-cross",
34334
+ "death-cross-near",
34335
+ "golden-cross-near",
34336
+ "bullish-alignment",
34337
+ "bearish-alignment",
34338
+ "strongly-bullish",
34339
+ "bullish-support",
34340
+ "recovering",
34341
+ "bearish-pressure",
34342
+ "stretched",
34343
+ "far-below-sma-200",
34344
+ "averages-converging",
34345
+ "52w-breakout",
34346
+ "near-52w-high",
34347
+ "new-52w-low",
34348
+ "near-52w-low",
34349
+ "forecast-against-trend",
34350
+ "forecast-above-52w-high"
34351
+ ];
34352
+ const CROSS_NEAR_PCT = 1;
34353
+ const STRETCHED_PCT = 20;
34354
+ const SQUEEZE_PCT = 3;
34355
+ const NEAR_BOUND_PCT = 3;
34356
+ const usable = (v) => typeof v === "number" && Number.isFinite(v) && v > 0;
34357
+ const ladderSignals = (levels, symbol = "₹") => {
34358
+ const { value: v, sma10: s10, sma50: s50, sma100: s100, sma200: s200, low52w: lo, high52w: hi } = levels;
34359
+ if (!usable(v)) return [];
34360
+ const money = (n) => `${symbol}${n.toLocaleString("en-IN", { maximumFractionDigits: 2 })}`;
34361
+ const out = [];
34362
+ const add = (rule, tone, params = {}) => out.push({
34363
+ rule,
34364
+ tone,
34365
+ params
34366
+ });
34367
+ if (usable(s50) && usable(s200)) {
34368
+ const gap = gapPct(s50, s200);
34369
+ if (gap >= 0) add("golden-cross", "gold", { gap: formatGap(gap) });
34370
+ else add("death-cross", "down", { gap: formatGap(gap) });
34371
+ if (Math.abs(gap) < CROSS_NEAR_PCT) add(gap >= 0 ? "death-cross-near" : "golden-cross-near", "warn", { gap: formatGap(Math.abs(gap)) });
34372
+ }
34373
+ const stack = [
34374
+ v,
34375
+ s10,
34376
+ s50,
34377
+ s100,
34378
+ s200
34379
+ ];
34380
+ if (stack.every(usable)) {
34381
+ const nums = stack;
34382
+ if (nums.every((x, i) => i === 0 || nums[i - 1] > x)) add("bullish-alignment", "up");
34383
+ else if (nums.every((x, i) => i === 0 || nums[i - 1] < x)) add("bearish-alignment", "down");
34384
+ }
34385
+ if (usable(s50) && usable(s200)) {
34386
+ const above50 = v > s50;
34387
+ const above200 = v > s200;
34388
+ if (above50 && above200) add("strongly-bullish", "up");
34389
+ else if (above200) add("bullish-support", "up");
34390
+ else if (above50) add("recovering", "neutral");
34391
+ else add("bearish-pressure", "down");
34392
+ }
34393
+ if (usable(s200)) {
34394
+ const gap = gapPct(v, s200);
34395
+ if (gap > STRETCHED_PCT) add("stretched", "warn", { gap: formatGap(gap) });
34396
+ if (gap < -20) add("far-below-sma-200", "down", { gap: formatGap(gap) });
34397
+ }
34398
+ const smas = [
34399
+ s10,
34400
+ s50,
34401
+ s100,
34402
+ s200
34403
+ ].filter(usable);
34404
+ if (smas.length >= 3) {
34405
+ const spread = gapPct(Math.max(...smas), Math.min(...smas));
34406
+ if (spread < SQUEEZE_PCT) add("averages-converging", "warn", { spread: `${spread.toFixed(1)}%` });
34407
+ }
34408
+ if (usable(lo) && usable(hi)) {
34409
+ if (v >= hi) add("52w-breakout", "up", { level: money(hi) });
34410
+ else if (gapPct(hi, v) < NEAR_BOUND_PCT) add("near-52w-high", "up", {
34411
+ gap: formatGap(gapPct(hi, v)),
34412
+ level: money(hi)
34413
+ });
34414
+ if (v <= lo) add("new-52w-low", "down", { level: money(lo) });
34415
+ else if (gapPct(v, lo) < NEAR_BOUND_PCT) add("near-52w-low", "down", {
34416
+ gap: formatGap(gapPct(v, lo)),
34417
+ level: money(lo)
34418
+ });
34419
+ }
34420
+ const target = levels.target;
34421
+ if (usable(target)) {
34422
+ const gap = gapPct(target, v);
34423
+ const has = (...rules) => out.some((s) => rules.includes(s.rule));
34424
+ if (gap > 0 && has("death-cross", "bearish-alignment") || gap < 0 && has("golden-cross", "bullish-alignment")) add("forecast-against-trend", "warn", { gap: formatGap(gap) });
34425
+ if (usable(hi) && target > hi) add("forecast-above-52w-high", "neutral", { level: money(hi) });
34426
+ }
34427
+ return out;
34428
+ };
34429
+ const isLadderRule = (name) => PRICE_LADDER_RULES.includes(name);
34430
+ const PRICE_LADDER_LEVELS = [
34431
+ {
34432
+ key: "sma10",
34433
+ label: "sma-10",
34434
+ kind: "level",
34435
+ rank: 1
34436
+ },
34437
+ {
34438
+ key: "sma50",
34439
+ label: "sma-50",
34440
+ kind: "level",
34441
+ rank: 2
34442
+ },
34443
+ {
34444
+ key: "sma100",
34445
+ label: "sma-100",
34446
+ kind: "level",
34447
+ rank: 3
34448
+ },
34449
+ {
34450
+ key: "sma200",
34451
+ label: "sma-200",
34452
+ kind: "level",
34453
+ rank: 4
34454
+ },
34455
+ {
34456
+ key: "ema10",
34457
+ label: "ema-10",
34458
+ kind: "level",
34459
+ rank: 1
34460
+ },
34461
+ {
34462
+ key: "ema50",
34463
+ label: "ema-50",
34464
+ kind: "level",
34465
+ rank: 2
34466
+ },
34467
+ {
34468
+ key: "ema100",
34469
+ label: "ema-100",
34470
+ kind: "level",
34471
+ rank: 3
34472
+ },
34473
+ {
34474
+ key: "ema200",
34475
+ label: "ema-200",
34476
+ kind: "level",
34477
+ rank: 4
34478
+ },
34479
+ {
34480
+ key: "low52w",
34481
+ label: "52w-low",
34482
+ kind: "bound",
34483
+ rank: 1
34484
+ },
34485
+ {
34486
+ key: "high52w",
34487
+ label: "52w-high",
34488
+ kind: "bound",
34489
+ rank: 1
34490
+ },
34491
+ {
34492
+ key: "current",
34493
+ label: "current-price",
34494
+ kind: "current",
34495
+ rank: 1
34496
+ },
34497
+ {
34498
+ key: "forecast",
34499
+ label: "model-forecast",
34500
+ kind: "forecast",
34501
+ rank: 1
34502
+ }
34503
+ ];
34504
+ const ladderLevelOf = (key) => PRICE_LADDER_LEVELS.find((l) => l.key === key);
34505
+ var PriceLadderMarkComponent = class PriceLadderMarkComponent {
34506
+ key = input("", ...ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []);
34507
+ label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
34508
+ value = input(null, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
34509
+ kind = input(void 0, ...ngDevMode ? [{ debugName: "kind" }] : /* istanbul ignore next */ []);
34510
+ rank = input(void 0, ...ngDevMode ? [{ debugName: "rank" }] : /* istanbul ignore next */ []);
34511
+ note = input(void 0, ...ngDevMode ? [{ debugName: "note" }] : /* istanbul ignore next */ []);
34512
+ static ɵfac = i0.ɵɵngDeclareFactory({
34513
+ minVersion: "12.0.0",
34514
+ version: "22.2.1",
34515
+ ngImport: i0,
34516
+ type: PriceLadderMarkComponent,
34517
+ deps: [],
34518
+ target: i0.ɵɵFactoryTarget.Component
34519
+ });
34520
+ static ɵcmp = i0.ɵɵngDeclareComponent({
34521
+ minVersion: "17.1.0",
34522
+ version: "22.2.1",
34523
+ type: PriceLadderMarkComponent,
34524
+ isStandalone: true,
34525
+ selector: "m-price-ladder-mark",
34526
+ inputs: {
34527
+ key: {
34528
+ classPropertyName: "key",
34529
+ publicName: "key",
34530
+ isSignal: true,
34531
+ isRequired: false,
34532
+ transformFunction: null
34533
+ },
34534
+ label: {
34535
+ classPropertyName: "label",
34536
+ publicName: "label",
34537
+ isSignal: true,
34538
+ isRequired: false,
34539
+ transformFunction: null
34540
+ },
34541
+ value: {
34542
+ classPropertyName: "value",
34543
+ publicName: "value",
34544
+ isSignal: true,
34545
+ isRequired: false,
34546
+ transformFunction: null
34547
+ },
34548
+ kind: {
34549
+ classPropertyName: "kind",
34550
+ publicName: "kind",
34551
+ isSignal: true,
34552
+ isRequired: false,
34553
+ transformFunction: null
34554
+ },
34555
+ rank: {
34556
+ classPropertyName: "rank",
34557
+ publicName: "rank",
34558
+ isSignal: true,
34559
+ isRequired: false,
34560
+ transformFunction: null
34561
+ },
34562
+ note: {
34563
+ classPropertyName: "note",
34564
+ publicName: "note",
34565
+ isSignal: true,
34566
+ isRequired: false,
34567
+ transformFunction: null
34568
+ }
34569
+ },
34570
+ host: { styleAttribute: "display: none" },
34571
+ ngImport: i0,
34572
+ template: "",
34573
+ isInline: true,
34574
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
34575
+ });
34576
+ };
34577
+ i0.ɵɵngDeclareClassMetadata({
34578
+ minVersion: "12.0.0",
34579
+ version: "22.2.1",
34580
+ ngImport: i0,
34581
+ type: PriceLadderMarkComponent,
34582
+ decorators: [{
34583
+ type: Component,
34584
+ args: [{
34585
+ selector: "m-price-ladder-mark",
34586
+ template: "",
34587
+ changeDetection: ChangeDetectionStrategy.OnPush,
34588
+ host: { style: "display: none" }
34589
+ }]
34590
+ }],
34591
+ propDecorators: {
34592
+ key: [{
34593
+ type: i0.Input,
34594
+ args: [{
34595
+ isSignal: true,
34596
+ alias: "key",
34597
+ required: false
34598
+ }]
34599
+ }],
34600
+ label: [{
34601
+ type: i0.Input,
34602
+ args: [{
34603
+ isSignal: true,
34604
+ alias: "label",
34605
+ required: false
34606
+ }]
34607
+ }],
34608
+ value: [{
34609
+ type: i0.Input,
34610
+ args: [{
34611
+ isSignal: true,
34612
+ alias: "value",
34613
+ required: false
34614
+ }]
34615
+ }],
34616
+ kind: [{
34617
+ type: i0.Input,
34618
+ args: [{
34619
+ isSignal: true,
34620
+ alias: "kind",
34621
+ required: false
34622
+ }]
34623
+ }],
34624
+ rank: [{
34625
+ type: i0.Input,
34626
+ args: [{
34627
+ isSignal: true,
34628
+ alias: "rank",
34629
+ required: false
34630
+ }]
34631
+ }],
34632
+ note: [{
34633
+ type: i0.Input,
34634
+ args: [{
34635
+ isSignal: true,
34636
+ alias: "note",
34637
+ required: false
34638
+ }]
34639
+ }]
34640
+ }
34641
+ });
34642
+ var PriceLadderSignalComponent = class PriceLadderSignalComponent {
34643
+ key = input("", ...ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []);
34644
+ rule = input(void 0, ...ngDevMode ? [{ debugName: "rule" }] : /* istanbul ignore next */ []);
34645
+ label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
34646
+ tone = input("neutral", ...ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []);
34647
+ detail = input("", ...ngDevMode ? [{ debugName: "detail" }] : /* istanbul ignore next */ []);
34648
+ static ɵfac = i0.ɵɵngDeclareFactory({
34649
+ minVersion: "12.0.0",
34650
+ version: "22.2.1",
34651
+ ngImport: i0,
34652
+ type: PriceLadderSignalComponent,
34653
+ deps: [],
34654
+ target: i0.ɵɵFactoryTarget.Component
34655
+ });
34656
+ static ɵcmp = i0.ɵɵngDeclareComponent({
34657
+ minVersion: "17.1.0",
34658
+ version: "22.2.1",
34659
+ type: PriceLadderSignalComponent,
34660
+ isStandalone: true,
34661
+ selector: "m-price-ladder-signal",
34662
+ inputs: {
34663
+ key: {
34664
+ classPropertyName: "key",
34665
+ publicName: "key",
34666
+ isSignal: true,
34667
+ isRequired: false,
34668
+ transformFunction: null
34669
+ },
34670
+ rule: {
34671
+ classPropertyName: "rule",
34672
+ publicName: "rule",
34673
+ isSignal: true,
34674
+ isRequired: false,
34675
+ transformFunction: null
34676
+ },
34677
+ label: {
34678
+ classPropertyName: "label",
34679
+ publicName: "label",
34680
+ isSignal: true,
34681
+ isRequired: false,
34682
+ transformFunction: null
34683
+ },
34684
+ tone: {
34685
+ classPropertyName: "tone",
34686
+ publicName: "tone",
34687
+ isSignal: true,
34688
+ isRequired: false,
34689
+ transformFunction: null
34690
+ },
34691
+ detail: {
34692
+ classPropertyName: "detail",
34693
+ publicName: "detail",
34694
+ isSignal: true,
34695
+ isRequired: false,
34696
+ transformFunction: null
34697
+ }
34698
+ },
34699
+ host: { styleAttribute: "display: none" },
34700
+ ngImport: i0,
34701
+ template: "",
34702
+ isInline: true,
34703
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
34704
+ });
34705
+ };
34706
+ i0.ɵɵngDeclareClassMetadata({
34707
+ minVersion: "12.0.0",
34708
+ version: "22.2.1",
34709
+ ngImport: i0,
34710
+ type: PriceLadderSignalComponent,
34711
+ decorators: [{
34712
+ type: Component,
34713
+ args: [{
34714
+ selector: "m-price-ladder-signal",
34715
+ template: "",
34716
+ changeDetection: ChangeDetectionStrategy.OnPush,
34717
+ host: { style: "display: none" }
34718
+ }]
34719
+ }],
34720
+ propDecorators: {
34721
+ key: [{
34722
+ type: i0.Input,
34723
+ args: [{
34724
+ isSignal: true,
34725
+ alias: "key",
34726
+ required: false
34727
+ }]
34728
+ }],
34729
+ rule: [{
34730
+ type: i0.Input,
34731
+ args: [{
34732
+ isSignal: true,
34733
+ alias: "rule",
34734
+ required: false
34735
+ }]
34736
+ }],
34737
+ label: [{
34738
+ type: i0.Input,
34739
+ args: [{
34740
+ isSignal: true,
34741
+ alias: "label",
34742
+ required: false
34743
+ }]
34744
+ }],
34745
+ tone: [{
34746
+ type: i0.Input,
34747
+ args: [{
34748
+ isSignal: true,
34749
+ alias: "tone",
34750
+ required: false
34751
+ }]
34752
+ }],
34753
+ detail: [{
34754
+ type: i0.Input,
34755
+ args: [{
34756
+ isSignal: true,
34757
+ alias: "detail",
34758
+ required: false
34759
+ }]
34760
+ }]
34761
+ }
34762
+ });
34763
+ const LIST_BELOW_PX = 360;
34764
+ const FALLBACK_PX = 640;
34765
+ const LABEL_GAP_PX = 64;
34766
+ const price = (v) => typeof v === "number" && Number.isFinite(v) && v > 0 ? v : null;
34767
+ var PriceLadderComponent = class PriceLadderComponent {
34768
+ value = input(null, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
34769
+ valueLabel = input("current-price", ...ngDevMode ? [{ debugName: "valueLabel" }] : /* istanbul ignore next */ []);
34770
+ target = input(null, ...ngDevMode ? [{ debugName: "target" }] : /* istanbul ignore next */ []);
34771
+ targetLow = input(null, ...ngDevMode ? [{ debugName: "targetLow" }] : /* istanbul ignore next */ []);
34772
+ targetHigh = input(null, ...ngDevMode ? [{ debugName: "targetHigh" }] : /* istanbul ignore next */ []);
34773
+ targetLabel = input("model-forecast", ...ngDevMode ? [{ debugName: "targetLabel" }] : /* istanbul ignore next */ []);
34774
+ targetNote = input("", ...ngDevMode ? [{ debugName: "targetNote" }] : /* istanbul ignore next */ []);
34775
+ maxSpanPct = input(60, ...ngDevMode ? [{ debugName: "maxSpanPct" }] : /* istanbul ignore next */ []);
34776
+ variant = input("auto", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
34777
+ symbol = input("₹", ...ngDevMode ? [{ debugName: "symbol" }] : /* istanbul ignore next */ []);
34778
+ signals = input(void 0, ...ngDevMode ? [{ debugName: "signals" }] : /* istanbul ignore next */ []);
34779
+ crossFrom = input(void 0, ...ngDevMode ? [{ debugName: "crossFrom" }] : /* istanbul ignore next */ []);
34780
+ crossTo = input(void 0, ...ngDevMode ? [{ debugName: "crossTo" }] : /* istanbul ignore next */ []);
34781
+ crossTone = input("neutral", ...ngDevMode ? [{ debugName: "crossTone" }] : /* istanbul ignore next */ []);
34782
+ markTags = contentChildren(PriceLadderMarkComponent, ...ngDevMode ? [{ debugName: "markTags" }] : /* istanbul ignore next */ []);
34783
+ signalTags = contentChildren(PriceLadderSignalComponent, ...ngDevMode ? [{ debugName: "signalTags" }] : /* istanbul ignore next */ []);
34784
+ translateService = inject(TranslateService);
34785
+ width = signal(0, ...ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []);
34786
+ constructor() {
34787
+ const host = inject(ElementRef).nativeElement;
34788
+ const destroyRef = inject(DestroyRef);
34789
+ afterNextRender(() => {
34790
+ if (typeof ResizeObserver === "undefined") return;
34791
+ const observer = new ResizeObserver(([entry]) => this.width.set(entry.contentRect.width));
34792
+ observer.observe(host);
34793
+ destroyRef.onDestroy(() => observer.disconnect());
34794
+ });
34795
+ }
34796
+ t = (key) => this.translateService.translate(key);
34797
+ money = (v) => `${this.symbol()}${v.toLocaleString("en-IN", { maximumFractionDigits: 2 })}`;
34798
+ anchor = (kind) => this.everyMark().find((m) => m.kind === kind)?.value ?? null;
34799
+ current = computed(() => this.anchor("current") ?? price(this.value()), ...ngDevMode ? [{ debugName: "current" }] : /* istanbul ignore next */ []);
34800
+ targetPoint = computed(() => this.anchor("forecast") ?? price(this.target()), ...ngDevMode ? [{ debugName: "targetPoint" }] : /* istanbul ignore next */ []);
34801
+ shownAs = computed(() => {
34802
+ const variant = this.variant();
34803
+ if (variant !== "auto") return variant;
34804
+ const w = this.width();
34805
+ return w > 0 && w < LIST_BELOW_PX ? "list" : "line";
34806
+ }, ...ngDevMode ? [{ debugName: "shownAs" }] : /* istanbul ignore next */ []);
34807
+ everyMark = computed(() => this.markTags().flatMap((tag) => {
34808
+ const value = price(tag.value());
34809
+ if (value === null) return [];
34810
+ const level = ladderLevelOf(tag.key());
34811
+ const note = tag.note();
34812
+ const name = this.t(tag.label() || level?.label || "");
34813
+ return [{
34814
+ key: tag.key(),
34815
+ name: note ? `${name} · ${this.t(note)}` : name,
34816
+ value,
34817
+ kind: tag.kind() ?? level?.kind ?? "level",
34818
+ rank: Math.min(4, Math.max(1, tag.rank() ?? level?.rank ?? 1))
34819
+ }];
34820
+ }), ...ngDevMode ? [{ debugName: "everyMark" }] : /* istanbul ignore next */ []);
34821
+ marks = computed(() => this.everyMark().filter((m) => m.kind === "level" || m.kind === "bound"), ...ngDevMode ? [{ debugName: "marks" }] : /* istanbul ignore next */ []);
34822
+ matched = computed(() => {
34823
+ const value = this.current();
34824
+ if (value === null) return /* @__PURE__ */ new Map();
34825
+ const at = (key) => this.marks().find((m) => m.key === key)?.value;
34826
+ const found = ladderSignals({
34827
+ value,
34828
+ target: this.targetPoint(),
34829
+ sma10: at("sma10"),
34830
+ sma50: at("sma50"),
34831
+ sma100: at("sma100"),
34832
+ sma200: at("sma200"),
34833
+ low52w: at("low52w"),
34834
+ high52w: at("high52w")
34835
+ }, this.symbol());
34836
+ return new Map(found.map((s) => [s.rule, s]));
34837
+ }, ...ngDevMode ? [{ debugName: "matched" }] : /* istanbul ignore next */ []);
34838
+ picked = computed(() => {
34839
+ const raw = this.signals();
34840
+ const names = typeof raw === "string" ? raw.split(/[\s,]+/) : raw ?? [];
34841
+ if (names.includes("all")) return PRICE_LADDER_RULES;
34842
+ return PRICE_LADDER_RULES.filter((r) => names.includes(r));
34843
+ }, ...ngDevMode ? [{ debugName: "picked" }] : /* istanbul ignore next */ []);
34844
+ chips = computed(() => {
34845
+ const tagged = this.tagChips();
34846
+ const shown = new Set(tagged.map((c) => c.rule));
34847
+ const picked = this.picked().flatMap((rule) => {
34848
+ const hit = this.matched().get(rule);
34849
+ if (!hit || shown.has(rule)) return [];
34850
+ return [this.ruleChip(rule, rule, hit, "", "")];
34851
+ });
34852
+ return [...tagged, ...picked];
34853
+ }, ...ngDevMode ? [{ debugName: "chips" }] : /* istanbul ignore next */ []);
34854
+ ruleChip = (key, rule, hit, label, detail) => ({
34855
+ key,
34856
+ rule,
34857
+ label: this.t(label || rule),
34858
+ tone: hit.tone,
34859
+ detail: detail || this.translateService.translate(`${rule}-detail`, hit.params)
34860
+ });
34861
+ tagChips = computed(() => this.signalTags().flatMap((tag, i) => {
34862
+ const raw = tag.rule();
34863
+ const rule = isLadderRule(raw) ? raw : void 0;
34864
+ const key = tag.key() || rule || `signal-${i}`;
34865
+ if (!rule) return [{
34866
+ key,
34867
+ rule: void 0,
34868
+ label: this.t(tag.label()),
34869
+ tone: tag.tone(),
34870
+ detail: tag.detail()
34871
+ }];
34872
+ const hit = this.matched().get(rule);
34873
+ if (!hit) return [];
34874
+ return [this.ruleChip(key, rule, hit, tag.label(), tag.detail())];
34875
+ }), ...ngDevMode ? [{ debugName: "tagChips" }] : /* istanbul ignore next */ []);
34876
+ crossPair = computed(() => {
34877
+ const from = this.crossFrom();
34878
+ const to = this.crossTo();
34879
+ if (from && to) return {
34880
+ from,
34881
+ to,
34882
+ tone: this.crossTone()
34883
+ };
34884
+ const cross = this.chips().find((c) => c.rule === "golden-cross" || c.rule === "death-cross");
34885
+ return cross ? {
34886
+ from: "sma50",
34887
+ to: "sma200",
34888
+ tone: cross.tone
34889
+ } : null;
34890
+ }, ...ngDevMode ? [{ debugName: "crossPair" }] : /* istanbul ignore next */ []);
34891
+ forward = computed(() => {
34892
+ const value = this.current();
34893
+ if (value === null) return null;
34894
+ const point = this.targetPoint();
34895
+ const low = price(this.targetLow());
34896
+ const high = price(this.targetHigh());
34897
+ const range = low !== null && high !== null ? {
34898
+ low: Math.min(low, high),
34899
+ high: Math.max(low, high)
34900
+ } : null;
34901
+ if (point === null && range === null) return null;
34902
+ const label = point !== null ? this.t(this.targetLabel()) : this.translateService.translate("forecast-range");
34903
+ const note = this.targetNote();
34904
+ const rangeText = range ? `${this.money(range.low)} – ${this.money(range.high)}` : "";
34905
+ const gap = gapPct(point ?? (range ? (range.low + range.high) / 2 : value), value);
34906
+ return {
34907
+ point,
34908
+ range,
34909
+ label,
34910
+ name: note ? `${label} · ${note}` : label,
34911
+ valueText: point !== null ? `${this.money(point)} ${formatGap(gap)}` : rangeText,
34912
+ rowText: point !== null ? this.money(point) : rangeText,
34913
+ up: gap >= 0,
34914
+ shown: point ?? range?.high ?? value
34915
+ };
34916
+ }, ...ngDevMode ? [{ debugName: "forward" }] : /* istanbul ignore next */ []);
34917
+ line = computed(() => {
34918
+ const value = this.current();
34919
+ if (value === null) return null;
34920
+ const marks = this.marks();
34921
+ const fwd = this.forward();
34922
+ const forwardValues = fwd ? [
34923
+ fwd.point,
34924
+ fwd.range?.low,
34925
+ fwd.range?.high
34926
+ ].filter((v) => v != null) : [];
34927
+ const scale = ladderScale({
34928
+ value,
34929
+ levels: marks.map((m) => m.value),
34930
+ forward: forwardValues,
34931
+ maxSpanPct: this.maxSpanPct()
34932
+ });
34933
+ const at = new Map(marks.map((m) => [m.key, m]));
34934
+ const widthPx = this.width() || FALLBACK_PX;
34935
+ const labels = layoutLanes(marks.map((m) => ({
34936
+ key: m.key,
34937
+ x: scale.pos(m.value) / 100 * widthPx
34938
+ })), LABEL_GAP_PX).map((label) => {
34939
+ const group = marks.filter((m) => label.keys.includes(m.key));
34940
+ const level = group.some((m) => m.kind === "level");
34941
+ return {
34942
+ key: label.keys.join("+"),
34943
+ lane: label.lane,
34944
+ pos: label.x / widthPx * 100,
34945
+ bound: !level,
34946
+ name: group.map((m) => m.name).join(" · "),
34947
+ valueText: group.map((m) => this.money(m.value)).join(" · "),
34948
+ gapText: level ? group.map((m) => formatGap(gapPct(m.value, value))).join(" · ") : ""
34949
+ };
34950
+ });
34951
+ const valuePos = scale.pos(value);
34952
+ let target = null;
34953
+ if (fwd?.point != null) {
34954
+ const onScale = scale.within(fwd.point);
34955
+ target = {
34956
+ pos: onScale ? scale.pos(fwd.point) : fwd.point > value ? 100 : 0,
34957
+ offScale: !onScale,
34958
+ point: true
34959
+ };
34960
+ } else if (fwd?.range) target = {
34961
+ pos: (scale.clamp(fwd.range.low) + scale.clamp(fwd.range.high)) / 2,
34962
+ offScale: false,
34963
+ point: false
34964
+ };
34965
+ const pair = this.crossPair();
34966
+ const from = at.get(pair?.from ?? "");
34967
+ const to = at.get(pair?.to ?? "");
34968
+ const cross = pair && from && to ? {
34969
+ ...span(scale.pos(from.value), scale.pos(to.value)),
34970
+ tone: pair.tone
34971
+ } : null;
34972
+ const ends = marks.filter((m) => m.kind === "bound");
34973
+ const bounds = ends.length === 2 ? span(scale.pos(ends[0].value), scale.pos(ends[1].value)) : null;
34974
+ return {
34975
+ valuePos,
34976
+ ticks: marks.map((m) => ({
34977
+ key: m.key,
34978
+ kind: m.kind,
34979
+ rank: m.rank,
34980
+ pos: scale.pos(m.value)
34981
+ })),
34982
+ labels,
34983
+ lanes: labels.some((l) => l.lane === 1) ? 2 : 1,
34984
+ target,
34985
+ connector: target && fwd?.point != null ? span(valuePos, target.pos) : null,
34986
+ band: fwd?.range ? span(scale.clamp(fwd.range.low), scale.clamp(fwd.range.high)) : null,
34987
+ cross,
34988
+ bounds
34989
+ };
34990
+ }, ...ngDevMode ? [{ debugName: "line" }] : /* istanbul ignore next */ []);
34991
+ rows = computed(() => {
34992
+ const value = this.current();
34993
+ if (value === null) return [];
34994
+ const fwd = this.forward();
34995
+ const rows = [
34996
+ ...this.marks().map((m) => ({
34997
+ key: m.key,
34998
+ kind: m.kind,
34999
+ name: m.name,
35000
+ value: m.value,
35001
+ valueText: this.money(m.value)
35002
+ })),
35003
+ {
35004
+ key: "current",
35005
+ kind: "current",
35006
+ name: this.t(this.valueLabel()),
35007
+ value,
35008
+ valueText: this.money(value)
35009
+ },
35010
+ ...fwd ? [{
35011
+ key: "target",
35012
+ kind: "target",
35013
+ name: fwd.name,
35014
+ value: fwd.shown,
35015
+ valueText: fwd.rowText
35016
+ }] : []
35017
+ ].sort((a, b) => b.value - a.value);
35018
+ const lo = rows[rows.length - 1].value;
35019
+ const hi = rows[0].value;
35020
+ return rows.map((r) => ({
35021
+ ...r,
35022
+ gapText: r.kind === "current" ? "" : formatGap(gapPct(r.value, value)),
35023
+ up: r.value >= value,
35024
+ pos: hi === lo ? 50 : (r.value - lo) / (hi - lo) * 100
35025
+ }));
35026
+ }, ...ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []);
35027
+ summary = computed(() => {
35028
+ const value = this.current();
35029
+ if (value === null) return this.translateService.translate("no-data");
35030
+ const fwd = this.forward();
35031
+ const head = this.translateService.translate("price-ladder-summary", {
35032
+ value: this.money(value),
35033
+ n: String(this.marks().length)
35034
+ });
35035
+ return fwd ? `${head}; ${fwd.label} ${fwd.valueText}` : head;
35036
+ }, ...ngDevMode ? [{ debugName: "summary" }] : /* istanbul ignore next */ []);
35037
+ static ɵfac = i0.ɵɵngDeclareFactory({
35038
+ minVersion: "12.0.0",
35039
+ version: "22.2.1",
35040
+ ngImport: i0,
35041
+ type: PriceLadderComponent,
35042
+ deps: [],
35043
+ target: i0.ɵɵFactoryTarget.Component
35044
+ });
35045
+ static ɵcmp = i0.ɵɵngDeclareComponent({
35046
+ minVersion: "17.0.0",
35047
+ version: "22.2.1",
35048
+ type: PriceLadderComponent,
35049
+ isStandalone: true,
35050
+ selector: "m-price-ladder",
35051
+ inputs: {
35052
+ value: {
35053
+ classPropertyName: "value",
35054
+ publicName: "value",
35055
+ isSignal: true,
35056
+ isRequired: false,
35057
+ transformFunction: null
35058
+ },
35059
+ valueLabel: {
35060
+ classPropertyName: "valueLabel",
35061
+ publicName: "valueLabel",
35062
+ isSignal: true,
35063
+ isRequired: false,
35064
+ transformFunction: null
35065
+ },
35066
+ target: {
35067
+ classPropertyName: "target",
35068
+ publicName: "target",
35069
+ isSignal: true,
35070
+ isRequired: false,
35071
+ transformFunction: null
35072
+ },
35073
+ targetLow: {
35074
+ classPropertyName: "targetLow",
35075
+ publicName: "targetLow",
35076
+ isSignal: true,
35077
+ isRequired: false,
35078
+ transformFunction: null
35079
+ },
35080
+ targetHigh: {
35081
+ classPropertyName: "targetHigh",
35082
+ publicName: "targetHigh",
35083
+ isSignal: true,
35084
+ isRequired: false,
35085
+ transformFunction: null
35086
+ },
35087
+ targetLabel: {
35088
+ classPropertyName: "targetLabel",
35089
+ publicName: "targetLabel",
35090
+ isSignal: true,
35091
+ isRequired: false,
35092
+ transformFunction: null
35093
+ },
35094
+ targetNote: {
35095
+ classPropertyName: "targetNote",
35096
+ publicName: "targetNote",
35097
+ isSignal: true,
35098
+ isRequired: false,
35099
+ transformFunction: null
35100
+ },
35101
+ maxSpanPct: {
35102
+ classPropertyName: "maxSpanPct",
35103
+ publicName: "maxSpanPct",
35104
+ isSignal: true,
35105
+ isRequired: false,
35106
+ transformFunction: null
35107
+ },
35108
+ variant: {
35109
+ classPropertyName: "variant",
35110
+ publicName: "variant",
35111
+ isSignal: true,
35112
+ isRequired: false,
35113
+ transformFunction: null
35114
+ },
35115
+ symbol: {
35116
+ classPropertyName: "symbol",
35117
+ publicName: "symbol",
35118
+ isSignal: true,
35119
+ isRequired: false,
35120
+ transformFunction: null
35121
+ },
35122
+ signals: {
35123
+ classPropertyName: "signals",
35124
+ publicName: "signals",
35125
+ isSignal: true,
35126
+ isRequired: false,
35127
+ transformFunction: null
35128
+ },
35129
+ crossFrom: {
35130
+ classPropertyName: "crossFrom",
35131
+ publicName: "crossFrom",
35132
+ isSignal: true,
35133
+ isRequired: false,
35134
+ transformFunction: null
35135
+ },
35136
+ crossTo: {
35137
+ classPropertyName: "crossTo",
35138
+ publicName: "crossTo",
35139
+ isSignal: true,
35140
+ isRequired: false,
35141
+ transformFunction: null
35142
+ },
35143
+ crossTone: {
35144
+ classPropertyName: "crossTone",
35145
+ publicName: "crossTone",
35146
+ isSignal: true,
35147
+ isRequired: false,
35148
+ transformFunction: null
35149
+ }
35150
+ },
35151
+ queries: [{
35152
+ propertyName: "markTags",
35153
+ predicate: PriceLadderMarkComponent,
35154
+ isSignal: true
35155
+ }, {
35156
+ propertyName: "signalTags",
35157
+ predicate: PriceLadderSignalComponent,
35158
+ isSignal: true
35159
+ }],
35160
+ ngImport: i0,
35161
+ template: "<div class=\"m-price-ladder\" role=\"img\" [attr.aria-label]=\"summary()\">\n @if (chips().length) {\n <div class=\"m-price-ladder__signals\">\n @for (s of chips(); track s.key) {\n <span\n [class]=\"'m-price-ladder__signal is-' + s.tone\"\n [attr.title]=\"s.detail || null\"\n >{{ s.label }}</span\n >\n }\n </div>\n }\n\n @if (current(); as value) {\n @if (shownAs() === 'line') {\n @if (line(); as l) {\n <div class=\"m-price-ladder__line\" [style.--_lanes]=\"l.lanes\">\n @if (forward(); as f) {\n @if (l.target; as t) {\n <div\n class=\"m-price-ladder__target\"\n [class.is-off-scale]=\"t.offScale\"\n [class.is-up]=\"f.up\"\n [class.is-down]=\"!f.up\"\n [style.--_x.%]=\"t.pos\"\n >\n <span class=\"m-price-ladder__target-name\">{{ f.name }}</span>\n <span class=\"m-price-ladder__target-value\">{{ f.valueText }}</span>\n </div>\n }\n }\n\n <div class=\"m-price-ladder__axis\">\n @if (l.bounds; as b) {\n <span class=\"m-price-ladder__range\" [style.left.%]=\"b.left\" [style.width.%]=\"b.width\"></span>\n }\n @if (l.band; as b) {\n <span class=\"m-price-ladder__band\" [style.left.%]=\"b.left\" [style.width.%]=\"b.width\"></span>\n }\n @if (l.connector; as c) {\n <span\n class=\"m-price-ladder__connector\"\n [class.is-up]=\"forward()?.up\"\n [class.is-down]=\"!forward()?.up\"\n [style.left.%]=\"c.left\"\n [style.width.%]=\"c.width\"\n ></span>\n }\n @if (l.cross; as c) {\n <span\n [class]=\"'m-price-ladder__cross is-' + c.tone\"\n [style.left.%]=\"c.left\"\n [style.width.%]=\"c.width\"\n ></span>\n }\n @for (tick of l.ticks; track tick.key) {\n <span\n class=\"m-price-ladder__tick\"\n [class.is-bound]=\"tick.kind === 'bound'\"\n [style.--_rank]=\"tick.rank\"\n [style.left.%]=\"tick.pos\"\n ></span>\n }\n @if (l.target; as t) {\n @if (t.point) {\n <span\n class=\"m-price-ladder__target-tick\"\n [class.is-off-scale]=\"t.offScale\"\n [class.is-left]=\"t.pos === 0\"\n [style.left.%]=\"t.pos\"\n ></span>\n }\n }\n <span class=\"m-price-ladder__current\" [style.--_x.%]=\"l.valuePos\">\n <span class=\"m-price-ladder__current-value\">{{ money(value) }}</span>\n </span>\n </div>\n\n <div class=\"m-price-ladder__labels\">\n @for (label of l.labels; track label.key) {\n <span\n class=\"m-price-ladder__label\"\n [class.is-bound]=\"label.bound\"\n [class.is-lane-2]=\"label.lane === 1\"\n [style.--_x.%]=\"label.pos\"\n >\n <span class=\"m-price-ladder__label-name\">{{ label.name }}</span>\n <span class=\"m-price-ladder__label-value\">{{ label.valueText }}</span>\n @if (label.gapText) {\n <span class=\"m-price-ladder__label-gap\">{{ label.gapText }}</span>\n }\n </span>\n }\n </div>\n </div>\n }\n } @else {\n <div class=\"m-price-ladder__list\">\n @for (row of rows(); track row.key) {\n <div [class]=\"'m-price-ladder__row is-' + row.kind\">\n <span class=\"m-price-ladder__row-name\">{{ row.name }}</span>\n <span class=\"m-price-ladder__row-value\">{{ row.valueText }}</span>\n <span class=\"m-price-ladder__row-gap\" [class.is-up]=\"row.up\" [class.is-down]=\"!row.up\">{{\n row.gapText\n }}</span>\n <span class=\"m-price-ladder__row-track\">\n <span class=\"m-price-ladder__row-dot\" [style.left.%]=\"row.pos\"></span>\n </span>\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"m-price-ladder__empty\">—</div>\n }\n</div>\n",
35162
+ 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;--m-price-ladder-forward: var(--m-mm);--m-price-ladder-up: var(--m-success);--m-price-ladder-down: var(--m-error);--m-price-ladder-warn: var(--m-warning);--m-price-ladder-gold: var(--m-gold)}.m-price-ladder{display:flex;flex-direction:column;gap:.75em;font-variant-numeric:tabular-nums}.m-price-ladder__signals{display:flex;flex-wrap:wrap;gap:.4em}.m-price-ladder__signal{display:inline-flex;align-items:center;gap:.4em;padding:.15em .65em .15em .5em;border:1px solid var(--m-border);border-radius:999px;font-size:.8em;font-weight:500}.m-price-ladder__signal:before{content:\"\";width:.55em;height:.55em;border-radius:50%;background:var(--_tone, var(--m-text-tertiary))}.m-price-ladder__signal.is-up{--_tone: var(--m-price-ladder-up)}.m-price-ladder__signal.is-down{--_tone: var(--m-price-ladder-down)}.m-price-ladder__signal.is-warn{--_tone: var(--m-price-ladder-warn)}.m-price-ladder__signal.is-gold{--_tone: var(--m-price-ladder-gold);border-color:var(--m-price-ladder-gold)}.m-price-ladder__line{display:grid;--_edge: 3em}.m-price-ladder__target{position:relative;left:clamp(var(--_edge),var(--_x),100% - var(--_edge));display:flex;flex-direction:column;align-items:center;width:max-content;max-width:50%;transform:translate(-50%);font-size:.8em}.m-price-ladder__target.is-up{--_dir: var(--m-price-ladder-up)}.m-price-ladder__target.is-down{--_dir: var(--m-price-ladder-down)}.m-price-ladder__target-name{color:var(--m-price-ladder-forward);font-style:italic}.m-price-ladder__target-value{color:var(--m-text);font-weight:600}.m-price-ladder__axis{position:relative;height:3.6em}.m-price-ladder__axis:before{content:\"\";position:absolute;inset:50% 0 auto;height:2px;background:var(--m-border);transform:translateY(-50%)}.m-price-ladder__range,.m-price-ladder__band,.m-price-ladder__connector,.m-price-ladder__tick,.m-price-ladder__target-tick,.m-price-ladder__cross{position:absolute;top:50%;transform:translateY(-50%)}.m-price-ladder__range{height:.5em;background:color-mix(in srgb,var(--m-text-tertiary) 18%,transparent)}.m-price-ladder__band{height:1.6em;border:1px dashed var(--m-price-ladder-forward);border-radius:.2em;background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--m-price-ladder-forward) 22%,transparent) 0 2px,transparent 2px 6px)}.m-price-ladder__connector{height:4px;border-radius:2px;opacity:.55}.m-price-ladder__connector.is-up{background:var(--m-price-ladder-up)}.m-price-ladder__connector.is-down{background:var(--m-price-ladder-down)}.m-price-ladder__cross{top:calc(50% + 1.2em);height:.45em;border:1.5px solid var(--m-text-tertiary);border-top:0}.m-price-ladder__cross.is-gold{border-color:var(--m-price-ladder-gold)}.m-price-ladder__cross.is-down{border-color:var(--m-price-ladder-down)}.m-price-ladder__cross.is-up{border-color:var(--m-price-ladder-up)}.m-price-ladder__tick{width:calc(1px + var(--_rank, 1) * .5px);height:calc(.5em + var(--_rank, 1) * .35em);margin-left:calc(var(--_rank, 1) * -.25px);background:var(--m-text-secondary);opacity:calc(.35 + var(--_rank, 1) * .16)}.m-price-ladder__tick.is-bound{width:2px;height:1.2em;background:var(--m-text-tertiary);opacity:1}.m-price-ladder__target-tick{height:2.4em;border-left:2px dashed var(--m-price-ladder-forward)}.m-price-ladder__target-tick.is-off-scale{width:.6em;height:.6em;margin-left:-.7em;border:0;border-top:2.5px solid var(--m-price-ladder-forward);border-right:2.5px solid var(--m-price-ladder-forward);transform:translateY(-50%) rotate(45deg)}.m-price-ladder__target-tick.is-off-scale.is-left{margin-left:.1em;transform:translateY(-50%) rotate(-135deg)}.m-price-ladder__current{position:absolute;inset:0 auto 0 var(--_x)}.m-price-ladder__current:after{content:\"\";position:absolute;top:50%;width:.9em;height:.9em;border:2px solid var(--m-background);border-radius:50%;background:var(--m-text);transform:translate(-50%,-50%)}.m-price-ladder__current-value{position:absolute;top:-.1em;font-size:.85em;font-weight:650;white-space:nowrap;transform:translate(-50%)}.m-price-ladder__labels{position:relative;height:calc(var(--_lanes, 1) * 3.4em)}.m-price-ladder__label{position:absolute;top:0;left:clamp(var(--_edge),var(--_x),100% - var(--_edge));display:flex;flex-direction:column;align-items:center;font-size:.75em;line-height:1.3;white-space:nowrap;transform:translate(-50%)}.m-price-ladder__label.is-lane-2{top:4.4em}.m-price-ladder__label.is-bound{color:var(--m-text-tertiary)}.m-price-ladder__label-name{color:var(--m-text-secondary)}.m-price-ladder__label-value{color:var(--m-text)}.m-price-ladder__label-gap{color:var(--m-text-tertiary)}.m-price-ladder__list{display:grid}.m-price-ladder__row{display:grid;grid-template-columns:minmax(0,1.2fr) auto 4.5em minmax(3em,1fr);gap:.6em;align-items:center;padding:.45em .1em;border-bottom:1px solid var(--m-border);font-size:.9em}.m-price-ladder__row:last-child{border-bottom:0}.m-price-ladder__row.is-current{font-weight:650}.m-price-ladder__row.is-target{color:var(--m-price-ladder-forward);font-style:italic}.m-price-ladder__row.is-bound{color:var(--m-text-tertiary)}.m-price-ladder__row-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m-price-ladder__row-value{text-align:end}.m-price-ladder__row-gap{text-align:end;color:var(--m-text-tertiary)}.m-price-ladder__row-track{position:relative;height:.6em}.m-price-ladder__row-track:before{content:\"\";position:absolute;inset:50% 0 auto;height:1px;background:var(--m-border)}.m-price-ladder__row-dot{position:absolute;top:50%;width:.4em;height:.4em;border-radius:50%;background:currentColor;transform:translate(-50%,-50%)}.m-price-ladder__empty{padding:1em;color:var(--m-text-tertiary);font-size:1.25em;text-align:center}\n"],
35163
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
35164
+ });
35165
+ };
35166
+ i0.ɵɵngDeclareClassMetadata({
35167
+ minVersion: "12.0.0",
35168
+ version: "22.2.1",
35169
+ ngImport: i0,
35170
+ type: PriceLadderComponent,
35171
+ decorators: [{
35172
+ type: Component,
35173
+ args: [{
35174
+ selector: "m-price-ladder",
35175
+ changeDetection: ChangeDetectionStrategy.OnPush,
35176
+ template: "<div class=\"m-price-ladder\" role=\"img\" [attr.aria-label]=\"summary()\">\n @if (chips().length) {\n <div class=\"m-price-ladder__signals\">\n @for (s of chips(); track s.key) {\n <span\n [class]=\"'m-price-ladder__signal is-' + s.tone\"\n [attr.title]=\"s.detail || null\"\n >{{ s.label }}</span\n >\n }\n </div>\n }\n\n @if (current(); as value) {\n @if (shownAs() === 'line') {\n @if (line(); as l) {\n <div class=\"m-price-ladder__line\" [style.--_lanes]=\"l.lanes\">\n @if (forward(); as f) {\n @if (l.target; as t) {\n <div\n class=\"m-price-ladder__target\"\n [class.is-off-scale]=\"t.offScale\"\n [class.is-up]=\"f.up\"\n [class.is-down]=\"!f.up\"\n [style.--_x.%]=\"t.pos\"\n >\n <span class=\"m-price-ladder__target-name\">{{ f.name }}</span>\n <span class=\"m-price-ladder__target-value\">{{ f.valueText }}</span>\n </div>\n }\n }\n\n <div class=\"m-price-ladder__axis\">\n @if (l.bounds; as b) {\n <span class=\"m-price-ladder__range\" [style.left.%]=\"b.left\" [style.width.%]=\"b.width\"></span>\n }\n @if (l.band; as b) {\n <span class=\"m-price-ladder__band\" [style.left.%]=\"b.left\" [style.width.%]=\"b.width\"></span>\n }\n @if (l.connector; as c) {\n <span\n class=\"m-price-ladder__connector\"\n [class.is-up]=\"forward()?.up\"\n [class.is-down]=\"!forward()?.up\"\n [style.left.%]=\"c.left\"\n [style.width.%]=\"c.width\"\n ></span>\n }\n @if (l.cross; as c) {\n <span\n [class]=\"'m-price-ladder__cross is-' + c.tone\"\n [style.left.%]=\"c.left\"\n [style.width.%]=\"c.width\"\n ></span>\n }\n @for (tick of l.ticks; track tick.key) {\n <span\n class=\"m-price-ladder__tick\"\n [class.is-bound]=\"tick.kind === 'bound'\"\n [style.--_rank]=\"tick.rank\"\n [style.left.%]=\"tick.pos\"\n ></span>\n }\n @if (l.target; as t) {\n @if (t.point) {\n <span\n class=\"m-price-ladder__target-tick\"\n [class.is-off-scale]=\"t.offScale\"\n [class.is-left]=\"t.pos === 0\"\n [style.left.%]=\"t.pos\"\n ></span>\n }\n }\n <span class=\"m-price-ladder__current\" [style.--_x.%]=\"l.valuePos\">\n <span class=\"m-price-ladder__current-value\">{{ money(value) }}</span>\n </span>\n </div>\n\n <div class=\"m-price-ladder__labels\">\n @for (label of l.labels; track label.key) {\n <span\n class=\"m-price-ladder__label\"\n [class.is-bound]=\"label.bound\"\n [class.is-lane-2]=\"label.lane === 1\"\n [style.--_x.%]=\"label.pos\"\n >\n <span class=\"m-price-ladder__label-name\">{{ label.name }}</span>\n <span class=\"m-price-ladder__label-value\">{{ label.valueText }}</span>\n @if (label.gapText) {\n <span class=\"m-price-ladder__label-gap\">{{ label.gapText }}</span>\n }\n </span>\n }\n </div>\n </div>\n }\n } @else {\n <div class=\"m-price-ladder__list\">\n @for (row of rows(); track row.key) {\n <div [class]=\"'m-price-ladder__row is-' + row.kind\">\n <span class=\"m-price-ladder__row-name\">{{ row.name }}</span>\n <span class=\"m-price-ladder__row-value\">{{ row.valueText }}</span>\n <span class=\"m-price-ladder__row-gap\" [class.is-up]=\"row.up\" [class.is-down]=\"!row.up\">{{\n row.gapText\n }}</span>\n <span class=\"m-price-ladder__row-track\">\n <span class=\"m-price-ladder__row-dot\" [style.left.%]=\"row.pos\"></span>\n </span>\n </div>\n }\n </div>\n }\n } @else {\n <div class=\"m-price-ladder__empty\">—</div>\n }\n</div>\n",
35177
+ 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;--m-price-ladder-forward: var(--m-mm);--m-price-ladder-up: var(--m-success);--m-price-ladder-down: var(--m-error);--m-price-ladder-warn: var(--m-warning);--m-price-ladder-gold: var(--m-gold)}.m-price-ladder{display:flex;flex-direction:column;gap:.75em;font-variant-numeric:tabular-nums}.m-price-ladder__signals{display:flex;flex-wrap:wrap;gap:.4em}.m-price-ladder__signal{display:inline-flex;align-items:center;gap:.4em;padding:.15em .65em .15em .5em;border:1px solid var(--m-border);border-radius:999px;font-size:.8em;font-weight:500}.m-price-ladder__signal:before{content:\"\";width:.55em;height:.55em;border-radius:50%;background:var(--_tone, var(--m-text-tertiary))}.m-price-ladder__signal.is-up{--_tone: var(--m-price-ladder-up)}.m-price-ladder__signal.is-down{--_tone: var(--m-price-ladder-down)}.m-price-ladder__signal.is-warn{--_tone: var(--m-price-ladder-warn)}.m-price-ladder__signal.is-gold{--_tone: var(--m-price-ladder-gold);border-color:var(--m-price-ladder-gold)}.m-price-ladder__line{display:grid;--_edge: 3em}.m-price-ladder__target{position:relative;left:clamp(var(--_edge),var(--_x),100% - var(--_edge));display:flex;flex-direction:column;align-items:center;width:max-content;max-width:50%;transform:translate(-50%);font-size:.8em}.m-price-ladder__target.is-up{--_dir: var(--m-price-ladder-up)}.m-price-ladder__target.is-down{--_dir: var(--m-price-ladder-down)}.m-price-ladder__target-name{color:var(--m-price-ladder-forward);font-style:italic}.m-price-ladder__target-value{color:var(--m-text);font-weight:600}.m-price-ladder__axis{position:relative;height:3.6em}.m-price-ladder__axis:before{content:\"\";position:absolute;inset:50% 0 auto;height:2px;background:var(--m-border);transform:translateY(-50%)}.m-price-ladder__range,.m-price-ladder__band,.m-price-ladder__connector,.m-price-ladder__tick,.m-price-ladder__target-tick,.m-price-ladder__cross{position:absolute;top:50%;transform:translateY(-50%)}.m-price-ladder__range{height:.5em;background:color-mix(in srgb,var(--m-text-tertiary) 18%,transparent)}.m-price-ladder__band{height:1.6em;border:1px dashed var(--m-price-ladder-forward);border-radius:.2em;background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--m-price-ladder-forward) 22%,transparent) 0 2px,transparent 2px 6px)}.m-price-ladder__connector{height:4px;border-radius:2px;opacity:.55}.m-price-ladder__connector.is-up{background:var(--m-price-ladder-up)}.m-price-ladder__connector.is-down{background:var(--m-price-ladder-down)}.m-price-ladder__cross{top:calc(50% + 1.2em);height:.45em;border:1.5px solid var(--m-text-tertiary);border-top:0}.m-price-ladder__cross.is-gold{border-color:var(--m-price-ladder-gold)}.m-price-ladder__cross.is-down{border-color:var(--m-price-ladder-down)}.m-price-ladder__cross.is-up{border-color:var(--m-price-ladder-up)}.m-price-ladder__tick{width:calc(1px + var(--_rank, 1) * .5px);height:calc(.5em + var(--_rank, 1) * .35em);margin-left:calc(var(--_rank, 1) * -.25px);background:var(--m-text-secondary);opacity:calc(.35 + var(--_rank, 1) * .16)}.m-price-ladder__tick.is-bound{width:2px;height:1.2em;background:var(--m-text-tertiary);opacity:1}.m-price-ladder__target-tick{height:2.4em;border-left:2px dashed var(--m-price-ladder-forward)}.m-price-ladder__target-tick.is-off-scale{width:.6em;height:.6em;margin-left:-.7em;border:0;border-top:2.5px solid var(--m-price-ladder-forward);border-right:2.5px solid var(--m-price-ladder-forward);transform:translateY(-50%) rotate(45deg)}.m-price-ladder__target-tick.is-off-scale.is-left{margin-left:.1em;transform:translateY(-50%) rotate(-135deg)}.m-price-ladder__current{position:absolute;inset:0 auto 0 var(--_x)}.m-price-ladder__current:after{content:\"\";position:absolute;top:50%;width:.9em;height:.9em;border:2px solid var(--m-background);border-radius:50%;background:var(--m-text);transform:translate(-50%,-50%)}.m-price-ladder__current-value{position:absolute;top:-.1em;font-size:.85em;font-weight:650;white-space:nowrap;transform:translate(-50%)}.m-price-ladder__labels{position:relative;height:calc(var(--_lanes, 1) * 3.4em)}.m-price-ladder__label{position:absolute;top:0;left:clamp(var(--_edge),var(--_x),100% - var(--_edge));display:flex;flex-direction:column;align-items:center;font-size:.75em;line-height:1.3;white-space:nowrap;transform:translate(-50%)}.m-price-ladder__label.is-lane-2{top:4.4em}.m-price-ladder__label.is-bound{color:var(--m-text-tertiary)}.m-price-ladder__label-name{color:var(--m-text-secondary)}.m-price-ladder__label-value{color:var(--m-text)}.m-price-ladder__label-gap{color:var(--m-text-tertiary)}.m-price-ladder__list{display:grid}.m-price-ladder__row{display:grid;grid-template-columns:minmax(0,1.2fr) auto 4.5em minmax(3em,1fr);gap:.6em;align-items:center;padding:.45em .1em;border-bottom:1px solid var(--m-border);font-size:.9em}.m-price-ladder__row:last-child{border-bottom:0}.m-price-ladder__row.is-current{font-weight:650}.m-price-ladder__row.is-target{color:var(--m-price-ladder-forward);font-style:italic}.m-price-ladder__row.is-bound{color:var(--m-text-tertiary)}.m-price-ladder__row-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m-price-ladder__row-value{text-align:end}.m-price-ladder__row-gap{text-align:end;color:var(--m-text-tertiary)}.m-price-ladder__row-track{position:relative;height:.6em}.m-price-ladder__row-track:before{content:\"\";position:absolute;inset:50% 0 auto;height:1px;background:var(--m-border)}.m-price-ladder__row-dot{position:absolute;top:50%;width:.4em;height:.4em;border-radius:50%;background:currentColor;transform:translate(-50%,-50%)}.m-price-ladder__empty{padding:1em;color:var(--m-text-tertiary);font-size:1.25em;text-align:center}\n"]
35178
+ }]
35179
+ }],
35180
+ ctorParameters: () => [],
35181
+ propDecorators: {
35182
+ value: [{
35183
+ type: i0.Input,
35184
+ args: [{
35185
+ isSignal: true,
35186
+ alias: "value",
35187
+ required: false
35188
+ }]
35189
+ }],
35190
+ valueLabel: [{
35191
+ type: i0.Input,
35192
+ args: [{
35193
+ isSignal: true,
35194
+ alias: "valueLabel",
35195
+ required: false
35196
+ }]
35197
+ }],
35198
+ target: [{
35199
+ type: i0.Input,
35200
+ args: [{
35201
+ isSignal: true,
35202
+ alias: "target",
35203
+ required: false
35204
+ }]
35205
+ }],
35206
+ targetLow: [{
35207
+ type: i0.Input,
35208
+ args: [{
35209
+ isSignal: true,
35210
+ alias: "targetLow",
35211
+ required: false
35212
+ }]
35213
+ }],
35214
+ targetHigh: [{
35215
+ type: i0.Input,
35216
+ args: [{
35217
+ isSignal: true,
35218
+ alias: "targetHigh",
35219
+ required: false
35220
+ }]
35221
+ }],
35222
+ targetLabel: [{
35223
+ type: i0.Input,
35224
+ args: [{
35225
+ isSignal: true,
35226
+ alias: "targetLabel",
35227
+ required: false
35228
+ }]
35229
+ }],
35230
+ targetNote: [{
35231
+ type: i0.Input,
35232
+ args: [{
35233
+ isSignal: true,
35234
+ alias: "targetNote",
35235
+ required: false
35236
+ }]
35237
+ }],
35238
+ maxSpanPct: [{
35239
+ type: i0.Input,
35240
+ args: [{
35241
+ isSignal: true,
35242
+ alias: "maxSpanPct",
35243
+ required: false
35244
+ }]
35245
+ }],
35246
+ variant: [{
35247
+ type: i0.Input,
35248
+ args: [{
35249
+ isSignal: true,
35250
+ alias: "variant",
35251
+ required: false
35252
+ }]
35253
+ }],
35254
+ symbol: [{
35255
+ type: i0.Input,
35256
+ args: [{
35257
+ isSignal: true,
35258
+ alias: "symbol",
35259
+ required: false
35260
+ }]
35261
+ }],
35262
+ signals: [{
35263
+ type: i0.Input,
35264
+ args: [{
35265
+ isSignal: true,
35266
+ alias: "signals",
35267
+ required: false
35268
+ }]
35269
+ }],
35270
+ crossFrom: [{
35271
+ type: i0.Input,
35272
+ args: [{
35273
+ isSignal: true,
35274
+ alias: "crossFrom",
35275
+ required: false
35276
+ }]
35277
+ }],
35278
+ crossTo: [{
35279
+ type: i0.Input,
35280
+ args: [{
35281
+ isSignal: true,
35282
+ alias: "crossTo",
35283
+ required: false
35284
+ }]
35285
+ }],
35286
+ crossTone: [{
35287
+ type: i0.Input,
35288
+ args: [{
35289
+ isSignal: true,
35290
+ alias: "crossTone",
35291
+ required: false
35292
+ }]
35293
+ }],
35294
+ markTags: [{
35295
+ type: i0.ContentChildren,
35296
+ args: [i0.forwardRef(() => PriceLadderMarkComponent), { isSignal: true }]
35297
+ }],
35298
+ signalTags: [{
35299
+ type: i0.ContentChildren,
35300
+ args: [i0.forwardRef(() => PriceLadderSignalComponent), { isSignal: true }]
35301
+ }]
35302
+ }
35303
+ });
35304
+ const span = (a, b) => ({
35305
+ left: Math.min(a, b),
35306
+ width: Math.abs(b - a)
35307
+ });
34289
35308
  const DOCS_FOLDER = "docs";
34290
35309
  const LIBRARY_TIER = "one";
34291
35310
  function docAssetCandidates({ name, lang, defaultLang }) {
@@ -53952,6 +54971,6 @@ i0.ɵɵngDeclareClassMetadata({
53952
54971
  }]
53953
54972
  }
53954
54973
  });
53955
- export { ACCESS_DOMAINS, APP_CONTEXT_REF, APP_LINK, APP_LOGO_ICON, APP_LOGO_SOURCE, APP_THEME_COLOR, ASSET_BASE_URL, AUDIENCE_ICONS, AUDIENCE_LEVELS, AccordionBodyDirective, AccordionComponent, AccordionGroupComponent, ActionComponent, AnimatedGraphsComponent, AppAvailability, AppCardComponent, AppIdentityService, AppLogoComponent, AppLogoState, AppRelationType, AppTileComponent, AssetStore, AssetUrlPipe, Assets, AudiencePickerBoxComponent, AudiencePickerComponent, AuthActivityPageComponent, AuthApiService, AuthStore, AutosizeDirective, BadgeComponent, BandingComponent, BaseArrayInputComponent, BaseRootWebComponent, BaseWebComponent, BrowserLocaleService, ButtonComponent, ButtonGroupComponent, CALLING_APP_HEADER, COMPONENT_INPUT_REGISTRY, CardComponent, CardWrapperComponent, CarouselComponent, ChartComponent, ChatBubbleComponent, CheckboxGroupComponent, CheckboxInputComponent, ClearableInputComponent, ClipboardService, ColComponent, ColorPickerInputComponent, CommentItemComponent, CommentsApiService, CommentsComponent, CommentsStore, CompactNumberPipe, ComponentInputComponent, ComponentStepperComponent, ConfigComponent, ConfirmComponent, ContextMenuComponent, CustomIconClass, CustomIconEditComponent, DEFAULT_AUDIENCE, DEFAULT_DENIAL, DEFAULT_DOC_ALIGN, DEFAULT_DOC_DENSITY, DEFAULT_DOC_VARIANT, DEFAULT_FILTER_RANGE_MODE, DEFAULT_FILTER_VARIANT, DEFAULT_NAV_PARAM, DEFAULT_NAV_SEGMENT, DEFAULT_SECTION_CHART_RANGES, DEFAULT_SIZE, DOCK_MIN_PAGE_REMAINDER, DOCS_FOLDER, DOC_ACTION_ICONS, DOC_ALIGNS, DOC_DENSITIES, DOC_EDIT_ACTIONS, DOC_TOOLBAR_GROUPS, DOC_VARIANTS, DashboardCardComponent, DateInputComponent, DatePickerComponent, DeviceService, DocComponent, DocEditorComponent, DomService, Domain, DotGridComponent, DragListDirective, DragListItemDirective, DraggableDirective, DropdownInputComponent, FILTER_GROUP_CONTEXT, FILTER_RANGE_MODES, FILTER_VARIANTS, FLEX_VARIANTS, FOLDER_PICK_LISTENER, FORM_ASSET_FOLDER, FileService, FileUploadDirective, FileUploadInputComponent, FlexComponent, FlexItemComponent, FormGroupComponent, FrameComponent, FreezeService, GRID_BREAKPOINTS, GetNavService, HOST_SESSION, HeaderComponent, HeatSwatchComponent, HighlightDirective, HttpService, HttpSharingClient, ICON_SOURCE, IS_DESIGN_MODE, IS_SIDE_PANEL, IconComponent, ImgComponent, InputType, InstrumentScoreComponent, InterceptorObservables, JumbotronComponent, KeyValueComponent, LAYOUT_ASSET_FOLDER, LOADING_ACTIONS_REF, LOGIN_COMPONENT, LOGIN_STORE, LOGO_GLYPH_MAX_BYTES, LanguageComponent, ListComponent, LogoComponent, LogoGlyphInputComponent, MAG_SOCKET_EVENT, MHeroColorDirective, MHeroComponent, MODAL_REF, MODAL_STORE_REF, MOUNT_STATIC_SEGMENT, MOUNT_TOKEN, MRefDirective, MStepComponent, MURL_PARAM, MURL_SEP, ManifestEnrichmentService, MarginDirective, MenuComponent, ModalDirective, ModalRef, ModalStore, MoneyPipe, MultiRangeInputComponent, MultiselectInputComponent, MurlUrlSerializer, NAV_DEFAULT_MURL, NAV_ID_SEP, NAV_MAIN_BUTTONS, NAV_SEGMENT_RE, NAV_STORE_REF, NAV_WC_COMPONENTS, NAV_WIDGET_MAP, NavComponent, NavDetailsComponent, NavHeaderComponent, NavMenuComponent, NavStore, NavTrailComponent, NothingComponent, NotificationElementComponent, NotificationGroupComponent, NotificationPopupComponent, NotificationService, NotificationStore, NotificationType, NotificationWidgetComponent, ONE_ASSET_BASE_URL, OPTIONS_SOURCE, OVERLAY_WIDGETS, OneApp, OptionsSourceDirective, OverlayBodyComponent, OverlayRef, OverlayService, PLATFORM_BUTTON_NAV_IDS, PLATFORM_EXTENSIBLE_NAV_IDS, PLATFORM_NAV_MAP, PLATFORM_ROOT_CHILDREN, PLUGIN_FALLBACK_LANG, PLUGIN_OUTPUT_EVENT, PLUGIN_SCREENS, PaddingDirective, PaginationComponent, PanelComponent, PercentagePipe, PlaygroundComponent, PluginComponent, PluginInputComponent, PluginOutputComponent, PositionDirective, PwaInstallComponent, RECENT_SEARCH_LIMIT, REMOTE_BOOT_TIMEOUT_MS, REMOTE_PAGE_RELOAD, ROOT_NAV, RadioGroupComponent, RadioInputComponent, RangeInputComponent, RatingInputComponent, ReactiveElementComponent, RemoteComponent, RemoteLoaderService, ResizeElementComponent, RouteContainer, RowComponent, SCORE_TONE_COUNT, SEARCH_ANSWER_KEY, SEARCH_LABEL_KEY, SEARCH_QUERY, SEARCH_RESULTS_EVENT, SECTION_ACCORDION_GROUP, SECTION_CHART_CUSTOM_RANGE, SECTION_CHART_SCALES, SECTION_FORM_CONTEXT, SECTION_TABLE_VARIANTS, SHARED_ICONS, SHARING_CLIENT, SIZE_CONTEXT, SPACING_INWARD, SPLASH_ID, ScoreComponent, ScoreSetComponent, ScoreSetItemComponent, ScrollComponent, ScrollService, SearchPanelComponent, SearchStore, SearchUserPanelComponent, SectionAccordionDirective, SectionAccordionGroupDirective, SectionBackComponent, SectionBadgesComponent, SectionButtonGroupComponent, SectionCardComponent, SectionCarouselComponent, SectionChartComponent, SectionChartSeriesComponent, SectionComponent, SectionFilterComponent, SectionFilterGroupComponent, SectionFilterMenuComponent, SectionFilterPanelComponent, SectionFilterRangePanelComponent, SectionFooterComponent, SectionFormComponent, SectionFormItemComponent, SectionHeaderComponent, SectionHeroComponent, SectionPaginationComponent, SectionSearchComponent, SectionStepperComponent, SectionTableCellComponent, SectionTableComponent, SectionTableRowComponent, SectionTableSortDirection, SectionTableSortPipe, SectionTabsComponent, SectionToggleComponent, SectionToggleItemDirective, SelectableCardInputComponent, SelectorDirective, SettingsSearchBarComponent, SettingsSearchService, ShapeComponent, SharedStoreRegistry, SidePanelDirective, SignColorPipe, Size, SocketStore, SortComponent, StatComponent, StepComponent, StepperComponent, StepsComponent, StorageService, StrokeLinecap, StrokeLinejoin, SummaryComponent, SvgGeneratorComponent, SvgGeneratorService, SvgService, TOTAL_COLUMNS, TRANSLATION_SOURCE, TableComponent, TechnicalMeterComponent, TextInputComponent, TextOutputComponent, TextareaInputComponent, ThemeComponent, ThemeDataService, ThemeService, ThemeStore, TimeAgoPipe, TimelineComponent, ToListPipe, ToggleButtonComponent, ToggleInputComponent, ToggleRadioInputComponent, ToolTipDirective, TooltipComponent, TranslatePipe, TranslateService, TreeGridComponent, URL_SEP, USER_STORE_REF, USER_TAB_MAP, UniverseComponent, UserApiService, UserAvatarComponent, UserComponent, UserNavComponent, UserSettingsComponent, UserStore, WC_BUNDLE, WC_NAVIGATE_EVENT, WC_ROUTE_CHANGED_EVENT, WC_SEARCH_GROUPS, WIN_USER_TAB_HOOK, WIN_USER_TAB_KEY, WatermarkComponent, WcRouterStore, WrapperInputComponent, actionName, activeElementWithin, allowedCodes, anchorNavId, appColorBrand, appLogoShadowColor, appThemeColorFactory, applyColorsToElement, applyDocEdit, assetOptions, baseUnderHost, bootstrapMagApp, bootstrapPwaInstall, browserLocale, buildWcBaseUrl, calculateLuminance, calculateRanks, categoricalTone, cellText, checkDoc, checkFilterCondition, childNavId, claimDenial, classListSignal, coerceSize, cornerEdge, cornerSide, createLoadingState, createMap, createPlatformNavMap, createPluginElement, definePluginScreens, definedWcBundleOf, definedWcTierOf, deriveAvatarGradient, deriveContrastColor, deriveOppositeColor, derivePropertyName, docActionKey, docAssetCandidates, docProblemKey, docRemotePath, emailValidation, enumValue, escapeHtml, evaluate, evaluateBool, existsInMap, exposeScreens, exposedScreensOf, fieldBoolean, fieldNumber, fieldString, filterHoldsList, filterHoldsOneBound, filterHoldsOptions, filterHoldsRange, filterList, filterNumber, filterNumberList, filterOne, filterPanelOf, filterPanelWidth, filterRange, filterTreeGridRows, filterValueList, filterValues, flattenTreeGridRows, formatBadgeCount, fullName, generateClipPath, generateTransform, getClassList, getFromMap, getProperty, getScrollParent, getTierFromPreviewPath, getTreeGridRow, getUniqueId, getValue, hasErrorComputed, heatColor, heatShare, hexToRgb, hslToRgb, initMagmoniumApp, initialNotificationState, initialState, initials, injectAuthenticate, injectDefaultDenial, injectInstallApp, injectParentSize, injectScrollSticky, isBootRedirect, isButtonName, isCancelledComputed, isExtensiblePlatformNavId, isJson, isLightAppColor, isLoadingComputed, isLocalhost, isNavCountConfig, isNavInstanceConfig, isNavMenuConfig, isNavRowsConfig, isNavVisibilityConfig, isPlatformNavId, isPlatformPanelNavId, isReadableOn, isScoreStale, isSize, isTierPreview, isUrlLocalhost, isValidNavId, isValidNavSegment, isWebComponent, linkToId, linkToNav, loadingActions, logoGlyphMaskUrl, mInterceptor, manualValidation, matchFieldValidation, matchMount, maxLengthValidation, maxValidation, mergePlatformNav, mergeUnique, mergeUniqueBy, mergeUniqueWith, minAgeValidation, minLengthValidation, minValidation, miniMarkInlineToHtml, miniMarkToHtml, mountFor, mountPatternProblem, mountPatternText, mountSegmentOf, mountTokenOf, navIdChain, navIdFor, navIdSegment, navIdToRoutePath, navIdToSegments, navParamOf, navTailMatcher, navToId, navVisibilityGuard, nextSectionTableSort, normalizeAppColor, normalizeAssetOptions, notExistsInMap, offsetOfLine, outletPathOf, outletSegmentsOf, paintAppColor, parentNavId, parseAddress, parseColor, parseMountPattern, parsePatternNames, patternValidation, patternsValidation, permissionRefusal, pickCount, pickSupportedLanguage, picksMembers, platformNavWidgets, pluginTag, presetDefaultOption, privateGuard, processImageToSvg, provideAppContext, provideMagAppConfig, provideMagWcConfig, provideMagWcRoutes, provideModalComponents, provideMurlUrlSerializer, provideNavWidgets, provideOverlayWidgets, providePlatformNavWidgets, providePluginRuntime, provideSearch, provideSizeContext, provideUserTabs, publicGuard, readChartPoints, readFieldPatterns, readableAppColor, rebuildLogoGlyph, recordDefinedWcTier, registerSessionRenewal, remoteOutletRoute, renderAddress, renderDocument, requiredValidation, resolveConfigAsset, resolveIconSize, resolvePallet, resolvePatternRules, resolveSize, resolveSpacing, rgbToHex, rgbToHsl, rowHasChildren, samePatterns, scoreBand, scoreStanding, sectionTableColumnId, sectionTableColumnWidths, sectionTableFrozenCount, segmentsToNavId, setProperty, setTreeGridChildren, setWcLocalPort, setWcTier, settingsWidgets, shouldShowBadge, sortSectionTableRows, splashHtml, splitNavId, splitOnMatch, splitPath, stringToColor, tailRouteOf, toAttrBool, toAttrNumber, toCssLength, toHostNavId, toLength, toLocalNavId, toggleGroup, toggleTreeGridRow, toggleUid, unfetchedPlatformNav, ungroupedDocActions, urlValidation, wcLocalBaseOf, wcTierOf, withLevel };
54974
+ export { ACCESS_DOMAINS, APP_CONTEXT_REF, APP_LINK, APP_LOGO_ICON, APP_LOGO_SOURCE, APP_THEME_COLOR, ASSET_BASE_URL, AUDIENCE_ICONS, AUDIENCE_LEVELS, AccordionBodyDirective, AccordionComponent, AccordionGroupComponent, ActionComponent, AnimatedGraphsComponent, AppAvailability, AppCardComponent, AppIdentityService, AppLogoComponent, AppLogoState, AppRelationType, AppTileComponent, AssetStore, AssetUrlPipe, Assets, AudiencePickerBoxComponent, AudiencePickerComponent, AuthActivityPageComponent, AuthApiService, AuthStore, AutosizeDirective, BadgeComponent, BandingComponent, BaseArrayInputComponent, BaseRootWebComponent, BaseWebComponent, BrowserLocaleService, ButtonComponent, ButtonGroupComponent, CALLING_APP_HEADER, COMPONENT_INPUT_REGISTRY, CardComponent, CardWrapperComponent, CarouselComponent, ChartComponent, ChatBubbleComponent, CheckboxGroupComponent, CheckboxInputComponent, ClearableInputComponent, ClipboardService, ColComponent, ColorPickerInputComponent, CommentItemComponent, CommentsApiService, CommentsComponent, CommentsStore, CompactNumberPipe, ComponentInputComponent, ComponentStepperComponent, ConfigComponent, ConfirmComponent, ContextMenuComponent, CustomIconClass, CustomIconEditComponent, DEFAULT_AUDIENCE, DEFAULT_DENIAL, DEFAULT_DOC_ALIGN, DEFAULT_DOC_DENSITY, DEFAULT_DOC_VARIANT, DEFAULT_FILTER_RANGE_MODE, DEFAULT_FILTER_VARIANT, DEFAULT_NAV_PARAM, DEFAULT_NAV_SEGMENT, DEFAULT_SECTION_CHART_RANGES, DEFAULT_SIZE, DOCK_MIN_PAGE_REMAINDER, DOCS_FOLDER, DOC_ACTION_ICONS, DOC_ALIGNS, DOC_DENSITIES, DOC_EDIT_ACTIONS, DOC_TOOLBAR_GROUPS, DOC_VARIANTS, DashboardCardComponent, DateInputComponent, DatePickerComponent, DeviceService, DocComponent, DocEditorComponent, DomService, Domain, DotGridComponent, DragListDirective, DragListItemDirective, DraggableDirective, DropdownInputComponent, FILTER_GROUP_CONTEXT, FILTER_RANGE_MODES, FILTER_VARIANTS, FLEX_VARIANTS, FOLDER_PICK_LISTENER, FORM_ASSET_FOLDER, FileService, FileUploadDirective, FileUploadInputComponent, FlexComponent, FlexItemComponent, FormGroupComponent, FrameComponent, FreezeService, GRID_BREAKPOINTS, GetNavService, HOST_SESSION, HeaderComponent, HeatSwatchComponent, HighlightDirective, HttpService, HttpSharingClient, ICON_SOURCE, IS_DESIGN_MODE, IS_SIDE_PANEL, IconComponent, ImgComponent, InputType, InstrumentScoreComponent, InterceptorObservables, JumbotronComponent, KeyValueComponent, LAYOUT_ASSET_FOLDER, LOADING_ACTIONS_REF, LOGIN_COMPONENT, LOGIN_STORE, LOGO_GLYPH_MAX_BYTES, LanguageComponent, ListComponent, LogoComponent, LogoGlyphInputComponent, MAG_SOCKET_EVENT, MHeroColorDirective, MHeroComponent, MODAL_REF, MODAL_STORE_REF, MOUNT_STATIC_SEGMENT, MOUNT_TOKEN, MRefDirective, MStepComponent, MURL_PARAM, MURL_SEP, ManifestEnrichmentService, MarginDirective, MenuComponent, ModalDirective, ModalRef, ModalStore, MoneyPipe, MultiRangeInputComponent, MultiselectInputComponent, MurlUrlSerializer, NAV_DEFAULT_MURL, NAV_ID_SEP, NAV_MAIN_BUTTONS, NAV_SEGMENT_RE, NAV_STORE_REF, NAV_WC_COMPONENTS, NAV_WIDGET_MAP, NavComponent, NavDetailsComponent, NavHeaderComponent, NavMenuComponent, NavStore, NavTrailComponent, NothingComponent, NotificationElementComponent, NotificationGroupComponent, NotificationPopupComponent, NotificationService, NotificationStore, NotificationType, NotificationWidgetComponent, ONE_ASSET_BASE_URL, OPTIONS_SOURCE, OVERLAY_WIDGETS, OneApp, OptionsSourceDirective, OverlayBodyComponent, OverlayRef, OverlayService, PLATFORM_BUTTON_NAV_IDS, PLATFORM_EXTENSIBLE_NAV_IDS, PLATFORM_NAV_MAP, PLATFORM_ROOT_CHILDREN, PLUGIN_FALLBACK_LANG, PLUGIN_OUTPUT_EVENT, PLUGIN_SCREENS, PRICE_LADDER_LEVELS, PRICE_LADDER_RULES, PaddingDirective, PaginationComponent, PanelComponent, PercentagePipe, PlaygroundComponent, PluginComponent, PluginInputComponent, PluginOutputComponent, PositionDirective, PriceLadderComponent, PriceLadderMarkComponent, PriceLadderSignalComponent, PwaInstallComponent, RECENT_SEARCH_LIMIT, REMOTE_BOOT_TIMEOUT_MS, REMOTE_PAGE_RELOAD, ROOT_NAV, RadioGroupComponent, RadioInputComponent, RangeInputComponent, RatingInputComponent, ReactiveElementComponent, RemoteComponent, RemoteLoaderService, ResizeElementComponent, RouteContainer, RowComponent, SCORE_TONE_COUNT, SEARCH_ANSWER_KEY, SEARCH_LABEL_KEY, SEARCH_QUERY, SEARCH_RESULTS_EVENT, SECTION_ACCORDION_GROUP, SECTION_CHART_CUSTOM_RANGE, SECTION_CHART_SCALES, SECTION_FORM_CONTEXT, SECTION_TABLE_VARIANTS, SHARED_ICONS, SHARING_CLIENT, SIZE_CONTEXT, SPACING_INWARD, SPLASH_ID, ScoreComponent, ScoreSetComponent, ScoreSetItemComponent, ScrollComponent, ScrollService, SearchPanelComponent, SearchStore, SearchUserPanelComponent, SectionAccordionDirective, SectionAccordionGroupDirective, SectionBackComponent, SectionBadgesComponent, SectionButtonGroupComponent, SectionCardComponent, SectionCarouselComponent, SectionChartComponent, SectionChartSeriesComponent, SectionComponent, SectionFilterComponent, SectionFilterGroupComponent, SectionFilterMenuComponent, SectionFilterPanelComponent, SectionFilterRangePanelComponent, SectionFooterComponent, SectionFormComponent, SectionFormItemComponent, SectionHeaderComponent, SectionHeroComponent, SectionPaginationComponent, SectionSearchComponent, SectionStepperComponent, SectionTableCellComponent, SectionTableComponent, SectionTableRowComponent, SectionTableSortDirection, SectionTableSortPipe, SectionTabsComponent, SectionToggleComponent, SectionToggleItemDirective, SelectableCardInputComponent, SelectorDirective, SettingsSearchBarComponent, SettingsSearchService, ShapeComponent, SharedStoreRegistry, SidePanelDirective, SignColorPipe, Size, SocketStore, SortComponent, StatComponent, StepComponent, StepperComponent, StepsComponent, StorageService, StrokeLinecap, StrokeLinejoin, SummaryComponent, SvgGeneratorComponent, SvgGeneratorService, SvgService, TOTAL_COLUMNS, TRANSLATION_SOURCE, TableComponent, TechnicalMeterComponent, TextInputComponent, TextOutputComponent, TextareaInputComponent, ThemeComponent, ThemeDataService, ThemeService, ThemeStore, TimeAgoPipe, TimelineComponent, ToListPipe, ToggleButtonComponent, ToggleInputComponent, ToggleRadioInputComponent, ToolTipDirective, TooltipComponent, TranslatePipe, TranslateService, TreeGridComponent, URL_SEP, USER_STORE_REF, USER_TAB_MAP, UniverseComponent, UserApiService, UserAvatarComponent, UserComponent, UserNavComponent, UserSettingsComponent, UserStore, WC_BUNDLE, WC_NAVIGATE_EVENT, WC_ROUTE_CHANGED_EVENT, WC_SEARCH_GROUPS, WIN_USER_TAB_HOOK, WIN_USER_TAB_KEY, WatermarkComponent, WcRouterStore, WrapperInputComponent, actionName, activeElementWithin, allowedCodes, anchorNavId, appColorBrand, appLogoShadowColor, appThemeColorFactory, applyColorsToElement, applyDocEdit, assetOptions, baseUnderHost, bootstrapMagApp, bootstrapPwaInstall, browserLocale, buildWcBaseUrl, calculateLuminance, calculateRanks, categoricalTone, cellText, checkDoc, checkFilterCondition, childNavId, claimDenial, classListSignal, coerceSize, cornerEdge, cornerSide, createLoadingState, createMap, createPlatformNavMap, createPluginElement, definePluginScreens, definedWcBundleOf, definedWcTierOf, deriveAvatarGradient, deriveContrastColor, deriveOppositeColor, derivePropertyName, docActionKey, docAssetCandidates, docProblemKey, docRemotePath, emailValidation, enumValue, escapeHtml, evaluate, evaluateBool, existsInMap, exposeScreens, exposedScreensOf, fieldBoolean, fieldNumber, fieldString, filterHoldsList, filterHoldsOneBound, filterHoldsOptions, filterHoldsRange, filterList, filterNumber, filterNumberList, filterOne, filterPanelOf, filterPanelWidth, filterRange, filterTreeGridRows, filterValueList, filterValues, flattenTreeGridRows, formatBadgeCount, formatGap, fullName, gapPct, generateClipPath, generateTransform, getClassList, getFromMap, getProperty, getScrollParent, getTierFromPreviewPath, getTreeGridRow, getUniqueId, getValue, hasErrorComputed, heatColor, heatShare, hexToRgb, hslToRgb, initMagmoniumApp, initialNotificationState, initialState, initials, injectAuthenticate, injectDefaultDenial, injectInstallApp, injectParentSize, injectScrollSticky, isBootRedirect, isButtonName, isCancelledComputed, isExtensiblePlatformNavId, isJson, isLadderRule, isLightAppColor, isLoadingComputed, isLocalhost, isNavCountConfig, isNavInstanceConfig, isNavMenuConfig, isNavRowsConfig, isNavVisibilityConfig, isPlatformNavId, isPlatformPanelNavId, isReadableOn, isScoreStale, isSize, isTierPreview, isUrlLocalhost, isValidNavId, isValidNavSegment, isWebComponent, ladderLevelOf, ladderScale, ladderSignals, layoutLanes, linkToId, linkToNav, loadingActions, logoGlyphMaskUrl, mInterceptor, manualValidation, matchFieldValidation, matchMount, maxLengthValidation, maxValidation, mergePlatformNav, mergeUnique, mergeUniqueBy, mergeUniqueWith, minAgeValidation, minLengthValidation, minValidation, miniMarkInlineToHtml, miniMarkToHtml, mountFor, mountPatternProblem, mountPatternText, mountSegmentOf, mountTokenOf, navIdChain, navIdFor, navIdSegment, navIdToRoutePath, navIdToSegments, navParamOf, navTailMatcher, navToId, navVisibilityGuard, nextSectionTableSort, normalizeAppColor, normalizeAssetOptions, notExistsInMap, offsetOfLine, outletPathOf, outletSegmentsOf, paintAppColor, parentNavId, parseAddress, parseColor, parseMountPattern, parsePatternNames, patternValidation, patternsValidation, permissionRefusal, pickCount, pickSupportedLanguage, picksMembers, platformNavWidgets, pluginTag, presetDefaultOption, privateGuard, processImageToSvg, provideAppContext, provideMagAppConfig, provideMagWcConfig, provideMagWcRoutes, provideModalComponents, provideMurlUrlSerializer, provideNavWidgets, provideOverlayWidgets, providePlatformNavWidgets, providePluginRuntime, provideSearch, provideSizeContext, provideUserTabs, publicGuard, readChartPoints, readFieldPatterns, readableAppColor, rebuildLogoGlyph, recordDefinedWcTier, registerSessionRenewal, remoteOutletRoute, renderAddress, renderDocument, requiredValidation, resolveConfigAsset, resolveIconSize, resolvePallet, resolvePatternRules, resolveSize, resolveSpacing, rgbToHex, rgbToHsl, rowHasChildren, samePatterns, scoreBand, scoreStanding, sectionTableColumnId, sectionTableColumnWidths, sectionTableFrozenCount, segmentsToNavId, setProperty, setTreeGridChildren, setWcLocalPort, setWcTier, settingsWidgets, shouldShowBadge, sortSectionTableRows, splashHtml, splitNavId, splitOnMatch, splitPath, stringToColor, tailRouteOf, toAttrBool, toAttrNumber, toCssLength, toHostNavId, toLength, toLocalNavId, toggleGroup, toggleTreeGridRow, toggleUid, unfetchedPlatformNav, ungroupedDocActions, urlValidation, wcLocalBaseOf, wcTierOf, withLevel };
53956
54975
 
53957
54976
  //# sourceMappingURL=magmonium-one.mjs.map