Skip to main content

Variable: CONFIG

const CONFIG: {
CHART: {
CHART_TYPES: {
ALTITUDE: "altitude";
ELEVATION: "elevation";
GPS_TRACK: "gps-track";
HEART_RATE: "heart-rate";
LAP_ZONE: "lap-zone";
POWER: "power";
SPEED: "speed";
};
DEFAULT_CHART: "elevation";
DEFAULT_COLORS: {
PRIMARY: "#667eea";
SECONDARY: "#764ba2";
};
DEFAULT_ZOOM_LEVEL: 1;
MAX_ZOOM_LEVEL: 10;
MIN_ZOOM_LEVEL: 0.1;
};
CONVERSION: {
CELSIUS_TO_FAHRENHEIT_MULTIPLIER: number;
CELSIUS_TO_FAHRENHEIT_OFFSET: 32;
DECIMAL_PLACES: 2;
DECIMAL_PLACES_PRECISE: 4;
INCHES_PER_FOOT: 12;
KG_TO_POUNDS: 2.20462;
METERS_PER_KILOMETER: 1000;
METERS_PER_MILE: 1609.344;
METERS_TO_FEET: 3.28084;
METERS_TO_INCHES: 39.3701;
MILLISECONDS_PER_SECOND: 1000;
MPS_TO_KMH: 3.6;
MPS_TO_MPH: 2.237;
SECONDS_PER_HOUR: 3600;
SECONDS_PER_MINUTE: 60;
};
DEBUG: {
CATEGORIES: {
CHARTS: "charts";
DATA: "data";
FILES: "files";
STATE: "state";
UI: "ui";
};
ENABLED: false;
LOG_LEVELS: {
DEBUG: "debug";
ERROR: "error";
INFO: "info";
WARN: "warn";
};
};
DISTANCE_UNITS: {
FEET: "feet";
KILOMETERS: "kilometers";
METERS: "meters";
MILES: "miles";
};
ERROR: {
CODES: {
FILE_NOT_FOUND: "FILE_NOT_FOUND";
INVALID_INPUT: "INVALID_INPUT";
NETWORK_ERROR: "NETWORK_ERROR";
PARSE_ERROR: "PARSE_ERROR";
PERMISSION_DENIED: "PERMISSION_DENIED";
STATE_ERROR: "STATE_ERROR";
UNKNOWN_ERROR: "UNKNOWN_ERROR";
VALIDATION_ERROR: "VALIDATION_ERROR";
};
MESSAGES: {
FILE_NOT_FOUND: "File not found";
INVALID_INPUT: "Invalid input provided";
NETWORK_ERROR: "Network connection error";
PARSE_ERROR: "Failed to parse file";
PERMISSION_DENIED: "Permission denied";
STATE_ERROR: "Application state error";
UNKNOWN_ERROR: "An unknown error occurred";
VALIDATION_ERROR: "Input validation failed";
};
};
FILE: {
DEFAULT_EXPORT_FORMAT: "gpx";
EXPORT_FORMATS: {
CSV: "csv";
GPX: "gpx";
JSON: "json";
};
IFRAME_PATHS: {
ALT_FIT: "ffv/index.html";
};
MAX_FILE_SIZE: number;
SUPPORTED_EXTENSIONS: readonly [".fit"];
SUPPORTED_MIME_TYPES: readonly ["application/octet-stream"];
};
MAP: {
DEFAULT_CENTER: readonly [0, 0];
DEFAULT_PROVIDER: "openstreetmap";
DEFAULT_ZOOM: 13;
PROVIDERS: {
OPENSTREETMAP: "openstreetmap";
SATELLITE: "satellite";
};
};
PERFORMANCE: {
CATEGORIES: {
CHARTS: "charts";
DATA_PROCESSING: "data-processing";
FILE_OPERATIONS: "file-operations";
STATE_MANAGEMENT: "state-management";
UI_RENDERING: "ui-rendering";
};
ENABLE_MONITORING: false;
MAX_HISTORY_SIZE: 100;
MEMORY_CHECK_INTERVAL: 30000;
SLOW_OPERATION_THRESHOLD: 10;
};
TEMPERATURE_UNITS: {
CELSIUS: "celsius";
FAHRENHEIT: "fahrenheit";
KELVIN: "kelvin";
};
TIME_UNITS: {
HOURS: "hours";
MILLISECONDS: "milliseconds";
MINUTES: "minutes";
SECONDS: "seconds";
};
UI: {
ANIMATION_DURATION: 300;
CSS_CLASSES: {
ACTIVE: "active";
HIDDEN: "hidden";
LOADING: "loading";
SHOW: "show";
THEMED_BTN: "themed-btn";
};
DEBOUNCE_DELAY: 250;
DEFAULT_THEME: "dark";
DOM_IDS: {
ACTIVE_FILE_NAME: "active_file_name";
ACTIVE_FILE_NAME_CONTAINER: "active_file_name_container";
ALT_FIT_IFRAME: "altfit_iframe";
CONTENT_CHART: "content_chart";
CONTENT_DATA: "content_data";
CONTENT_MAP: "content_map";
CONTENT_SUMMARY: "content_summary";
DROP_OVERLAY: "drop_overlay";
NOTIFICATION: "notification";
TAB_CHART: "tab_chart";
TAB_SUMMARY: "tab_summary";
UNLOAD_FILE_BTN: "unload_file_btn";
ZWIFT_IFRAME: "zwift_iframe";
};
HEADER_HEIGHT: 60;
NOTIFICATION_TYPES: {
ERROR: {
ariaLabel: "Error";
duration: 6000;
icon: "❌";
type: "error";
};
INFO: {
ariaLabel: "Information";
duration: 4000;
icon: "ℹ️";
type: "info";
};
SUCCESS: {
ariaLabel: "Success";
duration: 3000;
icon: "βœ…";
type: "success";
};
WARNING: {
ariaLabel: "Warning";
duration: 5000;
icon: "⚠️";
type: "warning";
};
};
SIDEBAR_WIDTH: 250;
SUMMARY_COLUMN_SELECTOR_DELAY: 100;
THEMES: {
DARK: "dark";
LIGHT: "light";
SYSTEM: "system";
};
};
VALIDATION: {
MAX_DISTANCE: 1000000;
MAX_DURATION: 86400;
MAX_SPEED: 200;
MAX_STRING_LENGTH: 1000;
MIN_DISTANCE: 0;
MIN_DURATION: 0;
MIN_SPEED: 0;
MIN_STRING_LENGTH: 1;
};
};

