@xenknight/framework7 0.0.3 → 0.0.6

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 (92) hide show
  1. package/components/actions/actions-ios.less +22 -15
  2. package/components/actions/actions-rtl.css +1 -1
  3. package/components/actions/actions-vars.less +4 -7
  4. package/components/actions/actions.css +1 -1
  5. package/components/actions/actions.less +0 -3
  6. package/components/app/app-class.d.ts +2 -0
  7. package/components/app/app-class.js +10 -2
  8. package/components/app/app-vars.less +36 -0
  9. package/components/block/block-vars.less +6 -6
  10. package/components/button/button-vars.less +11 -10
  11. package/components/card/card-rtl.css +1 -1
  12. package/components/card/card-vars.less +5 -5
  13. package/components/card/card.css +1 -1
  14. package/components/dialog/dialog-class.js +6 -3
  15. package/components/dialog/dialog-ios.less +10 -34
  16. package/components/dialog/dialog-md.less +2 -22
  17. package/components/dialog/dialog-rtl.css +1 -1
  18. package/components/dialog/dialog-vars.less +8 -10
  19. package/components/dialog/dialog.css +1 -1
  20. package/components/dialog/dialog.js +3 -3
  21. package/components/dialog/dialog.less +6 -25
  22. package/components/list/list-vars.less +7 -5
  23. package/components/list/list.less +1 -1
  24. package/components/notification/notification-class.js +6 -6
  25. package/components/notification/notification-ios.less +3 -8
  26. package/components/notification/notification-md.less +1 -20
  27. package/components/notification/notification-rtl.css +1 -1
  28. package/components/notification/notification-vars.less +13 -16
  29. package/components/notification/notification.css +1 -1
  30. package/components/notification/notification.less +13 -1
  31. package/components/page/page-ios.less +4 -4
  32. package/components/page/page-md.less +2 -2
  33. package/components/popover/popover-class.js +21 -58
  34. package/components/popover/popover-ios.less +66 -2
  35. package/components/popover/popover-md.less +2 -27
  36. package/components/popover/popover-rtl.css +1 -1
  37. package/components/popover/popover-vars.less +2 -3
  38. package/components/popover/popover.css +1 -1
  39. package/components/popover/popover.d.ts +0 -2
  40. package/components/popover/popover.js +0 -1
  41. package/components/popover/popover.less +28 -50
  42. package/components/range/range-class.js +34 -27
  43. package/components/range/range-ios.less +60 -0
  44. package/components/range/range-md.less +67 -4
  45. package/components/range/range-rtl.css +1 -1
  46. package/components/range/range-vars.less +18 -13
  47. package/components/range/range.css +1 -1
  48. package/components/range/range.d.ts +3 -1
  49. package/components/range/range.less +11 -24
  50. package/components/swipeout/swipeout-ios.less +37 -0
  51. package/components/swipeout/swipeout-md.less +56 -0
  52. package/components/swipeout/swipeout-rtl.css +1 -1
  53. package/components/swipeout/swipeout-vars.less +13 -2
  54. package/components/swipeout/swipeout.css +1 -1
  55. package/components/swipeout/swipeout.js +99 -23
  56. package/components/swipeout/swipeout.less +20 -44
  57. package/components/toast/toast-class.js +2 -2
  58. package/components/toast/toast-ios.less +2 -0
  59. package/components/toast/toast-rtl.css +1 -1
  60. package/components/toast/toast-vars.less +2 -4
  61. package/components/toast/toast.css +1 -1
  62. package/components/toast/toast.less +1 -1
  63. package/components/toggle/toggle-class.js +4 -8
  64. package/components/toggle/toggle-ios.less +68 -50
  65. package/components/toggle/toggle-rtl.css +1 -1
  66. package/components/toggle/toggle-vars.less +2 -2
  67. package/components/toggle/toggle.css +1 -1
  68. package/framework7-bundle-rtl.css +551 -452
  69. package/framework7-bundle-rtl.min.css +5 -5
  70. package/framework7-bundle.css +551 -452
  71. package/framework7-bundle.esm.js +2 -2
  72. package/framework7-bundle.js +2460 -858
  73. package/framework7-bundle.js.map +1 -1
  74. package/framework7-bundle.less +2 -2
  75. package/framework7-bundle.min.css +5 -5
  76. package/framework7-bundle.min.js +3 -3
  77. package/framework7-bundle.min.js.map +1 -1
  78. package/framework7-lite-bundle.esm.js +2 -2
  79. package/framework7-lite.esm.js +2 -2
  80. package/framework7-rtl.css +63 -29
  81. package/framework7-rtl.min.css +4 -4
  82. package/framework7.css +63 -29
  83. package/framework7.esm.js +2 -2
  84. package/framework7.less +2 -2
  85. package/framework7.min.css +4 -4
  86. package/less/mixins.less +8 -0
  87. package/package.json +1 -1
  88. package/shared/get-support.d.ts +0 -6
  89. package/shared/get-support.js +1 -20
  90. package/shared/material-color-utils.js +2153 -679
  91. package/shared/material-colors.js +97 -17
  92. package/shared/utils.js +18 -6
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Framework7 0.0.2
2
+ * Framework7 0.0.5
3
3
  * Full featured mobile HTML framework for building iOS & Android apps
4
4
  * https://framework7.io/
5
5
  *
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * Released under the MIT License
9
9
  *
10
- * Released on: July 26, 2025
10
+ * Released on: December 19, 2025
11
11
  */
12
12
 
