@eyeon/map 2.0.15 → 2.0.19

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 (106) hide show
  1. package/dist/assets/MapViewer.css +1 -1
  2. package/dist/assets/index.css +1 -1
  3. package/dist/chunks/MapViewer.js +2566 -2161
  4. package/dist/chunks/MapViewer.js.map +1 -1
  5. package/dist/chunks/responsive.js +2590 -0
  6. package/dist/chunks/responsive.js.map +1 -0
  7. package/dist/chunks/wheelZoom.js +163 -177
  8. package/dist/chunks/wheelZoom.js.map +1 -1
  9. package/dist/core/assignment.d.ts +19 -2
  10. package/dist/core/assignment.d.ts.map +1 -1
  11. package/dist/core/color.d.ts +7 -0
  12. package/dist/core/color.d.ts.map +1 -1
  13. package/dist/core/entranceIcon.d.ts +17 -3
  14. package/dist/core/entranceIcon.d.ts.map +1 -1
  15. package/dist/core/hostChrome.d.ts +13 -2
  16. package/dist/core/hostChrome.d.ts.map +1 -1
  17. package/dist/core/hoverTooltip.d.ts +37 -0
  18. package/dist/core/hoverTooltip.d.ts.map +1 -0
  19. package/dist/core/import/index.d.ts +10 -1
  20. package/dist/core/import/index.d.ts.map +1 -1
  21. package/dist/core/index.d.ts +3 -0
  22. package/dist/core/index.d.ts.map +1 -1
  23. package/dist/core/index.js +237 -189
  24. package/dist/core/layerStyles.d.ts +31 -0
  25. package/dist/core/layerStyles.d.ts.map +1 -1
  26. package/dist/core/outdoorDecoration.d.ts.map +1 -1
  27. package/dist/core/publicShapes.d.ts +14 -0
  28. package/dist/core/publicShapes.d.ts.map +1 -1
  29. package/dist/core/responsive.d.ts +6 -0
  30. package/dist/core/responsive.d.ts.map +1 -1
  31. package/dist/core/routing/graph-tools.d.ts +6 -5
  32. package/dist/core/routing/graph-tools.d.ts.map +1 -1
  33. package/dist/core/routing/pathfinding.d.ts +36 -0
  34. package/dist/core/routing/pathfinding.d.ts.map +1 -1
  35. package/dist/core/shapeFill.d.ts +40 -0
  36. package/dist/core/shapeFill.d.ts.map +1 -0
  37. package/dist/core/stacking.d.ts +4 -0
  38. package/dist/core/stacking.d.ts.map +1 -1
  39. package/dist/core/types.d.ts +21 -3
  40. package/dist/core/types.d.ts.map +1 -1
  41. package/dist/core/viewerReset.d.ts +24 -0
  42. package/dist/core/viewerReset.d.ts.map +1 -0
  43. package/dist/core/websiteModal.d.ts +15 -0
  44. package/dist/core/websiteModal.d.ts.map +1 -1
  45. package/dist/editor/MapEditor.d.ts.map +1 -1
  46. package/dist/editor/assignmentOverlay.d.ts +37 -0
  47. package/dist/editor/assignmentOverlay.d.ts.map +1 -0
  48. package/dist/editor/canvas/AssignedShapeOverlay.d.ts +8 -0
  49. package/dist/editor/canvas/AssignedShapeOverlay.d.ts.map +1 -0
  50. package/dist/editor/canvas/EditorCanvas.d.ts +6 -1
  51. package/dist/editor/canvas/EditorCanvas.d.ts.map +1 -1
  52. package/dist/editor/canvas/coords.d.ts +9 -0
  53. package/dist/editor/canvas/coords.d.ts.map +1 -1
  54. package/dist/editor/canvas/editorFill.d.ts.map +1 -1
  55. package/dist/editor/canvas/editorHover.d.ts +4 -0
  56. package/dist/editor/canvas/editorHover.d.ts.map +1 -1
  57. package/dist/editor/draftOps.d.ts.map +1 -1
  58. package/dist/editor/entranceIcon.d.ts +2 -2
  59. package/dist/editor/entranceIcon.d.ts.map +1 -1
  60. package/dist/editor/index.css +369 -87
  61. package/dist/editor/index.js +4735 -4328
  62. package/dist/editor/index.js.map +1 -1
  63. package/dist/editor/panels/AssignForm.d.ts +4 -3
  64. package/dist/editor/panels/AssignForm.d.ts.map +1 -1
  65. package/dist/editor/panels/BulkAssignForm.d.ts +3 -1
  66. package/dist/editor/panels/BulkAssignForm.d.ts.map +1 -1
  67. package/dist/editor/panels/ConnectorAssign.d.ts.map +1 -1
  68. package/dist/editor/panels/FloorsPanel.d.ts.map +1 -1
  69. package/dist/editor/panels/Inspector.d.ts +4 -2
  70. package/dist/editor/panels/Inspector.d.ts.map +1 -1
  71. package/dist/editor/panels/LeftRail.d.ts.map +1 -1
  72. package/dist/editor/routeStubs.d.ts +11 -0
  73. package/dist/editor/routeStubs.d.ts.map +1 -1
  74. package/dist/specialIcons.d.ts +22 -1
  75. package/dist/specialIcons.d.ts.map +1 -1
  76. package/dist/test-maps/LF - Shops At South Town.ai +4468 -1
  77. package/dist/test-maps/LF - Shops At South Town.svg +245 -0
  78. package/dist/test-maps/shops-at-south-town/SVG/escalator.svg +13 -0
  79. package/dist/viewer/MapViewer.d.ts.map +1 -1
  80. package/dist/viewer/camera.d.ts +10 -0
  81. package/dist/viewer/camera.d.ts.map +1 -1
  82. package/dist/viewer/components/CameraRig.d.ts.map +1 -1
  83. package/dist/viewer/components/LevelMeshes.d.ts +12 -2
  84. package/dist/viewer/components/LevelMeshes.d.ts.map +1 -1
  85. package/dist/viewer/components/MapScene.d.ts +5 -2
  86. package/dist/viewer/components/MapScene.d.ts.map +1 -1
  87. package/dist/viewer/components/RouteLine.d.ts +28 -9
  88. package/dist/viewer/components/RouteLine.d.ts.map +1 -1
  89. package/dist/viewer/components/SvgVectorLayer.d.ts +1 -1
  90. package/dist/viewer/components/SvgVectorLayer.d.ts.map +1 -1
  91. package/dist/viewer/index.css +319 -62
  92. package/dist/viewer/index.js +1 -1
  93. package/dist/viewer/pointer.d.ts +42 -6
  94. package/dist/viewer/pointer.d.ts.map +1 -1
  95. package/dist/viewer/routeFloorChanges.d.ts +33 -0
  96. package/dist/viewer/routeFloorChanges.d.ts.map +1 -0
  97. package/dist/viewer/ui/HoverTooltip.d.ts +6 -0
  98. package/dist/viewer/ui/HoverTooltip.d.ts.map +1 -0
  99. package/dist/viewer/ui/MapControls.d.ts.map +1 -1
  100. package/dist/viewer/ui/RuntimeChrome.d.ts +2 -1
  101. package/dist/viewer/ui/RuntimeChrome.d.ts.map +1 -1
  102. package/dist/viewer/ui/WebsiteInfoModal.d.ts +3 -2
  103. package/dist/viewer/ui/WebsiteInfoModal.d.ts.map +1 -1
  104. package/package.json +1 -1
  105. package/dist/chunks/stacking.js +0 -2243
  106. package/dist/chunks/stacking.js.map +0 -1
