@ifc-lite/viewer 1.1.7 → 1.6.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 (164) hide show
  1. package/LICENSE +373 -0
  2. package/dist/apple-touch-icon.png +0 -0
  3. package/dist/assets/Arrow.dom-BjDQoB2M.js +20 -0
  4. package/dist/assets/arrow2-bb-jcVEo.js +2 -0
  5. package/dist/assets/arrow2_bg-4Y7xYo54.wasm +0 -0
  6. package/dist/assets/arrow2_bg-BlXl-cSQ.js +1 -0
  7. package/dist/assets/arrow2_bg-BoXCojjR.wasm +0 -0
  8. package/dist/assets/desktop-cache-oPzaWXYE.js +1 -0
  9. package/dist/assets/event-DIOks52T.js +1 -0
  10. package/dist/assets/ifc-cache-BAN4vcd4.js +1 -0
  11. package/dist/assets/ifc-lite_bg-C6kblxf9.wasm +0 -0
  12. package/dist/assets/index-YBtrHPu3.js +65252 -0
  13. package/dist/assets/index-v3mcCUPN.css +1 -0
  14. package/dist/assets/native-bridge-CULtTDX3.js +111 -0
  15. package/dist/assets/wasm-bridge-CjL-lSak.js +1 -0
  16. package/dist/favicon-16x16-cropped.png +0 -0
  17. package/dist/favicon-16x16.png +0 -0
  18. package/dist/favicon-192x192-cropped.png +0 -0
  19. package/dist/favicon-192x192.png +0 -0
  20. package/dist/favicon-32x32-cropped.png +0 -0
  21. package/dist/favicon-32x32.png +0 -0
  22. package/dist/favicon-48x48-cropped.png +0 -0
  23. package/dist/favicon-48x48.png +0 -0
  24. package/dist/favicon-512x512-cropped.png +0 -0
  25. package/dist/favicon-512x512.png +0 -0
  26. package/dist/favicon-64x64-cropped.png +0 -0
  27. package/dist/favicon-64x64.png +0 -0
  28. package/dist/favicon-96x96-cropped.png +0 -0
  29. package/dist/favicon-96x96.png +0 -0
  30. package/dist/favicon-square-512.png +0 -0
  31. package/dist/favicon.ico +0 -0
  32. package/dist/favicon.png +0 -0
  33. package/dist/favicon.svg +3 -0
  34. package/dist/index.html +44 -0
  35. package/dist/logo.png +0 -0
  36. package/dist/manifest.json +48 -0
  37. package/index.html +33 -2
  38. package/package.json +34 -17
  39. package/public/apple-touch-icon.png +0 -0
  40. package/public/favicon-16x16-cropped.png +0 -0
  41. package/public/favicon-16x16.png +0 -0
  42. package/public/favicon-192x192-cropped.png +0 -0
  43. package/public/favicon-192x192.png +0 -0
  44. package/public/favicon-32x32-cropped.png +0 -0
  45. package/public/favicon-32x32.png +0 -0
  46. package/public/favicon-48x48-cropped.png +0 -0
  47. package/public/favicon-48x48.png +0 -0
  48. package/public/favicon-512x512-cropped.png +0 -0
  49. package/public/favicon-512x512.png +0 -0
  50. package/public/favicon-64x64-cropped.png +0 -0
  51. package/public/favicon-64x64.png +0 -0
  52. package/public/favicon-96x96-cropped.png +0 -0
  53. package/public/favicon-96x96.png +0 -0
  54. package/public/favicon-square-512.png +0 -0
  55. package/public/favicon.ico +0 -0
  56. package/public/favicon.png +0 -0
  57. package/public/favicon.svg +3 -0
  58. package/public/logo.png +0 -0
  59. package/public/manifest.json +48 -0
  60. package/src/App.tsx +2 -0
  61. package/src/components/ui/alert.tsx +62 -0
  62. package/src/components/ui/badge.tsx +39 -0
  63. package/src/components/ui/dialog.tsx +120 -0
  64. package/src/components/ui/label.tsx +27 -0
  65. package/src/components/ui/select.tsx +151 -0
  66. package/src/components/ui/switch.tsx +30 -0
  67. package/src/components/ui/table.tsx +120 -0
  68. package/src/components/ui/tabs.tsx +1 -1
  69. package/src/components/viewer/BCFPanel.tsx +1164 -0
  70. package/src/components/viewer/BulkPropertyEditor.tsx +875 -0
  71. package/src/components/viewer/DataConnector.tsx +840 -0
  72. package/src/components/viewer/DrawingSettingsPanel.tsx +536 -0
  73. package/src/components/viewer/EntityContextMenu.tsx +45 -17
  74. package/src/components/viewer/ExportChangesButton.tsx +195 -0
  75. package/src/components/viewer/ExportDialog.tsx +402 -0
  76. package/src/components/viewer/HierarchyPanel.tsx +1132 -218
  77. package/src/components/viewer/IDSPanel.tsx +661 -0
  78. package/src/components/viewer/KeyboardShortcutsDialog.tsx +245 -39
  79. package/src/components/viewer/MainToolbar.tsx +418 -94
  80. package/src/components/viewer/PropertiesPanel.tsx +1355 -91
  81. package/src/components/viewer/PropertyEditor.tsx +611 -0
  82. package/src/components/viewer/Section2DPanel.tsx +3313 -0
  83. package/src/components/viewer/SheetSetupPanel.tsx +502 -0
  84. package/src/components/viewer/StatusBar.tsx +27 -16
  85. package/src/components/viewer/TitleBlockEditor.tsx +437 -0
  86. package/src/components/viewer/ToolOverlays.tsx +935 -127
  87. package/src/components/viewer/ViewerLayout.tsx +40 -11
  88. package/src/components/viewer/Viewport.tsx +1276 -336
  89. package/src/components/viewer/ViewportContainer.tsx +554 -18
  90. package/src/components/viewer/ViewportOverlays.tsx +24 -7
  91. package/src/hooks/useBCF.ts +504 -0
  92. package/src/hooks/useIDS.ts +1065 -0
  93. package/src/hooks/useIfc.ts +1534 -205
  94. package/src/hooks/useIfcCache.ts +279 -0
  95. package/src/hooks/useKeyboardShortcuts.ts +50 -8
  96. package/src/hooks/useModelSelection.ts +61 -0
  97. package/src/hooks/useViewerSelectors.ts +218 -0
  98. package/src/hooks/useWebGPU.ts +80 -0
  99. package/src/index.css +265 -27
  100. package/src/lib/platform.ts +23 -0
  101. package/src/services/cacheService.ts +142 -0
  102. package/src/services/desktop-cache.ts +143 -0
  103. package/src/services/fs-cache.ts +212 -0
  104. package/src/services/ifc-cache.ts +14 -6
  105. package/src/store/constants.ts +85 -0
  106. package/src/store/index.ts +214 -0
  107. package/src/store/slices/bcfSlice.ts +372 -0
  108. package/src/store/slices/cameraSlice.ts +63 -0
  109. package/src/store/slices/dataSlice.test.ts +226 -0
  110. package/src/store/slices/dataSlice.ts +112 -0
  111. package/src/store/slices/drawing2DSlice.ts +340 -0
  112. package/src/store/slices/hoverSlice.ts +40 -0
  113. package/src/store/slices/idsSlice.ts +310 -0
  114. package/src/store/slices/loadingSlice.ts +33 -0
  115. package/src/store/slices/measurementSlice.test.ts +217 -0
  116. package/src/store/slices/measurementSlice.ts +293 -0
  117. package/src/store/slices/modelSlice.test.ts +271 -0
  118. package/src/store/slices/modelSlice.ts +211 -0
  119. package/src/store/slices/mutationSlice.ts +502 -0
  120. package/src/store/slices/sectionSlice.test.ts +125 -0
  121. package/src/store/slices/sectionSlice.ts +58 -0
  122. package/src/store/slices/selectionSlice.test.ts +286 -0
  123. package/src/store/slices/selectionSlice.ts +263 -0
  124. package/src/store/slices/sheetSlice.ts +565 -0
  125. package/src/store/slices/uiSlice.ts +58 -0
  126. package/src/store/slices/visibilitySlice.test.ts +304 -0
  127. package/src/store/slices/visibilitySlice.ts +277 -0
  128. package/src/store/types.test.ts +135 -0
  129. package/src/store/types.ts +248 -0
  130. package/src/store.ts +40 -515
  131. package/src/utils/ifcConfig.ts +82 -0
  132. package/src/utils/localParsingUtils.ts +287 -0
  133. package/src/utils/serverDataModel.ts +783 -0
  134. package/src/utils/spatialHierarchy.ts +283 -0
  135. package/src/utils/viewportUtils.ts +334 -0
  136. package/src/vite-env.d.ts +23 -0
  137. package/src/webgpu-types.d.ts +128 -0
  138. package/src-tauri/Cargo.toml +29 -0
  139. package/src-tauri/build.rs +7 -0
  140. package/src-tauri/capabilities/default.json +18 -0
  141. package/src-tauri/icons/128x128.png +0 -0
  142. package/src-tauri/icons/128x128@2x.png +0 -0
  143. package/src-tauri/icons/32x32.png +0 -0
  144. package/src-tauri/icons/Square107x107Logo.png +0 -0
  145. package/src-tauri/icons/Square142x142Logo.png +0 -0
  146. package/src-tauri/icons/Square150x150Logo.png +0 -0
  147. package/src-tauri/icons/Square284x284Logo.png +0 -0
  148. package/src-tauri/icons/Square30x30Logo.png +0 -0
  149. package/src-tauri/icons/Square310x310Logo.png +0 -0
  150. package/src-tauri/icons/Square44x44Logo.png +0 -0
  151. package/src-tauri/icons/Square71x71Logo.png +0 -0
  152. package/src-tauri/icons/Square89x89Logo.png +0 -0
  153. package/src-tauri/icons/StoreLogo.png +0 -0
  154. package/src-tauri/icons/icon.icns +0 -0
  155. package/src-tauri/icons/icon.ico +0 -0
  156. package/src-tauri/icons/icon.png +0 -0
  157. package/src-tauri/src/lib.rs +21 -0
  158. package/src-tauri/src/main.rs +10 -0
  159. package/src-tauri/tauri.conf.json +39 -0
  160. package/vite.config.ts +174 -26
  161. package/public/ifc-lite_bg.wasm +0 -0
  162. package/public/web-ifc.wasm +0 -0
  163. package/src/components/Viewport.tsx +0 -723
  164. package/src/components/viewer/BoxSelectionOverlay.tsx +0 -53
