@aibee/crc-bmap 0.8.10 → 0.8.12

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/lib/bmap.esm.js CHANGED
@@ -1657,7 +1657,7 @@ var require_typed_function = __commonJS({
1657
1657
  });
1658
1658
 
1659
1659
  // src/bmap.ts
1660
- import { EventDispatcher as EventDispatcher10, Vector3 as Vector323 } from "three";
1660
+ import { EventDispatcher as EventDispatcher11, Vector3 as Vector323 } from "three";
1661
1661
 
1662
1662
  // src/utils/timer.ts
1663
1663
  var Timer = class {
@@ -3745,9 +3745,168 @@ var ClickHelper = class extends EventDispatcher {
3745
3745
  }
3746
3746
  };
3747
3747
 
3748
+ // src/utils/taskQueue.ts
3749
+ import { isNil } from "lodash";
3750
+ import { EventDispatcher as EventDispatcher2 } from "three";
3751
+ var TaskQueue = class extends EventDispatcher2 {
3752
+ // 任务队列
3753
+ _task = [];
3754
+ // 是否开始执行任务
3755
+ started = false;
3756
+ // 当前正在执行的任务
3757
+ activeTask = null;
3758
+ _id = 0;
3759
+ constructor(start = true) {
3760
+ super();
3761
+ if (start) {
3762
+ this.start();
3763
+ }
3764
+ }
3765
+ /**
3766
+ * 判断任务是否有效
3767
+ * @param task
3768
+ * @return {boolean}
3769
+ * @private
3770
+ */
3771
+ _isEffectiveTask(task) {
3772
+ return task && typeof task.run === "function";
3773
+ }
3774
+ /**
3775
+ * 根据tid获取元素的位置
3776
+ * @param tid
3777
+ * @return {number}
3778
+ * @private
3779
+ */
3780
+ _getIndexByTid(tid) {
3781
+ return this._task.findIndex((task) => task.tid === tid);
3782
+ }
3783
+ /**
3784
+ * 创建任务
3785
+ * @param task
3786
+ * @private
3787
+ */
3788
+ _createTask(task) {
3789
+ if (this._isEffectiveTask(task)) {
3790
+ return { ...task, tid: ++this._id, meta: task.meta || {} };
3791
+ }
3792
+ return false;
3793
+ }
3794
+ get task() {
3795
+ return [...this._task];
3796
+ }
3797
+ /**
3798
+ * 获取当前队列中的任务
3799
+ */
3800
+ getTasks() {
3801
+ return [...this._task];
3802
+ }
3803
+ /**
3804
+ * 添加任务
3805
+ * @param task
3806
+ * @return
3807
+ */
3808
+ add(task) {
3809
+ if (this._isEffectiveTask(task)) {
3810
+ const $task = this._createTask(task);
3811
+ this._task.push($task);
3812
+ if (this.started && !this.activeTask) {
3813
+ this.start();
3814
+ }
3815
+ return $task.tid;
3816
+ }
3817
+ return false;
3818
+ }
3819
+ /**
3820
+ * 替换队列中的某个任务
3821
+ * @param id
3822
+ * @param task
3823
+ */
3824
+ replace(id, task) {
3825
+ if (!this._isEffectiveTask(task)) {
3826
+ console.warn("[TaskQueue] replace\u65B9\u6CD5\u4F20\u5165\u7684task\u53C2\u6570\u683C\u5F0F\u4E0D\u6B63\u786E");
3827
+ return false;
3828
+ }
3829
+ const index = this._getIndexByTid(id);
3830
+ if (index === -1) {
3831
+ console.warn(`[TaskQueue] \u6CA1\u6709\u627E\u5230id=${id}\u7684\u4EFB\u52A1`);
3832
+ return false;
3833
+ }
3834
+ const $task = this._createTask(task);
3835
+ this._task.splice(index, 1, $task);
3836
+ return $task.tid;
3837
+ }
3838
+ replaceByMetaType(task) {
3839
+ const type = task.meta?.type;
3840
+ if (isNil(type)) {
3841
+ return this.add(task);
3842
+ } else {
3843
+ const findTask = this._task.find((item) => item.meta.type === type);
3844
+ if (findTask) {
3845
+ return this.replace(findTask.tid, task);
3846
+ } else {
3847
+ return this.add(task);
3848
+ }
3849
+ }
3850
+ }
3851
+ /**
3852
+ * 根据id删除对应的task
3853
+ * @param id
3854
+ */
3855
+ remove(id) {
3856
+ const index = this._getIndexByTid(id);
3857
+ if (index === -1) {
3858
+ console.warn(`[TaskQueue] remove\u65B9\u6CD5\u4F20\u5165\u7684id\uFF1A${id}\u627E\u4E0D\u5230\u5BF9\u5E94\u7684task`);
3859
+ return false;
3860
+ }
3861
+ this._task.splice(index, 1);
3862
+ return true;
3863
+ }
3864
+ /**
3865
+ * 清空队列
3866
+ */
3867
+ clear() {
3868
+ this._task.length = 0;
3869
+ }
3870
+ /**
3871
+ * 开始执行任务,默认在构造函数中执行
3872
+ */
3873
+ start() {
3874
+ this.started = true;
3875
+ if (!this.activeTask && this._task.length) {
3876
+ this.exec();
3877
+ }
3878
+ }
3879
+ /**
3880
+ * 停止执行队列中的任务,不包括当前执行中的任务
3881
+ */
3882
+ stop() {
3883
+ this.started = false;
3884
+ }
3885
+ /**
3886
+ * 从任务队列中的第一个任务开始执行
3887
+ */
3888
+ async exec() {
3889
+ if (!this.started || !this._task.length) {
3890
+ return false;
3891
+ }
3892
+ const $task = this._task.shift();
3893
+ this.activeTask = $task;
3894
+ this.dispatchEvent({ type: "active-task-start", task: $task });
3895
+ let res;
3896
+ try {
3897
+ res = await $task.run();
3898
+ } catch (e2) {
3899
+ console.warn("[task run err]", e2, $task);
3900
+ }
3901
+ this.activeTask = null;
3902
+ this.dispatchEvent({ type: "active-task-end", task: $task, res });
3903
+ return this.exec();
3904
+ }
3905
+ };
3906
+
3748
3907
  // src/context/context.ts
