UNPKG

realmap

Version:

Wooritech map chart component library

1,928 lines (1,918 loc) 388 kB
declare const PI: number; declare const PI_2: number; declare const ORG_ANGLE: number; declare const DEG_RAD: number; declare const RAD_DEG: number; type Path = string | any[]; declare const floor: (x: number) => number; declare const ceil: (x: number) => number; declare function fixnum(value: number): number; declare function pixel(v: number): string; /** * 123, '10%' 형식으로 크기를 지정한다. */ type PercentSize = string | number; interface IPercentSize { size: number; fixed: boolean; } declare function parsePercentSize(sv: PercentSize, enableNull: boolean): IPercentSize; declare function calcPercent(size: IPercentSize, domain: number, def?: number): number; /** * SVG 스타일 속성.<br/> * {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute SVG 속성}을 참조한다.<br/> */ interface SVGStyles { transform?: string; transformBox?: string; transformOrigin?: string; /** * SVG에 적용되는 css {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill fill} 스타일 속성.<br/> */ fill?: string; /** * SVG에 적용되는 css {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/filter filter} 스타일 속성.<br/> */ filter?: string; /** * SVG에 적용되는 css {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-opacity fill-opacity} 스타일 속성.<br/> */ fillOpacity?: string; /** * SVG에 적용되는 css {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke stroke} 스타일 속성.<br/> */ stroke?: string; /** * SVG에 적용되는 css {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-width stroke-width} 스타일 속성.<br/> */ strokeWidth?: string; /** * SVG에 적용되는 css {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-dasharray stroke-dasharray} 스타일 속성.<br/> */ strokeDasharray?: string; /** * SVG에 적용되는 css {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/font-family font-family} 스타일 속성.<br/> */ fontFamily?: string; /** * SVG에 적용되는 css {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/font-size font-size} 스타일 속성.<br/> */ fontSize?: string; /** * SVG에 적용되는 css {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/font-weight font-weight} 스타일 속성.<br/> */ fontWeight?: string; /** * SVG에 적용되는 css {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/font-style font-style} 스타일 속성.<br/> */ fontStyle?: string; /** * SVG에 적용되는 css {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/rx rx} 스타일 속성.<br/> * {@link https://realmap.co.kr/config/config/seires/bar bar} 시리즈의 데이터포인트 bar의 모서리를 지정하는 데 사용된다. */ rx?: string; /** * 텍스트 정렬을 지정한다.<br/> * **SVG에 적용되는 정식 css style 속성이 아니다.** * 즉, HTML이나 realmap-style.css 등의 외부 css 파일에서 사용할 수 없고, * RealMap 내부에서 {@link https://realmap.co.kr/config/config/title title} 등의 inline 스타일 속성으로 지정할 수 있다. * * ```js * const config = { * subtitle: { * style: { * textAlign: 'left', * }, * }, * }; * ``` */ textAlign?: Align; /** * **SVG에 적용되는 정식 css style 속성이 아니다.**<br/> * 데이터포인트 라벨등 몇 요소의 배경 간격 설정으로 사용할 수 있다. */ padding?: string; } /** {@link it.SVGStyles SVGStyles} 또는 class 이름 */ type SVGStyleOrClass = SVGStyles | string; /** * CSS 선언 블록을 나타내는 객체로, 스타일 정보뿐만 아니라 다양한 스타일 관련 메서드와 속성들을 제공한다. <br/> * https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration */ interface CSSStyles extends Partial<CSSStyleDeclaration> { } /** @private */ interface CSSStyles2 extends CSSStyles { display?: string; position?: string; alignItems?: string; justifyContent?: string; flexDirection?: string; flexWrap?: string; gap?: string; flex?: string; width?: string; height?: string; minHeight?: string; minWidth?: string; maxWidth?: string; left?: string; top?: string; overflow?: string; marginRight?: string; whiteSpace?: string; margin?: string; marginLeft?: string; pointerEvents?: string; transform?: string; } interface ISides { left: number; right: number; top: number; bottom: number; horz?: number; vert?: number; } /** * 스와이프 제스처 등의 진행 방향. * <br> * * @see {@link RtListControl.onRowSwipe onRowSwipe} */ declare enum RmDirection { /** * 위쪽으로 진행. */ UP = "up", /** * 아래쪽으로 진행. */ DOWN = "down", /** * 왼쪽으로 진행. */ LEFT = "left", /** * 오른쪽으로 진행. */ RIGHT = "right" } /** * 수평 정렬. * @enum */ declare const _Align: { /** * 왼쪽으로 정렬한다. */ readonly LEFT: "left"; /** * 영역 가운데로 정렬한다. */ readonly CENTER: "center"; /** * 오른쪽으로 정렬한다. */ readonly RIGHT: "right"; }; /** @dummy */ type Align = typeof _Align[keyof typeof _Align]; /** * 수직 정렬. * @enum */ declare const _VerticalAlign: { /** */ readonly TOP: "top"; /** */ readonly MIDDLE: "middle"; /** */ readonly BOTTOM: "bottom"; }; /** @dummy */ type VerticalAlign = typeof _VerticalAlign[keyof typeof _VerticalAlign]; /** * @enum */ declare const _AlignBase: { /** * */ readonly CHART: "chart"; /** * */ readonly MAP: "map"; /** * 상위 모델이 존재하는 경우 상위 모델 영역 기준.\ * 상위가 없으면 기본값(대부분 'body')과 동일. * ex) subtitle인 경우 title 기준. * * */ readonly PARENT: "parent"; }; /** @dummy */ type AlignBase = typeof _AlignBase[keyof typeof _AlignBase]; /** * @enum */ declare const _WritingMode: { /** */ readonly HORIZONTAL_TB: "horizontal-tb"; /** */ readonly VERTICAL_LR: "vertical-lr"; /** */ readonly VERTICAL_RL: "vertical-rl"; }; /** @dummy */ type WritingMode = typeof _WritingMode[keyof typeof _WritingMode]; /** * @enum */ declare const _TextOrientation: { /** */ readonly MIXED: "mixed"; /** */ readonly UPRIGHT: "upright"; }; /** @dummy */ type TextOrientation = typeof _TextOrientation[keyof typeof _TextOrientation]; interface ColorRange { minValue?: number; maxValue?: number; minColor?: string; maxColor?: string; /** * 2 이상의 값으로 지정하면, * 데이터포인트 값들을 이 속성값을 base로 하는 log 값으로 변환해서 표시한다.<br/> */ logBase?: number; } interface IPaddings { l: number; r: number; t: number; b: number; } /** * @enum * * Legend나 ColorScale 등 맵차트 구성 요소들의 표시 위치.<br/> * 위치를 지정한 후 다른 속성들로 정렬시킬 수 있다. */ declare const _ChartItemLocation: { /** * 맵차트 본체 아래 표시한다. * */ readonly BOTTOM: "bottom"; /** * 맵차트 타이틀 아래 표시한다. * */ readonly TOP: "top"; /** * 맵차트 본체 오른쪽에 표시한다. * */ readonly RIGHT: "right"; /** * 맵차트 본체 왼쪽에 표시한다. * */ readonly LEFT: "left"; /** * 맵차트 본체 영역 내부에 표시한다. * */ readonly BODY: "body"; }; /** @dummy */ type ChartItemLocation = typeof _ChartItemLocation[keyof typeof _ChartItemLocation]; /** * 구성 요소 위치.<br/> */ type Positions = 'top' | 'right' | 'bottom' | 'left'; interface ConfigObject { [key: string]: any; } type ShapeDrawer = (rd: number, rd2: number) => (string | number)[]; /** * 맵 좌표. [경도, 위도] */ type MapCoord = [number, number]; type MapRect = { h1: number; h2: number; v1: number; v2: number; }; type MapArc = MapCoord[]; type MapPolygon = MapArc[]; type MapProps = any; declare function parseCoord(v: any): MapCoord; /** * RealReport-Chart 라이브러리 클래스 모델의 최상위 base 클래스. * <br> * * @see concepts.dev_guide 개발 가이드 * @see concepts.about RealTouch 개요 */ declare abstract class RmObject { private $_hash; private $_destroyed; private $_destroying; constructor(noHash?: boolean); /** * 객체가 소유한 참조 등을 해제하고 null을 리턴한다. * * ``` * list = lis.destroy(); * ``` * * @returns null */ destroy(): null; protected _doDestory(): void; get destroying(): boolean; get orphaned(): boolean; get hash(): string; isMe(hash: string): boolean; toString(): string; /** * @private * * template param으로부터 생성되는 값은 문자열일 수 있다. */ toBool(v: any): boolean; toNum(v: any, def?: number): number; } declare abstract class RmEventProvider<T> extends RmObject { private _listeners; _addListener(listener: T): void; _removeListener(listener: T): void; /** * event로 지정한 함수가 정의된 모든 리스너에 대해 실행한다. * 리스너 scope으로 실행하고, 첫번째 매개변수로 이 객체가 전달된다. * 다만, 리스너들 중 하나라도 undefined가 아닌 값을 리턴하면, * 그 값을 리턴하면서 멈춘다. */ protected _fireEvent(event: string, ...args: any[]): any; } interface MapInsetDisplay { /** * inset area 확대 비율.<br/> * 지정하지 않으면 1. * 0보다 큰 값이어야 한다. */ readonly scale?: number; /** * inset area의 [왼쪽, 위쪽] 기준으로, 표시 위치 [경도, 위도]를 도(°) 단위로 지정한다.<br/> * [주의] {@link MapInset.children children}으로 적용될 때는 이 값 대신 {@link offset}을 반드시 지정해야 한다. */ readonly coord?: MapCoord; /** * coord로 지정한 inset 위치에 더 추가되는 [경도, 위도] 값이거나 * coord가 지정되지 않은 경우 원래 위치에서 떨어진 위치 값.<br/> * 라이브러리에서 제공하는 미리 정의된 inset 위치를 조정하는 값으로 사용할 수 있다. * [주의] {@link MapInset.children children}으로 적용될 때는 {@link coord} 대신 반드시 이 값을 지정해야 한다. */ readonly offset?: MapCoord; /** * inset을 구분하는 경계선을 도(°)단위로 지정한다.<br/> * 값들은 space나 ','로 분리해서 x, y 순서대로 위치를 지정하고, * 닫힌 다각형으로 지정하고 싶은 경우 마지막에 'z'나 'Z'을 추가한다. * 또, {@link frame}이 지정되면 이 값은 무시된다.<br/> * 값들은 각각 area 전체를 감싸는 가상의 사각형을 기준으로 작성하는데, * 아래 값들을 상수로 사용할 수 있고, +,- 연산자로 offset을 지정할 수 있다. * x값은 사각형 왼쪽(경도 시작접), y값은 사각형 아래쪽(위도 시작점)이 원점이 된다. * w와 h는 각각 사각형의 너비와 높이다. * x값은 원점에서 오른쪽으로 증가하고, y값은 원점에서 위쪽으로 증가한다.<br/> * ex) '-0.1 h+0.05 +0.1 h+0.1 w+0.2 h' // 제주도 위쪽에 꺽인 line을 표시한다. * '-0.2 -0.1 -0.2 h+0.1' // 울릉도 좌측에 직선으로 표시한다. */ readonly border?: MapCoord[] | string; /** * inset을 감싸서 구분하는 사각형을 도(°)단위로 지정한다.<br/> * 이 값이 지정되면 {@link border}는 무시된다.<br/> * css padding이나 margin 지정 방식과 동일하게 지정한댜. * 지정된 값은 area의 전체를 포함하는 가상의 사각형과 frame 사이의 간격으로 표시된다.<br/> * ex) '0.05' // 좌위상하 0.05° * '0.05 0.01' // 상하 0.05°, 좌우 0.01° * '0.05 0.01 0.03' // 상 0.05°, 우 0.01°, 하 0.03, 좌 0.01° * '0.05 0.01 0.03 0.02' // 상, 우, 하, 좌 */ readonly frame?: string; /** * border나 frame에 적용할 스타일셋.<br/> * 기본으로 'rm-map-series-inset' 클래스 선택자가 적용된다. */ readonly style?: SVGStyleOrClass; /** * 명시적 false로 지정하면 이 inset이 포함하는 영역을 맵에서 제거한다.<br/> * 대개 두 번째 map에서 사용된다. */ readonly visible?: boolean; } /** * 본토에서 멀리 떨어진 영역들을 당겨서 표시하는 설정.<br/> * [주의] 아래쪽 계산값들을 제외하곤 모두 readonly로 취급해야 한다. * * @css 'rm-map-series-inset' */ interface MapInset extends MapInsetDisplay { /** * inset시킬 area id.<br/> * 이 area가 존재하지 않고, * {@link parent}가 지정되지 않으면 * 자식들을 모두 함께 이동시킨다. */ readonly area: string; readonly name?: string; /** * 이 area가 존재하지 않고, * {@link MapInset.parent parent}가 지정되지 않으면 * 이 속성에 지정된 자식들을 모두 함께 이동시킨다.<br/> * [주의] {@link frame}이나 {@link border}의 기준이 되는 child area의 id를 첫번째 항목으로 설정해야 한다. * [주의] parent 하나에 한 번만 지정할 수 있다. */ readonly children?: string[]; /** * {@link area}가 존재하지 않을 때, * 이 속성에 해당하는 area를 찾아서 {@link polygons}에 해당하는 영역들을 이동시킨다.<br/> * 콤마로 분리해서 둘 이상의 area를 지정할 수 있는데, 순서대로 해당되는 영역이 존재하면 사용한다. * [주의] parent 하나에 한 번만 지정할 수 있다. */ readonly parent?: string; /** * {@link area}가 존재하지 않고, {@link parent}가 지정됐을 때, * 이 속성에 지정하는 영역들을 동시에 이동시킨다.<br/> * [주의] {@link frame}이나 {@link border}의 기준이 되는 polygon의 index를 첫번째 항목으로 설정해야 한다. * [주의] {@link parent}가 복수개로 지정되면 이 속성도 [[], [],..] 형태로 복수 개 지정해야 한다. * [주의] parent 하나에 한 번만 지정할 수 있다. */ readonly polygons?: number[] | number[][] | number; /** * @private * 계산된 값들. */ off?: MapCoord; box?: MapCoord[]; pts?: any[]; bounds?: MapRect; } type MapSourceMeta = { license?: { license?: string; author?: string; url?: string; etc?: "맵차트 최적화를 위해 좌표계 변환 및 Feature Polygon 수정"; }; dokdo?: { group?: string; parent?: number; index?: number; }; dummies?: string[]; }; /** * 접경선 정보.<br/> * 연결된 선으로 표시되므로, 반드시 접경선이 그려지는 순서대로 양쪽 area(들)을 지정해야 한다. */ type MapBorderSource = [string | [string], string | [string]]; /** * 맵시리즈에서 사용할 기본 맵을 지정한다.<br/> */ interface MapSource { /** * 맵 이름.<br/> * 맵차트에 여러 개 맵이 지정될 수 있으며, * 맵차트 시리즈 등에서 맵을 참조할 때 사용된다. */ name?: string; /** * 명시적 false로 지정하면 맵차트에서 맵으로 사용되지 않는다.<br/> * * @default true */ enabled?: boolean; /** * @deprecated use {@link source} **/ map?: any; /** * 영역들의 정보가 포함된 지도 데이터 소스.<br/> */ source?: any; /** * 외부 {@link source}를 가져올 위치.<br/> */ url?: string; /** * 맵 모델의 area를 구성할 때 area id로 사용할 소스의 속성 이름.<br/> */ idKey?: string; /** * 맵 모델의 area를 구성할 때 area name으로 사용할 소스의 속성 이름.<br/> */ nameKey?: string; /** * 맵차트 맵 모델을 구성할 때 제외시킬 영역들의 id 목록.<br/> */ exclude?: string[]; /** * 맵 인셋 목록을 지정한다.<br/> * 이름을 문자열로 지정하면 라이브러기가 기본 제공하는 인셋들이 사용된다. * 또, 이름앞에 '-'를 추가하면 visible이 false로 설정된다. */ insets?: (string | MapInset)[]; /** * 맵 상하좌우 주변에 추가할 영역의 크기를 도(°) 단위로 지정한다.<br/> * css padding이나 margin 지정 방식과 동일하게 지정한댜.<br/> */ padding?: string; /** * 지도에 독도에 대한 meta 정보가 있는 경우, * 독도와 울릉도 사이의 거리를 지정한 비율만큼으로 줄이거나 늘여서 표시한다.<br/> * 0 ~ 1 사이의 값으로 원래 간격에 대한 상대 거리를 지정한다. * 0 이하의 값으로 지정하면 dokdo를 표시하지 않는다. * [lon, lat] 형식으로 지정할 수도 있다. */ dokdo?: number | MapCoord; /** * dummy 영역들을 표시할지 여부.<br/> */ showDummies?: boolean; /** * @ignore * 로컬 지도가 글로벌 투영좌표계 중앙으로 배치할지 여부.<br/> * 첫번째 기준 map에만 설절할 수 있다. */ useOffset?: boolean | MapCoord; /** * 부극 취고위까지 지도에 포함되면 90도까지 그려진 것으로 간주한다.<br/> * 명시적 false로 지정하면 계산된 영역까지만 포함한다. */ alignArctic?: boolean; /** * 내부 경계(internal boundary)선 정보를 별도로 생성할 지 여부.<br/> */ needInternal?: boolean; /** * {@link needInternal 내부 경계선}에서 제외할 영역 목록.<br/> */ excludeInternal?: string[]; /** * 외부 경계선 정보를 별도로 생성할 지 여부.<br/> */ needExternal?: boolean; /** * {@link needInternal 내부 경계선}에서 제외할 영역 목록.<br/> */ excludeExternal?: string[]; /** * 접경선 목록.<br/> */ borders?: [{ name: string; border: MapBorderSource; closed?: boolean; }]; } declare abstract class MapSourceItem { id: string; constructor(id: string); } declare class AreaItem extends MapSourceItem { props: MapProps; polygon: MapPolygon; polygons: MapPolygon[]; internal?: MapPolygon[]; internals?: MapPolygon[][]; external?: MapPolygon[]; externals?: MapPolygon[][]; dummy: boolean; constructor(id: string, props: MapProps); } declare class MapBorderInfo { name: string; closed: boolean; border: [string[], string[]]; constructor(name: string, source: MapBorderSource, closed: boolean); } declare class BorderItem extends MapSourceItem { polygon: MapPolygon; constructor(id: string, polygon: MapPolygon); } declare abstract class MapSourceImpl extends RmObject { static createStockInset(area: string, display?: boolean | MapInsetDisplay): MapInset; readonly name: string; readonly enabled: boolean; readonly idKey: string; readonly nameKey: string; readonly meta: MapSourceMeta; readonly dokdo: number; readonly dummies: string[]; readonly useOffset: boolean | MapCoord; readonly internals: boolean; readonly externals: boolean; readonly alignArctic: boolean; readonly borders: MapBorderInfo[]; items: MapSourceItem[]; insets: { [area: string]: MapInset; }; paddings: IPaddings; private _excludes; constructor(options: MapSource, index: number); included(area: string): boolean; private $_load; protected abstract _doLoad(source: object, options: MapSource): MapSourceItem[]; } /** * 어노테이션 배치 기준.<br/> * [주의]body에 설정된 annoation에는 적용되지 않는다. * @enum */ declare const _AnnotationScope: { /** * container에서 padding을 적용한 영역을 기준으로 표시한다. * * */ readonly CHART: "chart"; /** * container 전체 영역을 기준으로 표시한다. * * */ readonly CONTAINER: "container"; }; /** @dummy */ type AnnotationScope = typeof _AnnotationScope[keyof typeof _AnnotationScope]; interface AnnotationAnimationOptions { type: string; duration?: number; } type AnnotationType = 'image' | 'shape' | 'text' | 'html' | 'chart'; /** * Annotation 모델.<br/> * * */ interface AnnotationOptions extends PositionableItemOptions { type?: AnnotationType; /** * true로 지정하면 시리즈들 위에 표시된다.<br/> * 명시적으로 false로 지정해야 시리즈들 아래 표시된다. * * @default false */ front?: boolean; /** * 어노테이션 배치 기준이 되는 맵차트 구성 요소.<br/> * 현재, 같은 영역(body 혹은 chart)에 포함된 다른 어노테이션의 {@link name 이름}을 지정할 수 있다. * */ anchor?: string; /** * 수평 배치.<br/> * * @default 'left' anchor가 지정되면 'center', 아니면 'left' */ align?: Align; /** * {@link align}과 {@link verticalAlign}으로 지정된 위치에서 실제 표시될 위치의 수평 간격.<br/> * 값이 양수일 때, {@link anchor}가 지정된 경우 anchor 아이템의 밖으로 멀어지고, 아니면 영역 경계 안쪽으로 멀어진다. * 또, {@link anchor}가 지정된 경우 **'0.5w'** 등으로 이 어노테이션의 너비를 기준으로 한 크기로 지정할 수 있다. * * @default 0 */ offsetX?: number | string; /** * {@link align}과 {@link verticalAlign}으로 지정된 위치에서 실제 표시될 위치의 수직 간격.<br/> * 값이 양수일 때, {@link anchor}가 지정된 경우 anchor 아이템의 밖으로 멀어지고, 아니면 영역 경계 안쪽으로 멀어진다. * 또, {@link anchor}가 지정된 경우 **'0.5h'**처럼 이 어노테이션의 너비를 기준으로 한 크기로 지정할 수 있다. * * @default 0 */ offsetY?: number | string; /** * 회전 각도.<br/> * 0 ~ 360 사이의 값으로 지정한다. * */ rotation?: number; /** * 어노테이션 배치 기준.<br/> * [주의]body에 설정된 annoation에는 적용되지 않는다. * * @default 'chart' */ scope?: AnnotationScope; /** * true로 지정하면 상위 영역을 벗어난 부분도 표시되게 한다.<br/> * body에 포함된 경우 body 영역, * chart에 포함되고 scope이 'chart'일 때 chart 영역. * */ noClip?: boolean; } declare const ImageAnnotationType = "image"; /** * 이미지 어노테이션.<br/> * {@link https://realmap.co.kr/docs/api/options/AnnotationOptions#type type}은 'image'이다.<br/> * * // TODO #fiddle annotation/image-annotation Image Annotation * @css 'rm-image-annotation' */ interface ImageAnnotationOptions extends AnnotationOptions { /** @dummy */ type?: typeof ImageAnnotationType; /** * true로 설정되고 {@link url}이 설정된 경우에만 표시된다. * * @default true */ visible?: boolean; /** * 이미지 경로. * */ imageUrl?: string; } declare const ShapeAnnotationType = "shape"; /** * Shape Annotation 모델. * {@link https://realmap.co.kr/docs/api/options/AnnotationOptions#type type}은 'shape'이다.<br/> * {@link shape} 속성에 표시할 도형 모양을 지정하거나, * {@link path}에 SVG path를 직접 지정할 수 있다. * * // TODO #fiddle annotation/shape-annotation Shape Annotation * @css 'rm-shape-annotation' */ interface ShapeAnnotationOptions extends AnnotationOptions { /** @dummy */ type?: typeof ShapeAnnotationType; /** * @default 64 */ width?: number; /** * @default 64 */ height?: number; /** * Shape 종류. * * circle: 원 * diamond: 다아이몬드 * square: 정사각형 * triangle: 삼각형 * star: 별 모양 * itriangle: * rectangle: 사각형 * * @default 'square' */ shape?: 'circle' | 'diamond' | 'square' | 'triangle' | 'star' | 'itriangle' | 'rectangle'; /** * Shape path. * 이 속성이 지정되면 {@link shape}는 무시된다. */ path?: string; series?: string; xRange?: number[]; yRange?: number[]; } declare const TextAnnotationType = "text"; /** * 텍스트 어노테이션.<br/> * {@link https://realmap.co.kr/docs/api/options/AnnotationOptions#type type}은 'text'이다.<br/> * * // TODO #fiddle annotation/text-annotation Text Annotation * @css 'rm-text-annotation' */ interface TextAnnotationOptions extends AnnotationOptions { /** @dummy */ type?: typeof TextAnnotationType; /** * true로 설정되고 {@link text}가 설정된 경우에만 표시된다. * * @default true */ visible?: boolean; /** * 표시할 텍스트. * * @default 'Text' */ text?: string; /** * {@link text}에 동적으로 전달되는 값이 숫자일 때 사용되는 표시 형식. * */ numberFormat?: string; /** * {@link text}에 동적으로 전달되는 값이 Date일 때 사용되는 표시 형식. * */ timeFormat?: string; /** * 텍스트를 가로 또는 세로로 배치할지 여부와 블록이 진행되는 방향을 지정한다. * * */ writingMode?: WritingMode; /** * 텍스트 문자 방향을 지정한다. * 세로 모드의 텍스트에만 적용된다. * * */ textOrientation?: TextOrientation; } declare const HtmlAnnotationType = "html"; /** * HTML 어노테이션.<br/> * {@link https://realmap.co.kr/docs/api/options/AnnotationOptions#type type}은 'html'이다.<br/> * * // TODO #fiddle annotation/html-annotation Html Annotation * @css 'rm-html-annotation' */ interface HtmlAnnotationOptions extends AnnotationOptions { /** @dummy */ type?: typeof HtmlAnnotationType; /** * true로 설정되고 {@link text}가 설정된 경우에만 표시된다. * * @default true */ visible?: boolean; /** * 이 속성으로 지정한 html 내용을 표시한다.<br/> * '.'나 '#'으로 시작되는 html selector로 지정하면 해당하는 dom의 {@link https://developer.mozilla.org/ko/docs/Web/API/Element/innerHTML innerHTML}을 가져와 표시한다.<br/> * 예를 들어 id가 'abc'인 dom인 경우 '#abc'로 지정한다. * 즉, document.{@link https://developer.mozilla.org/ko/docs/Web/API/Document/querySelector querySelector}(htmlFrom)로 리턴되는 dom의 내용을 표시한다.<br/> * 생성되는 dom의 스타일은 {@link htmlStyle}로 지정한다. */ html?: string; /** * 이 속성으로 지정한 selector에 해당하는 dom의 {@link https://developer.mozilla.org/ko/docs/Web/API/Element/innerHTML innerHTML}을 가져와 표시한다.<br/> * 예를 들어 id가 'abc'인 dom인 경우 '#abc'로 지정한다. * 즉, document.{@link https://developer.mozilla.org/ko/docs/Web/API/Document/querySelector querySelector}(htmlFrom)로 리턴되는 dom의 내용을 표시한다.<br/> * 이 속성이 {@link html}보다 우선한다. 다만, 존재하지 않은 dom을 지정한 경우 {@link html}에 지정한 내용을 대신 표시한다. * 생성되는 dom의 스타일은 {@link htmlStyle}로 지정한다. */ htmlFrom?: string; /** * {@link html}로 생성되는 최상위 dom에 적용되는 스타일셋.<br/> */ htmlStyle?: CSSStyleDeclaration; /** * @append * 너비를 반드시 지정해야 한다.<br/> * 지정하지 않으면 100 픽셀 너비로 표시한다. * {@link height 높이}를 지정하지 않으면 생성된 dom의 높이에 맞춰진다. * * @default 100 */ width?: PercentSize; /** * {@link html}로 지정된 html 텍스트에 포함된 param 값을 지정하는 객체나 콜백. #311<br/> */ params?: { [key: string]: any; } | ((param: string) => any); } declare const ChartAnnotationType = "chart"; /** * Chart 어노테이션.<br/> * {@link https://realmap.co.kr/docs/api/options/AnnotationOptions#type type}은 'chart'이다.<br/> * * @css 'rm-chart-annotation' */ interface ChartAnnotationOptions extends AnnotationOptions { /** @dummy */ type?: typeof ChartAnnotationType; config?: any; } /** @dummy */ type AnnotationOptionsType = ImageAnnotationOptions | ShapeAnnotationOptions | TextAnnotationOptions | HtmlAnnotationOptions | ChartAnnotationOptions; /** * @enum */ declare const _ClickAction: { readonly NONE: "none"; readonly SELECT: "select"; /** * 맵차트가 zoom 가능한 상태일 때 zoom-in 한다. */ readonly ZOOM: "zoom"; /** * 표시된 지도 크기가 표시 영역보다 클 때, * 클릭한 위치가 표시 중앙이 되도록 한다. */ readonly CENTER: "center"; /** * 클릭한 영역이 포함된 맵시리즈가 drilldown 가능한 상태일 때, * drilldown을 실해하고 클릭한 영역의 상세가 표시되도록 한다.<br/> */ readonly DRILLDOWN: "drilldown"; /** * drilldow이 가능한 상태면 drilldown하거나, * 아니면 zoom-in 한다. */ readonly DRILL_OR_ZOOM: "drillOrZoom"; }; /** @dummy */ type ClickAction = typeof _ClickAction[keyof typeof _ClickAction]; /** * @enum */ declare const _DblClickAction: { readonly NONE: "none"; readonly SELECT: "select"; /** * 맵차트가 zoom 가능한 상태일 때 zoom-in 한다. */ readonly ZOOM: "zoom"; /** * 표시된 지도 크기가 표시 영역보다 클 때, * 클릭한 위치가 표시 중앙이 되도록 한다. */ readonly CENTER: "center"; /** * 더블클릭한 영역이 포함된 맵시리즈가 drilldown 가능한 상태일 때, * drilldown을 실해하고 클릭한 영역의 상세가 표시되도록 한다.<br/> */ readonly DRILLDOWN: "drilldown"; /** * drilldow이 가능한 상태면 drilldown하거나, * 아니면 zoom-in 한다. */ readonly DRILL_OR_ZOOM: "drillOrZoom"; }; /** @dummy */ type DblClickAction = typeof _DblClickAction[keyof typeof _DblClickAction]; declare const _DragAction: { /** * 구 지도이면 회전하고, 스크롤 가능한 세계지도면 스크롤하고, 아니면 지도를 이동(pan) 시킨다.<br/> */ readonly DEFAULT: "default"; /** * 드래그로 결정된 영역에 포함된 area들을 선택한다.<br/> * ctrl/cmd 키가 눌러진 상태가 아니면 기존 선택은 취소된다. */ readonly SELECT: "select"; /** * 드래그로 결정된 영역이 화면을 채우도록 zoom-in 한다.<br/> */ readonly ZOOM: "zoom"; }; type DragAction = typeof _DragAction[keyof typeof _DragAction]; interface OnClickArgs extends CommonCallbackArgs { x: number; y: number; coord: MapCoord; area?: string; } /** * 맵차트 전체에 영향을 미치는 옵션들.<br /> * */ interface ChartGlobalOptions extends ChartItemOptions { /** * false가 아닌 경우 첫번째 시리즈가 'map' 시리즈가 아니면 내부적으로 자동 추가한다.<br/> * * @default true */ alwaysMap?: boolean; /** * 맵 영역 등을 클릭하거나 tap했을 때 실행될 action.<br/> * * @default 'default' */ clickAction?: ClickAction; /** * 맵 영역 등을 더블 클릭하거나 더블 tap했을 때 실행될 action.<br/> * * @default 'zoom' */ dblClickAction?: DblClickAction; /** * 마우스 드래그 시 실행될 action.<br/> * * @default 'none' */ dragAction?: DragAction; /** * 맵차트 컨트롤의 배경 div 속성을 지정한다.<br/> * 스타일 속성은 svg가 아니라 html css 속성들로 지정한다. */ backgroundStyle?: CSSStyles; /** * legend, color scale 등의 위젯들이 표시되는 영역과 body 사이의 간격.<br/> * 숫자 값이나 css margin 지정 방식의 문자열로 지정할 수 있다. * * @default 8 */ widgetSectionGap?: number | string; /** * legend, color scale 등의 위젯들이 표시되는 영역 내에서 위젯 사이의 간격.<br/> * * @default 8 */ widgetGap?: number; /** * 차트 div 크기가 변경됐을 때 지정한 시간(밀리초) 이후에 다시 그린다.<br> * 0 이하면 대기 없이 바로 다시 그리기를 요청한다.<br> * * @default 50 밀리초 */ resizeDelay?: number; /** * 마우스 휠을 통한 줌인/아웃을 비활성화할지 여부.<br/> * true로 설정하면 줌 패널 버튼은 사용할 수 있지만 마우스 휠로는 줌 조절이 불가능하다.<br/> * * @default false */ wheelDisabled?: boolean; /** * 마우스 포인터가 클릭됐을 때 호출되는 콜백.<br/> */ onClick?: (args: OnClickArgs) => void; /** * 선택 변경 시 호출되는 콜백.<br/> */ onSelectionChanged?: (args: OnSelectionChangedArgs) => void; } /** * 맵차트 제목(title) 설정 모델.<br/> * 기본적으로 맵차트 중앙 상단에 표시되지만 {@link align}, {@link verticalAlign} 등으로 위치를 변경할 수 있다.<br/> * * {@link https://realmap.co.kr/guide/title 타이틀 개요} 페이지를 참조한다. */ interface TitleOptions extends ChartItemOptions { /** * true로 설정되고 {@link text}가 비어 있지 않은 텍스트로 설정된 경우에 표시된다. * * @default true */ visible?: boolean; /** * 제목 텍스트.<br/> * * @default 'Title' */ text?: string; /** * 정렬 기준.<br/> * 시리즈들이 그려지는 plotting 영역이나, * 맵차트 전체 영역을 기준으로 할 수 있다. * 또, {@link https://realmap.co.kr/config/config/subtitle 부제목}인 경우 제목을 기준으로 위치를 지정할 수 있다. * * @default 'map' */ alignBase?: AlignBase; /** * 수평 정렬.<br/> * * @default 'center' */ align?: Align; /** * 수직 정렬.<br/> * * @default 'middle' */ verticalAlign?: VerticalAlign; /** * 배경 {@link it.SVGStyles 스타일셋} 또는 css {@link https://developer.mozilla.org/ko/docs/Web/CSS/CSS_selectors selector}. */ backgroundStyle?: SVGStyleOrClass; /** * 주 제목과 부 제목이 표시되는 영역과 맵차트 본체 등 과의 간격을 픽셀 단위로 지정한다.<br/> * 주 제목이 표시되면 (부 제목의 값은 무시되고)주 제목의 값을 사용하고, * 부 제목만 표시될 때는 부 제목의 값을 사용한다. * * @default 10 */ gap?: number; } /** * 부제목 표시 위치. * @enum */ declare const _SubtitlePosition: { /** * 주제목 아래쪽에 표시.<br/> */ readonly BOTTOM: "bottom"; /** * 주제목 오른쪽에 표시.<br/> */ readonly RIGHT: "right"; /** * 주제목 왼쪽에 표시.<br/> */ readonly LEFT: "left"; /** * 주제목 위쪽에 표시.<br/> */ readonly TOP: "top"; }; /** @dummy */ type SubtitlePosition = typeof _SubtitlePosition[keyof typeof _SubtitlePosition]; /** * 맵차트 제목 주위에 표시되는 부제목 옵션.<br/> * 기본적으로 주제목(title)의 설정을 따르고, 몇가지 속성들이 추가된다.<br/> * 별도 설정이 없으면 표시되지 않는다. * * ```js * const config = { * title: {}, * subtitle: { * visible: true, * text: '출처: UN Data, 2020', * }, * }; * ``` * * {@link https://realmap.co.kr/guide/title 제목 개요} 페이지를 참조한다. * */ interface SubtitleOptions extends TitleOptions { /** * 부제목 표시 위치.<br/> * * @default 'bottom' */ position?: SubtitlePosition; /** * 주 제목과 사이의 간격을 픽셀 단위로 지정한다.<br/> * * @default 2 */ titleGap?: number; /** * @default '' */ text?: string; /** * @default 'bottom' */ verticalAlign?: VerticalAlign; } /** * 맵차트 개발 제작자 등을 표시하는 * 크레딧 영역에 대한 설정 모델. */ interface CreditsOptions extends ChartItemOptions { /** * 제작자 이름 등 표시 텍스트. */ text?: string; /** * 영역을 클릭했을 때 이 속성에 지정한 곳으로 창을 연다. */ url?: string; /** * credits 표시 위치.<br/> * 값을 지정하지 않으면 'bottom'에 표시된다. * * @default 'bottom' */ location?: ChartItemLocation; /** * 수평 배치.<br/> * 값을 지정하지 않으면, 기본값이 {@link location}이 'body'일 때는 'left', * 'top', 'bottom'일 때는 'right'이다. * 그 외는 무시된다. */ align?: Align; /** * 수직 배치.<br/> * 값을 지정하지 않으면, 기본값이 {@link location}이 'body'일 때는 'top', * 'left', 'right'일 때는 'middle'이다. * 그 외는 무시된다. */ verticalAlign?: VerticalAlign; /** * 설정에 따라 정해진 표시 위치에서 떨어진 수평 간격을 픽셀 단위로 지정한다.<br/> * {@link floating}이 true가 아니고, * {@link verticalAlign}이 'middle' 이면서 {@link align}이 'center'가 아닌 경우, * 이 값만큼 수평 영역을 차지한다. * * @default 2 */ offsetX?: number; /** * 설정에 따라 정해진 표시 위치에서 떨어진 수직 간격을 픽셀 단위로 지정한다.<br/> * {@link floating}이 true가 아니고, {@link verticalAlign}이 'middle'이 아닌 경우, * 이 값만큼 수직 영역을 차지한다. * * @default 1 */ offsetY?: number; /** * {@link floating}이 true가 아니고, 중앙이 아닌 곳에 표시될 때, * 맵차트 나머지 영역과의 간격을 픽셀로 지정한다.<br/> * {@link verticalAlign}이 'middle'이면 수평 간격, 아니면 수직 간격에 적용된다. * * @default 4 */ gap?: number; } /** * 툴팁에 표시할 데이터포인트들을 선택하는 방식.<br/> * * @enum */ declare const TooltipScopes: { readonly HOVER: "hover"; readonly POINT: "point"; readonly GROUP: "group"; readonly AXIS: "axis"; }; /** @dummy */ type TooltipScope = typeof TooltipScopes[keyof typeof TooltipScopes]; /** * @enum */ declare const TooltipModes: { readonly LINE: "line"; readonly CIRCLE: "circle"; readonly HEADER: "header"; }; /** * 툴팁 모드 */ type TooltipMode = typeof TooltipModes[keyof typeof TooltipModes]; /** * 데이터포인트 {@link https://realmap.co.kr/guide/tooltip Tooltip} 설정 모델. * */ interface TooltipOptions extends ChartItemOptions { scope?: TooltipScope; html?: string; /** * 툴팁에 표시할 텍스트 형식.<br/> * 시리즈에 {@link https://realmap.co.kr/config/config/base/series#tooltiptext tooltipText}가 시리즈 별 tooltip을 제공하지만, * 이 속성이 지정된 경우 우선 사용된다.<br/> * * `${param;default;format}` 형식으로 아래과 같은 변수로 데이터 포인트 및 시리즈 값을 지정할 수 있다. * |변수|설명| * |---|---| * |series|시리즈 이름| * |name|포인트 이름. 포인트가 속한 카테고리 이름이거나, 'x' 속성으로 지정한 값| * |x|'x' 속성으로 지정한 값| * |y|'y' 속성으로 지정한 값| * |xValue|계산된 x값| * |yValue|계산된 y값| * */ text?: string; /** * 목표 지점과 tooltip 사이의 간격. * */ offset?: number; /** * 툴팁이 점진적으로 닫히는 시간을 밀리초 단위로 지정한다. * * @default 700 */ hideDelay?: number; minWidth?: number; minHeight?: number; /** * true이면 툴팁 상자가 마우스 포인터를 따라 다닌다. * <br> * false, true를 명시적으로 지정하지 않으면 시리즈 종류에 따라 자동 설정된다. * ex) pie 시리즈는 true, bar 시리즈는 false가 된다. * */ followPointer?: boolean; /** * 툴팁 텍스트 속 숫자 값이 NaN일 때 대신 표시되는 텍스트. * */ nanText?: string; /** * 툴팁에 표시될 숫자값의 기본 형식.\ * {@link text}예 표시 문자열을 지정할 때 `${yValue;;#,###.0}`와 같은 식으로 숫자 형식을 지정할 수 있다. * */ numberFormat?: string; /** * 툴팁에 표시될 날짜(시간)값의 기본 형식.\ * {@link text}예 표시 문자열을 지정할 때 `${x;;yyyy.MM}`와 같은 식으로 날짜(시간) 형식을 지정할 수 있다. * */ timeFormat?: string; /** * 툴팁 모드.<br/> * * 해당 속성으로 툴팁의 외형을 변경할 수 있다.<br/> * * @default 'line' */ mode?: TooltipMode; } /** * 지도 투영 방식. */ type ProjectionType = undefined | 'orthographic' | /*'naturealearth' |*/ 'equalearth' | 'miller' | 'mercator'; /** * 실제 지도가 차지한 영역의 background에 표시 설정.<br/> */ interface MapBackgroundOptions extends ChartItemOptions { /** * 표시 여부를 지정한다.<br/> * boolean 값으로 명시적 지정이 없으면 기본값을 따른다. * * @default undefined 구형 프로젝션이면 true, 아니면 false. */ visible?: boolean; /** * 구형 프로젝션일 때 적용할 기본 radial gradient의 색상.<br/> * {@link style} 속성으로 다르게 지정할 수 있다. * * @default 'lightblue' */ globeFill?: string; } /** * zoom, drilldown 패널 base 모델.<br/> */ interface BodyPanelOptions extends ChartItemOptions { /** * {@link https://realmap.co.kr/config/config/body body} 영역 내에서 panel의 수평 정렬.<br/> * * @default 'left' */ align?: Align; /** * {@link https://realmap.co.kr/config/config/body body} 영역 내에서 panel의 수직 정렬.<br/> * * @default 'top' */ verticalAlign?: VerticalAlign; /** * {@link https://realmap.co.kr/config/config/body body} 영역 경계와 panel 사이의 수평 간격.<br/> * * @default 8 픽셀 */ offsetX?: number; /** * {@link https://realmap.co.kr/config/config/body body} 영역 경계와 panel 사이의 수직 간격.<br/> * * @default 8 픽셀 */ offsetY?: number; /** * 패널에 표시되는 버튼이나 label들 사이의 간격.<br/> * * @default 3 pixel */ itemGap?: number; } interface ZoomButton { label?: string; icon?: string; } /** * zoom 버튼들이 표시되는 패널 설정 모델.<br/> * */ interface ZoomPanelOptions extends BodyPanelOptions { /** * 패널에 표시되는 zoom 버튼들.<br/> */ buttons?: ZoomButton[]; /** * 버튼 배치 방향.<br/> * * @default 'vertical' */ direction?: 'vertical' | 'horizontal'; /** * 버튼 클릭 시 증감될 zoom 변화율을 지정한다.<br/> * 값이 클수록 작은 변화량이 된다. * * @default 20 */ zoomFactor?: number; /** * 버튼 너비.<br/> * {@link buttonHeight}가 지정되지 않으면 이 속성값과 동일하게 표시된다. * * @default 28 픽셀 */ buttonWidth?: number; /** * 버튼 높이.<br/> * {@link buttonWidth}가 지정되지 않으면 이 속성값과 동일하게 표시된다. * * @default 28 픽셀 */ buttonHeight?: number; /** * 원래 크기 상태로 변경하는 버튼 표시 여부.<br/> * * @default true */ showReset?: boolean; /** * 버튼들에 적용할 스타일셋.<br/> */ buttonStyle?: SVGStyleOrClass; /** * @default 'left' */ align?: Align; /** * @default 'bottom' */ verticalAlign?: VerticalAlign; /** * true로 지정하면 맵이 zoom되지 않은 상태일 때도 표시한다.<br/> * 물론 {@link visible}이 false이면 이 속성과 무관하게 표시되지 않는다. * * @default true */ showAlways?: boolean; } /** * @enum */ declare const _DrilldownPanelType: { /** * 전후 이동 버튼을 표시한다. */ readonly BUTTON: "button"; /** * 진행된 시리즈들의 이름을 표시한다. */ readonly TEXT: "text"; }; /** @dummy */ type DrilldownPanelType = typeof _DrilldownPanelType[keyof typeof _DrilldownPanelType]; /** * drilldown 버튼들이 표시되는 패널 설정 모델.<br/> * */ interface DrilldownPanelOptions extends BodyPanelOptions { /** * @default 'text' */ type?: DrilldownPanelType; /** * @default 'left' */ align?: Align; /** * @default 'top' */ verticalAlign?: VerticalAlign; } /** * 콜백 매개변수 타입 base.<br/> * */ interface CommonCallbackArgs { /** * Realmap의 공개 {@link https://realmap.co.kr/docs/api/classes/MapChart MapChart} 모델 */ chart: MapChart; } interface OnHoverAreaArgs extends CommonCallbackArgs { area: any; oldArea: any; } interface OnClickAreaArgs extends CommonCallbackArgs { area: any; } interface OnZoomChangedArgs extends CommonCallbackArgs { zoom: number; oldZoom: number; } /** * 맵차트 본체(body) 설정 모델.<br/> * 투영 옵션과 지도 제어 옵션들을 설정할 수 있다.<br/> */ interface BodyOptions extends ChartItemOptions { /** * 지도 투영 옵션.<br/> * 투영 기법에 따라 지도 표시 방식이 달라진다.<br/> */ projection?: ProjectionType; mapBackground?: MapBackgroundOptions; /** * zoom 버튼들이 표시되는 패널 설정 모델.<br/> */ zoomPanel?: ZoomPanelOptions | boolean; /** * 드릴다운 경로를 표시하는 panel 설정 모델.<br/> */ drilldownPanel?: DrilldownPanelOptions | boolean; /** * 사용자가 마우스 wheel이나 zoom panel을 이용해 {@link zoom}을 변경할 수 있는 지 여부.<br/> * * @default false */ zoomable?: boolean; /** * zoom 상태를 백분율로 지정한다.<br/> * 100이면 원래 크기대로 표시한다. * * @default 100 */ zoom?: number; /** * 사용자가 zoom 패널 등으로 변경할 수 있는 최대 zoom.<br/> * @default 1000 */ maxZoom?: number; /** * 마우스 휠로 zooming할 때 이 속성에 지정한 값에 따라 wheel 변화량을 zoom 변화율로 반영한다.<br/> * 큰 값을 지정할 수록 작게 변화한다. * * @default 5 */ wheelZoomFactor?: number; /** * 'orthgraphic' 투영이 아닌 경우 true로 지정하면 좌우 스크롤로 지도 중심점을 변경할 수 있다.<br/> * 지도 데이터가 세계 전체 지도일 때만 적용된다. * * @default false */ scrollable?: boolean; /** * {@link scrollable}이 true인 경우 도(°) 단위 좌우 스크롤 크기.<br/> * 0보다 큰 값이면 중점이 아시아쪽으로 이동한다. */ scroll?: number; /** * 마우스 드래그로 panX/panY 를 변경할 수 있는 지 여부.<br/> * 명시적 false로 지정하면 드래그로 이동시킬 수 없다. * 초기 {@link zoom}을 설정하고 그 위치를 유지하려 할 때 사용할 수 있다. */ movable?: boolean; /** * 지도 중심으로부터 경도상으로 벗어난 지도 단위 크기. 양수이면 왼쪽으로 스크롤 된 상태 */ panX?: number; /** * 지도 중심으로부터 위도상으로 벗어난 지도 단위 크기. 양수이면 아래쪽쪽으로 스크롤 된 상태 */ panY?: number; rotationX?: number; rotationY?: number; fit?: any; points?: ([string, number, number] | { id: string; coord?: MapCoord; lon?: number; lat?: number; })[]; onZoomChanged?: (args: OnZoomChangedArgs) => void; onHoverArea?: (args: OnHoverAreaArgs) => void; onClickArea?: (args: OnClickAreaArgs) => void; /** * body 영역 내에 표시되는 어노테이션 옵션.<br/> * 옵션 객체 또는 옵션 객체 배열로 여러 어노테이션을 설정할 수 있다.<br/> * [주의] 이전 버전의 설정을 로드하기 위해, 이 속성이 지정되지 않고 'annotations' 설정이 존재하면 load 후 이 속성으로 설정한다. * * @expandable */ annotations?: AnnotationOptionsType | AnnotationOptionsType[]; /** * 차트에 표시할 내용이 존재하지 않을 때 표시되는 메시지 view.<br/> */ emptyView?: EmptyViewOptions | boolean; } interface BackgroundImageOptions extends ChartItemOptions { url?: string; } /** * 데이터가 없을 때 표시되는 뷰에 대한 옵션<br/> */ interface EmptyViewOptions extends ChartTextOptions { /** * @append * * false로 지정하면 표시돼야할 상황에서도 표시되지 않는다.<br/> * * @default undefined */ visible?: boolean; /** * @append * * 표시할 텍스트.<br/> * 지정하지 않으면 '표시할 내용이 없습니다.'가 표시된다. * 또, split pane인 경우 지정하지 않으면 먼저 기본 body에 설정된 값으로 표시된다. * * @default undefined */ text?: string; } interface IPoint$1 { x: number; y: number; } interface ISize { width: number; height: number; } /** @private */ declare class Size { width: number; height: number; static readonly EMPTY: Size; static empty(): Size; static create(w?: number, h?: number): Size; constructor(width?: number, height?: number); /** isEmpty */ get isEmpty(): boolean; clone(): Size; equals(sz: Size): boolean; setEmpty(): Size; set(width: number, height: number): Size; round(): Size; toString(): string; } interface IRect { x: number; y: number; width: number; height: number; } declare const createRect: (x: number, y: number, width: number, height: number) => IRect; declare function rectToSize(r: IRect): ISize; declare function isEmptyRect(r: IRect): boolean; /** @private */ declare class Rectangle { x: number; y: number; width: number; height: number; static readonly Empty: Rectangle; static Temp: Rectangle; static create(x: any, y?: number, width?: number, height?: number): Rectangle; constructor(x?: number, y?: number, width?: number, height?: number); /** left */ get left(): number; set left(value: number); /** right */ get right(): number; set right(value: number); /** top */ get top(): number; set top(value: number); /** bottom */ get bottom(): number; set bottom(value: number); /** isEmpty */ get isEmpty(): boolean; get isValid(): boolean; clone(): Rectangle; getInner(): Rectangle; equals(r: Rectangle): boolean; leftBy(delta: number): Rectangle; rightBy(delta: number): Rectangle; topBy(delta: number): Rectangle; bottomBy(delta: number): Rectangle; shrink(dx: number, dy: number): Rectangle; expand(dx: number, dy: number): Rectangle; contains(x: number, y: number): boolean; setEmpty(): Rectangle; move(x?: number, y?: number): Rectangle; set(x: number, y: number, width: number, height: number): Rectangle; setWidth(value: number): Rectangle; copy(r: Rectangle): Rectangle; copyHorz(r: Rectangle): Rectangle; copyVert(r: Rectangle): Rectangle; inflate(left?: number, top?: number, right?: number, bottom?: number): Rectangle; offset(dx: number, dy: number): Rectangle; round(): Rectangle; union(r: Rectangle): Rectangle; normalize(): Rectangle; toString(): string; } /** @private */ declare class RmTool<T extends RmControl = RmControl> { private _control; private _touchElement; private _moveElement; private _draggable; private _dragTracker; private _clickX; private _clickY; private _prevX; private _prevY; protected _touches: { x: number; y: number; t: number; }[]; protected _tapped: number; private _firstTime; private _secondTime; private _longTimer; protected _primaryId: number; private _distance; private _pinching; constructor(control: T); get control(): T; /** * drag tracker */ get dragTracker(): DragTracker; setDragTracker(value: DragTracker): void; get dragging(): boolean; pointerDown(ev: PointerEvent): boolean; protected _stopEvent(ev: Event): void; private $_doDrag; private $_startMove; pointerMove(ev: PointerEvent): void; pointerUp(ev: PointerEvent): void; pointerCancel(ev: PointerEvent): void; pointerLeave(ev: PointerEvent): void; touchStart(ev: TouchEvent): void; touchMove(ev: TouchEvent): boolean; protected _isPinchTarget(dom: Element): boolean; protected _doPinch(dist: number): void; touchEnd(ev: TouchEvent): void; click(ev: PointerEvent): void; dblClick(ev: PointerEvent): void; keyPress(ev: KeyboardEvent): void; wheel(ev: WheelEvent): void; requestDrag(request: DragRequest): void; getTrackerFromRequest(request: DragRequest): DragTracker; protected _setDraggable(value: boolean): void; protected _doClick(ev: PointerEvent): void; protected _doDblClick(ev: PointerEvent): void; protected _doPointerDown(ev: PointerEvent): boolean; protected _doPointerMove(x: number, y: number, ev: PointerEvent): void; protected _doPointerUp(ev: PointerEvent): boolean; protected _doPointerCancel(ev: PointerEvent): void; protected _doPointerLeave(ev: PointerEvent): void; protected _doTouchStart(ev: TouchEvent, dom: Element): void; protected _doTouchMove(ev: TouchEvent, dom: Element): boolean; protected _doTouchEnd(ev: TouchEvent, dom: Element): void; protected _doLongPressed(dom: Element, x: number, y: number): void; protected _doKeyPress(ev: KeyboardEvent): void; protected _doWheel(ev: WheelEvent): boolean; protected _doSwipe(dom: Element, prevTracker: DragTracker, dir: RmDirection, duration: number, distance: number): boolean; protected _getDragTracker(dom: Element, dx: number, dy: number, shift: any): DragTracker; private $_startDrag; private $_drag; private $_stopDragTracker; protected _pointerToPoint(event: PointerEvent): IPoint$1; private $_checkSwipe; /** * 터치 시작 시점에 실행한 설정 등을 이 후 touch 이벤트가 발생하면 초기화한다. * ex) touch feedback, ... * iphone 메시지 편집 창에서 touch 하면 행을 선택하고 이 후 다른 이벤트가 발생하면 선택을 해제한다. */ protected _clearTouchEffects(): void; private $_getDistance; } declare abstract class DragRequest extends RmObject { } declare abstract class DragTracker<T extends RmControl = RmControl> extends RmObject { private _control; private _dragging; constructor(control: T); get control(): T; /** dragging */ get dragging(): boolean; /** startWhenCreated */ get startWhenCreated(): boolean; get cursor(): string; canSwipe(): boolean; start(eventTarget: Element, xStart: number, yStart: number, x: number, y: number): boolean; drag(eventTarget: Element, xPrev: number, yPrev: number, x: number, y: number): boolean; cancel(): void; drop(eventTarget: HTMLElement, x: number, y: number): void; swipe(dir: RmDirection, duration: number, distance: number): boolean; end(x?: number, y?: number): void; protected _doSwipe(dir: RmDirection, duration: number, distance: number): boolean; protected _showFeedback(x: number, y: number): void; protected _moveFeedback(x: number, y: number): void; protected _hideFeedback(): void; protected _doStart(eventTarget: Element, xStart: number, yStart: number, x: number, y: number): boolean; protected abstract _doDrag(eventTarget: Element, xPrev: number, yPrev: number, x: number, y: number): boolean; protected _doCanceled(): void; protected _canAccept(eventTarget: Element, x: number, y: number): boolean; protected _doCompleted(eventTarget: Element, x: number, y: number): void; protected _doEnded(x?: number, y?: number): void; } /** * @private * * Control base. */ declare abstract class RmControl extends RmObject { static readonly CLASS_NAME = "rm-control"; static readonly SHADOW_FILTER = "rm-shadow-filter"; private _activeTool; static _animatable: boolean; private _container; private _dom; private _htmlRoot; private _debugger; private _svg; private _defs; private _root; private _inited; private _testing; private _dirty; private _requestTimer; private _defaultTool; private _tool; private _toAnimation; private _invalidateLock; private _lockDirty; private _cssVars; private _resizeObserver; private _wSave; private _hSave; private _resizeTimer; private _resizeDelay; /** * 드래그를 차단할 지 여부를 나타내는 플래그. * * 맵 영역 밖에서 드래그가 시작되었을 때 맵이 회전되는 것을 방지하기 위해 사용된다. * pointerdown, touchstart 이벤트가 발생했을 때 이벤트 타겟이 맵 영역 안에 있는지 여부를 검사하여 설정된다. */ private _blockDrag; loaded: boolean; _padding: ISides; _scrolling: boolean; constructor(doc: Document, container: string | HTMLDivElement, className?: string); protected _doDestory(): void; isInited(): boolean; isTesting(): boolean; doc(): Document; dom(): HTMLElement; width(): number; height(): number; contentWidth(): number; contentHeight(): number; contentRight(): number; clipContainer(): SVGElement; activeTool(): RmTool; setSctiveTool(value: RmTool): void; isLoading(): boolean; /** * 드래그 가능 여부를 반환한다. * * 만약 드래그가 맵 영역 밖에서 시작되었다면 드래그가 차단된다.(false 반환) */ isDraggable(): boolean; clearDefs(): void; appendDom<T extends HTMLElement>(elt: T): T; addElement<T extends RmElement>(elt: T): T; removeElement(elt: RmElement): void; invalidate(force?: boolean): void; invalidateLayout(force?: boolean): void; setLock(): void; releaseLock(validate?: boolean): void; lock(func: (control: RmControl) => void): void; silentLock(func: (control: RmControl) => void): void; setResizeDelay(value: number): void; getBounds(): DOMRect; setAnimation(to?: number): void; fling(distance: number, duration: number): void; getCssVar(name: string): string; addDef(element: Element): void; removeDef(element: Element | string): void; hasDef(defId: string): boolean; /** * defs에 직사각형 clipPath를 등록한다. */ clipBounds(x?: number, y?: number, width?: number, height?: number, rd?: number): ClipRectElement; clip<T extends ClipElement>(clip: T): T; pointerToPoint(event: PointerEvent): IPoint$1; protected _setTesting(): void; protected _setSize(w: number, h: number): void; private $_addListener; protected _registerEventHandlers(dom: HTMLElement): void; protected _unresigterEventHandlers(dom: HTMLElement): void; protected abstract _creatDefaultTool(): RmTool; protected _prepareRenderers(dom: HTMLElement): void; protected _initControl(document: Document, container: string | HTMLDivElement, className: string): void; protected _initDefs(doc: Document, defs: SVGElement): void; protected _render(): void; private $_requestRender; updateNow(): void; private $_render; protected _setBackgroundStyle(style: CSSStyles): void; setDebug(message: any):