13
13
  (function (global, factory) {
@@ -1533,14 +1533,11 @@
1533
1533
  function clampDouble(min, max, input) {
1534
1534
  return input < min ? min : input > max ? max : input;
1535
1535
  }
1536
- function sanitizeDegreesDouble(degrees) {
1536
+ function sanitizeDegreesInt(degrees) {
1537
1537
  return (degrees %= 360) < 0 && (degrees += 360), degrees;
1538
1538
  }
1539
- function rotationDirection(from, to) {
1540
- return sanitizeDegreesDouble(to - from) <= 180 ? 1 : -1;
1541
- }
1542
- function differenceDegrees(a, b) {
1543
- return 180 - Math.abs(Math.abs(a - b) - 180);
1539
+ function sanitizeDegreesDouble(degrees) {
1540
+ return (degrees %= 360) < 0 && (degrees += 360), degrees;
1544
1541
  }
1545
1542
  function matrixMultiply(row, matrix) {
1546
1543
  return [row[0] * matrix[0][0] + row[1] * matrix[0][1] + row[2] * matrix[0][2], row[0] * matrix[1][0] + row[1] * matrix[1][1] + row[2] * matrix[1][2], row[0] * matrix[2][0] + row[1] * matrix[2][1] + row[2] * matrix[2][2]];
@@ -1573,6 +1570,20 @@
1573
1570
  function xyzFromArgb(argb) {
1574
1571
  return matrixMultiply([linearized(redFromArgb(argb)), linearized(greenFromArgb(argb)), linearized(blueFromArgb(argb))], SRGB_TO_XYZ);
1575
1572
  }
1573
+ function labFromArgb(argb) {
1574
+ const linearR = linearized(redFromArgb(argb)),
1575
+ linearG = linearized(greenFromArgb(argb)),
1576
+ linearB = linearized(blueFromArgb(argb)),
1577
+ matrix = SRGB_TO_XYZ,
1578
+ x = matrix[0][0] * linearR + matrix[0][1] * linearG + matrix[0][2] * linearB,
1579
+ y = matrix[1][0] * linearR + matrix[1][1] * linearG + matrix[1][2] * linearB,
1580
+ z = matrix[2][0] * linearR + matrix[2][1] * linearG + matrix[2][2] * linearB,
1581
+ yNormalized = y / WHITE_POINT_D65[1],
1582
+ zNormalized = z / WHITE_POINT_D65[2],
1583
+ fx = labF(x / WHITE_POINT_D65[0]),
1584
+ fy = labF(yNormalized);
1585
+ return [116 * fy - 16, 500 * (fx - fy), 200 * (fy - labF(zNormalized))];
1586
+ }
1576
1587
  function argbFromLstar(lstar) {
1577
1588
  const component = delinearized(yFromLstar(lstar));
1578
1589
  return argbFromRgb(component, component, component);
@@ -1688,8 +1699,7 @@
1688
1699
  b = (rA + gA - 2 * bA) / 9,
1689
1700
  u = (20 * rA + 20 * gA + 21 * bA) / 20,
1690
1701
  p2 = (40 * rA + 20 * gA + bA) / 20,
1691
- atanDegrees = 180 * Math.atan2(b, a) / Math.PI,
1692
- hue = atanDegrees < 0 ? atanDegrees + 360 : atanDegrees >= 360 ? atanDegrees - 360 : atanDegrees,
1702
+ hue = sanitizeDegreesDouble(180 * Math.atan2(b, a) / Math.PI),
1693
1703
  hueRadians = hue * Math.PI / 180,
1694
1704
  ac = p2 * viewingConditions.nbb,
1695
1705
  j = 100 * Math.pow(ac / viewingConditions.aw, viewingConditions.c * viewingConditions.z),
@@ -2009,6 +2019,21 @@
2009
2019
  set tone(newTone) {
2010
2020
  this.setInternalState(HctSolver.solveToInt(this.internalHue, this.internalChroma, newTone));
2011
2021
  }
2022
+ setValue(propertyName, value) {
2023
+ this[propertyName] = value;
2024
+ }
2025
+ toString() {
2026
+ return `HCT(${this.hue.toFixed(0)}, ${this.chroma.toFixed(0)}, ${this.tone.toFixed(0)})`;
2027
+ }
2028
+ static isBlue(hue) {
2029
+ return hue >= 250 && hue < 270;
2030
+ }
2031
+ static isYellow(hue) {
2032
+ return hue >= 105 && hue < 125;
2033
+ }
2034
+ static isCyan(hue) {
2035
+ return hue >= 170 && hue < 207;
2036
+ }
2012
2037
  constructor(argb) {
2013
2038
  this.argb = argb;
2014
2039
  const cam = Cam16.fromInt(argb);
@@ -2024,33 +2049,6 @@
2024
2049
  return Hct.from(recastInVc.hue, recastInVc.chroma, lstarFromY(viewedInVc[1]));
2025
2050
  }
2026
2051
  }
2027
- class Blend {
2028
- static harmonize(designColor, sourceColor) {
2029
- const fromHct = Hct.fromInt(designColor),
2030
- toHct = Hct.fromInt(sourceColor),
2031
- differenceDegrees$1 = differenceDegrees(fromHct.hue, toHct.hue),
2032
- rotationDegrees = Math.min(.5 * differenceDegrees$1, 15),
2033
- outputHue = sanitizeDegreesDouble(fromHct.hue + rotationDegrees * rotationDirection(fromHct.hue, toHct.hue));
2034
- return Hct.from(outputHue, fromHct.chroma, fromHct.tone).toInt();
2035
- }
2036
- static hctHue(from, to, amount) {
2037
- const ucs = Blend.cam16Ucs(from, to, amount),
2038
- ucsCam = Cam16.fromInt(ucs),
2039
- fromCam = Cam16.fromInt(from);
2040
- return Hct.from(ucsCam.hue, fromCam.chroma, lstarFromArgb(from)).toInt();
2041
- }
2042
- static cam16Ucs(from, to, amount) {
2043
- const fromCam = Cam16.fromInt(from),
2044
- toCam = Cam16.fromInt(to),
2045
- fromJ = fromCam.jstar,
2046
- fromA = fromCam.astar,
2047
- fromB = fromCam.bstar,
2048
- jstar = fromJ + (toCam.jstar - fromJ) * amount,
2049
- astar = fromA + (toCam.astar - fromA) * amount,
2050
- bstar = fromB + (toCam.bstar - fromB) * amount;
2051
- return Cam16.fromUcs(jstar, astar, bstar).toInt();
2052
- }
2053
- }
2054
2052
  class Contrast {
2055
2053
  static ratioOfTones(toneA, toneB) {
2056
2054
  return toneA = clampDouble(0, 100, toneA), toneB = clampDouble(0, 100, toneB), Contrast.ratioOfYs(yFromLstar(toneA), yFromLstar(toneB));
@@ -2099,66 +2097,77 @@
2099
2097
  return DislikeAnalyzer.isDisliked(hct) ? Hct.from(hct.hue, hct.chroma, 70) : hct;
2100
2098
  }
2101
2099
  }
2100
+ function validateExtendedColor(originalColor, specVersion, extendedColor) {
2101
+ if (originalColor.name !== extendedColor.name) throw new Error(`Attempting to extend color ${originalColor.name} with color ${extendedColor.name} of different name for spec version ${specVersion}.`);
2102
+ if (originalColor.isBackground !== extendedColor.isBackground) throw new Error(`Attempting to extend color ${originalColor.name} as a ${originalColor.isBackground ? "background" : "foreground"} with color ${extendedColor.name} as a ${extendedColor.isBackground ? "background" : "foreground"} for spec version ${specVersion}.`);
2103
+ }
2104
+ function extendSpecVersion(originlColor, specVersion, extendedColor) {
2105
+ return validateExtendedColor(originlColor, specVersion, extendedColor), DynamicColor.fromPalette({
2106
+ name: originlColor.name,
2107
+ palette: s => s.specVersion === specVersion ? extendedColor.palette(s) : originlColor.palette(s),
2108
+ tone: s => s.specVersion === specVersion ? extendedColor.tone(s) : originlColor.tone(s),
2109
+ isBackground: originlColor.isBackground,
2110
+ chromaMultiplier: s => {
2111
+ const chromaMultiplier = s.specVersion === specVersion ? extendedColor.chromaMultiplier : originlColor.chromaMultiplier;
2112
+ return void 0 !== chromaMultiplier ? chromaMultiplier(s) : 1;
2113
+ },
2114
+ background: s => {
2115
+ const background = s.specVersion === specVersion ? extendedColor.background : originlColor.background;
2116
+ return void 0 !== background ? background(s) : void 0;
2117
+ },
2118
+ secondBackground: s => {
2119
+ const secondBackground = s.specVersion === specVersion ? extendedColor.secondBackground : originlColor.secondBackground;
2120
+ return void 0 !== secondBackground ? secondBackground(s) : void 0;
2121
+ },
2122
+ contrastCurve: s => {
2123
+ const contrastCurve = s.specVersion === specVersion ? extendedColor.contrastCurve : originlColor.contrastCurve;
2124
+ return void 0 !== contrastCurve ? contrastCurve(s) : void 0;
2125
+ },
2126
+ toneDeltaPair: s => {
2127
+ const toneDeltaPair = s.specVersion === specVersion ? extendedColor.toneDeltaPair : originlColor.toneDeltaPair;
2128
+ return void 0 !== toneDeltaPair ? toneDeltaPair(s) : void 0;
2129
+ }
2130
+ });
2131
+ }
2102
2132
  class DynamicColor {
2103
2133
  static fromPalette(args) {
2104
- return new DynamicColor(args.name ?? "", args.palette, args.tone, args.isBackground ?? !1, args.background, args.secondBackground, args.contrastCurve, args.toneDeltaPair);
2134
+ return new DynamicColor(args.name ?? "", args.palette, args.tone ?? DynamicColor.getInitialToneFromBackground(args.background), args.isBackground ?? !1, args.chromaMultiplier, args.background, args.secondBackground, args.contrastCurve, args.toneDeltaPair);
2135
+ }
2136
+ static getInitialToneFromBackground(background) {
2137
+ return void 0 === background ? s => 50 : s => background(s) ? background(s).getTone(s) : 50;
2105
2138
  }
2106
- constructor(name, palette, tone, isBackground, background, secondBackground, contrastCurve, toneDeltaPair) {
2107
- if (this.name = name, this.palette = palette, this.tone = tone, this.isBackground = isBackground, this.background = background, this.secondBackground = secondBackground, this.contrastCurve = contrastCurve, this.toneDeltaPair = toneDeltaPair, this.hctCache = new Map(), !background && secondBackground) throw new Error(`Color ${name} has secondBackgrounddefined, but background is not defined.`);
2139
+ constructor(name, palette, tone, isBackground, chromaMultiplier, background, secondBackground, contrastCurve, toneDeltaPair) {
2140
+ if (this.name = name, this.palette = palette, this.tone = tone, this.isBackground = isBackground, this.chromaMultiplier = chromaMultiplier, this.background = background, this.secondBackground = secondBackground, this.contrastCurve = contrastCurve, this.toneDeltaPair = toneDeltaPair, this.hctCache = new Map(), !background && secondBackground) throw new Error(`Color ${name} has secondBackgrounddefined, but background is not defined.`);
2108
2141
  if (!background && contrastCurve) throw new Error(`Color ${name} has contrastCurvedefined, but background is not defined.`);
2109
2142
  if (background && !contrastCurve) throw new Error(`Color ${name} has backgrounddefined, but contrastCurve is not defined.`);
2110
2143
  }
2144
+ clone() {
2145
+ return DynamicColor.fromPalette({
2146
+ name: this.name,
2147
+ palette: this.palette,
2148
+ tone: this.tone,
2149
+ isBackground: this.isBackground,
2150
+ chromaMultiplier: this.chromaMultiplier,
2151
+ background: this.background,
2152
+ secondBackground: this.secondBackground,
2153
+ contrastCurve: this.contrastCurve,
2154
+ toneDeltaPair: this.toneDeltaPair
2155
+ });
2156
+ }
2157
+ clearCache() {
2158
+ this.hctCache.clear();
2159
+ }
2111
2160
  getArgb(scheme) {
2112
2161
  return this.getHct(scheme).toInt();
2113
2162
  }
2114
2163
  getHct(scheme) {
2115
2164
  const cachedAnswer = this.hctCache.get(scheme);
2116
2165
  if (null != cachedAnswer) return cachedAnswer;
2117
- const tone = this.getTone(scheme),
2118
- answer = this.palette(scheme).getHct(tone);
2166
+ const answer = getSpec$1(scheme.specVersion).getHct(scheme, this);
2119
2167
  return this.hctCache.size > 4 && this.hctCache.clear(), this.hctCache.set(scheme, answer), answer;
2120
2168
  }
2121
2169
  getTone(scheme) {
2122
- const decreasingContrast = scheme.contrastLevel < 0;
2123
- if (this.toneDeltaPair) {
2124
- const toneDeltaPair = this.toneDeltaPair(scheme),
2125
- roleA = toneDeltaPair.roleA,
2126
- roleB = toneDeltaPair.roleB,
2127
- delta = toneDeltaPair.delta,
2128
- polarity = toneDeltaPair.polarity,
2129
- stayTogether = toneDeltaPair.stayTogether,
2130
- bgTone = this.background(scheme).getTone(scheme),
2131
- aIsNearer = "nearer" === polarity || "lighter" === polarity && !scheme.isDark || "darker" === polarity && scheme.isDark,
2132
- nearer = aIsNearer ? roleA : roleB,
2133
- farther = aIsNearer ? roleB : roleA,
2134
- amNearer = this.name === nearer.name,
2135
- expansionDir = scheme.isDark ? 1 : -1,
2136
- nContrast = nearer.contrastCurve.getContrast(scheme.contrastLevel),
2137
- fContrast = farther.contrastCurve.getContrast(scheme.contrastLevel),
2138
- nInitialTone = nearer.tone(scheme);
2139
- let nTone = Contrast.ratioOfTones(bgTone, nInitialTone) >= nContrast ? nInitialTone : DynamicColor.foregroundTone(bgTone, nContrast);
2140
- const fInitialTone = farther.tone(scheme);
2141
- let fTone = Contrast.ratioOfTones(bgTone, fInitialTone) >= fContrast ? fInitialTone : DynamicColor.foregroundTone(bgTone, fContrast);
2142
- return decreasingContrast && (nTone = DynamicColor.foregroundTone(bgTone, nContrast), fTone = DynamicColor.foregroundTone(bgTone, fContrast)), (fTone - nTone) * expansionDir >= delta || (fTone = clampDouble(0, 100, nTone + delta * expansionDir), (fTone - nTone) * expansionDir >= delta || (nTone = clampDouble(0, 100, fTone - delta * expansionDir))), 50 <= nTone && nTone < 60 ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : 50 <= fTone && fTone < 60 && (stayTogether ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : fTone = expansionDir > 0 ? 60 : 49), amNearer ? nTone : fTone;
2143
- }
2144
- {
2145
- let answer = this.tone(scheme);
2146
- if (null == this.background) return answer;
2147
- const bgTone = this.background(scheme).getTone(scheme),
2148
- desiredRatio = this.contrastCurve.getContrast(scheme.contrastLevel);
2149
- if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio || (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), decreasingContrast && (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), this.isBackground && 50 <= answer && answer < 60 && (answer = Contrast.ratioOfTones(49, bgTone) >= desiredRatio ? 49 : 60), this.secondBackground) {
2150
- const [bg1, bg2] = [this.background, this.secondBackground],
2151
- [bgTone1, bgTone2] = [bg1(scheme).getTone(scheme), bg2(scheme).getTone(scheme)],
2152
- [upper, lower] = [Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2)];
2153
- if (Contrast.ratioOfTones(upper, answer) >= desiredRatio && Contrast.ratioOfTones(lower, answer) >= desiredRatio) return answer;
2154
- const lightOption = Contrast.lighter(upper, desiredRatio),
2155
- darkOption = Contrast.darker(lower, desiredRatio),
2156
- availables = [];
2157
- -1 !== lightOption && availables.push(lightOption), -1 !== darkOption && availables.push(darkOption);
2158
- return DynamicColor.tonePrefersLightForeground(bgTone1) || DynamicColor.tonePrefersLightForeground(bgTone2) ? lightOption < 0 ? 100 : lightOption : 1 === availables.length ? availables[0] : darkOption < 0 ? 0 : darkOption;
2159
- }
2160
- return answer;
2161
- }
2170
+ return getSpec$1(scheme.specVersion).getTone(scheme, this);
2162
2171
  }
2163
2172
  static foregroundTone(bgTone, ratio) {
2164
2173
  const lighterTone = Contrast.lighterUnsafe(bgTone, ratio),
@@ -2181,23 +2190,309 @@
2181
2190
  return DynamicColor.tonePrefersLightForeground(tone) && !DynamicColor.toneAllowsLightForeground(tone) ? 49 : tone;
2182
2191
  }
2183
2192
  }
2184
- var Variant;
2185
- !function (Variant) {
2186
- Variant[Variant.MONOCHROME = 0] = "MONOCHROME", Variant[Variant.NEUTRAL = 1] = "NEUTRAL", Variant[Variant.TONAL_SPOT = 2] = "TONAL_SPOT", Variant[Variant.VIBRANT = 3] = "VIBRANT", Variant[Variant.EXPRESSIVE = 4] = "EXPRESSIVE", Variant[Variant.FIDELITY = 5] = "FIDELITY", Variant[Variant.CONTENT = 6] = "CONTENT", Variant[Variant.RAINBOW = 7] = "RAINBOW", Variant[Variant.FRUIT_SALAD = 8] = "FRUIT_SALAD";
2187
- }(Variant || (Variant = {}));
2193
+ class ColorCalculationDelegateImpl2021 {
2194
+ getHct(scheme, color) {
2195
+ const tone = color.getTone(scheme);
2196
+ return color.palette(scheme).getHct(tone);
2197
+ }
2198
+ getTone(scheme, color) {
2199
+ const decreasingContrast = scheme.contrastLevel < 0,
2200
+ toneDeltaPair = color.toneDeltaPair ? color.toneDeltaPair(scheme) : void 0;
2201
+ if (toneDeltaPair) {
2202
+ const roleA = toneDeltaPair.roleA,
2203
+ roleB = toneDeltaPair.roleB,
2204
+ delta = toneDeltaPair.delta,
2205
+ polarity = toneDeltaPair.polarity,
2206
+ stayTogether = toneDeltaPair.stayTogether,
2207
+ aIsNearer = "nearer" === polarity || "lighter" === polarity && !scheme.isDark || "darker" === polarity && scheme.isDark,
2208
+ nearer = aIsNearer ? roleA : roleB,
2209
+ farther = aIsNearer ? roleB : roleA,
2210
+ amNearer = color.name === nearer.name,
2211
+ expansionDir = scheme.isDark ? 1 : -1;
2212
+ let nTone = nearer.tone(scheme),
2213
+ fTone = farther.tone(scheme);
2214
+ if (color.background && nearer.contrastCurve && farther.contrastCurve) {
2215
+ const bg = color.background(scheme),
2216
+ nContrastCurve = nearer.contrastCurve(scheme),
2217
+ fContrastCurve = farther.contrastCurve(scheme);
2218
+ if (bg && nContrastCurve && fContrastCurve) {
2219
+ const bgTone = bg.getTone(scheme),
2220
+ nContrast = nContrastCurve.get(scheme.contrastLevel),
2221
+ fContrast = fContrastCurve.get(scheme.contrastLevel);
2222
+ Contrast.ratioOfTones(bgTone, nTone) < nContrast && (nTone = DynamicColor.foregroundTone(bgTone, nContrast)), Contrast.ratioOfTones(bgTone, fTone) < fContrast && (fTone = DynamicColor.foregroundTone(bgTone, fContrast)), decreasingContrast && (nTone = DynamicColor.foregroundTone(bgTone, nContrast), fTone = DynamicColor.foregroundTone(bgTone, fContrast));
2223
+ }
2224
+ }
2225
+ return (fTone - nTone) * expansionDir < delta && (fTone = clampDouble(0, 100, nTone + delta * expansionDir), (fTone - nTone) * expansionDir >= delta || (nTone = clampDouble(0, 100, fTone - delta * expansionDir))), 50 <= nTone && nTone < 60 ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : 50 <= fTone && fTone < 60 && (stayTogether ? expansionDir > 0 ? (nTone = 60, fTone = Math.max(fTone, nTone + delta * expansionDir)) : (nTone = 49, fTone = Math.min(fTone, nTone + delta * expansionDir)) : fTone = expansionDir > 0 ? 60 : 49), amNearer ? nTone : fTone;
2226
+ }
2227
+ {
2228
+ let answer = color.tone(scheme);
2229
+ if (null == color.background || void 0 === color.background(scheme) || null == color.contrastCurve || void 0 === color.contrastCurve(scheme)) return answer;
2230
+ const bgTone = color.background(scheme).getTone(scheme),
2231
+ desiredRatio = color.contrastCurve(scheme).get(scheme.contrastLevel);
2232
+ if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio || (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), decreasingContrast && (answer = DynamicColor.foregroundTone(bgTone, desiredRatio)), color.isBackground && 50 <= answer && answer < 60 && (answer = Contrast.ratioOfTones(49, bgTone) >= desiredRatio ? 49 : 60), null == color.secondBackground || void 0 === color.secondBackground(scheme)) return answer;
2233
+ const [bg1, bg2] = [color.background, color.secondBackground],
2234
+ [bgTone1, bgTone2] = [bg1(scheme).getTone(scheme), bg2(scheme).getTone(scheme)],
2235
+ [upper, lower] = [Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2)];
2236
+ if (Contrast.ratioOfTones(upper, answer) >= desiredRatio && Contrast.ratioOfTones(lower, answer) >= desiredRatio) return answer;
2237
+ const lightOption = Contrast.lighter(upper, desiredRatio),
2238
+ darkOption = Contrast.darker(lower, desiredRatio),
2239
+ availables = [];
2240
+ -1 !== lightOption && availables.push(lightOption), -1 !== darkOption && availables.push(darkOption);
2241
+ return DynamicColor.tonePrefersLightForeground(bgTone1) || DynamicColor.tonePrefersLightForeground(bgTone2) ? lightOption < 0 ? 100 : lightOption : 1 === availables.length ? availables[0] : darkOption < 0 ? 0 : darkOption;
2242
+ }
2243
+ }
2244
+ }
2245
+ class ColorCalculationDelegateImpl2025 {
2246
+ getHct(scheme, color) {
2247
+ const palette = color.palette(scheme),
2248
+ tone = color.getTone(scheme),
2249
+ hue = palette.hue,
2250
+ chroma = palette.chroma * (color.chromaMultiplier ? color.chromaMultiplier(scheme) : 1);
2251
+ return Hct.from(hue, chroma, tone);
2252
+ }
2253
+ getTone(scheme, color) {
2254
+ const toneDeltaPair = color.toneDeltaPair ? color.toneDeltaPair(scheme) : void 0;
2255
+ if (toneDeltaPair) {
2256
+ const roleA = toneDeltaPair.roleA,
2257
+ roleB = toneDeltaPair.roleB,
2258
+ polarity = toneDeltaPair.polarity,
2259
+ constraint = toneDeltaPair.constraint,
2260
+ absoluteDelta = "darker" === polarity || "relative_lighter" === polarity && scheme.isDark || "relative_darker" === polarity && !scheme.isDark ? -toneDeltaPair.delta : toneDeltaPair.delta,
2261
+ amRoleA = color.name === roleA.name,
2262
+ refRole = amRoleA ? roleB : roleA;
2263
+ let selfTone = (amRoleA ? roleA : roleB).tone(scheme),
2264
+ refTone = refRole.getTone(scheme);
2265
+ const relativeDelta = absoluteDelta * (amRoleA ? 1 : -1);
2266
+ if ("exact" === constraint ? selfTone = clampDouble(0, 100, refTone + relativeDelta) : "nearer" === constraint ? selfTone = clampDouble(0, 100, relativeDelta > 0 ? clampDouble(refTone, refTone + relativeDelta, selfTone) : clampDouble(refTone + relativeDelta, refTone, selfTone)) : "farther" === constraint && (selfTone = relativeDelta > 0 ? clampDouble(refTone + relativeDelta, 100, selfTone) : clampDouble(0, refTone + relativeDelta, selfTone)), color.background && color.contrastCurve) {
2267
+ const background = color.background(scheme),
2268
+ contrastCurve = color.contrastCurve(scheme);
2269
+ if (background && contrastCurve) {
2270
+ const bgTone = background.getTone(scheme),
2271
+ selfContrast = contrastCurve.get(scheme.contrastLevel);
2272
+ selfTone = Contrast.ratioOfTones(bgTone, selfTone) >= selfContrast && scheme.contrastLevel >= 0 ? selfTone : DynamicColor.foregroundTone(bgTone, selfContrast);
2273
+ }
2274
+ }
2275
+ return color.isBackground && !color.name.endsWith("_fixed_dim") && (selfTone = selfTone >= 57 ? clampDouble(65, 100, selfTone) : clampDouble(0, 49, selfTone)), selfTone;
2276
+ }
2277
+ {
2278
+ let answer = color.tone(scheme);
2279
+ if (null == color.background || void 0 === color.background(scheme) || null == color.contrastCurve || void 0 === color.contrastCurve(scheme)) return answer;
2280
+ const bgTone = color.background(scheme).getTone(scheme),
2281
+ desiredRatio = color.contrastCurve(scheme).get(scheme.contrastLevel);
2282
+ if (answer = Contrast.ratioOfTones(bgTone, answer) >= desiredRatio && scheme.contrastLevel >= 0 ? answer : DynamicColor.foregroundTone(bgTone, desiredRatio), color.isBackground && !color.name.endsWith("_fixed_dim") && (answer = answer >= 57 ? clampDouble(65, 100, answer) : clampDouble(0, 49, answer)), null == color.secondBackground || void 0 === color.secondBackground(scheme)) return answer;
2283
+ const [bg1, bg2] = [color.background, color.secondBackground],
2284
+ [bgTone1, bgTone2] = [bg1(scheme).getTone(scheme), bg2(scheme).getTone(scheme)],
2285
+ [upper, lower] = [Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2)];
2286
+ if (Contrast.ratioOfTones(upper, answer) >= desiredRatio && Contrast.ratioOfTones(lower, answer) >= desiredRatio) return answer;
2287
+ const lightOption = Contrast.lighter(upper, desiredRatio),
2288
+ darkOption = Contrast.darker(lower, desiredRatio),
2289
+ availables = [];
2290
+ -1 !== lightOption && availables.push(lightOption), -1 !== darkOption && availables.push(darkOption);
2291
+ return DynamicColor.tonePrefersLightForeground(bgTone1) || DynamicColor.tonePrefersLightForeground(bgTone2) ? lightOption < 0 ? 100 : lightOption : 1 === availables.length ? availables[0] : darkOption < 0 ? 0 : darkOption;
2292
+ }
2293
+ }
2294
+ }
2295
+ const spec2021$1 = new ColorCalculationDelegateImpl2021(),
2296
+ spec2025$1 = new ColorCalculationDelegateImpl2025();
2297
+ function getSpec$1(specVersion) {
2298
+ return "2025" === specVersion ? spec2025$1 : spec2021$1;
2299
+ }
2300
+ class TonalPalette {
2301
+ static fromInt(argb) {
2302
+ const hct = Hct.fromInt(argb);
2303
+ return TonalPalette.fromHct(hct);
2304
+ }
2305
+ static fromHct(hct) {
2306
+ return new TonalPalette(hct.hue, hct.chroma, hct);
2307
+ }
2308
+ static fromHueAndChroma(hue, chroma) {
2309
+ const keyColor = new KeyColor(hue, chroma).create();
2310
+ return new TonalPalette(hue, chroma, keyColor);
2311
+ }
2312
+ constructor(hue, chroma, keyColor) {
2313
+ this.hue = hue, this.chroma = chroma, this.keyColor = keyColor, this.cache = new Map();
2314
+ }
2315
+ tone(tone) {
2316
+ let argb = this.cache.get(tone);
2317
+ return void 0 === argb && (argb = 99 == tone && Hct.isYellow(this.hue) ? this.averageArgb(this.tone(98), this.tone(100)) : Hct.from(this.hue, this.chroma, tone).toInt(), this.cache.set(tone, argb)), argb;
2318
+ }
2319
+ getHct(tone) {
2320
+ return Hct.fromInt(this.tone(tone));
2321
+ }
2322
+ averageArgb(argb1, argb2) {
2323
+ const red1 = argb1 >>> 16 & 255,
2324
+ green1 = argb1 >>> 8 & 255,
2325
+ blue1 = 255 & argb1,
2326
+ red2 = argb2 >>> 16 & 255,
2327
+ green2 = argb2 >>> 8 & 255,
2328
+ blue2 = 255 & argb2;
2329
+ return (255 << 24 | (255 & Math.round((red1 + red2) / 2)) << 16 | (255 & Math.round((green1 + green2) / 2)) << 8 | 255 & Math.round((blue1 + blue2) / 2)) >>> 0;
2330
+ }
2331
+ }
2332
+ class KeyColor {
2333
+ constructor(hue, requestedChroma) {
2334
+ this.hue = hue, this.requestedChroma = requestedChroma, this.chromaCache = new Map(), this.maxChromaValue = 200;
2335
+ }
2336
+ create() {
2337
+ let lowerTone = 0,
2338
+ upperTone = 100;
2339
+ for (; lowerTone < upperTone;) {
2340
+ const midTone = Math.floor((lowerTone + upperTone) / 2),
2341
+ isAscending = this.maxChroma(midTone) < this.maxChroma(midTone + 1);
2342
+ if (this.maxChroma(midTone) >= this.requestedChroma - .01) {
2343
+ if (Math.abs(lowerTone - 50) < Math.abs(upperTone - 50)) upperTone = midTone;else {
2344
+ if (lowerTone === midTone) return Hct.from(this.hue, this.requestedChroma, lowerTone);
2345
+ lowerTone = midTone;
2346
+ }
2347
+ } else isAscending ? lowerTone = midTone + 1 : upperTone = midTone;
2348
+ }
2349
+ return Hct.from(this.hue, this.requestedChroma, lowerTone);
2350
+ }
2351
+ maxChroma(tone) {
2352
+ if (this.chromaCache.has(tone)) return this.chromaCache.get(tone);
2353
+ const chroma = Hct.from(this.hue, this.maxChromaValue, tone).chroma;
2354
+ return this.chromaCache.set(tone, chroma), chroma;
2355
+ }
2356
+ }
2357
+ class TemperatureCache {
2358
+ constructor(input) {
2359
+ this.input = input, this.hctsByTempCache = [], this.hctsByHueCache = [], this.tempsByHctCache = new Map(), this.inputRelativeTemperatureCache = -1, this.complementCache = null;
2360
+ }
2361
+ get hctsByTemp() {
2362
+ if (this.hctsByTempCache.length > 0) return this.hctsByTempCache;
2363
+ const hcts = this.hctsByHue.concat([this.input]),
2364
+ temperaturesByHct = this.tempsByHct;
2365
+ return hcts.sort((a, b) => temperaturesByHct.get(a) - temperaturesByHct.get(b)), this.hctsByTempCache = hcts, hcts;
2366
+ }
2367
+ get warmest() {
2368
+ return this.hctsByTemp[this.hctsByTemp.length - 1];
2369
+ }
2370
+ get coldest() {
2371
+ return this.hctsByTemp[0];
2372
+ }
2373
+ analogous(count, divisions) {
2374
+ if (count === void 0) {
2375
+ count = 5;
2376
+ }
2377
+ if (divisions === void 0) {
2378
+ divisions = 12;
2379
+ }
2380
+ const startHue = Math.round(this.input.hue),
2381
+ startHct = this.hctsByHue[startHue];
2382
+ let lastTemp = this.relativeTemperature(startHct);
2383
+ const allColors = [startHct];
2384
+ let absoluteTotalTempDelta = 0;
2385
+ for (let i = 0; i < 360; i++) {
2386
+ const hue = sanitizeDegreesInt(startHue + i),
2387
+ hct = this.hctsByHue[hue],
2388
+ temp = this.relativeTemperature(hct),
2389
+ tempDelta = Math.abs(temp - lastTemp);
2390
+ lastTemp = temp, absoluteTotalTempDelta += tempDelta;
2391
+ }
2392
+ let hueAddend = 1;
2393
+ const tempStep = absoluteTotalTempDelta / divisions;
2394
+ let totalTempDelta = 0;
2395
+ for (lastTemp = this.relativeTemperature(startHct); allColors.length < divisions;) {
2396
+ const hue = sanitizeDegreesInt(startHue + hueAddend),
2397
+ hct = this.hctsByHue[hue],
2398
+ temp = this.relativeTemperature(hct);
2399
+ totalTempDelta += Math.abs(temp - lastTemp);
2400
+ let indexSatisfied = totalTempDelta >= allColors.length * tempStep,
2401
+ indexAddend = 1;
2402
+ for (; indexSatisfied && allColors.length < divisions;) {
2403
+ allColors.push(hct);
2404
+ indexSatisfied = totalTempDelta >= (allColors.length + indexAddend) * tempStep, indexAddend++;
2405
+ }
2406
+ if (lastTemp = temp, hueAddend++, hueAddend > 360) {
2407
+ for (; allColors.length < divisions;) allColors.push(hct);
2408
+ break;
2409
+ }
2410
+ }
2411
+ const answers = [this.input],
2412
+ increaseHueCount = Math.floor((count - 1) / 2);
2413
+ for (let i = 1; i < increaseHueCount + 1; i++) {
2414
+ let index = 0 - i;
2415
+ for (; index < 0;) index = allColors.length + index;
2416
+ index >= allColors.length && (index %= allColors.length), answers.splice(0, 0, allColors[index]);
2417
+ }
2418
+ const decreaseHueCount = count - increaseHueCount - 1;
2419
+ for (let i = 1; i < decreaseHueCount + 1; i++) {
2420
+ let index = i;
2421
+ for (; index < 0;) index = allColors.length + index;
2422
+ index >= allColors.length && (index %= allColors.length), answers.push(allColors[index]);
2423
+ }
2424
+ return answers;
2425
+ }
2426
+ get complement() {
2427
+ if (null != this.complementCache) return this.complementCache;
2428
+ const coldestHue = this.coldest.hue,
2429
+ coldestTemp = this.tempsByHct.get(this.coldest),
2430
+ warmestHue = this.warmest.hue,
2431
+ range = this.tempsByHct.get(this.warmest) - coldestTemp,
2432
+ startHueIsColdestToWarmest = TemperatureCache.isBetween(this.input.hue, coldestHue, warmestHue),
2433
+ startHue = startHueIsColdestToWarmest ? warmestHue : coldestHue,
2434
+ endHue = startHueIsColdestToWarmest ? coldestHue : warmestHue;
2435
+ let smallestError = 1e3,
2436
+ answer = this.hctsByHue[Math.round(this.input.hue)];
2437
+ const complementRelativeTemp = 1 - this.inputRelativeTemperature;
2438
+ for (let hueAddend = 0; hueAddend <= 360; hueAddend += 1) {
2439
+ const hue = sanitizeDegreesDouble(startHue + 1 * hueAddend);
2440
+ if (!TemperatureCache.isBetween(hue, startHue, endHue)) continue;
2441
+ const possibleAnswer = this.hctsByHue[Math.round(hue)],
2442
+ relativeTemp = (this.tempsByHct.get(possibleAnswer) - coldestTemp) / range,
2443
+ error = Math.abs(complementRelativeTemp - relativeTemp);
2444
+ error < smallestError && (smallestError = error, answer = possibleAnswer);
2445
+ }
2446
+ return this.complementCache = answer, this.complementCache;
2447
+ }
2448
+ relativeTemperature(hct) {
2449
+ const range = this.tempsByHct.get(this.warmest) - this.tempsByHct.get(this.coldest),
2450
+ differenceFromColdest = this.tempsByHct.get(hct) - this.tempsByHct.get(this.coldest);
2451
+ return 0 === range ? .5 : differenceFromColdest / range;
2452
+ }
2453
+ get inputRelativeTemperature() {
2454
+ return this.inputRelativeTemperatureCache >= 0 || (this.inputRelativeTemperatureCache = this.relativeTemperature(this.input)), this.inputRelativeTemperatureCache;
2455
+ }
2456
+ get tempsByHct() {
2457
+ if (this.tempsByHctCache.size > 0) return this.tempsByHctCache;
2458
+ const allHcts = this.hctsByHue.concat([this.input]),
2459
+ temperaturesByHct = new Map();
2460
+ for (const e of allHcts) temperaturesByHct.set(e, TemperatureCache.rawTemperature(e));
2461
+ return this.tempsByHctCache = temperaturesByHct, temperaturesByHct;
2462
+ }
2463
+ get hctsByHue() {
2464
+ if (this.hctsByHueCache.length > 0) return this.hctsByHueCache;
2465
+ const hcts = [];
2466
+ for (let hue = 0; hue <= 360; hue += 1) {
2467
+ const colorAtHue = Hct.from(hue, this.input.chroma, this.input.tone);
2468
+ hcts.push(colorAtHue);
2469
+ }
2470
+ return this.hctsByHueCache = hcts, this.hctsByHueCache;
2471
+ }
2472
+ static isBetween(angle, a, b) {
2473
+ return a < b ? a <= angle && angle <= b : a <= angle || angle <= b;
2474
+ }
2475
+ static rawTemperature(color) {
2476
+ const lab = labFromArgb(color.toInt()),
2477
+ hue = sanitizeDegreesDouble(180 * Math.atan2(lab[2], lab[1]) / Math.PI),
2478
+ chroma = Math.sqrt(lab[1] * lab[1] + lab[2] * lab[2]);
2479
+ return .02 * Math.pow(chroma, 1.07) * Math.cos(sanitizeDegreesDouble(hue - 50) * Math.PI / 180) - .5;
2480
+ }
2481
+ }
2188
2482
  class ContrastCurve {
2189
2483
  constructor(low, normal, medium, high) {
2190
2484
  this.low = low, this.normal = normal, this.medium = medium, this.high = high;
2191
2485
  }
2192
- getContrast(contrastLevel) {
2486
+ get(contrastLevel) {
2193
2487
  return contrastLevel <= -1 ? this.low : contrastLevel < 0 ? lerp(this.low, this.normal, (contrastLevel - -1) / 1) : contrastLevel < .5 ? lerp(this.normal, this.medium, (contrastLevel - 0) / .5) : contrastLevel < 1 ? lerp(this.medium, this.high, (contrastLevel - .5) / .5) : this.high;
2194
2488
  }
2195
2489
  }
2196
2490
  class ToneDeltaPair {
2197
- constructor(roleA, roleB, delta, polarity, stayTogether) {
2198
- this.roleA = roleA, this.roleB = roleB, this.delta = delta, this.polarity = polarity, this.stayTogether = stayTogether;
2491
+ constructor(roleA, roleB, delta, polarity, stayTogether, constraint) {
2492
+ this.roleA = roleA, this.roleB = roleB, this.delta = delta, this.polarity = polarity, this.stayTogether = stayTogether, this.constraint = constraint, this.constraint = constraint ?? "exact";
2199
2493
  }
2200
2494
  }
2495
+ var Variant;
2201
2496
  function isFidelity(scheme) {
2202
2497
  return scheme.variant === Variant.FIDELITY || scheme.variant === Variant.CONTENT;
2203
2498
  }
@@ -2219,615 +2514,1839 @@
2219
2514
  }
2220
2515
  return answer;
2221
2516
  }
2222
- function viewingConditionsForAlbers(scheme) {
2223
- return ViewingConditions.make(void 0, void 0, scheme.isDark ? 30 : 80, void 0, void 0);
2517
+ !function (Variant) {
2518
+ Variant[Variant.MONOCHROME = 0] = "MONOCHROME", Variant[Variant.NEUTRAL = 1] = "NEUTRAL", Variant[Variant.TONAL_SPOT = 2] = "TONAL_SPOT", Variant[Variant.VIBRANT = 3] = "VIBRANT", Variant[Variant.EXPRESSIVE = 4] = "EXPRESSIVE", Variant[Variant.FIDELITY = 5] = "FIDELITY", Variant[Variant.CONTENT = 6] = "CONTENT", Variant[Variant.RAINBOW = 7] = "RAINBOW", Variant[Variant.FRUIT_SALAD = 8] = "FRUIT_SALAD";
2519
+ }(Variant || (Variant = {}));
2520
+ class ColorSpecDelegateImpl2021 {
2521
+ primaryPaletteKeyColor() {
2522
+ return DynamicColor.fromPalette({
2523
+ name: "primary_palette_key_color",
2524
+ palette: s => s.primaryPalette,
2525
+ tone: s => s.primaryPalette.keyColor.tone
2526
+ });
2527
+ }
2528
+ secondaryPaletteKeyColor() {
2529
+ return DynamicColor.fromPalette({
2530
+ name: "secondary_palette_key_color",
2531
+ palette: s => s.secondaryPalette,
2532
+ tone: s => s.secondaryPalette.keyColor.tone
2533
+ });
2534
+ }
2535
+ tertiaryPaletteKeyColor() {
2536
+ return DynamicColor.fromPalette({
2537
+ name: "tertiary_palette_key_color",
2538
+ palette: s => s.tertiaryPalette,
2539
+ tone: s => s.tertiaryPalette.keyColor.tone
2540
+ });
2541
+ }
2542
+ neutralPaletteKeyColor() {
2543
+ return DynamicColor.fromPalette({
2544
+ name: "neutral_palette_key_color",
2545
+ palette: s => s.neutralPalette,
2546
+ tone: s => s.neutralPalette.keyColor.tone
2547
+ });
2548
+ }
2549
+ neutralVariantPaletteKeyColor() {
2550
+ return DynamicColor.fromPalette({
2551
+ name: "neutral_variant_palette_key_color",
2552
+ palette: s => s.neutralVariantPalette,
2553
+ tone: s => s.neutralVariantPalette.keyColor.tone
2554
+ });
2555
+ }
2556
+ errorPaletteKeyColor() {
2557
+ return DynamicColor.fromPalette({
2558
+ name: "error_palette_key_color",
2559
+ palette: s => s.errorPalette,
2560
+ tone: s => s.errorPalette.keyColor.tone
2561
+ });
2562
+ }
2563
+ background() {
2564
+ return DynamicColor.fromPalette({
2565
+ name: "background",
2566
+ palette: s => s.neutralPalette,
2567
+ tone: s => s.isDark ? 6 : 98,
2568
+ isBackground: !0
2569
+ });
2570
+ }
2571
+ onBackground() {
2572
+ return DynamicColor.fromPalette({
2573
+ name: "on_background",
2574
+ palette: s => s.neutralPalette,
2575
+ tone: s => s.isDark ? 90 : 10,
2576
+ background: s => this.background(),
2577
+ contrastCurve: s => new ContrastCurve(3, 3, 4.5, 7)
2578
+ });
2579
+ }
2580
+ surface() {
2581
+ return DynamicColor.fromPalette({
2582
+ name: "surface",
2583
+ palette: s => s.neutralPalette,
2584
+ tone: s => s.isDark ? 6 : 98,
2585
+ isBackground: !0
2586
+ });
2587
+ }
2588
+ surfaceDim() {
2589
+ return DynamicColor.fromPalette({
2590
+ name: "surface_dim",
2591
+ palette: s => s.neutralPalette,
2592
+ tone: s => s.isDark ? 6 : new ContrastCurve(87, 87, 80, 75).get(s.contrastLevel),
2593
+ isBackground: !0
2594
+ });
2595
+ }
2596
+ surfaceBright() {
2597
+ return DynamicColor.fromPalette({
2598
+ name: "surface_bright",
2599
+ palette: s => s.neutralPalette,
2600
+ tone: s => s.isDark ? new ContrastCurve(24, 24, 29, 34).get(s.contrastLevel) : 98,
2601
+ isBackground: !0
2602
+ });
2603
+ }
2604
+ surfaceContainerLowest() {
2605
+ return DynamicColor.fromPalette({
2606
+ name: "surface_container_lowest",
2607
+ palette: s => s.neutralPalette,
2608
+ tone: s => s.isDark ? new ContrastCurve(4, 4, 2, 0).get(s.contrastLevel) : 100,
2609
+ isBackground: !0
2610
+ });
2611
+ }
2612
+ surfaceContainerLow() {
2613
+ return DynamicColor.fromPalette({
2614
+ name: "surface_container_low",
2615
+ palette: s => s.neutralPalette,
2616
+ tone: s => s.isDark ? new ContrastCurve(10, 10, 11, 12).get(s.contrastLevel) : new ContrastCurve(96, 96, 96, 95).get(s.contrastLevel),
2617
+ isBackground: !0
2618
+ });
2619
+ }
2620
+ surfaceContainer() {
2621
+ return DynamicColor.fromPalette({
2622
+ name: "surface_container",
2623
+ palette: s => s.neutralPalette,
2624
+ tone: s => s.isDark ? new ContrastCurve(12, 12, 16, 20).get(s.contrastLevel) : new ContrastCurve(94, 94, 92, 90).get(s.contrastLevel),
2625
+ isBackground: !0
2626
+ });
2627
+ }
2628
+ surfaceContainerHigh() {
2629
+ return DynamicColor.fromPalette({
2630
+ name: "surface_container_high",
2631
+ palette: s => s.neutralPalette,
2632
+ tone: s => s.isDark ? new ContrastCurve(17, 17, 21, 25).get(s.contrastLevel) : new ContrastCurve(92, 92, 88, 85).get(s.contrastLevel),
2633
+ isBackground: !0
2634
+ });
2635
+ }
2636
+ surfaceContainerHighest() {
2637
+ return DynamicColor.fromPalette({
2638
+ name: "surface_container_highest",
2639
+ palette: s => s.neutralPalette,
2640
+ tone: s => s.isDark ? new ContrastCurve(22, 22, 26, 30).get(s.contrastLevel) : new ContrastCurve(90, 90, 84, 80).get(s.contrastLevel),
2641
+ isBackground: !0
2642
+ });
2643
+ }
2644
+ onSurface() {
2645
+ return DynamicColor.fromPalette({
2646
+ name: "on_surface",
2647
+ palette: s => s.neutralPalette,
2648
+ tone: s => s.isDark ? 90 : 10,
2649
+ background: s => this.highestSurface(s),
2650
+ contrastCurve: s => new ContrastCurve(4.5, 7, 11, 21)
2651
+ });
2652
+ }
2653
+ surfaceVariant() {
2654
+ return DynamicColor.fromPalette({
2655
+ name: "surface_variant",
2656
+ palette: s => s.neutralVariantPalette,
2657
+ tone: s => s.isDark ? 30 : 90,
2658
+ isBackground: !0
2659
+ });
2660
+ }
2661
+ onSurfaceVariant() {
2662
+ return DynamicColor.fromPalette({
2663
+ name: "on_surface_variant",
2664
+ palette: s => s.neutralVariantPalette,
2665
+ tone: s => s.isDark ? 80 : 30,
2666
+ background: s => this.highestSurface(s),
2667
+ contrastCurve: s => new ContrastCurve(3, 4.5, 7, 11)
2668
+ });
2669
+ }
2670
+ inverseSurface() {
2671
+ return DynamicColor.fromPalette({
2672
+ name: "inverse_surface",
2673
+ palette: s => s.neutralPalette,
2674
+ tone: s => s.isDark ? 90 : 20,
2675
+ isBackground: !0
2676
+ });
2677
+ }
2678
+ inverseOnSurface() {
2679
+ return DynamicColor.fromPalette({
2680
+ name: "inverse_on_surface",
2681
+ palette: s => s.neutralPalette,
2682
+ tone: s => s.isDark ? 20 : 95,
2683
+ background: s => this.inverseSurface(),
2684
+ contrastCurve: s => new ContrastCurve(4.5, 7, 11, 21)
2685
+ });
2686
+ }
2687
+ outline() {
2688
+ return DynamicColor.fromPalette({
2689
+ name: "outline",
2690
+ palette: s => s.neutralVariantPalette,
2691
+ tone: s => s.isDark ? 60 : 50,
2692
+ background: s => this.highestSurface(s),
2693
+ contrastCurve: s => new ContrastCurve(1.5, 3, 4.5, 7)
2694
+ });
2695
+ }
2696
+ outlineVariant() {
2697
+ return DynamicColor.fromPalette({
2698
+ name: "outline_variant",
2699
+ palette: s => s.neutralVariantPalette,
2700
+ tone: s => s.isDark ? 30 : 80,
2701
+ background: s => this.highestSurface(s),
2702
+ contrastCurve: s => new ContrastCurve(1, 1, 3, 4.5)
2703
+ });
2704
+ }
2705
+ shadow() {
2706
+ return DynamicColor.fromPalette({
2707
+ name: "shadow",
2708
+ palette: s => s.neutralPalette,
2709
+ tone: s => 0
2710
+ });
2711
+ }
2712
+ scrim() {
2713
+ return DynamicColor.fromPalette({
2714
+ name: "scrim",
2715
+ palette: s => s.neutralPalette,
2716
+ tone: s => 0
2717
+ });
2718
+ }
2719
+ surfaceTint() {
2720
+ return DynamicColor.fromPalette({
2721
+ name: "surface_tint",
2722
+ palette: s => s.primaryPalette,
2723
+ tone: s => s.isDark ? 80 : 40,
2724
+ isBackground: !0
2725
+ });
2726
+ }
2727
+ primary() {
2728
+ return DynamicColor.fromPalette({
2729
+ name: "primary",
2730
+ palette: s => s.primaryPalette,
2731
+ tone: s => isMonochrome(s) ? s.isDark ? 100 : 0 : s.isDark ? 80 : 40,
2732
+ isBackground: !0,
2733
+ background: s => this.highestSurface(s),
2734
+ contrastCurve: s => new ContrastCurve(3, 4.5, 7, 7),
2735
+ toneDeltaPair: s => new ToneDeltaPair(this.primaryContainer(), this.primary(), 10, "nearer", !1)
2736
+ });
2737
+ }
2738
+ primaryDim() {}
2739
+ onPrimary() {
2740
+ return DynamicColor.fromPalette({
2741
+ name: "on_primary",
2742
+ palette: s => s.primaryPalette,
2743
+ tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,
2744
+ background: s => this.primary(),
2745
+ contrastCurve: s => new ContrastCurve(4.5, 7, 11, 21)
2746
+ });
2747
+ }
2748
+ primaryContainer() {
2749
+ return DynamicColor.fromPalette({
2750
+ name: "primary_container",
2751
+ palette: s => s.primaryPalette,
2752
+ tone: s => isFidelity(s) ? s.sourceColorHct.tone : isMonochrome(s) ? s.isDark ? 85 : 25 : s.isDark ? 30 : 90,
2753
+ isBackground: !0,
2754
+ background: s => this.highestSurface(s),
2755
+ contrastCurve: s => new ContrastCurve(1, 1, 3, 4.5),
2756
+ toneDeltaPair: s => new ToneDeltaPair(this.primaryContainer(), this.primary(), 10, "nearer", !1)
2757
+ });
2758
+ }
2759
+ onPrimaryContainer() {
2760
+ return DynamicColor.fromPalette({
2761
+ name: "on_primary_container",
2762
+ palette: s => s.primaryPalette,
2763
+ tone: s => isFidelity(s) ? DynamicColor.foregroundTone(this.primaryContainer().tone(s), 4.5) : isMonochrome(s) ? s.isDark ? 0 : 100 : s.isDark ? 90 : 30,
2764
+ background: s => this.primaryContainer(),
2765
+ contrastCurve: s => new ContrastCurve(3, 4.5, 7, 11)
2766
+ });
2767
+ }
2768
+ inversePrimary() {
2769
+ return DynamicColor.fromPalette({
2770
+ name: "inverse_primary",
2771
+ palette: s => s.primaryPalette,
2772
+ tone: s => s.isDark ? 40 : 80,
2773
+ background: s => this.inverseSurface(),
2774
+ contrastCurve: s => new ContrastCurve(3, 4.5, 7, 7)
2775
+ });
2776
+ }
2777
+ secondary() {
2778
+ return DynamicColor.fromPalette({
2779
+ name: "secondary",
2780
+ palette: s => s.secondaryPalette,
2781
+ tone: s => s.isDark ? 80 : 40,
2782
+ isBackground: !0,
2783
+ background: s => this.highestSurface(s),
2784
+ contrastCurve: s => new ContrastCurve(3, 4.5, 7, 7),
2785
+ toneDeltaPair: s => new ToneDeltaPair(this.secondaryContainer(), this.secondary(), 10, "nearer", !1)
2786
+ });
2787
+ }
2788
+ secondaryDim() {}
2789
+ onSecondary() {
2790
+ return DynamicColor.fromPalette({
2791
+ name: "on_secondary",
2792
+ palette: s => s.secondaryPalette,
2793
+ tone: s => isMonochrome(s) ? s.isDark ? 10 : 100 : s.isDark ? 20 : 100,
2794
+ background: s => this.secondary(),
2795
+ contrastCurve: s => new ContrastCurve(4.5, 7, 11, 21)
2796
+ });
2797
+ }
2798
+ secondaryContainer() {
2799
+ return DynamicColor.fromPalette({
2800
+ name: "secondary_container",
2801
+ palette: s => s.secondaryPalette,
2802
+ tone: s => {
2803
+ const initialTone = s.isDark ? 30 : 90;
2804
+ return isMonochrome(s) ? s.isDark ? 30 : 85 : isFidelity(s) ? findDesiredChromaByTone(s.secondaryPalette.hue, s.secondaryPalette.chroma, initialTone, !s.isDark) : initialTone;
2805
+ },
2806
+ isBackground: !0,
2807
+ background: s => this.highestSurface(s),
2808
+ contrastCurve: s => new ContrastCurve(1, 1, 3, 4.5),
2809
+ toneDeltaPair: s => new ToneDeltaPair(this.secondaryContainer(), this.secondary(), 10, "nearer", !1)
2810
+ });
2811
+ }
2812
+ onSecondaryContainer() {
2813
+ return DynamicColor.fromPalette({
2814
+ name: "on_secondary_container",
2815
+ palette: s => s.secondaryPalette,
2816
+ tone: s => isMonochrome(s) ? s.isDark ? 90 : 10 : isFidelity(s) ? DynamicColor.foregroundTone(this.secondaryContainer().tone(s), 4.5) : s.isDark ? 90 : 30,
2817
+ background: s => this.secondaryContainer(),
2818
+ contrastCurve: s => new ContrastCurve(3, 4.5, 7, 11)
2819
+ });
2820
+ }
2821
+ tertiary() {
2822
+ return DynamicColor.fromPalette({
2823
+ name: "tertiary",
2824
+ palette: s => s.tertiaryPalette,
2825
+ tone: s => isMonochrome(s) ? s.isDark ? 90 : 25 : s.isDark ? 80 : 40,
2826
+ isBackground: !0,
2827
+ background: s => this.highestSurface(s),
2828
+ contrastCurve: s => new ContrastCurve(3, 4.5, 7, 7),
2829
+ toneDeltaPair: s => new ToneDeltaPair(this.tertiaryContainer(), this.tertiary(), 10, "nearer", !1)
2830
+ });
2831
+ }
2832
+ tertiaryDim() {}
2833
+ onTertiary() {
2834
+ return DynamicColor.fromPalette({
2835
+ name: "on_tertiary",
2836
+ palette: s => s.tertiaryPalette,
2837
+ tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,
2838
+ background: s => this.tertiary(),
2839
+ contrastCurve: s => new ContrastCurve(4.5, 7, 11, 21)
2840
+ });
2841
+ }
2842
+ tertiaryContainer() {
2843
+ return DynamicColor.fromPalette({
2844
+ name: "tertiary_container",
2845
+ palette: s => s.tertiaryPalette,
2846
+ tone: s => {
2847
+ if (isMonochrome(s)) return s.isDark ? 60 : 49;
2848
+ if (!isFidelity(s)) return s.isDark ? 30 : 90;
2849
+ const proposedHct = s.tertiaryPalette.getHct(s.sourceColorHct.tone);
2850
+ return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;
2851
+ },
2852
+ isBackground: !0,
2853
+ background: s => this.highestSurface(s),
2854
+ contrastCurve: s => new ContrastCurve(1, 1, 3, 4.5),
2855
+ toneDeltaPair: s => new ToneDeltaPair(this.tertiaryContainer(), this.tertiary(), 10, "nearer", !1)
2856
+ });
2857
+ }
2858
+ onTertiaryContainer() {
2859
+ return DynamicColor.fromPalette({
2860
+ name: "on_tertiary_container",
2861
+ palette: s => s.tertiaryPalette,
2862
+ tone: s => isMonochrome(s) ? s.isDark ? 0 : 100 : isFidelity(s) ? DynamicColor.foregroundTone(this.tertiaryContainer().tone(s), 4.5) : s.isDark ? 90 : 30,
2863
+ background: s => this.tertiaryContainer(),
2864
+ contrastCurve: s => new ContrastCurve(3, 4.5, 7, 11)
2865
+ });
2866
+ }
2867
+ error() {
2868
+ return DynamicColor.fromPalette({
2869
+ name: "error",
2870
+ palette: s => s.errorPalette,
2871
+ tone: s => s.isDark ? 80 : 40,
2872
+ isBackground: !0,
2873
+ background: s => this.highestSurface(s),
2874
+ contrastCurve: s => new ContrastCurve(3, 4.5, 7, 7),
2875
+ toneDeltaPair: s => new ToneDeltaPair(this.errorContainer(), this.error(), 10, "nearer", !1)
2876
+ });
2877
+ }
2878
+ errorDim() {}
2879
+ onError() {
2880
+ return DynamicColor.fromPalette({
2881
+ name: "on_error",
2882
+ palette: s => s.errorPalette,
2883
+ tone: s => s.isDark ? 20 : 100,
2884
+ background: s => this.error(),
2885
+ contrastCurve: s => new ContrastCurve(4.5, 7, 11, 21)
2886
+ });
2887
+ }
2888
+ errorContainer() {
2889
+ return DynamicColor.fromPalette({
2890
+ name: "error_container",
2891
+ palette: s => s.errorPalette,
2892
+ tone: s => s.isDark ? 30 : 90,
2893
+ isBackground: !0,
2894
+ background: s => this.highestSurface(s),
2895
+ contrastCurve: s => new ContrastCurve(1, 1, 3, 4.5),
2896
+ toneDeltaPair: s => new ToneDeltaPair(this.errorContainer(), this.error(), 10, "nearer", !1)
2897
+ });
2898
+ }
2899
+ onErrorContainer() {
2900
+ return DynamicColor.fromPalette({
2901
+ name: "on_error_container",
2902
+ palette: s => s.errorPalette,
2903
+ tone: s => isMonochrome(s) ? s.isDark ? 90 : 10 : s.isDark ? 90 : 30,
2904
+ background: s => this.errorContainer(),
2905
+ contrastCurve: s => new ContrastCurve(3, 4.5, 7, 11)
2906
+ });
2907
+ }
2908
+ primaryFixed() {
2909
+ return DynamicColor.fromPalette({
2910
+ name: "primary_fixed",
2911
+ palette: s => s.primaryPalette,
2912
+ tone: s => isMonochrome(s) ? 40 : 90,
2913
+ isBackground: !0,
2914
+ background: s => this.highestSurface(s),
2915
+ contrastCurve: s => new ContrastCurve(1, 1, 3, 4.5),
2916
+ toneDeltaPair: s => new ToneDeltaPair(this.primaryFixed(), this.primaryFixedDim(), 10, "lighter", !0)
2917
+ });
2918
+ }
2919
+ primaryFixedDim() {
2920
+ return DynamicColor.fromPalette({
2921
+ name: "primary_fixed_dim",
2922
+ palette: s => s.primaryPalette,
2923
+ tone: s => isMonochrome(s) ? 30 : 80,
2924
+ isBackground: !0,
2925
+ background: s => this.highestSurface(s),
2926
+ contrastCurve: s => new ContrastCurve(1, 1, 3, 4.5),
2927
+ toneDeltaPair: s => new ToneDeltaPair(this.primaryFixed(), this.primaryFixedDim(), 10, "lighter", !0)
2928
+ });
2929
+ }
2930
+ onPrimaryFixed() {
2931
+ return DynamicColor.fromPalette({
2932
+ name: "on_primary_fixed",
2933
+ palette: s => s.primaryPalette,
2934
+ tone: s => isMonochrome(s) ? 100 : 10,
2935
+ background: s => this.primaryFixedDim(),
2936
+ secondBackground: s => this.primaryFixed(),
2937
+ contrastCurve: s => new ContrastCurve(4.5, 7, 11, 21)
2938
+ });
2939
+ }
2940
+ onPrimaryFixedVariant() {
2941
+ return DynamicColor.fromPalette({
2942
+ name: "on_primary_fixed_variant",
2943
+ palette: s => s.primaryPalette,
2944
+ tone: s => isMonochrome(s) ? 90 : 30,
2945
+ background: s => this.primaryFixedDim(),
2946
+ secondBackground: s => this.primaryFixed(),
2947
+ contrastCurve: s => new ContrastCurve(3, 4.5, 7, 11)
2948
+ });
2949
+ }
2950
+ secondaryFixed() {
2951
+ return DynamicColor.fromPalette({
2952
+ name: "secondary_fixed",
2953
+ palette: s => s.secondaryPalette,
2954
+ tone: s => isMonochrome(s) ? 80 : 90,
2955
+ isBackground: !0,
2956
+ background: s => this.highestSurface(s),
2957
+ contrastCurve: s => new ContrastCurve(1, 1, 3, 4.5),
2958
+ toneDeltaPair: s => new ToneDeltaPair(this.secondaryFixed(), this.secondaryFixedDim(), 10, "lighter", !0)
2959
+ });
2960
+ }
2961
+ secondaryFixedDim() {
2962
+ return DynamicColor.fromPalette({
2963
+ name: "secondary_fixed_dim",
2964
+ palette: s => s.secondaryPalette,
2965
+ tone: s => isMonochrome(s) ? 70 : 80,
2966
+ isBackground: !0,
2967
+ background: s => this.highestSurface(s),
2968
+ contrastCurve: s => new ContrastCurve(1, 1, 3, 4.5),
2969
+ toneDeltaPair: s => new ToneDeltaPair(this.secondaryFixed(), this.secondaryFixedDim(), 10, "lighter", !0)
2970
+ });
2971
+ }
2972
+ onSecondaryFixed() {
2973
+ return DynamicColor.fromPalette({
2974
+ name: "on_secondary_fixed",
2975
+ palette: s => s.secondaryPalette,
2976
+ tone: s => 10,
2977
+ background: s => this.secondaryFixedDim(),
2978
+ secondBackground: s => this.secondaryFixed(),
2979
+ contrastCurve: s => new ContrastCurve(4.5, 7, 11, 21)
2980
+ });
2981
+ }
2982
+ onSecondaryFixedVariant() {
2983
+ return DynamicColor.fromPalette({
2984
+ name: "on_secondary_fixed_variant",
2985
+ palette: s => s.secondaryPalette,
2986
+ tone: s => isMonochrome(s) ? 25 : 30,
2987
+ background: s => this.secondaryFixedDim(),
2988
+ secondBackground: s => this.secondaryFixed(),
2989
+ contrastCurve: s => new ContrastCurve(3, 4.5, 7, 11)
2990
+ });
2991
+ }
2992
+ tertiaryFixed() {
2993
+ return DynamicColor.fromPalette({
2994
+ name: "tertiary_fixed",
2995
+ palette: s => s.tertiaryPalette,
2996
+ tone: s => isMonochrome(s) ? 40 : 90,
2997
+ isBackground: !0,
2998
+ background: s => this.highestSurface(s),
2999
+ contrastCurve: s => new ContrastCurve(1, 1, 3, 4.5),
3000
+ toneDeltaPair: s => new ToneDeltaPair(this.tertiaryFixed(), this.tertiaryFixedDim(), 10, "lighter", !0)
3001
+ });
3002
+ }
3003
+ tertiaryFixedDim() {
3004
+ return DynamicColor.fromPalette({
3005
+ name: "tertiary_fixed_dim",
3006
+ palette: s => s.tertiaryPalette,
3007
+ tone: s => isMonochrome(s) ? 30 : 80,
3008
+ isBackground: !0,
3009
+ background: s => this.highestSurface(s),
3010
+ contrastCurve: s => new ContrastCurve(1, 1, 3, 4.5),
3011
+ toneDeltaPair: s => new ToneDeltaPair(this.tertiaryFixed(), this.tertiaryFixedDim(), 10, "lighter", !0)
3012
+ });
3013
+ }
3014
+ onTertiaryFixed() {
3015
+ return DynamicColor.fromPalette({
3016
+ name: "on_tertiary_fixed",
3017
+ palette: s => s.tertiaryPalette,
3018
+ tone: s => isMonochrome(s) ? 100 : 10,
3019
+ background: s => this.tertiaryFixedDim(),
3020
+ secondBackground: s => this.tertiaryFixed(),
3021
+ contrastCurve: s => new ContrastCurve(4.5, 7, 11, 21)
3022
+ });
3023
+ }
3024
+ onTertiaryFixedVariant() {
3025
+ return DynamicColor.fromPalette({
3026
+ name: "on_tertiary_fixed_variant",
3027
+ palette: s => s.tertiaryPalette,
3028
+ tone: s => isMonochrome(s) ? 90 : 30,
3029
+ background: s => this.tertiaryFixedDim(),
3030
+ secondBackground: s => this.tertiaryFixed(),
3031
+ contrastCurve: s => new ContrastCurve(3, 4.5, 7, 11)
3032
+ });
3033
+ }
3034
+ highestSurface(s) {
3035
+ return s.isDark ? this.surfaceBright() : this.surfaceDim();
3036
+ }
3037
+ }
3038
+ function tMaxC(palette, lowerBound, upperBound, chromaMultiplier) {
3039
+ if (lowerBound === void 0) {
3040
+ lowerBound = 0;
3041
+ }
3042
+ if (upperBound === void 0) {
3043
+ upperBound = 100;
3044
+ }
3045
+ if (chromaMultiplier === void 0) {
3046
+ chromaMultiplier = 1;
3047
+ }
3048
+ return clampDouble(lowerBound, upperBound, findBestToneForChroma(palette.hue, palette.chroma * chromaMultiplier, 100, !0));
3049
+ }
3050
+ function tMinC(palette, lowerBound, upperBound) {
3051
+ if (lowerBound === void 0) {
3052
+ lowerBound = 0;
3053
+ }
3054
+ if (upperBound === void 0) {
3055
+ upperBound = 100;
3056
+ }
3057
+ return clampDouble(lowerBound, upperBound, findBestToneForChroma(palette.hue, palette.chroma, 0, !1));
3058
+ }
3059
+ function findBestToneForChroma(hue, chroma, tone, byDecreasingTone) {
3060
+ let answer = tone,
3061
+ bestCandidate = Hct.from(hue, chroma, answer);
3062
+ for (; bestCandidate.chroma < chroma && !(tone < 0 || tone > 100);) {
3063
+ tone += byDecreasingTone ? -1 : 1;
3064
+ const newCandidate = Hct.from(hue, chroma, tone);
3065
+ bestCandidate.chroma < newCandidate.chroma && (bestCandidate = newCandidate, answer = tone);
3066
+ }
3067
+ return answer;
2224
3068
  }
2225
- function performAlbers(prealbers, scheme) {
2226
- const albersd = prealbers.inViewingConditions(viewingConditionsForAlbers(scheme));
2227
- return DynamicColor.tonePrefersLightForeground(prealbers.tone) && !DynamicColor.toneAllowsLightForeground(albersd.tone) ? DynamicColor.enableLightForeground(prealbers.tone) : DynamicColor.enableLightForeground(albersd.tone);
3069
+ function getCurve(defaultContrast) {
3070
+ return 1.5 === defaultContrast ? new ContrastCurve(1.5, 1.5, 3, 5.5) : 3 === defaultContrast ? new ContrastCurve(3, 3, 4.5, 7) : 4.5 === defaultContrast ? new ContrastCurve(4.5, 4.5, 7, 11) : 6 === defaultContrast ? new ContrastCurve(6, 6, 7, 11) : 7 === defaultContrast ? new ContrastCurve(7, 7, 11, 21) : 9 === defaultContrast ? new ContrastCurve(9, 9, 11, 21) : 11 === defaultContrast ? new ContrastCurve(11, 11, 21, 21) : 21 === defaultContrast ? new ContrastCurve(21, 21, 21, 21) : new ContrastCurve(defaultContrast, defaultContrast, 7, 21);
3071
+ }
3072
+ class ColorSpecDelegateImpl2025 extends ColorSpecDelegateImpl2021 {
3073
+ surface() {
3074
+ const color2025 = DynamicColor.fromPalette({
3075
+ name: "surface",
3076
+ palette: s => s.neutralPalette,
3077
+ tone: s => (super.surface().tone(s), "phone" === s.platform ? s.isDark ? 4 : Hct.isYellow(s.neutralPalette.hue) ? 99 : s.variant === Variant.VIBRANT ? 97 : 98 : 0),
3078
+ isBackground: !0
3079
+ });
3080
+ return extendSpecVersion(super.surface(), "2025", color2025);
3081
+ }
3082
+ surfaceDim() {
3083
+ const color2025 = DynamicColor.fromPalette({
3084
+ name: "surface_dim",
3085
+ palette: s => s.neutralPalette,
3086
+ tone: s => s.isDark ? 4 : Hct.isYellow(s.neutralPalette.hue) ? 90 : s.variant === Variant.VIBRANT ? 85 : 87,
3087
+ isBackground: !0,
3088
+ chromaMultiplier: s => {
3089
+ if (!s.isDark) {
3090
+ if (s.variant === Variant.NEUTRAL) return 2.5;
3091
+ if (s.variant === Variant.TONAL_SPOT) return 1.7;
3092
+ if (s.variant === Variant.EXPRESSIVE) return Hct.isYellow(s.neutralPalette.hue) ? 2.7 : 1.75;
3093
+ if (s.variant === Variant.VIBRANT) return 1.36;
3094
+ }
3095
+ return 1;
3096
+ }
3097
+ });
3098
+ return extendSpecVersion(super.surfaceDim(), "2025", color2025);
3099
+ }
3100
+ surfaceBright() {
3101
+ const color2025 = DynamicColor.fromPalette({
3102
+ name: "surface_bright",
3103
+ palette: s => s.neutralPalette,
3104
+ tone: s => s.isDark ? 18 : Hct.isYellow(s.neutralPalette.hue) ? 99 : s.variant === Variant.VIBRANT ? 97 : 98,
3105
+ isBackground: !0,
3106
+ chromaMultiplier: s => {
3107
+ if (s.isDark) {
3108
+ if (s.variant === Variant.NEUTRAL) return 2.5;
3109
+ if (s.variant === Variant.TONAL_SPOT) return 1.7;
3110
+ if (s.variant === Variant.EXPRESSIVE) return Hct.isYellow(s.neutralPalette.hue) ? 2.7 : 1.75;
3111
+ if (s.variant === Variant.VIBRANT) return 1.36;
3112
+ }
3113
+ return 1;
3114
+ }
3115
+ });
3116
+ return extendSpecVersion(super.surfaceBright(), "2025", color2025);
3117
+ }
3118
+ surfaceContainerLowest() {
3119
+ const color2025 = DynamicColor.fromPalette({
3120
+ name: "surface_container_lowest",
3121
+ palette: s => s.neutralPalette,
3122
+ tone: s => s.isDark ? 0 : 100,
3123
+ isBackground: !0
3124
+ });
3125
+ return extendSpecVersion(super.surfaceContainerLowest(), "2025", color2025);
3126
+ }
3127
+ surfaceContainerLow() {
3128
+ const color2025 = DynamicColor.fromPalette({
3129
+ name: "surface_container_low",
3130
+ palette: s => s.neutralPalette,
3131
+ tone: s => "phone" === s.platform ? s.isDark ? 6 : Hct.isYellow(s.neutralPalette.hue) ? 98 : s.variant === Variant.VIBRANT ? 95 : 96 : 15,
3132
+ isBackground: !0,
3133
+ chromaMultiplier: s => {
3134
+ if ("phone" === s.platform) {
3135
+ if (s.variant === Variant.NEUTRAL) return 1.3;
3136
+ if (s.variant === Variant.TONAL_SPOT) return 1.25;
3137
+ if (s.variant === Variant.EXPRESSIVE) return Hct.isYellow(s.neutralPalette.hue) ? 1.3 : 1.15;
3138
+ if (s.variant === Variant.VIBRANT) return 1.08;
3139
+ }
3140
+ return 1;
3141
+ }
3142
+ });
3143
+ return extendSpecVersion(super.surfaceContainerLow(), "2025", color2025);
3144
+ }
3145
+ surfaceContainer() {
3146
+ const color2025 = DynamicColor.fromPalette({
3147
+ name: "surface_container",
3148
+ palette: s => s.neutralPalette,
3149
+ tone: s => "phone" === s.platform ? s.isDark ? 9 : Hct.isYellow(s.neutralPalette.hue) ? 96 : s.variant === Variant.VIBRANT ? 92 : 94 : 20,
3150
+ isBackground: !0,
3151
+ chromaMultiplier: s => {
3152
+ if ("phone" === s.platform) {
3153
+ if (s.variant === Variant.NEUTRAL) return 1.6;
3154
+ if (s.variant === Variant.TONAL_SPOT) return 1.4;
3155
+ if (s.variant === Variant.EXPRESSIVE) return Hct.isYellow(s.neutralPalette.hue) ? 1.6 : 1.3;
3156
+ if (s.variant === Variant.VIBRANT) return 1.15;
3157
+ }
3158
+ return 1;
3159
+ }
3160
+ });
3161
+ return extendSpecVersion(super.surfaceContainer(), "2025", color2025);
3162
+ }
3163
+ surfaceContainerHigh() {
3164
+ const color2025 = DynamicColor.fromPalette({
3165
+ name: "surface_container_high",
3166
+ palette: s => s.neutralPalette,
3167
+ tone: s => "phone" === s.platform ? s.isDark ? 12 : Hct.isYellow(s.neutralPalette.hue) ? 94 : s.variant === Variant.VIBRANT ? 90 : 92 : 25,
3168
+ isBackground: !0,
3169
+ chromaMultiplier: s => {
3170
+ if ("phone" === s.platform) {
3171
+ if (s.variant === Variant.NEUTRAL) return 1.9;
3172
+ if (s.variant === Variant.TONAL_SPOT) return 1.5;
3173
+ if (s.variant === Variant.EXPRESSIVE) return Hct.isYellow(s.neutralPalette.hue) ? 1.95 : 1.45;
3174
+ if (s.variant === Variant.VIBRANT) return 1.22;
3175
+ }
3176
+ return 1;
3177
+ }
3178
+ });
3179
+ return extendSpecVersion(super.surfaceContainerHigh(), "2025", color2025);
3180
+ }
3181
+ surfaceContainerHighest() {
3182
+ const color2025 = DynamicColor.fromPalette({
3183
+ name: "surface_container_highest",
3184
+ palette: s => s.neutralPalette,
3185
+ tone: s => s.isDark ? 15 : Hct.isYellow(s.neutralPalette.hue) ? 92 : s.variant === Variant.VIBRANT ? 88 : 90,
3186
+ isBackground: !0,
3187
+ chromaMultiplier: s => s.variant === Variant.NEUTRAL ? 2.2 : s.variant === Variant.TONAL_SPOT ? 1.7 : s.variant === Variant.EXPRESSIVE ? Hct.isYellow(s.neutralPalette.hue) ? 2.3 : 1.6 : s.variant === Variant.VIBRANT ? 1.29 : 1
3188
+ });
3189
+ return extendSpecVersion(super.surfaceContainerHighest(), "2025", color2025);
3190
+ }
3191
+ onSurface() {
3192
+ const color2025 = DynamicColor.fromPalette({
3193
+ name: "on_surface",
3194
+ palette: s => s.neutralPalette,
3195
+ tone: s => s.variant === Variant.VIBRANT ? tMaxC(s.neutralPalette, 0, 100, 1.1) : DynamicColor.getInitialToneFromBackground(s => "phone" === s.platform ? this.highestSurface(s) : this.surfaceContainerHigh())(s),
3196
+ chromaMultiplier: s => {
3197
+ if ("phone" === s.platform) {
3198
+ if (s.variant === Variant.NEUTRAL) return 2.2;
3199
+ if (s.variant === Variant.TONAL_SPOT) return 1.7;
3200
+ if (s.variant === Variant.EXPRESSIVE) return Hct.isYellow(s.neutralPalette.hue) ? s.isDark ? 3 : 2.3 : 1.6;
3201
+ }
3202
+ return 1;
3203
+ },
3204
+ background: s => "phone" === s.platform ? this.highestSurface(s) : this.surfaceContainerHigh(),
3205
+ contrastCurve: s => s.isDark && "phone" === s.platform ? getCurve(11) : getCurve(9)
3206
+ });
3207
+ return extendSpecVersion(super.onSurface(), "2025", color2025);
3208
+ }
3209
+ onSurfaceVariant() {
3210
+ const color2025 = DynamicColor.fromPalette({
3211
+ name: "on_surface_variant",
3212
+ palette: s => s.neutralPalette,
3213
+ chromaMultiplier: s => {
3214
+ if ("phone" === s.platform) {
3215
+ if (s.variant === Variant.NEUTRAL) return 2.2;
3216
+ if (s.variant === Variant.TONAL_SPOT) return 1.7;
3217
+ if (s.variant === Variant.EXPRESSIVE) return Hct.isYellow(s.neutralPalette.hue) ? s.isDark ? 3 : 2.3 : 1.6;
3218
+ }
3219
+ return 1;
3220
+ },
3221
+ background: s => "phone" === s.platform ? this.highestSurface(s) : this.surfaceContainerHigh(),
3222
+ contrastCurve: s => "phone" === s.platform ? s.isDark ? getCurve(6) : getCurve(4.5) : getCurve(7)
3223
+ });
3224
+ return extendSpecVersion(super.onSurfaceVariant(), "2025", color2025);
3225
+ }
3226
+ outline() {
3227
+ const color2025 = DynamicColor.fromPalette({
3228
+ name: "outline",
3229
+ palette: s => s.neutralPalette,
3230
+ chromaMultiplier: s => {
3231
+ if ("phone" === s.platform) {
3232
+ if (s.variant === Variant.NEUTRAL) return 2.2;
3233
+ if (s.variant === Variant.TONAL_SPOT) return 1.7;
3234
+ if (s.variant === Variant.EXPRESSIVE) return Hct.isYellow(s.neutralPalette.hue) ? s.isDark ? 3 : 2.3 : 1.6;
3235
+ }
3236
+ return 1;
3237
+ },
3238
+ background: s => "phone" === s.platform ? this.highestSurface(s) : this.surfaceContainerHigh(),
3239
+ contrastCurve: s => "phone" === s.platform ? getCurve(3) : getCurve(4.5)
3240
+ });
3241
+ return extendSpecVersion(super.outline(), "2025", color2025);
3242
+ }
3243
+ outlineVariant() {
3244
+ const color2025 = DynamicColor.fromPalette({
3245
+ name: "outline_variant",
3246
+ palette: s => s.neutralPalette,
3247
+ chromaMultiplier: s => {
3248
+ if ("phone" === s.platform) {
3249
+ if (s.variant === Variant.NEUTRAL) return 2.2;
3250
+ if (s.variant === Variant.TONAL_SPOT) return 1.7;
3251
+ if (s.variant === Variant.EXPRESSIVE) return Hct.isYellow(s.neutralPalette.hue) ? s.isDark ? 3 : 2.3 : 1.6;
3252
+ }
3253
+ return 1;
3254
+ },
3255
+ background: s => "phone" === s.platform ? this.highestSurface(s) : this.surfaceContainerHigh(),
3256
+ contrastCurve: s => "phone" === s.platform ? getCurve(1.5) : getCurve(3)
3257
+ });
3258
+ return extendSpecVersion(super.outlineVariant(), "2025", color2025);
3259
+ }
3260
+ inverseSurface() {
3261
+ const color2025 = DynamicColor.fromPalette({
3262
+ name: "inverse_surface",
3263
+ palette: s => s.neutralPalette,
3264
+ tone: s => s.isDark ? 98 : 4,
3265
+ isBackground: !0
3266
+ });
3267
+ return extendSpecVersion(super.inverseSurface(), "2025", color2025);
3268
+ }
3269
+ inverseOnSurface() {
3270
+ const color2025 = DynamicColor.fromPalette({
3271
+ name: "inverse_on_surface",
3272
+ palette: s => s.neutralPalette,
3273
+ background: s => this.inverseSurface(),
3274
+ contrastCurve: s => getCurve(7)
3275
+ });
3276
+ return extendSpecVersion(super.inverseOnSurface(), "2025", color2025);
3277
+ }
3278
+ primary() {
3279
+ const color2025 = DynamicColor.fromPalette({
3280
+ name: "primary",
3281
+ palette: s => s.primaryPalette,
3282
+ tone: s => s.variant === Variant.NEUTRAL ? "phone" === s.platform ? s.isDark ? 80 : 40 : 90 : s.variant === Variant.TONAL_SPOT ? "phone" === s.platform ? s.isDark ? 80 : tMaxC(s.primaryPalette) : tMaxC(s.primaryPalette, 0, 90) : s.variant === Variant.EXPRESSIVE ? "phone" === s.platform ? tMaxC(s.primaryPalette, 0, Hct.isYellow(s.primaryPalette.hue) ? 25 : Hct.isCyan(s.primaryPalette.hue) ? 88 : 98) : tMaxC(s.primaryPalette) : "phone" === s.platform ? tMaxC(s.primaryPalette, 0, Hct.isCyan(s.primaryPalette.hue) ? 88 : 98) : tMaxC(s.primaryPalette),
3283
+ isBackground: !0,
3284
+ background: s => "phone" === s.platform ? this.highestSurface(s) : this.surfaceContainerHigh(),
3285
+ contrastCurve: s => "phone" === s.platform ? getCurve(4.5) : getCurve(7),
3286
+ toneDeltaPair: s => "phone" === s.platform ? new ToneDeltaPair(this.primaryContainer(), this.primary(), 5, "relative_lighter", !0, "farther") : void 0
3287
+ });
3288
+ return extendSpecVersion(super.primary(), "2025", color2025);
3289
+ }
3290
+ primaryDim() {
3291
+ return DynamicColor.fromPalette({
3292
+ name: "primary_dim",
3293
+ palette: s => s.primaryPalette,
3294
+ tone: s => s.variant === Variant.NEUTRAL ? 85 : s.variant === Variant.TONAL_SPOT ? tMaxC(s.primaryPalette, 0, 90) : tMaxC(s.primaryPalette),
3295
+ isBackground: !0,
3296
+ background: s => this.surfaceContainerHigh(),
3297
+ contrastCurve: s => getCurve(4.5),
3298
+ toneDeltaPair: s => new ToneDeltaPair(this.primaryDim(), this.primary(), 5, "darker", !0, "farther")
3299
+ });
3300
+ }
3301
+ onPrimary() {
3302
+ const color2025 = DynamicColor.fromPalette({
3303
+ name: "on_primary",
3304
+ palette: s => s.primaryPalette,
3305
+ background: s => "phone" === s.platform ? this.primary() : this.primaryDim(),
3306
+ contrastCurve: s => "phone" === s.platform ? getCurve(6) : getCurve(7)
3307
+ });
3308
+ return extendSpecVersion(super.onPrimary(), "2025", color2025);
3309
+ }
3310
+ primaryContainer() {
3311
+ const color2025 = DynamicColor.fromPalette({
3312
+ name: "primary_container",
3313
+ palette: s => s.primaryPalette,
3314
+ tone: s => "watch" === s.platform ? 30 : s.variant === Variant.NEUTRAL ? s.isDark ? 30 : 90 : s.variant === Variant.TONAL_SPOT ? s.isDark ? tMinC(s.primaryPalette, 35, 93) : tMaxC(s.primaryPalette, 0, 90) : s.variant === Variant.EXPRESSIVE ? s.isDark ? tMaxC(s.primaryPalette, 30, 93) : tMaxC(s.primaryPalette, 78, Hct.isCyan(s.primaryPalette.hue) ? 88 : 90) : s.isDark ? tMinC(s.primaryPalette, 66, 93) : tMaxC(s.primaryPalette, 66, Hct.isCyan(s.primaryPalette.hue) ? 88 : 93),
3315
+ isBackground: !0,
3316
+ background: s => "phone" === s.platform ? this.highestSurface(s) : void 0,
3317
+ toneDeltaPair: s => "phone" === s.platform ? void 0 : new ToneDeltaPair(this.primaryContainer(), this.primaryDim(), 10, "darker", !0, "farther"),
3318
+ contrastCurve: s => "phone" === s.platform && s.contrastLevel > 0 ? getCurve(1.5) : void 0
3319
+ });
3320
+ return extendSpecVersion(super.primaryContainer(), "2025", color2025);
3321
+ }
3322
+ onPrimaryContainer() {
3323
+ const color2025 = DynamicColor.fromPalette({
3324
+ name: "on_primary_container",
3325
+ palette: s => s.primaryPalette,
3326
+ background: s => this.primaryContainer(),
3327
+ contrastCurve: s => "phone" === s.platform ? getCurve(6) : getCurve(7)
3328
+ });
3329
+ return extendSpecVersion(super.onPrimaryContainer(), "2025", color2025);
3330
+ }
3331
+ primaryFixed() {
3332
+ const color2025 = DynamicColor.fromPalette({
3333
+ name: "primary_fixed",
3334
+ palette: s => s.primaryPalette,
3335
+ tone: s => {
3336
+ let tempS = Object.assign({}, s, {
3337
+ isDark: !1,
3338
+ contrastLevel: 0
3339
+ });
3340
+ return this.primaryContainer().getTone(tempS);
3341
+ },
3342
+ isBackground: !0,
3343
+ background: s => "phone" === s.platform ? this.highestSurface(s) : void 0,
3344
+ contrastCurve: s => "phone" === s.platform && s.contrastLevel > 0 ? getCurve(1.5) : void 0
3345
+ });
3346
+ return extendSpecVersion(super.primaryFixed(), "2025", color2025);
3347
+ }
3348
+ primaryFixedDim() {
3349
+ const color2025 = DynamicColor.fromPalette({
3350
+ name: "primary_fixed_dim",
3351
+ palette: s => s.primaryPalette,
3352
+ tone: s => this.primaryFixed().getTone(s),
3353
+ isBackground: !0,
3354
+ toneDeltaPair: s => new ToneDeltaPair(this.primaryFixedDim(), this.primaryFixed(), 5, "darker", !0, "exact")
3355
+ });
3356
+ return extendSpecVersion(super.primaryFixedDim(), "2025", color2025);
3357
+ }
3358
+ onPrimaryFixed() {
3359
+ const color2025 = DynamicColor.fromPalette({
3360
+ name: "on_primary_fixed",
3361
+ palette: s => s.primaryPalette,
3362
+ background: s => this.primaryFixedDim(),
3363
+ contrastCurve: s => getCurve(7)
3364
+ });
3365
+ return extendSpecVersion(super.onPrimaryFixed(), "2025", color2025);
3366
+ }
3367
+ onPrimaryFixedVariant() {
3368
+ const color2025 = DynamicColor.fromPalette({
3369
+ name: "on_primary_fixed_variant",
3370
+ palette: s => s.primaryPalette,
3371
+ background: s => this.primaryFixedDim(),
3372
+ contrastCurve: s => getCurve(4.5)
3373
+ });
3374
+ return extendSpecVersion(super.onPrimaryFixedVariant(), "2025", color2025);
3375
+ }
3376
+ inversePrimary() {
3377
+ const color2025 = DynamicColor.fromPalette({
3378
+ name: "inverse_primary",
3379
+ palette: s => s.primaryPalette,
3380
+ tone: s => tMaxC(s.primaryPalette),
3381
+ background: s => this.inverseSurface(),
3382
+ contrastCurve: s => "phone" === s.platform ? getCurve(6) : getCurve(7)
3383
+ });
3384
+ return extendSpecVersion(super.inversePrimary(), "2025", color2025);
3385
+ }
3386
+ secondary() {
3387
+ const color2025 = DynamicColor.fromPalette({
3388
+ name: "secondary",
3389
+ palette: s => s.secondaryPalette,
3390
+ tone: s => "watch" === s.platform ? s.variant === Variant.NEUTRAL ? 90 : tMaxC(s.secondaryPalette, 0, 90) : s.variant === Variant.NEUTRAL ? s.isDark ? tMinC(s.secondaryPalette, 0, 98) : tMaxC(s.secondaryPalette) : s.variant === Variant.VIBRANT ? tMaxC(s.secondaryPalette, 0, s.isDark ? 90 : 98) : s.isDark ? 80 : tMaxC(s.secondaryPalette),
3391
+ isBackground: !0,
3392
+ background: s => "phone" === s.platform ? this.highestSurface(s) : this.surfaceContainerHigh(),
3393
+ contrastCurve: s => "phone" === s.platform ? getCurve(4.5) : getCurve(7),
3394
+ toneDeltaPair: s => "phone" === s.platform ? new ToneDeltaPair(this.secondaryContainer(), this.secondary(), 5, "relative_lighter", !0, "farther") : void 0
3395
+ });
3396
+ return extendSpecVersion(super.secondary(), "2025", color2025);
3397
+ }
3398
+ secondaryDim() {
3399
+ return DynamicColor.fromPalette({
3400
+ name: "secondary_dim",
3401
+ palette: s => s.secondaryPalette,
3402
+ tone: s => s.variant === Variant.NEUTRAL ? 85 : tMaxC(s.secondaryPalette, 0, 90),
3403
+ isBackground: !0,
3404
+ background: s => this.surfaceContainerHigh(),
3405
+ contrastCurve: s => getCurve(4.5),
3406
+ toneDeltaPair: s => new ToneDeltaPair(this.secondaryDim(), this.secondary(), 5, "darker", !0, "farther")
3407
+ });
3408
+ }
3409
+ onSecondary() {
3410
+ const color2025 = DynamicColor.fromPalette({
3411
+ name: "on_secondary",
3412
+ palette: s => s.secondaryPalette,
3413
+ background: s => "phone" === s.platform ? this.secondary() : this.secondaryDim(),
3414
+ contrastCurve: s => "phone" === s.platform ? getCurve(6) : getCurve(7)
3415
+ });
3416
+ return extendSpecVersion(super.onSecondary(), "2025", color2025);
3417
+ }
3418
+ secondaryContainer() {
3419
+ const color2025 = DynamicColor.fromPalette({
3420
+ name: "secondary_container",
3421
+ palette: s => s.secondaryPalette,
3422
+ tone: s => "watch" === s.platform ? 30 : s.variant === Variant.VIBRANT ? s.isDark ? tMinC(s.secondaryPalette, 30, 40) : tMaxC(s.secondaryPalette, 84, 90) : s.variant === Variant.EXPRESSIVE ? s.isDark ? 15 : tMaxC(s.secondaryPalette, 90, 95) : s.isDark ? 25 : 90,
3423
+ isBackground: !0,
3424
+ background: s => "phone" === s.platform ? this.highestSurface(s) : void 0,
3425
+ toneDeltaPair: s => "watch" === s.platform ? new ToneDeltaPair(this.secondaryContainer(), this.secondaryDim(), 10, "darker", !0, "farther") : void 0,
3426
+ contrastCurve: s => "phone" === s.platform && s.contrastLevel > 0 ? getCurve(1.5) : void 0
3427
+ });
3428
+ return extendSpecVersion(super.secondaryContainer(), "2025", color2025);
3429
+ }
3430
+ onSecondaryContainer() {
3431
+ const color2025 = DynamicColor.fromPalette({
3432
+ name: "on_secondary_container",
3433
+ palette: s => s.secondaryPalette,
3434
+ background: s => this.secondaryContainer(),
3435
+ contrastCurve: s => "phone" === s.platform ? getCurve(6) : getCurve(7)
3436
+ });
3437
+ return extendSpecVersion(super.onSecondaryContainer(), "2025", color2025);
3438
+ }
3439
+ secondaryFixed() {
3440
+ const color2025 = DynamicColor.fromPalette({
3441
+ name: "secondary_fixed",
3442
+ palette: s => s.secondaryPalette,
3443
+ tone: s => {
3444
+ let tempS = Object.assign({}, s, {
3445
+ isDark: !1,
3446
+ contrastLevel: 0
3447
+ });
3448
+ return this.secondaryContainer().getTone(tempS);
3449
+ },
3450
+ isBackground: !0,
3451
+ background: s => "phone" === s.platform ? this.highestSurface(s) : void 0,
3452
+ contrastCurve: s => "phone" === s.platform && s.contrastLevel > 0 ? getCurve(1.5) : void 0
3453
+ });
3454
+ return extendSpecVersion(super.secondaryFixed(), "2025", color2025);
3455
+ }
3456
+ secondaryFixedDim() {
3457
+ const color2025 = DynamicColor.fromPalette({
3458
+ name: "secondary_fixed_dim",
3459
+ palette: s => s.secondaryPalette,
3460
+ tone: s => this.secondaryFixed().getTone(s),
3461
+ isBackground: !0,
3462
+ toneDeltaPair: s => new ToneDeltaPair(this.secondaryFixedDim(), this.secondaryFixed(), 5, "darker", !0, "exact")
3463
+ });
3464
+ return extendSpecVersion(super.secondaryFixedDim(), "2025", color2025);
3465
+ }
3466
+ onSecondaryFixed() {
3467
+ const color2025 = DynamicColor.fromPalette({
3468
+ name: "on_secondary_fixed",
3469
+ palette: s => s.secondaryPalette,
3470
+ background: s => this.secondaryFixedDim(),
3471
+ contrastCurve: s => getCurve(7)
3472
+ });
3473
+ return extendSpecVersion(super.onSecondaryFixed(), "2025", color2025);
3474
+ }
3475
+ onSecondaryFixedVariant() {
3476
+ const color2025 = DynamicColor.fromPalette({
3477
+ name: "on_secondary_fixed_variant",
3478
+ palette: s => s.secondaryPalette,
3479
+ background: s => this.secondaryFixedDim(),
3480
+ contrastCurve: s => getCurve(4.5)
3481
+ });
3482
+ return extendSpecVersion(super.onSecondaryFixedVariant(), "2025", color2025);
3483
+ }
3484
+ tertiary() {
3485
+ const color2025 = DynamicColor.fromPalette({
3486
+ name: "tertiary",
3487
+ palette: s => s.tertiaryPalette,
3488
+ tone: s => "watch" === s.platform ? s.variant === Variant.TONAL_SPOT ? tMaxC(s.tertiaryPalette, 0, 90) : tMaxC(s.tertiaryPalette) : s.variant === Variant.EXPRESSIVE || s.variant === Variant.VIBRANT ? tMaxC(s.tertiaryPalette, 0, Hct.isCyan(s.tertiaryPalette.hue) ? 88 : s.isDark ? 98 : 100) : s.isDark ? tMaxC(s.tertiaryPalette, 0, 98) : tMaxC(s.tertiaryPalette),
3489
+ isBackground: !0,
3490
+ background: s => "phone" === s.platform ? this.highestSurface(s) : this.surfaceContainerHigh(),
3491
+ contrastCurve: s => "phone" === s.platform ? getCurve(4.5) : getCurve(7),
3492
+ toneDeltaPair: s => "phone" === s.platform ? new ToneDeltaPair(this.tertiaryContainer(), this.tertiary(), 5, "relative_lighter", !0, "farther") : void 0
3493
+ });
3494
+ return extendSpecVersion(super.tertiary(), "2025", color2025);
3495
+ }
3496
+ tertiaryDim() {
3497
+ return DynamicColor.fromPalette({
3498
+ name: "tertiary_dim",
3499
+ palette: s => s.tertiaryPalette,
3500
+ tone: s => s.variant === Variant.TONAL_SPOT ? tMaxC(s.tertiaryPalette, 0, 90) : tMaxC(s.tertiaryPalette),
3501
+ isBackground: !0,
3502
+ background: s => this.surfaceContainerHigh(),
3503
+ contrastCurve: s => getCurve(4.5),
3504
+ toneDeltaPair: s => new ToneDeltaPair(this.tertiaryDim(), this.tertiary(), 5, "darker", !0, "farther")
3505
+ });
3506
+ }
3507
+ onTertiary() {
3508
+ const color2025 = DynamicColor.fromPalette({
3509
+ name: "on_tertiary",
3510
+ palette: s => s.tertiaryPalette,
3511
+ background: s => "phone" === s.platform ? this.tertiary() : this.tertiaryDim(),
3512
+ contrastCurve: s => "phone" === s.platform ? getCurve(6) : getCurve(7)
3513
+ });
3514
+ return extendSpecVersion(super.onTertiary(), "2025", color2025);
3515
+ }
3516
+ tertiaryContainer() {
3517
+ const color2025 = DynamicColor.fromPalette({
3518
+ name: "tertiary_container",
3519
+ palette: s => s.tertiaryPalette,
3520
+ tone: s => "watch" === s.platform ? s.variant === Variant.TONAL_SPOT ? tMaxC(s.tertiaryPalette, 0, 90) : tMaxC(s.tertiaryPalette) : s.variant === Variant.NEUTRAL ? s.isDark ? tMaxC(s.tertiaryPalette, 0, 93) : tMaxC(s.tertiaryPalette, 0, 96) : s.variant === Variant.TONAL_SPOT ? tMaxC(s.tertiaryPalette, 0, s.isDark ? 93 : 100) : s.variant === Variant.EXPRESSIVE ? tMaxC(s.tertiaryPalette, 75, Hct.isCyan(s.tertiaryPalette.hue) ? 88 : s.isDark ? 93 : 100) : s.isDark ? tMaxC(s.tertiaryPalette, 0, 93) : tMaxC(s.tertiaryPalette, 72, 100),
3521
+ isBackground: !0,
3522
+ background: s => "phone" === s.platform ? this.highestSurface(s) : void 0,
3523
+ toneDeltaPair: s => "watch" === s.platform ? new ToneDeltaPair(this.tertiaryContainer(), this.tertiaryDim(), 10, "darker", !0, "farther") : void 0,
3524
+ contrastCurve: s => "phone" === s.platform && s.contrastLevel > 0 ? getCurve(1.5) : void 0
3525
+ });
3526
+ return extendSpecVersion(super.tertiaryContainer(), "2025", color2025);
3527
+ }
3528
+ onTertiaryContainer() {
3529
+ const color2025 = DynamicColor.fromPalette({
3530
+ name: "on_tertiary_container",
3531
+ palette: s => s.tertiaryPalette,
3532
+ background: s => this.tertiaryContainer(),
3533
+ contrastCurve: s => "phone" === s.platform ? getCurve(6) : getCurve(7)
3534
+ });
3535
+ return extendSpecVersion(super.onTertiaryContainer(), "2025", color2025);
3536
+ }
3537
+ tertiaryFixed() {
3538
+ const color2025 = DynamicColor.fromPalette({
3539
+ name: "tertiary_fixed",
3540
+ palette: s => s.tertiaryPalette,
3541
+ tone: s => {
3542
+ let tempS = Object.assign({}, s, {
3543
+ isDark: !1,
3544
+ contrastLevel: 0
3545
+ });
3546
+ return this.tertiaryContainer().getTone(tempS);
3547
+ },
3548
+ isBackground: !0,
3549
+ background: s => "phone" === s.platform ? this.highestSurface(s) : void 0,
3550
+ contrastCurve: s => "phone" === s.platform && s.contrastLevel > 0 ? getCurve(1.5) : void 0
3551
+ });
3552
+ return extendSpecVersion(super.tertiaryFixed(), "2025", color2025);
3553
+ }
3554
+ tertiaryFixedDim() {
3555
+ const color2025 = DynamicColor.fromPalette({
3556
+ name: "tertiary_fixed_dim",
3557
+ palette: s => s.tertiaryPalette,
3558
+ tone: s => this.tertiaryFixed().getTone(s),
3559
+ isBackground: !0,
3560
+ toneDeltaPair: s => new ToneDeltaPair(this.tertiaryFixedDim(), this.tertiaryFixed(), 5, "darker", !0, "exact")
3561
+ });
3562
+ return extendSpecVersion(super.tertiaryFixedDim(), "2025", color2025);
3563
+ }
3564
+ onTertiaryFixed() {
3565
+ const color2025 = DynamicColor.fromPalette({
3566
+ name: "on_tertiary_fixed",
3567
+ palette: s => s.tertiaryPalette,
3568
+ background: s => this.tertiaryFixedDim(),
3569
+ contrastCurve: s => getCurve(7)
3570
+ });
3571
+ return extendSpecVersion(super.onTertiaryFixed(), "2025", color2025);
3572
+ }
3573
+ onTertiaryFixedVariant() {
3574
+ const color2025 = DynamicColor.fromPalette({
3575
+ name: "on_tertiary_fixed_variant",
3576
+ palette: s => s.tertiaryPalette,
3577
+ background: s => this.tertiaryFixedDim(),
3578
+ contrastCurve: s => getCurve(4.5)
3579
+ });
3580
+ return extendSpecVersion(super.onTertiaryFixedVariant(), "2025", color2025);
3581
+ }
3582
+ error() {
3583
+ const color2025 = DynamicColor.fromPalette({
3584
+ name: "error",
3585
+ palette: s => s.errorPalette,
3586
+ tone: s => "phone" === s.platform ? s.isDark ? tMinC(s.errorPalette, 0, 98) : tMaxC(s.errorPalette) : tMinC(s.errorPalette),
3587
+ isBackground: !0,
3588
+ background: s => "phone" === s.platform ? this.highestSurface(s) : this.surfaceContainerHigh(),
3589
+ contrastCurve: s => "phone" === s.platform ? getCurve(4.5) : getCurve(7),
3590
+ toneDeltaPair: s => "phone" === s.platform ? new ToneDeltaPair(this.errorContainer(), this.error(), 5, "relative_lighter", !0, "farther") : void 0
3591
+ });
3592
+ return extendSpecVersion(super.error(), "2025", color2025);
3593
+ }
3594
+ errorDim() {
3595
+ return DynamicColor.fromPalette({
3596
+ name: "error_dim",
3597
+ palette: s => s.errorPalette,
3598
+ tone: s => tMinC(s.errorPalette),
3599
+ isBackground: !0,
3600
+ background: s => this.surfaceContainerHigh(),
3601
+ contrastCurve: s => getCurve(4.5),
3602
+ toneDeltaPair: s => new ToneDeltaPair(this.errorDim(), this.error(), 5, "darker", !0, "farther")
3603
+ });
3604
+ }
3605
+ onError() {
3606
+ const color2025 = DynamicColor.fromPalette({
3607
+ name: "on_error",
3608
+ palette: s => s.errorPalette,
3609
+ background: s => "phone" === s.platform ? this.error() : this.errorDim(),
3610
+ contrastCurve: s => "phone" === s.platform ? getCurve(6) : getCurve(7)
3611
+ });
3612
+ return extendSpecVersion(super.onError(), "2025", color2025);
3613
+ }
3614
+ errorContainer() {
3615
+ const color2025 = DynamicColor.fromPalette({
3616
+ name: "error_container",
3617
+ palette: s => s.errorPalette,
3618
+ tone: s => "watch" === s.platform ? 30 : s.isDark ? tMinC(s.errorPalette, 30, 93) : tMaxC(s.errorPalette, 0, 90),
3619
+ isBackground: !0,
3620
+ background: s => "phone" === s.platform ? this.highestSurface(s) : void 0,
3621
+ toneDeltaPair: s => "watch" === s.platform ? new ToneDeltaPair(this.errorContainer(), this.errorDim(), 10, "darker", !0, "farther") : void 0,
3622
+ contrastCurve: s => "phone" === s.platform && s.contrastLevel > 0 ? getCurve(1.5) : void 0
3623
+ });
3624
+ return extendSpecVersion(super.errorContainer(), "2025", color2025);
3625
+ }
3626
+ onErrorContainer() {
3627
+ const color2025 = DynamicColor.fromPalette({
3628
+ name: "on_error_container",
3629
+ palette: s => s.errorPalette,
3630
+ background: s => this.errorContainer(),
3631
+ contrastCurve: s => "phone" === s.platform ? getCurve(4.5) : getCurve(7)
3632
+ });
3633
+ return extendSpecVersion(super.onErrorContainer(), "2025", color2025);
3634
+ }
3635
+ surfaceVariant() {
3636
+ const color2025 = Object.assign(this.surfaceContainerHighest().clone(), {
3637
+ name: "surface_variant"
3638
+ });
3639
+ return extendSpecVersion(super.surfaceVariant(), "2025", color2025);
3640
+ }
3641
+ surfaceTint() {
3642
+ const color2025 = Object.assign(this.primary().clone(), {
3643
+ name: "surface_tint"
3644
+ });
3645
+ return extendSpecVersion(super.surfaceTint(), "2025", color2025);
3646
+ }
3647
+ background() {
3648
+ const color2025 = Object.assign(this.surface().clone(), {
3649
+ name: "background"
3650
+ });
3651
+ return extendSpecVersion(super.background(), "2025", color2025);
3652
+ }
3653
+ onBackground() {
3654
+ const color2025 = Object.assign(this.onSurface().clone(), {
3655
+ name: "on_background",
3656
+ tone: s => "watch" === s.platform ? 100 : this.onSurface().getTone(s)
3657
+ });
3658
+ return extendSpecVersion(super.onBackground(), "2025", color2025);
3659
+ }
2228
3660
  }
2229
3661
  class MaterialDynamicColors {
2230
- static highestSurface(s) {
2231
- return s.isDark ? MaterialDynamicColors.surfaceBright : MaterialDynamicColors.surfaceDim;
2232
- }
2233
- }
2234
- MaterialDynamicColors.contentAccentToneDelta = 15, MaterialDynamicColors.primaryPaletteKeyColor = DynamicColor.fromPalette({
2235
- name: "primary_palette_key_color",
2236
- palette: s => s.primaryPalette,
2237
- tone: s => s.primaryPalette.keyColor.tone
2238
- }), MaterialDynamicColors.secondaryPaletteKeyColor = DynamicColor.fromPalette({
2239
- name: "secondary_palette_key_color",
2240
- palette: s => s.secondaryPalette,
2241
- tone: s => s.secondaryPalette.keyColor.tone
2242
- }), MaterialDynamicColors.tertiaryPaletteKeyColor = DynamicColor.fromPalette({
2243
- name: "tertiary_palette_key_color",
2244
- palette: s => s.tertiaryPalette,
2245
- tone: s => s.tertiaryPalette.keyColor.tone
2246
- }), MaterialDynamicColors.neutralPaletteKeyColor = DynamicColor.fromPalette({
2247
- name: "neutral_palette_key_color",
2248
- palette: s => s.neutralPalette,
2249
- tone: s => s.neutralPalette.keyColor.tone
2250
- }), MaterialDynamicColors.neutralVariantPaletteKeyColor = DynamicColor.fromPalette({
2251
- name: "neutral_variant_palette_key_color",
2252
- palette: s => s.neutralVariantPalette,
2253
- tone: s => s.neutralVariantPalette.keyColor.tone
2254
- }), MaterialDynamicColors.background = DynamicColor.fromPalette({
2255
- name: "background",
2256
- palette: s => s.neutralPalette,
2257
- tone: s => s.isDark ? 6 : 98,
2258
- isBackground: !0
2259
- }), MaterialDynamicColors.onBackground = DynamicColor.fromPalette({
2260
- name: "on_background",
2261
- palette: s => s.neutralPalette,
2262
- tone: s => s.isDark ? 90 : 10,
2263
- background: s => MaterialDynamicColors.background,
2264
- contrastCurve: new ContrastCurve(3, 3, 4.5, 7)
2265
- }), MaterialDynamicColors.surface = DynamicColor.fromPalette({
2266
- name: "surface",
2267
- palette: s => s.neutralPalette,
2268
- tone: s => s.isDark ? 6 : 98,
2269
- isBackground: !0
2270
- }), MaterialDynamicColors.surfaceDim = DynamicColor.fromPalette({
2271
- name: "surface_dim",
2272
- palette: s => s.neutralPalette,
2273
- tone: s => s.isDark ? 6 : 87,
2274
- isBackground: !0
2275
- }), MaterialDynamicColors.surfaceBright = DynamicColor.fromPalette({
2276
- name: "surface_bright",
2277
- palette: s => s.neutralPalette,
2278
- tone: s => s.isDark ? 24 : 98,
2279
- isBackground: !0
2280
- }), MaterialDynamicColors.surfaceContainerLowest = DynamicColor.fromPalette({
2281
- name: "surface_container_lowest",
2282
- palette: s => s.neutralPalette,
2283
- tone: s => s.isDark ? 4 : 100,
2284
- isBackground: !0
2285
- }), MaterialDynamicColors.surfaceContainerLow = DynamicColor.fromPalette({
2286
- name: "surface_container_low",
2287
- palette: s => s.neutralPalette,
2288
- tone: s => s.isDark ? 10 : 96,
2289
- isBackground: !0
2290
- }), MaterialDynamicColors.surfaceContainer = DynamicColor.fromPalette({
2291
- name: "surface_container",
2292
- palette: s => s.neutralPalette,
2293
- tone: s => s.isDark ? 12 : 94,
2294
- isBackground: !0
2295
- }), MaterialDynamicColors.surfaceContainerHigh = DynamicColor.fromPalette({
2296
- name: "surface_container_high",
2297
- palette: s => s.neutralPalette,
2298
- tone: s => s.isDark ? 17 : 92,
2299
- isBackground: !0
2300
- }), MaterialDynamicColors.surfaceContainerHighest = DynamicColor.fromPalette({
2301
- name: "surface_container_highest",
2302
- palette: s => s.neutralPalette,
2303
- tone: s => s.isDark ? 22 : 90,
2304
- isBackground: !0
2305
- }), MaterialDynamicColors.onSurface = DynamicColor.fromPalette({
2306
- name: "on_surface",
2307
- palette: s => s.neutralPalette,
2308
- tone: s => s.isDark ? 90 : 10,
2309
- background: s => MaterialDynamicColors.highestSurface(s),
2310
- contrastCurve: new ContrastCurve(4.5, 7, 11, 21)
2311
- }), MaterialDynamicColors.surfaceVariant = DynamicColor.fromPalette({
2312
- name: "surface_variant",
2313
- palette: s => s.neutralVariantPalette,
2314
- tone: s => s.isDark ? 30 : 90,
2315
- isBackground: !0
2316
- }), MaterialDynamicColors.onSurfaceVariant = DynamicColor.fromPalette({
2317
- name: "on_surface_variant",
2318
- palette: s => s.neutralVariantPalette,
2319
- tone: s => s.isDark ? 80 : 30,
2320
- background: s => MaterialDynamicColors.highestSurface(s),
2321
- contrastCurve: new ContrastCurve(3, 4.5, 7, 11)
2322
- }), MaterialDynamicColors.inverseSurface = DynamicColor.fromPalette({
2323
- name: "inverse_surface",
2324
- palette: s => s.neutralPalette,
2325
- tone: s => s.isDark ? 90 : 20
2326
- }), MaterialDynamicColors.inverseOnSurface = DynamicColor.fromPalette({
2327
- name: "inverse_on_surface",
2328
- palette: s => s.neutralPalette,
2329
- tone: s => s.isDark ? 20 : 95,
2330
- background: s => MaterialDynamicColors.inverseSurface,
2331
- contrastCurve: new ContrastCurve(4.5, 7, 11, 21)
2332
- }), MaterialDynamicColors.outline = DynamicColor.fromPalette({
2333
- name: "outline",
2334
- palette: s => s.neutralVariantPalette,
2335
- tone: s => s.isDark ? 60 : 50,
2336
- background: s => MaterialDynamicColors.highestSurface(s),
2337
- contrastCurve: new ContrastCurve(1.5, 3, 4.5, 7)
2338
- }), MaterialDynamicColors.outlineVariant = DynamicColor.fromPalette({
2339
- name: "outline_variant",
2340
- palette: s => s.neutralVariantPalette,
2341
- tone: s => s.isDark ? 30 : 80,
2342
- background: s => MaterialDynamicColors.highestSurface(s),
2343
- contrastCurve: new ContrastCurve(1, 1, 3, 7)
2344
- }), MaterialDynamicColors.shadow = DynamicColor.fromPalette({
2345
- name: "shadow",
2346
- palette: s => s.neutralPalette,
2347
- tone: s => 0
2348
- }), MaterialDynamicColors.scrim = DynamicColor.fromPalette({
2349
- name: "scrim",
2350
- palette: s => s.neutralPalette,
2351
- tone: s => 0
2352
- }), MaterialDynamicColors.surfaceTint = DynamicColor.fromPalette({
2353
- name: "surface_tint",
2354
- palette: s => s.primaryPalette,
2355
- tone: s => s.isDark ? 80 : 40,
2356
- isBackground: !0
2357
- }), MaterialDynamicColors.primary = DynamicColor.fromPalette({
2358
- name: "primary",
2359
- palette: s => s.primaryPalette,
2360
- tone: s => isMonochrome(s) ? s.isDark ? 100 : 0 : s.isDark ? 80 : 40,
2361
- isBackground: !0,
2362
- background: s => MaterialDynamicColors.highestSurface(s),
2363
- contrastCurve: new ContrastCurve(3, 4.5, 7, 11),
2364
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, "nearer", !1)
2365
- }), MaterialDynamicColors.onPrimary = DynamicColor.fromPalette({
2366
- name: "on_primary",
2367
- palette: s => s.primaryPalette,
2368
- tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,
2369
- background: s => MaterialDynamicColors.primary,
2370
- contrastCurve: new ContrastCurve(4.5, 7, 11, 21)
2371
- }), MaterialDynamicColors.primaryContainer = DynamicColor.fromPalette({
2372
- name: "primary_container",
2373
- palette: s => s.primaryPalette,
2374
- tone: s => isFidelity(s) ? performAlbers(s.sourceColorHct, s) : isMonochrome(s) ? s.isDark ? 85 : 25 : s.isDark ? 30 : 90,
2375
- isBackground: !0,
2376
- background: s => MaterialDynamicColors.highestSurface(s),
2377
- contrastCurve: new ContrastCurve(1, 1, 3, 7),
2378
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryContainer, MaterialDynamicColors.primary, 15, "nearer", !1)
2379
- }), MaterialDynamicColors.onPrimaryContainer = DynamicColor.fromPalette({
2380
- name: "on_primary_container",
2381
- palette: s => s.primaryPalette,
2382
- tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.primaryContainer.tone(s), 4.5) : isMonochrome(s) ? s.isDark ? 0 : 100 : s.isDark ? 90 : 10,
2383
- background: s => MaterialDynamicColors.primaryContainer,
2384
- contrastCurve: new ContrastCurve(4.5, 7, 11, 21)
2385
- }), MaterialDynamicColors.inversePrimary = DynamicColor.fromPalette({
2386
- name: "inverse_primary",
2387
- palette: s => s.primaryPalette,
2388
- tone: s => s.isDark ? 40 : 80,
2389
- background: s => MaterialDynamicColors.inverseSurface,
2390
- contrastCurve: new ContrastCurve(3, 4.5, 7, 11)
2391
- }), MaterialDynamicColors.secondary = DynamicColor.fromPalette({
2392
- name: "secondary",
2393
- palette: s => s.secondaryPalette,
2394
- tone: s => s.isDark ? 80 : 40,
2395
- isBackground: !0,
2396
- background: s => MaterialDynamicColors.highestSurface(s),
2397
- contrastCurve: new ContrastCurve(3, 4.5, 7, 11),
2398
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, "nearer", !1)
2399
- }), MaterialDynamicColors.onSecondary = DynamicColor.fromPalette({
2400
- name: "on_secondary",
2401
- palette: s => s.secondaryPalette,
2402
- tone: s => isMonochrome(s) ? s.isDark ? 10 : 100 : s.isDark ? 20 : 100,
2403
- background: s => MaterialDynamicColors.secondary,
2404
- contrastCurve: new ContrastCurve(4.5, 7, 11, 21)
2405
- }), MaterialDynamicColors.secondaryContainer = DynamicColor.fromPalette({
2406
- name: "secondary_container",
2407
- palette: s => s.secondaryPalette,
2408
- tone: s => {
2409
- const initialTone = s.isDark ? 30 : 90;
2410
- if (isMonochrome(s)) return s.isDark ? 30 : 85;
2411
- if (!isFidelity(s)) return initialTone;
2412
- let answer = findDesiredChromaByTone(s.secondaryPalette.hue, s.secondaryPalette.chroma, initialTone, !s.isDark);
2413
- return answer = performAlbers(s.secondaryPalette.getHct(answer), s), answer;
2414
- },
2415
- isBackground: !0,
2416
- background: s => MaterialDynamicColors.highestSurface(s),
2417
- contrastCurve: new ContrastCurve(1, 1, 3, 7),
2418
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryContainer, MaterialDynamicColors.secondary, 15, "nearer", !1)
2419
- }), MaterialDynamicColors.onSecondaryContainer = DynamicColor.fromPalette({
2420
- name: "on_secondary_container",
2421
- palette: s => s.secondaryPalette,
2422
- tone: s => isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.secondaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,
2423
- background: s => MaterialDynamicColors.secondaryContainer,
2424
- contrastCurve: new ContrastCurve(4.5, 7, 11, 21)
2425
- }), MaterialDynamicColors.tertiary = DynamicColor.fromPalette({
2426
- name: "tertiary",
2427
- palette: s => s.tertiaryPalette,
2428
- tone: s => isMonochrome(s) ? s.isDark ? 90 : 25 : s.isDark ? 80 : 40,
2429
- isBackground: !0,
2430
- background: s => MaterialDynamicColors.highestSurface(s),
2431
- contrastCurve: new ContrastCurve(3, 4.5, 7, 11),
2432
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, "nearer", !1)
2433
- }), MaterialDynamicColors.onTertiary = DynamicColor.fromPalette({
2434
- name: "on_tertiary",
2435
- palette: s => s.tertiaryPalette,
2436
- tone: s => isMonochrome(s) ? s.isDark ? 10 : 90 : s.isDark ? 20 : 100,
2437
- background: s => MaterialDynamicColors.tertiary,
2438
- contrastCurve: new ContrastCurve(4.5, 7, 11, 21)
2439
- }), MaterialDynamicColors.tertiaryContainer = DynamicColor.fromPalette({
2440
- name: "tertiary_container",
2441
- palette: s => s.tertiaryPalette,
2442
- tone: s => {
2443
- if (isMonochrome(s)) return s.isDark ? 60 : 49;
2444
- if (!isFidelity(s)) return s.isDark ? 30 : 90;
2445
- const albersTone = performAlbers(s.tertiaryPalette.getHct(s.sourceColorHct.tone), s),
2446
- proposedHct = s.tertiaryPalette.getHct(albersTone);
2447
- return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;
2448
- },
2449
- isBackground: !0,
2450
- background: s => MaterialDynamicColors.highestSurface(s),
2451
- contrastCurve: new ContrastCurve(1, 1, 3, 7),
2452
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryContainer, MaterialDynamicColors.tertiary, 15, "nearer", !1)
2453
- }), MaterialDynamicColors.onTertiaryContainer = DynamicColor.fromPalette({
2454
- name: "on_tertiary_container",
2455
- palette: s => s.tertiaryPalette,
2456
- tone: s => isMonochrome(s) ? s.isDark ? 0 : 100 : isFidelity(s) ? DynamicColor.foregroundTone(MaterialDynamicColors.tertiaryContainer.tone(s), 4.5) : s.isDark ? 90 : 10,
2457
- background: s => MaterialDynamicColors.tertiaryContainer,
2458
- contrastCurve: new ContrastCurve(4.5, 7, 11, 21)
2459
- }), MaterialDynamicColors.error = DynamicColor.fromPalette({
2460
- name: "error",
2461
- palette: s => s.errorPalette,
2462
- tone: s => s.isDark ? 80 : 40,
2463
- isBackground: !0,
2464
- background: s => MaterialDynamicColors.highestSurface(s),
2465
- contrastCurve: new ContrastCurve(3, 4.5, 7, 11),
2466
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, "nearer", !1)
2467
- }), MaterialDynamicColors.onError = DynamicColor.fromPalette({
2468
- name: "on_error",
2469
- palette: s => s.errorPalette,
2470
- tone: s => s.isDark ? 20 : 100,
2471
- background: s => MaterialDynamicColors.error,
2472
- contrastCurve: new ContrastCurve(4.5, 7, 11, 21)
2473
- }), MaterialDynamicColors.errorContainer = DynamicColor.fromPalette({
2474
- name: "error_container",
2475
- palette: s => s.errorPalette,
2476
- tone: s => s.isDark ? 30 : 90,
2477
- isBackground: !0,
2478
- background: s => MaterialDynamicColors.highestSurface(s),
2479
- contrastCurve: new ContrastCurve(1, 1, 3, 7),
2480
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.errorContainer, MaterialDynamicColors.error, 15, "nearer", !1)
2481
- }), MaterialDynamicColors.onErrorContainer = DynamicColor.fromPalette({
2482
- name: "on_error_container",
2483
- palette: s => s.errorPalette,
2484
- tone: s => s.isDark ? 90 : 10,
2485
- background: s => MaterialDynamicColors.errorContainer,
2486
- contrastCurve: new ContrastCurve(4.5, 7, 11, 21)
2487
- }), MaterialDynamicColors.primaryFixed = DynamicColor.fromPalette({
2488
- name: "primary_fixed",
2489
- palette: s => s.primaryPalette,
2490
- tone: s => isMonochrome(s) ? 40 : 90,
2491
- isBackground: !0,
2492
- background: s => MaterialDynamicColors.highestSurface(s),
2493
- contrastCurve: new ContrastCurve(1, 1, 3, 7),
2494
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, "lighter", !0)
2495
- }), MaterialDynamicColors.primaryFixedDim = DynamicColor.fromPalette({
2496
- name: "primary_fixed_dim",
2497
- palette: s => s.primaryPalette,
2498
- tone: s => isMonochrome(s) ? 30 : 80,
2499
- isBackground: !0,
2500
- background: s => MaterialDynamicColors.highestSurface(s),
2501
- contrastCurve: new ContrastCurve(1, 1, 3, 7),
2502
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.primaryFixed, MaterialDynamicColors.primaryFixedDim, 10, "lighter", !0)
2503
- }), MaterialDynamicColors.onPrimaryFixed = DynamicColor.fromPalette({
2504
- name: "on_primary_fixed",
2505
- palette: s => s.primaryPalette,
2506
- tone: s => isMonochrome(s) ? 100 : 10,
2507
- background: s => MaterialDynamicColors.primaryFixedDim,
2508
- secondBackground: s => MaterialDynamicColors.primaryFixed,
2509
- contrastCurve: new ContrastCurve(4.5, 7, 11, 21)
2510
- }), MaterialDynamicColors.onPrimaryFixedVariant = DynamicColor.fromPalette({
2511
- name: "on_primary_fixed_variant",
2512
- palette: s => s.primaryPalette,
2513
- tone: s => isMonochrome(s) ? 90 : 30,
2514
- background: s => MaterialDynamicColors.primaryFixedDim,
2515
- secondBackground: s => MaterialDynamicColors.primaryFixed,
2516
- contrastCurve: new ContrastCurve(3, 4.5, 7, 11)
2517
- }), MaterialDynamicColors.secondaryFixed = DynamicColor.fromPalette({
2518
- name: "secondary_fixed",
2519
- palette: s => s.secondaryPalette,
2520
- tone: s => isMonochrome(s) ? 80 : 90,
2521
- isBackground: !0,
2522
- background: s => MaterialDynamicColors.highestSurface(s),
2523
- contrastCurve: new ContrastCurve(1, 1, 3, 7),
2524
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, "lighter", !0)
2525
- }), MaterialDynamicColors.secondaryFixedDim = DynamicColor.fromPalette({
2526
- name: "secondary_fixed_dim",
2527
- palette: s => s.secondaryPalette,
2528
- tone: s => isMonochrome(s) ? 70 : 80,
2529
- isBackground: !0,
2530
- background: s => MaterialDynamicColors.highestSurface(s),
2531
- contrastCurve: new ContrastCurve(1, 1, 3, 7),
2532
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.secondaryFixed, MaterialDynamicColors.secondaryFixedDim, 10, "lighter", !0)
2533
- }), MaterialDynamicColors.onSecondaryFixed = DynamicColor.fromPalette({
2534
- name: "on_secondary_fixed",
2535
- palette: s => s.secondaryPalette,
2536
- tone: s => 10,
2537
- background: s => MaterialDynamicColors.secondaryFixedDim,
2538
- secondBackground: s => MaterialDynamicColors.secondaryFixed,
2539
- contrastCurve: new ContrastCurve(4.5, 7, 11, 21)
2540
- }), MaterialDynamicColors.onSecondaryFixedVariant = DynamicColor.fromPalette({
2541
- name: "on_secondary_fixed_variant",
2542
- palette: s => s.secondaryPalette,
2543
- tone: s => isMonochrome(s) ? 25 : 30,
2544
- background: s => MaterialDynamicColors.secondaryFixedDim,
2545
- secondBackground: s => MaterialDynamicColors.secondaryFixed,
2546
- contrastCurve: new ContrastCurve(3, 4.5, 7, 11)
2547
- }), MaterialDynamicColors.tertiaryFixed = DynamicColor.fromPalette({
2548
- name: "tertiary_fixed",
2549
- palette: s => s.tertiaryPalette,
2550
- tone: s => isMonochrome(s) ? 40 : 90,
2551
- isBackground: !0,
2552
- background: s => MaterialDynamicColors.highestSurface(s),
2553
- contrastCurve: new ContrastCurve(1, 1, 3, 7),
2554
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, "lighter", !0)
2555
- }), MaterialDynamicColors.tertiaryFixedDim = DynamicColor.fromPalette({
2556
- name: "tertiary_fixed_dim",
2557
- palette: s => s.tertiaryPalette,
2558
- tone: s => isMonochrome(s) ? 30 : 80,
2559
- isBackground: !0,
2560
- background: s => MaterialDynamicColors.highestSurface(s),
2561
- contrastCurve: new ContrastCurve(1, 1, 3, 7),
2562
- toneDeltaPair: s => new ToneDeltaPair(MaterialDynamicColors.tertiaryFixed, MaterialDynamicColors.tertiaryFixedDim, 10, "lighter", !0)
2563
- }), MaterialDynamicColors.onTertiaryFixed = DynamicColor.fromPalette({
2564
- name: "on_tertiary_fixed",
2565
- palette: s => s.tertiaryPalette,
2566
- tone: s => isMonochrome(s) ? 100 : 10,
2567
- background: s => MaterialDynamicColors.tertiaryFixedDim,
2568
- secondBackground: s => MaterialDynamicColors.tertiaryFixed,
2569
- contrastCurve: new ContrastCurve(4.5, 7, 11, 21)
2570
- }), MaterialDynamicColors.onTertiaryFixedVariant = DynamicColor.fromPalette({
2571
- name: "on_tertiary_fixed_variant",
2572
- palette: s => s.tertiaryPalette,
2573
- tone: s => isMonochrome(s) ? 90 : 30,
2574
- background: s => MaterialDynamicColors.tertiaryFixedDim,
2575
- secondBackground: s => MaterialDynamicColors.tertiaryFixed,
2576
- contrastCurve: new ContrastCurve(3, 4.5, 7, 11)
2577
- });
2578
- class TonalPalette {
2579
- static fromInt(argb) {
2580
- const hct = Hct.fromInt(argb);
2581
- return TonalPalette.fromHct(hct);
3662
+ constructor() {
3663
+ this.allColors = [this.background(), this.onBackground(), this.surface(), this.surfaceDim(), this.surfaceBright(), this.surfaceContainerLowest(), this.surfaceContainerLow(), this.surfaceContainer(), this.surfaceContainerHigh(), this.surfaceContainerHighest(), this.onSurface(), this.onSurfaceVariant(), this.outline(), this.outlineVariant(), this.inverseSurface(), this.inverseOnSurface(), this.primary(), this.primaryDim(), this.onPrimary(), this.primaryContainer(), this.onPrimaryContainer(), this.primaryFixed(), this.primaryFixedDim(), this.onPrimaryFixed(), this.onPrimaryFixedVariant(), this.inversePrimary(), this.secondary(), this.secondaryDim(), this.onSecondary(), this.secondaryContainer(), this.onSecondaryContainer(), this.secondaryFixed(), this.secondaryFixedDim(), this.onSecondaryFixed(), this.onSecondaryFixedVariant(), this.tertiary(), this.tertiaryDim(), this.onTertiary(), this.tertiaryContainer(), this.onTertiaryContainer(), this.tertiaryFixed(), this.tertiaryFixedDim(), this.onTertiaryFixed(), this.onTertiaryFixedVariant(), this.error(), this.errorDim(), this.onError(), this.errorContainer(), this.onErrorContainer()].filter(c => void 0 !== c);
2582
3664
  }
2583
- static fromHct(hct) {
2584
- return new TonalPalette(hct.hue, hct.chroma, hct);
3665
+ highestSurface(s) {
3666
+ return MaterialDynamicColors.colorSpec.highestSurface(s);
2585
3667
  }
2586
- static fromHueAndChroma(hue, chroma) {
2587
- return new TonalPalette(hue, chroma, TonalPalette.createKeyColor(hue, chroma));
3668
+ primaryPaletteKeyColor() {
3669
+ return MaterialDynamicColors.colorSpec.primaryPaletteKeyColor();
2588
3670
  }
2589
- constructor(hue, chroma, keyColor) {
2590
- this.hue = hue, this.chroma = chroma, this.keyColor = keyColor, this.cache = new Map();
3671
+ secondaryPaletteKeyColor() {
3672
+ return MaterialDynamicColors.colorSpec.secondaryPaletteKeyColor();
2591
3673
  }
2592
- static createKeyColor(hue, chroma) {
2593
- let smallestDeltaHct = Hct.from(hue, chroma, 50),
2594
- smallestDelta = Math.abs(smallestDeltaHct.chroma - chroma);
2595
- for (let delta = 1; delta < 50; delta += 1) {
2596
- if (Math.round(chroma) === Math.round(smallestDeltaHct.chroma)) return smallestDeltaHct;
2597
- const hctAdd = Hct.from(hue, chroma, 50 + delta),
2598
- hctAddDelta = Math.abs(hctAdd.chroma - chroma);
2599
- hctAddDelta < smallestDelta && (smallestDelta = hctAddDelta, smallestDeltaHct = hctAdd);
2600
- const hctSubtract = Hct.from(hue, chroma, 50 - delta),
2601
- hctSubtractDelta = Math.abs(hctSubtract.chroma - chroma);
2602
- hctSubtractDelta < smallestDelta && (smallestDelta = hctSubtractDelta, smallestDeltaHct = hctSubtract);
2603
- }
2604
- return smallestDeltaHct;
3674
+ tertiaryPaletteKeyColor() {
3675
+ return MaterialDynamicColors.colorSpec.tertiaryPaletteKeyColor();
2605
3676
  }
2606
- tone(tone) {
2607
- let argb = this.cache.get(tone);
2608
- return void 0 === argb && (argb = Hct.from(this.hue, this.chroma, tone).toInt(), this.cache.set(tone, argb)), argb;
3677
+ neutralPaletteKeyColor() {
3678
+ return MaterialDynamicColors.colorSpec.neutralPaletteKeyColor();
2609
3679
  }
2610
- getHct(tone) {
2611
- return Hct.fromInt(this.tone(tone));
3680
+ neutralVariantPaletteKeyColor() {
3681
+ return MaterialDynamicColors.colorSpec.neutralVariantPaletteKeyColor();
2612
3682
  }
2613
- }
2614
- class CorePalette {
2615
- static of(argb) {
2616
- return new CorePalette(argb, !1);
3683
+ errorPaletteKeyColor() {
3684
+ return MaterialDynamicColors.colorSpec.errorPaletteKeyColor();
2617
3685
  }
2618
- static contentOf(argb) {
2619
- return new CorePalette(argb, !0);
3686
+ background() {
3687
+ return MaterialDynamicColors.colorSpec.background();
2620
3688
  }
2621
- static fromColors(colors) {
2622
- return CorePalette.createPaletteFromColors(!1, colors);
3689
+ onBackground() {
3690
+ return MaterialDynamicColors.colorSpec.onBackground();
2623
3691
  }
2624
- static contentFromColors(colors) {
2625
- return CorePalette.createPaletteFromColors(!0, colors);
3692
+ surface() {
3693
+ return MaterialDynamicColors.colorSpec.surface();
2626
3694
  }
2627
- static createPaletteFromColors(content, colors) {
2628
- const palette = new CorePalette(colors.primary, content);
2629
- if (colors.secondary) {
2630
- const p = new CorePalette(colors.secondary, content);
2631
- palette.a2 = p.a1;
2632
- }
2633
- if (colors.tertiary) {
2634
- const p = new CorePalette(colors.tertiary, content);
2635
- palette.a3 = p.a1;
2636
- }
2637
- if (colors.error) {
2638
- const p = new CorePalette(colors.error, content);
2639
- palette.error = p.a1;
2640
- }
2641
- if (colors.neutral) {
2642
- const p = new CorePalette(colors.neutral, content);
2643
- palette.n1 = p.n1;
2644
- }
2645
- if (colors.neutralVariant) {
2646
- const p = new CorePalette(colors.neutralVariant, content);
2647
- palette.n2 = p.n2;
3695
+ surfaceDim() {
3696
+ return MaterialDynamicColors.colorSpec.surfaceDim();
3697
+ }
3698
+ surfaceBright() {
3699
+ return MaterialDynamicColors.colorSpec.surfaceBright();
3700
+ }
3701
+ surfaceContainerLowest() {
3702
+ return MaterialDynamicColors.colorSpec.surfaceContainerLowest();
3703
+ }
3704
+ surfaceContainerLow() {
3705
+ return MaterialDynamicColors.colorSpec.surfaceContainerLow();
3706
+ }
3707
+ surfaceContainer() {
3708
+ return MaterialDynamicColors.colorSpec.surfaceContainer();
3709
+ }
3710
+ surfaceContainerHigh() {
3711
+ return MaterialDynamicColors.colorSpec.surfaceContainerHigh();
3712
+ }
3713
+ surfaceContainerHighest() {
3714
+ return MaterialDynamicColors.colorSpec.surfaceContainerHighest();
3715
+ }
3716
+ onSurface() {
3717
+ return MaterialDynamicColors.colorSpec.onSurface();
3718
+ }
3719
+ surfaceVariant() {
3720
+ return MaterialDynamicColors.colorSpec.surfaceVariant();
3721
+ }
3722
+ onSurfaceVariant() {
3723
+ return MaterialDynamicColors.colorSpec.onSurfaceVariant();
3724
+ }
3725
+ outline() {
3726
+ return MaterialDynamicColors.colorSpec.outline();
3727
+ }
3728
+ outlineVariant() {
3729
+ return MaterialDynamicColors.colorSpec.outlineVariant();
3730
+ }
3731
+ inverseSurface() {
3732
+ return MaterialDynamicColors.colorSpec.inverseSurface();
3733
+ }
3734
+ inverseOnSurface() {
3735
+ return MaterialDynamicColors.colorSpec.inverseOnSurface();
3736
+ }
3737
+ shadow() {
3738
+ return MaterialDynamicColors.colorSpec.shadow();
3739
+ }
3740
+ scrim() {
3741
+ return MaterialDynamicColors.colorSpec.scrim();
3742
+ }
3743
+ surfaceTint() {
3744
+ return MaterialDynamicColors.colorSpec.surfaceTint();
3745
+ }
3746
+ primary() {
3747
+ return MaterialDynamicColors.colorSpec.primary();
3748
+ }
3749
+ primaryDim() {
3750
+ return MaterialDynamicColors.colorSpec.primaryDim();
3751
+ }
3752
+ onPrimary() {
3753
+ return MaterialDynamicColors.colorSpec.onPrimary();
3754
+ }
3755
+ primaryContainer() {
3756
+ return MaterialDynamicColors.colorSpec.primaryContainer();
3757
+ }
3758
+ onPrimaryContainer() {
3759
+ return MaterialDynamicColors.colorSpec.onPrimaryContainer();
3760
+ }
3761
+ inversePrimary() {
3762
+ return MaterialDynamicColors.colorSpec.inversePrimary();
3763
+ }
3764
+ primaryFixed() {
3765
+ return MaterialDynamicColors.colorSpec.primaryFixed();
3766
+ }
3767
+ primaryFixedDim() {
3768
+ return MaterialDynamicColors.colorSpec.primaryFixedDim();
3769
+ }
3770
+ onPrimaryFixed() {
3771
+ return MaterialDynamicColors.colorSpec.onPrimaryFixed();
3772
+ }
3773
+ onPrimaryFixedVariant() {
3774
+ return MaterialDynamicColors.colorSpec.onPrimaryFixedVariant();
3775
+ }
3776
+ secondary() {
3777
+ return MaterialDynamicColors.colorSpec.secondary();
3778
+ }
3779
+ secondaryDim() {
3780
+ return MaterialDynamicColors.colorSpec.secondaryDim();
3781
+ }
3782
+ onSecondary() {
3783
+ return MaterialDynamicColors.colorSpec.onSecondary();
3784
+ }
3785
+ secondaryContainer() {
3786
+ return MaterialDynamicColors.colorSpec.secondaryContainer();
3787
+ }
3788
+ onSecondaryContainer() {
3789
+ return MaterialDynamicColors.colorSpec.onSecondaryContainer();
3790
+ }
3791
+ secondaryFixed() {
3792
+ return MaterialDynamicColors.colorSpec.secondaryFixed();
3793
+ }
3794
+ secondaryFixedDim() {
3795
+ return MaterialDynamicColors.colorSpec.secondaryFixedDim();
3796
+ }
3797
+ onSecondaryFixed() {
3798
+ return MaterialDynamicColors.colorSpec.onSecondaryFixed();
3799
+ }
3800
+ onSecondaryFixedVariant() {
3801
+ return MaterialDynamicColors.colorSpec.onSecondaryFixedVariant();
3802
+ }
3803
+ tertiary() {
3804
+ return MaterialDynamicColors.colorSpec.tertiary();
3805
+ }
3806
+ tertiaryDim() {
3807
+ return MaterialDynamicColors.colorSpec.tertiaryDim();
3808
+ }
3809
+ onTertiary() {
3810
+ return MaterialDynamicColors.colorSpec.onTertiary();
3811
+ }
3812
+ tertiaryContainer() {
3813
+ return MaterialDynamicColors.colorSpec.tertiaryContainer();
3814
+ }
3815
+ onTertiaryContainer() {
3816
+ return MaterialDynamicColors.colorSpec.onTertiaryContainer();
3817
+ }
3818
+ tertiaryFixed() {
3819
+ return MaterialDynamicColors.colorSpec.tertiaryFixed();
3820
+ }
3821
+ tertiaryFixedDim() {
3822
+ return MaterialDynamicColors.colorSpec.tertiaryFixedDim();
3823
+ }
3824
+ onTertiaryFixed() {
3825
+ return MaterialDynamicColors.colorSpec.onTertiaryFixed();
3826
+ }
3827
+ onTertiaryFixedVariant() {
3828
+ return MaterialDynamicColors.colorSpec.onTertiaryFixedVariant();
3829
+ }
3830
+ error() {
3831
+ return MaterialDynamicColors.colorSpec.error();
3832
+ }
3833
+ errorDim() {
3834
+ return MaterialDynamicColors.colorSpec.errorDim();
3835
+ }
3836
+ onError() {
3837
+ return MaterialDynamicColors.colorSpec.onError();
3838
+ }
3839
+ errorContainer() {
3840
+ return MaterialDynamicColors.colorSpec.errorContainer();
3841
+ }
3842
+ onErrorContainer() {
3843
+ return MaterialDynamicColors.colorSpec.onErrorContainer();
3844
+ }
3845
+ static highestSurface(s) {
3846
+ return MaterialDynamicColors.colorSpec.highestSurface(s);
3847
+ }
3848
+ }
3849
+ MaterialDynamicColors.contentAccentToneDelta = 15, MaterialDynamicColors.colorSpec = new ColorSpecDelegateImpl2025(), MaterialDynamicColors.primaryPaletteKeyColor = MaterialDynamicColors.colorSpec.primaryPaletteKeyColor(), MaterialDynamicColors.secondaryPaletteKeyColor = MaterialDynamicColors.colorSpec.secondaryPaletteKeyColor(), MaterialDynamicColors.tertiaryPaletteKeyColor = MaterialDynamicColors.colorSpec.tertiaryPaletteKeyColor(), MaterialDynamicColors.neutralPaletteKeyColor = MaterialDynamicColors.colorSpec.neutralPaletteKeyColor(), MaterialDynamicColors.neutralVariantPaletteKeyColor = MaterialDynamicColors.colorSpec.neutralVariantPaletteKeyColor(), MaterialDynamicColors.background = MaterialDynamicColors.colorSpec.background(), MaterialDynamicColors.onBackground = MaterialDynamicColors.colorSpec.onBackground(), MaterialDynamicColors.surface = MaterialDynamicColors.colorSpec.surface(), MaterialDynamicColors.surfaceDim = MaterialDynamicColors.colorSpec.surfaceDim(), MaterialDynamicColors.surfaceBright = MaterialDynamicColors.colorSpec.surfaceBright(), MaterialDynamicColors.surfaceContainerLowest = MaterialDynamicColors.colorSpec.surfaceContainerLowest(), MaterialDynamicColors.surfaceContainerLow = MaterialDynamicColors.colorSpec.surfaceContainerLow(), MaterialDynamicColors.surfaceContainer = MaterialDynamicColors.colorSpec.surfaceContainer(), MaterialDynamicColors.surfaceContainerHigh = MaterialDynamicColors.colorSpec.surfaceContainerHigh(), MaterialDynamicColors.surfaceContainerHighest = MaterialDynamicColors.colorSpec.surfaceContainerHighest(), MaterialDynamicColors.onSurface = MaterialDynamicColors.colorSpec.onSurface(), MaterialDynamicColors.surfaceVariant = MaterialDynamicColors.colorSpec.surfaceVariant(), MaterialDynamicColors.onSurfaceVariant = MaterialDynamicColors.colorSpec.onSurfaceVariant(), MaterialDynamicColors.inverseSurface = MaterialDynamicColors.colorSpec.inverseSurface(), MaterialDynamicColors.inverseOnSurface = MaterialDynamicColors.colorSpec.inverseOnSurface(), MaterialDynamicColors.outline = MaterialDynamicColors.colorSpec.outline(), MaterialDynamicColors.outlineVariant = MaterialDynamicColors.colorSpec.outlineVariant(), MaterialDynamicColors.shadow = MaterialDynamicColors.colorSpec.shadow(), MaterialDynamicColors.scrim = MaterialDynamicColors.colorSpec.scrim(), MaterialDynamicColors.surfaceTint = MaterialDynamicColors.colorSpec.surfaceTint(), MaterialDynamicColors.primary = MaterialDynamicColors.colorSpec.primary(), MaterialDynamicColors.onPrimary = MaterialDynamicColors.colorSpec.onPrimary(), MaterialDynamicColors.primaryContainer = MaterialDynamicColors.colorSpec.primaryContainer(), MaterialDynamicColors.onPrimaryContainer = MaterialDynamicColors.colorSpec.onPrimaryContainer(), MaterialDynamicColors.inversePrimary = MaterialDynamicColors.colorSpec.inversePrimary(), MaterialDynamicColors.secondary = MaterialDynamicColors.colorSpec.secondary(), MaterialDynamicColors.onSecondary = MaterialDynamicColors.colorSpec.onSecondary(), MaterialDynamicColors.secondaryContainer = MaterialDynamicColors.colorSpec.secondaryContainer(), MaterialDynamicColors.onSecondaryContainer = MaterialDynamicColors.colorSpec.onSecondaryContainer(), MaterialDynamicColors.tertiary = MaterialDynamicColors.colorSpec.tertiary(), MaterialDynamicColors.onTertiary = MaterialDynamicColors.colorSpec.onTertiary(), MaterialDynamicColors.tertiaryContainer = MaterialDynamicColors.colorSpec.tertiaryContainer(), MaterialDynamicColors.onTertiaryContainer = MaterialDynamicColors.colorSpec.onTertiaryContainer(), MaterialDynamicColors.error = MaterialDynamicColors.colorSpec.error(), MaterialDynamicColors.onError = MaterialDynamicColors.colorSpec.onError(), MaterialDynamicColors.errorContainer = MaterialDynamicColors.colorSpec.errorContainer(), MaterialDynamicColors.onErrorContainer = MaterialDynamicColors.colorSpec.onErrorContainer(), MaterialDynamicColors.primaryFixed = MaterialDynamicColors.colorSpec.primaryFixed(), MaterialDynamicColors.primaryFixedDim = MaterialDynamicColors.colorSpec.primaryFixedDim(), MaterialDynamicColors.onPrimaryFixed = MaterialDynamicColors.colorSpec.onPrimaryFixed(), MaterialDynamicColors.onPrimaryFixedVariant = MaterialDynamicColors.colorSpec.onPrimaryFixedVariant(), MaterialDynamicColors.secondaryFixed = MaterialDynamicColors.colorSpec.secondaryFixed(), MaterialDynamicColors.secondaryFixedDim = MaterialDynamicColors.colorSpec.secondaryFixedDim(), MaterialDynamicColors.onSecondaryFixed = MaterialDynamicColors.colorSpec.onSecondaryFixed(), MaterialDynamicColors.onSecondaryFixedVariant = MaterialDynamicColors.colorSpec.onSecondaryFixedVariant(), MaterialDynamicColors.tertiaryFixed = MaterialDynamicColors.colorSpec.tertiaryFixed(), MaterialDynamicColors.tertiaryFixedDim = MaterialDynamicColors.colorSpec.tertiaryFixedDim(), MaterialDynamicColors.onTertiaryFixed = MaterialDynamicColors.colorSpec.onTertiaryFixed(), MaterialDynamicColors.onTertiaryFixedVariant = MaterialDynamicColors.colorSpec.onTertiaryFixedVariant();
3850
+ class DynamicScheme {
3851
+ static maybeFallbackSpecVersion(specVersion, variant) {
3852
+ switch (variant) {
3853
+ case Variant.EXPRESSIVE:
3854
+ case Variant.VIBRANT:
3855
+ case Variant.TONAL_SPOT:
3856
+ case Variant.NEUTRAL:
3857
+ return specVersion;
3858
+ default:
3859
+ return "2021";
2648
3860
  }
2649
- return palette;
2650
3861
  }
2651
- constructor(argb, isContent) {
2652
- const hct = Hct.fromInt(argb),
2653
- hue = hct.hue,
2654
- chroma = hct.chroma;
2655
- isContent ? (this.a1 = TonalPalette.fromHueAndChroma(hue, chroma), this.a2 = TonalPalette.fromHueAndChroma(hue, chroma / 3), this.a3 = TonalPalette.fromHueAndChroma(hue + 60, chroma / 2), this.n1 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 12, 4)), this.n2 = TonalPalette.fromHueAndChroma(hue, Math.min(chroma / 6, 8))) : (this.a1 = TonalPalette.fromHueAndChroma(hue, Math.max(48, chroma)), this.a2 = TonalPalette.fromHueAndChroma(hue, 16), this.a3 = TonalPalette.fromHueAndChroma(hue + 60, 24), this.n1 = TonalPalette.fromHueAndChroma(hue, 4), this.n2 = TonalPalette.fromHueAndChroma(hue, 8)), this.error = TonalPalette.fromHueAndChroma(25, 84);
3862
+ constructor(args) {
3863
+ this.sourceColorArgb = args.sourceColorHct.toInt(), this.variant = args.variant, this.contrastLevel = args.contrastLevel, this.isDark = args.isDark, this.platform = args.platform ?? "phone", this.specVersion = DynamicScheme.maybeFallbackSpecVersion(args.specVersion ?? "2021", this.variant), this.sourceColorHct = args.sourceColorHct, this.primaryPalette = args.primaryPalette ?? getSpec(this.specVersion).getPrimaryPalette(this.variant, args.sourceColorHct, this.isDark, this.platform, this.contrastLevel), this.secondaryPalette = args.secondaryPalette ?? getSpec(this.specVersion).getSecondaryPalette(this.variant, args.sourceColorHct, this.isDark, this.platform, this.contrastLevel), this.tertiaryPalette = args.tertiaryPalette ?? getSpec(this.specVersion).getTertiaryPalette(this.variant, args.sourceColorHct, this.isDark, this.platform, this.contrastLevel), this.neutralPalette = args.neutralPalette ?? getSpec(this.specVersion).getNeutralPalette(this.variant, args.sourceColorHct, this.isDark, this.platform, this.contrastLevel), this.neutralVariantPalette = args.neutralVariantPalette ?? getSpec(this.specVersion).getNeutralVariantPalette(this.variant, args.sourceColorHct, this.isDark, this.platform, this.contrastLevel), this.errorPalette = args.errorPalette ?? getSpec(this.specVersion).getErrorPalette(this.variant, args.sourceColorHct, this.isDark, this.platform, this.contrastLevel) ?? TonalPalette.fromHueAndChroma(25, 84), this.colors = new MaterialDynamicColors();
3864
+ }
3865
+ toString() {
3866
+ return `Scheme: variant=${Variant[this.variant]}, mode=${this.isDark ? "dark" : "light"}, platform=${this.platform}, contrastLevel=${this.contrastLevel.toFixed(1)}, seed=${this.sourceColorHct.toString()}, specVersion=${this.specVersion}`;
3867
+ }
3868
+ static getPiecewiseHue(sourceColorHct, hueBreakpoints, hues) {
3869
+ const size = Math.min(hueBreakpoints.length - 1, hues.length),
3870
+ sourceHue = sourceColorHct.hue;
3871
+ for (let i = 0; i < size; i++) if (sourceHue >= hueBreakpoints[i] && sourceHue < hueBreakpoints[i + 1]) return sanitizeDegreesDouble(hues[i]);
3872
+ return sourceHue;
3873
+ }
3874
+ static getRotatedHue(sourceColorHct, hueBreakpoints, rotations) {
3875
+ let rotation = DynamicScheme.getPiecewiseHue(sourceColorHct, hueBreakpoints, rotations);
3876
+ return Math.min(hueBreakpoints.length - 1, rotations.length) <= 0 && (rotation = 0), sanitizeDegreesDouble(sourceColorHct.hue + rotation);
3877
+ }
3878
+ getArgb(dynamicColor) {
3879
+ return dynamicColor.getArgb(this);
3880
+ }
3881
+ getHct(dynamicColor) {
3882
+ return dynamicColor.getHct(this);
3883
+ }
3884
+ get primaryPaletteKeyColor() {
3885
+ return this.getArgb(this.colors.primaryPaletteKeyColor());
3886
+ }
3887
+ get secondaryPaletteKeyColor() {
3888
+ return this.getArgb(this.colors.secondaryPaletteKeyColor());
3889
+ }
3890
+ get tertiaryPaletteKeyColor() {
3891
+ return this.getArgb(this.colors.tertiaryPaletteKeyColor());
3892
+ }
3893
+ get neutralPaletteKeyColor() {
3894
+ return this.getArgb(this.colors.neutralPaletteKeyColor());
3895
+ }
3896
+ get neutralVariantPaletteKeyColor() {
3897
+ return this.getArgb(this.colors.neutralVariantPaletteKeyColor());
3898
+ }
3899
+ get errorPaletteKeyColor() {
3900
+ return this.getArgb(this.colors.errorPaletteKeyColor());
3901
+ }
3902
+ get background() {
3903
+ return this.getArgb(this.colors.background());
3904
+ }
3905
+ get onBackground() {
3906
+ return this.getArgb(this.colors.onBackground());
3907
+ }
3908
+ get surface() {
3909
+ return this.getArgb(this.colors.surface());
3910
+ }
3911
+ get surfaceDim() {
3912
+ return this.getArgb(this.colors.surfaceDim());
3913
+ }
3914
+ get surfaceBright() {
3915
+ return this.getArgb(this.colors.surfaceBright());
3916
+ }
3917
+ get surfaceContainerLowest() {
3918
+ return this.getArgb(this.colors.surfaceContainerLowest());
3919
+ }
3920
+ get surfaceContainerLow() {
3921
+ return this.getArgb(this.colors.surfaceContainerLow());
3922
+ }
3923
+ get surfaceContainer() {
3924
+ return this.getArgb(this.colors.surfaceContainer());
3925
+ }
3926
+ get surfaceContainerHigh() {
3927
+ return this.getArgb(this.colors.surfaceContainerHigh());
3928
+ }
3929
+ get surfaceContainerHighest() {
3930
+ return this.getArgb(this.colors.surfaceContainerHighest());
3931
+ }
3932
+ get onSurface() {
3933
+ return this.getArgb(this.colors.onSurface());
3934
+ }
3935
+ get surfaceVariant() {
3936
+ return this.getArgb(this.colors.surfaceVariant());
3937
+ }
3938
+ get onSurfaceVariant() {
3939
+ return this.getArgb(this.colors.onSurfaceVariant());
3940
+ }
3941
+ get inverseSurface() {
3942
+ return this.getArgb(this.colors.inverseSurface());
3943
+ }
3944
+ get inverseOnSurface() {
3945
+ return this.getArgb(this.colors.inverseOnSurface());
3946
+ }
3947
+ get outline() {
3948
+ return this.getArgb(this.colors.outline());
3949
+ }
3950
+ get outlineVariant() {
3951
+ return this.getArgb(this.colors.outlineVariant());
3952
+ }
3953
+ get shadow() {
3954
+ return this.getArgb(this.colors.shadow());
3955
+ }
3956
+ get scrim() {
3957
+ return this.getArgb(this.colors.scrim());
3958
+ }
3959
+ get surfaceTint() {
3960
+ return this.getArgb(this.colors.surfaceTint());
2656
3961
  }
2657
- }
2658
- class Scheme {
2659
3962
  get primary() {
2660
- return this.props.primary;
3963
+ return this.getArgb(this.colors.primary());
3964
+ }
3965
+ get primaryDim() {
3966
+ const primaryDim = this.colors.primaryDim();
3967
+ if (void 0 === primaryDim) throw new Error("`primaryDim` color is undefined prior to 2025 spec.");
3968
+ return this.getArgb(primaryDim);
2661
3969
  }
2662
3970
  get onPrimary() {
2663
- return this.props.onPrimary;
3971
+ return this.getArgb(this.colors.onPrimary());
2664
3972
  }
2665
3973
  get primaryContainer() {
2666
- return this.props.primaryContainer;
3974
+ return this.getArgb(this.colors.primaryContainer());
2667
3975
  }
2668
3976
  get onPrimaryContainer() {
2669
- return this.props.onPrimaryContainer;
3977
+ return this.getArgb(this.colors.onPrimaryContainer());
3978
+ }
3979
+ get primaryFixed() {
3980
+ return this.getArgb(this.colors.primaryFixed());
3981
+ }
3982
+ get primaryFixedDim() {
3983
+ return this.getArgb(this.colors.primaryFixedDim());
3984
+ }
3985
+ get onPrimaryFixed() {
3986
+ return this.getArgb(this.colors.onPrimaryFixed());
3987
+ }
3988
+ get onPrimaryFixedVariant() {
3989
+ return this.getArgb(this.colors.onPrimaryFixedVariant());
3990
+ }
3991
+ get inversePrimary() {
3992
+ return this.getArgb(this.colors.inversePrimary());
2670
3993
  }
2671
3994
  get secondary() {
2672
- return this.props.secondary;
3995
+ return this.getArgb(this.colors.secondary());
3996
+ }
3997
+ get secondaryDim() {
3998
+ const secondaryDim = this.colors.secondaryDim();
3999
+ if (void 0 === secondaryDim) throw new Error("`secondaryDim` color is undefined prior to 2025 spec.");
4000
+ return this.getArgb(secondaryDim);
2673
4001
  }
2674
4002
  get onSecondary() {
2675
- return this.props.onSecondary;
4003
+ return this.getArgb(this.colors.onSecondary());
2676
4004
  }
2677
4005
  get secondaryContainer() {
2678
- return this.props.secondaryContainer;
4006
+ return this.getArgb(this.colors.secondaryContainer());
2679
4007
  }
2680
4008
  get onSecondaryContainer() {
2681
- return this.props.onSecondaryContainer;
4009
+ return this.getArgb(this.colors.onSecondaryContainer());
4010
+ }
4011
+ get secondaryFixed() {
4012
+ return this.getArgb(this.colors.secondaryFixed());
4013
+ }
4014
+ get secondaryFixedDim() {
4015
+ return this.getArgb(this.colors.secondaryFixedDim());
4016
+ }
4017
+ get onSecondaryFixed() {
4018
+ return this.getArgb(this.colors.onSecondaryFixed());
4019
+ }
4020
+ get onSecondaryFixedVariant() {
4021
+ return this.getArgb(this.colors.onSecondaryFixedVariant());
2682
4022
  }
2683
4023
  get tertiary() {
2684
- return this.props.tertiary;
4024
+ return this.getArgb(this.colors.tertiary());
4025
+ }
4026
+ get tertiaryDim() {
4027
+ const tertiaryDim = this.colors.tertiaryDim();
4028
+ if (void 0 === tertiaryDim) throw new Error("`tertiaryDim` color is undefined prior to 2025 spec.");
4029
+ return this.getArgb(tertiaryDim);
2685
4030
  }
2686
4031
  get onTertiary() {
2687
- return this.props.onTertiary;
4032
+ return this.getArgb(this.colors.onTertiary());
2688
4033
  }
2689
4034
  get tertiaryContainer() {
2690
- return this.props.tertiaryContainer;
4035
+ return this.getArgb(this.colors.tertiaryContainer());
2691
4036
  }
2692
4037
  get onTertiaryContainer() {
2693
- return this.props.onTertiaryContainer;
4038
+ return this.getArgb(this.colors.onTertiaryContainer());
2694
4039
  }
2695
- get error() {
2696
- return this.props.error;
4040
+ get tertiaryFixed() {
4041
+ return this.getArgb(this.colors.tertiaryFixed());
2697
4042
  }
2698
- get onError() {
2699
- return this.props.onError;
4043
+ get tertiaryFixedDim() {
4044
+ return this.getArgb(this.colors.tertiaryFixedDim());
2700
4045
  }
2701
- get errorContainer() {
2702
- return this.props.errorContainer;
4046
+ get onTertiaryFixed() {
4047
+ return this.getArgb(this.colors.onTertiaryFixed());
2703
4048
  }
2704
- get onErrorContainer() {
2705
- return this.props.onErrorContainer;
4049
+ get onTertiaryFixedVariant() {
4050
+ return this.getArgb(this.colors.onTertiaryFixedVariant());
2706
4051
  }
2707
- get background() {
2708
- return this.props.background;
4052
+ get error() {
4053
+ return this.getArgb(this.colors.error());
2709
4054
  }
2710
- get onBackground() {
2711
- return this.props.onBackground;
4055
+ get errorDim() {
4056
+ const errorDim = this.colors.errorDim();
4057
+ if (void 0 === errorDim) throw new Error("`errorDim` color is undefined prior to 2025 spec.");
4058
+ return this.getArgb(errorDim);
2712
4059
  }
2713
- get surface() {
2714
- return this.props.surface;
4060
+ get onError() {
4061
+ return this.getArgb(this.colors.onError());
2715
4062
  }
2716
- get onSurface() {
2717
- return this.props.onSurface;
4063
+ get errorContainer() {
4064
+ return this.getArgb(this.colors.errorContainer());
2718
4065
  }
2719
- get surfaceVariant() {
2720
- return this.props.surfaceVariant;
4066
+ get onErrorContainer() {
4067
+ return this.getArgb(this.colors.onErrorContainer());
4068
+ }
4069
+ }
4070
+ DynamicScheme.DEFAULT_SPEC_VERSION = "2021", DynamicScheme.DEFAULT_PLATFORM = "phone";
4071
+ class DynamicSchemePalettesDelegateImpl2021 {
4072
+ getPrimaryPalette(variant, sourceColorHct, isDark, platform, contrastLevel) {
4073
+ switch (variant) {
4074
+ case Variant.CONTENT:
4075
+ case Variant.FIDELITY:
4076
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, sourceColorHct.chroma);
4077
+ case Variant.FRUIT_SALAD:
4078
+ return TonalPalette.fromHueAndChroma(sanitizeDegreesDouble(sourceColorHct.hue - 50), 48);
4079
+ case Variant.MONOCHROME:
4080
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0);
4081
+ case Variant.NEUTRAL:
4082
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 12);
4083
+ case Variant.RAINBOW:
4084
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 48);
4085
+ case Variant.TONAL_SPOT:
4086
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 36);
4087
+ case Variant.EXPRESSIVE:
4088
+ return TonalPalette.fromHueAndChroma(sanitizeDegreesDouble(sourceColorHct.hue + 240), 40);
4089
+ case Variant.VIBRANT:
4090
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 200);
4091
+ default:
4092
+ throw new Error(`Unsupported variant: ${variant}`);
4093
+ }
4094
+ }
4095
+ getSecondaryPalette(variant, sourceColorHct, isDark, platform, contrastLevel) {
4096
+ switch (variant) {
4097
+ case Variant.CONTENT:
4098
+ case Variant.FIDELITY:
4099
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, Math.max(sourceColorHct.chroma - 32, .5 * sourceColorHct.chroma));
4100
+ case Variant.FRUIT_SALAD:
4101
+ return TonalPalette.fromHueAndChroma(sanitizeDegreesDouble(sourceColorHct.hue - 50), 36);
4102
+ case Variant.MONOCHROME:
4103
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0);
4104
+ case Variant.NEUTRAL:
4105
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 8);
4106
+ case Variant.RAINBOW:
4107
+ case Variant.TONAL_SPOT:
4108
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16);
4109
+ case Variant.EXPRESSIVE:
4110
+ return TonalPalette.fromHueAndChroma(DynamicScheme.getRotatedHue(sourceColorHct, [0, 21, 51, 121, 151, 191, 271, 321, 360], [45, 95, 45, 20, 45, 90, 45, 45, 45]), 24);
4111
+ case Variant.VIBRANT:
4112
+ return TonalPalette.fromHueAndChroma(DynamicScheme.getRotatedHue(sourceColorHct, [0, 41, 61, 101, 131, 181, 251, 301, 360], [18, 15, 10, 12, 15, 18, 15, 12, 12]), 24);
4113
+ default:
4114
+ throw new Error(`Unsupported variant: ${variant}`);
4115
+ }
4116
+ }
4117
+ getTertiaryPalette(variant, sourceColorHct, isDark, platform, contrastLevel) {
4118
+ switch (variant) {
4119
+ case Variant.CONTENT:
4120
+ return TonalPalette.fromHct(DislikeAnalyzer.fixIfDisliked(new TemperatureCache(sourceColorHct).analogous(3, 6)[2]));
4121
+ case Variant.FIDELITY:
4122
+ return TonalPalette.fromHct(DislikeAnalyzer.fixIfDisliked(new TemperatureCache(sourceColorHct).complement));
4123
+ case Variant.FRUIT_SALAD:
4124
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 36);
4125
+ case Variant.MONOCHROME:
4126
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0);
4127
+ case Variant.NEUTRAL:
4128
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16);
4129
+ case Variant.RAINBOW:
4130
+ case Variant.TONAL_SPOT:
4131
+ return TonalPalette.fromHueAndChroma(sanitizeDegreesDouble(sourceColorHct.hue + 60), 24);
4132
+ case Variant.EXPRESSIVE:
4133
+ return TonalPalette.fromHueAndChroma(DynamicScheme.getRotatedHue(sourceColorHct, [0, 21, 51, 121, 151, 191, 271, 321, 360], [120, 120, 20, 45, 20, 15, 20, 120, 120]), 32);
4134
+ case Variant.VIBRANT:
4135
+ return TonalPalette.fromHueAndChroma(DynamicScheme.getRotatedHue(sourceColorHct, [0, 41, 61, 101, 131, 181, 251, 301, 360], [35, 30, 20, 25, 30, 35, 30, 25, 25]), 32);
4136
+ default:
4137
+ throw new Error(`Unsupported variant: ${variant}`);
4138
+ }
4139
+ }
4140
+ getNeutralPalette(variant, sourceColorHct, isDark, platform, contrastLevel) {
4141
+ switch (variant) {
4142
+ case Variant.CONTENT:
4143
+ case Variant.FIDELITY:
4144
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, sourceColorHct.chroma / 8);
4145
+ case Variant.FRUIT_SALAD:
4146
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 10);
4147
+ case Variant.MONOCHROME:
4148
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0);
4149
+ case Variant.NEUTRAL:
4150
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 2);
4151
+ case Variant.RAINBOW:
4152
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0);
4153
+ case Variant.TONAL_SPOT:
4154
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 6);
4155
+ case Variant.EXPRESSIVE:
4156
+ return TonalPalette.fromHueAndChroma(sanitizeDegreesDouble(sourceColorHct.hue + 15), 8);
4157
+ case Variant.VIBRANT:
4158
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 10);
4159
+ default:
4160
+ throw new Error(`Unsupported variant: ${variant}`);
4161
+ }
4162
+ }
4163
+ getNeutralVariantPalette(variant, sourceColorHct, isDark, platform, contrastLevel) {
4164
+ switch (variant) {
4165
+ case Variant.CONTENT:
4166
+ case Variant.FIDELITY:
4167
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, sourceColorHct.chroma / 8 + 4);
4168
+ case Variant.FRUIT_SALAD:
4169
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16);
4170
+ case Variant.MONOCHROME:
4171
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0);
4172
+ case Variant.NEUTRAL:
4173
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 2);
4174
+ case Variant.RAINBOW:
4175
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0);
4176
+ case Variant.TONAL_SPOT:
4177
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 8);
4178
+ case Variant.EXPRESSIVE:
4179
+ return TonalPalette.fromHueAndChroma(sanitizeDegreesDouble(sourceColorHct.hue + 15), 12);
4180
+ case Variant.VIBRANT:
4181
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 12);
4182
+ default:
4183
+ throw new Error(`Unsupported variant: ${variant}`);
4184
+ }
4185
+ }
4186
+ getErrorPalette(variant, sourceColorHct, isDark, platform, contrastLevel) {}
4187
+ }
4188
+ class DynamicSchemePalettesDelegateImpl2025 extends DynamicSchemePalettesDelegateImpl2021 {
4189
+ getPrimaryPalette(variant, sourceColorHct, isDark, platform, contrastLevel) {
4190
+ switch (variant) {
4191
+ case Variant.NEUTRAL:
4192
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, "phone" === platform ? Hct.isBlue(sourceColorHct.hue) ? 12 : 8 : Hct.isBlue(sourceColorHct.hue) ? 16 : 12);
4193
+ case Variant.TONAL_SPOT:
4194
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, "phone" === platform && isDark ? 26 : 32);
4195
+ case Variant.EXPRESSIVE:
4196
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, "phone" === platform ? isDark ? 36 : 48 : 40);
4197
+ case Variant.VIBRANT:
4198
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, "phone" === platform ? 74 : 56);
4199
+ default:
4200
+ return super.getPrimaryPalette(variant, sourceColorHct, isDark, platform, contrastLevel);
4201
+ }
4202
+ }
4203
+ getSecondaryPalette(variant, sourceColorHct, isDark, platform, contrastLevel) {
4204
+ switch (variant) {
4205
+ case Variant.NEUTRAL:
4206
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, "phone" === platform ? Hct.isBlue(sourceColorHct.hue) ? 6 : 4 : Hct.isBlue(sourceColorHct.hue) ? 10 : 6);
4207
+ case Variant.TONAL_SPOT:
4208
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16);
4209
+ case Variant.EXPRESSIVE:
4210
+ return TonalPalette.fromHueAndChroma(DynamicScheme.getRotatedHue(sourceColorHct, [0, 105, 140, 204, 253, 278, 300, 333, 360], [-160, 155, -100, 96, -96, -156, -165, -160]), "phone" === platform && isDark ? 16 : 24);
4211
+ case Variant.VIBRANT:
4212
+ return TonalPalette.fromHueAndChroma(DynamicScheme.getRotatedHue(sourceColorHct, [0, 38, 105, 140, 333, 360], [-14, 10, -14, 10, -14]), "phone" === platform ? 56 : 36);
4213
+ default:
4214
+ return super.getSecondaryPalette(variant, sourceColorHct, isDark, platform, contrastLevel);
4215
+ }
4216
+ }
4217
+ getTertiaryPalette(variant, sourceColorHct, isDark, platform, contrastLevel) {
4218
+ switch (variant) {
4219
+ case Variant.NEUTRAL:
4220
+ return TonalPalette.fromHueAndChroma(DynamicScheme.getRotatedHue(sourceColorHct, [0, 38, 105, 161, 204, 278, 333, 360], [-32, 26, 10, -39, 24, -15, -32]), "phone" === platform ? 20 : 36);
4221
+ case Variant.TONAL_SPOT:
4222
+ return TonalPalette.fromHueAndChroma(DynamicScheme.getRotatedHue(sourceColorHct, [0, 20, 71, 161, 333, 360], [-40, 48, -32, 40, -32]), "phone" === platform ? 28 : 32);
4223
+ case Variant.EXPRESSIVE:
4224
+ return TonalPalette.fromHueAndChroma(DynamicScheme.getRotatedHue(sourceColorHct, [0, 105, 140, 204, 253, 278, 300, 333, 360], [-165, 160, -105, 101, -101, -160, -170, -165]), 48);
4225
+ case Variant.VIBRANT:
4226
+ return TonalPalette.fromHueAndChroma(DynamicScheme.getRotatedHue(sourceColorHct, [0, 38, 71, 105, 140, 161, 253, 333, 360], [-72, 35, 24, -24, 62, 50, 62, -72]), 56);
4227
+ default:
4228
+ return super.getTertiaryPalette(variant, sourceColorHct, isDark, platform, contrastLevel);
4229
+ }
2721
4230
  }
