@aibee/crc-bmap 0.0.3-gamma

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.
Files changed (42) hide show
  1. package/README.md +1 -0
  2. package/example/index.css +22 -0
  3. package/example/index.html +54 -0
  4. package/example/src/main.ts +315 -0
  5. package/example/vite.config.ts +28 -0
  6. package/lib/bmap.cjs.min.js +2 -0
  7. package/lib/bmap.cjs.min.js.map +7 -0
  8. package/lib/bmap.esm.js +1957 -0
  9. package/lib/bmap.esm.js.map +7 -0
  10. package/lib/bmap.esm.min.js +2 -0
  11. package/lib/bmap.esm.min.js.map +7 -0
  12. package/lib/bmap.min.js +2 -0
  13. package/lib/bmap.min.js.map +7 -0
  14. package/lib/src/bmap.d.ts +93 -0
  15. package/lib/src/config.d.ts +21 -0
  16. package/lib/src/context.d.ts +105 -0
  17. package/lib/src/elements/base-svg.d.ts +16 -0
  18. package/lib/src/elements/floor.d.ts +25 -0
  19. package/lib/src/elements/graphic.d.ts +46 -0
  20. package/lib/src/elements/heatmap.d.ts +42 -0
  21. package/lib/src/elements/index.d.ts +8 -0
  22. package/lib/src/elements/overlay.d.ts +18 -0
  23. package/lib/src/elements/poi.d.ts +34 -0
  24. package/lib/src/elements/shadow.d.ts +14 -0
  25. package/lib/src/elements/svg-line.d.ts +28 -0
  26. package/lib/src/elements/svg-polygon.d.ts +33 -0
  27. package/lib/src/index.d.ts +4 -0
  28. package/lib/src/layer/graphic-layer.d.ts +16 -0
  29. package/lib/src/layer/index.d.ts +3 -0
  30. package/lib/src/layer/layer.d.ts +7 -0
  31. package/lib/src/layer/poi-layer.d.ts +24 -0
  32. package/lib/src/utils/coordinate.d.ts +19 -0
  33. package/lib/src/utils/dispose.d.ts +2 -0
  34. package/lib/src/utils/index.d.ts +9 -0
  35. package/lib/src/utils/init-helper.d.ts +10 -0
  36. package/lib/src/utils/promise.d.ts +7 -0
  37. package/lib/src/utils/proxy.d.ts +6 -0
  38. package/lib/src/utils/rules.d.ts +1 -0
  39. package/lib/src/utils/svg.d.ts +22 -0
  40. package/lib/src/utils/texture.d.ts +9 -0
  41. package/lib/src/utils/timer.d.ts +20 -0
  42. package/package.json +44 -0
