Ctrl K
ComunidadGuías…

src/globals.ts

Rama develop · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import {
  mdiClose,
  mdiTune,
  mdiMinus,
  mdiPlus,
  mdiCheck,
  mdiFire,
  mdiCog,
  mdiPrinter3d,
  mdiPrinter3dNozzle,
  mdiPrinter3dNozzleOutline,
  mdiFileCodeOutline,
  mdiFileRefreshOutline,
  mdiConsole,
  mdiChevronUp,
  mdiChevronDown,
  mdiTimerSand,
  mdiClockOutline,
  mdiFormatLineSpacing,
  mdiPause,
  mdiWindowClose,
  mdiPrinter,
  mdiCamera,
  mdiFan,
  mdiArrowUp,
  mdiArrowDown,
  mdiArrowLeft,
  mdiArrowRight,
  mdiArrowCollapseDown,
  mdiViewGridOutline,
  mdiArrowExpandHorizontal,
  mdiArrowExpandVertical,
  mdiRefresh,
  mdiCheckCircleOutline,
  mdiCheckboxBlankCircleOutline,
  mdiPrinter3dNozzleAlertOutline,
  mdiAlertCircle,
  mdiFolderPlus,
  mdiFile,
  mdiFileLock,
  mdiFolder,
  mdiFolderLock,
  mdiPencil,
  mdiMagnify,
  mdiMagnifyPlus,
  mdiMagnifyMinus,
  mdiDownload,
  mdiFormTextbox,
  mdiDelete,
  mdiCogs,
  mdiContentSaveOutline,
  mdiContentSaveEditOutline,
  mdiAlert,
  mdiDotsVertical,
  mdiSend,
  mdiArrowHorizontalLock,
  mdiChartTimelineVariant,
  mdiFireAlert,
  mdiSnowflake,
  mdiSnowflakeAlert,
  mdiUpload,
  mdiFolderUpload,
  mdiProgressUpload,
  mdiProgressQuestion,
  mdiRadioboxMarked,
  mdiCheckboxBlankOutline,
  mdiCheckboxMarkedOutline,
  mdiFilePlus,
  mdiBellOutline,
  mdiPower,
  mdiPowerCycle,
  mdiRestart,
  mdiRestartAlert,
  mdiUpdate,
  mdiChevronRight,
  mdiChevronLeft,
  mdiDrag,
  mdiCheckboxMultipleBlank,
  mdiOpenInApp,
  mdiDesktopTower,
  mdiDotsHorizontal,
  mdiToggleSwitch,
  mdiToggleSwitchOffOutline,
  mdiMotionOutline,
  mdiThermometerLow,
  mdiHelpCircle,
  mdiHistory,
  mdiFilterOutline,
  mdiSourceCommit,
  mdiArrowExpandUp,
  mdiCloudCheck,
  mdiCloudAlert,
  mdiCircle,
  mdiFolderMove,
  mdiConsoleLine,
  mdiDotsGrid,
  mdiHammerWrench,
  mdiAccount,
  mdiFileTableOutline,
  mdiLock,
  mdiLockOpenVariant,
  mdiPencilLock,
  mdiLockReset,
  mdiCubeScan,
  mdiHandBackRight,
  mdiThermometerAlert,
  mdiShieldAccount,
  mdiContentCopy,
  mdiApps,
  mdiAccountPlus,
  mdiViewDashboardOutline,
  mdiHome,
  mdiRestore,
  mdiMenu,
  mdiFileCancel,
  mdiFileExportOutline,
  mdiCancel,
  mdiCircleSlice3,
  mdiCodeJson,
  mdiHarddisk,
  mdiMicroSd,
  mdiLayersTripleOutline,
  mdiMessageTextOutline,
  mdiFormatListBulleted,
  mdiSwapVertical,
  mdiFullscreen,
  mdiStop,
  mdiPlay,
  mdiFileVideoOutline,
  mdiBellSleep,
  mdiChip,
  mdiViewHeadline,
  mdiAxisArrow,
  mdiVectorLine,
  mdiOpenInNew,
  mdiImageSizeSelectLarge,
  mdiListStatus,
  mdiLayersMinus,
  mdiLayers,
  mdiLayersPlus,
  mdiFolderOpen,
  mdiArchive,
  mdiArchivePlus,
  mdiTrayFull,
  mdiTrayPlus,
  mdiFolderArrowUp,
  mdiTableColumn,
  mdiShape,
  mdiSync,
  mdiTimerOutline,
  mdiContentDuplicate,
  mdiArchiveLock,
  mdiFileImage,
  mdiGauge,
  mdiMonitorScreenshot,
  mdiRotateLeft,
  mdiRotateRight,
  mdiToothbrush,
  mdiParking,
  mdiUsb,
  mdiMagnet,
  mdiFileDocument,
  mdiSineWave,
  mdiContentSaveCogOutline,
  mdiCogCounterclockwise,
  mdiAccountCogOutline,
  mdiStateMachine,
  mdiDatabase,
  mdiDatabaseEdit,
  mdiCogRefresh,
  mdiWrenchCog,
  mdiNoteText,
  mdiCheckAll,
  mdiDownloadOutline,
  mdiEject,
  mdiAutoFix,
  mdiThermometerPlus,
  mdiSpeedometer,
  mdiAdjust,
  mdiSyncOff,
  mdiUploadOutline,
  mdiEngineOutline,
  mdiEngineOffOutline,
  mdiArrowCollapseHorizontal,
  mdiHomeOutline,
  mdiArrowUpThin,
  mdiArrowDownThin,
  mdiArrowLeftRight,
  mdiWater,
  mdiThermometer,
  mdiHeatingCoil,
  mdiRotateOrbit,
  mdiContentSaveSettingsOutline,
  mdiMulticast,
  mdiInformationOutline,
  mdiSwapHorizontal,
  mdiSwapHorizontalVariant,
  mdiRadioboxBlank,
  mdiLifebuoy,
  mdiLightbulbOnOutline,
  mdiLightbulbOutline,
  mdiWrench,
  mdiVariable,
  mdiArrowDownBold,
  mdiArrowUpBold,
  mdiDockTop,
  mdiDockBottom,
  mdiTagMultipleOutline,
} from '@mdi/js'

import {
  afcIconBoxTurtle,
  afcIconHtlf,
  afcIconInfinity,
  afcIconLogo,
  afcIconNightOwl,
  afcIconQuattroBox
} from '@/plugins/afcIcons'