2722
- get onSurfaceVariant() {
2723
- return this.props.onSurfaceVariant;
4231
+ static getExpressiveNeutralHue(sourceColorHct) {
4232
+ return DynamicScheme.getRotatedHue(sourceColorHct, [0, 71, 124, 253, 278, 300, 360], [10, 0, 10, 0, 10, 0]);
2724
4233
  }
2725
- get outline() {
2726
- return this.props.outline;
4234
+ static getExpressiveNeutralChroma(sourceColorHct, isDark, platform) {
4235
+ const neutralHue = DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralHue(sourceColorHct);
4236
+ return "phone" === platform ? isDark ? Hct.isYellow(neutralHue) ? 6 : 14 : 18 : 12;
2727
4237
  }
2728
- get outlineVariant() {
2729
- return this.props.outlineVariant;
4238
+ static getVibrantNeutralHue(sourceColorHct) {
4239
+ return DynamicScheme.getRotatedHue(sourceColorHct, [0, 38, 105, 140, 333, 360], [-14, 10, -14, 10, -14]);
2730
4240
  }
2731
- get shadow() {
2732
- return this.props.shadow;
4241
+ static getVibrantNeutralChroma(sourceColorHct, platform) {
4242
+ const neutralHue = DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralHue(sourceColorHct);
4243
+ return "phone" === platform || Hct.isBlue(neutralHue) ? 28 : 20;
2733
4244
  }
2734
- get scrim() {
2735
- return this.props.scrim;
4245
+ getNeutralPalette(variant, sourceColorHct, isDark, platform, contrastLevel) {
4246
+ switch (variant) {
4247
+ case Variant.NEUTRAL:
4248
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, "phone" === platform ? 1.4 : 6);
4249
+ case Variant.TONAL_SPOT:
4250
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, "phone" === platform ? 5 : 10);
4251
+ case Variant.EXPRESSIVE:
4252
+ return TonalPalette.fromHueAndChroma(DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralHue(sourceColorHct), DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralChroma(sourceColorHct, isDark, platform));
4253
+ case Variant.VIBRANT:
4254
+ return TonalPalette.fromHueAndChroma(DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralHue(sourceColorHct), DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralChroma(sourceColorHct, platform));
4255
+ default:
4256
+ return super.getNeutralPalette(variant, sourceColorHct, isDark, platform, contrastLevel);
4257
+ }
4258
+ }
4259
+ getNeutralVariantPalette(variant, sourceColorHct, isDark, platform, contrastLevel) {
4260
+ switch (variant) {
4261
+ case Variant.NEUTRAL:
4262
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 2.2 * ("phone" === platform ? 1.4 : 6));
4263
+ case Variant.TONAL_SPOT:
4264
+ return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 1.7 * ("phone" === platform ? 5 : 10));
4265
+ case Variant.EXPRESSIVE:
4266
+ const expressiveNeutralHue = DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralHue(sourceColorHct),
4267
+ expressiveNeutralChroma = DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralChroma(sourceColorHct, isDark, platform);
4268
+ return TonalPalette.fromHueAndChroma(expressiveNeutralHue, expressiveNeutralChroma * (expressiveNeutralHue >= 105 && expressiveNeutralHue < 125 ? 1.6 : 2.3));
4269
+ case Variant.VIBRANT:
4270
+ const vibrantNeutralHue = DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralHue(sourceColorHct),
4271
+ vibrantNeutralChroma = DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralChroma(sourceColorHct, platform);
4272
+ return TonalPalette.fromHueAndChroma(vibrantNeutralHue, 1.29 * vibrantNeutralChroma);
4273
+ default:
4274
+ return super.getNeutralVariantPalette(variant, sourceColorHct, isDark, platform, contrastLevel);
4275
+ }
4276
+ }
4277
+ getErrorPalette(variant, sourceColorHct, isDark, platform, contrastLevel) {
4278
+ const errorHue = DynamicScheme.getPiecewiseHue(sourceColorHct, [0, 3, 13, 23, 33, 43, 153, 273, 360], [12, 22, 32, 12, 22, 32, 22, 12]);
4279
+ switch (variant) {
4280
+ case Variant.NEUTRAL:
4281
+ return TonalPalette.fromHueAndChroma(errorHue, "phone" === platform ? 50 : 40);
4282
+ case Variant.TONAL_SPOT:
4283
+ return TonalPalette.fromHueAndChroma(errorHue, "phone" === platform ? 60 : 48);
4284
+ case Variant.EXPRESSIVE:
4285
+ return TonalPalette.fromHueAndChroma(errorHue, "phone" === platform ? 64 : 48);
4286
+ case Variant.VIBRANT:
4287
+ return TonalPalette.fromHueAndChroma(errorHue, "phone" === platform ? 80 : 60);
4288
+ default:
4289
+ return super.getErrorPalette(variant, sourceColorHct, isDark, platform, contrastLevel);
4290
+ }
2736
4291
  }
2737
- get inverseSurface() {
2738
- return this.props.inverseSurface;
4292
+ }
4293
+ const spec2021 = new DynamicSchemePalettesDelegateImpl2021(),
4294
+ spec2025 = new DynamicSchemePalettesDelegateImpl2025();
4295
+ function getSpec(specVersion) {
4296
+ return "2025" === specVersion ? spec2025 : spec2021;
4297
+ }
4298
+ class SchemeMonochrome extends DynamicScheme {
4299
+ constructor(sourceColorHct, isDark, contrastLevel, specVersion, platform) {
4300
+ if (specVersion === void 0) {
4301
+ specVersion = DynamicScheme.DEFAULT_SPEC_VERSION;
4302
+ }
4303
+ if (platform === void 0) {
4304
+ platform = DynamicScheme.DEFAULT_PLATFORM;
4305
+ }
4306
+ super({
4307
+ sourceColorHct: sourceColorHct,
4308
+ variant: Variant.MONOCHROME,
4309
+ contrastLevel: contrastLevel,
4310
+ isDark: isDark,
4311
+ platform: platform,
4312
+ specVersion: specVersion
4313
+ });
2739
4314
  }
2740
- get inverseOnSurface() {
2741
- return this.props.inverseOnSurface;
4315
+ }
4316
+ class SchemeTonalSpot extends DynamicScheme {
4317
+ constructor(sourceColorHct, isDark, contrastLevel, specVersion, platform) {
4318
+ if (specVersion === void 0) {
4319
+ specVersion = DynamicScheme.DEFAULT_SPEC_VERSION;
4320
+ }
4321
+ if (platform === void 0) {
4322
+ platform = DynamicScheme.DEFAULT_PLATFORM;
4323
+ }
4324
+ super({
4325
+ sourceColorHct: sourceColorHct,
4326
+ variant: Variant.TONAL_SPOT,
4327
+ contrastLevel: contrastLevel,
4328
+ isDark: isDark,
4329
+ platform: platform,
4330
+ specVersion: specVersion
4331
+ });
2742
4332
  }
2743
- get inversePrimary() {
2744
- return this.props.inversePrimary;
2745
- }
2746
- static light(argb) {
2747
- return Scheme.lightFromCorePalette(CorePalette.of(argb));
2748
- }
2749
- static dark(argb) {
2750
- return Scheme.darkFromCorePalette(CorePalette.of(argb));
2751
- }
2752
- static lightContent(argb) {
2753
- return Scheme.lightFromCorePalette(CorePalette.contentOf(argb));
2754
- }
2755
- static darkContent(argb) {
2756
- return Scheme.darkFromCorePalette(CorePalette.contentOf(argb));
2757
- }
2758
- static lightFromCorePalette(core) {
2759
- return new Scheme({
2760
- primary: core.a1.tone(40),
2761
- onPrimary: core.a1.tone(100),
2762
- primaryContainer: core.a1.tone(90),
2763
- onPrimaryContainer: core.a1.tone(10),
2764
- secondary: core.a2.tone(40),
2765
- onSecondary: core.a2.tone(100),
2766
- secondaryContainer: core.a2.tone(90),
2767
- onSecondaryContainer: core.a2.tone(10),
2768
- tertiary: core.a3.tone(40),
2769
- onTertiary: core.a3.tone(100),
2770
- tertiaryContainer: core.a3.tone(90),
2771
- onTertiaryContainer: core.a3.tone(10),
2772
- error: core.error.tone(40),
2773
- onError: core.error.tone(100),
2774
- errorContainer: core.error.tone(90),
2775
- onErrorContainer: core.error.tone(10),
2776
- background: core.n1.tone(99),
2777
- onBackground: core.n1.tone(10),
2778
- surface: core.n1.tone(99),
2779
- onSurface: core.n1.tone(10),
2780
- surfaceVariant: core.n2.tone(90),
2781
- onSurfaceVariant: core.n2.tone(30),
2782
- outline: core.n2.tone(50),
2783
- outlineVariant: core.n2.tone(80),
2784
- shadow: core.n1.tone(0),
2785
- scrim: core.n1.tone(0),
2786
- inverseSurface: core.n1.tone(20),
2787
- inverseOnSurface: core.n1.tone(95),
2788
- inversePrimary: core.a1.tone(80)
2789
- });
2790
- }
2791
- static darkFromCorePalette(core) {
2792
- return new Scheme({
2793
- primary: core.a1.tone(80),
2794
- onPrimary: core.a1.tone(20),
2795
- primaryContainer: core.a1.tone(30),
2796
- onPrimaryContainer: core.a1.tone(90),
2797
- secondary: core.a2.tone(80),
2798
- onSecondary: core.a2.tone(20),
2799
- secondaryContainer: core.a2.tone(30),
2800
- onSecondaryContainer: core.a2.tone(90),
2801
- tertiary: core.a3.tone(80),
2802
- onTertiary: core.a3.tone(20),
2803
- tertiaryContainer: core.a3.tone(30),
2804
- onTertiaryContainer: core.a3.tone(90),
2805
- error: core.error.tone(80),
2806
- onError: core.error.tone(20),
2807
- errorContainer: core.error.tone(30),
2808
- onErrorContainer: core.error.tone(80),
2809
- background: core.n1.tone(10),
2810
- onBackground: core.n1.tone(90),
2811
- surface: core.n1.tone(10),
2812
- onSurface: core.n1.tone(90),
2813
- surfaceVariant: core.n2.tone(30),
2814
- onSurfaceVariant: core.n2.tone(80),
2815
- outline: core.n2.tone(60),
2816
- outlineVariant: core.n2.tone(30),
2817
- shadow: core.n1.tone(0),
2818
- scrim: core.n1.tone(0),
2819
- inverseSurface: core.n1.tone(90),
2820
- inverseOnSurface: core.n1.tone(20),
2821
- inversePrimary: core.a1.tone(40)
2822
- });
2823
- }
2824
- constructor(props) {
2825
- this.props = props;
2826
- }
2827
- toJSON() {
2828
- return {
2829
- ...this.props
2830
- };
4333
+ }
4334
+ class SchemeVibrant extends DynamicScheme {
4335
+ constructor(sourceColorHct, isDark, contrastLevel, specVersion, platform) {
4336
+ if (specVersion === void 0) {
4337
+ specVersion = DynamicScheme.DEFAULT_SPEC_VERSION;
4338
+ }
4339
+ if (platform === void 0) {
4340
+ platform = DynamicScheme.DEFAULT_PLATFORM;
4341
+ }
4342
+ super({
4343
+ sourceColorHct: sourceColorHct,
4344
+ variant: Variant.VIBRANT,
4345
+ contrastLevel: contrastLevel,
4346
+ isDark: isDark,
4347
+ platform: platform,
4348
+ specVersion: specVersion
4349
+ });
2831
4350
  }
2832
4351
  }
2833
4352
  function hexFromArgb(argb) {
@@ -2851,51 +4370,6 @@
2851
4370
  function parseIntHex(value) {
2852
4371
  return parseInt(value, 16);
2853
4372
  }
2854
- function themeFromSourceColor(source, customColors) {
2855
- if (customColors === void 0) {
2856
- customColors = [];
2857
- }
2858
- const palette = CorePalette.of(source);
2859
- return {
2860
- source: source,
2861
- schemes: {
2862
- light: Scheme.light(source),
2863
- dark: Scheme.dark(source)
2864
- },
2865
- palettes: {
2866
- primary: palette.a1,
2867
- secondary: palette.a2,
2868
- tertiary: palette.a3,
2869
- neutral: palette.n1,
2870
- neutralVariant: palette.n2,
2871
- error: palette.error
2872
- },
2873
- customColors: customColors.map(c => customColor(source, c))
2874
- };
2875
- }
2876
- function customColor(source, color) {
2877
- let value = color.value;
2878
- const from = value,
2879
- to = source;
2880
- color.blend && (value = Blend.harmonize(from, to));
2881
- const tones = CorePalette.of(value).a1;
2882
- return {
2883
- color: color,
2884
- value: value,
2885
- light: {
2886
- color: tones.tone(40),
2887
- onColor: tones.tone(100),
2888
- colorContainer: tones.tone(90),
2889
- onColorContainer: tones.tone(10)
2890
- },
2891
- dark: {
2892
- color: tones.tone(80),
2893
- onColor: tones.tone(20),
2894
- colorContainer: tones.tone(30),
2895
- onColorContainer: tones.tone(90)
2896
- }
2897
- };
2898
- }
2899
4373
 
2900
4374
  // eslint-disable-next-line
2901
4375
 
@@ -2940,36 +4414,116 @@
2940
4414
  }
2941
4415
  /* eslint-enable */
2942
4416
 
2943
- const materialColors = function (hexColor) {
4417
+ let monochromeCached = null;
4418
+ const cachedColors = {};
4419
+ const materialColors = function (hexColor, colorScheme) {
2944
4420
  if (hexColor === void 0) {
2945
4421
  hexColor = '';
2946
4422
  }
2947
- const theme = themeFromSourceColor(argbFromHex(`#${hexColor.replace('#', '')}`));
2948
- [0.05, 0.08, 0.11, 0.12, 0.14].forEach((amount, index) => {
2949
- theme.schemes.light.props[`surface${index + 1}`] = argbFromHex(blend(hexFromArgb(theme.schemes.light.props.surface), hexFromArgb(theme.schemes.light.props.primary), amount));
2950
- theme.schemes.dark.props[`surface${index + 1}`] = argbFromHex(blend(hexFromArgb(theme.schemes.dark.props.surface), hexFromArgb(theme.schemes.dark.props.primary), amount));
4423
+ if (colorScheme === void 0) {
4424
+ colorScheme = 'default';
4425
+ }
4426
+ const cacheKey = `${hexColor}-${colorScheme}`;
4427
+ if (cachedColors[cacheKey]) {
4428
+ return cachedColors[cacheKey];
4429
+ }
4430
+ if (monochromeCached && colorScheme.includes('monochrome')) {
4431
+ const defaultColors = materialColors(hexColor, colorScheme === 'monochrome' ? 'default' : 'vibrant');
4432
+ cachedColors[cacheKey] = {
4433
+ light: {
4434
+ ...defaultColors.light,
4435
+ ...monochromeCached.light
4436
+ },
4437
+ dark: {
4438
+ ...defaultColors.dark,
4439
+ ...monochromeCached.dark
4440
+ }
4441
+ };
4442
+ return cachedColors[cacheKey];
4443
+ }
4444
+ const sourceColor = argbFromHex(`#${hexColor.replace('#', '')}`);
4445
+ let lightScheme;
4446
+ let darkScheme;
4447
+ const hctColor = Hct.fromInt(sourceColor);
4448
+ if (colorScheme === 'default') {
4449
+ lightScheme = new SchemeTonalSpot(hctColor, false, 0, '2025');
4450
+ darkScheme = new SchemeTonalSpot(hctColor, true, 0, '2025');
4451
+ }
4452
+ if (colorScheme === 'vibrant') {
4453
+ lightScheme = new SchemeVibrant(hctColor, false, 0, '2025');
4454
+ darkScheme = new SchemeVibrant(hctColor, true, 0, '2025');
4455
+ }
4456
+ if (colorScheme.includes('monochrome')) {
4457
+ lightScheme = new SchemeMonochrome(hctColor, false, 0, '2025');
4458
+ darkScheme = new SchemeMonochrome(hctColor, true, 0, '2025');
4459
+ }
4460
+ const getColorName = name => {
4461
+ let newName = name;
4462
+ if (name === 'surface_dim') newName = 'surface_variant';
4463
+ if (name === 'surface_container_low') newName = 'surface_1';
4464
+ if (name === 'surface_container') newName = 'surface_2';
4465
+ if (name === 'surface_container_high') newName = 'surface_3';
4466
+ if (name === 'surface_container_highest') newName = 'surface_4';
4467
+ return newName;
4468
+ };
4469
+ const theme = {
4470
+ light: {},
4471
+ dark: {}
4472
+ };
4473
+ lightScheme.colors.allColors.forEach(color => {
4474
+ const name = getColorName(color.name);
4475
+ const argb = color.getArgb(lightScheme);
4476
+ theme.light[name] = argb;
4477
+ });
4478
+ darkScheme.colors.allColors.forEach(color => {
4479
+ const name = getColorName(color.name);
4480
+ const argb = color.getArgb(darkScheme);
4481
+ theme.dark[name] = argb;
2951
4482
  });
4483
+ theme.light.surface_5 = argbFromHex(blend(hexFromArgb(theme.light.surface_4), hexFromArgb(theme.light.primary), 0.05));
4484
+ theme.dark.surface_5 = argbFromHex(blend(hexFromArgb(theme.dark.surface_4), hexFromArgb(theme.dark.primary), 0.05));
2952
4485
  const name = n => {
2953
- return n.split('').map(char => char.toUpperCase() === char && char !== '-' && char !== '7' ? `-${char.toLowerCase()}` : char).join('');
4486
+ return n.replace(/_/g, '-');
2954
4487
  };
2955
- const shouldSkip = prop => {
2956
- const skip = ['tertiary', 'shadow', 'scrim', 'error', 'background'];
2957
- return skip.filter(v => prop.toLowerCase().includes(v)).length > 0;
4488
+ const shouldKeep = prop => {
4489
+ const foreground = ['inverse_primary', 'primary', 'on_primary', 'primary_container', 'on_primary_container', 'secondary', 'on_secondary', 'secondary_container', 'on_secondary_container', 'outline', 'outline_variant'];
4490
+ const background = ['on_surface', 'on_surface_variant', 'inverse_on_surface', 'inverse_surface', 'surface', 'surface_variant', 'surface_1', 'surface_2', 'surface_3', 'surface_4', 'surface_5'];
4491
+ const keep = colorScheme === 'default' ? [...foreground, ...background] : colorScheme === 'vibrant' ? [...foreground, ...background] : background;
4492
+ return keep.includes(prop);
2958
4493
  };
2959
4494
  const light = {};
2960
4495
  const dark = {};
2961
- Object.keys(theme.schemes.light.props).forEach(prop => {
2962
- if (shouldSkip(prop)) return;
2963
- light[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.light.props[prop]);
4496
+ Object.keys(theme.light).forEach(prop => {
4497
+ if (!shouldKeep(prop)) return;
4498
+ light[name(`--f7-md-${prop}`)] = hexFromArgb(theme.light[prop]);
2964
4499
  });
2965
- Object.keys(theme.schemes.dark.props).forEach(prop => {
2966
- if (shouldSkip(prop)) return;
2967
- dark[name(`--f7-md-${prop}`)] = hexFromArgb(theme.schemes.dark.props[prop]);
4500
+ Object.keys(theme.dark).forEach(prop => {
4501
+ if (!shouldKeep(prop)) return;
4502
+ dark[name(`--f7-md-${prop}`)] = hexFromArgb(theme.dark[prop]);
2968
4503
  });
2969
- return {
4504
+ if (colorScheme.includes('monochrome')) {
4505
+ monochromeCached = {
4506
+ light,
4507
+ dark
4508
+ };
4509
+ const defaultColors = materialColors(hexColor, colorScheme === 'monochrome' ? 'default' : 'vibrant');
4510
+ cachedColors[cacheKey] = {
4511
+ light: {
4512
+ ...defaultColors.light,
4513
+ ...light
4514
+ },
4515
+ dark: {
4516
+ ...defaultColors.dark,
4517
+ ...dark
4518
+ }
4519
+ };
4520
+ return cachedColors[cacheKey];
4521
+ }
4522
+ cachedColors[cacheKey] = {
2970
4523
  light,
2971
4524
  dark
2972
4525
  };
4526
+ return cachedColors[cacheKey];
2973
4527
  };
2974
4528
 
2975
4529
  let uniqueNum = 0;
@@ -3304,31 +4858,40 @@
3304
4858
  function colorThemeCSSProperties() {
3305
4859
  let hex;
3306
4860
  let rgb;
4861
+ let mdColorScheme;
3307
4862
  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
3308
4863
  args[_key3] = arguments[_key3];
3309
4864
  }
3310
4865
  if (args.length === 1) {
3311
4866
  hex = args[0];
3312
4867
  rgb = colorHexToRgb(hex);
4868
+ } else if (args.length === 2) {
4869
+ hex = args[0];
4870
+ rgb = colorHexToRgb(hex);
4871
+ mdColorScheme = args[1] || 'default';
3313
4872
  } else if (args.length === 3) {
3314
4873
  rgb = args;
3315
4874
  hex = colorRgbToHex(...rgb);
4875
+ } else if (args.length === 4) {
4876
+ rgb = args.slice(0, 3);
4877
+ hex = colorRgbToHex(...rgb);
4878
+ mdColorScheme = args[3] || 'default';
3316
4879
  }
3317
4880
  if (!rgb) return {};
3318
4881
  const {
3319
4882
  light,
3320
4883
  dark
3321
- } = materialColors(hex);
4884
+ } = materialColors(hex, mdColorScheme);
3322
4885
  const shadeTintIos = getShadeTintColors(rgb);
3323
4886
  const shadeTintMdLight = getShadeTintColors(colorHexToRgb(light['--f7-md-primary']));
3324
4887
  const shadeTintMdDark = getShadeTintColors(colorHexToRgb(dark['--f7-md-primary']));
3325
4888
  Object.keys(light).forEach(key => {
3326
- if (key.includes('surface-')) {
4889
+ if (key.includes('surface-') && !key.includes('-rgb')) {
3327
4890
  light[`${key}-rgb`] = colorHexToRgb(light[key]);
3328
4891
  }
3329
4892
  });
3330
4893
  Object.keys(dark).forEach(key => {
3331
- if (key.includes('surface-')) {
4894
+ if (key.includes('surface-') && !key.includes('-rgb')) {
3332
4895
  dark[`${key}-rgb`] = colorHexToRgb(dark[key]);
3333
4896
  }
3334
4897
  });
@@ -3385,10 +4948,13 @@
3385
4948
  });
3386
4949
  return arr;
3387
4950
  }
3388
- function colorThemeCSSStyles(colors) {
4951
+ function colorThemeCSSStyles(colors, mdColorScheme) {
3389
4952
  if (colors === void 0) {
3390
4953
  colors = {};
3391
4954
  }
4955
+ if (mdColorScheme === void 0) {
4956
+ mdColorScheme = 'default';
4957
+ }
3392
4958
  const stringifyObject = obj => {
3393
4959
  let res = '';
3394
4960
  Object.keys(obj).forEach(key => {
@@ -3396,12 +4962,12 @@
3396
4962
  });
3397
4963
  return res;
3398
4964
  };
3399
- const colorVars = colorThemeCSSProperties(colors.primary);
4965
+ const colorVars = colorThemeCSSProperties(colors.primary, mdColorScheme);
3400
4966
  const primary = [`:root{`, stringifyObject(colorVars.light), `--swiper-theme-color:var(--f7-theme-color);`, ...Object.keys(colors).map(colorName => `--f7-color-${colorName}: ${colors[colorName]};`), `}`, `.dark{`, stringifyObject(colorVars.dark), `}`, `.ios, .ios .dark{`, stringifyObject(colorVars.ios), '}', `.md, .md .dark{`, stringifyObject(colorVars.md), '}'].join('');
3401
4967
  const restVars = {};
3402
4968
  Object.keys(colors).forEach(colorName => {
3403
4969
  const colorValue = colors[colorName];
3404
- restVars[colorName] = colorThemeCSSProperties(colorValue);
4970
+ restVars[colorName] = colorThemeCSSProperties(colorValue, mdColorScheme);
3405
4971
  });
3406
4972
 
3407
4973
  // rest
@@ -3542,26 +5108,7 @@
3542
5108
  const window = getWindow$1();
3543
5109
  const document = getDocument$1();
3544
5110
  return {
3545
- touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
3546
- pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,
3547
- passiveListener: function checkPassiveListener() {
3548
- let supportsPassive = false;
3549
- try {
3550
- const opts = Object.defineProperty({}, 'passive', {
3551
- // eslint-disable-next-line
3552
- get() {
3553
- supportsPassive = true;
3554
- }
3555
- });
3556
- window.addEventListener('testPassiveListener', null, opts);
3557
- } catch (e) {
3558
- // No support
3559
- }
3560
- return supportsPassive;
3561
- }(),
3562
- intersectionObserver: function checkObserver() {
3563
- return 'IntersectionObserver' in window;
3564
- }()
5111
+ touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)
3565
5112
  };
3566
5113
  }
3567
5114
  function getSupport$1() {
@@ -4270,6 +5817,7 @@
4270
5817
  componentUrl: undefined,
4271
5818
  userAgent: null,
4272
5819
  url: null,
5820
+ mdColorScheme: 'default',
4273
5821
  colors: {
4274
5822
  primary: '#007aff',
4275
5823
  red: '#ff3b30',
@@ -4311,6 +5859,7 @@
4311
5859
  passedParams,
4312
5860
  online: w.navigator.onLine,
4313
5861
  colors: app.params.colors,
5862
+ mdColorScheme: app.params.mdColorScheme || 'default',
4314
5863
  darkMode: app.params.darkMode
4315
5864
  });
4316
5865
  if (params.store) app.params.store = params.store;
@@ -4340,10 +5889,16 @@
4340
5889
  // Return app instance
4341
5890
  return app;
4342
5891
  }
4343
- setColorTheme(color) {
5892
+ setColorTheme(color, mdColorScheme) {
4344
5893
  if (!color) return;
4345
5894
  const app = this;
4346
5895
  app.colors.primary = color;
5896
+ app.mdColorScheme = mdColorScheme || app.mdColorScheme;
5897
+ app.setColors();
5898
+ }
5899
+ setMdColorScheme(mdColorScheme) {
5900
+ const app = this;
5901
+ app.mdColorScheme = mdColorScheme || app.mdColorScheme;
4347
5902
  app.setColors();
4348
5903
  }
4349
5904
  setColors() {
@@ -4353,7 +5908,7 @@
4353
5908
  app.colorsStyleEl = document.createElement('style');
4354
5909
  document.head.prepend(app.colorsStyleEl);
4355
5910
  }
4356
- app.colorsStyleEl.textContent = app.utils.colorThemeCSSStyles(app.colors);
5911
+ app.colorsStyleEl.textContent = app.utils.colorThemeCSSStyles(app.colors, app.mdColorScheme);
4357
5912
  }
4358
5913
  mount(rootEl) {
4359
5914
  const app = this;
@@ -14083,9 +15638,12 @@
14083
15638
  if (buttons.length > 0) {
14084
15639
  buttonsHTML = $jsx$1("div", {
14085
15640
  class: "dialog-buttons"
14086
- }, buttons.map(button => $jsx$1("span", {
14087
- class: `dialog-button${button.strong ? ' dialog-button-strong' : ''}${button.color ? ` color-${button.color}` : ''}${button.cssClass ? ` ${button.cssClass}` : ''}`
14088
- }, button.text)));
15641
+ }, buttons.map(button => {
15642
+ const classes = ['button button-round dialog-button', button.strong && 'button-fill', button.color && `color-${button.color}`, app.theme === 'ios' && 'button-large', app.theme === 'ios' && !button.strong && 'button-tonal', button.cssClass && button.cssClass].filter(Boolean).join(' ');
15643
+ return $jsx$1("button", {
15644
+ class: classes
15645
+ }, button.text);
15646
+ }));
14089
15647
  }
14090
15648
  const dialogHtml = $jsx$1("div", {
14091
15649
  class: dialogClasses.join(' ')
@@ -14306,7 +15864,7 @@
14306
15864
  color: null
14307
15865
  }, {
14308
15866
  text: app.params.dialog.buttonOk,
14309
- strong: isIosTheme,
15867
+ strong: true,
14310
15868
  keyCodes: keyboardActions ? [13] : null
14311
15869
  }],
14312
15870
  onClick(dialog, index) {
@@ -14336,7 +15894,7 @@
14336
15894
  color: null
14337
15895
  }, {
14338
15896
  text: app.params.dialog.buttonOk,
14339
- strong: isIosTheme,
15897
+ strong: true,
14340
15898
  onClick: callbackOk,
14341
15899
  keyCodes: keyboardActions ? [13] : null
14342
15900
  }],
@@ -14403,7 +15961,7 @@
14403
15961
  color: null
14404
15962
  }, {
14405
15963
  text: app.params.dialog.buttonOk,
14406
- strong: isIosTheme,
15964
+ strong: true,
14407
15965
  keyCodes: keyboardActions ? [13] : null
14408
15966
  }],
14409
15967
  onClick(dialog, index) {
@@ -14948,15 +16506,6 @@
14948
16506
  }
14949
16507
  }
14950
16508
 
14951
- // Find Arrow
14952
- let $arrowEl;
14953
- if ($el.find('.popover-arrow').length === 0 && popover.params.arrow) {
14954
- $arrowEl = $('<div class="popover-arrow"></div>');
14955
- $el.prepend($arrowEl);
14956
- } else {
14957
- $arrowEl = $el.find('.popover-arrow');
14958
- }
14959
-
14960
16509
  // Open
14961
16510
  const originalOpen = popover.open;
14962
16511
  extend$3(popover, {
@@ -14965,8 +16514,6 @@
14965
16514
  el: $el[0],
14966
16515
  $targetEl,
14967
16516
  targetEl: $targetEl[0],
14968
- $arrowEl,
14969
- arrowEl: $arrowEl[0],
14970
16517
  $backdropEl,
14971
16518
  backdropEl: $backdropEl && $backdropEl[0],
14972
16519
  type: 'popover',
@@ -14988,7 +16535,15 @@
14988
16535
  popover.resize();
14989
16536
  }
14990
16537
  popover.on('popoverOpen', () => {
16538
+ if (popover.app.theme === 'ios') {
16539
+ $el.removeClass('modal-in');
16540
+ }
14991
16541
  popover.resize();
16542
+ if (popover.app.theme === 'ios') {
16543
+ requestAnimationFrame(() => {
16544
+ $el.addClass('modal-in');
16545
+ });
16546
+ }
14992
16547
  app.on('resize', handleResize);
14993
16548
  $(window).on('keyboardDidShow keyboardDidHide', handleResize);
14994
16549
  popover.on('popoverClose popoverBeforeDestroy', () => {
@@ -15051,8 +16606,7 @@
15051
16606
  const {
15052
16607
  app,
15053
16608
  $el,
15054
- $targetEl,
15055
- $arrowEl
16609
+ $targetEl
15056
16610
  } = popover;
15057
16611
  const {
15058
16612
  targetX,
@@ -15064,18 +16618,6 @@
15064
16618
  top: ''
15065
16619
  });
15066
16620
  const [width, height] = [$el.width(), $el.height()];
15067
- let arrowSize = 0;
15068
- let arrowLeft;
15069
- let arrowTop;
15070
- const hasArrow = $arrowEl.length > 0;
15071
- const arrowMin = app.theme === 'ios' ? 13 : 24;
15072
- if (hasArrow) {
15073
- $arrowEl.removeClass('on-left on-right on-top on-bottom').css({
15074
- left: '',
15075
- top: ''
15076
- });
15077
- arrowSize = $arrowEl.width() / 2;
15078
- }
15079
16621
  $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle').css({
15080
16622
  left: '',
15081
16623
  top: ''
@@ -15106,30 +16648,27 @@
15106
16648
  targetWidth = popover.params.targetWidth || 0;
15107
16649
  targetHeight = popover.params.targetHeight || 0;
15108
16650
  }
15109
- let [left, top, diff] = [0, 0, 0];
16651
+ let [left, top] = [0, 0];
15110
16652
  // Top Position
15111
16653
  const forcedPosition = verticalPosition === 'auto' ? false : verticalPosition;
15112
16654
  let position = forcedPosition || 'top';
15113
- if (forcedPosition === 'top' || !forcedPosition && height + arrowSize < targetOffsetTop - safeAreaTop) {
16655
+ if (forcedPosition === 'top' || !forcedPosition && height < targetOffsetTop - safeAreaTop) {
15114
16656
  // On top
15115
- top = targetOffsetTop - height - arrowSize;
15116
- } else if (forcedPosition === 'bottom' || !forcedPosition && height + arrowSize < app.height - targetOffsetTop - targetHeight) {
16657
+ top = targetOffsetTop - height;
16658
+ } else if (forcedPosition === 'bottom' || !forcedPosition && height < app.height - targetOffsetTop - targetHeight) {
15117
16659
  // On bottom
15118
16660
  position = 'bottom';
15119
- top = targetOffsetTop + targetHeight + arrowSize;
16661
+ top = targetOffsetTop + targetHeight;
15120
16662
  } else {
15121
16663
  // On middle
15122
16664
  position = 'middle';
15123
16665
  top = targetHeight / 2 + targetOffsetTop - height / 2;
15124
- diff = top;
15125
16666
  top = Math.max(5, Math.min(top, app.height - height - 5));
15126
- diff -= top;
15127
16667
  }
15128
16668
 
15129
16669
  // Horizontal Position
15130
16670
  if (position === 'top' || position === 'bottom') {
15131
16671
  left = targetWidth / 2 + targetOffsetLeft - width / 2;
15132
- diff = left;
15133
16672
  left = Math.max(5, Math.min(left, app.width - width - 5));
15134
16673
  if (safeAreaLeft) {
15135
16674
  left = Math.max(left, safeAreaLeft);
@@ -15137,35 +16676,12 @@
15137
16676
  if (safeAreaRight && left + width > app.width - 5 - safeAreaRight) {
15138
16677
  left = app.width - 5 - safeAreaRight - width;
15139
16678
  }
15140
- diff -= left;
15141
- if (hasArrow) {
15142
- if (position === 'top') {
15143
- $arrowEl.addClass('on-bottom');
15144
- }
15145
- if (position === 'bottom') {
15146
- $arrowEl.addClass('on-top');
15147
- }
15148
- arrowLeft = width / 2 - arrowSize + diff;
15149
- arrowLeft = Math.max(Math.min(arrowLeft, width - arrowSize * 2 - arrowMin), arrowMin);
15150
- $arrowEl.css({
15151
- left: `${arrowLeft}px`
15152
- });
15153
- }
15154
16679
  } else if (position === 'middle') {
15155
- left = targetOffsetLeft - width - arrowSize;
15156
- if (hasArrow) $arrowEl.addClass('on-right');
16680
+ left = targetOffsetLeft - width;
15157
16681
  if (left < 5 || left + width + safeAreaRight > app.width || left < safeAreaLeft) {
15158
- if (left < 5) left = targetOffsetLeft + targetWidth + arrowSize;
16682
+ if (left < 5) left = targetOffsetLeft + targetWidth;
15159
16683
  if (left + width + safeAreaRight > app.width) left = app.width - width - 5 - safeAreaRight;
15160
16684
  if (left < safeAreaLeft) left = safeAreaLeft;
15161
- if (hasArrow) $arrowEl.removeClass('on-right').addClass('on-left');
15162
- }
15163
- if (hasArrow) {
15164
- arrowTop = height / 2 - arrowSize + diff;
15165
- arrowTop = Math.max(Math.min(arrowTop, height - arrowSize * 2 - arrowMin), arrowMin);
15166
- $arrowEl.css({
15167
- top: `${arrowTop}px`
15168
- });
15169
16685
  }
15170
16686
  }
15171
16687
 
@@ -15183,6 +16699,11 @@
15183
16699
  top: `${top}px`,
15184
16700
  left: `${left}px`
15185
16701
  });
16702
+ if (app.theme === 'ios') {
16703
+ $el.css({
16704
+ transformOrigin: `${targetOffsetLeft + targetWidth / 2 - left}px ${targetOffsetTop + targetHeight / 2 - top}px`
16705
+ });
16706
+ }
15186
16707
  }
15187
16708
  };
15188
16709
 
@@ -15191,7 +16712,6 @@
15191
16712
  params: {
15192
16713
  popover: {
15193
16714
  verticalPosition: 'auto',
15194
- arrow: true,
15195
16715
  backdrop: true,
15196
16716
  backdropEl: undefined,
15197
16717
  backdropUnique: false,
@@ -16455,8 +17975,8 @@
16455
17975
  class: "toast-icon"
16456
17976
  }, icon), $jsx$1("div", {
16457
17977
  class: "toast-text"
16458
- }, text), closeButton && !icon && $jsx$1("a", {
16459
- class: `toast-button button ${closeButtonColor ? `color-${closeButtonColor}` : ''}`
17978
+ }, text), closeButton && !icon && $jsx$1("button", {
17979
+ class: `toast-button button ${closeButtonColor ? `color-${closeButtonColor}` : ''}${toast.app.theme === 'ios' ? ' button-round' : ''}`
16460
17980
  }, closeButtonText)));
16461
17981
  }
16462
17982
  };
@@ -17062,6 +18582,7 @@
17062
18582
  let $overswipeRightButton;
17063
18583
  let overswipeLeft;
17064
18584
  let overswipeRight;
18585
+ const isIOS = app.theme === 'ios';
17065
18586
  function handleTouchStart(e) {
17066
18587
  if (!app.swipeout.allow) return;
17067
18588
  isMoved = false;
@@ -17080,12 +18601,16 @@
17080
18601
  isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
17081
18602
  }
17082
18603
  if (isScrolling) {
18604
+ $swipeoutEl.removeClass('swipeout-active');
17083
18605
  isTouched = false;
17084
18606
  return;
17085
18607
  }
17086
18608
  if (!isMoved) {
17087
18609
  if ($('.list.sortable-opened').length > 0) return;
17088
18610
  $swipeoutContent = $swipeoutEl.find('.swipeout-content');
18611
+ if (!app.params.swipeout.noFollow) {
18612
+ $swipeoutEl.addClass('swipeout-active');
18613
+ }
17089
18614
  $actionsRight = $swipeoutEl.find('.swipeout-actions-right');
17090
18615
  $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');
17091
18616
  actionsLeftWidth = null;
@@ -17125,6 +18650,7 @@
17125
18650
  }
17126
18651
  if (translate > 0 && $actionsLeft.length === 0 || translate < 0 && $actionsRight.length === 0) {
17127
18652
  if (!opened) {
18653
+ $swipeoutEl.removeClass('swipeout-active');
17128
18654
  isTouched = false;
17129
18655
  isMoved = false;
17130
18656
  $swipeoutContent.transform('');
@@ -17185,11 +18711,24 @@
17185
18711
  if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {
17186
18712
  $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;
17187
18713
  }
18714
+ if (typeof buttonEl.f7SwipeoutButtonWidth === 'undefined') {
18715
+ $buttonEl[0].f7SwipeoutButtonWidth = buttonEl.offsetWidth;
18716
+ }
17188
18717
  buttonOffset = buttonEl.f7SwipeoutButtonOffset;
18718
+ const buttonWidth = $buttonEl[0].f7SwipeoutButtonWidth;
17189
18719
  if ($overswipeRightButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-left') {
17190
- $buttonEl.css({
17191
- left: `${overswipeRight ? -buttonOffset : 0}px`
17192
- });
18720
+ if (isIOS) {
18721
+ const newWidth = overswipeRight ? buttonWidth + buttonOffset - 8 : buttonWidth;
18722
+ const diff = newWidth - buttonWidth;
18723
+ $buttonEl.css({
18724
+ width: `${newWidth}px`,
18725
+ marginLeft: overswipeRight ? `${-diff}px` : '0px'
18726
+ });
18727
+ } else {
18728
+ $buttonEl.css({
18729
+ left: `${overswipeRight ? -buttonOffset : 0}px`
18730
+ });
18731
+ }
17193
18732
  if (overswipeRight) {
17194
18733
  if (!$buttonEl.hasClass('swipeout-overswipe-active')) {
17195
18734
  $swipeoutEl.trigger('swipeout:overswipeenter');
@@ -17204,7 +18743,15 @@
17204
18743
  $buttonEl.removeClass('swipeout-overswipe-active');
17205
18744
  }
17206
18745
  }
17207
- $buttonEl.transform(`translate3d(${buttonTranslate - buttonOffset * (1 + Math.max(progress, -1))}px,0,0)`);
18746
+ if (isIOS) {
18747
+ const buttonEndPos = actionsRightWidth - buttonOffset;
18748
+ const buttonStartPos = actionsRightWidth - buttonOffset - buttonWidth;
18749
+ let buttonProgress = (-buttonTranslate - buttonStartPos) / (buttonEndPos - buttonStartPos);
18750
+ buttonProgress = Math.max(Math.min(buttonProgress, 1), 0);
18751
+ $buttonEl.transform(`scale(${buttonProgress})`);
18752
+ } else {
18753
+ $buttonEl.transform(`translate3d(${buttonTranslate - buttonOffset * (1 + Math.max(progress, -1))}px,0,0)`);
18754
+ }
17208
18755
  });
17209
18756
  }
17210
18757
  if ($actionsLeft.length > 0) {
@@ -17225,14 +18772,27 @@
17225
18772
  }
17226
18773
  $leftButtons.each((buttonEl, index) => {
17227
18774
  const $buttonEl = $(buttonEl);
18775
+ if (typeof buttonEl.f7SwipeoutButtonWidth === 'undefined') {
18776
+ $buttonEl[0].f7SwipeoutButtonWidth = buttonEl.offsetWidth;
18777
+ }
17228
18778
  if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {
17229
- $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;
18779
+ $buttonEl[0].f7SwipeoutButtonOffset = isIOS ? buttonEl.offsetLeft : actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;
17230
18780
  }
18781
+ const buttonWidth = $buttonEl[0].f7SwipeoutButtonWidth;
17231
18782
  buttonOffset = buttonEl.f7SwipeoutButtonOffset;
17232
18783
  if ($overswipeLeftButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-right') {
17233
- $buttonEl.css({
17234
- left: `${overswipeLeft ? buttonOffset : 0}px`
17235
- });
18784
+ if (isIOS) {
18785
+ const newWidth = overswipeLeft ? actionsLeftWidth - 16 : buttonWidth;
18786
+ const diff = newWidth - buttonWidth;
18787
+ $buttonEl.css({
18788
+ width: `${newWidth}px`,
18789
+ marginRight: overswipeLeft ? `${-diff}px` : '0px'
18790
+ });
18791
+ } else {
18792
+ $buttonEl.css({
18793
+ left: `${overswipeLeft ? buttonOffset : 0}px`
18794
+ });
18795
+ }
17236
18796
  if (overswipeLeft) {
17237
18797
  if (!$buttonEl.hasClass('swipeout-overswipe-active')) {
17238
18798
  $swipeoutEl.trigger('swipeout:overswipeenter');
@@ -17250,7 +18810,15 @@
17250
18810
  if ($leftButtons.length > 1) {
17251
18811
  $buttonEl.css('z-index', $leftButtons.length - index);
17252
18812
  }
17253
- $buttonEl.transform(`translate3d(${buttonTranslate + buttonOffset * (1 - Math.min(progress, 1))}px,0,0)`);
18813
+ if (isIOS) {
18814
+ const buttonStartPos = buttonOffset;
18815
+ const buttonEndPos = buttonStartPos + buttonWidth;
18816
+ let buttonProgress = (buttonTranslate - buttonStartPos) / (buttonEndPos - buttonStartPos);
18817
+ buttonProgress = Math.max(Math.min(buttonProgress, 1), 0);
18818
+ $buttonEl.transform(`scale(${buttonProgress})`);
18819
+ } else {
18820
+ $buttonEl.transform(`translate3d(${buttonTranslate + buttonOffset * (1 - Math.min(progress, 1))}px,0,0)`);
18821
+ }
17254
18822
  });
17255
18823
  }
17256
18824
  $swipeoutEl.trigger('swipeout', progress);
@@ -17263,6 +18831,7 @@
17263
18831
  isMoved = false;
17264
18832
  return;
17265
18833
  }
18834
+ $swipeoutEl.removeClass('swipeout-active');
17266
18835
  isTouched = false;
17267
18836
  isMoved = false;
17268
18837
  const timeDiff = new Date().getTime() - touchStartTime;
@@ -17291,7 +18860,11 @@
17291
18860
  $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;
17292
18861
  if ($buttons) {
17293
18862
  for (i = 0; i < $buttons.length; i += 1) {
17294
- $($buttons[i]).transform(`translate3d(${newTranslate}px,0,0)`);
18863
+ if (isIOS) {
18864
+ $($buttons[i]).transform(`scale(1)`);
18865
+ } else {
18866
+ $($buttons[i]).transform(`translate3d(${newTranslate}px,0,0)`);
18867
+ }
17295
18868
  }
17296
18869
  }
17297
18870
  if (overswipeRight) {
@@ -17316,7 +18889,11 @@
17316
18889
  if (typeof buttonOffset === 'undefined') {
17317
18890
  $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;
17318
18891
  }
17319
- $buttonEl.transform(`translate3d(${buttonOffset}px,0,0)`);
18892
+ if (isIOS) {
18893
+ $buttonEl.transform(`scale(0)`);
18894
+ } else {
18895
+ $buttonEl.transform(`translate3d(${buttonOffset}px,0,0)`);
18896
+ }
17320
18897
  });
17321
18898
  }