Defined in: utils/config/constants.ts:363

Namespaced constant groups for consumers that prefer grouped access.

Type Declaration​

CHART​

readonly CHART: {
CHART_TYPES: {
ALTITUDE: "altitude";
ELEVATION: "elevation";
GPS_TRACK: "gps-track";
HEART_RATE: "heart-rate";
LAP_ZONE: "lap-zone";
POWER: "power";
SPEED: "speed";
};
DEFAULT_CHART: "elevation";
DEFAULT_COLORS: {
PRIMARY: "#667eea";
SECONDARY: "#764ba2";
};
DEFAULT_ZOOM_LEVEL: 1;
MAX_ZOOM_LEVEL: 10;
MIN_ZOOM_LEVEL: 0.1;
} = CHART_CONSTANTS;

CHART.CHART_TYPES​

readonly CHART_TYPES: {
ALTITUDE: "altitude";
ELEVATION: "elevation";
GPS_TRACK: "gps-track";
HEART_RATE: "heart-rate";
LAP_ZONE: "lap-zone";
POWER: "power";
SPEED: "speed";
};

CHART.CHART_TYPES.ALTITUDE​

readonly ALTITUDE: "altitude" = "altitude";

CHART.CHART_TYPES.ELEVATION​

readonly ELEVATION: "elevation" = "elevation";

CHART.CHART_TYPES.GPS_TRACK​

readonly GPS_TRACK: "gps-track" = "gps-track";

CHART.CHART_TYPES.HEART_RATE​

readonly HEART_RATE: "heart-rate" = "heart-rate";

CHART.CHART_TYPES.LAP_ZONE​

readonly LAP_ZONE: "lap-zone" = "lap-zone";

CHART.CHART_TYPES.POWER​

readonly POWER: "power" = "power";

CHART.CHART_TYPES.SPEED​

readonly SPEED: "speed" = "speed";

CHART.DEFAULT_CHART​

readonly DEFAULT_CHART: "elevation" = "elevation";

CHART.DEFAULT_COLORS​

readonly DEFAULT_COLORS: {
PRIMARY: "#667eea";
SECONDARY: "#764ba2";
};

CHART.DEFAULT_COLORS.PRIMARY​

readonly PRIMARY: "#667eea" = "#667eea";

