@ifc-lite/viewer 1.0.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.
- package/LICENSE +373 -0
- package/components.json +22 -0
- package/dist/assets/arrow2_bg-BoXCojjR.wasm +0 -0
- package/dist/assets/geometry.worker-DpnHtNr3.ts +157 -0
- package/dist/assets/ifc_lite_wasm_bg-Cd3m3f2h.wasm +0 -0
- package/dist/assets/index-DKe9Oy-s.css +1 -0
- package/dist/assets/index-Dzz3WVwq.js +637 -0
- package/dist/ifc_lite_wasm_bg.wasm +0 -0
- package/dist/index.html +13 -0
- package/dist/web-ifc.wasm +0 -0
- package/index.html +12 -0
- package/package.json +52 -0
- package/postcss.config.js +6 -0
- package/public/ifc_lite_wasm_bg.wasm +0 -0
- package/public/web-ifc.wasm +0 -0
- package/src/App.tsx +13 -0
- package/src/components/Viewport.tsx +723 -0
- package/src/components/ui/button.tsx +58 -0
- package/src/components/ui/collapsible.tsx +11 -0
- package/src/components/ui/context-menu.tsx +174 -0
- package/src/components/ui/dropdown-menu.tsx +175 -0
- package/src/components/ui/input.tsx +49 -0
- package/src/components/ui/progress.tsx +26 -0
- package/src/components/ui/scroll-area.tsx +47 -0
- package/src/components/ui/separator.tsx +27 -0
- package/src/components/ui/tabs.tsx +56 -0
- package/src/components/ui/tooltip.tsx +31 -0
- package/src/components/viewer/AxisHelper.tsx +125 -0
- package/src/components/viewer/BoxSelectionOverlay.tsx +53 -0
- package/src/components/viewer/EntityContextMenu.tsx +220 -0
- package/src/components/viewer/HierarchyPanel.tsx +363 -0
- package/src/components/viewer/HoverTooltip.tsx +82 -0
- package/src/components/viewer/KeyboardShortcutsDialog.tsx +104 -0
- package/src/components/viewer/MainToolbar.tsx +441 -0
- package/src/components/viewer/PropertiesPanel.tsx +288 -0
- package/src/components/viewer/StatusBar.tsx +141 -0
- package/src/components/viewer/ToolOverlays.tsx +311 -0
- package/src/components/viewer/ViewCube.tsx +195 -0
- package/src/components/viewer/ViewerLayout.tsx +190 -0
- package/src/components/viewer/Viewport.tsx +1136 -0
- package/src/components/viewer/ViewportContainer.tsx +49 -0
- package/src/components/viewer/ViewportOverlays.tsx +185 -0
- package/src/hooks/useIfc.ts +168 -0
- package/src/hooks/useKeyboardShortcuts.ts +142 -0
- package/src/index.css +177 -0
- package/src/lib/utils.ts +45 -0
- package/src/main.tsx +18 -0
- package/src/store.ts +471 -0
- package/src/webgpu-types.d.ts +20 -0
- package/tailwind.config.js +72 -0
- package/tsconfig.json +16 -0
- package/vite.config.ts +45 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* WebGPU type definitions for TypeScript
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
declare const GPUBufferUsage: {
|
|
10
|
+
readonly MAP_READ: number;
|
|
11
|
+
readonly MAP_WRITE: number;
|
|
12
|
+
readonly COPY_SRC: number;
|
|
13
|
+
readonly COPY_DST: number;
|
|
14
|
+
readonly INDEX: number;
|
|
15
|
+
readonly VERTEX: number;
|
|
16
|
+
readonly UNIFORM: number;
|
|
17
|
+
readonly STORAGE: number;
|
|
18
|
+
readonly INDIRECT: number;
|
|
19
|
+
readonly QUERY_RESOLVE: number;
|
|
20
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** @type {import('tailwindcss').Config} */
|
|
2
|
+
export default {
|
|
3
|
+
darkMode: ['class'],
|
|
4
|
+
content: [
|
|
5
|
+
'./index.html',
|
|
6
|
+
'./src/**/*.{js,ts,jsx,tsx}',
|
|
7
|
+
],
|
|
8
|
+
theme: {
|
|
9
|
+
extend: {
|
|
10
|
+
colors: {
|
|
11
|
+
border: 'hsl(var(--border))',
|
|
12
|
+
input: 'hsl(var(--input))',
|
|
13
|
+
ring: 'hsl(var(--ring))',
|
|
14
|
+
background: 'hsl(var(--background))',
|
|
15
|
+
foreground: 'hsl(var(--foreground))',
|
|
16
|
+
primary: {
|
|
17
|
+
DEFAULT: 'hsl(var(--primary))',
|
|
18
|
+
foreground: 'hsl(var(--primary-foreground))',
|
|
19
|
+
},
|
|
20
|
+
secondary: {
|
|
21
|
+
DEFAULT: 'hsl(var(--secondary))',
|
|
22
|
+
foreground: 'hsl(var(--secondary-foreground))',
|
|
23
|
+
},
|
|
24
|
+
destructive: {
|
|
25
|
+
DEFAULT: 'hsl(var(--destructive))',
|
|
26
|
+
foreground: 'hsl(var(--destructive-foreground))',
|
|
27
|
+
},
|
|
28
|
+
muted: {
|
|
29
|
+
DEFAULT: 'hsl(var(--muted))',
|
|
30
|
+
foreground: 'hsl(var(--muted-foreground))',
|
|
31
|
+
},
|
|
32
|
+
accent: {
|
|
33
|
+
DEFAULT: 'hsl(var(--accent))',
|
|
34
|
+
foreground: 'hsl(var(--accent-foreground))',
|
|
35
|
+
},
|
|
36
|
+
popover: {
|
|
37
|
+
DEFAULT: 'hsl(var(--popover))',
|
|
38
|
+
foreground: 'hsl(var(--popover-foreground))',
|
|
39
|
+
},
|
|
40
|
+
card: {
|
|
41
|
+
DEFAULT: 'hsl(var(--card))',
|
|
42
|
+
foreground: 'hsl(var(--card-foreground))',
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
borderRadius: {
|
|
46
|
+
lg: 'var(--radius)',
|
|
47
|
+
md: 'calc(var(--radius) - 2px)',
|
|
48
|
+
sm: 'calc(var(--radius) - 4px)',
|
|
49
|
+
},
|
|
50
|
+
keyframes: {
|
|
51
|
+
'accordion-down': {
|
|
52
|
+
from: { height: '0' },
|
|
53
|
+
to: { height: 'var(--radix-accordion-content-height)' },
|
|
54
|
+
},
|
|
55
|
+
'accordion-up': {
|
|
56
|
+
from: { height: 'var(--radix-accordion-content-height)' },
|
|
57
|
+
to: { height: '0' },
|
|
58
|
+
},
|
|
59
|
+
'pulse-subtle': {
|
|
60
|
+
'0%, 100%': { opacity: '1' },
|
|
61
|
+
'50%': { opacity: '0.7' },
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
animation: {
|
|
65
|
+
'accordion-down': 'accordion-down 0.2s ease-out',
|
|
66
|
+
'accordion-up': 'accordion-up 0.2s ease-out',
|
|
67
|
+
'pulse-subtle': 'pulse-subtle 2s ease-in-out infinite',
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
plugins: [],
|
|
72
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "../../tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"jsx": "react-jsx",
|
|
5
|
+
"outDir": "./dist",
|
|
6
|
+
"baseUrl": ".",
|
|
7
|
+
"paths": {
|
|
8
|
+
"@/*": ["./src/*"],
|
|
9
|
+
"@ifc-lite/parser": ["../../packages/parser/src"],
|
|
10
|
+
"@ifc-lite/geometry": ["../../packages/geometry/src"],
|
|
11
|
+
"@ifc-lite/renderer": ["../../packages/renderer/src"],
|
|
12
|
+
"@ifc-lite/query": ["../../packages/query/src"]
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"include": ["src/**/*", "../../packages/renderer/src/webgpu-types.d.ts"]
|
|
16
|
+
}
|
package/vite.config.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { defineConfig } from 'vite';
|
|
2
|
+
import react from '@vitejs/plugin-react';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
|
|
5
|
+
export default defineConfig({
|
|
6
|
+
plugins: [react()],
|
|
7
|
+
resolve: {
|
|
8
|
+
alias: {
|
|
9
|
+
'@': path.resolve(__dirname, './src'),
|
|
10
|
+
'@ifc-lite/parser': path.resolve(__dirname, '../../packages/parser/src'),
|
|
11
|
+
'@ifc-lite/geometry': path.resolve(__dirname, '../../packages/geometry/src'),
|
|
12
|
+
'@ifc-lite/renderer': path.resolve(__dirname, '../../packages/renderer/src'),
|
|
13
|
+
'@ifc-lite/query': path.resolve(__dirname, '../../packages/query/src'),
|
|
14
|
+
'@ifc-lite/spatial': path.resolve(__dirname, '../../packages/spatial/src'),
|
|
15
|
+
'@ifc-lite/wasm': path.resolve(__dirname, '../../packages/wasm'),
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
server: {
|
|
19
|
+
port: 3000,
|
|
20
|
+
open: true,
|
|
21
|
+
},
|
|
22
|
+
build: {
|
|
23
|
+
target: 'esnext',
|
|
24
|
+
},
|
|
25
|
+
optimizeDeps: {
|
|
26
|
+
exclude: ['@duckdb/duckdb-wasm'], // Optional dependency, exclude from pre-bundling
|
|
27
|
+
},
|
|
28
|
+
assetsInclude: ['**/*.wasm'],
|
|
29
|
+
worker: {
|
|
30
|
+
format: 'es',
|
|
31
|
+
plugins: () => [
|
|
32
|
+
react(),
|
|
33
|
+
// Resolve aliases in worker context
|
|
34
|
+
{
|
|
35
|
+
name: 'worker-alias-resolver',
|
|
36
|
+
resolveId(id) {
|
|
37
|
+
if (id.startsWith('@ifc-lite/')) {
|
|
38
|
+
const packageName = id.split('/')[1];
|
|
39
|
+
return path.resolve(__dirname, `../../packages/${packageName}/src`);
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
});
|