@expofp/floorplan 3.25.0 → 3.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/browser/{Button-_J1eNxua.js → Button-4H7Y1oIu.js} +5 -5
  2. package/dist/browser/{CookieConsent-j0awTNGB.js → CookieConsent-CoWK7bx_.js} +7 -7
  3. package/dist/browser/{Debug-BAPQwOXG.js → Debug-D-XXdsjt.js} +7 -7
  4. package/dist/browser/{Demo-B0TxEACn.js → Demo-c-7YAVSW.js} +9 -9
  5. package/dist/browser/{Free-81RG6a4l.js → Free-MaZo2dmm.js} +9 -9
  6. package/dist/browser/{GalleryContainer-CVplb5Pc.js → GalleryContainer-DOnJhv4I.js} +10 -10
  7. package/dist/browser/{GpsLoader-oni76hrd.js → GpsLoader-f-s46e4s.js} +10 -10
  8. package/dist/browser/{KioskStore-Cdb5PpF9.js → KioskStore-B5S4imVV.js} +4 -4
  9. package/dist/browser/{MaplibreAdapter-BfpIMgGx.js → MaplibreAdapter-C848yf6N.js} +9 -9
  10. package/dist/browser/{ModalContainer-pEV9ZmkZ.js → ModalContainer-aakS4vkf.js} +10 -10
  11. package/dist/browser/{PermissionNotice-CoXJjFWX.js → PermissionNotice-Bnrs8YcD.js} +6 -6
  12. package/dist/browser/{SetKioskMode-BUFIP2qd.js → SetKioskMode-DzZZyS6g.js} +8 -8
  13. package/dist/browser/{ShowKiosk-BHGX8mhm.js → ShowKiosk-O_w7S73S.js} +10 -10
  14. package/dist/browser/{ViewerMenuPanel-Cr826oJ6.js → ViewerMenuPanel-Db9A3MbQ.js} +9 -9
  15. package/dist/browser/{add-debug-secret-listener-C0cY_TFM.js → add-debug-secret-listener-B7IVgt3l.js} +1 -1
  16. package/dist/browser/{adopt-global-settings-Dq8ryk31.js → adopt-global-settings-CroPYwuh.js} +9 -9
  17. package/dist/browser/{boolean-editor-CRK3sDV3.js → boolean-editor-ACHtv3re.js} +9 -9
  18. package/dist/browser/{bootIntercom-CHy1kgnP.js → bootIntercom-wfCldz8i.js} +2 -2
  19. package/dist/browser/{booth-by-xy-BQVcyNx8.js → booth-by-xy-BeNsPAK4.js} +6 -6
  20. package/dist/browser/bundle.json +65 -65
  21. package/dist/browser/{classnames-_GyL4GDv.js → classnames-DNJ9erp0.js} +2 -2
  22. package/dist/browser/{client-B5zwzSQP.js → client-B0kI_Wgq.js} +4 -4
  23. package/dist/browser/{components-CBQYRwuC.js → components-CH6jzgzD.js} +36 -36
  24. package/dist/browser/{debug-overlay-DiLNtKlz.js → debug-overlay-DPLD8G41.js} +10 -10
  25. package/dist/browser/{debug-ui-gigsjIuv.js → debug-ui-BcuP78GL.js} +6 -6
  26. package/dist/browser/{dist-yT7nNd5R.js → dist-D878OZ4g.js} +3 -3
  27. package/dist/browser/{dist-jT3iIwH-.js → dist-DFYO_yWm.js} +6 -6
  28. package/dist/browser/{dist-B0X-IEcM.js → dist-j5FbLfDv.js} +5 -5
  29. package/dist/browser/{efp-debug-init-B5YMdXnN.js → efp-debug-init-WBPOkifi.js} +3 -3
  30. package/dist/browser/{enum-editor-DvCO-CYQ.js → enum-editor-Bo1kcz2P.js} +4 -4
  31. package/dist/browser/{es5-BmsIRBXA.js → es5-Dw3hh2hq.js} +2 -2
  32. package/dist/browser/{event-not-found-fcpAoExJ.js → event-not-found-D8_q8mVF.js} +1 -1
  33. package/dist/browser/{exports-CnuKa6hu.js → exports-CoddzsKD.js} +1 -1
  34. package/dist/browser/{favicon-CZw845Nj.js → favicon-BT321x5p.js} +1 -1
  35. package/dist/browser/{fetch-retry.umd-CBMEcoUE.js → fetch-retry.umd-CA8ymopQ.js} +2 -2
  36. package/dist/browser/{flex-DixRjO_F.js → flex-D9q2kF6V.js} +5 -5
  37. package/dist/browser/{floorplan.loader-CsKKZnNp.js → floorplan.loader-CyQJ2YNJ.js} +10 -10
  38. package/dist/browser/{floorplan.ready-Bf3GEi21.js → floorplan.ready-CNRA40yt.js} +14 -14
  39. package/dist/browser/{fuse-DFd9yKfL.js → fuse-mrwK1iZf.js} +2 -2
  40. package/dist/browser/{i18n-BexA6ZBP.js → i18n-DAfeAZ8S.js} +5 -5
  41. package/dist/browser/index.js +14 -14
  42. package/dist/browser/{index.module-hIW18pWv.js → index.module-Dk3kAKpT.js} +4 -4
  43. package/dist/browser/{integrateKiosk-CHM4p0lX.js → integrateKiosk-DxVChOVT.js} +4 -4
  44. package/dist/browser/{is-webview-8nXIDYh1.js → is-webview-Co4s-GiT.js} +1 -1
  45. package/dist/browser/{jsx-runtime-D38XzQ2p.js → jsx-runtime-BLEarrXz.js} +2 -2
  46. package/dist/browser/{kiosk-record-De-vXYCY.js → kiosk-record-Dtemk-B5.js} +1 -1
  47. package/dist/browser/{lib-D8TLRwKe.js → lib-CLrvaGLZ.js} +3 -3
  48. package/dist/browser/{loadImage-COkvpk1U.js → loadImage-CKDCgeht.js} +4 -4
  49. package/dist/browser/{logDeviceInfo-CfoVdcPV.js → logDeviceInfo-DIsLUyHd.js} +9 -9
  50. package/dist/browser/{main-DOWrZS6x.js → main-CTB1lHrg.js} +1 -1
  51. package/dist/browser/{mobx-CCEGS5Bv.js → mobx-DuryiTxo.js} +4 -4
  52. package/dist/browser/{optional-boolean-editor-DNZEf74O.js → optional-boolean-editor-CWY6Zx6h.js} +3 -3
  53. package/dist/browser/{optional-enum-editor-CGnDO1mh.js → optional-enum-editor-C8w2_YdD.js} +4 -4
  54. package/dist/browser/{optional-string-editor-C4uY45q3.js → optional-string-editor-BAG27Bz5.js} +4 -4
  55. package/dist/browser/{particles.min-orMOzlvG.js → particles.min-DG6IF5ip.js} +2 -2
  56. package/dist/browser/{react-D4oi2zZ_.js → react-BjxCyCXo.js} +2 -2
  57. package/dist/browser/{react-dom-CLXWzmt1.js → react-dom-BbWLMz4w.js} +3 -3
  58. package/dist/browser/{rolldown-runtime-C1NynmuH.js → rolldown-runtime-D8LGmHLI.js} +1 -1
  59. package/dist/browser/{select-D6Y0QY_4.js → select-CTX5p1zp.js} +10 -10
  60. package/dist/browser/{settings-CI7KY77P.js → settings-XnHelA1L.js} +2 -2
  61. package/dist/browser/{settings-item-CSNxKqBD.js → settings-item-Dgr7yr9v.js} +6 -6
  62. package/dist/browser/{store-CVqBbCq4.js → store-YlSxEv0I.js} +1270 -1259
  63. package/dist/browser/{string-editor-AyKbVKjB.js → string-editor-B-DLDQmW.js} +4 -4
  64. package/dist/browser/{text-field-DKJXuGm9.js → text-field-DlqnEhco.js} +5 -5
  65. package/dist/browser/{theme-yzBklex5.js → theme-DHHsQVr7.js} +8 -8
  66. package/dist/browser/{ui-Dq3Q-Rqt.js → ui-ffwGvnRO.js} +8 -8
  67. package/dist/browser/{useRenderTarget-BYqw3tDW.js → useRenderTarget-CAxp6qGQ.js} +4 -4
  68. package/dist/esm/components/Map/drawing/config/config-booth-labels-special.d.ts +3 -3
  69. package/dist/esm/components/Map/drawing/config/config-booth-labels-special.js +2 -2
  70. package/dist/esm/components/Map/drawing/config/config-booth-labels.d.ts +4 -4
  71. package/dist/esm/components/Map/drawing/config/config-booth-labels.js +1 -1
  72. package/dist/esm/components/Map/drawing/config/label-inset.d.ts +26 -0
  73. package/dist/esm/components/Map/drawing/config/label-inset.js +1 -0
  74. package/package.json +9 -9
