@ifc-lite/viewer 1.25.2 → 1.27.0

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 (116) hide show
  1. package/.turbo/turbo-build.log +40 -30
  2. package/CHANGELOG.md +110 -0
  3. package/dist/assets/{basketViewActivator-CTgyKI3U.js → basketViewActivator-B3CdrLsb.js} +7 -7
  4. package/dist/assets/{bcf-7jQby1qi.js → bcf-QeHK_Aud.js} +5 -5
  5. package/dist/assets/{browser-DXS29_v9.js → browser-BIoDDfBW.js} +1 -1
  6. package/dist/assets/{cesium-BoVuJvTC.js → cesium-CzZn5yVA.js} +319 -319
  7. package/dist/assets/{deflate-Cfp9t1Df.js → deflate-B-d0SYQM.js} +1 -1
  8. package/dist/assets/exceljs.min-DsuzKYnj.js +29 -0
  9. package/dist/assets/{exporters-DfSvJPi4.js → exporters-B4LbZFeT.js} +1434 -1179
  10. package/dist/assets/geometry.worker-BdH-E6NB.js +1 -0
  11. package/dist/assets/{geotiff-xZoE8BkO.js → geotiff-CrVtDRFq.js} +10 -10
  12. package/dist/assets/html2canvas.esm-Ge7aVWlp.js +5 -0
  13. package/dist/assets/{ids-Cu73hD0Y.js → ids-DjsGFN10.js} +21 -21
  14. package/dist/assets/ifc-lite_bg-DsYUIHm3.wasm +0 -0
  15. package/dist/assets/{index-WSbA5iy6.js → index-COYokSKc.js} +44122 -38782
  16. package/dist/assets/index-ajK6D32J.css +1 -0
  17. package/dist/assets/index.es-CY202jA3.js +6866 -0
  18. package/dist/assets/{jpeg-DhwFEbqb.js → jpeg-D4wOkf5h.js} +1 -1
  19. package/dist/assets/jspdf.es.min-DIGb9BHN.js +19571 -0
  20. package/dist/assets/jspdf.plugin.autotable-BBLUVd7n.js +2 -0
  21. package/dist/assets/{lerc-Dz6BXOVb.js → lerc-DmW0_tgf.js} +1 -1
  22. package/dist/assets/{lzw-C9z0fG2o.js → lzw-oWetY-d6.js} +1 -1
  23. package/dist/assets/{maplibre-gl-Do6O5tDc.js → maplibre-gl-BF3Z0idw.js} +1 -1
  24. package/dist/assets/{native-bridge-RvDmzO-2.js → native-bridge-BX8_tHXE.js} +1 -1
  25. package/dist/assets/{packbits-jfwifz7C.js → packbits-F8Nkp4NY.js} +1 -1
  26. package/dist/assets/{pako.esm-Cram60i4.js → pako.esm-n3Pgozwg.js} +1 -1
  27. package/dist/assets/{parser.worker-C594dWxH.js → parser.worker-D591Zu_-.js} +3 -3
  28. package/dist/assets/pdf-Dsh3HPZB.js +135 -0
  29. package/dist/assets/raw-D9iw0tmc.js +1 -0
  30. package/dist/assets/{sandbox-DDSZ7rek.js → sandbox-BAC3a-eN.js} +4235 -2716
  31. package/dist/assets/server-client-Cjwnm7il.js +706 -0
  32. package/dist/assets/{webimage-XFHVyVtC.js → webimage-BLV1dgmd.js} +1 -1
  33. package/dist/assets/xlsx-Bc2HTrjC.js +142 -0
  34. package/dist/assets/{zip-BJqVbRkU.js → zip-DFgP-l20.js} +1 -1
  35. package/dist/assets/{zstd-3q5qcl5V.js → zstd-C_1HxVrA.js} +1 -1
  36. package/dist/index.html +8 -8
  37. package/package.json +13 -9
  38. package/src/components/extensions/FlavorDialog.tsx +18 -2
  39. package/src/components/extensions/FlavorListView.tsx +12 -3
  40. package/src/components/mcp/PlaygroundChat.tsx +1 -0
  41. package/src/components/mcp/data.ts +6 -0
  42. package/src/components/mcp/playground-dispatcher.ts +277 -0
  43. package/src/components/mcp/types.ts +2 -1
  44. package/src/components/ui/combo-input.tsx +163 -0
  45. package/src/components/ui/tabs.tsx +1 -1
  46. package/src/components/viewer/ClashBcfExportDialog.tsx +271 -0
  47. package/src/components/viewer/ClashPanel.tsx +370 -0
  48. package/src/components/viewer/ClashSettingsDialog.tsx +407 -0
  49. package/src/components/viewer/CommandPalette.tsx +14 -15
  50. package/src/components/viewer/MainToolbar.tsx +155 -175
  51. package/src/components/viewer/PropertiesPanel.tsx +13 -6
  52. package/src/components/viewer/SearchInline.tsx +62 -2
  53. package/src/components/viewer/SearchModal.filter.builder.tsx +24 -393
  54. package/src/components/viewer/SearchModal.filter.editors.tsx +503 -0
  55. package/src/components/viewer/SearchModal.filter.tsx +64 -1
  56. package/src/components/viewer/SearchModal.tsx +19 -6
  57. package/src/components/viewer/ViewerLayout.tsx +5 -0
  58. package/src/components/viewer/Viewport.tsx +64 -9
  59. package/src/components/viewer/ViewportContainer.tsx +45 -3
  60. package/src/components/viewer/bcf/BCFOverlay.tsx +5 -4
  61. package/src/components/viewer/lists/ColumnHeaderMenu.tsx +84 -0
  62. package/src/components/viewer/lists/ListBuilder.tsx +789 -280
  63. package/src/components/viewer/lists/ListGroupingBar.tsx +72 -0
  64. package/src/components/viewer/lists/ListPanel.tsx +49 -5
  65. package/src/components/viewer/lists/ListResultsTable.tsx +270 -176
  66. package/src/components/viewer/lists/list-table-utils.ts +123 -0
  67. package/src/components/viewer/useGeometryStreaming.ts +21 -1
  68. package/src/generated/mcp-catalog.json +4 -0
  69. package/src/hooks/ingest/streamCleanup.test.ts +41 -0
  70. package/src/hooks/ingest/streamCleanup.ts +45 -0
  71. package/src/hooks/ingest/viewerModelIngest.ts +64 -42
  72. package/src/hooks/ingest/watchedGeometryStream.test.ts +78 -0
  73. package/src/hooks/ingest/watchedGeometryStream.ts +76 -0
  74. package/src/hooks/source-key.ts +35 -0
  75. package/src/hooks/useAlignmentLines3D.ts +139 -0
  76. package/src/hooks/useClash.ts +420 -0
  77. package/src/hooks/useGridLines3D.ts +140 -0
  78. package/src/hooks/useIfcFederation.ts +16 -2
  79. package/src/hooks/useIfcLoader.ts +5 -7
  80. package/src/lib/clash/persistence.ts +308 -0
  81. package/src/lib/geo/effective-georef.test.ts +66 -0
  82. package/src/lib/length-unit-scale.ts +41 -0
  83. package/src/lib/lists/adapter.ts +136 -11
  84. package/src/lib/lists/export/csv.ts +47 -0
  85. package/src/lib/lists/export/index.ts +49 -0
  86. package/src/lib/lists/export/model.ts +111 -0
  87. package/src/lib/lists/export/pdf.ts +67 -0
  88. package/src/lib/lists/export/xlsx.ts +83 -0
  89. package/src/lib/lists/index.ts +2 -0
  90. package/src/lib/search/filter-evaluate.test.ts +81 -0
  91. package/src/lib/search/filter-evaluate.ts +59 -87
  92. package/src/lib/search/filter-match.ts +167 -0
  93. package/src/lib/search/filter-rules.test.ts +25 -0
  94. package/src/lib/search/filter-rules.ts +75 -2
  95. package/src/lib/search/filter-schema.ts +0 -0
  96. package/src/lib/slab-edit.test.ts +72 -0
  97. package/src/lib/slab-edit.ts +159 -19
  98. package/src/sdk/adapters/export-adapter.ts +3 -3
  99. package/src/sdk/adapters/query-adapter.ts +3 -3
  100. package/src/services/extensions/host.ts +13 -0
  101. package/src/store/constants.ts +33 -25
  102. package/src/store/index.ts +29 -8
  103. package/src/store/slices/clashSlice.ts +251 -0
  104. package/src/store/slices/listSlice.ts +6 -0
  105. package/src/store/slices/mutationSlice.ts +14 -6
  106. package/src/store/slices/searchSlice.ts +29 -3
  107. package/src/store/slices/visibilitySlice.test.ts +23 -5
  108. package/src/store/slices/visibilitySlice.ts +18 -8
  109. package/src/utils/nativeSpatialDataStore.ts +6 -0
  110. package/src/utils/serverDataModel.test.ts +6 -0
  111. package/src/utils/serverDataModel.ts +7 -0
  112. package/dist/assets/geometry.worker-Cyn5BybV.js +0 -1
  113. package/dist/assets/ifc-lite_bg-ksLBP5cA.wasm +0 -0
  114. package/dist/assets/index-Bws3UAkj.css +0 -1
  115. package/dist/assets/raw-R2QfzPAR.js +0 -1
  116. package/dist/assets/server-client-Ctk8_Bof.js +0 -626
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sandbox-DDSZ7rek.js","assets/lens-PYsLu_MA.js"])))=>i.map(i=>d[i]);
2
- import { ao as $, ak as fe, ab as J, aj as ye, a9 as he, aa as ve, ac as Ee, n as Te, _ as Ie, Y as be, E as ge, a3 as Se, a4 as Ae, o as A, X as N, a8 as xe, a7 as Ce, a2 as Re, ai as Me, __tla as __tla_0 } from "./sandbox-DDSZ7rek.js";
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/sandbox-BAC3a-eN.js","assets/lens-PYsLu_MA.js"])))=>i.map(i=>d[i]);
2
+ import { ay as $, as as fe, ai as J, ar as ye, ag as he, ah as ve, aj as Ee, p as Te, _ as Ie, a3 as be, E as ge, a9 as Se, aa as Ae, q as A, a2 as N, af as xe, ae as Ce, a8 as Re, aq as Me, __tla as __tla_0 } from "./sandbox-BAC3a-eN.js";
3
3
  let g, oa, ua, ca, Ne, la;