@@ -41,6 +41,8 @@
41
41
  cursor: grab;
42
42
  touch-action: none;
43
43
  overscroll-behavior: none;
44
+ -webkit-user-select: none;
45
+ user-select: none;
44
46
  }
45
47
 
46
48
  .eyeon-map-viewer__canvas:active {
@@ -52,6 +54,86 @@
52
54
  cursor: pointer;
53
55
  }
54
56
 
57
+ /* Store / amenity hover pop-out — follows the pointer, arrow on the bottom. */
58
+ .eyeon-map-hover-tooltip {
59
+ position: absolute;
60
+ left: 0;
61
+ top: 0;
62
+ z-index: 4;
63
+ pointer-events: none;
64
+ -webkit-user-select: none;
65
+ user-select: none;
66
+ -webkit-touch-callout: none;
67
+ }
68
+
69
+ .eyeon-map-hover-tooltip ::selection,
70
+ .eyeon-map-hover-tooltip *::selection {
71
+ background: transparent;
72
+ }
73
+
74
+ .eyeon-map-hover-tooltip__pop {
75
+ position: relative;
76
+ display: flex;
77
+ flex-direction: column;
78
+ align-items: center;
79
+ padding-bottom: 6px;
80
+ transform: translate(-50%, calc(-100% - 10px));
81
+ transform-origin: 50% 100%;
82
+ filter:
83
+ drop-shadow(0 10px 24px rgba(15, 23, 42, 0.18))
84
+ drop-shadow(0 2px 6px rgba(15, 23, 42, 0.12));
85
+ animation: eyeon-map-tooltip-pop 160ms cubic-bezier(0.22, 1, 0.36, 1);
86
+ }
87
+
88
+ .eyeon-map-hover-tooltip__label {
89
+ position: relative;
90
+ z-index: 1;
91
+ display: block;
92
+ max-width: min(280px, 70vw);
93
+ padding: 8px 12px;
94
+ overflow: hidden;
95
+ border-radius: 10px;
96
+ background: #fff;
97
+ color: #0f172a;
98
+ font-size: 13px;
99
+ font-weight: 600;
100
+ letter-spacing: 0.01em;
101
+ line-height: 1.3;
102
+ text-overflow: ellipsis;
103
+ white-space: nowrap;
104
+ -webkit-user-select: none;
105
+ user-select: none;
106
+ }
107
+
108
+ .eyeon-map-hover-tooltip__arrow {
109
+ position: absolute;
110
+ z-index: 0;
111
+ left: 50%;
112
+ bottom: 1px;
113
+ width: 12px;
114
+ height: 12px;
115
+ border-radius: 2px;
116
+ background: #fff;
117
+ transform: translateX(-50%) rotate(45deg);
118
+ }
119
+
120
+ @keyframes eyeon-map-tooltip-pop {
121
+ from {
122
+ opacity: 0;
123
+ transform: translate(-50%, calc(-100% - 2px)) scale(0.94);
124
+ }
125
+ to {
126
+ opacity: 1;
127
+ transform: translate(-50%, calc(-100% - 10px)) scale(1);
128
+ }
129
+ }
130
+
131
+ @media (prefers-reduced-motion: reduce) {
132
+ .eyeon-map-hover-tooltip__pop {
133
+ animation: none;
134
+ }
135
+ }
136
+
55
137
  @keyframes eyeon-map-current-location-pulse {
56
138
  0% {
57
139
  transform: scale(0.8);
@@ -423,29 +505,68 @@
423
505
  position: relative;
424
506
  width: min(600px, calc(100vw - 32px));
425
507
  min-width: min(360px, calc(100vw - 32px));
508
+ overflow: visible;
426
509
  background: #fff;
427
510
  border-radius: 8px;
428
511
  box-shadow: 0 16px 40px rgba(15, 23, 42, 0.24);
429
512
  }
430
513
 
431
- .eyeon-map-info-modal__close {
514
+ /*
515
+ The store/amenity modal is portaled to document.body, so the
516
+ .eyeon-map-viewer button reset does not apply. Hello Elementor and
517
+ Elementor kit rules (`button:hover`, `button:focus`) would otherwise
518
+ paint the close control with the site accent color.
519
+ */
520
+ .eyeon-map-info-modal button,
521
+ .eyeon-map-info-modal button:hover,
522
+ .eyeon-map-info-modal button:focus,
523
+ .eyeon-map-info-modal button:focus-visible,
524
+ .eyeon-map-info-modal button:active {
525
+ outline: none !important;
526
+ box-shadow: none !important;
527
+ }
528
+
529
+ .eyeon-map-info-modal button.eyeon-map-info-modal__close,
530
+ .eyeon-map-info-modal button.eyeon-map-info-modal__close:hover,
531
+ .eyeon-map-info-modal button.eyeon-map-info-modal__close:focus,
532
+ .eyeon-map-info-modal button.eyeon-map-info-modal__close:focus-visible,
533
+ .eyeon-map-info-modal button.eyeon-map-info-modal__close:active {
432
534
  position: absolute;
433
535
  top: 0;
434
536
  right: 0;
435
537
  width: 24px;
436
538
  height: 24px;
437
539
  padding: 0;
438
- border: 0;
439
- background: transparent;
540
+ border: 0 !important;
541
+ background: transparent !important;
542
+ background-color: transparent !important;
543
+ color: #000 !important;
440
544
  transform: translate(50%, -50%);
441
545
  cursor: pointer;
442
546
  z-index: 2;
547
+ filter: none !important;
443
548
  }
444
549
 
445
550
  .eyeon-map-info-modal__close svg {
446
551
  display: block;
447
552
  }
448
553
 
554
+ .eyeon-map-info-modal__close svg,
555
+ .eyeon-map-info-modal button.eyeon-map-info-modal__close:hover svg,
556
+ .eyeon-map-info-modal button.eyeon-map-info-modal__close:focus svg {
557
+ color: #000 !important;
558
+ fill: #000 !important;
559
+ }
560
+
561
+ .eyeon-map-info-modal__close circle {
562
+ fill: #000 !important;
563
+ }
564
+
565
+ .eyeon-map-info-modal__close path {
566
+ stroke: #fff !important;
567
+ fill: none !important;
568
+ }
569
+
449
570
  .eyeon-map-info-modal__body {
450
571
  display: flex;
451
572
  flex-direction: column;
@@ -493,6 +614,7 @@
493
614
 
494
615
  .eyeon-map-info-modal__form {
495
616
  display: flex;
617
+ align-items: stretch;
496
618
  gap: 16px;
497
619
  padding: 16px;
498
620
  box-shadow: 0 0 10px 4px rgba(0, 0, 0, 0.1);
@@ -503,50 +625,144 @@
503
625
  min-width: 0;
504
626
  }
505
627
 
506
- .eyeon-map-info-modal__route-unavailable {
507
- align-self: center;
508
- color: #b42318;
509
- font-size: 13px;
628
+ .eyeon-map-info-modal__sr-only {
629
+ position: absolute;
630
+ width: 1px;
631
+ height: 1px;
632
+ padding: 0;
633
+ margin: -1px;
634
+ overflow: hidden;
635
+ clip: rect(0, 0, 0, 0);
636
+ white-space: nowrap;
637
+ border: 0;
510
638
  }
511
639
 
512
- .eyeon-map-info-modal__map-it {
640
+ .eyeon-map-info-modal__map-it-tooltip {
641
+ position: relative;
642
+ display: flex;
643
+ align-self: stretch;
513
644
  flex-shrink: 0;
514
- background: #0763b1;
645
+ margin-left: auto;
646
+ }
647
+
648
+ .eyeon-map-info-modal__map-it-tooltip:focus {
649
+ outline: none;
650
+ }
651
+
652
+ .eyeon-map-info-modal__map-it-tooltip .eyeon-map-info-modal__map-it:disabled {
653
+ pointer-events: none;
654
+ }
655
+
656
+ .eyeon-map-info-modal__map-it-tooltip[data-tooltip]::after {
657
+ content: attr(data-tooltip);
658
+ position: absolute;
659
+ z-index: 2;
660
+ left: 50%;
661
+ bottom: calc(100% + 8px);
662
+ transform: translateX(-50%);
663
+ padding: 6px 10px;
664
+ border-radius: 6px;
665
+ background: #0f172a;
515
666
  color: #fff;
516
- border: 0;
517
- padding: 8px 16px;
667
+ font-size: 12px;
668
+ font-weight: 600;
669
+ line-height: 1.3;
670
+ letter-spacing: 0.01em;
671
+ white-space: nowrap;
672
+ box-shadow: 0 4px 12px rgba(15, 23, 42, 0.22);
673
+ opacity: 0;
674
+ visibility: hidden;
675
+ pointer-events: none;
676
+ }
677
+
678
+ .eyeon-map-info-modal__map-it-tooltip[data-tooltip]:hover::after,
679
+ .eyeon-map-info-modal__map-it-tooltip[data-tooltip]:focus-within::after {
680
+ opacity: 1;
681
+ visibility: visible;
682
+ }
683
+
684
+ .eyeon-map-info-modal button.eyeon-map-info-modal__map-it,
685
+ .eyeon-map-info-modal button.eyeon-map-info-modal__map-it:hover,
686
+ .eyeon-map-info-modal button.eyeon-map-info-modal__map-it:focus,
687
+ .eyeon-map-info-modal button.eyeon-map-info-modal__map-it:focus-visible,
688
+ .eyeon-map-info-modal button.eyeon-map-info-modal__map-it:active {
689
+ box-sizing: border-box !important;
690
+ flex-shrink: 0;
691
+ align-self: stretch;
692
+ min-height: 34px !important;
693
+ height: 100% !important;
694
+ background: #0763b1 !important;
695
+ background-color: #0763b1 !important;
696
+ color: #fff !important;
697
+ border: 0 !important;
698
+ padding: 0 16px !important;
518
699
  border-radius: 4px;
519
700
  cursor: pointer;
520
701
  font-size: 16px;
521
702
  font-weight: 500;
703
+ line-height: 34px;
522
704
  white-space: nowrap;
705
+ opacity: 1 !important;
523
706
  }
524
707
 
525
- .eyeon-map-info-modal__map-it:disabled {
526
- opacity: 0.45;
708
+ .eyeon-map-info-modal button.eyeon-map-info-modal__map-it:disabled,
709
+ .eyeon-map-info-modal button.eyeon-map-info-modal__map-it:disabled:hover,
710
+ .eyeon-map-info-modal button.eyeon-map-info-modal__map-it:disabled:focus {
711
+ opacity: 0.45 !important;
527
712
  cursor: default;
528
713
  }
529
714
 
530
715
  .eyeon-map-route-change {
531
- position: relative;
716
+ position: absolute;
717
+ top: -21px;
718
+ left: -21px;
532
719
  width: 42px;
533
720
  height: 42px;
534
721
  padding: 0;
535
722
  box-sizing: border-box;
536
- border: 4px solid #ccc;
723
+ border: 3px solid #444444;
537
724
  border-radius: 50%;
538
725
  background: #4ea5ff;
726
+ box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.25);
539
727
  color: #fff;
540
728
  cursor: pointer;
541
729
  font: inherit;
542
730
  }
543
731
 
732
+ .eyeon-map-route-change--forward {
733
+ z-index: 2;
734
+ }
735
+
736
+ .eyeon-map-route-change--back {
737
+ z-index: 1;
738
+ }
739
+
740
+ .eyeon-map-route-change__intent {
741
+ position: absolute;
742
+ right: -4px;
743
+ bottom: -4px;
744
+ display: flex;
745
+ width: 18px;
746
+ height: 18px;
747
+ align-items: center;
748
+ justify-content: center;
749
+ border-radius: 50%;
750
+ background: var(--eyeon-route-change-intent, #444444);
751
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
752
+ color: #fff;
753
+ font-size: 12px;
754
+ font-weight: 700;
755
+ line-height: 1;
756
+ }
757
+
544
758
  .eyeon-map-route-change__icon {
545
759
  display: flex;
546
760
  width: 100%;
547
761
  height: 100%;
548
762
  align-items: center;
549
763
  justify-content: center;
764
+ padding: 4px;
765
+ box-sizing: border-box;
550
766
  font-size: 24px;
551
767
  font-weight: 700;
552
768
  line-height: 1;
@@ -554,36 +770,13 @@
554
770
 
555
771
  .eyeon-map-route-change__icon img {
556
772
  display: block;
557
- width: 75%;
558
- height: 75%;
559
- }
560
-
561
- .eyeon-map-route-change__label {
562
- position: absolute;
563
- top: -12px;
564
- left: 50%;
565
- display: flex;
566
- align-items: center;
567
- padding: 4px 12px;
568
- transform: translate(-50%, -100%);
569
- border-radius: 999px;
570
- background: #fff;
571
- box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.3);
572
- color: #444;
573
- font-size: 14px;
574
- font-weight: 600;
575
- white-space: nowrap;
773
+ width: 100%;
774
+ height: 100%;
576
775
  }
577
776
 
578
- .eyeon-map-route-change__label::before {
579
- position: absolute;
580
- top: calc(100% - 8px);
777
+ .eyeon-map-route-change__tooltip {
581
778
  left: 50%;
582
- width: 12px;
583
- height: 12px;
584
- transform: translateX(-50%) rotate(45deg);
585
- background: #fff;
586
- content: '';
779
+ top: 0;
587
780
  }
588
781
 
589
782
  .eyeon-map-editor {
@@ -598,8 +791,6 @@
598
791
  font-size: 12px;
599
792
  border: 1px solid #e2e8f0;
600
793
  border-radius: 8px;
601
- -webkit-user-select: none;
602
- user-select: none;
603
794
  }
604
795
 
605
796
  .eyeon-map-editor button,
@@ -643,6 +834,14 @@
643
834
  overflow: hidden;
644
835
  border-right: 1px solid #e2e8f0;
645
836
  background: #fff;
837
+ /* Staff copy store names / ids from the rail. Do not put user-select:none on .eyeon-map-editor. */
838
+ -webkit-user-select: text;
839
+ user-select: text;
840
+ }
841
+
842
+ .eyeon-map-rail button {
843
+ -webkit-user-select: text;
844
+ user-select: text;
646
845
  }
647
846
 
648
847
  .eyeon-map-rail__header,
@@ -838,6 +1037,10 @@
838
1037
  margin-top: 0;
839
1038
  }
840
1039
 
1040
+ .eyeon-map-rail__heading--section {
1041
+ margin-top: 21px;
1042
+ }
1043
+
841
1044
  .eyeon-map-rail__row {
842
1045
  display: flex;
843
1046
  justify-content: space-between;
@@ -852,7 +1055,6 @@
852
1055
  padding: 7px 8px;
853
1056
  cursor: pointer;
854
1057
  font-size: 12px;
855
- user-select: none;
856
1058
  }
857
1059
 
858
1060
  .eyeon-map-rail__row-icon {
@@ -1086,8 +1288,8 @@
1086
1288
  border-radius: 6px;
1087
1289
  }
1088
1290
 
1089
- .eyeon-map-rail__field--inline > input:not(.eyeon-map-select__input),
1090
- .eyeon-map-rail__field--inline > select {
1291
+ .eyeon-map-rail__field--inline>input:not(.eyeon-map-select__input),
1292
+ .eyeon-map-rail__field--inline>select {
1091
1293
  font-size: 12px;
1092
1294
  padding: 6px 8px;
1093
1295
  border: 1px solid #e2e8f0;
@@ -1126,6 +1328,8 @@
1126
1328
  min-width: 0;
1127
1329
  min-height: 0;
1128
1330
  overflow: hidden;
1331
+ -webkit-user-select: none;
1332
+ user-select: none;
1129
1333
  }
1130
1334
 
1131
1335
  .eyeon-map-editor__toolbar {
@@ -1399,20 +1603,16 @@
1399
1603
  background-image:
1400
1604
  linear-gradient(var(--eyeon-map-grid-line) 1px, transparent 1px),
1401
1605
  linear-gradient(90deg, var(--eyeon-map-grid-line) 1px, transparent 1px),
1402
- repeating-linear-gradient(
1403
- 45deg,
1606
+ repeating-linear-gradient(45deg,
1404
1607
  var(--eyeon-map-grid-diag-line) 0,
1405
1608
  var(--eyeon-map-grid-diag-line) 1px,
1406
1609
  transparent 1px,
1407
- transparent var(--eyeon-map-grid-diag)
1408
- ),
1409
- repeating-linear-gradient(
1410
- -45deg,
1610
+ transparent var(--eyeon-map-grid-diag)),
1611
+ repeating-linear-gradient(-45deg,
1411
1612
  var(--eyeon-map-grid-diag-line) 0,
1412
1613
  var(--eyeon-map-grid-diag-line) 1px,
1413
1614
  transparent 1px,
1414
- transparent var(--eyeon-map-grid-diag)
1415
- );
1615
+ transparent var(--eyeon-map-grid-diag));
1416
1616
  background-size:
1417
1617
  var(--eyeon-map-grid) var(--eyeon-map-grid),
1418
1618
  var(--eyeon-map-grid) var(--eyeon-map-grid),
@@ -1432,6 +1632,23 @@
1432
1632
  .eyeon-map-canvas__view {
1433
1633
  /* Consumer styles must not move the translate/scale pivot off the SVG origin. */
1434
1634
  transform-origin: 0 0;
1635
+ --map-handle-scale: 1;
1636
+ }
1637
+
1638
+ /* Inverse of live zoom vs last React handle size — see editorHandleScale(). */
1639
+ .eyeon-map-screen-const {
1640
+ transform-box: fill-box;
1641
+ transform-origin: center;
1642
+ transform: scale(var(--map-handle-scale));
1643
+ }
1644
+
1645
+ /*
1646
+ * Route lines keep the React stroke (8/zoom, worldPx) and multiply by the
1647
+ * same live counter-scale as anchors. Do not use non-scaling-stroke — it
1648
+ * ignores viewBox scale and makes lines and the snap halo look huge.
1649
+ */
1650
+ .eyeon-map-screen-stroke {
1651
+ stroke-width: calc(var(--map-stroke-width) * var(--map-handle-scale));
1435
1652
  }
1436
1653
 
1437
1654
  .eyeon-map-canvas__svg.is-adding-route-point,
@@ -1470,7 +1687,7 @@
1470
1687
  padding: 0 0 8px;
1471
1688
  }
1472
1689
 
1473
- .eyeon-map-inspector > .eyeon-map-assign__row {
1690
+ .eyeon-map-inspector>.eyeon-map-assign__row {
1474
1691
  margin-top: 10px;
1475
1692
  }
1476
1693
 
@@ -1513,8 +1730,8 @@
1513
1730
  min-width: 0;
1514
1731
  }
1515
1732
 
1516
- .eyeon-map-assign > .eyeon-map-select,
1517
- .eyeon-map-assign > .eyeon-map-rail__field {
1733
+ .eyeon-map-assign>.eyeon-map-select,
1734
+ .eyeon-map-assign>.eyeon-map-rail__field {
1518
1735
  width: 100%;
1519
1736
  margin-bottom: 0;
1520
1737
  }
@@ -1529,6 +1746,10 @@
1529
1746
  margin-top: 16px;
1530
1747
  }
1531
1748
 
1749
+ .eyeon-map-assign__actions--end {
1750
+ justify-content: flex-end;
1751
+ }
1752
+
1532
1753
  .eyeon-map-assign__copy-wrap {
1533
1754
  display: flex;
1534
1755
  flex-direction: column;
@@ -1670,7 +1891,7 @@
1670
1891
  margin-left: auto;
1671
1892
  }
1672
1893
 
1673
- .eyeon-map-assign__control > input {
1894
+ .eyeon-map-assign__control>input {
1674
1895
  box-sizing: border-box;
1675
1896
  width: 120px;
1676
1897
  min-width: 0;
@@ -1815,12 +2036,10 @@
1815
2036
  }
1816
2037
 
1817
2038
  .eyeon-map-assign__swatch-well.is-transparent {
1818
- background-image: conic-gradient(
1819
- #d1d5db 0.25turn,
1820
- #ffffff 0.25turn 0.5turn,
1821
- #d1d5db 0.5turn 0.75turn,
1822
- #ffffff 0.75turn
1823
- );
2039
+ background-image: conic-gradient(#d1d5db 0.25turn,
2040
+ #ffffff 0.25turn 0.5turn,
2041
+ #d1d5db 0.5turn 0.75turn,
2042
+ #ffffff 0.75turn);
1824
2043
  background-size: 8px 8px;
1825
2044
  }
1826
2045
 
@@ -1925,7 +2144,7 @@
1925
2144
  outline: 1px dashed #0763b1;
1926
2145
  }
1927
2146
 
1928
- .eyeon-map-floors__row.is-placeholder > * {
2147
+ .eyeon-map-floors__row.is-placeholder>* {
1929
2148
  opacity: 0;
1930
2149
  }
1931
2150
 
@@ -2400,7 +2619,6 @@
2400
2619
  justify-content: center;
2401
2620
  height: 100%;
2402
2621
  }
2403
-
2404
2622
  .eyeon-map-select {
2405
2623
  position: relative;
2406
2624
  display: block;
@@ -2454,6 +2672,18 @@
2454
2672
  border-color: #cbd5e1;
2455
2673
  }
2456
2674
 
2675
+ .eyeon-map-select button.eyeon-map-select__trigger,
2676
+ .eyeon-map-select button.eyeon-map-select__trigger:hover,
2677
+ .eyeon-map-select button.eyeon-map-select__trigger:focus,
2678
+ .eyeon-map-select button.eyeon-map-select__trigger:focus-visible,
2679
+ .eyeon-map-select button.eyeon-map-select__trigger:active {
2680
+ background: #fff !important;
2681
+ background-color: #fff !important;
2682
+ color: #0f172a !important;
2683
+ box-shadow: none !important;
2684
+ outline: none !important;
2685
+ }
2686
+
2457
2687
  .eyeon-map-select__trigger.is-open {
2458
2688
  border-color: #0763b1;
2459
2689
  }
@@ -2493,7 +2723,15 @@
2493
2723
  font-weight: 400;
2494
2724
  }
2495
2725
 
2496
- .eyeon-map-select__chevron-btn {
2726
+ /*
2727
+ Hello Elementor / Elementor kit `button:hover|focus` would otherwise
2728
+ recolor this chevron to the site accent. Keep the arrow slate.
2729
+ */
2730
+ .eyeon-map-select button.eyeon-map-select__chevron-btn,
2731
+ .eyeon-map-select button.eyeon-map-select__chevron-btn:hover,
2732
+ .eyeon-map-select button.eyeon-map-select__chevron-btn:focus,
2733
+ .eyeon-map-select button.eyeon-map-select__chevron-btn:focus-visible,
2734
+ .eyeon-map-select button.eyeon-map-select__chevron-btn:active {
2497
2735
  position: absolute;
2498
2736
  top: 0;
2499
2737
  right: 0;
@@ -2505,9 +2743,12 @@
2505
2743
  width: 28px;
2506
2744
  margin: 0;
2507
2745
  padding: 0;
2508
- border: 0;
2509
- background: transparent;
2510
- color: inherit;
2746
+ border: 0 !important;
2747
+ background: transparent !important;
2748
+ background-color: transparent !important;
2749
+ color: #64748b !important;
2750
+ box-shadow: none !important;
2751
+ outline: none !important;
2511
2752
  cursor: pointer;
2512
2753
  }
2513
2754
 
@@ -2516,12 +2757,22 @@
2516
2757
  font-weight: 400;
2517
2758
  }
2518
2759
 
2519
- .eyeon-map-select__chevron {
2760
+ .eyeon-map-select__chevron,
2761
+ .eyeon-map-select button.eyeon-map-select__chevron-btn:hover .eyeon-map-select__chevron,
2762
+ .eyeon-map-select button.eyeon-map-select__chevron-btn:focus .eyeon-map-select__chevron,
2763
+ .eyeon-map-select__trigger:hover .eyeon-map-select__chevron {
2520
2764
  flex-shrink: 0;
2521
- color: #64748b;
2765
+ color: #64748b !important;
2766
+ fill: none !important;
2767
+ stroke: currentColor !important;
2522
2768
  opacity: 0.7;
2523
2769
  }
2524
2770
 
2771
+ .eyeon-map-select__chevron path {
2772
+ stroke: currentColor !important;
2773
+ fill: none !important;
2774
+ }
2775
+
2525
2776
  .eyeon-map-select__trigger[aria-expanded='true'] .eyeon-map-select__chevron,
2526
2777
  .eyeon-map-select__trigger.is-open .eyeon-map-select__chevron {
2527
2778
  transform: rotate(180deg);
@@ -2553,19 +2804,36 @@
2553
2804
  min-width: 0;
2554
2805
  }
2555
2806
 
2556
- .eyeon-map-select__option {
2807
+ /*
2808
+ Option rows are <button>s portaled to document.body. Host themes restyle
2809
+ `button:hover` to white/gray text (hard to read). Keep labels black and
2810
+ use only a light-gray background on hover.
2811
+ */
2812
+ .eyeon-map-select__menu button.eyeon-map-select__option,
2813
+ .eyeon-map-select__menu button.eyeon-map-select__option:hover,
2814
+ .eyeon-map-select__menu button.eyeon-map-select__option:focus,
2815
+ .eyeon-map-select__menu button.eyeon-map-select__option:focus-visible,
2816
+ .eyeon-map-select__menu button.eyeon-map-select__option:active,
2817
+ .eyeon-map-select button.eyeon-map-select__option,
2818
+ .eyeon-map-select button.eyeon-map-select__option:hover,
2819
+ .eyeon-map-select button.eyeon-map-select__option:focus,
2820
+ .eyeon-map-select button.eyeon-map-select__option:focus-visible,
2821
+ .eyeon-map-select button.eyeon-map-select__option:active {
2557
2822
  display: flex;
2558
2823
  align-items: center;
2559
2824
  gap: 8px;
2560
2825
  width: 100%;
2561
2826
  padding: 7px 10px;
2562
- border: 0;
2827
+ border: 0 !important;
2563
2828
  border-radius: 6px;
2564
- background: transparent;
2565
- color: #0f172a;
2829
+ background: transparent !important;
2830
+ background-color: transparent !important;
2831
+ color: #000 !important;
2566
2832
  font: inherit;
2567
2833
  font-size: 12px;
2568
2834
  text-align: left;
2835
+ box-shadow: none !important;
2836
+ outline: none !important;
2569
2837
  cursor: pointer;
2570
2838
  }
2571
2839
 
@@ -2587,28 +2855,42 @@
2587
2855
  gap: 8px;
2588
2856
  min-width: 0;
2589
2857
  flex: 1;
2858
+ color: #000 !important;
2590
2859
  }
2591
2860
 
2592
- .eyeon-map-select__option-hint {
2593
- color: #64748b;
2861
+ .eyeon-map-select__menu button.eyeon-map-select__option:hover .eyeon-map-select__option-copy,
2862
+ .eyeon-map-select__menu button.eyeon-map-select__option:hover .eyeon-map-select__option-copy > span:not(.eyeon-map-select__option-hint) {
2863
+ color: #000 !important;
2864
+ }
2865
+
2866
+ .eyeon-map-select__option-hint,
2867
+ .eyeon-map-select__menu button.eyeon-map-select__option:hover .eyeon-map-select__option-hint,
2868
+ .eyeon-map-select__menu button.eyeon-map-select__option:focus .eyeon-map-select__option-hint {
2869
+ color: #334155 !important;
2594
2870
  font-size: 11px;
2595
2871
  font-weight: 600;
2596
2872
  flex-shrink: 0;
2597
2873
  }
2598
2874
 
2599
- .eyeon-map-select__option:hover {
2600
- background: #f1f5f9;
2875
+ .eyeon-map-select__menu button.eyeon-map-select__option:hover,
2876
+ .eyeon-map-select__menu button.eyeon-map-select__option.is-highlight:not(.is-active),
2877
+ .eyeon-map-select button.eyeon-map-select__option:hover,
2878
+ .eyeon-map-select button.eyeon-map-select__option.is-highlight:not(.is-active) {
2879
+ background: #f1f5f9 !important;
2880
+ background-color: #f1f5f9 !important;
2881
+ color: #000 !important;
2601
2882
  }
2602
2883
 
2603
- .eyeon-map-select__option.is-active {
2604
- background: #e0f2fe;
2884
+ .eyeon-map-select__menu button.eyeon-map-select__option.is-active,
2885
+ .eyeon-map-select__menu button.eyeon-map-select__option.is-active:hover,
2886
+ .eyeon-map-select button.eyeon-map-select__option.is-active,
2887
+ .eyeon-map-select button.eyeon-map-select__option.is-active:hover {
2888
+ background: #f1f5f9 !important;
2889
+ background-color: #f1f5f9 !important;
2890
+ color: #000 !important;
2605
2891
  font-weight: 600;
2606
2892
  }
2607
2893
 
2608
- .eyeon-map-select__option.is-highlight:not(.is-active) {
2609
- background: #f1f5f9;
2610
- }
2611
-
2612
2894
  .eyeon-map-select__empty {
2613
2895
  padding: 8px 10px;
2614
2896
  color: #94a3b8;