CHART.DEFAULT_COLORS.SECONDARY​

readonly SECONDARY: "#764ba2" = "#764ba2";

CHART.DEFAULT_ZOOM_LEVEL​

readonly DEFAULT_ZOOM_LEVEL: 1 = 1;

CHART.MAX_ZOOM_LEVEL​

readonly MAX_ZOOM_LEVEL: 10 = 10;

CHART.MIN_ZOOM_LEVEL​

readonly MIN_ZOOM_LEVEL: 0.1 = 0.1;

CONVERSION​

readonly CONVERSION: {
CELSIUS_TO_FAHRENHEIT_MULTIPLIER: number;
CELSIUS_TO_FAHRENHEIT_OFFSET: 32;
DECIMAL_PLACES: 2;
DECIMAL_PLACES_PRECISE: 4;
INCHES_PER_FOOT: 12;
KG_TO_POUNDS: 2.20462;
METERS_PER_KILOMETER: 1000;
METERS_PER_MILE: 1609.344;
METERS_TO_FEET: 3.28084;
METERS_TO_INCHES: 39.3701;
MILLISECONDS_PER_SECOND: 1000;
MPS_TO_KMH: 3.6;
MPS_TO_MPH: 2.237;
SECONDS_PER_HOUR: 3600;
SECONDS_PER_MINUTE: 60;
} = CONVERSION_FACTORS;

CONVERSION.CELSIUS_TO_FAHRENHEIT_MULTIPLIER​

readonly CELSIUS_TO_FAHRENHEIT_MULTIPLIER: number;

CONVERSION.CELSIUS_TO_FAHRENHEIT_OFFSET​

readonly CELSIUS_TO_FAHRENHEIT_OFFSET: 32 = 32;

CONVERSION.DECIMAL_PLACES​

readonly DECIMAL_PLACES: 2 = 2;

CONVERSION.DECIMAL_PLACES_PRECISE​

readonly DECIMAL_PLACES_PRECISE: 4 = 4;

CONVERSION.INCHES_PER_FOOT​

readonly INCHES_PER_FOOT: 12 = 12;

CONVERSION.KG_TO_POUNDS​

readonly KG_TO_POUNDS: 2.20462 = 2.204_62;

CONVERSION.METERS_PER_KILOMETER​

readonly METERS_PER_KILOMETER: 1000 = 1000;

CONVERSION.METERS_PER_MILE​

readonly METERS_PER_MILE: 1609.344 = 1609.344;

CONVERSION.METERS_TO_FEET​

readonly METERS_TO_FEET: 3.28084 = 3.280_84;

CONVERSION.METERS_TO_INCHES​

readonly METERS_TO_INCHES: 39.3701 = 39.3701;

CONVERSION.MILLISECONDS_PER_SECOND​

readonly MILLISECONDS_PER_SECOND: 1000 = 1000;

CONVERSION.MPS_TO_KMH​

readonly MPS_TO_KMH: 3.6 = 3.6;

CONVERSION.MPS_TO_MPH​

readonly MPS_TO_MPH: 2.237 = 2.237;

CONVERSION.SECONDS_PER_HOUR​

readonly SECONDS_PER_HOUR: 3600 = 3600;

CONVERSION.SECONDS_PER_MINUTE​

readonly SECONDS_PER_MINUTE: 60 = 60;

DEBUG​

readonly DEBUG: {
CATEGORIES: {
CHARTS: "charts";
DATA: "data";
FILES: "files";
STATE: "state";
UI: "ui";
};
ENABLED: false;
LOG_LEVELS: {
DEBUG: "debug";
ERROR: "error";
INFO: "info";
WARN: "warn";
};
} = DEBUG_CONSTANTS;

DEBUG.CATEGORIES​

readonly CATEGORIES: {
CHARTS: "charts";
DATA: "data";
FILES: "files";
STATE: "state";
UI: "ui";
};

DEBUG.CATEGORIES.CHARTS​

readonly CHARTS: "charts" = "charts";

DEBUG.CATEGORIES.DATA​

readonly DATA: "data" = "data";

DEBUG.CATEGORIES.FILES​

readonly FILES: "files" = "files";

DEBUG.CATEGORIES.STATE​

readonly STATE: "state" = "state";

DEBUG.CATEGORIES.UI​

readonly UI: "ui" = "ui";

DEBUG.ENABLED​

readonly ENABLED: false = false;

DEBUG.LOG_LEVELS​

