@heycar/heycars-map 0.9.0 → 0.9.1

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/dist/index.cjs CHANGED
@@ -9,7 +9,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
9
9
  const Vue = require("vue");
10
10
  const style = "";
11
11
  const name = "@heycar/heycars-map";
12
- const version = "0.9.0";
12
+ const version = "0.9.1";
13
13
  const type = "module";
14
14
  const scripts = {
15
15
  dev: "vite -c vite.config.dev.ts",
@@ -1113,6 +1113,48 @@ const assertAngle = (angle) => {
1113
1113
  const isLatLngLiteral = (value) => {
1114
1114
  return value != null && typeof value === "object" && Number.isFinite(value.lat) && Number.isFinite(value.lng);
1115
1115
  };
1116
+ function defered() {
1117
+ const defer = {};
1118
+ const promise = new Promise((resolve, reject) => {
1119
+ defer.state = "pending";
1120
+ defer.resolve = async (value) => {
1121
+ try {
1122
+ const result = await value;
1123
+ defer.state = "fulfilled";
1124
+ return resolve(result);
1125
+ } catch (err) {
1126
+ defer.state = "rejected";
1127
+ reject(err);
1128
+ }
1129
+ };
1130
+ defer.reject = (reason) => {
1131
+ defer.state = "rejected";
1132
+ return reject(reason);
1133
+ };
1134
+ });
1135
+ return Object.assign(promise, defer);
1136
+ }
1137
+ const pausableSleep = (milliSeconds) => {
1138
+ const sleepDefered = defered();
1139
+ let id = setTimeout(sleepDefered.resolve, milliSeconds);
1140
+ let isPaused = false;
1141
+ const pause = () => {
1142
+ if (isPaused || sleepDefered.state === "fulfilled")
1143
+ return;
1144
+ console.log("pause");
1145
+ isPaused = true;
1146
+ clearTimeout(id);
1147
+ };
1148
+ const restart = () => {
1149
+ if (sleepDefered.state === "fulfilled")
1150
+ return;
1151
+ console.log("restart");
1152
+ isPaused = false;
1153
+ clearTimeout(id);
1154
+ id = setTimeout(sleepDefered.resolve, milliSeconds);
1155
+ };
1156
+ return { sleepPromise: sleepDefered, pause, restart };
1157
+ };
1116
1158
  const vec2lnglat = ([lng, lat]) => ({
1117
1159
  lng: Number(lng),
1118
1160
  lat: Number(lat)
@@ -3147,6 +3189,36 @@ const useMapFitView = (props) => {
3147
3189
  const { supplier } = useMapSupplier();
3148
3190
  return supplier === "gmap" ? useGmapFitView(props) : useAmapFitView(props);
3149
3191
  };
3192
+ const useAmapTouchEvent = () => {
3193
+ const mapRef = useAmap();
3194
+ const addMapEventListener = (name2, handler) => {
3195
+ var _a;
3196
+ return (_a = mapRef == null ? void 0 : mapRef.value) == null ? void 0 : _a.on(name2, handler);
3197
+ };
3198
+ const removeMapEventListener = (name2, handler) => {
3199
+ var _a;
3200
+ return (_a = mapRef == null ? void 0 : mapRef.value) == null ? void 0 : _a.off(name2, handler);
3201
+ };
3202
+ return { addMapEventListener, removeMapEventListener };
3203
+ };
3204
+ const useGmapTouchEvent = () => {
3205
+ const mapRef = useGmap();
3206
+ const addMapEventListener = (name2, handler) => {
3207
+ var _a;
3208
+ const container = (_a = mapRef == null ? void 0 : mapRef.value) == null ? void 0 : _a.getDiv();
3209
+ return container == null ? void 0 : container.addEventListener(name2, handler);
3210
+ };
3211
+ const removeMapEventListener = (name2, handler) => {
3212
+ var _a;
3213
+ const container = (_a = mapRef == null ? void 0 : mapRef.value) == null ? void 0 : _a.getDiv();
3214
+ return container == null ? void 0 : container.removeEventListener(name2, handler);
3215
+ };
3216
+ return { addMapEventListener, removeMapEventListener };
3217
+ };
3218
+ const useMapTouchEvent = () => {
3219
+ const { supplier } = useMapSupplier();
3220
+ return supplier === "gmap" ? useGmapTouchEvent() : useAmapTouchEvent();
3221
+ };
3150
3222
  defineSetup(function FitView(props, {
3151
3223
  slots
3152
3224
  }) {
@@ -3199,7 +3271,7 @@ function createFittableRegisterOverlay(registerOverlay) {
3199
3271
  setFitView
3200
3272
  };
3201
3273
  }
3202
- const KeyedFitView = defineSetup(function KeyedFitView2(props, {
3274
+ defineSetup(function KeyedFitView(props, {
3203
3275
  slots
3204
3276
  }) {
3205
3277
  const mapMountedPromise = useMapMountedPromise();
@@ -3220,6 +3292,48 @@ const KeyedFitView = defineSetup(function KeyedFitView2(props, {
3220
3292
  return Vue.h("div", [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
3221
3293
  };
3222
3294
  });
3295
+ const InterruptableIntervalFitView = defineSetup(function InterruptableIntervalFitView2(props) {
3296
+ const {
3297
+ registerOverlay
3298
+ } = props;
3299
+ const mapMountedPromise = useMapMountedPromise();
3300
+ const {
3301
+ addMapEventListener,
3302
+ removeMapEventListener
3303
+ } = useMapTouchEvent();
3304
+ Vue.watch(() => 0, async (_1, _2, onCleanup) => {
3305
+ await mapMountedPromise;
3306
+ let skip = false;
3307
+ let pause;
3308
+ let restart;
3309
+ let sleepPromise;
3310
+ const handleTouchStartOrMove = () => pause();
3311
+ const handleTouchEnd = () => restart();
3312
+ addMapEventListener("touchstart", handleTouchStartOrMove);
3313
+ addMapEventListener("touchmove", handleTouchStartOrMove);
3314
+ addMapEventListener("touchend", handleTouchEnd);
3315
+ onCleanup(() => {
3316
+ skip = true;
3317
+ removeEventListener("touchstart", handleTouchStartOrMove);
3318
+ removeMapEventListener("touchmove", handleTouchStartOrMove);
3319
+ removeMapEventListener("touchend", handleTouchEnd);
3320
+ });
3321
+ while (!skip) {
3322
+ ({
3323
+ pause,
3324
+ restart,
3325
+ sleepPromise
3326
+ } = pausableSleep(props.interval));
3327
+ await sleepPromise;
3328
+ console.log("InterruptableIntervalFitView setFitView");
3329
+ registerOverlay.setFitView();
3330
+ }
3331
+ }, {
3332
+ immediate: true,
3333
+ flush: "post"
3334
+ });
3335
+ return () => null;
3336
+ });
3223
3337
  const imgEndPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI3Mi4zMzklIiB5MT0iNTAlIiB4Mj0iMCUiIHkyPSI1MCUiIGlkPSJwcmVmaXhfX2EiPjxzdG9wIHN0b3AtY29sb3I9IiNGRjg0NDciIG9mZnNldD0iMCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkY4QjRBIiBvZmZzZXQ9IjUwLjU5NiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkZBOTVBIiBvZmZzZXQ9IjEwMCUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xMiAzMC4yMTVjMi4xMzQgMCAzLjg2My0uODkzIDMuODYzLTEuOTk1IDAtMS4xLTEuNzMtMS45OTQtMy44NjMtMS45OTQtMi4xMzQgMC0zLjg2My44OTMtMy44NjMgMS45OTQgMCAxLjEwMiAxLjczIDEuOTk1IDMuODYzIDEuOTk1eiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyNy4wMDZjMi4xMjggMC0uOS0zLjc0MyA1LjYyMS02LjY0M0MxOS44NDIgMTguNDUzIDIyIDE0Ljk1MyAyMiAxMC45NSAyMiA0LjkwMiAxNy4wNzUgMCAxMSAwUzAgNC45MDIgMCAxMC45NWMwIDMuOTE4IDIuMDY4IDcuMzU2IDUuMTc3IDkuMjlDMTEuNzUgMjMuMjg0IDkuMDYgMjcuMDA3IDExIDI3LjAwN3oiIHN0cm9rZT0iI0ZGRiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSIvPjx0ZXh0IGZvbnQtZmFtaWx5PSJQaW5nRmFuZ1NDLVNlbWlib2xkLCBQaW5nRmFuZyBTQyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgZmlsbD0iI0ZGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSAxLjIxNSkiPjx0c3BhbiB4PSI1IiB5PSIxNS40NDkiPue7iDwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=";
3224
3338
  const imgStartPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjUwJSIgeDI9IjEyOS41OTklIiB5Mj0iNTAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjMzZBOEZGIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzQ4NzFGMSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTIgMzAuMjE1YzEuOTUgMCAzLjUzMi0uODE2IDMuNTMyLTEuODIzIDAtMS4wMDctMS41ODEtMS44MjMtMy41MzItMS44MjMtMS45NSAwLTMuNTMyLjgxNi0zLjUzMiAxLjgyMyAwIDEuMDA3IDEuNTgxIDEuODIzIDMuNTMyIDEuODIzeiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyN2MyLjEyOCAwLS45LTMuNzQyIDUuNjIxLTYuNjQxIDMuMjIxLTEuOTEgNS4zNzktNS40MSA1LjM3OS05LjQxMkMyMiA0LjkwMSAxNy4wNzUgMCAxMSAwUzAgNC45MDEgMCAxMC45NDdjMCAzLjkxOCAyLjA2OCA3LjM1NSA1LjE3NyA5LjI5QzExLjc1IDIzLjI3NyA5LjA2IDI3IDExIDI3eiIgc3Ryb2tlPSIjRkZGIiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMS4yMTUpIi8+PHRleHQgZm9udC1mYW1pbHk9IlBpbmdGYW5nU0MtU2VtaWJvbGQsIFBpbmdGYW5nIFNDIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiBmaWxsPSIjRkZGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSI+PHRzcGFuIHg9IjUiIHk9IjE1LjYyNCI+6LW3PC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==";
3225
3339
  const StartEndPoint_css_ts_vanilla = "";
@@ -6142,10 +6256,9 @@ const ConditionalFittablePassengerCircle = defineSetup(function ConditionalFitta
6142
6256
  "size": "small",
6143
6257
  "registerOverlay": registerOverlay
6144
6258
  }
6145
- }), Vue.h(KeyedFitView, {
6259
+ }), Vue.h(FitViewOnce, {
6146
6260
  "attrs": {
6147
- "registerOverlay": registerOverlay,
6148
- "fitViewKey": JSON.stringify(position)
6261
+ "registerOverlay": registerOverlay
6149
6262
  }
6150
6263
  })]);
6151
6264
  };
@@ -7394,6 +7507,7 @@ const WaveCircle = defineSetup(function WaveCircle2(props) {
7394
7507
  const PASSENGER_DISTANCE_MAX = 2e3;
7395
7508
  const PASSENGER_DISTANCE_MIN = 10;
7396
7509
  const CAR_DISTANCE_MIN = 100;
7510
+ const AUTO_FIT_VIEW_INTERVAL = 15e3;
7397
7511
  const carDurationWithinMinDistance = (distance) => Math.floor(distance / 5);
7398
7512
  const SectionDispatching = defineSetup(function SectionDispatching2(props) {
7399
7513
  return () => {
@@ -7424,6 +7538,11 @@ const SectionDispatching = defineSetup(function SectionDispatching2(props) {
7424
7538
  "attrs": {
7425
7539
  "registerOverlay": registerOverlay
7426
7540
  }
7541
+ }), Vue.h(InterruptableIntervalFitView, {
7542
+ "attrs": {
7543
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7544
+ "registerOverlay": registerOverlay
7545
+ }
7427
7546
  })]);
7428
7547
  };
7429
7548
  });
@@ -7489,10 +7608,19 @@ const SectionConfirmed = defineSetup(function SectionConfirmed2(props) {
7489
7608
  "attrs": {
7490
7609
  "registerOverlay": registerOverlay
7491
7610
  }
7611
+ }), Vue.h(InterruptableIntervalFitView, {
7612
+ "attrs": {
7613
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7614
+ "registerOverlay": registerOverlay
7615
+ }
7492
7616
  })]);
7493
7617
  };
7494
7618
  });
7495
7619
  const SectionDriverStartService = defineSetup(function SectionDriverStartService2(props) {
7620
+ const {
7621
+ registerOverlay
7622
+ } = props;
7623
+ const fittableRegistryOverlay = createFittableRegisterOverlay(registerOverlay);
7496
7624
  const {
7497
7625
  apiMapDistance
7498
7626
  } = useMapGeometry();
@@ -7503,8 +7631,7 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
7503
7631
  carAngle,
7504
7632
  passengerPosition,
7505
7633
  passengerAngle,
7506
- renderTitle,
7507
- registerOverlay
7634
+ renderTitle
7508
7635
  } = props;
7509
7636
  const from = place2point(fromPlace);
7510
7637
  const passengerDistance = passengerPosition ? apiMapDistance(passengerPosition, from) : void 0;
@@ -7538,7 +7665,7 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
7538
7665
  distance,
7539
7666
  duration
7540
7667
  }) => {
7541
- var _a, _b;
7668
+ var _a;
7542
7669
  spaceLog("angleDifference", "carPosition, routeAngle, driverAngle = ", carPosition, angle, carAngle);
7543
7670
  return [Vue.h(DrivingLine, {
7544
7671
  "attrs": {
@@ -7552,12 +7679,7 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
7552
7679
  distance,
7553
7680
  duration
7554
7681
  }),
7555
- "registerOverlay": registerOverlay
7556
- }
7557
- }), Vue.h(KeyedFitView, {
7558
- "attrs": {
7559
- "registerOverlay": registerOverlay,
7560
- "fitViewKey": JSON.stringify((_b = path[0]) != null ? _b : carPosition)
7682
+ "registerOverlay": fittableRegistryOverlay
7561
7683
  }
7562
7684
  })];
