@thatopen/services 0.3.10 → 0.3.12

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 (39) hide show
  1. package/dist/cli/commands/revit.d.ts +9 -0
  2. package/dist/cli/lib/revit-addin.d.ts +20 -0
  3. package/dist/cli.js +101 -0
  4. package/dist/cloud/LasToPotree.d.ts +59 -0
  5. package/dist/cloud/SplatToFq.d.ts +38 -0
  6. package/dist/cloud/index.d.ts +2 -0
  7. package/docs/builtin/paths.json +86 -86
  8. package/docs/cloud/GaussianSplatConverter.md +43 -0
  9. package/docs/cloud/PointCloudConverter.md +53 -0
  10. package/docs/revit-collab-quickstart.md +151 -0
  11. package/package.json +95 -95
  12. package/src/built-in/ClashesManager/example.ts +283 -283
  13. package/src/built-in/UIManager/src/clashes-panel/example.ts +160 -160
  14. package/src/built-in/UIManager/src/models-list/example.ts +122 -118
  15. package/src/cli/templates/app/README.md +217 -241
  16. package/src/cli/templates/app/package.json +33 -33
  17. package/src/cli/templates/app/src/setups/camera-tools.ts +0 -63
  18. package/src/cli/templates/app/src/setups/camera-views.ts +0 -201
  19. package/src/cli/templates/app/src/setups/card-header.ts +0 -35
  20. package/src/cli/templates/app/src/setups/clipper-tool.ts +0 -773
  21. package/src/cli/templates/app/src/setups/clipper.ts +0 -75
  22. package/src/cli/templates/app/src/setups/cloud-runner.ts +0 -13
  23. package/src/cli/templates/app/src/setups/exploded-view.ts +0 -246
  24. package/src/cli/templates/app/src/setups/helper-panel.ts +0 -88
  25. package/src/cli/templates/app/src/setups/hider.ts +0 -98
  26. package/src/cli/templates/app/src/setups/index.ts +0 -23
  27. package/src/cli/templates/app/src/setups/inspection.ts +0 -136
  28. package/src/cli/templates/app/src/setups/measurement-panel.ts +0 -188
  29. package/src/cli/templates/app/src/setups/measurement-tool.ts +0 -588
  30. package/src/cli/templates/app/src/setups/measurements.ts +0 -133
  31. package/src/cli/templates/app/src/setups/navigation-gizmo.ts +0 -316
  32. package/src/cli/templates/app/src/setups/plans-panel.ts +0 -619
  33. package/src/cli/templates/app/src/setups/right-sidebar.ts +0 -178
  34. package/src/cli/templates/app/src/setups/styles-panel.ts +0 -110
  35. package/src/cli/templates/app/src/setups/styles.ts +0 -375
  36. package/src/cli/templates/app/src/setups/tool-mode-manager.ts +0 -156
  37. package/src/cli/templates/app/src/setups/tool-mode.ts +0 -23
  38. package/src/cli/templates/app/src/setups/toolbar.ts +0 -229
  39. package/src/cli/templates/app/src/setups/ui-manager.ts +0 -27