readonly LOG_LEVELS: {
DEBUG: "debug";
ERROR: "error";
INFO: "info";
WARN: "warn";
};

DEBUG.LOG_LEVELS.DEBUG​

readonly DEBUG: "debug" = "debug";

DEBUG.LOG_LEVELS.ERROR​

readonly ERROR: "error" = "error";

DEBUG.LOG_LEVELS.INFO​

readonly INFO: "info" = "info";

DEBUG.LOG_LEVELS.WARN​

readonly WARN: "warn" = "warn";

DISTANCE_UNITS​

DISTANCE_UNITS: {
FEET: "feet";
KILOMETERS: "kilometers";
METERS: "meters";
MILES: "miles";
}

Distance unit definitions with consistent naming.

DISTANCE_UNITS.FEET​

readonly FEET: "feet" = "feet";

DISTANCE_UNITS.KILOMETERS​

readonly KILOMETERS: "kilometers" = "kilometers";

DISTANCE_UNITS.METERS​

readonly METERS: "meters" = "meters";

DISTANCE_UNITS.MILES​

readonly MILES: "miles" = "miles";

ERROR​

readonly ERROR: {
CODES: {
FILE_NOT_FOUND: "FILE_NOT_FOUND";
INVALID_INPUT: "INVALID_INPUT";
NETWORK_ERROR: "NETWORK_ERROR";
PARSE_ERROR: "PARSE_ERROR";
PERMISSION_DENIED: "PERMISSION_DENIED";
STATE_ERROR: "STATE_ERROR";
UNKNOWN_ERROR: "UNKNOWN_ERROR";
VALIDATION_ERROR: "VALIDATION_ERROR";
};
MESSAGES: {
FILE_NOT_FOUND: "File not found";
INVALID_INPUT: "Invalid input provided";
NETWORK_ERROR: "Network connection error";
PARSE_ERROR: "Failed to parse file";
PERMISSION_DENIED: "Permission denied";
STATE_ERROR: "Application state error";
UNKNOWN_ERROR: "An unknown error occurred";
VALIDATION_ERROR: "Input validation failed";
};
} = ERROR_CONSTANTS;

ERROR.CODES​

readonly CODES: {
FILE_NOT_FOUND: "FILE_NOT_FOUND";
INVALID_INPUT: "INVALID_INPUT";
NETWORK_ERROR: "NETWORK_ERROR";
PARSE_ERROR: "PARSE_ERROR";
PERMISSION_DENIED: "PERMISSION_DENIED";
STATE_ERROR: "STATE_ERROR";
UNKNOWN_ERROR: "UNKNOWN_ERROR";
VALIDATION_ERROR: "VALIDATION_ERROR";
};

ERROR.CODES.FILE_NOT_FOUND​

readonly FILE_NOT_FOUND: "FILE_NOT_FOUND" = "FILE_NOT_FOUND";

ERROR.CODES.INVALID_INPUT​

readonly INVALID_INPUT: "INVALID_INPUT" = "INVALID_INPUT";

ERROR.CODES.NETWORK_ERROR​

readonly NETWORK_ERROR: "NETWORK_ERROR" = "NETWORK_ERROR";

ERROR.CODES.PARSE_ERROR​

readonly PARSE_ERROR: "PARSE_ERROR" = "PARSE_ERROR";

ERROR.CODES.PERMISSION_DENIED​

readonly PERMISSION_DENIED: "PERMISSION_DENIED" = "PERMISSION_DENIED";

ERROR.CODES.STATE_ERROR​

readonly STATE_ERROR: "STATE_ERROR" = "STATE_ERROR";

ERROR.CODES.UNKNOWN_ERROR​

readonly UNKNOWN_ERROR: "UNKNOWN_ERROR" = "UNKNOWN_ERROR";

ERROR.CODES.VALIDATION_ERROR​

readonly VALIDATION_ERROR: "VALIDATION_ERROR" = "VALIDATION_ERROR";

ERROR.MESSAGES​

readonly MESSAGES: {
FILE_NOT_FOUND: "File not found";
INVALID_INPUT: "Invalid input provided";
NETWORK_ERROR: "Network connection error";
PARSE_ERROR: "Failed to parse file";
PERMISSION_DENIED: "Permission denied";
STATE_ERROR: "Application state error";
UNKNOWN_ERROR: "An unknown error occurred";
VALIDATION_ERROR: "Input validation failed";
};