7563
7685
  }
@@ -7570,12 +7692,7 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
7570
7692
  distance: carDistance,
7571
7693
  duration: carDurationWithinMinDistance(carDistance)
7572
7694
  }),
7573
- "registerOverlay": registerOverlay
7574
- }
7575
- }), Vue.h(KeyedFitView, {
7576
- "attrs": {
7577
- "registerOverlay": registerOverlay,
7578
- "fitViewKey": JSON.stringify(carPosition)
7695
+ "registerOverlay": fittableRegistryOverlay
7579
7696
  }
7580
7697
  })], !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && Vue.h(WalkingRoute, {
7581
7698
  "attrs": {
@@ -7593,6 +7710,11 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
7593
7710
  "attrs": {
7594
7711
  "registerOverlay": registerOverlay
7595
7712
  }
7713
+ }), Vue.h(InterruptableIntervalFitView, {
7714
+ "attrs": {
7715
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7716
+ "registerOverlay": registerOverlay
7717
+ }
7596
7718
  })]);
7597
7719
  };
7598
7720
  });
@@ -7670,10 +7792,19 @@ const SectionBookDispatched = defineSetup(function SectionBookDispatched2(props)
7670
7792
  "attrs": {
7671
7793
  "registerOverlay": registerOverlay
7672
7794
  }
7795
+ }), Vue.h(InterruptableIntervalFitView, {
7796
+ "attrs": {
7797
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7798
+ "registerOverlay": registerOverlay
7799
+ }
7673
7800
  })]);
