@mapvx/web-components 0.0.21 → 0.0.22

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, t as t$1, T } from './route-view-totems-Cu8sG0kp.js';
2
+ import { R as RouteAnimationController, M as MarkerController } from './utils-4sQ3ZnpP.js';
3
3
 
4
4
  /**
5
5
  * @license
@@ -42,11 +42,11 @@ 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 __decorateClass$4 = (decorators, target, key, kind) => {
50
50
  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$3(target, key) : target;
51
51
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
52
52
  if (decorator = decorators[i])
@@ -105,6 +105,7 @@ let CustomMap = class extends i$2 {
105
105
  }
106
106
  }
107
107
  async updated() {
108
+ this.updateAttributes();
108
109
  if (!this.sdkData?.sdk) return;
109
110
  const {
110
111
  sdk,
@@ -228,6 +229,22 @@ let CustomMap = class extends i$2 {
228
229
  })
229
230
  );
230
231
  }
232
+ updateAttributes() {
233
+ const parentElement = this.closest("map-view-with-modal");
234
+ if (parentElement) {
235
+ const compactMode = parentElement.hasAttribute("compact-mode");
236
+ const zoomSize = parentElement.getAttribute("zoom-size") || "normal";
237
+ if (compactMode) {
238
+ this.setAttribute("compact-mode", "");
239
+ console.log("Modo compacto activado");
240
+ } else {
241
+ this.removeAttribute("compact-mode");
242
+ console.log("Modo compacto desactivado");
243
+ }
244
+ this.setAttribute("zoom-size", zoomSize);
245
+ console.log("Tamaño de zoom aplicado:", zoomSize);
246
+ }
247
+ }
231
248
  render() {
232
249
  return x`<div id="map"></div>
233
250
  <div id="modal" style="display: ${this.modalData ? "flex" : "none"}">
@@ -238,11 +255,97 @@ let CustomMap = class extends i$2 {
238
255
  </div>`;
239
256
  }
240
257
  };
241
- CustomMap.styles = [r(style$3)];
242
- __decorateClass$3([
258
+ CustomMap.styles = [
259
+ i$3`
260
+ :host {
261
+ height: 100%;
262
+ width: 100%;
263
+ }
264
+ `,
265
+ r(style$3),
266
+ i$3`
267
+ :host([compact-mode]) {
268
+ border-radius: 12px !important;
269
+ overflow: hidden !important;
270
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
271
+ border: 2px solid #e9ecef !important;
272
+ }
273
+
274
+ :host([compact-mode]) #map {
275
+ border-radius: 12px !important;
276
+ }
277
+
278
+ :host([compact-mode]) .maplibregl-canvas {
279
+ border-radius: 12px !important;
280
+ }
281
+
282
+ :host([zoom-size='small']) {
283
+ --zoom-button-size: 32px;
284
+ --zoom-button-margin: 8px;
285
+ }
286
+
287
+ :host([zoom-size='normal']) {
288
+ --zoom-button-size: 40px;
289
+ --zoom-button-margin: 12px;
290
+ }
291
+
292
+ :host([zoom-size='large']) {
293
+ --zoom-button-size: 48px;
294
+ --zoom-button-margin: 16px;
295
+ }
296
+
297
+ /* Aplicar variables CSS a los botones de zoom */
298
+ :host([zoom-size='small']) .maplibregl-ctrl {
299
+ width: 32px !important;
300
+ height: 58px !important;
301
+ bottom: 8px !important;
302
+ right: 8px !important;
303
+ }
304
+
305
+ :host([zoom-size='normal']) .maplibregl-ctrl {
306
+ width: 40px !important;
307
+ height: 72px !important;
308
+ bottom: 12px !important;
309
+ right: 12px !important;
310
+ }
311
+
312
+ :host([zoom-size='large']) .maplibregl-ctrl {
313
+ width: 48px !important;
314
+ height: 86px !important;
315
+ bottom: 16px !important;
316
+ right: 16px !important;
317
+ }
318
+
319
+ /* Ajustar tamaño de fuente según el tamaño del botón */
320
+ :host([zoom-size='small']) .maplibregl-ctrl button {
321
+ font-size: 14px !important;
322
+ }
323
+
324
+ :host([zoom-size='normal']) .maplibregl-ctrl button {
325
+ font-size: 18px !important;
326
+ }
327
+
328
+ :host([zoom-size='large']) .maplibregl-ctrl button {
329
+ font-size: 22px !important;
330
+ }
331
+
332
+ :host([zoom-size='small']) .maplibregl-ctrl-group button::after {
333
+ font-size: 14px !important;
334
+ }
335
+
336
+ :host([zoom-size='normal']) .maplibregl-ctrl-group button::after {
337
+ font-size: 18px !important;
338
+ }
339
+
340
+ :host([zoom-size='large']) .maplibregl-ctrl-group button::after {
341
+ font-size: 22px !important;
342
+ }
343
+ `
344
+ ];
345
+ __decorateClass$4([
243
346
  c({ context: sdkContext, subscribe: true })
244
347
  ], CustomMap.prototype, "sdkData", 2);
245
- CustomMap = __decorateClass$3([
348
+ CustomMap = __decorateClass$4([
246
349
  t$1("custom-map")
247
350
  ], CustomMap);
248
351
 
@@ -264,20 +367,40 @@ const t={ATTRIBUTE:1},e$1=t=>(...e)=>({_$litDirective$:t,values:e});class i{cons
264
367
  * SPDX-License-Identifier: BSD-3-Clause
265
368
  */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
369
 
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
370
  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;
371
+ var __decorateClass$3 = (decorators, target, key, kind) => {
372
+ var result = void 0 ;
273
373
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
274
374
  if (decorator = decorators[i])
275
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
276
- if (kind && result) __defProp$2(target, key, result);
375
+ result = (decorator(target, key, result) ) || result;
376
+ if (result) __defProp$2(target, key, result);
277
377
  return result;
278
378
  };
279
- let FloorSelector = class extends i$2 {
280
- _selectFloor(floorKey) {
379
+ class BaseFloorSelector extends i$2 {
380
+ getFloors() {
381
+ if (!this.sdkData) return [];
382
+ const { parentPlace, generalConfig } = this.sdkData;
383
+ let floors = parentPlace?.innerFloors || [];
384
+ if (generalConfig?.enabledFloors?.length > 0) {
385
+ floors = floors.filter((floor) => generalConfig.enabledFloors.includes(floor.key));
386
+ }
387
+ return floors;
388
+ }
389
+ getCurrentFloor() {
390
+ return this.sdkData?.currentFloor;
391
+ }
392
+ getEnabledFloors() {
393
+ return this.sdkData?.enabledFloors || [];
394
+ }
395
+ isFloorActive(floor) {
396
+ const currentFloor = this.getCurrentFloor();
397
+ return floor.key === currentFloor?.key;
398
+ }
399
+ isFloorEnabled(floor) {
400
+ const enabledFloors = this.getEnabledFloors();
401
+ return enabledFloors.some((f) => f.key === floor.key);
402
+ }
403
+ selectFloor(floorKey) {
281
404
  this.dispatchEvent(
282
405
  new CustomEvent("floorChange", {
283
406
  detail: floorKey,
@@ -286,21 +409,35 @@ let FloorSelector = class extends i$2 {
286
409
  })
287
410
  );
288
411
  }
412
+ getFloorDisplayName(floor) {
413
+ return floor.name || floor.title || floor.key;
414
+ }
415
+ }
416
+ __decorateClass$3([
417
+ c({ context: sdkContext, subscribe: true })
418
+ ], BaseFloorSelector.prototype, "sdkData");
419
+
420
+ 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}}";
421
+
422
+ var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
423
+ var __decorateClass$2 = (decorators, target, key, kind) => {
424
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc$2(target, key) : target;
425
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
426
+ if (decorator = decorators[i])
427
+ result = (decorator(result)) || result;
428
+ return result;
429
+ };
430
+ let FloorSelector = class extends BaseFloorSelector {
289
431
  render() {
290
432
  if (!this.sdkData) {
291
433
  return x`<div>No data</div>`;
292
434
  }
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
- }
435
+ const floors = this.getFloors();
299
436
  return x`