17322
18899
  if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {
@@ -17326,7 +18903,11 @@
17326
18903
  if (typeof buttonOffset === 'undefined') {
17327
18904
  $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;
17328
18905
  }
17329
- $buttonEl.transform(`translate3d(${-buttonOffset}px,0,0)`);
18906
+ if (isIOS) {
18907
+ $buttonEl.transform(`scale(0)`);
18908
+ } else {
18909
+ $buttonEl.transform(`translate3d(${-buttonOffset}px,0,0)`);
18910
+ }
17330
18911
  });
17331
18912
  }
17332
18913
  $swipeoutContent.transitionEnd(() => {
@@ -17344,9 +18925,9 @@
17344
18925
  }
17345
18926
  });
17346
18927
  }
17347
- const passiveListener = getSupport$1().passiveListener ? {
18928
+ const passiveListener = {
17348
18929
  passive: true
17349
- } : false;
18930
+ };
17350
18931
  app.on('touchstart', e => {
17351
18932
  if (Swipeout.el) {
17352
18933
  const $targetEl = $(e.target);
@@ -17388,10 +18969,14 @@
17388
18969
  if ($buttons.length > 1) {
17389
18970
  $buttons.each((buttonEl, buttonIndex) => {
17390
18971
  const $buttonEl = $(buttonEl);
17391
- if (side === 'right') {
17392
- $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);
18972
+ if (app.theme === 'ios') {
18973
+ $buttonEl.transform(`scale(1)`);
17393
18974
  } else {
17394
- $buttonEl.css('z-index', $buttons.length - buttonIndex).transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);
18975
+ if (side === 'right') {
18976
+ $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);
18977
+ } else {
18978
+ $buttonEl.css('z-index', $buttons.length - buttonIndex).transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);
18979
+ }
17395
18980
  }
17396
18981
  });
17397
18982
  }