7674
7801
  };
7675
7802
  });
7676
7803
  const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
7804
+ const {
7805
+ registerOverlay
7806
+ } = props;
7807
+ const fittableRegistryOverlay = createFittableRegisterOverlay(registerOverlay);
7677
7808
  const {
7678
7809
  apiMapDistance
7679
7810
  } = useMapGeometry();
@@ -7684,8 +7815,7 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
7684
7815
  carAngle,
7685
7816
  passengerPosition,
7686
7817
  passengerAngle,
7687
- title,
7688
- registerOverlay
7818
+ title
7689
7819
  } = props;
7690
7820
  const from = place2point(fromPlace);
7691
7821
  const passengerDistance = passengerPosition ? apiMapDistance(passengerPosition, from) : void 0;
@@ -7713,12 +7843,7 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
7713
7843
  "position": carPosition,
7714
7844
  "angle": carAngle,
7715
7845
  "title": title,
7716
- "registerOverlay": registerOverlay
7717
- }
7718
- }), Vue.h(KeyedFitView, {
7719
- "attrs": {
7720
- "registerOverlay": registerOverlay,
7721
- "fitViewKey": JSON.stringify(carPosition)
7846
+ "registerOverlay": fittableRegistryOverlay
7722
7847
  }
7723
7848
  })], Vue.h(StartEndPoint, {
7724
7849
  "attrs": {
@@ -7736,17 +7861,25 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
7736
7861
  "attrs": {
7737
7862
  "registerOverlay": registerOverlay
7738
7863
  }
7864
+ }), Vue.h(InterruptableIntervalFitView, {
7865
+ "attrs": {
7866
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7867
+ "registerOverlay": registerOverlay
7868
+ }
7739
7869
  })]);