const mdiFilament = 'M12 2a10 10 0 0 0-2.148.26 10 10 0 0 0-1.315.386A10 10 0 0 0 7.672 3H7.67a10 10 0 0 0-1.295.752 10 10 0 0 0-.754.564 10 10 0 0 0-.98.938 10 10 0 0 0-.598.732 10 10 0 0 0-1.57 3.016 10 10 0 0 0-.315 1.314 10 10 0 0 0-.105.932v.008A10 10 0 0 0 2 12q0 .378.031.756l.002.012a10 10 0 0 0 .426 2.222 10 10 0 0 0 .38 1.014l.007.014.008.013q.218.497.488.967l.002.002a10 10 0 0 0 2.265 2.69 10 10 0 0 0 2.06 1.322h.003a10 10 0 0 0 2.15.746h.002q.514.114 1.035.174l.079.01q.529.057 1.062.058a10 10 0 0 0 2.148-.26 10 10 0 0 0 1.315-.386 10 10 0 0 0 .865-.354h.002a10 10 0 0 0 1.295-.752 10 10 0 0 0 .754-.564 10 10 0 0 0 .98-.938 10 10 0 0 0 .598-.732 10 10 0 0 0 1.57-3.016 10 10 0 0 0 .315-1.314 10 10 0 0 0 .105-.932v-.008q.04-.37.053-.744 0-.378-.031-.756l-.002-.012a10 10 0 0 0-.426-2.222 10 10 0 0 0-.38-1.014l-.007-.014-.008-.013a10 10 0 0 0-.488-.967L20.656 7a10 10 0 0 0-2.265-2.69 10 10 0 0 0-2.06-1.322h-.003a10 10 0 0 0-2.15-.746h-.002a10 10 0 0 0-1.114-.183A10 10 0 0 0 12 2m-1.299 2.25.256.148.11.063.066.039.433.25v1l-.433.25-.258.148v.002l-.174.1-.433-.25-.432-.25v-1l.268-.154zm2.598 0 .865.5v1l-.865.5-.865-.5v-1zm-4.46.426.13.074v1L8.537 6l-.433.25-.866-.5v-.172a8 8 0 0 1 1.602-.902m6.321 0a8 8 0 0 1 1.602.902v.172l-.658.38-.208.12-.865-.5v-1zM6.805 6.5l.865.5v1l-.865.5-.104-.06L5.94 8V7zm2.597 0 .866.5v1l-.127.074-.307.176-.432.25-.431-.25L8.537 8V7l.432-.25zM12 6.5l.865.5v1l-.12.07h-.003A4 4 0 0 0 12 8a4 4 0 0 0-.732.076L11.135 8V7l.761-.44zm2.598 0 .431.25.434.25v1l-.865.5-.432-.25-.434-.25V7l.434-.25zm2.597 0 .104.06.762.44v1l-.762.44-.104.06-.865-.5V7zM5.505 8.75l.866.5v1l-.865.5-.865-.5v-1zm2.599 0 .865.5v.14a4 4 0 0 0-.733 1.284l-.132.076-.56-.322-.306-.178v-1zm7.792 0 .866.5v1l-.434.25-.432.25-.12-.07a4 4 0 0 0-.657-1.174q-.043-.057-.088-.113V9.25l.432-.25zm2.598 0 .865.5v1l-.865.5-.207-.12-.658-.38v-1zM12 10a2 2 0 1 1 0 4 2 2 0 0 1 0-4m-7.793 1 .865.5v1l-.865.5-.135-.078A8 8 0 0 1 4 12a8 8 0 0 1 .072-.922zm2.598 0 .431.25.434.25v1l-.865.5-.104-.06-.762-.44v-1l.762-.44zm10.39 0 .104.06.762.44v1l-.762.44-.104.06-.431-.25-.434-.25v-1zm2.598 0 .135.078q.063.46.072.922a8 8 0 0 1-.072.922l-.135.078-.865-.5v-1zM5.506 13.25l.207.12.658.38v1l-.865.5-.865-.5v-1zm2.598 0 .12.07c.15.427.375.822.657 1.174q.043.057.088.113v.143l-.432.25-.433.25-.866-.5v-1l.434-.25zm7.792 0 .56.322.306.178v1l-.866.5-.865-.5v-.14a4 4 0 0 0 .621-1.008 4 4 0 0 0 .112-.276zm2.598 0 .865.5v1l-.865.5-.865-.5v-1zM6.804 15.5l.866.5v1l-.865.5-.104-.06L5.94 17v-1l.762-.44zm2.598 0 .432.25.434.25v1l-.434.25-.432.25-.431-.25-.434-.25v-1l.432-.25h.002zm5.196 0 .431.25.434.25v1l-.432.25-.433.25-.866-.5v-1l.127-.074.307-.176zm2.597 0 .104.06.762.44v1l-.866.5-.865-.5v-1zm-4.463.424.133.076v1l-.761.44-.104.06-.865-.5v-1l.12-.07h.003A4 4 0 0 0 12 16a4 4 0 0 0 .732-.076M8.104 17.75l.865.5v1l-.13.074a8 8 0 0 1-1.6-.902v-.172l.657-.38zm2.597 0 .865.5v1l-.865.5-.865-.5v-1zm2.598 0 .433.25.432.25v1l-.268.154-.597.346-.256-.148-.176-.102-.433-.25v-1l.433-.25.258-.148v-.002zm2.597 0 .866.5v.172a8 8 0 0 1-1.602.902l-.129-.074v-1l.432-.25z'
const mdiFilamentDown = 'M12 2a10 10 0 0 0-1.129.08 10 10 0 0 0-1.02.18 10 10 0 0 0-1.314.386A10 10 0 0 0 7.672 3H7.67a10 10 0 0 0-1.295.752 10 10 0 0 0-.754.564 10 10 0 0 0-.98.938 10 10 0 0 0-.598.732l-.125.168a10 10 0 0 0-.541.826l-.035.065a10 10 0 0 0-.87 1.957 10 10 0 0 0-.314 1.314 10 10 0 0 0-.105.932v.008A10 10 0 0 0 2 12a10 10 0 0 0 .053.742v.006a10 10 0 0 0 .105.936 10 10 0 0 0 .315 1.314 10 10 0 0 0 .869 1.957l.035.065a10 10 0 0 0 .541.826l.125.168a10 10 0 0 0 .598.732 10 10 0 0 0 .98.938 10 10 0 0 0 .754.564A10 10 0 0 0 7.67 21h.002a10 10 0 0 0 .865.354 10 10 0 0 0 1.315.386 10 10 0 0 0 1.02.18A10 10 0 0 0 12 22a10 10 0 0 0 1.129-.08 10 10 0 0 0 .59-.104 6 6 0 0 1-.676-2.214l-.61-.352v-1l.434-.25.258-.148a6 6 0 0 1 .607-1.692V16l.127-.074a6 6 0 0 1 1.342-1.559 4 4 0 0 0 .563-1.04l.132-.077.56.322A6 6 0 0 1 19 13a6 6 0 0 1 2.834.713l.008-.03a10 10 0 0 0 .105-.931v-.008A10 10 0 0 0 22 12a10 10 0 0 0-.031-.756l-.002-.012a10 10 0 0 0-.113-.921 10 10 0 0 0-.313-1.301 10 10 0 0 0-.38-1.014l-.007-.014-.008-.013a10 10 0 0 0-.488-.967L20.656 7a10 10 0 0 0-.6-.92 10 10 0 0 0-.697-.848 10 10 0 0 0-.968-.921 10 10 0 0 0-.752-.567 10 10 0 0 0-1.309-.756h-.002a10 10 0 0 0-.865-.367 10 10 0 0 0-1.285-.379h-.002a10 10 0 0 0-1.035-.174l-.079-.01A10 10 0 0 0 12 2m-1.299 2.25.432.25.433.25v1l-.865.5-.433-.25-.432-.25v-1l.268-.154zm2.598 0 .865.5v1l-.865.5-.865-.5v-1zm1.883.414a8 8 0 0 1 1.58.91v.176l-.658.38-.208.12-.865-.5v-1zm-6.342.012.129.074v1L8.537 6l-.433.25-.866-.5v-.172a8 8 0 0 1 1.602-.902M6.805 6.5l.865.5v1l-.865.5-.104-.06L5.94 8V7zm2.597 0 .866.5v1l-.434.25-.432.25-.431-.25L8.537 8V7l.432-.25zM12 6.5l.865.5v1l-.12.07A4 4 0 0 0 12 8a4 4 0 0 0-.732.076L11.135 8V7zm2.598 0 .865.5v1l-.865.5-.866-.5V7zm2.597 0 .866.5v1l-.866.5-.865-.5V7zM5.505 8.75l.866.5v1l-.865.5-.865-.5v-1zm2.599 0 .865.5v.14a4 4 0 0 0-.733 1.284l-.132.076-.866-.5v-1zm7.792 0 .866.5v1l-.866.5-.12-.07a4 4 0 0 0-.745-1.287V9.25zm2.598 0 .865.5v1l-.865.5-.207-.12-.658-.38v-1zM12 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m-7.793 1 .865.5v1l-.865.5-.135-.078A8 8 0 0 1 4 12a8 8 0 0 1 .072-.922zm2.598 0 .865.5v1l-.865.5-.104-.06-.762-.44v-1l.762-.44zm10.39 0 .866.5v1l-.866.5-.431-.25-.434-.25v-1zm2.598 0 .154.09A8 8 0 0 1 20 12a8 8 0 0 1-.072.922l-.135.078-.865-.5v-1zM5.506 13.25l.865.5v1l-.865.5-.865-.5v-1zm2.598 0 .132.076a4 4 0 0 0 .733 1.283v.141l-.432.25-.433.25-.866-.5v-1l.434-.25zm-1.3 2.25.866.5v1l-.865.5-.104-.06L5.94 17v-1l.762-.44zm2.598 0 .432.25.434.25v1l-.434.25-.432.25-.431-.25-.434-.25v-1l.432-.25h.002zm1.866.424A4 4 0 0 0 12 16a4 4 0 0 0 .732-.076l.133.076v1l-.761.44-.104.06-.865-.5v-1zM18 16v4h-2l3 3 3-3h-2v-4zm-9.896 1.75.865.5v1l-.13.074a8 8 0 0 1-1.6-.902v-.172zm2.597 0 .865.5v1l-.865.5-.865-.5v-1z'
const mdiFilamentUp = 'M12 2a10 10 0 0 0-1.129.08 10 10 0 0 0-1.02.18 10 10 0 0 0-1.314.386A10 10 0 0 0 7.672 3H7.67a10 10 0 0 0-1.295.752 10 10 0 0 0-.754.564 10 10 0 0 0-.98.938 10 10 0 0 0-.598.732l-.125.168a10 10 0 0 0-.541.826l-.035.065a10 10 0 0 0-.87 1.957 10 10 0 0 0-.314 1.314 10 10 0 0 0-.105.932v.008A10 10 0 0 0 2 12a10 10 0 0 0 .053.742v.006a10 10 0 0 0 .105.936 10 10 0 0 0 .315 1.314 10 10 0 0 0 .869 1.957l.035.065a10 10 0 0 0 .541.826l.125.168a10 10 0 0 0 .598.732 10 10 0 0 0 .98.938 10 10 0 0 0 .754.564A10 10 0 0 0 7.67 21h.002a10 10 0 0 0 .865.354 10 10 0 0 0 1.315.386 10 10 0 0 0 1.02.18A10 10 0 0 0 12 22a10 10 0 0 0 1.129-.08 10 10 0 0 0 .59-.104 6 6 0 0 1-.676-2.214l-.61-.352v-1l.434-.25.258-.148a6 6 0 0 1 .607-1.692V16l.127-.074a6 6 0 0 1 1.342-1.559 4 4 0 0 0 .563-1.04l.132-.077.56.322A6 6 0 0 1 19 13a6 6 0 0 1 2.834.713l.008-.03a10 10 0 0 0 .105-.931v-.008A10 10 0 0 0 22 12a10 10 0 0 0-.031-.756l-.002-.012a10 10 0 0 0-.113-.921 10 10 0 0 0-.313-1.301 10 10 0 0 0-.38-1.014l-.007-.014-.008-.013a10 10 0 0 0-.488-.967L20.656 7a10 10 0 0 0-.6-.92 10 10 0 0 0-.697-.848 10 10 0 0 0-.968-.921 10 10 0 0 0-.752-.567 10 10 0 0 0-1.309-.756h-.002a10 10 0 0 0-.865-.367 10 10 0 0 0-1.285-.379h-.002a10 10 0 0 0-1.035-.174l-.079-.01A10 10 0 0 0 12 2m-1.299 2.25.432.25.433.25v1l-.865.5-.433-.25-.432-.25v-1l.268-.154zm2.598 0 .865.5v1l-.865.5-.865-.5v-1zm1.883.414a8 8 0 0 1 1.58.91v.176l-.658.38-.208.12-.865-.5v-1zm-6.342.012.129.074v1L8.537 6l-.433.25-.866-.5v-.172a8 8 0 0 1 1.602-.902M6.805 6.5l.865.5v1l-.865.5-.104-.06L5.94 8V7zm2.597 0 .866.5v1l-.434.25-.432.25-.431-.25L8.537 8V7l.432-.25zM12 6.5l.865.5v1l-.12.07A4 4 0 0 0 12 8a4 4 0 0 0-.732.076L11.135 8V7zm2.598 0 .865.5v1l-.865.5-.866-.5V7zm2.597 0 .866.5v1l-.866.5-.865-.5V7zM5.505 8.75l.866.5v1l-.865.5-.865-.5v-1zm2.599 0 .865.5v.14a4 4 0 0 0-.733 1.284l-.132.076-.866-.5v-1zm7.792 0 .866.5v1l-.866.5-.12-.07a4 4 0 0 0-.745-1.287V9.25zm2.598 0 .865.5v1l-.865.5-.207-.12-.658-.38v-1zM12 10a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m-7.793 1 .865.5v1l-.865.5-.135-.078A8 8 0 0 1 4 12a8 8 0 0 1 .072-.922zm2.598 0 .865.5v1l-.865.5-.104-.06-.762-.44v-1l.762-.44zm10.39 0 .866.5v1l-.866.5-.431-.25-.434-.25v-1zm2.598 0 .154.09A8 8 0 0 1 20 12a8 8 0 0 1-.072.922l-.135.078-.865-.5v-1zM5.506 13.25l.865.5v1l-.865.5-.865-.5v-1zm2.598 0 .132.076a4 4 0 0 0 .733 1.283v.141l-.432.25-.433.25-.866-.5v-1l.434-.25zM19 15l-3 3h2v4h2v-4h2zm-12.195.5.865.5v1l-.865.5-.104-.06L5.94 17v-1l.762-.44zm2.597 0 .432.25.434.25v1l-.434.25-.432.25-.431-.25-.434-.25v-1l.432-.25h.002zm1.866.424A4 4 0 0 0 12 16a4 4 0 0 0 .732-.076l.133.076v1l-.761.44-.104.06-.865-.5v-1zM8.104 17.75l.865.5v1l-.13.074a8 8 0 0 1-1.6-.902v-.172zm2.597 0 .865.5v1l-.865.5-.865-.5v-1z'
const mdiFilamentChange = 'm23.5 18.5-3-3v2h-4v2h4v2zm-9 0 3 3v-2h4v-2h-4v-2zM12 2a10 10 0 0 0-1.129.08 10 10 0 0 0-1.02.18 10 10 0 0 0-1.314.386A10 10 0 0 0 7.672 3H7.67a10 10 0 0 0-1.295.752 10 10 0 0 0-.754.564 10 10 0 0 0-.98.938 10 10 0 0 0-.598.732 10 10 0 0 0-1.57 3.016 10 10 0 0 0-.315 1.314 10 10 0 0 0-.105.932v.008A10 10 0 0 0 2 12q.012.372.053.742v.006a10 10 0 0 0 .105.936 10 10 0 0 0 .315 1.314 10 10 0 0 0 .904 2.022 10 10 0 0 0 .666.994 10 10 0 0 0 .598.732 10 10 0 0 0 .98.938q.364.3.754.564A10 10 0 0 0 7.67 21h.002a10 10 0 0 0 .865.354 10 10 0 0 0 1.315.386 10 10 0 0 0 1.02.18A10 10 0 0 0 12 22a10 10 0 0 0 1.129-.08 10 10 0 0 0 .59-.104 6 6 0 0 1-.676-2.214l-.61-.352v-1l.434-.25.258-.148a6 6 0 0 1 .607-1.692V16l.127-.074a6 6 0 0 1 1.342-1.559 4 4 0 0 0 .563-1.04l.132-.077.56.322A6 6 0 0 1 19 13a6 6 0 0 1 2.834.713l.008-.03a10 10 0 0 0 .105-.931v-.008A10 10 0 0 0 22 12q0-.378-.031-.756l-.002-.012a10 10 0 0 0-.426-2.222 10 10 0 0 0-.38-1.014l-.007-.014-.008-.013a10 10 0 0 0-.488-.967L20.656 7a10 10 0 0 0-2.265-2.69 10 10 0 0 0-2.06-1.322h-.003a10 10 0 0 0-2.15-.746h-.002a10 10 0 0 0-1.114-.183A10 10 0 0 0 12 2m-1.299 2.25.432.25.433.25v1l-.865.5-.433-.25-.432-.25v-1l.268-.154Zm2.598 0 .865.5v1l-.865.5-.865-.5v-1zm1.883.414a8 8 0 0 1 1.58.91v.176l-.658.38-.208.12-.865-.5v-1zm-6.342.012.129.074v1L8.537 6l-.433.25-.866-.5v-.172a8 8 0 0 1 1.602-.902M6.805 6.5l.865.5v1l-.865.5-.104-.06L5.94 8V7Zm2.597 0 .866.5v1l-.434.25-.432.25-.431-.25L8.537 8V7l.432-.25ZM12 6.5l.865.5v1l-.12.07A4 4 0 0 0 12 8a4 4 0 0 0-.732.076L11.135 8V7Zm2.598 0 .865.5v1l-.865.5-.866-.5V7Zm2.597 0 .866.5v1l-.866.5-.865-.5V7ZM5.505 8.75l.866.5v1l-.865.5-.865-.5v-1zm2.599 0 .865.5v.14a4 4 0 0 0-.733 1.284l-.132.076-.866-.5v-1zm7.792 0 .866.5v1l-.866.5-.12-.07a4 4 0 0 0-.745-1.287V9.25Zm2.598 0 .865.5v1l-.865.5-.207-.12-.658-.38v-1zM12 10a2 2 0 1 1 0 4 2 2 0 0 1 0-4m-7.793 1 .865.5v1l-.865.5-.135-.078A8 8 0 0 1 4 12a8 8 0 0 1 .072-.922Zm2.598 0 .865.5v1l-.865.5-.104-.06-.762-.44v-1l.762-.44zm10.39 0 .866.5v1l-.866.5-.431-.25-.434-.25v-1zm2.598 0 .154.09A8 8 0 0 1 20 12a8 8 0 0 1-.072.922l-.135.078-.865-.5v-1ZM5.506 13.25l.865.5v1l-.865.5-.865-.5v-1zm2.598 0 .132.076a4 4 0 0 0 .733 1.283v.141l-.432.25-.433.25-.866-.5v-1l.434-.25Zm-1.3 2.25.866.5v1l-.865.5-.104-.06L5.94 17v-1l.762-.44zm2.598 0 .432.25.434.25v1l-.434.25-.432.25-.431-.25-.434-.25v-1l.432-.25h.002Zm1.866.424A4 4 0 0 0 12 16q.37-.004.732-.076l.133.076v1l-.761.44-.104.06-.865-.5v-1ZM8.104 17.75l.865.5v1l-.13.074a8 8 0 0 1-1.6-.902v-.172Zm2.597 0 .865.5v1l-.865.5-.865-.5v-1z'
const mdiFileImageLock = 'M6 2c-1.11 0-2 .89-2 2v16a2 2 0 0 0 2 2h6v-2H6l6-6 1.21 1.21C13.377 12.674 15.688 11 18 11c.7 0 1.4.2 2 .4V8l-6-6zm7 1.5L18.5 9H13zM8 9a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2 2 2 0 0 1 2-2m10 4c-1.4 0-2.8 1.1-2.8 2.5V17c-.6 0-1.2.6-1.2 1.2v3.5c0 .7.6 1.3 1.2 1.3h5.5c.7 0 1.3-.6 1.3-1.2v-3.5c0-.7-.6-1.3-1.2-1.3v-1.5c0-1.4-1.4-2.5-2.8-2.5m0 1.2c.8 0 1.5.5 1.5 1.3V17h-3v-1.5c0-.8.7-1.3 1.5-1.3'
const mdiFileDocumentLock = 'M12 21.7V18H6v-2h6.9l.3-.3v-.2q0-.75.3-1.5H6v-2h9.1c.8-.6 1.8-1 2.9-1 .7 0 1.4.2 2 .4V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h6zm1-18.2L18.5 9H13ZM20.8 17v-1.5c0-1.4-1.4-2.5-2.8-2.5s-2.8 1.1-2.8 2.5V17c-.6 0-1.2.6-1.2 1.2v3.5c0 .7.6 1.3 1.2 1.3h5.5c.7 0 1.3-.6 1.3-1.2v-3.5c0-.7-.6-1.3-1.2-1.3m-1.3 0h-3v-1.5c0-.8.7-1.3 1.5-1.3s1.5.5 1.5 1.3z'
const mdiEmergencyStop = 'M12 1 8 5l.05.05 1.48 1.48L12 9V6a5.98 5.98 0 0 1 5.828 4.564l1.93-.517C18.883 6.579 15.733 4 12 4zM6.436 6.264a7.975 7.975 0 0 0-1.36 9.734L2.475 17.5l5.462 1.465.018-.069h.002l.541-2.019.904-3.377-2.6 1.502A6 6 0 0 1 6 12a5.98 5.98 0 0 1 1.84-4.332zm13.627 5.771-.065.018-1.336.357-.691.186-3.373.904 2.601 1.502A5.98 5.98 0 0 1 12 18c-.58 0-1.14-.082-1.67-.234l-.518 1.927c.696.199 1.43.307 2.188.307 2.952 0 5.536-1.614 6.922-4.004l2.603 1.504z'

