@glodon-aiot/react-components 3.0.5-beta.0
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/README.git.md +73 -0
- package/README.lib.md +135 -0
- package/dist/aiot-react-components.js +20191 -0
- package/dist/aiot-react-components.umd.cjs +183 -0
- package/dist/src/Button/index.d.ts +11 -0
- package/dist/src/ConfirmableButton/index.d.ts +16 -0
- package/dist/src/Drawable/Drawable.d.ts +32 -0
- package/dist/src/Drawable/LineElement.d.ts +9 -0
- package/dist/src/Drawable/MarkerElement.d.ts +10 -0
- package/dist/src/Drawable/MarkersMap.d.ts +8 -0
- package/dist/src/Drawable/PolygonElement.d.ts +11 -0
- package/dist/src/Drawable/index.d.ts +34 -0
- package/dist/src/Drawable/state.d.ts +49 -0
- package/dist/src/ExpandablePannel/index.d.ts +24 -0
- package/dist/src/GOSImageMap/DrawableImageMap.d.ts +9 -0
- package/dist/src/GOSImageMap/ImageMap.d.ts +9 -0
- package/dist/src/GOSImageMap/index.d.ts +2 -0
- package/dist/src/IconButton/index.d.ts +6 -0
- package/dist/src/Iconfont/CloudIconfont.d.ts +3 -0
- package/dist/src/Iconfont/EdgeIconfont.d.ts +3 -0
- package/dist/src/Iconfont/index.d.ts +3 -0
- package/dist/src/ImageMap/index.d.ts +41 -0
- package/dist/src/MouseTip/constant.d.ts +6 -0
- package/dist/src/MouseTip/index.d.ts +17 -0
- package/dist/src/MouseTip/types.d.ts +8 -0
- package/dist/src/MouseTip/utils.d.ts +8 -0
- package/dist/src/PanoramaRecordPlayer/index.d.ts +14 -0
- package/dist/src/PassMap/index.d.ts +12 -0
- package/dist/src/TrackMap/PointTooltip.d.ts +9 -0
- package/dist/src/TrackMap/TrackPoint.d.ts +19 -0
- package/dist/src/TrackMap/index.d.ts +83 -0
- package/dist/src/Zoom/index.d.ts +13 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/useBimface/example.d.ts +3 -0
- package/dist/src/useBimface/index.d.ts +65 -0
- package/dist/src/utils/JSAsyncLoader.d.ts +2 -0
- package/dist/style.css +1 -0
- package/package.json +115 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './style.less';
|
|
3
|
+
interface ButtonProps {
|
|
4
|
+
primary?: boolean;
|
|
5
|
+
backgroundColor?: string;
|
|
6
|
+
size?: 'small' | 'medium' | 'large';
|
|
7
|
+
label: string;
|
|
8
|
+
onClick?: () => void;
|
|
9
|
+
}
|
|
10
|
+
declare const Button: React.FC<ButtonProps>;
|
|
11
|
+
export default Button;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React, { FC, ReactNode } from 'react';
|
|
2
|
+
import { ButtonType } from 'antd/es/button';
|
|
3
|
+
export interface ButtonConfirm {
|
|
4
|
+
text: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ConfirmableButtonProps {
|
|
7
|
+
name: string;
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
confirm?: boolean | ButtonConfirm;
|
|
10
|
+
type?: ButtonType;
|
|
11
|
+
style?: React.CSSProperties;
|
|
12
|
+
className?: string;
|
|
13
|
+
onConfirm?: (e?: React.MouseEvent<HTMLElement, MouseEvent> | undefined) => void;
|
|
14
|
+
}
|
|
15
|
+
declare const ConfirmableButton: FC<ConfirmableButtonProps>;
|
|
16
|
+
export default ConfirmableButton;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { Line, Marker, Point, Polygon } from '.';
|
|
3
|
+
export type DrawableState = 'viewOnly' | 'drawingLine' | 'addingMarker' | 'drawingPolygon';
|
|
4
|
+
export interface DrawOptions {
|
|
5
|
+
lineColor?: string;
|
|
6
|
+
areaColor?: string;
|
|
7
|
+
lineWidth?: number | string;
|
|
8
|
+
lineDashArray?: string;
|
|
9
|
+
polygon?: {
|
|
10
|
+
showVertexIndex?: boolean;
|
|
11
|
+
vertexBgColor?: string;
|
|
12
|
+
vertexTextColor?: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export interface DrawableProps<MARKER extends Marker> {
|
|
16
|
+
drawOptions?: DrawOptions;
|
|
17
|
+
width?: number;
|
|
18
|
+
height?: number;
|
|
19
|
+
state: DrawableState;
|
|
20
|
+
scale: number;
|
|
21
|
+
lines?: Line[];
|
|
22
|
+
polygons?: Polygon[];
|
|
23
|
+
markers?: MARKER[];
|
|
24
|
+
markRenderer?(marker: MARKER): ReactNode;
|
|
25
|
+
onAddLine?(start: Point, end: Point): void;
|
|
26
|
+
onAddMarker?(at: Point): void;
|
|
27
|
+
onAddPolygon?(points: Point[]): void;
|
|
28
|
+
onStateChange?(state: DrawableState): void;
|
|
29
|
+
}
|
|
30
|
+
export interface State {
|
|
31
|
+
}
|
|
32
|
+
export default function Drawable<MARKER extends Marker>(props: DrawableProps<MARKER>): JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { Marker, Point } from '.';
|
|
3
|
+
export interface MarkerElementProps<M extends Marker> {
|
|
4
|
+
marker: M;
|
|
5
|
+
onPointChange?(point: Point): void;
|
|
6
|
+
markRenderer?(marker: Marker): ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export interface State {
|
|
9
|
+
}
|
|
10
|
+
export default function MarkerElement<M extends Marker>(props: MarkerElementProps<M>): JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Point, PolygonOptions } from '.';
|
|
3
|
+
export interface PolygonElementProps {
|
|
4
|
+
points: Point[];
|
|
5
|
+
options?: PolygonOptions;
|
|
6
|
+
editing: boolean;
|
|
7
|
+
onClose?(index: number): void;
|
|
8
|
+
}
|
|
9
|
+
export interface State {
|
|
10
|
+
}
|
|
11
|
+
export default function PolygonElement(props: PolygonElementProps): JSX.Element | null;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { DrawOptions } from './Drawable';
|
|
3
|
+
export { default as default } from './Drawable';
|
|
4
|
+
export type Identifier = string | number;
|
|
5
|
+
export interface Point {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
}
|
|
9
|
+
export interface Marker {
|
|
10
|
+
id: Identifier;
|
|
11
|
+
point: Point;
|
|
12
|
+
}
|
|
13
|
+
export interface Line {
|
|
14
|
+
id: Identifier;
|
|
15
|
+
start: Point;
|
|
16
|
+
end: Point;
|
|
17
|
+
}
|
|
18
|
+
export interface Polygon {
|
|
19
|
+
id: Identifier;
|
|
20
|
+
points: Point[];
|
|
21
|
+
autoClose?: boolean;
|
|
22
|
+
options?: PolygonOptions;
|
|
23
|
+
}
|
|
24
|
+
export interface PolygonOptions {
|
|
25
|
+
hideBorder?: boolean;
|
|
26
|
+
hideBackground?: boolean;
|
|
27
|
+
borderColor?: string;
|
|
28
|
+
backgroundColor?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function calAngle(p1: Point, p2: Point, p3?: Point): number;
|
|
31
|
+
export interface IDrawableContext {
|
|
32
|
+
options: DrawOptions;
|
|
33
|
+
}
|
|
34
|
+
export declare const DrawableContext: import("react").Context<IDrawableContext>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Point } from '.';
|
|
2
|
+
export interface DrawableContext {
|
|
3
|
+
markerPoint?: Point;
|
|
4
|
+
polygonPoints?: Point[];
|
|
5
|
+
lineStart?: Point;
|
|
6
|
+
lineEnd?: Point;
|
|
7
|
+
movingPoint?: Point;
|
|
8
|
+
}
|
|
9
|
+
export type DrawableEvent = {
|
|
10
|
+
type: 'START_ADD_MARKER';
|
|
11
|
+
} | {
|
|
12
|
+
type: 'START_DRAW_LINE';
|
|
13
|
+
} | {
|
|
14
|
+
type: 'START_DRAW_POLYGON';
|
|
15
|
+
} | {
|
|
16
|
+
type: 'ADD_MARKER';
|
|
17
|
+
point: Point;
|
|
18
|
+
} | {
|
|
19
|
+
type: 'ADD_LINE_START';
|
|
20
|
+
point: Point;
|
|
21
|
+
} | {
|
|
22
|
+
type: 'ADD_LINE_END';
|
|
23
|
+
point: Point;
|
|
24
|
+
} | {
|
|
25
|
+
type: 'DRAW_LINE_COMPLETED';
|
|
26
|
+
} | {
|
|
27
|
+
type: 'DRAW_POLYGON';
|
|
28
|
+
start: Point;
|
|
29
|
+
} | {
|
|
30
|
+
type: 'ADD_POLYGON_POINT';
|
|
31
|
+
point: Point;
|
|
32
|
+
} | {
|
|
33
|
+
type: 'DRAW_POLYGON_COMPLETE';
|
|
34
|
+
} | {
|
|
35
|
+
type: 'MOUSE_MOVE';
|
|
36
|
+
point: Point;
|
|
37
|
+
} | {
|
|
38
|
+
type: 'RESET';
|
|
39
|
+
} | {
|
|
40
|
+
type: 'CANCEL';
|
|
41
|
+
};
|
|
42
|
+
type SimpleState<T> = {
|
|
43
|
+
value: T;
|
|
44
|
+
context: DrawableContext;
|
|
45
|
+
};
|
|
46
|
+
type S<T> = SimpleState<T>;
|
|
47
|
+
export type DrawableState = S<'idle'> | S<'addingMarker'> | S<'drawingLine'> | S<'drawingPolygon'> | S<'drawCompleted'> | S<'canceled'>;
|
|
48
|
+
export declare const drawableMachine: import("xstate").StateMachine<DrawableContext, any, DrawableEvent, DrawableState, import("xstate").BaseActionObject, import("xstate").ServiceMap, import("xstate").ResolveTypegenMeta<import("xstate").TypegenDisabled, DrawableEvent, import("xstate").BaseActionObject, import("xstate").ServiceMap>>;
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CSSProperties, FC, ReactElement } from 'react';
|
|
2
|
+
import './style.less';
|
|
3
|
+
export type PannelMode = 'max' | 'normal' | 'min';
|
|
4
|
+
interface ExpandablePannelProps {
|
|
5
|
+
visible?: boolean;
|
|
6
|
+
style?: CSSProperties;
|
|
7
|
+
className?: string;
|
|
8
|
+
headerClassName?: string;
|
|
9
|
+
mode?: PannelMode;
|
|
10
|
+
icons?: {
|
|
11
|
+
collapseButton: ReactElement;
|
|
12
|
+
expandButton: ReactElement;
|
|
13
|
+
fullscreenButton: ReactElement;
|
|
14
|
+
exitFullscreenButton: ReactElement;
|
|
15
|
+
};
|
|
16
|
+
extraButtons?: ReactElement[];
|
|
17
|
+
header?: ReactElement;
|
|
18
|
+
fullScreenContainer?: HTMLElement;
|
|
19
|
+
onNormalize?: () => void;
|
|
20
|
+
onMinimize?: () => void;
|
|
21
|
+
onMaximize?: () => void;
|
|
22
|
+
}
|
|
23
|
+
declare const ExpandablePannel: FC<ExpandablePannelProps>;
|
|
24
|
+
export default ExpandablePannel;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Marker } from '../Drawable';
|
|
3
|
+
import { DrawableProps } from '../Drawable/Drawable';
|
|
4
|
+
export interface DrawableImageMapProps<MARKER extends Marker> extends DrawableProps<MARKER> {
|
|
5
|
+
url?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface State {
|
|
8
|
+
}
|
|
9
|
+
export default function DrawableImageMap<MARKER extends Marker>(props: DrawableImageMapProps<MARKER>): JSX.Element | null;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export interface ImageMapProps {
|
|
3
|
+
url: string;
|
|
4
|
+
onScaleChange(scale: number, width: number, height: number): void;
|
|
5
|
+
onLoad?(img: HTMLImageElement): void;
|
|
6
|
+
}
|
|
7
|
+
export interface State {
|
|
8
|
+
}
|
|
9
|
+
export default function ImageMap(props: ImageMapProps): JSX.Element;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React, { CSSProperties } from 'react';
|
|
2
|
+
import './style.less';
|
|
3
|
+
import { ITrackPoint } from '..';
|
|
4
|
+
import { TrackMapActions, Transform } from '../TrackMap';
|
|
5
|
+
interface ImageMapProps {
|
|
6
|
+
url: string;
|
|
7
|
+
points?: ITrackPoint[];
|
|
8
|
+
pointSize?: number;
|
|
9
|
+
direction?: number;
|
|
10
|
+
activePointId?: string;
|
|
11
|
+
lineStyle?: CSSProperties;
|
|
12
|
+
pointStyle?: CSSProperties;
|
|
13
|
+
directionStyle?: CSSProperties;
|
|
14
|
+
transform?: Transform;
|
|
15
|
+
trackEditable?: boolean;
|
|
16
|
+
trackEditing?: boolean;
|
|
17
|
+
keepRatio?: boolean;
|
|
18
|
+
actions?: TrackMapActions;
|
|
19
|
+
onTrackEditingChange?: (editing: boolean) => void;
|
|
20
|
+
onPointClick?: (val: ITrackPoint) => void;
|
|
21
|
+
passes?: any;
|
|
22
|
+
activePassId?: number;
|
|
23
|
+
passStyle?: CSSProperties;
|
|
24
|
+
activePassStyle?: CSSProperties;
|
|
25
|
+
marks?: any;
|
|
26
|
+
draggable?: boolean;
|
|
27
|
+
zoomable?: boolean;
|
|
28
|
+
zoomStep?: number;
|
|
29
|
+
offsetEdge?: number[];
|
|
30
|
+
zoomMax?: number;
|
|
31
|
+
zoomMin?: number;
|
|
32
|
+
onImageLoad?: (img: HTMLImageElement) => void;
|
|
33
|
+
onTransform?: (transform: Transform, pointsEl?: SVGCircleElement[], canvas?: SVGSVGElement) => void;
|
|
34
|
+
onPointsChange?: (points: ITrackPoint[]) => void;
|
|
35
|
+
}
|
|
36
|
+
export interface ImageMapRefProps {
|
|
37
|
+
zoomIn: (zoom?: number) => void;
|
|
38
|
+
zoomOut: (zoom?: number) => void;
|
|
39
|
+
}
|
|
40
|
+
declare const ImageMap: React.ForwardRefExoticComponent<ImageMapProps & React.RefAttributes<ImageMapRefProps>>;
|
|
41
|
+
export default ImageMap;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FC, CSSProperties } from 'react';
|
|
2
|
+
import './style.less';
|
|
3
|
+
import { Placement } from './types';
|
|
4
|
+
interface MouseTipProps {
|
|
5
|
+
className?: string;
|
|
6
|
+
style?: CSSProperties;
|
|
7
|
+
visible?: boolean;
|
|
8
|
+
defaultPosition?: {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
};
|
|
12
|
+
forElement?: HTMLElement | null;
|
|
13
|
+
placement?: Placement;
|
|
14
|
+
curserPosition?: [number, number];
|
|
15
|
+
}
|
|
16
|
+
declare const MouseTip: FC<MouseTipProps>;
|
|
17
|
+
export default MouseTip;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type HorizontalPlacement = 'left' | 'center' | 'right';
|
|
2
|
+
export type VerticalPlacement = 'top' | 'middle' | 'bottom';
|
|
3
|
+
export type SinglePlacemnet = HorizontalPlacement | VerticalPlacement;
|
|
4
|
+
export type Placement = 'left-top' | 'right-top' | 'left-bottom' | 'right-bottom' | 'top' | 'bottom' | 'left' | 'right';
|
|
5
|
+
export interface PlacementParams {
|
|
6
|
+
className: string;
|
|
7
|
+
margin: [number, number];
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { HorizontalPlacement, VerticalPlacement } from './types';
|
|
2
|
+
export declare const getOffsetX: (e: any) => any;
|
|
3
|
+
export declare const getOffsetY: (e: any) => any;
|
|
4
|
+
export declare const placementStringToArr: (Placement: any) => [HorizontalPlacement, VerticalPlacement];
|
|
5
|
+
export declare const getPlacementPosition: (placement: [HorizontalPlacement, VerticalPlacement], contentRect?: DOMRect, gap?: [number, number]) => {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CSSProperties, FC } from 'react';
|
|
2
|
+
interface PanoramaRecordPlayerProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
style?: CSSProperties;
|
|
5
|
+
length?: number;
|
|
6
|
+
current?: number;
|
|
7
|
+
speed?: number;
|
|
8
|
+
play?: boolean;
|
|
9
|
+
loop?: boolean;
|
|
10
|
+
loading?: boolean;
|
|
11
|
+
onChange: (index: number) => void;
|
|
12
|
+
}
|
|
13
|
+
declare const PanoramaRecordPlayer: FC<PanoramaRecordPlayerProps>;
|
|
14
|
+
export default PanoramaRecordPlayer;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React, { CSSProperties } from 'react';
|
|
2
|
+
import './style.less';
|
|
3
|
+
interface PassMapProps {
|
|
4
|
+
passes?: any;
|
|
5
|
+
style?: CSSProperties;
|
|
6
|
+
scale: number;
|
|
7
|
+
activePassId?: number;
|
|
8
|
+
passStyle?: CSSProperties;
|
|
9
|
+
activePassStyle?: CSSProperties;
|
|
10
|
+
}
|
|
11
|
+
declare const PassMap: React.FC<PassMapProps>;
|
|
12
|
+
export default PassMap;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FC, Key } from 'react';
|
|
2
|
+
import { AbstractTooltipProps } from 'antd/es/tooltip';
|
|
3
|
+
import { ITrackPoint } from '.';
|
|
4
|
+
export interface PointTooltipProps extends AbstractTooltipProps {
|
|
5
|
+
point: ITrackPoint;
|
|
6
|
+
key?: Key;
|
|
7
|
+
}
|
|
8
|
+
declare const PointTooltip: FC<PointTooltipProps>;
|
|
9
|
+
export default PointTooltip;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CSSProperties, FC, Key } from 'react';
|
|
2
|
+
import { ITrackPoint } from '.';
|
|
3
|
+
interface TrackPointProps {
|
|
4
|
+
point: ITrackPoint;
|
|
5
|
+
open?: boolean;
|
|
6
|
+
key?: Key;
|
|
7
|
+
id?: Key;
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
r: number;
|
|
11
|
+
style?: CSSProperties & any;
|
|
12
|
+
scale?: number;
|
|
13
|
+
active?: boolean;
|
|
14
|
+
hidden?: boolean;
|
|
15
|
+
onPointClick?: (val: ITrackPoint) => void;
|
|
16
|
+
getTooltipContainer?: (node: HTMLElement) => HTMLElement;
|
|
17
|
+
}
|
|
18
|
+
declare const TrackPoint: FC<TrackPointProps>;
|
|
19
|
+
export default TrackPoint;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import React, { CSSProperties, ReactElement } from 'react';
|
|
2
|
+
import './style.less';
|
|
3
|
+
export interface Position {
|
|
4
|
+
id: number | string;
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
}
|
|
8
|
+
export type OrderedPosition = Position & {
|
|
9
|
+
order: number;
|
|
10
|
+
};
|
|
11
|
+
export interface Transform {
|
|
12
|
+
translate?: number[];
|
|
13
|
+
rotate?: number;
|
|
14
|
+
scale?: number[];
|
|
15
|
+
}
|
|
16
|
+
export interface ITrackPoint {
|
|
17
|
+
id: string | number;
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
order: number;
|
|
21
|
+
lineStyle?: CSSProperties & any;
|
|
22
|
+
pointStyle?: CSSProperties & any;
|
|
23
|
+
tooltipStyle?: CSSProperties;
|
|
24
|
+
tooltipOpen?: boolean;
|
|
25
|
+
tooltipRender?: (item: Position) => HTMLElement | string | number;
|
|
26
|
+
}
|
|
27
|
+
export interface TrackEditButtonConfirm {
|
|
28
|
+
text: string;
|
|
29
|
+
}
|
|
30
|
+
export interface TrackEditButton {
|
|
31
|
+
text?: string;
|
|
32
|
+
style?: CSSProperties;
|
|
33
|
+
className?: string;
|
|
34
|
+
children?: React.ReactNode;
|
|
35
|
+
}
|
|
36
|
+
export interface TrackEditConfirmableButton extends TrackEditButton {
|
|
37
|
+
confirm?: boolean | TrackEditButtonConfirm;
|
|
38
|
+
}
|
|
39
|
+
export interface TrackEditButtons {
|
|
40
|
+
editButton?: TrackEditButton & {
|
|
41
|
+
exitTitleText?: string;
|
|
42
|
+
titleText?: string;
|
|
43
|
+
};
|
|
44
|
+
okButton?: TrackEditConfirmableButton;
|
|
45
|
+
cancelButton?: TrackEditConfirmableButton;
|
|
46
|
+
}
|
|
47
|
+
export type TrackMapActions = boolean | TrackEditButtons;
|
|
48
|
+
interface TrackMapProps {
|
|
49
|
+
width: number;
|
|
50
|
+
height: number;
|
|
51
|
+
points: ITrackPoint[];
|
|
52
|
+
scale: number;
|
|
53
|
+
pointSize?: number;
|
|
54
|
+
direction?: number;
|
|
55
|
+
activePointId?: string;
|
|
56
|
+
style?: CSSProperties;
|
|
57
|
+
lineStyle?: CSSProperties & any;
|
|
58
|
+
pointStyle?: CSSProperties & any;
|
|
59
|
+
directionStyle?: CSSProperties;
|
|
60
|
+
marks?: ITrackMapMark[];
|
|
61
|
+
movable?: boolean;
|
|
62
|
+
resizable?: boolean;
|
|
63
|
+
transform?: Transform;
|
|
64
|
+
keepRatio?: boolean;
|
|
65
|
+
actions?: TrackMapActions;
|
|
66
|
+
onPointClick?: (val: ITrackPoint) => void;
|
|
67
|
+
onTransform?: (transform: Transform, pointsEl?: SVGCircleElement[], canvas?: SVGSVGElement) => void;
|
|
68
|
+
onPointsChange?: (points: ITrackPoint[]) => void;
|
|
69
|
+
onCancelResize?: VoidFunction;
|
|
70
|
+
setIsSaved?: (val: boolean) => void;
|
|
71
|
+
isSaved?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface Point {
|
|
74
|
+
id: string | number;
|
|
75
|
+
x: number;
|
|
76
|
+
y: number;
|
|
77
|
+
}
|
|
78
|
+
export interface ITrackMapMark extends Point {
|
|
79
|
+
renderData: any;
|
|
80
|
+
render: (renderData: any, markData: Point) => ReactElement;
|
|
81
|
+
}
|
|
82
|
+
declare const TrackMap: React.FC<TrackMapProps>;
|
|
83
|
+
export default TrackMap;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CSSProperties, FC } from 'react';
|
|
2
|
+
interface ZoomProps {
|
|
3
|
+
className?: string;
|
|
4
|
+
style?: CSSProperties;
|
|
5
|
+
value?: number;
|
|
6
|
+
min?: number;
|
|
7
|
+
max?: number;
|
|
8
|
+
step?: number;
|
|
9
|
+
onChange: (value: number) => void;
|
|
10
|
+
showText?: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare const Zoom: FC<ZoomProps>;
|
|
13
|
+
export default Zoom;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { default as Button } from './Button';
|
|
2
|
+
export { default as ExpandablePannel } from './ExpandablePannel';
|
|
3
|
+
export { default as IconButton } from './IconButton';
|
|
4
|
+
export { default as Iconfont } from './Iconfont';
|
|
5
|
+
export { default as ImageMap } from './ImageMap';
|
|
6
|
+
export type { ImageMapRefProps } from './ImageMap';
|
|
7
|
+
export { default as PanoramaRecordPlayer } from './PanoramaRecordPlayer';
|
|
8
|
+
export { default as TrackMap } from './TrackMap';
|
|
9
|
+
export type { ITrackPoint, TrackMapActions, TrackEditButtons, TrackEditConfirmableButton, TrackEditButton, } from './TrackMap';
|
|
10
|
+
export { default as MouseTip } from './MouseTip';
|
|
11
|
+
export { default as PassMap } from './PassMap';
|
|
12
|
+
export { default as Zoom } from './Zoom';
|
|
13
|
+
export { useBimface } from './useBimface';
|
|
14
|
+
export * from './GOSImageMap';
|
|
15
|
+
export * from './Drawable';
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type LengthUnits = any;
|
|
3
|
+
type OrbitButton = any;
|
|
4
|
+
type BimfaceColor = any;
|
|
5
|
+
interface Viewer3DConfig {
|
|
6
|
+
avatar?: any;
|
|
7
|
+
backgroundColor?: string[];
|
|
8
|
+
domElement?: HTMLElement;
|
|
9
|
+
enableConstraintZoom?: boolean;
|
|
10
|
+
enableCoordinateSystem?: number;
|
|
11
|
+
enableCSMShadow?: boolean;
|
|
12
|
+
enableExplosion?: boolean;
|
|
13
|
+
enableHover?: boolean;
|
|
14
|
+
enableIBLBackground?: boolean;
|
|
15
|
+
enableLogarithmicDepthBuffer?: boolean;
|
|
16
|
+
enableMouseMovePick?: boolean;
|
|
17
|
+
enableOrbit?: boolean;
|
|
18
|
+
enableRealisticMiniMap?: boolean;
|
|
19
|
+
enableReplaceMaterial?: boolean;
|
|
20
|
+
enableShortcutKey?: boolean;
|
|
21
|
+
enableSplitComponent?: boolean;
|
|
22
|
+
enableSSAO?: boolean;
|
|
23
|
+
enableToggleContextMenuDisplay?: boolean;
|
|
24
|
+
enableViewHouse?: boolean;
|
|
25
|
+
enableWireframe?: boolean;
|
|
26
|
+
exposure?: number;
|
|
27
|
+
globalUnit?: LengthUnits;
|
|
28
|
+
loadIBLScene?: object;
|
|
29
|
+
memoryThreshold?: number;
|
|
30
|
+
orbitButton?: OrbitButton;
|
|
31
|
+
renderMode?: string;
|
|
32
|
+
walkRotationSpeed?: number;
|
|
33
|
+
wireframeColor?: BimfaceColor;
|
|
34
|
+
}
|
|
35
|
+
export interface BimfaceFloor {
|
|
36
|
+
archElev: number;
|
|
37
|
+
areas: null;
|
|
38
|
+
elevation: number;
|
|
39
|
+
height: null;
|
|
40
|
+
id: string;
|
|
41
|
+
miniMap: string;
|
|
42
|
+
name: string;
|
|
43
|
+
rooms: null;
|
|
44
|
+
structElev: number;
|
|
45
|
+
}
|
|
46
|
+
export declare function useBimface(config?: Viewer3DConfig): {
|
|
47
|
+
BimfaceViewer: any;
|
|
48
|
+
BimfaceSection: any;
|
|
49
|
+
BimfaceMark: any;
|
|
50
|
+
BimfaceViewerEvents: any;
|
|
51
|
+
viewer: any;
|
|
52
|
+
viewerAdded: boolean;
|
|
53
|
+
sDKLoaded: boolean;
|
|
54
|
+
loadedModelCount: number;
|
|
55
|
+
loadModels: (viewTokens: string[]) => void;
|
|
56
|
+
setContainerDom: React.Dispatch<React.SetStateAction<HTMLDivElement | undefined>>;
|
|
57
|
+
getSnapshot: (type?: 'image/png' | 'image/jpeg' | 'image/webp', quality?: number) => string | undefined;
|
|
58
|
+
setComponentsColorByCatgryId: (categoryColors: any) => void;
|
|
59
|
+
setAllComponentsColor: (colorString: string) => void;
|
|
60
|
+
navigationMapByHeight: (height: number, maxSize: {
|
|
61
|
+
width: number;
|
|
62
|
+
height: number;
|
|
63
|
+
}, cb: (img: HTMLImageElement) => void) => void;
|
|
64
|
+
};
|
|
65
|
+
export {};
|
package/dist/style.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.storybook-button{font-family:Nunito Sans,Helvetica Neue,Helvetica,Arial,sans-serif;font-weight:700;border:0;border-radius:3em;cursor:pointer;display:inline-block;line-height:1}.storybook-button--primary{color:#fff;background-color:#027bf4}.storybook-button--secondary{color:#333;background-color:transparent;box-shadow:#00000026 0 0 0 1px inset}.storybook-button--small{font-size:12px;padding:10px 16px}.storybook-button--medium{font-size:14px;padding:11px 20px}.storybook-button--large{font-size:16px;padding:12px 24px}.g-expandable-pannel-wrap{top:0;right:0;bottom:0;left:0;z-index:999}.g-expandable-pannel-wrap .g-expandable-pannel-expand-bar{position:absolute;right:0;top:0;background-color:#222836;z-index:9999}.g-expandable-pannel-wrap .g-expandable-pannel-expand-bar.collapsed{position:absolute;top:0;right:0;z-index:9;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.g-expandable-pannel-wrap .g-expandable-pannel-expand-bar.expaned{padding:0}.g-expandable-pannel-wrap .g-expandable-pannel-expand-bar.expaned .g-icon-btn{background-color:#0000}.g-expandable-pannel-wrap .g-expandable-pannel{width:100%;height:100%;border:.5px solid #313A4D}.g-expandable-pannel-wrap .g-expandable-pannel-header{position:absolute;right:0;top:0;z-index:9;padding-right:28px;height:28px;display:flex;flex-direction:row-reverse}.g-expandable-pannel-wrap .g-expandable-pannel-body{opacity:.85;width:100%;height:100%}.g-expandable-pannel-wrap .g-expandable-pannel-body .icon{width:16px;height:16px}.g-expandable-pannel-wrap .g-expandable-pannel.full{width:100%!important;height:100%!important;top:0;bottom:0;left:55px;right:55px;z-index:9}.g-expandable-pannel-wrap .g-expandable-pannel.hidden{top:0;right:-20000px;bottom:0;left:-20000px}.g-expandable-pannel-wrap .g-expandable-pannel.hidden+.bar-btn{position:absolute;right:0!important;background:rgba(58,63,76,.5);border-radius:20px 0 0 20px}.g-expandable-pannel-wrap .g-expandable-pannel.normal{height:250px;overflow:hidden;padding:0}.g-expandable-pannel-wrap .g-expandable-pannel.full+.bar-btn{top:0;right:55px;z-index:99}.g-expandable-pannel-wrap .g-expandable-pannel.full~.cover{display:block;position:absolute;width:100vw;height:100vh;top:0;left:0;background:#00000066}.g-expandable-pannel-wrap .g-expandable-pannel.hiddern~.cover{display:none}.g-expandable-pannel-wrap .g-expandable-pannel .minimap-menu-pannel{width:134px;background:#ffffff;border:1px solid #ececec;box-shadow:2px 2px 6px #c0c0c040;border-radius:4px;padding:6px 12px}.g-expandable-pannel-wrap .g-expandable-pannel .minimap-menu-pannel .item-row{width:100%;display:flex;height:32px;align-items:center}.g-expandable-pannel-wrap .g-expandable-pannel .minimap-menu-pannel .item-row img{width:16px;height:16px;margin:0 8px}.g-expandable-pannel-wrap .g-expandable-pannel .status{display:block}.g-expandable-pannel-wrap .g-expandable-pannel .status.success:before{display:inline-block;content:"";width:12px;height:12px;background-color:#52c41a}.g-expandable-pannel-wrap .g-expandable-pannel .status.error:before{display:inline-block;content:"";width:12px;height:12px;background-color:#ff4d4f}.g-expandable-pannel-wrap .g-expandable-pannel .pass-confirm-wrap{position:absolute}.g-icon-btn{height:28px;width:28px;line-height:28px;background-color:#222836;color:#b8c1d0;cursor:pointer;text-align:center;padding:0;border:none;font-size:16px;display:block}.g-icon-btn:hover{color:#fff;background:linear-gradient(180deg,#4e5b73 0%,#222836 100%);border-image:linear-gradient(180deg,#4e5b73 0%,#222836 100%),linear-gradient(180deg,#ffffff 16.67%,#d2d2d2 49.48%,#000000 73.44%,#e4e4e4 92.71%)}.g-icon-btn:disabled{color:#68707e;cursor:not-allowed;background:linear-gradient(180deg,#0a111d 0%,#222836 100%)}*{box-sizing:border-box}.image-map{position:relative;width:100%;height:100%;overflow:hidden;-webkit-user-select:none;user-select:none;display:flex;justify-content:center}.image-map .image-map-pannel{width:100%;height:100%;-webkit-user-select:none;user-select:none;display:flex;justify-content:center;align-items:center}.image-map .image-map-toolbar{position:absolute;width:auto;height:auto;bottom:12px;z-index:99;display:flex;align-items:center;gap:12px;background-color:#393939;padding:10px;border-radius:6px}.image-map .image-map-toolbar .zoom-controller{display:flex;height:100%;align-items:center;gap:12px;color:#fff}.image-map .image-map-toolbar .zoom-controller .g-icon-btn,.image-map .image-map-toolbar .zoom-controller .g-icon-btn button{background-color:unset;font-size:16px;border:.5px solid #6f6f6f;border-radius:2px;font-size:14px}.image-map .image-map-toolbar .zoom-controller .g-icon-btn .anticon,.image-map .image-map-toolbar .zoom-controller .g-icon-btn button .anticon{font-size:14px}.image-map .image-map-toolbar .zoom-controller.vertical{flex-direction:column}.image-map .image-map-toolbar .zoom-controller.vertical .g-icon-btn{background-color:red;margin-top:6px;border:none}.image-map .image-map-toolbar .zoom-controller.vertical .g-icon-btn .anticon{font-size:16px}.image-map .image-map-toolbar .zoom-controller.horizontal{flex-direction:row}.image-map .image-map-toolbar .line{width:1px;height:12px;border:.5px solid #e0e0e0}.image-map .image-map-toolbar .moveable-controller{background-color:unset;height:100%;border:.5px solid #6f6f6f;border-radius:2px}.image-map .image-map-toolbar .moveable-controller .moveable-controller-btn{position:relative;border:none;border-radius:2px;background-color:unset;padding:0;display:flex;height:100%}.image-map .image-map-toolbar .moveable-controller .moveable-controller-btn .btn-change{display:flex;align-items:center;color:#fff;gap:10px;height:100%;margin-inline-end:unset;padding:4px 8px}.image-map .image-map-toolbar .moveable-controller .moveable-controller-btn .btn-change svg{font-size:16px}.image-map .image-map-toolbar .moveable-controller .moveable-controller-btn .anticon{font-size:24px}.image-map .image-map-toolbar .moveable-controller .moveable-controller-btn.active{color:#fff}.image-map .image-map-toolbar .moveable-controller .moveable-controller-btn:hover{background:linear-gradient(180deg,#4e5b73 0%,#222836 100%)}.image-map .image-map-toolbar .editing-controller{display:flex;gap:12px;align-items:center;font-size:14px;font-weight:400;line-height:20px;letter-spacing:0px;text-align:left}.image-map .image-map-toolbar .editing-controller .ant-btn-default{border:.5px solid #6f6f6f;border-radius:2px;background-color:unset;color:#fff;padding:4px 8px}.image-map .image-map-toolbar .editing-controller .ant-btn-default:hover{background:linear-gradient(180deg,#4e5b73 0%,#222836 100%)}.image-map .image-map-toolbar .editing-controller .ant-btn-primary{border-radius:2px;background-color:#0532a6;border:.5px solid #6f6f6f;color:#fff;padding:4px 8px}.image-map .image-map-toolbar .editing-controller .ant-btn-primary:hover{background:#0949d2}.image-map .image-map-toolbar .editing-controller .ant-btn-primary .save-detail{display:flex;align-items:center;color:#fff;gap:10px;height:100%}.image-map .image-map-toolbar .editing-controller .ant-btn-primary .save-detail svg{font-size:16px}.pass-map{background:transparent}.pass-map .pass-area{position:absolute;background:rgba(255,77,79,.21);border:1px solid #00000000;z-index:1}.pass-map .pass-area-circle{border-radius:50%}.pass-map .pass-area__active{background:rgba(255,77,79,.25);border:1px solid #ff4d4f}.track-map{z-index:10;position:relative}.track-map .point{cursor:pointer}.track-map .bottom-action{position:fixed;left:50%;bottom:10px;transform:translate(-50%);z-index:1000;display:flex;justify-content:center;align-items:flex-end;padding-bottom:12px}.track-map .bottom-action .bottom-pannel{background:white;height:48px;background:rgba(255,255,255,.9);border:1px solid #f8f8f8;box-shadow:2px 2px 4px #c0c0c040;border-radius:4px;padding:0 12px}:where(.css-ed5zg0)[class^=ant-popconfirm],:where(.css-ed5zg0)[class*=" ant-popconfirm"]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-size:14px;box-sizing:border-box}:where(.css-ed5zg0)[class^=ant-popconfirm]:before,:where(.css-ed5zg0)[class*=" ant-popconfirm"]:before,:where(.css-ed5zg0)[class^=ant-popconfirm]:after,:where(.css-ed5zg0)[class*=" ant-popconfirm"]:after{box-sizing:border-box}:where(.css-ed5zg0)[class^=ant-popconfirm] [class^=ant-popconfirm],:where(.css-ed5zg0)[class*=" ant-popconfirm"] [class^=ant-popconfirm],:where(.css-ed5zg0)[class^=ant-popconfirm] [class*=" ant-popconfirm"],:where(.css-ed5zg0)[class*=" ant-popconfirm"] [class*=" ant-popconfirm"]{box-sizing:border-box}:where(.css-ed5zg0)[class^=ant-popconfirm] [class^=ant-popconfirm]:before,:where(.css-ed5zg0)[class*=" ant-popconfirm"] [class^=ant-popconfirm]:before,:where(.css-ed5zg0)[class^=ant-popconfirm] [class*=" ant-popconfirm"]:before,:where(.css-ed5zg0)[class*=" ant-popconfirm"] [class*=" ant-popconfirm"]:before,:where(.css-ed5zg0)[class^=ant-popconfirm] [class^=ant-popconfirm]:after,:where(.css-ed5zg0)[class*=" ant-popconfirm"] [class^=ant-popconfirm]:after,:where(.css-ed5zg0)[class^=ant-popconfirm] [class*=" ant-popconfirm"]:after,:where(.css-ed5zg0)[class*=" ant-popconfirm"] [class*=" ant-popconfirm"]:after{box-sizing:border-box}:where(.css-ed5zg0).ant-popconfirm{z-index:1060}:where(.css-ed5zg0).ant-popconfirm .ant-popconfirm-inner-content{color:#000000e0}:where(.css-ed5zg0).ant-popconfirm .ant-popconfirm-message{position:relative;margin-bottom:8px;color:#000000e0;font-size:14px;display:flex;flex-wrap:nowrap;align-items:start}:where(.css-ed5zg0).ant-popconfirm .ant-popconfirm-message>.ant-popconfirm-message-icon .anticon{color:#faad14;font-size:14px;flex:none;line-height:1;padding-top:4px}:where(.css-ed5zg0).ant-popconfirm .ant-popconfirm-message-title{flex:auto;margin-inline-start:8px}:where(.css-ed5zg0).ant-popconfirm .ant-popconfirm-message-title-only{font-weight:600}:where(.css-ed5zg0).ant-popconfirm .ant-popconfirm-description{position:relative;margin-inline-start:22px;margin-bottom:8px;color:#000000e0;font-size:14px}:where(.css-ed5zg0).ant-popconfirm .ant-popconfirm-buttons{text-align:end}:where(.css-ed5zg0).ant-popconfirm .ant-popconfirm-buttons button{margin-inline-start:8px}:where(.css-ed5zg0)[class^=ant-popover],:where(.css-ed5zg0)[class*=" ant-popover"]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-size:14px;box-sizing:border-box}:where(.css-ed5zg0)[class^=ant-popover]:before,:where(.css-ed5zg0)[class*=" ant-popover"]:before,:where(.css-ed5zg0)[class^=ant-popover]:after,:where(.css-ed5zg0)[class*=" ant-popover"]:after{box-sizing:border-box}:where(.css-ed5zg0)[class^=ant-popover] [class^=ant-popover],:where(.css-ed5zg0)[class*=" ant-popover"] [class^=ant-popover],:where(.css-ed5zg0)[class^=ant-popover] [class*=" ant-popover"],:where(.css-ed5zg0)[class*=" ant-popover"] [class*=" ant-popover"]{box-sizing:border-box}:where(.css-ed5zg0)[class^=ant-popover] [class^=ant-popover]:before,:where(.css-ed5zg0)[class*=" ant-popover"] [class^=ant-popover]:before,:where(.css-ed5zg0)[class^=ant-popover] [class*=" ant-popover"]:before,:where(.css-ed5zg0)[class*=" ant-popover"] [class*=" ant-popover"]:before,:where(.css-ed5zg0)[class^=ant-popover] [class^=ant-popover]:after,:where(.css-ed5zg0)[class*=" ant-popover"] [class^=ant-popover]:after,:where(.css-ed5zg0)[class^=ant-popover] [class*=" ant-popover"]:after,:where(.css-ed5zg0)[class*=" ant-popover"] [class*=" ant-popover"]:after{box-sizing:border-box}:where(.css-ed5zg0).ant-popover{box-sizing:border-box;margin:0;padding:0;color:#000000e0;font-size:14px;line-height:1.57142857;list-style:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";position:absolute;top:0;left:0;z-index:1030;font-weight:400;white-space:normal;text-align:start;cursor:auto;-webkit-user-select:text;user-select:text;--antd-arrow-background-color: #ffffff}:where(.css-ed5zg0).ant-popover-rtl{direction:rtl}:where(.css-ed5zg0).ant-popover-hidden{display:none}:where(.css-ed5zg0).ant-popover .ant-popover-content{position:relative}:where(.css-ed5zg0).ant-popover .ant-popover-inner{background-color:#fff;background-clip:padding-box;border-radius:8px;box-shadow:0 6px 16px #00000014,0 3px 6px -4px #0000001f,0 9px 28px 8px #0000000d;padding:12px}:where(.css-ed5zg0).ant-popover .ant-popover-title{min-width:177px;margin-bottom:8px;color:#000000e0;font-weight:600}:where(.css-ed5zg0).ant-popover .ant-popover-inner-content{color:#000000e0;padding:0}:where(.css-ed5zg0).ant-popover .ant-popover-arrow{position:absolute;z-index:1;display:block;pointer-events:none;width:16px;height:16px;overflow:hidden;border:0}:where(.css-ed5zg0).ant-popover .ant-popover-arrow:before{position:absolute;bottom:0;inset-inline-start:0;width:16px;height:8px;background:var(--antd-arrow-background-color);clip-path:polygon(1.65685425px 100%,50% 1.65685425px,14.34314575px 100%,1.65685425px 100%);clip-path:path("M 0 8 A 4 4 0 0 0 2.82842712474619 6.82842712474619 L 6.585786437626905 3.0710678118654755 A 2 2 0 0 1 9.414213562373096 3.0710678118654755 L 13.17157287525381 6.82842712474619 A 4 4 0 0 0 16 8 Z");content:""}:where(.css-ed5zg0).ant-popover .ant-popover-arrow:after{content:"";position:absolute;width:8.97056275px;height:8.97056275px;bottom:0;inset-inline:0;margin:auto;border-radius:0 0 2px;transform:translateY(50%) rotate(-135deg);box-shadow:2px 2px 5px #0000000d;z-index:0;background:transparent}:where(.css-ed5zg0).ant-popover .ant-popover-arrow:before{background:var(--antd-arrow-background-color)}:where(.css-ed5zg0).ant-popover-placement-top .ant-popover-arrow,:where(.css-ed5zg0).ant-popover-placement-topLeft .ant-popover-arrow,:where(.css-ed5zg0).ant-popover-placement-topRight .ant-popover-arrow{bottom:0;transform:translateY(100%) rotate(180deg)}:where(.css-ed5zg0).ant-popover-placement-top .ant-popover-arrow{left:50%;transform:translate(-50%) translateY(100%) rotate(180deg)}:where(.css-ed5zg0).ant-popover-placement-topLeft .ant-popover-arrow{left:12px}:where(.css-ed5zg0).ant-popover-placement-topRight .ant-popover-arrow{right:12px}:where(.css-ed5zg0).ant-popover-placement-bottom .ant-popover-arrow,:where(.css-ed5zg0).ant-popover-placement-bottomLeft .ant-popover-arrow,:where(.css-ed5zg0).ant-popover-placement-bottomRight .ant-popover-arrow{top:0;transform:translateY(-100%)}:where(.css-ed5zg0).ant-popover-placement-bottom .ant-popover-arrow{left:50%;transform:translate(-50%) translateY(-100%)}:where(.css-ed5zg0).ant-popover-placement-bottomLeft .ant-popover-arrow{left:12px}:where(.css-ed5zg0).ant-popover-placement-bottomRight .ant-popover-arrow{right:12px}:where(.css-ed5zg0).ant-popover-placement-left .ant-popover-arrow,:where(.css-ed5zg0).ant-popover-placement-leftTop .ant-popover-arrow,:where(.css-ed5zg0).ant-popover-placement-leftBottom .ant-popover-arrow{right:0;transform:translate(100%) rotate(90deg)}:where(.css-ed5zg0).ant-popover-placement-left .ant-popover-arrow{top:50%;transform:translateY(-50%) translate(100%) rotate(90deg)}:where(.css-ed5zg0).ant-popover-placement-leftTop .ant-popover-arrow{top:12px}:where(.css-ed5zg0).ant-popover-placement-leftBottom .ant-popover-arrow{bottom:12px}:where(.css-ed5zg0).ant-popover-placement-right .ant-popover-arrow,:where(.css-ed5zg0).ant-popover-placement-rightTop .ant-popover-arrow,:where(.css-ed5zg0).ant-popover-placement-rightBottom .ant-popover-arrow{left:0;transform:translate(-100%) rotate(-90deg)}:where(.css-ed5zg0).ant-popover-placement-right .ant-popover-arrow{top:50%;transform:translateY(-50%) translate(-100%) rotate(-90deg)}:where(.css-ed5zg0).ant-popover-placement-rightTop .ant-popover-arrow{top:12px}:where(.css-ed5zg0).ant-popover-placement-rightBottom .ant-popover-arrow{bottom:12px}:where(.css-ed5zg0).ant-popover-pure{position:relative;max-width:none;margin:16px;display:inline-block}:where(.css-ed5zg0).ant-popover-pure .ant-popover-content{display:inline-block}:where(.css-ed5zg0).ant-popover.ant-popover-blue{--antd-arrow-background-color: #1677ff}:where(.css-ed5zg0).ant-popover.ant-popover-blue .ant-popover-inner{background-color:#1677ff}:where(.css-ed5zg0).ant-popover.ant-popover-blue .ant-popover-arrow{background:transparent}:where(.css-ed5zg0).ant-popover.ant-popover-purple{--antd-arrow-background-color: #722ed1}:where(.css-ed5zg0).ant-popover.ant-popover-purple .ant-popover-inner{background-color:#722ed1}:where(.css-ed5zg0).ant-popover.ant-popover-purple .ant-popover-arrow{background:transparent}:where(.css-ed5zg0).ant-popover.ant-popover-cyan{--antd-arrow-background-color: #13c2c2}:where(.css-ed5zg0).ant-popover.ant-popover-cyan .ant-popover-inner{background-color:#13c2c2}:where(.css-ed5zg0).ant-popover.ant-popover-cyan .ant-popover-arrow{background:transparent}:where(.css-ed5zg0).ant-popover.ant-popover-green{--antd-arrow-background-color: #52c41a}:where(.css-ed5zg0).ant-popover.ant-popover-green .ant-popover-inner{background-color:#52c41a}:where(.css-ed5zg0).ant-popover.ant-popover-green .ant-popover-arrow{background:transparent}:where(.css-ed5zg0).ant-popover.ant-popover-magenta{--antd-arrow-background-color: #eb2f96}:where(.css-ed5zg0).ant-popover.ant-popover-magenta .ant-popover-inner{background-color:#eb2f96}:where(.css-ed5zg0).ant-popover.ant-popover-magenta .ant-popover-arrow{background:transparent}:where(.css-ed5zg0).ant-popover.ant-popover-pink{--antd-arrow-background-color: #eb2f96}:where(.css-ed5zg0).ant-popover.ant-popover-pink .ant-popover-inner{background-color:#eb2f96}:where(.css-ed5zg0).ant-popover.ant-popover-pink .ant-popover-arrow{background:transparent}:where(.css-ed5zg0).ant-popover.ant-popover-red{--antd-arrow-background-color: #f5222d}:where(.css-ed5zg0).ant-popover.ant-popover-red .ant-popover-inner{background-color:#f5222d}:where(.css-ed5zg0).ant-popover.ant-popover-red .ant-popover-arrow{background:transparent}:where(.css-ed5zg0).ant-popover.ant-popover-orange{--antd-arrow-background-color: #fa8c16}:where(.css-ed5zg0).ant-popover.ant-popover-orange .ant-popover-inner{background-color:#fa8c16}:where(.css-ed5zg0).ant-popover.ant-popover-orange .ant-popover-arrow{background:transparent}:where(.css-ed5zg0).ant-popover.ant-popover-yellow{--antd-arrow-background-color: #fadb14}:where(.css-ed5zg0).ant-popover.ant-popover-yellow .ant-popover-inner{background-color:#fadb14}:where(.css-ed5zg0).ant-popover.ant-popover-yellow .ant-popover-arrow{background:transparent}:where(.css-ed5zg0).ant-popover.ant-popover-volcano{--antd-arrow-background-color: #fa541c}:where(.css-ed5zg0).ant-popover.ant-popover-volcano .ant-popover-inner{background-color:#fa541c}:where(.css-ed5zg0).ant-popover.ant-popover-volcano .ant-popover-arrow{background:transparent}:where(.css-ed5zg0).ant-popover.ant-popover-geekblue{--antd-arrow-background-color: #2f54eb}:where(.css-ed5zg0).ant-popover.ant-popover-geekblue .ant-popover-inner{background-color:#2f54eb}:where(.css-ed5zg0).ant-popover.ant-popover-geekblue .ant-popover-arrow{background:transparent}:where(.css-ed5zg0).ant-popover.ant-popover-lime{--antd-arrow-background-color: #a0d911}:where(.css-ed5zg0).ant-popover.ant-popover-lime .ant-popover-inner{background-color:#a0d911}:where(.css-ed5zg0).ant-popover.ant-popover-lime .ant-popover-arrow{background:transparent}:where(.css-ed5zg0).ant-popover.ant-popover-gold{--antd-arrow-background-color: #faad14}:where(.css-ed5zg0).ant-popover.ant-popover-gold .ant-popover-inner{background-color:#faad14}:where(.css-ed5zg0).ant-popover.ant-popover-gold .ant-popover-arrow{background:transparent}:where(.css-ed5zg0).ant-zoom-big-enter,:where(.css-ed5zg0).ant-zoom-big-appear{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}:where(.css-ed5zg0).ant-zoom-big-leave{animation-duration:.2s;animation-fill-mode:both;animation-play-state:paused}:where(.css-ed5zg0).ant-zoom-big-enter.ant-zoom-big-enter-active,:where(.css-ed5zg0).ant-zoom-big-appear.ant-zoom-big-appear-active{animation-name:css-ed5zg0-antZoomBigIn;animation-play-state:running}:where(.css-ed5zg0).ant-zoom-big-leave.ant-zoom-big-leave-active{animation-name:css-ed5zg0-antZoomBigOut;animation-play-state:running;pointer-events:none}:where(.css-ed5zg0).ant-zoom-big-enter,:where(.css-ed5zg0).ant-zoom-big-appear{transform:scale(0);opacity:0;animation-timing-function:cubic-bezier(.08,.82,.17,1)}:where(.css-ed5zg0).ant-zoom-big-enter-prepare,:where(.css-ed5zg0).ant-zoom-big-appear-prepare{transform:none}:where(.css-ed5zg0).ant-zoom-big-leave{animation-timing-function:cubic-bezier(.78,.14,.15,.86)}.track-map .tooltip-container{pointer-events:none!important}.track-map .tooltip-container>*{pointer-events:initial}.g-expandable-pannel-wrap.collapsed .tooltip-container{display:none}.g-rc-tooltip{position:absolute!important}.g-rc-tooltip .g-rc-tooltip-arrow{height:10px}.g-mouse-tip{display:inline-flex;justify-content:center;align-items:center;gap:4px;box-shadow:0 1px 10px #0000000d,0 4px 5px #00000014,0 2px 4px -1px #0000001f;border-radius:4px;background:#000;position:fixed;z-index:2000;padding:8px 12px}.g-mouse-tip-content{font-size:12px;font-style:normal;font-weight:400;color:#fff}
|