3749
3908
  import {
3750
- EventDispatcher as EventDispatcher9,
3909
+ EventDispatcher as EventDispatcher10,
3751
3910
  Box2 as Box23,
3752
3911
  Vector3 as Vector322,
3753
3912
  Vector2 as Vector212,
@@ -3758,7 +3917,7 @@ import {
3758
3917
  } from "three";
3759
3918
 
3760
3919
  // src/operations/selection/selection.ts
3761
- import { EventDispatcher as EventDispatcher5 } from "three";
3920
+ import { EventDispatcher as EventDispatcher6 } from "three";
3762
3921
 
3763
3922
  // src/elements/graphic.ts
3764
3923
  import {
@@ -4560,17 +4719,17 @@ var Shadow = class extends Object3D2 {
4560
4719
  };
4561
4720
 
4562
4721
  // src/elements/poi.ts
4563
- import { EventDispatcher as EventDispatcher3, Vector3 as Vector37 } from "three";
4722
+ import { EventDispatcher as EventDispatcher4, Vector3 as Vector37 } from "three";
4564
4723
 
4565
4724
  // src/elements/overlay.ts
4566
- import { Box3 as Box32, EventDispatcher as EventDispatcher2, Vector3 as Vector36 } from "three";
4725
+ import { Box3 as Box32, EventDispatcher as EventDispatcher3, Vector3 as Vector36 } from "three";
4567
4726
  import { debounce } from "lodash";
4568
4727
  var defaultOptions = {
4569
4728
  autoUpdate: true,
4570
4729
  appendToBody: false,
4571
4730
  autoChangePlacement: false
4572
4731
  };
4573
- var Overlay = class extends EventDispatcher2 {
4732
+ var Overlay = class extends EventDispatcher3 {
4574
4733
  constructor(context, options = {}) {
4575
4734
  super();
4576
4735
  this.context = context;
@@ -4873,7 +5032,7 @@ var defaultOptions2 = {
4873
5032
  built_in: false,
4874
5033
  box_only_icon: false
4875
5034
  };
4876
- var Poi = class extends EventDispatcher3 {
5035
+ var Poi = class extends EventDispatcher4 {
4877
5036
  constructor(context, options) {
4878
5037
  super();
4879
5038
  this.context = context;
@@ -5789,8 +5948,8 @@ var Floor = class extends Object3D8 {
5789
5948
  };
5790
5949
 
5791
5950
  // src/elements/base-svg.ts
5792
- import { EventDispatcher as EventDispatcher4, Vector3 as Vector312 } from "three";
5793
- var BaseSvg = class extends EventDispatcher4 {
5951
+ import { EventDispatcher as EventDispatcher5, Vector3 as Vector312 } from "three";
5952
+ var BaseSvg = class extends EventDispatcher5 {
5794
5953
  constructor(context) {
5795
5954
  super();
5796
5955
  this.context = context;
@@ -7292,7 +7451,7 @@ var BoxSelection = class extends BaseSvg {
7292
7451
  };
7293
7452
 
7294
7453
  // src/operations/selection/selection.ts
7295
- var Selection = class extends EventDispatcher5 {
7454
+ var Selection = class extends EventDispatcher6 {
7296
7455
  constructor(context) {
7297
7456
  super();
7298
7457
  this.context = context;
@@ -7412,8 +7571,8 @@ var Selection = class extends EventDispatcher5 {
7412
7571
  };
7413
7572
 
7414
7573
  // src/operations/hover/hover-helper.ts
7415
- import { EventDispatcher as EventDispatcher6, Vector2 as Vector210 } from "three";
7416
- var HoverHelper = class extends EventDispatcher6 {
7574
+ import { EventDispatcher as EventDispatcher7, Vector2 as Vector210 } from "three";
7575
+ var HoverHelper = class extends EventDispatcher7 {
7417
7576
  constructor(context) {
7418
7577
  super();
7419
7578
  this.context = context;
@@ -7623,7 +7782,7 @@ import { Tween as Tween2, Group as TweenGroup } from "@tweenjs/tween.js";
7623
7782
 
7624
7783
  // src/context/OrbitControls.ts
7625
7784
  import {
7626
- EventDispatcher as EventDispatcher7,
7785
+ EventDispatcher as EventDispatcher8,
7627
7786
  MOUSE,
7628
7787
  Quaternion,
7629
7788
  Spherical,
@@ -7637,7 +7796,7 @@ import {
7637
7796
  var _ray = new Ray2();
7638
7797
  var _plane = new Plane();
7639
7798
  var TILT_LIMIT = Math.cos(70 * MathUtils.DEG2RAD);
7640
- var OrbitControls = class extends EventDispatcher7 {
7799
+ var OrbitControls = class extends EventDispatcher8 {
7641
7800
  object;
7642
7801
  domElement;
7643
7802
  rotateLineStart = new Vector211();
@@ -8606,12 +8765,12 @@ var Control = class extends OrbitControls {
8606
8765
 
8607
8766
  // src/context/renderer.ts
8608
8767
  import {
8609
- EventDispatcher as EventDispatcher8,
8768
+ EventDispatcher as EventDispatcher9,
8610
8769
  PCFSoftShadowMap,
8611
8770
  WebGLRenderer
8612
8771
  } from "three";
8613
8772
  var Renderer = class extends WebGLRenderer {
8614
- event = new EventDispatcher8();
8773
+ event = new EventDispatcher9();
8615
8774
  scene;
8616
8775
  camera;
8617
8776
  enable = true;
@@ -8690,7 +8849,7 @@ var ContextCamera = class extends OrthographicCamera2 {
8690
8849
  };
8691
8850
 
8692
8851
  // src/context/context.ts
8693
- var Context = class extends EventDispatcher9 {
8852
+ var Context = class extends EventDispatcher10 {
8694
8853
  constructor(container, config4) {
8695
8854
  super();
8696
8855
  this.container = container;
@@ -9070,7 +9229,7 @@ var MapTypePolar = /* @__PURE__ */ ((MapTypePolar2) => {
9070
9229
  MapTypePolar2[MapTypePolar2["D3"] = 1.1] = "D3";
9071
9230
  return MapTypePolar2;
9072
9231
  })(MapTypePolar || {});
9073
- var BMap = class extends EventDispatcher10 {
9232
+ var BMap = class extends EventDispatcher11 {
9074
9233
  constructor(container, config4 = {}) {
9075
9234
  super();
9076
9235
  this.container = container;
@@ -9505,8 +9664,8 @@ var BMap = class extends EventDispatcher10 {
9505
9664
  };
9506
9665
 
9507
9666
  // src/plugins/base.ts
9508
- import { EventDispatcher as EventDispatcher11 } from "three";
9509
- var Plugin = class extends EventDispatcher11 {
9667
+ import { EventDispatcher as EventDispatcher12 } from "three";
9668
+ var Plugin = class extends EventDispatcher12 {
9510
9669
  bmap;
9511
9670
  constructor(bmap) {
9512
9671
  super();
@@ -10415,7 +10574,7 @@ import { Tween as Tween4, Easing } from "@tweenjs/tween.js";
10415
10574
  import { Vector3 as Vector326 } from "three";
10416
10575
 
10417
10576
  // src/plugins/navigation/position-navigation.ts
10418
- import { EventDispatcher as EventDispatcher12 } from "three";
10577
+ import { EventDispatcher as EventDispatcher13 } from "three";
10419
10578
  import { Tween as Tween3 } from "@tweenjs/tween.js";
10420
10579
  import { throttle } from "lodash";
10421
10580
  var defaultConfig3 = {
@@ -10424,7 +10583,7 @@ var defaultConfig3 = {
10424
10583
  directionEmitThreshold: 5,
10425
10584
  simulationSpeed: 1
10426
10585
  };
10427
- var PositionNavigation = class extends EventDispatcher12 {
10586
+ var PositionNavigation = class extends EventDispatcher13 {
10428
10587
  constructor(navigation, options) {
10429
10588
  super();
10430
10589
  this.navigation = navigation;
@@ -10689,150 +10848,6 @@ var PositionNavigation = class extends EventDispatcher12 {
10689
10848
  }
10690
10849
  };
10691
10850
 
10692
- // src/utils/taskQueue.ts
10693
- import { EventDispatcher as EventDispatcher13 } from "three";
10694
- var TaskQueue = class extends EventDispatcher13 {
10695
- // 任务队列
10696
- _task = [];
10697
- // 是否开始执行任务
10698
- started = false;
10699
- // 当前正在执行的任务
10700
- activeTask = null;
10701
- _id = 0;
10702
- constructor(start = true) {
10703
- super();
10704
- if (start) {
10705
- this.start();
10706
- }
10707
- }
10708
- /**
10709
- * 判断任务是否有效
10710
- * @param task
10711
- * @return {boolean}
10712
- * @private
10713
- */
10714
- _isEffectiveTask(task) {
10715
- return task && typeof task.run === "function";
10716
- }
10717
- /**
10718
- * 根据tid获取元素的位置
10719
- * @param tid
10720
- * @return {number}
10721
- * @private
10722
- */
10723
- _getIndexByTid(tid) {
10724
- return this._task.findIndex((task) => task.tid === tid);
10725
- }
10726
- /**
10727
- * 创建任务
10728
- * @param task
10729
- * @private
10730
- */
10731
- _createTask(task) {
10732
- if (this._isEffectiveTask(task)) {
10733
- return { ...task, tid: ++this._id, meta: task.meta || {} };
10734
- }
10735
- return false;
10736
- }
10737
- get task() {
10738
- return [...this._task];
10739
- }
10740
- /**
10741
- * 获取当前队列中的任务
10742
- */
10743
- getTasks() {
10744
- return [...this._task];
10745
- }
10746
- /**
10747
- * 添加任务
10748
- * @param task
10749
- * @return
10750
- */
10751
- add(task) {
10752
- if (this._isEffectiveTask(task)) {
10753
- const $task = this._createTask(task);
10754
- this._task.push($task);
10755
- if (this.started && !this.activeTask) {
10756
- this.start();
10757
- }
10758
- return $task.tid;
10759
- }
10760
- return false;
10761
- }
10762
- /**
10763
- * 替换队列中的某个任务
10764
- * @param id
10765
- * @param task
10766
- */
10767
- replace(id, task) {
10768
- if (!this._isEffectiveTask(task)) {
10769
- console.warn("[TaskQueue] replace\u65B9\u6CD5\u4F20\u5165\u7684task\u53C2\u6570\u683C\u5F0F\u4E0D\u6B63\u786E");
10770
- return false;
10771
- }
10772
- const index = this._getIndexByTid(id);
10773
- if (index === -1) {
10774
- console.warn(`[TaskQueue] \u6CA1\u6709\u627E\u5230id=${id}\u7684\u4EFB\u52A1`);
10775
- return false;
10776
- }
10777
- const $task = this._createTask(task);
10778
- this._task.splice(index, 1, $task);
10779
- return $task.tid;
10780
- }
10781
- /**
10782
- * 根据id删除对应的task
10783
- * @param id
10784
- */
10785
- remove(id) {
10786
- const index = this._getIndexByTid(id);
10787
- if (index === -1) {
10788
- console.warn(`[TaskQueue] remove\u65B9\u6CD5\u4F20\u5165\u7684id\uFF1A${id}\u627E\u4E0D\u5230\u5BF9\u5E94\u7684task`);
10789
- return false;
10790
- }
10791
- this._task.splice(index, 1);
10792
- return true;
10793
- }
10794
- /**
10795
- * 清空队列
10796
- */
10797
- clear() {
10798
- this._task.length = 0;
10799
- }
10800
- /**
10801
- * 开始执行任务,默认在构造函数中执行
10802
- */
10803
- start() {
10804
- this.started = true;
10805
- if (!this.activeTask && this._task.length) {
10806
- this.exec();
10807
- }
10808
- }
10809
- /**
10810
- * 停止执行队列中的任务,不包括当前执行中的任务
10811
- */
10812
- stop() {
10813
- this.started = false;
10814
- }
10815
- /**
10816
- * 从任务队列中的第一个任务开始执行
10817
- */
10818
- async exec() {
10819
- if (!this.started || !this._task.length) {
10820
- return false;
10821
- }
10822
- const $task = this._task.shift();
10823
- this.activeTask = $task;
10824
- this.dispatchEvent({ type: "active-task-start", task: $task });
10825
- try {
10826
- await $task.run();
10827
- } catch (e2) {
10828
- console.warn("[task run err]", e2, $task);
10829
- }
10830
- this.activeTask = null;
10831
- this.dispatchEvent({ type: "active-task-end", task: $task });
10832
- return this.exec();
10833
- }
10834
- };
10835
-
10836
10851
  // src/plugins/navigation/start-rotate-helper-poi.ts
10837
10852
  import { DataTexture as DataTexture2, LinearFilter as LinearFilter3, RGBAFormat as RGBAFormat3, Sprite as Sprite2, SpriteMaterial as SpriteMaterial2 } from "three";
10838
10853
  var StartRotateHelperPoi = class _StartRotateHelperPoi extends Poi2 {
@@ -12006,7 +12021,7 @@ var BMapSelect = class extends Plugin {
12006
12021
  };
12007
12022
 
12008
12023
  // src/plugins/pdr-position/sensor.ts
12009
- import { cloneDeep as cloneDeep4, isNil, throttle as throttle2 } from "lodash";
12024
+ import { cloneDeep as cloneDeep4, isNil as isNil2, throttle as throttle2 } from "lodash";
12010
12025
  import { EventDispatcher as EventDispatcher16 } from "three";
12011
12026
  var defaultSensorOptions = {
12012
12027
  time: 1e3,
@@ -12048,7 +12063,7 @@ var Sensor = class extends EventDispatcher16 {
12048
12063
  deviceOrientationAbsHandler = throttle2((e2) => {
12049
12064
  const currTime = Date.now();
12050
12065
  const { alpha, beta, gamma } = e2;
12051
- if (isNil(alpha) || isNil(beta) || isNil(gamma)) {
12066
+ if (isNil2(alpha) || isNil2(beta) || isNil2(gamma)) {
12052
12067
  return;
12053
12068
  }
12054
12069
  let compass;
@@ -12084,7 +12099,7 @@ var Sensor = class extends EventDispatcher16 {
12084
12099
  }
12085
12100
  handleAcceleration = (e2) => {
12086
12101
  const res = e2.accelerationIncludingGravity;
12087
- if (isNil(res) || isNil(res.x) || isNil(res.y) || isNil(res.z)) {
12102
+ if (isNil2(res) || isNil2(res.x) || isNil2(res.y) || isNil2(res.z)) {
12088
12103
  return;
12089
12104
  }
12090
12105
  this.addAcceleration({
@@ -12134,7 +12149,7 @@ var Sensor = class extends EventDispatcher16 {
12134
12149
  } else {
12135
12150
  window.removeEventListener("deviceorientationabsolute", this.deviceOrientationAbsHandler, { absolute: true });
12136
12151
  }
12137
- if (!isNil(this.gpsTimer)) {
12152
+ if (!isNil2(this.gpsTimer)) {
12138
12153
  navigator.geolocation.clearWatch(this.gpsTimer);
12139
12154
  }
12140
12155
  this.dispatchTimer && this.timer.clearInterval(this.dispatchTimer);
@@ -24272,7 +24287,7 @@ var StartModel = class extends Object3D20 {
24272
24287
 
24273
24288
  // src/plugins/mul-floor-navigation/mul-floor-navigation.ts
24274
24289
  import { Vector3 as Vector330 } from "three";
24275
- import { isNil as isNil2 } from "lodash";
24290
+ import { isNil as isNil3 } from "lodash";
24276
24291
  var MulFloorNavigation = class extends Plugin {
24277
24292
  constructor(bmap, mulFloor) {
24278
24293
  super(bmap);
@@ -24456,7 +24471,7 @@ var MulFloorNavigation = class extends Plugin {
24456
24471
  this.startModel.position.set(translatePos[0], translatePos[1], z);
24457
24472
  }
24458
24473
  const angle = this.getPathDirection(paths[index].points, pos);
24459
- if (!isNil2(angle)) {
24474
+ if (!isNil3(angle)) {
24460
24475
  this.startModel.setRotationFromAxisAngle(new Vector330(0, 0, 1), angle);
24461
24476
  }
24462
24477
  }).onComplete(() => {
@@ -25017,6 +25032,7 @@ var AibeeLoader = class extends EventDispatcher19 {
25017
25032
  floors = [];
25018
25033
  initDbPromise = Promise.resolve();
25019
25034
  db = null;
25035
+ taskQueue = new TaskQueue();
25020
25036
  async initDb() {
25021
25037
  try {
25022
25038
  const { db, type } = await createDb("aibee_map", 2);
@@ -25185,6 +25201,24 @@ var AibeeLoader = class extends EventDispatcher19 {
25185
25201
  floor2.userData.height = max2 / 4 + data.floorHeight;
25186
25202
  }
25187
25203
  async switchFloor(data) {
25204
+ return new Promise((resolve) => {
25205
+ const task = {
25206
+ run: () => this._switchFloor(data),
25207
+ meta: {
25208
+ type: "switchFloor"
25209
+ }
25210
+ };
25211
+ const tid = this.taskQueue.replaceByMetaType(task);
25212
+ const handleTaskEnd = ({ task: task2, res }) => {
25213
+ if (task2.tid === tid) {
25214
+ this.taskQueue.removeEventListener("active-task-end", handleTaskEnd);
25215
+ resolve(res);
25216
+ }
25217
+ };
25218
+ this.taskQueue.addEventListener("active-task-end", handleTaskEnd);
25219
+ });
25220
+ }
25221
+ async _switchFloor(data) {
25188
25222
  let floorData = data;
25189
25223
  if (typeof data === "string") {
25190
25224
  const jsonData = await this.getFloorJsonData(data);
@@ -25459,6 +25493,7 @@ export {
25459
25493
  Shadow,
25460
25494
  SvgLine,
25461
25495
  SvgPolygon,
25496
+ TaskQueue,
25462
25497
  TextTexture,
25463
25498
  Timer,
25464
25499
  TweenUtil,