@@ -0,0 +1,18 @@
1
+ import { Context } from "../context";
2
+ import { EventDispatcher, Object3D, Vector3 } from "three";
3
+ export declare class Overlay extends EventDispatcher {
4
+ private context;
5
+ div: HTMLDivElement;
6
+ private element?;
7
+ position: Vector3;
8
+ constructor(context: Context);
9
+ initDiv(): HTMLDivElement;
10
+ bindElement(element: Object3D): void;
11
+ unBindElement(): void;
12
+ setVisible(visible: boolean, display?: string): void;
13
+ getPosition(): Vector3;
14
+ onUpdate: () => void;
15
+ registryEvent(): void;
16
+ unRegistryEvent(): void;
17
+ dispose(): void;
18
+ }
@@ -0,0 +1,34 @@
1
+ import { Object3D, Object3DEventMap } from 'three';
2
+ import { Context } from '../context';
3
+ export interface PoiOptions {
4
+ text: string;
5
+ icon?: string;
6
+ icon_size?: [number, number];
7
+ level: number;
8
+ collision_enable: boolean;
9
+ }
10
+ type PoiEventMap = {
11
+ [K in keyof PoiOptions as `change-${K}`]: {
12
+ value: PoiOptions[K];
13
+ };
14
+ } & Object3DEventMap;
15
+ export type PoiOptionsParam = Partial<PoiOptions>;
16
+ export declare class Poi extends Object3D<PoiEventMap> {
17
+ private context;
18
+ private span;
19
+ private img?;
20
+ private overlay;
21
+ options: PoiOptions;
22
+ constructor(context: Context, options: PoiOptionsParam);
23
+ initDiv(): HTMLDivElement;
24
+ initText(): HTMLSpanElement;
25
+ initIcon(): HTMLImageElement;
26
+ private _changePosition;
27
+ registryEvent(): void;
28
+ unRegistryEvent(): void;
29
+ setVisible(visible: boolean): void;
30
+ getBox(): DOMRect;
31
+ isContain(x: number, y: number): boolean;
32
+ dispose(): void;
33
+ }
34
+ export {};
@@ -0,0 +1,14 @@
1
+ import { Object3D, PlaneGeometry, DirectionalLight, Mesh, ShadowMaterial } from 'three';
2
+ export declare class Shadow extends Object3D {
3
+ private directionalLight;
4
+ private plane;
5
+ basicOpacity: number;
6
+ constructor();
7
+ initLight(): DirectionalLight;
8
+ changeLightColor(color: number | string): void;
9
+ initPlane(): Mesh<PlaneGeometry, ShadowMaterial, import("three").Object3DEventMap>;
10
+ setTarget(target: Object3D): void;
11
+ transformOpacity(opacity: number): number;
12
+ setOpacity(opacity: number): void;
13
+ dispose(): void;
14
+ }
@@ -0,0 +1,28 @@
1
+ import { Context } from "../context";
2
+ import { Vector3 } from "three";
3
+ import { BaseSvg } from './base-svg';
4
+ interface SvgLineEventMap {
5
+ 'distance': {
6
+ distance: number;
7
+ };
8
+ }
9
+ export declare class SvgLine extends BaseSvg<SvgLineEventMap> {
10
+ context: Context;
11
+ private circles;
12
+ private line;
13
+ constructor(context: Context);
14
+ setEnable(enable: boolean): void;
15
+ registryEvent(): void;
16
+ unRegistryEvent(): void;
17
+ onUpdate: () => void;
18
+ onPointermove: (e: PointerEvent) => void;
19
+ onPointerleave: () => void;
20
+ onPointerdown: (e: PointerEvent) => void;
21
+ addPoint(vector: Vector3): void;
22
+ /**
23
+ * 计算两个点之间的距离
24
+ */
25
+ calculatedDistance(): number;
26
+ dispose(): void;
27
+ }
28
+ export {};
@@ -0,0 +1,33 @@
1
+ import { Context } from "../context";
2
+ import { BaseSvg } from "./base-svg";
3
+ import { Vector3 } from "three";
4
+ interface SvgPolygonEventMap {
5
+ 'area': {
6
+ area: number;
7
+ };
8
+ }
9
+ export declare class SvgPolygon extends BaseSvg<SvgPolygonEventMap> {
10
+ private circles;
11
+ private lines;
12
+ private isClose;
13
+ constructor(context: Context);
14
+ setEnable(enable: boolean): void;
15
+ private get lastLine();
16
+ private addCircle;
17
+ private addLine;
18
+ registryEvent(): void;
19
+ unRegistryEvent(): void;
20
+ onUpdate: () => void;
21
+ onPointermove: (e: PointerEvent) => void;
22
+ onPointerleave: () => void;
23
+ onPointerdown: (e: PointerEvent) => void;
24
+ /**
25
+ * 检测是否可以吸附
26
+ * 坐标点最少3个 传入的坐标点和第一个坐标的像素相差不超过5个像素
27
+ */
28
+ checkAdsorb(x: number, y: number): boolean;
29
+ addPoint(vector: Vector3): void;
30
+ calculatedArea(): number;
31
+ dispose(): void;
32
+ }
33
+ export {};
@@ -0,0 +1,4 @@
1
+ export * from './bmap';
2
+ export * from './utils';
3
+ export * from './elements';
4
+ export * from './config';
@@ -0,0 +1,16 @@
1
+ import { Graphic, GraphicOptionsParam } from "../elements";
2
+ import { Raycaster, Vector3 } from "three";
3
+ import { Layer } from "./layer";
4
+ import { Context } from "../context";
5
+ export declare class GraphicLayer extends Layer {
6
+ constructor(context: Context);
7
+ createGraphic(options: GraphicOptionsParam): Graphic;
8
+ /**
9
+ * 获取射线相交的元素
10
+ * @param raycaster
11
+ */
12
+ getGraphicByRaycaster(raycaster: Raycaster): {
13
+ graphics: Graphic[];
14
+ position: Vector3 | null;
15
+ };
16
+ }
@@ -0,0 +1,3 @@
1
+ export * from './graphic-layer';
2
+ export * from './poi-layer';
3
+ export * from './layer';
@@ -0,0 +1,7 @@
1
+ import { Context } from "../context";
2
+ import { Object3D } from "three";
3
+ export declare class Layer extends Object3D {
4
+ context: Context;
5
+ constructor(context: Context);
6
+ dispose(): void;
7
+ }
@@ -0,0 +1,24 @@
1
+ import { Poi, PoiOptionsParam } from "../elements";
2
+ import { Layer } from "./layer";
3
+ import { Context } from '../context';
4
+ export declare class PoiLayer extends Layer {
5
+ pois: Poi[];
6
+ constructor(context: Context);
7
+ createPoi(options: PoiOptionsParam): Poi;
8
+ changePoiLevelOrCollisionEnable(poi: Poi): void;
9
+ removePoi(poi: Poi): void;
10
+ /**
11
+ * 保存poi按照level排序
12
+ * @param poi
13
+ */
14
+ pushPoi(poi: Poi): void;
15
+ getPoiByDeviceXy(x: number, y: number): import("three").Object3D<import("three").Object3DEventMap>[];
16
+ onUpdate: () => void;
17
+ /**
18
+ * 碰撞检测
19
+ */
20
+ collisionDetection(): void;
21
+ registryEvent(): void;
22
+ unRegistryEvent(): void;
23
+ dispose(): void;
24
+ }
@@ -0,0 +1,19 @@
1
+ import { Coordinate } from 'src/types';
2
+ import { Vector3, Camera } from 'three';
3
+ /**
4
+ * 3D坐标转屏幕坐标
5
+ * @param vector
6
+ * @param camera
7
+ * @param w container的宽
8
+ * @param h container的高
9
+ * @returns
10
+ */
11
+ export declare function vector3ToDevice(vector: Vector3, camera: Camera, w: number, h: number): {
12
+ x: number;
13
+ y: number;
14
+ };
15
+ /**
16
+ * 获取多变形的中心点
17
+ * @param coordinates
18
+ */
19
+ export declare function getCenter(coordinates: Coordinate[]): import("@turf/turf").Position;
@@ -0,0 +1,2 @@
1
+ import { Object3D } from 'three';
2
+ export declare function dispose(o: Object3D, recursive?: boolean): void;
@@ -0,0 +1,9 @@
1
+ export * from './timer';
2
+ export * from './init-helper';
3
+ export * from './dispose';
4
+ export * from './texture';
5
+ export * from './rules';
6
+ export * from './coordinate';
7
+ export * from './proxy';
8
+ export * from './promise';
9
+ export * from './svg';
@@ -0,0 +1,10 @@
1
+ import { Coordinate } from 'src/types';
2
+ import { Scene, WebGLRenderer, OrthographicCamera, Shape, Group, DirectionalLight } from 'three';
3
+ import { MapControls } from 'three/examples/jsm/controls/MapControls';
4
+ export declare function initScene(): Scene;
5
+ export declare function initRenderer(): WebGLRenderer;
6
+ export declare function initCamera(width: number, height: number): OrthographicCamera;
7
+ export declare function initLight(): Group<import("three").Object3DEventMap>;
8
+ export declare function initControl(camera: OrthographicCamera, domElement: HTMLCanvasElement): MapControls;
9
+ export declare function initShape(path: Coordinate[]): Shape;
10
+ export declare function initDirectionalLight(color?: number, intensity?: number): DirectionalLight;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 可以设置超时时间的promise
3
+ * @param promise
4
+ * @param timeout
5
+ * @returns
6
+ */
7
+ export declare function timeoutPromise<T>(promise: Promise<T>, timeout: number): Promise<T>;
@@ -0,0 +1,6 @@
1
+ import { EventDispatcher } from 'three';
2
+ export declare function proxyOptions<T extends Record<string, any>, M extends {
3
+ [K in keyof T as `change-${Extract<K, string>}`]: {
4
+ value: T[K];
5
+ };
6
+ }>(target: T, master: EventDispatcher<M>): T;
@@ -0,0 +1 @@
1
+ export declare function hasChinese(str: string): boolean;
@@ -0,0 +1,22 @@
1
+ export declare function createSvgElement(tag: string): SVGElement;
2
+ /**
3
+ * 创建svg
4
+ */
5
+ export declare function createSvg(w: string, h: string): SVGElement;
6
+ /**
7
+ * 创建圆点
8
+ * @param radius
9
+ */
10
+ export declare function createCircle(radius: string | undefined, fill: string): SVGElement;
11
+ /**
12
+ * 创建线
13
+ * @param stroke
14
+ */
15
+ export declare function createLine(stroke: string): SVGElement;
16
+ export declare function setCirclePosition(circle: SVGElement, x: number, y: number): void;
17
+ type Position = {
18
+ x: number;
19
+ y: number;
20
+ };
21
+ export declare function setLineStartEnd(line: SVGElement, start?: Position, end?: Position): void;
22
+ export {};
@@ -0,0 +1,9 @@
1
+ import { DataTexture } from 'three';
2
+ export declare function initCanvas(): {
3
+ canvas: HTMLCanvasElement;
4
+ ctx: CanvasRenderingContext2D;
5
+ };
6
+ export declare function createCanvas(): void;
7
+ export declare function getTextureByText(text: string): DataTexture;
8
+ export declare function clearTextTexture(): void;
9
+ export declare function clearCanvas(): void;
@@ -0,0 +1,20 @@
1
+ type Fn = (...arg: any) => any;
2
+ /**
3
+ * 任务管理器
4
+ * 在类销毁的时候,要清除所有的异步定时器
5
+ */
6
+ export declare class Timer {
7
+ tasks: {
8
+ requestAnimation: Set<number>;
9
+ timeout: Set<number>;
10
+ interval: Set<number>;
11
+ };
12
+ requestAnimationFrame(fn: Fn): number;
13
+ cancelAnimationFrame(timer: number): void;
14
+ setTimeout(fn: Fn, wait: number): number;
15
+ clearTimeout(timer: number): void;
16
+ setInterval(fn: Fn, wait: number): number;
17
+ clearInterval(timer: number): void;
18
+ dispose(): void;
19
+ }
20
+ export {};
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@aibee/crc-bmap",
3
+ "version": "0.0.3-gamma",
4
+ "description": "",
5
+ "main": "lib/bmap.min.js",
6
+ "module": "lib/bmap.esm.min.js",
7
+ "types": "lib/src/index.d.ts",
8
+ "files": [
9
+ "lib",
10
+ "example"
11
+ ],
12
+ "scripts": {
13
+ "build": "pnpm clean && pnpm build:min",
14
+ "build:min": "ts-node ./build/index.ts",
15
+ "gen-type": "tsc",
16
+ "clean": "rm -rf lib",
17
+ "lint": "eslint src/**/*.ts",
18
+ "start": "cd example && vite",
19
+ "publish:all": "npm publish --registry https://registry.npmjs.org --access public && npm publish --registry https://npm.aibee.cn"
20
+ },
21
+ "keywords": [],
22
+ "author": "",
23
+ "license": "ISC",
24
+ "devDependencies": {
25
+ "@types/lodash": "^4.14.199",
26
+ "@types/node": "^20.8.3",
27
+ "@types/three": "^0.156.0",
28
+ "@types/tween.js": "^18.6.1",
29
+ "esbuild": "^0.19.4",
30
+ "eslint": "^8.51.0",
31
+ "eslint-plugin-prettier": "^5.0.0",
32
+ "prettier": "^3.0.3",
33
+ "ts-node": "^10.7.0",
34
+ "typescript": "^5.2.2",
35
+ "vite": "^4.4.11"
36
+ },
37
+ "dependencies": {
38
+ "@mars3d/heatmap.js": "^2.0.7",
39
+ "@turf/turf": "^6.5.0",
40
+ "@tweenjs/tween.js": "^21.0.0",
41
+ "lodash": "^4.17.21",
42
+ "three": "^0.157.0"
43
+ }
44
+ }