@@ -1,14 +1,14 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.25.0" };
4
+ e.SENTRY_RELEASE = { id: "3.25.1" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "0a67f4c1-0ef6-428f-92c6-94c57178bf21", e._sentryDebugIdIdentifier = "sentry-dbid-0a67f4c1-0ef6-428f-92c6-94c57178bf21");
7
7
  } catch {}
8
8
  })();
9
- import { t as e } from "./jsx-runtime-D38XzQ2p.js";
10
- import { t } from "./settings-item-CSNxKqBD.js";
11
- import { t as n } from "./text-field-DKJXuGm9.js";
9
+ import { t as e } from "./jsx-runtime-BLEarrXz.js";
10
+ import { t } from "./settings-item-Dgr7yr9v.js";
11
+ import { t as n } from "./text-field-DlqnEhco.js";
12
12
  //#region ../debug/src/lib/ui/string-editor.tsx
13
13
  var r = e(), i = (e) => {
14
14
  var i;
@@ -1,15 +1,15 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.25.0" };
4
+ e.SENTRY_RELEASE = { id: "3.25.1" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "9c5a0877-c176-4e2d-b51c-123d50ab2b3c", e._sentryDebugIdIdentifier = "sentry-dbid-9c5a0877-c176-4e2d-b51c-123d50ab2b3c");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C1NynmuH.js";
10
- import { t } from "./react-D4oi2zZ_.js";
11
- import { D as n, i as r, l as i, n as a, s as o, u as s, y as c } from "./flex-DixRjO_F.js";
12
- import { t as l } from "./classnames-_GyL4GDv.js";
9
+ import { r as e } from "./rolldown-runtime-D8LGmHLI.js";
10
+ import { t } from "./react-BjxCyCXo.js";
11
+ import { D as n, i as r, l as i, n as a, s as o, u as s, y as c } from "./flex-D9q2kF6V.js";
12
+ import { t as l } from "./classnames-DNJ9erp0.js";
13
13
  //#region ../../node_modules/.pnpm/@radix-ui+themes@3.3.0_@types+react-dom@19.2.3_@types+react@19.2.17__@types+react@19.2._5ea800d4e947acedb1fa1275f1697b17/node_modules/@radix-ui/themes/dist/esm/components/text-field.props.js
14
14
  var u = /* @__PURE__ */ e(t()), d = /* @__PURE__ */ e(l()), f = {
15
15
  size: {
@@ -1,18 +1,18 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.25.0" };
4
+ e.SENTRY_RELEASE = { id: "3.25.1" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "f658045a-5be7-4ea4-a4b2-ddea9ab9caf3", e._sentryDebugIdIdentifier = "sentry-dbid-f658045a-5be7-4ea4-a4b2-ddea9ab9caf3");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C1NynmuH.js";
10
- import { t } from "./react-D4oi2zZ_.js";
11
- import { t as n } from "./jsx-runtime-D38XzQ2p.js";
12
- import { t as r } from "./react-dom-CLXWzmt1.js";
13
- import { C as i, E as a, O as o, T as s, _ as c, o as l, v as u, w as d } from "./flex-DixRjO_F.js";
14
- import { c as f, i as p, n as m, o as h, r as g, s as _, t as v } from "./dist-jT3iIwH-.js";
15
- import { t as y } from "./classnames-_GyL4GDv.js";
9
+ import { r as e } from "./rolldown-runtime-D8LGmHLI.js";
10
+ import { t } from "./react-BjxCyCXo.js";
11
+ import { t as n } from "./jsx-runtime-BLEarrXz.js";
12
+ import { t as r } from "./react-dom-BbWLMz4w.js";
13
+ import { C as i, E as a, O as o, T as s, _ as c, o as l, v as u, w as d } from "./flex-D9q2kF6V.js";
14
+ import { c as f, i as p, n as m, o as h, r as g, s as _, t as v } from "./dist-DFYO_yWm.js";
15
+ import { t as y } from "./classnames-DNJ9erp0.js";
16
16
  //#region ../../node_modules/.pnpm/@radix-ui+react-visually-hidden@1.2.3_@types+react-dom@19.2.3_@types+react@19.2.17__@ty_cffccd7838985066e8e1d993b5cb6017/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs
17
17
  var b = /* @__PURE__ */ e(r(), 1), x = /* @__PURE__ */ e(t(), 1), S = n(), C = Object.freeze({
18
18
  position: "absolute",
@@ -1,17 +1,17 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.25.0" };
4
+ e.SENTRY_RELEASE = { id: "3.25.1" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "3c34ab8b-5d65-4c06-8595-6ed371acabc5", e._sentryDebugIdIdentifier = "sentry-dbid-3c34ab8b-5d65-4c06-8595-6ed371acabc5");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C1NynmuH.js";
10
- import { a as t, i as n, s as r } from "./efp-debug-init-B5YMdXnN.js";
11
- import { a as i, i as a } from "./adopt-global-settings-Dq8ryk31.js";
12
- import { t as o } from "./jsx-runtime-D38XzQ2p.js";
13
- import "./settings-CI7KY77P.js";
14
- import { t as s } from "./add-debug-secret-listener-C0cY_TFM.js";
9
+ import { r as e } from "./rolldown-runtime-D8LGmHLI.js";
10
+ import { a as t, i as n, s as r } from "./efp-debug-init-WBPOkifi.js";
11
+ import { a as i, i as a } from "./adopt-global-settings-CroPYwuh.js";
12
+ import { t as o } from "./jsx-runtime-BLEarrXz.js";
13
+ import "./settings-XnHelA1L.js";
14
+ import { t as s } from "./add-debug-secret-listener-B7IVgt3l.js";
15
15
  //#region ../debug/src/lib/ui/render-debug-ui.tsx
16
16
  var c = /* @__PURE__ */ e(r(), 1), l = o(), u = !1;
17
17
  function d() {
@@ -26,7 +26,7 @@ function d() {
26
26
  }
27
27
  });
28
28
  let o = async (t) => {
29
- let { DebugUi: n } = await import("./debug-ui-gigsjIuv.js"), { createRoot: i } = await import("./client-B5zwzSQP.js").then((t) => /* @__PURE__ */ e(t.default, 1)), a = document.createElement("div");
29
+ let { DebugUi: n } = await import("./debug-ui-BcuP78GL.js"), { createRoot: i } = await import("./client-B0kI_Wgq.js").then((t) => /* @__PURE__ */ e(t.default, 1)), a = document.createElement("div");
30
30
  document.body.appendChild(a), i(a).render(/* @__PURE__ */ (0, l.jsx)(n, {
31
31
  useDebugButtonState: r.useState,
32
32
  open: t
@@ -1,14 +1,14 @@
1
1
  (function() {
2
2
  try {
3
3
  var e = typeof window < "u" ? window : typeof global < "u" ? global : typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : {};
4
- e.SENTRY_RELEASE = { id: "3.25.0" };
4
+ e.SENTRY_RELEASE = { id: "3.25.1" };
5
5
  var t = new e.Error().stack;
6
6
  t && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[t] = "7407e64e-4c4e-4bfb-b2ef-80063ad22998", e._sentryDebugIdIdentifier = "sentry-dbid-7407e64e-4c4e-4bfb-b2ef-80063ad22998");
7
7
  } catch {}
8
8
  })();
9
- import { r as e } from "./rolldown-runtime-C1NynmuH.js";
10
- import { t } from "./react-D4oi2zZ_.js";
11
- import { l as n } from "./store-CVqBbCq4.js";
9
+ import { r as e } from "./rolldown-runtime-D8LGmHLI.js";
10
+ import { t } from "./react-BjxCyCXo.js";
11
+ import { l as n } from "./store-YlSxEv0I.js";
12
12
  //#region ../ui/src/shared/activeElement.ts
13
13
  var r = (e) => !!e && "activeElement" in e;
14
14
  function i(e) {
@@ -1,6 +1,6 @@
1
- import { ImageDef, TextDef } from '@expofp/renderer';
2
- import { FontSizeFactor, RendererService } from '../../../../renderer';
3
- import { Booth, SpecialBooth } from '../../../../store/BoothStore';
1
+ import { type ImageDef, type TextDef } from '@expofp/renderer';
2
+ import { type FontSizeFactor, type RendererService } from '../../../../renderer';
3
+ import { type Booth, SpecialBooth } from '../../../../store/BoothStore';
4
4
  import { BoothLabelDrawer } from './config-booth-labels';
5
5
  export default function configBoothLabelsSpecial(rendererService: RendererService, booth: Booth): BoothLabelSpecialDrawer | undefined;
6
6
  declare class BoothLabelSpecialDrawer extends BoothLabelDrawer {
@@ -1,2 +1,2 @@
1
- import{Box as x,Rect as b}from"@expofp/geometry";import{reaction as u}from"mobx";import{FONT_WEIGHT_PRIMARY_BOOTH as L,FONT_WEIGHT_PRIMARY_SPECIAL as D}from"../../../../constants";import{boxToRenderer as R,createTextDef as F,getRollValue as v,getRotation as y,shouldFlip as T,updateRectRotation as z,updateTextDefRotation as P}from"../../../../renderer";import{boothStore as w,heatmapStore as k,layersStore as B,uiState as d}from"../../../../store";import{SpecialBooth as I}from"../../../../store/BoothStore";import M from"../../../../tools/settings";import{getFont as C}from"./canvases";import{BoothLabelDrawer as W,getFontUrlByWeight as V,getMinZoomFactorForDot as _,isDirectionsMode as $}from"./config-booth-labels";import H from"./TextFitter";const p=new Map;function N(i){let t=p.get(i);if(!t){const s=[18,16,14,12,10,7].map(h=>h*i),o=14*i;t=new H(C,s,o),p.set(i,t),setTimeout(()=>p.delete(i),5e3)}return t}export default function O(i,t){if(!(!(t instanceof I)||t.noLabels))return new A(i,t)}class A extends W{constructor(t,s){super(t,s);const o=s.borderWidth/2||w.borderWidth/2,h=this.booth.rect,S=Number(getComputedStyle(document.body).getPropertyValue(D))||Number(getComputedStyle(document.body).getPropertyValue(L))||500,g=V(S,this.rendererService.fontUrls),c=h.expand({x:-(h.size.width*.05+o),y:-(h.size.height*.05+o)});this.setText(),this.canvasRect=new b(c.center,c.size,s.rotate),this.setFactors(this.text),this.labelIsVertical=Math.abs(Math.abs(s.rotate)-Math.PI/2)<.01,this.fontSizes=[this.steps,[]],this.minZoomDotVisible=_(this.steps.map(e=>e.scaleFactor)),this.shapeLabel=F([{text:this.text,color:s.labelColor||M.boothLabelColor,fontUrl:g,fontSize:0}],new b(c.center,c.size,s.rotate),[o,o],{horizontal:"center",text:"center",vertical:"center"}),this.getShapeDot(),u(()=>[this.booth.skipDim,d.selectedRoute,B.layersLoaded],()=>{const e=$();this.shapeLabel.dim=e||this.booth.skipDim?!1:void 0,this.shapeDot.dim=e||this.booth.skipDim?!1:void 0,this.rendererService.update(this.shapeLabel,this.shapeDot)});const m=e=>{let a=this.steps.find(r=>r.scaleFactor<1/e);return a?(this.shapeLabel.lines[0].fontSize=a.value/devicePixelRatio*e,this.shapeLabel.lines[0].text=a.lines.join(`
2
- `),this.shapeLabel.padding=[this.paddingScaled[0]*e+this.padding,this.paddingScaled[1]*e+this.padding],this.shapeLabel):(this.shapeLabel.lines[0].fontSize=0,this.shapeLabel)},f=e=>{let a=this.steps.find(l=>l.scaleFactor<1/e);const r=this.shapeDot.source.width*e,n=this.shapeDot.source.height*e;return this.shapeDot.bounds=R(x.fromCenter(this.canvasRect.center,{x:r,y:n})),this.shapeDot.hidden=!!a,this.shapeDot};this.rendererService.onPtScale(`booth-special-label-${s.id}`,m),this.rendererService.onPtScale(`booth-special-dot-${s.id}`,f),u(()=>d.mapSettings,({roll:e})=>{v(e)&&this.rendererService.onRoll(`booth-special-roll-${s.id}`,a=>{const r=this.shapeLabel.bounds.rotation;if(this.labelIsVertical)T(a,r)&&(this.shapeLabel.bounds.rotation=-r);else{const n=y(a,r);if(n!==void 0){const{size:l}=this.canvasRect;this.shapeLabel=P(this.shapeLabel,n),l.x!==l.y&&!this.shapeLabel.hidden&&(this.canvasRect=z(this.canvasRect,n),this.setFactors(this.text),m(this.rendererService.scale),f(this.rendererService.scale))}}return[this.shapeLabel,this.shapeDot]})},{fireImmediately:!0})}getShape(){return[this.shapeLabel,this.shapeDot]}setFactors(t){this.steps=N(devicePixelRatio).getStepsForRect(t,this.canvasRect.size.x,this.canvasRect.size.y)}setText(){const t=this.booth.title||this.booth.name,o=`Clicks: ${k.getTotalClicksByBooth(this.booth)}`;this.text=d.heatmap?`${t} - ${o}`:t}}
1
+ import{Box as L,Rect as u}from"@expofp/geometry";import{reaction as b}from"mobx";import{FONT_WEIGHT_PRIMARY_BOOTH as x,FONT_WEIGHT_PRIMARY_SPECIAL as R}from"../../../../constants";import{boxToRenderer as D,createTextDef as F,getRollValue as v,getRotation as T,shouldFlip as y,updateRectRotation as z,updateTextDefRotation as I}from"../../../../renderer";import{heatmapStore as P,layersStore as w,uiState as d}from"../../../../store";import{SpecialBooth as B}from"../../../../store/BoothStore";import M from"../../../../tools/settings";import{getFont as k}from"./canvases";import{BoothLabelDrawer as C,getFontUrlByWeight as _,getMinZoomFactorForDot as A,isDirectionsMode as N}from"./config-booth-labels";import{LABEL_MARGIN_FRACTION as S}from"./label-inset.js";import V from"./TextFitter";const p=new Map;function W(i){let t=p.get(i);if(!t){const s=[18,16,14,12,10,7].map(l=>l*i),a=14*i;t=new V(k,s,a),p.set(i,t),setTimeout(()=>p.delete(i),5e3)}return t}export default function $(i,t){if(!(!(t instanceof B)||t.noLabels))return new O(i,t)}class O extends C{constructor(t,s){super(t,s),this.steps=[],this.text="";const a=this.booth.rect,l=Number(getComputedStyle(document.body).getPropertyValue(R))||Number(getComputedStyle(document.body).getPropertyValue(x))||500,g=_(l,this.rendererService.fontUrls),h=a.expand({x:-(a.size.width*S+this.padding),y:-(a.size.height*S+this.padding)});this.setText(),this.canvasRect=new u(h.center,h.size,s.rotate),this.setFactors(this.text),this.labelIsVertical=Math.abs(Math.abs(s.rotate)-Math.PI/2)<.01,this.fontSizes=[this.steps,[]],this.minZoomDotVisible=A(this.steps.map(e=>e.scaleFactor)),this.shapeLabel=F([{text:this.text,color:s.labelColor||M.boothLabelColor,fontUrl:g,fontSize:0}],new u(h.center,h.size,s.rotate),[this.padding,this.padding],{horizontal:"center",text:"center",vertical:"center"}),this.getShapeDot(),b(()=>[this.booth.skipDim,d.selectedRoute,w.layersLoaded],()=>{const e=N();this.shapeLabel.dim=e||this.booth.skipDim?!1:void 0,this.shapeDot.dim=e||this.booth.skipDim?!1:void 0,this.rendererService.update(this.shapeLabel,this.shapeDot)});const m=e=>{const o=this.steps.find(r=>r.scaleFactor<1/e);return o?(this.shapeLabel.lines[0].fontSize=o.value/devicePixelRatio*e,this.shapeLabel.lines[0].text=o.lines.join(`
2
+ `),this.shapeLabel.padding=[this.paddingScaled[0]*e+this.padding,this.paddingScaled[1]*e+this.padding],this.shapeLabel):(this.shapeLabel.lines[0].fontSize=0,this.shapeLabel)},f=e=>{const o=this.steps.find(c=>c.scaleFactor<1/e),r=this.shapeDot.source.width*e,n=this.shapeDot.source.height*e;return this.shapeDot.bounds=D(L.fromCenter(this.canvasRect.center,{x:r,y:n})),this.shapeDot.hidden=!!o,this.shapeDot};this.rendererService.onPtScale(`booth-special-label-${s.id}`,m),this.rendererService.onPtScale(`booth-special-dot-${s.id}`,f),b(()=>d.mapSettings,({roll:e})=>{v(e??0)&&this.rendererService.onRoll(`booth-special-roll-${s.id}`,o=>{const r=this.shapeLabel.bounds.rotation;if(this.labelIsVertical)y(o,r)&&(this.shapeLabel.bounds.rotation=-r);else{const n=T(o,r);if(n!==void 0){const{size:c}=this.canvasRect;this.shapeLabel=I(this.shapeLabel,n),c.x!==c.y&&!this.shapeLabel.hidden&&(this.canvasRect=z(this.canvasRect,n),this.setFactors(this.text),m(this.rendererService.scale),f(this.rendererService.scale))}}return[this.shapeLabel,this.shapeDot]})},{fireImmediately:!0})}getShape(){return[this.shapeLabel,this.shapeDot]}setFactors(t){this.steps=W(devicePixelRatio).getStepsForRect(t,this.canvasRect.size.x,this.canvasRect.size.y)}setText(){const t=this.booth.title||this.booth.name,a=`Clicks: ${P.getTotalClicksByBooth(this.booth)}`;this.text=d.heatmap?`${t} - ${a}`:t}}
@@ -1,8 +1,8 @@
1
1
  import { Rect } from '@expofp/geometry';
2
- import { ImageDef, TextAlignment, TextDef } from '@expofp/renderer';
3
- import { CustomFonts, FontSizeFactor, RendererService } from '../../../../renderer';
4
- import { Booth } from '../../../../store/BoothStore';
5
- import { Exhibitor } from '../../../../store/ExhibitorStore';
2
+ import { type ImageDef, type TextAlignment, type TextDef } from '@expofp/renderer';
3
+ import { type CustomFonts, type FontSizeFactor, type RendererService } from '../../../../renderer';
4
+ import { type Booth } from '../../../../store/BoothStore';
5
+ import { type Exhibitor } from '../../../../store/ExhibitorStore';
6
6
  import { BoothDrawerBaseWithoutPainter } from './BoothDrawerBase';
7
7
  interface Prefix {
8
8
  fontSize: number;
@@ -1 +1 @@
1
- import{Rect as E}from"@expofp/geometry";import{reaction as W}from"mobx";import{FONT_WEIGHT_PRIMARY_BOOTH as N,FONT_WEIGHT_PRIMARY_EXHIBITOR as U,FONT_WEIGHT_SECONDARY_BOOTH as X,FONT_WEIGHT_SECONDARY_EXHIBITOR as V}from"../../../../constants";import p from"../../../../data";import{createShapeDot as Z,createTextDef as G,createTextDefLines as Y,DEFAULT_FONT_LIGHT_URL as $,DEFAULT_FONT_URL as B,getRollValue as k,getRotation as q,updateLinesScale as j,updateRectRotation as J,updateTextDefRotation as K}from"../../../../renderer";import{layersStore as M,uiState as u}from"../../../../store";import{RegularBooth as Q,SpecialBooth as ee}from"../../../../store/BoothStore";import x from"../../../../tools/settings";import{t as v}from"../../../../utils/i18n";import te from"../../../../utils/is-mobile";import ie from"../../../../utils/is-webview";import{isArabicText as se}from"../../../../utils/rtl";import{BoothDrawerBaseWithoutPainter as ne}from"./BoothDrawerBase";import{getFont as _}from"./canvases";let z=x.boothLabelColor;x.EXPO==="tqs2021"&&(z="#000");const b=te||ie,D=r=>r.replace(" ","").substring(0,4).replace(/[0-9]/g,"3").replace(/[A-Z]/gi,"A"),I=document.createElement("canvas").getContext("2d");export default function oe(r,e){if(!(!(e instanceof Q)||e.noLabels))return new BoothLabelDrawer(r,e)}export function getMinZoomFactorForDot(r){return Array.isArray(r)&&r.length>0?Math.max(...r.map(e=>e)):typeof r=="number"?r:-0}export const isDirectionsMode=()=>!!(u.selectedRoute?.from&&u.selectedRoute?.to);export function getFontUrlByWeight(r,e=[],t="normal"){return[...e,{weight:500,url:B,style:"normal"},{weight:300,url:$,style:"normal"}].find(i=>+i.weight===r&&i.style===t)?.url||B}function S(r,e){return Number(getComputedStyle(document.body).getPropertyValue(r))||e}export function getBoothLabelWeights(){return{main:S(N,500),details:S(X,300)}}export function getExhibitorLabelWeights(){return{main:S(U,500),details:S(V,300)}}export function getBadgeFontWeight(){return getExhibitorLabelWeights().details}const F="Details";export class BoothLabelDrawer extends ne{constructor(e,t){if(super(t),this.rendererService=e,this.canvasRect=new E(t.rect.center,t.rect.size,t.rotate),this.paddingScaled=[4,4],this.padding=(t.borderWidth||x.boothBorderWidth)/2,this.topLeftAlignment={horizontal:u.rtl?"right":"left",vertical:"top"},this.centerAlignment={horizontal:"center",vertical:"center"},this.prefixes=b?[{fontSize:7,name:"XS",short:!0},{fontSize:10,name:"S",short:!0},{fontSize:16,name:F,short:!1}]:[{fontSize:7,name:"XS",short:!0},{fontSize:10,name:"S",short:!0},{fontSize:12,name:"M",short:!0},{fontSize:14,name:"L",short:!0},{fontSize:18,name:F,short:!1}],t instanceof ee)return;this.exh=p.hideExhibitors?[]:p.onlyFeaturedExhibitors?t.exhibitors.filter(i=>i.featured):t.exhibitors,b&&this.optimizationLevel()>=3&&(this.prefixes=this.prefixes.filter(i=>i.name!=="S")),this.createLines(),this.calculateFontSizeFactors(),this.shapeLabel=G(Y(this.lines,this.booth.labelColor||z,0,this.fontUrls),new E(this.booth.rect.center,this.booth.rect.size,this.booth.rotate),[...this.paddingScaled],{horizontal:"left",vertical:"top"}),this.getShapeDot();const o=i=>{const n=this.lines[1]??[],s=this.fontSizes[1]??[];if(x.EXPO!=="wineparis2026"){const m=this.exh.length?this.topLeftAlignment:n.length?i<s[s.length-1].scaleFactor?this.topLeftAlignment:this.centerAlignment:this.topLeftAlignment;this.shapeLabel.alignment=m}if(!j(this.shapeLabel.lines,i,this.fontSizes,this.booth.name))return;const l=this.paddingScaled[0]*i+this.padding,d=this.paddingScaled[1]*i+this.padding;return this.shapeLabel.padding[0]=l,this.shapeLabel.padding[1]=d,this.shapeLabel},h=i=>{const n=i>=this.minZoomDotVisible&&i<=this.maxZoomDotVisible,s=this.shapeDot.source.width*i,a=this.shapeDot.source.height*i;if(!(!n&&this.shapeDot.hidden))return this.shapeDot.bounds.size={x:s,y:a},this.shapeDot.hidden=!n,this.shapeDot};W(()=>[this.booth.skipDim,u.selectedRoute,M.layersLoaded],()=>{if(!M.layersLoaded)return;const i=isDirectionsMode();this.shapeLabel.dim=i||this.booth.skipDim?!1:void 0,this.shapeDot.dim=i||this.booth.skipDim?!1:void 0,this.rendererService.update(this.shapeLabel,this.shapeDot)}),W(()=>u.mapSettings,({roll:i})=>{k(i)&&this.rendererService.onRoll(`booth-roll-${t.id}`,n=>{const s=q(n,this.shapeLabel.bounds.rotation),{size:a}=this.canvasRect;return s!==void 0&&(this.shapeLabel=K(this.shapeLabel,s),!this.shapeLabel.hidden&&!this.exh.length&&a.x!==a.y&&(this.canvasRect=J(this.canvasRect,s),this.calculateFontSizeFactors(),o(this.rendererService.scale),h(this.rendererService.scale))),[this.shapeLabel,this.shapeDot]})},{fireImmediately:!0}),this.rendererService.onPtScale(`booth-label-${t.id}`,o),this.rendererService.onPtScale(`booth-dot-${t.id}`,h)}getShape(){return[this.shapeLabel,this.shapeDot]}getShapeDot(){this.shapeDot=Z(this.canvasRect,this.booth.labelColor||z),this.shapeDot.hidden=!0,this.maxZoomDotVisible=Math.min(this.canvasRect.size.x/this.shapeDot.source.width,this.canvasRect.size.y/this.shapeDot.source.height)}createLines(){const e=this.booth,t=[],o=[],h=b&&this.optimizationLevel()>=3?1:3;if(this.exh.length){const i=e.exhibitors.filter(s=>s.order===0),n=e.exhibitors.filter(s=>s.order);if(i.length>0)t.push(...i.map(s=>s.name));else if(p.onlyFeaturedExhibitors)t.push(...e.exhibitors.filter(s=>s.featured).map(s=>s.name));else if(n.length>0){t.push(...n.map(a=>a.name));const s=e.exhibitors.filter(a=>a.order===void 0);s.length>0&&t.push(v("and {{moreCount}} more",{moreCount:s.length}))}else e.exhibitors.length>h?t.push(`${e.exhibitors.length} ${p.exhibitorTermPlural}`):t.push(...e.exhibitors.map(s=>s.name));o.push(e.title||e.name)}else{const i=!!e.exhibitors.length;t.push(e.title||e.name),e.onHold?o.push(v("On Hold")):e.reserved?o.push(v("Reserved")):i||o.push(...e.exhibitors.map(n=>n.name).sort((n,s)=>n>s?1:-1)),e.size&&o.push(e.size.indexOf("/")>-1?e.size.substring(0,e.size.indexOf("/")).trim():e.size),e.price&&e.price!=="0"&&!u.previewMode&&o.push(e.price)}u.rtl&&t.forEach((i,n)=>{(i.endsWith(".")||i.endsWith("!")||i.endsWith("?"))&&(t[n]=t[n]+"\u200F"),se(i)&&(t[n]=t[n]+" ")}),this.lines=[t,o]}calculateFontSizeFactors(){let[e,t]=this.lines;const o=this.canvasRect,h=[],i=[],n=this.prefixes.slice(0,this.exh.length?this.prefixes.length:this.prefixes.length-1),{main:s,details:a}=this.exh.length?getExhibitorLabelWeights():getBoothLabelWeights();for(const{fontSize:l,short:d}of n){const m=l*devicePixelRatio,R=.9*l*devicePixelRatio,f=_(m,s),T=_(R,a),y=p.hideExhibitorBoothNumber||d;let w,A,L,g;if(this.exh.length)d?t=[]:t=this.lines[1],L=Math.max(...e.map(c=>this.measureText(c,f).width),...t.map(c=>this.measureText(c,T).width)),w=Math.max(...e.map(c=>this.exh.length?this.measureText(D(c),f).width:this.measureText(D(c),f).width+3+3),...t.map(c=>this.measureText(D(c),T).width)),g=m*e.length+R*t.length+devicePixelRatio*(e.length+t.length)+3,A=y?g/e.length:null;else{const c=e[0].replace(/[0-9]/g,"3").replace(/[A-Z]/g,"A"),C=4;L=this.measureText(c,f).width+3+3,g=m+C}const H=o.size.x/(w||L),P=o.size.y/(A||g),O=Math.min(H,P);h.push({scaleFactor:O,value:l}),!y&&i.push({scaleFactor:O,value:.9*l})}if(!this.exh.length){const l=h[h.length-1],d=this.prefixes.find(m=>m.name===F);h.push({scaleFactor:l.scaleFactor/1.8,value:d.fontSize}),i.push({scaleFactor:l.scaleFactor/1.8,value:d.fontSize*(b?1:.9)})}this.fontUrls=[getFontUrlByWeight(s,this.rendererService.fontUrls),getFontUrlByWeight(a,this.rendererService.fontUrls)],this.minZoomDotVisible=getMinZoomFactorForDot(h.map(l=>l.scaleFactor)),this.fontSizes=[h,i]}calcArea(e,t){return Math.floor(Math.max(0,e)*Math.max(0,t)/1e3)}optimizationLevel(){return Math.min(p.viewOptimizationLevel?p.viewOptimizationLevel:Math.floor(this.calcArea(this.canvasRect.size.x,this.canvasRect.size.y)/5e3),3)}measureText(e,t){return I.font=t,I.measureText(e)}}
1
+ import{Rect as E}from"@expofp/geometry";import{reaction as W}from"mobx";import{FONT_WEIGHT_PRIMARY_BOOTH as N,FONT_WEIGHT_PRIMARY_EXHIBITOR as U,FONT_WEIGHT_SECONDARY_BOOTH as V,FONT_WEIGHT_SECONDARY_EXHIBITOR as Z}from"../../../../constants";import p from"../../../../data";import{createShapeDot as X,createTextDef as G,createTextDefLines as Y,DEFAULT_FONT_LIGHT_URL as $,DEFAULT_FONT_URL as B,getRollValue as k,getRotation as q,updateLinesScale as j,updateRectRotation as J,updateTextDefRotation as K}from"../../../../renderer";import{boothStore as Q,layersStore as M,uiState as f}from"../../../../store";import{RegularBooth as ee,SpecialBooth as te}from"../../../../store/BoothStore";import L from"../../../../tools/settings";import{t as v}from"../../../../utils/i18n";import ie from"../../../../utils/is-mobile";import se from"../../../../utils/is-webview";import{isArabicText as ne}from"../../../../utils/rtl";import{BoothDrawerBaseWithoutPainter as oe}from"./BoothDrawerBase";import{getFont as _}from"./canvases";import{getLabelBorderInset as re}from"./label-inset.js";let z=L.boothLabelColor;L.EXPO==="tqs2021"&&(z="#000");const x=ie||se,D=r=>r.replace(" ","").substring(0,4).replace(/[0-9]/g,"3").replace(/[A-Z]/gi,"A"),I=document.createElement("canvas").getContext("2d");export default function he(r,e){if(!(!(e instanceof ee)||e.noLabels))return new BoothLabelDrawer(r,e)}export function getMinZoomFactorForDot(r){return Array.isArray(r)&&r.length>0?Math.max(...r.map(e=>e)):typeof r=="number"?r:-0}export const isDirectionsMode=()=>!!(f.selectedRoute?.from&&f.selectedRoute?.to);export function getFontUrlByWeight(r,e=[],t="normal"){return[...e,{weight:500,url:B,style:"normal"},{weight:300,url:$,style:"normal"}].find(i=>+i.weight===r&&i.style===t)?.url||B}function b(r,e){return Number(getComputedStyle(document.body).getPropertyValue(r))||e}export function getBoothLabelWeights(){return{main:b(N,500),details:b(V,300)}}export function getExhibitorLabelWeights(){return{main:b(U,500),details:b(Z,300)}}export function getBadgeFontWeight(){return getExhibitorLabelWeights().details}const F="Details";export class BoothLabelDrawer extends oe{constructor(e,t){if(super(t),this.minZoomDotVisible=0,this.maxZoomDotVisible=0,this.exh=[],this.shapeLabel=void 0,this.shapeDot=void 0,this.fontSizes=[[],[]],this.lines=[[],[]],this.fontUrls=["",""],this.rendererService=e,this.canvasRect=new E(t.rect.center,t.rect.size,t.rotate),this.paddingScaled=[4,4],this.padding=re(t.borderWidth||Q.borderWidth,t.rect.size),this.topLeftAlignment={horizontal:f.rtl?"right":"left",vertical:"top"},this.centerAlignment={horizontal:"center",vertical:"center"},this.prefixes=x?[{fontSize:7,name:"XS",short:!0},{fontSize:10,name:"S",short:!0},{fontSize:16,name:F,short:!1}]:[{fontSize:7,name:"XS",short:!0},{fontSize:10,name:"S",short:!0},{fontSize:12,name:"M",short:!0},{fontSize:14,name:"L",short:!0},{fontSize:18,name:F,short:!1}],t instanceof te)return;this.exh=p.hideExhibitors?[]:p.onlyFeaturedExhibitors?t.exhibitors.filter(i=>i.featured):t.exhibitors,x&&this.optimizationLevel()>=3&&(this.prefixes=this.prefixes.filter(i=>i.name!=="S")),this.createLines(),this.calculateFontSizeFactors(),this.shapeLabel=G(Y(this.lines,this.booth.labelColor||z,0,this.fontUrls),new E(this.booth.rect.center,this.booth.rect.size,this.booth.rotate),[...this.paddingScaled],{horizontal:"left",vertical:"top"}),this.getShapeDot();const o=i=>{const n=this.lines[1]??[],s=this.fontSizes[1]??[];if(L.EXPO!=="wineparis2026"){const m=this.exh.length?this.topLeftAlignment:n.length?i<s[s.length-1].scaleFactor?this.topLeftAlignment:this.centerAlignment:this.topLeftAlignment;this.shapeLabel.alignment=m}if(!j(this.shapeLabel.lines,i,this.fontSizes,this.booth.name))return;const l=this.paddingScaled[0]*i+this.padding,d=this.paddingScaled[1]*i+this.padding;return this.shapeLabel.padding[0]=l,this.shapeLabel.padding[1]=d,this.shapeLabel},h=i=>{const n=i>=this.minZoomDotVisible&&i<=this.maxZoomDotVisible,s=this.shapeDot.source.width*i,a=this.shapeDot.source.height*i;if(!(!n&&this.shapeDot.hidden))return this.shapeDot.bounds.size={x:s,y:a},this.shapeDot.hidden=!n,this.shapeDot};W(()=>[this.booth.skipDim,f.selectedRoute,M.layersLoaded],()=>{if(!M.layersLoaded)return;const i=isDirectionsMode();this.shapeLabel.dim=i||this.booth.skipDim?!1:void 0,this.shapeDot.dim=i||this.booth.skipDim?!1:void 0,this.rendererService.update(this.shapeLabel,this.shapeDot)}),W(()=>f.mapSettings,({roll:i})=>{k(i??0)&&this.rendererService.onRoll(`booth-roll-${t.id}`,n=>{const s=q(n,this.shapeLabel.bounds.rotation),{size:a}=this.canvasRect;return s!==void 0&&(this.shapeLabel=K(this.shapeLabel,s),!this.shapeLabel.hidden&&!this.exh.length&&a.x!==a.y&&(this.canvasRect=J(this.canvasRect,s),this.calculateFontSizeFactors(),o(this.rendererService.scale),h(this.rendererService.scale))),[this.shapeLabel,this.shapeDot]})},{fireImmediately:!0}),this.rendererService.onPtScale(`booth-label-${t.id}`,o),this.rendererService.onPtScale(`booth-dot-${t.id}`,h)}getShape(){return[this.shapeLabel,this.shapeDot]}getShapeDot(){this.shapeDot=X(this.canvasRect,this.booth.labelColor||z),this.shapeDot.hidden=!0,this.maxZoomDotVisible=Math.min(this.canvasRect.size.x/this.shapeDot.source.width,this.canvasRect.size.y/this.shapeDot.source.height)}createLines(){const e=this.booth,t=[],o=[],h=x&&this.optimizationLevel()>=3?1:3;if(this.exh.length){const i=e.exhibitors.filter(s=>s.order===0),n=e.exhibitors.filter(s=>s.order);if(i.length>0)t.push(...i.map(s=>s.name));else if(p.onlyFeaturedExhibitors)t.push(...e.exhibitors.filter(s=>s.featured).map(s=>s.name));else if(n.length>0){t.push(...n.map(a=>a.name));const s=e.exhibitors.filter(a=>a.order===void 0);s.length>0&&t.push(v("and {{moreCount}} more",{moreCount:s.length}))}else e.exhibitors.length>h?t.push(`${e.exhibitors.length} ${p.exhibitorTermPlural}`):t.push(...e.exhibitors.map(s=>s.name));o.push(e.title||e.name)}else{const i=!!e.exhibitors.length;t.push(e.title||e.name),e.onHold?o.push(v("On Hold")):e.reserved?o.push(v("Reserved")):i||o.push(...e.exhibitors.map(n=>n.name).sort((n,s)=>n>s?1:-1)),e.size&&o.push(e.size.indexOf("/")>-1?e.size.substring(0,e.size.indexOf("/")).trim():e.size),e.price&&e.price!=="0"&&!f.previewMode&&o.push(e.price)}f.rtl&&t.forEach((i,n)=>{(i.endsWith(".")||i.endsWith("!")||i.endsWith("?"))&&(t[n]=t[n]+"\u200F"),ne(i)&&(t[n]=t[n]+" ")}),this.lines=[t,o]}calculateFontSizeFactors(){const e=this.lines[0];let t;const o=this.canvasRect,h=[],i=[],n=this.prefixes.slice(0,this.exh.length?this.prefixes.length:this.prefixes.length-1),{main:s,details:a}=this.exh.length?getExhibitorLabelWeights():getBoothLabelWeights();for(const{fontSize:l,short:d}of n){const m=l*devicePixelRatio,R=.9*l*devicePixelRatio,u=_(m,s),T=_(R,a),y=p.hideExhibitorBoothNumber||d;let w,A,S,g;if(this.exh.length)t=d?[]:this.lines[1],S=Math.max(...e.map(c=>this.measureText(c,u).width),...t.map(c=>this.measureText(c,T).width)),w=Math.max(...e.map(c=>this.exh.length?this.measureText(D(c),u).width:this.measureText(D(c),u).width+3+3),...t.map(c=>this.measureText(D(c),T).width)),g=m*e.length+R*t.length+devicePixelRatio*(e.length+t.length)+3,A=y?g/e.length:null;else{const c=e[0].replace(/[0-9]/g,"3").replace(/[A-Z]/g,"A"),C=4;S=this.measureText(c,u).width+3+3,g=m+C}const H=o.size.x/(w||S),P=o.size.y/(A||g),O=Math.min(H,P);h.push({scaleFactor:O,value:l,lines:[]}),y||i.push({scaleFactor:O,value:.9*l,lines:[]})}if(!this.exh.length){const l=h[h.length-1],d=this.prefixes.find(m=>m.name===F);d&&(h.push({scaleFactor:l.scaleFactor/1.8,value:d.fontSize,lines:[]}),i.push({scaleFactor:l.scaleFactor/1.8,value:d.fontSize*(x?1:.9),lines:[]}))}this.fontUrls=[getFontUrlByWeight(s,this.rendererService.fontUrls),getFontUrlByWeight(a,this.rendererService.fontUrls)],this.minZoomDotVisible=getMinZoomFactorForDot(h.map(l=>l.scaleFactor)),this.fontSizes=[h,i]}calcArea(e,t){return Math.floor(Math.max(0,e)*Math.max(0,t)/1e3)}optimizationLevel(){return Math.min(p.viewOptimizationLevel?p.viewOptimizationLevel:Math.floor(this.calcArea(this.canvasRect.size.x,this.canvasRect.size.y)/5e3),3)}measureText(e,t){return I.font=t,I.measureText(e)}}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Geometry shared by the booth label drawers for holding label text clear of
3
+ * the booth border.
4
+ */
5
+ /** Margin held around a booth label, as a share of each rect dimension. */
6
+ export declare const LABEL_MARGIN_FRACTION = 0.05;
7
+ /**
8
+ * How far a label box is pulled in from the booth footprint to clear the drawn
9
+ * border — half the stroke, since the border straddles the footprint edge.
10
+ *
11
+ * Capped at the margin and floored at zero: a plan can publish a
12
+ * `boothBorderWidth` far larger than the strokes it actually draws, and an
13
+ * uncapped inset then deflates the label box to nothing, so no font size fits
14
+ * and the label never renders at all. NaN and negative widths reach here too —
15
+ * an unparsable `stroke-width`, or the empty-booths `0 / 0` in
16
+ * `boothStore.borderWidth` — and fall out to zero rather than poisoning the box.
17
+ *
18
+ * @param borderWidth - stroke width actually painted for the booth
19
+ * @param size - the booth footprint
20
+ * @returns a non-negative inset, at most `LABEL_MARGIN_FRACTION` of the short side
21
+ */
22
+ export declare function getLabelBorderInset(borderWidth: number, size: {
23
+ width: number;
24
+ height: number;
25
+ }): number;
26
+ //# sourceMappingURL=label-inset.d.ts.map
@@ -0,0 +1 @@
1
+ export const LABEL_MARGIN_FRACTION=.05;export function getLabelBorderInset(t,n){const e=.05*Math.min(n.width,n.height);return t>0&&e>0?Math.min(t/2,e):0}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expofp/floorplan",
3
- "version": "3.25.0",
3
+ "version": "3.25.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/expofp/efp-app.git",
@@ -70,14 +70,14 @@
70
70
  "tslib": "^2.3.0",
71
71
  "uuid": "^9.0.1",
72
72
  "zod": "4.4.3",
73
- "@expofp/config": "3.25.0",
74
- "@expofp/debug": "3.25.0",
75
- "@expofp/geometry": "3.25.0",
76
- "@expofp/schema": "3.25.0",
77
- "@expofp/resolve": "3.25.0",
78
- "@expofp/ui": "3.25.0",
79
- "@expofp/utils": "3.25.0",
80
- "@expofp/wayfinding": "3.25.0"
73
+ "@expofp/config": "3.25.1",
74
+ "@expofp/debug": "3.25.1",
75
+ "@expofp/geometry": "3.25.1",
76
+ "@expofp/resolve": "3.25.1",
77
+ "@expofp/schema": "3.25.1",
78
+ "@expofp/ui": "3.25.1",
79
+ "@expofp/utils": "3.25.1",
80
+ "@expofp/wayfinding": "3.25.1"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@babel/plugin-proposal-decorators": "^8.0.2",