@@ -0,0 +1,44 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" class="dark">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>IFClite Viewer</title>
7
+
8
+ <!-- Legacy ICO favicon (for older browsers) -->
9
+ <link rel="icon" type="image/x-icon" href="/favicon.ico">
10
+ <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
11
+
12
+ <!-- Modern SVG favicon (for modern browsers) -->
13
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg">
14
+
15
+ <!-- PNG favicons for various sizes and contexts -->
16
+ <link rel="icon" type="image/png" sizes="512x512" href="/favicon-512x512-cropped.png">
17
+ <link rel="icon" type="image/png" sizes="192x192" href="/favicon-192x192-cropped.png">
18
+ <link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96-cropped.png">
19
+ <link rel="icon" type="image/png" sizes="64x64" href="/favicon-64x64-cropped.png">
20
+ <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48-cropped.png">
21
+ <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32-cropped.png">
22
+ <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16-cropped.png">
23
+
24
+ <!-- Apple Touch Icon (iOS) -->
25
+ <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
26
+
27
+ <!-- Android Chrome icons -->
28
+ <link rel="icon" type="image/png" sizes="192x192" href="/favicon-192x192-cropped.png">
29
+ <link rel="icon" type="image/png" sizes="512x512" href="/favicon-512x512-cropped.png">
30
+
31
+ <!-- Web App Manifest (PWA support) -->
32
+ <link rel="manifest" href="/manifest.json">
33
+
34
+ <!-- Theme colors -->
35
+ <meta name="theme-color" content="#7aa2f7">
36
+ <meta name="msapplication-TileColor" content="#1a1b26">
37
+ <meta name="msapplication-TileImage" content="/favicon-192x192-cropped.png">
38
+ <script type="module" crossorigin src="/assets/index-YBtrHPu3.js"></script>
39
+ <link rel="stylesheet" crossorigin href="/assets/index-v3mcCUPN.css">
40
+ </head>
41
+ <body>
42
+ <div id="root"></div>
43
+ </body>
44
+ </html>
package/dist/logo.png ADDED
Binary file
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "IFClite Viewer",
3
+ "short_name": "IFClite",
4
+ "description": "High-performance web viewer for IFC files",
5
+ "start_url": "/",
6
+ "display": "standalone",
7
+ "background_color": "#1a1b26",
8
+ "theme_color": "#7aa2f7",
9
+ "icons": [
10
+ {
11
+ "src": "/favicon-16x16-cropped.png",
12
+ "sizes": "16x16",
13
+ "type": "image/png"
14
+ },
15
+ {
16
+ "src": "/favicon-32x32-cropped.png",
17
+ "sizes": "32x32",
18
+ "type": "image/png"
19
+ },
20
+ {
21
+ "src": "/favicon-48x48-cropped.png",
22
+ "sizes": "48x48",
23
+ "type": "image/png"
24
+ },
25
+ {
26
+ "src": "/favicon-96x96-cropped.png",
27
+ "sizes": "96x96",
28
+ "type": "image/png"
29
+ },
30
+ {
31
+ "src": "/favicon-192x192-cropped.png",
32
+ "sizes": "192x192",
33
+ "type": "image/png",
34
+ "purpose": "any maskable"
35
+ },
36
+ {
37
+ "src": "/favicon-512x512-cropped.png",
38
+ "sizes": "512x512",
39
+ "type": "image/png",
40
+ "purpose": "any maskable"
41
+ },
42
+ {
43
+ "src": "/apple-touch-icon.png",
44
+ "sizes": "180x180",
45
+ "type": "image/png"
46
+ }
47
+ ]
48
+ }
package/index.html CHANGED
@@ -1,9 +1,40 @@
1
1
  <!DOCTYPE html>