/**
 * Global, static constants.
 */
export const Globals = Object.freeze({
  APP_NAME: 'fluidd',
  HEADER_HEIGHT: 56,
  DEFAULTS: {
    CAMERA_URL_STREAM: '/webcam/?action=stream',
    CAMERA_URL_SNAPSHOT: '/webcam/?action=snapshot'
  },
  NETWORK_REQUEST_TIMEOUT: 0,
  KLIPPY_RETRY_DELAY: 1500,
  CONSOLE_HISTORY_RETENTION: 1000, // total count
  CONSOLE_RECEIVE_PREFIX: '',
  CONSOLE_SEND_PREFIX: '$ ',
  CONSOLE_COMMAND_HISTORY: 20,
  CHART_HISTORY_RETENTION: 1200,
  CHART_SYSTEM_RETENTION: 600, // system / mcu / sensor charts, in seconds
  JOB_HISTORY_LOAD: 100,
  JOB_HISTORY_FETCH_CHUNK: 50,
  KLIPPY_DISCONNECTED_REDIRECT: '/configuration',
  LOCAL_CARDSTATE_STORAGE_KEY: 'cardState', // collapsed or not
  LOCAL_CARDLAYOUT_STORAGE_KEY: 'cardLayout2', // Specific layout / enabled / disabled
  LOCAL_INSTANCES_STORAGE_KEY: 'appInstances',
  MOONRAKER_MIN_VERSION: 'v0.8.0-309',
  MOONRAKER_DB: {
    fluidd: {
      NAMESPACE: 'fluidd',
      ROOTS: {
        uiSettings: { name: 'uiSettings', dispatch: 'config/initUiSettings' },
        macros: { name: 'macros', dispatch: 'macros/initMacros' },
        sensors: { name: 'sensors', dispatch: 'sensors/initSensors' },
        console: { name: 'console', dispatch: 'console/initConsole' },
        charts: { name: 'charts', dispatch: 'charts/initCharts' },
        cameras: { name: 'cameras', dispatch: 'webcams/initLegacyCameras', migrate_only: true },
        webcams: { name: 'webcams', dispatch: 'webcams/initWebcams' },
        layout: { name: 'layout', dispatch: 'layout/initLayout' }
      }
    },
    webcams: {
      NAMESPACE: 'webcams',
      ROOTS: []
    }
  },
  MOONRAKER_COMPONENTS: {
    auth: { name: 'authorization', dispatch: 'auth/init' },
    power: { name: 'power', dispatch: 'power/init' },
    updateManager: { name: 'update_manager', dispatch: 'version/init' },
    history: { name: 'history', dispatch: 'history/init' },
    database: { name: 'database', dispatch: 'database/init' },
    timelapse: { name: 'timelapse', dispatch: 'timelapse/init' },
    announcements: { name: 'announcements', dispatch: 'announcements/init' },
    webcams: { name: 'webcam', dispatch: 'webcams/init' },
    jobQueue: { name: 'job_queue', dispatch: 'jobQueue/init' },
    spoolman: { name: 'spoolman', dispatch: 'spoolman/init' },
    sensors: { name: 'sensor', dispatch: 'sensors/init' },
    extensions: { name: 'extensions', dispatch: 'extensions/init' }
  },
  MOONRAKER_AGENTS: {
    aldis: {
      name: 'aldis',
      eventDispatch: 'firmware/onAgentEvent',
      klippyDispatch: 'firmware/onKlippyStateChanged'
    }
  },
  // Ordered by weight.
  CONFIG_SERVICE_MAP: [
    { filename: 'moonraker.conf', service: 'moonraker', link: 'https://moonraker.readthedocs.io/en/latest/configuration/' },
    { filename: 'webcam.txt', service: 'webcamd' },
    { filename: 'crowsnest.conf', service: 'crowsnest', link: 'https://crowsnest.mainsail.xyz/configuration/sample-config' },
    { filename: 'klipperscreen.conf', service: 'KlipperScreen', link: 'https://klipperscreen.readthedocs.io/en/latest/' },
    { filename: 'sonar.conf', service: 'sonar', link: 'https://github.com/mainsail-crew/sonar' },
    { filename: 'mooncord-webcam.json', service: 'webcamd', link: 'https://github.com/eliteSchwein/mooncord' },
    { prefix: 'mooncord', service: 'MoonCord', link: 'https://github.com/eliteSchwein/mooncord' },
    { filename: 'telegram.conf', service: 'moonraker-telegram-bot', link: 'https://github.com/nlef/moonraker-telegram-bot/wiki/Sample-config' },
    { suffix: '.cfg', service: 'klipper', link: '{klipperDomain}/Config_Reference.html' }
  ],
  SUPPORTED_SERVICES: {
    KLIPPER: {
      klipper: {
        domain: 'https://www.klipper3d.org',
        minVersion: 'v0.11.0-257'
      },
      kalico: {
        domain: 'https://docs.kalico.gg',
        minVersion: 'v0.11.0-257'
      },
      'danger-klipper': {
        domain: 'https://dangerklipper.io',
        minVersion: 'v0.11.0-257'
      }
    }
  },
  FILE_DATA_TRANSFER_TYPES: {
    files: 'x-fluidd-files',
    jobs: 'x-fluidd-jobs'
  },
  FILTERED_FOLDER_NAMES: ['.git', '.thumbs'],
  FILTERED_FILES_PREFIX: ['.thumbs', 'thumbs'],
  FILTERED_FILES_EXTENSION: ['.ignoreme'],
  KEYBOARD_SHORTCUTS: {
    home: 'h',
    console: 'c',
    gcode_preview: 'p',
    jobs: 'j',
    history: 'i',
    timelapse: 'l',
    tune: 't',
    diagnostics: 'g',
    configure: 'x',
    system: 'q',
    settings: 's'
  },
  DOCS_ROOT: 'https://docs.fluidd.xyz',
  DOCS_REQUIRED_CONFIGURATION: 'https://docs.fluidd.xyz/features/multiple-printers/',
  DOCS_MULTIPLE_INSTANCES: 'https://docs.fluidd.xyz/features/multiple-printers/',
  DOCS_MOONRAKER_COMPONENTS: 'https://docs.fluidd.xyz/configuration/#moonraker',
  DOCS_AUTH_LOST_PASSWORD: 'https://docs.fluidd.xyz/features/authorization/#lost-password',
  DOCS_AUTH: 'https://docs.fluidd.xyz/features/authorization/',
  GITHUB_REPO: 'https://github.com/fluidd-core/fluidd'
})

