Coverage for src/jsoncrack_for_sphinx/utils/types.py: 100%
32 statements
« prev ^ index » next coverage.py v7.10.0, created at 2025-07-24 22:26 +0000
« prev ^ index » next coverage.py v7.10.0, created at 2025-07-24 22:26 +0000
1"""
2Enums and basic types for configuration.
3"""
5from enum import Enum
8class RenderMode:
9 """Render mode configuration classes."""
11 class OnClick:
12 """Click to load mode - loads when user clicks the button."""
14 def __init__(self) -> None:
15 self.mode = "onclick"
17 def __repr__(self) -> str:
18 return "RenderMode.OnClick()"
20 class OnLoad:
21 """Immediate load mode - loads when page loads."""
23 def __init__(self) -> None:
24 self.mode = "onload"
26 def __repr__(self) -> str:
27 return "RenderMode.OnLoad()"
29 class OnScreen:
30 """Viewport load mode - loads when element becomes visible."""
32 def __init__(self, threshold: float = 0.1, margin: str = "50px") -> None:
33 """
34 Args:
35 threshold: Visibility threshold (0.0-1.0)
36 margin: Root margin for early loading (e.g., '50px')
37 """
38 self.mode = "onscreen"
39 self.threshold = threshold
40 self.margin = margin
42 def __repr__(self) -> str:
43 return (
44 f"RenderMode.OnScreen(threshold={self.threshold}, "
45 f"margin='{self.margin}')"
46 )
49class Directions(Enum):
50 """JSONCrack visualization directions."""
52 TOP = "TOP"
53 RIGHT = "RIGHT"
54 DOWN = "DOWN"
55 LEFT = "LEFT"
58class Theme(Enum):
59 """Theme options."""
61 LIGHT = "light"
62 DARK = "dark"
63 AUTO = None # Auto-detect from page
66class PathSeparator(Enum):
67 """Path separator options for schema file search."""
69 DOT = "." # Use dots: Class.method.schema.json
70 SLASH = "/" # Use slashes: Class/method.schema.json
71 NONE = "none" # No separator: Classmethod.schema.json