@@ -17402,7 +18987,11 @@
17402
18987
  if (callback) callback.call($el[0]);
17403
18988
  });
17404
18989
  nextFrame$1(() => {
17405
- $buttons.transform(`translate3d(${translate}px,0,0)`);
18990
+ if (app.theme === 'ios') {
18991
+ $buttons.transform(`scale(1)`);
18992
+ } else {
18993
+ $buttons.transform(`translate3d(${translate}px,0,0)`);
18994
+ }
17406
18995
  $swipeoutContent.transform(`translate3d(${translate}px,0,0)`);
17407
18996
  });
17408
18997
  Swipeout.el = $el[0];
@@ -17435,14 +19024,22 @@
17435
19024
  closeTimeout = setTimeout(onSwipeoutClose, 500);
17436
19025
  $buttons.each(buttonEl => {
17437
19026
  const $buttonEl = $(buttonEl);
17438
- if (side === 'right') {
17439
- $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);
19027
+ if (app.theme === 'ios') {
19028
+ $buttonEl.transform(`scale(0)`);
17440
19029
  } else {
17441
- $buttonEl.transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);
19030
+ if (side === 'right') {
19031
+ $buttonEl.transform(`translate3d(${-buttonEl.offsetLeft}px,0,0)`);
19032
+ } else {
19033
+ $buttonEl.transform(`translate3d(${swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft}px,0,0)`);
19034
+ }
17442
19035
  }
19036
+ const buttonWidth = $buttonEl[0].f7SwipeoutButtonWidth;
17443
19037
  $buttonEl.css({
17444
- left: '0px'
19038
+ left: '0px',
19039
+ width: buttonWidth ? `${buttonWidth}px` : '',
19040
+ marginLeft: '0px'
17445
19041
  }).removeClass('swipeout-overswipe-active');
19042
+ delete $buttonEl[0].f7SwipeoutButtonWidth;
17446
19043
  });