export const Icons = Object.freeze({
  dash: mdiViewDashboardOutline,
  account: mdiAccount,
  accountSettings: mdiAccountCogOutline,
  addAccount: mdiAccountPlus,
  help: mdiHelpCircle,
  motion: mdiMotionOutline,
  limits: mdiArrowHorizontalLock,
  send: mdiSend,
  open: mdiOpenInApp,
  move: mdiFolderMove,
  tabs: mdiCheckboxMultipleBlank,
  menu: mdiDotsVertical,
  menuAlt: mdiMenu,
  dots: mdiDotsHorizontal,
  dotsGrid: mdiDotsGrid,
  drag: mdiDrag,
  chart: mdiChartTimelineVariant,
  power: mdiPower,
  powerCycle: mdiPowerCycle,
  powerOn: mdiToggleSwitch,
  powerOff: mdiToggleSwitchOffOutline,
  home: mdiHome,
  close: mdiClose,
  refresh: mdiRefresh,
  restart: mdiRestart,
  restartAlert: mdiRestartAlert,
  update: mdiUpdate,
  warning: mdiAlert,
  error: mdiHandBackRight,
  thermometer: mdiThermometerLow,
  bell: mdiBellOutline,
  fireAlert: mdiFireAlert,
  snowflake: mdiSnowflake,
  snowflakeAlert: mdiSnowflakeAlert,
  circle: mdiCircle,
  blankCircle: mdiCheckboxBlankCircleOutline,
  markedCircle: mdiRadioboxMarked,
  checkedCircle: mdiCheckCircleOutline,
  checkboxBlank: mdiCheckboxBlankOutline,
  checkboxMarked: mdiCheckboxMarkedOutline,
  alertCircle: mdiAlertCircle,
  folderAdd: mdiFolderPlus,
  folderUp: mdiFolderUpload,
  folderUpload: mdiFolderArrowUp,
  folder: mdiFolder,
  folderLock: mdiFolderLock,
  fileUpload: mdiUpload,
  fileAdd: mdiFilePlus,
  inProgress: mdiCircleSlice3,
  progressUpload: mdiProgressUpload,
  progressQuestion: mdiProgressQuestion,
  up: mdiArrowUp,
  down: mdiArrowDown,
  left: mdiArrowLeft,
  right: mdiArrowRight,
  tune: mdiTune,
  zUp: mdiArrowExpandUp,
  zDown: mdiArrowCollapseDown,
  expandHorizontal: mdiArrowExpandHorizontal,
  expandVertical: mdiArrowExpandVertical,
  cog: mdiCog,
  cogs: mdiCogs,
  save: mdiContentSaveOutline,
  saveAs: mdiContentSaveEditOutline,
  saveDefault: mdiContentSaveCogOutline,
  estop: mdiEmergencyStop,
  fire: mdiFire,
  tools: mdiHammerWrench,
  minus: mdiMinus,
  plus: mdiPlus,
  check: mdiCheck,
  console: mdiConsole,
  clock: mdiClockOutline,
  formatLineSpacing: mdiFormatLineSpacing,
  layersTripleOutline: mdiLayersTripleOutline,
  chevronUp: mdiChevronUp,
  chevronDown: mdiChevronDown,
  chevronRight: mdiChevronRight,
  chevronLeft: mdiChevronLeft,
  timer: mdiTimerSand,
  fileCode: mdiFileCodeOutline,
  fileRefresh: mdiFileRefreshOutline,
  files: mdiFileTableOutline,
  file: mdiFile,
  fileLock: mdiFileLock,
  fileCancel: mdiFileCancel,
  fileExport: mdiFileExportOutline,
  pause: mdiPause,
  cancel: mdiWindowClose,
  cancelled: mdiCancel,
  play: mdiPlay,
  resume: mdiPlay,
  stop: mdiStop,
  reprint: mdiPrinter,
  printer: mdiPrinter,
  download: mdiDownload,
  rename: mdiFormTextbox,
  duplicate: mdiContentDuplicate,
  sync: mdiSync,
  stopwatch: mdiTimerOutline,
  delete: mdiDelete,
  camera: mdiCamera,
  fan: mdiFan,
  pencil: mdiPencil,
  pencilLock: mdiPencilLock,
  magnify: mdiMagnify,
  magnifyPlus: mdiMagnifyPlus,
  magnifyMinus: mdiMagnifyMinus,
  printer3d: mdiPrinter3d,
  printer3dNozzle: mdiPrinter3dNozzleOutline,
  printer3dNozzleAlert: mdiPrinter3dNozzleAlertOutline,
  bedMesh: mdiViewGridOutline,
  host: mdiDesktopTower,
  history: mdiHistory,
  filter: mdiFilterOutline,
  commit: mdiSourceCommit,
  cloudCheck: mdiCloudCheck,
  cloudAlert: mdiCloudAlert,
  cubeScan: mdiCubeScan,
  consoleLine: mdiConsoleLine,
  lock: mdiLock,
  lockOpen: mdiLockOpenVariant,
  lockReset: mdiLockReset,
  reset: mdiRestore,
  resetDefaults: mdiCogCounterclockwise,
  tempError: mdiThermometerAlert,
  contentCopy: mdiContentCopy,
  apps: mdiApps,
  shieldAccount: mdiShieldAccount,
  retract: mdiArrowUpBold,
  extrude: mdiArrowDownBold,
  codeJson: mdiCodeJson,
  desktopTower: mdiDesktopTower,
  harddisk: mdiHarddisk,
  microSd: mdiMicroSd,
  message: mdiMessageTextOutline,
  list: mdiFormatListBulleted,
  fullScreen: mdiFullscreen,
  video: mdiFileVideoOutline,
  snooze: mdiBellSleep,
  chip: mdiChip,
  viewHeadline: mdiViewHeadline,
  absolutePositioning: mdiAxisArrow,
  relativePositioning: mdiVectorLine,
  openInNew: mdiOpenInNew,
  imageSizeSelectLarge: mdiImageSizeSelectLarge,
  listStatus: mdiListStatus,
  previousLayer: mdiLayersMinus,
  currentLayer: mdiLayers,
  nextLayer: mdiLayersPlus,
  moves: mdiVectorLine,
  extrusions: mdiPrinter3dNozzle,
  retractions: mdiSwapVertical,
  tableColumn: mdiTableColumn,
  parts: mdiShape,
  folderOpen: mdiFolderOpen,
  fileImage: mdiFileImage,
  fileImageLock: mdiFileImageLock,
  fileDocument: mdiFileDocument,
  fileDocumentLock: mdiFileDocumentLock,
  fileZip: mdiArchive,
  fileZipLock: mdiArchiveLock,
  fileZipAdd: mdiArchivePlus,
  filament: mdiFilament,
  loadFilament: mdiFilamentDown,
  unloadFilament: mdiFilamentUp,
  changeFilament: mdiFilamentChange,
  cleanNozzle: mdiToothbrush,
  parkToolhead: mdiParking,
  jobQueue: mdiTrayFull,
  enqueueJob: mdiTrayPlus,
  sensors: mdiGauge,
  screenshot: mdiMonitorScreenshot,
  zRotateClockwise: mdiRotateRight,
  zRotateCounterclockwise: mdiRotateLeft,
  devices: mdiUsb,
  beacon: mdiMagnet,
  pidCalibrate: mdiSineWave,
  database: mdiDatabase,
  dockTop: mdiDockTop,
  dockBottom: mdiDockBottom,
  featureType: mdiTagMultipleOutline,
  speedometer: mdiSpeedometer,
  mmu: mdiMulticast,
  mmuEditTtgMap: mdiStateMachine,
  mmuEditGateMap: mdiDatabaseEdit,
  mmuRecoverState: mdiCogRefresh,
  mmuMaintenance: mdiWrenchCog,
  mmuPrintStats: mdiNoteText,
  mmuSyncSpoolman: mdiRefresh,
  mmuChangeTool: mdiAxisArrow,
  mmuCheckAllGates: mdiCheckAll,
  mmuPreload: mdiDownloadOutline,
  mmuEject: mdiEject,
  mmuCheckGate: mdiCheck,
  mmuRecover: mdiAutoFix,
  mmuUnlock: mdiThermometerPlus,
  mmuUnload: mdiUpload,
  mmuLoad: mdiDownload,
  mmuLoadSpeed: mdiSpeedometer,
  mmuResetSpeed: mdiRestart,
  mmuDecrementSpeed: mdiMinus,
  mmuIncrementSpeed: mdiPlus,
  mmuChooseSpool: mdiAdjust,
  mmuSync: mdiSync,
  mmuUnsync: mdiSyncOff,
  mmuLoad2: mdiDownloadOutline,
  mmuUnload2: mdiUploadOutline,
  mmuOn: mdiEngineOutline,
  mmuOff: mdiEngineOffOutline,
  mmuHome: mdiHome,
  mmuGrip: mdiArrowCollapseHorizontal,
  mmuRelease: mdiArrowExpandHorizontal,
  mmuHome2: mdiHomeOutline,
  mmuUp: mdiArrowUpThin,
  mmuDown: mdiArrowDownThin,
  mmuMove: mdiArrowLeftRight,
  mmuUpdateLeds: mdiContentSaveSettingsOutline,
  mmuError: mdiInformationOutline,
  mmuSelectGate: mdiSwapHorizontal,
  mmuHumidity: mdiWater,
  mmuTemp: mdiThermometer,
  mmuHeater: mdiHeatingCoil,
  mmuDryer: mdiRotateOrbit,
  afcIcon: afcIconLogo,
  afcIconBoxTurtle,
  afcIconHtlf,
  afcIconNightOwl,
  afcIconQuattroBox,
  afcIconInfinity,
  afcHelp: mdiLifebuoy,
  afcTurnOffLed: mdiLightbulbOnOutline,
  afcTurnOnLed: mdiLightbulbOutline,
  afcCalibration: mdiWrench,
  afcSettings: mdiVariable,
  afcDebugJson: mdiArrowDownBold,
  afcUnloadLane: mdiArrowUpBold,
  afcLoadLane: mdiArrowDownBold,
  afcEjectFilament: mdiEject,
  afcSelectTool: mdiRadioboxBlank,
  afcUnselectTool: mdiSwapHorizontalVariant,
})