ERROR.MESSAGES.FILE_NOT_FOUND​

readonly FILE_NOT_FOUND: "File not found" = "File not found";

ERROR.MESSAGES.INVALID_INPUT​

readonly INVALID_INPUT: "Invalid input provided" = "Invalid input provided";

ERROR.MESSAGES.NETWORK_ERROR​

readonly NETWORK_ERROR: "Network connection error" = "Network connection error";

ERROR.MESSAGES.PARSE_ERROR​

readonly PARSE_ERROR: "Failed to parse file" = "Failed to parse file";

ERROR.MESSAGES.PERMISSION_DENIED​

readonly PERMISSION_DENIED: "Permission denied" = "Permission denied";

ERROR.MESSAGES.STATE_ERROR​

readonly STATE_ERROR: "Application state error" = "Application state error";

ERROR.MESSAGES.UNKNOWN_ERROR​

readonly UNKNOWN_ERROR: "An unknown error occurred" = "An unknown error occurred";

ERROR.MESSAGES.VALIDATION_ERROR​

readonly VALIDATION_ERROR: "Input validation failed" = "Input validation failed";

FILE​

readonly FILE: {
DEFAULT_EXPORT_FORMAT: "gpx";
EXPORT_FORMATS: {
CSV: "csv";
GPX: "gpx";
JSON: "json";
};
IFRAME_PATHS: {
ALT_FIT: "ffv/index.html";
};
MAX_FILE_SIZE: number;
SUPPORTED_EXTENSIONS: readonly [".fit"];
SUPPORTED_MIME_TYPES: readonly ["application/octet-stream"];
} = FILE_CONSTANTS;

FILE.DEFAULT_EXPORT_FORMAT​

readonly DEFAULT_EXPORT_FORMAT: "gpx" = "gpx";

FILE.EXPORT_FORMATS​

readonly EXPORT_FORMATS: {
CSV: "csv";
GPX: "gpx";
JSON: "json";
};

FILE.EXPORT_FORMATS.CSV​

readonly CSV: "csv" = "csv";

FILE.EXPORT_FORMATS.GPX​

readonly GPX: "gpx" = "gpx";

FILE.EXPORT_FORMATS.JSON​

readonly JSON: "json" = "json";

FILE.IFRAME_PATHS​

readonly IFRAME_PATHS: {
ALT_FIT: "ffv/index.html";
};

FILE.IFRAME_PATHS.ALT_FIT​

readonly ALT_FIT: "ffv/index.html" = "ffv/index.html";

FILE.MAX_FILE_SIZE​

readonly MAX_FILE_SIZE: number;

FILE.SUPPORTED_EXTENSIONS​

readonly SUPPORTED_EXTENSIONS: readonly [".fit"];

FILE.SUPPORTED_MIME_TYPES​

readonly SUPPORTED_MIME_TYPES: readonly ["application/octet-stream"];

MAP​

readonly MAP: {
DEFAULT_CENTER: readonly [0, 0];
DEFAULT_PROVIDER: "openstreetmap";
DEFAULT_ZOOM: 13;
PROVIDERS: {
OPENSTREETMAP: "openstreetmap";
SATELLITE: "satellite";
};
} = MAP_CONSTANTS;

MAP.DEFAULT_CENTER​

readonly DEFAULT_CENTER: readonly [0, 0];

MAP.DEFAULT_PROVIDER​

readonly DEFAULT_PROVIDER: "openstreetmap" = "openstreetmap";

MAP.DEFAULT_ZOOM​

readonly DEFAULT_ZOOM: 13 = 13;

MAP.PROVIDERS​

readonly PROVIDERS: {
OPENSTREETMAP: "openstreetmap";
SATELLITE: "satellite";
};

MAP.PROVIDERS.OPENSTREETMAP​

readonly OPENSTREETMAP: "openstreetmap" = "openstreetmap";

MAP.PROVIDERS.SATELLITE​

readonly SATELLITE: "satellite" = "satellite";

PERFORMANCE​

readonly PERFORMANCE: {
CATEGORIES: {
CHARTS: "charts";
DATA_PROCESSING: "data-processing";
FILE_OPERATIONS: "file-operations";
STATE_MANAGEMENT: "state-management";
UI_RENDERING: "ui-rendering";
};
ENABLE_MONITORING: false;
MAX_HISTORY_SIZE: 100;
MEMORY_CHECK_INTERVAL: 30000;
SLOW_OPERATION_THRESHOLD: 10;
} = PERFORMANCE_CONSTANTS;