17447
19044
  if (Swipeout.el && Swipeout.el === $el[0]) Swipeout.el = undefined;
17448
19045
  },
@@ -21264,7 +22861,6 @@
21264
22861
  }
21265
22862
  super(params, [app]);
21266
22863
  const toggle = this;
21267
- const support = getSupport$1();
21268
22864
  const defaults = {};
21269
22865
 
21270
22866
  // Extend defaults with modules params
@@ -21375,19 +22971,17 @@
21375
22971
  toggle.emit('local::change toggleChange', toggle);
21376
22972
  }
21377
22973
  toggle.attachEvents = function attachEvents() {
21378
- const passive = support.passiveListener ? {
22974
+ $el.on(app.touchEvents.start, handleTouchStart, {
21379
22975
  passive: true
21380
- } : false;
21381
- $el.on(app.touchEvents.start, handleTouchStart, passive);
22976
+ });
21382
22977
  app.on('touchmove', handleTouchMove);
21383
22978
  app.on('touchend:passive', handleTouchEnd);
21384
22979
  toggle.$inputEl.on('change', handleInputChange);
21385
22980
  };
21386
22981
  toggle.detachEvents = function detachEvents() {
21387
- const passive = support.passiveListener ? {
22982
+ $el.off(app.touchEvents.start, handleTouchStart, {
21388
22983
  passive: true
21389
- } : false;
21390
- $el.off(app.touchEvents.start, handleTouchStart, passive);
22984
+ });
21391
22985
  app.off('touchmove', handleTouchMove);
21392
22986
  app.off('touchend:passive', handleTouchEnd);
21393
22987
  toggle.$inputEl.off('change', handleInputChange);
@@ -21477,7 +23071,6 @@
21477
23071
  constructor(app, params) {
21478
23072
  super(params, [app]);
21479
23073
  const range = this;
21480
- const support = getSupport$1();
21481
23074
  const defaults = {
21482
23075
  el: null,
21483
23076
  inputEl: null,
@@ -21495,7 +23088,8 @@
21495
23088
  scaleSteps: 5,
21496
23089
  scaleSubSteps: 0,
21497
23090
  formatScaleLabel: null,
21498
- limitKnobPosition: app.theme === 'ios'
23091
+ limitKnobPosition: true,
23092
+ limitBarPosition: app.theme === 'md'
21499
23093
  };
21500
23094
 
21501
23095
  // Extend defaults with modules params
@@ -21543,7 +23137,8 @@
21543
23137
  scale,
21544
23138
  scaleSteps,
21545
23139
  scaleSubSteps,
21546
- limitKnobPosition
23140
+ limitKnobPosition,
23141
+ limitBarPosition
21547
23142
  } = range.params;
21548
23143
  extend$3(range, {
21549
23144
  app,
@@ -21563,7 +23158,8 @@
21563
23158
  scale,
21564
23159
  scaleSteps,
21565
23160
  scaleSubSteps,
21566
- limitKnobPosition
23161
+ limitKnobPosition,
23162
+ limitBarPosition
21567
23163
  });
21568
23164
  if ($inputEl) {
21569
23165
  'step min max'.split(' ').forEach(paramName => {
@@ -21679,13 +23275,15 @@
21679
23275
  rangeOffsetLeft = rangeOffset.left;
21680
23276
  rangeOffsetTop = rangeOffset.top;
21681
23277
  let progress;
23278
+ const knobSize = range.vertical ? range.knobHeight : range.knobWidth;
23279
+ const progressModify = limitKnobPosition ? knobSize : 0;
21682
23280
  if (range.vertical) {
21683
- progress = (touchesStart.y - rangeOffsetTop) / range.rangeHeight;
23281
+ progress = (touchesStart.y - rangeOffsetTop - progressModify / 2) / (range.rangeHeight - progressModify);
21684
23282
  if (!range.verticalReversed) progress = 1 - progress;
21685
23283
  } else if (range.app.rtl) {
21686
- progress = (rangeOffsetLeft + range.rangeWidth - touchesStart.x) / range.rangeWidth;
23284
+ progress = (rangeOffsetLeft + range.rangeWidth + progressModify / 2 - touchesStart.x) / (range.rangeWidth - progressModify);
21687
23285
  } else {
21688
- progress = (touchesStart.x - rangeOffsetLeft) / range.rangeWidth;
23286
+ progress = (touchesStart.x - rangeOffsetLeft - progressModify / 2) / (range.rangeWidth - progressModify);
21689
23287
  }
21690
23288
  let newValue = progress * (range.max - range.min) + range.min;
21691
23289
  if (range.dual) {
@@ -21733,13 +23331,15 @@
21733
23331
  }
21734
23332
  e.preventDefault();
21735
23333
  let progress;
23334
+ const knobSize = range.vertical ? range.knobHeight : range.knobWidth;
23335
+ const progressModify = limitKnobPosition ? knobSize : 0;
21736
23336
  if (range.vertical) {
21737
- progress = (pageY - rangeOffsetTop) / range.rangeHeight;
23337
+ progress = (pageY - rangeOffsetTop - progressModify / 2) / (range.rangeHeight - progressModify);
21738
23338
  if (!range.verticalReversed) progress = 1 - progress;
21739
23339
  } else if (range.app.rtl) {
21740
- progress = (rangeOffsetLeft + range.rangeWidth - pageX) / range.rangeWidth;
23340
+ progress = (rangeOffsetLeft + range.rangeWidth + progressModify / 2 - pageX) / (range.rangeWidth - progressModify);
21741
23341
  } else {
21742
- progress = (pageX - rangeOffsetLeft) / range.rangeWidth;
23342
+ progress = (pageX - rangeOffsetLeft - progressModify / 2) / (range.rangeWidth - progressModify);
21743
23343
  }
21744
23344
  let newValue = progress * (range.max - range.min) + range.min;
21745
23345
  if (range.dual) {
@@ -21797,10 +23397,9 @@
21797
23397
  let parentPanel;
21798
23398
  let parentPage;
21799
23399
  range.attachEvents = function attachEvents() {
21800
- const passive = support.passiveListener ? {
23400
+ range.$el.on(app.touchEvents.start, handleTouchStart, {
21801
23401
  passive: true
21802
- } : false;
21803
- range.$el.on(app.touchEvents.start, handleTouchStart, passive);
23402
+ });
21804
23403
  app.on('touchmove', handleTouchMove);
21805
23404
  app.on('touchend:passive', handleTouchEnd);
21806
23405
  app.on('tabShow', handleResize);
@@ -21813,10 +23412,9 @@
21813
23412
  parentPage.on('page:reinit', handleResize);
21814
23413
  };
21815
23414
  range.detachEvents = function detachEvents() {
21816
- const passive = support.passiveListener ? {
23415
+ range.$el.off(app.touchEvents.start, handleTouchStart, {
21817
23416
  passive: true
21818
- } : false;
21819
- range.$el.off(app.touchEvents.start, handleTouchStart, passive);
23417
+ });
21820
23418
  app.off('touchmove', handleTouchMove);
21821
23419
  app.off('touchend:passive', handleTouchEnd);
21822
23420
  app.off('tabShow', handleResize);
@@ -21873,7 +23471,8 @@
21873
23471
  labels,
21874
23472
  vertical,
21875
23473
  verticalReversed,
21876
- limitKnobPosition
23474
+ limitKnobPosition,
23475
+ limitBarPosition
21877
23476
  } = range;
21878
23477
  const knobSize = vertical ? knobHeight : knobWidth;
21879
23478
  const rangeSize = vertical ? rangeHeight : rangeWidth;
@@ -21881,28 +23480,31 @@
21881
23480
  const positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';
21882
23481
  if (range.dual) {
21883
23482
  const progress = [(value[0] - min) / (max - min), (value[1] - min) / (max - min)];
23483
+ const positionStartProgress = limitBarPosition ? knobSize / rangeSize : 0;
23484
+ const barProgressModify = limitBarPosition ? (rangeSize - knobSize) / rangeSize : 1;
21884
23485
  $barActiveEl.css({
21885
- [positionProperty]: `${progress[0] * 100}%`,
21886
- [vertical ? 'height' : 'width']: `${(progress[1] - progress[0]) * 100}%`
23486
+ [positionProperty]: `${(positionStartProgress + progress[0] * barProgressModify) * 100}%`,
23487
+ [vertical ? 'height' : 'width']: `${(progress[1] - progress[0] - positionStartProgress) * 100 * barProgressModify}%`
21887
23488
  });
21888
23489
  knobs.forEach(($knobEl, knobIndex) => {
21889
23490
  let startPos = rangeSize * progress[knobIndex];
21890
23491
  if (limitKnobPosition) {
21891
- const realStartPos = rangeSize * progress[knobIndex] - knobSize / 2;
21892
- if (realStartPos < 0) startPos = knobSize / 2;
21893
- if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;
23492
+ const minPos = knobSize;
23493
+ const maxPos = rangeSize;
23494
+ startPos = (maxPos - minPos) * progress[knobIndex] + knobSize / 2;
21894
23495
  }
21895
23496
  $knobEl.css(positionProperty, `${startPos}px`);
21896
23497
  if (label) labels[knobIndex].text(range.formatLabel(value[knobIndex], labels[knobIndex][0]));
21897
23498
  });
21898
23499
  } else {
21899
23500
  const progress = (value - min) / (max - min);
21900
- $barActiveEl.css(vertical ? 'height' : 'width', `${progress * 100}%`);
23501
+ const barProgressModify = limitBarPosition ? (rangeSize - knobSize) / rangeSize : 1;
23502
+ $barActiveEl.css(vertical ? 'height' : 'width', `${progress * 100 * barProgressModify}%`);
21901
23503
  let startPos = rangeSize * progress;
21902
23504
  if (limitKnobPosition) {
21903
- const realStartPos = rangeSize * progress - knobSize / 2;
21904
- if (realStartPos < 0) startPos = knobSize / 2;
21905
- if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;
23505
+ const minPos = knobSize;
23506
+ const maxPos = rangeSize;
23507
+ startPos = (maxPos - minPos) * progress + knobSize / 2;
21906
23508
  }
21907
23509
  knobs[0].css(positionProperty, `${startPos}px`);
21908
23510
  if (label) labels[0].text(range.formatLabel(value, labels[0][0]));
@@ -42859,19 +44461,19 @@
42859
44461
  } = notification.params;
42860
44462
  return $jsx$1("div", {
42861
44463
  class: `notification ${icon ? 'notification-with-icon' : ''} ${cssClass || ''}`
42862
- }, $jsx$1("div", {
42863
- class: "notification-header"
42864
44464
  }, icon && $jsx$1("div", {
42865
44465
  class: "notification-icon"
42866
- }, icon), title && $jsx$1("div", {
44466
+ }, icon), $jsx$1("div", {
44467
+ class: "notification-content"
44468
+ }, (title || titleRightText || closeButton) && $jsx$1("div", {
44469
+ class: "notification-header"
44470
+ }, title && $jsx$1("div", {
42867
44471
  class: "notification-title"
42868
44472
  }, title), titleRightText && $jsx$1("div", {
42869
44473
  class: "notification-title-right-text"
42870
44474
  }, titleRightText), closeButton && $jsx$1("span", {
42871
44475
  class: "notification-close-button"
42872
- })), $jsx$1("div", {
42873
- class: "notification-content"
42874
- }, subtitle && $jsx$1("div", {
44476
+ })), subtitle && $jsx$1("div", {
42875
44477
  class: "notification-subtitle"
42876
44478
  }, subtitle), text && $jsx$1("div", {
42877
44479
  class: "notification-text"