export const Waits = Object.freeze({
  onServiceRestart: 'onServiceRestart',
  onServiceStop: 'onServiceStop',
  onServiceStart: 'onServiceStart',
  onDevicePowerToggle: 'onDevicePowerToggle',
  onHomeAll: 'onHomeAll',
  onHomeXY: 'onHomeXY',
  onHomeX: 'onHomeX',
  onHomeY: 'onHomeY',
  onHomeZ: 'onHomeZ',
  onQGL: 'onQGL',
  onZTilt: 'onZTilt',
  onAxisTwistCompensationCalibrate: 'onAxisTwistCompensationCalibrate',
  onBedScrewsAdjust: 'onBedScrewAdjust',
  onDatabaseList: 'onDatabaseList',
  onDatabaseCompact: 'onDatabaseCompact',
  onDatabasePostBackup: 'onDatabasePostBackup',
  onDatabaseRestore: 'onDatabaseRestore',
  onDatabaseDeleteBackup: 'onDatabaseDeleteBackup',
  onBedScrewsCalculate: 'onBedScrewsCalculate',
  onBedTiltCalibrate: 'onBedTiltCalibrate',
  onCartographerAxisTwistCompensation: 'onCartographerAxisTwistCompensation',
  onCartographerScanCalibrate: 'onCartographerScanCalibrate',
  onCartographerTouchCalibrate: 'onCartographerTouchCalibrate',
  onDeltaCalibrate: 'onDeltaCalibrate',
  onPrintPause: 'onPrintPause',
  onPrintCancel: 'onPrintCancel',
  onPrintResume: 'onPrintResume',
  onMacro: 'onMacro',
  onSetSpeed: 'onSetSpeed',
  onSetFlow: 'onSetFlow',
  onSetPressureAdvance: 'onSetPressureAdvance',
  onSetFanSpeed: 'onSetFanSpeed',
  onSetOutputPin: 'onSetOutputPin',
  onZAdjust: 'onZAdjust',
  onZApply: 'onZApply',
  onSaveConfig: 'onSaveConfig',
  onRetract: 'onRetract',
  onExtrude: 'onExtrude',
  onMeshCalibrate: 'onMeshCalibrate',
  onKlipperRestart: 'klipperRestart',
  onKlipperFirmwareRestart: 'klipperFirmwareRestart',
  onSetVelocity: 'onSetVelocity',
  onSetAcceleration: 'onSetAcceleration',
  onSetAccelToDecel: 'onSetAccelToDecel',
  onSetMinimumCruiseRatio: 'onSetMinimumCruiseRatio',
  onSetSquareCornerVelocity: 'onSetSquareCornerVelocity',
  onSetRetractLength: 'onSetRetractLength',
  onSetRetractSpeed: 'onSetRetractSpeed',
  onSetUnretractSpeed: 'onSetUnretractSpeed',
  onSetUnretractExtraLength: 'onSetUnretractExtraLength',
  onSetZHopHeight: 'onSetZHopHeight',
  onExtruderChange: 'onExtruderChange',
  onLoadLanguage: 'onLoadLanguage',
  onFileSystem: 'onFileSystem',
  onFileSystemRoots: 'onFileSystemRoots',
  onJobQueue: 'onJobQueue',
  onHistoryExport: 'onHistoryExport',
  onTimelapseSaveFrame: 'onTimelapseSaveFrame',
  onManualProbe: 'onManualProbe',
  onProbeCalibrate: 'onProbeCalibrate',
  onProbeAccuracy: 'onProbeAccuracy',
  onZEndstopCalibrate: 'onZEndstopCalibrate',
  onQueryEndstops: 'onQueryEndstops',
  onQueryProbe: 'onQueryProbe',
  onVersionRefresh: 'onVersionRefresh',
  onFirmwareRefresh: 'onFirmwareRefresh',
  onSyncExtruder: 'onSyncExtruder',
  onStepperEnable: 'onStepperEnable',
  onMachinePeripheralsUsb: 'onMachinePeripheralsUsb',
  onMachinePeripheralsSerial: 'onMachinePeripheralsSerial',
  onMachinePeripheralsVideo: 'onMachinePeripheralsVideo',
  onMachinePeripheralsCanbus: 'onMachinePeripheralsCanbus',
  onBeaconCalibrate: 'onBeaconCalibrate',
  onMmuStats: 'onMmuStats',
  onMmuSpoolman: 'onMmuSpoolman',
  onMmuCheckGates: 'onMmuCheckGates',
  onMmuPreload: 'onMmuPreload',
  onMmuSelect: 'onMmuSelect',
  onMmuEject: 'onMmuEject',
  onMmuCheckGate: 'onMmuCheckGate',
  onMmuChangeTool: 'onMmuChangeTool',
  onMmuRecover: 'onMmuRecover',
  onMmuUnlock: 'onMmuUnlock',
  onMmuUnload: 'onMmuUnload',
  onMmuLoad: 'onMmuLoad',
  onMmuTtgMap: 'onMmuTtgMap',
  onMmuGateMap: 'onMmuGateMap',
  onMmuSyncGearMotor: 'onMmuSyncGearMotor',
  onMmuMotorsOn: 'onMmuMotorsOn',
  onMmuMotorsOff: 'onMmuMotorsOff',
  onMmuHome: 'onMmuHome',
  onMmuGrip: 'onMmuGrip',
  onMmuRelease: 'onMmuRelease',
  onMmuServo: 'onMmuServo',
  onMmuLed: 'onMmuLed',
  onMmuTestConfig: 'onMmuTestConfig'
})

