import type { SaveSettingsPayload } from '@src/lib/settings/settingsTypes' import { Themes } from '@src/lib/theme' import type { DeepPartial } from '@src/lib/types' import type { Settings } from '@rust/kcl-lib/bindings/Settings' export const TEST_SETTINGS_KEY = '/settings.toml' export const TEST_SETTINGS: DeepPartial = { app: { appearance: { theme: Themes.Dark, }, onboarding_status: 'dismissed', show_debug_panel: true, }, modeling: { enable_ssao: false, base_unit: 'in', mouse_controls: 'zoo', camera_projection: 'perspective', }, project: { default_project_name: 'untitled', directory: '', }, text_editor: { text_wrapping: true, }, } export const TEST_SETTINGS_ONBOARDING_START: DeepPartial = { ...TEST_SETTINGS, app: { ...TEST_SETTINGS.app, onboarding_status: '' }, } export const TEST_SETTINGS_DEFAULT_THEME: DeepPartial = { ...TEST_SETTINGS, app: { ...TEST_SETTINGS.app, appearance: { theme: Themes.System } }, } export const TEST_SETTINGS_CORRUPTED = { app: { theme: Themes.Dark, onboardingStatus: 'dismissed', projectDirectory: 123 as any, showDebugPanel: true, }, modeling: { defaultUnit: 'invalid' as any, mouseControls: `() => alert('hack the planet')` as any, cameraProjection: 'perspective', }, projects: { defaultProjectName: false as any, }, textEditor: { textWrapping: true, }, } satisfies Partial export const TEST_CODE_GIZMO = `@settings(defaultLengthUnit = in) part001 = startSketchOn(XZ) |> startProfile(at = [20, 0]) |> line(end = [7.13, 4 + 0]) |> angledLine(angle = 3 + 0, length = 3.14 + 0 ) |> line(endAbsolute = [20.14 + 0, -0.14 + 0]) |> xLine(endAbsolute = 29 + 0) |> yLine(length = -3.14 + 0, tag = $a) |> xLine(length = 1.63) |> angledLine(angle = 3 + 0, lengthX = 3.14 ) |> angledLine(angle = 30, lengthY = 3 + 0 ) |> angledLine(angle = 22.14 + 0, endAbsoluteX = 12) |> angledLine(angle = 30, endAbsoluteY = 11.14) |> angledLineThatIntersects(angle = 3.14, intersectTag = a, offset = 0) |> tangentialArc(endAbsolute = [13.14 + 0, 13.14]) |> close() |> extrude(length = 5 + 7) ` export const TEST_CODE_LONG_WITH_ERROR_OUT_OF_VIEW = `width = 50.8 height = 30 thickness = 2 keychainHoleSize = 3 keychain = startSketchOn(XY) |> startProfile(at = [0, 0]) |> line(endAbsolute = [width, 0]) |> line(endAbsolute = [width, height]) |> line(endAbsolute = [0, height]) |> close() |> extrude(length = thickness) keychain1 = startSketchOn(XY) |> startProfile(at = [0, 0]) |> line(endAbsolute = [width, 0]) |> line(endAbsolute = [width, height]) |> line(endAbsolute = [0, height]) |> close() |> extrude(length = thickness) keychain2 = startSketchOn(XY) |> startProfile(at = [0, 0]) |> line(endAbsolute = [width, 0]) |> line(endAbsolute = [width, height]) |> line(endAbsolute = [0, height]) |> close() |> extrude(length = thickness) box = startSketchOn(XY) |> startProfile(at = [0, 0]) |> line(end = [0, 10]) |> line(end = [10, 0]) |> line(end = [0, -10], tag = $revolveAxis) |> close() |> extrude(length = 10) sketch001 = startSketchOn(box, face = revolveAxis) |> startProfile(at = [5, 10]) |> line(end = [0, -10]) |> line(end = [2, 0]) |> line(end = [0, -10]) |> close() |> revolve( axis = revolveAxis, angle = 90 ) sketch001 = startSketchOn(XZ) |> startProfile(at = [0.0, 0.0]) |> xLine(length = 0.0) |> close() ` export const TEST_CODE_TRIGGER_ENGINE_EXPORT_ERROR = `thing = 1`