Skip to main content

CONFIG

FitFileViewer - API Documentation v30.0.1


FitFileViewer - API Documentation / utils/config/constants / CONFIG

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