300
437
  <div class="floor-selector-container">
301
438
  ${floors.map((floor) => {
302
- const isActive = floor.key === currentFloor?.key;
303
- const isEnabled = enabledFloors?.some((f) => f.key === floor.key) || false;
439
+ const isActive = this.isFloorActive(floor);
440
+ const isEnabled = this.isFloorEnabled(floor);
304
441
  return x`
305
442
  <div class="floor-btn-container">
306
443
  <button
@@ -309,9 +446,9 @@ let FloorSelector = class extends i$2 {
309
446
  active: isActive,
310
447
  disabled: !isActive && !isEnabled
311
448
  })}
312
- @click=${() => isEnabled ? this._selectFloor(floor.key) : null}
449
+ @click=${() => isEnabled ? this.selectFloor(floor.key) : null}
313
450
  >
314
- <span>${floor.name}</span>
451
+ <span>${this.getFloorDisplayName(floor)}</span>
315
452
  </button>
316
453
  </div>
317
454
  `;
@@ -321,9 +458,6 @@ let FloorSelector = class extends i$2 {
321
458
  }
322
459
  };
323
460
  FloorSelector.styles = [r(style$2)];
324
- __decorateClass$2([
325
- c({ context: sdkContext, subscribe: true })
326
- ], FloorSelector.prototype, "sdkData", 2);
327
461
  FloorSelector = __decorateClass$2([
328
462
  t$1("floor-selector")
329
463
  ], FloorSelector);
@@ -3648,5 +3782,5 @@ const routeOptions = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProper
3648
3782
  get RouteOptions () { return RouteOptions; }
3649
3783
  }, Symbol.toStringTag, { value: 'Module' }));