PERFORMANCE.CATEGORIES​

readonly CATEGORIES: {
CHARTS: "charts";
DATA_PROCESSING: "data-processing";
FILE_OPERATIONS: "file-operations";
STATE_MANAGEMENT: "state-management";
UI_RENDERING: "ui-rendering";
};

PERFORMANCE.CATEGORIES.CHARTS​

readonly CHARTS: "charts" = "charts";

PERFORMANCE.CATEGORIES.DATA_PROCESSING​

readonly DATA_PROCESSING: "data-processing" = "data-processing";

PERFORMANCE.CATEGORIES.FILE_OPERATIONS​

readonly FILE_OPERATIONS: "file-operations" = "file-operations";

PERFORMANCE.CATEGORIES.STATE_MANAGEMENT​

readonly STATE_MANAGEMENT: "state-management" = "state-management";

PERFORMANCE.CATEGORIES.UI_RENDERING​

readonly UI_RENDERING: "ui-rendering" = "ui-rendering";

PERFORMANCE.ENABLE_MONITORING​

readonly ENABLE_MONITORING: false = false;

PERFORMANCE.MAX_HISTORY_SIZE​

readonly MAX_HISTORY_SIZE: 100 = 100;

PERFORMANCE.MEMORY_CHECK_INTERVAL​

readonly MEMORY_CHECK_INTERVAL: 30000 = 30_000;

PERFORMANCE.SLOW_OPERATION_THRESHOLD​

readonly SLOW_OPERATION_THRESHOLD: 10 = 10;

TEMPERATURE_UNITS​

TEMPERATURE_UNITS: {
CELSIUS: "celsius";
FAHRENHEIT: "fahrenheit";
KELVIN: "kelvin";
}

Temperature unit definitions.

TEMPERATURE_UNITS.CELSIUS​

readonly CELSIUS: "celsius" = "celsius";

TEMPERATURE_UNITS.FAHRENHEIT​

readonly FAHRENHEIT: "fahrenheit" = "fahrenheit";

TEMPERATURE_UNITS.KELVIN​

readonly KELVIN: "kelvin" = "kelvin";

TIME_UNITS​

TIME_UNITS: {
HOURS: "hours";
MILLISECONDS: "milliseconds";
MINUTES: "minutes";
SECONDS: "seconds";
}

Time unit definitions.

TIME_UNITS.HOURS​

readonly HOURS: "hours" = "hours";

TIME_UNITS.MILLISECONDS​

readonly MILLISECONDS: "milliseconds" = "milliseconds";

TIME_UNITS.MINUTES​

readonly MINUTES: "minutes" = "minutes";

TIME_UNITS.SECONDS​

readonly SECONDS: "seconds" = "seconds";

UI​

readonly UI: {
ANIMATION_DURATION: 300;
CSS_CLASSES: {
ACTIVE: "active";
HIDDEN: "hidden";
LOADING: "loading";
SHOW: "show";
THEMED_BTN: "themed-btn";
};
DEBOUNCE_DELAY: 250;
DEFAULT_THEME: "dark";
DOM_IDS: {
ACTIVE_FILE_NAME: "active_file_name";
ACTIVE_FILE_NAME_CONTAINER: "active_file_name_container";
ALT_FIT_IFRAME: "altfit_iframe";
CONTENT_CHART: "content_chart";
CONTENT_DATA: "content_data";
CONTENT_MAP: "content_map";
CONTENT_SUMMARY: "content_summary";
DROP_OVERLAY: "drop_overlay";
NOTIFICATION: "notification";
TAB_CHART: "tab_chart";
TAB_SUMMARY: "tab_summary";
UNLOAD_FILE_BTN: "unload_file_btn";
ZWIFT_IFRAME: "zwift_iframe";
};
HEADER_HEIGHT: 60;
NOTIFICATION_TYPES: {
ERROR: {
ariaLabel: "Error";
duration: 6000;
icon: "❌";
type: "error";
};
INFO: {
ariaLabel: "Information";
duration: 4000;
icon: "ℹ️";
type: "info";
};
SUCCESS: {
ariaLabel: "Success";
duration: 3000;
icon: "βœ…";
type: "success";
};
WARNING: {
ariaLabel: "Warning";
duration: 5000;
icon: "⚠️";
type: "warning";
};
};
SIDEBAR_WIDTH: 250;
SUMMARY_COLUMN_SELECTOR_DELAY: 100;
THEMES: {
DARK: "dark";
LIGHT: "light";
SYSTEM: "system";
};
} = UI_CONSTANTS;