7740
7870
  };
7741
7871
  });
7742
7872
  const SectionInService = defineSetup(function SectionInService2(props) {
7873
+ const {
7874
+ registerOverlay
7875
+ } = props;
7876
+ const fittableRegistryOverlay = createFittableRegisterOverlay(registerOverlay);
7743
7877
  return () => {
7744
7878
  const {
7745
7879
  to: toPlace,
7746
7880
  carPosition,
7747
7881
  carAngle,
7748
- renderTitle,
7749
- registerOverlay
7882
+ renderTitle
7750
7883
  } = props;
7751
7884
  const to = place2point(toPlace);
7752
7885
  const {
@@ -7763,7 +7896,7 @@ const SectionInService = defineSetup(function SectionInService2(props) {
7763
7896
  distance,
7764
7897
  duration
7765
7898
  }) => {
7766
- var _a, _b;
7899
+ var _a;
7767
7900
  spaceLog("angleDifference", "carPosition, routeAngle, driverAngle = ", carPosition, angle, carAngle);
7768
7901
  return [Vue.h(DrivingLine, {
7769
7902
  "attrs": {
@@ -7777,12 +7910,7 @@ const SectionInService = defineSetup(function SectionInService2(props) {
7777
7910
  distance,
7778
7911
  duration
7779
7912
  }),
7780
- "registerOverlay": registerOverlay
7781
- }
7782
- }), Vue.h(KeyedFitView, {
7783
- "attrs": {
7784
- "registerOverlay": registerOverlay,
7785
- "fitViewKey": JSON.stringify((_b = path[0]) != null ? _b : carPosition)
7913
+ "registerOverlay": fittableRegistryOverlay
7786
7914
  }
7787
7915
  })];
7788
7916
  }
@@ -7795,12 +7923,7 @@ const SectionInService = defineSetup(function SectionInService2(props) {
7795
7923
  distance: carDistance,
7796
7924
  duration: carDurationWithinMinDistance(carDistance)
7797
7925
  }),
7798
- "registerOverlay": registerOverlay
7799
- }
7800
- }), Vue.h(KeyedFitView, {
7801
- "attrs": {
7802
- "registerOverlay": registerOverlay,
7803
- "fitViewKey": JSON.stringify(carPosition)
7926
+ "registerOverlay": fittableRegistryOverlay
7804
7927
  }
7805
7928
  })], Vue.h(StartEndPoint, {
7806
7929
  "attrs": {
@@ -7818,6 +7941,11 @@ const SectionInService = defineSetup(function SectionInService2(props) {
7818
7941
  "attrs": {
7819
7942
  "registerOverlay": registerOverlay
7820
7943
  }
7944
+ }), Vue.h(InterruptableIntervalFitView, {
7945
+ "attrs": {
7946
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7947
+ "registerOverlay": registerOverlay
7948
+ }
7821
7949
  })]);
7822
7950
  };
7823
7951
  });
@@ -7858,6 +7986,11 @@ const SectionCanceled = defineSetup(function SectionCanceled2(props) {
7858
7986
  "attrs": {
7859
7987
  "registerOverlay": registerOverlay
7860
7988
  }
7989
+ }), Vue.h(InterruptableIntervalFitView, {
7990
+ "attrs": {
7991
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7992
+ "registerOverlay": registerOverlay
7993
+ }
7861
7994
  })]);
7862
7995
  };
7863
7996
  });
@@ -7911,6 +8044,11 @@ const SectionEndService = defineSetup(function SectionEndService2(props) {
7911
8044
  "attrs": {
7912
8045
  "registerOverlay": registerOverlay
7913
8046
  }
8047
+ }), Vue.h(InterruptableIntervalFitView, {
8048
+ "attrs": {
8049
+ "interval": AUTO_FIT_VIEW_INTERVAL,
8050
+ "registerOverlay": registerOverlay
8051
+ }
7914
8052
  })]);
7915
8053
  };
