@zaide6137/m3-components-web 0.1.34 → 0.1.36
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.
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../node_modules/moment/moment.js","../node_modules/@material/material-color-utilities/utils/math_utils.ts","../node_modules/@material/material-color-utilities/utils/color_utils.ts","../node_modules/@material/material-color-utilities/hct/viewing_conditions.ts","../node_modules/@material/material-color-utilities/hct/cam16.ts","../node_modules/@material/material-color-utilities/hct/hct_solver.ts","../node_modules/@material/material-color-utilities/hct/hct.ts","../node_modules/@material/material-color-utilities/contrast/contrast.ts","../node_modules/@material/material-color-utilities/dislike/dislike_analyzer.ts","../node_modules/@material/material-color-utilities/dynamiccolor/dynamic_color.ts","../node_modules/@material/material-color-utilities/palettes/tonal_palette.ts","../node_modules/@material/material-color-utilities/temperature/temperature_cache.ts","../node_modules/@material/material-color-utilities/dynamiccolor/contrast_curve.ts","../node_modules/@material/material-color-utilities/dynamiccolor/tone_delta_pair.ts","../node_modules/@material/material-color-utilities/dynamiccolor/variant.ts","../node_modules/@material/material-color-utilities/dynamiccolor/color_spec_2021.ts","../node_modules/@material/material-color-utilities/dynamiccolor/color_spec_2025.ts","../node_modules/@material/material-color-utilities/dynamiccolor/material_dynamic_colors.ts","../node_modules/@material/material-color-utilities/dynamiccolor/dynamic_scheme.ts","../node_modules/@material/material-color-utilities/scheme/scheme_vibrant.ts","../node_modules/@material/material-color-utilities/utils/string_utils.ts","../src/core/theme/utils.ts","../src/core/theme/ThemeProvider.tsx","../src/components/big-calendar/BigCalendar.tsx","../src/components/big-calendar/BigCalendarToolbar.tsx","../src/components/button/Button.tsx","../src/components/big-calendar/BigCalendarEvent.tsx"],"names":["require_moment","__commonJSMin","exports","module","global","factory","hookCallback","hooks","setHookCallback","callback","isArray","input","isObject","hasOwnProp","a","b","isObjectEmpty","obj","k","isUndefined","isNumber","isDate","map","arr","fn","res","i","arrLen","extend","createUTC","format","locale","strict","createLocalOrUTC","defaultParsingFlags","getParsingFlags","m","some","fun","t","len","isValid","flags","parsedParts","isNowValid","createInvalid","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","Moment","config","isMoment","warn","msg","deprecate","firstTime","args","arg","key","argLen","deprecations","deprecateSimple","name","isFunction","set","mergeConfigs","parentConfig","childConfig","Locale","keys","defaultCalendar","calendar","mom","now","output","zeroFill","number","targetLength","forceSign","absNumber","zerosToFill","sign","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","removeFormattingTokens","makeFormatFunction","array","length","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","longDateFormat","formatUpper","tok","defaultInvalidDate","invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","defaultRelativeTime","relativeTime","withoutSuffix","string","isFuture","pastFuture","diff","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedInput","normalizedProp","priorities","getPrioritizedUnits","unitsObj","u","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","regexes","addRegexToken","regex","strictRegex","isStrict","localeData","getParseRegexForToken","unescapeFormat","s","regexEscape","matched","p1","p2","p3","p4","absFloor","toInt","argumentForCoercion","coercedNumber","value","tokens","addParseToken","tokenLen","addWeekParseToken","addTimeToArrayFromToken","isLeapYear","year","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","y","daysInYear","getSetYear","makeGetSet","getIsLeapYear","unit","keepTime","set$1","get","d","isUTC","month","date","stringGet","stringSet","prioritized","prioritizedLen","mod","n","x","indexOf","o","daysInMonth","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","localeMonthsShort","handleStrictParse","monthName","ii","llc","localeMonthsParse","setMonth","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","shortP","longP","createDate","h","M","ms","createUTCDate","firstWeekOffset","dow","doy","fwd","fwdlw","dayOfYearFromWeeks","week","weekday","localWeekday","weekOffset","dayOfYear","resYear","resDayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","weekdays","localeWeekdaysShort","localeWeekdaysMin","handleStrictParse$1","weekdayName","localeWeekdaysParse","getSetDayOfWeek","day","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","weekdaysShortRegex","weekdaysMinRegex","minPieces","minp","shortp","longp","hFormat","kFormat","meridiem","lowercase","matchMeridiem","kInput","pos","pos1","pos2","localeIsPM","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","hours","minutes","isLower","baseConfig","locales","localeFamilies","globalLocale","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","split","loadLocale","isLocaleNameSane","oldLocale","aliasedRequire","__require","getSetGlobalLocale","values","data","getLocale","defineLocale","updateLocale","tmpLocale","listLocales","checkOverflow","overflow","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","rfc2822","obsOffsets","configFromISO","l","match","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","defaults","c","currentDateArray","nowValue","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","w","weekYear","temp","weekdayOverflow","curWeek","createLocal","skipped","stringLength","totalParsedInputLength","era","meridiemFixWrap","hour","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","min","max","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","months","weeks","days","seconds","milliseconds","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","offsetFromString","chunkOffset","matcher","matches","chunk","parts","cloneWithOffset","model","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","createAdder","direction","period","dur","tmp","isAdding","updateOffset","add","subtract","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","property","propertyLen","arrayTest","dataTypeTest","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","clone","isAfter","localInput","isBefore","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","anchor2","adjust","toString","toISOString","keepOffset","utc","inspect","zone","prefix","datetime","suffix","inputString","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOf","startOfDate","endOf","valueOf","unix","toDate","toArray","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","localeEras","eras","localeErasParse","eraName","abbr","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","erasAbbrRegex","erasNarrowRegex","abbrPieces","namePieces","narrowPieces","erasName","erasAbbr","erasNarrow","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetSecond","getSetMillisecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","preParsePostFormat","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","mathAbs","abs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","round","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","humanize","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","total","totalSign","ymSign","daysSign","hmsSign","proto$2","signum","num","lerp","start","stop","amount","clampInt","clampDouble","sanitizeDegreesInt","degrees","sanitizeDegreesDouble","matrixMultiply","row","matrix","SRGB_TO_XYZ","XYZ_TO_SRGB","WHITE_POINT_D65","argbFromRgb","red","green","blue","argbFromLinrgb","linrgb","r","delinearized","g","redFromArgb","argb","greenFromArgb","blueFromArgb","argbFromXyz","z","linearR","linearG","linearB","xyzFromArgb","linearized","labFromArgb","whitePoint","xNormalized","yNormalized","zNormalized","fx","labF","fy","fz","argbFromLstar","lstar","yFromLstar","component","lstarFromArgb","labInvf","lstarFromY","rgbComponent","normalized","whitePointD65","e","kappa","ft","ft3","ViewingConditions","_ViewingConditions","adaptingLuminance","backgroundLstar","surround","discountingIlluminant","xyz","rW","gW","bW","f","nc","rgbD","k4","k4F","fl","nbb","ncb","rgbAFactors","rgbA","aw","fLRoot","Cam16","_Cam16","hue","chroma","q","jstar","astar","bstar","dJ","dA","dB","dEPrime","viewingConditions","redL","greenL","blueL","rC","gC","bC","rD","gD","bD","rAF","gAF","bAF","rA","gA","bA","atanDegrees","hueRadians","ac","huePrime","eHue","alpha","mstar","hRad","hSin","hCos","gamma","rCBase","gCBase","bCBase","rF","gF","bF","J","Q","C","HctSolver","_HctSolver","angle","af","scaledDiscount","deltaAB","deltaAC","source","mid","target","coordinate","axis","kR","kG","kB","coordA","coordB","targetHue","left","right","leftHue","rightHue","initialized","uncut","midHue","segment","lPlane","rPlane","mPlane","midPlaneCoordinate","adapted","adaptedAbs","tInnerCoeff","iterationRound","jNormalized","rCScaled","gCScaled","bCScaled","fnj","hueDegrees","exactAnswer","Hct","_Hct","tone","newHue","newChroma","newTone","propertyName","cam","vc","viewedInVc","recastInVc","Contrast","_Contrast","toneA","toneB","y1","y2","lighter","darker","ratio","darkY","lightY","realContrast","delta","returnValue","lighterSafe","darkerSafe","DislikeAnalyzer","_DislikeAnalyzer","hct","huePasses","chromaPasses","tonePasses","validateExtendedColor","originalColor","specVersion","extendedColor","extendSpecVersion","originlColor","DynamicColor","chromaMultiplier","background","secondBackground","contrastCurve","toneDeltaPair","_DynamicColor","palette","isBackground","scheme","cachedAnswer","answer","getSpec","bgTone","lighterTone","darkerTone","lighterRatio","darkerRatio","negligibleDifference","ColorCalculationDelegateImpl2021","color","decreasingContrast","roleA","roleB","polarity","stayTogether","aIsNearer","nearer","farther","amNearer","expansionDir","nTone","fTone","bg","nContrastCurve","fContrastCurve","nContrast","fContrast","desiredRatio","bg1","bg2","bgTone1","bgTone2","upper","lower","lightOption","darkOption","availables","ColorCalculationDelegateImpl2025","constraint","absoluteDelta","amRoleA","selfRole","refRole","selfTone","refTone","relativeDelta","selfContrast","spec2021","spec2025","TonalPalette","_TonalPalette","keyColor","KeyColor","argb1","argb2","red1","green1","blue1","red2","green2","blue2","requestedChroma","lowerTone","upperTone","midTone","isAscending","TemperatureCache","_TemperatureCache","hcts","temperaturesByHct","count","divisions","startHue","startHct","lastTemp","allColors","absoluteTotalTempDelta","tempDelta","hueAddend","tempStep","totalTempDelta","desiredTotalTempDeltaForIndex","indexSatisfied","indexAddend","answers","increaseHueCount","decreaseHueCount","coldestHue","coldestTemp","warmestHue","range","startHueIsColdestToWarmest","endHue","directionOfRotation","smallestError","complementRelativeTemp","possibleAnswer","relativeTemp","error","differenceFromColdest","allHcts","colorAtHue","lab","ContrastCurve","low","normal","medium","high","contrastLevel","ToneDeltaPair","Variant","isFidelity","isMonochrome","findDesiredChromaByTone","byDecreasingTone","closestToChroma","chromaPeak","potentialSolution","potentialDelta","currentDelta","ColorSpecDelegateImpl2021","initialTone","proposedHct","tMaxC","lowerBound","upperBound","findBestToneForChroma","tMinC","bestCandidate","newCandidate","getCurve","defaultContrast","ColorSpecDelegateImpl2025","color2025","tempS","MaterialDynamicColors","_MaterialDynamicColors","DynamicScheme","_DynamicScheme","variant","sourceColorHct","hueBreakpoints","hues","size","sourceHue","rotations","rotation","dynamicColor","primaryDim","secondaryDim","tertiaryDim","errorDim","DynamicSchemePalettesDelegateImpl2021","isDark","platform","DynamicSchemePalettesDelegateImpl2025","_DynamicSchemePalettesDelegateImpl2025","neutralHue","expressiveNeutralHue","expressiveNeutralChroma","vibrantNeutralHue","vibrantNeutralChroma","errorHue","SchemeVibrant","hexFromArgb","outParts","part","argbFromHex","hex","isThree","isSix","isEight","parseIntHex","createModernTheme","seedHex","colors","coreTokens","hexToArgba","cleanHex","hexToRgba","isDarkBackground","ThemeContext","createContext","STATIC_FALLBACK_THEME","ThemeProvider","children","seedColor","defaultColorScheme","currentSeed","useRef","systemTheme","setSystemTheme","useState","themeColors","setThemeColorsState","useEffect","mediaQuery","handleSystemChange","contextValue","useMemo","newSeed","jsx","useGlobalTheme","context","useContext","import_moment","Button","forwardRef","props","ref","className","shape","type","hoverEffect","text","icon","onClick","disabled","loading","styles","baseRadius","hoverRadius","motion","jsxs","BigCalendarToolbar","onPrev","onNext","onToday","view","onViewChange","isDropdownOpen","setIsDropdownOpen","realToday","moment","todayMonthStr","todayDateStr","displayMonthYear","currentWeekNum","viewLabel","AnimatePresence","Fragment","BigCalendarEvent","event","onMouseEnter","onMouseLeave","isFilled","style","bgCol","borderCol","textCol","width","setWidth","observer","entries","showDots","showTime","BigCalendar","filterOptions","events","toolBar","filterBar","filterBy","backgroundMode","defaultView","enableAnimations","slideVariants","transition","onEventClicked","_date","_localizer","momentLocalizer","_calendarEvents","tag","eventTitle","eventStart","eventEnd","resourceData","_calendarComponents","_direction","_setDirection","_currentDate","_setCurrentDate","_view","_setView","_filter","_setFilter","handlePreviousMonth","handleNextMonth","handleJumpToNow","useImperativeHandle","prev","Calendar","v"],"mappings":"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C,kBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,iBAAA,CAAsB,iBAC5C,kBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,iBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,iBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,kBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,kBAAA,CAAsB,iBAAA,CAC5C,kBAAA,CAAsB,iBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,gBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,kBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,kBAAA,CAC5C,gBAAA,CAAsB,mBAAsB,kBAAA,CAC5C,kBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,iBAAA,CAC5C,kBAAA,CAAsB,kBAAA,CAAsB,gBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CA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","file":"index.js","sourcesContent":["//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This file is automatically generated. Do not modify it.\n\n/**\n * Utility methods for mathematical operations.\n */\n\n/**\n * The signum function.\n *\n * @return 1 if num > 0, -1 if num < 0, and 0 if num = 0\n */\nexport function signum(num: number): number {\n if (num < 0) {\n return -1;\n } else if (num === 0) {\n return 0;\n } else {\n return 1;\n }\n}\n\n/**\n * The linear interpolation function.\n *\n * @return start if amount = 0 and stop if amount = 1\n */\nexport function lerp(start: number, stop: number, amount: number): number {\n return (1.0 - amount) * start + amount * stop;\n}\n\n/**\n * Clamps an integer between two integers.\n *\n * @return input when min <= input <= max, and either min or max\n * otherwise.\n */\nexport function clampInt(min: number, max: number, input: number): number {\n if (input < min) {\n return min;\n } else if (input > max) {\n return max;\n }\n\n return input;\n}\n\n/**\n * Clamps an integer between two floating-point numbers.\n *\n * @return input when min <= input <= max, and either min or max\n * otherwise.\n */\nexport function clampDouble(min: number, max: number, input: number): number {\n if (input < min) {\n return min;\n } else if (input > max) {\n return max;\n }\n\n return input;\n}\n\n/**\n * Sanitizes a degree measure as an integer.\n *\n * @return a degree measure between 0 (inclusive) and 360\n * (exclusive).\n */\nexport function sanitizeDegreesInt(degrees: number): number {\n degrees = degrees % 360;\n if (degrees < 0) {\n degrees = degrees + 360;\n }\n return degrees;\n}\n\n/**\n * Sanitizes a degree measure as a floating-point number.\n *\n * @return a degree measure between 0.0 (inclusive) and 360.0\n * (exclusive).\n */\nexport function sanitizeDegreesDouble(degrees: number): number {\n degrees = degrees % 360.0;\n if (degrees < 0) {\n degrees = degrees + 360.0;\n }\n return degrees;\n}\n\n/**\n * Sign of direction change needed to travel from one angle to\n * another.\n *\n * For angles that are 180 degrees apart from each other, both\n * directions have the same travel distance, so either direction is\n * shortest. The value 1.0 is returned in this case.\n *\n * @param from The angle travel starts from, in degrees.\n * @param to The angle travel ends at, in degrees.\n * @return -1 if decreasing from leads to the shortest travel\n * distance, 1 if increasing from leads to the shortest travel\n * distance.\n */\nexport function rotationDirection(from: number, to: number): number {\n const increasingDifference = sanitizeDegreesDouble(to - from);\n return increasingDifference <= 180.0 ? 1.0 : -1.0;\n}\n\n/**\n * Distance of two points on a circle, represented using degrees.\n */\nexport function differenceDegrees(a: number, b: number): number {\n return 180.0 - Math.abs(Math.abs(a - b) - 180.0);\n}\n\n/**\n * Multiplies a 1x3 row vector with a 3x3 matrix.\n */\nexport function matrixMultiply(row: number[], matrix: number[][]): number[] {\n const a =\n row[0] * matrix[0][0] + row[1] * matrix[0][1] + row[2] * matrix[0][2];\n const b =\n row[0] * matrix[1][0] + row[1] * matrix[1][1] + row[2] * matrix[1][2];\n const c =\n row[0] * matrix[2][0] + row[1] * matrix[2][1] + row[2] * matrix[2][2];\n return [a, b, c];\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This file is automatically generated. Do not modify it.\n\nimport * as mathUtils from './math_utils.js';\n\n/**\n * Color science utilities.\n *\n * Utility methods for color science constants and color space\n * conversions that aren't HCT or CAM16.\n */\n\nconst SRGB_TO_XYZ = [\n [0.41233895, 0.35762064, 0.18051042],\n [0.2126, 0.7152, 0.0722],\n [0.01932141, 0.11916382, 0.95034478],\n];\n\nconst XYZ_TO_SRGB = [\n [\n 3.2413774792388685,\n -1.5376652402851851,\n -0.49885366846268053,\n ],\n [\n -0.9691452513005321,\n 1.8758853451067872,\n 0.04156585616912061,\n ],\n [\n 0.05562093689691305,\n -0.20395524564742123,\n 1.0571799111220335,\n ],\n];\n\nconst WHITE_POINT_D65 = [95.047, 100.0, 108.883];\n\n/**\n * Converts a color from RGB components to ARGB format.\n */\nexport function argbFromRgb(red: number, green: number, blue: number): number {\n return (255 << 24 | (red & 255) << 16 | (green & 255) << 8 | blue & 255) >>>\n 0;\n}\n\n/**\n * Converts a color from linear RGB components to ARGB format.\n */\nexport function argbFromLinrgb(linrgb: number[]): number {\n const r = delinearized(linrgb[0]);\n const g = delinearized(linrgb[1]);\n const b = delinearized(linrgb[2]);\n return argbFromRgb(r, g, b);\n}\n\n/**\n * Returns the alpha component of a color in ARGB format.\n */\nexport function alphaFromArgb(argb: number): number {\n return argb >> 24 & 255;\n}\n\n/**\n * Returns the red component of a color in ARGB format.\n */\nexport function redFromArgb(argb: number): number {\n return argb >> 16 & 255;\n}\n\n/**\n * Returns the green component of a color in ARGB format.\n */\nexport function greenFromArgb(argb: number): number {\n return argb >> 8 & 255;\n}\n\n/**\n * Returns the blue component of a color in ARGB format.\n */\nexport function blueFromArgb(argb: number): number {\n return argb & 255;\n}\n\n/**\n * Returns whether a color in ARGB format is opaque.\n */\nexport function isOpaque(argb: number): boolean {\n return alphaFromArgb(argb) >= 255;\n}\n\n/**\n * Converts a color from ARGB to XYZ.\n */\nexport function argbFromXyz(x: number, y: number, z: number): number {\n const matrix = XYZ_TO_SRGB;\n const linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z;\n const linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z;\n const linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;\n const r = delinearized(linearR);\n const g = delinearized(linearG);\n const b = delinearized(linearB);\n return argbFromRgb(r, g, b);\n}\n\n/**\n * Converts a color from XYZ to ARGB.\n */\nexport function xyzFromArgb(argb: number): number[] {\n const r = linearized(redFromArgb(argb));\n const g = linearized(greenFromArgb(argb));\n const b = linearized(blueFromArgb(argb));\n return mathUtils.matrixMultiply([r, g, b], SRGB_TO_XYZ);\n}\n\n/**\n * Converts a color represented in Lab color space into an ARGB\n * integer.\n */\nexport function argbFromLab(l: number, a: number, b: number): number {\n const whitePoint = WHITE_POINT_D65;\n const fy = (l + 16.0) / 116.0;\n const fx = a / 500.0 + fy;\n const fz = fy - b / 200.0;\n const xNormalized = labInvf(fx);\n const yNormalized = labInvf(fy);\n const zNormalized = labInvf(fz);\n const x = xNormalized * whitePoint[0];\n const y = yNormalized * whitePoint[1];\n const z = zNormalized * whitePoint[2];\n return argbFromXyz(x, y, z);\n}\n\n/**\n * Converts a color from ARGB representation to L*a*b*\n * representation.\n *\n * @param argb the ARGB representation of a color\n * @return a Lab object representing the color\n */\nexport function labFromArgb(argb: number): number[] {\n const linearR = linearized(redFromArgb(argb));\n const linearG = linearized(greenFromArgb(argb));\n const linearB = linearized(blueFromArgb(argb));\n const matrix = SRGB_TO_XYZ;\n const x =\n matrix[0][0] * linearR + matrix[0][1] * linearG + matrix[0][2] * linearB;\n const y =\n matrix[1][0] * linearR + matrix[1][1] * linearG + matrix[1][2] * linearB;\n const z =\n matrix[2][0] * linearR + matrix[2][1] * linearG + matrix[2][2] * linearB;\n const whitePoint = WHITE_POINT_D65;\n const xNormalized = x / whitePoint[0];\n const yNormalized = y / whitePoint[1];\n const zNormalized = z / whitePoint[2];\n const fx = labF(xNormalized);\n const fy = labF(yNormalized);\n const fz = labF(zNormalized);\n const l = 116.0 * fy - 16;\n const a = 500.0 * (fx - fy);\n const b = 200.0 * (fy - fz);\n return [l, a, b];\n}\n\n/**\n * Converts an L* value to an ARGB representation.\n *\n * @param lstar L* in L*a*b*\n * @return ARGB representation of grayscale color with lightness\n * matching L*\n */\nexport function argbFromLstar(lstar: number): number {\n const y = yFromLstar(lstar);\n const component = delinearized(y);\n return argbFromRgb(component, component, component);\n}\n\n/**\n * Computes the L* value of a color in ARGB representation.\n *\n * @param argb ARGB representation of a color\n * @return L*, from L*a*b*, coordinate of the color\n */\nexport function lstarFromArgb(argb: number): number {\n const y = xyzFromArgb(argb)[1];\n return 116.0 * labF(y / 100.0) - 16.0;\n}\n\n/**\n * Converts an L* value to a Y value.\n *\n * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.\n *\n * L* measures perceptual luminance, a linear scale. Y in XYZ\n * measures relative luminance, a logarithmic scale.\n *\n * @param lstar L* in L*a*b*\n * @return Y in XYZ\n */\nexport function yFromLstar(lstar: number): number {\n return 100.0 * labInvf((lstar + 16.0) / 116.0);\n}\n\n/**\n * Converts a Y value to an L* value.\n *\n * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.\n *\n * L* measures perceptual luminance, a linear scale. Y in XYZ\n * measures relative luminance, a logarithmic scale.\n *\n * @param y Y in XYZ\n * @return L* in L*a*b*\n */\nexport function lstarFromY(y: number): number {\n return labF(y / 100.0) * 116.0 - 16.0;\n}\n\n/**\n * Linearizes an RGB component.\n *\n * @param rgbComponent 0 <= rgb_component <= 255, represents R/G/B\n * channel\n * @return 0.0 <= output <= 100.0, color channel converted to\n * linear RGB space\n */\nexport function linearized(rgbComponent: number): number {\n const normalized = rgbComponent / 255.0;\n if (normalized <= 0.040449936) {\n return normalized / 12.92 * 100.0;\n } else {\n return Math.pow((normalized + 0.055) / 1.055, 2.4) * 100.0;\n }\n}\n\n/**\n * Delinearizes an RGB component.\n *\n * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents\n * linear R/G/B channel\n * @return 0 <= output <= 255, color channel converted to regular\n * RGB space\n */\nexport function delinearized(rgbComponent: number): number {\n const normalized = rgbComponent / 100.0;\n let delinearized = 0.0;\n if (normalized <= 0.0031308) {\n delinearized = normalized * 12.92;\n } else {\n delinearized = 1.055 * Math.pow(normalized, 1.0 / 2.4) - 0.055;\n }\n return mathUtils.clampInt(0, 255, Math.round(delinearized * 255.0));\n}\n\n/**\n * Returns the standard white point; white on a sunny day.\n *\n * @return The white point\n */\nexport function whitePointD65(): number[] {\n return WHITE_POINT_D65;\n}\n\nfunction labF(t: number): number {\n const e = 216.0 / 24389.0;\n const kappa = 24389.0 / 27.0;\n if (t > e) {\n return Math.pow(t, 1.0 / 3.0);\n } else {\n return (kappa * t + 16) / 116;\n }\n}\n\nfunction labInvf(ft: number): number {\n const e = 216.0 / 24389.0;\n const kappa = 24389.0 / 27.0;\n const ft3 = ft * ft * ft;\n if (ft3 > e) {\n return ft3;\n } else {\n return (116 * ft - 16) / kappa;\n }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as utils from '../utils/color_utils.js';\nimport * as math from '../utils/math_utils.js';\n\n/**\n * In traditional color spaces, a color can be identified solely by the\n * observer's measurement of the color. Color appearance models such as CAM16\n * also use information about the environment where the color was\n * observed, known as the viewing conditions.\n *\n * For example, white under the traditional assumption of a midday sun white\n * point is accurately measured as a slightly chromatic blue by CAM16. (roughly,\n * hue 203, chroma 3, lightness 100)\n *\n * This class caches intermediate values of the CAM16 conversion process that\n * depend only on viewing conditions, enabling speed ups.\n */\nexport class ViewingConditions {\n /** sRGB-like viewing conditions. */\n static DEFAULT = ViewingConditions.make();\n\n /**\n * Create ViewingConditions from a simple, physically relevant, set of\n * parameters.\n *\n * @param whitePoint White point, measured in the XYZ color space.\n * default = D65, or sunny day afternoon\n * @param adaptingLuminance The luminance of the adapting field. Informally,\n * how bright it is in the room where the color is viewed. Can be\n * calculated from lux by multiplying lux by 0.0586. default = 11.72,\n * or 200 lux.\n * @param backgroundLstar The lightness of the area surrounding the color.\n * measured by L* in L*a*b*. default = 50.0\n * @param surround A general description of the lighting surrounding the\n * color. 0 is pitch dark, like watching a movie in a theater. 1.0 is a\n * dimly light room, like watching TV at home at night. 2.0 means there\n * is no difference between the lighting on the color and around it.\n * default = 2.0\n * @param discountingIlluminant Whether the eye accounts for the tint of the\n * ambient lighting, such as knowing an apple is still red in green light.\n * default = false, the eye does not perform this process on\n * self-luminous objects like displays.\n */\n static make(\n whitePoint = utils.whitePointD65(),\n adaptingLuminance = (200.0 / Math.PI) * utils.yFromLstar(50.0) / 100.0,\n backgroundLstar = 50.0, surround = 2.0,\n discountingIlluminant = false): ViewingConditions {\n const xyz = whitePoint;\n const rW = xyz[0] * 0.401288 + xyz[1] * 0.650173 + xyz[2] * -0.051461;\n const gW = xyz[0] * -0.250268 + xyz[1] * 1.204414 + xyz[2] * 0.045854;\n const bW = xyz[0] * -0.002079 + xyz[1] * 0.048952 + xyz[2] * 0.953127;\n const f = 0.8 + surround / 10.0;\n const c = f >= 0.9 ? math.lerp(0.59, 0.69, (f - 0.9) * 10.0) :\n math.lerp(0.525, 0.59, (f - 0.8) * 10.0);\n let d = discountingIlluminant ?\n 1.0 :\n f * (1.0 - (1.0 / 3.6) * Math.exp((-adaptingLuminance - 42.0) / 92.0));\n d = d > 1.0 ? 1.0 : d < 0.0 ? 0.0 : d;\n const nc = f;\n const rgbD = [\n d * (100.0 / rW) + 1.0 - d,\n d * (100.0 / gW) + 1.0 - d,\n d * (100.0 / bW) + 1.0 - d,\n ];\n const k = 1.0 / (5.0 * adaptingLuminance + 1.0);\n const k4 = k * k * k * k;\n const k4F = 1.0 - k4;\n const fl = k4 * adaptingLuminance +\n 0.1 * k4F * k4F * Math.cbrt(5.0 * adaptingLuminance);\n const n = utils.yFromLstar(backgroundLstar) / whitePoint[1];\n const z = 1.48 + Math.sqrt(n);\n const nbb = 0.725 / Math.pow(n, 0.2);\n const ncb = nbb;\n const rgbAFactors = [\n Math.pow((fl * rgbD[0] * rW) / 100.0, 0.42),\n Math.pow((fl * rgbD[1] * gW) / 100.0, 0.42),\n Math.pow((fl * rgbD[2] * bW) / 100.0, 0.42),\n ];\n const rgbA = [\n (400.0 * rgbAFactors[0]) / (rgbAFactors[0] + 27.13),\n (400.0 * rgbAFactors[1]) / (rgbAFactors[1] + 27.13),\n (400.0 * rgbAFactors[2]) / (rgbAFactors[2] + 27.13),\n ];\n const aw = (2.0 * rgbA[0] + rgbA[1] + 0.05 * rgbA[2]) * nbb;\n return new ViewingConditions(\n n, aw, nbb, ncb, c, nc, rgbD, fl, Math.pow(fl, 0.25), z);\n }\n\n /**\n * Parameters are intermediate values of the CAM16 conversion process. Their\n * names are shorthand for technical color science terminology, this class\n * would not benefit from documenting them individually. A brief overview\n * is available in the CAM16 specification, and a complete overview requires\n * a color science textbook, such as Fairchild's Color Appearance Models.\n */\n private constructor(\n public n: number, public aw: number, public nbb: number,\n public ncb: number, public c: number, public nc: number,\n public rgbD: number[], public fl: number, public fLRoot: number,\n public z: number) {}\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as utils from '../utils/color_utils.js';\nimport * as math from '../utils/math_utils.js';\n\nimport {ViewingConditions} from './viewing_conditions.js';\n\n/**\n * CAM16, a color appearance model. Colors are not just defined by their hex\n * code, but rather, a hex code and viewing conditions.\n *\n * CAM16 instances also have coordinates in the CAM16-UCS space, called J*, a*,\n * b*, or jstar, astar, bstar in code. CAM16-UCS is included in the CAM16\n * specification, and should be used when measuring distances between colors.\n *\n * In traditional color spaces, a color can be identified solely by the\n * observer's measurement of the color. Color appearance models such as CAM16\n * also use information about the environment where the color was\n * observed, known as the viewing conditions.\n *\n * For example, white under the traditional assumption of a midday sun white\n * point is accurately measured as a slightly chromatic blue by CAM16. (roughly,\n * hue 203, chroma 3, lightness 100)\n */\nexport class Cam16 {\n /**\n * All of the CAM16 dimensions can be calculated from 3 of the dimensions, in\n * the following combinations:\n * - {j or q} and {c, m, or s} and hue\n * - jstar, astar, bstar\n * Prefer using a static method that constructs from 3 of those dimensions.\n * This constructor is intended for those methods to use to return all\n * possible dimensions.\n *\n * @param hue\n * @param chroma informally, colorfulness / color intensity. like saturation\n * in HSL, except perceptually accurate.\n * @param j lightness\n * @param q brightness; ratio of lightness to white point's lightness\n * @param m colorfulness\n * @param s saturation; ratio of chroma to white point's chroma\n * @param jstar CAM16-UCS J coordinate\n * @param astar CAM16-UCS a coordinate\n * @param bstar CAM16-UCS b coordinate\n */\n constructor(\n readonly hue: number, readonly chroma: number, readonly j: number,\n readonly q: number, readonly m: number, readonly s: number,\n readonly jstar: number, readonly astar: number, readonly bstar: number) {}\n\n /**\n * CAM16 instances also have coordinates in the CAM16-UCS space, called J*,\n * a*, b*, or jstar, astar, bstar in code. CAM16-UCS is included in the CAM16\n * specification, and is used to measure distances between colors.\n */\n distance(other: Cam16): number {\n const dJ = this.jstar - other.jstar;\n const dA = this.astar - other.astar;\n const dB = this.bstar - other.bstar;\n const dEPrime = Math.sqrt(dJ * dJ + dA * dA + dB * dB);\n const dE = 1.41 * Math.pow(dEPrime, 0.63);\n return dE;\n }\n\n /**\n * @param argb ARGB representation of a color.\n * @return CAM16 color, assuming the color was viewed in default viewing\n * conditions.\n */\n static fromInt(argb: number): Cam16 {\n return Cam16.fromIntInViewingConditions(argb, ViewingConditions.DEFAULT);\n }\n\n /**\n * @param argb ARGB representation of a color.\n * @param viewingConditions Information about the environment where the color\n * was observed.\n * @return CAM16 color.\n */\n static fromIntInViewingConditions(\n argb: number, viewingConditions: ViewingConditions): Cam16 {\n const red = (argb & 0x00ff0000) >> 16;\n const green = (argb & 0x0000ff00) >> 8;\n const blue = (argb & 0x000000ff);\n const redL = utils.linearized(red);\n const greenL = utils.linearized(green);\n const blueL = utils.linearized(blue);\n const x = 0.41233895 * redL + 0.35762064 * greenL + 0.18051042 * blueL;\n const y = 0.2126 * redL + 0.7152 * greenL + 0.0722 * blueL;\n const z = 0.01932141 * redL + 0.11916382 * greenL + 0.95034478 * blueL;\n\n const rC = 0.401288 * x + 0.650173 * y - 0.051461 * z;\n const gC = -0.250268 * x + 1.204414 * y + 0.045854 * z;\n const bC = -0.002079 * x + 0.048952 * y + 0.953127 * z;\n\n const rD = viewingConditions.rgbD[0] * rC;\n const gD = viewingConditions.rgbD[1] * gC;\n const bD = viewingConditions.rgbD[2] * bC;\n\n const rAF = Math.pow((viewingConditions.fl * Math.abs(rD)) / 100.0, 0.42);\n const gAF = Math.pow((viewingConditions.fl * Math.abs(gD)) / 100.0, 0.42);\n const bAF = Math.pow((viewingConditions.fl * Math.abs(bD)) / 100.0, 0.42);\n\n const rA = (math.signum(rD) * 400.0 * rAF) / (rAF + 27.13);\n const gA = (math.signum(gD) * 400.0 * gAF) / (gAF + 27.13);\n const bA = (math.signum(bD) * 400.0 * bAF) / (bAF + 27.13);\n\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\n const b = (rA + gA - 2.0 * bA) / 9.0;\n const u = (20.0 * rA + 20.0 * gA + 21.0 * bA) / 20.0;\n const p2 = (40.0 * rA + 20.0 * gA + bA) / 20.0;\n const atan2 = Math.atan2(b, a);\n const atanDegrees = (atan2 * 180.0) / Math.PI;\n const hue = math.sanitizeDegreesDouble(atanDegrees);\n const hueRadians = (hue * Math.PI) / 180.0;\n\n const ac = p2 * viewingConditions.nbb;\n const j = 100.0 *\n Math.pow(\n ac / viewingConditions.aw,\n viewingConditions.c * viewingConditions.z);\n const q = (4.0 / viewingConditions.c) * Math.sqrt(j / 100.0) *\n (viewingConditions.aw + 4.0) * viewingConditions.fLRoot;\n const huePrime = hue < 20.14 ? hue + 360 : hue;\n const eHue = 0.25 * (Math.cos((huePrime * Math.PI) / 180.0 + 2.0) + 3.8);\n const p1 =\n (50000.0 / 13.0) * eHue * viewingConditions.nc * viewingConditions.ncb;\n const t = (p1 * Math.sqrt(a * a + b * b)) / (u + 0.305);\n const alpha = Math.pow(t, 0.9) *\n Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\n const c = alpha * Math.sqrt(j / 100.0);\n const m = c * viewingConditions.fLRoot;\n const s = 50.0 *\n Math.sqrt((alpha * viewingConditions.c) / (viewingConditions.aw + 4.0));\n const jstar = ((1.0 + 100.0 * 0.007) * j) / (1.0 + 0.007 * j);\n const mstar = (1.0 / 0.0228) * Math.log(1.0 + 0.0228 * m);\n const astar = mstar * Math.cos(hueRadians);\n const bstar = mstar * Math.sin(hueRadians);\n\n return new Cam16(hue, c, j, q, m, s, jstar, astar, bstar);\n }\n\n /**\n * @param j CAM16 lightness\n * @param c CAM16 chroma\n * @param h CAM16 hue\n */\n static fromJch(j: number, c: number, h: number): Cam16 {\n return Cam16.fromJchInViewingConditions(j, c, h, ViewingConditions.DEFAULT);\n }\n\n /**\n * @param j CAM16 lightness\n * @param c CAM16 chroma\n * @param h CAM16 hue\n * @param viewingConditions Information about the environment where the color\n * was observed.\n */\n static fromJchInViewingConditions(\n j: number, c: number, h: number,\n viewingConditions: ViewingConditions): Cam16 {\n const q = (4.0 / viewingConditions.c) * Math.sqrt(j / 100.0) *\n (viewingConditions.aw + 4.0) * viewingConditions.fLRoot;\n const m = c * viewingConditions.fLRoot;\n const alpha = c / Math.sqrt(j / 100.0);\n const s = 50.0 *\n Math.sqrt((alpha * viewingConditions.c) / (viewingConditions.aw + 4.0));\n const hueRadians = (h * Math.PI) / 180.0;\n const jstar = ((1.0 + 100.0 * 0.007) * j) / (1.0 + 0.007 * j);\n const mstar = (1.0 / 0.0228) * Math.log(1.0 + 0.0228 * m);\n const astar = mstar * Math.cos(hueRadians);\n const bstar = mstar * Math.sin(hueRadians);\n return new Cam16(h, c, j, q, m, s, jstar, astar, bstar);\n }\n\n /**\n * @param jstar CAM16-UCS lightness.\n * @param astar CAM16-UCS a dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the Y axis.\n * @param bstar CAM16-UCS b dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the X axis.\n */\n static fromUcs(jstar: number, astar: number, bstar: number): Cam16 {\n return Cam16.fromUcsInViewingConditions(\n jstar, astar, bstar, ViewingConditions.DEFAULT);\n }\n\n /**\n * @param jstar CAM16-UCS lightness.\n * @param astar CAM16-UCS a dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the Y axis.\n * @param bstar CAM16-UCS b dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the X axis.\n * @param viewingConditions Information about the environment where the color\n * was observed.\n */\n static fromUcsInViewingConditions(\n jstar: number, astar: number, bstar: number,\n viewingConditions: ViewingConditions): Cam16 {\n const a = astar;\n const b = bstar;\n const m = Math.sqrt(a * a + b * b);\n const M = (Math.exp(m * 0.0228) - 1.0) / 0.0228;\n const c = M / viewingConditions.fLRoot;\n let h = Math.atan2(b, a) * (180.0 / Math.PI);\n if (h < 0.0) {\n h += 360.0;\n }\n const j = jstar / (1 - (jstar - 100) * 0.007);\n return Cam16.fromJchInViewingConditions(j, c, h, viewingConditions);\n }\n\n /**\n * @return ARGB representation of color, assuming the color was viewed in\n * default viewing conditions, which are near-identical to the default\n * viewing conditions for sRGB.\n */\n toInt(): number {\n return this.viewed(ViewingConditions.DEFAULT);\n }\n\n /**\n * @param viewingConditions Information about the environment where the color\n * will be viewed.\n * @return ARGB representation of color\n */\n viewed(viewingConditions: ViewingConditions): number {\n const alpha = this.chroma === 0.0 || this.j === 0.0 ?\n 0.0 :\n this.chroma / Math.sqrt(this.j / 100.0);\n\n const t = Math.pow(\n alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73),\n 1.0 / 0.9);\n const hRad = (this.hue * Math.PI) / 180.0;\n\n const eHue = 0.25 * (Math.cos(hRad + 2.0) + 3.8);\n const ac = viewingConditions.aw *\n Math.pow(\n this.j / 100.0, 1.0 / viewingConditions.c / viewingConditions.z);\n const p1 =\n eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\n const p2 = ac / viewingConditions.nbb;\n\n const hSin = Math.sin(hRad);\n const hCos = Math.cos(hRad);\n\n const gamma = (23.0 * (p2 + 0.305) * t) /\n (23.0 * p1 + 11.0 * t * hCos + 108.0 * t * hSin);\n const a = gamma * hCos;\n const b = gamma * hSin;\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\n\n const rCBase = Math.max(0, (27.13 * Math.abs(rA)) / (400.0 - Math.abs(rA)));\n const rC = math.signum(rA) * (100.0 / viewingConditions.fl) *\n Math.pow(rCBase, 1.0 / 0.42);\n const gCBase = Math.max(0, (27.13 * Math.abs(gA)) / (400.0 - Math.abs(gA)));\n const gC = math.signum(gA) * (100.0 / viewingConditions.fl) *\n Math.pow(gCBase, 1.0 / 0.42);\n const bCBase = Math.max(0, (27.13 * Math.abs(bA)) / (400.0 - Math.abs(bA)));\n const bC = math.signum(bA) * (100.0 / viewingConditions.fl) *\n Math.pow(bCBase, 1.0 / 0.42);\n const rF = rC / viewingConditions.rgbD[0];\n const gF = gC / viewingConditions.rgbD[1];\n const bF = bC / viewingConditions.rgbD[2];\n\n const x = 1.86206786 * rF - 1.01125463 * gF + 0.14918677 * bF;\n const y = 0.38752654 * rF + 0.62144744 * gF - 0.00897398 * bF;\n const z = -0.01584150 * rF - 0.03412294 * gF + 1.04996444 * bF;\n\n const argb = utils.argbFromXyz(x, y, z);\n return argb;\n }\n\n /// Given color expressed in XYZ and viewed in [viewingConditions], convert to\n /// CAM16.\n static fromXyzInViewingConditions(\n x: number, y: number, z: number,\n viewingConditions: ViewingConditions): Cam16 {\n // Transform XYZ to 'cone'/'rgb' responses\n\n const rC = 0.401288 * x + 0.650173 * y - 0.051461 * z;\n const gC = -0.250268 * x + 1.204414 * y + 0.045854 * z;\n const bC = -0.002079 * x + 0.048952 * y + 0.953127 * z;\n\n // Discount illuminant\n const rD = viewingConditions.rgbD[0] * rC;\n const gD = viewingConditions.rgbD[1] * gC;\n const bD = viewingConditions.rgbD[2] * bC;\n\n // chromatic adaptation\n const rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100.0, 0.42);\n const gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100.0, 0.42);\n const bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100.0, 0.42);\n const rA = math.signum(rD) * 400.0 * rAF / (rAF + 27.13);\n const gA = math.signum(gD) * 400.0 * gAF / (gAF + 27.13);\n const bA = math.signum(bD) * 400.0 * bAF / (bAF + 27.13);\n\n // redness-greenness\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\n // yellowness-blueness\n const b = (rA + gA - 2.0 * bA) / 9.0;\n\n // auxiliary components\n const u = (20.0 * rA + 20.0 * gA + 21.0 * bA) / 20.0;\n const p2 = (40.0 * rA + 20.0 * gA + bA) / 20.0;\n\n // hue\n const atan2 = Math.atan2(b, a);\n const atanDegrees = atan2 * 180.0 / Math.PI;\n const hue = atanDegrees < 0 ? atanDegrees + 360.0 :\n atanDegrees >= 360 ? atanDegrees - 360 :\n atanDegrees;\n const hueRadians = hue * Math.PI / 180.0;\n\n // achromatic response to color\n const ac = p2 * viewingConditions.nbb;\n\n // CAM16 lightness and brightness\n const J = 100.0 *\n Math.pow(\n ac / viewingConditions.aw,\n viewingConditions.c * viewingConditions.z);\n const Q = (4.0 / viewingConditions.c) * Math.sqrt(J / 100.0) *\n (viewingConditions.aw + 4.0) * (viewingConditions.fLRoot);\n\n const huePrime = (hue < 20.14) ? hue + 360 : hue;\n const eHue =\n (1.0 / 4.0) * (Math.cos(huePrime * Math.PI / 180.0 + 2.0) + 3.8);\n const p1 =\n 50000.0 / 13.0 * eHue * viewingConditions.nc * viewingConditions.ncb;\n const t = p1 * Math.sqrt(a * a + b * b) / (u + 0.305);\n const alpha = Math.pow(t, 0.9) *\n Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\n // CAM16 chroma, colorfulness, chroma\n const C = alpha * Math.sqrt(J / 100.0);\n const M = C * viewingConditions.fLRoot;\n const s = 50.0 *\n Math.sqrt((alpha * viewingConditions.c) / (viewingConditions.aw + 4.0));\n\n // CAM16-UCS components\n const jstar = (1.0 + 100.0 * 0.007) * J / (1.0 + 0.007 * J);\n const mstar = Math.log(1.0 + 0.0228 * M) / 0.0228;\n const astar = mstar * Math.cos(hueRadians);\n const bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, C, J, Q, M, s, jstar, astar, bstar);\n }\n\n /// XYZ representation of CAM16 seen in [viewingConditions].\n xyzInViewingConditions(viewingConditions: ViewingConditions): number[] {\n const alpha = (this.chroma === 0.0 || this.j === 0.0) ?\n 0.0 :\n this.chroma / Math.sqrt(this.j / 100.0);\n\n const t = Math.pow(\n alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73),\n 1.0 / 0.9);\n const hRad = this.hue * Math.PI / 180.0;\n\n const eHue = 0.25 * (Math.cos(hRad + 2.0) + 3.8);\n const ac = viewingConditions.aw *\n Math.pow(\n this.j / 100.0, 1.0 / viewingConditions.c / viewingConditions.z);\n const p1 =\n eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\n\n const p2 = (ac / viewingConditions.nbb);\n\n const hSin = Math.sin(hRad);\n const hCos = Math.cos(hRad);\n\n const gamma = 23.0 * (p2 + 0.305) * t /\n (23.0 * p1 + 11 * t * hCos + 108.0 * t * hSin);\n const a = gamma * hCos;\n const b = gamma * hSin;\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\n\n const rCBase = Math.max(0, (27.13 * Math.abs(rA)) / (400.0 - Math.abs(rA)));\n const rC = math.signum(rA) * (100.0 / viewingConditions.fl) *\n Math.pow(rCBase, 1.0 / 0.42);\n const gCBase = Math.max(0, (27.13 * Math.abs(gA)) / (400.0 - Math.abs(gA)));\n const gC = math.signum(gA) * (100.0 / viewingConditions.fl) *\n Math.pow(gCBase, 1.0 / 0.42);\n const bCBase = Math.max(0, (27.13 * Math.abs(bA)) / (400.0 - Math.abs(bA)));\n const bC = math.signum(bA) * (100.0 / viewingConditions.fl) *\n Math.pow(bCBase, 1.0 / 0.42);\n const rF = rC / viewingConditions.rgbD[0];\n const gF = gC / viewingConditions.rgbD[1];\n const bF = bC / viewingConditions.rgbD[2];\n\n const x = 1.86206786 * rF - 1.01125463 * gF + 0.14918677 * bF;\n const y = 0.38752654 * rF + 0.62144744 * gF - 0.00897398 * bF;\n const z = -0.01584150 * rF - 0.03412294 * gF + 1.04996444 * bF;\n\n return [x, y, z];\n }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This file is automatically generated. Do not modify it.\n\nimport * as colorUtils from '../utils/color_utils.js';\nimport * as mathUtils from '../utils/math_utils.js';\n\nimport {Cam16} from './cam16.js';\nimport {ViewingConditions} from './viewing_conditions.js';\n\n\n// material_color_utilities is designed to have a consistent API across\n// platforms and modular components that can be moved around easily. Using a\n// class as a namespace facilitates this.\n//\n// tslint:disable:class-as-namespace\n/**\n * A class that solves the HCT equation.\n */\nexport class HctSolver {\n static SCALED_DISCOUNT_FROM_LINRGB = [\n [\n 0.001200833568784504,\n 0.002389694492170889,\n 0.0002795742885861124,\n ],\n [\n 0.0005891086651375999,\n 0.0029785502573438758,\n 0.0003270666104008398,\n ],\n [\n 0.00010146692491640572,\n 0.0005364214359186694,\n 0.0032979401770712076,\n ],\n ];\n\n static LINRGB_FROM_SCALED_DISCOUNT = [\n [\n 1373.2198709594231,\n -1100.4251190754821,\n -7.278681089101213,\n ],\n [\n -271.815969077903,\n 559.6580465940733,\n -32.46047482791194,\n ],\n [\n 1.9622899599665666,\n -57.173814538844006,\n 308.7233197812385,\n ],\n ];\n\n static Y_FROM_LINRGB = [0.2126, 0.7152, 0.0722];\n\n static CRITICAL_PLANES = [\n 0.015176349177441876, 0.045529047532325624, 0.07588174588720938,\n 0.10623444424209313, 0.13658714259697685, 0.16693984095186062,\n 0.19729253930674434, 0.2276452376616281, 0.2579979360165119,\n 0.28835063437139563, 0.3188300904430532, 0.350925934958123,\n 0.3848314933096426, 0.42057480301049466, 0.458183274052838,\n 0.4976837250274023, 0.5391024159806381, 0.5824650784040898,\n 0.6277969426914107, 0.6751227633498623, 0.7244668422128921,\n 0.775853049866786, 0.829304845476233, 0.8848452951698498,\n 0.942497089126609, 1.0022825574869039, 1.0642236851973577,\n 1.1283421258858297, 1.1946592148522128, 1.2631959812511864,\n 1.3339731595349034, 1.407011200216447, 1.4823302800086415,\n 1.5599503113873272, 1.6398909516233677, 1.7221716113234105,\n 1.8068114625156377, 1.8938294463134073, 1.9832442801866852,\n 2.075074464868551, 2.1693382909216234, 2.2660538449872063,\n 2.36523901573795, 2.4669114995532007, 2.5710888059345764,\n 2.6777882626779785, 2.7870270208169257, 2.898822059350997,\n 3.0131901897720907, 3.1301480604002863, 3.2497121605402226,\n 3.3718988244681087, 3.4967242352587946, 3.624204428461639,\n 3.754355295633311, 3.887192587735158, 4.022731918402185,\n 4.160988767090289, 4.301978482107941, 4.445716283538092,\n 4.592217266055746, 4.741496401646282, 4.893568542229298,\n 5.048448422192488, 5.20615066083972, 5.3666897647573375,\n 5.5300801301023865, 5.696336044816294, 5.865471690767354,\n 6.037501145825082, 6.212438385869475, 6.390297286737924,\n 6.571091626112461, 6.7548350853498045, 6.941541251256611,\n 7.131223617812143, 7.323895587840543, 7.5195704746346665,\n 7.7182615035334345, 7.919981813454504, 8.124744458384042,\n 8.332562408825165, 8.543448553206703, 8.757415699253682,\n 8.974476575321063, 9.194643831691977, 9.417930041841839,\n 9.644347703669503, 9.873909240696694, 10.106627003236781,\n 10.342513269534024, 10.58158024687427, 10.8238400726681,\n 11.069304815507364, 11.317986476196008, 11.569896988756009,\n 11.825048221409341, 12.083451977536606, 12.345119996613247,\n 12.610063955123938, 12.878295467455942, 13.149826086772048,\n 13.42466730586372, 13.702830557985108, 13.984327217668513,\n 14.269168601521828, 14.55736596900856, 14.848930523210871,\n 15.143873411576273, 15.44220572664832, 15.743938506781891,\n 16.04908273684337, 16.35764934889634, 16.66964922287304,\n 16.985093187232053, 17.30399201960269, 17.62635644741625,\n 17.95219714852476, 18.281524751807332, 18.614349837764564,\n 18.95068293910138, 19.290534541298456, 19.633915083172692,\n 19.98083495742689, 20.331304511189067, 20.685334046541502,\n 21.042933821039977, 21.404114048223256, 21.76888489811322,\n 22.137256497705877, 22.50923893145328, 22.884842241736916,\n 23.264076429332462, 23.6469514538663, 24.033477234264016,\n 24.42366364919083, 24.817520537484558, 25.21505769858089,\n 25.61628489293138, 26.021211842414342, 26.429848230738664,\n 26.842203703840827, 27.258287870275353, 27.678110301598522,\n 28.10168053274597, 28.529008062403893, 28.96010235337422,\n 29.39497283293396, 29.83362889318845, 30.276079891419332,\n 30.722335150426627, 31.172403958865512, 31.62629557157785,\n 32.08401920991837, 32.54558406207592, 33.010999283389665,\n 33.4802739966603, 33.953417292456834, 34.430438229418264,\n 34.911345834551085, 35.39614910352207, 35.88485700094671,\n 36.37747846067349, 36.87402238606382, 37.37449765026789,\n 37.87891309649659, 38.38727753828926, 38.89959975977785,\n 39.41588851594697, 39.93615253289054, 40.460400508064545,\n 40.98864111053629, 41.520882981230194, 42.05713473317016,\n 42.597404951718396, 43.141702194811224, 43.6900349931913,\n 44.24241185063697, 44.798841244188324, 45.35933162437017,\n 45.92389141541209, 46.49252901546552, 47.065252796817916,\n 47.64207110610409, 48.22299226451468, 48.808024568002054,\n 49.3971762874833, 49.9904556690408, 50.587870934119984,\n 51.189430279724725, 51.79514187861014, 52.40501387947288,\n 53.0190544071392, 53.637271562750364, 54.259673423945976,\n 54.88626804504493, 55.517063457223934, 56.15206766869424,\n 56.79128866487574, 57.43473440856916, 58.08241284012621,\n 58.734331877617365, 59.39049941699807, 60.05092333227251,\n 60.715611475655585, 61.38457167773311, 62.057811747619894,\n 62.7353394731159, 63.417162620860914, 64.10328893648692,\n 64.79372614476921, 65.48848194977529, 66.18756403501224,\n 66.89098006357258, 67.59873767827808, 68.31084450182222,\n 69.02730813691093, 69.74813616640164, 70.47333615344107,\n 71.20291564160104, 71.93688215501312, 72.67524319850172,\n 73.41800625771542, 74.16517879925733, 74.9167682708136,\n 75.67278210128072, 76.43322770089146, 77.1981124613393,\n 77.96744375590167, 78.74122893956174, 79.51947534912904,\n 80.30219030335869, 81.08938110306934, 81.88105503125999,\n 82.67721935322541, 83.4778813166706, 84.28304815182372,\n 85.09272707154808, 85.90692527145302, 86.72564993000343,\n 87.54890820862819, 88.3767072518277, 89.2090541872801,\n 90.04595612594655, 90.88742016217518, 91.73345337380438,\n 92.58406282226491, 93.43925555268066, 94.29903859396902,\n 95.16341895893969, 96.03240364439274, 96.9059996312159,\n 97.78421388448044, 98.6670533535366, 99.55452497210776,\n ];\n\n /**\n * Sanitizes a small enough angle in radians.\n *\n * @param angle An angle in radians; must not deviate too much\n * from 0.\n * @return A coterminal angle between 0 and 2pi.\n */\n private static sanitizeRadians(angle: number): number {\n return (angle + Math.PI * 8) % (Math.PI * 2);\n }\n\n /**\n * Delinearizes an RGB component, returning a floating-point\n * number.\n *\n * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents\n * linear R/G/B channel\n * @return 0.0 <= output <= 255.0, color channel converted to\n * regular RGB space\n */\n private static trueDelinearized(rgbComponent: number): number {\n const normalized = rgbComponent / 100.0;\n let delinearized = 0.0;\n if (normalized <= 0.0031308) {\n delinearized = normalized * 12.92;\n } else {\n delinearized = 1.055 * Math.pow(normalized, 1.0 / 2.4) - 0.055;\n }\n return delinearized * 255.0;\n }\n\n private static chromaticAdaptation(component: number): number {\n const af = Math.pow(Math.abs(component), 0.42);\n return mathUtils.signum(component) * 400.0 * af / (af + 27.13);\n }\n\n /**\n * Returns the hue of a linear RGB color in CAM16.\n *\n * @param linrgb The linear RGB coordinates of a color.\n * @return The hue of the color in CAM16, in radians.\n */\n private static hueOf(linrgb: number[]): number {\n const scaledDiscount =\n mathUtils.matrixMultiply(linrgb, HctSolver.SCALED_DISCOUNT_FROM_LINRGB);\n const rA = HctSolver.chromaticAdaptation(scaledDiscount[0]);\n const gA = HctSolver.chromaticAdaptation(scaledDiscount[1]);\n const bA = HctSolver.chromaticAdaptation(scaledDiscount[2]);\n // redness-greenness\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\n // yellowness-blueness\n const b = (rA + gA - 2.0 * bA) / 9.0;\n return Math.atan2(b, a);\n }\n\n private static areInCyclicOrder(a: number, b: number, c: number): boolean {\n const deltaAB = HctSolver.sanitizeRadians(b - a);\n const deltaAC = HctSolver.sanitizeRadians(c - a);\n return deltaAB < deltaAC;\n }\n\n /**\n * Solves the lerp equation.\n *\n * @param source The starting number.\n * @param mid The number in the middle.\n * @param target The ending number.\n * @return A number t such that lerp(source, target, t) = mid.\n */\n private static intercept(source: number, mid: number, target: number):\n number {\n return (mid - source) / (target - source);\n }\n\n private static lerpPoint(source: number[], t: number, target: number[]):\n number[] {\n return [\n source[0] + (target[0] - source[0]) * t,\n source[1] + (target[1] - source[1]) * t,\n source[2] + (target[2] - source[2]) * t,\n ];\n }\n\n /**\n * Intersects a segment with a plane.\n *\n * @param source The coordinates of point A.\n * @param coordinate The R-, G-, or B-coordinate of the plane.\n * @param target The coordinates of point B.\n * @param axis The axis the plane is perpendicular with. (0: R, 1:\n * G, 2: B)\n * @return The intersection point of the segment AB with the plane\n * R=coordinate, G=coordinate, or B=coordinate\n */\n private static setCoordinate(\n source: number[],\n coordinate: number,\n target: number[],\n axis: number,\n ): number[] {\n const t = HctSolver.intercept(source[axis], coordinate, target[axis]);\n return HctSolver.lerpPoint(source, t, target);\n }\n\n private static isBounded(x: number): boolean {\n return 0.0 <= x && x <= 100.0;\n }\n\n /**\n * Returns the nth possible vertex of the polygonal intersection.\n *\n * @param y The Y value of the plane.\n * @param n The zero-based index of the point. 0 <= n <= 11.\n * @return The nth possible vertex of the polygonal intersection\n * of the y plane and the RGB cube, in linear RGB coordinates, if\n * it exists. If this possible vertex lies outside of the cube,\n * [-1.0, -1.0, -1.0] is returned.\n */\n private static nthVertex(y: number, n: number): number[] {\n const kR = HctSolver.Y_FROM_LINRGB[0];\n const kG = HctSolver.Y_FROM_LINRGB[1];\n const kB = HctSolver.Y_FROM_LINRGB[2];\n const coordA = n % 4 <= 1 ? 0.0 : 100.0;\n const coordB = n % 2 === 0 ? 0.0 : 100.0;\n if (n < 4) {\n const g = coordA;\n const b = coordB;\n const r = (y - g * kG - b * kB) / kR;\n if (HctSolver.isBounded(r)) {\n return [r, g, b];\n } else {\n return [-1.0, -1.0, -1.0];\n }\n } else if (n < 8) {\n const b = coordA;\n const r = coordB;\n const g = (y - r * kR - b * kB) / kG;\n if (HctSolver.isBounded(g)) {\n return [r, g, b];\n } else {\n return [-1.0, -1.0, -1.0];\n }\n } else {\n const r = coordA;\n const g = coordB;\n const b = (y - r * kR - g * kG) / kB;\n if (HctSolver.isBounded(b)) {\n return [r, g, b];\n } else {\n return [-1.0, -1.0, -1.0];\n }\n }\n }\n\n /**\n * Finds the segment containing the desired color.\n *\n * @param y The Y value of the color.\n * @param targetHue The hue of the color.\n * @return A list of two sets of linear RGB coordinates, each\n * corresponding to an endpoint of the segment containing the\n * desired color.\n */\n private static bisectToSegment(y: number, targetHue: number): number[][] {\n let left = [-1.0, -1.0, -1.0];\n let right = left;\n let leftHue = 0.0;\n let rightHue = 0.0;\n let initialized = false;\n let uncut = true;\n for (let n = 0; n < 12; n++) {\n const mid = HctSolver.nthVertex(y, n);\n if (mid[0] < 0) {\n continue;\n }\n const midHue = HctSolver.hueOf(mid);\n if (!initialized) {\n left = mid;\n right = mid;\n leftHue = midHue;\n rightHue = midHue;\n initialized = true;\n continue;\n }\n if (uncut || HctSolver.areInCyclicOrder(leftHue, midHue, rightHue)) {\n uncut = false;\n if (HctSolver.areInCyclicOrder(leftHue, targetHue, midHue)) {\n right = mid;\n rightHue = midHue;\n } else {\n left = mid;\n leftHue = midHue;\n }\n }\n }\n return [left, right];\n }\n\n private static midpoint(a: number[], b: number[]): number[] {\n return [\n (a[0] + b[0]) / 2,\n (a[1] + b[1]) / 2,\n (a[2] + b[2]) / 2,\n ];\n }\n\n private static criticalPlaneBelow(x: number): number {\n return Math.floor(x - 0.5);\n }\n\n private static criticalPlaneAbove(x: number): number {\n return Math.ceil(x - 0.5);\n }\n\n /**\n * Finds a color with the given Y and hue on the boundary of the\n * cube.\n *\n * @param y The Y value of the color.\n * @param targetHue The hue of the color.\n * @return The desired color, in linear RGB coordinates.\n */\n private static bisectToLimit(y: number, targetHue: number): number[] {\n const segment = HctSolver.bisectToSegment(y, targetHue);\n let left = segment[0];\n let leftHue = HctSolver.hueOf(left);\n let right = segment[1];\n for (let axis = 0; axis < 3; axis++) {\n if (left[axis] !== right[axis]) {\n let lPlane = -1;\n let rPlane = 255;\n if (left[axis] < right[axis]) {\n lPlane = HctSolver.criticalPlaneBelow(\n HctSolver.trueDelinearized(left[axis]));\n rPlane = HctSolver.criticalPlaneAbove(\n HctSolver.trueDelinearized(right[axis]));\n } else {\n lPlane = HctSolver.criticalPlaneAbove(\n HctSolver.trueDelinearized(left[axis]));\n rPlane = HctSolver.criticalPlaneBelow(\n HctSolver.trueDelinearized(right[axis]));\n }\n for (let i = 0; i < 8; i++) {\n if (Math.abs(rPlane - lPlane) <= 1) {\n break;\n } else {\n const mPlane = Math.floor((lPlane + rPlane) / 2.0);\n const midPlaneCoordinate = HctSolver.CRITICAL_PLANES[mPlane];\n const mid =\n HctSolver.setCoordinate(left, midPlaneCoordinate, right, axis);\n const midHue = HctSolver.hueOf(mid);\n if (HctSolver.areInCyclicOrder(leftHue, targetHue, midHue)) {\n right = mid;\n rPlane = mPlane;\n } else {\n left = mid;\n leftHue = midHue;\n lPlane = mPlane;\n }\n }\n }\n }\n }\n return HctSolver.midpoint(left, right);\n }\n\n private static inverseChromaticAdaptation(adapted: number): number {\n const adaptedAbs = Math.abs(adapted);\n const base = Math.max(0, 27.13 * adaptedAbs / (400.0 - adaptedAbs));\n return mathUtils.signum(adapted) * Math.pow(base, 1.0 / 0.42);\n }\n\n /**\n * Finds a color with the given hue, chroma, and Y.\n *\n * @param hueRadians The desired hue in radians.\n * @param chroma The desired chroma.\n * @param y The desired Y.\n * @return The desired color as a hexadecimal integer, if found; 0\n * otherwise.\n */\n private static findResultByJ(hueRadians: number, chroma: number, y: number):\n number {\n // Initial estimate of j.\n let j = Math.sqrt(y) * 11.0;\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n const viewingConditions = ViewingConditions.DEFAULT;\n const tInnerCoeff =\n 1 / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\n const eHue = 0.25 * (Math.cos(hueRadians + 2.0) + 3.8);\n const p1 =\n eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\n const hSin = Math.sin(hueRadians);\n const hCos = Math.cos(hueRadians);\n for (let iterationRound = 0; iterationRound < 5; iterationRound++) {\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n const jNormalized = j / 100.0;\n const alpha =\n chroma === 0.0 || j === 0.0 ? 0.0 : chroma / Math.sqrt(jNormalized);\n const t = Math.pow(alpha * tInnerCoeff, 1.0 / 0.9);\n const ac = viewingConditions.aw *\n Math.pow(\n jNormalized,\n 1.0 / viewingConditions.c / viewingConditions.z,\n );\n const p2 = ac / viewingConditions.nbb;\n const gamma = 23.0 * (p2 + 0.305) * t /\n (23.0 * p1 + 11 * t * hCos + 108.0 * t * hSin);\n const a = gamma * hCos;\n const b = gamma * hSin;\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\n const rCScaled = HctSolver.inverseChromaticAdaptation(rA);\n const gCScaled = HctSolver.inverseChromaticAdaptation(gA);\n const bCScaled = HctSolver.inverseChromaticAdaptation(bA);\n const linrgb = mathUtils.matrixMultiply(\n [rCScaled, gCScaled, bCScaled],\n HctSolver.LINRGB_FROM_SCALED_DISCOUNT,\n );\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n if (linrgb[0] < 0 || linrgb[1] < 0 || linrgb[2] < 0) {\n return 0;\n }\n const kR = HctSolver.Y_FROM_LINRGB[0];\n const kG = HctSolver.Y_FROM_LINRGB[1];\n const kB = HctSolver.Y_FROM_LINRGB[2];\n const fnj = kR * linrgb[0] + kG * linrgb[1] + kB * linrgb[2];\n if (fnj <= 0) {\n return 0;\n }\n if (iterationRound === 4 || Math.abs(fnj - y) < 0.002) {\n if (linrgb[0] > 100.01 || linrgb[1] > 100.01 || linrgb[2] > 100.01) {\n return 0;\n }\n return colorUtils.argbFromLinrgb(linrgb);\n }\n // Iterates with Newton method,\n // Using 2 * fn(j) / j as the approximation of fn'(j)\n j = j - (fnj - y) * j / (2 * fnj);\n }\n return 0;\n }\n\n /**\n * Finds an sRGB color with the given hue, chroma, and L*, if\n * possible.\n *\n * @param hueDegrees The desired hue, in degrees.\n * @param chroma The desired chroma.\n * @param lstar The desired L*.\n * @return A hexadecimal representing the sRGB color. The color\n * has sufficiently close hue, chroma, and L* to the desired\n * values, if possible; otherwise, the hue and L* will be\n * sufficiently close, and chroma will be maximized.\n */\n static solveToInt(hueDegrees: number, chroma: number, lstar: number): number {\n if (chroma < 0.0001 || lstar < 0.0001 || lstar > 99.9999) {\n return colorUtils.argbFromLstar(lstar);\n }\n hueDegrees = mathUtils.sanitizeDegreesDouble(hueDegrees);\n const hueRadians = hueDegrees / 180 * Math.PI;\n const y = colorUtils.yFromLstar(lstar);\n const exactAnswer = HctSolver.findResultByJ(hueRadians, chroma, y);\n if (exactAnswer !== 0) {\n return exactAnswer;\n }\n const linrgb = HctSolver.bisectToLimit(y, hueRadians);\n return colorUtils.argbFromLinrgb(linrgb);\n }\n\n /**\n * Finds an sRGB color with the given hue, chroma, and L*, if\n * possible.\n *\n * @param hueDegrees The desired hue, in degrees.\n * @param chroma The desired chroma.\n * @param lstar The desired L*.\n * @return An CAM16 object representing the sRGB color. The color\n * has sufficiently close hue, chroma, and L* to the desired\n * values, if possible; otherwise, the hue and L* will be\n * sufficiently close, and chroma will be maximized.\n */\n static solveToCam(hueDegrees: number, chroma: number, lstar: number): Cam16 {\n return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));\n }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A color system built using CAM16 hue and chroma, and L* from\n * L*a*b*.\n *\n * Using L* creates a link between the color system, contrast, and thus\n * accessibility. Contrast ratio depends on relative luminance, or Y in the XYZ\n * color space. L*, or perceptual luminance can be calculated from Y.\n *\n * Unlike Y, L* is linear to human perception, allowing trivial creation of\n * accurate color tones.\n *\n * Unlike contrast ratio, measuring contrast in L* is linear, and simple to\n * calculate. A difference of 40 in HCT tone guarantees a contrast ratio >= 3.0,\n * and a difference of 50 guarantees a contrast ratio >= 4.5.\n */\n\nimport * as utils from '../utils/color_utils.js';\n\nimport {Cam16} from './cam16.js';\nimport {HctSolver} from './hct_solver.js';\nimport {ViewingConditions} from './viewing_conditions.js';\n\n\n/**\n * HCT, hue, chroma, and tone. A color system that provides a perceptually\n * accurate color measurement system that can also accurately render what colors\n * will appear as in different lighting environments.\n */\nexport class Hct {\n /**\n * @param hue 0 <= hue < 360; invalid values are corrected.\n * @param chroma 0 <= chroma < ?; Informally, colorfulness. The color\n * returned may be lower than the requested chroma. Chroma has a different\n * maximum for any given hue and tone.\n * @param tone 0 <= tone <= 100; invalid values are corrected.\n * @return HCT representation of a color in default viewing conditions.\n */\n\n internalHue: number;\n internalChroma: number;\n internalTone: number;\n\n static from(hue: number, chroma: number, tone: number) {\n return new Hct(HctSolver.solveToInt(hue, chroma, tone));\n }\n\n /**\n * @param argb ARGB representation of a color.\n * @return HCT representation of a color in default viewing conditions\n */\n static fromInt(argb: number) {\n return new Hct(argb);\n }\n\n toInt(): number {\n return this.argb;\n }\n\n /**\n * A number, in degrees, representing ex. red, orange, yellow, etc.\n * Ranges from 0 <= hue < 360.\n */\n get hue(): number {\n return this.internalHue;\n }\n\n /**\n * @param newHue 0 <= newHue < 360; invalid values are corrected.\n * Chroma may decrease because chroma has a different maximum for any given\n * hue and tone.\n */\n set hue(newHue: number) {\n this.setInternalState(\n HctSolver.solveToInt(\n newHue,\n this.internalChroma,\n this.internalTone,\n ),\n );\n }\n\n get chroma(): number {\n return this.internalChroma;\n }\n\n /**\n * @param newChroma 0 <= newChroma < ?\n * Chroma may decrease because chroma has a different maximum for any given\n * hue and tone.\n */\n set chroma(newChroma: number) {\n this.setInternalState(\n HctSolver.solveToInt(\n this.internalHue,\n newChroma,\n this.internalTone,\n ),\n );\n }\n\n /** Lightness. Ranges from 0 to 100. */\n get tone(): number {\n return this.internalTone;\n }\n\n /**\n * @param newTone 0 <= newTone <= 100; invalid valids are corrected.\n * Chroma may decrease because chroma has a different maximum for any given\n * hue and tone.\n */\n set tone(newTone: number) {\n this.setInternalState(\n HctSolver.solveToInt(\n this.internalHue,\n this.internalChroma,\n newTone,\n ),\n );\n }\n\n /** Sets a property of the Hct object. */\n setValue(propertyName: string, value: number) {\n (this as any)[propertyName] = value;\n }\n\n toString(): string {\n return `HCT(${this.hue.toFixed(0)}, ${this.chroma.toFixed(0)}, ${\n this.tone.toFixed(0)})`;\n }\n\n static isBlue(hue: number): boolean {\n return hue >= 250 && hue < 270;\n }\n\n static isYellow(hue: number): boolean {\n return hue >= 105 && hue < 125;\n }\n\n static isCyan(hue: number): boolean {\n return hue >= 170 && hue < 207;\n }\n\n private constructor(private argb: number) {\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue;\n this.internalChroma = cam.chroma;\n this.internalTone = utils.lstarFromArgb(argb);\n this.argb = argb;\n }\n\n private setInternalState(argb: number) {\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue;\n this.internalChroma = cam.chroma;\n this.internalTone = utils.lstarFromArgb(argb);\n this.argb = argb;\n }\n\n /**\n * Translates a color into different [ViewingConditions].\n *\n * Colors change appearance. They look different with lights on versus off,\n * the same color, as in hex code, on white looks different when on black.\n * This is called color relativity, most famously explicated by Josef Albers\n * in Interaction of Color.\n *\n * In color science, color appearance models can account for this and\n * calculate the appearance of a color in different settings. HCT is based on\n * CAM16, a color appearance model, and uses it to make these calculations.\n *\n * See [ViewingConditions.make] for parameters affecting color appearance.\n */\n inViewingConditions(vc: ViewingConditions): Hct {\n // 1. Use CAM16 to find XYZ coordinates of color in specified VC.\n const cam = Cam16.fromInt(this.toInt());\n const viewedInVc = cam.xyzInViewingConditions(vc);\n\n // 2. Create CAM16 of those XYZ coordinates in default VC.\n const recastInVc = Cam16.fromXyzInViewingConditions(\n viewedInVc[0],\n viewedInVc[1],\n viewedInVc[2],\n ViewingConditions.make(),\n );\n\n // 3. Create HCT from:\n // - CAM16 using default VC with XYZ coordinates in specified VC.\n // - L* converted from Y in XYZ coordinates in specified VC.\n const recastHct = Hct.from(\n recastInVc.hue,\n recastInVc.chroma,\n utils.lstarFromY(viewedInVc[1]),\n );\n return recastHct;\n }\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// material_color_utilities is designed to have a consistent API across\n// platforms and modular components that can be moved around easily. Using a\n// class as a namespace facilitates this.\n//\n// tslint:disable:class-as-namespace\n\nimport * as utils from '../utils/color_utils.js';\nimport * as math from '../utils/math_utils.js';\n\n/**\n * Utility methods for calculating contrast given two colors, or calculating a\n * color given one color and a contrast ratio.\n *\n * Contrast ratio is calculated using XYZ's Y. When linearized to match human\n * perception, Y becomes HCT's tone and L*a*b*'s' L*. Informally, this is the\n * lightness of a color.\n *\n * Methods refer to tone, T in the the HCT color space.\n * Tone is equivalent to L* in the L*a*b* color space, or L in the LCH color\n * space.\n */\nexport class Contrast {\n /**\n * Returns a contrast ratio, which ranges from 1 to 21.\n *\n * @param toneA Tone between 0 and 100. Values outside will be clamped.\n * @param toneB Tone between 0 and 100. Values outside will be clamped.\n */\n static ratioOfTones(toneA: number, toneB: number): number {\n toneA = math.clampDouble(0.0, 100.0, toneA);\n toneB = math.clampDouble(0.0, 100.0, toneB);\n return Contrast.ratioOfYs(utils.yFromLstar(toneA), utils.yFromLstar(toneB));\n }\n\n static ratioOfYs(y1: number, y2: number): number {\n const lighter = y1 > y2 ? y1 : y2;\n const darker = (lighter === y2) ? y1 : y2;\n return (lighter + 5.0) / (darker + 5.0);\n }\n\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns -1 if ratio cannot be achieved with tone parameter.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in -1 being returned.\n * @param ratio Contrast ratio of return value and tone.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static lighter(tone: number, ratio: number): number {\n if (tone < 0.0 || tone > 100.0) {\n return -1.0;\n }\n\n const darkY = utils.yFromLstar(tone);\n const lightY = ratio * (darkY + 5.0) - 5.0;\n const realContrast = Contrast.ratioOfYs(lightY, darkY);\n const delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > 0.04) {\n return -1;\n }\n\n // Ensure gamut mapping, which requires a 'range' on tone, will still result\n // the correct ratio by darkening slightly.\n const returnValue = utils.lstarFromY(lightY) + 0.4;\n if (returnValue < 0 || returnValue > 100) {\n return -1;\n }\n return returnValue;\n }\n\n /**\n * Returns a tone <= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns -1 if ratio cannot be achieved with tone parameter.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in -1 being returned.\n * @param ratio Contrast ratio of return value and tone.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static darker(tone: number, ratio: number): number {\n if (tone < 0.0 || tone > 100.0) {\n return -1.0;\n }\n\n const lightY = utils.yFromLstar(tone);\n const darkY = ((lightY + 5.0) / ratio) - 5.0;\n const realContrast = Contrast.ratioOfYs(lightY, darkY);\n\n const delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > 0.04) {\n return -1;\n }\n\n // Ensure gamut mapping, which requires a 'range' on tone, will still result\n // the correct ratio by darkening slightly.\n const returnValue = utils.lstarFromY(darkY) - 0.4;\n if (returnValue < 0 || returnValue > 100) {\n return -1;\n }\n return returnValue;\n }\n\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns 100 if ratio cannot be achieved with tone parameter.\n *\n * This method is unsafe because the returned value is guaranteed to be in\n * bounds for tone, i.e. between 0 and 100. However, that value may not reach\n * the ratio with tone. For example, there is no color lighter than T100.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in 100 being returned.\n * @param ratio Desired contrast ratio of return value and tone parameter.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static lighterUnsafe(tone: number, ratio: number): number {\n const lighterSafe = Contrast.lighter(tone, ratio);\n return (lighterSafe < 0.0) ? 100.0 : lighterSafe;\n }\n\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns 100 if ratio cannot be achieved with tone parameter.\n *\n * This method is unsafe because the returned value is guaranteed to be in\n * bounds for tone, i.e. between 0 and 100. However, that value may not reach\n * the [ratio with [tone]. For example, there is no color darker than T0.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in 0 being returned.\n * @param ratio Desired contrast ratio of return value and tone parameter.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static darkerUnsafe(tone: number, ratio: number): number {\n const darkerSafe = Contrast.darker(tone, ratio);\n return (darkerSafe < 0.0) ? 0.0 : darkerSafe;\n }\n}","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Hct} from '../hct/hct.js';\n\n// material_color_utilities is designed to have a consistent API across\n// platforms and modular components that can be moved around easily. Using a\n// class as a namespace facilitates this.\n//\n// tslint:disable:class-as-namespace\n\n/**\n * Check and/or fix universally disliked colors.\n * Color science studies of color preference indicate universal distaste for\n * dark yellow-greens, and also show this is correlated to distate for\n * biological waste and rotting food.\n *\n * See Palmer and Schloss, 2010 or Schloss and Palmer's Chapter 21 in Handbook\n * of Color Psychology (2015).\n */\nexport class DislikeAnalyzer {\n /**\n * Returns true if a color is disliked.\n *\n * @param hct A color to be judged.\n * @return Whether the color is disliked.\n *\n * Disliked is defined as a dark yellow-green that is not neutral.\n */\n static isDisliked(hct: Hct): boolean {\n const huePasses =\n Math.round(hct.hue) >= 90.0 && Math.round(hct.hue) <= 111.0;\n const chromaPasses = Math.round(hct.chroma) > 16.0;\n const tonePasses = Math.round(hct.tone) < 65.0;\n\n return huePasses && chromaPasses && tonePasses;\n }\n\n /**\n * If a color is disliked, lighten it to make it likable.\n *\n * @param hct A color to be judged.\n * @return A new color if the original color is disliked, or the original\n * color if it is acceptable.\n */\n static fixIfDisliked(hct: Hct): Hct {\n if (DislikeAnalyzer.isDisliked(hct)) {\n return Hct.from(\n hct.hue,\n hct.chroma,\n 70.0,\n );\n }\n\n return hct;\n }\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Contrast} from '../contrast/contrast.js';\nimport {Hct} from '../hct/hct.js';\nimport type {TonalPalette} from '../palettes/tonal_palette';\nimport * as math from '../utils/math_utils.js';\n\nimport type {SpecVersion} from './color_spec';\nimport {ContrastCurve} from './contrast_curve.js';\nimport {DynamicScheme} from './dynamic_scheme.js';\nimport {ToneDeltaPair} from './tone_delta_pair.js';\n\n/**\n * @param name The name of the dynamic color. Defaults to empty.\n * @param palette Function that provides a TonalPalette given DynamicScheme. A\n * TonalPalette is defined by a hue and chroma, so this replaces the need to\n * specify hue/chroma. By providing a tonal palette, when contrast\n * adjustments are made, intended chroma can be preserved.\n * @param tone Function that provides a tone given DynamicScheme. When not\n * provided, the tone is same as the background tone or 50, when no\n * background is provided.\n * @param chromaMultiplier A factor that multiplies the chroma for this color.\n * Default to 1.\n * @param isBackground Whether this dynamic color is a background, with some\n * other color as the foreground. Defaults to false.\n * @param background The background of the dynamic color (as a function of a\n * `DynamicScheme`), if it exists.\n * @param secondBackground A second background of the dynamic color (as a\n * function of a `DynamicScheme`), if it exists.\n * @param contrastCurve A `ContrastCurve` object specifying how its contrast\n * against its background should behave in various contrast levels options.\n * Must used together with `background`. When not provided or resolved as\n * undefined, the contrast curve is calculated based on other constraints.\n * @param toneDeltaPair A `ToneDeltaPair` object specifying a tone delta\n * constraint between two colors. One of them must be the color being\n * constructed. When not provided or resolved as undefined, the tone is\n * calculated based on other constraints.\n */\ninterface FromPaletteOptions {\n name?: string;\n palette: (scheme: DynamicScheme) => TonalPalette;\n tone?: (scheme: DynamicScheme) => number;\n chromaMultiplier?: (scheme: DynamicScheme) => number;\n isBackground?: boolean;\n background?: (scheme: DynamicScheme) => DynamicColor | undefined;\n secondBackground?: (scheme: DynamicScheme) => DynamicColor | undefined;\n contrastCurve?: (scheme: DynamicScheme) => ContrastCurve | undefined;\n toneDeltaPair?: (scheme: DynamicScheme) => ToneDeltaPair | undefined;\n}\n\n/**\n * A delegate that provides the HCT and tone of a DynamicColor.\n *\n * This is used to allow different implementations of the color calculation\n * logic for different spec versions.\n */\ninterface ColorCalculationDelegate {\n getHct(scheme: DynamicScheme, color: DynamicColor): Hct;\n getTone(scheme: DynamicScheme, color: DynamicColor): number;\n}\n\nfunction validateExtendedColor(\n originalColor: DynamicColor, specVersion: SpecVersion,\n extendedColor: DynamicColor) {\n if (originalColor.name !== extendedColor.name) {\n throw new Error(\n `Attempting to extend color ${originalColor.name} with color ${\n extendedColor.name} of different name for spec version ${\n specVersion}.`);\n }\n if (originalColor.isBackground !== extendedColor.isBackground) {\n throw new Error(`Attempting to extend color ${originalColor.name} as a ${\n (originalColor.isBackground ?\n 'background' :\n 'foreground')} with color ${extendedColor.name} as a ${\n (extendedColor.isBackground ?\n 'background' :\n 'foreground')} for spec version ${specVersion}.`);\n }\n}\n/**\n * Returns a new DynamicColor that is the same as the original color, but with\n * the extended dynamic color's constraints for the given spec version.\n *\n * @param originlColor The original color.\n * @param specVersion The spec version to extend.\n * @param extendedColor The color with the values to extend.\n */\nexport function extendSpecVersion(\n originlColor: DynamicColor, specVersion: SpecVersion,\n extendedColor: DynamicColor): DynamicColor {\n validateExtendedColor(originlColor, specVersion, extendedColor);\n\n return DynamicColor.fromPalette({\n name: originlColor.name,\n palette: (s) => s.specVersion === specVersion ? extendedColor.palette(s) :\n originlColor.palette(s),\n tone: (s) => s.specVersion === specVersion ? extendedColor.tone(s) :\n originlColor.tone(s),\n isBackground: originlColor.isBackground,\n chromaMultiplier: (s) => {\n const chromaMultiplier = s.specVersion === specVersion ?\n extendedColor.chromaMultiplier :\n originlColor.chromaMultiplier;\n return chromaMultiplier !== undefined ? chromaMultiplier(s) : 1;\n },\n background: (s) => {\n const background = s.specVersion === specVersion ?\n extendedColor.background :\n originlColor.background;\n return background !== undefined ? background(s) : undefined\n },\n secondBackground: (s) => {\n const secondBackground = s.specVersion === specVersion ?\n extendedColor.secondBackground :\n originlColor.secondBackground;\n return secondBackground !== undefined ? secondBackground(s) : undefined;\n },\n contrastCurve: (s) => {\n const contrastCurve = s.specVersion === specVersion ?\n extendedColor.contrastCurve :\n originlColor.contrastCurve;\n return contrastCurve !== undefined ? contrastCurve(s) : undefined;\n },\n toneDeltaPair: (s) => {\n const toneDeltaPair = s.specVersion === specVersion ?\n extendedColor.toneDeltaPair :\n originlColor.toneDeltaPair;\n return toneDeltaPair !== undefined ? toneDeltaPair(s) : undefined;\n },\n });\n}\n\n/**\n * A color that adjusts itself based on UI state provided by DynamicScheme.\n *\n * Colors without backgrounds do not change tone when contrast changes. Colors\n * with backgrounds become closer to their background as contrast lowers, and\n * further when contrast increases.\n *\n * Prefer static constructors. They require either a hexcode, a palette and\n * tone, or a hue and chroma. Optionally, they can provide a background\n * DynamicColor.\n */\nexport class DynamicColor {\n private readonly hctCache = new Map<DynamicScheme, Hct>();\n\n /**\n * Create a DynamicColor defined by a TonalPalette and HCT tone.\n *\n * @param args Functions with DynamicScheme as input. Must provide a palette\n * and tone. May provide a background DynamicColor and ToneDeltaPair.\n */\n static fromPalette(args: FromPaletteOptions): DynamicColor {\n return new DynamicColor(\n args.name ?? '',\n args.palette,\n args.tone ?? DynamicColor.getInitialToneFromBackground(args.background),\n args.isBackground ?? false,\n args.chromaMultiplier,\n args.background,\n args.secondBackground,\n args.contrastCurve,\n args.toneDeltaPair,\n );\n }\n\n static getInitialToneFromBackground(\n background?: (scheme: DynamicScheme) => DynamicColor |\n undefined): (scheme: DynamicScheme) => number {\n if (background === undefined) {\n return (s) => 50;\n }\n return (s) => background(s) ? background(s)!.getTone(s) : 50;\n }\n\n /**\n * The base constructor for DynamicColor.\n *\n * _Strongly_ prefer using one of the convenience constructors. This class is\n * arguably too flexible to ensure it can support any scenario. Functional\n * arguments allow overriding without risks that come with subclasses.\n *\n * For example, the default behavior of adjust tone at max contrast\n * to be at a 7.0 ratio with its background is principled and\n * matches accessibility guidance. That does not mean it's the desired\n * approach for _every_ design system, and every color pairing,\n * always, in every case.\n *\n * @param name The name of the dynamic color. Defaults to empty.\n * @param palette Function that provides a TonalPalette given DynamicScheme. A\n * TonalPalette is defined by a hue and chroma, so this replaces the need\n * to specify hue/chroma. By providing a tonal palette, when contrast\n * adjustments are made, intended chroma can be preserved.\n * @param tone Function that provides a tone, given a DynamicScheme.\n * @param isBackground Whether this dynamic color is a background, with some\n * other color as the foreground. Defaults to false.\n * @param chromaMultiplier A factor that multiplies the chroma for this color.\n * @param background The background of the dynamic color (as a function of a\n * `DynamicScheme`), if it exists.\n * @param secondBackground A second background of the dynamic color (as a\n * function of a `DynamicScheme`), if it exists.\n * @param contrastCurve A `ContrastCurve` object specifying how its contrast\n * against its background should behave in various contrast levels\n * options.\n * @param toneDeltaPair A `ToneDeltaPair` object specifying a tone delta\n * constraint between two colors. One of them must be the color being\n * constructed.\n */\n constructor(\n readonly name: string,\n readonly palette: (scheme: DynamicScheme) => TonalPalette,\n readonly tone: (scheme: DynamicScheme) => number,\n readonly isBackground: boolean,\n readonly chromaMultiplier?: (scheme: DynamicScheme) => number,\n readonly background?: (scheme: DynamicScheme) => DynamicColor | undefined,\n readonly secondBackground?: (scheme: DynamicScheme) => DynamicColor |\n undefined,\n readonly contrastCurve?: (scheme: DynamicScheme) => ContrastCurve |\n undefined,\n readonly toneDeltaPair?: (scheme: DynamicScheme) => ToneDeltaPair |\n undefined,\n ) {\n if ((!background) && secondBackground) {\n throw new Error(\n `Color ${name} has secondBackground` +\n `defined, but background is not defined.`);\n }\n if ((!background) && contrastCurve) {\n throw new Error(\n `Color ${name} has contrastCurve` +\n `defined, but background is not defined.`);\n }\n if (background && !contrastCurve) {\n throw new Error(\n `Color ${name} has background` +\n `defined, but contrastCurve is not defined.`);\n }\n }\n\n /**\n * Returns a deep copy of this DynamicColor.\n */\n clone(): DynamicColor {\n return DynamicColor.fromPalette({\n name: this.name,\n palette: this.palette,\n tone: this.tone,\n isBackground: this.isBackground,\n chromaMultiplier: this.chromaMultiplier,\n background: this.background,\n secondBackground: this.secondBackground,\n contrastCurve: this.contrastCurve,\n toneDeltaPair: this.toneDeltaPair,\n });\n }\n\n /**\n * Clears the cache of HCT values for this color. For testing or debugging\n * purposes.\n */\n clearCache() {\n this.hctCache.clear();\n }\n\n /**\n * Returns a ARGB integer (i.e. a hex code).\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getArgb(scheme: DynamicScheme): number {\n return this.getHct(scheme).toInt();\n }\n\n /**\n * Returns a color, expressed in the HCT color space, that this\n * DynamicColor is under the conditions in scheme.\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getHct(scheme: DynamicScheme): Hct {\n const cachedAnswer = this.hctCache.get(scheme);\n if (cachedAnswer != null) {\n return cachedAnswer;\n }\n const answer = getSpec(scheme.specVersion).getHct(scheme, this);\n if (this.hctCache.size > 4) {\n this.hctCache.clear();\n }\n this.hctCache.set(scheme, answer);\n return answer;\n }\n\n /**\n * Returns a tone, T in the HCT color space, that this DynamicColor is under\n * the conditions in scheme.\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getTone(scheme: DynamicScheme): number {\n return getSpec(scheme.specVersion).getTone(scheme, this);\n }\n\n /**\n * Given a background tone, finds a foreground tone, while ensuring they reach\n * a contrast ratio that is as close to [ratio] as possible.\n *\n * @param bgTone Tone in HCT. Range is 0 to 100, undefined behavior when it\n * falls outside that range.\n * @param ratio The contrast ratio desired between bgTone and the return\n * value.\n */\n static foregroundTone(bgTone: number, ratio: number): number {\n const lighterTone = Contrast.lighterUnsafe(bgTone, ratio);\n const darkerTone = Contrast.darkerUnsafe(bgTone, ratio);\n const lighterRatio = Contrast.ratioOfTones(lighterTone, bgTone);\n const darkerRatio = Contrast.ratioOfTones(darkerTone, bgTone);\n const preferLighter = DynamicColor.tonePrefersLightForeground(bgTone);\n\n if (preferLighter) {\n // This handles an edge case where the initial contrast ratio is high\n // (ex. 13.0), and the ratio passed to the function is that high\n // ratio, and both the lighter and darker ratio fails to pass that\n // ratio.\n //\n // This was observed with Tonal Spot's On Primary Container turning\n // black momentarily between high and max contrast in light mode. PC's\n // standard tone was T90, OPC's was T10, it was light mode, and the\n // contrast value was 0.6568521221032331.\n const negligibleDifference = Math.abs(lighterRatio - darkerRatio) < 0.1 &&\n lighterRatio < ratio && darkerRatio < ratio;\n return lighterRatio >= ratio || lighterRatio >= darkerRatio ||\n negligibleDifference ?\n lighterTone :\n darkerTone;\n } else {\n return darkerRatio >= ratio || darkerRatio >= lighterRatio ? darkerTone :\n lighterTone;\n }\n }\n\n /**\n * Returns whether [tone] prefers a light foreground.\n *\n * People prefer white foregrounds on ~T60-70. Observed over time, and also\n * by Andrew Somers during research for APCA.\n *\n * T60 used as to create the smallest discontinuity possible when skipping\n * down to T49 in order to ensure light foregrounds.\n * Since `tertiaryContainer` in dark monochrome scheme requires a tone of\n * 60, it should not be adjusted. Therefore, 60 is excluded here.\n */\n static tonePrefersLightForeground(tone: number): boolean {\n return Math.round(tone) < 60.0;\n }\n\n /**\n * Returns whether [tone] can reach a contrast ratio of 4.5 with a lighter\n * color.\n */\n static toneAllowsLightForeground(tone: number): boolean {\n return Math.round(tone) <= 49.0;\n }\n\n /**\n * Adjusts a tone such that white has 4.5 contrast, if the tone is\n * reasonably close to supporting it.\n */\n static enableLightForeground(tone: number): number {\n if (DynamicColor.tonePrefersLightForeground(tone) &&\n !DynamicColor.toneAllowsLightForeground(tone)) {\n return 49.0;\n }\n return tone;\n }\n}\n\n/**\n * A delegate for the color calculation of a DynamicScheme in the 2021 spec.\n */\nclass ColorCalculationDelegateImpl2021 implements ColorCalculationDelegate {\n getHct(scheme: DynamicScheme, color: DynamicColor): Hct {\n const tone = color.getTone(scheme);\n const palette = color.palette(scheme);\n return palette.getHct(tone);\n }\n\n getTone(scheme: DynamicScheme, color: DynamicColor): number {\n const decreasingContrast = scheme.contrastLevel < 0;\n const toneDeltaPair =\n color.toneDeltaPair ? color.toneDeltaPair(scheme) : undefined;\n\n // Case 1: dual foreground, pair of colors with delta constraint.\n if (toneDeltaPair) {\n const roleA = toneDeltaPair.roleA;\n const roleB = toneDeltaPair.roleB;\n const delta = toneDeltaPair.delta;\n const polarity = toneDeltaPair.polarity;\n const stayTogether = toneDeltaPair.stayTogether;\n\n const aIsNearer =\n (polarity === 'nearer' ||\n (polarity === 'lighter' && !scheme.isDark) ||\n (polarity === 'darker' && scheme.isDark));\n const nearer = aIsNearer ? roleA : roleB;\n const farther = aIsNearer ? roleB : roleA;\n const amNearer = color.name === nearer.name;\n const expansionDir = scheme.isDark ? 1 : -1;\n let nTone = nearer.tone(scheme);\n let fTone = farther.tone(scheme);\n\n // 1st round: solve to min for each, if background and contrast curve\n // are defined.\n if (color.background && nearer.contrastCurve && farther.contrastCurve) {\n const bg = color.background(scheme);\n const nContrastCurve = nearer.contrastCurve(scheme);\n const fContrastCurve = farther.contrastCurve(scheme);\n if (bg && nContrastCurve && fContrastCurve) {\n const bgTone = bg.getTone(scheme);\n const nContrast = nContrastCurve.get(scheme.contrastLevel);\n const fContrast = fContrastCurve.get(scheme.contrastLevel);\n // If a color is good enough, it is not adjusted.\n // Initial and adjusted tones for `nearer`\n if (Contrast.ratioOfTones(bgTone, nTone) < nContrast) {\n nTone = DynamicColor.foregroundTone(bgTone, nContrast);\n }\n // Initial and adjusted tones for `farther`\n if (Contrast.ratioOfTones(bgTone, fTone) < fContrast) {\n fTone = DynamicColor.foregroundTone(bgTone, fContrast);\n }\n if (decreasingContrast) {\n // If decreasing contrast, adjust color to the \"bare minimum\"\n // that satisfies contrast.\n nTone = DynamicColor.foregroundTone(bgTone, nContrast);\n fTone = DynamicColor.foregroundTone(bgTone, fContrast);\n }\n }\n }\n\n if ((fTone - nTone) * expansionDir < delta) {\n // 2nd round: expand farther to match delta, if contrast is not\n // satisfied.\n fTone = math.clampDouble(0, 100, nTone + delta * expansionDir);\n if ((fTone - nTone) * expansionDir >= delta) {\n // Good! Tones now satisfy the constraint; no change needed.\n } else {\n // 3rd round: contract nearer to match delta.\n nTone = math.clampDouble(0, 100, fTone - delta * expansionDir);\n }\n }\n\n // Avoids the 50-59 awkward zone.\n if (50 <= nTone && nTone < 60) {\n // If `nearer` is in the awkward zone, move it away, together with\n // `farther`.\n if (expansionDir > 0) {\n nTone = 60;\n fTone = Math.max(fTone, nTone + delta * expansionDir);\n } else {\n nTone = 49;\n fTone = Math.min(fTone, nTone + delta * expansionDir);\n }\n } else if (50 <= fTone && fTone < 60) {\n if (stayTogether) {\n // Fixes both, to avoid two colors on opposite sides of the \"awkward\n // zone\".\n if (expansionDir > 0) {\n nTone = 60;\n fTone = Math.max(fTone, nTone + delta * expansionDir);\n } else {\n nTone = 49;\n fTone = Math.min(fTone, nTone + delta * expansionDir);\n }\n } else {\n // Not required to stay together; fixes just one.\n if (expansionDir > 0) {\n fTone = 60;\n } else {\n fTone = 49;\n }\n }\n }\n\n // Returns `nTone` if this color is `nearer`, otherwise `fTone`.\n return amNearer ? nTone : fTone;\n } else {\n // Case 2: No contrast pair; just solve for itself.\n let answer = color.tone(scheme);\n\n if (color.background == undefined ||\n color.background(scheme) === undefined ||\n color.contrastCurve == undefined ||\n color.contrastCurve(scheme) === undefined) {\n return answer; // No adjustment for colors with no background.\n }\n\n const bgTone = color.background(scheme)!.getTone(scheme);\n const desiredRatio =\n color.contrastCurve(scheme)!.get(scheme.contrastLevel);\n\n if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio) {\n // Don't \"improve\" what's good enough.\n } else {\n // Rough improvement.\n answer = DynamicColor.foregroundTone(bgTone, desiredRatio);\n }\n\n if (decreasingContrast) {\n answer = DynamicColor.foregroundTone(bgTone, desiredRatio);\n }\n\n if (color.isBackground && 50 <= answer && answer < 60) {\n // Must adjust\n if (Contrast.ratioOfTones(49, bgTone) >= desiredRatio) {\n answer = 49;\n } else {\n answer = 60;\n }\n }\n\n if (color.secondBackground == undefined ||\n color.secondBackground(scheme) === undefined) {\n return answer;\n }\n\n // Case 3: Adjust for dual backgrounds.\n const [bg1, bg2] = [color.background, color.secondBackground];\n const [bgTone1, bgTone2] =\n [bg1(scheme)!.getTone(scheme), bg2(scheme)!.getTone(scheme)];\n const [upper, lower] =\n [Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2)];\n\n if (Contrast.ratioOfTones(upper, answer) >= desiredRatio &&\n Contrast.ratioOfTones(lower, answer) >= desiredRatio) {\n return answer;\n }\n\n // The darkest light tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const lightOption = Contrast.lighter(upper, desiredRatio);\n\n // The lightest dark tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const darkOption = Contrast.darker(lower, desiredRatio);\n\n // Tones suitable for the foreground.\n const availables = [];\n if (lightOption !== -1) availables.push(lightOption);\n if (darkOption !== -1) availables.push(darkOption);\n\n const prefersLight = DynamicColor.tonePrefersLightForeground(bgTone1) ||\n DynamicColor.tonePrefersLightForeground(bgTone2);\n if (prefersLight) {\n return (lightOption < 0) ? 100 : lightOption;\n }\n if (availables.length === 1) {\n return availables[0];\n }\n return (darkOption < 0) ? 0 : darkOption;\n }\n }\n}\n\n/**\n * A delegate for the color calculation of a DynamicScheme in the 2025 spec.\n */\nclass ColorCalculationDelegateImpl2025 implements ColorCalculationDelegate {\n getHct(scheme: DynamicScheme, color: DynamicColor): Hct {\n const palette = color.palette(scheme);\n const tone = color.getTone(scheme);\n const hue = palette.hue;\n const chroma = palette.chroma *\n (color.chromaMultiplier ? color.chromaMultiplier(scheme) : 1);\n\n return Hct.from(hue, chroma, tone);\n }\n\n getTone(scheme: DynamicScheme, color: DynamicColor): number {\n const toneDeltaPair =\n color.toneDeltaPair ? color.toneDeltaPair(scheme) : undefined;\n\n // Case 0: tone delta constraint.\n if (toneDeltaPair) {\n const roleA = toneDeltaPair.roleA;\n const roleB = toneDeltaPair.roleB;\n const polarity = toneDeltaPair.polarity;\n const constraint = toneDeltaPair.constraint;\n const absoluteDelta = polarity === 'darker' ||\n (polarity === 'relative_lighter' && scheme.isDark) ||\n (polarity === 'relative_darker' && !scheme.isDark) ?\n -toneDeltaPair.delta :\n toneDeltaPair.delta;\n\n const amRoleA = color.name === roleA.name;\n const selfRole = amRoleA ? roleA : roleB;\n const refRole = amRoleA ? roleB : roleA;\n let selfTone = selfRole.tone(scheme);\n let refTone = refRole.getTone(scheme);\n const relativeDelta = absoluteDelta * (amRoleA ? 1 : -1);\n\n if (constraint === 'exact') {\n selfTone = math.clampDouble(0, 100, refTone + relativeDelta);\n } else if (constraint === 'nearer') {\n if (relativeDelta > 0) {\n selfTone = math.clampDouble(\n 0, 100,\n math.clampDouble(refTone, refTone + relativeDelta, selfTone));\n } else {\n selfTone = math.clampDouble(\n 0, 100,\n math.clampDouble(refTone + relativeDelta, refTone, selfTone));\n }\n } else if (constraint === 'farther') {\n if (relativeDelta > 0) {\n selfTone = math.clampDouble(refTone + relativeDelta, 100, selfTone);\n } else {\n selfTone = math.clampDouble(0, refTone + relativeDelta, selfTone);\n }\n }\n\n if (color.background && color.contrastCurve) {\n const background = color.background(scheme);\n const contrastCurve = color.contrastCurve(scheme);\n if (background && contrastCurve) {\n // Adjust the tones for contrast, if background and contrast curve\n // are defined.\n const bgTone = background.getTone(scheme);\n const selfContrast = contrastCurve.get(scheme.contrastLevel);\n selfTone = Contrast.ratioOfTones(bgTone, selfTone) >= selfContrast &&\n scheme.contrastLevel >= 0 ?\n selfTone :\n DynamicColor.foregroundTone(bgTone, selfContrast);\n }\n }\n\n // This can avoid the awkward tones for background colors including the\n // access fixed colors. Accent fixed dim colors should not be adjusted.\n if (color.isBackground && !color.name.endsWith('_fixed_dim')) {\n if (selfTone >= 57) {\n selfTone = math.clampDouble(65, 100, selfTone);\n } else {\n selfTone = math.clampDouble(0, 49, selfTone);\n }\n }\n\n return selfTone;\n } else {\n // Case 1: No tone delta pair; just solve for itself.\n let answer = color.tone(scheme);\n\n if (color.background == undefined ||\n color.background(scheme) === undefined ||\n color.contrastCurve == undefined ||\n color.contrastCurve(scheme) === undefined) {\n return answer; // No adjustment for colors with no background.\n }\n\n const bgTone = color.background(scheme)!.getTone(scheme);\n const desiredRatio =\n color.contrastCurve(scheme)!.get(scheme.contrastLevel);\n\n // Recalculate the tone from desired contrast ratio if the current\n // contrast ratio is not enough or desired contrast level is decreasing\n // (<0).\n answer = Contrast.ratioOfTones(bgTone, answer) >= desiredRatio &&\n scheme.contrastLevel >= 0 ?\n answer :\n DynamicColor.foregroundTone(bgTone, desiredRatio);\n\n // This can avoid the awkward tones for background colors including the\n // access fixed colors. Accent fixed dim colors should not be adjusted.\n if (color.isBackground && !color.name.endsWith('_fixed_dim')) {\n if (answer >= 57) {\n answer = math.clampDouble(65, 100, answer);\n } else {\n answer = math.clampDouble(0, 49, answer);\n }\n }\n\n if (color.secondBackground == undefined ||\n color.secondBackground(scheme) === undefined) {\n return answer;\n }\n\n // Case 2: Adjust for dual backgrounds.\n const [bg1, bg2] = [color.background, color.secondBackground];\n const [bgTone1, bgTone2] =\n [bg1(scheme)!.getTone(scheme), bg2(scheme)!.getTone(scheme)];\n const [upper, lower] =\n [Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2)];\n\n if (Contrast.ratioOfTones(upper, answer) >= desiredRatio &&\n Contrast.ratioOfTones(lower, answer) >= desiredRatio) {\n return answer;\n }\n\n // The darkest light tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const lightOption = Contrast.lighter(upper, desiredRatio);\n\n // The lightest dark tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const darkOption = Contrast.darker(lower, desiredRatio);\n\n // Tones suitable for the foreground.\n const availables = [];\n if (lightOption !== -1) availables.push(lightOption);\n if (darkOption !== -1) availables.push(darkOption);\n\n const prefersLight = DynamicColor.tonePrefersLightForeground(bgTone1) ||\n DynamicColor.tonePrefersLightForeground(bgTone2);\n if (prefersLight) {\n return (lightOption < 0) ? 100 : lightOption;\n }\n if (availables.length === 1) {\n return availables[0];\n }\n return (darkOption < 0) ? 0 : darkOption;\n }\n }\n}\n\nconst spec2021 = new ColorCalculationDelegateImpl2021();\nconst spec2025 = new ColorCalculationDelegateImpl2025();\n\n/**\n * Returns the ColorCalculationDelegate for the given spec version.\n */\nfunction getSpec(specVersion: SpecVersion): ColorCalculationDelegate {\n return specVersion === '2025' ? spec2025 : spec2021;\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Hct} from '../hct/hct.js';\n\n/**\n * A convenience class for retrieving colors that are constant in hue and\n * chroma, but vary in tone.\n */\nexport class TonalPalette {\n private readonly cache = new Map<number, number>();\n\n /**\n * @param argb ARGB representation of a color\n * @return Tones matching that color's hue and chroma.\n */\n static fromInt(argb: number): TonalPalette {\n const hct = Hct.fromInt(argb);\n return TonalPalette.fromHct(hct);\n }\n\n /**\n * @param hct Hct\n * @return Tones matching that color's hue and chroma.\n */\n static fromHct(hct: Hct) {\n return new TonalPalette(hct.hue, hct.chroma, hct);\n }\n\n /**\n * @param hue HCT hue\n * @param chroma HCT chroma\n * @return Tones matching hue and chroma.\n */\n static fromHueAndChroma(hue: number, chroma: number): TonalPalette {\n const keyColor = new KeyColor(hue, chroma).create();\n return new TonalPalette(hue, chroma, keyColor);\n }\n\n private constructor(\n readonly hue: number, readonly chroma: number, readonly keyColor: Hct) {}\n\n /**\n * @param tone HCT tone, measured from 0 to 100.\n * @return ARGB representation of a color with that tone.\n */\n tone(tone: number): number {\n let argb = this.cache.get(tone);\n if (argb === undefined) {\n if (tone == 99 && Hct.isYellow(this.hue)) {\n argb = this.averageArgb(this.tone(98), this.tone(100));\n } else {\n argb = Hct.from(this.hue, this.chroma, tone).toInt();\n }\n this.cache.set(tone, argb);\n }\n return argb;\n }\n\n /**\n * @param tone HCT tone.\n * @return HCT representation of a color with that tone.\n */\n getHct(tone: number): Hct {\n return Hct.fromInt(this.tone(tone));\n }\n\n private averageArgb(argb1: number, argb2: number): number {\n const red1 = (argb1 >>> 16) & 0xff;\n const green1 = (argb1 >>> 8) & 0xff;\n const blue1 = argb1 & 0xff;\n const red2 = (argb2 >>> 16) & 0xff;\n const green2 = (argb2 >>> 8) & 0xff;\n const blue2 = argb2 & 0xff;\n const red = Math.round((red1 + red2) / 2);\n const green = Math.round((green1 + green2) / 2);\n const blue = Math.round((blue1 + blue2) / 2);\n return (255 << 24 | (red & 255) << 16 | (green & 255) << 8 |\n (blue & 255)) >>>\n 0;\n }\n}\n\n/**\n * Key color is a color that represents the hue and chroma of a tonal palette\n */\nclass KeyColor {\n // Cache that maps tone to max chroma to avoid duplicated HCT calculation.\n private readonly chromaCache = new Map<number, number>();\n private readonly maxChromaValue = 200.0;\n\n constructor(readonly hue: number, readonly requestedChroma: number) {}\n\n /**\n * Creates a key color from a [hue] and a [chroma].\n * The key color is the first tone, starting from T50, matching the given hue\n * and chroma.\n *\n * @return Key color [Hct]\n */\n create(): Hct {\n // Pivot around T50 because T50 has the most chroma available, on\n // average. Thus it is most likely to have a direct answer.\n const pivotTone = 50;\n const toneStepSize = 1;\n // Epsilon to accept values slightly higher than the requested chroma.\n const epsilon = 0.01;\n\n // Binary search to find the tone that can provide a chroma that is closest\n // to the requested chroma.\n let lowerTone = 0;\n let upperTone = 100;\n while (lowerTone < upperTone) {\n const midTone = Math.floor((lowerTone + upperTone) / 2);\n const isAscending =\n this.maxChroma(midTone) < this.maxChroma(midTone + toneStepSize);\n const sufficientChroma =\n this.maxChroma(midTone) >= this.requestedChroma - epsilon;\n\n if (sufficientChroma) {\n // Either range [lowerTone, midTone] or [midTone, upperTone] has\n // the answer, so search in the range that is closer the pivot tone.\n if (Math.abs(lowerTone - pivotTone) < Math.abs(upperTone - pivotTone)) {\n upperTone = midTone;\n } else {\n if (lowerTone === midTone) {\n return Hct.from(this.hue, this.requestedChroma, lowerTone);\n }\n lowerTone = midTone;\n }\n } else {\n // As there is no sufficient chroma in the midTone, follow the direction\n // to the chroma peak.\n if (isAscending) {\n lowerTone = midTone + toneStepSize;\n } else {\n // Keep midTone for potential chroma peak.\n upperTone = midTone;\n }\n }\n }\n\n return Hct.from(this.hue, this.requestedChroma, lowerTone);\n }\n\n // Find the maximum chroma for a given tone\n private maxChroma(tone: number): number {\n if (this.chromaCache.has(tone)) {\n return this.chromaCache.get(tone)!;\n }\n const chroma = Hct.from(this.hue, this.maxChromaValue, tone).chroma;\n this.chromaCache.set(tone, chroma);\n return chroma;\n }\n}\n","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This file is automatically generated. Do not modify it.\n\nimport {Hct} from '../hct/hct.js';\nimport * as colorUtils from '../utils/color_utils.js';\nimport * as mathUtils from '../utils/math_utils.js';\n\n/**\n * Design utilities using color temperature theory.\n *\n * Analogous colors, complementary color, and cache to efficiently, lazily,\n * generate data for calculations when needed.\n */\nexport class TemperatureCache {\n constructor(public input: Hct) {}\n\n hctsByTempCache: Hct[] = [];\n hctsByHueCache: Hct[] = [];\n tempsByHctCache = new Map<Hct, number>();\n inputRelativeTemperatureCache: number = -1.0;\n complementCache: Hct|null = null;\n\n get hctsByTemp(): Hct[] {\n if (this.hctsByTempCache.length > 0) {\n return this.hctsByTempCache;\n }\n\n const hcts = this.hctsByHue.concat([this.input]);\n const temperaturesByHct = this.tempsByHct;\n hcts.sort((a, b) => temperaturesByHct.get(a)! - temperaturesByHct.get(b)!);\n this.hctsByTempCache = hcts;\n return hcts;\n }\n\n get warmest(): Hct {\n return this.hctsByTemp[this.hctsByTemp.length - 1];\n }\n\n get coldest(): Hct {\n return this.hctsByTemp[0];\n }\n\n /**\n * A set of colors with differing hues, equidistant in temperature.\n *\n * In art, this is usually described as a set of 5 colors on a color wheel\n * divided into 12 sections. This method allows provision of either of those\n * values.\n *\n * Behavior is undefined when [count] or [divisions] is 0.\n * When divisions < count, colors repeat.\n *\n * [count] The number of colors to return, includes the input color.\n * [divisions] The number of divisions on the color wheel.\n */\n analogous(count = 5, divisions = 12): Hct[] {\n const startHue = Math.round(this.input.hue);\n const startHct = this.hctsByHue[startHue];\n let lastTemp = this.relativeTemperature(startHct);\n const allColors = [startHct];\n\n let absoluteTotalTempDelta = 0.0;\n for (let i = 0; i < 360; i++) {\n const hue = mathUtils.sanitizeDegreesInt(startHue + i);\n const hct = this.hctsByHue[hue];\n const temp = this.relativeTemperature(hct);\n const tempDelta = Math.abs(temp - lastTemp);\n lastTemp = temp;\n absoluteTotalTempDelta += tempDelta;\n }\n let hueAddend = 1;\n const tempStep = absoluteTotalTempDelta / divisions;\n let totalTempDelta = 0.0;\n lastTemp = this.relativeTemperature(startHct);\n while (allColors.length < divisions) {\n const hue = mathUtils.sanitizeDegreesInt(startHue + hueAddend);\n const hct = this.hctsByHue[hue];\n const temp = this.relativeTemperature(hct);\n const tempDelta = Math.abs(temp - lastTemp);\n totalTempDelta += tempDelta;\n\n const desiredTotalTempDeltaForIndex = allColors.length * tempStep;\n let indexSatisfied = totalTempDelta >= desiredTotalTempDeltaForIndex;\n let indexAddend = 1;\n // Keep adding this hue to the answers until its temperature is\n // insufficient. This ensures consistent behavior when there aren't\n // [divisions] discrete steps between 0 and 360 in hue with [tempStep]\n // delta in temperature between them.\n //\n // For example, white and black have no analogues: there are no other\n // colors at T100/T0. Therefore, they should just be added to the array\n // as answers.\n while (indexSatisfied && allColors.length < divisions) {\n allColors.push(hct);\n const desiredTotalTempDeltaForIndex =\n ((allColors.length + indexAddend) * tempStep);\n indexSatisfied = totalTempDelta >= desiredTotalTempDeltaForIndex;\n indexAddend++;\n }\n lastTemp = temp;\n hueAddend++;\n if (hueAddend > 360) {\n while (allColors.length < divisions) {\n allColors.push(hct);\n }\n break;\n }\n }\n\n const answers = [this.input];\n\n // First, generate analogues from rotating counter-clockwise.\n const increaseHueCount = Math.floor((count - 1) / 2.0);\n for (let i = 1; i < (increaseHueCount + 1); i++) {\n let index = 0 - i;\n while (index < 0) {\n index = allColors.length + index;\n }\n if (index >= allColors.length) {\n index = index % allColors.length;\n }\n answers.splice(0, 0, allColors[index]);\n }\n\n // Second, generate analogues from rotating clockwise.\n const decreaseHueCount = count - increaseHueCount - 1;\n for (let i = 1; i < (decreaseHueCount + 1); i++) {\n let index = i;\n while (index < 0) {\n index = allColors.length + index;\n }\n if (index >= allColors.length) {\n index = index % allColors.length;\n }\n answers.push(allColors[index]);\n }\n\n return answers;\n }\n\n /**\n * A color that complements the input color aesthetically.\n *\n * In art, this is usually described as being across the color wheel.\n * History of this shows intent as a color that is just as cool-warm as the\n * input color is warm-cool.\n */\n get complement(): Hct {\n if (this.complementCache != null) {\n return this.complementCache;\n }\n\n const coldestHue = this.coldest.hue;\n const coldestTemp = this.tempsByHct.get(this.coldest)!;\n\n const warmestHue = this.warmest.hue;\n const warmestTemp = this.tempsByHct.get(this.warmest)!;\n const range = warmestTemp - coldestTemp;\n const startHueIsColdestToWarmest =\n TemperatureCache.isBetween(this.input.hue, coldestHue, warmestHue);\n const startHue = startHueIsColdestToWarmest ? warmestHue : coldestHue;\n const endHue = startHueIsColdestToWarmest ? coldestHue : warmestHue;\n const directionOfRotation = 1.0;\n let smallestError = 1000.0;\n let answer = this.hctsByHue[Math.round(this.input.hue)];\n\n const complementRelativeTemp = 1.0 - this.inputRelativeTemperature;\n // Find the color in the other section, closest to the inverse percentile\n // of the input color. This is the complement.\n for (let hueAddend = 0.0; hueAddend <= 360.0; hueAddend += 1.0) {\n const hue = mathUtils.sanitizeDegreesDouble(\n startHue + directionOfRotation * hueAddend);\n if (!TemperatureCache.isBetween(hue, startHue, endHue)) {\n continue;\n }\n const possibleAnswer = this.hctsByHue[Math.round(hue)];\n const relativeTemp =\n (this.tempsByHct.get(possibleAnswer)! - coldestTemp) / range;\n const error = Math.abs(complementRelativeTemp - relativeTemp);\n if (error < smallestError) {\n smallestError = error;\n answer = possibleAnswer;\n }\n }\n this.complementCache = answer;\n return this.complementCache;\n }\n\n /**\n * Temperature relative to all colors with the same chroma and tone.\n * Value on a scale from 0 to 1.\n */\n relativeTemperature(hct: Hct): number {\n const range =\n this.tempsByHct.get(this.warmest)! - this.tempsByHct.get(this.coldest)!;\n const differenceFromColdest =\n this.tempsByHct.get(hct)! - this.tempsByHct.get(this.coldest)!;\n // Handle when there's no difference in temperature between warmest and\n // coldest: for example, at T100, only one color is available, white.\n if (range === 0.0) {\n return 0.5;\n }\n return differenceFromColdest / range;\n }\n\n /** Relative temperature of the input color. See [relativeTemperature]. */\n get inputRelativeTemperature(): number {\n if (this.inputRelativeTemperatureCache >= 0.0) {\n return this.inputRelativeTemperatureCache;\n }\n\n this.inputRelativeTemperatureCache = this.relativeTemperature(this.input);\n return this.inputRelativeTemperatureCache;\n }\n\n /** A Map with keys of HCTs in [hctsByTemp], values of raw temperature. */\n get tempsByHct(): Map<Hct, number> {\n if (this.tempsByHctCache.size > 0) {\n return this.tempsByHctCache;\n }\n const allHcts = this.hctsByHue.concat([this.input]);\n const temperaturesByHct = new Map<Hct, number>();\n for (const e of allHcts) {\n temperaturesByHct.set(e, TemperatureCache.rawTemperature(e));\n }\n this.tempsByHctCache = temperaturesByHct;\n return temperaturesByHct;\n }\n\n /**\n * HCTs for all hues, with the same chroma/tone as the input.\n * Sorted ascending, hue 0 to 360.\n */\n get hctsByHue(): Hct[] {\n if (this.hctsByHueCache.length > 0) {\n return this.hctsByHueCache;\n }\n const hcts: Hct[] = [];\n for (let hue = 0.0; hue <= 360.0; hue += 1.0) {\n const colorAtHue = Hct.from(hue, this.input.chroma, this.input.tone);\n hcts.push(colorAtHue);\n }\n this.hctsByHueCache = hcts;\n return this.hctsByHueCache;\n }\n\n /** Determines if an angle is between two other angles, rotating clockwise. */\n static isBetween(angle: number, a: number, b: number): boolean {\n if (a < b) {\n return a <= angle && angle <= b;\n }\n return a <= angle || angle <= b;\n }\n\n /**\n * Value representing cool-warm factor of a color.\n * Values below 0 are considered cool, above, warm.\n *\n * Color science has researched emotion and harmony, which art uses to select\n * colors. Warm-cool is the foundation of analogous and complementary colors.\n * See:\n * - Li-Chen Ou's Chapter 19 in Handbook of Color Psychology (2015).\n * - Josef Albers' Interaction of Color chapters 19 and 21.\n *\n * Implementation of Ou, Woodcock and Wright's algorithm, which uses\n * L*a*b* / LCH color space.\n * Return value has these properties:\n * - Values below 0 are cool, above 0 are warm.\n * - Lower bound: -0.52 - (chroma ^ 1.07 / 20). L*a*b* chroma is infinite.\n * Assuming max of 130 chroma, -9.66.\n * - Upper bound: -0.52 + (chroma ^ 1.07 / 20). L*a*b* chroma is infinite.\n * Assuming max of 130 chroma, 8.61.\n */\n static rawTemperature(color: Hct): number {\n const lab = colorUtils.labFromArgb(color.toInt());\n const hue = mathUtils.sanitizeDegreesDouble(\n Math.atan2(lab[2], lab[1]) * 180.0 / Math.PI);\n const chroma = Math.sqrt((lab[1] * lab[1]) + (lab[2] * lab[2]));\n const temperature = -0.5 +\n 0.02 * Math.pow(chroma, 1.07) *\n Math.cos(\n mathUtils.sanitizeDegreesDouble(hue - 50.0) * Math.PI / 180.0,\n );\n return temperature;\n }\n}\n","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as math from '../utils/math_utils.js';\n\n/**\n * A class containing a value that changes with the contrast level.\n *\n * Usually represents the contrast requirements for a dynamic color on its\n * background. The four values correspond to values for contrast levels -1.0,\n * 0.0, 0.5, and 1.0, respectively.\n */\nexport class ContrastCurve {\n /**\n * Creates a `ContrastCurve` object.\n *\n * @param low Value for contrast level -1.0\n * @param normal Value for contrast level 0.0\n * @param medium Value for contrast level 0.5\n * @param high Value for contrast level 1.0\n */\n constructor(\n readonly low: number,\n readonly normal: number,\n readonly medium: number,\n readonly high: number,\n ) {}\n\n /**\n * Returns the value at a given contrast level.\n *\n * @param contrastLevel The contrast level. 0.0 is the default (normal); -1.0\n * is the lowest; 1.0 is the highest.\n * @return The value. For contrast ratios, a number between 1.0 and 21.0.\n */\n get(contrastLevel: number): number {\n if (contrastLevel <= -1.0) {\n return this.low;\n } else if (contrastLevel < 0.0) {\n return math.lerp(this.low, this.normal, (contrastLevel - (-1)) / 1);\n } else if (contrastLevel < 0.5) {\n return math.lerp(this.normal, this.medium, (contrastLevel - 0) / 0.5);\n } else if (contrastLevel < 1.0) {\n return math.lerp(this.medium, this.high, (contrastLevel - 0.5) / 0.5);\n } else {\n return this.high;\n }\n }\n}\n","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DynamicColor} from './dynamic_color.js';\n\n/**\n * Describes the different in tone between colors.\n *\n * nearer and farther are deprecated. Use DeltaConstraint instead.\n */\nexport type TonePolarity =\n 'darker'|'lighter'|'nearer'|'farther'|'relative_darker'|'relative_lighter';\n\n/**\n * Describes how to fulfill a tone delta pair constraint.\n */\nexport type DeltaConstraint = 'exact'|'nearer'|'farther';\n\n/**\n * Documents a constraint between two DynamicColors, in which their tones must\n * have a certain distance from each other.\n *\n * Prefer a DynamicColor with a background, this is for special cases when\n * designers want tonal distance, literally contrast, between two colors that\n * don't have a background / foreground relationship or a contrast guarantee.\n */\nexport class ToneDeltaPair {\n /**\n * Documents a constraint in tone distance between two DynamicColors.\n *\n * The polarity is an adjective that describes \"A\", compared to \"B\".\n *\n * For instance, ToneDeltaPair(A, B, 15, 'darker', 'exact') states that\n * A's tone should be exactly 15 darker than B's.\n *\n * 'relative_darker' and 'relative_lighter' describes the tone adjustment\n * relative to the surface color trend (white in light mode; black in dark\n * mode). For instance, ToneDeltaPair(A, B, 10, 'relative_lighter',\n * 'farther') states that A should be at least 10 lighter than B in light\n * mode, and at least 10 darker than B in dark mode.\n *\n * @param roleA The first role in a pair.\n * @param roleB The second role in a pair.\n * @param delta Required difference between tones. Absolute value, negative\n * values have undefined behavior.\n * @param polarity The relative relation between tones of roleA and roleB,\n * as described above.\n * @param constraint How to fulfill the tone delta pair constraint.\n * @param stayTogether Whether these two roles should stay on the same side\n * of the \"awkward zone\" (T50-59). This is necessary for certain cases where\n * one role has two backgrounds.\n */\n constructor(\n readonly roleA: DynamicColor,\n readonly roleB: DynamicColor,\n readonly delta: number,\n readonly polarity: TonePolarity,\n readonly stayTogether: boolean,\n readonly constraint?: DeltaConstraint,\n ) {\n this.constraint = constraint ?? 'exact';\n }\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Set of themes supported by Dynamic Color.\n * Instantiate the corresponding subclass, ex. SchemeTonalSpot, to create\n * colors corresponding to the theme.\n */\nexport enum Variant {\n MONOCHROME,\n NEUTRAL,\n TONAL_SPOT,\n VIBRANT,\n EXPRESSIVE,\n FIDELITY,\n CONTENT,\n RAINBOW,\n FRUIT_SALAD\n}\n","/**\n * @license\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DislikeAnalyzer} from '../dislike/dislike_analyzer.js';\nimport {Hct} from '../hct/hct.js';\n\nimport {ColorSpecDelegate} from './color_spec.js';\nimport {ContrastCurve} from './contrast_curve.js';\nimport {DynamicColor} from './dynamic_color.js';\nimport type {DynamicScheme} from './dynamic_scheme';\nimport {ToneDeltaPair} from './tone_delta_pair.js';\nimport {Variant} from './variant.js';\n\n/**\n * Returns true if the scheme is Fidelity or Content.\n */\nfunction isFidelity(scheme: DynamicScheme): boolean {\n return scheme.variant === Variant.FIDELITY ||\n scheme.variant === Variant.CONTENT;\n}\n\n/**\n * Returns true if the scheme is Monochrome.\n */\nfunction isMonochrome(scheme: DynamicScheme): boolean {\n return scheme.variant === Variant.MONOCHROME;\n}\n\n/**\n * Returns the desired chroma for a given tone at a specific hue.\n *\n * @param hue The given hue.\n * @param chroma The target chroma.\n * @param tone The tone to start with.\n * @param byDecreasingTone Whether to search for lower tones.\n */\nfunction findDesiredChromaByTone(\n hue: number, chroma: number, tone: number,\n byDecreasingTone: boolean): number {\n let answer = tone;\n\n let closestToChroma = Hct.from(hue, chroma, tone);\n if (closestToChroma.chroma < chroma) {\n let chromaPeak = closestToChroma.chroma;\n while (closestToChroma.chroma < chroma) {\n answer += byDecreasingTone ? -1.0 : 1.0;\n const potentialSolution = Hct.from(hue, chroma, answer);\n if (chromaPeak > potentialSolution.chroma) {\n break;\n }\n if (Math.abs(potentialSolution.chroma - chroma) < 0.4) {\n break;\n }\n\n const potentialDelta = Math.abs(potentialSolution.chroma - chroma);\n const currentDelta = Math.abs(closestToChroma.chroma - chroma);\n if (potentialDelta < currentDelta) {\n closestToChroma = potentialSolution;\n }\n chromaPeak = Math.max(chromaPeak, potentialSolution.chroma);\n }\n }\n\n return answer;\n}\n\n/**\n * A delegate for the dynamic color spec of a DynamicScheme in the 2021 spec.\n */\nexport class ColorSpecDelegateImpl2021 implements ColorSpecDelegate {\n ////////////////////////////////////////////////////////////////\n // Main Palettes //\n ////////////////////////////////////////////////////////////////\n\n primaryPaletteKeyColor(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'primary_palette_key_color',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.primaryPalette.keyColor.tone,\n });\n }\n\n secondaryPaletteKeyColor(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'secondary_palette_key_color',\n palette: (s) => s.secondaryPalette,\n tone: (s) => s.secondaryPalette.keyColor.tone,\n });\n }\n\n tertiaryPaletteKeyColor(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'tertiary_palette_key_color',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => s.tertiaryPalette.keyColor.tone,\n });\n }\n\n neutralPaletteKeyColor(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'neutral_palette_key_color',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.neutralPalette.keyColor.tone,\n });\n }\n\n neutralVariantPaletteKeyColor(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'neutral_variant_palette_key_color',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.neutralVariantPalette.keyColor.tone,\n });\n }\n\n errorPaletteKeyColor(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'error_palette_key_color',\n palette: (s) => s.errorPalette,\n tone: (s) => s.errorPalette.keyColor.tone,\n });\n }\n\n ////////////////////////////////////////////////////////////////\n // Surfaces [S] //\n ////////////////////////////////////////////////////////////////\n\n background(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'background',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 6 : 98,\n isBackground: true,\n });\n }\n\n onBackground(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_background',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 90 : 10,\n background: (s) => this.background(),\n contrastCurve: (s) => new ContrastCurve(3, 3, 4.5, 7),\n });\n }\n\n surface(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 6 : 98,\n isBackground: true,\n });\n }\n\n surfaceDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_dim',\n palette: (s) => s.neutralPalette,\n tone: (s) =>\n s.isDark ? 6 : new ContrastCurve(87, 87, 80, 75).get(s.contrastLevel),\n isBackground: true,\n });\n }\n\n surfaceBright(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_bright',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ?\n new ContrastCurve(24, 24, 29, 34).get(s.contrastLevel) :\n 98,\n isBackground: true,\n });\n }\n\n surfaceContainerLowest(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_container_lowest',\n palette: (s) => s.neutralPalette,\n tone: (s) =>\n s.isDark ? new ContrastCurve(4, 4, 2, 0).get(s.contrastLevel) : 100,\n isBackground: true,\n });\n }\n\n surfaceContainerLow(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_container_low',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ?\n new ContrastCurve(10, 10, 11, 12).get(s.contrastLevel) :\n new ContrastCurve(96, 96, 96, 95).get(s.contrastLevel),\n isBackground: true,\n });\n }\n\n surfaceContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_container',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ?\n new ContrastCurve(12, 12, 16, 20).get(s.contrastLevel) :\n new ContrastCurve(94, 94, 92, 90).get(s.contrastLevel),\n isBackground: true,\n });\n }\n\n surfaceContainerHigh(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_container_high',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ?\n new ContrastCurve(17, 17, 21, 25).get(s.contrastLevel) :\n new ContrastCurve(92, 92, 88, 85).get(s.contrastLevel),\n isBackground: true,\n });\n }\n\n surfaceContainerHighest(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_container_highest',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ?\n new ContrastCurve(22, 22, 26, 30).get(s.contrastLevel) :\n new ContrastCurve(90, 90, 84, 80).get(s.contrastLevel),\n isBackground: true,\n });\n }\n\n onSurface(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 90 : 10,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n surfaceVariant(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_variant',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 30 : 90,\n isBackground: true,\n });\n }\n\n onSurfaceVariant(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_surface_variant',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 80 : 30,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n inverseSurface(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'inverse_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 90 : 20,\n isBackground: true,\n });\n }\n\n inverseOnSurface(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'inverse_on_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 20 : 95,\n background: (s) => this.inverseSurface(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n outline(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'outline',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 60 : 50,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1.5, 3, 4.5, 7),\n });\n }\n\n outlineVariant(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'outline_variant',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 30 : 80,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n });\n }\n\n shadow(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'shadow',\n palette: (s) => s.neutralPalette,\n tone: (s) => 0,\n });\n }\n\n scrim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'scrim',\n palette: (s) => s.neutralPalette,\n tone: (s) => 0,\n });\n }\n\n surfaceTint(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_tint',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.isDark ? 80 : 40,\n isBackground: true,\n });\n }\n\n ////////////////////////////////////////////////////////////////\n // Primary [P]. //\n ////////////////////////////////////////////////////////////////\n\n primary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 100 : 0;\n }\n return s.isDark ? 80 : 40;\n },\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.primaryContainer(), this.primary(), 10, 'nearer', false),\n });\n }\n\n primaryDim(): DynamicColor|undefined {\n return undefined;\n }\n\n onPrimary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 10 : 90;\n }\n return s.isDark ? 20 : 100;\n },\n background: (s) => this.primary(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n primaryContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'primary_container',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isFidelity(s)) {\n return s.sourceColorHct.tone;\n }\n if (isMonochrome(s)) {\n return s.isDark ? 85 : 25;\n }\n return s.isDark ? 30 : 90;\n },\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.primaryContainer(), this.primary(), 10, 'nearer', false),\n });\n }\n\n onPrimaryContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_primary_container',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isFidelity(s)) {\n return DynamicColor.foregroundTone(\n this.primaryContainer().tone(s), 4.5);\n }\n if (isMonochrome(s)) {\n return s.isDark ? 0 : 100;\n }\n return s.isDark ? 90 : 30;\n },\n background: (s) => this.primaryContainer(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n inversePrimary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'inverse_primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.isDark ? 40 : 80,\n background: (s) => this.inverseSurface(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 7),\n });\n }\n\n /////////////////////////////////////////////////////////////////\n // Secondary [Q]. //\n /////////////////////////////////////////////////////////////////\n\n secondary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'secondary',\n palette: (s) => s.secondaryPalette,\n tone: (s) => s.isDark ? 80 : 40,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.secondaryContainer(), this.secondary(), 10, 'nearer', false),\n });\n }\n\n secondaryDim(): DynamicColor|undefined {\n return undefined;\n }\n\n onSecondary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_secondary',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 10 : 100;\n } else {\n return s.isDark ? 20 : 100;\n }\n },\n background: (s) => this.secondary(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n secondaryContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'secondary_container',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n const initialTone = s.isDark ? 30 : 90;\n if (isMonochrome(s)) {\n return s.isDark ? 30 : 85;\n }\n if (!isFidelity(s)) {\n return initialTone;\n }\n return findDesiredChromaByTone(\n s.secondaryPalette.hue, s.secondaryPalette.chroma, initialTone,\n s.isDark ? false : true);\n },\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.secondaryContainer(), this.secondary(), 10, 'nearer', false),\n });\n }\n\n onSecondaryContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_secondary_container',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 90 : 10;\n }\n if (!isFidelity(s)) {\n return s.isDark ? 90 : 30;\n }\n return DynamicColor.foregroundTone(\n this.secondaryContainer().tone(s), 4.5);\n },\n background: (s) => this.secondaryContainer(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n /////////////////////////////////////////////////////////////////\n // Tertiary [T]. //\n /////////////////////////////////////////////////////////////////\n\n tertiary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'tertiary',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 90 : 25;\n }\n return s.isDark ? 80 : 40;\n },\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.tertiaryContainer(), this.tertiary(), 10, 'nearer', false),\n });\n }\n\n tertiaryDim(): DynamicColor|undefined {\n return undefined;\n }\n\n onTertiary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_tertiary',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 10 : 90;\n }\n return s.isDark ? 20 : 100;\n },\n background: (s) => this.tertiary(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n tertiaryContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'tertiary_container',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 60 : 49;\n }\n if (!isFidelity(s)) {\n return s.isDark ? 30 : 90;\n }\n const proposedHct = s.tertiaryPalette.getHct(s.sourceColorHct.tone);\n return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;\n },\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.tertiaryContainer(), this.tertiary(), 10, 'nearer', false),\n });\n }\n\n onTertiaryContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_tertiary_container',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 0 : 100;\n }\n if (!isFidelity(s)) {\n return s.isDark ? 90 : 30;\n }\n return DynamicColor.foregroundTone(\n this.tertiaryContainer().tone(s), 4.5);\n },\n background: (s) => this.tertiaryContainer(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n //////////////////////////////////////////////////////////////////\n // Error [E]. //\n //////////////////////////////////////////////////////////////////\n\n error(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'error',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 80 : 40,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.errorContainer(), this.error(), 10, 'nearer', false),\n });\n }\n\n errorDim(): DynamicColor|undefined {\n return undefined;\n }\n\n onError(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_error',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 20 : 100,\n background: (s) => this.error(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n errorContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'error_container',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 30 : 90,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.errorContainer(), this.error(), 10, 'nearer', false),\n });\n }\n\n onErrorContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_error_container',\n palette: (s) => s.errorPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 90 : 10;\n }\n return s.isDark ? 90 : 30;\n },\n background: (s) => this.errorContainer(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n //////////////////////////////////////////////////////////////////\n // Primary Fixed [PF] //\n //////////////////////////////////////////////////////////////////\n\n primaryFixed(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'primary_fixed',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 40.0 : 90.0,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.primaryFixed(), this.primaryFixedDim(), 10, 'lighter', true),\n });\n }\n\n primaryFixedDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'primary_fixed_dim',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 30.0 : 80.0,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.primaryFixed(), this.primaryFixedDim(), 10, 'lighter', true),\n });\n }\n\n onPrimaryFixed(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_primary_fixed',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 100.0 : 10.0,\n background: (s) => this.primaryFixedDim(),\n secondBackground: (s) => this.primaryFixed(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n onPrimaryFixedVariant(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_primary_fixed_variant',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 90.0 : 30.0,\n background: (s) => this.primaryFixedDim(),\n secondBackground: (s) => this.primaryFixed(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n ///////////////////////////////////////////////////////////////////\n // Secondary Fixed [QF] //\n ///////////////////////////////////////////////////////////////////\n\n secondaryFixed(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'secondary_fixed',\n palette: (s) => s.secondaryPalette,\n tone: (s) => isMonochrome(s) ? 80.0 : 90.0,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.secondaryFixed(), this.secondaryFixedDim(), 10, 'lighter', true),\n });\n }\n\n secondaryFixedDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'secondary_fixed_dim',\n palette: (s) => s.secondaryPalette,\n tone: (s) => isMonochrome(s) ? 70.0 : 80.0,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.secondaryFixed(), this.secondaryFixedDim(), 10, 'lighter', true),\n });\n }\n\n onSecondaryFixed(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_secondary_fixed',\n palette: (s) => s.secondaryPalette,\n tone: (s) => 10.0,\n background: (s) => this.secondaryFixedDim(),\n secondBackground: (s) => this.secondaryFixed(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n onSecondaryFixedVariant(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_secondary_fixed_variant',\n palette: (s) => s.secondaryPalette,\n tone: (s) => isMonochrome(s) ? 25.0 : 30.0,\n background: (s) => this.secondaryFixedDim(),\n secondBackground: (s) => this.secondaryFixed(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n /////////////////////////////////////////////////////////////////\n // Tertiary Fixed [TF] //\n /////////////////////////////////////////////////////////////////\n\n tertiaryFixed(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'tertiary_fixed',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 40.0 : 90.0,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.tertiaryFixed(), this.tertiaryFixedDim(), 10, 'lighter', true),\n });\n }\n\n tertiaryFixedDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'tertiary_fixed_dim',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 30.0 : 80.0,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.tertiaryFixed(), this.tertiaryFixedDim(), 10, 'lighter', true),\n });\n }\n\n onTertiaryFixed(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_tertiary_fixed',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 100.0 : 10.0,\n background: (s) => this.tertiaryFixedDim(),\n secondBackground: (s) => this.tertiaryFixed(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n onTertiaryFixedVariant(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_tertiary_fixed_variant',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 90.0 : 30.0,\n background: (s) => this.tertiaryFixedDim(),\n secondBackground: (s) => this.tertiaryFixed(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n ////////////////////////////////////////////////////////////////\n // Other //\n ////////////////////////////////////////////////////////////////\n\n highestSurface(s: DynamicScheme): DynamicColor {\n return s.isDark ? this.surfaceBright() : this.surfaceDim();\n }\n}","/**\n * @license\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Hct} from '../hct/hct.js';\nimport {TonalPalette} from '../palettes/tonal_palette.js';\nimport * as math from '../utils/math_utils.js';\n\nimport {ColorSpecDelegateImpl2021} from './color_spec_2021.js';\nimport {ContrastCurve} from './contrast_curve.js';\nimport {DynamicColor, extendSpecVersion} from './dynamic_color';\nimport type {DynamicScheme} from './dynamic_scheme';\nimport {ToneDeltaPair} from './tone_delta_pair.js';\nimport {Variant} from './variant.js';\n\n/**\n * Returns the maximum tone for a given chroma in the palette.\n *\n * @param palette The tonal palette to use.\n * @param lowerBound The lower bound of the tone.\n * @param upperBound The upper bound of the tone.\n */\nfunction tMaxC(\n palette: TonalPalette, lowerBound: number = 0, upperBound: number = 100,\n chromaMultiplier: number = 1): number {\n let answer = findBestToneForChroma(\n palette.hue, palette.chroma * chromaMultiplier, 100, true);\n return math.clampDouble(lowerBound, upperBound, answer);\n}\n\n/**\n * Returns the minimum tone for a given chroma in the palette.\n *\n * @param palette The tonal palette to use.\n * @param lowerBound The lower bound of the tone.\n * @param upperBound The upper bound of the tone.\n */\nfunction tMinC(\n palette: TonalPalette, lowerBound: number = 0,\n upperBound: number = 100): number {\n let answer = findBestToneForChroma(palette.hue, palette.chroma, 0, false);\n return math.clampDouble(lowerBound, upperBound, answer);\n}\n\n/**\n * Searches for the best tone with a given chroma from a given tone at a\n * specific hue.\n *\n * @param hue The given hue.\n * @param chroma The target chroma.\n * @param tone The tone to start with.\n * @param byDecreasingTone Whether to search for lower tones.\n */\nfunction findBestToneForChroma(\n hue: number, chroma: number, tone: number,\n byDecreasingTone: boolean): number {\n let answer = tone;\n let bestCandidate = Hct.from(hue, chroma, answer);\n while (bestCandidate.chroma < chroma) {\n if (tone < 0 || tone > 100) {\n break;\n }\n tone += byDecreasingTone ? -1.0 : 1.0;\n const newCandidate = Hct.from(hue, chroma, tone);\n if (bestCandidate.chroma < newCandidate.chroma) {\n bestCandidate = newCandidate;\n answer = tone;\n }\n }\n\n return answer;\n}\n\n/**\n * Returns the contrast curve for a given default contrast.\n *\n * @param defaultContrast The default contrast to use.\n */\nfunction getCurve(defaultContrast: number): ContrastCurve {\n if (defaultContrast === 1.5) {\n return new ContrastCurve(1.5, 1.5, 3, 5.5);\n } else if (defaultContrast === 3) {\n return new ContrastCurve(3, 3, 4.5, 7);\n } else if (defaultContrast === 4.5) {\n return new ContrastCurve(4.5, 4.5, 7, 11);\n } else if (defaultContrast === 6) {\n return new ContrastCurve(6, 6, 7, 11);\n } else if (defaultContrast === 7) {\n return new ContrastCurve(7, 7, 11, 21);\n } else if (defaultContrast === 9) {\n return new ContrastCurve(9, 9, 11, 21);\n } else if (defaultContrast === 11) {\n return new ContrastCurve(11, 11, 21, 21);\n } else if (defaultContrast === 21) {\n return new ContrastCurve(21, 21, 21, 21);\n } else {\n // Shouldn't happen.\n return new ContrastCurve(defaultContrast, defaultContrast, 7, 21);\n }\n}\n\n/**\n * A delegate for the dynamic color spec of a DynamicScheme in the 2025 spec.\n */\nexport class ColorSpecDelegateImpl2025 extends ColorSpecDelegateImpl2021 {\n ////////////////////////////////////////////////////////////////\n // Surfaces [S] //\n ////////////////////////////////////////////////////////////////\n\n override surface(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n super.surface().tone(s);\n if (s.platform === 'phone') {\n if (s.isDark) {\n return 4;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 99;\n } else if (s.variant === Variant.VIBRANT) {\n return 97;\n } else {\n return 98;\n }\n }\n } else {\n return 0;\n }\n },\n isBackground: true,\n });\n return extendSpecVersion(super.surface(), '2025', color2025);\n }\n\n override surfaceDim(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_dim',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.isDark) {\n return 4;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 90;\n } else if (s.variant === Variant.VIBRANT) {\n return 85;\n } else {\n return 87;\n }\n }\n },\n isBackground: true,\n chromaMultiplier: (s) => {\n if (!s.isDark) {\n if (s.variant === Variant.NEUTRAL) {\n return 2.5;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? 2.7 : 1.75;\n } else if (s.variant === Variant.VIBRANT) {\n return 1.36;\n }\n }\n return 1;\n },\n });\n return extendSpecVersion(super.surfaceDim(), '2025', color2025);\n }\n\n override surfaceBright(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_bright',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.isDark) {\n return 18;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 99;\n } else if (s.variant === Variant.VIBRANT) {\n return 97;\n } else {\n return 98;\n }\n }\n },\n isBackground: true,\n chromaMultiplier: (s) => {\n if (s.isDark) {\n if (s.variant === Variant.NEUTRAL) {\n return 2.5;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? 2.7 : 1.75;\n } else if (s.variant === Variant.VIBRANT) {\n return 1.36;\n }\n }\n return 1;\n },\n });\n return extendSpecVersion(super.surfaceBright(), '2025', color2025);\n }\n\n override surfaceContainerLowest(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_container_lowest',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 0 : 100,\n isBackground: true,\n });\n return extendSpecVersion(super.surfaceContainerLowest(), '2025', color2025);\n }\n\n override surfaceContainerLow(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_container_low',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.platform === 'phone') {\n if (s.isDark) {\n return 6;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 98;\n } else if (s.variant === Variant.VIBRANT) {\n return 95;\n } else {\n return 96;\n }\n }\n } else {\n return 15;\n }\n },\n isBackground: true,\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 1.3;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.25;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? 1.3 : 1.15;\n } else if (s.variant === Variant.VIBRANT) {\n return 1.08;\n }\n }\n return 1;\n },\n });\n return extendSpecVersion(super.surfaceContainerLow(), '2025', color2025);\n }\n\n override surfaceContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_container',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.platform === 'phone') {\n if (s.isDark) {\n return 9;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 96;\n } else if (s.variant === Variant.VIBRANT) {\n return 92;\n } else {\n return 94;\n }\n }\n } else {\n return 20;\n }\n },\n isBackground: true,\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 1.6;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.4;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? 1.6 : 1.3;\n } else if (s.variant === Variant.VIBRANT) {\n return 1.15;\n }\n }\n return 1;\n },\n });\n return extendSpecVersion(super.surfaceContainer(), '2025', color2025);\n }\n\n override surfaceContainerHigh(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_container_high',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.platform === 'phone') {\n if (s.isDark) {\n return 12;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 94;\n } else if (s.variant === Variant.VIBRANT) {\n return 90;\n } else {\n return 92;\n }\n }\n } else {\n return 25;\n }\n },\n isBackground: true,\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 1.9;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.5;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? 1.95 : 1.45;\n } else if (s.variant === Variant.VIBRANT) {\n return 1.22;\n }\n }\n return 1;\n },\n });\n return extendSpecVersion(super.surfaceContainerHigh(), '2025', color2025);\n }\n\n override surfaceContainerHighest(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_container_highest',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.isDark) {\n return 15;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 92;\n } else if (s.variant === Variant.VIBRANT) {\n return 88;\n } else {\n return 90;\n }\n }\n },\n isBackground: true,\n chromaMultiplier: (s) => {\n if (s.variant === Variant.NEUTRAL) {\n return 2.2;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? 2.3 : 1.6;\n } else if (s.variant === Variant.VIBRANT) {\n return 1.29;\n } else { // default\n return 1;\n }\n },\n });\n return extendSpecVersion(\n super.surfaceContainerHighest(), '2025', color2025);\n }\n\n override onSurface(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.variant === Variant.VIBRANT) {\n return tMaxC(s.neutralPalette, 0, 100, 1.1);\n } else {\n // For all other variants, the initial tone should be the default\n // tone, which is the same as the background color.\n return DynamicColor.getInitialToneFromBackground(\n (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh())(s);\n }\n },\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 2.2;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? (s.isDark ? 3.0 : 2.3) :\n 1.6;\n }\n }\n return 1;\n },\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.isDark && s.platform === 'phone' ? getCurve(11) : getCurve(9),\n });\n return extendSpecVersion(super.onSurface(), '2025', color2025);\n }\n\n override onSurfaceVariant(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_surface_variant',\n palette: (s) => s.neutralPalette,\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 2.2;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? (s.isDark ? 3.0 : 2.3) :\n 1.6;\n }\n }\n return 1;\n },\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) => s.platform === 'phone' ?\n (s.isDark ? getCurve(6) : getCurve(4.5)) :\n getCurve(7),\n });\n return extendSpecVersion(super.onSurfaceVariant(), '2025', color2025);\n }\n\n override outline(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'outline',\n palette: (s) => s.neutralPalette,\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 2.2;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? (s.isDark ? 3.0 : 2.3) :\n 1.6;\n }\n }\n return 1;\n },\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(3) : getCurve(4.5),\n });\n return extendSpecVersion(super.outline(), '2025', color2025);\n }\n\n override outlineVariant(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'outline_variant',\n palette: (s) => s.neutralPalette,\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 2.2;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? (s.isDark ? 3.0 : 2.3) :\n 1.6;\n }\n }\n return 1;\n },\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(1.5) : getCurve(3),\n });\n return extendSpecVersion(super.outlineVariant(), '2025', color2025);\n }\n\n override inverseSurface(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'inverse_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 98 : 4,\n isBackground: true,\n });\n return extendSpecVersion(super.inverseSurface(), '2025', color2025);\n }\n\n override inverseOnSurface(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'inverse_on_surface',\n palette: (s) => s.neutralPalette,\n background: (s) => this.inverseSurface(),\n contrastCurve: (s) => getCurve(7),\n });\n return extendSpecVersion(super.inverseOnSurface(), '2025', color2025);\n }\n\n ////////////////////////////////////////////////////////////////\n // Primaries [P] //\n ////////////////////////////////////////////////////////////////\n\n override primary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (s.variant === Variant.NEUTRAL) {\n if (s.platform === 'phone') {\n return s.isDark ? 80 : 40;\n } else {\n return 90;\n }\n } else if (s.variant === Variant.TONAL_SPOT) {\n if (s.platform === 'phone') {\n if (s.isDark) {\n return 80;\n } else {\n return tMaxC(s.primaryPalette);\n }\n } else {\n return tMaxC(s.primaryPalette, 0, 90);\n }\n } else if (s.variant === Variant.EXPRESSIVE) {\n if (s.platform === 'phone') {\n return tMaxC(\n s.primaryPalette, 0,\n Hct.isYellow(s.primaryPalette.hue) ? 25 :\n Hct.isCyan(s.primaryPalette.hue) ? 88 :\n 98);\n } else { // WATCH\n return tMaxC(s.primaryPalette);\n }\n } else { // VIBRANT\n if (s.platform === 'phone') {\n return tMaxC(\n s.primaryPalette, 0,\n Hct.isCyan(s.primaryPalette.hue) ? 88 : 98);\n } else { // WATCH\n return tMaxC(s.primaryPalette);\n }\n }\n },\n isBackground: true,\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(4.5) : getCurve(7),\n toneDeltaPair: (s) => s.platform === 'phone' ?\n new ToneDeltaPair(\n this.primaryContainer(), this.primary(), 5, 'relative_lighter',\n true, 'farther') :\n undefined,\n });\n return extendSpecVersion(super.primary(), '2025', color2025);\n }\n\n override primaryDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'primary_dim',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (s.variant === Variant.NEUTRAL) {\n return 85;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return tMaxC(s.primaryPalette, 0, 90);\n } else {\n return tMaxC(s.primaryPalette);\n }\n },\n isBackground: true,\n background: (s) => this.surfaceContainerHigh(),\n contrastCurve: (s) => getCurve(4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.primaryDim(), this.primary(), 5, 'darker', true, 'farther'),\n });\n }\n\n override onPrimary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_primary',\n palette: (s) => s.primaryPalette,\n background: (s) =>\n s.platform === 'phone' ? this.primary() : this.primaryDim(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onPrimary(), '2025', color2025);\n }\n\n override primaryContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'primary_container',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (s.platform === 'watch') {\n return 30;\n } else if (s.variant === Variant.NEUTRAL) {\n return s.isDark ? 30 : 90;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return s.isDark ? tMinC(s.primaryPalette, 35, 93) :\n tMaxC(s.primaryPalette, 0, 90);\n } else if (s.variant === Variant.EXPRESSIVE) {\n return s.isDark ? tMaxC(s.primaryPalette, 30, 93) :\n tMaxC(\n s.primaryPalette, 78,\n Hct.isCyan(s.primaryPalette.hue) ? 88 : 90);\n } else { // VIBRANT\n return s.isDark ? tMinC(s.primaryPalette, 66, 93) :\n tMaxC(\n s.primaryPalette, 66,\n Hct.isCyan(s.primaryPalette.hue) ? 88 : 93);\n }\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n toneDeltaPair: (s) => s.platform === 'phone' ?\n undefined :\n new ToneDeltaPair(\n this.primaryContainer(), this.primaryDim(), 10, 'darker', true,\n 'farther'),\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.primaryContainer(), '2025', color2025);\n }\n\n override onPrimaryContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_primary_container',\n palette: (s) => s.primaryPalette,\n background: (s) => this.primaryContainer(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onPrimaryContainer(), '2025', color2025);\n }\n\n override primaryFixed(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'primary_fixed',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n let tempS = Object.assign({}, s, {isDark: false, contrastLevel: 0});\n return this.primaryContainer().getTone(tempS);\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.primaryFixed(), '2025', color2025);\n }\n\n override primaryFixedDim(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'primary_fixed_dim',\n palette: (s) => s.primaryPalette,\n tone: (s) => this.primaryFixed().getTone(s),\n isBackground: true,\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.primaryFixedDim(), this.primaryFixed(), 5, 'darker', true,\n 'exact'),\n });\n return extendSpecVersion(super.primaryFixedDim(), '2025', color2025);\n }\n\n override onPrimaryFixed(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_primary_fixed',\n palette: (s) => s.primaryPalette,\n background: (s) => this.primaryFixedDim(),\n contrastCurve: (s) => getCurve(7),\n });\n return extendSpecVersion(super.onPrimaryFixed(), '2025', color2025);\n }\n\n override onPrimaryFixedVariant(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_primary_fixed_variant',\n palette: (s) => s.primaryPalette,\n background: (s) => this.primaryFixedDim(),\n contrastCurve: (s) => getCurve(4.5),\n });\n return extendSpecVersion(super.onPrimaryFixedVariant(), '2025', color2025);\n }\n\n override inversePrimary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'inverse_primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => tMaxC(s.primaryPalette),\n background: (s) => this.inverseSurface(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.inversePrimary(), '2025', color2025);\n }\n\n ////////////////////////////////////////////////////////////////\n // Secondaries [Q] //\n ////////////////////////////////////////////////////////////////\n\n override secondary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'secondary',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (s.platform === 'watch') {\n return s.variant === Variant.NEUTRAL ?\n 90 :\n tMaxC(s.secondaryPalette, 0, 90);\n } else if (s.variant === Variant.NEUTRAL) {\n return s.isDark ? tMinC(s.secondaryPalette, 0, 98) :\n tMaxC(s.secondaryPalette);\n } else if (s.variant === Variant.VIBRANT) {\n return tMaxC(s.secondaryPalette, 0, s.isDark ? 90 : 98);\n } else { // EXPRESSIVE and TONAL_SPOT\n return s.isDark ? 80 : tMaxC(s.secondaryPalette);\n }\n },\n isBackground: true,\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(4.5) : getCurve(7),\n toneDeltaPair: (s) => s.platform === 'phone' ?\n new ToneDeltaPair(\n this.secondaryContainer(), this.secondary(), 5,\n 'relative_lighter', true, 'farther') :\n undefined,\n });\n return extendSpecVersion(super.secondary(), '2025', color2025);\n }\n\n override secondaryDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'secondary_dim',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (s.variant === Variant.NEUTRAL) {\n return 85;\n } else {\n return tMaxC(s.secondaryPalette, 0, 90);\n }\n },\n isBackground: true,\n background: (s) => this.surfaceContainerHigh(),\n contrastCurve: (s) => getCurve(4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.secondaryDim(), this.secondary(), 5, 'darker', true, 'farther'),\n });\n }\n\n override onSecondary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_secondary',\n palette: (s) => s.secondaryPalette,\n background: (s) =>\n s.platform === 'phone' ? this.secondary() : this.secondaryDim(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onSecondary(), '2025', color2025);\n }\n\n override secondaryContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'secondary_container',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (s.platform === 'watch') {\n return 30;\n } else if (s.variant === Variant.VIBRANT) {\n return s.isDark ? tMinC(s.secondaryPalette, 30, 40) :\n tMaxC(s.secondaryPalette, 84, 90);\n } else if (s.variant === Variant.EXPRESSIVE) {\n return s.isDark ? 15 : tMaxC(s.secondaryPalette, 90, 95);\n } else {\n return s.isDark ? 25 : 90;\n }\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n toneDeltaPair: (s) => s.platform === 'watch' ?\n new ToneDeltaPair(\n this.secondaryContainer(), this.secondaryDim(), 10, 'darker',\n true, 'farther') :\n undefined,\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.secondaryContainer(), '2025', color2025);\n }\n\n override onSecondaryContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_secondary_container',\n palette: (s) => s.secondaryPalette,\n background: (s) => this.secondaryContainer(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onSecondaryContainer(), '2025', color2025);\n }\n\n override secondaryFixed(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'secondary_fixed',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n let tempS = Object.assign({}, s, {isDark: false, contrastLevel: 0});\n return this.secondaryContainer().getTone(tempS);\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.secondaryFixed(), '2025', color2025);\n }\n\n override secondaryFixedDim(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'secondary_fixed_dim',\n palette: (s) => s.secondaryPalette,\n tone: (s) => this.secondaryFixed().getTone(s),\n isBackground: true,\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.secondaryFixedDim(), this.secondaryFixed(), 5, 'darker', true,\n 'exact'),\n });\n return extendSpecVersion(super.secondaryFixedDim(), '2025', color2025);\n }\n\n override onSecondaryFixed(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_secondary_fixed',\n palette: (s) => s.secondaryPalette,\n background: (s) => this.secondaryFixedDim(),\n contrastCurve: (s) => getCurve(7),\n });\n return extendSpecVersion(super.onSecondaryFixed(), '2025', color2025);\n }\n\n override onSecondaryFixedVariant(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_secondary_fixed_variant',\n palette: (s) => s.secondaryPalette,\n background: (s) => this.secondaryFixedDim(),\n contrastCurve: (s) => getCurve(4.5),\n });\n return extendSpecVersion(\n super.onSecondaryFixedVariant(), '2025', color2025);\n }\n\n ////////////////////////////////////////////////////////////////\n // Tertiaries [T] //\n ////////////////////////////////////////////////////////////////\n\n override tertiary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'tertiary',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (s.platform === 'watch') {\n return s.variant === Variant.TONAL_SPOT ?\n tMaxC(s.tertiaryPalette, 0, 90) :\n tMaxC(s.tertiaryPalette);\n } else if (\n s.variant === Variant.EXPRESSIVE || s.variant === Variant.VIBRANT) {\n return tMaxC(\n s.tertiaryPalette, 0,\n Hct.isCyan(s.tertiaryPalette.hue) ? 88 : (s.isDark ? 98 : 100));\n } else { // NEUTRAL and TONAL_SPOT\n return s.isDark ? tMaxC(s.tertiaryPalette, 0, 98) :\n tMaxC(s.tertiaryPalette);\n }\n },\n isBackground: true,\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(4.5) : getCurve(7),\n toneDeltaPair: (s) => s.platform === 'phone' ?\n new ToneDeltaPair(\n this.tertiaryContainer(), this.tertiary(), 5, 'relative_lighter',\n true, 'farther') :\n undefined,\n });\n return extendSpecVersion(super.tertiary(), '2025', color2025);\n }\n\n override tertiaryDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'tertiary_dim',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (s.variant === Variant.TONAL_SPOT) {\n return tMaxC(s.tertiaryPalette, 0, 90);\n } else {\n return tMaxC(s.tertiaryPalette);\n }\n },\n isBackground: true,\n background: (s) => this.surfaceContainerHigh(),\n contrastCurve: (s) => getCurve(4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.tertiaryDim(), this.tertiary(), 5, 'darker', true, 'farther'),\n });\n }\n\n override onTertiary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_tertiary',\n palette: (s) => s.tertiaryPalette,\n background: (s) =>\n s.platform === 'phone' ? this.tertiary() : this.tertiaryDim(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onTertiary(), '2025', color2025);\n }\n\n override tertiaryContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'tertiary_container',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (s.platform === 'watch') {\n return s.variant === Variant.TONAL_SPOT ?\n tMaxC(s.tertiaryPalette, 0, 90) :\n tMaxC(s.tertiaryPalette);\n } else {\n if (s.variant === Variant.NEUTRAL) {\n return s.isDark ? tMaxC(s.tertiaryPalette, 0, 93) :\n tMaxC(s.tertiaryPalette, 0, 96);\n } else if (s.variant === Variant.TONAL_SPOT) {\n return tMaxC(s.tertiaryPalette, 0, s.isDark ? 93 : 100);\n } else if (s.variant === Variant.EXPRESSIVE) {\n return tMaxC(\n s.tertiaryPalette, 75,\n Hct.isCyan(s.tertiaryPalette.hue) ? 88 : (s.isDark ? 93 : 100));\n } else { // VIBRANT\n return s.isDark ? tMaxC(s.tertiaryPalette, 0, 93) :\n tMaxC(s.tertiaryPalette, 72, 100);\n }\n }\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n toneDeltaPair: (s) => s.platform === 'watch' ?\n new ToneDeltaPair(\n this.tertiaryContainer(), this.tertiaryDim(), 10, 'darker', true,\n 'farther') :\n undefined,\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.tertiaryContainer(), '2025', color2025);\n }\n\n override onTertiaryContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_tertiary_container',\n palette: (s) => s.tertiaryPalette,\n background: (s) => this.tertiaryContainer(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onTertiaryContainer(), '2025', color2025);\n }\n\n override tertiaryFixed(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'tertiary_fixed',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n let tempS = Object.assign({}, s, {isDark: false, contrastLevel: 0});\n return this.tertiaryContainer().getTone(tempS);\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.tertiaryFixed(), '2025', color2025);\n }\n\n override tertiaryFixedDim(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'tertiary_fixed_dim',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => this.tertiaryFixed().getTone(s),\n isBackground: true,\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.tertiaryFixedDim(), this.tertiaryFixed(), 5, 'darker', true,\n 'exact'),\n });\n return extendSpecVersion(super.tertiaryFixedDim(), '2025', color2025);\n }\n\n override onTertiaryFixed(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_tertiary_fixed',\n palette: (s) => s.tertiaryPalette,\n background: (s) => this.tertiaryFixedDim(),\n contrastCurve: (s) => getCurve(7),\n });\n return extendSpecVersion(super.onTertiaryFixed(), '2025', color2025);\n }\n\n override onTertiaryFixedVariant(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_tertiary_fixed_variant',\n palette: (s) => s.tertiaryPalette,\n background: (s) => this.tertiaryFixedDim(),\n contrastCurve: (s) => getCurve(4.5),\n });\n return extendSpecVersion(super.onTertiaryFixedVariant(), '2025', color2025);\n }\n\n ////////////////////////////////////////////////////////////////\n // Errors [E] //\n ////////////////////////////////////////////////////////////////\n\n override error(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'error',\n palette: (s) => s.errorPalette,\n tone: (s) => {\n if (s.platform === 'phone') {\n return s.isDark ? tMinC(s.errorPalette, 0, 98) :\n tMaxC(s.errorPalette);\n } else {\n return tMinC(s.errorPalette);\n }\n },\n isBackground: true,\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(4.5) : getCurve(7),\n toneDeltaPair: (s) => s.platform === 'phone' ?\n new ToneDeltaPair(\n this.errorContainer(), this.error(), 5, 'relative_lighter', true,\n 'farther') :\n undefined,\n });\n return extendSpecVersion(super.error(), '2025', color2025);\n }\n\n override errorDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'error_dim',\n palette: (s) => s.errorPalette,\n tone: (s) => tMinC(s.errorPalette),\n isBackground: true,\n background: (s) => this.surfaceContainerHigh(),\n contrastCurve: (s) => getCurve(4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.errorDim(), this.error(), 5, 'darker', true, 'farther'),\n });\n }\n\n override onError(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_error',\n palette: (s) => s.errorPalette,\n background: (s) =>\n s.platform === 'phone' ? this.error() : this.errorDim(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onError(), '2025', color2025);\n }\n\n override errorContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'error_container',\n palette: (s) => s.errorPalette,\n tone: (s) => {\n if (s.platform === 'watch') {\n return 30;\n } else {\n return s.isDark ? tMinC(s.errorPalette, 30, 93) :\n tMaxC(s.errorPalette, 0, 90);\n }\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n toneDeltaPair: (s) => s.platform === 'watch' ?\n new ToneDeltaPair(\n this.errorContainer(), this.errorDim(), 10, 'darker', true,\n 'farther') :\n undefined,\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.errorContainer(), '2025', color2025);\n }\n\n override onErrorContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_error_container',\n palette: (s) => s.errorPalette,\n background: (s) => this.errorContainer(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(4.5) : getCurve(7),\n });\n return extendSpecVersion(super.onErrorContainer(), '2025', color2025);\n }\n\n /////////////////////////////////////////////////////////////////\n // Remapped Colors //\n /////////////////////////////////////////////////////////////////\n\n override surfaceVariant(): DynamicColor {\n const color2025: DynamicColor = Object.assign(\n this.surfaceContainerHighest().clone(), {name: 'surface_variant'});\n return extendSpecVersion(super.surfaceVariant(), '2025', color2025);\n }\n\n override surfaceTint(): DynamicColor {\n const color2025: DynamicColor =\n Object.assign(this.primary().clone(), {name: 'surface_tint'});\n return extendSpecVersion(super.surfaceTint(), '2025', color2025);\n }\n\n override background(): DynamicColor {\n const color2025: DynamicColor =\n Object.assign(this.surface().clone(), {name: 'background'});\n return extendSpecVersion(super.background(), '2025', color2025);\n }\n\n override onBackground(): DynamicColor {\n const color2025: DynamicColor = Object.assign(this.onSurface().clone(), {\n name: 'on_background',\n tone: (s: DynamicScheme) => {\n return s.platform === 'watch' ? 100.0 : this.onSurface().getTone(s);\n }\n });\n return extendSpecVersion(super.onBackground(), '2025', color2025);\n }\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ColorSpecDelegateImpl2025} from './color_spec_2025.js';\nimport {DynamicColor} from './dynamic_color.js';\nimport type {DynamicScheme} from './dynamic_scheme';\n\n/**\n * DynamicColors for the colors in the Material Design system.\n */\n// Material Color Utilities namespaces the various utilities it provides.\n// tslint:disable-next-line:class-as-namespace\nexport class MaterialDynamicColors {\n static contentAccentToneDelta = 15.0;\n\n private static readonly colorSpec = new ColorSpecDelegateImpl2025();\n\n highestSurface(s: DynamicScheme): DynamicColor {\n return MaterialDynamicColors.colorSpec.highestSurface(s);\n }\n\n ////////////////////////////////////////////////////////////////\n // Main Palettes //\n ////////////////////////////////////////////////////////////////\n\n primaryPaletteKeyColor(): DynamicColor {\n return MaterialDynamicColors.colorSpec.primaryPaletteKeyColor();\n }\n\n secondaryPaletteKeyColor(): DynamicColor {\n return MaterialDynamicColors.colorSpec.secondaryPaletteKeyColor();\n }\n\n tertiaryPaletteKeyColor(): DynamicColor {\n return MaterialDynamicColors.colorSpec.tertiaryPaletteKeyColor();\n }\n\n neutralPaletteKeyColor(): DynamicColor {\n return MaterialDynamicColors.colorSpec.neutralPaletteKeyColor();\n }\n\n neutralVariantPaletteKeyColor(): DynamicColor {\n return MaterialDynamicColors.colorSpec.neutralVariantPaletteKeyColor();\n }\n\n errorPaletteKeyColor(): DynamicColor {\n return MaterialDynamicColors.colorSpec.errorPaletteKeyColor();\n }\n\n ////////////////////////////////////////////////////////////////\n // Surfaces [S] //\n ////////////////////////////////////////////////////////////////\n\n background(): DynamicColor {\n return MaterialDynamicColors.colorSpec.background();\n }\n\n onBackground(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onBackground();\n }\n\n surface(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surface();\n }\n\n surfaceDim(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceDim();\n }\n\n surfaceBright(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceBright();\n }\n\n surfaceContainerLowest(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceContainerLowest();\n }\n\n surfaceContainerLow(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceContainerLow();\n }\n\n surfaceContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceContainer();\n }\n\n surfaceContainerHigh(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceContainerHigh();\n }\n\n surfaceContainerHighest(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceContainerHighest();\n }\n\n onSurface(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onSurface();\n }\n\n surfaceVariant(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceVariant();\n }\n\n onSurfaceVariant(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onSurfaceVariant();\n }\n\n outline(): DynamicColor {\n return MaterialDynamicColors.colorSpec.outline();\n }\n\n outlineVariant(): DynamicColor {\n return MaterialDynamicColors.colorSpec.outlineVariant();\n }\n\n inverseSurface(): DynamicColor {\n return MaterialDynamicColors.colorSpec.inverseSurface();\n }\n\n inverseOnSurface(): DynamicColor {\n return MaterialDynamicColors.colorSpec.inverseOnSurface();\n }\n\n shadow(): DynamicColor {\n return MaterialDynamicColors.colorSpec.shadow();\n }\n\n scrim(): DynamicColor {\n return MaterialDynamicColors.colorSpec.scrim();\n }\n\n surfaceTint(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceTint();\n }\n\n ////////////////////////////////////////////////////////////////\n // Primaries [P] //\n ////////////////////////////////////////////////////////////////\n\n primary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.primary();\n }\n\n primaryDim(): DynamicColor|undefined {\n return MaterialDynamicColors.colorSpec.primaryDim();\n }\n\n onPrimary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onPrimary();\n }\n\n primaryContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.primaryContainer();\n }\n\n onPrimaryContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onPrimaryContainer();\n }\n\n inversePrimary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.inversePrimary();\n }\n\n /////////////////////////////////////////////////////////////////\n // Primary Fixed [PF] //\n /////////////////////////////////////////////////////////////////\n\n primaryFixed(): DynamicColor {\n return MaterialDynamicColors.colorSpec.primaryFixed();\n }\n\n primaryFixedDim(): DynamicColor {\n return MaterialDynamicColors.colorSpec.primaryFixedDim();\n }\n\n onPrimaryFixed(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onPrimaryFixed();\n }\n\n onPrimaryFixedVariant(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onPrimaryFixedVariant();\n }\n\n ////////////////////////////////////////////////////////////////\n // Secondaries [Q] //\n ////////////////////////////////////////////////////////////////\n\n secondary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.secondary();\n }\n\n secondaryDim(): DynamicColor|undefined {\n return MaterialDynamicColors.colorSpec.secondaryDim();\n }\n\n onSecondary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onSecondary();\n }\n\n secondaryContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.secondaryContainer();\n }\n\n onSecondaryContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onSecondaryContainer();\n }\n\n /////////////////////////////////////////////////////////////////\n // Secondary Fixed [QF] //\n /////////////////////////////////////////////////////////////////\n\n secondaryFixed(): DynamicColor {\n return MaterialDynamicColors.colorSpec.secondaryFixed();\n }\n\n secondaryFixedDim(): DynamicColor {\n return MaterialDynamicColors.colorSpec.secondaryFixedDim();\n }\n\n onSecondaryFixed(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onSecondaryFixed();\n }\n\n onSecondaryFixedVariant(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onSecondaryFixedVariant();\n }\n\n ////////////////////////////////////////////////////////////////\n // Tertiaries [T] //\n ////////////////////////////////////////////////////////////////\n\n tertiary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.tertiary();\n }\n\n tertiaryDim(): DynamicColor|undefined {\n return MaterialDynamicColors.colorSpec.tertiaryDim();\n }\n\n onTertiary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onTertiary();\n }\n\n tertiaryContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.tertiaryContainer();\n }\n\n onTertiaryContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onTertiaryContainer();\n }\n\n /////////////////////////////////////////////////////////////////\n // Tertiary Fixed [TF] //\n /////////////////////////////////////////////////////////////////\n\n tertiaryFixed(): DynamicColor {\n return MaterialDynamicColors.colorSpec.tertiaryFixed();\n }\n\n tertiaryFixedDim(): DynamicColor {\n return MaterialDynamicColors.colorSpec.tertiaryFixedDim();\n }\n\n onTertiaryFixed(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onTertiaryFixed();\n }\n\n onTertiaryFixedVariant(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onTertiaryFixedVariant();\n }\n\n ////////////////////////////////////////////////////////////////\n // Errors [E] //\n ////////////////////////////////////////////////////////////////\n\n error(): DynamicColor {\n return MaterialDynamicColors.colorSpec.error();\n }\n\n errorDim(): DynamicColor|undefined {\n return MaterialDynamicColors.colorSpec.errorDim();\n }\n\n onError(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onError();\n }\n\n errorContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.errorContainer();\n }\n\n onErrorContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onErrorContainer();\n }\n\n ////////////////////////////////////////////////////////////////\n // All Colors //\n ////////////////////////////////////////////////////////////////\n\n allColors: DynamicColor[] = [\n this.background(),\n this.onBackground(),\n this.surface(),\n this.surfaceDim(),\n this.surfaceBright(),\n this.surfaceContainerLowest(),\n this.surfaceContainerLow(),\n this.surfaceContainer(),\n this.surfaceContainerHigh(),\n this.surfaceContainerHighest(),\n this.onSurface(),\n this.onSurfaceVariant(),\n this.outline(),\n this.outlineVariant(),\n this.inverseSurface(),\n this.inverseOnSurface(),\n this.primary(),\n this.primaryDim(),\n this.onPrimary(),\n this.primaryContainer(),\n this.onPrimaryContainer(),\n this.primaryFixed(),\n this.primaryFixedDim(),\n this.onPrimaryFixed(),\n this.onPrimaryFixedVariant(),\n this.inversePrimary(),\n this.secondary(),\n this.secondaryDim(),\n this.onSecondary(),\n this.secondaryContainer(),\n this.onSecondaryContainer(),\n this.secondaryFixed(),\n this.secondaryFixedDim(),\n this.onSecondaryFixed(),\n this.onSecondaryFixedVariant(),\n this.tertiary(),\n this.tertiaryDim(),\n this.onTertiary(),\n this.tertiaryContainer(),\n this.onTertiaryContainer(),\n this.tertiaryFixed(),\n this.tertiaryFixedDim(),\n this.onTertiaryFixed(),\n this.onTertiaryFixedVariant(),\n this.error(),\n this.errorDim(),\n this.onError(),\n this.errorContainer(),\n this.onErrorContainer(),\n ].filter((c) => c !== undefined);\n\n // Static variables are deprecated. Use the instance methods to get correct\n // specs based on request.\n\n /** @deprecated Use highestSurface() instead. */\n static highestSurface(s: DynamicScheme): DynamicColor {\n return MaterialDynamicColors.colorSpec.highestSurface(s);\n }\n\n /** @deprecated Use primaryPaletteKeyColor() instead. */\n static primaryPaletteKeyColor =\n MaterialDynamicColors.colorSpec.primaryPaletteKeyColor();\n\n /** @deprecated Use secondaryPaletteKeyColor() instead. */\n static secondaryPaletteKeyColor =\n MaterialDynamicColors.colorSpec.secondaryPaletteKeyColor();\n\n /** @deprecated Use tertiaryPaletteKeyColor() instead. */\n static tertiaryPaletteKeyColor =\n MaterialDynamicColors.colorSpec.tertiaryPaletteKeyColor();\n\n /** @deprecated Use neutralPaletteKeyColor() instead. */\n static neutralPaletteKeyColor =\n MaterialDynamicColors.colorSpec.neutralPaletteKeyColor();\n\n /** @deprecated Use neutralVariantPaletteKeyColor() instead. */\n static neutralVariantPaletteKeyColor =\n MaterialDynamicColors.colorSpec.neutralVariantPaletteKeyColor();\n\n /** @deprecated Use background() instead. */\n static background = MaterialDynamicColors.colorSpec.background();\n\n /** @deprecated Use background() instead. */\n static onBackground = MaterialDynamicColors.colorSpec.onBackground();\n\n /** @deprecated Use surface() instead. */\n static surface = MaterialDynamicColors.colorSpec.surface();\n\n /** @deprecated Use surfaceDim() instead. */\n static surfaceDim = MaterialDynamicColors.colorSpec.surfaceDim();\n\n /** @deprecated Use surfaceBright() instead. */\n static surfaceBright = MaterialDynamicColors.colorSpec.surfaceBright();\n\n /** @deprecated Use surfaceContainerLowest() instead. */\n static surfaceContainerLowest =\n MaterialDynamicColors.colorSpec.surfaceContainerLowest();\n\n /** @deprecated Use surfaceContainerLow() instead. */\n static surfaceContainerLow =\n MaterialDynamicColors.colorSpec.surfaceContainerLow();\n\n /** @deprecated Use surfaceContainer() instead. */\n static surfaceContainer = MaterialDynamicColors.colorSpec.surfaceContainer();\n\n /** @deprecated Use surfaceContainerHigh() instead. */\n static surfaceContainerHigh =\n MaterialDynamicColors.colorSpec.surfaceContainerHigh();\n\n /** @deprecated Use surfaceContainerHighest() instead. */\n static surfaceContainerHighest =\n MaterialDynamicColors.colorSpec.surfaceContainerHighest();\n\n /** @deprecated Use onSurface() instead. */\n static onSurface = MaterialDynamicColors.colorSpec.onSurface();\n\n /** @deprecated Use surfaceVariant() instead. */\n static surfaceVariant = MaterialDynamicColors.colorSpec.surfaceVariant();\n\n /** @deprecated Use onSurfaceVariant() instead. */\n static onSurfaceVariant = MaterialDynamicColors.colorSpec.onSurfaceVariant();\n\n /** @deprecated Use inverseSurface() instead. */\n static inverseSurface = MaterialDynamicColors.colorSpec.inverseSurface();\n\n /** @deprecated Use inverseOnSurface() instead. */\n static inverseOnSurface = MaterialDynamicColors.colorSpec.inverseOnSurface();\n\n /** @deprecated Use outline() instead. */\n static outline = MaterialDynamicColors.colorSpec.outline();\n\n /** @deprecated Use outlineVariant() instead. */\n static outlineVariant = MaterialDynamicColors.colorSpec.outlineVariant();\n\n /** @deprecated Use shadow() instead. */\n static shadow = MaterialDynamicColors.colorSpec.shadow();\n\n /** @deprecated Use scrim() instead. */\n static scrim = MaterialDynamicColors.colorSpec.scrim();\n\n /** @deprecated Use surfaceTint() instead. */\n static surfaceTint = MaterialDynamicColors.colorSpec.surfaceTint();\n\n /** @deprecated Use primary() instead. */\n static primary = MaterialDynamicColors.colorSpec.primary();\n\n /** @deprecated Use onPrimary() instead. */\n static onPrimary = MaterialDynamicColors.colorSpec.onPrimary();\n\n /** @deprecated Use primaryContainer() instead. */\n static primaryContainer = MaterialDynamicColors.colorSpec.primaryContainer();\n\n /** @deprecated Use onPrimaryContainer() instead. */\n static onPrimaryContainer =\n MaterialDynamicColors.colorSpec.onPrimaryContainer();\n\n /** @deprecated Use inversePrimary() instead. */\n static inversePrimary = MaterialDynamicColors.colorSpec.inversePrimary();\n\n /** @deprecated Use secondary() instead. */\n static secondary = MaterialDynamicColors.colorSpec.secondary();\n\n /** @deprecated Use onSecondary() instead. */\n static onSecondary = MaterialDynamicColors.colorSpec.onSecondary();\n\n /** @deprecated Use secondaryContainer() instead. */\n static secondaryContainer =\n MaterialDynamicColors.colorSpec.secondaryContainer();\n\n /** @deprecated Use onSecondaryContainer() instead. */\n static onSecondaryContainer =\n MaterialDynamicColors.colorSpec.onSecondaryContainer();\n\n /** @deprecated Use tertiary() instead. */\n static tertiary = MaterialDynamicColors.colorSpec.tertiary();\n\n /** @deprecated Use onTertiary() instead. */\n static onTertiary = MaterialDynamicColors.colorSpec.onTertiary();\n\n /** @deprecated Use tertiaryContainer() instead. */\n static tertiaryContainer = MaterialDynamicColors.colorSpec.tertiaryContainer();\n\n /** @deprecated Use onTertiaryContainer() instead. */\n static onTertiaryContainer =\n MaterialDynamicColors.colorSpec.onTertiaryContainer();\n\n /** @deprecated Use error() instead. */\n static error = MaterialDynamicColors.colorSpec.error();\n\n /** @deprecated Use onError() instead. */\n static onError = MaterialDynamicColors.colorSpec.onError();\n\n /** @deprecated Use errorContainer() instead. */\n static errorContainer = MaterialDynamicColors.colorSpec.errorContainer();\n\n /** @deprecated Use onErrorContainer() instead. */\n static onErrorContainer = MaterialDynamicColors.colorSpec.onErrorContainer();\n\n /** @deprecated Use primaryFixed() instead. */\n static primaryFixed = MaterialDynamicColors.colorSpec.primaryFixed();\n\n /** @deprecated Use primaryFixedDim() instead. */\n static primaryFixedDim = MaterialDynamicColors.colorSpec.primaryFixedDim();\n\n /** @deprecated Use onPrimaryFixed() instead. */\n static onPrimaryFixed = MaterialDynamicColors.colorSpec.onPrimaryFixed();\n\n /** @deprecated Use onPrimaryFixedVariant() instead. */\n static onPrimaryFixedVariant =\n MaterialDynamicColors.colorSpec.onPrimaryFixedVariant();\n\n /** @deprecated Use secondaryFixed() instead. */\n static secondaryFixed = MaterialDynamicColors.colorSpec.secondaryFixed();\n\n /** @deprecated Use secondaryFixedDim() instead. */\n static secondaryFixedDim = MaterialDynamicColors.colorSpec.secondaryFixedDim();\n\n /** @deprecated Use onSecondaryFixed() instead. */\n static onSecondaryFixed = MaterialDynamicColors.colorSpec.onSecondaryFixed();\n\n /** @deprecated Use onSecondaryFixedVariant() instead. */\n static onSecondaryFixedVariant =\n MaterialDynamicColors.colorSpec.onSecondaryFixedVariant();\n\n /** @deprecated Use tertiaryFixed() instead. */\n static tertiaryFixed = MaterialDynamicColors.colorSpec.tertiaryFixed();\n\n /** @deprecated Use tertiaryFixedDim() instead. */\n static tertiaryFixedDim = MaterialDynamicColors.colorSpec.tertiaryFixedDim();\n\n /** @deprecated Use onTertiaryFixed() instead. */\n static onTertiaryFixed = MaterialDynamicColors.colorSpec.onTertiaryFixed();\n\n /** @deprecated Use onTertiaryFixedVariant() instead. */\n static onTertiaryFixedVariant =\n MaterialDynamicColors.colorSpec.onTertiaryFixedVariant();\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DislikeAnalyzer} from '../dislike/dislike_analyzer.js';\nimport {Hct} from '../hct/hct.js';\nimport {TonalPalette} from '../palettes/tonal_palette.js';\nimport {TemperatureCache} from '../temperature/temperature_cache.js';\nimport * as math from '../utils/math_utils.js';\n\nimport {SpecVersion} from './color_spec.js';\nimport {DynamicColor} from './dynamic_color.js';\nimport {MaterialDynamicColors} from './material_dynamic_colors.js';\nimport {Variant} from './variant.js';\n\n/**\n * The platform on which this scheme is intended to be used. Only used in the\n * 2025 spec.\n */\nexport type Platform = 'phone'|'watch';\n\n/**\n * @param sourceColorArgb The source color of the theme as an ARGB 32-bit\n * integer.\n * @param variant The variant, or style, of the theme.\n * @param contrastLevel Value from -1 to 1. -1 represents minimum contrast, 0\n * represents standard (i.e. the design as spec'd), and 1 represents maximum\n * contrast.\n * @param isDark Whether the scheme is in dark mode or light mode.\n * @param platform The platform on which this scheme is intended to be used.\n * @param specVersion The version of the design spec that this scheme is based\n * on.\n * @param primaryPalette Given a tone, produces a color. Hue and chroma of the\n * color are specified in the design specification of the variant. Usually\n * colorful.\n * @param secondaryPalette Given a tone, produces a color. Hue and chroma of the\n * color are specified in the design specification of the variant. Usually\n * less colorful.\n * @param tertiaryPalette Given a tone, produces a color. Hue and chroma of the\n * color are specified in the design specification of the variant. Usually a\n * different hue from primary and colorful.\n * @param neutralPalette Given a tone, produces a color. Hue and chroma of the\n * color are specified in the design specification of the variant. Usually\n * not colorful at all, intended for background & surface colors.\n * @param neutralVariantPalette Given a tone, produces a color. Hue and chroma\n * of the color are specified in the design specification of the variant.\n * Usually not colorful, but slightly more colorful than Neutral. Intended\n * for backgrounds & surfaces.\n */\ninterface DynamicSchemeOptions {\n sourceColorHct: Hct;\n variant: Variant;\n contrastLevel: number;\n isDark: boolean;\n platform?: Platform;\n specVersion?: SpecVersion;\n primaryPalette?: TonalPalette;\n secondaryPalette?: TonalPalette;\n tertiaryPalette?: TonalPalette;\n neutralPalette?: TonalPalette;\n neutralVariantPalette?: TonalPalette;\n errorPalette?: TonalPalette;\n}\n\n/**\n * A delegate that provides the palettes of a DynamicScheme.\n *\n * This is used to allow different implementations of the palette calculation\n * logic for different spec versions.\n */\ninterface DynamicSchemePalettesDelegate {\n getPrimaryPalette:\n (variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number) => TonalPalette;\n\n getSecondaryPalette:\n (variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number) => TonalPalette;\n\n getTertiaryPalette:\n (variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number) => TonalPalette;\n\n getNeutralPalette:\n (variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number) => TonalPalette;\n\n getNeutralVariantPalette:\n (variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number) => TonalPalette;\n\n getErrorPalette:\n (variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number) => TonalPalette | undefined;\n}\n\n/**\n * Constructed by a set of values representing the current UI state (such as\n * whether or not its dark theme, what the theme style is, etc.), and\n * provides a set of TonalPalettes that can create colors that fit in\n * with the theme style. Used by DynamicColor to resolve into a color.\n */\nexport class DynamicScheme {\n static readonly DEFAULT_SPEC_VERSION = '2021';\n static readonly DEFAULT_PLATFORM = 'phone';\n\n /**\n * The source color of the theme as an HCT color.\n */\n sourceColorHct: Hct;\n\n /** The source color of the theme as an ARGB 32-bit integer. */\n readonly sourceColorArgb: number;\n\n /** The variant, or style, of the theme. */\n readonly variant: Variant;\n\n /**\n * Value from -1 to 1. -1 represents minimum contrast. 0 represents standard\n * (i.e. the design as spec'd), and 1 represents maximum contrast.\n */\n readonly contrastLevel: number;\n\n /** Whether the scheme is in dark mode or light mode. */\n readonly isDark: boolean;\n\n /** The platform on which this scheme is intended to be used. */\n readonly platform: Platform;\n\n /** The version of the design spec that this scheme is based on. */\n readonly specVersion: SpecVersion;\n\n /**\n * Given a tone, produces a color. Hue and chroma of the\n * color are specified in the design specification of the variant. Usually\n * colorful.\n */\n readonly primaryPalette: TonalPalette;\n\n /**\n * Given a tone, produces a color. Hue and chroma of\n * the color are specified in the design specification of the variant. Usually\n * less colorful.\n */\n readonly secondaryPalette: TonalPalette;\n\n /**\n * Given a tone, produces a color. Hue and chroma of\n * the color are specified in the design specification of the variant. Usually\n * a different hue from primary and colorful.\n */\n readonly tertiaryPalette: TonalPalette;\n\n /**\n * Given a tone, produces a color. Hue and chroma of the\n * color are specified in the design specification of the variant. Usually not\n * colorful at all, intended for background & surface colors.\n */\n readonly neutralPalette: TonalPalette;\n\n /**\n * Given a tone, produces a color. Hue and chroma\n * of the color are specified in the design specification of the variant.\n * Usually not colorful, but slightly more colorful than Neutral. Intended for\n * backgrounds & surfaces.\n */\n readonly neutralVariantPalette: TonalPalette;\n\n /**\n * Given a tone, produces a reddish, colorful, color.\n */\n errorPalette: TonalPalette;\n\n readonly colors: MaterialDynamicColors;\n\n private static maybeFallbackSpecVersion(\n specVersion: SpecVersion, variant: Variant): SpecVersion {\n switch (variant) {\n case Variant.EXPRESSIVE:\n case Variant.VIBRANT:\n case Variant.TONAL_SPOT:\n case Variant.NEUTRAL:\n return specVersion;\n default:\n return '2021';\n }\n }\n\n constructor(args: DynamicSchemeOptions) {\n this.sourceColorArgb = args.sourceColorHct.toInt();\n this.variant = args.variant;\n this.contrastLevel = args.contrastLevel;\n this.isDark = args.isDark;\n this.platform = args.platform ?? 'phone';\n this.specVersion = DynamicScheme.maybeFallbackSpecVersion(\n args.specVersion ?? '2021', this.variant);\n this.sourceColorHct = args.sourceColorHct;\n this.primaryPalette = args.primaryPalette ??\n getSpec(this.specVersion)\n .getPrimaryPalette(\n this.variant, args.sourceColorHct, this.isDark, this.platform,\n this.contrastLevel);\n this.secondaryPalette = args.secondaryPalette ??\n getSpec(this.specVersion)\n .getSecondaryPalette(\n this.variant, args.sourceColorHct, this.isDark, this.platform,\n this.contrastLevel);\n this.tertiaryPalette = args.tertiaryPalette ??\n getSpec(this.specVersion)\n .getTertiaryPalette(\n this.variant, args.sourceColorHct, this.isDark, this.platform,\n this.contrastLevel);\n this.neutralPalette = args.neutralPalette ??\n getSpec(this.specVersion)\n .getNeutralPalette(\n this.variant, args.sourceColorHct, this.isDark, this.platform,\n this.contrastLevel);\n this.neutralVariantPalette = args.neutralVariantPalette ??\n getSpec(this.specVersion)\n .getNeutralVariantPalette(\n this.variant, args.sourceColorHct, this.isDark, this.platform,\n this.contrastLevel);\n this.errorPalette = args.errorPalette ??\n getSpec(this.specVersion)\n .getErrorPalette(\n this.variant, args.sourceColorHct, this.isDark, this.platform,\n this.contrastLevel) ??\n TonalPalette.fromHueAndChroma(25.0, 84.0);\n\n this.colors = new MaterialDynamicColors();\n }\n\n toString(): string {\n return `Scheme: ` +\n `variant=${Variant[this.variant]}, ` +\n `mode=${this.isDark ? 'dark' : 'light'}, ` +\n `platform=${this.platform}, ` +\n `contrastLevel=${this.contrastLevel.toFixed(1)}, ` +\n `seed=${this.sourceColorHct.toString()}, ` +\n `specVersion=${this.specVersion}`\n }\n\n /**\n * Returns a new hue based on a piecewise function and input color hue.\n *\n * For example, for the following function:\n * result = 26 if 0 <= hue < 101\n * result = 39 if 101 <= hue < 210\n * result = 28 if 210 <= hue < 360\n *\n * call the function as:\n *\n * const hueBreakpoints = [0, 101, 210, 360];\n * const hues = [26, 39, 28];\n * const result = scheme.piecewise(hue, hueBreakpoints, hues);\n *\n * @param sourceColorHct The input value.\n * @param hueBreakpoints The breakpoints, in sorted order. No default lower or\n * upper bounds are assumed.\n * @param hues The hues that should be applied when source color's hue is >=\n * the same index in hueBrakpoints array, and < the hue at the next index\n * in hueBrakpoints array. Otherwise, the source color's hue is returned.\n */\n static getPiecewiseHue(\n sourceColorHct: Hct, hueBreakpoints: number[], hues: number[]): number {\n const size = Math.min(hueBreakpoints.length - 1, hues.length);\n const sourceHue = sourceColorHct.hue;\n for (let i = 0; i < size; i++) {\n if (sourceHue >= hueBreakpoints[i] && sourceHue < hueBreakpoints[i + 1]) {\n return math.sanitizeDegreesDouble(hues[i]);\n }\n }\n // No condition matched, return the source hue.\n return sourceHue;\n }\n\n /**\n * Returns a shifted hue based on a piecewise function and input color hue.\n *\n * For example, for the following function:\n * result = hue + 26 if 0 <= hue < 101\n * result = hue - 39 if 101 <= hue < 210\n * result = hue + 28 if 210 <= hue < 360\n *\n * call the function as:\n *\n * const hueBreakpoints = [0, 101, 210, 360];\n * const hues = [26, -39, 28];\n * const result = scheme.getRotatedHue(hue, hueBreakpoints, hues);\n *\n * @param sourceColorHct the source color of the theme, in HCT.\n * @param hueBreakpoints The \"breakpoints\", i.e. the hues at which a rotation\n * should be apply. No default lower or upper bounds are assumed.\n * @param rotations The rotation that should be applied when source color's\n * hue is >= the same index in hues array, and < the hue at the next\n * index in hues array. Otherwise, the source color's hue is returned.\n */\n static getRotatedHue(\n sourceColorHct: Hct, hueBreakpoints: number[],\n rotations: number[]): number {\n let rotation = DynamicScheme.getPiecewiseHue(\n sourceColorHct, hueBreakpoints, rotations);\n if (Math.min(hueBreakpoints.length - 1, rotations.length) <= 0) {\n // No condition matched, return the source hue.\n rotation = 0;\n }\n return math.sanitizeDegreesDouble(sourceColorHct.hue + rotation);\n }\n\n getArgb(dynamicColor: DynamicColor): number {\n return dynamicColor.getArgb(this);\n }\n\n getHct(dynamicColor: DynamicColor): Hct {\n return dynamicColor.getHct(this);\n }\n\n // Palette key colors\n\n get primaryPaletteKeyColor(): number {\n return this.getArgb(this.colors.primaryPaletteKeyColor());\n }\n\n get secondaryPaletteKeyColor(): number {\n return this.getArgb(this.colors.secondaryPaletteKeyColor());\n }\n\n get tertiaryPaletteKeyColor(): number {\n return this.getArgb(this.colors.tertiaryPaletteKeyColor());\n }\n\n get neutralPaletteKeyColor(): number {\n return this.getArgb(this.colors.neutralPaletteKeyColor());\n }\n\n get neutralVariantPaletteKeyColor(): number {\n return this.getArgb(this.colors.neutralVariantPaletteKeyColor());\n }\n\n get errorPaletteKeyColor(): number {\n return this.getArgb(this.colors.errorPaletteKeyColor());\n }\n\n // Surface colors\n\n get background(): number {\n return this.getArgb(this.colors.background());\n }\n\n get onBackground(): number {\n return this.getArgb(this.colors.onBackground());\n }\n\n get surface(): number {\n return this.getArgb(this.colors.surface());\n }\n\n get surfaceDim(): number {\n return this.getArgb(this.colors.surfaceDim());\n }\n\n get surfaceBright(): number {\n return this.getArgb(this.colors.surfaceBright());\n }\n\n get surfaceContainerLowest(): number {\n return this.getArgb(this.colors.surfaceContainerLowest());\n }\n\n get surfaceContainerLow(): number {\n return this.getArgb(this.colors.surfaceContainerLow());\n }\n\n get surfaceContainer(): number {\n return this.getArgb(this.colors.surfaceContainer());\n }\n\n get surfaceContainerHigh(): number {\n return this.getArgb(this.colors.surfaceContainerHigh());\n }\n\n get surfaceContainerHighest(): number {\n return this.getArgb(this.colors.surfaceContainerHighest());\n }\n\n get onSurface(): number {\n return this.getArgb(this.colors.onSurface());\n }\n\n get surfaceVariant(): number {\n return this.getArgb(this.colors.surfaceVariant());\n }\n\n get onSurfaceVariant(): number {\n return this.getArgb(this.colors.onSurfaceVariant());\n }\n\n get inverseSurface(): number {\n return this.getArgb(this.colors.inverseSurface());\n }\n\n get inverseOnSurface(): number {\n return this.getArgb(this.colors.inverseOnSurface());\n }\n\n get outline(): number {\n return this.getArgb(this.colors.outline());\n }\n\n get outlineVariant(): number {\n return this.getArgb(this.colors.outlineVariant());\n }\n\n get shadow(): number {\n return this.getArgb(this.colors.shadow());\n }\n\n get scrim(): number {\n return this.getArgb(this.colors.scrim());\n }\n\n get surfaceTint(): number {\n return this.getArgb(this.colors.surfaceTint());\n }\n\n // Primary colors\n\n get primary(): number {\n return this.getArgb(this.colors.primary());\n }\n\n get primaryDim(): number {\n const primaryDim = this.colors.primaryDim();\n if (primaryDim === undefined) {\n throw new Error('`primaryDim` color is undefined prior to 2025 spec.');\n }\n return this.getArgb(primaryDim);\n }\n\n get onPrimary(): number {\n return this.getArgb(this.colors.onPrimary());\n }\n\n get primaryContainer(): number {\n return this.getArgb(this.colors.primaryContainer());\n }\n\n get onPrimaryContainer(): number {\n return this.getArgb(this.colors.onPrimaryContainer());\n }\n\n get primaryFixed(): number {\n return this.getArgb(this.colors.primaryFixed());\n }\n\n get primaryFixedDim(): number {\n return this.getArgb(this.colors.primaryFixedDim());\n }\n\n get onPrimaryFixed(): number {\n return this.getArgb(this.colors.onPrimaryFixed());\n }\n\n get onPrimaryFixedVariant(): number {\n return this.getArgb(this.colors.onPrimaryFixedVariant());\n }\n\n get inversePrimary(): number {\n return this.getArgb(this.colors.inversePrimary());\n }\n\n // Secondary colors\n\n get secondary(): number {\n return this.getArgb(this.colors.secondary());\n }\n\n get secondaryDim(): number {\n const secondaryDim = this.colors.secondaryDim();\n if (secondaryDim === undefined) {\n throw new Error('`secondaryDim` color is undefined prior to 2025 spec.');\n }\n return this.getArgb(secondaryDim);\n }\n\n get onSecondary(): number {\n return this.getArgb(this.colors.onSecondary());\n }\n\n get secondaryContainer(): number {\n return this.getArgb(this.colors.secondaryContainer());\n }\n\n get onSecondaryContainer(): number {\n return this.getArgb(this.colors.onSecondaryContainer());\n }\n\n get secondaryFixed(): number {\n return this.getArgb(this.colors.secondaryFixed());\n }\n\n get secondaryFixedDim(): number {\n return this.getArgb(this.colors.secondaryFixedDim());\n }\n\n get onSecondaryFixed(): number {\n return this.getArgb(this.colors.onSecondaryFixed());\n }\n\n get onSecondaryFixedVariant(): number {\n return this.getArgb(this.colors.onSecondaryFixedVariant());\n }\n\n // Tertiary colors\n\n get tertiary(): number {\n return this.getArgb(this.colors.tertiary());\n }\n\n get tertiaryDim(): number {\n const tertiaryDim = this.colors.tertiaryDim();\n if (tertiaryDim === undefined) {\n throw new Error('`tertiaryDim` color is undefined prior to 2025 spec.');\n }\n return this.getArgb(tertiaryDim);\n }\n\n get onTertiary(): number {\n return this.getArgb(this.colors.onTertiary());\n }\n\n get tertiaryContainer(): number {\n return this.getArgb(this.colors.tertiaryContainer());\n }\n\n get onTertiaryContainer(): number {\n return this.getArgb(this.colors.onTertiaryContainer());\n }\n\n get tertiaryFixed(): number {\n return this.getArgb(this.colors.tertiaryFixed());\n }\n\n get tertiaryFixedDim(): number {\n return this.getArgb(this.colors.tertiaryFixedDim());\n }\n\n get onTertiaryFixed(): number {\n return this.getArgb(this.colors.onTertiaryFixed());\n }\n\n get onTertiaryFixedVariant(): number {\n return this.getArgb(this.colors.onTertiaryFixedVariant());\n }\n\n // Error colors\n\n get error(): number {\n return this.getArgb(this.colors.error());\n }\n\n get errorDim(): number {\n const errorDim = this.colors.errorDim();\n if (errorDim === undefined) {\n throw new Error('`errorDim` color is undefined prior to 2025 spec.');\n }\n return this.getArgb(errorDim);\n }\n\n get onError(): number {\n return this.getArgb(this.colors.onError());\n }\n\n get errorContainer(): number {\n return this.getArgb(this.colors.errorContainer());\n }\n\n get onErrorContainer(): number {\n return this.getArgb(this.colors.onErrorContainer());\n }\n}\n\n/**\n * A delegate for the palettes of a DynamicScheme in the 2021 spec.\n */\nclass DynamicSchemePalettesDelegateImpl2021 implements\n DynamicSchemePalettesDelegate {\n //////////////////////////////////////////////////////////////////\n // Scheme Palettes //\n //////////////////////////////////////////////////////////////////\n\n getPrimaryPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.CONTENT:\n case Variant.FIDELITY:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, sourceColorHct.chroma);\n case Variant.FRUIT_SALAD:\n return TonalPalette.fromHueAndChroma(\n math.sanitizeDegreesDouble(sourceColorHct.hue - 50.0), 48.0);\n case Variant.MONOCHROME:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 12.0);\n case Variant.RAINBOW:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 48.0);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 36.0);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n math.sanitizeDegreesDouble(sourceColorHct.hue + 240), 40);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 200.0);\n default:\n throw new Error(`Unsupported variant: ${variant}`);\n }\n }\n\n getSecondaryPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.CONTENT:\n case Variant.FIDELITY:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue,\n Math.max(\n sourceColorHct.chroma - 32.0, sourceColorHct.chroma * 0.5));\n case Variant.FRUIT_SALAD:\n return TonalPalette.fromHueAndChroma(\n math.sanitizeDegreesDouble(sourceColorHct.hue - 50.0), 36.0);\n case Variant.MONOCHROME:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 8.0);\n case Variant.RAINBOW:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16.0);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16.0);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 21, 51, 121, 151, 191, 271, 321, 360],\n [45, 95, 45, 20, 45, 90, 45, 45, 45]),\n 24.0);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 41, 61, 101, 131, 181, 251, 301, 360],\n [18, 15, 10, 12, 15, 18, 15, 12, 12]),\n 24.0);\n default:\n throw new Error(`Unsupported variant: ${variant}`);\n }\n }\n\n getTertiaryPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.CONTENT:\n return TonalPalette.fromHct(DislikeAnalyzer.fixIfDisliked(\n new TemperatureCache(sourceColorHct)\n .analogous(/* count= */ 3, /* divisions= */ 6)[2]));\n case Variant.FIDELITY:\n return TonalPalette.fromHct(DislikeAnalyzer.fixIfDisliked(\n new TemperatureCache(sourceColorHct).complement));\n case Variant.FRUIT_SALAD:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 36.0);\n case Variant.MONOCHROME:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16.0);\n case Variant.RAINBOW:\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(\n math.sanitizeDegreesDouble(sourceColorHct.hue + 60.0), 24.0);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 21, 51, 121, 151, 191, 271, 321, 360],\n [120, 120, 20, 45, 20, 15, 20, 120, 120]),\n 32.0);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 41, 61, 101, 131, 181, 251, 301, 360],\n [35, 30, 20, 25, 30, 35, 30, 25, 25]),\n 32.0);\n default:\n throw new Error(`Unsupported variant: ${variant}`);\n }\n }\n\n getNeutralPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.CONTENT:\n case Variant.FIDELITY:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, sourceColorHct.chroma / 8.0);\n case Variant.FRUIT_SALAD:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 10.0);\n case Variant.MONOCHROME:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 2.0);\n case Variant.RAINBOW:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 6.0);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n math.sanitizeDegreesDouble(sourceColorHct.hue + 15), 8);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 10);\n default:\n throw new Error(`Unsupported variant: ${variant}`);\n }\n }\n\n getNeutralVariantPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.CONTENT:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, (sourceColorHct.chroma / 8.0) + 4.0);\n case Variant.FIDELITY:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, (sourceColorHct.chroma / 8.0) + 4.0);\n case Variant.FRUIT_SALAD:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16.0);\n case Variant.MONOCHROME:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 2.0);\n case Variant.RAINBOW:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 8.0);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n math.sanitizeDegreesDouble(sourceColorHct.hue + 15), 12);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 12);\n default:\n throw new Error(`Unsupported variant: ${variant}`);\n }\n }\n\n getErrorPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette|undefined {\n return undefined;\n }\n}\n\n/**\n * A delegate for the palettes of a DynamicScheme in the 2025 spec.\n */\nclass DynamicSchemePalettesDelegateImpl2025 extends\n DynamicSchemePalettesDelegateImpl2021 {\n //////////////////////////////////////////////////////////////////\n // Scheme Palettes //\n //////////////////////////////////////////////////////////////////\n\n override getPrimaryPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue,\n platform === 'phone' ? (Hct.isBlue(sourceColorHct.hue) ? 12 : 8) :\n (Hct.isBlue(sourceColorHct.hue) ? 16 : 12));\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, platform === 'phone' && isDark ? 26 : 32);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, platform === 'phone' ? (isDark ? 36 : 48) : 40);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, platform === 'phone' ? 74 : 56);\n default:\n return super.getPrimaryPalette(\n variant, sourceColorHct, isDark, platform, contrastLevel);\n }\n }\n\n override getSecondaryPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue,\n platform === 'phone' ? (Hct.isBlue(sourceColorHct.hue) ? 6 : 4) :\n (Hct.isBlue(sourceColorHct.hue) ? 10 : 6));\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 105, 140, 204, 253, 278, 300, 333, 360],\n [-160, 155, -100, 96, -96, -156, -165, -160]),\n platform === 'phone' ? (isDark ? 16 : 24) : 24);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 38, 105, 140, 333, 360],\n [-14, 10, -14, 10, -14]),\n platform === 'phone' ? 56 : 36);\n default:\n return super.getSecondaryPalette(\n variant, sourceColorHct, isDark, platform, contrastLevel);\n }\n }\n\n override getTertiaryPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 38, 105, 161, 204, 278, 333, 360],\n [-32, 26, 10, -39, 24, -15, -32]),\n platform === 'phone' ? 20 : 36);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 20, 71, 161, 333, 360],\n [-40, 48, -32, 40, -32]),\n platform === 'phone' ? 28 : 32);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 105, 140, 204, 253, 278, 300, 333, 360],\n [-165, 160, -105, 101, -101, -160, -170, -165]),\n 48);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 38, 71, 105, 140, 161, 253, 333, 360],\n [-72, 35, 24, -24, 62, 50, 62, -72]),\n 56);\n default:\n return super.getTertiaryPalette(\n variant, sourceColorHct, isDark, platform, contrastLevel);\n }\n }\n\n private static getExpressiveNeutralHue(sourceColorHct: Hct): number {\n const hue = DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 71, 124, 253, 278, 300, 360],\n [10, 0, 10, 0, 10, 0]);\n return hue;\n }\n\n private static getExpressiveNeutralChroma(\n sourceColorHct: Hct, isDark: boolean, platform: Platform): number {\n const neutralHue =\n DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralHue(\n sourceColorHct);\n return platform === 'phone' ?\n (isDark ? (Hct.isYellow(neutralHue) ? 6 : 14) : 18) :\n 12;\n }\n\n private static getVibrantNeutralHue(sourceColorHct: Hct): number {\n return DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 38, 105, 140, 333, 360], [-14, 10, -14, 10, -14]);\n }\n\n private static getVibrantNeutralChroma(\n sourceColorHct: Hct, platform: Platform): number {\n const neutralHue =\n DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralHue(\n sourceColorHct);\n return platform === 'phone' ? 28 : (Hct.isBlue(neutralHue) ? 28 : 20);\n }\n\n override getNeutralPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, platform === 'phone' ? 1.4 : 6);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, platform === 'phone' ? 5 : 10);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralHue(\n sourceColorHct),\n DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralChroma(\n sourceColorHct, isDark, platform));\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralHue(\n sourceColorHct),\n DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralChroma(\n sourceColorHct, platform));\n default:\n return super.getNeutralPalette(\n variant, sourceColorHct, isDark, platform, contrastLevel);\n }\n }\n\n override getNeutralVariantPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, (platform === 'phone' ? 1.4 : 6) * 2.2);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, (platform === 'phone' ? 5 : 10) * 1.7);\n case Variant.EXPRESSIVE:\n const expressiveNeutralHue =\n DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralHue(\n sourceColorHct);\n const expressiveNeutralChroma =\n DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralChroma(\n sourceColorHct, isDark, platform);\n return TonalPalette.fromHueAndChroma(\n expressiveNeutralHue,\n expressiveNeutralChroma *\n (expressiveNeutralHue >= 105 && expressiveNeutralHue < 125 ?\n 1.6 :\n 2.3),\n );\n case Variant.VIBRANT:\n const vibrantNeutralHue =\n DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralHue(\n sourceColorHct);\n const vibrantNeutralChroma =\n DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralChroma(\n sourceColorHct, platform);\n return TonalPalette.fromHueAndChroma(\n vibrantNeutralHue, vibrantNeutralChroma * 1.29);\n default:\n return super.getNeutralVariantPalette(\n variant, sourceColorHct, isDark, platform, contrastLevel);\n }\n }\n\n override getErrorPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette|undefined {\n const errorHue = DynamicScheme.getPiecewiseHue(\n sourceColorHct, [0, 3, 13, 23, 33, 43, 153, 273, 360],\n [12, 22, 32, 12, 22, 32, 22, 12]);\n switch (variant) {\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(\n errorHue, platform === 'phone' ? 50 : 40);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(\n errorHue, platform === 'phone' ? 60 : 48);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n errorHue, platform === 'phone' ? 64 : 48);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n errorHue, platform === 'phone' ? 80 : 60);\n default:\n return super.getErrorPalette(\n variant, sourceColorHct, isDark, platform, contrastLevel);\n }\n }\n}\n\nconst spec2021 = new DynamicSchemePalettesDelegateImpl2021();\nconst spec2025 = new DynamicSchemePalettesDelegateImpl2025();\n\n/**\n * Returns the DynamicSchemePalettesDelegate for the given spec version.\n */\nfunction getSpec(specVersion: SpecVersion):\n DynamicSchemePalettesDelegate {\n return specVersion === '2025' ? spec2025 : spec2021;\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {SpecVersion} from '../dynamiccolor/color_spec.js';\nimport {DynamicScheme, Platform} from '../dynamiccolor/dynamic_scheme';\nimport {Variant} from '../dynamiccolor/variant.js';\nimport {Hct} from '../hct/hct.js';\n\n/**\n * A Dynamic Color theme that maxes out colorfulness at each position in the\n * Primary Tonal Palette.\n */\nexport class SchemeVibrant extends DynamicScheme {\n constructor(\n sourceColorHct: Hct, isDark: boolean, contrastLevel: number,\n specVersion: SpecVersion = DynamicScheme.DEFAULT_SPEC_VERSION,\n platform: Platform = DynamicScheme.DEFAULT_PLATFORM) {\n super({\n sourceColorHct,\n variant: Variant.VIBRANT,\n contrastLevel,\n isDark,\n platform,\n specVersion,\n });\n }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as colorUtils from './color_utils.js';\n\n/**\n * Utility methods for hexadecimal representations of colors.\n */\n\n/**\n * @param argb ARGB representation of a color.\n * @return Hex string representing color, ex. #ff0000 for red.\n */\nexport function hexFromArgb(argb: number) {\n const r = colorUtils.redFromArgb(argb);\n const g = colorUtils.greenFromArgb(argb);\n const b = colorUtils.blueFromArgb(argb);\n const outParts = [r.toString(16), g.toString(16), b.toString(16)];\n\n // Pad single-digit output values\n for (const [i, part] of outParts.entries()) {\n if (part.length === 1) {\n outParts[i] = '0' + part;\n }\n }\n\n return '#' + outParts.join('');\n}\n\n/**\n * @param hex String representing color as hex code. Accepts strings with or\n * without leading #, and string representing the color using 3, 6, or 8\n * hex characters.\n * @return ARGB representation of color.\n */\nexport function argbFromHex(hex: string) {\n hex = hex.replace('#', '');\n const isThree = hex.length === 3;\n const isSix = hex.length === 6;\n const isEight = hex.length === 8;\n if (!isThree && !isSix && !isEight) {\n throw new Error('unexpected hex ' + hex);\n }\n let r = 0;\n let g = 0;\n let b = 0;\n if (isThree) {\n r = parseIntHex(hex.slice(0, 1).repeat(2));\n g = parseIntHex(hex.slice(1, 2).repeat(2));\n b = parseIntHex(hex.slice(2, 3).repeat(2));\n } else if (isSix) {\n r = parseIntHex(hex.slice(0, 2));\n g = parseIntHex(hex.slice(2, 4));\n b = parseIntHex(hex.slice(4, 6));\n } else if (isEight) {\n r = parseIntHex(hex.slice(2, 4));\n g = parseIntHex(hex.slice(4, 6));\n b = parseIntHex(hex.slice(6, 8));\n }\n\n return (\n ((255 << 24) | ((r & 0x0ff) << 16) | ((g & 0x0ff) << 8) | (b & 0x0ff)) >>>\n 0);\n}\n\nfunction parseIntHex(value: string) {\n // tslint:disable-next-line:ban\n return parseInt(value, 16);\n}\n","import { argbFromHex, Hct, hexFromArgb, MaterialDynamicColors, SchemeVibrant } from \"@material/material-color-utilities\";\nimport { MaterialTheme, MaterialTokenKey } from \"./types\";\n\nexport function createModernTheme(seedHex: string, isDark: boolean): MaterialTheme {\n const sourceColorHct = Hct.fromInt(argbFromHex(seedHex));\n const scheme = new SchemeVibrant(sourceColorHct, isDark, 0.0); \n\n const colors: Partial<MaterialTheme> = {};\n \n const coreTokens: MaterialTokenKey[] = [\n \"primary\", \"onPrimary\", \"primaryContainer\", \"onPrimaryContainer\",\n \"secondary\", \"onSecondary\", \"secondaryContainer\", \"onSecondaryContainer\",\n \"tertiary\", \"onTertiary\", \"tertiaryContainer\", \"onTertiaryContainer\",\n \"error\", \"onError\", \"errorContainer\", \"onErrorContainer\",\n \"background\", \"onBackground\",\n \"surface\", \"onSurface\", \"surfaceVariant\", \"onSurfaceVariant\",\n \"outline\", \"outlineVariant\",\n \"shadow\", \"scrim\", \"inverseSurface\", \"inverseOnSurface\", \"inversePrimary\",\n \"surfaceDim\", \"surfaceBright\", \n \"surfaceContainerLowest\", \"surfaceContainerLow\", \n \"surfaceContainer\", \"surfaceContainerHigh\", \"surfaceContainerHighest\"\n ];\n\n for (const token of coreTokens) {\n const dynamicColor = MaterialDynamicColors[token];\n if (dynamicColor) {\n colors[token] = hexFromArgb(dynamicColor.getArgb(scheme));\n }\n }\n\n return colors as MaterialTheme;\n}\n\nexport function hexToArgba(hex: string, alpha: number): string {\n const cleanHex = hex.replace('#', '');\n const r = parseInt(cleanHex.substring(0, 2), 16);\n const g = parseInt(cleanHex.substring(2, 4), 16);\n const b = parseInt(cleanHex.substring(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\nexport function hexToRgba (hex: string, alpha: number): string {\n let r = 0, g = 0, b = 0;\n if (hex.length === 4) {\n r = parseInt(hex[1] + hex[1], 16);\n g = parseInt(hex[2] + hex[2], 16);\n b = parseInt(hex[3] + hex[3], 16);\n } else if (hex.length === 7) {\n r = parseInt(hex.slice(1, 3), 16);\n g = parseInt(hex.slice(3, 5), 16);\n b = parseInt(hex.slice(5, 7), 16);\n }\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n};\n\nexport function isDarkBackground(hex: string): boolean {\n const cleanHex = hex.replace('#', '');\n const r = parseInt(cleanHex.substring(0, 2), 16);\n const g = parseInt(cleanHex.substring(2, 4), 16);\n const b = parseInt(cleanHex.substring(4, 6), 16);\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n return luma < 128;\n};","\"use client\"\nimport { createContext, useContext, useState, useEffect, useMemo, useRef } from \"react\";\nimport { DefaultColorScheme, MaterialTheme, ThemeContextType, ThemeProviderProps } from \"./types\";\nimport { createModernTheme } from \"./utils\";\n\nexport const ThemeContext = createContext<ThemeContextType | null>(null);\nconst STATIC_FALLBACK_THEME = createModernTheme('#6750A4', false);\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({ \n children, \n seedColor = '#6750A4',\n defaultColorScheme = 'auto' \n}) => {\n const currentSeed = useRef(seedColor);\n \n const [systemTheme, setSystemTheme] = useState<DefaultColorScheme>(defaultColorScheme);\n\n const [themeColors, setThemeColorsState] = useState<MaterialTheme>(() => {\n let isDark = defaultColorScheme === 'dark';\n if (defaultColorScheme === 'auto' && typeof window !== 'undefined') {\n isDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n }\n return createModernTheme(currentSeed.current, isDark);\n });\n\n useEffect(() => {\n if (systemTheme === 'auto' && typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleSystemChange = (e: MediaQueryListEvent) => {\n setThemeColorsState(createModernTheme(currentSeed.current, e.matches));\n };\n mediaQuery.addEventListener('change', handleSystemChange);\n return () => mediaQuery.removeEventListener('change', handleSystemChange);\n }\n }, [systemTheme]);\n\n const contextValue: ThemeContextType = useMemo(() => ({\n themeColors,\n systemTheme,\n setThemeColors: (newSeed: string) => {\n currentSeed.current = newSeed;\n let isDark = systemTheme === 'dark';\n if (systemTheme === 'auto') {\n isDark = typeof window !== 'undefined' \n ? window.matchMedia('(prefers-color-scheme: dark)').matches \n : false;\n }\n setThemeColorsState(createModernTheme(newSeed, isDark));\n },\n setColorScheme: (scheme: DefaultColorScheme) => {\n setSystemTheme(scheme);\n let isDark = scheme === 'dark';\n if (scheme === 'auto') {\n isDark = typeof window !== 'undefined' \n ? window.matchMedia('(prefers-color-scheme: dark)').matches \n : false;\n }\n setThemeColorsState(createModernTheme(currentSeed.current, isDark));\n }\n }), [themeColors, systemTheme]);\n\n return (\n <ThemeContext.Provider value={contextValue}>\n {children}\n </ThemeContext.Provider>\n );\n};\n\nexport const useGlobalTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext);\n if (!context) {\n return {\n themeColors: STATIC_FALLBACK_THEME,\n systemTheme: 'auto',\n setThemeColors: () => { throw new Error(\"[@zaide6137/m3-components-web] Wrap your app in <ThemeProvider>.\"); },\n setColorScheme: () => { throw new Error(\"[@zaide6137/m3-components-web] Wrap your app in <ThemeProvider>.\"); }\n };\n }\n return context;\n};","\"use client\"\nimport { useGlobalTheme } from '@core/theme';\nimport { AnimatePresence, motion, Transition, Variants } from 'framer-motion';\nimport React, { forwardRef, useImperativeHandle, useMemo, useState } from 'react';\nimport { Calendar, momentLocalizer } from 'react-big-calendar';\nimport moment from 'moment';\nimport { BigCalendarToolbar } from './BigCalendarToolbar';\nimport { BigCalendarEvent } from './BigCalendarEvent';\nimport { hexToRgba } from '../../core/theme';\nimport './styles.css'\n\nexport namespace BigCalendar {\n export type Props = {\n currentDate?: Date;\n\n filterOptions: Types.FilterOptions;\n events: Types.EventItem[];\n\n toolBar?: (currentSelectedDate: Date) => React.ReactNode;\n eventLayout?: (event: Types.EventItem) => React.ReactNode;\n filterBar?: (filterOptions: Types.FilterOptions) => React.ReactNode;\n filterBy?: Types.FilterOptions;\n\n backgroundMode: Types.Mode;\n defaultView?: Types.ViewMode\n\n enableAnimations?: boolean;\n slideVariants?: Variants;\n transition?: Transition<any>\n\n onEventClicked?: (event: any) => void;\n };\n\n export namespace Toolbar {\n export interface Props {\n date: Date;\n onPrev: () => void;\n onNext: () => void;\n onToday: () => void;\n view: Types.ViewMode;\n onViewChange: (view: Types.ViewMode) => void;\n }\n }\n\n export namespace Types {\n export type FilterOptions = string[]\n export type Mode = 'card' | 'transparent'\n export type ViewMode = 'month' | 'week' | 'day'\n export type EventItem = {\n eventStart: Date;\n eventEnd: Date;\n\n eventTitle: string;\n eventCategory: string[];\n\n eventSeedColor?: string;\n eventStyle?: EventStyle;\n eventStyleFilled?: boolean;\n\n eventTrailingIcon?: React.ReactNode;\n\n }\n export type EventStyle = {\n contentColor: string;\n backgroundColor: string;\n }\n }\n\n export interface Methods {\n previousMonth: () => void;\n nextMonth: () => void;\n jumpToNow: () => void;\n }\n}\n\n\nexport const BigCalendar = forwardRef<BigCalendar.Methods, BigCalendar.Props>((props, ref) => {\n const {\n currentDate,\n filterOptions,\n events,\n toolBar,\n filterBar,\n filterBy,\n backgroundMode,\n defaultView = 'month',\n enableAnimations = true,\n slideVariants = {\n enter: (direction: number) => ({\n x: direction > 0 ? '10%' : '-10%',\n opacity: 0,\n }),\n center: {\n zIndex: 1,\n x: 0,\n opacity: 1,\n },\n exit: (direction: number) => ({\n zIndex: 0,\n x: direction < 0 ? '10%' : '-10%',\n opacity: 0,\n })\n },\n transition = { type: \"spring\", stiffness: 300, damping: 30, opacity: { duration: 0.2 } },\n onEventClicked\n } = props;\n\n const { themeColors } = useGlobalTheme();\n const _date: Date = !currentDate ? new Date() : new Date(currentDate);\n const _localizer = momentLocalizer(moment);\n\n const _calendarEvents = useMemo(() => {\n if (!events) return [];\n return events\n .filter(item => {\n if (!filterBy || filterBy.length === 0 || filterBy.includes(\"All\")) return true;\n return filterBy.every(tag => item.eventCategory?.includes(tag));\n })\n .map(item => {\n const { eventTitle, eventStart, eventEnd, ...resourceData } = item;\n return {\n title: eventTitle,\n start: new Date(eventStart),\n end: new Date(eventEnd),\n resource: resourceData,\n };\n });\n }, [events, filterBy]);\n\n const _calendarComponents = useMemo(() => ({\n event: (props: any) => (\n <BigCalendarEvent\n {...props}\n onMouseEnter={() => { }}\n onMouseLeave={() => { }}\n />\n )\n }), []);\n\n const [_direction, _setDirection] = useState(0);\n const [_currentDate, _setCurrentDate] = useState(_date);\n const [_view, _setView] = useState<BigCalendar.Types.ViewMode>(defaultView);\n const [_filter, _setFilter] = useState<BigCalendar.Types.FilterOptions>(filterOptions);\n\n const handlePreviousMonth = () => {\n _setDirection(-1);\n _setCurrentDate(moment(_currentDate).subtract(1, _view).toDate());\n };\n const handleNextMonth = () => {\n _setDirection(1);\n _setCurrentDate(moment(_currentDate).add(1, _view).toDate());\n };\n const handleJumpToNow = () => {\n _setDirection(0);\n _setCurrentDate(new Date());\n };\n\n useImperativeHandle(ref, () => ({\n previousMonth: handlePreviousMonth,\n nextMonth: handleNextMonth,\n jumpToNow: handleJumpToNow,\n }));\n\n return (\n <motion.div\n layout\n style={{\n backgroundColor: themeColors.surfaceContainerHigh,\n borderColor: themeColors.outlineVariant,\n '--m3-primary': themeColors.primary,\n '--m3-on-primary': themeColors.onPrimary,\n '--m3-outline-variant': themeColors.outlineVariant,\n '--m3-on-surface': themeColors.onSurface,\n '--m3-on-surface-variant': themeColors.onSurfaceVariant,\n '--m3-today-highlight': hexToRgba(themeColors.primary, 0.03)\n } as React.CSSProperties }\n className='m3-components-bigcalendar'\n >\n <div\n className='m3-components-bigcalendar-w1'\n >\n <BigCalendarToolbar\n date={_currentDate}\n view={_view}\n onViewChange={_setView}\n onPrev={handlePreviousMonth}\n onNext={handleNextMonth}\n onToday={handleJumpToNow}\n />\n\n {filterBar ? (\n filterBar(filterOptions)\n ) : (\n <div\n className='m3-components-bigcalendar-filterbar-w1'\n >\n {filterOptions.map(f => (\n <button\n key={f}\n onClick={() => {\n _setFilter((prev) =>\n prev.includes(f) ? prev.filter(item => item !== f) : [...prev, f]\n );\n }}\n className=\"m3-components-bigcalendar-filterbar-filterchip\"\n style={{\n backgroundColor: _filter.includes(f) ? themeColors.onSurface : 'transparent',\n color: _filter.includes(f) ? themeColors.surface : themeColors.onSurfaceVariant,\n borderColor: _filter.includes(f) ? themeColors.onSurface : themeColors.outlineVariant\n }}\n >\n {f}\n </button>\n ))}\n </div>\n )}\n </div>\n\n <div style={{ backgroundColor: themeColors.outlineVariant }} className='m3-components-bigcalendar-divider'></div>\n\n <div className='rbc-container-wrapper m3-components-bigcalendar-w2'>\n <AnimatePresence initial={false} custom={_direction} mode=\"wait\">\n <motion.div\n key={_currentDate.toISOString()}\n custom={_direction}\n variants={slideVariants}\n initial=\"enter\"\n animate=\"center\"\n exit=\"exit\"\n transition={transition}\n className=\"m3-components-bigcalendar-viewport\"\n >\n <Calendar\n localizer={_localizer}\n events={_calendarEvents}\n date={_currentDate}\n view={_view}\n onNavigate={(d) => _setCurrentDate(d)}\n onView={(v) => { if (v === 'month' || v === 'week' || v === 'day') _setView(v); }}\n onSelectEvent={(event) => onEventClicked?.(event)}\n toolbar={false}\n components={_calendarComponents}\n eventPropGetter={() => ({ style: { backgroundColor: 'transparent', border: 'none', padding: '1px 2px' } })}\n />\n </motion.div>\n </AnimatePresence>\n </div>\n </motion.div>\n );\n});","import { useState } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport moment from 'moment';\nimport { useGlobalTheme } from '@core/theme';\nimport { BigCalendar } from './BigCalendar';\nimport { Button } from '../button';\nimport './styles.css'\n\nexport const BigCalendarToolbar = ({ date, onPrev, onNext, onToday, view, onViewChange }: BigCalendar.Toolbar.Props) => {\n const { themeColors } = useGlobalTheme();\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n const realToday = moment();\n const todayMonthStr = realToday.format('MMM').toUpperCase();\n const todayDateStr = realToday.format('DD');\n const displayMonthYear = moment(date).format('MMMM YYYY');\n const currentWeekNum = Math.ceil(realToday.date() / 7);\n\n const viewLabel = view.charAt(0).toUpperCase() + view.slice(1);\n\n return (\n <div className=\"m3-components-bigcalendar-toolbar\">\n\n <div className=\"m3-components-bigcalendar-toolbar-w1\">\n <div className=\"m3-components-bigcalendar-toolbar-date-box\" style={{ backgroundColor: themeColors.surfaceContainerLowest, borderColor: themeColors.outlineVariant }}>\n <div className=\"m3-components-bigcalendar-toolbar-w2\" style={{ backgroundColor: themeColors.primary }}>\n <span className=\"m3-components-bigcalendar-toolbar-date-month\" style={{ color: themeColors.onPrimary }}>{todayMonthStr}</span>\n </div>\n <span className=\"m3-components-bigcalendar-toolbar-date-day\" style={{ color: themeColors.onSurface }}>{todayDateStr}</span>\n </div>\n <div className=\"m3-components-bigcalendar-toolbar-w3\">\n <div className=\"m3-components-bigcalendar-toolbar-w4\">\n <div className=\"m3-components-bigcalendar-toolbar-w5\">\n <h1 className=\"m3-components-bigcalendar-toolbar-title\" style={{ color: themeColors.onSurface }}>{displayMonthYear}</h1>\n </div>\n </div>\n <span className=\"m3-components-bigcalendar-toolbar-week-badge\" style={{ color: themeColors.onSurfaceVariant, borderColor: themeColors.outlineVariant }}>Week {currentWeekNum}</span>\n </div>\n </div>\n\n <div className=\"m3-components-bigcalendar-toolbar-w6\">\n <div className=\"m3-components-bigcalendar-toolbar-nav-group\" style={{ borderColor: themeColors.outlineVariant }}>\n <button onClick={onPrev} className=\"m3-components-bigcalendar-toolbar-nav-prev\" style={{ borderColor: themeColors.outlineVariant, color: themeColors.onSurface }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={2} stroke=\"currentColor\" className=\"m3-components-bigcalendar-toolbar-nav-icon\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M15.75 19.5L8.25 12l7.5-7.5\" /></svg>\n </button>\n <button onClick={onToday} className=\"m3-components-bigcalendar-toolbar-nav-today\" style={{ color: themeColors.onSurface }}>\n Today\n </button>\n <button onClick={onNext} className=\"m3-components-bigcalendar-toolbar-nav-next\" style={{ borderColor: themeColors.outlineVariant, color: themeColors.onSurface }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={2} stroke=\"currentColor\" className=\"m3-components-bigcalendar-toolbar-nav-icon\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8.25 4.5l7.5 7.5-7.5 7.5\" /></svg>\n </button>\n </div>\n\n <div className=\"m3-components-bigcalendar-toolbar-w7\">\n <button\n onClick={() => setIsDropdownOpen(!isDropdownOpen)}\n className=\"m3-components-bigcalendar-toolbar-dropdown-btn\"\n style={{ borderColor: themeColors.outlineVariant, color: themeColors.onSurface }}\n >\n <span className=\"m3-components-bigcalendar-toolbar-dropdown-label\">View by:</span>\n {viewLabel}\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={2} stroke=\"currentColor\" className={`m3-components-bigcalendar-toolbar-dropdown-icon ${isDropdownOpen ? 'rotate-180' : ''}`}><path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19.5 8.25l-7.5 7.5-7.5-7.5\" /></svg>\n </button>\n\n <AnimatePresence>\n {isDropdownOpen && (\n <>\n <div className=\"m3-components-bigcalendar-toolbar-dropdown-backdrop\" onClick={() => setIsDropdownOpen(false)}></div>\n <motion.div\n initial={{ opacity: 0, y: -10, scale: 0.95 }}\n animate={{ opacity: 1, y: 0, scale: 1 }}\n exit={{ opacity: 0, y: -10, scale: 0.95 }}\n transition={{ duration: 0.15 }}\n className=\"m3-components-bigcalendar-toolbar-dropdown-menu\"\n style={{ backgroundColor: themeColors.surfaceContainerHigh, borderColor: themeColors.outlineVariant }}\n >\n {(['month', 'week', 'day'] as const).map(v => (\n <button\n key={v}\n onClick={() => { onViewChange(v); setIsDropdownOpen(false); }}\n className=\"m3-components-bigcalendar-toolbar-dropdown-item\"\n style={{ color: view === v ? themeColors.primary : themeColors.onSurface }}\n >\n {v.charAt(0).toUpperCase() + v.slice(1)}\n </button>\n ))}\n </motion.div>\n </>\n )}\n </AnimatePresence>\n </div>\n <Button\n type=\"filled\"\n shape=\"rounded-lg\"\n text=\"+ Create\"\n onClick={() => { }}\n />\n </div>\n\n </div>\n );\n};","import { motion } from \"framer-motion\";\nimport { hexToArgba, useGlobalTheme } from \"@core/theme\";\nimport { forwardRef } from \"react\";\nimport './styles.css';\n\nexport namespace Button {\n export interface Props {\n className?: string;\n shape: Types.Shape;\n type: Types.Type;\n hoverEffect?: boolean;\n text: string;\n icon?: React.ReactNode;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n disabled?: boolean;\n loading?: boolean;\n }\n\n export namespace Types {\n export type Shape = \"rounded-full\" | \"rounded-sm\" | \"rounded-md\" | \"rounded-lg\"\n export type Type = \"outlined\" | \"filled\"\n }\n\n export interface Methods {\n\n }\n}\n\nexport const Button = forwardRef<Button.Methods, Button.Props>((props, ref) => {\n const {\n className,\n shape,\n type,\n hoverEffect = true,\n text,\n icon,\n onClick,\n disabled,\n loading = false\n } = props\n const { themeColors } = useGlobalTheme();\n\n const styles = disabled\n ? (type === \"filled\"\n ? {\n backgroundColor: hexToArgba(themeColors.onSurface, 0.12),\n color: hexToArgba(themeColors.onSurface, 0.38),\n border: \"none\"\n }\n : {\n backgroundColor: \"transparent\",\n color: hexToArgba(themeColors.onSurface, 0.38),\n border: `1px solid ${hexToArgba(themeColors.onSurface, 0.12)}`\n })\n : (type === \"filled\"\n ? {\n backgroundColor: themeColors.primary,\n color: themeColors.onPrimary,\n border: \"none\"\n }\n : {\n backgroundColor: \"transparent\",\n color: themeColors.primary,\n border: `1px solid ${themeColors.primary}`\n });\n\n const baseRadius = 40;\n const hoverRadius = shape === \"rounded-full\" ? 32 : shape === \"rounded-lg\" ? 12 : shape === \"rounded-md\" ? 8 : 4;\n\n return (\n <motion.button\n disabled={disabled || loading}\n onClick={!disabled && !loading ? onClick : undefined}\n className={`${className || \"\"} m3-components-button`}\n style={{\n backgroundColor: styles.backgroundColor,\n color: styles.color,\n border: styles.border,\n borderRadius: '40px',\n }}\n initial={{ borderRadius: baseRadius }}\n animate={{ borderRadius: baseRadius }}\n whileHover={!disabled && !loading && hoverEffect ? {\n borderRadius: hoverRadius,\n backgroundColor: type === \"outlined\" ? hexToArgba(themeColors.primary, 0.08) : themeColors.primary,\n } : {}}\n transition={{ ease: [\"easeIn\", \"easeOut\"], duration: 0.2 }}\n >\n <div className=\"m3-components-button-content\">\n {loading && (\n <span style={{ marginRight: '4px' }}>\n ... {/* TODO: IMPLEMENT LOADING SPINNER HERE */}\n </span>\n )}\n {icon && <span className=\"m3-components-button-icon\">{icon}</span>}\n <span className=\"m3-components-button-text\">{text}</span>\n </div>\n </motion.button>\n );\n})","import { useState, useEffect, useRef } from 'react';\nimport { motion } from 'framer-motion';\nimport { hexToArgba } from \"@core/theme\";\nimport { BigCalendar } from './BigCalendar';\n\nexport const BigCalendarEvent = ({\n event,\n onMouseEnter,\n onMouseLeave\n}: {\n event: any;\n onMouseEnter: (e: React.MouseEvent, item: BigCalendar.Types.EventItem) => void;\n onMouseLeave: () => void;\n}) => {\n const item = event.resource as BigCalendar.Types.EventItem;\n\n const isFilled = item.eventStyleFilled ?? true;\n const style = item.eventStyle || {\n backgroundColor: item.eventSeedColor || '#6750A4',\n contentColor: '#FFFFFF'\n };\n\n const bgCol = isFilled ? style.backgroundColor : hexToArgba(style.backgroundColor, 0.15);\n const borderCol = isFilled ? 'transparent' : style.backgroundColor;\n const textCol = isFilled ? style.contentColor : style.backgroundColor;\n\n const ref = useRef<HTMLDivElement>(null);\n const [width, setWidth] = useState(1000);\n\n useEffect(() => {\n if (!ref.current) return;\n const observer = new ResizeObserver((entries) => {\n window.requestAnimationFrame(() => {\n if (entries[0]) setWidth(entries[0].contentRect.width);\n });\n });\n observer.observe(ref.current);\n return () => observer.disconnect();\n }, []);\n\n const showDots = width < 120;\n const showTime = width >= 180;\n const showIcon = width < 280;\n\n return (\n <div ref={ref} className=\"m3-components-bigcalendar-event\">\n {showDots ? (\n <motion.div\n className=\"m3-components-bigcalendar-event-dot\"\n onMouseEnter={(e) => onMouseEnter(e as any, item)}\n onMouseLeave={onMouseLeave}\n style={{\n backgroundColor: bgCol,\n borderColor: borderCol === 'transparent' ? style.backgroundColor : borderCol\n }}\n />\n ) : (\n <motion.div\n initial={{ opacity: 0, scale: 0.98 }}\n animate={{ opacity: 1, scale: 1 }}\n onMouseEnter={(e) => onMouseEnter(e as any, item)}\n onMouseLeave={onMouseLeave}\n className=\"m3-components-bigcalendar-event-chip\"\n style={{\n backgroundColor: bgCol,\n color: textCol,\n border: isFilled ? 'none' : `1.5px solid ${borderCol}`\n }}\n >\n <div className=\"m3-components-bigcalendar-event-content\">\n <span className=\"m3-components-bigcalendar-event-title\">\n {item.eventTitle}\n </span>\n\n {showTime && (\n <span className=\"m3-components-bigcalendar-event-time\">\n {item.eventStart.toLocaleString('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true \n })}\n </span>\n )}\n\n {/* TODO: Implement Trailing Icon Implementation and rename it to Trailing Layout */}\n {item.eventTrailingIcon && (\n <div\n className=\"\"\n style={{ color: textCol }}\n >\n {item.eventTrailingIcon}\n </div>\n )}\n </div>\n </motion.div>\n )}\n </div>\n );\n};"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/moment/moment.js","../node_modules/@material/material-color-utilities/utils/math_utils.ts","../node_modules/@material/material-color-utilities/utils/color_utils.ts","../node_modules/@material/material-color-utilities/hct/viewing_conditions.ts","../node_modules/@material/material-color-utilities/hct/cam16.ts","../node_modules/@material/material-color-utilities/hct/hct_solver.ts","../node_modules/@material/material-color-utilities/hct/hct.ts","../node_modules/@material/material-color-utilities/contrast/contrast.ts","../node_modules/@material/material-color-utilities/dislike/dislike_analyzer.ts","../node_modules/@material/material-color-utilities/dynamiccolor/dynamic_color.ts","../node_modules/@material/material-color-utilities/palettes/tonal_palette.ts","../node_modules/@material/material-color-utilities/temperature/temperature_cache.ts","../node_modules/@material/material-color-utilities/dynamiccolor/contrast_curve.ts","../node_modules/@material/material-color-utilities/dynamiccolor/tone_delta_pair.ts","../node_modules/@material/material-color-utilities/dynamiccolor/variant.ts","../node_modules/@material/material-color-utilities/dynamiccolor/color_spec_2021.ts","../node_modules/@material/material-color-utilities/dynamiccolor/color_spec_2025.ts","../node_modules/@material/material-color-utilities/dynamiccolor/material_dynamic_colors.ts","../node_modules/@material/material-color-utilities/dynamiccolor/dynamic_scheme.ts","../node_modules/@material/material-color-utilities/scheme/scheme_vibrant.ts","../node_modules/@material/material-color-utilities/utils/string_utils.ts","../src/core/theme/utils.ts","../src/core/theme/ThemeProvider.tsx","../src/components/big-calendar/BigCalendar.tsx","../src/components/big-calendar/BigCalendarToolbar.tsx","../src/components/button/Button.tsx","../src/components/big-calendar/BigCalendarEvent.tsx"],"names":["require_moment","__commonJSMin","exports","module","global","factory","hookCallback","hooks","setHookCallback","callback","isArray","input","isObject","hasOwnProp","a","b","isObjectEmpty","obj","k","isUndefined","isNumber","isDate","map","arr","fn","res","i","arrLen","extend","createUTC","format","locale","strict","createLocalOrUTC","defaultParsingFlags","getParsingFlags","m","some","fun","t","len","isValid","flags","parsedParts","isNowValid","createInvalid","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","Moment","config","isMoment","warn","msg","deprecate","firstTime","args","arg","key","argLen","deprecations","deprecateSimple","name","isFunction","set","mergeConfigs","parentConfig","childConfig","Locale","keys","defaultCalendar","calendar","mom","now","output","zeroFill","number","targetLength","forceSign","absNumber","zerosToFill","sign","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","removeFormattingTokens","makeFormatFunction","array","length","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","longDateFormat","formatUpper","tok","defaultInvalidDate","invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","defaultRelativeTime","relativeTime","withoutSuffix","string","isFuture","pastFuture","diff","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedInput","normalizedProp","priorities","getPrioritizedUnits","unitsObj","u","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","regexes","addRegexToken","regex","strictRegex","isStrict","localeData","getParseRegexForToken","unescapeFormat","s","regexEscape","matched","p1","p2","p3","p4","absFloor","toInt","argumentForCoercion","coercedNumber","value","tokens","addParseToken","tokenLen","addWeekParseToken","addTimeToArrayFromToken","isLeapYear","year","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","y","daysInYear","getSetYear","makeGetSet","getIsLeapYear","unit","keepTime","set$1","get","d","isUTC","month","date","stringGet","stringSet","prioritized","prioritizedLen","mod","n","x","indexOf","o","daysInMonth","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","localeMonthsShort","handleStrictParse","monthName","ii","llc","localeMonthsParse","setMonth","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","shortP","longP","createDate","h","M","ms","createUTCDate","firstWeekOffset","dow","doy","fwd","fwdlw","dayOfYearFromWeeks","week","weekday","localWeekday","weekOffset","dayOfYear","resYear","resDayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","weekdays","localeWeekdaysShort","localeWeekdaysMin","handleStrictParse$1","weekdayName","localeWeekdaysParse","getSetDayOfWeek","day","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","weekdaysShortRegex","weekdaysMinRegex","minPieces","minp","shortp","longp","hFormat","kFormat","meridiem","lowercase","matchMeridiem","kInput","pos","pos1","pos2","localeIsPM","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","hours","minutes","isLower","baseConfig","locales","localeFamilies","globalLocale","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","split","loadLocale","isLocaleNameSane","oldLocale","aliasedRequire","__require","getSetGlobalLocale","values","data","getLocale","defineLocale","updateLocale","tmpLocale","listLocales","checkOverflow","overflow","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","rfc2822","obsOffsets","configFromISO","l","match","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","defaults","c","currentDateArray","nowValue","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","w","weekYear","temp","weekdayOverflow","curWeek","createLocal","skipped","stringLength","totalParsedInputLength","era","meridiemFixWrap","hour","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","min","max","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","months","weeks","days","seconds","milliseconds","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","offsetFromString","chunkOffset","matcher","matches","chunk","parts","cloneWithOffset","model","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","createAdder","direction","period","dur","tmp","isAdding","updateOffset","add","subtract","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","property","propertyLen","arrayTest","dataTypeTest","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","clone","isAfter","localInput","isBefore","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","anchor2","adjust","toString","toISOString","keepOffset","utc","inspect","zone","prefix","datetime","suffix","inputString","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOf","startOfDate","endOf","valueOf","unix","toDate","toArray","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","localeEras","eras","localeErasParse","eraName","abbr","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","erasAbbrRegex","erasNarrowRegex","abbrPieces","namePieces","narrowPieces","erasName","erasAbbr","erasNarrow","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetSecond","getSetMillisecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","preParsePostFormat","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","mathAbs","abs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","round","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","humanize","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","total","totalSign","ymSign","daysSign","hmsSign","proto$2","signum","num","lerp","start","stop","amount","clampInt","clampDouble","sanitizeDegreesInt","degrees","sanitizeDegreesDouble","matrixMultiply","row","matrix","SRGB_TO_XYZ","XYZ_TO_SRGB","WHITE_POINT_D65","argbFromRgb","red","green","blue","argbFromLinrgb","linrgb","r","delinearized","g","redFromArgb","argb","greenFromArgb","blueFromArgb","argbFromXyz","z","linearR","linearG","linearB","xyzFromArgb","linearized","labFromArgb","whitePoint","xNormalized","yNormalized","zNormalized","fx","labF","fy","fz","argbFromLstar","lstar","yFromLstar","component","lstarFromArgb","labInvf","lstarFromY","rgbComponent","normalized","whitePointD65","e","kappa","ft","ft3","ViewingConditions","_ViewingConditions","adaptingLuminance","backgroundLstar","surround","discountingIlluminant","xyz","rW","gW","bW","f","nc","rgbD","k4","k4F","fl","nbb","ncb","rgbAFactors","rgbA","aw","fLRoot","Cam16","_Cam16","hue","chroma","q","jstar","astar","bstar","dJ","dA","dB","dEPrime","viewingConditions","redL","greenL","blueL","rC","gC","bC","rD","gD","bD","rAF","gAF","bAF","rA","gA","bA","atanDegrees","hueRadians","ac","huePrime","eHue","alpha","mstar","hRad","hSin","hCos","gamma","rCBase","gCBase","bCBase","rF","gF","bF","J","Q","C","HctSolver","_HctSolver","angle","af","scaledDiscount","deltaAB","deltaAC","source","mid","target","coordinate","axis","kR","kG","kB","coordA","coordB","targetHue","left","right","leftHue","rightHue","initialized","uncut","midHue","segment","lPlane","rPlane","mPlane","midPlaneCoordinate","adapted","adaptedAbs","tInnerCoeff","iterationRound","jNormalized","rCScaled","gCScaled","bCScaled","fnj","hueDegrees","exactAnswer","Hct","_Hct","tone","newHue","newChroma","newTone","propertyName","cam","vc","viewedInVc","recastInVc","Contrast","_Contrast","toneA","toneB","y1","y2","lighter","darker","ratio","darkY","lightY","realContrast","delta","returnValue","lighterSafe","darkerSafe","DislikeAnalyzer","_DislikeAnalyzer","hct","huePasses","chromaPasses","tonePasses","validateExtendedColor","originalColor","specVersion","extendedColor","extendSpecVersion","originlColor","DynamicColor","chromaMultiplier","background","secondBackground","contrastCurve","toneDeltaPair","_DynamicColor","palette","isBackground","scheme","cachedAnswer","answer","getSpec","bgTone","lighterTone","darkerTone","lighterRatio","darkerRatio","negligibleDifference","ColorCalculationDelegateImpl2021","color","decreasingContrast","roleA","roleB","polarity","stayTogether","aIsNearer","nearer","farther","amNearer","expansionDir","nTone","fTone","bg","nContrastCurve","fContrastCurve","nContrast","fContrast","desiredRatio","bg1","bg2","bgTone1","bgTone2","upper","lower","lightOption","darkOption","availables","ColorCalculationDelegateImpl2025","constraint","absoluteDelta","amRoleA","selfRole","refRole","selfTone","refTone","relativeDelta","selfContrast","spec2021","spec2025","TonalPalette","_TonalPalette","keyColor","KeyColor","argb1","argb2","red1","green1","blue1","red2","green2","blue2","requestedChroma","lowerTone","upperTone","midTone","isAscending","TemperatureCache","_TemperatureCache","hcts","temperaturesByHct","count","divisions","startHue","startHct","lastTemp","allColors","absoluteTotalTempDelta","tempDelta","hueAddend","tempStep","totalTempDelta","desiredTotalTempDeltaForIndex","indexSatisfied","indexAddend","answers","increaseHueCount","decreaseHueCount","coldestHue","coldestTemp","warmestHue","range","startHueIsColdestToWarmest","endHue","directionOfRotation","smallestError","complementRelativeTemp","possibleAnswer","relativeTemp","error","differenceFromColdest","allHcts","colorAtHue","lab","ContrastCurve","low","normal","medium","high","contrastLevel","ToneDeltaPair","Variant","isFidelity","isMonochrome","findDesiredChromaByTone","byDecreasingTone","closestToChroma","chromaPeak","potentialSolution","potentialDelta","currentDelta","ColorSpecDelegateImpl2021","initialTone","proposedHct","tMaxC","lowerBound","upperBound","findBestToneForChroma","tMinC","bestCandidate","newCandidate","getCurve","defaultContrast","ColorSpecDelegateImpl2025","color2025","tempS","MaterialDynamicColors","_MaterialDynamicColors","DynamicScheme","_DynamicScheme","variant","sourceColorHct","hueBreakpoints","hues","size","sourceHue","rotations","rotation","dynamicColor","primaryDim","secondaryDim","tertiaryDim","errorDim","DynamicSchemePalettesDelegateImpl2021","isDark","platform","DynamicSchemePalettesDelegateImpl2025","_DynamicSchemePalettesDelegateImpl2025","neutralHue","expressiveNeutralHue","expressiveNeutralChroma","vibrantNeutralHue","vibrantNeutralChroma","errorHue","SchemeVibrant","hexFromArgb","outParts","part","argbFromHex","hex","isThree","isSix","isEight","parseIntHex","createModernTheme","seedHex","colors","coreTokens","hexToArgba","cleanHex","hexToRgba","isDarkBackground","ThemeContext","createContext","STATIC_FALLBACK_THEME","ThemeProvider","children","seedColor","defaultColorScheme","currentSeed","useRef","systemTheme","setSystemTheme","useState","themeColors","setThemeColorsState","useEffect","mediaQuery","handleSystemChange","contextValue","useMemo","newSeed","jsx","useGlobalTheme","context","useContext","import_moment","Button","forwardRef","props","ref","className","shape","type","hoverEffect","text","icon","onClick","disabled","loading","styles","baseRadius","hoverRadius","motion","jsxs","BigCalendarToolbar","onPrev","onNext","onToday","view","onViewChange","isDropdownOpen","setIsDropdownOpen","realToday","moment","todayMonthStr","todayDateStr","displayMonthYear","currentWeekNum","viewLabel","AnimatePresence","Fragment","BigCalendarEvent","event","onMouseEnter","onMouseLeave","isFilled","style","bgCol","borderCol","textCol","width","setWidth","observer","entries","showDots","showTime","BigCalendar","filterOptions","events","toolBar","filterBar","filterBy","backgroundMode","defaultView","enableAnimations","slideVariants","transition","onEventClicked","_date","_localizer","momentLocalizer","_calendarEvents","tag","eventTitle","eventStart","eventEnd","resourceData","_calendarComponents","_direction","_setDirection","_currentDate","_setCurrentDate","_view","_setView","_filter","_setFilter","handlePreviousMonth","handleNextMonth","handleJumpToNow","useImperativeHandle","prev","Calendar","v"],"mappings":"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AA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,iBAAA,CAAsB,gBAAA,CAC5C,kBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,iBAAA,CAAsB,mBAC5C,kBAAA,CAAsB,iBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,kBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,kBAAA,CAAsB,iBAAA,CAC5C,kBAAA,CAAsB,iBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,gBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,kBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,kBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,kBAAA,CAC5C,gBAAA,CAAsB,kBAAA,CAAsB,kBAAA,CAC5C,kBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,iBAAA,CAC5C,iBAAA,CAAsB,iBAAA,CAAsB,kBAAA,CAC5C,iBAAA,CAAsB,mBAAsB,iBAAA,CAC5C,kBAAA,CAAsB,kBAAA,CAAsB,gBAAA,CAC5C,i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","file":"index.js","sourcesContent":["//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This file is automatically generated. Do not modify it.\n\n/**\n * Utility methods for mathematical operations.\n */\n\n/**\n * The signum function.\n *\n * @return 1 if num > 0, -1 if num < 0, and 0 if num = 0\n */\nexport function signum(num: number): number {\n if (num < 0) {\n return -1;\n } else if (num === 0) {\n return 0;\n } else {\n return 1;\n }\n}\n\n/**\n * The linear interpolation function.\n *\n * @return start if amount = 0 and stop if amount = 1\n */\nexport function lerp(start: number, stop: number, amount: number): number {\n return (1.0 - amount) * start + amount * stop;\n}\n\n/**\n * Clamps an integer between two integers.\n *\n * @return input when min <= input <= max, and either min or max\n * otherwise.\n */\nexport function clampInt(min: number, max: number, input: number): number {\n if (input < min) {\n return min;\n } else if (input > max) {\n return max;\n }\n\n return input;\n}\n\n/**\n * Clamps an integer between two floating-point numbers.\n *\n * @return input when min <= input <= max, and either min or max\n * otherwise.\n */\nexport function clampDouble(min: number, max: number, input: number): number {\n if (input < min) {\n return min;\n } else if (input > max) {\n return max;\n }\n\n return input;\n}\n\n/**\n * Sanitizes a degree measure as an integer.\n *\n * @return a degree measure between 0 (inclusive) and 360\n * (exclusive).\n */\nexport function sanitizeDegreesInt(degrees: number): number {\n degrees = degrees % 360;\n if (degrees < 0) {\n degrees = degrees + 360;\n }\n return degrees;\n}\n\n/**\n * Sanitizes a degree measure as a floating-point number.\n *\n * @return a degree measure between 0.0 (inclusive) and 360.0\n * (exclusive).\n */\nexport function sanitizeDegreesDouble(degrees: number): number {\n degrees = degrees % 360.0;\n if (degrees < 0) {\n degrees = degrees + 360.0;\n }\n return degrees;\n}\n\n/**\n * Sign of direction change needed to travel from one angle to\n * another.\n *\n * For angles that are 180 degrees apart from each other, both\n * directions have the same travel distance, so either direction is\n * shortest. The value 1.0 is returned in this case.\n *\n * @param from The angle travel starts from, in degrees.\n * @param to The angle travel ends at, in degrees.\n * @return -1 if decreasing from leads to the shortest travel\n * distance, 1 if increasing from leads to the shortest travel\n * distance.\n */\nexport function rotationDirection(from: number, to: number): number {\n const increasingDifference = sanitizeDegreesDouble(to - from);\n return increasingDifference <= 180.0 ? 1.0 : -1.0;\n}\n\n/**\n * Distance of two points on a circle, represented using degrees.\n */\nexport function differenceDegrees(a: number, b: number): number {\n return 180.0 - Math.abs(Math.abs(a - b) - 180.0);\n}\n\n/**\n * Multiplies a 1x3 row vector with a 3x3 matrix.\n */\nexport function matrixMultiply(row: number[], matrix: number[][]): number[] {\n const a =\n row[0] * matrix[0][0] + row[1] * matrix[0][1] + row[2] * matrix[0][2];\n const b =\n row[0] * matrix[1][0] + row[1] * matrix[1][1] + row[2] * matrix[1][2];\n const c =\n row[0] * matrix[2][0] + row[1] * matrix[2][1] + row[2] * matrix[2][2];\n return [a, b, c];\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This file is automatically generated. Do not modify it.\n\nimport * as mathUtils from './math_utils.js';\n\n/**\n * Color science utilities.\n *\n * Utility methods for color science constants and color space\n * conversions that aren't HCT or CAM16.\n */\n\nconst SRGB_TO_XYZ = [\n [0.41233895, 0.35762064, 0.18051042],\n [0.2126, 0.7152, 0.0722],\n [0.01932141, 0.11916382, 0.95034478],\n];\n\nconst XYZ_TO_SRGB = [\n [\n 3.2413774792388685,\n -1.5376652402851851,\n -0.49885366846268053,\n ],\n [\n -0.9691452513005321,\n 1.8758853451067872,\n 0.04156585616912061,\n ],\n [\n 0.05562093689691305,\n -0.20395524564742123,\n 1.0571799111220335,\n ],\n];\n\nconst WHITE_POINT_D65 = [95.047, 100.0, 108.883];\n\n/**\n * Converts a color from RGB components to ARGB format.\n */\nexport function argbFromRgb(red: number, green: number, blue: number): number {\n return (255 << 24 | (red & 255) << 16 | (green & 255) << 8 | blue & 255) >>>\n 0;\n}\n\n/**\n * Converts a color from linear RGB components to ARGB format.\n */\nexport function argbFromLinrgb(linrgb: number[]): number {\n const r = delinearized(linrgb[0]);\n const g = delinearized(linrgb[1]);\n const b = delinearized(linrgb[2]);\n return argbFromRgb(r, g, b);\n}\n\n/**\n * Returns the alpha component of a color in ARGB format.\n */\nexport function alphaFromArgb(argb: number): number {\n return argb >> 24 & 255;\n}\n\n/**\n * Returns the red component of a color in ARGB format.\n */\nexport function redFromArgb(argb: number): number {\n return argb >> 16 & 255;\n}\n\n/**\n * Returns the green component of a color in ARGB format.\n */\nexport function greenFromArgb(argb: number): number {\n return argb >> 8 & 255;\n}\n\n/**\n * Returns the blue component of a color in ARGB format.\n */\nexport function blueFromArgb(argb: number): number {\n return argb & 255;\n}\n\n/**\n * Returns whether a color in ARGB format is opaque.\n */\nexport function isOpaque(argb: number): boolean {\n return alphaFromArgb(argb) >= 255;\n}\n\n/**\n * Converts a color from ARGB to XYZ.\n */\nexport function argbFromXyz(x: number, y: number, z: number): number {\n const matrix = XYZ_TO_SRGB;\n const linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z;\n const linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z;\n const linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;\n const r = delinearized(linearR);\n const g = delinearized(linearG);\n const b = delinearized(linearB);\n return argbFromRgb(r, g, b);\n}\n\n/**\n * Converts a color from XYZ to ARGB.\n */\nexport function xyzFromArgb(argb: number): number[] {\n const r = linearized(redFromArgb(argb));\n const g = linearized(greenFromArgb(argb));\n const b = linearized(blueFromArgb(argb));\n return mathUtils.matrixMultiply([r, g, b], SRGB_TO_XYZ);\n}\n\n/**\n * Converts a color represented in Lab color space into an ARGB\n * integer.\n */\nexport function argbFromLab(l: number, a: number, b: number): number {\n const whitePoint = WHITE_POINT_D65;\n const fy = (l + 16.0) / 116.0;\n const fx = a / 500.0 + fy;\n const fz = fy - b / 200.0;\n const xNormalized = labInvf(fx);\n const yNormalized = labInvf(fy);\n const zNormalized = labInvf(fz);\n const x = xNormalized * whitePoint[0];\n const y = yNormalized * whitePoint[1];\n const z = zNormalized * whitePoint[2];\n return argbFromXyz(x, y, z);\n}\n\n/**\n * Converts a color from ARGB representation to L*a*b*\n * representation.\n *\n * @param argb the ARGB representation of a color\n * @return a Lab object representing the color\n */\nexport function labFromArgb(argb: number): number[] {\n const linearR = linearized(redFromArgb(argb));\n const linearG = linearized(greenFromArgb(argb));\n const linearB = linearized(blueFromArgb(argb));\n const matrix = SRGB_TO_XYZ;\n const x =\n matrix[0][0] * linearR + matrix[0][1] * linearG + matrix[0][2] * linearB;\n const y =\n matrix[1][0] * linearR + matrix[1][1] * linearG + matrix[1][2] * linearB;\n const z =\n matrix[2][0] * linearR + matrix[2][1] * linearG + matrix[2][2] * linearB;\n const whitePoint = WHITE_POINT_D65;\n const xNormalized = x / whitePoint[0];\n const yNormalized = y / whitePoint[1];\n const zNormalized = z / whitePoint[2];\n const fx = labF(xNormalized);\n const fy = labF(yNormalized);\n const fz = labF(zNormalized);\n const l = 116.0 * fy - 16;\n const a = 500.0 * (fx - fy);\n const b = 200.0 * (fy - fz);\n return [l, a, b];\n}\n\n/**\n * Converts an L* value to an ARGB representation.\n *\n * @param lstar L* in L*a*b*\n * @return ARGB representation of grayscale color with lightness\n * matching L*\n */\nexport function argbFromLstar(lstar: number): number {\n const y = yFromLstar(lstar);\n const component = delinearized(y);\n return argbFromRgb(component, component, component);\n}\n\n/**\n * Computes the L* value of a color in ARGB representation.\n *\n * @param argb ARGB representation of a color\n * @return L*, from L*a*b*, coordinate of the color\n */\nexport function lstarFromArgb(argb: number): number {\n const y = xyzFromArgb(argb)[1];\n return 116.0 * labF(y / 100.0) - 16.0;\n}\n\n/**\n * Converts an L* value to a Y value.\n *\n * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.\n *\n * L* measures perceptual luminance, a linear scale. Y in XYZ\n * measures relative luminance, a logarithmic scale.\n *\n * @param lstar L* in L*a*b*\n * @return Y in XYZ\n */\nexport function yFromLstar(lstar: number): number {\n return 100.0 * labInvf((lstar + 16.0) / 116.0);\n}\n\n/**\n * Converts a Y value to an L* value.\n *\n * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.\n *\n * L* measures perceptual luminance, a linear scale. Y in XYZ\n * measures relative luminance, a logarithmic scale.\n *\n * @param y Y in XYZ\n * @return L* in L*a*b*\n */\nexport function lstarFromY(y: number): number {\n return labF(y / 100.0) * 116.0 - 16.0;\n}\n\n/**\n * Linearizes an RGB component.\n *\n * @param rgbComponent 0 <= rgb_component <= 255, represents R/G/B\n * channel\n * @return 0.0 <= output <= 100.0, color channel converted to\n * linear RGB space\n */\nexport function linearized(rgbComponent: number): number {\n const normalized = rgbComponent / 255.0;\n if (normalized <= 0.040449936) {\n return normalized / 12.92 * 100.0;\n } else {\n return Math.pow((normalized + 0.055) / 1.055, 2.4) * 100.0;\n }\n}\n\n/**\n * Delinearizes an RGB component.\n *\n * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents\n * linear R/G/B channel\n * @return 0 <= output <= 255, color channel converted to regular\n * RGB space\n */\nexport function delinearized(rgbComponent: number): number {\n const normalized = rgbComponent / 100.0;\n let delinearized = 0.0;\n if (normalized <= 0.0031308) {\n delinearized = normalized * 12.92;\n } else {\n delinearized = 1.055 * Math.pow(normalized, 1.0 / 2.4) - 0.055;\n }\n return mathUtils.clampInt(0, 255, Math.round(delinearized * 255.0));\n}\n\n/**\n * Returns the standard white point; white on a sunny day.\n *\n * @return The white point\n */\nexport function whitePointD65(): number[] {\n return WHITE_POINT_D65;\n}\n\nfunction labF(t: number): number {\n const e = 216.0 / 24389.0;\n const kappa = 24389.0 / 27.0;\n if (t > e) {\n return Math.pow(t, 1.0 / 3.0);\n } else {\n return (kappa * t + 16) / 116;\n }\n}\n\nfunction labInvf(ft: number): number {\n const e = 216.0 / 24389.0;\n const kappa = 24389.0 / 27.0;\n const ft3 = ft * ft * ft;\n if (ft3 > e) {\n return ft3;\n } else {\n return (116 * ft - 16) / kappa;\n }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as utils from '../utils/color_utils.js';\nimport * as math from '../utils/math_utils.js';\n\n/**\n * In traditional color spaces, a color can be identified solely by the\n * observer's measurement of the color. Color appearance models such as CAM16\n * also use information about the environment where the color was\n * observed, known as the viewing conditions.\n *\n * For example, white under the traditional assumption of a midday sun white\n * point is accurately measured as a slightly chromatic blue by CAM16. (roughly,\n * hue 203, chroma 3, lightness 100)\n *\n * This class caches intermediate values of the CAM16 conversion process that\n * depend only on viewing conditions, enabling speed ups.\n */\nexport class ViewingConditions {\n /** sRGB-like viewing conditions. */\n static DEFAULT = ViewingConditions.make();\n\n /**\n * Create ViewingConditions from a simple, physically relevant, set of\n * parameters.\n *\n * @param whitePoint White point, measured in the XYZ color space.\n * default = D65, or sunny day afternoon\n * @param adaptingLuminance The luminance of the adapting field. Informally,\n * how bright it is in the room where the color is viewed. Can be\n * calculated from lux by multiplying lux by 0.0586. default = 11.72,\n * or 200 lux.\n * @param backgroundLstar The lightness of the area surrounding the color.\n * measured by L* in L*a*b*. default = 50.0\n * @param surround A general description of the lighting surrounding the\n * color. 0 is pitch dark, like watching a movie in a theater. 1.0 is a\n * dimly light room, like watching TV at home at night. 2.0 means there\n * is no difference between the lighting on the color and around it.\n * default = 2.0\n * @param discountingIlluminant Whether the eye accounts for the tint of the\n * ambient lighting, such as knowing an apple is still red in green light.\n * default = false, the eye does not perform this process on\n * self-luminous objects like displays.\n */\n static make(\n whitePoint = utils.whitePointD65(),\n adaptingLuminance = (200.0 / Math.PI) * utils.yFromLstar(50.0) / 100.0,\n backgroundLstar = 50.0, surround = 2.0,\n discountingIlluminant = false): ViewingConditions {\n const xyz = whitePoint;\n const rW = xyz[0] * 0.401288 + xyz[1] * 0.650173 + xyz[2] * -0.051461;\n const gW = xyz[0] * -0.250268 + xyz[1] * 1.204414 + xyz[2] * 0.045854;\n const bW = xyz[0] * -0.002079 + xyz[1] * 0.048952 + xyz[2] * 0.953127;\n const f = 0.8 + surround / 10.0;\n const c = f >= 0.9 ? math.lerp(0.59, 0.69, (f - 0.9) * 10.0) :\n math.lerp(0.525, 0.59, (f - 0.8) * 10.0);\n let d = discountingIlluminant ?\n 1.0 :\n f * (1.0 - (1.0 / 3.6) * Math.exp((-adaptingLuminance - 42.0) / 92.0));\n d = d > 1.0 ? 1.0 : d < 0.0 ? 0.0 : d;\n const nc = f;\n const rgbD = [\n d * (100.0 / rW) + 1.0 - d,\n d * (100.0 / gW) + 1.0 - d,\n d * (100.0 / bW) + 1.0 - d,\n ];\n const k = 1.0 / (5.0 * adaptingLuminance + 1.0);\n const k4 = k * k * k * k;\n const k4F = 1.0 - k4;\n const fl = k4 * adaptingLuminance +\n 0.1 * k4F * k4F * Math.cbrt(5.0 * adaptingLuminance);\n const n = utils.yFromLstar(backgroundLstar) / whitePoint[1];\n const z = 1.48 + Math.sqrt(n);\n const nbb = 0.725 / Math.pow(n, 0.2);\n const ncb = nbb;\n const rgbAFactors = [\n Math.pow((fl * rgbD[0] * rW) / 100.0, 0.42),\n Math.pow((fl * rgbD[1] * gW) / 100.0, 0.42),\n Math.pow((fl * rgbD[2] * bW) / 100.0, 0.42),\n ];\n const rgbA = [\n (400.0 * rgbAFactors[0]) / (rgbAFactors[0] + 27.13),\n (400.0 * rgbAFactors[1]) / (rgbAFactors[1] + 27.13),\n (400.0 * rgbAFactors[2]) / (rgbAFactors[2] + 27.13),\n ];\n const aw = (2.0 * rgbA[0] + rgbA[1] + 0.05 * rgbA[2]) * nbb;\n return new ViewingConditions(\n n, aw, nbb, ncb, c, nc, rgbD, fl, Math.pow(fl, 0.25), z);\n }\n\n /**\n * Parameters are intermediate values of the CAM16 conversion process. Their\n * names are shorthand for technical color science terminology, this class\n * would not benefit from documenting them individually. A brief overview\n * is available in the CAM16 specification, and a complete overview requires\n * a color science textbook, such as Fairchild's Color Appearance Models.\n */\n private constructor(\n public n: number, public aw: number, public nbb: number,\n public ncb: number, public c: number, public nc: number,\n public rgbD: number[], public fl: number, public fLRoot: number,\n public z: number) {}\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as utils from '../utils/color_utils.js';\nimport * as math from '../utils/math_utils.js';\n\nimport {ViewingConditions} from './viewing_conditions.js';\n\n/**\n * CAM16, a color appearance model. Colors are not just defined by their hex\n * code, but rather, a hex code and viewing conditions.\n *\n * CAM16 instances also have coordinates in the CAM16-UCS space, called J*, a*,\n * b*, or jstar, astar, bstar in code. CAM16-UCS is included in the CAM16\n * specification, and should be used when measuring distances between colors.\n *\n * In traditional color spaces, a color can be identified solely by the\n * observer's measurement of the color. Color appearance models such as CAM16\n * also use information about the environment where the color was\n * observed, known as the viewing conditions.\n *\n * For example, white under the traditional assumption of a midday sun white\n * point is accurately measured as a slightly chromatic blue by CAM16. (roughly,\n * hue 203, chroma 3, lightness 100)\n */\nexport class Cam16 {\n /**\n * All of the CAM16 dimensions can be calculated from 3 of the dimensions, in\n * the following combinations:\n * - {j or q} and {c, m, or s} and hue\n * - jstar, astar, bstar\n * Prefer using a static method that constructs from 3 of those dimensions.\n * This constructor is intended for those methods to use to return all\n * possible dimensions.\n *\n * @param hue\n * @param chroma informally, colorfulness / color intensity. like saturation\n * in HSL, except perceptually accurate.\n * @param j lightness\n * @param q brightness; ratio of lightness to white point's lightness\n * @param m colorfulness\n * @param s saturation; ratio of chroma to white point's chroma\n * @param jstar CAM16-UCS J coordinate\n * @param astar CAM16-UCS a coordinate\n * @param bstar CAM16-UCS b coordinate\n */\n constructor(\n readonly hue: number, readonly chroma: number, readonly j: number,\n readonly q: number, readonly m: number, readonly s: number,\n readonly jstar: number, readonly astar: number, readonly bstar: number) {}\n\n /**\n * CAM16 instances also have coordinates in the CAM16-UCS space, called J*,\n * a*, b*, or jstar, astar, bstar in code. CAM16-UCS is included in the CAM16\n * specification, and is used to measure distances between colors.\n */\n distance(other: Cam16): number {\n const dJ = this.jstar - other.jstar;\n const dA = this.astar - other.astar;\n const dB = this.bstar - other.bstar;\n const dEPrime = Math.sqrt(dJ * dJ + dA * dA + dB * dB);\n const dE = 1.41 * Math.pow(dEPrime, 0.63);\n return dE;\n }\n\n /**\n * @param argb ARGB representation of a color.\n * @return CAM16 color, assuming the color was viewed in default viewing\n * conditions.\n */\n static fromInt(argb: number): Cam16 {\n return Cam16.fromIntInViewingConditions(argb, ViewingConditions.DEFAULT);\n }\n\n /**\n * @param argb ARGB representation of a color.\n * @param viewingConditions Information about the environment where the color\n * was observed.\n * @return CAM16 color.\n */\n static fromIntInViewingConditions(\n argb: number, viewingConditions: ViewingConditions): Cam16 {\n const red = (argb & 0x00ff0000) >> 16;\n const green = (argb & 0x0000ff00) >> 8;\n const blue = (argb & 0x000000ff);\n const redL = utils.linearized(red);\n const greenL = utils.linearized(green);\n const blueL = utils.linearized(blue);\n const x = 0.41233895 * redL + 0.35762064 * greenL + 0.18051042 * blueL;\n const y = 0.2126 * redL + 0.7152 * greenL + 0.0722 * blueL;\n const z = 0.01932141 * redL + 0.11916382 * greenL + 0.95034478 * blueL;\n\n const rC = 0.401288 * x + 0.650173 * y - 0.051461 * z;\n const gC = -0.250268 * x + 1.204414 * y + 0.045854 * z;\n const bC = -0.002079 * x + 0.048952 * y + 0.953127 * z;\n\n const rD = viewingConditions.rgbD[0] * rC;\n const gD = viewingConditions.rgbD[1] * gC;\n const bD = viewingConditions.rgbD[2] * bC;\n\n const rAF = Math.pow((viewingConditions.fl * Math.abs(rD)) / 100.0, 0.42);\n const gAF = Math.pow((viewingConditions.fl * Math.abs(gD)) / 100.0, 0.42);\n const bAF = Math.pow((viewingConditions.fl * Math.abs(bD)) / 100.0, 0.42);\n\n const rA = (math.signum(rD) * 400.0 * rAF) / (rAF + 27.13);\n const gA = (math.signum(gD) * 400.0 * gAF) / (gAF + 27.13);\n const bA = (math.signum(bD) * 400.0 * bAF) / (bAF + 27.13);\n\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\n const b = (rA + gA - 2.0 * bA) / 9.0;\n const u = (20.0 * rA + 20.0 * gA + 21.0 * bA) / 20.0;\n const p2 = (40.0 * rA + 20.0 * gA + bA) / 20.0;\n const atan2 = Math.atan2(b, a);\n const atanDegrees = (atan2 * 180.0) / Math.PI;\n const hue = math.sanitizeDegreesDouble(atanDegrees);\n const hueRadians = (hue * Math.PI) / 180.0;\n\n const ac = p2 * viewingConditions.nbb;\n const j = 100.0 *\n Math.pow(\n ac / viewingConditions.aw,\n viewingConditions.c * viewingConditions.z);\n const q = (4.0 / viewingConditions.c) * Math.sqrt(j / 100.0) *\n (viewingConditions.aw + 4.0) * viewingConditions.fLRoot;\n const huePrime = hue < 20.14 ? hue + 360 : hue;\n const eHue = 0.25 * (Math.cos((huePrime * Math.PI) / 180.0 + 2.0) + 3.8);\n const p1 =\n (50000.0 / 13.0) * eHue * viewingConditions.nc * viewingConditions.ncb;\n const t = (p1 * Math.sqrt(a * a + b * b)) / (u + 0.305);\n const alpha = Math.pow(t, 0.9) *\n Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\n const c = alpha * Math.sqrt(j / 100.0);\n const m = c * viewingConditions.fLRoot;\n const s = 50.0 *\n Math.sqrt((alpha * viewingConditions.c) / (viewingConditions.aw + 4.0));\n const jstar = ((1.0 + 100.0 * 0.007) * j) / (1.0 + 0.007 * j);\n const mstar = (1.0 / 0.0228) * Math.log(1.0 + 0.0228 * m);\n const astar = mstar * Math.cos(hueRadians);\n const bstar = mstar * Math.sin(hueRadians);\n\n return new Cam16(hue, c, j, q, m, s, jstar, astar, bstar);\n }\n\n /**\n * @param j CAM16 lightness\n * @param c CAM16 chroma\n * @param h CAM16 hue\n */\n static fromJch(j: number, c: number, h: number): Cam16 {\n return Cam16.fromJchInViewingConditions(j, c, h, ViewingConditions.DEFAULT);\n }\n\n /**\n * @param j CAM16 lightness\n * @param c CAM16 chroma\n * @param h CAM16 hue\n * @param viewingConditions Information about the environment where the color\n * was observed.\n */\n static fromJchInViewingConditions(\n j: number, c: number, h: number,\n viewingConditions: ViewingConditions): Cam16 {\n const q = (4.0 / viewingConditions.c) * Math.sqrt(j / 100.0) *\n (viewingConditions.aw + 4.0) * viewingConditions.fLRoot;\n const m = c * viewingConditions.fLRoot;\n const alpha = c / Math.sqrt(j / 100.0);\n const s = 50.0 *\n Math.sqrt((alpha * viewingConditions.c) / (viewingConditions.aw + 4.0));\n const hueRadians = (h * Math.PI) / 180.0;\n const jstar = ((1.0 + 100.0 * 0.007) * j) / (1.0 + 0.007 * j);\n const mstar = (1.0 / 0.0228) * Math.log(1.0 + 0.0228 * m);\n const astar = mstar * Math.cos(hueRadians);\n const bstar = mstar * Math.sin(hueRadians);\n return new Cam16(h, c, j, q, m, s, jstar, astar, bstar);\n }\n\n /**\n * @param jstar CAM16-UCS lightness.\n * @param astar CAM16-UCS a dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the Y axis.\n * @param bstar CAM16-UCS b dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the X axis.\n */\n static fromUcs(jstar: number, astar: number, bstar: number): Cam16 {\n return Cam16.fromUcsInViewingConditions(\n jstar, astar, bstar, ViewingConditions.DEFAULT);\n }\n\n /**\n * @param jstar CAM16-UCS lightness.\n * @param astar CAM16-UCS a dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the Y axis.\n * @param bstar CAM16-UCS b dimension. Like a* in L*a*b*, it is a Cartesian\n * coordinate on the X axis.\n * @param viewingConditions Information about the environment where the color\n * was observed.\n */\n static fromUcsInViewingConditions(\n jstar: number, astar: number, bstar: number,\n viewingConditions: ViewingConditions): Cam16 {\n const a = astar;\n const b = bstar;\n const m = Math.sqrt(a * a + b * b);\n const M = (Math.exp(m * 0.0228) - 1.0) / 0.0228;\n const c = M / viewingConditions.fLRoot;\n let h = Math.atan2(b, a) * (180.0 / Math.PI);\n if (h < 0.0) {\n h += 360.0;\n }\n const j = jstar / (1 - (jstar - 100) * 0.007);\n return Cam16.fromJchInViewingConditions(j, c, h, viewingConditions);\n }\n\n /**\n * @return ARGB representation of color, assuming the color was viewed in\n * default viewing conditions, which are near-identical to the default\n * viewing conditions for sRGB.\n */\n toInt(): number {\n return this.viewed(ViewingConditions.DEFAULT);\n }\n\n /**\n * @param viewingConditions Information about the environment where the color\n * will be viewed.\n * @return ARGB representation of color\n */\n viewed(viewingConditions: ViewingConditions): number {\n const alpha = this.chroma === 0.0 || this.j === 0.0 ?\n 0.0 :\n this.chroma / Math.sqrt(this.j / 100.0);\n\n const t = Math.pow(\n alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73),\n 1.0 / 0.9);\n const hRad = (this.hue * Math.PI) / 180.0;\n\n const eHue = 0.25 * (Math.cos(hRad + 2.0) + 3.8);\n const ac = viewingConditions.aw *\n Math.pow(\n this.j / 100.0, 1.0 / viewingConditions.c / viewingConditions.z);\n const p1 =\n eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\n const p2 = ac / viewingConditions.nbb;\n\n const hSin = Math.sin(hRad);\n const hCos = Math.cos(hRad);\n\n const gamma = (23.0 * (p2 + 0.305) * t) /\n (23.0 * p1 + 11.0 * t * hCos + 108.0 * t * hSin);\n const a = gamma * hCos;\n const b = gamma * hSin;\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\n\n const rCBase = Math.max(0, (27.13 * Math.abs(rA)) / (400.0 - Math.abs(rA)));\n const rC = math.signum(rA) * (100.0 / viewingConditions.fl) *\n Math.pow(rCBase, 1.0 / 0.42);\n const gCBase = Math.max(0, (27.13 * Math.abs(gA)) / (400.0 - Math.abs(gA)));\n const gC = math.signum(gA) * (100.0 / viewingConditions.fl) *\n Math.pow(gCBase, 1.0 / 0.42);\n const bCBase = Math.max(0, (27.13 * Math.abs(bA)) / (400.0 - Math.abs(bA)));\n const bC = math.signum(bA) * (100.0 / viewingConditions.fl) *\n Math.pow(bCBase, 1.0 / 0.42);\n const rF = rC / viewingConditions.rgbD[0];\n const gF = gC / viewingConditions.rgbD[1];\n const bF = bC / viewingConditions.rgbD[2];\n\n const x = 1.86206786 * rF - 1.01125463 * gF + 0.14918677 * bF;\n const y = 0.38752654 * rF + 0.62144744 * gF - 0.00897398 * bF;\n const z = -0.01584150 * rF - 0.03412294 * gF + 1.04996444 * bF;\n\n const argb = utils.argbFromXyz(x, y, z);\n return argb;\n }\n\n /// Given color expressed in XYZ and viewed in [viewingConditions], convert to\n /// CAM16.\n static fromXyzInViewingConditions(\n x: number, y: number, z: number,\n viewingConditions: ViewingConditions): Cam16 {\n // Transform XYZ to 'cone'/'rgb' responses\n\n const rC = 0.401288 * x + 0.650173 * y - 0.051461 * z;\n const gC = -0.250268 * x + 1.204414 * y + 0.045854 * z;\n const bC = -0.002079 * x + 0.048952 * y + 0.953127 * z;\n\n // Discount illuminant\n const rD = viewingConditions.rgbD[0] * rC;\n const gD = viewingConditions.rgbD[1] * gC;\n const bD = viewingConditions.rgbD[2] * bC;\n\n // chromatic adaptation\n const rAF = Math.pow(viewingConditions.fl * Math.abs(rD) / 100.0, 0.42);\n const gAF = Math.pow(viewingConditions.fl * Math.abs(gD) / 100.0, 0.42);\n const bAF = Math.pow(viewingConditions.fl * Math.abs(bD) / 100.0, 0.42);\n const rA = math.signum(rD) * 400.0 * rAF / (rAF + 27.13);\n const gA = math.signum(gD) * 400.0 * gAF / (gAF + 27.13);\n const bA = math.signum(bD) * 400.0 * bAF / (bAF + 27.13);\n\n // redness-greenness\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\n // yellowness-blueness\n const b = (rA + gA - 2.0 * bA) / 9.0;\n\n // auxiliary components\n const u = (20.0 * rA + 20.0 * gA + 21.0 * bA) / 20.0;\n const p2 = (40.0 * rA + 20.0 * gA + bA) / 20.0;\n\n // hue\n const atan2 = Math.atan2(b, a);\n const atanDegrees = atan2 * 180.0 / Math.PI;\n const hue = atanDegrees < 0 ? atanDegrees + 360.0 :\n atanDegrees >= 360 ? atanDegrees - 360 :\n atanDegrees;\n const hueRadians = hue * Math.PI / 180.0;\n\n // achromatic response to color\n const ac = p2 * viewingConditions.nbb;\n\n // CAM16 lightness and brightness\n const J = 100.0 *\n Math.pow(\n ac / viewingConditions.aw,\n viewingConditions.c * viewingConditions.z);\n const Q = (4.0 / viewingConditions.c) * Math.sqrt(J / 100.0) *\n (viewingConditions.aw + 4.0) * (viewingConditions.fLRoot);\n\n const huePrime = (hue < 20.14) ? hue + 360 : hue;\n const eHue =\n (1.0 / 4.0) * (Math.cos(huePrime * Math.PI / 180.0 + 2.0) + 3.8);\n const p1 =\n 50000.0 / 13.0 * eHue * viewingConditions.nc * viewingConditions.ncb;\n const t = p1 * Math.sqrt(a * a + b * b) / (u + 0.305);\n const alpha = Math.pow(t, 0.9) *\n Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\n // CAM16 chroma, colorfulness, chroma\n const C = alpha * Math.sqrt(J / 100.0);\n const M = C * viewingConditions.fLRoot;\n const s = 50.0 *\n Math.sqrt((alpha * viewingConditions.c) / (viewingConditions.aw + 4.0));\n\n // CAM16-UCS components\n const jstar = (1.0 + 100.0 * 0.007) * J / (1.0 + 0.007 * J);\n const mstar = Math.log(1.0 + 0.0228 * M) / 0.0228;\n const astar = mstar * Math.cos(hueRadians);\n const bstar = mstar * Math.sin(hueRadians);\n return new Cam16(hue, C, J, Q, M, s, jstar, astar, bstar);\n }\n\n /// XYZ representation of CAM16 seen in [viewingConditions].\n xyzInViewingConditions(viewingConditions: ViewingConditions): number[] {\n const alpha = (this.chroma === 0.0 || this.j === 0.0) ?\n 0.0 :\n this.chroma / Math.sqrt(this.j / 100.0);\n\n const t = Math.pow(\n alpha / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73),\n 1.0 / 0.9);\n const hRad = this.hue * Math.PI / 180.0;\n\n const eHue = 0.25 * (Math.cos(hRad + 2.0) + 3.8);\n const ac = viewingConditions.aw *\n Math.pow(\n this.j / 100.0, 1.0 / viewingConditions.c / viewingConditions.z);\n const p1 =\n eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\n\n const p2 = (ac / viewingConditions.nbb);\n\n const hSin = Math.sin(hRad);\n const hCos = Math.cos(hRad);\n\n const gamma = 23.0 * (p2 + 0.305) * t /\n (23.0 * p1 + 11 * t * hCos + 108.0 * t * hSin);\n const a = gamma * hCos;\n const b = gamma * hSin;\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\n\n const rCBase = Math.max(0, (27.13 * Math.abs(rA)) / (400.0 - Math.abs(rA)));\n const rC = math.signum(rA) * (100.0 / viewingConditions.fl) *\n Math.pow(rCBase, 1.0 / 0.42);\n const gCBase = Math.max(0, (27.13 * Math.abs(gA)) / (400.0 - Math.abs(gA)));\n const gC = math.signum(gA) * (100.0 / viewingConditions.fl) *\n Math.pow(gCBase, 1.0 / 0.42);\n const bCBase = Math.max(0, (27.13 * Math.abs(bA)) / (400.0 - Math.abs(bA)));\n const bC = math.signum(bA) * (100.0 / viewingConditions.fl) *\n Math.pow(bCBase, 1.0 / 0.42);\n const rF = rC / viewingConditions.rgbD[0];\n const gF = gC / viewingConditions.rgbD[1];\n const bF = bC / viewingConditions.rgbD[2];\n\n const x = 1.86206786 * rF - 1.01125463 * gF + 0.14918677 * bF;\n const y = 0.38752654 * rF + 0.62144744 * gF - 0.00897398 * bF;\n const z = -0.01584150 * rF - 0.03412294 * gF + 1.04996444 * bF;\n\n return [x, y, z];\n }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This file is automatically generated. Do not modify it.\n\nimport * as colorUtils from '../utils/color_utils.js';\nimport * as mathUtils from '../utils/math_utils.js';\n\nimport {Cam16} from './cam16.js';\nimport {ViewingConditions} from './viewing_conditions.js';\n\n\n// material_color_utilities is designed to have a consistent API across\n// platforms and modular components that can be moved around easily. Using a\n// class as a namespace facilitates this.\n//\n// tslint:disable:class-as-namespace\n/**\n * A class that solves the HCT equation.\n */\nexport class HctSolver {\n static SCALED_DISCOUNT_FROM_LINRGB = [\n [\n 0.001200833568784504,\n 0.002389694492170889,\n 0.0002795742885861124,\n ],\n [\n 0.0005891086651375999,\n 0.0029785502573438758,\n 0.0003270666104008398,\n ],\n [\n 0.00010146692491640572,\n 0.0005364214359186694,\n 0.0032979401770712076,\n ],\n ];\n\n static LINRGB_FROM_SCALED_DISCOUNT = [\n [\n 1373.2198709594231,\n -1100.4251190754821,\n -7.278681089101213,\n ],\n [\n -271.815969077903,\n 559.6580465940733,\n -32.46047482791194,\n ],\n [\n 1.9622899599665666,\n -57.173814538844006,\n 308.7233197812385,\n ],\n ];\n\n static Y_FROM_LINRGB = [0.2126, 0.7152, 0.0722];\n\n static CRITICAL_PLANES = [\n 0.015176349177441876, 0.045529047532325624, 0.07588174588720938,\n 0.10623444424209313, 0.13658714259697685, 0.16693984095186062,\n 0.19729253930674434, 0.2276452376616281, 0.2579979360165119,\n 0.28835063437139563, 0.3188300904430532, 0.350925934958123,\n 0.3848314933096426, 0.42057480301049466, 0.458183274052838,\n 0.4976837250274023, 0.5391024159806381, 0.5824650784040898,\n 0.6277969426914107, 0.6751227633498623, 0.7244668422128921,\n 0.775853049866786, 0.829304845476233, 0.8848452951698498,\n 0.942497089126609, 1.0022825574869039, 1.0642236851973577,\n 1.1283421258858297, 1.1946592148522128, 1.2631959812511864,\n 1.3339731595349034, 1.407011200216447, 1.4823302800086415,\n 1.5599503113873272, 1.6398909516233677, 1.7221716113234105,\n 1.8068114625156377, 1.8938294463134073, 1.9832442801866852,\n 2.075074464868551, 2.1693382909216234, 2.2660538449872063,\n 2.36523901573795, 2.4669114995532007, 2.5710888059345764,\n 2.6777882626779785, 2.7870270208169257, 2.898822059350997,\n 3.0131901897720907, 3.1301480604002863, 3.2497121605402226,\n 3.3718988244681087, 3.4967242352587946, 3.624204428461639,\n 3.754355295633311, 3.887192587735158, 4.022731918402185,\n 4.160988767090289, 4.301978482107941, 4.445716283538092,\n 4.592217266055746, 4.741496401646282, 4.893568542229298,\n 5.048448422192488, 5.20615066083972, 5.3666897647573375,\n 5.5300801301023865, 5.696336044816294, 5.865471690767354,\n 6.037501145825082, 6.212438385869475, 6.390297286737924,\n 6.571091626112461, 6.7548350853498045, 6.941541251256611,\n 7.131223617812143, 7.323895587840543, 7.5195704746346665,\n 7.7182615035334345, 7.919981813454504, 8.124744458384042,\n 8.332562408825165, 8.543448553206703, 8.757415699253682,\n 8.974476575321063, 9.194643831691977, 9.417930041841839,\n 9.644347703669503, 9.873909240696694, 10.106627003236781,\n 10.342513269534024, 10.58158024687427, 10.8238400726681,\n 11.069304815507364, 11.317986476196008, 11.569896988756009,\n 11.825048221409341, 12.083451977536606, 12.345119996613247,\n 12.610063955123938, 12.878295467455942, 13.149826086772048,\n 13.42466730586372, 13.702830557985108, 13.984327217668513,\n 14.269168601521828, 14.55736596900856, 14.848930523210871,\n 15.143873411576273, 15.44220572664832, 15.743938506781891,\n 16.04908273684337, 16.35764934889634, 16.66964922287304,\n 16.985093187232053, 17.30399201960269, 17.62635644741625,\n 17.95219714852476, 18.281524751807332, 18.614349837764564,\n 18.95068293910138, 19.290534541298456, 19.633915083172692,\n 19.98083495742689, 20.331304511189067, 20.685334046541502,\n 21.042933821039977, 21.404114048223256, 21.76888489811322,\n 22.137256497705877, 22.50923893145328, 22.884842241736916,\n 23.264076429332462, 23.6469514538663, 24.033477234264016,\n 24.42366364919083, 24.817520537484558, 25.21505769858089,\n 25.61628489293138, 26.021211842414342, 26.429848230738664,\n 26.842203703840827, 27.258287870275353, 27.678110301598522,\n 28.10168053274597, 28.529008062403893, 28.96010235337422,\n 29.39497283293396, 29.83362889318845, 30.276079891419332,\n 30.722335150426627, 31.172403958865512, 31.62629557157785,\n 32.08401920991837, 32.54558406207592, 33.010999283389665,\n 33.4802739966603, 33.953417292456834, 34.430438229418264,\n 34.911345834551085, 35.39614910352207, 35.88485700094671,\n 36.37747846067349, 36.87402238606382, 37.37449765026789,\n 37.87891309649659, 38.38727753828926, 38.89959975977785,\n 39.41588851594697, 39.93615253289054, 40.460400508064545,\n 40.98864111053629, 41.520882981230194, 42.05713473317016,\n 42.597404951718396, 43.141702194811224, 43.6900349931913,\n 44.24241185063697, 44.798841244188324, 45.35933162437017,\n 45.92389141541209, 46.49252901546552, 47.065252796817916,\n 47.64207110610409, 48.22299226451468, 48.808024568002054,\n 49.3971762874833, 49.9904556690408, 50.587870934119984,\n 51.189430279724725, 51.79514187861014, 52.40501387947288,\n 53.0190544071392, 53.637271562750364, 54.259673423945976,\n 54.88626804504493, 55.517063457223934, 56.15206766869424,\n 56.79128866487574, 57.43473440856916, 58.08241284012621,\n 58.734331877617365, 59.39049941699807, 60.05092333227251,\n 60.715611475655585, 61.38457167773311, 62.057811747619894,\n 62.7353394731159, 63.417162620860914, 64.10328893648692,\n 64.79372614476921, 65.48848194977529, 66.18756403501224,\n 66.89098006357258, 67.59873767827808, 68.31084450182222,\n 69.02730813691093, 69.74813616640164, 70.47333615344107,\n 71.20291564160104, 71.93688215501312, 72.67524319850172,\n 73.41800625771542, 74.16517879925733, 74.9167682708136,\n 75.67278210128072, 76.43322770089146, 77.1981124613393,\n 77.96744375590167, 78.74122893956174, 79.51947534912904,\n 80.30219030335869, 81.08938110306934, 81.88105503125999,\n 82.67721935322541, 83.4778813166706, 84.28304815182372,\n 85.09272707154808, 85.90692527145302, 86.72564993000343,\n 87.54890820862819, 88.3767072518277, 89.2090541872801,\n 90.04595612594655, 90.88742016217518, 91.73345337380438,\n 92.58406282226491, 93.43925555268066, 94.29903859396902,\n 95.16341895893969, 96.03240364439274, 96.9059996312159,\n 97.78421388448044, 98.6670533535366, 99.55452497210776,\n ];\n\n /**\n * Sanitizes a small enough angle in radians.\n *\n * @param angle An angle in radians; must not deviate too much\n * from 0.\n * @return A coterminal angle between 0 and 2pi.\n */\n private static sanitizeRadians(angle: number): number {\n return (angle + Math.PI * 8) % (Math.PI * 2);\n }\n\n /**\n * Delinearizes an RGB component, returning a floating-point\n * number.\n *\n * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents\n * linear R/G/B channel\n * @return 0.0 <= output <= 255.0, color channel converted to\n * regular RGB space\n */\n private static trueDelinearized(rgbComponent: number): number {\n const normalized = rgbComponent / 100.0;\n let delinearized = 0.0;\n if (normalized <= 0.0031308) {\n delinearized = normalized * 12.92;\n } else {\n delinearized = 1.055 * Math.pow(normalized, 1.0 / 2.4) - 0.055;\n }\n return delinearized * 255.0;\n }\n\n private static chromaticAdaptation(component: number): number {\n const af = Math.pow(Math.abs(component), 0.42);\n return mathUtils.signum(component) * 400.0 * af / (af + 27.13);\n }\n\n /**\n * Returns the hue of a linear RGB color in CAM16.\n *\n * @param linrgb The linear RGB coordinates of a color.\n * @return The hue of the color in CAM16, in radians.\n */\n private static hueOf(linrgb: number[]): number {\n const scaledDiscount =\n mathUtils.matrixMultiply(linrgb, HctSolver.SCALED_DISCOUNT_FROM_LINRGB);\n const rA = HctSolver.chromaticAdaptation(scaledDiscount[0]);\n const gA = HctSolver.chromaticAdaptation(scaledDiscount[1]);\n const bA = HctSolver.chromaticAdaptation(scaledDiscount[2]);\n // redness-greenness\n const a = (11.0 * rA + -12.0 * gA + bA) / 11.0;\n // yellowness-blueness\n const b = (rA + gA - 2.0 * bA) / 9.0;\n return Math.atan2(b, a);\n }\n\n private static areInCyclicOrder(a: number, b: number, c: number): boolean {\n const deltaAB = HctSolver.sanitizeRadians(b - a);\n const deltaAC = HctSolver.sanitizeRadians(c - a);\n return deltaAB < deltaAC;\n }\n\n /**\n * Solves the lerp equation.\n *\n * @param source The starting number.\n * @param mid The number in the middle.\n * @param target The ending number.\n * @return A number t such that lerp(source, target, t) = mid.\n */\n private static intercept(source: number, mid: number, target: number):\n number {\n return (mid - source) / (target - source);\n }\n\n private static lerpPoint(source: number[], t: number, target: number[]):\n number[] {\n return [\n source[0] + (target[0] - source[0]) * t,\n source[1] + (target[1] - source[1]) * t,\n source[2] + (target[2] - source[2]) * t,\n ];\n }\n\n /**\n * Intersects a segment with a plane.\n *\n * @param source The coordinates of point A.\n * @param coordinate The R-, G-, or B-coordinate of the plane.\n * @param target The coordinates of point B.\n * @param axis The axis the plane is perpendicular with. (0: R, 1:\n * G, 2: B)\n * @return The intersection point of the segment AB with the plane\n * R=coordinate, G=coordinate, or B=coordinate\n */\n private static setCoordinate(\n source: number[],\n coordinate: number,\n target: number[],\n axis: number,\n ): number[] {\n const t = HctSolver.intercept(source[axis], coordinate, target[axis]);\n return HctSolver.lerpPoint(source, t, target);\n }\n\n private static isBounded(x: number): boolean {\n return 0.0 <= x && x <= 100.0;\n }\n\n /**\n * Returns the nth possible vertex of the polygonal intersection.\n *\n * @param y The Y value of the plane.\n * @param n The zero-based index of the point. 0 <= n <= 11.\n * @return The nth possible vertex of the polygonal intersection\n * of the y plane and the RGB cube, in linear RGB coordinates, if\n * it exists. If this possible vertex lies outside of the cube,\n * [-1.0, -1.0, -1.0] is returned.\n */\n private static nthVertex(y: number, n: number): number[] {\n const kR = HctSolver.Y_FROM_LINRGB[0];\n const kG = HctSolver.Y_FROM_LINRGB[1];\n const kB = HctSolver.Y_FROM_LINRGB[2];\n const coordA = n % 4 <= 1 ? 0.0 : 100.0;\n const coordB = n % 2 === 0 ? 0.0 : 100.0;\n if (n < 4) {\n const g = coordA;\n const b = coordB;\n const r = (y - g * kG - b * kB) / kR;\n if (HctSolver.isBounded(r)) {\n return [r, g, b];\n } else {\n return [-1.0, -1.0, -1.0];\n }\n } else if (n < 8) {\n const b = coordA;\n const r = coordB;\n const g = (y - r * kR - b * kB) / kG;\n if (HctSolver.isBounded(g)) {\n return [r, g, b];\n } else {\n return [-1.0, -1.0, -1.0];\n }\n } else {\n const r = coordA;\n const g = coordB;\n const b = (y - r * kR - g * kG) / kB;\n if (HctSolver.isBounded(b)) {\n return [r, g, b];\n } else {\n return [-1.0, -1.0, -1.0];\n }\n }\n }\n\n /**\n * Finds the segment containing the desired color.\n *\n * @param y The Y value of the color.\n * @param targetHue The hue of the color.\n * @return A list of two sets of linear RGB coordinates, each\n * corresponding to an endpoint of the segment containing the\n * desired color.\n */\n private static bisectToSegment(y: number, targetHue: number): number[][] {\n let left = [-1.0, -1.0, -1.0];\n let right = left;\n let leftHue = 0.0;\n let rightHue = 0.0;\n let initialized = false;\n let uncut = true;\n for (let n = 0; n < 12; n++) {\n const mid = HctSolver.nthVertex(y, n);\n if (mid[0] < 0) {\n continue;\n }\n const midHue = HctSolver.hueOf(mid);\n if (!initialized) {\n left = mid;\n right = mid;\n leftHue = midHue;\n rightHue = midHue;\n initialized = true;\n continue;\n }\n if (uncut || HctSolver.areInCyclicOrder(leftHue, midHue, rightHue)) {\n uncut = false;\n if (HctSolver.areInCyclicOrder(leftHue, targetHue, midHue)) {\n right = mid;\n rightHue = midHue;\n } else {\n left = mid;\n leftHue = midHue;\n }\n }\n }\n return [left, right];\n }\n\n private static midpoint(a: number[], b: number[]): number[] {\n return [\n (a[0] + b[0]) / 2,\n (a[1] + b[1]) / 2,\n (a[2] + b[2]) / 2,\n ];\n }\n\n private static criticalPlaneBelow(x: number): number {\n return Math.floor(x - 0.5);\n }\n\n private static criticalPlaneAbove(x: number): number {\n return Math.ceil(x - 0.5);\n }\n\n /**\n * Finds a color with the given Y and hue on the boundary of the\n * cube.\n *\n * @param y The Y value of the color.\n * @param targetHue The hue of the color.\n * @return The desired color, in linear RGB coordinates.\n */\n private static bisectToLimit(y: number, targetHue: number): number[] {\n const segment = HctSolver.bisectToSegment(y, targetHue);\n let left = segment[0];\n let leftHue = HctSolver.hueOf(left);\n let right = segment[1];\n for (let axis = 0; axis < 3; axis++) {\n if (left[axis] !== right[axis]) {\n let lPlane = -1;\n let rPlane = 255;\n if (left[axis] < right[axis]) {\n lPlane = HctSolver.criticalPlaneBelow(\n HctSolver.trueDelinearized(left[axis]));\n rPlane = HctSolver.criticalPlaneAbove(\n HctSolver.trueDelinearized(right[axis]));\n } else {\n lPlane = HctSolver.criticalPlaneAbove(\n HctSolver.trueDelinearized(left[axis]));\n rPlane = HctSolver.criticalPlaneBelow(\n HctSolver.trueDelinearized(right[axis]));\n }\n for (let i = 0; i < 8; i++) {\n if (Math.abs(rPlane - lPlane) <= 1) {\n break;\n } else {\n const mPlane = Math.floor((lPlane + rPlane) / 2.0);\n const midPlaneCoordinate = HctSolver.CRITICAL_PLANES[mPlane];\n const mid =\n HctSolver.setCoordinate(left, midPlaneCoordinate, right, axis);\n const midHue = HctSolver.hueOf(mid);\n if (HctSolver.areInCyclicOrder(leftHue, targetHue, midHue)) {\n right = mid;\n rPlane = mPlane;\n } else {\n left = mid;\n leftHue = midHue;\n lPlane = mPlane;\n }\n }\n }\n }\n }\n return HctSolver.midpoint(left, right);\n }\n\n private static inverseChromaticAdaptation(adapted: number): number {\n const adaptedAbs = Math.abs(adapted);\n const base = Math.max(0, 27.13 * adaptedAbs / (400.0 - adaptedAbs));\n return mathUtils.signum(adapted) * Math.pow(base, 1.0 / 0.42);\n }\n\n /**\n * Finds a color with the given hue, chroma, and Y.\n *\n * @param hueRadians The desired hue in radians.\n * @param chroma The desired chroma.\n * @param y The desired Y.\n * @return The desired color as a hexadecimal integer, if found; 0\n * otherwise.\n */\n private static findResultByJ(hueRadians: number, chroma: number, y: number):\n number {\n // Initial estimate of j.\n let j = Math.sqrt(y) * 11.0;\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n const viewingConditions = ViewingConditions.DEFAULT;\n const tInnerCoeff =\n 1 / Math.pow(1.64 - Math.pow(0.29, viewingConditions.n), 0.73);\n const eHue = 0.25 * (Math.cos(hueRadians + 2.0) + 3.8);\n const p1 =\n eHue * (50000.0 / 13.0) * viewingConditions.nc * viewingConditions.ncb;\n const hSin = Math.sin(hueRadians);\n const hCos = Math.cos(hueRadians);\n for (let iterationRound = 0; iterationRound < 5; iterationRound++) {\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n const jNormalized = j / 100.0;\n const alpha =\n chroma === 0.0 || j === 0.0 ? 0.0 : chroma / Math.sqrt(jNormalized);\n const t = Math.pow(alpha * tInnerCoeff, 1.0 / 0.9);\n const ac = viewingConditions.aw *\n Math.pow(\n jNormalized,\n 1.0 / viewingConditions.c / viewingConditions.z,\n );\n const p2 = ac / viewingConditions.nbb;\n const gamma = 23.0 * (p2 + 0.305) * t /\n (23.0 * p1 + 11 * t * hCos + 108.0 * t * hSin);\n const a = gamma * hCos;\n const b = gamma * hSin;\n const rA = (460.0 * p2 + 451.0 * a + 288.0 * b) / 1403.0;\n const gA = (460.0 * p2 - 891.0 * a - 261.0 * b) / 1403.0;\n const bA = (460.0 * p2 - 220.0 * a - 6300.0 * b) / 1403.0;\n const rCScaled = HctSolver.inverseChromaticAdaptation(rA);\n const gCScaled = HctSolver.inverseChromaticAdaptation(gA);\n const bCScaled = HctSolver.inverseChromaticAdaptation(bA);\n const linrgb = mathUtils.matrixMultiply(\n [rCScaled, gCScaled, bCScaled],\n HctSolver.LINRGB_FROM_SCALED_DISCOUNT,\n );\n // ===========================================================\n // Operations inlined from Cam16 to avoid repeated calculation\n // ===========================================================\n if (linrgb[0] < 0 || linrgb[1] < 0 || linrgb[2] < 0) {\n return 0;\n }\n const kR = HctSolver.Y_FROM_LINRGB[0];\n const kG = HctSolver.Y_FROM_LINRGB[1];\n const kB = HctSolver.Y_FROM_LINRGB[2];\n const fnj = kR * linrgb[0] + kG * linrgb[1] + kB * linrgb[2];\n if (fnj <= 0) {\n return 0;\n }\n if (iterationRound === 4 || Math.abs(fnj - y) < 0.002) {\n if (linrgb[0] > 100.01 || linrgb[1] > 100.01 || linrgb[2] > 100.01) {\n return 0;\n }\n return colorUtils.argbFromLinrgb(linrgb);\n }\n // Iterates with Newton method,\n // Using 2 * fn(j) / j as the approximation of fn'(j)\n j = j - (fnj - y) * j / (2 * fnj);\n }\n return 0;\n }\n\n /**\n * Finds an sRGB color with the given hue, chroma, and L*, if\n * possible.\n *\n * @param hueDegrees The desired hue, in degrees.\n * @param chroma The desired chroma.\n * @param lstar The desired L*.\n * @return A hexadecimal representing the sRGB color. The color\n * has sufficiently close hue, chroma, and L* to the desired\n * values, if possible; otherwise, the hue and L* will be\n * sufficiently close, and chroma will be maximized.\n */\n static solveToInt(hueDegrees: number, chroma: number, lstar: number): number {\n if (chroma < 0.0001 || lstar < 0.0001 || lstar > 99.9999) {\n return colorUtils.argbFromLstar(lstar);\n }\n hueDegrees = mathUtils.sanitizeDegreesDouble(hueDegrees);\n const hueRadians = hueDegrees / 180 * Math.PI;\n const y = colorUtils.yFromLstar(lstar);\n const exactAnswer = HctSolver.findResultByJ(hueRadians, chroma, y);\n if (exactAnswer !== 0) {\n return exactAnswer;\n }\n const linrgb = HctSolver.bisectToLimit(y, hueRadians);\n return colorUtils.argbFromLinrgb(linrgb);\n }\n\n /**\n * Finds an sRGB color with the given hue, chroma, and L*, if\n * possible.\n *\n * @param hueDegrees The desired hue, in degrees.\n * @param chroma The desired chroma.\n * @param lstar The desired L*.\n * @return An CAM16 object representing the sRGB color. The color\n * has sufficiently close hue, chroma, and L* to the desired\n * values, if possible; otherwise, the hue and L* will be\n * sufficiently close, and chroma will be maximized.\n */\n static solveToCam(hueDegrees: number, chroma: number, lstar: number): Cam16 {\n return Cam16.fromInt(HctSolver.solveToInt(hueDegrees, chroma, lstar));\n }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A color system built using CAM16 hue and chroma, and L* from\n * L*a*b*.\n *\n * Using L* creates a link between the color system, contrast, and thus\n * accessibility. Contrast ratio depends on relative luminance, or Y in the XYZ\n * color space. L*, or perceptual luminance can be calculated from Y.\n *\n * Unlike Y, L* is linear to human perception, allowing trivial creation of\n * accurate color tones.\n *\n * Unlike contrast ratio, measuring contrast in L* is linear, and simple to\n * calculate. A difference of 40 in HCT tone guarantees a contrast ratio >= 3.0,\n * and a difference of 50 guarantees a contrast ratio >= 4.5.\n */\n\nimport * as utils from '../utils/color_utils.js';\n\nimport {Cam16} from './cam16.js';\nimport {HctSolver} from './hct_solver.js';\nimport {ViewingConditions} from './viewing_conditions.js';\n\n\n/**\n * HCT, hue, chroma, and tone. A color system that provides a perceptually\n * accurate color measurement system that can also accurately render what colors\n * will appear as in different lighting environments.\n */\nexport class Hct {\n /**\n * @param hue 0 <= hue < 360; invalid values are corrected.\n * @param chroma 0 <= chroma < ?; Informally, colorfulness. The color\n * returned may be lower than the requested chroma. Chroma has a different\n * maximum for any given hue and tone.\n * @param tone 0 <= tone <= 100; invalid values are corrected.\n * @return HCT representation of a color in default viewing conditions.\n */\n\n internalHue: number;\n internalChroma: number;\n internalTone: number;\n\n static from(hue: number, chroma: number, tone: number) {\n return new Hct(HctSolver.solveToInt(hue, chroma, tone));\n }\n\n /**\n * @param argb ARGB representation of a color.\n * @return HCT representation of a color in default viewing conditions\n */\n static fromInt(argb: number) {\n return new Hct(argb);\n }\n\n toInt(): number {\n return this.argb;\n }\n\n /**\n * A number, in degrees, representing ex. red, orange, yellow, etc.\n * Ranges from 0 <= hue < 360.\n */\n get hue(): number {\n return this.internalHue;\n }\n\n /**\n * @param newHue 0 <= newHue < 360; invalid values are corrected.\n * Chroma may decrease because chroma has a different maximum for any given\n * hue and tone.\n */\n set hue(newHue: number) {\n this.setInternalState(\n HctSolver.solveToInt(\n newHue,\n this.internalChroma,\n this.internalTone,\n ),\n );\n }\n\n get chroma(): number {\n return this.internalChroma;\n }\n\n /**\n * @param newChroma 0 <= newChroma < ?\n * Chroma may decrease because chroma has a different maximum for any given\n * hue and tone.\n */\n set chroma(newChroma: number) {\n this.setInternalState(\n HctSolver.solveToInt(\n this.internalHue,\n newChroma,\n this.internalTone,\n ),\n );\n }\n\n /** Lightness. Ranges from 0 to 100. */\n get tone(): number {\n return this.internalTone;\n }\n\n /**\n * @param newTone 0 <= newTone <= 100; invalid valids are corrected.\n * Chroma may decrease because chroma has a different maximum for any given\n * hue and tone.\n */\n set tone(newTone: number) {\n this.setInternalState(\n HctSolver.solveToInt(\n this.internalHue,\n this.internalChroma,\n newTone,\n ),\n );\n }\n\n /** Sets a property of the Hct object. */\n setValue(propertyName: string, value: number) {\n (this as any)[propertyName] = value;\n }\n\n toString(): string {\n return `HCT(${this.hue.toFixed(0)}, ${this.chroma.toFixed(0)}, ${\n this.tone.toFixed(0)})`;\n }\n\n static isBlue(hue: number): boolean {\n return hue >= 250 && hue < 270;\n }\n\n static isYellow(hue: number): boolean {\n return hue >= 105 && hue < 125;\n }\n\n static isCyan(hue: number): boolean {\n return hue >= 170 && hue < 207;\n }\n\n private constructor(private argb: number) {\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue;\n this.internalChroma = cam.chroma;\n this.internalTone = utils.lstarFromArgb(argb);\n this.argb = argb;\n }\n\n private setInternalState(argb: number) {\n const cam = Cam16.fromInt(argb);\n this.internalHue = cam.hue;\n this.internalChroma = cam.chroma;\n this.internalTone = utils.lstarFromArgb(argb);\n this.argb = argb;\n }\n\n /**\n * Translates a color into different [ViewingConditions].\n *\n * Colors change appearance. They look different with lights on versus off,\n * the same color, as in hex code, on white looks different when on black.\n * This is called color relativity, most famously explicated by Josef Albers\n * in Interaction of Color.\n *\n * In color science, color appearance models can account for this and\n * calculate the appearance of a color in different settings. HCT is based on\n * CAM16, a color appearance model, and uses it to make these calculations.\n *\n * See [ViewingConditions.make] for parameters affecting color appearance.\n */\n inViewingConditions(vc: ViewingConditions): Hct {\n // 1. Use CAM16 to find XYZ coordinates of color in specified VC.\n const cam = Cam16.fromInt(this.toInt());\n const viewedInVc = cam.xyzInViewingConditions(vc);\n\n // 2. Create CAM16 of those XYZ coordinates in default VC.\n const recastInVc = Cam16.fromXyzInViewingConditions(\n viewedInVc[0],\n viewedInVc[1],\n viewedInVc[2],\n ViewingConditions.make(),\n );\n\n // 3. Create HCT from:\n // - CAM16 using default VC with XYZ coordinates in specified VC.\n // - L* converted from Y in XYZ coordinates in specified VC.\n const recastHct = Hct.from(\n recastInVc.hue,\n recastInVc.chroma,\n utils.lstarFromY(viewedInVc[1]),\n );\n return recastHct;\n }\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// material_color_utilities is designed to have a consistent API across\n// platforms and modular components that can be moved around easily. Using a\n// class as a namespace facilitates this.\n//\n// tslint:disable:class-as-namespace\n\nimport * as utils from '../utils/color_utils.js';\nimport * as math from '../utils/math_utils.js';\n\n/**\n * Utility methods for calculating contrast given two colors, or calculating a\n * color given one color and a contrast ratio.\n *\n * Contrast ratio is calculated using XYZ's Y. When linearized to match human\n * perception, Y becomes HCT's tone and L*a*b*'s' L*. Informally, this is the\n * lightness of a color.\n *\n * Methods refer to tone, T in the the HCT color space.\n * Tone is equivalent to L* in the L*a*b* color space, or L in the LCH color\n * space.\n */\nexport class Contrast {\n /**\n * Returns a contrast ratio, which ranges from 1 to 21.\n *\n * @param toneA Tone between 0 and 100. Values outside will be clamped.\n * @param toneB Tone between 0 and 100. Values outside will be clamped.\n */\n static ratioOfTones(toneA: number, toneB: number): number {\n toneA = math.clampDouble(0.0, 100.0, toneA);\n toneB = math.clampDouble(0.0, 100.0, toneB);\n return Contrast.ratioOfYs(utils.yFromLstar(toneA), utils.yFromLstar(toneB));\n }\n\n static ratioOfYs(y1: number, y2: number): number {\n const lighter = y1 > y2 ? y1 : y2;\n const darker = (lighter === y2) ? y1 : y2;\n return (lighter + 5.0) / (darker + 5.0);\n }\n\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns -1 if ratio cannot be achieved with tone parameter.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in -1 being returned.\n * @param ratio Contrast ratio of return value and tone.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static lighter(tone: number, ratio: number): number {\n if (tone < 0.0 || tone > 100.0) {\n return -1.0;\n }\n\n const darkY = utils.yFromLstar(tone);\n const lightY = ratio * (darkY + 5.0) - 5.0;\n const realContrast = Contrast.ratioOfYs(lightY, darkY);\n const delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > 0.04) {\n return -1;\n }\n\n // Ensure gamut mapping, which requires a 'range' on tone, will still result\n // the correct ratio by darkening slightly.\n const returnValue = utils.lstarFromY(lightY) + 0.4;\n if (returnValue < 0 || returnValue > 100) {\n return -1;\n }\n return returnValue;\n }\n\n /**\n * Returns a tone <= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns -1 if ratio cannot be achieved with tone parameter.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in -1 being returned.\n * @param ratio Contrast ratio of return value and tone.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static darker(tone: number, ratio: number): number {\n if (tone < 0.0 || tone > 100.0) {\n return -1.0;\n }\n\n const lightY = utils.yFromLstar(tone);\n const darkY = ((lightY + 5.0) / ratio) - 5.0;\n const realContrast = Contrast.ratioOfYs(lightY, darkY);\n\n const delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > 0.04) {\n return -1;\n }\n\n // Ensure gamut mapping, which requires a 'range' on tone, will still result\n // the correct ratio by darkening slightly.\n const returnValue = utils.lstarFromY(darkY) - 0.4;\n if (returnValue < 0 || returnValue > 100) {\n return -1;\n }\n return returnValue;\n }\n\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns 100 if ratio cannot be achieved with tone parameter.\n *\n * This method is unsafe because the returned value is guaranteed to be in\n * bounds for tone, i.e. between 0 and 100. However, that value may not reach\n * the ratio with tone. For example, there is no color lighter than T100.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in 100 being returned.\n * @param ratio Desired contrast ratio of return value and tone parameter.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static lighterUnsafe(tone: number, ratio: number): number {\n const lighterSafe = Contrast.lighter(tone, ratio);\n return (lighterSafe < 0.0) ? 100.0 : lighterSafe;\n }\n\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns 100 if ratio cannot be achieved with tone parameter.\n *\n * This method is unsafe because the returned value is guaranteed to be in\n * bounds for tone, i.e. between 0 and 100. However, that value may not reach\n * the [ratio with [tone]. For example, there is no color darker than T0.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in 0 being returned.\n * @param ratio Desired contrast ratio of return value and tone parameter.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static darkerUnsafe(tone: number, ratio: number): number {\n const darkerSafe = Contrast.darker(tone, ratio);\n return (darkerSafe < 0.0) ? 0.0 : darkerSafe;\n }\n}","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Hct} from '../hct/hct.js';\n\n// material_color_utilities is designed to have a consistent API across\n// platforms and modular components that can be moved around easily. Using a\n// class as a namespace facilitates this.\n//\n// tslint:disable:class-as-namespace\n\n/**\n * Check and/or fix universally disliked colors.\n * Color science studies of color preference indicate universal distaste for\n * dark yellow-greens, and also show this is correlated to distate for\n * biological waste and rotting food.\n *\n * See Palmer and Schloss, 2010 or Schloss and Palmer's Chapter 21 in Handbook\n * of Color Psychology (2015).\n */\nexport class DislikeAnalyzer {\n /**\n * Returns true if a color is disliked.\n *\n * @param hct A color to be judged.\n * @return Whether the color is disliked.\n *\n * Disliked is defined as a dark yellow-green that is not neutral.\n */\n static isDisliked(hct: Hct): boolean {\n const huePasses =\n Math.round(hct.hue) >= 90.0 && Math.round(hct.hue) <= 111.0;\n const chromaPasses = Math.round(hct.chroma) > 16.0;\n const tonePasses = Math.round(hct.tone) < 65.0;\n\n return huePasses && chromaPasses && tonePasses;\n }\n\n /**\n * If a color is disliked, lighten it to make it likable.\n *\n * @param hct A color to be judged.\n * @return A new color if the original color is disliked, or the original\n * color if it is acceptable.\n */\n static fixIfDisliked(hct: Hct): Hct {\n if (DislikeAnalyzer.isDisliked(hct)) {\n return Hct.from(\n hct.hue,\n hct.chroma,\n 70.0,\n );\n }\n\n return hct;\n }\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Contrast} from '../contrast/contrast.js';\nimport {Hct} from '../hct/hct.js';\nimport type {TonalPalette} from '../palettes/tonal_palette';\nimport * as math from '../utils/math_utils.js';\n\nimport type {SpecVersion} from './color_spec';\nimport {ContrastCurve} from './contrast_curve.js';\nimport {DynamicScheme} from './dynamic_scheme.js';\nimport {ToneDeltaPair} from './tone_delta_pair.js';\n\n/**\n * @param name The name of the dynamic color. Defaults to empty.\n * @param palette Function that provides a TonalPalette given DynamicScheme. A\n * TonalPalette is defined by a hue and chroma, so this replaces the need to\n * specify hue/chroma. By providing a tonal palette, when contrast\n * adjustments are made, intended chroma can be preserved.\n * @param tone Function that provides a tone given DynamicScheme. When not\n * provided, the tone is same as the background tone or 50, when no\n * background is provided.\n * @param chromaMultiplier A factor that multiplies the chroma for this color.\n * Default to 1.\n * @param isBackground Whether this dynamic color is a background, with some\n * other color as the foreground. Defaults to false.\n * @param background The background of the dynamic color (as a function of a\n * `DynamicScheme`), if it exists.\n * @param secondBackground A second background of the dynamic color (as a\n * function of a `DynamicScheme`), if it exists.\n * @param contrastCurve A `ContrastCurve` object specifying how its contrast\n * against its background should behave in various contrast levels options.\n * Must used together with `background`. When not provided or resolved as\n * undefined, the contrast curve is calculated based on other constraints.\n * @param toneDeltaPair A `ToneDeltaPair` object specifying a tone delta\n * constraint between two colors. One of them must be the color being\n * constructed. When not provided or resolved as undefined, the tone is\n * calculated based on other constraints.\n */\ninterface FromPaletteOptions {\n name?: string;\n palette: (scheme: DynamicScheme) => TonalPalette;\n tone?: (scheme: DynamicScheme) => number;\n chromaMultiplier?: (scheme: DynamicScheme) => number;\n isBackground?: boolean;\n background?: (scheme: DynamicScheme) => DynamicColor | undefined;\n secondBackground?: (scheme: DynamicScheme) => DynamicColor | undefined;\n contrastCurve?: (scheme: DynamicScheme) => ContrastCurve | undefined;\n toneDeltaPair?: (scheme: DynamicScheme) => ToneDeltaPair | undefined;\n}\n\n/**\n * A delegate that provides the HCT and tone of a DynamicColor.\n *\n * This is used to allow different implementations of the color calculation\n * logic for different spec versions.\n */\ninterface ColorCalculationDelegate {\n getHct(scheme: DynamicScheme, color: DynamicColor): Hct;\n getTone(scheme: DynamicScheme, color: DynamicColor): number;\n}\n\nfunction validateExtendedColor(\n originalColor: DynamicColor, specVersion: SpecVersion,\n extendedColor: DynamicColor) {\n if (originalColor.name !== extendedColor.name) {\n throw new Error(\n `Attempting to extend color ${originalColor.name} with color ${\n extendedColor.name} of different name for spec version ${\n specVersion}.`);\n }\n if (originalColor.isBackground !== extendedColor.isBackground) {\n throw new Error(`Attempting to extend color ${originalColor.name} as a ${\n (originalColor.isBackground ?\n 'background' :\n 'foreground')} with color ${extendedColor.name} as a ${\n (extendedColor.isBackground ?\n 'background' :\n 'foreground')} for spec version ${specVersion}.`);\n }\n}\n/**\n * Returns a new DynamicColor that is the same as the original color, but with\n * the extended dynamic color's constraints for the given spec version.\n *\n * @param originlColor The original color.\n * @param specVersion The spec version to extend.\n * @param extendedColor The color with the values to extend.\n */\nexport function extendSpecVersion(\n originlColor: DynamicColor, specVersion: SpecVersion,\n extendedColor: DynamicColor): DynamicColor {\n validateExtendedColor(originlColor, specVersion, extendedColor);\n\n return DynamicColor.fromPalette({\n name: originlColor.name,\n palette: (s) => s.specVersion === specVersion ? extendedColor.palette(s) :\n originlColor.palette(s),\n tone: (s) => s.specVersion === specVersion ? extendedColor.tone(s) :\n originlColor.tone(s),\n isBackground: originlColor.isBackground,\n chromaMultiplier: (s) => {\n const chromaMultiplier = s.specVersion === specVersion ?\n extendedColor.chromaMultiplier :\n originlColor.chromaMultiplier;\n return chromaMultiplier !== undefined ? chromaMultiplier(s) : 1;\n },\n background: (s) => {\n const background = s.specVersion === specVersion ?\n extendedColor.background :\n originlColor.background;\n return background !== undefined ? background(s) : undefined\n },\n secondBackground: (s) => {\n const secondBackground = s.specVersion === specVersion ?\n extendedColor.secondBackground :\n originlColor.secondBackground;\n return secondBackground !== undefined ? secondBackground(s) : undefined;\n },\n contrastCurve: (s) => {\n const contrastCurve = s.specVersion === specVersion ?\n extendedColor.contrastCurve :\n originlColor.contrastCurve;\n return contrastCurve !== undefined ? contrastCurve(s) : undefined;\n },\n toneDeltaPair: (s) => {\n const toneDeltaPair = s.specVersion === specVersion ?\n extendedColor.toneDeltaPair :\n originlColor.toneDeltaPair;\n return toneDeltaPair !== undefined ? toneDeltaPair(s) : undefined;\n },\n });\n}\n\n/**\n * A color that adjusts itself based on UI state provided by DynamicScheme.\n *\n * Colors without backgrounds do not change tone when contrast changes. Colors\n * with backgrounds become closer to their background as contrast lowers, and\n * further when contrast increases.\n *\n * Prefer static constructors. They require either a hexcode, a palette and\n * tone, or a hue and chroma. Optionally, they can provide a background\n * DynamicColor.\n */\nexport class DynamicColor {\n private readonly hctCache = new Map<DynamicScheme, Hct>();\n\n /**\n * Create a DynamicColor defined by a TonalPalette and HCT tone.\n *\n * @param args Functions with DynamicScheme as input. Must provide a palette\n * and tone. May provide a background DynamicColor and ToneDeltaPair.\n */\n static fromPalette(args: FromPaletteOptions): DynamicColor {\n return new DynamicColor(\n args.name ?? '',\n args.palette,\n args.tone ?? DynamicColor.getInitialToneFromBackground(args.background),\n args.isBackground ?? false,\n args.chromaMultiplier,\n args.background,\n args.secondBackground,\n args.contrastCurve,\n args.toneDeltaPair,\n );\n }\n\n static getInitialToneFromBackground(\n background?: (scheme: DynamicScheme) => DynamicColor |\n undefined): (scheme: DynamicScheme) => number {\n if (background === undefined) {\n return (s) => 50;\n }\n return (s) => background(s) ? background(s)!.getTone(s) : 50;\n }\n\n /**\n * The base constructor for DynamicColor.\n *\n * _Strongly_ prefer using one of the convenience constructors. This class is\n * arguably too flexible to ensure it can support any scenario. Functional\n * arguments allow overriding without risks that come with subclasses.\n *\n * For example, the default behavior of adjust tone at max contrast\n * to be at a 7.0 ratio with its background is principled and\n * matches accessibility guidance. That does not mean it's the desired\n * approach for _every_ design system, and every color pairing,\n * always, in every case.\n *\n * @param name The name of the dynamic color. Defaults to empty.\n * @param palette Function that provides a TonalPalette given DynamicScheme. A\n * TonalPalette is defined by a hue and chroma, so this replaces the need\n * to specify hue/chroma. By providing a tonal palette, when contrast\n * adjustments are made, intended chroma can be preserved.\n * @param tone Function that provides a tone, given a DynamicScheme.\n * @param isBackground Whether this dynamic color is a background, with some\n * other color as the foreground. Defaults to false.\n * @param chromaMultiplier A factor that multiplies the chroma for this color.\n * @param background The background of the dynamic color (as a function of a\n * `DynamicScheme`), if it exists.\n * @param secondBackground A second background of the dynamic color (as a\n * function of a `DynamicScheme`), if it exists.\n * @param contrastCurve A `ContrastCurve` object specifying how its contrast\n * against its background should behave in various contrast levels\n * options.\n * @param toneDeltaPair A `ToneDeltaPair` object specifying a tone delta\n * constraint between two colors. One of them must be the color being\n * constructed.\n */\n constructor(\n readonly name: string,\n readonly palette: (scheme: DynamicScheme) => TonalPalette,\n readonly tone: (scheme: DynamicScheme) => number,\n readonly isBackground: boolean,\n readonly chromaMultiplier?: (scheme: DynamicScheme) => number,\n readonly background?: (scheme: DynamicScheme) => DynamicColor | undefined,\n readonly secondBackground?: (scheme: DynamicScheme) => DynamicColor |\n undefined,\n readonly contrastCurve?: (scheme: DynamicScheme) => ContrastCurve |\n undefined,\n readonly toneDeltaPair?: (scheme: DynamicScheme) => ToneDeltaPair |\n undefined,\n ) {\n if ((!background) && secondBackground) {\n throw new Error(\n `Color ${name} has secondBackground` +\n `defined, but background is not defined.`);\n }\n if ((!background) && contrastCurve) {\n throw new Error(\n `Color ${name} has contrastCurve` +\n `defined, but background is not defined.`);\n }\n if (background && !contrastCurve) {\n throw new Error(\n `Color ${name} has background` +\n `defined, but contrastCurve is not defined.`);\n }\n }\n\n /**\n * Returns a deep copy of this DynamicColor.\n */\n clone(): DynamicColor {\n return DynamicColor.fromPalette({\n name: this.name,\n palette: this.palette,\n tone: this.tone,\n isBackground: this.isBackground,\n chromaMultiplier: this.chromaMultiplier,\n background: this.background,\n secondBackground: this.secondBackground,\n contrastCurve: this.contrastCurve,\n toneDeltaPair: this.toneDeltaPair,\n });\n }\n\n /**\n * Clears the cache of HCT values for this color. For testing or debugging\n * purposes.\n */\n clearCache() {\n this.hctCache.clear();\n }\n\n /**\n * Returns a ARGB integer (i.e. a hex code).\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getArgb(scheme: DynamicScheme): number {\n return this.getHct(scheme).toInt();\n }\n\n /**\n * Returns a color, expressed in the HCT color space, that this\n * DynamicColor is under the conditions in scheme.\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getHct(scheme: DynamicScheme): Hct {\n const cachedAnswer = this.hctCache.get(scheme);\n if (cachedAnswer != null) {\n return cachedAnswer;\n }\n const answer = getSpec(scheme.specVersion).getHct(scheme, this);\n if (this.hctCache.size > 4) {\n this.hctCache.clear();\n }\n this.hctCache.set(scheme, answer);\n return answer;\n }\n\n /**\n * Returns a tone, T in the HCT color space, that this DynamicColor is under\n * the conditions in scheme.\n *\n * @param scheme Defines the conditions of the user interface, for example,\n * whether or not it is dark mode or light mode, and what the desired\n * contrast level is.\n */\n getTone(scheme: DynamicScheme): number {\n return getSpec(scheme.specVersion).getTone(scheme, this);\n }\n\n /**\n * Given a background tone, finds a foreground tone, while ensuring they reach\n * a contrast ratio that is as close to [ratio] as possible.\n *\n * @param bgTone Tone in HCT. Range is 0 to 100, undefined behavior when it\n * falls outside that range.\n * @param ratio The contrast ratio desired between bgTone and the return\n * value.\n */\n static foregroundTone(bgTone: number, ratio: number): number {\n const lighterTone = Contrast.lighterUnsafe(bgTone, ratio);\n const darkerTone = Contrast.darkerUnsafe(bgTone, ratio);\n const lighterRatio = Contrast.ratioOfTones(lighterTone, bgTone);\n const darkerRatio = Contrast.ratioOfTones(darkerTone, bgTone);\n const preferLighter = DynamicColor.tonePrefersLightForeground(bgTone);\n\n if (preferLighter) {\n // This handles an edge case where the initial contrast ratio is high\n // (ex. 13.0), and the ratio passed to the function is that high\n // ratio, and both the lighter and darker ratio fails to pass that\n // ratio.\n //\n // This was observed with Tonal Spot's On Primary Container turning\n // black momentarily between high and max contrast in light mode. PC's\n // standard tone was T90, OPC's was T10, it was light mode, and the\n // contrast value was 0.6568521221032331.\n const negligibleDifference = Math.abs(lighterRatio - darkerRatio) < 0.1 &&\n lighterRatio < ratio && darkerRatio < ratio;\n return lighterRatio >= ratio || lighterRatio >= darkerRatio ||\n negligibleDifference ?\n lighterTone :\n darkerTone;\n } else {\n return darkerRatio >= ratio || darkerRatio >= lighterRatio ? darkerTone :\n lighterTone;\n }\n }\n\n /**\n * Returns whether [tone] prefers a light foreground.\n *\n * People prefer white foregrounds on ~T60-70. Observed over time, and also\n * by Andrew Somers during research for APCA.\n *\n * T60 used as to create the smallest discontinuity possible when skipping\n * down to T49 in order to ensure light foregrounds.\n * Since `tertiaryContainer` in dark monochrome scheme requires a tone of\n * 60, it should not be adjusted. Therefore, 60 is excluded here.\n */\n static tonePrefersLightForeground(tone: number): boolean {\n return Math.round(tone) < 60.0;\n }\n\n /**\n * Returns whether [tone] can reach a contrast ratio of 4.5 with a lighter\n * color.\n */\n static toneAllowsLightForeground(tone: number): boolean {\n return Math.round(tone) <= 49.0;\n }\n\n /**\n * Adjusts a tone such that white has 4.5 contrast, if the tone is\n * reasonably close to supporting it.\n */\n static enableLightForeground(tone: number): number {\n if (DynamicColor.tonePrefersLightForeground(tone) &&\n !DynamicColor.toneAllowsLightForeground(tone)) {\n return 49.0;\n }\n return tone;\n }\n}\n\n/**\n * A delegate for the color calculation of a DynamicScheme in the 2021 spec.\n */\nclass ColorCalculationDelegateImpl2021 implements ColorCalculationDelegate {\n getHct(scheme: DynamicScheme, color: DynamicColor): Hct {\n const tone = color.getTone(scheme);\n const palette = color.palette(scheme);\n return palette.getHct(tone);\n }\n\n getTone(scheme: DynamicScheme, color: DynamicColor): number {\n const decreasingContrast = scheme.contrastLevel < 0;\n const toneDeltaPair =\n color.toneDeltaPair ? color.toneDeltaPair(scheme) : undefined;\n\n // Case 1: dual foreground, pair of colors with delta constraint.\n if (toneDeltaPair) {\n const roleA = toneDeltaPair.roleA;\n const roleB = toneDeltaPair.roleB;\n const delta = toneDeltaPair.delta;\n const polarity = toneDeltaPair.polarity;\n const stayTogether = toneDeltaPair.stayTogether;\n\n const aIsNearer =\n (polarity === 'nearer' ||\n (polarity === 'lighter' && !scheme.isDark) ||\n (polarity === 'darker' && scheme.isDark));\n const nearer = aIsNearer ? roleA : roleB;\n const farther = aIsNearer ? roleB : roleA;\n const amNearer = color.name === nearer.name;\n const expansionDir = scheme.isDark ? 1 : -1;\n let nTone = nearer.tone(scheme);\n let fTone = farther.tone(scheme);\n\n // 1st round: solve to min for each, if background and contrast curve\n // are defined.\n if (color.background && nearer.contrastCurve && farther.contrastCurve) {\n const bg = color.background(scheme);\n const nContrastCurve = nearer.contrastCurve(scheme);\n const fContrastCurve = farther.contrastCurve(scheme);\n if (bg && nContrastCurve && fContrastCurve) {\n const bgTone = bg.getTone(scheme);\n const nContrast = nContrastCurve.get(scheme.contrastLevel);\n const fContrast = fContrastCurve.get(scheme.contrastLevel);\n // If a color is good enough, it is not adjusted.\n // Initial and adjusted tones for `nearer`\n if (Contrast.ratioOfTones(bgTone, nTone) < nContrast) {\n nTone = DynamicColor.foregroundTone(bgTone, nContrast);\n }\n // Initial and adjusted tones for `farther`\n if (Contrast.ratioOfTones(bgTone, fTone) < fContrast) {\n fTone = DynamicColor.foregroundTone(bgTone, fContrast);\n }\n if (decreasingContrast) {\n // If decreasing contrast, adjust color to the \"bare minimum\"\n // that satisfies contrast.\n nTone = DynamicColor.foregroundTone(bgTone, nContrast);\n fTone = DynamicColor.foregroundTone(bgTone, fContrast);\n }\n }\n }\n\n if ((fTone - nTone) * expansionDir < delta) {\n // 2nd round: expand farther to match delta, if contrast is not\n // satisfied.\n fTone = math.clampDouble(0, 100, nTone + delta * expansionDir);\n if ((fTone - nTone) * expansionDir >= delta) {\n // Good! Tones now satisfy the constraint; no change needed.\n } else {\n // 3rd round: contract nearer to match delta.\n nTone = math.clampDouble(0, 100, fTone - delta * expansionDir);\n }\n }\n\n // Avoids the 50-59 awkward zone.\n if (50 <= nTone && nTone < 60) {\n // If `nearer` is in the awkward zone, move it away, together with\n // `farther`.\n if (expansionDir > 0) {\n nTone = 60;\n fTone = Math.max(fTone, nTone + delta * expansionDir);\n } else {\n nTone = 49;\n fTone = Math.min(fTone, nTone + delta * expansionDir);\n }\n } else if (50 <= fTone && fTone < 60) {\n if (stayTogether) {\n // Fixes both, to avoid two colors on opposite sides of the \"awkward\n // zone\".\n if (expansionDir > 0) {\n nTone = 60;\n fTone = Math.max(fTone, nTone + delta * expansionDir);\n } else {\n nTone = 49;\n fTone = Math.min(fTone, nTone + delta * expansionDir);\n }\n } else {\n // Not required to stay together; fixes just one.\n if (expansionDir > 0) {\n fTone = 60;\n } else {\n fTone = 49;\n }\n }\n }\n\n // Returns `nTone` if this color is `nearer`, otherwise `fTone`.\n return amNearer ? nTone : fTone;\n } else {\n // Case 2: No contrast pair; just solve for itself.\n let answer = color.tone(scheme);\n\n if (color.background == undefined ||\n color.background(scheme) === undefined ||\n color.contrastCurve == undefined ||\n color.contrastCurve(scheme) === undefined) {\n return answer; // No adjustment for colors with no background.\n }\n\n const bgTone = color.background(scheme)!.getTone(scheme);\n const desiredRatio =\n color.contrastCurve(scheme)!.get(scheme.contrastLevel);\n\n if (Contrast.ratioOfTones(bgTone, answer) >= desiredRatio) {\n // Don't \"improve\" what's good enough.\n } else {\n // Rough improvement.\n answer = DynamicColor.foregroundTone(bgTone, desiredRatio);\n }\n\n if (decreasingContrast) {\n answer = DynamicColor.foregroundTone(bgTone, desiredRatio);\n }\n\n if (color.isBackground && 50 <= answer && answer < 60) {\n // Must adjust\n if (Contrast.ratioOfTones(49, bgTone) >= desiredRatio) {\n answer = 49;\n } else {\n answer = 60;\n }\n }\n\n if (color.secondBackground == undefined ||\n color.secondBackground(scheme) === undefined) {\n return answer;\n }\n\n // Case 3: Adjust for dual backgrounds.\n const [bg1, bg2] = [color.background, color.secondBackground];\n const [bgTone1, bgTone2] =\n [bg1(scheme)!.getTone(scheme), bg2(scheme)!.getTone(scheme)];\n const [upper, lower] =\n [Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2)];\n\n if (Contrast.ratioOfTones(upper, answer) >= desiredRatio &&\n Contrast.ratioOfTones(lower, answer) >= desiredRatio) {\n return answer;\n }\n\n // The darkest light tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const lightOption = Contrast.lighter(upper, desiredRatio);\n\n // The lightest dark tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const darkOption = Contrast.darker(lower, desiredRatio);\n\n // Tones suitable for the foreground.\n const availables = [];\n if (lightOption !== -1) availables.push(lightOption);\n if (darkOption !== -1) availables.push(darkOption);\n\n const prefersLight = DynamicColor.tonePrefersLightForeground(bgTone1) ||\n DynamicColor.tonePrefersLightForeground(bgTone2);\n if (prefersLight) {\n return (lightOption < 0) ? 100 : lightOption;\n }\n if (availables.length === 1) {\n return availables[0];\n }\n return (darkOption < 0) ? 0 : darkOption;\n }\n }\n}\n\n/**\n * A delegate for the color calculation of a DynamicScheme in the 2025 spec.\n */\nclass ColorCalculationDelegateImpl2025 implements ColorCalculationDelegate {\n getHct(scheme: DynamicScheme, color: DynamicColor): Hct {\n const palette = color.palette(scheme);\n const tone = color.getTone(scheme);\n const hue = palette.hue;\n const chroma = palette.chroma *\n (color.chromaMultiplier ? color.chromaMultiplier(scheme) : 1);\n\n return Hct.from(hue, chroma, tone);\n }\n\n getTone(scheme: DynamicScheme, color: DynamicColor): number {\n const toneDeltaPair =\n color.toneDeltaPair ? color.toneDeltaPair(scheme) : undefined;\n\n // Case 0: tone delta constraint.\n if (toneDeltaPair) {\n const roleA = toneDeltaPair.roleA;\n const roleB = toneDeltaPair.roleB;\n const polarity = toneDeltaPair.polarity;\n const constraint = toneDeltaPair.constraint;\n const absoluteDelta = polarity === 'darker' ||\n (polarity === 'relative_lighter' && scheme.isDark) ||\n (polarity === 'relative_darker' && !scheme.isDark) ?\n -toneDeltaPair.delta :\n toneDeltaPair.delta;\n\n const amRoleA = color.name === roleA.name;\n const selfRole = amRoleA ? roleA : roleB;\n const refRole = amRoleA ? roleB : roleA;\n let selfTone = selfRole.tone(scheme);\n let refTone = refRole.getTone(scheme);\n const relativeDelta = absoluteDelta * (amRoleA ? 1 : -1);\n\n if (constraint === 'exact') {\n selfTone = math.clampDouble(0, 100, refTone + relativeDelta);\n } else if (constraint === 'nearer') {\n if (relativeDelta > 0) {\n selfTone = math.clampDouble(\n 0, 100,\n math.clampDouble(refTone, refTone + relativeDelta, selfTone));\n } else {\n selfTone = math.clampDouble(\n 0, 100,\n math.clampDouble(refTone + relativeDelta, refTone, selfTone));\n }\n } else if (constraint === 'farther') {\n if (relativeDelta > 0) {\n selfTone = math.clampDouble(refTone + relativeDelta, 100, selfTone);\n } else {\n selfTone = math.clampDouble(0, refTone + relativeDelta, selfTone);\n }\n }\n\n if (color.background && color.contrastCurve) {\n const background = color.background(scheme);\n const contrastCurve = color.contrastCurve(scheme);\n if (background && contrastCurve) {\n // Adjust the tones for contrast, if background and contrast curve\n // are defined.\n const bgTone = background.getTone(scheme);\n const selfContrast = contrastCurve.get(scheme.contrastLevel);\n selfTone = Contrast.ratioOfTones(bgTone, selfTone) >= selfContrast &&\n scheme.contrastLevel >= 0 ?\n selfTone :\n DynamicColor.foregroundTone(bgTone, selfContrast);\n }\n }\n\n // This can avoid the awkward tones for background colors including the\n // access fixed colors. Accent fixed dim colors should not be adjusted.\n if (color.isBackground && !color.name.endsWith('_fixed_dim')) {\n if (selfTone >= 57) {\n selfTone = math.clampDouble(65, 100, selfTone);\n } else {\n selfTone = math.clampDouble(0, 49, selfTone);\n }\n }\n\n return selfTone;\n } else {\n // Case 1: No tone delta pair; just solve for itself.\n let answer = color.tone(scheme);\n\n if (color.background == undefined ||\n color.background(scheme) === undefined ||\n color.contrastCurve == undefined ||\n color.contrastCurve(scheme) === undefined) {\n return answer; // No adjustment for colors with no background.\n }\n\n const bgTone = color.background(scheme)!.getTone(scheme);\n const desiredRatio =\n color.contrastCurve(scheme)!.get(scheme.contrastLevel);\n\n // Recalculate the tone from desired contrast ratio if the current\n // contrast ratio is not enough or desired contrast level is decreasing\n // (<0).\n answer = Contrast.ratioOfTones(bgTone, answer) >= desiredRatio &&\n scheme.contrastLevel >= 0 ?\n answer :\n DynamicColor.foregroundTone(bgTone, desiredRatio);\n\n // This can avoid the awkward tones for background colors including the\n // access fixed colors. Accent fixed dim colors should not be adjusted.\n if (color.isBackground && !color.name.endsWith('_fixed_dim')) {\n if (answer >= 57) {\n answer = math.clampDouble(65, 100, answer);\n } else {\n answer = math.clampDouble(0, 49, answer);\n }\n }\n\n if (color.secondBackground == undefined ||\n color.secondBackground(scheme) === undefined) {\n return answer;\n }\n\n // Case 2: Adjust for dual backgrounds.\n const [bg1, bg2] = [color.background, color.secondBackground];\n const [bgTone1, bgTone2] =\n [bg1(scheme)!.getTone(scheme), bg2(scheme)!.getTone(scheme)];\n const [upper, lower] =\n [Math.max(bgTone1, bgTone2), Math.min(bgTone1, bgTone2)];\n\n if (Contrast.ratioOfTones(upper, answer) >= desiredRatio &&\n Contrast.ratioOfTones(lower, answer) >= desiredRatio) {\n return answer;\n }\n\n // The darkest light tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const lightOption = Contrast.lighter(upper, desiredRatio);\n\n // The lightest dark tone that satisfies the desired ratio,\n // or -1 if such ratio cannot be reached.\n const darkOption = Contrast.darker(lower, desiredRatio);\n\n // Tones suitable for the foreground.\n const availables = [];\n if (lightOption !== -1) availables.push(lightOption);\n if (darkOption !== -1) availables.push(darkOption);\n\n const prefersLight = DynamicColor.tonePrefersLightForeground(bgTone1) ||\n DynamicColor.tonePrefersLightForeground(bgTone2);\n if (prefersLight) {\n return (lightOption < 0) ? 100 : lightOption;\n }\n if (availables.length === 1) {\n return availables[0];\n }\n return (darkOption < 0) ? 0 : darkOption;\n }\n }\n}\n\nconst spec2021 = new ColorCalculationDelegateImpl2021();\nconst spec2025 = new ColorCalculationDelegateImpl2025();\n\n/**\n * Returns the ColorCalculationDelegate for the given spec version.\n */\nfunction getSpec(specVersion: SpecVersion): ColorCalculationDelegate {\n return specVersion === '2025' ? spec2025 : spec2021;\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Hct} from '../hct/hct.js';\n\n/**\n * A convenience class for retrieving colors that are constant in hue and\n * chroma, but vary in tone.\n */\nexport class TonalPalette {\n private readonly cache = new Map<number, number>();\n\n /**\n * @param argb ARGB representation of a color\n * @return Tones matching that color's hue and chroma.\n */\n static fromInt(argb: number): TonalPalette {\n const hct = Hct.fromInt(argb);\n return TonalPalette.fromHct(hct);\n }\n\n /**\n * @param hct Hct\n * @return Tones matching that color's hue and chroma.\n */\n static fromHct(hct: Hct) {\n return new TonalPalette(hct.hue, hct.chroma, hct);\n }\n\n /**\n * @param hue HCT hue\n * @param chroma HCT chroma\n * @return Tones matching hue and chroma.\n */\n static fromHueAndChroma(hue: number, chroma: number): TonalPalette {\n const keyColor = new KeyColor(hue, chroma).create();\n return new TonalPalette(hue, chroma, keyColor);\n }\n\n private constructor(\n readonly hue: number, readonly chroma: number, readonly keyColor: Hct) {}\n\n /**\n * @param tone HCT tone, measured from 0 to 100.\n * @return ARGB representation of a color with that tone.\n */\n tone(tone: number): number {\n let argb = this.cache.get(tone);\n if (argb === undefined) {\n if (tone == 99 && Hct.isYellow(this.hue)) {\n argb = this.averageArgb(this.tone(98), this.tone(100));\n } else {\n argb = Hct.from(this.hue, this.chroma, tone).toInt();\n }\n this.cache.set(tone, argb);\n }\n return argb;\n }\n\n /**\n * @param tone HCT tone.\n * @return HCT representation of a color with that tone.\n */\n getHct(tone: number): Hct {\n return Hct.fromInt(this.tone(tone));\n }\n\n private averageArgb(argb1: number, argb2: number): number {\n const red1 = (argb1 >>> 16) & 0xff;\n const green1 = (argb1 >>> 8) & 0xff;\n const blue1 = argb1 & 0xff;\n const red2 = (argb2 >>> 16) & 0xff;\n const green2 = (argb2 >>> 8) & 0xff;\n const blue2 = argb2 & 0xff;\n const red = Math.round((red1 + red2) / 2);\n const green = Math.round((green1 + green2) / 2);\n const blue = Math.round((blue1 + blue2) / 2);\n return (255 << 24 | (red & 255) << 16 | (green & 255) << 8 |\n (blue & 255)) >>>\n 0;\n }\n}\n\n/**\n * Key color is a color that represents the hue and chroma of a tonal palette\n */\nclass KeyColor {\n // Cache that maps tone to max chroma to avoid duplicated HCT calculation.\n private readonly chromaCache = new Map<number, number>();\n private readonly maxChromaValue = 200.0;\n\n constructor(readonly hue: number, readonly requestedChroma: number) {}\n\n /**\n * Creates a key color from a [hue] and a [chroma].\n * The key color is the first tone, starting from T50, matching the given hue\n * and chroma.\n *\n * @return Key color [Hct]\n */\n create(): Hct {\n // Pivot around T50 because T50 has the most chroma available, on\n // average. Thus it is most likely to have a direct answer.\n const pivotTone = 50;\n const toneStepSize = 1;\n // Epsilon to accept values slightly higher than the requested chroma.\n const epsilon = 0.01;\n\n // Binary search to find the tone that can provide a chroma that is closest\n // to the requested chroma.\n let lowerTone = 0;\n let upperTone = 100;\n while (lowerTone < upperTone) {\n const midTone = Math.floor((lowerTone + upperTone) / 2);\n const isAscending =\n this.maxChroma(midTone) < this.maxChroma(midTone + toneStepSize);\n const sufficientChroma =\n this.maxChroma(midTone) >= this.requestedChroma - epsilon;\n\n if (sufficientChroma) {\n // Either range [lowerTone, midTone] or [midTone, upperTone] has\n // the answer, so search in the range that is closer the pivot tone.\n if (Math.abs(lowerTone - pivotTone) < Math.abs(upperTone - pivotTone)) {\n upperTone = midTone;\n } else {\n if (lowerTone === midTone) {\n return Hct.from(this.hue, this.requestedChroma, lowerTone);\n }\n lowerTone = midTone;\n }\n } else {\n // As there is no sufficient chroma in the midTone, follow the direction\n // to the chroma peak.\n if (isAscending) {\n lowerTone = midTone + toneStepSize;\n } else {\n // Keep midTone for potential chroma peak.\n upperTone = midTone;\n }\n }\n }\n\n return Hct.from(this.hue, this.requestedChroma, lowerTone);\n }\n\n // Find the maximum chroma for a given tone\n private maxChroma(tone: number): number {\n if (this.chromaCache.has(tone)) {\n return this.chromaCache.get(tone)!;\n }\n const chroma = Hct.from(this.hue, this.maxChromaValue, tone).chroma;\n this.chromaCache.set(tone, chroma);\n return chroma;\n }\n}\n","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// This file is automatically generated. Do not modify it.\n\nimport {Hct} from '../hct/hct.js';\nimport * as colorUtils from '../utils/color_utils.js';\nimport * as mathUtils from '../utils/math_utils.js';\n\n/**\n * Design utilities using color temperature theory.\n *\n * Analogous colors, complementary color, and cache to efficiently, lazily,\n * generate data for calculations when needed.\n */\nexport class TemperatureCache {\n constructor(public input: Hct) {}\n\n hctsByTempCache: Hct[] = [];\n hctsByHueCache: Hct[] = [];\n tempsByHctCache = new Map<Hct, number>();\n inputRelativeTemperatureCache: number = -1.0;\n complementCache: Hct|null = null;\n\n get hctsByTemp(): Hct[] {\n if (this.hctsByTempCache.length > 0) {\n return this.hctsByTempCache;\n }\n\n const hcts = this.hctsByHue.concat([this.input]);\n const temperaturesByHct = this.tempsByHct;\n hcts.sort((a, b) => temperaturesByHct.get(a)! - temperaturesByHct.get(b)!);\n this.hctsByTempCache = hcts;\n return hcts;\n }\n\n get warmest(): Hct {\n return this.hctsByTemp[this.hctsByTemp.length - 1];\n }\n\n get coldest(): Hct {\n return this.hctsByTemp[0];\n }\n\n /**\n * A set of colors with differing hues, equidistant in temperature.\n *\n * In art, this is usually described as a set of 5 colors on a color wheel\n * divided into 12 sections. This method allows provision of either of those\n * values.\n *\n * Behavior is undefined when [count] or [divisions] is 0.\n * When divisions < count, colors repeat.\n *\n * [count] The number of colors to return, includes the input color.\n * [divisions] The number of divisions on the color wheel.\n */\n analogous(count = 5, divisions = 12): Hct[] {\n const startHue = Math.round(this.input.hue);\n const startHct = this.hctsByHue[startHue];\n let lastTemp = this.relativeTemperature(startHct);\n const allColors = [startHct];\n\n let absoluteTotalTempDelta = 0.0;\n for (let i = 0; i < 360; i++) {\n const hue = mathUtils.sanitizeDegreesInt(startHue + i);\n const hct = this.hctsByHue[hue];\n const temp = this.relativeTemperature(hct);\n const tempDelta = Math.abs(temp - lastTemp);\n lastTemp = temp;\n absoluteTotalTempDelta += tempDelta;\n }\n let hueAddend = 1;\n const tempStep = absoluteTotalTempDelta / divisions;\n let totalTempDelta = 0.0;\n lastTemp = this.relativeTemperature(startHct);\n while (allColors.length < divisions) {\n const hue = mathUtils.sanitizeDegreesInt(startHue + hueAddend);\n const hct = this.hctsByHue[hue];\n const temp = this.relativeTemperature(hct);\n const tempDelta = Math.abs(temp - lastTemp);\n totalTempDelta += tempDelta;\n\n const desiredTotalTempDeltaForIndex = allColors.length * tempStep;\n let indexSatisfied = totalTempDelta >= desiredTotalTempDeltaForIndex;\n let indexAddend = 1;\n // Keep adding this hue to the answers until its temperature is\n // insufficient. This ensures consistent behavior when there aren't\n // [divisions] discrete steps between 0 and 360 in hue with [tempStep]\n // delta in temperature between them.\n //\n // For example, white and black have no analogues: there are no other\n // colors at T100/T0. Therefore, they should just be added to the array\n // as answers.\n while (indexSatisfied && allColors.length < divisions) {\n allColors.push(hct);\n const desiredTotalTempDeltaForIndex =\n ((allColors.length + indexAddend) * tempStep);\n indexSatisfied = totalTempDelta >= desiredTotalTempDeltaForIndex;\n indexAddend++;\n }\n lastTemp = temp;\n hueAddend++;\n if (hueAddend > 360) {\n while (allColors.length < divisions) {\n allColors.push(hct);\n }\n break;\n }\n }\n\n const answers = [this.input];\n\n // First, generate analogues from rotating counter-clockwise.\n const increaseHueCount = Math.floor((count - 1) / 2.0);\n for (let i = 1; i < (increaseHueCount + 1); i++) {\n let index = 0 - i;\n while (index < 0) {\n index = allColors.length + index;\n }\n if (index >= allColors.length) {\n index = index % allColors.length;\n }\n answers.splice(0, 0, allColors[index]);\n }\n\n // Second, generate analogues from rotating clockwise.\n const decreaseHueCount = count - increaseHueCount - 1;\n for (let i = 1; i < (decreaseHueCount + 1); i++) {\n let index = i;\n while (index < 0) {\n index = allColors.length + index;\n }\n if (index >= allColors.length) {\n index = index % allColors.length;\n }\n answers.push(allColors[index]);\n }\n\n return answers;\n }\n\n /**\n * A color that complements the input color aesthetically.\n *\n * In art, this is usually described as being across the color wheel.\n * History of this shows intent as a color that is just as cool-warm as the\n * input color is warm-cool.\n */\n get complement(): Hct {\n if (this.complementCache != null) {\n return this.complementCache;\n }\n\n const coldestHue = this.coldest.hue;\n const coldestTemp = this.tempsByHct.get(this.coldest)!;\n\n const warmestHue = this.warmest.hue;\n const warmestTemp = this.tempsByHct.get(this.warmest)!;\n const range = warmestTemp - coldestTemp;\n const startHueIsColdestToWarmest =\n TemperatureCache.isBetween(this.input.hue, coldestHue, warmestHue);\n const startHue = startHueIsColdestToWarmest ? warmestHue : coldestHue;\n const endHue = startHueIsColdestToWarmest ? coldestHue : warmestHue;\n const directionOfRotation = 1.0;\n let smallestError = 1000.0;\n let answer = this.hctsByHue[Math.round(this.input.hue)];\n\n const complementRelativeTemp = 1.0 - this.inputRelativeTemperature;\n // Find the color in the other section, closest to the inverse percentile\n // of the input color. This is the complement.\n for (let hueAddend = 0.0; hueAddend <= 360.0; hueAddend += 1.0) {\n const hue = mathUtils.sanitizeDegreesDouble(\n startHue + directionOfRotation * hueAddend);\n if (!TemperatureCache.isBetween(hue, startHue, endHue)) {\n continue;\n }\n const possibleAnswer = this.hctsByHue[Math.round(hue)];\n const relativeTemp =\n (this.tempsByHct.get(possibleAnswer)! - coldestTemp) / range;\n const error = Math.abs(complementRelativeTemp - relativeTemp);\n if (error < smallestError) {\n smallestError = error;\n answer = possibleAnswer;\n }\n }\n this.complementCache = answer;\n return this.complementCache;\n }\n\n /**\n * Temperature relative to all colors with the same chroma and tone.\n * Value on a scale from 0 to 1.\n */\n relativeTemperature(hct: Hct): number {\n const range =\n this.tempsByHct.get(this.warmest)! - this.tempsByHct.get(this.coldest)!;\n const differenceFromColdest =\n this.tempsByHct.get(hct)! - this.tempsByHct.get(this.coldest)!;\n // Handle when there's no difference in temperature between warmest and\n // coldest: for example, at T100, only one color is available, white.\n if (range === 0.0) {\n return 0.5;\n }\n return differenceFromColdest / range;\n }\n\n /** Relative temperature of the input color. See [relativeTemperature]. */\n get inputRelativeTemperature(): number {\n if (this.inputRelativeTemperatureCache >= 0.0) {\n return this.inputRelativeTemperatureCache;\n }\n\n this.inputRelativeTemperatureCache = this.relativeTemperature(this.input);\n return this.inputRelativeTemperatureCache;\n }\n\n /** A Map with keys of HCTs in [hctsByTemp], values of raw temperature. */\n get tempsByHct(): Map<Hct, number> {\n if (this.tempsByHctCache.size > 0) {\n return this.tempsByHctCache;\n }\n const allHcts = this.hctsByHue.concat([this.input]);\n const temperaturesByHct = new Map<Hct, number>();\n for (const e of allHcts) {\n temperaturesByHct.set(e, TemperatureCache.rawTemperature(e));\n }\n this.tempsByHctCache = temperaturesByHct;\n return temperaturesByHct;\n }\n\n /**\n * HCTs for all hues, with the same chroma/tone as the input.\n * Sorted ascending, hue 0 to 360.\n */\n get hctsByHue(): Hct[] {\n if (this.hctsByHueCache.length > 0) {\n return this.hctsByHueCache;\n }\n const hcts: Hct[] = [];\n for (let hue = 0.0; hue <= 360.0; hue += 1.0) {\n const colorAtHue = Hct.from(hue, this.input.chroma, this.input.tone);\n hcts.push(colorAtHue);\n }\n this.hctsByHueCache = hcts;\n return this.hctsByHueCache;\n }\n\n /** Determines if an angle is between two other angles, rotating clockwise. */\n static isBetween(angle: number, a: number, b: number): boolean {\n if (a < b) {\n return a <= angle && angle <= b;\n }\n return a <= angle || angle <= b;\n }\n\n /**\n * Value representing cool-warm factor of a color.\n * Values below 0 are considered cool, above, warm.\n *\n * Color science has researched emotion and harmony, which art uses to select\n * colors. Warm-cool is the foundation of analogous and complementary colors.\n * See:\n * - Li-Chen Ou's Chapter 19 in Handbook of Color Psychology (2015).\n * - Josef Albers' Interaction of Color chapters 19 and 21.\n *\n * Implementation of Ou, Woodcock and Wright's algorithm, which uses\n * L*a*b* / LCH color space.\n * Return value has these properties:\n * - Values below 0 are cool, above 0 are warm.\n * - Lower bound: -0.52 - (chroma ^ 1.07 / 20). L*a*b* chroma is infinite.\n * Assuming max of 130 chroma, -9.66.\n * - Upper bound: -0.52 + (chroma ^ 1.07 / 20). L*a*b* chroma is infinite.\n * Assuming max of 130 chroma, 8.61.\n */\n static rawTemperature(color: Hct): number {\n const lab = colorUtils.labFromArgb(color.toInt());\n const hue = mathUtils.sanitizeDegreesDouble(\n Math.atan2(lab[2], lab[1]) * 180.0 / Math.PI);\n const chroma = Math.sqrt((lab[1] * lab[1]) + (lab[2] * lab[2]));\n const temperature = -0.5 +\n 0.02 * Math.pow(chroma, 1.07) *\n Math.cos(\n mathUtils.sanitizeDegreesDouble(hue - 50.0) * Math.PI / 180.0,\n );\n return temperature;\n }\n}\n","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as math from '../utils/math_utils.js';\n\n/**\n * A class containing a value that changes with the contrast level.\n *\n * Usually represents the contrast requirements for a dynamic color on its\n * background. The four values correspond to values for contrast levels -1.0,\n * 0.0, 0.5, and 1.0, respectively.\n */\nexport class ContrastCurve {\n /**\n * Creates a `ContrastCurve` object.\n *\n * @param low Value for contrast level -1.0\n * @param normal Value for contrast level 0.0\n * @param medium Value for contrast level 0.5\n * @param high Value for contrast level 1.0\n */\n constructor(\n readonly low: number,\n readonly normal: number,\n readonly medium: number,\n readonly high: number,\n ) {}\n\n /**\n * Returns the value at a given contrast level.\n *\n * @param contrastLevel The contrast level. 0.0 is the default (normal); -1.0\n * is the lowest; 1.0 is the highest.\n * @return The value. For contrast ratios, a number between 1.0 and 21.0.\n */\n get(contrastLevel: number): number {\n if (contrastLevel <= -1.0) {\n return this.low;\n } else if (contrastLevel < 0.0) {\n return math.lerp(this.low, this.normal, (contrastLevel - (-1)) / 1);\n } else if (contrastLevel < 0.5) {\n return math.lerp(this.normal, this.medium, (contrastLevel - 0) / 0.5);\n } else if (contrastLevel < 1.0) {\n return math.lerp(this.medium, this.high, (contrastLevel - 0.5) / 0.5);\n } else {\n return this.high;\n }\n }\n}\n","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DynamicColor} from './dynamic_color.js';\n\n/**\n * Describes the different in tone between colors.\n *\n * nearer and farther are deprecated. Use DeltaConstraint instead.\n */\nexport type TonePolarity =\n 'darker'|'lighter'|'nearer'|'farther'|'relative_darker'|'relative_lighter';\n\n/**\n * Describes how to fulfill a tone delta pair constraint.\n */\nexport type DeltaConstraint = 'exact'|'nearer'|'farther';\n\n/**\n * Documents a constraint between two DynamicColors, in which their tones must\n * have a certain distance from each other.\n *\n * Prefer a DynamicColor with a background, this is for special cases when\n * designers want tonal distance, literally contrast, between two colors that\n * don't have a background / foreground relationship or a contrast guarantee.\n */\nexport class ToneDeltaPair {\n /**\n * Documents a constraint in tone distance between two DynamicColors.\n *\n * The polarity is an adjective that describes \"A\", compared to \"B\".\n *\n * For instance, ToneDeltaPair(A, B, 15, 'darker', 'exact') states that\n * A's tone should be exactly 15 darker than B's.\n *\n * 'relative_darker' and 'relative_lighter' describes the tone adjustment\n * relative to the surface color trend (white in light mode; black in dark\n * mode). For instance, ToneDeltaPair(A, B, 10, 'relative_lighter',\n * 'farther') states that A should be at least 10 lighter than B in light\n * mode, and at least 10 darker than B in dark mode.\n *\n * @param roleA The first role in a pair.\n * @param roleB The second role in a pair.\n * @param delta Required difference between tones. Absolute value, negative\n * values have undefined behavior.\n * @param polarity The relative relation between tones of roleA and roleB,\n * as described above.\n * @param constraint How to fulfill the tone delta pair constraint.\n * @param stayTogether Whether these two roles should stay on the same side\n * of the \"awkward zone\" (T50-59). This is necessary for certain cases where\n * one role has two backgrounds.\n */\n constructor(\n readonly roleA: DynamicColor,\n readonly roleB: DynamicColor,\n readonly delta: number,\n readonly polarity: TonePolarity,\n readonly stayTogether: boolean,\n readonly constraint?: DeltaConstraint,\n ) {\n this.constraint = constraint ?? 'exact';\n }\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Set of themes supported by Dynamic Color.\n * Instantiate the corresponding subclass, ex. SchemeTonalSpot, to create\n * colors corresponding to the theme.\n */\nexport enum Variant {\n MONOCHROME,\n NEUTRAL,\n TONAL_SPOT,\n VIBRANT,\n EXPRESSIVE,\n FIDELITY,\n CONTENT,\n RAINBOW,\n FRUIT_SALAD\n}\n","/**\n * @license\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DislikeAnalyzer} from '../dislike/dislike_analyzer.js';\nimport {Hct} from '../hct/hct.js';\n\nimport {ColorSpecDelegate} from './color_spec.js';\nimport {ContrastCurve} from './contrast_curve.js';\nimport {DynamicColor} from './dynamic_color.js';\nimport type {DynamicScheme} from './dynamic_scheme';\nimport {ToneDeltaPair} from './tone_delta_pair.js';\nimport {Variant} from './variant.js';\n\n/**\n * Returns true if the scheme is Fidelity or Content.\n */\nfunction isFidelity(scheme: DynamicScheme): boolean {\n return scheme.variant === Variant.FIDELITY ||\n scheme.variant === Variant.CONTENT;\n}\n\n/**\n * Returns true if the scheme is Monochrome.\n */\nfunction isMonochrome(scheme: DynamicScheme): boolean {\n return scheme.variant === Variant.MONOCHROME;\n}\n\n/**\n * Returns the desired chroma for a given tone at a specific hue.\n *\n * @param hue The given hue.\n * @param chroma The target chroma.\n * @param tone The tone to start with.\n * @param byDecreasingTone Whether to search for lower tones.\n */\nfunction findDesiredChromaByTone(\n hue: number, chroma: number, tone: number,\n byDecreasingTone: boolean): number {\n let answer = tone;\n\n let closestToChroma = Hct.from(hue, chroma, tone);\n if (closestToChroma.chroma < chroma) {\n let chromaPeak = closestToChroma.chroma;\n while (closestToChroma.chroma < chroma) {\n answer += byDecreasingTone ? -1.0 : 1.0;\n const potentialSolution = Hct.from(hue, chroma, answer);\n if (chromaPeak > potentialSolution.chroma) {\n break;\n }\n if (Math.abs(potentialSolution.chroma - chroma) < 0.4) {\n break;\n }\n\n const potentialDelta = Math.abs(potentialSolution.chroma - chroma);\n const currentDelta = Math.abs(closestToChroma.chroma - chroma);\n if (potentialDelta < currentDelta) {\n closestToChroma = potentialSolution;\n }\n chromaPeak = Math.max(chromaPeak, potentialSolution.chroma);\n }\n }\n\n return answer;\n}\n\n/**\n * A delegate for the dynamic color spec of a DynamicScheme in the 2021 spec.\n */\nexport class ColorSpecDelegateImpl2021 implements ColorSpecDelegate {\n ////////////////////////////////////////////////////////////////\n // Main Palettes //\n ////////////////////////////////////////////////////////////////\n\n primaryPaletteKeyColor(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'primary_palette_key_color',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.primaryPalette.keyColor.tone,\n });\n }\n\n secondaryPaletteKeyColor(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'secondary_palette_key_color',\n palette: (s) => s.secondaryPalette,\n tone: (s) => s.secondaryPalette.keyColor.tone,\n });\n }\n\n tertiaryPaletteKeyColor(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'tertiary_palette_key_color',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => s.tertiaryPalette.keyColor.tone,\n });\n }\n\n neutralPaletteKeyColor(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'neutral_palette_key_color',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.neutralPalette.keyColor.tone,\n });\n }\n\n neutralVariantPaletteKeyColor(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'neutral_variant_palette_key_color',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.neutralVariantPalette.keyColor.tone,\n });\n }\n\n errorPaletteKeyColor(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'error_palette_key_color',\n palette: (s) => s.errorPalette,\n tone: (s) => s.errorPalette.keyColor.tone,\n });\n }\n\n ////////////////////////////////////////////////////////////////\n // Surfaces [S] //\n ////////////////////////////////////////////////////////////////\n\n background(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'background',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 6 : 98,\n isBackground: true,\n });\n }\n\n onBackground(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_background',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 90 : 10,\n background: (s) => this.background(),\n contrastCurve: (s) => new ContrastCurve(3, 3, 4.5, 7),\n });\n }\n\n surface(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 6 : 98,\n isBackground: true,\n });\n }\n\n surfaceDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_dim',\n palette: (s) => s.neutralPalette,\n tone: (s) =>\n s.isDark ? 6 : new ContrastCurve(87, 87, 80, 75).get(s.contrastLevel),\n isBackground: true,\n });\n }\n\n surfaceBright(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_bright',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ?\n new ContrastCurve(24, 24, 29, 34).get(s.contrastLevel) :\n 98,\n isBackground: true,\n });\n }\n\n surfaceContainerLowest(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_container_lowest',\n palette: (s) => s.neutralPalette,\n tone: (s) =>\n s.isDark ? new ContrastCurve(4, 4, 2, 0).get(s.contrastLevel) : 100,\n isBackground: true,\n });\n }\n\n surfaceContainerLow(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_container_low',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ?\n new ContrastCurve(10, 10, 11, 12).get(s.contrastLevel) :\n new ContrastCurve(96, 96, 96, 95).get(s.contrastLevel),\n isBackground: true,\n });\n }\n\n surfaceContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_container',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ?\n new ContrastCurve(12, 12, 16, 20).get(s.contrastLevel) :\n new ContrastCurve(94, 94, 92, 90).get(s.contrastLevel),\n isBackground: true,\n });\n }\n\n surfaceContainerHigh(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_container_high',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ?\n new ContrastCurve(17, 17, 21, 25).get(s.contrastLevel) :\n new ContrastCurve(92, 92, 88, 85).get(s.contrastLevel),\n isBackground: true,\n });\n }\n\n surfaceContainerHighest(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_container_highest',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ?\n new ContrastCurve(22, 22, 26, 30).get(s.contrastLevel) :\n new ContrastCurve(90, 90, 84, 80).get(s.contrastLevel),\n isBackground: true,\n });\n }\n\n onSurface(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 90 : 10,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n surfaceVariant(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_variant',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 30 : 90,\n isBackground: true,\n });\n }\n\n onSurfaceVariant(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_surface_variant',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 80 : 30,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n inverseSurface(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'inverse_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 90 : 20,\n isBackground: true,\n });\n }\n\n inverseOnSurface(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'inverse_on_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 20 : 95,\n background: (s) => this.inverseSurface(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n outline(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'outline',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 60 : 50,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1.5, 3, 4.5, 7),\n });\n }\n\n outlineVariant(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'outline_variant',\n palette: (s) => s.neutralVariantPalette,\n tone: (s) => s.isDark ? 30 : 80,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n });\n }\n\n shadow(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'shadow',\n palette: (s) => s.neutralPalette,\n tone: (s) => 0,\n });\n }\n\n scrim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'scrim',\n palette: (s) => s.neutralPalette,\n tone: (s) => 0,\n });\n }\n\n surfaceTint(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'surface_tint',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.isDark ? 80 : 40,\n isBackground: true,\n });\n }\n\n ////////////////////////////////////////////////////////////////\n // Primary [P]. //\n ////////////////////////////////////////////////////////////////\n\n primary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 100 : 0;\n }\n return s.isDark ? 80 : 40;\n },\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.primaryContainer(), this.primary(), 10, 'nearer', false),\n });\n }\n\n primaryDim(): DynamicColor|undefined {\n return undefined;\n }\n\n onPrimary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 10 : 90;\n }\n return s.isDark ? 20 : 100;\n },\n background: (s) => this.primary(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n primaryContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'primary_container',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isFidelity(s)) {\n return s.sourceColorHct.tone;\n }\n if (isMonochrome(s)) {\n return s.isDark ? 85 : 25;\n }\n return s.isDark ? 30 : 90;\n },\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.primaryContainer(), this.primary(), 10, 'nearer', false),\n });\n }\n\n onPrimaryContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_primary_container',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (isFidelity(s)) {\n return DynamicColor.foregroundTone(\n this.primaryContainer().tone(s), 4.5);\n }\n if (isMonochrome(s)) {\n return s.isDark ? 0 : 100;\n }\n return s.isDark ? 90 : 30;\n },\n background: (s) => this.primaryContainer(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n inversePrimary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'inverse_primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => s.isDark ? 40 : 80,\n background: (s) => this.inverseSurface(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 7),\n });\n }\n\n /////////////////////////////////////////////////////////////////\n // Secondary [Q]. //\n /////////////////////////////////////////////////////////////////\n\n secondary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'secondary',\n palette: (s) => s.secondaryPalette,\n tone: (s) => s.isDark ? 80 : 40,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.secondaryContainer(), this.secondary(), 10, 'nearer', false),\n });\n }\n\n secondaryDim(): DynamicColor|undefined {\n return undefined;\n }\n\n onSecondary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_secondary',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 10 : 100;\n } else {\n return s.isDark ? 20 : 100;\n }\n },\n background: (s) => this.secondary(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n secondaryContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'secondary_container',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n const initialTone = s.isDark ? 30 : 90;\n if (isMonochrome(s)) {\n return s.isDark ? 30 : 85;\n }\n if (!isFidelity(s)) {\n return initialTone;\n }\n return findDesiredChromaByTone(\n s.secondaryPalette.hue, s.secondaryPalette.chroma, initialTone,\n s.isDark ? false : true);\n },\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.secondaryContainer(), this.secondary(), 10, 'nearer', false),\n });\n }\n\n onSecondaryContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_secondary_container',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 90 : 10;\n }\n if (!isFidelity(s)) {\n return s.isDark ? 90 : 30;\n }\n return DynamicColor.foregroundTone(\n this.secondaryContainer().tone(s), 4.5);\n },\n background: (s) => this.secondaryContainer(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n /////////////////////////////////////////////////////////////////\n // Tertiary [T]. //\n /////////////////////////////////////////////////////////////////\n\n tertiary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'tertiary',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 90 : 25;\n }\n return s.isDark ? 80 : 40;\n },\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.tertiaryContainer(), this.tertiary(), 10, 'nearer', false),\n });\n }\n\n tertiaryDim(): DynamicColor|undefined {\n return undefined;\n }\n\n onTertiary(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_tertiary',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 10 : 90;\n }\n return s.isDark ? 20 : 100;\n },\n background: (s) => this.tertiary(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n tertiaryContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'tertiary_container',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 60 : 49;\n }\n if (!isFidelity(s)) {\n return s.isDark ? 30 : 90;\n }\n const proposedHct = s.tertiaryPalette.getHct(s.sourceColorHct.tone);\n return DislikeAnalyzer.fixIfDisliked(proposedHct).tone;\n },\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.tertiaryContainer(), this.tertiary(), 10, 'nearer', false),\n });\n }\n\n onTertiaryContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_tertiary_container',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 0 : 100;\n }\n if (!isFidelity(s)) {\n return s.isDark ? 90 : 30;\n }\n return DynamicColor.foregroundTone(\n this.tertiaryContainer().tone(s), 4.5);\n },\n background: (s) => this.tertiaryContainer(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n //////////////////////////////////////////////////////////////////\n // Error [E]. //\n //////////////////////////////////////////////////////////////////\n\n error(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'error',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 80 : 40,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 7),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.errorContainer(), this.error(), 10, 'nearer', false),\n });\n }\n\n errorDim(): DynamicColor|undefined {\n return undefined;\n }\n\n onError(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_error',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 20 : 100,\n background: (s) => this.error(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n errorContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'error_container',\n palette: (s) => s.errorPalette,\n tone: (s) => s.isDark ? 30 : 90,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.errorContainer(), this.error(), 10, 'nearer', false),\n });\n }\n\n onErrorContainer(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_error_container',\n palette: (s) => s.errorPalette,\n tone: (s) => {\n if (isMonochrome(s)) {\n return s.isDark ? 90 : 10;\n }\n return s.isDark ? 90 : 30;\n },\n background: (s) => this.errorContainer(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n //////////////////////////////////////////////////////////////////\n // Primary Fixed [PF] //\n //////////////////////////////////////////////////////////////////\n\n primaryFixed(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'primary_fixed',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 40.0 : 90.0,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.primaryFixed(), this.primaryFixedDim(), 10, 'lighter', true),\n });\n }\n\n primaryFixedDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'primary_fixed_dim',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 30.0 : 80.0,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.primaryFixed(), this.primaryFixedDim(), 10, 'lighter', true),\n });\n }\n\n onPrimaryFixed(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_primary_fixed',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 100.0 : 10.0,\n background: (s) => this.primaryFixedDim(),\n secondBackground: (s) => this.primaryFixed(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n onPrimaryFixedVariant(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_primary_fixed_variant',\n palette: (s) => s.primaryPalette,\n tone: (s) => isMonochrome(s) ? 90.0 : 30.0,\n background: (s) => this.primaryFixedDim(),\n secondBackground: (s) => this.primaryFixed(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n ///////////////////////////////////////////////////////////////////\n // Secondary Fixed [QF] //\n ///////////////////////////////////////////////////////////////////\n\n secondaryFixed(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'secondary_fixed',\n palette: (s) => s.secondaryPalette,\n tone: (s) => isMonochrome(s) ? 80.0 : 90.0,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.secondaryFixed(), this.secondaryFixedDim(), 10, 'lighter', true),\n });\n }\n\n secondaryFixedDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'secondary_fixed_dim',\n palette: (s) => s.secondaryPalette,\n tone: (s) => isMonochrome(s) ? 70.0 : 80.0,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.secondaryFixed(), this.secondaryFixedDim(), 10, 'lighter', true),\n });\n }\n\n onSecondaryFixed(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_secondary_fixed',\n palette: (s) => s.secondaryPalette,\n tone: (s) => 10.0,\n background: (s) => this.secondaryFixedDim(),\n secondBackground: (s) => this.secondaryFixed(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n onSecondaryFixedVariant(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_secondary_fixed_variant',\n palette: (s) => s.secondaryPalette,\n tone: (s) => isMonochrome(s) ? 25.0 : 30.0,\n background: (s) => this.secondaryFixedDim(),\n secondBackground: (s) => this.secondaryFixed(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n /////////////////////////////////////////////////////////////////\n // Tertiary Fixed [TF] //\n /////////////////////////////////////////////////////////////////\n\n tertiaryFixed(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'tertiary_fixed',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 40.0 : 90.0,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.tertiaryFixed(), this.tertiaryFixedDim(), 10, 'lighter', true),\n });\n }\n\n tertiaryFixedDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'tertiary_fixed_dim',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 30.0 : 80.0,\n isBackground: true,\n background: (s) => this.highestSurface(s),\n contrastCurve: (s) => new ContrastCurve(1, 1, 3, 4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.tertiaryFixed(), this.tertiaryFixedDim(), 10, 'lighter', true),\n });\n }\n\n onTertiaryFixed(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_tertiary_fixed',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 100.0 : 10.0,\n background: (s) => this.tertiaryFixedDim(),\n secondBackground: (s) => this.tertiaryFixed(),\n contrastCurve: (s) => new ContrastCurve(4.5, 7, 11, 21),\n });\n }\n\n onTertiaryFixedVariant(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'on_tertiary_fixed_variant',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => isMonochrome(s) ? 90.0 : 30.0,\n background: (s) => this.tertiaryFixedDim(),\n secondBackground: (s) => this.tertiaryFixed(),\n contrastCurve: (s) => new ContrastCurve(3, 4.5, 7, 11),\n });\n }\n\n ////////////////////////////////////////////////////////////////\n // Other //\n ////////////////////////////////////////////////////////////////\n\n highestSurface(s: DynamicScheme): DynamicColor {\n return s.isDark ? this.surfaceBright() : this.surfaceDim();\n }\n}","/**\n * @license\n * Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Hct} from '../hct/hct.js';\nimport {TonalPalette} from '../palettes/tonal_palette.js';\nimport * as math from '../utils/math_utils.js';\n\nimport {ColorSpecDelegateImpl2021} from './color_spec_2021.js';\nimport {ContrastCurve} from './contrast_curve.js';\nimport {DynamicColor, extendSpecVersion} from './dynamic_color';\nimport type {DynamicScheme} from './dynamic_scheme';\nimport {ToneDeltaPair} from './tone_delta_pair.js';\nimport {Variant} from './variant.js';\n\n/**\n * Returns the maximum tone for a given chroma in the palette.\n *\n * @param palette The tonal palette to use.\n * @param lowerBound The lower bound of the tone.\n * @param upperBound The upper bound of the tone.\n */\nfunction tMaxC(\n palette: TonalPalette, lowerBound: number = 0, upperBound: number = 100,\n chromaMultiplier: number = 1): number {\n let answer = findBestToneForChroma(\n palette.hue, palette.chroma * chromaMultiplier, 100, true);\n return math.clampDouble(lowerBound, upperBound, answer);\n}\n\n/**\n * Returns the minimum tone for a given chroma in the palette.\n *\n * @param palette The tonal palette to use.\n * @param lowerBound The lower bound of the tone.\n * @param upperBound The upper bound of the tone.\n */\nfunction tMinC(\n palette: TonalPalette, lowerBound: number = 0,\n upperBound: number = 100): number {\n let answer = findBestToneForChroma(palette.hue, palette.chroma, 0, false);\n return math.clampDouble(lowerBound, upperBound, answer);\n}\n\n/**\n * Searches for the best tone with a given chroma from a given tone at a\n * specific hue.\n *\n * @param hue The given hue.\n * @param chroma The target chroma.\n * @param tone The tone to start with.\n * @param byDecreasingTone Whether to search for lower tones.\n */\nfunction findBestToneForChroma(\n hue: number, chroma: number, tone: number,\n byDecreasingTone: boolean): number {\n let answer = tone;\n let bestCandidate = Hct.from(hue, chroma, answer);\n while (bestCandidate.chroma < chroma) {\n if (tone < 0 || tone > 100) {\n break;\n }\n tone += byDecreasingTone ? -1.0 : 1.0;\n const newCandidate = Hct.from(hue, chroma, tone);\n if (bestCandidate.chroma < newCandidate.chroma) {\n bestCandidate = newCandidate;\n answer = tone;\n }\n }\n\n return answer;\n}\n\n/**\n * Returns the contrast curve for a given default contrast.\n *\n * @param defaultContrast The default contrast to use.\n */\nfunction getCurve(defaultContrast: number): ContrastCurve {\n if (defaultContrast === 1.5) {\n return new ContrastCurve(1.5, 1.5, 3, 5.5);\n } else if (defaultContrast === 3) {\n return new ContrastCurve(3, 3, 4.5, 7);\n } else if (defaultContrast === 4.5) {\n return new ContrastCurve(4.5, 4.5, 7, 11);\n } else if (defaultContrast === 6) {\n return new ContrastCurve(6, 6, 7, 11);\n } else if (defaultContrast === 7) {\n return new ContrastCurve(7, 7, 11, 21);\n } else if (defaultContrast === 9) {\n return new ContrastCurve(9, 9, 11, 21);\n } else if (defaultContrast === 11) {\n return new ContrastCurve(11, 11, 21, 21);\n } else if (defaultContrast === 21) {\n return new ContrastCurve(21, 21, 21, 21);\n } else {\n // Shouldn't happen.\n return new ContrastCurve(defaultContrast, defaultContrast, 7, 21);\n }\n}\n\n/**\n * A delegate for the dynamic color spec of a DynamicScheme in the 2025 spec.\n */\nexport class ColorSpecDelegateImpl2025 extends ColorSpecDelegateImpl2021 {\n ////////////////////////////////////////////////////////////////\n // Surfaces [S] //\n ////////////////////////////////////////////////////////////////\n\n override surface(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n super.surface().tone(s);\n if (s.platform === 'phone') {\n if (s.isDark) {\n return 4;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 99;\n } else if (s.variant === Variant.VIBRANT) {\n return 97;\n } else {\n return 98;\n }\n }\n } else {\n return 0;\n }\n },\n isBackground: true,\n });\n return extendSpecVersion(super.surface(), '2025', color2025);\n }\n\n override surfaceDim(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_dim',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.isDark) {\n return 4;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 90;\n } else if (s.variant === Variant.VIBRANT) {\n return 85;\n } else {\n return 87;\n }\n }\n },\n isBackground: true,\n chromaMultiplier: (s) => {\n if (!s.isDark) {\n if (s.variant === Variant.NEUTRAL) {\n return 2.5;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? 2.7 : 1.75;\n } else if (s.variant === Variant.VIBRANT) {\n return 1.36;\n }\n }\n return 1;\n },\n });\n return extendSpecVersion(super.surfaceDim(), '2025', color2025);\n }\n\n override surfaceBright(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_bright',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.isDark) {\n return 18;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 99;\n } else if (s.variant === Variant.VIBRANT) {\n return 97;\n } else {\n return 98;\n }\n }\n },\n isBackground: true,\n chromaMultiplier: (s) => {\n if (s.isDark) {\n if (s.variant === Variant.NEUTRAL) {\n return 2.5;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? 2.7 : 1.75;\n } else if (s.variant === Variant.VIBRANT) {\n return 1.36;\n }\n }\n return 1;\n },\n });\n return extendSpecVersion(super.surfaceBright(), '2025', color2025);\n }\n\n override surfaceContainerLowest(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_container_lowest',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 0 : 100,\n isBackground: true,\n });\n return extendSpecVersion(super.surfaceContainerLowest(), '2025', color2025);\n }\n\n override surfaceContainerLow(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_container_low',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.platform === 'phone') {\n if (s.isDark) {\n return 6;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 98;\n } else if (s.variant === Variant.VIBRANT) {\n return 95;\n } else {\n return 96;\n }\n }\n } else {\n return 15;\n }\n },\n isBackground: true,\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 1.3;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.25;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? 1.3 : 1.15;\n } else if (s.variant === Variant.VIBRANT) {\n return 1.08;\n }\n }\n return 1;\n },\n });\n return extendSpecVersion(super.surfaceContainerLow(), '2025', color2025);\n }\n\n override surfaceContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_container',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.platform === 'phone') {\n if (s.isDark) {\n return 9;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 96;\n } else if (s.variant === Variant.VIBRANT) {\n return 92;\n } else {\n return 94;\n }\n }\n } else {\n return 20;\n }\n },\n isBackground: true,\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 1.6;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.4;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? 1.6 : 1.3;\n } else if (s.variant === Variant.VIBRANT) {\n return 1.15;\n }\n }\n return 1;\n },\n });\n return extendSpecVersion(super.surfaceContainer(), '2025', color2025);\n }\n\n override surfaceContainerHigh(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_container_high',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.platform === 'phone') {\n if (s.isDark) {\n return 12;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 94;\n } else if (s.variant === Variant.VIBRANT) {\n return 90;\n } else {\n return 92;\n }\n }\n } else {\n return 25;\n }\n },\n isBackground: true,\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 1.9;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.5;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? 1.95 : 1.45;\n } else if (s.variant === Variant.VIBRANT) {\n return 1.22;\n }\n }\n return 1;\n },\n });\n return extendSpecVersion(super.surfaceContainerHigh(), '2025', color2025);\n }\n\n override surfaceContainerHighest(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'surface_container_highest',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.isDark) {\n return 15;\n } else {\n if (Hct.isYellow(s.neutralPalette.hue)) {\n return 92;\n } else if (s.variant === Variant.VIBRANT) {\n return 88;\n } else {\n return 90;\n }\n }\n },\n isBackground: true,\n chromaMultiplier: (s) => {\n if (s.variant === Variant.NEUTRAL) {\n return 2.2;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? 2.3 : 1.6;\n } else if (s.variant === Variant.VIBRANT) {\n return 1.29;\n } else { // default\n return 1;\n }\n },\n });\n return extendSpecVersion(\n super.surfaceContainerHighest(), '2025', color2025);\n }\n\n override onSurface(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => {\n if (s.variant === Variant.VIBRANT) {\n return tMaxC(s.neutralPalette, 0, 100, 1.1);\n } else {\n // For all other variants, the initial tone should be the default\n // tone, which is the same as the background color.\n return DynamicColor.getInitialToneFromBackground(\n (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh())(s);\n }\n },\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 2.2;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? (s.isDark ? 3.0 : 2.3) :\n 1.6;\n }\n }\n return 1;\n },\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.isDark && s.platform === 'phone' ? getCurve(11) : getCurve(9),\n });\n return extendSpecVersion(super.onSurface(), '2025', color2025);\n }\n\n override onSurfaceVariant(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_surface_variant',\n palette: (s) => s.neutralPalette,\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 2.2;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? (s.isDark ? 3.0 : 2.3) :\n 1.6;\n }\n }\n return 1;\n },\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) => s.platform === 'phone' ?\n (s.isDark ? getCurve(6) : getCurve(4.5)) :\n getCurve(7),\n });\n return extendSpecVersion(super.onSurfaceVariant(), '2025', color2025);\n }\n\n override outline(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'outline',\n palette: (s) => s.neutralPalette,\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 2.2;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? (s.isDark ? 3.0 : 2.3) :\n 1.6;\n }\n }\n return 1;\n },\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(3) : getCurve(4.5),\n });\n return extendSpecVersion(super.outline(), '2025', color2025);\n }\n\n override outlineVariant(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'outline_variant',\n palette: (s) => s.neutralPalette,\n chromaMultiplier: (s) => {\n if (s.platform === 'phone') {\n if (s.variant === Variant.NEUTRAL) {\n return 2.2;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return 1.7;\n } else if (s.variant === Variant.EXPRESSIVE) {\n return Hct.isYellow(s.neutralPalette.hue) ? (s.isDark ? 3.0 : 2.3) :\n 1.6;\n }\n }\n return 1;\n },\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(1.5) : getCurve(3),\n });\n return extendSpecVersion(super.outlineVariant(), '2025', color2025);\n }\n\n override inverseSurface(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'inverse_surface',\n palette: (s) => s.neutralPalette,\n tone: (s) => s.isDark ? 98 : 4,\n isBackground: true,\n });\n return extendSpecVersion(super.inverseSurface(), '2025', color2025);\n }\n\n override inverseOnSurface(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'inverse_on_surface',\n palette: (s) => s.neutralPalette,\n background: (s) => this.inverseSurface(),\n contrastCurve: (s) => getCurve(7),\n });\n return extendSpecVersion(super.inverseOnSurface(), '2025', color2025);\n }\n\n ////////////////////////////////////////////////////////////////\n // Primaries [P] //\n ////////////////////////////////////////////////////////////////\n\n override primary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (s.variant === Variant.NEUTRAL) {\n if (s.platform === 'phone') {\n return s.isDark ? 80 : 40;\n } else {\n return 90;\n }\n } else if (s.variant === Variant.TONAL_SPOT) {\n if (s.platform === 'phone') {\n if (s.isDark) {\n return 80;\n } else {\n return tMaxC(s.primaryPalette);\n }\n } else {\n return tMaxC(s.primaryPalette, 0, 90);\n }\n } else if (s.variant === Variant.EXPRESSIVE) {\n if (s.platform === 'phone') {\n return tMaxC(\n s.primaryPalette, 0,\n Hct.isYellow(s.primaryPalette.hue) ? 25 :\n Hct.isCyan(s.primaryPalette.hue) ? 88 :\n 98);\n } else { // WATCH\n return tMaxC(s.primaryPalette);\n }\n } else { // VIBRANT\n if (s.platform === 'phone') {\n return tMaxC(\n s.primaryPalette, 0,\n Hct.isCyan(s.primaryPalette.hue) ? 88 : 98);\n } else { // WATCH\n return tMaxC(s.primaryPalette);\n }\n }\n },\n isBackground: true,\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(4.5) : getCurve(7),\n toneDeltaPair: (s) => s.platform === 'phone' ?\n new ToneDeltaPair(\n this.primaryContainer(), this.primary(), 5, 'relative_lighter',\n true, 'farther') :\n undefined,\n });\n return extendSpecVersion(super.primary(), '2025', color2025);\n }\n\n override primaryDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'primary_dim',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (s.variant === Variant.NEUTRAL) {\n return 85;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return tMaxC(s.primaryPalette, 0, 90);\n } else {\n return tMaxC(s.primaryPalette);\n }\n },\n isBackground: true,\n background: (s) => this.surfaceContainerHigh(),\n contrastCurve: (s) => getCurve(4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.primaryDim(), this.primary(), 5, 'darker', true, 'farther'),\n });\n }\n\n override onPrimary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_primary',\n palette: (s) => s.primaryPalette,\n background: (s) =>\n s.platform === 'phone' ? this.primary() : this.primaryDim(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onPrimary(), '2025', color2025);\n }\n\n override primaryContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'primary_container',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n if (s.platform === 'watch') {\n return 30;\n } else if (s.variant === Variant.NEUTRAL) {\n return s.isDark ? 30 : 90;\n } else if (s.variant === Variant.TONAL_SPOT) {\n return s.isDark ? tMinC(s.primaryPalette, 35, 93) :\n tMaxC(s.primaryPalette, 0, 90);\n } else if (s.variant === Variant.EXPRESSIVE) {\n return s.isDark ? tMaxC(s.primaryPalette, 30, 93) :\n tMaxC(\n s.primaryPalette, 78,\n Hct.isCyan(s.primaryPalette.hue) ? 88 : 90);\n } else { // VIBRANT\n return s.isDark ? tMinC(s.primaryPalette, 66, 93) :\n tMaxC(\n s.primaryPalette, 66,\n Hct.isCyan(s.primaryPalette.hue) ? 88 : 93);\n }\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n toneDeltaPair: (s) => s.platform === 'phone' ?\n undefined :\n new ToneDeltaPair(\n this.primaryContainer(), this.primaryDim(), 10, 'darker', true,\n 'farther'),\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.primaryContainer(), '2025', color2025);\n }\n\n override onPrimaryContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_primary_container',\n palette: (s) => s.primaryPalette,\n background: (s) => this.primaryContainer(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onPrimaryContainer(), '2025', color2025);\n }\n\n override primaryFixed(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'primary_fixed',\n palette: (s) => s.primaryPalette,\n tone: (s) => {\n let tempS = Object.assign({}, s, {isDark: false, contrastLevel: 0});\n return this.primaryContainer().getTone(tempS);\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.primaryFixed(), '2025', color2025);\n }\n\n override primaryFixedDim(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'primary_fixed_dim',\n palette: (s) => s.primaryPalette,\n tone: (s) => this.primaryFixed().getTone(s),\n isBackground: true,\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.primaryFixedDim(), this.primaryFixed(), 5, 'darker', true,\n 'exact'),\n });\n return extendSpecVersion(super.primaryFixedDim(), '2025', color2025);\n }\n\n override onPrimaryFixed(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_primary_fixed',\n palette: (s) => s.primaryPalette,\n background: (s) => this.primaryFixedDim(),\n contrastCurve: (s) => getCurve(7),\n });\n return extendSpecVersion(super.onPrimaryFixed(), '2025', color2025);\n }\n\n override onPrimaryFixedVariant(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_primary_fixed_variant',\n palette: (s) => s.primaryPalette,\n background: (s) => this.primaryFixedDim(),\n contrastCurve: (s) => getCurve(4.5),\n });\n return extendSpecVersion(super.onPrimaryFixedVariant(), '2025', color2025);\n }\n\n override inversePrimary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'inverse_primary',\n palette: (s) => s.primaryPalette,\n tone: (s) => tMaxC(s.primaryPalette),\n background: (s) => this.inverseSurface(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.inversePrimary(), '2025', color2025);\n }\n\n ////////////////////////////////////////////////////////////////\n // Secondaries [Q] //\n ////////////////////////////////////////////////////////////////\n\n override secondary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'secondary',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (s.platform === 'watch') {\n return s.variant === Variant.NEUTRAL ?\n 90 :\n tMaxC(s.secondaryPalette, 0, 90);\n } else if (s.variant === Variant.NEUTRAL) {\n return s.isDark ? tMinC(s.secondaryPalette, 0, 98) :\n tMaxC(s.secondaryPalette);\n } else if (s.variant === Variant.VIBRANT) {\n return tMaxC(s.secondaryPalette, 0, s.isDark ? 90 : 98);\n } else { // EXPRESSIVE and TONAL_SPOT\n return s.isDark ? 80 : tMaxC(s.secondaryPalette);\n }\n },\n isBackground: true,\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(4.5) : getCurve(7),\n toneDeltaPair: (s) => s.platform === 'phone' ?\n new ToneDeltaPair(\n this.secondaryContainer(), this.secondary(), 5,\n 'relative_lighter', true, 'farther') :\n undefined,\n });\n return extendSpecVersion(super.secondary(), '2025', color2025);\n }\n\n override secondaryDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'secondary_dim',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (s.variant === Variant.NEUTRAL) {\n return 85;\n } else {\n return tMaxC(s.secondaryPalette, 0, 90);\n }\n },\n isBackground: true,\n background: (s) => this.surfaceContainerHigh(),\n contrastCurve: (s) => getCurve(4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.secondaryDim(), this.secondary(), 5, 'darker', true, 'farther'),\n });\n }\n\n override onSecondary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_secondary',\n palette: (s) => s.secondaryPalette,\n background: (s) =>\n s.platform === 'phone' ? this.secondary() : this.secondaryDim(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onSecondary(), '2025', color2025);\n }\n\n override secondaryContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'secondary_container',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n if (s.platform === 'watch') {\n return 30;\n } else if (s.variant === Variant.VIBRANT) {\n return s.isDark ? tMinC(s.secondaryPalette, 30, 40) :\n tMaxC(s.secondaryPalette, 84, 90);\n } else if (s.variant === Variant.EXPRESSIVE) {\n return s.isDark ? 15 : tMaxC(s.secondaryPalette, 90, 95);\n } else {\n return s.isDark ? 25 : 90;\n }\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n toneDeltaPair: (s) => s.platform === 'watch' ?\n new ToneDeltaPair(\n this.secondaryContainer(), this.secondaryDim(), 10, 'darker',\n true, 'farther') :\n undefined,\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.secondaryContainer(), '2025', color2025);\n }\n\n override onSecondaryContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_secondary_container',\n palette: (s) => s.secondaryPalette,\n background: (s) => this.secondaryContainer(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onSecondaryContainer(), '2025', color2025);\n }\n\n override secondaryFixed(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'secondary_fixed',\n palette: (s) => s.secondaryPalette,\n tone: (s) => {\n let tempS = Object.assign({}, s, {isDark: false, contrastLevel: 0});\n return this.secondaryContainer().getTone(tempS);\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.secondaryFixed(), '2025', color2025);\n }\n\n override secondaryFixedDim(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'secondary_fixed_dim',\n palette: (s) => s.secondaryPalette,\n tone: (s) => this.secondaryFixed().getTone(s),\n isBackground: true,\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.secondaryFixedDim(), this.secondaryFixed(), 5, 'darker', true,\n 'exact'),\n });\n return extendSpecVersion(super.secondaryFixedDim(), '2025', color2025);\n }\n\n override onSecondaryFixed(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_secondary_fixed',\n palette: (s) => s.secondaryPalette,\n background: (s) => this.secondaryFixedDim(),\n contrastCurve: (s) => getCurve(7),\n });\n return extendSpecVersion(super.onSecondaryFixed(), '2025', color2025);\n }\n\n override onSecondaryFixedVariant(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_secondary_fixed_variant',\n palette: (s) => s.secondaryPalette,\n background: (s) => this.secondaryFixedDim(),\n contrastCurve: (s) => getCurve(4.5),\n });\n return extendSpecVersion(\n super.onSecondaryFixedVariant(), '2025', color2025);\n }\n\n ////////////////////////////////////////////////////////////////\n // Tertiaries [T] //\n ////////////////////////////////////////////////////////////////\n\n override tertiary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'tertiary',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (s.platform === 'watch') {\n return s.variant === Variant.TONAL_SPOT ?\n tMaxC(s.tertiaryPalette, 0, 90) :\n tMaxC(s.tertiaryPalette);\n } else if (\n s.variant === Variant.EXPRESSIVE || s.variant === Variant.VIBRANT) {\n return tMaxC(\n s.tertiaryPalette, 0,\n Hct.isCyan(s.tertiaryPalette.hue) ? 88 : (s.isDark ? 98 : 100));\n } else { // NEUTRAL and TONAL_SPOT\n return s.isDark ? tMaxC(s.tertiaryPalette, 0, 98) :\n tMaxC(s.tertiaryPalette);\n }\n },\n isBackground: true,\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(4.5) : getCurve(7),\n toneDeltaPair: (s) => s.platform === 'phone' ?\n new ToneDeltaPair(\n this.tertiaryContainer(), this.tertiary(), 5, 'relative_lighter',\n true, 'farther') :\n undefined,\n });\n return extendSpecVersion(super.tertiary(), '2025', color2025);\n }\n\n override tertiaryDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'tertiary_dim',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (s.variant === Variant.TONAL_SPOT) {\n return tMaxC(s.tertiaryPalette, 0, 90);\n } else {\n return tMaxC(s.tertiaryPalette);\n }\n },\n isBackground: true,\n background: (s) => this.surfaceContainerHigh(),\n contrastCurve: (s) => getCurve(4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.tertiaryDim(), this.tertiary(), 5, 'darker', true, 'farther'),\n });\n }\n\n override onTertiary(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_tertiary',\n palette: (s) => s.tertiaryPalette,\n background: (s) =>\n s.platform === 'phone' ? this.tertiary() : this.tertiaryDim(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onTertiary(), '2025', color2025);\n }\n\n override tertiaryContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'tertiary_container',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n if (s.platform === 'watch') {\n return s.variant === Variant.TONAL_SPOT ?\n tMaxC(s.tertiaryPalette, 0, 90) :\n tMaxC(s.tertiaryPalette);\n } else {\n if (s.variant === Variant.NEUTRAL) {\n return s.isDark ? tMaxC(s.tertiaryPalette, 0, 93) :\n tMaxC(s.tertiaryPalette, 0, 96);\n } else if (s.variant === Variant.TONAL_SPOT) {\n return tMaxC(s.tertiaryPalette, 0, s.isDark ? 93 : 100);\n } else if (s.variant === Variant.EXPRESSIVE) {\n return tMaxC(\n s.tertiaryPalette, 75,\n Hct.isCyan(s.tertiaryPalette.hue) ? 88 : (s.isDark ? 93 : 100));\n } else { // VIBRANT\n return s.isDark ? tMaxC(s.tertiaryPalette, 0, 93) :\n tMaxC(s.tertiaryPalette, 72, 100);\n }\n }\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n toneDeltaPair: (s) => s.platform === 'watch' ?\n new ToneDeltaPair(\n this.tertiaryContainer(), this.tertiaryDim(), 10, 'darker', true,\n 'farther') :\n undefined,\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.tertiaryContainer(), '2025', color2025);\n }\n\n override onTertiaryContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_tertiary_container',\n palette: (s) => s.tertiaryPalette,\n background: (s) => this.tertiaryContainer(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onTertiaryContainer(), '2025', color2025);\n }\n\n override tertiaryFixed(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'tertiary_fixed',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => {\n let tempS = Object.assign({}, s, {isDark: false, contrastLevel: 0});\n return this.tertiaryContainer().getTone(tempS);\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.tertiaryFixed(), '2025', color2025);\n }\n\n override tertiaryFixedDim(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'tertiary_fixed_dim',\n palette: (s) => s.tertiaryPalette,\n tone: (s) => this.tertiaryFixed().getTone(s),\n isBackground: true,\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.tertiaryFixedDim(), this.tertiaryFixed(), 5, 'darker', true,\n 'exact'),\n });\n return extendSpecVersion(super.tertiaryFixedDim(), '2025', color2025);\n }\n\n override onTertiaryFixed(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_tertiary_fixed',\n palette: (s) => s.tertiaryPalette,\n background: (s) => this.tertiaryFixedDim(),\n contrastCurve: (s) => getCurve(7),\n });\n return extendSpecVersion(super.onTertiaryFixed(), '2025', color2025);\n }\n\n override onTertiaryFixedVariant(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_tertiary_fixed_variant',\n palette: (s) => s.tertiaryPalette,\n background: (s) => this.tertiaryFixedDim(),\n contrastCurve: (s) => getCurve(4.5),\n });\n return extendSpecVersion(super.onTertiaryFixedVariant(), '2025', color2025);\n }\n\n ////////////////////////////////////////////////////////////////\n // Errors [E] //\n ////////////////////////////////////////////////////////////////\n\n override error(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'error',\n palette: (s) => s.errorPalette,\n tone: (s) => {\n if (s.platform === 'phone') {\n return s.isDark ? tMinC(s.errorPalette, 0, 98) :\n tMaxC(s.errorPalette);\n } else {\n return tMinC(s.errorPalette);\n }\n },\n isBackground: true,\n background: (s) => s.platform === 'phone' ? this.highestSurface(s) :\n this.surfaceContainerHigh(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(4.5) : getCurve(7),\n toneDeltaPair: (s) => s.platform === 'phone' ?\n new ToneDeltaPair(\n this.errorContainer(), this.error(), 5, 'relative_lighter', true,\n 'farther') :\n undefined,\n });\n return extendSpecVersion(super.error(), '2025', color2025);\n }\n\n override errorDim(): DynamicColor {\n return DynamicColor.fromPalette({\n name: 'error_dim',\n palette: (s) => s.errorPalette,\n tone: (s) => tMinC(s.errorPalette),\n isBackground: true,\n background: (s) => this.surfaceContainerHigh(),\n contrastCurve: (s) => getCurve(4.5),\n toneDeltaPair: (s) => new ToneDeltaPair(\n this.errorDim(), this.error(), 5, 'darker', true, 'farther'),\n });\n }\n\n override onError(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_error',\n palette: (s) => s.errorPalette,\n background: (s) =>\n s.platform === 'phone' ? this.error() : this.errorDim(),\n contrastCurve: (s) => s.platform === 'phone' ? getCurve(6) : getCurve(7),\n });\n return extendSpecVersion(super.onError(), '2025', color2025);\n }\n\n override errorContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'error_container',\n palette: (s) => s.errorPalette,\n tone: (s) => {\n if (s.platform === 'watch') {\n return 30;\n } else {\n return s.isDark ? tMinC(s.errorPalette, 30, 93) :\n tMaxC(s.errorPalette, 0, 90);\n }\n },\n isBackground: true,\n background: (s) =>\n s.platform === 'phone' ? this.highestSurface(s) : undefined,\n toneDeltaPair: (s) => s.platform === 'watch' ?\n new ToneDeltaPair(\n this.errorContainer(), this.errorDim(), 10, 'darker', true,\n 'farther') :\n undefined,\n contrastCurve: (s) => s.platform === 'phone' && s.contrastLevel > 0 ?\n getCurve(1.5) :\n undefined,\n });\n return extendSpecVersion(super.errorContainer(), '2025', color2025);\n }\n\n override onErrorContainer(): DynamicColor {\n const color2025: DynamicColor = DynamicColor.fromPalette({\n name: 'on_error_container',\n palette: (s) => s.errorPalette,\n background: (s) => this.errorContainer(),\n contrastCurve: (s) =>\n s.platform === 'phone' ? getCurve(4.5) : getCurve(7),\n });\n return extendSpecVersion(super.onErrorContainer(), '2025', color2025);\n }\n\n /////////////////////////////////////////////////////////////////\n // Remapped Colors //\n /////////////////////////////////////////////////////////////////\n\n override surfaceVariant(): DynamicColor {\n const color2025: DynamicColor = Object.assign(\n this.surfaceContainerHighest().clone(), {name: 'surface_variant'});\n return extendSpecVersion(super.surfaceVariant(), '2025', color2025);\n }\n\n override surfaceTint(): DynamicColor {\n const color2025: DynamicColor =\n Object.assign(this.primary().clone(), {name: 'surface_tint'});\n return extendSpecVersion(super.surfaceTint(), '2025', color2025);\n }\n\n override background(): DynamicColor {\n const color2025: DynamicColor =\n Object.assign(this.surface().clone(), {name: 'background'});\n return extendSpecVersion(super.background(), '2025', color2025);\n }\n\n override onBackground(): DynamicColor {\n const color2025: DynamicColor = Object.assign(this.onSurface().clone(), {\n name: 'on_background',\n tone: (s: DynamicScheme) => {\n return s.platform === 'watch' ? 100.0 : this.onSurface().getTone(s);\n }\n });\n return extendSpecVersion(super.onBackground(), '2025', color2025);\n }\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ColorSpecDelegateImpl2025} from './color_spec_2025.js';\nimport {DynamicColor} from './dynamic_color.js';\nimport type {DynamicScheme} from './dynamic_scheme';\n\n/**\n * DynamicColors for the colors in the Material Design system.\n */\n// Material Color Utilities namespaces the various utilities it provides.\n// tslint:disable-next-line:class-as-namespace\nexport class MaterialDynamicColors {\n static contentAccentToneDelta = 15.0;\n\n private static readonly colorSpec = new ColorSpecDelegateImpl2025();\n\n highestSurface(s: DynamicScheme): DynamicColor {\n return MaterialDynamicColors.colorSpec.highestSurface(s);\n }\n\n ////////////////////////////////////////////////////////////////\n // Main Palettes //\n ////////////////////////////////////////////////////////////////\n\n primaryPaletteKeyColor(): DynamicColor {\n return MaterialDynamicColors.colorSpec.primaryPaletteKeyColor();\n }\n\n secondaryPaletteKeyColor(): DynamicColor {\n return MaterialDynamicColors.colorSpec.secondaryPaletteKeyColor();\n }\n\n tertiaryPaletteKeyColor(): DynamicColor {\n return MaterialDynamicColors.colorSpec.tertiaryPaletteKeyColor();\n }\n\n neutralPaletteKeyColor(): DynamicColor {\n return MaterialDynamicColors.colorSpec.neutralPaletteKeyColor();\n }\n\n neutralVariantPaletteKeyColor(): DynamicColor {\n return MaterialDynamicColors.colorSpec.neutralVariantPaletteKeyColor();\n }\n\n errorPaletteKeyColor(): DynamicColor {\n return MaterialDynamicColors.colorSpec.errorPaletteKeyColor();\n }\n\n ////////////////////////////////////////////////////////////////\n // Surfaces [S] //\n ////////////////////////////////////////////////////////////////\n\n background(): DynamicColor {\n return MaterialDynamicColors.colorSpec.background();\n }\n\n onBackground(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onBackground();\n }\n\n surface(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surface();\n }\n\n surfaceDim(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceDim();\n }\n\n surfaceBright(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceBright();\n }\n\n surfaceContainerLowest(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceContainerLowest();\n }\n\n surfaceContainerLow(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceContainerLow();\n }\n\n surfaceContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceContainer();\n }\n\n surfaceContainerHigh(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceContainerHigh();\n }\n\n surfaceContainerHighest(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceContainerHighest();\n }\n\n onSurface(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onSurface();\n }\n\n surfaceVariant(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceVariant();\n }\n\n onSurfaceVariant(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onSurfaceVariant();\n }\n\n outline(): DynamicColor {\n return MaterialDynamicColors.colorSpec.outline();\n }\n\n outlineVariant(): DynamicColor {\n return MaterialDynamicColors.colorSpec.outlineVariant();\n }\n\n inverseSurface(): DynamicColor {\n return MaterialDynamicColors.colorSpec.inverseSurface();\n }\n\n inverseOnSurface(): DynamicColor {\n return MaterialDynamicColors.colorSpec.inverseOnSurface();\n }\n\n shadow(): DynamicColor {\n return MaterialDynamicColors.colorSpec.shadow();\n }\n\n scrim(): DynamicColor {\n return MaterialDynamicColors.colorSpec.scrim();\n }\n\n surfaceTint(): DynamicColor {\n return MaterialDynamicColors.colorSpec.surfaceTint();\n }\n\n ////////////////////////////////////////////////////////////////\n // Primaries [P] //\n ////////////////////////////////////////////////////////////////\n\n primary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.primary();\n }\n\n primaryDim(): DynamicColor|undefined {\n return MaterialDynamicColors.colorSpec.primaryDim();\n }\n\n onPrimary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onPrimary();\n }\n\n primaryContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.primaryContainer();\n }\n\n onPrimaryContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onPrimaryContainer();\n }\n\n inversePrimary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.inversePrimary();\n }\n\n /////////////////////////////////////////////////////////////////\n // Primary Fixed [PF] //\n /////////////////////////////////////////////////////////////////\n\n primaryFixed(): DynamicColor {\n return MaterialDynamicColors.colorSpec.primaryFixed();\n }\n\n primaryFixedDim(): DynamicColor {\n return MaterialDynamicColors.colorSpec.primaryFixedDim();\n }\n\n onPrimaryFixed(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onPrimaryFixed();\n }\n\n onPrimaryFixedVariant(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onPrimaryFixedVariant();\n }\n\n ////////////////////////////////////////////////////////////////\n // Secondaries [Q] //\n ////////////////////////////////////////////////////////////////\n\n secondary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.secondary();\n }\n\n secondaryDim(): DynamicColor|undefined {\n return MaterialDynamicColors.colorSpec.secondaryDim();\n }\n\n onSecondary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onSecondary();\n }\n\n secondaryContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.secondaryContainer();\n }\n\n onSecondaryContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onSecondaryContainer();\n }\n\n /////////////////////////////////////////////////////////////////\n // Secondary Fixed [QF] //\n /////////////////////////////////////////////////////////////////\n\n secondaryFixed(): DynamicColor {\n return MaterialDynamicColors.colorSpec.secondaryFixed();\n }\n\n secondaryFixedDim(): DynamicColor {\n return MaterialDynamicColors.colorSpec.secondaryFixedDim();\n }\n\n onSecondaryFixed(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onSecondaryFixed();\n }\n\n onSecondaryFixedVariant(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onSecondaryFixedVariant();\n }\n\n ////////////////////////////////////////////////////////////////\n // Tertiaries [T] //\n ////////////////////////////////////////////////////////////////\n\n tertiary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.tertiary();\n }\n\n tertiaryDim(): DynamicColor|undefined {\n return MaterialDynamicColors.colorSpec.tertiaryDim();\n }\n\n onTertiary(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onTertiary();\n }\n\n tertiaryContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.tertiaryContainer();\n }\n\n onTertiaryContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onTertiaryContainer();\n }\n\n /////////////////////////////////////////////////////////////////\n // Tertiary Fixed [TF] //\n /////////////////////////////////////////////////////////////////\n\n tertiaryFixed(): DynamicColor {\n return MaterialDynamicColors.colorSpec.tertiaryFixed();\n }\n\n tertiaryFixedDim(): DynamicColor {\n return MaterialDynamicColors.colorSpec.tertiaryFixedDim();\n }\n\n onTertiaryFixed(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onTertiaryFixed();\n }\n\n onTertiaryFixedVariant(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onTertiaryFixedVariant();\n }\n\n ////////////////////////////////////////////////////////////////\n // Errors [E] //\n ////////////////////////////////////////////////////////////////\n\n error(): DynamicColor {\n return MaterialDynamicColors.colorSpec.error();\n }\n\n errorDim(): DynamicColor|undefined {\n return MaterialDynamicColors.colorSpec.errorDim();\n }\n\n onError(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onError();\n }\n\n errorContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.errorContainer();\n }\n\n onErrorContainer(): DynamicColor {\n return MaterialDynamicColors.colorSpec.onErrorContainer();\n }\n\n ////////////////////////////////////////////////////////////////\n // All Colors //\n ////////////////////////////////////////////////////////////////\n\n allColors: DynamicColor[] = [\n this.background(),\n this.onBackground(),\n this.surface(),\n this.surfaceDim(),\n this.surfaceBright(),\n this.surfaceContainerLowest(),\n this.surfaceContainerLow(),\n this.surfaceContainer(),\n this.surfaceContainerHigh(),\n this.surfaceContainerHighest(),\n this.onSurface(),\n this.onSurfaceVariant(),\n this.outline(),\n this.outlineVariant(),\n this.inverseSurface(),\n this.inverseOnSurface(),\n this.primary(),\n this.primaryDim(),\n this.onPrimary(),\n this.primaryContainer(),\n this.onPrimaryContainer(),\n this.primaryFixed(),\n this.primaryFixedDim(),\n this.onPrimaryFixed(),\n this.onPrimaryFixedVariant(),\n this.inversePrimary(),\n this.secondary(),\n this.secondaryDim(),\n this.onSecondary(),\n this.secondaryContainer(),\n this.onSecondaryContainer(),\n this.secondaryFixed(),\n this.secondaryFixedDim(),\n this.onSecondaryFixed(),\n this.onSecondaryFixedVariant(),\n this.tertiary(),\n this.tertiaryDim(),\n this.onTertiary(),\n this.tertiaryContainer(),\n this.onTertiaryContainer(),\n this.tertiaryFixed(),\n this.tertiaryFixedDim(),\n this.onTertiaryFixed(),\n this.onTertiaryFixedVariant(),\n this.error(),\n this.errorDim(),\n this.onError(),\n this.errorContainer(),\n this.onErrorContainer(),\n ].filter((c) => c !== undefined);\n\n // Static variables are deprecated. Use the instance methods to get correct\n // specs based on request.\n\n /** @deprecated Use highestSurface() instead. */\n static highestSurface(s: DynamicScheme): DynamicColor {\n return MaterialDynamicColors.colorSpec.highestSurface(s);\n }\n\n /** @deprecated Use primaryPaletteKeyColor() instead. */\n static primaryPaletteKeyColor =\n MaterialDynamicColors.colorSpec.primaryPaletteKeyColor();\n\n /** @deprecated Use secondaryPaletteKeyColor() instead. */\n static secondaryPaletteKeyColor =\n MaterialDynamicColors.colorSpec.secondaryPaletteKeyColor();\n\n /** @deprecated Use tertiaryPaletteKeyColor() instead. */\n static tertiaryPaletteKeyColor =\n MaterialDynamicColors.colorSpec.tertiaryPaletteKeyColor();\n\n /** @deprecated Use neutralPaletteKeyColor() instead. */\n static neutralPaletteKeyColor =\n MaterialDynamicColors.colorSpec.neutralPaletteKeyColor();\n\n /** @deprecated Use neutralVariantPaletteKeyColor() instead. */\n static neutralVariantPaletteKeyColor =\n MaterialDynamicColors.colorSpec.neutralVariantPaletteKeyColor();\n\n /** @deprecated Use background() instead. */\n static background = MaterialDynamicColors.colorSpec.background();\n\n /** @deprecated Use background() instead. */\n static onBackground = MaterialDynamicColors.colorSpec.onBackground();\n\n /** @deprecated Use surface() instead. */\n static surface = MaterialDynamicColors.colorSpec.surface();\n\n /** @deprecated Use surfaceDim() instead. */\n static surfaceDim = MaterialDynamicColors.colorSpec.surfaceDim();\n\n /** @deprecated Use surfaceBright() instead. */\n static surfaceBright = MaterialDynamicColors.colorSpec.surfaceBright();\n\n /** @deprecated Use surfaceContainerLowest() instead. */\n static surfaceContainerLowest =\n MaterialDynamicColors.colorSpec.surfaceContainerLowest();\n\n /** @deprecated Use surfaceContainerLow() instead. */\n static surfaceContainerLow =\n MaterialDynamicColors.colorSpec.surfaceContainerLow();\n\n /** @deprecated Use surfaceContainer() instead. */\n static surfaceContainer = MaterialDynamicColors.colorSpec.surfaceContainer();\n\n /** @deprecated Use surfaceContainerHigh() instead. */\n static surfaceContainerHigh =\n MaterialDynamicColors.colorSpec.surfaceContainerHigh();\n\n /** @deprecated Use surfaceContainerHighest() instead. */\n static surfaceContainerHighest =\n MaterialDynamicColors.colorSpec.surfaceContainerHighest();\n\n /** @deprecated Use onSurface() instead. */\n static onSurface = MaterialDynamicColors.colorSpec.onSurface();\n\n /** @deprecated Use surfaceVariant() instead. */\n static surfaceVariant = MaterialDynamicColors.colorSpec.surfaceVariant();\n\n /** @deprecated Use onSurfaceVariant() instead. */\n static onSurfaceVariant = MaterialDynamicColors.colorSpec.onSurfaceVariant();\n\n /** @deprecated Use inverseSurface() instead. */\n static inverseSurface = MaterialDynamicColors.colorSpec.inverseSurface();\n\n /** @deprecated Use inverseOnSurface() instead. */\n static inverseOnSurface = MaterialDynamicColors.colorSpec.inverseOnSurface();\n\n /** @deprecated Use outline() instead. */\n static outline = MaterialDynamicColors.colorSpec.outline();\n\n /** @deprecated Use outlineVariant() instead. */\n static outlineVariant = MaterialDynamicColors.colorSpec.outlineVariant();\n\n /** @deprecated Use shadow() instead. */\n static shadow = MaterialDynamicColors.colorSpec.shadow();\n\n /** @deprecated Use scrim() instead. */\n static scrim = MaterialDynamicColors.colorSpec.scrim();\n\n /** @deprecated Use surfaceTint() instead. */\n static surfaceTint = MaterialDynamicColors.colorSpec.surfaceTint();\n\n /** @deprecated Use primary() instead. */\n static primary = MaterialDynamicColors.colorSpec.primary();\n\n /** @deprecated Use onPrimary() instead. */\n static onPrimary = MaterialDynamicColors.colorSpec.onPrimary();\n\n /** @deprecated Use primaryContainer() instead. */\n static primaryContainer = MaterialDynamicColors.colorSpec.primaryContainer();\n\n /** @deprecated Use onPrimaryContainer() instead. */\n static onPrimaryContainer =\n MaterialDynamicColors.colorSpec.onPrimaryContainer();\n\n /** @deprecated Use inversePrimary() instead. */\n static inversePrimary = MaterialDynamicColors.colorSpec.inversePrimary();\n\n /** @deprecated Use secondary() instead. */\n static secondary = MaterialDynamicColors.colorSpec.secondary();\n\n /** @deprecated Use onSecondary() instead. */\n static onSecondary = MaterialDynamicColors.colorSpec.onSecondary();\n\n /** @deprecated Use secondaryContainer() instead. */\n static secondaryContainer =\n MaterialDynamicColors.colorSpec.secondaryContainer();\n\n /** @deprecated Use onSecondaryContainer() instead. */\n static onSecondaryContainer =\n MaterialDynamicColors.colorSpec.onSecondaryContainer();\n\n /** @deprecated Use tertiary() instead. */\n static tertiary = MaterialDynamicColors.colorSpec.tertiary();\n\n /** @deprecated Use onTertiary() instead. */\n static onTertiary = MaterialDynamicColors.colorSpec.onTertiary();\n\n /** @deprecated Use tertiaryContainer() instead. */\n static tertiaryContainer = MaterialDynamicColors.colorSpec.tertiaryContainer();\n\n /** @deprecated Use onTertiaryContainer() instead. */\n static onTertiaryContainer =\n MaterialDynamicColors.colorSpec.onTertiaryContainer();\n\n /** @deprecated Use error() instead. */\n static error = MaterialDynamicColors.colorSpec.error();\n\n /** @deprecated Use onError() instead. */\n static onError = MaterialDynamicColors.colorSpec.onError();\n\n /** @deprecated Use errorContainer() instead. */\n static errorContainer = MaterialDynamicColors.colorSpec.errorContainer();\n\n /** @deprecated Use onErrorContainer() instead. */\n static onErrorContainer = MaterialDynamicColors.colorSpec.onErrorContainer();\n\n /** @deprecated Use primaryFixed() instead. */\n static primaryFixed = MaterialDynamicColors.colorSpec.primaryFixed();\n\n /** @deprecated Use primaryFixedDim() instead. */\n static primaryFixedDim = MaterialDynamicColors.colorSpec.primaryFixedDim();\n\n /** @deprecated Use onPrimaryFixed() instead. */\n static onPrimaryFixed = MaterialDynamicColors.colorSpec.onPrimaryFixed();\n\n /** @deprecated Use onPrimaryFixedVariant() instead. */\n static onPrimaryFixedVariant =\n MaterialDynamicColors.colorSpec.onPrimaryFixedVariant();\n\n /** @deprecated Use secondaryFixed() instead. */\n static secondaryFixed = MaterialDynamicColors.colorSpec.secondaryFixed();\n\n /** @deprecated Use secondaryFixedDim() instead. */\n static secondaryFixedDim = MaterialDynamicColors.colorSpec.secondaryFixedDim();\n\n /** @deprecated Use onSecondaryFixed() instead. */\n static onSecondaryFixed = MaterialDynamicColors.colorSpec.onSecondaryFixed();\n\n /** @deprecated Use onSecondaryFixedVariant() instead. */\n static onSecondaryFixedVariant =\n MaterialDynamicColors.colorSpec.onSecondaryFixedVariant();\n\n /** @deprecated Use tertiaryFixed() instead. */\n static tertiaryFixed = MaterialDynamicColors.colorSpec.tertiaryFixed();\n\n /** @deprecated Use tertiaryFixedDim() instead. */\n static tertiaryFixedDim = MaterialDynamicColors.colorSpec.tertiaryFixedDim();\n\n /** @deprecated Use onTertiaryFixed() instead. */\n static onTertiaryFixed = MaterialDynamicColors.colorSpec.onTertiaryFixed();\n\n /** @deprecated Use onTertiaryFixedVariant() instead. */\n static onTertiaryFixedVariant =\n MaterialDynamicColors.colorSpec.onTertiaryFixedVariant();\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DislikeAnalyzer} from '../dislike/dislike_analyzer.js';\nimport {Hct} from '../hct/hct.js';\nimport {TonalPalette} from '../palettes/tonal_palette.js';\nimport {TemperatureCache} from '../temperature/temperature_cache.js';\nimport * as math from '../utils/math_utils.js';\n\nimport {SpecVersion} from './color_spec.js';\nimport {DynamicColor} from './dynamic_color.js';\nimport {MaterialDynamicColors} from './material_dynamic_colors.js';\nimport {Variant} from './variant.js';\n\n/**\n * The platform on which this scheme is intended to be used. Only used in the\n * 2025 spec.\n */\nexport type Platform = 'phone'|'watch';\n\n/**\n * @param sourceColorArgb The source color of the theme as an ARGB 32-bit\n * integer.\n * @param variant The variant, or style, of the theme.\n * @param contrastLevel Value from -1 to 1. -1 represents minimum contrast, 0\n * represents standard (i.e. the design as spec'd), and 1 represents maximum\n * contrast.\n * @param isDark Whether the scheme is in dark mode or light mode.\n * @param platform The platform on which this scheme is intended to be used.\n * @param specVersion The version of the design spec that this scheme is based\n * on.\n * @param primaryPalette Given a tone, produces a color. Hue and chroma of the\n * color are specified in the design specification of the variant. Usually\n * colorful.\n * @param secondaryPalette Given a tone, produces a color. Hue and chroma of the\n * color are specified in the design specification of the variant. Usually\n * less colorful.\n * @param tertiaryPalette Given a tone, produces a color. Hue and chroma of the\n * color are specified in the design specification of the variant. Usually a\n * different hue from primary and colorful.\n * @param neutralPalette Given a tone, produces a color. Hue and chroma of the\n * color are specified in the design specification of the variant. Usually\n * not colorful at all, intended for background & surface colors.\n * @param neutralVariantPalette Given a tone, produces a color. Hue and chroma\n * of the color are specified in the design specification of the variant.\n * Usually not colorful, but slightly more colorful than Neutral. Intended\n * for backgrounds & surfaces.\n */\ninterface DynamicSchemeOptions {\n sourceColorHct: Hct;\n variant: Variant;\n contrastLevel: number;\n isDark: boolean;\n platform?: Platform;\n specVersion?: SpecVersion;\n primaryPalette?: TonalPalette;\n secondaryPalette?: TonalPalette;\n tertiaryPalette?: TonalPalette;\n neutralPalette?: TonalPalette;\n neutralVariantPalette?: TonalPalette;\n errorPalette?: TonalPalette;\n}\n\n/**\n * A delegate that provides the palettes of a DynamicScheme.\n *\n * This is used to allow different implementations of the palette calculation\n * logic for different spec versions.\n */\ninterface DynamicSchemePalettesDelegate {\n getPrimaryPalette:\n (variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number) => TonalPalette;\n\n getSecondaryPalette:\n (variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number) => TonalPalette;\n\n getTertiaryPalette:\n (variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number) => TonalPalette;\n\n getNeutralPalette:\n (variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number) => TonalPalette;\n\n getNeutralVariantPalette:\n (variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number) => TonalPalette;\n\n getErrorPalette:\n (variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number) => TonalPalette | undefined;\n}\n\n/**\n * Constructed by a set of values representing the current UI state (such as\n * whether or not its dark theme, what the theme style is, etc.), and\n * provides a set of TonalPalettes that can create colors that fit in\n * with the theme style. Used by DynamicColor to resolve into a color.\n */\nexport class DynamicScheme {\n static readonly DEFAULT_SPEC_VERSION = '2021';\n static readonly DEFAULT_PLATFORM = 'phone';\n\n /**\n * The source color of the theme as an HCT color.\n */\n sourceColorHct: Hct;\n\n /** The source color of the theme as an ARGB 32-bit integer. */\n readonly sourceColorArgb: number;\n\n /** The variant, or style, of the theme. */\n readonly variant: Variant;\n\n /**\n * Value from -1 to 1. -1 represents minimum contrast. 0 represents standard\n * (i.e. the design as spec'd), and 1 represents maximum contrast.\n */\n readonly contrastLevel: number;\n\n /** Whether the scheme is in dark mode or light mode. */\n readonly isDark: boolean;\n\n /** The platform on which this scheme is intended to be used. */\n readonly platform: Platform;\n\n /** The version of the design spec that this scheme is based on. */\n readonly specVersion: SpecVersion;\n\n /**\n * Given a tone, produces a color. Hue and chroma of the\n * color are specified in the design specification of the variant. Usually\n * colorful.\n */\n readonly primaryPalette: TonalPalette;\n\n /**\n * Given a tone, produces a color. Hue and chroma of\n * the color are specified in the design specification of the variant. Usually\n * less colorful.\n */\n readonly secondaryPalette: TonalPalette;\n\n /**\n * Given a tone, produces a color. Hue and chroma of\n * the color are specified in the design specification of the variant. Usually\n * a different hue from primary and colorful.\n */\n readonly tertiaryPalette: TonalPalette;\n\n /**\n * Given a tone, produces a color. Hue and chroma of the\n * color are specified in the design specification of the variant. Usually not\n * colorful at all, intended for background & surface colors.\n */\n readonly neutralPalette: TonalPalette;\n\n /**\n * Given a tone, produces a color. Hue and chroma\n * of the color are specified in the design specification of the variant.\n * Usually not colorful, but slightly more colorful than Neutral. Intended for\n * backgrounds & surfaces.\n */\n readonly neutralVariantPalette: TonalPalette;\n\n /**\n * Given a tone, produces a reddish, colorful, color.\n */\n errorPalette: TonalPalette;\n\n readonly colors: MaterialDynamicColors;\n\n private static maybeFallbackSpecVersion(\n specVersion: SpecVersion, variant: Variant): SpecVersion {\n switch (variant) {\n case Variant.EXPRESSIVE:\n case Variant.VIBRANT:\n case Variant.TONAL_SPOT:\n case Variant.NEUTRAL:\n return specVersion;\n default:\n return '2021';\n }\n }\n\n constructor(args: DynamicSchemeOptions) {\n this.sourceColorArgb = args.sourceColorHct.toInt();\n this.variant = args.variant;\n this.contrastLevel = args.contrastLevel;\n this.isDark = args.isDark;\n this.platform = args.platform ?? 'phone';\n this.specVersion = DynamicScheme.maybeFallbackSpecVersion(\n args.specVersion ?? '2021', this.variant);\n this.sourceColorHct = args.sourceColorHct;\n this.primaryPalette = args.primaryPalette ??\n getSpec(this.specVersion)\n .getPrimaryPalette(\n this.variant, args.sourceColorHct, this.isDark, this.platform,\n this.contrastLevel);\n this.secondaryPalette = args.secondaryPalette ??\n getSpec(this.specVersion)\n .getSecondaryPalette(\n this.variant, args.sourceColorHct, this.isDark, this.platform,\n this.contrastLevel);\n this.tertiaryPalette = args.tertiaryPalette ??\n getSpec(this.specVersion)\n .getTertiaryPalette(\n this.variant, args.sourceColorHct, this.isDark, this.platform,\n this.contrastLevel);\n this.neutralPalette = args.neutralPalette ??\n getSpec(this.specVersion)\n .getNeutralPalette(\n this.variant, args.sourceColorHct, this.isDark, this.platform,\n this.contrastLevel);\n this.neutralVariantPalette = args.neutralVariantPalette ??\n getSpec(this.specVersion)\n .getNeutralVariantPalette(\n this.variant, args.sourceColorHct, this.isDark, this.platform,\n this.contrastLevel);\n this.errorPalette = args.errorPalette ??\n getSpec(this.specVersion)\n .getErrorPalette(\n this.variant, args.sourceColorHct, this.isDark, this.platform,\n this.contrastLevel) ??\n TonalPalette.fromHueAndChroma(25.0, 84.0);\n\n this.colors = new MaterialDynamicColors();\n }\n\n toString(): string {\n return `Scheme: ` +\n `variant=${Variant[this.variant]}, ` +\n `mode=${this.isDark ? 'dark' : 'light'}, ` +\n `platform=${this.platform}, ` +\n `contrastLevel=${this.contrastLevel.toFixed(1)}, ` +\n `seed=${this.sourceColorHct.toString()}, ` +\n `specVersion=${this.specVersion}`\n }\n\n /**\n * Returns a new hue based on a piecewise function and input color hue.\n *\n * For example, for the following function:\n * result = 26 if 0 <= hue < 101\n * result = 39 if 101 <= hue < 210\n * result = 28 if 210 <= hue < 360\n *\n * call the function as:\n *\n * const hueBreakpoints = [0, 101, 210, 360];\n * const hues = [26, 39, 28];\n * const result = scheme.piecewise(hue, hueBreakpoints, hues);\n *\n * @param sourceColorHct The input value.\n * @param hueBreakpoints The breakpoints, in sorted order. No default lower or\n * upper bounds are assumed.\n * @param hues The hues that should be applied when source color's hue is >=\n * the same index in hueBrakpoints array, and < the hue at the next index\n * in hueBrakpoints array. Otherwise, the source color's hue is returned.\n */\n static getPiecewiseHue(\n sourceColorHct: Hct, hueBreakpoints: number[], hues: number[]): number {\n const size = Math.min(hueBreakpoints.length - 1, hues.length);\n const sourceHue = sourceColorHct.hue;\n for (let i = 0; i < size; i++) {\n if (sourceHue >= hueBreakpoints[i] && sourceHue < hueBreakpoints[i + 1]) {\n return math.sanitizeDegreesDouble(hues[i]);\n }\n }\n // No condition matched, return the source hue.\n return sourceHue;\n }\n\n /**\n * Returns a shifted hue based on a piecewise function and input color hue.\n *\n * For example, for the following function:\n * result = hue + 26 if 0 <= hue < 101\n * result = hue - 39 if 101 <= hue < 210\n * result = hue + 28 if 210 <= hue < 360\n *\n * call the function as:\n *\n * const hueBreakpoints = [0, 101, 210, 360];\n * const hues = [26, -39, 28];\n * const result = scheme.getRotatedHue(hue, hueBreakpoints, hues);\n *\n * @param sourceColorHct the source color of the theme, in HCT.\n * @param hueBreakpoints The \"breakpoints\", i.e. the hues at which a rotation\n * should be apply. No default lower or upper bounds are assumed.\n * @param rotations The rotation that should be applied when source color's\n * hue is >= the same index in hues array, and < the hue at the next\n * index in hues array. Otherwise, the source color's hue is returned.\n */\n static getRotatedHue(\n sourceColorHct: Hct, hueBreakpoints: number[],\n rotations: number[]): number {\n let rotation = DynamicScheme.getPiecewiseHue(\n sourceColorHct, hueBreakpoints, rotations);\n if (Math.min(hueBreakpoints.length - 1, rotations.length) <= 0) {\n // No condition matched, return the source hue.\n rotation = 0;\n }\n return math.sanitizeDegreesDouble(sourceColorHct.hue + rotation);\n }\n\n getArgb(dynamicColor: DynamicColor): number {\n return dynamicColor.getArgb(this);\n }\n\n getHct(dynamicColor: DynamicColor): Hct {\n return dynamicColor.getHct(this);\n }\n\n // Palette key colors\n\n get primaryPaletteKeyColor(): number {\n return this.getArgb(this.colors.primaryPaletteKeyColor());\n }\n\n get secondaryPaletteKeyColor(): number {\n return this.getArgb(this.colors.secondaryPaletteKeyColor());\n }\n\n get tertiaryPaletteKeyColor(): number {\n return this.getArgb(this.colors.tertiaryPaletteKeyColor());\n }\n\n get neutralPaletteKeyColor(): number {\n return this.getArgb(this.colors.neutralPaletteKeyColor());\n }\n\n get neutralVariantPaletteKeyColor(): number {\n return this.getArgb(this.colors.neutralVariantPaletteKeyColor());\n }\n\n get errorPaletteKeyColor(): number {\n return this.getArgb(this.colors.errorPaletteKeyColor());\n }\n\n // Surface colors\n\n get background(): number {\n return this.getArgb(this.colors.background());\n }\n\n get onBackground(): number {\n return this.getArgb(this.colors.onBackground());\n }\n\n get surface(): number {\n return this.getArgb(this.colors.surface());\n }\n\n get surfaceDim(): number {\n return this.getArgb(this.colors.surfaceDim());\n }\n\n get surfaceBright(): number {\n return this.getArgb(this.colors.surfaceBright());\n }\n\n get surfaceContainerLowest(): number {\n return this.getArgb(this.colors.surfaceContainerLowest());\n }\n\n get surfaceContainerLow(): number {\n return this.getArgb(this.colors.surfaceContainerLow());\n }\n\n get surfaceContainer(): number {\n return this.getArgb(this.colors.surfaceContainer());\n }\n\n get surfaceContainerHigh(): number {\n return this.getArgb(this.colors.surfaceContainerHigh());\n }\n\n get surfaceContainerHighest(): number {\n return this.getArgb(this.colors.surfaceContainerHighest());\n }\n\n get onSurface(): number {\n return this.getArgb(this.colors.onSurface());\n }\n\n get surfaceVariant(): number {\n return this.getArgb(this.colors.surfaceVariant());\n }\n\n get onSurfaceVariant(): number {\n return this.getArgb(this.colors.onSurfaceVariant());\n }\n\n get inverseSurface(): number {\n return this.getArgb(this.colors.inverseSurface());\n }\n\n get inverseOnSurface(): number {\n return this.getArgb(this.colors.inverseOnSurface());\n }\n\n get outline(): number {\n return this.getArgb(this.colors.outline());\n }\n\n get outlineVariant(): number {\n return this.getArgb(this.colors.outlineVariant());\n }\n\n get shadow(): number {\n return this.getArgb(this.colors.shadow());\n }\n\n get scrim(): number {\n return this.getArgb(this.colors.scrim());\n }\n\n get surfaceTint(): number {\n return this.getArgb(this.colors.surfaceTint());\n }\n\n // Primary colors\n\n get primary(): number {\n return this.getArgb(this.colors.primary());\n }\n\n get primaryDim(): number {\n const primaryDim = this.colors.primaryDim();\n if (primaryDim === undefined) {\n throw new Error('`primaryDim` color is undefined prior to 2025 spec.');\n }\n return this.getArgb(primaryDim);\n }\n\n get onPrimary(): number {\n return this.getArgb(this.colors.onPrimary());\n }\n\n get primaryContainer(): number {\n return this.getArgb(this.colors.primaryContainer());\n }\n\n get onPrimaryContainer(): number {\n return this.getArgb(this.colors.onPrimaryContainer());\n }\n\n get primaryFixed(): number {\n return this.getArgb(this.colors.primaryFixed());\n }\n\n get primaryFixedDim(): number {\n return this.getArgb(this.colors.primaryFixedDim());\n }\n\n get onPrimaryFixed(): number {\n return this.getArgb(this.colors.onPrimaryFixed());\n }\n\n get onPrimaryFixedVariant(): number {\n return this.getArgb(this.colors.onPrimaryFixedVariant());\n }\n\n get inversePrimary(): number {\n return this.getArgb(this.colors.inversePrimary());\n }\n\n // Secondary colors\n\n get secondary(): number {\n return this.getArgb(this.colors.secondary());\n }\n\n get secondaryDim(): number {\n const secondaryDim = this.colors.secondaryDim();\n if (secondaryDim === undefined) {\n throw new Error('`secondaryDim` color is undefined prior to 2025 spec.');\n }\n return this.getArgb(secondaryDim);\n }\n\n get onSecondary(): number {\n return this.getArgb(this.colors.onSecondary());\n }\n\n get secondaryContainer(): number {\n return this.getArgb(this.colors.secondaryContainer());\n }\n\n get onSecondaryContainer(): number {\n return this.getArgb(this.colors.onSecondaryContainer());\n }\n\n get secondaryFixed(): number {\n return this.getArgb(this.colors.secondaryFixed());\n }\n\n get secondaryFixedDim(): number {\n return this.getArgb(this.colors.secondaryFixedDim());\n }\n\n get onSecondaryFixed(): number {\n return this.getArgb(this.colors.onSecondaryFixed());\n }\n\n get onSecondaryFixedVariant(): number {\n return this.getArgb(this.colors.onSecondaryFixedVariant());\n }\n\n // Tertiary colors\n\n get tertiary(): number {\n return this.getArgb(this.colors.tertiary());\n }\n\n get tertiaryDim(): number {\n const tertiaryDim = this.colors.tertiaryDim();\n if (tertiaryDim === undefined) {\n throw new Error('`tertiaryDim` color is undefined prior to 2025 spec.');\n }\n return this.getArgb(tertiaryDim);\n }\n\n get onTertiary(): number {\n return this.getArgb(this.colors.onTertiary());\n }\n\n get tertiaryContainer(): number {\n return this.getArgb(this.colors.tertiaryContainer());\n }\n\n get onTertiaryContainer(): number {\n return this.getArgb(this.colors.onTertiaryContainer());\n }\n\n get tertiaryFixed(): number {\n return this.getArgb(this.colors.tertiaryFixed());\n }\n\n get tertiaryFixedDim(): number {\n return this.getArgb(this.colors.tertiaryFixedDim());\n }\n\n get onTertiaryFixed(): number {\n return this.getArgb(this.colors.onTertiaryFixed());\n }\n\n get onTertiaryFixedVariant(): number {\n return this.getArgb(this.colors.onTertiaryFixedVariant());\n }\n\n // Error colors\n\n get error(): number {\n return this.getArgb(this.colors.error());\n }\n\n get errorDim(): number {\n const errorDim = this.colors.errorDim();\n if (errorDim === undefined) {\n throw new Error('`errorDim` color is undefined prior to 2025 spec.');\n }\n return this.getArgb(errorDim);\n }\n\n get onError(): number {\n return this.getArgb(this.colors.onError());\n }\n\n get errorContainer(): number {\n return this.getArgb(this.colors.errorContainer());\n }\n\n get onErrorContainer(): number {\n return this.getArgb(this.colors.onErrorContainer());\n }\n}\n\n/**\n * A delegate for the palettes of a DynamicScheme in the 2021 spec.\n */\nclass DynamicSchemePalettesDelegateImpl2021 implements\n DynamicSchemePalettesDelegate {\n //////////////////////////////////////////////////////////////////\n // Scheme Palettes //\n //////////////////////////////////////////////////////////////////\n\n getPrimaryPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.CONTENT:\n case Variant.FIDELITY:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, sourceColorHct.chroma);\n case Variant.FRUIT_SALAD:\n return TonalPalette.fromHueAndChroma(\n math.sanitizeDegreesDouble(sourceColorHct.hue - 50.0), 48.0);\n case Variant.MONOCHROME:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 12.0);\n case Variant.RAINBOW:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 48.0);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 36.0);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n math.sanitizeDegreesDouble(sourceColorHct.hue + 240), 40);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 200.0);\n default:\n throw new Error(`Unsupported variant: ${variant}`);\n }\n }\n\n getSecondaryPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.CONTENT:\n case Variant.FIDELITY:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue,\n Math.max(\n sourceColorHct.chroma - 32.0, sourceColorHct.chroma * 0.5));\n case Variant.FRUIT_SALAD:\n return TonalPalette.fromHueAndChroma(\n math.sanitizeDegreesDouble(sourceColorHct.hue - 50.0), 36.0);\n case Variant.MONOCHROME:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 8.0);\n case Variant.RAINBOW:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16.0);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16.0);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 21, 51, 121, 151, 191, 271, 321, 360],\n [45, 95, 45, 20, 45, 90, 45, 45, 45]),\n 24.0);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 41, 61, 101, 131, 181, 251, 301, 360],\n [18, 15, 10, 12, 15, 18, 15, 12, 12]),\n 24.0);\n default:\n throw new Error(`Unsupported variant: ${variant}`);\n }\n }\n\n getTertiaryPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.CONTENT:\n return TonalPalette.fromHct(DislikeAnalyzer.fixIfDisliked(\n new TemperatureCache(sourceColorHct)\n .analogous(/* count= */ 3, /* divisions= */ 6)[2]));\n case Variant.FIDELITY:\n return TonalPalette.fromHct(DislikeAnalyzer.fixIfDisliked(\n new TemperatureCache(sourceColorHct).complement));\n case Variant.FRUIT_SALAD:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 36.0);\n case Variant.MONOCHROME:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16.0);\n case Variant.RAINBOW:\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(\n math.sanitizeDegreesDouble(sourceColorHct.hue + 60.0), 24.0);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 21, 51, 121, 151, 191, 271, 321, 360],\n [120, 120, 20, 45, 20, 15, 20, 120, 120]),\n 32.0);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 41, 61, 101, 131, 181, 251, 301, 360],\n [35, 30, 20, 25, 30, 35, 30, 25, 25]),\n 32.0);\n default:\n throw new Error(`Unsupported variant: ${variant}`);\n }\n }\n\n getNeutralPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.CONTENT:\n case Variant.FIDELITY:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, sourceColorHct.chroma / 8.0);\n case Variant.FRUIT_SALAD:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 10.0);\n case Variant.MONOCHROME:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 2.0);\n case Variant.RAINBOW:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 6.0);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n math.sanitizeDegreesDouble(sourceColorHct.hue + 15), 8);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 10);\n default:\n throw new Error(`Unsupported variant: ${variant}`);\n }\n }\n\n getNeutralVariantPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.CONTENT:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, (sourceColorHct.chroma / 8.0) + 4.0);\n case Variant.FIDELITY:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, (sourceColorHct.chroma / 8.0) + 4.0);\n case Variant.FRUIT_SALAD:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16.0);\n case Variant.MONOCHROME:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 2.0);\n case Variant.RAINBOW:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 0.0);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 8.0);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n math.sanitizeDegreesDouble(sourceColorHct.hue + 15), 12);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 12);\n default:\n throw new Error(`Unsupported variant: ${variant}`);\n }\n }\n\n getErrorPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette|undefined {\n return undefined;\n }\n}\n\n/**\n * A delegate for the palettes of a DynamicScheme in the 2025 spec.\n */\nclass DynamicSchemePalettesDelegateImpl2025 extends\n DynamicSchemePalettesDelegateImpl2021 {\n //////////////////////////////////////////////////////////////////\n // Scheme Palettes //\n //////////////////////////////////////////////////////////////////\n\n override getPrimaryPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue,\n platform === 'phone' ? (Hct.isBlue(sourceColorHct.hue) ? 12 : 8) :\n (Hct.isBlue(sourceColorHct.hue) ? 16 : 12));\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, platform === 'phone' && isDark ? 26 : 32);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, platform === 'phone' ? (isDark ? 36 : 48) : 40);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, platform === 'phone' ? 74 : 56);\n default:\n return super.getPrimaryPalette(\n variant, sourceColorHct, isDark, platform, contrastLevel);\n }\n }\n\n override getSecondaryPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue,\n platform === 'phone' ? (Hct.isBlue(sourceColorHct.hue) ? 6 : 4) :\n (Hct.isBlue(sourceColorHct.hue) ? 10 : 6));\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(sourceColorHct.hue, 16);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 105, 140, 204, 253, 278, 300, 333, 360],\n [-160, 155, -100, 96, -96, -156, -165, -160]),\n platform === 'phone' ? (isDark ? 16 : 24) : 24);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 38, 105, 140, 333, 360],\n [-14, 10, -14, 10, -14]),\n platform === 'phone' ? 56 : 36);\n default:\n return super.getSecondaryPalette(\n variant, sourceColorHct, isDark, platform, contrastLevel);\n }\n }\n\n override getTertiaryPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 38, 105, 161, 204, 278, 333, 360],\n [-32, 26, 10, -39, 24, -15, -32]),\n platform === 'phone' ? 20 : 36);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 20, 71, 161, 333, 360],\n [-40, 48, -32, 40, -32]),\n platform === 'phone' ? 28 : 32);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 105, 140, 204, 253, 278, 300, 333, 360],\n [-165, 160, -105, 101, -101, -160, -170, -165]),\n 48);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 38, 71, 105, 140, 161, 253, 333, 360],\n [-72, 35, 24, -24, 62, 50, 62, -72]),\n 56);\n default:\n return super.getTertiaryPalette(\n variant, sourceColorHct, isDark, platform, contrastLevel);\n }\n }\n\n private static getExpressiveNeutralHue(sourceColorHct: Hct): number {\n const hue = DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 71, 124, 253, 278, 300, 360],\n [10, 0, 10, 0, 10, 0]);\n return hue;\n }\n\n private static getExpressiveNeutralChroma(\n sourceColorHct: Hct, isDark: boolean, platform: Platform): number {\n const neutralHue =\n DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralHue(\n sourceColorHct);\n return platform === 'phone' ?\n (isDark ? (Hct.isYellow(neutralHue) ? 6 : 14) : 18) :\n 12;\n }\n\n private static getVibrantNeutralHue(sourceColorHct: Hct): number {\n return DynamicScheme.getRotatedHue(\n sourceColorHct, [0, 38, 105, 140, 333, 360], [-14, 10, -14, 10, -14]);\n }\n\n private static getVibrantNeutralChroma(\n sourceColorHct: Hct, platform: Platform): number {\n const neutralHue =\n DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralHue(\n sourceColorHct);\n return platform === 'phone' ? 28 : (Hct.isBlue(neutralHue) ? 28 : 20);\n }\n\n override getNeutralPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, platform === 'phone' ? 1.4 : 6);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, platform === 'phone' ? 5 : 10);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralHue(\n sourceColorHct),\n DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralChroma(\n sourceColorHct, isDark, platform));\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralHue(\n sourceColorHct),\n DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralChroma(\n sourceColorHct, platform));\n default:\n return super.getNeutralPalette(\n variant, sourceColorHct, isDark, platform, contrastLevel);\n }\n }\n\n override getNeutralVariantPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette {\n switch (variant) {\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, (platform === 'phone' ? 1.4 : 6) * 2.2);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(\n sourceColorHct.hue, (platform === 'phone' ? 5 : 10) * 1.7);\n case Variant.EXPRESSIVE:\n const expressiveNeutralHue =\n DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralHue(\n sourceColorHct);\n const expressiveNeutralChroma =\n DynamicSchemePalettesDelegateImpl2025.getExpressiveNeutralChroma(\n sourceColorHct, isDark, platform);\n return TonalPalette.fromHueAndChroma(\n expressiveNeutralHue,\n expressiveNeutralChroma *\n (expressiveNeutralHue >= 105 && expressiveNeutralHue < 125 ?\n 1.6 :\n 2.3),\n );\n case Variant.VIBRANT:\n const vibrantNeutralHue =\n DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralHue(\n sourceColorHct);\n const vibrantNeutralChroma =\n DynamicSchemePalettesDelegateImpl2025.getVibrantNeutralChroma(\n sourceColorHct, platform);\n return TonalPalette.fromHueAndChroma(\n vibrantNeutralHue, vibrantNeutralChroma * 1.29);\n default:\n return super.getNeutralVariantPalette(\n variant, sourceColorHct, isDark, platform, contrastLevel);\n }\n }\n\n override getErrorPalette(\n variant: Variant, sourceColorHct: Hct, isDark: boolean,\n platform: Platform, contrastLevel: number): TonalPalette|undefined {\n const errorHue = DynamicScheme.getPiecewiseHue(\n sourceColorHct, [0, 3, 13, 23, 33, 43, 153, 273, 360],\n [12, 22, 32, 12, 22, 32, 22, 12]);\n switch (variant) {\n case Variant.NEUTRAL:\n return TonalPalette.fromHueAndChroma(\n errorHue, platform === 'phone' ? 50 : 40);\n case Variant.TONAL_SPOT:\n return TonalPalette.fromHueAndChroma(\n errorHue, platform === 'phone' ? 60 : 48);\n case Variant.EXPRESSIVE:\n return TonalPalette.fromHueAndChroma(\n errorHue, platform === 'phone' ? 64 : 48);\n case Variant.VIBRANT:\n return TonalPalette.fromHueAndChroma(\n errorHue, platform === 'phone' ? 80 : 60);\n default:\n return super.getErrorPalette(\n variant, sourceColorHct, isDark, platform, contrastLevel);\n }\n }\n}\n\nconst spec2021 = new DynamicSchemePalettesDelegateImpl2021();\nconst spec2025 = new DynamicSchemePalettesDelegateImpl2025();\n\n/**\n * Returns the DynamicSchemePalettesDelegate for the given spec version.\n */\nfunction getSpec(specVersion: SpecVersion):\n DynamicSchemePalettesDelegate {\n return specVersion === '2025' ? spec2025 : spec2021;\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {SpecVersion} from '../dynamiccolor/color_spec.js';\nimport {DynamicScheme, Platform} from '../dynamiccolor/dynamic_scheme';\nimport {Variant} from '../dynamiccolor/variant.js';\nimport {Hct} from '../hct/hct.js';\n\n/**\n * A Dynamic Color theme that maxes out colorfulness at each position in the\n * Primary Tonal Palette.\n */\nexport class SchemeVibrant extends DynamicScheme {\n constructor(\n sourceColorHct: Hct, isDark: boolean, contrastLevel: number,\n specVersion: SpecVersion = DynamicScheme.DEFAULT_SPEC_VERSION,\n platform: Platform = DynamicScheme.DEFAULT_PLATFORM) {\n super({\n sourceColorHct,\n variant: Variant.VIBRANT,\n contrastLevel,\n isDark,\n platform,\n specVersion,\n });\n }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as colorUtils from './color_utils.js';\n\n/**\n * Utility methods for hexadecimal representations of colors.\n */\n\n/**\n * @param argb ARGB representation of a color.\n * @return Hex string representing color, ex. #ff0000 for red.\n */\nexport function hexFromArgb(argb: number) {\n const r = colorUtils.redFromArgb(argb);\n const g = colorUtils.greenFromArgb(argb);\n const b = colorUtils.blueFromArgb(argb);\n const outParts = [r.toString(16), g.toString(16), b.toString(16)];\n\n // Pad single-digit output values\n for (const [i, part] of outParts.entries()) {\n if (part.length === 1) {\n outParts[i] = '0' + part;\n }\n }\n\n return '#' + outParts.join('');\n}\n\n/**\n * @param hex String representing color as hex code. Accepts strings with or\n * without leading #, and string representing the color using 3, 6, or 8\n * hex characters.\n * @return ARGB representation of color.\n */\nexport function argbFromHex(hex: string) {\n hex = hex.replace('#', '');\n const isThree = hex.length === 3;\n const isSix = hex.length === 6;\n const isEight = hex.length === 8;\n if (!isThree && !isSix && !isEight) {\n throw new Error('unexpected hex ' + hex);\n }\n let r = 0;\n let g = 0;\n let b = 0;\n if (isThree) {\n r = parseIntHex(hex.slice(0, 1).repeat(2));\n g = parseIntHex(hex.slice(1, 2).repeat(2));\n b = parseIntHex(hex.slice(2, 3).repeat(2));\n } else if (isSix) {\n r = parseIntHex(hex.slice(0, 2));\n g = parseIntHex(hex.slice(2, 4));\n b = parseIntHex(hex.slice(4, 6));\n } else if (isEight) {\n r = parseIntHex(hex.slice(2, 4));\n g = parseIntHex(hex.slice(4, 6));\n b = parseIntHex(hex.slice(6, 8));\n }\n\n return (\n ((255 << 24) | ((r & 0x0ff) << 16) | ((g & 0x0ff) << 8) | (b & 0x0ff)) >>>\n 0);\n}\n\nfunction parseIntHex(value: string) {\n // tslint:disable-next-line:ban\n return parseInt(value, 16);\n}\n","import { argbFromHex, Hct, hexFromArgb, MaterialDynamicColors, SchemeVibrant } from \"@material/material-color-utilities\";\nimport { MaterialTheme, MaterialTokenKey } from \"./types\";\n\nexport function createModernTheme(seedHex: string, isDark: boolean): MaterialTheme {\n const sourceColorHct = Hct.fromInt(argbFromHex(seedHex));\n const scheme = new SchemeVibrant(sourceColorHct, isDark, 0.0); \n\n const colors: Partial<MaterialTheme> = {};\n \n const coreTokens: MaterialTokenKey[] = [\n \"primary\", \"onPrimary\", \"primaryContainer\", \"onPrimaryContainer\",\n \"secondary\", \"onSecondary\", \"secondaryContainer\", \"onSecondaryContainer\",\n \"tertiary\", \"onTertiary\", \"tertiaryContainer\", \"onTertiaryContainer\",\n \"error\", \"onError\", \"errorContainer\", \"onErrorContainer\",\n \"background\", \"onBackground\",\n \"surface\", \"onSurface\", \"surfaceVariant\", \"onSurfaceVariant\",\n \"outline\", \"outlineVariant\",\n \"shadow\", \"scrim\", \"inverseSurface\", \"inverseOnSurface\", \"inversePrimary\",\n \"surfaceDim\", \"surfaceBright\", \n \"surfaceContainerLowest\", \"surfaceContainerLow\", \n \"surfaceContainer\", \"surfaceContainerHigh\", \"surfaceContainerHighest\"\n ];\n\n for (const token of coreTokens) {\n const dynamicColor = MaterialDynamicColors[token];\n if (dynamicColor) {\n colors[token] = hexFromArgb(dynamicColor.getArgb(scheme));\n }\n }\n\n return colors as MaterialTheme;\n}\n\nexport function hexToArgba(hex: string, alpha: number): string {\n const cleanHex = hex.replace('#', '');\n const r = parseInt(cleanHex.substring(0, 2), 16);\n const g = parseInt(cleanHex.substring(2, 4), 16);\n const b = parseInt(cleanHex.substring(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n}\n\nexport function hexToRgba (hex: string, alpha: number): string {\n let r = 0, g = 0, b = 0;\n if (hex.length === 4) {\n r = parseInt(hex[1] + hex[1], 16);\n g = parseInt(hex[2] + hex[2], 16);\n b = parseInt(hex[3] + hex[3], 16);\n } else if (hex.length === 7) {\n r = parseInt(hex.slice(1, 3), 16);\n g = parseInt(hex.slice(3, 5), 16);\n b = parseInt(hex.slice(5, 7), 16);\n }\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n};\n\nexport function isDarkBackground(hex: string): boolean {\n const cleanHex = hex.replace('#', '');\n const r = parseInt(cleanHex.substring(0, 2), 16);\n const g = parseInt(cleanHex.substring(2, 4), 16);\n const b = parseInt(cleanHex.substring(4, 6), 16);\n const luma = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n return luma < 128;\n};","\"use client\"\nimport { createContext, useContext, useState, useEffect, useMemo, useRef } from \"react\";\nimport { DefaultColorScheme, MaterialTheme, ThemeContextType, ThemeProviderProps } from \"./types\";\nimport { createModernTheme } from \"./utils\";\n\nexport const ThemeContext = createContext<ThemeContextType | null>(null);\nconst STATIC_FALLBACK_THEME = createModernTheme('#6750A4', false);\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({ \n children, \n seedColor = '#6750A4',\n defaultColorScheme = 'auto' \n}) => {\n const currentSeed = useRef(seedColor);\n \n const [systemTheme, setSystemTheme] = useState<DefaultColorScheme>(defaultColorScheme);\n\n const [themeColors, setThemeColorsState] = useState<MaterialTheme>(() => {\n let isDark = defaultColorScheme === 'dark';\n if (defaultColorScheme === 'auto' && typeof window !== 'undefined') {\n isDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n }\n return createModernTheme(currentSeed.current, isDark);\n });\n\n useEffect(() => {\n if (systemTheme === 'auto' && typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleSystemChange = (e: MediaQueryListEvent) => {\n setThemeColorsState(createModernTheme(currentSeed.current, e.matches));\n };\n mediaQuery.addEventListener('change', handleSystemChange);\n return () => mediaQuery.removeEventListener('change', handleSystemChange);\n }\n }, [systemTheme]);\n\n const contextValue: ThemeContextType = useMemo(() => ({\n themeColors,\n systemTheme,\n setThemeColors: (newSeed: string) => {\n currentSeed.current = newSeed;\n let isDark = systemTheme === 'dark';\n if (systemTheme === 'auto') {\n isDark = typeof window !== 'undefined' \n ? window.matchMedia('(prefers-color-scheme: dark)').matches \n : false;\n }\n setThemeColorsState(createModernTheme(newSeed, isDark));\n },\n setColorScheme: (scheme: DefaultColorScheme) => {\n setSystemTheme(scheme);\n let isDark = scheme === 'dark';\n if (scheme === 'auto') {\n isDark = typeof window !== 'undefined' \n ? window.matchMedia('(prefers-color-scheme: dark)').matches \n : false;\n }\n setThemeColorsState(createModernTheme(currentSeed.current, isDark));\n }\n }), [themeColors, systemTheme]);\n\n return (\n <ThemeContext.Provider value={contextValue}>\n {children}\n </ThemeContext.Provider>\n );\n};\n\nexport const useGlobalTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext);\n if (!context) {\n return {\n themeColors: STATIC_FALLBACK_THEME,\n systemTheme: 'auto',\n setThemeColors: () => { throw new Error(\"[@zaide6137/m3-components-web] Wrap your app in <ThemeProvider>.\"); },\n setColorScheme: () => { throw new Error(\"[@zaide6137/m3-components-web] Wrap your app in <ThemeProvider>.\"); }\n };\n }\n return context;\n};","\"use client\"\nimport { useGlobalTheme } from '@core/theme';\nimport { AnimatePresence, motion, Transition, Variants } from 'framer-motion';\nimport React, { forwardRef, useImperativeHandle, useMemo, useState } from 'react';\nimport { Calendar, momentLocalizer } from 'react-big-calendar';\nimport moment from 'moment';\nimport { BigCalendarToolbar } from './BigCalendarToolbar';\nimport { BigCalendarEvent } from './BigCalendarEvent';\nimport { hexToRgba } from '../../core/theme';\nimport './styles.css'\n\nexport namespace BigCalendar {\n export type Props = {\n currentDate?: Date;\n\n filterOptions: Types.FilterOptions;\n events: Types.EventItem[];\n\n toolBar?: (currentSelectedDate: Date) => React.ReactNode;\n eventLayout?: (event: Types.EventItem) => React.ReactNode;\n filterBar?: (filterOptions: Types.FilterOptions) => React.ReactNode;\n filterBy?: Types.FilterOptions;\n\n backgroundMode: Types.Mode;\n defaultView?: Types.ViewMode\n\n enableAnimations?: boolean;\n slideVariants?: Variants;\n transition?: Transition<any>\n\n onEventClicked?: (event: any) => void;\n };\n\n export namespace Toolbar {\n export interface Props {\n date: Date;\n onPrev: () => void;\n onNext: () => void;\n onToday: () => void;\n view: Types.ViewMode;\n onViewChange: (view: Types.ViewMode) => void;\n }\n }\n\n export namespace Types {\n export type FilterOptions = string[]\n export type Mode = 'card' | 'transparent'\n export type ViewMode = 'month' | 'week' | 'day'\n export type EventItem = {\n eventStart: Date;\n eventEnd: Date;\n\n eventTitle: string;\n eventCategory: string[];\n\n eventSeedColor?: string;\n eventStyle?: EventStyle;\n eventStyleFilled?: boolean;\n\n eventTrailingIcon?: React.ReactNode;\n\n }\n export type EventStyle = {\n contentColor: string;\n backgroundColor: string;\n }\n }\n\n export interface Methods {\n previousMonth: () => void;\n nextMonth: () => void;\n jumpToNow: () => void;\n }\n}\n\n\nexport const BigCalendar = forwardRef<BigCalendar.Methods, BigCalendar.Props>((props, ref) => {\n const {\n currentDate,\n filterOptions,\n events,\n toolBar,\n filterBar,\n filterBy,\n backgroundMode,\n defaultView = 'month',\n enableAnimations = true,\n slideVariants = {\n enter: (direction: number) => ({\n x: direction > 0 ? '10%' : '-10%',\n opacity: 0,\n }),\n center: {\n zIndex: 1,\n x: 0,\n opacity: 1,\n },\n exit: (direction: number) => ({\n zIndex: 0,\n x: direction < 0 ? '10%' : '-10%',\n opacity: 0,\n })\n },\n transition = { type: \"spring\", stiffness: 300, damping: 30, opacity: { duration: 0.2 } },\n onEventClicked\n } = props;\n\n const { themeColors } = useGlobalTheme();\n const _date: Date = !currentDate ? new Date() : new Date(currentDate);\n const _localizer = momentLocalizer(moment);\n\n const _calendarEvents = useMemo(() => {\n if (!events) return [];\n return events\n .filter(item => {\n if (!filterBy || filterBy.length === 0 || filterBy.includes(\"All\")) return true;\n return filterBy.every(tag => item.eventCategory?.includes(tag));\n })\n .map(item => {\n const { eventTitle, eventStart, eventEnd, ...resourceData } = item;\n return {\n title: eventTitle,\n start: new Date(eventStart),\n end: new Date(eventEnd),\n resource: resourceData,\n };\n });\n }, [events, filterBy]);\n\n const _calendarComponents = useMemo(() => ({\n event: (props: any) => (\n <BigCalendarEvent\n {...props}\n onMouseEnter={() => { }}\n onMouseLeave={() => { }}\n />\n )\n }), []);\n\n const [_direction, _setDirection] = useState(0);\n const [_currentDate, _setCurrentDate] = useState(_date);\n const [_view, _setView] = useState<BigCalendar.Types.ViewMode>(defaultView);\n const [_filter, _setFilter] = useState<BigCalendar.Types.FilterOptions>(filterOptions);\n\n const handlePreviousMonth = () => {\n _setDirection(-1);\n _setCurrentDate(moment(_currentDate).subtract(1, _view).toDate());\n };\n const handleNextMonth = () => {\n _setDirection(1);\n _setCurrentDate(moment(_currentDate).add(1, _view).toDate());\n };\n const handleJumpToNow = () => {\n _setDirection(0);\n _setCurrentDate(new Date());\n };\n\n useImperativeHandle(ref, () => ({\n previousMonth: handlePreviousMonth,\n nextMonth: handleNextMonth,\n jumpToNow: handleJumpToNow,\n }));\n\n return (\n <motion.div\n layout\n style={{\n backgroundColor: themeColors.surfaceContainerHigh,\n borderColor: themeColors.outlineVariant,\n '--m3-primary': themeColors.primary,\n '--m3-on-primary': themeColors.onPrimary,\n '--m3-outline-variant': themeColors.outlineVariant,\n '--m3-on-surface': themeColors.onSurface,\n '--m3-on-surface-variant': themeColors.onSurfaceVariant,\n '--m3-today-highlight': hexToRgba(themeColors.primary, 0.03)\n } as React.CSSProperties }\n className='m3-components-bigcalendar'\n >\n <div\n className='m3-components-bigcalendar-w1'\n >\n <BigCalendarToolbar\n date={_currentDate}\n view={_view}\n onViewChange={_setView}\n onPrev={handlePreviousMonth}\n onNext={handleNextMonth}\n onToday={handleJumpToNow}\n />\n\n {filterBar ? (\n filterBar(filterOptions)\n ) : (\n <div\n className='m3-components-bigcalendar-filterbar-w1'\n >\n {filterOptions.map(f => (\n <button\n key={f}\n onClick={() => {\n _setFilter((prev) =>\n prev.includes(f) ? prev.filter(item => item !== f) : [...prev, f]\n );\n }}\n className=\"m3-components-bigcalendar-filterbar-filterchip\"\n style={{\n backgroundColor: _filter.includes(f) ? themeColors.onSurface : 'transparent',\n color: _filter.includes(f) ? themeColors.surface : themeColors.onSurfaceVariant,\n borderColor: _filter.includes(f) ? themeColors.onSurface : themeColors.outlineVariant\n }}\n >\n {f}\n </button>\n ))}\n </div>\n )}\n </div>\n\n <div style={{ backgroundColor: themeColors.outlineVariant }} className='m3-components-bigcalendar-divider'></div>\n\n <div className='rbc-container-wrapper m3-components-bigcalendar-w2'>\n <AnimatePresence initial={false} custom={_direction} mode=\"wait\">\n <motion.div\n key={_currentDate.toISOString()}\n custom={_direction}\n variants={slideVariants}\n initial=\"enter\"\n animate=\"center\"\n exit=\"exit\"\n transition={transition}\n className=\"m3-components-bigcalendar-viewport\"\n >\n <Calendar\n localizer={_localizer}\n events={_calendarEvents}\n date={_currentDate}\n view={_view}\n onNavigate={(d) => _setCurrentDate(d)}\n onView={(v) => { if (v === 'month' || v === 'week' || v === 'day') _setView(v); }}\n onSelectEvent={(event) => onEventClicked?.(event)}\n toolbar={false}\n components={_calendarComponents}\n eventPropGetter={() => ({ style: { backgroundColor: 'transparent', border: 'none', padding: '1px 2px' } })}\n />\n </motion.div>\n </AnimatePresence>\n </div>\n </motion.div>\n );\n});","import { useState } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport moment from 'moment';\nimport { useGlobalTheme } from '@core/theme';\nimport { BigCalendar } from './BigCalendar';\nimport { Button } from '../button';\nimport './styles.css'\n\nexport const BigCalendarToolbar = ({ date, onPrev, onNext, onToday, view, onViewChange }: BigCalendar.Toolbar.Props) => {\n const { themeColors } = useGlobalTheme();\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n const realToday = moment();\n const todayMonthStr = realToday.format('MMM').toUpperCase();\n const todayDateStr = realToday.format('DD');\n const displayMonthYear = moment(date).format('MMMM YYYY');\n const currentWeekNum = Math.ceil(realToday.date() / 7);\n\n const viewLabel = view.charAt(0).toUpperCase() + view.slice(1);\n\n return (\n <div className=\"m3-components-bigcalendar-toolbar\">\n\n <div className=\"m3-components-bigcalendar-toolbar-w1\">\n <div className=\"m3-components-bigcalendar-toolbar-date-box\" style={{ backgroundColor: themeColors.surfaceContainerLowest, borderColor: themeColors.outlineVariant }}>\n <div className=\"m3-components-bigcalendar-toolbar-w2\" style={{ backgroundColor: themeColors.primary }}>\n <span className=\"m3-components-bigcalendar-toolbar-date-month\" style={{ color: themeColors.onPrimary }}>{todayMonthStr}</span>\n </div>\n <span className=\"m3-components-bigcalendar-toolbar-date-day\" style={{ color: themeColors.onSurface }}>{todayDateStr}</span>\n </div>\n <div className=\"m3-components-bigcalendar-toolbar-w3\">\n <div className=\"m3-components-bigcalendar-toolbar-w4\">\n <div className=\"m3-components-bigcalendar-toolbar-w5\">\n <h1 className=\"m3-components-bigcalendar-toolbar-title\" style={{ color: themeColors.onSurface }}>{displayMonthYear}</h1>\n </div>\n </div>\n <span className=\"m3-components-bigcalendar-toolbar-week-badge\" style={{ color: themeColors.onSurfaceVariant, borderColor: themeColors.outlineVariant }}>Week {currentWeekNum}</span>\n </div>\n </div>\n\n <div className=\"m3-components-bigcalendar-toolbar-w6\">\n <div className=\"m3-components-bigcalendar-toolbar-nav-group\" style={{ borderColor: themeColors.outlineVariant }}>\n <button onClick={onPrev} className=\"m3-components-bigcalendar-toolbar-nav-prev\" style={{ borderColor: themeColors.outlineVariant, color: themeColors.onSurface }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={2} stroke=\"currentColor\" className=\"m3-components-bigcalendar-toolbar-nav-icon\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M15.75 19.5L8.25 12l7.5-7.5\" /></svg>\n </button>\n <button onClick={onToday} className=\"m3-components-bigcalendar-toolbar-nav-today\" style={{ color: themeColors.onSurface }}>\n Today\n </button>\n <button onClick={onNext} className=\"m3-components-bigcalendar-toolbar-nav-next\" style={{ borderColor: themeColors.outlineVariant, color: themeColors.onSurface }}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={2} stroke=\"currentColor\" className=\"m3-components-bigcalendar-toolbar-nav-icon\"><path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M8.25 4.5l7.5 7.5-7.5 7.5\" /></svg>\n </button>\n </div>\n\n <div className=\"m3-components-bigcalendar-toolbar-w7\">\n <button\n onClick={() => setIsDropdownOpen(!isDropdownOpen)}\n className=\"m3-components-bigcalendar-toolbar-dropdown-btn\"\n style={{ borderColor: themeColors.outlineVariant, color: themeColors.onSurface }}\n >\n <span className=\"m3-components-bigcalendar-toolbar-dropdown-label\">View by:</span>\n {viewLabel}\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" strokeWidth={2} stroke=\"currentColor\" className={`m3-components-bigcalendar-toolbar-dropdown-icon ${isDropdownOpen ? 'rotate-180' : ''}`}><path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M19.5 8.25l-7.5 7.5-7.5-7.5\" /></svg>\n </button>\n\n <AnimatePresence>\n {isDropdownOpen && (\n <>\n <div className=\"m3-components-bigcalendar-toolbar-dropdown-backdrop\" onClick={() => setIsDropdownOpen(false)}></div>\n <motion.div\n initial={{ opacity: 0, y: -10, scale: 0.95 }}\n animate={{ opacity: 1, y: 0, scale: 1 }}\n exit={{ opacity: 0, y: -10, scale: 0.95 }}\n transition={{ duration: 0.15 }}\n className=\"m3-components-bigcalendar-toolbar-dropdown-menu\"\n style={{ backgroundColor: themeColors.surfaceContainerHigh, borderColor: themeColors.outlineVariant }}\n >\n {(['month', 'week', 'day'] as const).map(v => (\n <button\n key={v}\n onClick={() => { onViewChange(v); setIsDropdownOpen(false); }}\n className=\"m3-components-bigcalendar-toolbar-dropdown-item\"\n style={{ color: view === v ? themeColors.primary : themeColors.onSurface }}\n >\n {v.charAt(0).toUpperCase() + v.slice(1)}\n </button>\n ))}\n </motion.div>\n </>\n )}\n </AnimatePresence>\n </div>\n <Button\n type=\"filled\"\n shape=\"rounded-lg\"\n text=\"+ Create\"\n onClick={() => { }}\n />\n </div>\n\n </div>\n );\n};","import { motion } from \"framer-motion\";\nimport { hexToArgba, useGlobalTheme } from \"@core/theme\";\nimport { forwardRef } from \"react\";\nimport './styles.css';\n\nexport namespace Button {\n export interface Props {\n className?: string;\n shape: Types.Shape;\n type: Types.Type;\n hoverEffect?: boolean;\n text: string;\n icon?: React.ReactNode;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n disabled?: boolean;\n loading?: boolean;\n }\n\n export namespace Types {\n export type Shape = \"rounded-full\" | \"rounded-sm\" | \"rounded-md\" | \"rounded-lg\"\n export type Type = \"outlined\" | \"filled\"\n }\n\n export interface Methods {\n\n }\n}\n\nexport const Button = forwardRef<Button.Methods, Button.Props>((props, ref) => {\n const {\n className,\n shape,\n type,\n hoverEffect = true,\n text,\n icon,\n onClick,\n disabled,\n loading = false\n } = props\n const { themeColors } = useGlobalTheme();\n\n const styles = disabled\n ? (type === \"filled\"\n ? {\n backgroundColor: hexToArgba(themeColors.onSurface, 0.12),\n color: hexToArgba(themeColors.onSurface, 0.38),\n border: \"none\"\n }\n : {\n backgroundColor: \"transparent\",\n color: hexToArgba(themeColors.onSurface, 0.38),\n border: `1px solid ${hexToArgba(themeColors.onSurface, 0.12)}`\n })\n : (type === \"filled\"\n ? {\n backgroundColor: themeColors.primary,\n color: themeColors.onPrimary,\n border: \"none\"\n }\n : {\n backgroundColor: \"transparent\",\n color: themeColors.primary,\n border: `1px solid ${themeColors.primary}`\n });\n\n const baseRadius = 40;\n const hoverRadius = shape === \"rounded-full\" ? 32 : shape === \"rounded-lg\" ? 12 : shape === \"rounded-md\" ? 8 : 4;\n\n return (\n <motion.button\n disabled={disabled || loading}\n onClick={!disabled && !loading ? onClick : undefined}\n className={`${className || \"\"} m3-components-button`}\n style={{\n backgroundColor: styles.backgroundColor,\n color: styles.color,\n border: styles.border,\n borderRadius: '40px',\n }}\n initial={{ borderRadius: baseRadius }}\n animate={{ borderRadius: baseRadius }}\n whileHover={!disabled && !loading && hoverEffect ? {\n borderRadius: hoverRadius,\n backgroundColor: type === \"outlined\" ? hexToArgba(themeColors.primary, 0.08) : themeColors.primary,\n } : {}}\n transition={{ ease: [\"easeIn\", \"easeOut\"], duration: 0.2 }}\n >\n <div className=\"m3-components-button-content\">\n {loading && (\n <span style={{ marginRight: '4px' }}>\n ... {/* TODO: IMPLEMENT LOADING SPINNER HERE */}\n </span>\n )}\n {icon && <span className=\"m3-components-button-icon\">{icon}</span>}\n <span className=\"m3-components-button-text\">{text}</span>\n </div>\n </motion.button>\n );\n})","import { useState, useEffect, useRef } from 'react';\nimport { motion } from 'framer-motion';\nimport { hexToArgba } from \"@core/theme\";\nimport { BigCalendar } from './BigCalendar';\n\nexport const BigCalendarEvent = ({\n event,\n onMouseEnter,\n onMouseLeave\n}: {\n event: any;\n onMouseEnter: (e: React.MouseEvent, item: BigCalendar.Types.EventItem) => void;\n onMouseLeave: () => void;\n}) => {\n const item = event.resource as BigCalendar.Types.EventItem;\n\n const isFilled = item.eventStyleFilled ?? true;\n const style = item.eventStyle || {\n backgroundColor: item.eventSeedColor || '#6750A4',\n contentColor: '#FFFFFF'\n };\n\n const bgCol = isFilled ? style.backgroundColor : hexToArgba(style.backgroundColor, 0.15);\n const borderCol = isFilled ? 'transparent' : style.backgroundColor;\n const textCol = isFilled ? style.contentColor : style.backgroundColor;\n\n const ref = useRef<HTMLDivElement>(null);\n const [width, setWidth] = useState(1000);\n\n useEffect(() => {\n if (!ref.current) return;\n const observer = new ResizeObserver((entries) => {\n window.requestAnimationFrame(() => {\n if (entries[0]) setWidth(entries[0].contentRect.width);\n });\n });\n observer.observe(ref.current);\n return () => observer.disconnect();\n }, []);\n\n const showDots = width < 120;\n const showTime = width >= 180;\n const showIcon = width < 280;\n\n return (\n <div ref={ref} className=\"m3-components-bigcalendar-event\">\n {showDots ? (\n <motion.div\n className=\"m3-components-bigcalendar-event-dot\"\n onMouseEnter={(e) => onMouseEnter(e as any, item)}\n onMouseLeave={onMouseLeave}\n style={{\n backgroundColor: bgCol,\n borderColor: borderCol === 'transparent' ? style.backgroundColor : borderCol\n }}\n />\n ) : (\n <motion.div\n initial={{ opacity: 0, scale: 0.98 }}\n animate={{ opacity: 1, scale: 1 }}\n onMouseEnter={(e) => onMouseEnter(e as any, item)}\n onMouseLeave={onMouseLeave}\n className=\"m3-components-bigcalendar-event-chip\"\n style={{\n backgroundColor: bgCol,\n color: textCol,\n border: isFilled ? 'none' : `1.5px solid ${borderCol}`\n }}\n >\n <div className=\"m3-components-bigcalendar-event-content\">\n <span className=\"m3-components-bigcalendar-event-title\">\n {event.title}\n </span>\n\n {showTime && (\n <span className=\"m3-components-bigcalendar-event-time\">\n {event.start.toLocaleString('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true\n })}\n\n {event.end && event.end instanceof Date && !isNaN(event.end.getTime()) && (\n ` - ${event.end.toLocaleString('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: true\n })}`\n )}\n </span>\n )}\n\n {/* TODO: Implement Trailing Icon Implementation and rename it to Trailing Layout */}\n {item.eventTrailingIcon && (\n <div\n className=\"\"\n style={{ color: textCol }}\n >\n {item.eventTrailingIcon}\n </div>\n )}\n </div>\n </motion.div>\n )}\n </div>\n );\n};"]}
|