UI.ANIMATION_DURATION​

readonly ANIMATION_DURATION: 300 = 300;

UI.CSS_CLASSES​

readonly CSS_CLASSES: {
ACTIVE: "active";
HIDDEN: "hidden";
LOADING: "loading";
SHOW: "show";
THEMED_BTN: "themed-btn";
};

UI.CSS_CLASSES.ACTIVE​

readonly ACTIVE: "active" = "active";

UI.CSS_CLASSES.HIDDEN​

readonly HIDDEN: "hidden" = "hidden";

UI.CSS_CLASSES.LOADING​

readonly LOADING: "loading" = "loading";

UI.CSS_CLASSES.SHOW​

readonly SHOW: "show" = "show";

UI.CSS_CLASSES.THEMED_BTN​

readonly THEMED_BTN: "themed-btn" = "themed-btn";

UI.DEBOUNCE_DELAY​

readonly DEBOUNCE_DELAY: 250 = 250;

UI.DEFAULT_THEME​

readonly DEFAULT_THEME: "dark" = "dark";

UI.DOM_IDS​

readonly DOM_IDS: {
ACTIVE_FILE_NAME: "active_file_name";
ACTIVE_FILE_NAME_CONTAINER: "active_file_name_container";
ALT_FIT_IFRAME: "altfit_iframe";
CONTENT_CHART: "content_chart";
CONTENT_DATA: "content_data";
CONTENT_MAP: "content_map";
CONTENT_SUMMARY: "content_summary";
DROP_OVERLAY: "drop_overlay";
NOTIFICATION: "notification";
TAB_CHART: "tab_chart";
TAB_SUMMARY: "tab_summary";
UNLOAD_FILE_BTN: "unload_file_btn";
ZWIFT_IFRAME: "zwift_iframe";
};

UI.DOM_IDS.ACTIVE_FILE_NAME​

readonly ACTIVE_FILE_NAME: "active_file_name" = "active_file_name";

UI.DOM_IDS.ACTIVE_FILE_NAME_CONTAINER​

readonly ACTIVE_FILE_NAME_CONTAINER: "active_file_name_container" = "active_file_name_container";

UI.DOM_IDS.ALT_FIT_IFRAME​

readonly ALT_FIT_IFRAME: "altfit_iframe" = "altfit_iframe";

UI.DOM_IDS.CONTENT_CHART​

readonly CONTENT_CHART: "content_chart" = "content_chart";

UI.DOM_IDS.CONTENT_DATA​

readonly CONTENT_DATA: "content_data" = "content_data";

UI.DOM_IDS.CONTENT_MAP​

readonly CONTENT_MAP: "content_map" = "content_map";

UI.DOM_IDS.CONTENT_SUMMARY​

readonly CONTENT_SUMMARY: "content_summary" = "content_summary";

UI.DOM_IDS.DROP_OVERLAY​

readonly DROP_OVERLAY: "drop_overlay" = "drop_overlay";

UI.DOM_IDS.NOTIFICATION​

readonly NOTIFICATION: "notification" = "notification";

UI.DOM_IDS.TAB_CHART​

readonly TAB_CHART: "tab_chart" = "tab_chart";

UI.DOM_IDS.TAB_SUMMARY​

readonly TAB_SUMMARY: "tab_summary" = "tab_summary";

UI.DOM_IDS.UNLOAD_FILE_BTN​

readonly UNLOAD_FILE_BTN: "unload_file_btn" = "unload_file_btn";

UI.DOM_IDS.ZWIFT_IFRAME​

readonly ZWIFT_IFRAME: "zwift_iframe" = "zwift_iframe";

UI.HEADER_HEIGHT​

readonly HEADER_HEIGHT: 60 = 60;

UI.NOTIFICATION_TYPES​

readonly NOTIFICATION_TYPES: {
ERROR: {
ariaLabel: "Error";
duration: 6000;
icon: "❌";
type: "error";
};
INFO: {
ariaLabel: "Information";
duration: 4000;
icon: "ℹ️";
type: "info";
};
SUCCESS: {
ariaLabel: "Success";
duration: 3000;
icon: "βœ…";
type: "success";
};
WARNING: {
ariaLabel: "Warning";
duration: 5000;
icon: "⚠️";
type: "warning";
};
};