2
- <html lang="en">
2
+ <html lang="en" class="dark">
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>IFC-Lite Viewer</title>
6
+ <title>IFClite Viewer</title>
7
+
8
+ <!-- Legacy ICO favicon (for older browsers) -->
9
+ <link rel="icon" type="image/x-icon" href="/favicon.ico">
10
+ <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
11
+
12
+ <!-- Modern SVG favicon (for modern browsers) -->
13
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg">
14
+
15
+ <!-- PNG favicons for various sizes and contexts -->
16
+ <link rel="icon" type="image/png" sizes="512x512" href="/favicon-512x512-cropped.png">
17
+ <link rel="icon" type="image/png" sizes="192x192" href="/favicon-192x192-cropped.png">
18
+ <link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96-cropped.png">
19
+ <link rel="icon" type="image/png" sizes="64x64" href="/favicon-64x64-cropped.png">
20
+ <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48-cropped.png">
21
+ <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32-cropped.png">
22
+ <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16-cropped.png">
23
+
24
+ <!-- Apple Touch Icon (iOS) -->
25
+ <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
26
+
27
+ <!-- Android Chrome icons -->
28
+ <link rel="icon" type="image/png" sizes="192x192" href="/favicon-192x192-cropped.png">
29
+ <link rel="icon" type="image/png" sizes="512x512" href="/favicon-512x512-cropped.png">
30
+
31
+ <!-- Web App Manifest (PWA support) -->
32
+ <link rel="manifest" href="/manifest.json">
33
+
34
+ <!-- Theme colors -->
35
+ <meta name="theme-color" content="#7aa2f7">
36
+ <meta name="msapplication-TileColor" content="#1a1b26">
37
+ <meta name="msapplication-TileImage" content="/favicon-192x192-cropped.png">
7
38
  </head>