export const SupportedLocales = Object.freeze([
  { name: 'English', code: 'en' },
  { name: 'Afrikaans', code: 'af' },
  { name: 'Čeština', code: 'cs' },
  { name: '简体中文', code: 'zh-CN' },
  { name: '繁體中文(香港)', code: 'zh-HK' },
  { name: 'Deutsch', code: 'de' },
  { name: 'Español', code: 'es' },
  { name: 'Français', code: 'fr' },
  { name: 'Italiano', code: 'it' },
  { name: 'Magyar', code: 'hu' },
  { name: 'Nederlands', code: 'nl' },
  { name: 'Polski', code: 'pl' },
  { name: 'Português', code: 'pt' },
  { name: 'Português (Brasil)', code: 'pt-BR' },
  { name: 'Русский', code: 'ru' },
  { name: 'Slovenščina', code: 'sl' },
  { name: 'Türkçe', code: 'tr' },
  { name: 'Українська', code: 'uk' },
  { name: '한국어', code: 'ko' },
  { name: 'العربية', code: 'ar' },
  { name: '日本語', code: 'ja' },
  { name: 'தமிழ்', code: 'ta' }
])

export const SupportedImageFormats = Object.freeze([
  '.bmp',
  '.gif',
  '.jfif',
  '.jpeg',
  '.jpg',
  '.png',
  '.svg',
  '.tif',
  '.tiff',
  '.webp'
])

