@visualli/core 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animations/index.cjs +146 -0
- package/dist/animations/index.cjs.map +1 -0
- package/dist/animations/index.d.cts +81 -0
- package/dist/animations/index.d.ts +81 -0
- package/dist/animations/index.js +35 -0
- package/dist/animations/index.js.map +1 -0
- package/dist/chunk-6NXADJK2.js +562 -0
- package/dist/chunk-6NXADJK2.js.map +1 -0
- package/dist/chunk-F36SMC3K.js +106 -0
- package/dist/chunk-F36SMC3K.js.map +1 -0
- package/dist/chunk-G5H3P4YZ.js +273 -0
- package/dist/chunk-G5H3P4YZ.js.map +1 -0
- package/dist/chunk-GQMFBYLK.js +81 -0
- package/dist/chunk-GQMFBYLK.js.map +1 -0
- package/dist/chunk-I75TMOE4.js +108 -0
- package/dist/chunk-I75TMOE4.js.map +1 -0
- package/dist/chunk-LDJRGT2Q.js +163 -0
- package/dist/chunk-LDJRGT2Q.js.map +1 -0
- package/dist/chunk-LI3BVD6H.js +98 -0
- package/dist/chunk-LI3BVD6H.js.map +1 -0
- package/dist/chunk-LJYSKSCE.js +95 -0
- package/dist/chunk-LJYSKSCE.js.map +1 -0
- package/dist/chunk-LNTJTDB2.js +349 -0
- package/dist/chunk-LNTJTDB2.js.map +1 -0
- package/dist/chunk-PDP5CVUL.js +139 -0
- package/dist/chunk-PDP5CVUL.js.map +1 -0
- package/dist/chunk-VLGR5PZX.js +1 -0
- package/dist/chunk-VLGR5PZX.js.map +1 -0
- package/dist/config/index.cjs +391 -0
- package/dist/config/index.cjs.map +1 -0
- package/dist/config/index.d.cts +77 -0
- package/dist/config/index.d.ts +77 -0
- package/dist/config/index.js +38 -0
- package/dist/config/index.js.map +1 -0
- package/dist/constants/index.cjs +642 -0
- package/dist/constants/index.cjs.map +1 -0
- package/dist/constants/index.d.cts +448 -0
- package/dist/constants/index.d.ts +448 -0
- package/dist/constants/index.js +183 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/document-B3hnNr-F.d.cts +73 -0
- package/dist/document-B3hnNr-F.d.ts +73 -0
- package/dist/index.cjs +32 -32
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +15 -1044
- package/dist/index.d.ts +15 -1044
- package/dist/index.js +179 -1747
- package/dist/index.js.map +1 -1
- package/dist/layout/index.cjs +210 -0
- package/dist/layout/index.cjs.map +1 -0
- package/dist/layout/index.d.cts +80 -0
- package/dist/layout/index.d.ts +80 -0
- package/dist/layout/index.js +25 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/mindmap-DWS0WZT_.d.cts +118 -0
- package/dist/mindmap-DWS0WZT_.d.ts +118 -0
- package/dist/parser/index.cjs +739 -0
- package/dist/parser/index.cjs.map +1 -0
- package/dist/parser/index.d.cts +87 -0
- package/dist/parser/index.d.ts +87 -0
- package/dist/parser/index.js +43 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/performance/index.cjs +167 -0
- package/dist/performance/index.cjs.map +1 -0
- package/dist/performance/index.d.cts +40 -0
- package/dist/performance/index.d.ts +40 -0
- package/dist/performance/index.js +12 -0
- package/dist/performance/index.js.map +1 -0
- package/dist/types/index.cjs +19 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +8 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/viewport/index.cjs +131 -0
- package/dist/viewport/index.cjs.map +1 -0
- package/dist/viewport/index.d.cts +56 -0
- package/dist/viewport/index.d.ts +56 -0
- package/dist/viewport/index.js +26 -0
- package/dist/viewport/index.js.map +1 -0
- package/package.json +7 -2
- package/src/config/README.md +59 -0
- package/src/config/USAGE_EXAMPLES.md +285 -0
- package/src/config/index.ts +7 -0
- package/src/index.ts +1 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/constants/index.ts","../../src/constants/performanceConstants.ts","../../src/constants/design.ts","../../src/constants/renderConfig.ts"],"sourcesContent":["export * from './performanceConstants.js';\nexport * from './design.js';\nexport * from './renderConfig.js';\n","// ─── Performance & Rendering Constants ───────────────────────────────────────\n\n// ── FPS ───────────────────────────────────────────────────────────────────────\n\nexport const FPS_TARGET = 60;\nexport const FPS_WARNING_THRESHOLD = 45;\nexport const FPS_CRITICAL_THRESHOLD = 30;\nexport const TARGET_FRAME_TIME = 1000 / FPS_TARGET; // ~16.67 ms\nexport const MAX_FRAME_TIME = 18; // p95 threshold\n\n/** Legacy frame-rate targets kept for backward compatibility. */\nexport const FPS_TARGETS = {\n PAN_MIN: 30,\n ZOOM_TARGET: 60,\n WARNING_THRESHOLD: 20,\n} as const;\n\n// ── Timing Thresholds (ms) ────────────────────────────────────────────────────\n\nexport const TIMING_THRESHOLDS = {\n VIEWPORT_QUERY_MAX: 5,\n SPATIAL_UPDATE_MAX: 10,\n DRAG_RESPONSE_MAX: 16,\n LOAD_5K_TARGET: 2000,\n LOAD_10K_TARGET: 3000,\n VIEWPORT_DEBOUNCE: 100,\n SPATIAL_INDEX_BUILD: 50,\n} as const;\n\n// ── Memory Limits (MB) ────────────────────────────────────────────────────────\n\nexport const MEMORY_TARGET_MB = 500;\nexport const MEMORY_WARNING_MB = 600;\nexport const MEMORY_CRITICAL_MB = 800;\n\nexport const MEMORY_LIMITS = {\n MAX_10K_NODES: 500,\n MAX_GROWTH_PERCENT: 20,\n WARNING_THRESHOLD: 400,\n} as const;\n\n// ── Viewport Culling ──────────────────────────────────────────────────────────\n\nexport const VIEWPORT_MARGIN = 0.1;\nexport const MAX_VISIBLE_NODES = 800;\nexport const CULLING_QUERY_TIME_BUDGET = 5;\n\n// ── Spatial Index ─────────────────────────────────────────────────────────────\n\nexport const RBUSH_MAX_ENTRIES = 16;\nexport const SPATIAL_INDEX_BUILD_BUDGET = 50;\n\n// ── Node Dimensions ───────────────────────────────────────────────────────────\n\nexport const NODE_MIN_WIDTH = 200;\nexport const NODE_HEIGHT = 80;\nexport const NODE_PADDING = 40;\nexport const CHAR_WIDTH = 8;\nexport const TITLE_MAX_LENGTH = 150;\n\n// ── Visual Styling ────────────────────────────────────────────────────────────\n\nexport const CORNER_RADIUS = 8;\nexport const BORDER_WIDTH_NORMAL = 2;\nexport const BORDER_WIDTH_SELECTED = 3;\n\nexport const COLOR_SELECTED = '#1B2D4F';\nexport const COLOR_BORDER_LIGHT = '#4A3728';\nexport const COLOR_BORDER_DARK = '#FAF6F1';\nexport const COLOR_DEFAULT_NODE = '#FAF6F1';\n\n// ── Zoom Constraints ──────────────────────────────────────────────────────────\n\nexport const ZOOM_MIN = 0.05;\nexport const ZOOM_MAX = 5.0;\nexport const ZOOM_DEFAULT = 1.0;\nexport const ZOOM_STEP = 0.1;\nexport const ZOOM_WHEEL_SENSITIVITY = 0.001;\n\nexport const ZOOM_NAV_IN_THRESHOLD = 2.7;\nexport const ZOOM_NAV_OUT_THRESHOLD = 0.4;\nexport const TEXT_LABEL_HIDE_BELOW_ZOOM = 0.3;\n\n// ── Quality Level Presets ─────────────────────────────────────────────────────\n\nexport const QUALITY_HIGH = {\n shadows: true,\n bezierCurves: true,\n animations: true,\n textQuality: 'high' as const,\n antialiasing: true,\n};\n\nexport const QUALITY_MEDIUM = {\n shadows: false,\n bezierCurves: true,\n animations: true,\n textQuality: 'medium' as const,\n antialiasing: true,\n};\n\nexport const QUALITY_LOW = {\n shadows: false,\n bezierCurves: false,\n animations: false,\n textQuality: 'low' as const,\n antialiasing: false,\n};\n\n// ── Performance Monitoring ────────────────────────────────────────────────────\n\nexport const FPS_SAMPLE_WINDOW = 60;\nexport const FPS_UPDATE_INTERVAL = 1000;\nexport const MEMORY_CHECK_INTERVAL = 5000;\nexport const PERFORMANCE_TOAST_COOLDOWN = 10000;\n\n// ── Auto-Adjustment ───────────────────────────────────────────────────────────\n\nexport const FPS_DOWNGRADE_THRESHOLD = 45;\nexport const FPS_UPGRADE_THRESHOLD = 58;\nexport const FPS_STABILIZATION_FRAMES = 180;\n\n// ── Canvas Dimensions ─────────────────────────────────────────────────────────\n\nexport const DEFAULT_CANVAS_WIDTH = 1920;\nexport const DEFAULT_CANVAS_HEIGHT = 1080;\n\n// ── Interaction ───────────────────────────────────────────────────────────────\n\nexport const CLICK_THRESHOLD = 5;\nexport const DOUBLE_CLICK_DELAY = 300;\nexport const DRAG_START_DISTANCE = 10;\n\n// ── Data Validation ───────────────────────────────────────────────────────────\n\nexport const MAX_NODES = 20000;\nexport const CIRCULAR_REFERENCE_MAX_DEPTH = 1000;\n\n// ── Debounce / Throttle ───────────────────────────────────────────────────────\n\nexport const RESIZE_DEBOUNCE = 300;\nexport const SCROLL_THROTTLE = 16;\nexport const SEARCH_DEBOUNCE = 500;\n\n/** Node count thresholds that gate optimisation strategies. */\nexport const NODE_COUNT_THRESHOLDS = {\n SPATIAL_INDEX_MIN: 100,\n VIEWPORT_CULLING_MIN: 500,\n CANVAS_RENDERING_MIN: 2000,\n DOM_RENDERING_MAX: 5000,\n} as const;\n\n/** Viewport buffer configuration. */\nexport const VIEWPORT_CONFIG = {\n BUFFER_PERCENT: 0.2,\n MIN_VISIBLE_NODES: 10,\n} as const;\n","// ─── Design System Constants ──────────────────────────────────────────────────\n//\n// Single source of truth for all color tokens, typography, spacing, and\n// visual design constants used across the SDK and consuming apps.\n//\n// ## Color Priority\n// 1. Data file values (node.color, layer.backgroundColor)\n// 2. Fall back to these constants\n\n// ── Visualli Design System v2 ─────────────────────────────────────────────────\n\nexport const DS_COLORS = {\n light: {\n bgApp: '#F0EDE6',\n bgSurface: '#FAF8F4',\n bgInput: '#FFFFFF',\n border: '#DDD9D0',\n borderDivider: '#E8E4DC',\n primary: '#1B2D4F',\n primaryHover: '#243B68',\n textPrimary: '#1A1A18',\n textSecondary: '#6B6860',\n textMuted: '#747270',\n textOnPrimary: '#FAF8F4',\n hoverItem: 'rgba(27,45,79,0.07)',\n focusRing: 'rgba(27,45,79,0.40)',\n btnMuted: '#8E8C88',\n },\n dark: {\n bgApp: '#141412',\n bgSurface: '#1C1C1A',\n bgInput: '#262622',\n border: '#333330',\n borderDivider: '#2A2A28',\n primary: '#BB532D',\n primaryHover: '#CC6440',\n textPrimary: '#F0EDE6',\n textSecondary: '#B0ABA3',\n textMuted: '#8E8C88',\n textOnPrimary: '#FAF8F4',\n hoverItem: 'rgba(198,94,56,0.12)',\n focusRing: 'rgba(198,94,56,0.50)',\n btnMuted: '#4A4845',\n },\n} as const;\n\nexport const DS_TYPOGRAPHY = {\n fontDisplay: \"'Nunito', sans-serif\",\n fontBody: \"'Nunito Sans', sans-serif\",\n logo: { size: '20px', weight: 800, letterSpacing: '0.04em' },\n heading: { size: '16px', weight: 700, letterSpacing: '-0.2px' },\n cta: { size: '11px', weight: 800, letterSpacing: '0.12em', transform: 'uppercase' as const },\n body: { size: '13px', weight: 400 },\n input: { size: '13px', weight: 300, style: 'italic' as const },\n search: { size: '12px', weight: 400 },\n username: { size: '13px', weight: 600 },\n avatar: { size: '11px', weight: 700 },\n footer: { size: '12px', weight: 400 },\n empty: { size: '11px', weight: 300, style: 'italic' as const },\n} as const;\n\nexport const DS_RADII = {\n sidebar: 16,\n input: 8,\n cta: 7,\n item: 6,\n swatch: 10,\n} as const;\n\n// ── Brand Colors ──────────────────────────────────────────────────────────────\n\nexport const BRAND_COLORS = {\n primary: {\n 50: '#EFF6FF',\n 100: '#DBEAFE',\n 200: '#BFDBFE',\n 300: '#93C5FD',\n 400: '#60A5FA',\n 500: '#3B82F6',\n 600: '#2563EB',\n 700: '#1D4ED8',\n 800: '#1E40AF',\n 900: '#1E3A8A',\n },\n secondary: {\n 50: '#F0FDF4',\n 100: '#DCFCE7',\n 200: '#BBF7D0',\n 300: '#86EFAC',\n 400: '#4ADE80',\n 500: '#10B981',\n 600: '#059669',\n 700: '#047857',\n 800: '#065F46',\n 900: '#064E3B',\n },\n accent: {\n purple: '#8B5CF6',\n cyan: '#06B6D4',\n sky: '#0EA5E9',\n lime: '#84CC16',\n amber: '#F59E0B',\n red: '#EF4444',\n },\n} as const;\n\n// ── Level Colors ──────────────────────────────────────────────────────────────\n\nexport const LEVEL_COLORS = {\n level0: BRAND_COLORS.primary[500],\n level1: BRAND_COLORS.primary[400],\n level2: BRAND_COLORS.primary[300],\n level3: BRAND_COLORS.primary[200],\n level4: BRAND_COLORS.primary[300],\n level5: BRAND_COLORS.primary[400],\n level6: BRAND_COLORS.primary[500],\n level7: BRAND_COLORS.primary[600],\n level8: BRAND_COLORS.primary[700],\n} as const;\n\nexport const LEVEL_COLOR_ARRAY = [\n LEVEL_COLORS.level0,\n LEVEL_COLORS.level1,\n LEVEL_COLORS.level2,\n LEVEL_COLORS.level3,\n LEVEL_COLORS.level4,\n LEVEL_COLORS.level5,\n LEVEL_COLORS.level6,\n LEVEL_COLORS.level7,\n LEVEL_COLORS.level8,\n] as const;\n\nexport const PARENT_FALLBACK_COLORS = [\n '#12C7D3', '#325E8C', '#8A70A6', '#F54A57', '#FF6C4D',\n '#F28C16', '#FFD347', '#7F7F7F', '#8D8D8D',\n] as const;\n\nexport const SEMANTIC_COLORS = {\n success: BRAND_COLORS.secondary[500],\n error: BRAND_COLORS.accent.red,\n warning: BRAND_COLORS.accent.amber,\n info: BRAND_COLORS.primary[500],\n} as const;\n\n// ── Theme Colors ──────────────────────────────────────────────────────────────\n\nexport const THEME_COLORS = {\n light: {\n background: { primary: '#FAF8F4', secondary: '#F0EDE6', tertiary: '#FFFFFF' },\n text: { primary: '#1A1A18', secondary: '#6B6860', tertiary: '#747270' },\n border: { primary: '#DDD9D0', secondary: '#E8E4DC' },\n },\n dark: {\n background: { primary: '#1C1C1A', secondary: '#141412', tertiary: '#262622' },\n text: { primary: '#F0EDE6', secondary: '#B0ABA3', tertiary: '#8E8C88' },\n border: { primary: '#333330', secondary: '#2A2A28' },\n },\n} as const;\n\n// ── Canvas Node Colors ────────────────────────────────────────────────────────\n\nexport const CANVAS_COLORS = {\n node: {\n border: '#FFFFFF',\n titleColor: '#1e1b4b',\n badgeBackground: '#FFC107',\n badgeStroke: '#fcd34d',\n },\n} as const;\n\n// ── Spacing ───────────────────────────────────────────────────────────────────\n\nexport const SPACING = {\n xs: 4,\n sm: 8,\n md: 16,\n lg: 24,\n xl: 32,\n '2xl': 48,\n '3xl': 64,\n '4xl': 96,\n} as const;\n\nexport const LAYOUT_SPACING = {\n nodeSpacing: 200,\n levelSpacing: 150,\n containerPadding: 20,\n gridSize: 50,\n} as const;\n\n// ── Typography ────────────────────────────────────────────────────────────────\n\nexport const FONTS = {\n primary: \"'Inter', sans-serif\",\n secondary: \"'Poppins', sans-serif\",\n mono: \"'Roboto Mono', monospace\",\n} as const;\n\nexport const FONT_SIZES = {\n xs: '0.75rem',\n sm: '0.875rem',\n base: '1rem',\n lg: '1.125rem',\n xl: '1.25rem',\n '2xl': '1.5rem',\n '3xl': '1.875rem',\n '4xl': '2.25rem',\n} as const;\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\n/** Get a level color, cycling back to level 0 for levels > 8. */\nexport function getColorForLevel(level: number): string {\n return LEVEL_COLOR_ARRAY[level % LEVEL_COLOR_ARRAY.length];\n}\n\n/**\n * Darken a hex color by reducing HSL lightness.\n * Returns a monochromatic darker version — used for border/stroke colors.\n * Falls back to the original string if parsing fails.\n */\nexport function darkenHexColor(hex: string, amount: number = 0.22): string {\n if (!hex || !hex.startsWith('#')) return hex;\n let r: number, g: number, b: number;\n if (hex.length === 4) {\n r = parseInt(hex[1] + hex[1], 16);\n g = parseInt(hex[2] + hex[2], 16);\n b = parseInt(hex[3] + hex[3], 16);\n } else if (hex.length === 7) {\n r = parseInt(hex.slice(1, 3), 16);\n g = parseInt(hex.slice(3, 5), 16);\n b = parseInt(hex.slice(5, 7), 16);\n } else {\n return hex;\n }\n if (isNaN(r) || isNaN(g) || isNaN(b)) return hex;\n const rn = r / 255, gn = g / 255, bn = b / 255;\n const cmax = Math.max(rn, gn, bn), cmin = Math.min(rn, gn, bn);\n const d = cmax - cmin;\n const l = (cmax + cmin) / 2;\n const s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));\n let h = 0;\n if (d !== 0) {\n const seg = cmax === rn ? (gn - bn) / d : cmax === gn ? (bn - rn) / d + 2 : (rn - gn) / d + 4;\n h = ((seg * 60) + 360) % 360;\n }\n const newL = Math.max(0, l - amount);\n const c2 = (1 - Math.abs(2 * newL - 1)) * s;\n const x2 = c2 * (1 - Math.abs(((h / 60) % 2) - 1));\n const m2 = newL - c2 / 2;\n let r1 = 0, g1 = 0, b1 = 0;\n if (h < 60) { r1 = c2; g1 = x2; b1 = 0; }\n else if (h < 120) { r1 = x2; g1 = c2; b1 = 0; }\n else if (h < 180) { r1 = 0; g1 = c2; b1 = x2; }\n else if (h < 240) { r1 = 0; g1 = x2; b1 = c2; }\n else if (h < 300) { r1 = x2; g1 = 0; b1 = c2; }\n else { r1 = c2; g1 = 0; b1 = x2; }\n const toHex = (v: number) => Math.round((v + m2) * 255).toString(16).padStart(2, '0');\n return `#${toHex(r1)}${toHex(g1)}${toHex(b1)}`;\n}\n\nexport function getThemeBackground(\n isDark: boolean,\n variant: 'primary' | 'secondary' | 'tertiary' = 'primary',\n): string {\n return isDark ? THEME_COLORS.dark.background[variant] : THEME_COLORS.light.background[variant];\n}\n\nexport function getThemeText(\n isDark: boolean,\n variant: 'primary' | 'secondary' | 'tertiary' = 'primary',\n): string {\n return isDark ? THEME_COLORS.dark.text[variant] : THEME_COLORS.light.text[variant];\n}\n\nexport function getThemeBorder(\n isDark: boolean,\n variant: 'primary' | 'secondary' = 'primary',\n): string {\n return isDark ? THEME_COLORS.dark.border[variant] : THEME_COLORS.light.border[variant];\n}\n","// ─── Render Configuration ─────────────────────────────────────────────────────\n\nimport type { RenderConfig } from '../types/mindmap.js';\nimport {\n FPS_TARGET,\n MEMORY_TARGET_MB,\n QUALITY_HIGH,\n QUALITY_MEDIUM,\n QUALITY_LOW,\n NODE_COUNT_THRESHOLDS,\n} from './performanceConstants.js';\n\n// ── Defaults ──────────────────────────────────────────────────────────────────\n\nexport const DEFAULT_RENDER_CONFIG: RenderConfig = {\n renderMode: 'canvas',\n qualityLevel: 'high',\n cullingEnabled: false,\n fpsTarget: FPS_TARGET,\n memoryLimit: MEMORY_TARGET_MB,\n};\n\nexport const SIMPLIFIED_RENDER_CONFIG: RenderConfig = {\n renderMode: 'simplified',\n qualityLevel: 'low',\n cullingEnabled: true,\n fpsTarget: 30,\n memoryLimit: 400,\n};\n\n// ── Quality Map ───────────────────────────────────────────────────────────────\n\nexport const QUALITY_SETTINGS = {\n high: QUALITY_HIGH,\n medium: QUALITY_MEDIUM,\n low: QUALITY_LOW,\n} as const;\n\n// ── Feature Flags ─────────────────────────────────────────────────────────────\n\nexport const FEATURE_FLAGS = {\n viewportCulling: true,\n spatialIndexing: true,\n shadows: true,\n bezierCurves: true,\n animations: true,\n branchBadges: true,\n autoQualityAdjustment: true,\n performanceMonitoring: true,\n performanceToasts: true,\n debugOverlay: false,\n showFPS: false,\n showMemory: false,\n showVisibleCount: false,\n} as const;\n\n// ── Render Modes ──────────────────────────────────────────────────────────────\n\nexport type RenderMode = RenderConfig['renderMode'];\nexport type QualityLevel = RenderConfig['qualityLevel'];\n\nexport const RENDER_MODES = {\n canvas: {\n name: 'Canvas',\n description: 'Full Konva canvas rendering with all features',\n features: { culling: true, shadows: true, bezierCurves: true, animations: true },\n },\n simplified: {\n name: 'Simplified',\n description: 'Reduced feature set for low-end devices',\n features: { culling: true, shadows: false, bezierCurves: false, animations: false },\n },\n} as const;\n\nexport const QUALITY_LEVELS = {\n high: { name: 'High', description: 'All visual features enabled', targetFPS: 60, features: QUALITY_HIGH },\n medium: { name: 'Medium', description: 'Shadows disabled, other features enabled', targetFPS: 60, features: QUALITY_MEDIUM },\n low: { name: 'Low', description: 'Minimal visual features, max performance', targetFPS: 30, features: QUALITY_LOW },\n} as const;\n\n// ── Auto-Adjustment Helpers ───────────────────────────────────────────────────\n\nexport function getOptimalQualityLevel(\n currentFPS: number,\n currentQuality: QualityLevel,\n): QualityLevel {\n if (currentFPS < 45 && currentQuality === 'high') return 'medium';\n if (currentFPS < 30 && currentQuality === 'medium') return 'low';\n if (currentFPS > 58 && currentQuality === 'low') return 'medium';\n if (currentFPS > 58 && currentQuality === 'medium') return 'high';\n return currentQuality;\n}\n\nexport function getRenderConfigForQuality(quality: QualityLevel): Partial<RenderConfig> {\n return { qualityLevel: quality, fpsTarget: QUALITY_LEVELS[quality].targetFPS };\n}\n\nexport function isFeatureEnabled(\n featureName: keyof typeof FEATURE_FLAGS,\n config: RenderConfig,\n): boolean {\n if (!FEATURE_FLAGS[featureName]) return false;\n\n const qs = QUALITY_SETTINGS[config.qualityLevel];\n switch (featureName) {\n case 'shadows': return qs.shadows;\n case 'bezierCurves': return qs.bezierCurves;\n case 'animations': return qs.animations;\n default: return FEATURE_FLAGS[featureName] as boolean;\n }\n}\n\n// ── Device Detection ──────────────────────────────────────────────────────────\n\n/**\n * Recommend a render config based on detected device memory (browser only).\n * Falls back to SIMPLIFIED_RENDER_CONFIG when the Performance Memory API is\n * unavailable or memory is constrained.\n */\nexport function getRecommendedRenderConfig(): RenderConfig {\n if (typeof performance === 'undefined' || !(performance as unknown as Record<string, unknown>)['memory']) {\n return SIMPLIFIED_RENDER_CONFIG;\n }\n\n const memory = (performance as unknown as Record<string, unknown>)['memory'] as Record<string, number>;\n if (memory?.['jsHeapSizeLimit'] && memory['jsHeapSizeLimit'] < 512 * 1024 * 1024) {\n return SIMPLIFIED_RENDER_CONFIG;\n }\n\n return DEFAULT_RENDER_CONFIG;\n}\n\n/** Re-export so consumers need only one import. */\nexport { NODE_COUNT_THRESHOLDS };\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
import { R as RenderConfig } from '../mindmap-DWS0WZT_.cjs';
|
|
2
|
+
|
|
3
|
+
declare const FPS_TARGET = 60;
|
|
4
|
+
declare const FPS_WARNING_THRESHOLD = 45;
|
|
5
|
+
declare const FPS_CRITICAL_THRESHOLD = 30;
|
|
6
|
+
declare const TARGET_FRAME_TIME: number;
|
|
7
|
+
declare const MAX_FRAME_TIME = 18;
|
|
8
|
+
/** Legacy frame-rate targets kept for backward compatibility. */
|
|
9
|
+
declare const FPS_TARGETS: {
|
|
10
|
+
readonly PAN_MIN: 30;
|
|
11
|
+
readonly ZOOM_TARGET: 60;
|
|
12
|
+
readonly WARNING_THRESHOLD: 20;
|
|
13
|
+
};
|
|
14
|
+
declare const TIMING_THRESHOLDS: {
|
|
15
|
+
readonly VIEWPORT_QUERY_MAX: 5;
|
|
16
|
+
readonly SPATIAL_UPDATE_MAX: 10;
|
|
17
|
+
readonly DRAG_RESPONSE_MAX: 16;
|
|
18
|
+
readonly LOAD_5K_TARGET: 2000;
|
|
19
|
+
readonly LOAD_10K_TARGET: 3000;
|
|
20
|
+
readonly VIEWPORT_DEBOUNCE: 100;
|
|
21
|
+
readonly SPATIAL_INDEX_BUILD: 50;
|
|
22
|
+
};
|
|
23
|
+
declare const MEMORY_TARGET_MB = 500;
|
|
24
|
+
declare const MEMORY_WARNING_MB = 600;
|
|
25
|
+
declare const MEMORY_CRITICAL_MB = 800;
|
|
26
|
+
declare const MEMORY_LIMITS: {
|
|
27
|
+
readonly MAX_10K_NODES: 500;
|
|
28
|
+
readonly MAX_GROWTH_PERCENT: 20;
|
|
29
|
+
readonly WARNING_THRESHOLD: 400;
|
|
30
|
+
};
|
|
31
|
+
declare const VIEWPORT_MARGIN = 0.1;
|
|
32
|
+
declare const MAX_VISIBLE_NODES = 800;
|
|
33
|
+
declare const CULLING_QUERY_TIME_BUDGET = 5;
|
|
34
|
+
declare const RBUSH_MAX_ENTRIES = 16;
|
|
35
|
+
declare const SPATIAL_INDEX_BUILD_BUDGET = 50;
|
|
36
|
+
declare const NODE_MIN_WIDTH = 200;
|
|
37
|
+
declare const NODE_HEIGHT = 80;
|
|
38
|
+
declare const NODE_PADDING = 40;
|
|
39
|
+
declare const CHAR_WIDTH = 8;
|
|
40
|
+
declare const TITLE_MAX_LENGTH = 150;
|
|
41
|
+
declare const CORNER_RADIUS = 8;
|
|
42
|
+
declare const BORDER_WIDTH_NORMAL = 2;
|
|
43
|
+
declare const BORDER_WIDTH_SELECTED = 3;
|
|
44
|
+
declare const COLOR_SELECTED = "#1B2D4F";
|
|
45
|
+
declare const COLOR_BORDER_LIGHT = "#4A3728";
|
|
46
|
+
declare const COLOR_BORDER_DARK = "#FAF6F1";
|
|
47
|
+
declare const COLOR_DEFAULT_NODE = "#FAF6F1";
|
|
48
|
+
declare const ZOOM_MIN = 0.05;
|
|
49
|
+
declare const ZOOM_MAX = 5;
|
|
50
|
+
declare const ZOOM_DEFAULT = 1;
|
|
51
|
+
declare const ZOOM_STEP = 0.1;
|
|
52
|
+
declare const ZOOM_WHEEL_SENSITIVITY = 0.001;
|
|
53
|
+
declare const ZOOM_NAV_IN_THRESHOLD = 2.7;
|
|
54
|
+
declare const ZOOM_NAV_OUT_THRESHOLD = 0.4;
|
|
55
|
+
declare const TEXT_LABEL_HIDE_BELOW_ZOOM = 0.3;
|
|
56
|
+
declare const QUALITY_HIGH: {
|
|
57
|
+
shadows: boolean;
|
|
58
|
+
bezierCurves: boolean;
|
|
59
|
+
animations: boolean;
|
|
60
|
+
textQuality: "high";
|
|
61
|
+
antialiasing: boolean;
|
|
62
|
+
};
|
|
63
|
+
declare const QUALITY_MEDIUM: {
|
|
64
|
+
shadows: boolean;
|
|
65
|
+
bezierCurves: boolean;
|
|
66
|
+
animations: boolean;
|
|
67
|
+
textQuality: "medium";
|
|
68
|
+
antialiasing: boolean;
|
|
69
|
+
};
|
|
70
|
+
declare const QUALITY_LOW: {
|
|
71
|
+
shadows: boolean;
|
|
72
|
+
bezierCurves: boolean;
|
|
73
|
+
animations: boolean;
|
|
74
|
+
textQuality: "low";
|
|
75
|
+
antialiasing: boolean;
|
|
76
|
+
};
|
|
77
|
+
declare const FPS_SAMPLE_WINDOW = 60;
|
|
78
|
+
declare const FPS_UPDATE_INTERVAL = 1000;
|
|
79
|
+
declare const MEMORY_CHECK_INTERVAL = 5000;
|
|
80
|
+
declare const PERFORMANCE_TOAST_COOLDOWN = 10000;
|
|
81
|
+
declare const FPS_DOWNGRADE_THRESHOLD = 45;
|
|
82
|
+
declare const FPS_UPGRADE_THRESHOLD = 58;
|
|
83
|
+
declare const FPS_STABILIZATION_FRAMES = 180;
|
|
84
|
+
declare const DEFAULT_CANVAS_WIDTH = 1920;
|
|
85
|
+
declare const DEFAULT_CANVAS_HEIGHT = 1080;
|
|
86
|
+
declare const CLICK_THRESHOLD = 5;
|
|
87
|
+
declare const DOUBLE_CLICK_DELAY = 300;
|
|
88
|
+
declare const DRAG_START_DISTANCE = 10;
|
|
89
|
+
declare const MAX_NODES = 20000;
|
|
90
|
+
declare const CIRCULAR_REFERENCE_MAX_DEPTH = 1000;
|
|
91
|
+
declare const RESIZE_DEBOUNCE = 300;
|
|
92
|
+
declare const SCROLL_THROTTLE = 16;
|
|
93
|
+
declare const SEARCH_DEBOUNCE = 500;
|
|
94
|
+
/** Node count thresholds that gate optimisation strategies. */
|
|
95
|
+
declare const NODE_COUNT_THRESHOLDS: {
|
|
96
|
+
readonly SPATIAL_INDEX_MIN: 100;
|
|
97
|
+
readonly VIEWPORT_CULLING_MIN: 500;
|
|
98
|
+
readonly CANVAS_RENDERING_MIN: 2000;
|
|
99
|
+
readonly DOM_RENDERING_MAX: 5000;
|
|
100
|
+
};
|
|
101
|
+
/** Viewport buffer configuration. */
|
|
102
|
+
declare const VIEWPORT_CONFIG: {
|
|
103
|
+
readonly BUFFER_PERCENT: 0.2;
|
|
104
|
+
readonly MIN_VISIBLE_NODES: 10;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
declare const DS_COLORS: {
|
|
108
|
+
readonly light: {
|
|
109
|
+
readonly bgApp: "#F0EDE6";
|
|
110
|
+
readonly bgSurface: "#FAF8F4";
|
|
111
|
+
readonly bgInput: "#FFFFFF";
|
|
112
|
+
readonly border: "#DDD9D0";
|
|
113
|
+
readonly borderDivider: "#E8E4DC";
|
|
114
|
+
readonly primary: "#1B2D4F";
|
|
115
|
+
readonly primaryHover: "#243B68";
|
|
116
|
+
readonly textPrimary: "#1A1A18";
|
|
117
|
+
readonly textSecondary: "#6B6860";
|
|
118
|
+
readonly textMuted: "#747270";
|
|
119
|
+
readonly textOnPrimary: "#FAF8F4";
|
|
120
|
+
readonly hoverItem: "rgba(27,45,79,0.07)";
|
|
121
|
+
readonly focusRing: "rgba(27,45,79,0.40)";
|
|
122
|
+
readonly btnMuted: "#8E8C88";
|
|
123
|
+
};
|
|
124
|
+
readonly dark: {
|
|
125
|
+
readonly bgApp: "#141412";
|
|
126
|
+
readonly bgSurface: "#1C1C1A";
|
|
127
|
+
readonly bgInput: "#262622";
|
|
128
|
+
readonly border: "#333330";
|
|
129
|
+
readonly borderDivider: "#2A2A28";
|
|
130
|
+
readonly primary: "#BB532D";
|
|
131
|
+
readonly primaryHover: "#CC6440";
|
|
132
|
+
readonly textPrimary: "#F0EDE6";
|
|
133
|
+
readonly textSecondary: "#B0ABA3";
|
|
134
|
+
readonly textMuted: "#8E8C88";
|
|
135
|
+
readonly textOnPrimary: "#FAF8F4";
|
|
136
|
+
readonly hoverItem: "rgba(198,94,56,0.12)";
|
|
137
|
+
readonly focusRing: "rgba(198,94,56,0.50)";
|
|
138
|
+
readonly btnMuted: "#4A4845";
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
declare const DS_TYPOGRAPHY: {
|
|
142
|
+
readonly fontDisplay: "'Nunito', sans-serif";
|
|
143
|
+
readonly fontBody: "'Nunito Sans', sans-serif";
|
|
144
|
+
readonly logo: {
|
|
145
|
+
readonly size: "20px";
|
|
146
|
+
readonly weight: 800;
|
|
147
|
+
readonly letterSpacing: "0.04em";
|
|
148
|
+
};
|
|
149
|
+
readonly heading: {
|
|
150
|
+
readonly size: "16px";
|
|
151
|
+
readonly weight: 700;
|
|
152
|
+
readonly letterSpacing: "-0.2px";
|
|
153
|
+
};
|
|
154
|
+
readonly cta: {
|
|
155
|
+
readonly size: "11px";
|
|
156
|
+
readonly weight: 800;
|
|
157
|
+
readonly letterSpacing: "0.12em";
|
|
158
|
+
readonly transform: "uppercase";
|
|
159
|
+
};
|
|
160
|
+
readonly body: {
|
|
161
|
+
readonly size: "13px";
|
|
162
|
+
readonly weight: 400;
|
|
163
|
+
};
|
|
164
|
+
readonly input: {
|
|
165
|
+
readonly size: "13px";
|
|
166
|
+
readonly weight: 300;
|
|
167
|
+
readonly style: "italic";
|
|
168
|
+
};
|
|
169
|
+
readonly search: {
|
|
170
|
+
readonly size: "12px";
|
|
171
|
+
readonly weight: 400;
|
|
172
|
+
};
|
|
173
|
+
readonly username: {
|
|
174
|
+
readonly size: "13px";
|
|
175
|
+
readonly weight: 600;
|
|
176
|
+
};
|
|
177
|
+
readonly avatar: {
|
|
178
|
+
readonly size: "11px";
|
|
179
|
+
readonly weight: 700;
|
|
180
|
+
};
|
|
181
|
+
readonly footer: {
|
|
182
|
+
readonly size: "12px";
|
|
183
|
+
readonly weight: 400;
|
|
184
|
+
};
|
|
185
|
+
readonly empty: {
|
|
186
|
+
readonly size: "11px";
|
|
187
|
+
readonly weight: 300;
|
|
188
|
+
readonly style: "italic";
|
|
189
|
+
};
|
|
190
|
+
};
|
|
191
|
+
declare const DS_RADII: {
|
|
192
|
+
readonly sidebar: 16;
|
|
193
|
+
readonly input: 8;
|
|
194
|
+
readonly cta: 7;
|
|
195
|
+
readonly item: 6;
|
|
196
|
+
readonly swatch: 10;
|
|
197
|
+
};
|
|
198
|
+
declare const BRAND_COLORS: {
|
|
199
|
+
readonly primary: {
|
|
200
|
+
readonly 50: "#EFF6FF";
|
|
201
|
+
readonly 100: "#DBEAFE";
|
|
202
|
+
readonly 200: "#BFDBFE";
|
|
203
|
+
readonly 300: "#93C5FD";
|
|
204
|
+
readonly 400: "#60A5FA";
|
|
205
|
+
readonly 500: "#3B82F6";
|
|
206
|
+
readonly 600: "#2563EB";
|
|
207
|
+
readonly 700: "#1D4ED8";
|
|
208
|
+
readonly 800: "#1E40AF";
|
|
209
|
+
readonly 900: "#1E3A8A";
|
|
210
|
+
};
|
|
211
|
+
readonly secondary: {
|
|
212
|
+
readonly 50: "#F0FDF4";
|
|
213
|
+
readonly 100: "#DCFCE7";
|
|
214
|
+
readonly 200: "#BBF7D0";
|
|
215
|
+
readonly 300: "#86EFAC";
|
|
216
|
+
readonly 400: "#4ADE80";
|
|
217
|
+
readonly 500: "#10B981";
|
|
218
|
+
readonly 600: "#059669";
|
|
219
|
+
readonly 700: "#047857";
|
|
220
|
+
readonly 800: "#065F46";
|
|
221
|
+
readonly 900: "#064E3B";
|
|
222
|
+
};
|
|
223
|
+
readonly accent: {
|
|
224
|
+
readonly purple: "#8B5CF6";
|
|
225
|
+
readonly cyan: "#06B6D4";
|
|
226
|
+
readonly sky: "#0EA5E9";
|
|
227
|
+
readonly lime: "#84CC16";
|
|
228
|
+
readonly amber: "#F59E0B";
|
|
229
|
+
readonly red: "#EF4444";
|
|
230
|
+
};
|
|
231
|
+
};
|
|
232
|
+
declare const LEVEL_COLORS: {
|
|
233
|
+
readonly level0: "#3B82F6";
|
|
234
|
+
readonly level1: "#60A5FA";
|
|
235
|
+
readonly level2: "#93C5FD";
|
|
236
|
+
readonly level3: "#BFDBFE";
|
|
237
|
+
readonly level4: "#93C5FD";
|
|
238
|
+
readonly level5: "#60A5FA";
|
|
239
|
+
readonly level6: "#3B82F6";
|
|
240
|
+
readonly level7: "#2563EB";
|
|
241
|
+
readonly level8: "#1D4ED8";
|
|
242
|
+
};
|
|
243
|
+
declare const LEVEL_COLOR_ARRAY: readonly ["#3B82F6", "#60A5FA", "#93C5FD", "#BFDBFE", "#93C5FD", "#60A5FA", "#3B82F6", "#2563EB", "#1D4ED8"];
|
|
244
|
+
declare const PARENT_FALLBACK_COLORS: readonly ["#12C7D3", "#325E8C", "#8A70A6", "#F54A57", "#FF6C4D", "#F28C16", "#FFD347", "#7F7F7F", "#8D8D8D"];
|
|
245
|
+
declare const SEMANTIC_COLORS: {
|
|
246
|
+
readonly success: "#10B981";
|
|
247
|
+
readonly error: "#EF4444";
|
|
248
|
+
readonly warning: "#F59E0B";
|
|
249
|
+
readonly info: "#3B82F6";
|
|
250
|
+
};
|
|
251
|
+
declare const THEME_COLORS: {
|
|
252
|
+
readonly light: {
|
|
253
|
+
readonly background: {
|
|
254
|
+
readonly primary: "#FAF8F4";
|
|
255
|
+
readonly secondary: "#F0EDE6";
|
|
256
|
+
readonly tertiary: "#FFFFFF";
|
|
257
|
+
};
|
|
258
|
+
readonly text: {
|
|
259
|
+
readonly primary: "#1A1A18";
|
|
260
|
+
readonly secondary: "#6B6860";
|
|
261
|
+
readonly tertiary: "#747270";
|
|
262
|
+
};
|
|
263
|
+
readonly border: {
|
|
264
|
+
readonly primary: "#DDD9D0";
|
|
265
|
+
readonly secondary: "#E8E4DC";
|
|
266
|
+
};
|
|
267
|
+
};
|
|
268
|
+
readonly dark: {
|
|
269
|
+
readonly background: {
|
|
270
|
+
readonly primary: "#1C1C1A";
|
|
271
|
+
readonly secondary: "#141412";
|
|
272
|
+
readonly tertiary: "#262622";
|
|
273
|
+
};
|
|
274
|
+
readonly text: {
|
|
275
|
+
readonly primary: "#F0EDE6";
|
|
276
|
+
readonly secondary: "#B0ABA3";
|
|
277
|
+
readonly tertiary: "#8E8C88";
|
|
278
|
+
};
|
|
279
|
+
readonly border: {
|
|
280
|
+
readonly primary: "#333330";
|
|
281
|
+
readonly secondary: "#2A2A28";
|
|
282
|
+
};
|
|
283
|
+
};
|
|
284
|
+
};
|
|
285
|
+
declare const CANVAS_COLORS: {
|
|
286
|
+
readonly node: {
|
|
287
|
+
readonly border: "#FFFFFF";
|
|
288
|
+
readonly titleColor: "#1e1b4b";
|
|
289
|
+
readonly badgeBackground: "#FFC107";
|
|
290
|
+
readonly badgeStroke: "#fcd34d";
|
|
291
|
+
};
|
|
292
|
+
};
|
|
293
|
+
declare const SPACING: {
|
|
294
|
+
readonly xs: 4;
|
|
295
|
+
readonly sm: 8;
|
|
296
|
+
readonly md: 16;
|
|
297
|
+
readonly lg: 24;
|
|
298
|
+
readonly xl: 32;
|
|
299
|
+
readonly '2xl': 48;
|
|
300
|
+
readonly '3xl': 64;
|
|
301
|
+
readonly '4xl': 96;
|
|
302
|
+
};
|
|
303
|
+
declare const LAYOUT_SPACING: {
|
|
304
|
+
readonly nodeSpacing: 200;
|
|
305
|
+
readonly levelSpacing: 150;
|
|
306
|
+
readonly containerPadding: 20;
|
|
307
|
+
readonly gridSize: 50;
|
|
308
|
+
};
|
|
309
|
+
declare const FONTS: {
|
|
310
|
+
readonly primary: "'Inter', sans-serif";
|
|
311
|
+
readonly secondary: "'Poppins', sans-serif";
|
|
312
|
+
readonly mono: "'Roboto Mono', monospace";
|
|
313
|
+
};
|
|
314
|
+
declare const FONT_SIZES: {
|
|
315
|
+
readonly xs: "0.75rem";
|
|
316
|
+
readonly sm: "0.875rem";
|
|
317
|
+
readonly base: "1rem";
|
|
318
|
+
readonly lg: "1.125rem";
|
|
319
|
+
readonly xl: "1.25rem";
|
|
320
|
+
readonly '2xl': "1.5rem";
|
|
321
|
+
readonly '3xl': "1.875rem";
|
|
322
|
+
readonly '4xl': "2.25rem";
|
|
323
|
+
};
|
|
324
|
+
/** Get a level color, cycling back to level 0 for levels > 8. */
|
|
325
|
+
declare function getColorForLevel(level: number): string;
|
|
326
|
+
/**
|
|
327
|
+
* Darken a hex color by reducing HSL lightness.
|
|
328
|
+
* Returns a monochromatic darker version — used for border/stroke colors.
|
|
329
|
+
* Falls back to the original string if parsing fails.
|
|
330
|
+
*/
|
|
331
|
+
declare function darkenHexColor(hex: string, amount?: number): string;
|
|
332
|
+
declare function getThemeBackground(isDark: boolean, variant?: 'primary' | 'secondary' | 'tertiary'): string;
|
|
333
|
+
declare function getThemeText(isDark: boolean, variant?: 'primary' | 'secondary' | 'tertiary'): string;
|
|
334
|
+
declare function getThemeBorder(isDark: boolean, variant?: 'primary' | 'secondary'): string;
|
|
335
|
+
|
|
336
|
+
declare const DEFAULT_RENDER_CONFIG: RenderConfig;
|
|
337
|
+
declare const SIMPLIFIED_RENDER_CONFIG: RenderConfig;
|
|
338
|
+
declare const QUALITY_SETTINGS: {
|
|
339
|
+
readonly high: {
|
|
340
|
+
shadows: boolean;
|
|
341
|
+
bezierCurves: boolean;
|
|
342
|
+
animations: boolean;
|
|
343
|
+
textQuality: "high";
|
|
344
|
+
antialiasing: boolean;
|
|
345
|
+
};
|
|
346
|
+
readonly medium: {
|
|
347
|
+
shadows: boolean;
|
|
348
|
+
bezierCurves: boolean;
|
|
349
|
+
animations: boolean;
|
|
350
|
+
textQuality: "medium";
|
|
351
|
+
antialiasing: boolean;
|
|
352
|
+
};
|
|
353
|
+
readonly low: {
|
|
354
|
+
shadows: boolean;
|
|
355
|
+
bezierCurves: boolean;
|
|
356
|
+
animations: boolean;
|
|
357
|
+
textQuality: "low";
|
|
358
|
+
antialiasing: boolean;
|
|
359
|
+
};
|
|
360
|
+
};
|
|
361
|
+
declare const FEATURE_FLAGS: {
|
|
362
|
+
readonly viewportCulling: true;
|
|
363
|
+
readonly spatialIndexing: true;
|
|
364
|
+
readonly shadows: true;
|
|
365
|
+
readonly bezierCurves: true;
|
|
366
|
+
readonly animations: true;
|
|
367
|
+
readonly branchBadges: true;
|
|
368
|
+
readonly autoQualityAdjustment: true;
|
|
369
|
+
readonly performanceMonitoring: true;
|
|
370
|
+
readonly performanceToasts: true;
|
|
371
|
+
readonly debugOverlay: false;
|
|
372
|
+
readonly showFPS: false;
|
|
373
|
+
readonly showMemory: false;
|
|
374
|
+
readonly showVisibleCount: false;
|
|
375
|
+
};
|
|
376
|
+
type RenderMode = RenderConfig['renderMode'];
|
|
377
|
+
type QualityLevel = RenderConfig['qualityLevel'];
|
|
378
|
+
declare const RENDER_MODES: {
|
|
379
|
+
readonly canvas: {
|
|
380
|
+
readonly name: "Canvas";
|
|
381
|
+
readonly description: "Full Konva canvas rendering with all features";
|
|
382
|
+
readonly features: {
|
|
383
|
+
readonly culling: true;
|
|
384
|
+
readonly shadows: true;
|
|
385
|
+
readonly bezierCurves: true;
|
|
386
|
+
readonly animations: true;
|
|
387
|
+
};
|
|
388
|
+
};
|
|
389
|
+
readonly simplified: {
|
|
390
|
+
readonly name: "Simplified";
|
|
391
|
+
readonly description: "Reduced feature set for low-end devices";
|
|
392
|
+
readonly features: {
|
|
393
|
+
readonly culling: true;
|
|
394
|
+
readonly shadows: false;
|
|
395
|
+
readonly bezierCurves: false;
|
|
396
|
+
readonly animations: false;
|
|
397
|
+
};
|
|
398
|
+
};
|
|
399
|
+
};
|
|
400
|
+
declare const QUALITY_LEVELS: {
|
|
401
|
+
readonly high: {
|
|
402
|
+
readonly name: "High";
|
|
403
|
+
readonly description: "All visual features enabled";
|
|
404
|
+
readonly targetFPS: 60;
|
|
405
|
+
readonly features: {
|
|
406
|
+
shadows: boolean;
|
|
407
|
+
bezierCurves: boolean;
|
|
408
|
+
animations: boolean;
|
|
409
|
+
textQuality: "high";
|
|
410
|
+
antialiasing: boolean;
|
|
411
|
+
};
|
|
412
|
+
};
|
|
413
|
+
readonly medium: {
|
|
414
|
+
readonly name: "Medium";
|
|
415
|
+
readonly description: "Shadows disabled, other features enabled";
|
|
416
|
+
readonly targetFPS: 60;
|
|
417
|
+
readonly features: {
|
|
418
|
+
shadows: boolean;
|
|
419
|
+
bezierCurves: boolean;
|
|
420
|
+
animations: boolean;
|
|
421
|
+
textQuality: "medium";
|
|
422
|
+
antialiasing: boolean;
|
|
423
|
+
};
|
|
424
|
+
};
|
|
425
|
+
readonly low: {
|
|
426
|
+
readonly name: "Low";
|
|
427
|
+
readonly description: "Minimal visual features, max performance";
|
|
428
|
+
readonly targetFPS: 30;
|
|
429
|
+
readonly features: {
|
|
430
|
+
shadows: boolean;
|
|
431
|
+
bezierCurves: boolean;
|
|
432
|
+
animations: boolean;
|
|
433
|
+
textQuality: "low";
|
|
434
|
+
antialiasing: boolean;
|
|
435
|
+
};
|
|
436
|
+
};
|
|
437
|
+
};
|
|
438
|
+
declare function getOptimalQualityLevel(currentFPS: number, currentQuality: QualityLevel): QualityLevel;
|
|
439
|
+
declare function getRenderConfigForQuality(quality: QualityLevel): Partial<RenderConfig>;
|
|
440
|
+
declare function isFeatureEnabled(featureName: keyof typeof FEATURE_FLAGS, config: RenderConfig): boolean;
|
|
441
|
+
/**
|
|
442
|
+
* Recommend a render config based on detected device memory (browser only).
|
|
443
|
+
* Falls back to SIMPLIFIED_RENDER_CONFIG when the Performance Memory API is
|
|
444
|
+
* unavailable or memory is constrained.
|
|
445
|
+
*/
|
|
446
|
+
declare function getRecommendedRenderConfig(): RenderConfig;
|
|
447
|
+
|
|
448
|
+
export { BORDER_WIDTH_NORMAL, BORDER_WIDTH_SELECTED, BRAND_COLORS, CANVAS_COLORS, CHAR_WIDTH, CIRCULAR_REFERENCE_MAX_DEPTH, CLICK_THRESHOLD, COLOR_BORDER_DARK, COLOR_BORDER_LIGHT, COLOR_DEFAULT_NODE, COLOR_SELECTED, CORNER_RADIUS, CULLING_QUERY_TIME_BUDGET, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_RENDER_CONFIG, DOUBLE_CLICK_DELAY, DRAG_START_DISTANCE, DS_COLORS, DS_RADII, DS_TYPOGRAPHY, FEATURE_FLAGS, FONTS, FONT_SIZES, FPS_CRITICAL_THRESHOLD, FPS_DOWNGRADE_THRESHOLD, FPS_SAMPLE_WINDOW, FPS_STABILIZATION_FRAMES, FPS_TARGET, FPS_TARGETS, FPS_UPDATE_INTERVAL, FPS_UPGRADE_THRESHOLD, FPS_WARNING_THRESHOLD, LAYOUT_SPACING, LEVEL_COLORS, LEVEL_COLOR_ARRAY, MAX_FRAME_TIME, MAX_NODES, MAX_VISIBLE_NODES, MEMORY_CHECK_INTERVAL, MEMORY_CRITICAL_MB, MEMORY_LIMITS, MEMORY_TARGET_MB, MEMORY_WARNING_MB, NODE_COUNT_THRESHOLDS, NODE_HEIGHT, NODE_MIN_WIDTH, NODE_PADDING, PARENT_FALLBACK_COLORS, PERFORMANCE_TOAST_COOLDOWN, QUALITY_HIGH, QUALITY_LEVELS, QUALITY_LOW, QUALITY_MEDIUM, QUALITY_SETTINGS, type QualityLevel, RBUSH_MAX_ENTRIES, RENDER_MODES, RESIZE_DEBOUNCE, type RenderMode, SCROLL_THROTTLE, SEARCH_DEBOUNCE, SEMANTIC_COLORS, SIMPLIFIED_RENDER_CONFIG, SPACING, SPATIAL_INDEX_BUILD_BUDGET, TARGET_FRAME_TIME, TEXT_LABEL_HIDE_BELOW_ZOOM, THEME_COLORS, TIMING_THRESHOLDS, TITLE_MAX_LENGTH, VIEWPORT_CONFIG, VIEWPORT_MARGIN, ZOOM_DEFAULT, ZOOM_MAX, ZOOM_MIN, ZOOM_NAV_IN_THRESHOLD, ZOOM_NAV_OUT_THRESHOLD, ZOOM_STEP, ZOOM_WHEEL_SENSITIVITY, darkenHexColor, getColorForLevel, getOptimalQualityLevel, getRecommendedRenderConfig, getRenderConfigForQuality, getThemeBackground, getThemeBorder, getThemeText, isFeatureEnabled };
|