7916
8054
  });
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ var __publicField = (obj, key, value) => {
7
7
  import Vue, { defineComponent, h, computed, inject, provide, watch, onMounted, onUnmounted, watchPostEffect, shallowRef, ref, watchEffect, reactive, toRefs, toRef } from "vue";
8
8
  const style = "";
9
9
  const name = "@heycar/heycars-map";
10
- const version = "0.9.0";
10
+ const version = "0.9.1";
11
11
  const type = "module";
12
12
  const scripts = {
13
13
  dev: "vite -c vite.config.dev.ts",
@@ -1111,6 +1111,48 @@ const assertAngle = (angle) => {
1111
1111
  const isLatLngLiteral = (value) => {
1112
1112
  return value != null && typeof value === "object" && Number.isFinite(value.lat) && Number.isFinite(value.lng);
1113
1113
  };
1114
+ function defered() {
1115
+ const defer = {};
1116
+ const promise = new Promise((resolve, reject) => {
1117
+ defer.state = "pending";
1118
+ defer.resolve = async (value) => {
1119
+ try {
1120
+ const result = await value;
1121
+ defer.state = "fulfilled";
1122
+ return resolve(result);
1123
+ } catch (err) {
1124
+ defer.state = "rejected";
1125
+ reject(err);
1126
+ }
1127
+ };
1128
+ defer.reject = (reason) => {
1129
+ defer.state = "rejected";
1130
+ return reject(reason);
1131
+ };
1132
+ });
1133
+ return Object.assign(promise, defer);
1134
+ }
1135
+ const pausableSleep = (milliSeconds) => {
1136
+ const sleepDefered = defered();
1137
+ let id = setTimeout(sleepDefered.resolve, milliSeconds);
1138
+ let isPaused = false;
1139
+ const pause = () => {
1140
+ if (isPaused || sleepDefered.state === "fulfilled")
1141
+ return;
1142
+ console.log("pause");
1143
+ isPaused = true;
1144
+ clearTimeout(id);
1145
+ };
1146
+ const restart = () => {
1147
+ if (sleepDefered.state === "fulfilled")
1148
+ return;
1149
+ console.log("restart");
1150
+ isPaused = false;
1151
+ clearTimeout(id);
1152
+ id = setTimeout(sleepDefered.resolve, milliSeconds);
1153
+ };
1154
+ return { sleepPromise: sleepDefered, pause, restart };
1155
+ };
1114
1156
  const vec2lnglat = ([lng, lat]) => ({
1115
1157
  lng: Number(lng),
1116
1158
  lat: Number(lat)
@@ -3145,6 +3187,36 @@ const useMapFitView = (props) => {
3145
3187
  const { supplier } = useMapSupplier();
3146
3188
  return supplier === "gmap" ? useGmapFitView(props) : useAmapFitView(props);
3147
3189
  };
3190
+ const useAmapTouchEvent = () => {
3191
+ const mapRef = useAmap();
3192
+ const addMapEventListener = (name2, handler) => {
3193
+ var _a;
3194
+ return (_a = mapRef == null ? void 0 : mapRef.value) == null ? void 0 : _a.on(name2, handler);
3195
+ };
3196
+ const removeMapEventListener = (name2, handler) => {
3197
+ var _a;
3198
+ return (_a = mapRef == null ? void 0 : mapRef.value) == null ? void 0 : _a.off(name2, handler);
3199
+ };
3200
+ return { addMapEventListener, removeMapEventListener };
3201
+ };
3202
+ const useGmapTouchEvent = () => {
3203
+ const mapRef = useGmap();
3204
+ const addMapEventListener = (name2, handler) => {
3205
+ var _a;
3206
+ const container = (_a = mapRef == null ? void 0 : mapRef.value) == null ? void 0 : _a.getDiv();
3207
+ return container == null ? void 0 : container.addEventListener(name2, handler);
3208
+ };
3209
+ const removeMapEventListener = (name2, handler) => {
3210
+ var _a;
3211
+ const container = (_a = mapRef == null ? void 0 : mapRef.value) == null ? void 0 : _a.getDiv();
3212
+ return container == null ? void 0 : container.removeEventListener(name2, handler);
3213
+ };
3214
+ return { addMapEventListener, removeMapEventListener };
3215
+ };
3216
+ const useMapTouchEvent = () => {
3217
+ const { supplier } = useMapSupplier();
3218
+ return supplier === "gmap" ? useGmapTouchEvent() : useAmapTouchEvent();
3219
+ };
3148
3220
  defineSetup(function FitView(props, {
3149
3221
  slots
3150
3222
  }) {
@@ -3197,7 +3269,7 @@ function createFittableRegisterOverlay(registerOverlay) {
3197
3269
  setFitView
3198
3270
  };
3199
3271
  }
3200
- const KeyedFitView = defineSetup(function KeyedFitView2(props, {
3272
+ defineSetup(function KeyedFitView(props, {
3201
3273
  slots
3202
3274
  }) {
3203
3275
  const mapMountedPromise = useMapMountedPromise();
@@ -3218,6 +3290,48 @@ const KeyedFitView = defineSetup(function KeyedFitView2(props, {
3218
3290
  return h("div", [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
3219
3291
  };
3220
3292
  });
3293
+ const InterruptableIntervalFitView = defineSetup(function InterruptableIntervalFitView2(props) {
3294
+ const {
3295
+ registerOverlay
3296
+ } = props;
3297
+ const mapMountedPromise = useMapMountedPromise();
3298
+ const {
3299
+ addMapEventListener,
3300
+ removeMapEventListener
3301
+ } = useMapTouchEvent();
3302
+ watch(() => 0, async (_1, _2, onCleanup) => {
3303
+ await mapMountedPromise;
3304
+ let skip = false;
3305
+ let pause;
3306
+ let restart;
3307
+ let sleepPromise;
3308
+ const handleTouchStartOrMove = () => pause();
3309
+ const handleTouchEnd = () => restart();
3310
+ addMapEventListener("touchstart", handleTouchStartOrMove);
3311
+ addMapEventListener("touchmove", handleTouchStartOrMove);
3312
+ addMapEventListener("touchend", handleTouchEnd);
3313
+ onCleanup(() => {
3314
+ skip = true;
3315
+ removeEventListener("touchstart", handleTouchStartOrMove);
3316
+ removeMapEventListener("touchmove", handleTouchStartOrMove);
3317
+ removeMapEventListener("touchend", handleTouchEnd);
3318
+ });
3319
+ while (!skip) {
3320
+ ({
3321
+ pause,
3322
+ restart,
3323
+ sleepPromise
3324
+ } = pausableSleep(props.interval));
3325
+ await sleepPromise;
3326
+ console.log("InterruptableIntervalFitView setFitView");
3327
+ registerOverlay.setFitView();
3328
+ }
3329
+ }, {
3330
+ immediate: true,
3331
+ flush: "post"
3332
+ });
3333
+ return () => null;
3334
+ });
3221
3335
  const imgEndPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI3Mi4zMzklIiB5MT0iNTAlIiB4Mj0iMCUiIHkyPSI1MCUiIGlkPSJwcmVmaXhfX2EiPjxzdG9wIHN0b3AtY29sb3I9IiNGRjg0NDciIG9mZnNldD0iMCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkY4QjRBIiBvZmZzZXQ9IjUwLjU5NiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkZBOTVBIiBvZmZzZXQ9IjEwMCUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xMiAzMC4yMTVjMi4xMzQgMCAzLjg2My0uODkzIDMuODYzLTEuOTk1IDAtMS4xLTEuNzMtMS45OTQtMy44NjMtMS45OTQtMi4xMzQgMC0zLjg2My44OTMtMy44NjMgMS45OTQgMCAxLjEwMiAxLjczIDEuOTk1IDMuODYzIDEuOTk1eiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyNy4wMDZjMi4xMjggMC0uOS0zLjc0MyA1LjYyMS02LjY0M0MxOS44NDIgMTguNDUzIDIyIDE0Ljk1MyAyMiAxMC45NSAyMiA0LjkwMiAxNy4wNzUgMCAxMSAwUzAgNC45MDIgMCAxMC45NWMwIDMuOTE4IDIuMDY4IDcuMzU2IDUuMTc3IDkuMjlDMTEuNzUgMjMuMjg0IDkuMDYgMjcuMDA3IDExIDI3LjAwN3oiIHN0cm9rZT0iI0ZGRiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSIvPjx0ZXh0IGZvbnQtZmFtaWx5PSJQaW5nRmFuZ1NDLVNlbWlib2xkLCBQaW5nRmFuZyBTQyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgZmlsbD0iI0ZGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSAxLjIxNSkiPjx0c3BhbiB4PSI1IiB5PSIxNS40NDkiPue7iDwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=";
3222
3336
  const imgStartPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjUwJSIgeDI9IjEyOS41OTklIiB5Mj0iNTAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjMzZBOEZGIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzQ4NzFGMSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTIgMzAuMjE1YzEuOTUgMCAzLjUzMi0uODE2IDMuNTMyLTEuODIzIDAtMS4wMDctMS41ODEtMS44MjMtMy41MzItMS44MjMtMS45NSAwLTMuNTMyLjgxNi0zLjUzMiAxLjgyMyAwIDEuMDA3IDEuNTgxIDEuODIzIDMuNTMyIDEuODIzeiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyN2MyLjEyOCAwLS45LTMuNzQyIDUuNjIxLTYuNjQxIDMuMjIxLTEuOTEgNS4zNzktNS40MSA1LjM3OS05LjQxMkMyMiA0LjkwMSAxNy4wNzUgMCAxMSAwUzAgNC45MDEgMCAxMC45NDdjMCAzLjkxOCAyLjA2OCA3LjM1NSA1LjE3NyA5LjI5QzExLjc1IDIzLjI3NyA5LjA2IDI3IDExIDI3eiIgc3Ryb2tlPSIjRkZGIiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMS4yMTUpIi8+PHRleHQgZm9udC1mYW1pbHk9IlBpbmdGYW5nU0MtU2VtaWJvbGQsIFBpbmdGYW5nIFNDIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiBmaWxsPSIjRkZGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSI+PHRzcGFuIHg9IjUiIHk9IjE1LjYyNCI+6LW3PC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==";
3223
3337
  const StartEndPoint_css_ts_vanilla = "";
@@ -6140,10 +6254,9 @@ const ConditionalFittablePassengerCircle = defineSetup(function ConditionalFitta
6140
6254
  "size": "small",
6141
6255
  "registerOverlay": registerOverlay
6142
6256
  }
6143
- }), h(KeyedFitView, {
6257
+ }), h(FitViewOnce, {
6144
6258
  "attrs": {
6145
- "registerOverlay": registerOverlay,
6146
- "fitViewKey": JSON.stringify(position)
6259
+ "registerOverlay": registerOverlay
6147
6260
  }
6148
6261
  })]);
6149
6262
  };
@@ -7392,6 +7505,7 @@ const WaveCircle = defineSetup(function WaveCircle2(props) {
7392
7505
  const PASSENGER_DISTANCE_MAX = 2e3;
7393
7506
  const PASSENGER_DISTANCE_MIN = 10;
7394
7507
  const CAR_DISTANCE_MIN = 100;
7508
+ const AUTO_FIT_VIEW_INTERVAL = 15e3;
7395
7509
  const carDurationWithinMinDistance = (distance) => Math.floor(distance / 5);
7396
7510
  const SectionDispatching = defineSetup(function SectionDispatching2(props) {
7397
7511
  return () => {
@@ -7422,6 +7536,11 @@ const SectionDispatching = defineSetup(function SectionDispatching2(props) {
7422
7536
  "attrs": {
7423
7537
  "registerOverlay": registerOverlay
7424
7538
  }
7539
+ }), h(InterruptableIntervalFitView, {
7540
+ "attrs": {
7541
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7542
+ "registerOverlay": registerOverlay
7543
+ }
7425
7544
  })]);
7426
7545
  };
7427
7546
  });
@@ -7487,10 +7606,19 @@ const SectionConfirmed = defineSetup(function SectionConfirmed2(props) {
7487
7606
  "attrs": {
7488
7607
  "registerOverlay": registerOverlay
7489
7608
  }
7609
+ }), h(InterruptableIntervalFitView, {
7610
+ "attrs": {
7611
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7612
+ "registerOverlay": registerOverlay
7613
+ }
7490
7614
  })]);
7491
7615
  };
7492
7616
  });
7493
7617
  const SectionDriverStartService = defineSetup(function SectionDriverStartService2(props) {
7618
+ const {
7619
+ registerOverlay
7620
+ } = props;
7621
+ const fittableRegistryOverlay = createFittableRegisterOverlay(registerOverlay);
7494
7622
  const {
7495
7623
  apiMapDistance
7496
7624
  } = useMapGeometry();
@@ -7501,8 +7629,7 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
7501
7629
  carAngle,
7502
7630
  passengerPosition,
7503
7631
  passengerAngle,
7504
- renderTitle,
7505
- registerOverlay
7632
+ renderTitle
7506
7633
  } = props;
7507
7634
  const from = place2point(fromPlace);
7508
7635
  const passengerDistance = passengerPosition ? apiMapDistance(passengerPosition, from) : void 0;
@@ -7536,7 +7663,7 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
7536
7663
  distance,
7537
7664
  duration
7538
7665
  }) => {
7539
- var _a, _b;
7666
+ var _a;
7540
7667
  spaceLog("angleDifference", "carPosition, routeAngle, driverAngle = ", carPosition, angle, carAngle);
7541
7668
  return [h(DrivingLine, {
7542
7669
  "attrs": {
@@ -7550,12 +7677,7 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
7550
7677
  distance,
7551
7678
  duration
7552
7679
  }),
7553
- "registerOverlay": registerOverlay
7554
- }
7555
- }), h(KeyedFitView, {
7556
- "attrs": {
7557
- "registerOverlay": registerOverlay,
7558
- "fitViewKey": JSON.stringify((_b = path[0]) != null ? _b : carPosition)
7680
+ "registerOverlay": fittableRegistryOverlay
7559
7681
  }
7560
7682
  })];
7561
7683
  }