3650
3784
 
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
3785
+ export { BaseFloorSelector as B, customMap as c, e, floorSelector as f, i$1 as i, qrModal as q, routeOptions as r, sdkContext as s };
3786
+ //# sourceMappingURL=components-BGe90NOX.js.map
@@ -0,0 +1,274 @@
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-Cu8sG0kp.js';
2
+ import { S as SDKController } from './utils-4sQ3ZnpP.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;
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
+ this.sdkController = new SDKController(this);
75
+ this.analyticsController = AnalyticsController.getInstance();
76
+ this.currentFloorId = "";
77
+ }
78
+ get apiKey() {
79
+ return __privateGet(this, _apiKey);
80
+ }
81
+ set apiKey(_) {
82
+ __privateSet(this, _apiKey, _);
83
+ }
84
+ get parentPlaceId() {
85
+ return __privateGet(this, _parentPlaceId);
86
+ }
87
+ set parentPlaceId(_) {
88
+ __privateSet(this, _parentPlaceId, _);
89
+ }
90
+ get locale() {
91
+ return __privateGet(this, _locale);
92
+ }
93
+ set locale(_) {
94
+ __privateSet(this, _locale, _);
95
+ }
96
+ get placeId() {
97
+ return __privateGet(this, _placeId);
98
+ }
99
+ set placeId(_) {
100
+ __privateSet(this, _placeId, _);
101
+ }
102
+ get compactMode() {
103
+ return __privateGet(this, _compactMode);
104
+ }
105
+ set compactMode(_) {
106
+ __privateSet(this, _compactMode, _);
107
+ }
108
+ get zoomButtonSize() {
109
+ return __privateGet(this, _zoomButtonSize);
110
+ }
111
+ set zoomButtonSize(_) {
112
+ __privateSet(this, _zoomButtonSize, _);
113
+ }
114
+ get showFloorSelector() {
115
+ return __privateGet(this, _showFloorSelector);
116
+ }
117
+ set showFloorSelector(_) {
118
+ __privateSet(this, _showFloorSelector, _);
119
+ }
120
+ get floorSelectorPosition() {
121
+ return __privateGet(this, _floorSelectorPosition);
122
+ }
123
+ set floorSelectorPosition(_) {
124
+ __privateSet(this, _floorSelectorPosition, _);
125
+ }
126
+ get floorSelectorBorderColor() {
127
+ return __privateGet(this, _floorSelectorBorderColor);
128
+ }
129
+ set floorSelectorBorderColor(_) {
130
+ __privateSet(this, _floorSelectorBorderColor, _);
131
+ }
132
+ get floorSelectorBorderWidth() {
133
+ return __privateGet(this, _floorSelectorBorderWidth);
134
+ }
135
+ set floorSelectorBorderWidth(_) {
136
+ __privateSet(this, _floorSelectorBorderWidth, _);
137
+ }
138
+ async _loadComponents() {
139
+ await Promise.all([loadCustomMap(), loadCompactFloorSelector()]);
140
+ }
141
+ async firstUpdated() {
142
+ await this._loadComponents();
143
+ {
144
+ this.analyticsController.initialize("map-view-with-modal");
145
+ RollbarController.initialize("map-view-with-modal");
146
+ }
147
+ }
148
+ _mapReadyHandler() {
149
+ this.sdkController.setMapReady(true);
150
+ this.analyticsController.trackEvent("map_ready", this.baseParams());
151
+ }
152
+ _cameraInitializedHandler() {
153
+ this.sdkController.setCameraInitialized(true);
154
+ this.analyticsController.trackEvent("camera_initialized", this.baseParams());
155
+ }
156
+ _updateFloorHandler(event) {
157
+ const floorId = event.detail;
158
+ if (this.currentFloorId === floorId) {
159
+ return;
160
+ }
161
+ this.currentFloorId = floorId;
162
+ this.sdkController.setFloor(floorId);
163
+ const params = this.baseParams();
164
+ params["floor_id"] = floorId;
165
+ this.analyticsController.trackEvent("floor_change", params);
166
+ }
167
+ baseParams() {
168
+ return {
169
+ apiKey: this.apiKey,
170
+ locale: this.locale,
171
+ parentPlaceId: this.parentPlaceId,
172
+ placeId: this.placeId,
173
+ host: window.location.host,
174
+ pathname: window.location.pathname,
175
+ search: window.location.search,
176
+ hash: window.location.hash,
177
+ referrer: document.referrer,
178
+ userAgent: navigator.userAgent,
179
+ screenWidth: window.innerWidth
180
+ };
181
+ }
182
+ getFloorSelectorPositionStyles() {
183
+ const positions = {
184
+ "top-left": "top: 20px; left: 20px;",
185
+ "top-center": "top: 20px; left: 50%; transform: translateX(-50%);",
186
+ "top-right": "top: 20px; right: 20px;",
187
+ "center-left": "top: 50%; left: 20px; transform: translateY(-50%);",
188
+ "center-right": "top: 50%; right: 20px; transform: translateY(-50%);",
189
+ "bottom-left": "bottom: 20px; left: 20px;",
190
+ "bottom-center": "bottom: 20px; left: 50%; transform: translateX(-50%);",
191
+ "bottom-right": "bottom: 20px; right: 20px;"
192
+ };
193
+ return positions[this.floorSelectorPosition] || positions["top-left"];
194
+ }
195
+ updated(changedProperties) {
196
+ if (this.apiKey && this.locale && this.parentPlaceId && (changedProperties.has("apiKey") || changedProperties.has("locale") || changedProperties.has("parentPlaceId"))) {
197
+ this.sdkController.initialize(this.apiKey, this.locale, this.parentPlaceId);
198
+ }
199
+ if (this.placeId && changedProperties.has("placeId")) {
200
+ this.sdkController.setOriginAndDestination("", this.placeId);
201
+ }
202
+ }
203
+ render() {
204
+ return x`
205
+ <div class="route-container" style="height: 100%; width: 100%; position: relative;">
206
+ <custom-map
207
+ class="map-container"
208
+ ?compact-mode=${this.compactMode}
209
+ zoom-size=${this.zoomButtonSize}
210
+ @mapReady=${this._mapReadyHandler}
211
+ @cameraInitialized=${this._cameraInitializedHandler}
212
+ @floorChange=${this._updateFloorHandler}
213
+ ></custom-map>
214
+
215
+ ${this.showFloorSelector ? x`
216
+ <!-- Compact floor selector -->
217
+ <div style="position: absolute; ${this.getFloorSelectorPositionStyles()} z-index: 1000;">
218
+ <compact-floor-selector
219
+ @floorChange=${this._updateFloorHandler}
220
+ border-color=${this.floorSelectorBorderColor}
221
+ border-width=${this.floorSelectorBorderWidth}
222
+ ></compact-floor-selector>
223
+ </div>
224
+ ` : ""}
225
+ </div>
226
+ `;
227
+ }
228
+ };
229
+ _apiKey = /* @__PURE__ */ new WeakMap();
230
+ _parentPlaceId = /* @__PURE__ */ new WeakMap();
231
+ _locale = /* @__PURE__ */ new WeakMap();
232
+ _placeId = /* @__PURE__ */ new WeakMap();
233
+ _compactMode = /* @__PURE__ */ new WeakMap();
234
+ _zoomButtonSize = /* @__PURE__ */ new WeakMap();
235
+ _showFloorSelector = /* @__PURE__ */ new WeakMap();
236
+ _floorSelectorPosition = /* @__PURE__ */ new WeakMap();
237
+ _floorSelectorBorderColor = /* @__PURE__ */ new WeakMap();
238
+ _floorSelectorBorderWidth = /* @__PURE__ */ new WeakMap();
239
+ __decorateClass([
240
+ n({ type: String })
241
+ ], MapViewWithModal.prototype, "apiKey", 1);
242
+ __decorateClass([
243
+ n({ type: String })
244
+ ], MapViewWithModal.prototype, "parentPlaceId", 1);
245
+ __decorateClass([
246
+ n({ type: String })
247
+ ], MapViewWithModal.prototype, "locale", 1);
248
+ __decorateClass([
249
+ n({ type: String })
250
+ ], MapViewWithModal.prototype, "placeId", 1);
251
+ __decorateClass([
252
+ n({ type: Boolean })
253
+ ], MapViewWithModal.prototype, "compactMode", 1);
254
+ __decorateClass([
255
+ n({ type: String })
256
+ ], MapViewWithModal.prototype, "zoomButtonSize", 1);
257
+ __decorateClass([
258
+ n({ type: Boolean })
259
+ ], MapViewWithModal.prototype, "showFloorSelector", 1);
260
+ __decorateClass([
261
+ n({ type: String })
262
+ ], MapViewWithModal.prototype, "floorSelectorPosition", 1);
263
+ __decorateClass([
264
+ n({ type: String })
265
+ ], MapViewWithModal.prototype, "floorSelectorBorderColor", 1);
266
+ __decorateClass([
267
+ n({ type: Number })
268
+ ], MapViewWithModal.prototype, "floorSelectorBorderWidth", 1);
269
+ MapViewWithModal = __decorateClass([
270
+ t("map-view-with-modal")
271
+ ], MapViewWithModal);
272
+
273
+ export { MapViewWithModal as M };
274
+ //# sourceMappingURL=map-view-with-modal-CwE9e04X.js.map
@@ -1,4 +1,4 @@
1
- import { S as SDKController } from './utils-FyhZTuD9.js';
1
+ import { S as SDKController } from './utils-4sQ3ZnpP.js';
2
2
 
