UNPKG

gojongwon-circular-progress-bar

Version:

A lightweight, customizable circular progress bar component for web applications

174 lines (173 loc) 5.26 kB
/** * 색상 타입 정의 */ type ColorValue = string | ((progress: number) => string); /** * 원형 프로그레스 바의 설정 옵션 인터페이스 */ interface CircularProgressBarOptions { value: number; maxValue: number; size?: number; responsive?: boolean; gaugeWidth?: number; gaugeColor?: ColorValue; gaugeType?: "round" | "flat"; trailWidth?: number; trailColor?: ColorValue; textColor?: string; text?: string; textSize?: number; textFont?: string; animate?: boolean; duration?: number; className?: string; gaugeClassName?: string; trailClassName?: string; textClassName?: string; disableInlineStyles?: boolean; } /** * 원형 프로그레스 바 클래스 * SVG를 사용하여 원형 프로그레스 바를 생성하고 관리합니다. */ export declare class CircularProgressBar { private container; private options; private svg; private gauge; private trail; private text; private resizeObserver?; private currentSize; /** * CircularProgressBar 생성자 * @param container - 프로그레스 바를 렌더링할 HTML 요소 * @param options - 프로그레스 바 설정 옵션 */ constructor(container: HTMLElement, options: CircularProgressBarOptions); /** * 색상 값을 해석합니다. * 문자열이면 그대로 반환하고, 함수면 현재 진행률을 기반으로 색상을 계산합니다. * @param colorValue - 색상 값 (문자열 또는 함수) * @param progress - 현재 진행률 (0~1) * @returns 해석된 색상 문자열 */ private resolveColor; /** * SVG 요소와 원형 프로그레스 바를 초기화합니다. * 중심은 같고 너비의 중앙만 같도록 반지름을 조정합니다. */ private initialize; /** * 현재 값에 따라 프로그레스 바를 렌더링합니다. * stroke-dashoffset을 조정하여 진행률을 표시합니다. */ private render; /** * 프로그레스 바의 값을 설정합니다. * @param value - 새로운 값 (0 ~ maxValue 사이) */ setValue(value: number): void; /** * 현재 값을 반환합니다. * @returns 현재 값 */ getValue(): number; /** * 컨테이너의 크기를 가져옵니다. * @returns 컨테이너의 최소 크기 (가로, 세로 중 작은 값) */ private getContainerSize; /** * ResizeObserver를 설정하여 컨테이너 크기 변화를 감지합니다. */ private setupResizeObserver; /** * SVG 크기를 조정합니다. * @param newSize - 새로운 크기 */ private resize; /** * 인스턴스를 정리합니다. * ResizeObserver를 해제합니다. */ destroy(): void; /** * 게이지 색상을 동적으로 업데이트합니다. * @param color - 새로운 색상 (문자열 또는 함수) */ setGaugeColor(color: ColorValue): void; /** * 트레일 색상을 동적으로 업데이트합니다. * @param color - 새로운 색상 (문자열 또는 함수) */ setTrailColor(color: ColorValue): void; /** * 현재 게이지 색상을 반환합니다. * @returns 현재 게이지 색상 설정 */ getGaugeColor(): ColorValue; /** * 현재 트레일 색상을 반환합니다. * @returns 현재 트레일 색상 설정 */ getTrailColor(): ColorValue; /** * SVG 요소에 CSS 클래스를 설정합니다. * @param className - CSS 클래스명 */ setClassName(className: string): void; /** * 게이지 원에 CSS 클래스를 설정합니다. * @param className - CSS 클래스명 */ setGaugeClassName(className: string): void; /** * 트레일 원에 CSS 클래스를 설정합니다. * @param className - CSS 클래스명 */ setTrailClassName(className: string): void; /** * 텍스트에 CSS 클래스를 설정합니다. * @param className - CSS 클래스명 */ setTextClassName(className: string): void; /** * 인라인 스타일 활성화/비활성화를 설정합니다. * @param disable - true면 인라인 스타일 비활성화, false면 활성화 */ setDisableInlineStyles(disable: boolean): void; /** * 현재 CSS 클래스 설정을 반환합니다. * @returns CSS 클래스 설정 객체 */ getClassNames(): { className: string; gaugeClassName: string; trailClassName: string; textClassName: string; }; /** * SVG 요소를 반환합니다. * 외부에서 직접 스타일링할 때 사용합니다. * @returns SVG 요소 */ getSVGElement(): SVGElement; /** * 게이지 원 요소를 반환합니다. * @returns 게이지 원 요소 */ getGaugeElement(): SVGPathElement; /** * 트레일 원 요소를 반환합니다. * @returns 트레일 원 요소 */ getTrailElement(): SVGPathElement; /** * 텍스트 요소를 반환합니다. * @returns 텍스트 요소 */ getTextElement(): SVGTextElement; } export {};