@@ -7568,12 +7690,7 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
7568
7690
  distance: carDistance,
7569
7691
  duration: carDurationWithinMinDistance(carDistance)
7570
7692
  }),
7571
- "registerOverlay": registerOverlay
7572
- }
7573
- }), h(KeyedFitView, {
7574
- "attrs": {
7575
- "registerOverlay": registerOverlay,
7576
- "fitViewKey": JSON.stringify(carPosition)
7693
+ "registerOverlay": fittableRegistryOverlay
7577
7694
  }
7578
7695
  })], !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && h(WalkingRoute, {
7579
7696
  "attrs": {
@@ -7591,6 +7708,11 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
7591
7708
  "attrs": {
7592
7709
  "registerOverlay": registerOverlay
7593
7710
  }
7711
+ }), h(InterruptableIntervalFitView, {
7712
+ "attrs": {
7713
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7714
+ "registerOverlay": registerOverlay
7715
+ }
7594
7716
  })]);
7595
7717
  };
7596
7718
  });
@@ -7668,10 +7790,19 @@ const SectionBookDispatched = defineSetup(function SectionBookDispatched2(props)
7668
7790
  "attrs": {
7669
7791
  "registerOverlay": registerOverlay
7670
7792
  }
7793
+ }), h(InterruptableIntervalFitView, {
7794
+ "attrs": {
7795
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7796
+ "registerOverlay": registerOverlay
7797
+ }
7671
7798
  })]);