8
39
  <body>
9
40
  <div id="root"></div>
package/package.json CHANGED
@@ -1,26 +1,17 @@
1
1
  {
2
2
  "name": "@ifc-lite/viewer",
3
- "version": "1.1.7",
3
+ "version": "1.6.0",
4
4
  "description": "IFC-Lite viewer application",
5
5
  "type": "module",
6
- "scripts": {
7
- "dev": "vite",
8
- "build": "(tsc || true) && vite build",
9
- "preview": "vite preview"
10
- },
11
6
  "dependencies": {
12
- "@ifc-lite/cache": "workspace:*",
13
- "@ifc-lite/data": "workspace:*",
14
- "@ifc-lite/export": "workspace:*",
15
- "@ifc-lite/geometry": "workspace:*",
16
- "@ifc-lite/parser": "workspace:*",
17
- "@ifc-lite/query": "workspace:*",
18
- "@ifc-lite/renderer": "workspace:*",
19
- "@ifc-lite/spatial": "workspace:*",
7
+ "@radix-ui/react-alert-dialog": "^1.1.6",
20
8
  "@radix-ui/react-collapsible": "^1.1.12",
21
9
  "@radix-ui/react-context-menu": "^2.2.16",
22
10
  "@radix-ui/react-dialog": "^1.1.15",
23
11
  "@radix-ui/react-dropdown-menu": "^2.1.16",
12
+ "@radix-ui/react-label": "^2.1.4",
13
+ "@radix-ui/react-select": "^2.1.6",
14
+ "@radix-ui/react-switch": "^1.1.6",
24
15
  "@radix-ui/react-progress": "^1.1.8",
25
16
  "@radix-ui/react-scroll-area": "^1.2.10",
26
17
  "@radix-ui/react-separator": "^1.1.8",
@@ -29,24 +20,50 @@
29
20
  "@radix-ui/react-toggle": "^1.1.10",
30
21
  "@radix-ui/react-tooltip": "^1.2.8",
31
22
  "@tanstack/react-virtual": "^3.13.18",
23
+ "apache-arrow": "^14.0.2",
32
24
  "autoprefixer": "^10.4.23",
33
25
  "class-variance-authority": "^0.7.1",
34
26
  "clsx": "^2.1.1",
35
27
  "lucide-react": "^0.562.0",
28
+ "parquet-wasm": "^0.5.0",
36
29
  "postcss": "^8.5.6",
37
30
  "react": "^18.2.0",
38
31
  "react-dom": "^18.2.0",
39
32
  "react-resizable-panels": "^4.4.0",
40
33
  "tailwind-merge": "^3.4.0",
41
34
  "tailwindcss": "^4.1.18",
42
- "zustand": "^4.4.0"
35
+ "zustand": "^4.4.0",
36
+ "@ifc-lite/bcf": "^1.6.0",
37
+ "@ifc-lite/cache": "^1.6.0",
38
+ "@ifc-lite/data": "^1.6.0",
39
+ "@ifc-lite/ids": "^1.6.0",
40
+ "@ifc-lite/drawing-2d": "^1.6.0",
41
+ "@ifc-lite/export": "^1.6.0",
42
+ "@ifc-lite/geometry": "^1.6.0",
43
+ "@ifc-lite/mutations": "^1.6.0",
44
+ "@ifc-lite/parser": "^1.6.0",
45
+ "@ifc-lite/query": "^1.6.0",
46
+ "@ifc-lite/renderer": "^1.6.0",
47
+ "@ifc-lite/server-client": "^1.6.0",
48
+ "@ifc-lite/spatial": "^1.6.0",
49
+ "@ifc-lite/wasm": "^1.6.0"
43
50
  },
44
51
  "devDependencies": {
45
52
  "@tailwindcss/postcss": "^4.1.18",
46
53
  "@types/react": "^18.2.0",
47
54
  "@types/react-dom": "^18.2.0",
48
55
  "@vitejs/plugin-react": "^4.2.0",
56
+ "tsx": "^4.7.0",
49
57
  "typescript": "^5.3.0",
50
- "vite": "^5.0.0"
58
+ "vite": "^5.0.0",
59
+ "vite-plugin-static-copy": "^3.1.4",
60
+ "vite-plugin-top-level-await": "^1.6.0",
61
+ "vite-plugin-wasm": "^3.5.0"
62
+ },
63
+ "scripts": {
64
+ "dev": "vite",
65
+ "build": "NODE_OPTIONS='--max-old-space-size=4096' bash -c '(tsc || true) && vite build'",
66
+ "preview": "vite preview",
67
+ "test": "bash -c 'shopt -s globstar && tsx --test src/**/*.test.ts'"
51
68
  }
52
- }
69
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file