UI.NOTIFICATION_TYPES.ERROR​

readonly ERROR: {
ariaLabel: "Error";
duration: 6000;
icon: "❌";
type: "error";
};

UI.NOTIFICATION_TYPES.ERROR.ariaLabel​

readonly ariaLabel: "Error" = "Error";

UI.NOTIFICATION_TYPES.ERROR.duration​

readonly duration: 6000 = 6000;

UI.NOTIFICATION_TYPES.ERROR.icon​

readonly icon: "❌" = "❌";

UI.NOTIFICATION_TYPES.ERROR.type​

readonly type: "error" = "error";

UI.NOTIFICATION_TYPES.INFO​

readonly INFO: {
ariaLabel: "Information";
duration: 4000;
icon: "ℹ️";
type: "info";
};

UI.NOTIFICATION_TYPES.INFO.ariaLabel​

readonly ariaLabel: "Information" = "Information";

UI.NOTIFICATION_TYPES.INFO.duration​

readonly duration: 4000 = 4000;

UI.NOTIFICATION_TYPES.INFO.icon​

readonly icon: "ℹ️" = "ℹ️";

UI.NOTIFICATION_TYPES.INFO.type​

readonly type: "info" = "info";

UI.NOTIFICATION_TYPES.SUCCESS​

readonly SUCCESS: {
ariaLabel: "Success";
duration: 3000;
icon: "βœ…";
type: "success";
};

UI.NOTIFICATION_TYPES.SUCCESS.ariaLabel​

readonly ariaLabel: "Success" = "Success";

UI.NOTIFICATION_TYPES.SUCCESS.duration​

readonly duration: 3000 = 3000;

UI.NOTIFICATION_TYPES.SUCCESS.icon​

readonly icon: "βœ…" = "βœ…";

UI.NOTIFICATION_TYPES.SUCCESS.type​

readonly type: "success" = "success";

UI.NOTIFICATION_TYPES.WARNING​

readonly WARNING: {
ariaLabel: "Warning";
duration: 5000;
icon: "⚠️";
type: "warning";
};

UI.NOTIFICATION_TYPES.WARNING.ariaLabel​

readonly ariaLabel: "Warning" = "Warning";

UI.NOTIFICATION_TYPES.WARNING.duration​

readonly duration: 5000 = 5000;

UI.NOTIFICATION_TYPES.WARNING.icon​

readonly icon: "⚠️" = "⚠️";

UI.NOTIFICATION_TYPES.WARNING.type​

readonly type: "warning" = "warning";

UI.SIDEBAR_WIDTH​

readonly SIDEBAR_WIDTH: 250 = 250;

UI.SUMMARY_COLUMN_SELECTOR_DELAY​

readonly SUMMARY_COLUMN_SELECTOR_DELAY: 100 = 100;

UI.THEMES​

readonly THEMES: {
DARK: "dark";
LIGHT: "light";
SYSTEM: "system";
};

UI.THEMES.DARK​

readonly DARK: "dark" = "dark";

UI.THEMES.LIGHT​

readonly LIGHT: "light" = "light";

UI.THEMES.SYSTEM​

readonly SYSTEM: "system" = "system";

VALIDATION​

readonly VALIDATION: {
MAX_DISTANCE: 1000000;
MAX_DURATION: 86400;
MAX_SPEED: 200;
MAX_STRING_LENGTH: 1000;
MIN_DISTANCE: 0;
MIN_DURATION: 0;
MIN_SPEED: 0;
MIN_STRING_LENGTH: 1;
} = VALIDATION_CONSTANTS;

VALIDATION.MAX_DISTANCE​

readonly MAX_DISTANCE: 1000000 = 1_000_000;

VALIDATION.MAX_DURATION​

readonly MAX_DURATION: 86400 = 86_400;

VALIDATION.MAX_SPEED​

readonly MAX_SPEED: 200 = 200;

VALIDATION.MAX_STRING_LENGTH​

readonly MAX_STRING_LENGTH: 1000 = 1000;

VALIDATION.MIN_DISTANCE​

readonly MIN_DISTANCE: 0 = 0;

VALIDATION.MIN_DURATION​

readonly MIN_DURATION: 0 = 0;

VALIDATION.MIN_SPEED​

readonly MIN_SPEED: 0 = 0;

VALIDATION.MIN_STRING_LENGTH​

readonly MIN_STRING_LENGTH: 1 = 1;