7672
7799
  };
7673
7800
  });
7674
7801
  const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
7802
+ const {
7803
+ registerOverlay
7804
+ } = props;
7805
+ const fittableRegistryOverlay = createFittableRegisterOverlay(registerOverlay);
7675
7806
  const {
7676
7807
  apiMapDistance
7677
7808
  } = useMapGeometry();
@@ -7682,8 +7813,7 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
7682
7813
  carAngle,
7683
7814
  passengerPosition,
7684
7815
  passengerAngle,
7685
- title,
7686
- registerOverlay
7816
+ title
7687
7817
  } = props;
7688
7818
  const from = place2point(fromPlace);
7689
7819
  const passengerDistance = passengerPosition ? apiMapDistance(passengerPosition, from) : void 0;
@@ -7711,12 +7841,7 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
7711
7841
  "position": carPosition,
7712
7842
  "angle": carAngle,
7713
7843
  "title": title,
7714
- "registerOverlay": registerOverlay
7715
- }
7716
- }), h(KeyedFitView, {
7717
- "attrs": {
7718
- "registerOverlay": registerOverlay,
7719
- "fitViewKey": JSON.stringify(carPosition)
7844
+ "registerOverlay": fittableRegistryOverlay
7720
7845
  }
7721
7846
  })], h(StartEndPoint, {
7722
7847
  "attrs": {
@@ -7734,17 +7859,25 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
7734
7859
  "attrs": {
7735
7860
  "registerOverlay": registerOverlay
7736
7861
  }
7862
+ }), h(InterruptableIntervalFitView, {
7863
+ "attrs": {
7864
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7865
+ "registerOverlay": registerOverlay
7866
+ }
7737
7867
  })]);
7738
7868
  };
7739
7869
  });
