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>({ 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>({ 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>({ 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'] })