@mapvx/web-components 0.0.21 → 0.0.23

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.
@@ -1,5 +1,5 @@
1
- import { i as i$2, x, r, t as t$1, T } from './route-view-totems-DXCPYztz.js';
2
- import { R as RouteAnimationController, M as MarkerController } from './utils-FyhZTuD9.js';
1
+ import { i as i$2, x, r, a as i$3, n as n$1, t as t$1, T } from './route-view-totems-z3hCCsGS.js';
2
+ import { R as RouteAnimationController, M as MarkerController } from './utils-HInBaX5h.js';
3
3
 
4
4
  /**
5
5
  * @license
@@ -42,11 +42,14 @@ class s{get value(){return this.o}set value(s){this.setValue(s);}setValue(s,t=fa
42
42
 
43
43
  const sdkContext = n("lazarillo-sdk");
44
44
 
45
- const style$3 = ":host{display:block;height:100%;width:100%}#map,.maplibregl-canvas{width:100%;height:100%}.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 20px 50px 0}.maplibregl-ctrl{bottom:80px;right:40px;border:3px solid #000;padding:0;border-radius:100px;background:#fff;overflow:hidden;display:flex;flex-direction:column;width:70px;height:129px}.maplibregl-ctrl button{background-color:transparent;box-shadow:none;border-radius:0;margin:0;font-size:31px;font-weight:400;width:100%;height:100%;color:#000;transition:background-color .4s ease,color .4s ease}.maplibregl-ctrl button:hover{background-color:#000!important;color:#fff}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in{border-bottom:3px solid #000}.maplibregl-ctrl-group .maplibregl-ctrl-icon{background:none!important;display:none!important}.maplibregl-ctrl-group button.maplibregl-ctrl-zoom-in:after{content:\"+\";display:block;font-size:32px;font-weight:600;line-height:1;text-align:center}.maplibregl-ctrl-group button.maplibregl-ctrl-zoom-out:after{content:\"–\";display:block;font-size:32px;font-weight:600;line-height:1;text-align:center}#modal{position:absolute;width:100%;height:100%;background:#0003;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;justify-items:center;top:0;left:0;z-index:100}.modal-content{min-width:100px;min-height:100px;background-color:#fff;border:1px solid #000;border-radius:10px;padding:10px;width:fit-content;height:fit-content;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}.modal-text{font-family:Poppins,sans-serif;font-size:20pt;font-weight:500;color:#000}.modal-icon{height:100px;align-self:center}.maplibregl-marker:has(.popup){z-index:10}.maplibregl-marker:not(:has(.popup)){z-index:5}.maplibregl-ctrl-compass{visibility:hidden;height:0px}";
45
+ const style$3 = ":host{display:block;height:100%;width:100%}#map,.maplibregl-canvas{width:100%;height:100%}.maplibregl-ctrl-bottom-right .maplibregl-ctrl{float:right;margin:0 20px 50px 0}.maplibregl-ctrl{bottom:var(--zoom-button-margin, 80px);right:var(--zoom-button-margin, 40px);border:3px solid #000;padding:0;border-radius:100px;background:#fff;overflow:hidden;display:flex;flex-direction:column;width:var(--zoom-button-size, 70px);height:calc(var(--zoom-button-size, 70px) * 1.8)}.maplibregl-ctrl button{background-color:transparent;box-shadow:none;border-radius:0;margin:0;font-size:calc(var(--zoom-button-size, 70px) * .45);font-weight:400;width:100%;height:100%;color:#000;transition:background-color .4s ease,color .4s ease}.maplibregl-ctrl button:hover{background-color:#000!important;color:#fff}.maplibregl-ctrl button.maplibregl-ctrl-zoom-in{border-bottom:3px solid #000}.maplibregl-ctrl-group .maplibregl-ctrl-icon{background:none!important;display:none!important}.maplibregl-ctrl-group button.maplibregl-ctrl-zoom-in:after{content:\"+\";display:block;font-size:calc(var(--zoom-button-size, 70px) * .46);font-weight:600;line-height:1;text-align:center}.maplibregl-ctrl-group button.maplibregl-ctrl-zoom-out:after{content:\"–\";display:block;font-size:calc(var(--zoom-button-size, 70px) * .46);font-weight:600;line-height:1;text-align:center}#modal{position:absolute;width:100%;height:100%;background:#0003;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;justify-items:center;top:0;left:0;z-index:100}.modal-content{min-width:100px;min-height:100px;background-color:#fff;border:1px solid #000;border-radius:10px;padding:10px;width:fit-content;height:fit-content;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}@media (max-width: 768px){#modal{align-items:flex-start;padding-top:60px}.modal-content{max-width:90%;margin:0 auto;border-radius:12px;box-shadow:0 4px 12px #00000026}}:host([compact-mode]){border-radius:12px!important;overflow:hidden!important;box-shadow:0 4px 12px #00000026!important}:host([compact-mode]) #map{border-radius:12px}:host([compact-mode]) .maplibregl-canvas{border-radius:12px}.modal-text{font-family:Poppins,sans-serif;font-size:20pt;font-weight:500;color:#000}.modal-icon{height:100px;align-self:center}.maplibregl-marker:has(.popup){z-index:10}.maplibregl-marker:not(:has(.popup)){z-index:5}.maplibregl-ctrl-compass{visibility:hidden;height:0px}";
46
46
 
47
47
  var __defProp$3 = Object.defineProperty;
48
48
  var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
49
- var __decorateClass$3 = (decorators, target, key, kind) => {
49
+ var __typeError = (msg) => {
50
+ throw TypeError(msg);
51
+ };
52
+ var __decorateClass$4 = (decorators, target, key, kind) => {
50
53
  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;
51
54
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
52
55
  if (decorator = decorators[i])
@@ -54,9 +57,16 @@ var __decorateClass$3 = (decorators, target, key, kind) => {
54
57
  if (kind && result) __defProp$3(target, key, result);
55
58
  return result;
56
59
  };
60
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
61
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
62
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
63
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
64
+ var _zoomBorderColor, _zoomBorderWidth;
57
65
  let CustomMap = class extends i$2 {
58
66
  constructor() {
59
67
  super();
68
+ __privateAdd(this, _zoomBorderColor, "#251660");
69
+ __privateAdd(this, _zoomBorderWidth, 1);
60
70
  this.mapReady = false;
61
71
  this.routeAnimationHandlers = {
62
72
  onRouteAnimationFinished: () => {
@@ -97,6 +107,18 @@ let CustomMap = class extends i$2 {
97
107
  this.routeAnimationController = new RouteAnimationController(this, this.routeAnimationHandlers);
98
108
  this.markerController = new MarkerController(this);
99
109
  }
110
+ get zoomBorderColor() {
111
+ return __privateGet(this, _zoomBorderColor);
112
+ }
113
+ set zoomBorderColor(_) {
114
+ __privateSet(this, _zoomBorderColor, _);
115
+ }
116
+ get zoomBorderWidth() {
117
+ return __privateGet(this, _zoomBorderWidth);
118
+ }
119
+ set zoomBorderWidth(_) {
120
+ __privateSet(this, _zoomBorderWidth, _);
121
+ }
100
122
  async firstUpdated() {
101
123
  if (this.shadowRoot) {
102
124
  const style2 = document.createElement("style");
@@ -105,6 +127,7 @@ let CustomMap = class extends i$2 {
105
127
  }
106
128
  }
107
129
  async updated() {
130
+ this.updateAttributes();
108
131
  if (!this.sdkData?.sdk) return;
109
132
  const {
110
133
  sdk,
@@ -228,6 +251,26 @@ let CustomMap = class extends i$2 {
228
251
  })
229
252
  );
230
253
  }
254
+ updateAttributes() {
255
+ const parentElement = this.closest("map-view-with-modal");
256
+ if (parentElement) {
257
+ const compactMode = parentElement.hasAttribute("compact-mode");
258
+ const zoomSize = parentElement.getAttribute("zoom-size") || "normal";
259
+ if (compactMode) {
260
+ this.setAttribute("compact-mode", "");
261
+ console.log("Modo compacto activado");
262
+ } else {
263
+ this.removeAttribute("compact-mode");
264
+ console.log("Modo compacto desactivado");
265
+ }
266
+ this.setAttribute("zoom-size", zoomSize);
267
+ console.log("Tamaño de zoom aplicado:", zoomSize);
268
+ const zoomBorderColor = this.getAttribute("zoom-border-color") || this.zoomBorderColor;
269
+ const zoomBorderWidth = parseInt(this.getAttribute("zoom-border-width") || this.zoomBorderWidth.toString());
270
+ this.style.setProperty("--zoom-border-color", zoomBorderColor);
271
+ this.style.setProperty("--zoom-border-width", `${zoomBorderWidth}px`);
272
+ }
273
+ }
231
274
  render() {
232
275
  return x`<div id="map"></div>
233
276
  <div id="modal" style="display: ${this.modalData ? "flex" : "none"}">
@@ -238,11 +281,125 @@ let CustomMap = class extends i$2 {
238
281
  </div>`;
239
282
  }
240
283
  };
241
- CustomMap.styles = [r(style$3)];
242
- __decorateClass$3([
284
+ _zoomBorderColor = new WeakMap();
285
+ _zoomBorderWidth = new WeakMap();
286
+ CustomMap.styles = [
287
+ i$3`
288
+ :host {
289
+ height: 100%;
290
+ width: 100%;
291
+ }
292
+ `,
293
+ r(style$3),
294
+ i$3`
295
+ :host([compact-mode]) {
296
+ border-radius: 12px !important;
297
+ overflow: hidden !important;
298
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
299
+ border: 2px solid #e9ecef !important;
300
+ }
301
+
302
+ :host([compact-mode]) #map {
303
+ border-radius: 12px !important;
304
+ }
305
+
306
+ :host([compact-mode]) .maplibregl-canvas {
307
+ border-radius: 12px !important;
308
+ }
309
+
310
+ :host([zoom-size='small']) {
311
+ --zoom-button-size: 32px;
312
+ --zoom-button-margin: 8px;
313
+ }
314
+
315
+ :host([zoom-size='normal']) {
316
+ --zoom-button-size: 40px;
317
+ --zoom-button-margin: 12px;
318
+ }
319
+
320
+ :host([zoom-size='large']) {
321
+ --zoom-button-size: 48px;
322
+ --zoom-button-margin: 16px;
323
+ }
324
+
325
+ /* Aplicar variables CSS a los botones de zoom */
326
+ :host([zoom-size='small']) .maplibregl-ctrl {
327
+ width: 32px !important;
328
+ height: 58px !important;
329
+ bottom: 8px !important;
330
+ right: 8px !important;
331
+ }
332
+
333
+ :host([zoom-size='normal']) .maplibregl-ctrl {
334
+ width: 40px !important;
335
+ height: 72px !important;
336
+ bottom: 12px !important;
337
+ right: 12px !important;
338
+ }
339
+
340
+ :host([zoom-size='large']) .maplibregl-ctrl {
341
+ width: 48px !important;
342
+ height: 86px !important;
343
+ bottom: 16px !important;
344
+ right: 16px !important;
345
+ }
346
+
347
+ /* Ajustar tamaño de fuente según el tamaño del botón */
348
+ :host([zoom-size='small']) .maplibregl-ctrl button {
349
+ font-size: 14px !important;
350
+ }
351
+
352
+ :host([zoom-size='normal']) .maplibregl-ctrl button {
353
+ font-size: 18px !important;
354
+ }
355
+
356
+ :host([zoom-size='large']) .maplibregl-ctrl button {
357
+ font-size: 22px !important;
358
+ }
359
+
360
+ :host([zoom-size='small']) .maplibregl-ctrl-group button::after {
361
+ font-size: 14px !important;
362
+ }
363
+
364
+ :host([zoom-size='normal']) .maplibregl-ctrl-group button::after {
365
+ font-size: 18px !important;
366
+ }
367
+
368
+ :host([zoom-size='large']) .maplibregl-ctrl-group button::after {
369
+ font-size: 22px !important;
370
+ }
371
+
372
+ /* Styles for zoom button border */
373
+ :host([zoom-border-color]) .maplibregl-ctrl {
374
+ border: var(--zoom-border-width, 1px) solid var(--zoom-border-color, #251660) !important;
375
+ }
376
+
377
+ :host([zoom-border-color]) .maplibregl-ctrl button {
378
+ border: none;
379
+ border-radius: unset;
380
+ }
381
+
382
+ /* Add divider between zoom buttons */
383
+ :host([zoom-border-color]) .maplibregl-ctrl button:first-child {
384
+ border-bottom: 1px solid var(--zoom-border-color, #251660) !important;
385
+ }
386
+
387
+ :host([zoom-border-color]) .maplibregl-ctrl button:hover {
388
+ background-color: var(--zoom-border-color, #251660) !important;
389
+ color: #fff !important;
390
+ }
391
+ `
392
+ ];
393
+ __decorateClass$4([
243
394
  c({ context: sdkContext, subscribe: true })
244
395
  ], CustomMap.prototype, "sdkData", 2);
245
- CustomMap = __decorateClass$3([
396
+ __decorateClass$4([
397
+ n$1({ type: String })
398
+ ], CustomMap.prototype, "zoomBorderColor", 1);
399
+ __decorateClass$4([
400
+ n$1({ type: Number })
401
+ ], CustomMap.prototype, "zoomBorderWidth", 1);
402
+ CustomMap = __decorateClass$4([
246
403
  t$1("custom-map")
247
404
  ], CustomMap);
248
405
 
@@ -264,20 +421,40 @@ const t={ATTRIBUTE:1},e$1=t=>(...e)=>({_$litDirective$:t,values:e});class i{cons
264
421
  * SPDX-License-Identifier: BSD-3-Clause
265
422
  */const e=e$1(class extends i{constructor(t$1){if(super(t$1),t$1.type!==t.ATTRIBUTE||"class"!==t$1.name||t$1.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return " "+Object.keys(t).filter((s=>t[s])).join(" ")+" "}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(" ").split(/\s/).filter((t=>""!==t))));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)));}return T}});
266
423
 
267
- const style$2 = ":host{position:absolute;top:0;right:10px}.floor-selector-container{display:flex;flex-direction:row;background:#fff;border-radius:0 0 30px 30px;box-shadow:0 0 15px #00000026;padding:0 6px;gap:8px;height:65px}.btn-floor{height:auto;width:100px;vertical-align:middle;font-size:small!important;word-wrap:break-word!important;font-family:Poppins;font-weight:600;font-size:16pt;border-radius:10px;border:0;box-shadow:0 0 15px #00000026}@media only screen and (max-width: 576px){.btn-floor{padding:6px;width:70px;height:auto;font-size:small!important}}.floor-btn-container:hover .floor-btn:not(.active):not(.disabled){border-radius:0 0 999px 999px;background:#000;color:#fff}.floor-btn{transition:background .2s ease,color .2s ease,transform .2s ease,opacity .2s ease;position:relative;background:transparent;border:none;outline:none;font-family:Poppins,sans-serif;font-weight:600;font-size:13px;border-radius:0 0 30px 30px;cursor:pointer;transition:all .2s ease;height:100%;min-width:65px;display:flex;align-items:center;justify-content:center;color:#000;z-index:1;span{min-width:50px}}.floor-btn.disabled{color:#c5c3c3;background:transparent;pointer-events:none;-webkit-tap-highlight-color:transparent;user-select:none}.floor-btn.active{color:#fff;background:transparent;z-index:2}.floor-btn.active:after{content:\"\";position:absolute;inset:0 2px;border-radius:0 0 999px 999px;background:#000;color:#fff;z-index:1}.floor-btn.active:before{content:\"\";position:absolute;inset:0 -3px -3px;border-radius:0 0 999px 999px;background:linear-gradient(45.8deg,#f5a 10.03%,#b850c9 25.23%,#6572d6 48.67%,#4eaeb8 72.74%);z-index:0}.floor-btn.active span{z-index:10}@media (max-width: 1100px){.floor-btn-container:hover .floor-btn:not(.active):not(.disabled){border-radius:999px 0 0 999px;background:#000;color:#fff}.floor-selector-container{right:0;position:fixed;top:50%;transform:translateY(-50%);display:flex;flex-direction:column-reverse;border-radius:30px 0 0 30px;min-width:87px;max-height:100%;height:auto;padding:0;gap:0}.floor-btn-container{padding:0;width:100%}.floor-btn{width:100%;padding:20px;border-radius:999px 0 0 999px}.floor-btn.active:after{position:absolute;inset:2px 0 2px 2px;border-radius:999px 0 0 999px}.floor-btn.active:before{inset:-3px 0 -3px -3px;border-radius:999px 0 0 999px}}";
268
-
269
424
  var __defProp$2 = Object.defineProperty;
270
- var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
271
- var __decorateClass$2 = (decorators, target, key, kind) => {
272
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
425
+ var __decorateClass$3 = (decorators, target, key, kind) => {
426
+ var result = void 0 ;
273
427
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
274
428
  if (decorator = decorators[i])
275
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
276
- if (kind && result) __defProp$2(target, key, result);
429
+ result = (decorator(target, key, result) ) || result;
430
+ if (result) __defProp$2(target, key, result);
277
431
  return result;
278
432
  };
279
- let FloorSelector = class extends i$2 {
280
- _selectFloor(floorKey) {
433
+ class BaseFloorSelector extends i$2 {
434
+ getFloors() {
435
+ if (!this.sdkData) return [];
436
+ const { parentPlace, generalConfig } = this.sdkData;
437
+ let floors = parentPlace?.innerFloors || [];
438
+ if (generalConfig?.enabledFloors?.length > 0) {
439
+ floors = floors.filter((floor) => generalConfig.enabledFloors.includes(floor.key));
440
+ }
441
+ return floors;
442
+ }
443
+ getCurrentFloor() {
444
+ return this.sdkData?.currentFloor;
445
+ }
446
+ getEnabledFloors() {
447
+ return this.sdkData?.enabledFloors || [];
448
+ }
449
+ isFloorActive(floor) {
450
+ const currentFloor = this.getCurrentFloor();
451
+ return floor.key === currentFloor?.key;
452
+ }
453
+ isFloorEnabled(floor) {
454
+ const enabledFloors = this.getEnabledFloors();
455
+ return enabledFloors.some((f) => f.key === floor.key);
456
+ }
457
+ selectFloor(floorKey) {
281
458
  this.dispatchEvent(
282
459
  new CustomEvent("floorChange", {
283
460
  detail: floorKey,
@@ -286,21 +463,35 @@ let FloorSelector = class extends i$2 {
286
463
  })
287
464
  );
288
465
  }
466
+ getFloorDisplayName(floor) {
467
+ return floor.name || floor.title || floor.key;
468
+ }
469
+ }
470
+ __decorateClass$3([
471
+ c({ context: sdkContext, subscribe: true })
472
+ ], BaseFloorSelector.prototype, "sdkData");
473
+
474
+ const style$2 = ":host{position:absolute;top:0;right:10px}.floor-selector-container{display:flex;flex-direction:row;background:#fff;border-radius:0 0 30px 30px;box-shadow:0 0 15px #00000026;padding:0 6px;gap:8px;height:65px}.btn-floor{height:auto;width:100px;vertical-align:middle;font-size:small!important;word-wrap:break-word!important;font-family:Poppins;font-weight:600;font-size:16pt;border-radius:10px;border:0;box-shadow:0 0 15px #00000026}@media only screen and (max-width: 576px){.btn-floor{padding:6px;width:70px;height:auto;font-size:small!important}}.floor-btn-container:hover .floor-btn:not(.active):not(.disabled){border-radius:0 0 999px 999px;background:#000;color:#fff}.floor-btn{transition:background .2s ease,color .2s ease,transform .2s ease,opacity .2s ease;position:relative;background:transparent;border:none;outline:none;font-family:Poppins,sans-serif;font-weight:600;font-size:13px;border-radius:0 0 30px 30px;cursor:pointer;transition:all .2s ease;height:100%;min-width:65px;display:flex;align-items:center;justify-content:center;color:#000;z-index:1;span{min-width:50px}}.floor-btn.disabled{color:#c5c3c3;background:transparent;pointer-events:none;-webkit-tap-highlight-color:transparent;user-select:none}.floor-btn.active{color:#fff;background:transparent;z-index:2}.floor-btn.active:after{content:\"\";position:absolute;inset:0 2px;border-radius:0 0 999px 999px;background:#000;color:#fff;z-index:1}.floor-btn.active:before{content:\"\";position:absolute;inset:0 -3px -3px;border-radius:0 0 999px 999px;background:linear-gradient(45.8deg,#f5a 10.03%,#b850c9 25.23%,#6572d6 48.67%,#4eaeb8 72.74%);z-index:0}.floor-btn.active span{z-index:10}@media (max-width: 1100px){.floor-btn-container:hover .floor-btn:not(.active):not(.disabled){border-radius:999px 0 0 999px;background:#000;color:#fff}.floor-selector-container{right:0;position:fixed;top:50%;transform:translateY(-50%);display:flex;flex-direction:column-reverse;border-radius:30px 0 0 30px;min-width:87px;max-height:100%;height:auto;padding:0;gap:0}.floor-btn-container{padding:0;width:100%}.floor-btn{width:100%;padding:20px;border-radius:999px 0 0 999px}.floor-btn.active:after{position:absolute;inset:2px 0 2px 2px;border-radius:999px 0 0 999px}.floor-btn.active:before{inset:-3px 0 -3px -3px;border-radius:999px 0 0 999px}}";
475
+
476
+ var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
477
+ var __decorateClass$2 = (decorators, target, key, kind) => {
478
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
479
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
480
+ if (decorator = decorators[i])
481
+ result = (decorator(result)) || result;
482
+ return result;
483
+ };
484
+ let FloorSelector = class extends BaseFloorSelector {
289
485
  render() {
290
486
  if (!this.sdkData) {
291
487
  return x`<div>No data</div>`;
292
488
  }
293
- const { currentFloor, parentPlace, enabledFloors } = this.sdkData;
294
- let floors = parentPlace?.innerFloors || [];
295
- const generalConfig = this.sdkData?.generalConfig?.enabledFloors || [];
296
- if (generalConfig.length > 0) {
297
- floors = floors.filter((floor) => generalConfig.includes(floor.key));
298
- }
489
+ const floors = this.getFloors();
299
490
  return x`
300
491
  <div class="floor-selector-container">
301
492
  ${floors.map((floor) => {
302
- const isActive = floor.key === currentFloor?.key;
303
- const isEnabled = enabledFloors?.some((f) => f.key === floor.key) || false;
493
+ const isActive = this.isFloorActive(floor);
494
+ const isEnabled = this.isFloorEnabled(floor);
304
495
  return x`
305
496
  <div class="floor-btn-container">
306
497
  <button
@@ -309,9 +500,9 @@ let FloorSelector = class extends i$2 {
309
500
  active: isActive,
310
501
  disabled: !isActive && !isEnabled
311
502
  })}
312
- @click=${() => isEnabled ? this._selectFloor(floor.key) : null}
503
+ @click=${() => isEnabled ? this.selectFloor(floor.key) : null}
313
504
  >
314
- <span>${floor.name}</span>
505
+ <span>${this.getFloorDisplayName(floor)}</span>
315
506
  </button>
316
507
  </div>
317
508
  `;
@@ -321,9 +512,6 @@ let FloorSelector = class extends i$2 {
321
512
  }
322
513
  };
323
514
  FloorSelector.styles = [r(style$2)];
324
- __decorateClass$2([
325
- c({ context: sdkContext, subscribe: true })
326
- ], FloorSelector.prototype, "sdkData", 2);
327
515
  FloorSelector = __decorateClass$2([
328
516
  t$1("floor-selector")
329
517
  ], FloorSelector);
@@ -3648,5 +3836,5 @@ const routeOptions = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProper
3648
3836
  get RouteOptions () { return RouteOptions; }
3649
3837
  }, Symbol.toStringTag, { value: 'Module' }));
3650
3838
 
3651
- export { customMap as c, floorSelector as f, i$1 as i, qrModal as q, routeOptions as r, sdkContext as s };
3652
- //# sourceMappingURL=components-BX-NvkMO.js.map
3839
+ export { BaseFloorSelector as B, customMap as c, e, floorSelector as f, i$1 as i, qrModal as q, routeOptions as r, sdkContext as s };
3840
+ //# sourceMappingURL=components-C542vOSv.js.map
@@ -0,0 +1,310 @@
1
+ import { i, a as i$1, A as AnalyticsController, l as loadCustomMap, b as loadCompactFloorSelector, R as RollbarController, x, n, t } from './route-view-totems-z3hCCsGS.js';
2
+ import { S as SDKController } from './utils-HInBaX5h.js';
3
+
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __typeError = (msg) => {
7
+ throw TypeError(msg);
8
+ };
9
+ var __decorateClass = (decorators, target, key, kind) => {
10
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
11
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
12
+ if (decorator = decorators[i])
13
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
14
+ if (kind && result) __defProp(target, key, result);
15
+ return result;
16
+ };
17
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
18
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
19
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
20
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
21
+ var _apiKey, _parentPlaceId, _locale, _placeId, _compactMode, _zoomButtonSize, _showFloorSelector, _floorSelectorPosition, _floorSelectorBorderColor, _floorSelectorBorderWidth, _floorSelectorDisabled, _zoomButtonBorderColor, _zoomButtonBorderWidth;
22
+ let MapViewWithModal = class extends i {
23
+ constructor() {
24
+ super(...arguments);
25
+ this.styles = [
26
+ i$1`
27
+ :host {
28
+ display: block;
29
+ height: 100%;
30
+ width: 100%;
31
+ }
32
+ `,
33
+ i$1`
34
+ .map-container {
35
+ height: 100%;
36
+ width: 100%;
37
+ }
38
+ `,
39
+ i$1`
40
+ :host([compact-mode]) .map-container {
41
+ border-radius: 12px;
42
+ overflow: hidden;
43
+ }
44
+ `,
45
+ i$1`
46
+ :host([zoom-size='small']) ::slotted(*) {
47
+ --zoom-button-size: 32px;
48
+ --zoom-button-margin: 8px;
49
+ }
50
+ `,
51
+ i$1`
52
+ :host([zoom-size='normal']) ::slotted(*) {
53
+ --zoom-button-size: 40px;
54
+ --zoom-button-margin: 12px;
55
+ }
56
+ `,
57
+ i$1`
58
+ :host([zoom-size='large']) ::slotted(*) {
59
+ --zoom-button-size: 48px;
60
+ --zoom-button-margin: 16px;
61
+ }
62
+ `
63
+ ];
64
+ __privateAdd(this, _apiKey, "");
65
+ __privateAdd(this, _parentPlaceId, "");
66
+ __privateAdd(this, _locale, "es");
67
+ __privateAdd(this, _placeId, "");
68
+ __privateAdd(this, _compactMode, false);
69
+ __privateAdd(this, _zoomButtonSize, "normal");
70
+ __privateAdd(this, _showFloorSelector, true);
71
+ __privateAdd(this, _floorSelectorPosition, "top-left");
72
+ __privateAdd(this, _floorSelectorBorderColor, "#251660");
73
+ __privateAdd(this, _floorSelectorBorderWidth, 1);
74
+ __privateAdd(this, _floorSelectorDisabled, false);
75
+ __privateAdd(this, _zoomButtonBorderColor, "#251660");
76
+ __privateAdd(this, _zoomButtonBorderWidth, 1);
77
+ this.sdkController = new SDKController(this);
78
+ this.analyticsController = AnalyticsController.getInstance();
79
+ this.currentFloorId = "";
80
+ }
81
+ get apiKey() {
82
+ return __privateGet(this, _apiKey);
83
+ }
84
+ set apiKey(_) {
85
+ __privateSet(this, _apiKey, _);
86
+ }
87
+ get parentPlaceId() {
88
+ return __privateGet(this, _parentPlaceId);
89
+ }
90
+ set parentPlaceId(_) {
91
+ __privateSet(this, _parentPlaceId, _);
92
+ }
93
+ get locale() {
94
+ return __privateGet(this, _locale);
95
+ }
96
+ set locale(_) {
97
+ __privateSet(this, _locale, _);
98
+ }
99
+ get placeId() {
100
+ return __privateGet(this, _placeId);
101
+ }
102
+ set placeId(_) {
103
+ __privateSet(this, _placeId, _);
104
+ }
105
+ get compactMode() {
106
+ return __privateGet(this, _compactMode);
107
+ }
108
+ set compactMode(_) {
109
+ __privateSet(this, _compactMode, _);
110
+ }
111
+ get zoomButtonSize() {
112
+ return __privateGet(this, _zoomButtonSize);
113
+ }
114
+ set zoomButtonSize(_) {
115
+ __privateSet(this, _zoomButtonSize, _);
116
+ }
117
+ get showFloorSelector() {
118
+ return __privateGet(this, _showFloorSelector);
119
+ }
120
+ set showFloorSelector(_) {
121
+ __privateSet(this, _showFloorSelector, _);
122
+ }
123
+ get floorSelectorPosition() {
124
+ return __privateGet(this, _floorSelectorPosition);
125
+ }
126
+ set floorSelectorPosition(_) {
127
+ __privateSet(this, _floorSelectorPosition, _);
128
+ }
129
+ get floorSelectorBorderColor() {
130
+ return __privateGet(this, _floorSelectorBorderColor);
131
+ }
132
+ set floorSelectorBorderColor(_) {
133
+ __privateSet(this, _floorSelectorBorderColor, _);
134
+ }
135
+ get floorSelectorBorderWidth() {
136
+ return __privateGet(this, _floorSelectorBorderWidth);
137
+ }
138
+ set floorSelectorBorderWidth(_) {
139
+ __privateSet(this, _floorSelectorBorderWidth, _);
140
+ }
141
+ get floorSelectorDisabled() {
142
+ return __privateGet(this, _floorSelectorDisabled);
143
+ }
144
+ set floorSelectorDisabled(_) {
145
+ __privateSet(this, _floorSelectorDisabled, _);
146
+ }
147
+ get zoomButtonBorderColor() {
148
+ return __privateGet(this, _zoomButtonBorderColor);
149
+ }
150
+ set zoomButtonBorderColor(_) {
151
+ __privateSet(this, _zoomButtonBorderColor, _);
152
+ }
153
+ get zoomButtonBorderWidth() {
154
+ return __privateGet(this, _zoomButtonBorderWidth);
155
+ }
156
+ set zoomButtonBorderWidth(_) {
157
+ __privateSet(this, _zoomButtonBorderWidth, _);
158
+ }
159
+ async _loadComponents() {
160
+ await Promise.all([loadCustomMap(), loadCompactFloorSelector()]);
161
+ }
162
+ async firstUpdated() {
163
+ await this._loadComponents();
164
+ {
165
+ this.analyticsController.initialize("map-view-with-modal");
166
+ RollbarController.initialize("map-view-with-modal");
167
+ }
168
+ }
169
+ _mapReadyHandler() {
170
+ this.sdkController.setMapReady(true);
171
+ this.analyticsController.trackEvent("map_ready", this.baseParams());
172
+ }
173
+ _cameraInitializedHandler() {
174
+ this.sdkController.setCameraInitialized(true);
175
+ this.analyticsController.trackEvent("camera_initialized", this.baseParams());
176
+ }
177
+ _updateFloorHandler(event) {
178
+ const floorId = event.detail;
179
+ if (this.currentFloorId === floorId) {
180
+ return;
181
+ }
182
+ this.currentFloorId = floorId;
183
+ this.sdkController.setFloor(floorId);
184
+ const params = this.baseParams();
185
+ params["floor_id"] = floorId;
186
+ this.analyticsController.trackEvent("floor_change", params);
187
+ }
188
+ baseParams() {
189
+ return {
190
+ apiKey: this.apiKey,
191
+ locale: this.locale,
192
+ parentPlaceId: this.parentPlaceId,
193
+ placeId: this.placeId,
194
+ host: window.location.host,
195
+ pathname: window.location.pathname,
196
+ search: window.location.search,
197
+ hash: window.location.hash,
198
+ referrer: document.referrer,
199
+ userAgent: navigator.userAgent,
200
+ screenWidth: window.innerWidth
201
+ };
202
+ }
203
+ getFloorSelectorPositionStyles() {
204
+ const positions = {
205
+ "top-left": "top: 20px; left: 20px;",
206
+ "top-center": "top: 20px; left: 50%; transform: translateX(-50%);",
207
+ "top-right": "top: 20px; right: 20px;",
208
+ "center-left": "top: 50%; left: 20px; transform: translateY(-50%);",
209
+ "center-right": "top: 50%; right: 20px; transform: translateY(-50%);",
210
+ "bottom-left": "bottom: 20px; left: 20px;",
211
+ "bottom-center": "bottom: 20px; left: 50%; transform: translateX(-50%);",
212
+ "bottom-right": "bottom: 20px; right: 20px;"
213
+ };
214
+ return positions[this.floorSelectorPosition] || positions["top-left"];
215
+ }
216
+ updated(changedProperties) {
217
+ if (this.apiKey && this.locale && this.parentPlaceId && (changedProperties.has("apiKey") || changedProperties.has("locale") || changedProperties.has("parentPlaceId"))) {
218
+ this.sdkController.initialize(this.apiKey, this.locale, this.parentPlaceId);
219
+ }
220
+ if (this.placeId && changedProperties.has("placeId")) {
221
+ this.sdkController.setOriginAndDestination("", this.placeId);
222
+ }
223
+ }
224
+ render() {
225
+ return x`
226
+ <div class="route-container" style="height: 100%; width: 100%; position: relative;">
227
+ <custom-map
228
+ class="map-container"
229
+ ?compact-mode=${this.compactMode}
230
+ zoom-size=${this.zoomButtonSize}
231
+ zoom-border-color=${this.zoomButtonBorderColor}
232
+ zoom-border-width=${this.zoomButtonBorderWidth}
233
+ @mapReady=${this._mapReadyHandler}
234
+ @cameraInitialized=${this._cameraInitializedHandler}
235
+ @floorChange=${this._updateFloorHandler}
236
+ ></custom-map>
237
+
238
+ ${this.showFloorSelector ? x`
239
+ <!-- Compact floor selector -->
240
+ <div style="position: absolute; ${this.getFloorSelectorPositionStyles()} z-index: 1000;">
241
+ <compact-floor-selector
242
+ @floorChange=${this._updateFloorHandler}
243
+ border-color=${this.floorSelectorBorderColor}
244
+ border-width=${this.floorSelectorBorderWidth}
245
+ ?disabled=${this.floorSelectorDisabled}
246
+ ></compact-floor-selector>
247
+ </div>
248
+ ` : ""}
249
+ </div>
250
+ `;
251
+ }
252
+ };
253
+ _apiKey = /* @__PURE__ */ new WeakMap();
254
+ _parentPlaceId = /* @__PURE__ */ new WeakMap();
255
+ _locale = /* @__PURE__ */ new WeakMap();
256
+ _placeId = /* @__PURE__ */ new WeakMap();
257
+ _compactMode = /* @__PURE__ */ new WeakMap();
258
+ _zoomButtonSize = /* @__PURE__ */ new WeakMap();
259
+ _showFloorSelector = /* @__PURE__ */ new WeakMap();
260
+ _floorSelectorPosition = /* @__PURE__ */ new WeakMap();
261
+ _floorSelectorBorderColor = /* @__PURE__ */ new WeakMap();
262
+ _floorSelectorBorderWidth = /* @__PURE__ */ new WeakMap();
263
+ _floorSelectorDisabled = /* @__PURE__ */ new WeakMap();
264
+ _zoomButtonBorderColor = /* @__PURE__ */ new WeakMap();
265
+ _zoomButtonBorderWidth = /* @__PURE__ */ new WeakMap();
266
+ __decorateClass([
267
+ n({ type: String })
268
+ ], MapViewWithModal.prototype, "apiKey", 1);
269
+ __decorateClass([
270
+ n({ type: String })
271
+ ], MapViewWithModal.prototype, "parentPlaceId", 1);
272
+ __decorateClass([
273
+ n({ type: String })
274
+ ], MapViewWithModal.prototype, "locale", 1);
275
+ __decorateClass([
276
+ n({ type: String })
277
+ ], MapViewWithModal.prototype, "placeId", 1);
278
+ __decorateClass([
279
+ n({ type: Boolean })
280
+ ], MapViewWithModal.prototype, "compactMode", 1);
281
+ __decorateClass([
282
+ n({ type: String })
283
+ ], MapViewWithModal.prototype, "zoomButtonSize", 1);
284
+ __decorateClass([
285
+ n({ type: Boolean })
286
+ ], MapViewWithModal.prototype, "showFloorSelector", 1);
287
+ __decorateClass([
288
+ n({ type: String })
289
+ ], MapViewWithModal.prototype, "floorSelectorPosition", 1);
290
+ __decorateClass([
291
+ n({ type: String })
292
+ ], MapViewWithModal.prototype, "floorSelectorBorderColor", 1);
293
+ __decorateClass([
294
+ n({ type: Number })
295
+ ], MapViewWithModal.prototype, "floorSelectorBorderWidth", 1);
296
+ __decorateClass([
297
+ n({ type: Boolean })
298
+ ], MapViewWithModal.prototype, "floorSelectorDisabled", 1);
299
+ __decorateClass([
300
+ n({ type: String })
301
+ ], MapViewWithModal.prototype, "zoomButtonBorderColor", 1);
302
+ __decorateClass([
303
+ n({ type: Number })
304
+ ], MapViewWithModal.prototype, "zoomButtonBorderWidth", 1);
305
+ MapViewWithModal = __decorateClass([
306
+ t("map-view-with-modal")
307
+ ], MapViewWithModal);
308
+
309
+ export { MapViewWithModal as M };
310
+ //# sourceMappingURL=map-view-with-modal-C-vcHaJc.js.map