7740
7870
  const SectionInService = defineSetup(function SectionInService2(props) {
7871
+ const {
7872
+ registerOverlay
7873
+ } = props;
7874
+ const fittableRegistryOverlay = createFittableRegisterOverlay(registerOverlay);
7741
7875
  return () => {
7742
7876
  const {
7743
7877
  to: toPlace,
7744
7878
  carPosition,
7745
7879
  carAngle,
7746
- renderTitle,
7747
- registerOverlay
7880
+ renderTitle
7748
7881
  } = props;
7749
7882
  const to = place2point(toPlace);
7750
7883
  const {
@@ -7761,7 +7894,7 @@ const SectionInService = defineSetup(function SectionInService2(props) {
7761
7894
  distance,
7762
7895
  duration
7763
7896
  }) => {
7764
- var _a, _b;
7897
+ var _a;
7765
7898
  spaceLog("angleDifference", "carPosition, routeAngle, driverAngle = ", carPosition, angle, carAngle);
7766
7899
  return [h(DrivingLine, {
7767
7900
  "attrs": {
@@ -7775,12 +7908,7 @@ const SectionInService = defineSetup(function SectionInService2(props) {
7775
7908
  distance,
7776
7909
  duration
7777
7910
  }),
7778
- "registerOverlay": registerOverlay
7779
- }
7780
- }), h(KeyedFitView, {
7781
- "attrs": {
7782
- "registerOverlay": registerOverlay,
7783
- "fitViewKey": JSON.stringify((_b = path[0]) != null ? _b : carPosition)
7911
+ "registerOverlay": fittableRegistryOverlay
7784
7912
  }
7785
7913
  })];
7786
7914
  }
@@ -7793,12 +7921,7 @@ const SectionInService = defineSetup(function SectionInService2(props) {
7793
7921
  distance: carDistance,
7794
7922
  duration: carDurationWithinMinDistance(carDistance)
7795
7923
  }),
7796
- "registerOverlay": registerOverlay
7797
- }
7798
- }), h(KeyedFitView, {
7799
- "attrs": {
7800
- "registerOverlay": registerOverlay,
7801
- "fitViewKey": JSON.stringify(carPosition)
7924
+ "registerOverlay": fittableRegistryOverlay
7802
7925
  }
7803
7926
  })], h(StartEndPoint, {
7804
7927
  "attrs": {
@@ -7816,6 +7939,11 @@ const SectionInService = defineSetup(function SectionInService2(props) {
7816
7939
  "attrs": {
7817
7940
  "registerOverlay": registerOverlay
7818
7941
  }
7942
+ }), h(InterruptableIntervalFitView, {
7943
+ "attrs": {
7944
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7945
+ "registerOverlay": registerOverlay
7946
+ }
7819
7947
  })]);
7820
7948
  };
7821
7949
  });
@@ -7856,6 +7984,11 @@ const SectionCanceled = defineSetup(function SectionCanceled2(props) {
7856
7984
  "attrs": {
7857
7985
  "registerOverlay": registerOverlay
7858
7986
  }
7987
+ }), h(InterruptableIntervalFitView, {
7988
+ "attrs": {
7989
+ "interval": AUTO_FIT_VIEW_INTERVAL,
7990
+ "registerOverlay": registerOverlay
7991
+ }
7859
7992
  })]);
7860
7993
  };
7861
7994
  });
@@ -7909,6 +8042,11 @@ const SectionEndService = defineSetup(function SectionEndService2(props) {
7909
8042
  "attrs": {
7910
8043
  "registerOverlay": registerOverlay
7911
8044
  }
8045
+ }), h(InterruptableIntervalFitView, {
8046
+ "attrs": {
8047
+ "interval": AUTO_FIT_VIEW_INTERVAL,
8048
+ "registerOverlay": registerOverlay
8049
+ }
7912
8050
  })]);
7913
8051
  };
7914
8052
  });
@@ -15,4 +15,8 @@ export type KeyedFitViewProps = Required<MROP> & {
15
15
  fitViewKey: string;
16
16
  };
17
17
  export declare const KeyedFitView: import("vue").DefineComponent<import("vue/types/v3-component-props").ComponentObjectPropsOptions<KeyedFitViewProps>, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").EmitByProps<KeyedFitViewProps, Required<KeyedFitViewProps>>, never, KeyedFitViewProps, {} | {}>;
18
+ export type InterruptableIntervalFitViewProps = Required<MROP> & {
19
+ interval: number;
20
+ };
21
+ export declare const InterruptableIntervalFitView: import("vue").DefineComponent<import("vue/types/v3-component-props").ComponentObjectPropsOptions<InterruptableIntervalFitViewProps>, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").EmitByProps<InterruptableIntervalFitViewProps, Required<InterruptableIntervalFitViewProps>>, never, InterruptableIntervalFitViewProps, {} | {}>;
18
22
  export {};
@@ -0,0 +1,15 @@
1
+ type AddMapEventListener = (name: "touchstart" | "touchmove" | "touchend", handler: (e: TouchEvent) => void) => void;
2
+ type RemoveMapEventListener = (name: "touchstart" | "touchmove" | "touchend", handler: (e: TouchEvent) => void) => void;
3
+ export declare const useAmapTouchEvent: () => {
4
+ addMapEventListener: AddMapEventListener;
5
+ removeMapEventListener: RemoveMapEventListener;
6
+ };
7
+ export declare const useGmapTouchEvent: () => {
8
+ addMapEventListener: AddMapEventListener;
9
+ removeMapEventListener: RemoveMapEventListener;
10
+ };
11
+ export declare const useMapTouchEvent: () => {
12
+ addMapEventListener: AddMapEventListener;
13
+ removeMapEventListener: RemoveMapEventListener;
14
+ };
15
+ export {};
@@ -4,3 +4,19 @@ export declare const sleep: (milliSeconds: number) => Promise<unknown>;
4
4
  export declare const assertPoint: (point: unknown) => void;
5
5
  export declare const assertAngle: (angle: unknown) => void;
6
6
  export declare const isLatLngLiteral: (value: any) => boolean;
7
+ interface Defered<T> extends Promise<T> {
8
+ state: "pending" | "fulfilled" | "rejected";
9
+ resolve: (value: T | PromiseLike<T>) => void;
10
+ reject: (reason?: any) => void;
11
+ }
12
+ export declare function defered<T>(): Defered<T>;
13
+ export declare const resettableSleep: (milliSeconds: number) => {
14
+ sleepPromise: Defered<void>;
15
+ reset: () => void;
16
+ };
17
+ export declare const pausableSleep: (milliSeconds: number) => {
18
+ sleepPromise: Defered<void>;
19
+ pause: () => void;
20
+ restart: () => void;
21
+ };
22
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heycar/heycars-map",
3
- "version": "0.9.0",
3
+ "version": "0.9.1",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite -c vite.config.dev.ts",