SYMBOL INDEX (404 symbols across 39 files) FILE: Extensions/UserScript/Return Youtube Dislike.user.js constant LIKED_STATE (line 43) | const LIKED_STATE = "LIKED_STATE"; constant DISLIKED_STATE (line 44) | const DISLIKED_STATE = "DISLIKED_STATE"; constant NEUTRAL_STATE (line 45) | const NEUTRAL_STATE = "NEUTRAL_STATE"; function cLog (line 54) | function cLog(text, subtext = "") { function isInViewport (line 61) | function isInViewport(element) { function getButtons (line 76) | function getButtons() { function getDislikeButton (line 103) | function getDislikeButton() { function getLikeButton (line 121) | function getLikeButton() { function getLikeTextContainer (line 129) | function getLikeTextContainer() { function getDislikeTextContainer (line 137) | function getDislikeTextContainer() { function createObserver (line 154) | function createObserver(options, callback) { function isVideoLiked (line 199) | function isVideoLiked() { function isVideoDisliked (line 206) | function isVideoDisliked() { function isVideoNotLiked (line 213) | function isVideoNotLiked() { function isVideoNotDisliked (line 220) | function isVideoNotDisliked() { function checkForUserAvatarButton (line 227) | function checkForUserAvatarButton() { function getState (line 238) | function getState() { function setLikes (line 248) | function setLikes(likesCount) { function setDislikes (line 256) | function setDislikes(dislikesCount) { function getLikeCountFromButton (line 269) | function getLikeCountFromButton() { function createRateBar (line 330) | function createRateBar(likes, dislikes) { function setState (line 408) | function setState() { function updateDOMDislikes (line 451) | function updateDOMDislikes() { function likeClicked (line 456) | function likeClicked() { function dislikeClicked (line 481) | function dislikeClicked() { function setInitialState (line 506) | function setInitialState() { function getVideoId (line 510) | function getVideoId() { function isVideoLoaded (line 523) | function isVideoLoaded() { function roundDown (line 539) | function roundDown(num) { function numberFormat (line 547) | function numberFormat(numberState) { function getNumberFormatter (line 557) | function getNumberFormatter(optionSelect) { function getColorFromTheme (line 600) | function getColorFromTheme(voteIsLike) { function setEventListeners (line 630) | function setEventListeners(evt) { FILE: Extensions/combined/changelog/changelog.js function localizeHtmlPage (line 25) | function localizeHtmlPage() { function createLink (line 52) | function createLink(url, id) { FILE: Extensions/combined/menu-fixer.js function debounceAsync (line 1) | function debounceAsync(func, wait, renderer) { FILE: Extensions/combined/popup.js function localizeHtmlPage (line 24) | function localizeHtmlPage() { function createLink (line 52) | function createLink(url, id) { function initPatreonAuth (line 98) | function initPatreonAuth() { function initConfig (line 368) | function initConfig() { function initializeVersionNumber (line 382) | function initializeVersionNumber() { function compareVersions (line 400) | function compareVersions(latestStr, currentStr) { function initializeDisableVoteSubmission (line 419) | function initializeDisableVoteSubmission() { function initializeDisableLogging (line 425) | function initializeDisableLogging() { function initializeColoredThumbs (line 431) | function initializeColoredThumbs() { function initializeColoredBar (line 437) | function initializeColoredBar() { function initializeColorTheme (line 443) | function initializeColorTheme() { function initializeTooltipPercentage (line 449) | function initializeTooltipPercentage() { function initializeTooltipPercentageMode (line 455) | function initializeTooltipPercentageMode() { function initializeNumberDisplayFormat (line 461) | function initializeNumberDisplayFormat() { function updateNumberDisplayFormatContent (line 468) | function updateNumberDisplayFormatContent() { function initializeNumberDisplayReformatLikes (line 476) | function initializeNumberDisplayReformatLikes() { function initializeHidePremiumTeaser (line 482) | function initializeHidePremiumTeaser() { function storageChangeHandler (line 490) | function storageChangeHandler(changes, area) { function handleDisableVoteSubmissionChangeEvent (line 520) | function handleDisableVoteSubmissionChangeEvent(value) { function handleDisableLoggingChangeEvent (line 525) | function handleDisableLoggingChangeEvent(value) { function handleColoredThumbsChangeEvent (line 530) | function handleColoredThumbsChangeEvent(value) { function handleColoredBarChangeEvent (line 535) | function handleColoredBarChangeEvent(value) { function handleColorThemeChangeEvent (line 540) | function handleColorThemeChangeEvent(value) { function updateColorThemePreviewContent (line 549) | function updateColorThemePreviewContent(themeName) { function handleNumberDisplayFormatChangeEvent (line 554) | function handleNumberDisplayFormatChangeEvent(value) { function handleShowTooltipPercentageChangeEvent (line 559) | function handleShowTooltipPercentageChangeEvent(value) { function handleTooltipPercentageModeChangeEvent (line 564) | function handleTooltipPercentageModeChangeEvent(value) { function handleNumberDisplayReformatLikesChangeEvent (line 573) | function handleNumberDisplayReformatLikesChangeEvent(value) { function handleHidePremiumTeaserChangeEvent (line 578) | function handleHidePremiumTeaserChangeEvent(value) { function getNumberFormatter (line 584) | function getNumberFormatter(optionSelect) { function getColorFromTheme (line 635) | function getColorFromTheme(colorTheme, voteIsLike) { FILE: Extensions/combined/ryd.background.js constant CHANGELOG_STORAGE_KEY (line 7) | const CHANGELOG_STORAGE_KEY = "lastShownChangelogVersion"; constant PENDING_CHANGELOG_STORAGE_KEY (line 8) | const PENDING_CHANGELOG_STORAGE_KEY = "pendingChangelogVersion"; function broadcastPatreonStatus (line 18) | function broadcastPatreonStatus(authenticated, user, sessionToken) { function handlePatreonAuthComplete (line 47) | function handlePatreonAuthComplete(user, sessionToken, done) { function getIdentityApi (line 66) | function getIdentityApi() { function launchWebAuthFlow (line 72) | function launchWebAuthFlow(url) { function extractOAuthParams (line 91) | function extractOAuthParams(responseUrl) { function openChangelogTab (line 241) | function openChangelogTab(version) { function scheduleChangelogVersion (line 255) | function scheduleChangelogVersion(version) { function clearPendingChangelogVersion (line 274) | function clearPendingChangelogVersion() { function showPendingChangelogIfNeeded (line 290) | function showPendingChangelogIfNeeded() { function persistChangelogVersion (line 321) | function persistChangelogVersion(version) { function maybeShowChangelog (line 341) | function maybeShowChangelog(details) { function sendVote (line 433) | async function sendVote(videoId, vote, depth = 1) { function register (line 480) | async function register() { function countLeadingZeroes (line 515) | function countLeadingZeroes(uInt8View, limit) { function solvePuzzle (line 542) | async function solvePuzzle(puzzle) { function generateUserID (line 565) | function generateUserID(length = 36) { function storageChangeHandler (line 583) | function storageChangeHandler(changes, area) { function handleDisableVoteSubmissionChangeEvent (line 616) | function handleDisableVoteSubmissionChangeEvent(value) { function handleDisableLoggingChangeEvent (line 625) | function handleDisableLoggingChangeEvent(value) { function handleNumberDisplayFormatChangeEvent (line 629) | function handleNumberDisplayFormatChangeEvent(value) { function handleShowTooltipPercentageChangeEvent (line 633) | function handleShowTooltipPercentageChangeEvent(value) { function handleTooltipPercentageModeChangeEvent (line 637) | function handleTooltipPercentageModeChangeEvent(value) { function changeIcon (line 644) | function changeIcon(iconName) { function handleColoredThumbsChangeEvent (line 650) | function handleColoredThumbsChangeEvent(value) { function handleColoredBarChangeEvent (line 654) | function handleColoredBarChangeEvent(value) { function handleColorThemeChangeEvent (line 658) | function handleColorThemeChangeEvent(value) { function handleNumberDisplayReformatLikesChangeEvent (line 665) | function handleNumberDisplayReformatLikesChangeEvent(value) { function handleHidePremiumTeaserChangeEvent (line 669) | function handleHidePremiumTeaserChangeEvent(value) { function initExtConfig (line 675) | function initExtConfig() { function initializeDisableVoteSubmission (line 688) | function initializeDisableVoteSubmission() { function initializeDisableLogging (line 699) | function initializeDisableLogging() { function initializeColoredThumbs (line 709) | function initializeColoredThumbs() { function initializeColoredBar (line 719) | function initializeColoredBar() { function initializeColorTheme (line 729) | function initializeColorTheme() { function initializeNumberDisplayFormat (line 739) | function initializeNumberDisplayFormat() { function initializeTooltipPercentage (line 749) | function initializeTooltipPercentage() { function initializeTooltipPercentageMode (line 759) | function initializeTooltipPercentageMode() { function initializeNumberDisplayReformatLikes (line 769) | function initializeNumberDisplayReformatLikes() { function initializeHidePremiumTeaser (line 779) | function initializeHidePremiumTeaser() { function isChrome (line 790) | function isChrome() { function isFirefox (line 794) | function isFirefox() { FILE: Extensions/combined/ryd.content-script.js function ensureShortsNavigationObserver (line 16) | function ensureShortsNavigationObserver() { function checkForInitialization (line 53) | async function checkForInitialization() { function triggerInitializationCycle (line 81) | async function triggerInitializationCycle() { function setEventListeners (line 104) | async function setEventListeners() { FILE: Extensions/combined/src/bar.js function createRateBar (line 12) | function createRateBar(likes, dislikes) { FILE: Extensions/combined/src/buttons.js function getButtons (line 4) | function getButtons() { function getLikeButton (line 36) | function getLikeButton() { function getLikeTextContainer (line 50) | function getLikeTextContainer() { function getDislikeButton (line 54) | function getDislikeButton() { function createDislikeTextContainer (line 84) | function createDislikeTextContainer() { function getDislikeTextContainer (line 117) | function getDislikeTextContainer() { function checkForSignInButton (line 131) | function checkForSignInButton() { FILE: Extensions/combined/src/changelog/index.js constant PATREON_JOIN_URL (line 4) | const PATREON_JOIN_URL = "https://www.patreon.com/join/returnyoutubedisl... constant SUPPORT_DOC_URL (line 5) | const SUPPORT_DOC_URL = config.links?.help ?? "https://returnyoutubedisl... constant COMMUNITY_URL (line 6) | const COMMUNITY_URL = config.links?.discord ?? "https://discord.gg/mYnES... function initChangelogPage (line 8) | function initChangelogPage() { function setup (line 16) | function setup() { function applyLocaleMetadata (line 23) | function applyLocaleMetadata() { function localizeHtmlPage (line 34) | function localizeHtmlPage() { function decorateScreenshotPlaceholders (line 49) | function decorateScreenshotPlaceholders() { function getPlaceholderLabelKey (line 65) | function getPlaceholderLabelKey(type) { function bindActions (line 78) | function bindActions() { function openExternal (line 106) | function openExternal(url, browser) { FILE: Extensions/combined/src/config.js constant DEV_API_URL (line 1) | const DEV_API_URL = "https://localhost:7258"; constant PROD_API_URL (line 2) | const PROD_API_URL = "https://returnyoutubedislikeapi.com"; function getApiUrl (line 41) | function getApiUrl() { function getApiEndpoint (line 45) | function getApiEndpoint(endpoint) { function getChangelogUrl (line 49) | function getChangelogUrl() { FILE: Extensions/combined/src/events.js function sendVote (line 25) | function sendVote(vote) { function updateDOMDislikes (line 35) | function updateDOMDislikes() { function likeClicked (line 40) | function likeClicked() { function dislikeClicked (line 68) | function dislikeClicked() { function addLikeDislikeEventListener (line 96) | function addLikeDislikeEventListener() { function createSmartimationObserver (line 112) | function createSmartimationObserver() { function storageChangeHandler (line 137) | function storageChangeHandler(changes, area) { function handleDisableVoteSubmissionChangeEvent (line 167) | function handleDisableVoteSubmissionChangeEvent(value) { function handleColoredThumbsChangeEvent (line 171) | function handleColoredThumbsChangeEvent(value) { function handleColoredBarChangeEvent (line 175) | function handleColoredBarChangeEvent(value) { function handleColorThemeChangeEvent (line 179) | function handleColorThemeChangeEvent(value) { function handleNumberDisplayFormatChangeEvent (line 184) | function handleNumberDisplayFormatChangeEvent(value) { function handleNumberDisplayReformatLikesChangeEvent (line 188) | function handleNumberDisplayReformatLikesChangeEvent(value) { function handleHidePremiumTeaserChangeEvent (line 192) | function handleHidePremiumTeaserChangeEvent(value) { FILE: Extensions/combined/src/patreon.js function initPatreonFeatures (line 14) | function initPatreonFeatures() { function enablePremiumFeatures (line 53) | function enablePremiumFeatures() { function disablePremiumFeatures (line 63) | function disablePremiumFeatures() { function isPatreonUser (line 70) | function isPatreonUser() { function getPatreonTier (line 74) | function getPatreonTier() { FILE: Extensions/combined/src/premiumAnalytics/activity/index.js function setActivityTranslator (line 13) | function setActivityTranslator(translator) { function resetActivityTranslator (line 21) | function resetActivityTranslator() { function translateActivity (line 25) | function translateActivity(key, substitutions) { constant MS_PER_MINUTE (line 35) | const MS_PER_MINUTE = 60 * 1000; constant MS_PER_HOUR (line 36) | const MS_PER_HOUR = 60 * 60 * 1000; constant MS_PER_DAY (line 37) | const MS_PER_DAY = 24 * MS_PER_HOUR; constant MS_PER_WEEK (line 38) | const MS_PER_WEEK = 7 * MS_PER_DAY; function pickFirstFinite (line 40) | function pickFirstFinite(...values) { function ensureActivityChart (line 49) | function ensureActivityChart() { function renderActivityChart (line 61) | function renderActivityChart(timeSeries) { function clearActivityChart (line 245) | function clearActivityChart() { function resetChartZoom (line 250) | function resetChartZoom() { function resizeActivityChart (line 272) | function resizeActivityChart() { function disposeActivityChart (line 276) | function disposeActivityChart() { function registerZoomSelectionListener (line 284) | function registerZoomSelectionListener(listener) { function unregisterZoomSelectionListener (line 290) | function unregisterZoomSelectionListener(listener) { function createDataZoom (line 294) | function createDataZoom(bounds, selection) { function resolveBucketSize (line 337) | function resolveBucketSize(label) { function formatBucketDescription (line 350) | function formatBucketDescription(label, bucketMs) { function formatBucketNumber (line 395) | function formatBucketNumber(value) { function approximately (line 400) | function approximately(value, target) { function normalizeSeriesPoints (line 404) | function normalizeSeriesPoints(points, bucketMs) { function handleDataZoom (line 454) | function handleDataZoom(event) { function resolveZoomValue (line 487) | function resolveZoomValue(payload, valueKey, percentKey, minBound, maxBo... FILE: Extensions/combined/src/premiumAnalytics/activity/index.spec.js function getMessage (line 59) | function getMessage(key, substitutions) { function createPanel (line 76) | function createPanel() { FILE: Extensions/combined/src/premiumAnalytics/activity/time.js function computeChartBounds (line 4) | function computeChartBounds(points, timeline, bucketSizeMs) { function updateGlobalBounds (line 28) | function updateGlobalBounds(bounds) { function clampRangeToBounds (line 48) | function clampRangeToBounds(range, bounds) { function combineBounds (line 64) | function combineBounds(primary = {}, fallback = {}) { function resolvePreferredLower (line 70) | function resolvePreferredLower(primary, fallback) { function resolvePreferredUpper (line 80) | function resolvePreferredUpper(primary, fallback) { FILE: Extensions/combined/src/premiumAnalytics/activity/time.spec.js function initializeState (line 13) | function initializeState() { FILE: Extensions/combined/src/premiumAnalytics/constants.js constant MS_PER_DAY (line 1) | const MS_PER_DAY = 24 * 60 * 60 * 1000; constant EXPANDABLE_SECTIONS (line 2) | const EXPANDABLE_SECTIONS = new Set(["activity", "map", "lists"]); FILE: Extensions/combined/src/premiumAnalytics/index.spec.js function getMessage (line 139) | function getMessage(key, substitutions) { FILE: Extensions/combined/src/premiumAnalytics/lifecycle.js function initPremiumAnalytics (line 22) | function initPremiumAnalytics() { function handleNavigation (line 45) | function handleNavigation() { function handleRangePreset (line 66) | function handleRangePreset(rangeDays) { function handleRangeAnchorChange (line 81) | function handleRangeAnchorChange(anchor) { function handleModeChange (line 95) | function handleModeChange(mode) { function handleChartExpand (line 102) | function handleChartExpand(chartKey) { function handleChartSelection (line 131) | function handleChartSelection(range) { function teardownPanel (line 153) | function teardownPanel() { function teardownPremiumAnalytics (line 171) | function teardownPremiumAnalytics() { function updatePremiumSession (line 181) | function updatePremiumSession({ token, active, membershipTier }) { function resolveVideoId (line 217) | function resolveVideoId() { function resizeCharts (line 223) | function resizeCharts() { FILE: Extensions/combined/src/premiumAnalytics/lists/index.js function createPlaceholder (line 4) | function createPlaceholder() { function renderEntry (line 8) | function renderEntry({ countryCode, countryName, likes, dislikes }, type) { function updateCountryList (line 16) | function updateCountryList(container, entries, type) { FILE: Extensions/combined/src/premiumAnalytics/logging.js constant LOG_PREFIX (line 1) | const LOG_PREFIX = '[PremiumAnalytics]'; function logTimeBounds (line 3) | function logTimeBounds(label, bounds) { function logRangeSelection (line 13) | function logRangeSelection(label, range) { function logFetchRequest (line 23) | function logFetchRequest(videoId, params) { function logZoomPreview (line 27) | function logZoomPreview(label, bounds) { FILE: Extensions/combined/src/premiumAnalytics/map/index.js function setMapTranslator (line 14) | function setMapTranslator(translator) { function resetMapTranslator (line 22) | function resetMapTranslator() { function translateMessage (line 26) | function translateMessage(key, substitutions) { constant NORMALIZED_WORLD_FEATURES (line 36) | const NORMALIZED_WORLD_FEATURES = normalizeWorldFeatures(worldFeatures); constant WORLD_FEATURE_COLLECTION (line 37) | const WORLD_FEATURE_COLLECTION = { type: "FeatureCollection", features: ... constant NORMALIZED_US_STATE_FEATURES (line 40) | const NORMALIZED_US_STATE_FEATURES = normalizeWorldFeatures(usStateFeatu... constant US_STATE_FEATURE_COLLECTION (line 41) | const US_STATE_FEATURE_COLLECTION = { type: "FeatureCollection", feature... constant US_STATE_NAME_BY_CODE (line 43) | const US_STATE_NAME_BY_CODE = { constant CANONICAL_SYNONYM_GROUPS (line 101) | const CANONICAL_SYNONYM_GROUPS = [ constant CANONICAL_SYNONYM_LOOKUP (line 121) | const CANONICAL_SYNONYM_LOOKUP = buildSynonymLookup(CANONICAL_SYNONYM_GR... constant FEATURE_NAME_BY_CANONICAL (line 122) | const FEATURE_NAME_BY_CANONICAL = buildFeatureCanonicalMap(NORMALIZED_WO... constant ISO_TO_FEATURE_NAME (line 123) | const ISO_TO_FEATURE_NAME = buildIsoToFeatureNameMap(FEATURE_NAME_BY_CAN... constant US_STATE_FEATURE_CANONICAL_MAP (line 124) | const US_STATE_FEATURE_CANONICAL_MAP = buildStateCanonicalMap(NORMALIZED... function ensureMapChart (line 126) | function ensureMapChart() { function renderMap (line 138) | function renderMap(countries) { function resolveMapContext (line 241) | function resolveMapContext(state) { function buildCountryEntries (line 274) | function buildCountryEntries(entries) { function buildSubdivisionEntries (line 297) | function buildSubdivisionEntries(entries, countryCode) { function resolveSubdivisionFeatureName (line 328) | function resolveSubdivisionFeatureName(countryCode, subdivisionCode, fal... function filterSubdivisionsForCountry (line 359) | function filterSubdivisionsForCountry(subdivisions, countryCode) { function initializeMapInteractions (line 368) | function initializeMapInteractions(mapChart) { function handleMapClick (line 379) | function handleMapClick(params) { function bindMapResetButton (line 409) | function bindMapResetButton() { function updateMapResetButtonVisibility (line 424) | function updateMapResetButtonVisibility() { function disposeMapChart (line 434) | function disposeMapChart() { function clearMapChart (line 443) | function clearMapChart() { function resizeMapChart (line 447) | function resizeMapChart() { function resolveVisualMapConfig (line 451) | function resolveVisualMapConfig(values, mode) { function formatMapTooltip (line 499) | function formatMapTooltip(params) { function resolveMapRegionName (line 517) | function resolveMapRegionName(countryCode, fallbackName) { function buildStateCanonicalMap (line 555) | function buildStateCanonicalMap(features) { function buildFeatureCanonicalMap (line 566) | function buildFeatureCanonicalMap(features) { function buildSynonymLookup (line 595) | function buildSynonymLookup(groups) { function buildIsoToFeatureNameMap (line 611) | function buildIsoToFeatureNameMap(featureCanonicalMap) { function findFeatureNameByCanonical (line 628) | function findFeatureNameByCanonical(name, featureCanonicalMap) { function canonicalizeName (line 634) | function canonicalizeName(name) { function expandAbbreviations (line 646) | function expandAbbreviations(name) { function normalizeIsoCode (line 663) | function normalizeIsoCode(code) { function normalizeWorldFeatures (line 678) | function normalizeWorldFeatures(features) { function normalizeGeometry (line 689) | function normalizeGeometry(geometry) { function normalizeRing (line 706) | function normalizeRing(ring) { FILE: Extensions/combined/src/premiumAnalytics/map/index.spec.js function getMessage (line 113) | function getMessage(key, substitutions) { function setupI18nMock (line 127) | function setupI18nMock() { function createChartStub (line 135) | function createChartStub() { function setupPanel (line 149) | function setupPanel() { FILE: Extensions/combined/src/premiumAnalytics/panel.js function configurePanelCallbacks (line 12) | function configurePanelCallbacks(newCallbacks) { function ensurePanel (line 16) | function ensurePanel() { function updateRangeButtons (line 48) | function updateRangeButtons() { function updateRangeAnchorButtons (line 60) | function updateRangeAnchorButtons() { function updateModeButtons (line 75) | function updateModeButtons() { function setListsLoading (line 84) | function setListsLoading() { function setFooterMessage (line 90) | function setFooterMessage(text) { function setPanelExpanded (line 97) | function setPanelExpanded(expanded) { function togglePanelExpanded (line 102) | function togglePanelExpanded() { function setLoadingState (line 106) | function setLoadingState(isLoading) { function setActivityBucketLabel (line 111) | function setActivityBucketLabel(text) { function renderSummary (line 122) | function renderSummary(summary) { function bindUiControls (line 167) | function bindUiControls(container) { function createPanelMarkup (line 203) | function createPanelMarkup() { function createModeControls (line 275) | function createModeControls() { function createRangeAnchorControls (line 290) | function createRangeAnchorControls() { function formatRangeLabel (line 312) | function formatRangeLabel(days) { function resolveRangeAnchor (line 318) | function resolveRangeAnchor() { function formatRangeWindowLabel (line 323) | function formatRangeWindowLabel(anchor) { function formatDayCount (line 346) | function formatDayCount(count) { function applyExpansionState (line 355) | function applyExpansionState() { function applyChartExpansionState (line 368) | function applyChartExpansionState() { function positionExpandedPanel (line 390) | function positionExpandedPanel(panel, button) { function resetPanelPosition (line 405) | function resetPanelPosition(panel, button) { function positionExpandedSection (line 414) | function positionExpandedSection(section, button) { function resetSectionPosition (line 442) | function resetSectionPosition(section, button) { function applyLoadingState (line 454) | function applyLoadingState() { function formatSelectedPeriod (line 461) | function formatSelectedPeriod() { function formatDate (line 475) | function formatDate(ms) { function resolveAnchorRect (line 482) | function resolveAnchorRect() { function applyAnchorPosition (line 505) | function applyAnchorPosition(target, rect, { maxWidthFallback }) { FILE: Extensions/combined/src/premiumAnalytics/panel.spec.js function getMessage (line 22) | function getMessage(key, substitutions) { function mountSecondaryContainer (line 40) | function mountSecondaryContainer() { FILE: Extensions/combined/src/premiumAnalytics/render.js function renderAnalytics (line 17) | function renderAnalytics(data) { FILE: Extensions/combined/src/premiumAnalytics/requests.js constant HOURLY_THRESHOLD_DAYS (line 11) | const HOURLY_THRESHOLD_DAYS = 7; constant HOURLY_THRESHOLD_MS (line 12) | const HOURLY_THRESHOLD_MS = HOURLY_THRESHOLD_DAYS * MS_PER_DAY; constant MS_PER_HOUR (line 13) | const MS_PER_HOUR = 60 * 60 * 1000; function requestAnalytics (line 15) | function requestAnalytics({ selection } = {}) { function commitSelectionFetch (line 108) | function commitSelectionFetch(selection) { function scheduleSelectionFetch (line 114) | function scheduleSelectionFetch(selection) { function normalizeSelection (line 118) | function normalizeSelection(selection) { function msToIso (line 128) | function msToIso(ms) { function handleError (line 135) | function handleError(status, code) { function resolveAnchor (line 159) | function resolveAnchor() { function resolveBucket (line 164) | function resolveBucket(selection, rangeDays) { FILE: Extensions/combined/src/premiumAnalytics/state.js constant RANGE_OPTIONS (line 1) | const RANGE_OPTIONS = [7, 30, 90, 0]; constant RANGE_ANCHORS (line 2) | const RANGE_ANCHORS = ["first", "last"]; constant COUNTRY_LIMIT (line 3) | const COUNTRY_LIMIT = 12; function resetStateForVideo (line 40) | function resetStateForVideo() { function resetSessionState (line 60) | function resetSessionState() { function setSession (line 66) | function setSession(token, isActive, membershipTier = "none") { FILE: Extensions/combined/src/premiumAnalytics/state.spec.js function resetGlobals (line 15) | function resetGlobals() { FILE: Extensions/combined/src/premiumAnalytics/teaser/index.js constant PATREON_JOIN_URL (line 5) | const PATREON_JOIN_URL = "https://www.patreon.com/join/returnyoutubedisl... constant CHANGELOG_URL (line 6) | const CHANGELOG_URL = getChangelogUrl(); constant TEASER_SUPPRESSION_REASON_LEGACY (line 8) | const TEASER_SUPPRESSION_REASON_LEGACY = "legacy"; constant TEASER_SUPPRESSION_REASON_PREMIUM (line 9) | const TEASER_SUPPRESSION_REASON_PREMIUM = "premium"; constant TEASER_SUPPRESSION_REASON_SETTINGS (line 10) | const TEASER_SUPPRESSION_REASON_SETTINGS = "settings"; function initPremiumTeaser (line 22) | async function initPremiumTeaser() { function setTeaserSuppressed (line 37) | function setTeaserSuppressed(shouldSuppress, reason = TEASER_SUPPRESSION... function applySettingsSuppression (line 67) | function applySettingsSuppression(shouldHide, persist = false) { function syncSuppressionWithSettings (line 84) | async function syncSuppressionWithSettings() { function handleNavigation (line 118) | function handleNavigation() { function resolveVideoId (line 139) | function resolveVideoId() { function fetchAndRender (line 151) | function fetchAndRender(videoId) { function ensurePanel (line 207) | function ensurePanel() { function removePanel (line 258) | function removePanel(includeStrayNodes = false) { function resetState (line 272) | function resetState() { function setLoading (line 280) | function setLoading(isLoading) { function showError (line 290) | function showError() { function updateCounts (line 299) | function updateCounts(payload) { function normalizeNumber (line 316) | function normalizeNumber(value) { function createPanelMarkup (line 327) | function createPanelMarkup() { function openTab (line 386) | function openTab(url) { function handleManualDismiss (line 415) | function handleManualDismiss(event) { FILE: Extensions/combined/src/premiumAnalytics/teaser/index.spec.js function getMessage (line 20) | function getMessage(key, substitutions) { function mountSecondary (line 47) | function mountSecondary() { function flushPromises (line 112) | async function flushPromises() { FILE: Extensions/combined/src/premiumAnalytics/theme.js function getTextColor (line 1) | function getTextColor() { function getMutedTextColor (line 5) | function getMutedTextColor() { function getBorderColor (line 9) | function getBorderColor(alpha = 0.15) { function getSurfaceColor (line 14) | function getSurfaceColor(lightAlpha = 0.06, darkAlpha = 0.02) { function getHoverFillColor (line 20) | function getHoverFillColor(lightAlpha = 0.18, darkAlpha = 0.18) { function isDarkTheme (line 26) | function isDarkTheme() { function parseColor (line 43) | function parseColor(value) { FILE: Extensions/combined/src/premiumAnalytics/tierNotice.js constant PATREON_UPGRADE_URL (line 3) | const PATREON_UPGRADE_URL = "https://www.patreon.com/join/returnyoutubed... function ensureListeners (line 11) | function ensureListeners() { function handleNavigation (line 17) | function handleNavigation() { function createPanelMarkup (line 41) | function createPanelMarkup() { function wireCta (line 57) | function wireCta(panel) { function removePanel (line 66) | function removePanel() { function resetState (line 73) | function resetState() { function showTierNotice (line 77) | function showTierNotice() { function hideTierNotice (line 83) | function hideTierNotice() { FILE: Extensions/combined/src/premiumAnalytics/utils.js function sanitizeCount (line 1) | function sanitizeCount(value) { function toEpoch (line 9) | function toEpoch(value) { function capitalize (line 15) | function capitalize(value) { function debounce (line 19) | function debounce(fn, delay) { function safeJson (line 27) | function safeJson(response) { FILE: Extensions/combined/src/starRating.js function createStarRating (line 2) | function createStarRating(rating, isMobile) { FILE: Extensions/combined/src/state.js constant LIKED_STATE (line 14) | const LIKED_STATE = "LIKED_STATE"; constant DISLIKED_STATE (line 15) | const DISLIKED_STATE = "DISLIKED_STATE"; constant NEUTRAL_STATE (line 16) | const NEUTRAL_STATE = "NEUTRAL_STATE"; function isMobile (line 64) | function isMobile() { function isShorts (line 68) | function isShorts() { function isNewDesign (line 72) | function isNewDesign() { function isRoundedDesign (line 76) | function isRoundedDesign() { function isLikesDisabled (line 112) | function isLikesDisabled() { function isVideoLiked (line 120) | function isVideoLiked() { function isVideoDisliked (line 130) | function isVideoDisliked() { function getState (line 140) | function getState(storedData) { function setLikes (line 151) | function setLikes(likesCount) { function setDislikes (line 156) | function setDislikes(dislikesCount) { function getLikeCountFromButton (line 183) | function getLikeCountFromButton() { function processResponse (line 201) | function processResponse(response, storedData) { function displayError (line 236) | function displayError(error) { function setState (line 240) | async function setState(storedData) { function setInitialState (line 270) | async function setInitialState() { function initExtConfig (line 274) | async function initExtConfig() { function initializeSelectors (line 288) | async function initializeSelectors() { function initializeDisableVoteSubmission (line 303) | function initializeDisableVoteSubmission() { function initializeDisableLogging (line 313) | function initializeDisableLogging() { function initializeColoredThumbs (line 326) | function initializeColoredThumbs() { function initializeColoredBar (line 336) | function initializeColoredBar() { function initializeColorTheme (line 346) | function initializeColorTheme() { function initializeNumberDisplayFormat (line 356) | function initializeNumberDisplayFormat() { function initializeTooltipPercentage (line 366) | function initializeTooltipPercentage() { function initializeTooltipPercentageMode (line 376) | function initializeTooltipPercentageMode() { function initializeNumberDisplayReformatLikes (line 386) | function initializeNumberDisplayReformatLikes() { function initializeHidePremiumTeaser (line 396) | function initializeHidePremiumTeaser() { FILE: Extensions/combined/src/utils.js function numberFormat (line 3) | function numberFormat(numberState) { function getNumberFormatter (line 7) | function getNumberFormatter(optionSelect) { function localize (line 49) | function localize(localeString, substitutions) { function getBrowser (line 73) | function getBrowser() { function getVideoId (line 84) | function getVideoId(url) { function isInViewport (line 98) | function isInViewport(element) { function isShortsLoaded (line 113) | function isShortsLoaded(videoId) { function isVideoLoaded (line 146) | function isVideoLoaded() { function initializeLogging (line 173) | function initializeLogging() { function getColorFromTheme (line 183) | function getColorFromTheme(voteIsLike) { function querySelector (line 211) | function querySelector(selectors, element) { function querySelectorAll (line 221) | function querySelectorAll(selectors) { function createObserver (line 232) | function createObserver(options, callback) { FILE: Extensions/combined/src/utils.spec.js function resetGlobals (line 71) | function resetGlobals() { FILE: webpack.config.js class MirrorJsOutputsPlugin (line 34) | class MirrorJsOutputsPlugin { method constructor (line 35) | constructor(targetDirs) { method apply (line 39) | apply(compiler) {