@@ -1,188 +0,0 @@
1
- import * as OBC from "@thatopen/components";
2
- import * as BUI from "@thatopen/ui";
3
- import type {
4
- MeasurementTool,
5
- MeasureMode,
6
- SnapKind,
7
- } from "./measurement-tool";
8
-
9
- /**
10
- * MEASUREMENT panel — a docked side-panel (a layout alongside
11
- * Explorer/Files/Graphics/Clipping) for length / area / angle measurements.
12
- *
13
- * Sections:
14
- * - Measure — exclusive mode buttons (Off / Length / Area / Angle); pick one,
15
- * then double-click surfaces in the viewport (Area: Enter to close).
16
- * - Snapping — vertices / edges / faces toggles (precise picks).
17
- * - Measurements — show/hide all, clear all, and a list of every measurement
18
- * (type + value + units) with delete-per-row.
19
- *
20
- * Vanilla BUI, app chrome (native panel header, muted bands, 1px contrast-20
21
- * hairlines, #3C3C41 scrollbar, library toggle switches + buttons). Factory
22
- * returns the element WITHOUT self-mounting. (A simple row list is used for the
23
- * measurements, matching files-panel / clipper-panel, so each row can carry a
24
- * delete button.)
25
- */
26
- const MODES: { mode: MeasureMode; label: string; icon: string }[] = [
27
- { mode: "none", label: "Off", icon: "mdi:cursor-default" },
28
- { mode: "length", label: "Length", icon: "mdi:ruler" },
29
- { mode: "area", label: "Area", icon: "mdi:vector-square" },
30
- { mode: "angle", label: "Angle", icon: "mdi:angle-acute" },
31
- ];
32
-
33
- const SNAPS: { kind: SnapKind; label: string }[] = [
34
- { kind: "point", label: "Vertices" },
35
- { kind: "line", label: "Edges" },
36
- { kind: "face", label: "Faces" },
37
- ];
38
-
39
- export const measurementPanel = (
40
- _components: OBC.Components,
41
- tool: MeasurementTool,
42
- ) => {
43
- const [panel, update] = BUI.Component.create<BUI.Panel, { tick: number }>(
44
- (state) => {
45
- const refresh = () => update({ tick: state.tick + 1 });
46
-
47
- const mode = tool.getMode();
48
- const rows = tool.rows();
49
- const snaps = tool.getSnaps();
50
- const visible = tool.isVisible();
51
-
52
- const modeButtons = MODES.map(
53
- (m) => BUI.html`
54
- <bim-button
55
- class="m-mode"
56
- label=${m.label}
57
- icon=${m.icon}
58
- ?active=${mode === m.mode}
59
- @click=${() => {
60
- tool.setMode(m.mode);
61
- refresh();
62
- }}
63
- ></bim-button>
64
- `,
65
- );
66
-
67
- const snapRows = SNAPS.map(
68
- (s) => BUI.html`
69
- <div class="m-row">
70
- <span class="m-k">${s.label}</span>
71
- <span class="m-v">
72
- <bim-checkbox class="m-toggle" toggle ?checked=${snaps[s.kind]}
73
- @change=${(e: Event) => {
74
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
- tool.setSnap(s.kind, !!(e.target as any).checked);
76
- refresh();
77
- }}></bim-checkbox>
78
- </span>
79
- </div>
80
- `,
81
- );
82
-
83
- const measurementRows =
84
- rows.length === 0
85
- ? BUI.html`<div class="m-empty">No measurements. Pick a mode above, then double-click surfaces.</div>`
86
- : rows.map(
87
- (r) => BUI.html`
88
- <div class="m-row">
89
- <span class="m-k m-type">${r.type}</span>
90
- <span class="m-v">
91
- <span class="m-val">${r.text}</span>
92
- <bim-button class="m-del" icon="mdi:trash-can-outline"
93
- @click=${() => {
94
- r.remove();
95
- refresh();
96
- }}></bim-button>
97
- </span>
98
- </div>
99
- `,
100
- );
101
-
102
- return BUI.html`
103
- <bim-panel label="Measure" icon="mdi:ruler"
104
- style="width: 100%; height: 100%; pointer-events: auto;">
105
- <style>
106
- .m-vp::-webkit-scrollbar { width: 0.4rem; height: 0.4rem; }
107
- .m-vp::-webkit-scrollbar-thumb { border-radius: 0.25rem; background-color: var(--bim-scrollbar--c, #3C3C41); }
108
- .m-vp::-webkit-scrollbar-track { background-color: var(--bim-scrollbar--bgc, var(--bim-ui_bg-contrast-10)); }
109
-
110
- .m-band { box-sizing: border-box; padding: 0.4rem 0.4rem 0.4rem 1.1rem;
111
- display: flex; align-items: center; gap: 0.4rem;
112
- font-size: 0.76rem; font-weight: 500; letter-spacing: 0.01em;
113
- color: var(--bim-ui_bg-contrast-70, #a7a7ab);
114
- background: var(--bim-ui_bg-contrast-20, rgba(255,255,255,0.1));
115
- border-top: 1px solid var(--bim-ui_bg-contrast-20, rgba(255,255,255,0.1));
116
- border-bottom: 1px solid var(--bim-ui_bg-contrast-20, rgba(255,255,255,0.1)); }
117
- .m-band-ico { flex: 0 0 auto; font-size: 0.9rem; color: var(--bim-ui_bg-contrast-70, #a7a7ab); }
118
- .m-band:first-child { border-top: none; }
119
-
120
- .m-modes { display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem;
121
- padding: 0.5rem 0.4rem 0.5rem 1.1rem; }
122
- .m-modes bim-button { width: 100%; }
123
-
124
- .m-row { box-sizing: border-box; min-height: 32px; display: flex;
125
- align-items: center; justify-content: space-between; gap: 0.6rem;
126
- padding: 0.35rem 0.4rem 0.35rem 1.1rem; font-size: 0.78rem;
127
- color: var(--bim-ui_bg-contrast-100, #e3e3e3);
128
- border-bottom: 1px solid var(--bim-ui_bg-contrast-20, rgba(255,255,255,0.1)); }
129
- .m-k { opacity: 0.6; flex: 0 1 auto; min-width: 0; white-space: nowrap;
130
- overflow: hidden; text-overflow: ellipsis; }
131
- .m-type { opacity: 0.85; }
132
- .m-v { flex: 1 1 auto; min-width: 0; display: flex; align-items: center;
133
- justify-content: flex-end; gap: 0.5rem; }
134
- .m-val { font-variant-numeric: tabular-nums; }
135
- .m-row bim-checkbox.m-toggle { flex: 0 0 2rem; width: 2rem; }
136
- .m-row bim-button.m-del { flex: 0 0 auto; --bim-button--bgc: transparent; }
137
-
138
- .m-empty { padding: 0.6rem 0.4rem 0.6rem 1.1rem; opacity: 0.6;
139
- font-size: 0.78rem; line-height: 1.3; white-space: normal; }
140
-
141
- .m-actions { display: flex; flex-direction: column; gap: 0.4rem;
142
- padding: 0.5rem 0.4rem 0.5rem 1.1rem; }
143
- .m-actions bim-button { width: 100%; }
144
- </style>
145
- <div style="display: flex; flex-direction: column; height: 100%; width: 100%;">
146
- <div style="flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; padding: 0 0.4rem 0.4rem 1.1rem;">
147
- <div class="m-vp" style="flex: 1 1 auto; min-height: 0; overflow-y: auto;
148
- margin-left: -1.1rem; margin-right: -0.4rem;">
149
-
150
- <div class="m-modes">${modeButtons}</div>
151
-
152
- <div class="m-band"><bim-icon class="m-band-ico" icon="mdi:magnet"></bim-icon>Snapping</div>
153
- ${snapRows}
154
-
155
- <div class="m-band"><bim-icon class="m-band-ico" icon="mdi:format-list-bulleted"></bim-icon>Measurements</div>
156
- <div class="m-row">
157
- <span class="m-k">Show all</span>
158
- <span class="m-v">
159
- <bim-checkbox class="m-toggle" toggle ?checked=${visible}
160
- @change=${(e: Event) => {
161
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
162
- tool.setVisible(!!(e.target as any).checked);
163
- refresh();
164
- }}></bim-checkbox>
165
- </span>
166
- </div>
167
- <div class="m-actions">
168
- <bim-button label="Clear all" icon="mdi:trash-can-outline" ?disabled=${rows.length === 0}
169
- @click=${() => {
170
- tool.clearAll();
171
- refresh();
172
- }}></bim-button>
173
- </div>
174
- ${measurementRows}
175
- </div>
176
- </div>
177
- </div>
178
- </bim-panel>
179
- `;
180
- },
181
- { tick: 0 },
182
- );
183
-
184
- tool.onChanged.add(() => update({ tick: 0 }));
185
- tool.onModeChanged.add(() => update({ tick: 0 }));
186
-
187
- return panel;
188
- };