UNPKG

@astrodraw/astrochart

Version:

A free and open-source JavaScript library for generating SVG charts to display planets in astrology.

320 lines (272 loc) 7.7 kB
import type SVG from './svg' export interface AspectData { degree: number; orbit: number; color: string } export type Aspect = Record<string, AspectData> export interface Dignity { name: string position: number orbit: number } export interface Settings { SYMBOL_SCALE: number COLOR_BACKGROUND: string POINTS_COLOR: string POINTS_TEXT_SIZE: number POINTS_STROKE: number SIGNS_COLOR: string SIGNS_STROKE: number MARGIN: number PADDING: number ID_CHART: string ID_RADIX: string ID_TRANSIT: string ID_ASPECTS: string ID_POINTS: string ID_SIGNS: string ID_CIRCLES: string ID_AXIS: string ID_CUSPS: string ID_RULER: string ID_BG: string CIRCLE_COLOR: string CIRCLE_STRONG: number LINE_COLOR: string INDOOR_CIRCLE_RADIUS_RATIO: number INNER_CIRCLE_RADIUS_RATIO: number RULER_RADIUS: number SYMBOL_SUN: string SYMBOL_MOON: string SYMBOL_MERCURY: string SYMBOL_VENUS: string SYMBOL_MARS: string SYMBOL_JUPITER: string SYMBOL_SATURN: string SYMBOL_URANUS: string SYMBOL_NEPTUNE: string SYMBOL_PLUTO: string SYMBOL_CHIRON: string SYMBOL_LILITH: string SYMBOL_NNODE: string SYMBOL_SNODE: string SYMBOL_FORTUNE: string SYMBOL_AS: string SYMBOL_DS: string SYMBOL_MC: string SYMBOL_IC: string SYMBOL_AXIS_FONT_COLOR: string SYMBOL_AXIS_STROKE: number SYMBOL_CUSP_1: string SYMBOL_CUSP_2: string SYMBOL_CUSP_3: string SYMBOL_CUSP_4: string SYMBOL_CUSP_5: string SYMBOL_CUSP_6: string SYMBOL_CUSP_7: string SYMBOL_CUSP_8: string SYMBOL_CUSP_9: string SYMBOL_CUSP_10: string SYMBOL_CUSP_11: string SYMBOL_CUSP_12: string CUSPS_STROKE: number CUSPS_FONT_COLOR: string SYMBOL_ARIES: string SYMBOL_TAURUS: string SYMBOL_GEMINI: string SYMBOL_CANCER: string SYMBOL_LEO: string SYMBOL_VIRGO: string SYMBOL_LIBRA: string SYMBOL_SCORPIO: string SYMBOL_SAGITTARIUS: string SYMBOL_CAPRICORN: string SYMBOL_AQUARIUS: string SYMBOL_PISCES: string SYMBOL_SIGNS: string[] COLOR_ARIES: string COLOR_TAURUS: string COLOR_GEMINI: string COLOR_CANCER: string COLOR_LEO: string COLOR_VIRGO: string COLOR_LIBRA: string COLOR_SCORPIO: string COLOR_SAGITTARIUS: string COLOR_CAPRICORN: string COLOR_AQUARIUS: string COLOR_PISCES: string COLORS_SIGNS: string[] CUSTOM_SYMBOL_FN: null | ((name: string, x: number, y: number, context: SVG) => Element) SHIFT_IN_DEGREES: number STROKE_ONLY: boolean ADD_CLICK_AREA: boolean COLLISION_RADIUS: number ASPECTS: Aspect SHOW_DIGNITIES_TEXT: boolean DIGNITIES_RULERSHIP: string DIGNITIES_DETRIMENT: string DIGNITIES_EXALTATION: string DIGNITIES_EXACT_EXALTATION: string DIGNITIES_FALL: string DIGNITIES_EXACT_EXALTATION_DEFAULT: Dignity[] ANIMATION_CUSPS_ROTATION_SPEED: number DEBUG: boolean } const settings: Settings = { // Scale of symbols SYMBOL_SCALE: 1, // BG color COLOR_BACKGROUND: '#fff', // Color of planet's symbols POINTS_COLOR: '#000', // Size of description text next to the planet: angle, retrograde, dignities, ... POINTS_TEXT_SIZE: 8, // Points strength of lines POINTS_STROKE: 1.8, // Font color of signs symbols SIGNS_COLOR: '#000', // Signs strength of lines SIGNS_STROKE: 1.5, // Chart margin MARGIN: 50, // px // Chart Padding PADDING: 18, // px // Module wrapper element ID ID_CHART: 'astrology', // Radix chart element ID ID_RADIX: 'radix', // Transit chart element ID ID_TRANSIT: 'transit', // Aspects wrapper element ID ID_ASPECTS: 'aspects', // Aspects wrapper element ID ID_POINTS: 'planets', // Signs wrapper element ID ID_SIGNS: 'signs', // Circles wrapper element ID ID_CIRCLES: 'circles', // Axis wrapper element ID ID_AXIS: 'axis', // Cusps wrapper element ID ID_CUSPS: 'cusps', // Cusps wrapper element ID ID_RULER: 'ruler', // Background wrapper element ID ID_BG: 'bg', // Color of circles in charts CIRCLE_COLOR: '#333', // Circles strength of lines CIRCLE_STRONG: 2, // Color of lines in charts LINE_COLOR: '#333', // radius / INDOOR_CIRCLE_RADIUS_RATIO INDOOR_CIRCLE_RADIUS_RATIO: 2, // radius - radius/INNER_CIRCLE_RADIUS_RATIO INNER_CIRCLE_RADIUS_RATIO: 8, // ( radius / INNER_CIRCLE_RADIUS_RATIO ) / RULER_RADIUS RULER_RADIUS: 4, // Points SYMBOL_SUN: 'Sun', SYMBOL_MOON: 'Moon', SYMBOL_MERCURY: 'Mercury', SYMBOL_VENUS: 'Venus', SYMBOL_MARS: 'Mars', SYMBOL_JUPITER: 'Jupiter', SYMBOL_SATURN: 'Saturn', SYMBOL_URANUS: 'Uranus', SYMBOL_NEPTUNE: 'Neptune', SYMBOL_PLUTO: 'Pluto', SYMBOL_CHIRON: 'Chiron', SYMBOL_LILITH: 'Lilith', SYMBOL_NNODE: 'NNode', SYMBOL_SNODE: 'SNode', SYMBOL_FORTUNE: 'Fortune', // Axis SYMBOL_AS: 'As', SYMBOL_DS: 'Ds', SYMBOL_MC: 'Mc', SYMBOL_IC: 'Ic', SYMBOL_AXIS_FONT_COLOR: '#333', SYMBOL_AXIS_STROKE: 1.6, // Cusps SYMBOL_CUSP_1: '1', SYMBOL_CUSP_2: '2', SYMBOL_CUSP_3: '3', SYMBOL_CUSP_4: '4', SYMBOL_CUSP_5: '5', SYMBOL_CUSP_6: '6', SYMBOL_CUSP_7: '7', SYMBOL_CUSP_8: '8', SYMBOL_CUSP_9: '9', SYMBOL_CUSP_10: '10', SYMBOL_CUSP_11: '11', SYMBOL_CUSP_12: '12', // Cusps strength of lines CUSPS_STROKE: 1, CUSPS_FONT_COLOR: '#000', // Signs SYMBOL_ARIES: 'Aries', SYMBOL_TAURUS: 'Taurus', SYMBOL_GEMINI: 'Gemini', SYMBOL_CANCER: 'Cancer', SYMBOL_LEO: 'Leo', SYMBOL_VIRGO: 'Virgo', SYMBOL_LIBRA: 'Libra', SYMBOL_SCORPIO: 'Scorpio', SYMBOL_SAGITTARIUS: 'Sagittarius', SYMBOL_CAPRICORN: 'Capricorn', SYMBOL_AQUARIUS: 'Aquarius', SYMBOL_PISCES: 'Pisces', SYMBOL_SIGNS: ['Aries', 'Taurus', 'Gemini', 'Cancer', 'Leo', 'Virgo', 'Libra', 'Scorpio', 'Sagittarius', 'Capricorn', 'Aquarius', 'Pisces'], // http://www.rapidtables.com/web/color/html-color-codes.htm COLOR_ARIES: '#FF4500', COLOR_TAURUS: '#8B4513', COLOR_GEMINI: '#87CEEB', COLOR_CANCER: '#27AE60', COLOR_LEO: '#FF4500', COLOR_VIRGO: '#8B4513', COLOR_LIBRA: '#87CEEB', COLOR_SCORPIO: '#27AE60', COLOR_SAGITTARIUS: '#FF4500', COLOR_CAPRICORN: '#8B4513', COLOR_AQUARIUS: '#87CEEB', COLOR_PISCES: '#27AE60', COLORS_SIGNS: ['#FF4500', '#8B4513', '#87CEEB', '#27AE60', '#FF4500', '#8B4513', '#87CEEB', '#27AE60', '#FF4500', '#8B4513', '#87CEEB', '#27AE60'], CUSTOM_SYMBOL_FN: null, // 0 degree is on the West SHIFT_IN_DEGREES: 180, // No fill, only stroke STROKE_ONLY: false, ADD_CLICK_AREA: false, // Planets collision circle radius for SYMBOL_SCALE : 1 // Scaling changes the collision radius COLLISION_RADIUS: 10, // px // Aspects ASPECTS: { conjunction: { degree: 0, orbit: 10, color: 'transparent' }, square: { degree: 90, orbit: 8, color: '#FF4500' }, trine: { degree: 120, orbit: 8, color: '#27AE60' }, opposition: { degree: 180, orbit: 10, color: '#27AE60' } }, // Dignities SHOW_DIGNITIES_TEXT: true, DIGNITIES_RULERSHIP: 'r', DIGNITIES_DETRIMENT: 'd', DIGNITIES_EXALTATION: 'e', DIGNITIES_EXACT_EXALTATION: 'E', DIGNITIES_FALL: 'f', // Source: Aleister Crowley DIGNITIES_EXACT_EXALTATION_DEFAULT: [ { name: 'Sun', position: 19, orbit: 2 }, // 19 Arise { name: 'Moon', position: 33, orbit: 2 }, // 3 Taurus { name: 'Mercury', position: 155, orbit: 2 }, // 15 Virgo { name: 'Venus', position: 357, orbit: 2 }, // 27 Pisces { name: 'Mars', position: 298, orbit: 2 }, // 28 Capricorn { name: 'Jupiter', position: 105, orbit: 2 }, // 15 Cancer { name: 'Saturn', position: 201, orbit: 2 }, // 21 Libra { name: 'NNode', position: 63, orbit: 2 } // 3 Geminy ], // 0 - 4 ANIMATION_CUSPS_ROTATION_SPEED: 2, DEBUG: false } const default_settings = settings export default default_settings