4
4
  let __tla = Promise.all([
5
5
  (()=>{
@@ -75,7 +75,7 @@ let __tla = Promise.all([
75
75
  o === "unbounded" ? c = "unbounded" : Number.isFinite(m) && (c = m);
76
76
  }
77
77
  u === void 0 && (r || c !== void 0) && (u = 1);
78
- const f = h(e, "requirements"), d = f ? Ye(f) : [];
78
+ const f = h(e, "requirements"), d = f ? qe(f) : [];
79
79
  return {
80
80
  id: e.getAttribute("identifier") || `spec-${t}`,
81
81
  name: a,
@@ -206,7 +206,7 @@ let __tla = Promise.all([
206
206
  const t = e.toUpperCase();
207
207
  return t.includes("ASSIGNSTOGROUP") || t.includes("GROUP") ? "IfcRelAssignsToGroup" : t.includes("AGGREGATE") ? "IfcRelAggregates" : t.includes("CONTAINED") || t.includes("SPATIAL") ? "IfcRelContainedInSpatialStructure" : t.includes("NEST") ? "IfcRelNests" : t.includes("VOID") ? "IfcRelVoidsElement" : t.includes("FILL") ? "IfcRelFillsElement" : "IfcRelContainedInSpatialStructure";
208
208
  }
209
- function Ye(e) {
209
+ function qe(e) {
210
210
  const t = [];
211
211
  let a = 0;
212
212
  for (const i of Array.from(e.children)){
@@ -239,7 +239,7 @@ let __tla = Promise.all([
239
239
  value: t.textContent?.trim() || ""
240
240
  };
241
241
  const a = te(e, "restriction", O) || h(e, "restriction");
242
- if (a) return qe(a);
242
+ if (a) return Ye(a);
243
243
  const i = e.textContent?.trim();
244
244
  return i ? {
245
245
  type: "simpleValue",
@@ -249,9 +249,9 @@ let __tla = Promise.all([
249
249
  value: ""
250
250
  };
251
251
  }
252
- function qe(e) {
252
+ function Ye(e) {
253
253
  const t = e.getAttribute("base") || void 0, a = (()=>{
254
- const s = Y(e, "pattern", O);
254
+ const s = q(e, "pattern", O);
255
255
  return s.length > 0 ? s : U(e, "pattern");
256
256
  })();
257
257
  if (a.length > 0) {
@@ -262,7 +262,7 @@ let __tla = Promise.all([
262
262
  base: t
263
263
  };
264
264
  }
265
- const i = Y(e, "enumeration", O);
265
+ const i = q(e, "enumeration", O);
266
266
  if (i.length === 0) {
267
267
  const s = U(e, "enumeration");
268
268
  if (s.length > 0) return {
@@ -327,7 +327,7 @@ let __tla = Promise.all([
327
327
  for (const i of Array.from(e.children))if (i.localName.toLowerCase() === t.toLowerCase() && i.namespaceURI === a) return i;
328
328
  return null;
329
329
  }
330
- function Y(e, t, a) {
330
+ function q(e, t, a) {
331
331
  const i = [];
332
332
  for (const n of Array.from(e.children))n.localName.toLowerCase() === t.toLowerCase() && n.namespaceURI === a && i.push(n);
333
333
  return i;
@@ -335,13 +335,13 @@ let __tla = Promise.all([
335
335
  function C(e, t) {
336
336
  return h(e, t)?.textContent?.trim() || void 0;
337
337
  }
338
- const q = /^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/, He = 1e-6;
338
+ const Y = /^[+-]?(\d+\.?\d*|\.\d+)([eE][+-]?\d+)?$/, He = 1e-6;
339
339
  function Xe(e, t) {
340
340
  const a = He * (1 + Math.abs(e)), i = 16 * Number.EPSILON * Math.max(Math.abs(e), typeof t == "number" ? Math.abs(t) : 0);
341
341
  return a + i;
342
342
  }
343
343
  function ie(e, t) {
344
- const a = String(t), i = q.test(e), n = typeof t == "number" || q.test(a);
344
+ const a = String(t), i = Y.test(e), n = typeof t == "number" || Y.test(a);
345
345
  if (!i || !n) return;
346
346
  const r = parseFloat(e), s = typeof t == "number" ? t : parseFloat(a);
347
347
  if (!(Number.isNaN(r) || Number.isNaN(s))) return Math.abs(r - s) <= Xe(r, s);
@@ -1745,14 +1745,14 @@ let __tla = Promise.all([
1745
1745
  await ti(e, t, a, i, n);
1746
1746
  break;
1747
1747
  case "classification":
1748
- await Yt(t, i, a, n);
1748
+ await qt(t, i, a, n);
1749
1749
  break;
1750
1750
  case "material":
1751
- await qt(t, i, a, n);
1751
+ await Yt(t, i, a, n);
1752
1752
  break;
1753
1753
  }
1754
1754
  }
1755
- async function Yt(e, t, a, i) {
1755
+ async function qt(e, t, a, i) {
1756
1756
  if (!t || t.name.type !== "simpleValue") return;
1757
1757
  const n = t.name.value;
1758
1758
  if (!n) return;
@@ -1770,7 +1770,7 @@ let __tla = Promise.all([
1770
1770
  }
1771
1771
  });
1772
1772
  }
1773
- async function qt(e, t, a, i) {
1773
+ async function Yt(e, t, a, i) {
1774
1774
  if (!t || t.name.type !== "simpleValue") return;
1775
1775
  const n = t.name.value;
1776
1776
  if (!n) return;
@@ -2023,10 +2023,10 @@ let __tla = Promise.all([
2023
2023
  case "pattern":
2024
2024
  try {
2025
2025
  const a = new RegExp(`^${e.name.pattern}$`), { getEntities: i } = await Ie(async ()=>{
2026
- const { getEntities: r } = await import("./sandbox-DDSZ7rek.js").then(async (m)=>{
2026
+ const { getEntities: r } = await import("./sandbox-BAC3a-eN.js").then(async (m)=>{
2027
2027
  await m.__tla;
2028
2028
  return m;
2029
- }).then((s)=>s.al);
2029
+ }).then((s)=>s.av);
2030
2030
  return {
2031
2031
  getEntities: r
2032
2032
  };
@@ -2741,7 +2741,7 @@ let __tla = Promise.all([
2741
2741
  parsedDocument: t
2742
2742
  };
2743
2743
  }
2744
- const Yi = {
2744
+ const qi = {
2745
2745
  status: {
2746
2746
  pass: "PASS",
2747
2747
  fail: "FAIL",
@@ -2926,7 +2926,7 @@ let __tla = Promise.all([
2926
2926
  runValidation: "Run validation",
2927
2927
  clearResults: "Clear results"
2928
2928
  }
2929
- }, qi = {
2929
+ }, Yi = {
2930
2930
  status: {
2931
2931
  pass: "BESTANDEN",
2932
2932
  fail: "FEHLGESCHLAGEN",
@@ -3297,8 +3297,8 @@ let __tla = Promise.all([
3297
3297
  clearResults: "Effacer les résultats"
3298
3298
  }
3299
3299
  }, K = {
3300
- en: Yi,
3301
- de: qi,
3300
+ en: qi,
3301
+ de: Yi,
3302
3302
  fr: Hi
3303
3303
  };
3304
3304
  ua = function(e = "en") {