3
3
  /**
4
4
  * @license
@@ -184,10 +184,11 @@ class AnalyticsController {
184
184
  }
185
185
  }
186
186
 
187
- const loadCustomMap = () => import('./components-BX-NvkMO.js').then(n => n.c);
188
- const loadFloorSelector = () => import('./components-BX-NvkMO.js').then(n => n.f);
189
- const loadQrModal = () => import('./components-BX-NvkMO.js').then(n => n.q);
190
- const loadRouteOptions = () => import('./components-BX-NvkMO.js').then(n => n.r);
187
+ const loadCustomMap = () => import('./components-BGe90NOX.js').then(n => n.c);
188
+ const loadFloorSelector = () => import('./components-BGe90NOX.js').then(n => n.f);
189
+ const loadCompactFloorSelector = () => import('./compact-floor-selector-D-LPjNVW.js');
190
+ const loadQrModal = () => import('./components-BGe90NOX.js').then(n => n.q);
191
+ const loadRouteOptions = () => import('./components-BGe90NOX.js').then(n => n.r);
191
192
 
192
193
  var __defProp = Object.defineProperty;
193
194
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -411,5 +412,5 @@ RouteViewTotems = __decorateClass([
411
412
  t("route-view-totems")
412
413
  ], RouteViewTotems);
413
414
 
414
- export { AnalyticsController as A, RollbarController as R, T, i$3 as a, RouteViewTotems as b, i, loadCustomMap as l, n, r$3 as r, t, x };
415
- //# sourceMappingURL=route-view-totems-DXCPYztz.js.map
415
+ export { AnalyticsController as A, RollbarController as R, T, i$3 as a, loadCompactFloorSelector as b, RouteViewTotems as c, i, loadCustomMap as l, n, r$3 as r, t, x };
416
+ //# sourceMappingURL=route-view-totems-Cu8sG0kp.js.map
@@ -1,5 +1,5 @@
1
- import { i, s as sdkContext } from './components-BX-NvkMO.js';
2
- import { R as RollbarController } from './route-view-totems-DXCPYztz.js';
1
+ import { i, s as sdkContext } from './components-BGe90NOX.js';
2
+ import { R as RollbarController } from './route-view-totems-Cu8sG0kp.js';
3
3
 
4
4
  var dist = {exports: {}};
5
5
 
@@ -12548,8 +12548,11 @@ class SDKController {
12548
12548
  this.loadRoute(originId, destinationId, !!accessibleRoute);
12549
12549
  }
12550
12550
  setFloor(floorId) {
12551
- const { parentPlace } = this.contextProvider.value;
12551
+ const { parentPlace, currentFloor } = this.contextProvider.value;
12552
12552
  if (!parentPlace) return;
12553
+ if (currentFloor?.key === floorId) {
12554
+ return;
12555
+ }
12553
12556
  const floor = parentPlace.innerFloors.find((floor2) => floor2.key === floorId);
12554
12557
  if (!floor) return;
12555
12558
  this.contextProvider.setValue({
@@ -12593,7 +12596,7 @@ class SDKController {
12593
12596
  }
12594
12597
  }
12595
12598
 
12596
- const popupCSS = "@keyframes fadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.popup{background:#fff;filter:drop-shadow(0 1px 4px rgba(0,0,0,.2));padding:15px;border-radius:10px;border:1px solid #cccccc;min-width:180px;position:relative;transform:translateY(-50%)}.popup:after{content:\"\";position:absolute;bottom:-10px;left:50%;transform:translate(-50%);width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid white;z-index:1}.popup:before{content:\"\";position:absolute;bottom:-11px;left:50%;transform:translate(-50%);width:0;height:0;border-left:11px solid transparent;border-right:11px solid transparent;border-top:11px solid #cccccc;z-index:0}.popup-content{display:flex;flex-direction:column;gap:4px}.popup-logo{width:100%;object-fit:contain;object-position:center;height:60px;overflow:hidden;align-self:center;max-width:100%}.popup-name{position:relative;color:#000;text-align:center;letter-spacing:-1.1719905853px;margin-top:10px;max-width:250px;font:700 23px/23px Poppins,-apple-system,Roboto,Helvetica,sans-serif}.popup-category{color:#555;position:relative;color:#000;text-align:center;letter-spacing:-.5859952927px;white-space:nowrap;margin:5px 0 20px;font:400 12px/14px Poppins,-apple-system,Roboto,Helvetica,sans-serif}@media (max-width: 991px){.popup-category{margin-bottom:40px;white-space:initial}}";
12599
+ const popupCSS = "@keyframes fadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.popup{background:#fff;filter:drop-shadow(0 1px 4px rgba(0,0,0,.2));padding:15px;border-radius:10px;border:1px solid #cccccc;min-width:180px;position:relative;transform:translateY(-50%)}@media (max-width: 768px){.popup{padding:8px 0;min-width:160px;border-radius:8px}}.popup:after{content:\"\";position:absolute;bottom:-10px;left:50%;transform:translate(-50%);width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px solid white;z-index:1}.popup:before{content:\"\";position:absolute;bottom:-11px;left:50%;transform:translate(-50%);width:0;height:0;border-left:11px solid transparent;border-right:11px solid transparent;border-top:11px solid #cccccc;z-index:0}.popup-content{display:flex;flex-direction:column;gap:4px}.popup-logo{width:100%;object-fit:contain;object-position:center;height:60px;overflow:hidden;align-self:center;max-width:250px;max-height:100px}@media (max-width: 768px){.popup-logo{max-height:40px;max-width:120px}}.popup-name{position:relative;color:#000;text-align:center;letter-spacing:-1.1719905853px;margin-top:10px;max-width:250px;font:700 23px/23px Poppins,-apple-system,Roboto,Helvetica,sans-serif}@media (max-width: 768px){.popup-name{font-size:18px;line-height:18px;margin-top:6px;max-width:200px}}.popup-category{color:#555;position:relative;color:#000;text-align:center;letter-spacing:-.5859952927px;white-space:nowrap;margin:5px 0 20px;font:400 12px/14px Poppins,-apple-system,Roboto,Helvetica,sans-serif}@media (max-width: 991px){.popup-category{margin-bottom:40px;white-space:initial}}@media (max-width: 768px){.popup-category{margin-bottom:10px;white-space:initial;font-size:11px;line-height:13px}}";
12597
12600
 
12598
12601
  class PopupFactory {
12599
12602
  static create(data) {
@@ -12747,7 +12750,7 @@ class MarkerController {
12747
12750
  });
12748
12751
  this.map?.setPlacesAsSelected(
12749
12752
  this.markersIds.map((m) => m.id),
12750
- "#3146bc"
12753
+ "#3A0D7F"
12751
12754
  );
12752
12755
  const currentFloor = this.map?.getCurrentFloor();
12753
12756
  const coordinates = this.markersIds.filter((m) => m.floorId === currentFloor).map((m) => m.coordinate);
@@ -12947,4 +12950,4 @@ class RouteAnimationController {
12947
12950
  }
12948
12951
 
12949
12952
  export { MarkerController as M, RouteAnimationController as R, SDKController as S };
12950
- //# sourceMappingURL=utils-FyhZTuD9.js.map
12953
+ //# sourceMappingURL=utils-4sQ3ZnpP.js.map
package/dist/es/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { b as RouteViewTotems } from './assets/route-view-totems-DXCPYztz.js';
2
- export { M as MapViewWithModal } from './assets/map-view-with-modal-Dpg6IjBv.js';
1
+ export { c as RouteViewTotems } from './assets/route-view-totems-Cu8sG0kp.js';
2
+ export { M as MapViewWithModal } from './assets/map-view-with-modal-CwE9e04X.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1,3 +1,3 @@
1
- export { b as RouteViewTotems } from './assets/route-view-totems-DXCPYztz.js';
2
- import './assets/utils-FyhZTuD9.js';
1
+ export { c as RouteViewTotems } from './assets/route-view-totems-Cu8sG0kp.js';
2
+ import './assets/utils-4sQ3ZnpP.js';
3
3
  //# sourceMappingURL=route-view-totems.js.map