export const SupportedMarkdownFormats = Object.freeze([
  '.markdown',
  '.md',
  '.mdown'
])

export const SupportedVideoFormats = Object.freeze([
  '.mp4',
  '.mpeg',
  '.mpg'
])

export type DateTimeFormat = {
  locales?: Intl.LocalesArgument,
  options: Intl.DateTimeFormatOptions,
  suffix?: string
}

export const DateFormats = Object.freeze<Record<string, DateTimeFormat>>({
  iso: {
    locales: 'lt',
    options: { day: '2-digit', month: '2-digit', year: 'numeric' },
    suffix: ' (ISO 8601)'
  },
  digits2: {
    options: { day: '2-digit', month: '2-digit', year: 'numeric' }
  },
  short: {
    options: { day: '2-digit', month: 'short', year: 'numeric' }
  }
})

export const TimeFormats = Object.freeze<Record<string, DateTimeFormat>>({
  iso: {
    locales: 'lt',
    options: { hour: '2-digit', minute: '2-digit', hour12: false },
    suffix: ' (ISO 8601)'
  },
  hours12: {
    options: { hour: '2-digit', minute: '2-digit', hour12: true }
  },
  hours24: {
    options: { hour: '2-digit', minute: '2-digit', hour12: false }
  }
})

export interface ColorGenOption {
  base: string
  count: number
  hsplit?: number
  lsplit?: number
}

export type PaletteOption = string[] | ColorGenOption

export const DefaultPalettes = Object.freeze<Record<string, PaletteOption>>({
  heater: { base: '#ff5252', hsplit: 20, count: 4 },
  bed: { base: '#1fb0ff', hsplit: 20, count: 2 },
  fan: { base: '#4CAF50', hsplit: 20, count: 4 },
  sensor: ['#D67600', '#830EE3', '#B366F2', '#E06573', '#E38819', '#795548', '#607D8B', '#3F51B5', '#F50057']
})