@corensystem/coren-ui 1.0.0-next.20260924.75108.887a9c2
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/bin/intent.js +20 -0
- package/dist/accordion.d.mts +11 -0
- package/dist/accordion.d.mts.map +1 -0
- package/dist/accordion.mjs +42 -0
- package/dist/accordion.mjs.map +1 -0
- package/dist/activity-log.d.mts +29 -0
- package/dist/activity-log.d.mts.map +1 -0
- package/dist/activity-log.mjs +60 -0
- package/dist/activity-log.mjs.map +1 -0
- package/dist/activity-sheet.d.mts +18 -0
- package/dist/activity-sheet.d.mts.map +1 -0
- package/dist/activity-sheet.mjs +167 -0
- package/dist/activity-sheet.mjs.map +1 -0
- package/dist/add-clinic-location-dialog.d.mts +21 -0
- package/dist/add-clinic-location-dialog.d.mts.map +1 -0
- package/dist/add-clinic-location-dialog.mjs +96 -0
- package/dist/add-clinic-location-dialog.mjs.map +1 -0
- package/dist/add-clinic-visit-dialog.d.mts +51 -0
- package/dist/add-clinic-visit-dialog.d.mts.map +1 -0
- package/dist/add-clinic-visit-dialog.mjs +307 -0
- package/dist/add-clinic-visit-dialog.mjs.map +1 -0
- package/dist/add-observation-dialog.d.mts +36 -0
- package/dist/add-observation-dialog.d.mts.map +1 -0
- package/dist/add-observation-dialog.mjs +269 -0
- package/dist/add-observation-dialog.mjs.map +1 -0
- package/dist/alert-dialog.d.mts +24 -0
- package/dist/alert-dialog.d.mts.map +1 -0
- package/dist/alert-dialog.mjs +62 -0
- package/dist/alert-dialog.mjs.map +1 -0
- package/dist/alert.d.mts +12 -0
- package/dist/alert.d.mts.map +1 -0
- package/dist/alert.mjs +36 -0
- package/dist/alert.mjs.map +1 -0
- package/dist/app-card.d.mts +21 -0
- package/dist/app-card.d.mts.map +1 -0
- package/dist/app-card.mjs +49 -0
- package/dist/app-card.mjs.map +1 -0
- package/dist/app-shell.d.mts +39 -0
- package/dist/app-shell.d.mts.map +1 -0
- package/dist/app-shell.mjs +79 -0
- package/dist/app-shell.mjs.map +1 -0
- package/dist/aspect-ratio.d.mts +8 -0
- package/dist/aspect-ratio.d.mts.map +1 -0
- package/dist/aspect-ratio.mjs +14 -0
- package/dist/aspect-ratio.mjs.map +1 -0
- package/dist/asset-list-item.d.mts +36 -0
- package/dist/asset-list-item.d.mts.map +1 -0
- package/dist/asset-list-item.mjs +51 -0
- package/dist/asset-list-item.mjs.map +1 -0
- package/dist/assign-doctor-dialog.d.mts +28 -0
- package/dist/assign-doctor-dialog.d.mts.map +1 -0
- package/dist/assign-doctor-dialog.mjs +194 -0
- package/dist/assign-doctor-dialog.mjs.map +1 -0
- package/dist/attention-list.d.mts +29 -0
- package/dist/attention-list.d.mts.map +1 -0
- package/dist/attention-list.mjs +82 -0
- package/dist/attention-list.mjs.map +1 -0
- package/dist/avatar-status-dot.d.mts +22 -0
- package/dist/avatar-status-dot.d.mts.map +1 -0
- package/dist/avatar-status-dot.mjs +72 -0
- package/dist/avatar-status-dot.mjs.map +1 -0
- package/dist/avatar.d.mts +34 -0
- package/dist/avatar.d.mts.map +1 -0
- package/dist/avatar.mjs +103 -0
- package/dist/avatar.mjs.map +1 -0
- package/dist/badge.d.mts +18 -0
- package/dist/badge.d.mts.map +1 -0
- package/dist/badge.mjs +39 -0
- package/dist/badge.mjs.map +1 -0
- package/dist/banner.d.mts +18 -0
- package/dist/banner.d.mts.map +1 -0
- package/dist/banner.mjs +74 -0
- package/dist/banner.mjs.map +1 -0
- package/dist/blockquote.d.mts +13 -0
- package/dist/blockquote.d.mts.map +1 -0
- package/dist/blockquote.mjs +22 -0
- package/dist/blockquote.mjs.map +1 -0
- package/dist/blueprint-segment.d.mts +33 -0
- package/dist/blueprint-segment.d.mts.map +1 -0
- package/dist/blueprint-segment.mjs +59 -0
- package/dist/blueprint-segment.mjs.map +1 -0
- package/dist/bottom-sheet-switcher.d.mts +32 -0
- package/dist/bottom-sheet-switcher.d.mts.map +1 -0
- package/dist/bottom-sheet-switcher.mjs +40 -0
- package/dist/bottom-sheet-switcher.mjs.map +1 -0
- package/dist/bottom-sheet.d.mts +23 -0
- package/dist/bottom-sheet.d.mts.map +1 -0
- package/dist/bottom-sheet.mjs +91 -0
- package/dist/bottom-sheet.mjs.map +1 -0
- package/dist/breadcrumb.d.mts +39 -0
- package/dist/breadcrumb.d.mts.map +1 -0
- package/dist/breadcrumb.mjs +95 -0
- package/dist/breadcrumb.mjs.map +1 -0
- package/dist/breadcrumbs.d.mts +2 -0
- package/dist/breadcrumbs.mjs +2 -0
- package/dist/browser-tabs.d.mts +40 -0
- package/dist/browser-tabs.d.mts.map +1 -0
- package/dist/browser-tabs.mjs +127 -0
- package/dist/browser-tabs.mjs.map +1 -0
- package/dist/building-model-placeholder.d.mts +46 -0
- package/dist/building-model-placeholder.d.mts.map +1 -0
- package/dist/building-model-placeholder.mjs +175 -0
- package/dist/building-model-placeholder.mjs.map +1 -0
- package/dist/building-progress.d.mts +32 -0
- package/dist/building-progress.d.mts.map +1 -0
- package/dist/building-progress.mjs +74 -0
- package/dist/building-progress.mjs.map +1 -0
- package/dist/building-viewer.d.mts +91 -0
- package/dist/building-viewer.d.mts.map +1 -0
- package/dist/building-viewer.mjs +567 -0
- package/dist/building-viewer.mjs.map +1 -0
- package/dist/button-group.d.mts +8 -0
- package/dist/button-group.d.mts.map +1 -0
- package/dist/button-group.mjs +21 -0
- package/dist/button-group.mjs.map +1 -0
- package/dist/button.d.mts +21 -0
- package/dist/button.d.mts.map +1 -0
- package/dist/button.mjs +79 -0
- package/dist/button.mjs.map +1 -0
- package/dist/calendar-view.d.mts +47 -0
- package/dist/calendar-view.d.mts.map +1 -0
- package/dist/calendar-view.mjs +165 -0
- package/dist/calendar-view.mjs.map +1 -0
- package/dist/calendar.d.mts +15 -0
- package/dist/calendar.d.mts.map +1 -0
- package/dist/calendar.mjs +94 -0
- package/dist/calendar.mjs.map +1 -0
- package/dist/camera-detail-panel.d.mts +44 -0
- package/dist/camera-detail-panel.d.mts.map +1 -0
- package/dist/camera-detail-panel.mjs +105 -0
- package/dist/camera-detail-panel.mjs.map +1 -0
- package/dist/canvas-file-picker.d.mts +28 -0
- package/dist/canvas-file-picker.d.mts.map +1 -0
- package/dist/canvas-file-picker.mjs +90 -0
- package/dist/canvas-file-picker.mjs.map +1 -0
- package/dist/canvas-header.d.mts +28 -0
- package/dist/canvas-header.d.mts.map +1 -0
- package/dist/canvas-header.mjs +42 -0
- package/dist/canvas-header.mjs.map +1 -0
- package/dist/canvas-navigator.d.mts +87 -0
- package/dist/canvas-navigator.d.mts.map +1 -0
- package/dist/canvas-navigator.mjs +426 -0
- package/dist/canvas-navigator.mjs.map +1 -0
- package/dist/canvas-toolbar.d.mts +37 -0
- package/dist/canvas-toolbar.d.mts.map +1 -0
- package/dist/canvas-toolbar.mjs +65 -0
- package/dist/canvas-toolbar.mjs.map +1 -0
- package/dist/capture-route-minimap.d.mts +40 -0
- package/dist/capture-route-minimap.d.mts.map +1 -0
- package/dist/capture-route-minimap.mjs +438 -0
- package/dist/capture-route-minimap.mjs.map +1 -0
- package/dist/card.d.mts +17 -0
- package/dist/card.d.mts.map +1 -0
- package/dist/card.mjs +63 -0
- package/dist/card.mjs.map +1 -0
- package/dist/carousel.d.mts +23 -0
- package/dist/carousel.d.mts.map +1 -0
- package/dist/carousel.mjs +141 -0
- package/dist/carousel.mjs.map +1 -0
- package/dist/catalogue-view-toggle.d.mts +53 -0
- package/dist/catalogue-view-toggle.d.mts.map +1 -0
- package/dist/catalogue-view-toggle.mjs +54 -0
- package/dist/catalogue-view-toggle.mjs.map +1 -0
- package/dist/chart.d.mts +91 -0
- package/dist/chart.d.mts.map +1 -0
- package/dist/chart.mjs +254 -0
- package/dist/chart.mjs.map +1 -0
- package/dist/chat/core-ai-chat-header.d.mts +95 -0
- package/dist/chat/core-ai-chat-header.d.mts.map +1 -0
- package/dist/chat/core-ai-chat-header.mjs +237 -0
- package/dist/chat/core-ai-chat-header.mjs.map +1 -0
- package/dist/chat/core-ai-chat-message.d.mts +18 -0
- package/dist/chat/core-ai-chat-message.d.mts.map +1 -0
- package/dist/chat/core-ai-chat-message.mjs +82 -0
- package/dist/chat/core-ai-chat-message.mjs.map +1 -0
- package/dist/chat/core-ai-chat.d.mts +116 -0
- package/dist/chat/core-ai-chat.d.mts.map +1 -0
- package/dist/chat/core-ai-chat.mjs +325 -0
- package/dist/chat/core-ai-chat.mjs.map +1 -0
- package/dist/chat/core-chart-renderer.d.mts +10 -0
- package/dist/chat/core-chart-renderer.d.mts.map +1 -0
- package/dist/chat/core-chart-renderer.mjs +177 -0
- package/dist/chat/core-chart-renderer.mjs.map +1 -0
- package/dist/chat/core-chat-input.d.mts +9 -0
- package/dist/chat/core-chat-input.d.mts.map +1 -0
- package/dist/chat/core-chat-input.mjs +66 -0
- package/dist/chat/core-chat-input.mjs.map +1 -0
- package/dist/chat/core-chat-message.d.mts +11 -0
- package/dist/chat/core-chat-message.d.mts.map +1 -0
- package/dist/chat/core-chat-message.mjs +101 -0
- package/dist/chat/core-chat-message.mjs.map +1 -0
- package/dist/chat/core-chat-panel.d.mts +16 -0
- package/dist/chat/core-chat-panel.d.mts.map +1 -0
- package/dist/chat/core-chat-panel.mjs +139 -0
- package/dist/chat/core-chat-panel.mjs.map +1 -0
- package/dist/chat/core-chat-widget.d.mts +12 -0
- package/dist/chat/core-chat-widget.d.mts.map +1 -0
- package/dist/chat/core-chat-widget.mjs +116 -0
- package/dist/chat/core-chat-widget.mjs.map +1 -0
- package/dist/chat-layout.d.mts +38 -0
- package/dist/chat-layout.d.mts.map +1 -0
- package/dist/chat-layout.mjs +94 -0
- package/dist/chat-layout.mjs.map +1 -0
- package/dist/chat-message.d.mts +40 -0
- package/dist/chat-message.d.mts.map +1 -0
- package/dist/chat-message.mjs +84 -0
- package/dist/chat-message.mjs.map +1 -0
- package/dist/checkbox.d.mts +8 -0
- package/dist/checkbox.d.mts.map +1 -0
- package/dist/checkbox.mjs +22 -0
- package/dist/checkbox.mjs.map +1 -0
- package/dist/chip.d.mts +54 -0
- package/dist/chip.d.mts.map +1 -0
- package/dist/chip.mjs +142 -0
- package/dist/chip.mjs.map +1 -0
- package/dist/citation.d.mts +22 -0
- package/dist/citation.d.mts.map +1 -0
- package/dist/citation.mjs +70 -0
- package/dist/citation.mjs.map +1 -0
- package/dist/clickable-card.d.mts +28 -0
- package/dist/clickable-card.d.mts.map +1 -0
- package/dist/clickable-card.mjs +87 -0
- package/dist/clickable-card.mjs.map +1 -0
- package/dist/code.d.mts +21 -0
- package/dist/code.d.mts.map +1 -0
- package/dist/code.mjs +48 -0
- package/dist/code.mjs.map +1 -0
- package/dist/collapsible.d.mts +10 -0
- package/dist/collapsible.d.mts.map +1 -0
- package/dist/collapsible.mjs +16 -0
- package/dist/collapsible.mjs.map +1 -0
- package/dist/combobox.d.mts +116 -0
- package/dist/combobox.d.mts.map +1 -0
- package/dist/combobox.mjs +149 -0
- package/dist/combobox.mjs.map +1 -0
- package/dist/command-palette.d.mts +43 -0
- package/dist/command-palette.d.mts.map +1 -0
- package/dist/command-palette.mjs +70 -0
- package/dist/command-palette.mjs.map +1 -0
- package/dist/command.d.mts +91 -0
- package/dist/command.d.mts.map +1 -0
- package/dist/command.mjs +82 -0
- package/dist/command.mjs.map +1 -0
- package/dist/comment-composer.d.mts +29 -0
- package/dist/comment-composer.d.mts.map +1 -0
- package/dist/comment-composer.mjs +253 -0
- package/dist/comment-composer.mjs.map +1 -0
- package/dist/comment-thread.d.mts +66 -0
- package/dist/comment-thread.d.mts.map +1 -0
- package/dist/comment-thread.mjs +180 -0
- package/dist/comment-thread.mjs.map +1 -0
- package/dist/compare-bars.d.mts +29 -0
- package/dist/compare-bars.d.mts.map +1 -0
- package/dist/compare-bars.mjs +118 -0
- package/dist/compare-bars.mjs.map +1 -0
- package/dist/compare-view.d.mts +75 -0
- package/dist/compare-view.d.mts.map +1 -0
- package/dist/compare-view.mjs +383 -0
- package/dist/compare-view.mjs.map +1 -0
- package/dist/confirm-dialog.d.mts +37 -0
- package/dist/confirm-dialog.d.mts.map +1 -0
- package/dist/confirm-dialog.mjs +40 -0
- package/dist/confirm-dialog.mjs.map +1 -0
- package/dist/context-menu.d.mts +31 -0
- package/dist/context-menu.d.mts.map +1 -0
- package/dist/context-menu.mjs +84 -0
- package/dist/context-menu.mjs.map +1 -0
- package/dist/context-toolbar.d.mts +22 -0
- package/dist/context-toolbar.d.mts.map +1 -0
- package/dist/context-toolbar.mjs +81 -0
- package/dist/context-toolbar.mjs.map +1 -0
- package/dist/copy-button.d.mts +15 -0
- package/dist/copy-button.d.mts.map +1 -0
- package/dist/copy-button.mjs +33 -0
- package/dist/copy-button.mjs.map +1 -0
- package/dist/core-mark.d.mts +25 -0
- package/dist/core-mark.d.mts.map +1 -0
- package/dist/core-mark.mjs +74 -0
- package/dist/core-mark.mjs.map +1 -0
- package/dist/data/mock-data.d.mts +9 -0
- package/dist/data/mock-data.d.mts.map +1 -0
- package/dist/data/mock-data.mjs +159 -0
- package/dist/data/mock-data.mjs.map +1 -0
- package/dist/data/rnglf-zones.d.mts +17 -0
- package/dist/data/rnglf-zones.d.mts.map +1 -0
- package/dist/data/rnglf-zones.mjs +1400 -0
- package/dist/data/rnglf-zones.mjs.map +1 -0
- package/dist/data-table.d.mts +202 -0
- package/dist/data-table.d.mts.map +1 -0
- package/dist/data-table.mjs +520 -0
- package/dist/data-table.mjs.map +1 -0
- package/dist/date-picker.d.mts +111 -0
- package/dist/date-picker.d.mts.map +1 -0
- package/dist/date-picker.mjs +546 -0
- package/dist/date-picker.mjs.map +1 -0
- package/dist/date-range-input.d.mts +26 -0
- package/dist/date-range-input.d.mts.map +1 -0
- package/dist/date-range-input.mjs +60 -0
- package/dist/date-range-input.mjs.map +1 -0
- package/dist/date-time-input.d.mts +27 -0
- package/dist/date-time-input.d.mts.map +1 -0
- package/dist/date-time-input.mjs +110 -0
- package/dist/date-time-input.mjs.map +1 -0
- package/dist/detail-panel-shell.d.mts +37 -0
- package/dist/detail-panel-shell.d.mts.map +1 -0
- package/dist/detail-panel-shell.mjs +86 -0
- package/dist/detail-panel-shell.mjs.map +1 -0
- package/dist/dialog.d.mts +105 -0
- package/dist/dialog.d.mts.map +1 -0
- package/dist/dialog.mjs +137 -0
- package/dist/dialog.mjs.map +1 -0
- package/dist/divider.d.mts +8 -0
- package/dist/divider.d.mts.map +1 -0
- package/dist/divider.mjs +18 -0
- package/dist/divider.mjs.map +1 -0
- package/dist/drawer.d.mts +26 -0
- package/dist/drawer.d.mts.map +1 -0
- package/dist/drawer.mjs +53 -0
- package/dist/drawer.mjs.map +1 -0
- package/dist/drawing-actions.d.mts +29 -0
- package/dist/drawing-actions.d.mts.map +1 -0
- package/dist/drawing-actions.mjs +124 -0
- package/dist/drawing-actions.mjs.map +1 -0
- package/dist/dropdown-menu.d.mts +31 -0
- package/dist/dropdown-menu.d.mts.map +1 -0
- package/dist/dropdown-menu.mjs +84 -0
- package/dist/dropdown-menu.mjs.map +1 -0
- package/dist/empty.d.mts +34 -0
- package/dist/empty.d.mts.map +1 -0
- package/dist/empty.mjs +119 -0
- package/dist/empty.mjs.map +1 -0
- package/dist/error-page.d.mts +20 -0
- package/dist/error-page.d.mts.map +1 -0
- package/dist/error-page.mjs +96 -0
- package/dist/error-page.mjs.map +1 -0
- package/dist/export-dialog.d.mts +58 -0
- package/dist/export-dialog.d.mts.map +1 -0
- package/dist/export-dialog.mjs +248 -0
- package/dist/export-dialog.mjs.map +1 -0
- package/dist/field.d.mts +11 -0
- package/dist/field.d.mts.map +1 -0
- package/dist/field.mjs +34 -0
- package/dist/field.mjs.map +1 -0
- package/dist/file-input.d.mts +17 -0
- package/dist/file-input.d.mts.map +1 -0
- package/dist/file-input.mjs +114 -0
- package/dist/file-input.mjs.map +1 -0
- package/dist/file-system/context.d.mts +28 -0
- package/dist/file-system/context.d.mts.map +1 -0
- package/dist/file-system/context.mjs +42 -0
- package/dist/file-system/context.mjs.map +1 -0
- package/dist/file-system/file-system-details.d.mts +12 -0
- package/dist/file-system/file-system-details.d.mts.map +1 -0
- package/dist/file-system/file-system-details.mjs +166 -0
- package/dist/file-system/file-system-details.mjs.map +1 -0
- package/dist/file-system/file-system-filters.d.mts +16 -0
- package/dist/file-system/file-system-filters.d.mts.map +1 -0
- package/dist/file-system/file-system-filters.mjs +205 -0
- package/dist/file-system/file-system-filters.mjs.map +1 -0
- package/dist/file-system/file-system-new.d.mts +16 -0
- package/dist/file-system/file-system-new.d.mts.map +1 -0
- package/dist/file-system/file-system-new.mjs +204 -0
- package/dist/file-system/file-system-new.mjs.map +1 -0
- package/dist/file-system/file-system-path.d.mts +7 -0
- package/dist/file-system/file-system-path.d.mts.map +1 -0
- package/dist/file-system/file-system-path.mjs +22 -0
- package/dist/file-system/file-system-path.mjs.map +1 -0
- package/dist/file-system/file-system-project.d.mts +16 -0
- package/dist/file-system/file-system-project.d.mts.map +1 -0
- package/dist/file-system/file-system-project.mjs +253 -0
- package/dist/file-system/file-system-project.mjs.map +1 -0
- package/dist/file-system/file-system-table.d.mts +17 -0
- package/dist/file-system/file-system-table.d.mts.map +1 -0
- package/dist/file-system/file-system-table.mjs +95 -0
- package/dist/file-system/file-system-table.mjs.map +1 -0
- package/dist/file-system/file-system.d.mts +35 -0
- package/dist/file-system/file-system.d.mts.map +1 -0
- package/dist/file-system/file-system.mjs +179 -0
- package/dist/file-system/file-system.mjs.map +1 -0
- package/dist/file-system/index.d.mts +9 -0
- package/dist/file-system/index.mjs +9 -0
- package/dist/file-system/model.d.mts +156 -0
- package/dist/file-system/model.d.mts.map +1 -0
- package/dist/file-system/model.mjs +200 -0
- package/dist/file-system/model.mjs.map +1 -0
- package/dist/filter.d.mts +92 -0
- package/dist/filter.d.mts.map +1 -0
- package/dist/filter.mjs +267 -0
- package/dist/filter.mjs.map +1 -0
- package/dist/float-shadow.d.mts +10 -0
- package/dist/float-shadow.d.mts.map +1 -0
- package/dist/float-shadow.mjs +11 -0
- package/dist/float-shadow.mjs.map +1 -0
- package/dist/floating-assistant.d.mts +75 -0
- package/dist/floating-assistant.d.mts.map +1 -0
- package/dist/floating-assistant.mjs +114 -0
- package/dist/floating-assistant.mjs.map +1 -0
- package/dist/floor-progress-bar.d.mts +17 -0
- package/dist/floor-progress-bar.d.mts.map +1 -0
- package/dist/floor-progress-bar.mjs +38 -0
- package/dist/floor-progress-bar.mjs.map +1 -0
- package/dist/fonts/LICENSE.md +41 -0
- package/dist/fonts/figtree-italic-300-900-latin-ext.woff2 +0 -0
- package/dist/fonts/figtree-italic-300-900-latin.woff2 +0 -0
- package/dist/fonts/figtree-normal-300-900-latin-ext.woff2 +0 -0
- package/dist/fonts/figtree-normal-300-900-latin.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-italic-400-latin-ext.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-italic-400-latin.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-normal-400-latin-ext.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-normal-400-latin.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-normal-500-latin-ext.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-normal-500-latin.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-normal-600-latin-ext.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-normal-600-latin.woff2 +0 -0
- package/dist/fonts/lora-italic-400-700-latin-ext.woff2 +0 -0
- package/dist/fonts/lora-italic-400-700-latin.woff2 +0 -0
- package/dist/fonts/lora-normal-400-700-latin-ext.woff2 +0 -0
- package/dist/fonts/lora-normal-400-700-latin.woff2 +0 -0
- package/dist/footprint-viewer.d.mts +88 -0
- package/dist/footprint-viewer.d.mts.map +1 -0
- package/dist/footprint-viewer.mjs +657 -0
- package/dist/footprint-viewer.mjs.map +1 -0
- package/dist/form-action-bar.d.mts +32 -0
- package/dist/form-action-bar.d.mts.map +1 -0
- package/dist/form-action-bar.mjs +42 -0
- package/dist/form-action-bar.mjs.map +1 -0
- package/dist/form-dialog.d.mts +116 -0
- package/dist/form-dialog.d.mts.map +1 -0
- package/dist/form-dialog.mjs +149 -0
- package/dist/form-dialog.mjs.map +1 -0
- package/dist/form-layout.d.mts +33 -0
- package/dist/form-layout.d.mts.map +1 -0
- package/dist/form-layout.mjs +90 -0
- package/dist/form-layout.mjs.map +1 -0
- package/dist/form.d.mts +29 -0
- package/dist/form.d.mts.map +1 -0
- package/dist/form.mjs +93 -0
- package/dist/form.mjs.map +1 -0
- package/dist/fragment-viewer/cinematic.d.mts +76 -0
- package/dist/fragment-viewer/cinematic.d.mts.map +1 -0
- package/dist/fragment-viewer/cinematic.mjs +382 -0
- package/dist/fragment-viewer/cinematic.mjs.map +1 -0
- package/dist/fragment-viewer/context.d.mts +106 -0
- package/dist/fragment-viewer/context.d.mts.map +1 -0
- package/dist/fragment-viewer/context.mjs +168 -0
- package/dist/fragment-viewer/context.mjs.map +1 -0
- package/dist/fragment-viewer/runtime.d.mts +288 -0
- package/dist/fragment-viewer/runtime.d.mts.map +1 -0
- package/dist/fragment-viewer/runtime.mjs +782 -0
- package/dist/fragment-viewer/runtime.mjs.map +1 -0
- package/dist/fragment-viewer.d.mts +62 -0
- package/dist/fragment-viewer.d.mts.map +1 -0
- package/dist/fragment-viewer.mjs +144 -0
- package/dist/fragment-viewer.mjs.map +1 -0
- package/dist/gantt.d.mts +72 -0
- package/dist/gantt.d.mts.map +1 -0
- package/dist/gantt.mjs +281 -0
- package/dist/gantt.mjs.map +1 -0
- package/dist/graph-canvas.d.mts +60 -0
- package/dist/graph-canvas.d.mts.map +1 -0
- package/dist/graph-canvas.mjs +105 -0
- package/dist/graph-canvas.mjs.map +1 -0
- package/dist/grid.d.mts +16 -0
- package/dist/grid.d.mts.map +1 -0
- package/dist/grid.mjs +47 -0
- package/dist/grid.mjs.map +1 -0
- package/dist/heading.d.mts +16 -0
- package/dist/heading.d.mts.map +1 -0
- package/dist/heading.mjs +43 -0
- package/dist/heading.mjs.map +1 -0
- package/dist/house-shape.d.mts +22 -0
- package/dist/house-shape.d.mts.map +1 -0
- package/dist/house-shape.mjs +103 -0
- package/dist/house-shape.mjs.map +1 -0
- package/dist/hover-card.d.mts +10 -0
- package/dist/hover-card.d.mts.map +1 -0
- package/dist/hover-card.mjs +22 -0
- package/dist/hover-card.mjs.map +1 -0
- package/dist/icon-button.d.mts +20 -0
- package/dist/icon-button.d.mts.map +1 -0
- package/dist/icon-button.mjs +52 -0
- package/dist/icon-button.mjs.map +1 -0
- package/dist/icon.d.mts +16 -0
- package/dist/icon.d.mts.map +1 -0
- package/dist/icon.mjs +32 -0
- package/dist/icon.mjs.map +1 -0
- package/dist/image-zoom.d.mts +23 -0
- package/dist/image-zoom.d.mts.map +1 -0
- package/dist/image-zoom.mjs +51 -0
- package/dist/image-zoom.mjs.map +1 -0
- package/dist/index.d.mts +3 -0
- package/dist/index.mjs +2 -0
- package/dist/inline-comment-composer.d.mts +40 -0
- package/dist/inline-comment-composer.d.mts.map +1 -0
- package/dist/inline-comment-composer.mjs +174 -0
- package/dist/inline-comment-composer.mjs.map +1 -0
- package/dist/input-group.d.mts +8 -0
- package/dist/input-group.d.mts.map +1 -0
- package/dist/input-group.mjs +21 -0
- package/dist/input-group.mjs.map +1 -0
- package/dist/input-otp.d.mts +40 -0
- package/dist/input-otp.d.mts.map +1 -0
- package/dist/input-otp.mjs +44 -0
- package/dist/input-otp.mjs.map +1 -0
- package/dist/input.d.mts +7 -0
- package/dist/input.d.mts.map +1 -0
- package/dist/input.mjs +18 -0
- package/dist/input.mjs.map +1 -0
- package/dist/item.d.mts +10 -0
- package/dist/item.d.mts.map +1 -0
- package/dist/item.mjs +33 -0
- package/dist/item.mjs.map +1 -0
- package/dist/kbd.d.mts +8 -0
- package/dist/kbd.d.mts.map +1 -0
- package/dist/kbd.mjs +15 -0
- package/dist/kbd.mjs.map +1 -0
- package/dist/kiosk-body.d.mts +13 -0
- package/dist/kiosk-body.d.mts.map +1 -0
- package/dist/kiosk-body.mjs +352 -0
- package/dist/kiosk-body.mjs.map +1 -0
- package/dist/kpi-bar.d.mts +29 -0
- package/dist/kpi-bar.d.mts.map +1 -0
- package/dist/kpi-bar.mjs +46 -0
- package/dist/kpi-bar.mjs.map +1 -0
- package/dist/kpi-summary.d.mts +24 -0
- package/dist/kpi-summary.d.mts.map +1 -0
- package/dist/kpi-summary.mjs +22 -0
- package/dist/kpi-summary.mjs.map +1 -0
- package/dist/label.d.mts +19 -0
- package/dist/label.d.mts.map +1 -0
- package/dist/label.mjs +27 -0
- package/dist/label.mjs.map +1 -0
- package/dist/legend.d.mts +87 -0
- package/dist/legend.d.mts.map +1 -0
- package/dist/legend.mjs +210 -0
- package/dist/legend.mjs.map +1 -0
- package/dist/lightbox.d.mts +28 -0
- package/dist/lightbox.d.mts.map +1 -0
- package/dist/lightbox.mjs +142 -0
- package/dist/lightbox.mjs.map +1 -0
- package/dist/link-type-detail.d.mts +73 -0
- package/dist/link-type-detail.d.mts.map +1 -0
- package/dist/link-type-detail.mjs +628 -0
- package/dist/link-type-detail.mjs.map +1 -0
- package/dist/link-type-wizard.d.mts +35 -0
- package/dist/link-type-wizard.d.mts.map +1 -0
- package/dist/link-type-wizard.mjs +303 -0
- package/dist/link-type-wizard.mjs.map +1 -0
- package/dist/link.d.mts +14 -0
- package/dist/link.d.mts.map +1 -0
- package/dist/link.mjs +30 -0
- package/dist/link.mjs.map +1 -0
- package/dist/list.d.mts +19 -0
- package/dist/list.d.mts.map +1 -0
- package/dist/list.mjs +27 -0
- package/dist/list.mjs.map +1 -0
- package/dist/map-compare-layout.d.mts +53 -0
- package/dist/map-compare-layout.d.mts.map +1 -0
- package/dist/map-compare-layout.mjs +164 -0
- package/dist/map-compare-layout.mjs.map +1 -0
- package/dist/map-compass.d.mts +22 -0
- package/dist/map-compass.d.mts.map +1 -0
- package/dist/map-compass.mjs +56 -0
- package/dist/map-compass.mjs.map +1 -0
- package/dist/map-control-panel.d.mts +92 -0
- package/dist/map-control-panel.d.mts.map +1 -0
- package/dist/map-control-panel.mjs +153 -0
- package/dist/map-control-panel.mjs.map +1 -0
- package/dist/map-controls.d.mts +24 -0
- package/dist/map-controls.d.mts.map +1 -0
- package/dist/map-controls.mjs +322 -0
- package/dist/map-controls.mjs.map +1 -0
- package/dist/map-hover-card.d.mts +28 -0
- package/dist/map-hover-card.d.mts.map +1 -0
- package/dist/map-hover-card.mjs +56 -0
- package/dist/map-hover-card.mjs.map +1 -0
- package/dist/map-legend.d.mts +41 -0
- package/dist/map-legend.d.mts.map +1 -0
- package/dist/map-legend.mjs +97 -0
- package/dist/map-legend.mjs.map +1 -0
- package/dist/map-minimap.d.mts +44 -0
- package/dist/map-minimap.d.mts.map +1 -0
- package/dist/map-minimap.mjs +108 -0
- package/dist/map-minimap.mjs.map +1 -0
- package/dist/map-toolbar.d.mts +60 -0
- package/dist/map-toolbar.d.mts.map +1 -0
- package/dist/map-toolbar.mjs +195 -0
- package/dist/map-toolbar.mjs.map +1 -0
- package/dist/map-transition.d.mts +51 -0
- package/dist/map-transition.d.mts.map +1 -0
- package/dist/map-transition.mjs +59 -0
- package/dist/map-transition.mjs.map +1 -0
- package/dist/map.d.mts +14 -0
- package/dist/map.d.mts.map +1 -0
- package/dist/map.mjs +47 -0
- package/dist/map.mjs.map +1 -0
- package/dist/mapbox-token.d.mts +12 -0
- package/dist/mapbox-token.d.mts.map +1 -0
- package/dist/mapbox-token.mjs +15 -0
- package/dist/mapbox-token.mjs.map +1 -0
- package/dist/markdown.d.mts +18 -0
- package/dist/markdown.d.mts.map +1 -0
- package/dist/markdown.mjs +41 -0
- package/dist/markdown.mjs.map +1 -0
- package/dist/mega-menu.d.mts +36 -0
- package/dist/mega-menu.d.mts.map +1 -0
- package/dist/mega-menu.mjs +89 -0
- package/dist/mega-menu.mjs.map +1 -0
- package/dist/menubar.d.mts +32 -0
- package/dist/menubar.d.mts.map +1 -0
- package/dist/menubar.mjs +96 -0
- package/dist/menubar.mjs.map +1 -0
- package/dist/metadata-list.d.mts +2 -0
- package/dist/metadata-list.mjs +2 -0
- package/dist/metric-card.d.mts +28 -0
- package/dist/metric-card.d.mts.map +1 -0
- package/dist/metric-card.mjs +55 -0
- package/dist/metric-card.mjs.map +1 -0
- package/dist/milestone-table.d.mts +35 -0
- package/dist/milestone-table.d.mts.map +1 -0
- package/dist/milestone-table.mjs +84 -0
- package/dist/milestone-table.mjs.map +1 -0
- package/dist/minimap.d.mts +23 -0
- package/dist/minimap.d.mts.map +1 -0
- package/dist/minimap.mjs +64 -0
- package/dist/minimap.mjs.map +1 -0
- package/dist/more-menu.d.mts +27 -0
- package/dist/more-menu.d.mts.map +1 -0
- package/dist/more-menu.mjs +34 -0
- package/dist/more-menu.mjs.map +1 -0
- package/dist/multi-select.d.mts +38 -0
- package/dist/multi-select.d.mts.map +1 -0
- package/dist/multi-select.mjs +106 -0
- package/dist/multi-select.mjs.map +1 -0
- package/dist/navigation/core-app-sidebar.d.mts +461 -0
- package/dist/navigation/core-app-sidebar.d.mts.map +1 -0
- package/dist/navigation/core-app-sidebar.mjs +1288 -0
- package/dist/navigation/core-app-sidebar.mjs.map +1 -0
- package/dist/navigation/core-app-top-bar.d.mts +116 -0
- package/dist/navigation/core-app-top-bar.d.mts.map +1 -0
- package/dist/navigation/core-app-top-bar.mjs +224 -0
- package/dist/navigation/core-app-top-bar.mjs.map +1 -0
- package/dist/navigation/core-context-tabs.d.mts +12 -0
- package/dist/navigation/core-context-tabs.d.mts.map +1 -0
- package/dist/navigation/core-context-tabs.mjs +32 -0
- package/dist/navigation/core-context-tabs.mjs.map +1 -0
- package/dist/navigation/core-dashboard-header.d.mts +20 -0
- package/dist/navigation/core-dashboard-header.d.mts.map +1 -0
- package/dist/navigation/core-dashboard-header.mjs +227 -0
- package/dist/navigation/core-dashboard-header.mjs.map +1 -0
- package/dist/navigation/core-filter-strip.d.mts +12 -0
- package/dist/navigation/core-filter-strip.d.mts.map +1 -0
- package/dist/navigation/core-filter-strip.mjs +289 -0
- package/dist/navigation/core-filter-strip.mjs.map +1 -0
- package/dist/navigation/core-org-project-switcher.d.mts +12 -0
- package/dist/navigation/core-org-project-switcher.d.mts.map +1 -0
- package/dist/navigation/core-org-project-switcher.mjs +201 -0
- package/dist/navigation/core-org-project-switcher.mjs.map +1 -0
- package/dist/navigation/switcher.d.mts +38 -0
- package/dist/navigation/switcher.d.mts.map +1 -0
- package/dist/navigation/switcher.mjs +144 -0
- package/dist/navigation/switcher.mjs.map +1 -0
- package/dist/navigation-menu.d.mts +16 -0
- package/dist/navigation-menu.d.mts.map +1 -0
- package/dist/navigation-menu.mjs +64 -0
- package/dist/navigation-menu.mjs.map +1 -0
- package/dist/neighborhood-scene.d.mts +21 -0
- package/dist/neighborhood-scene.d.mts.map +1 -0
- package/dist/neighborhood-scene.mjs +285 -0
- package/dist/neighborhood-scene.mjs.map +1 -0
- package/dist/node-graph.d.mts +154 -0
- package/dist/node-graph.d.mts.map +1 -0
- package/dist/node-graph.mjs +349 -0
- package/dist/node-graph.mjs.map +1 -0
- package/dist/notification-center.d.mts +40 -0
- package/dist/notification-center.d.mts.map +1 -0
- package/dist/notification-center.mjs +224 -0
- package/dist/notification-center.mjs.map +1 -0
- package/dist/number-input.d.mts +23 -0
- package/dist/number-input.d.mts.map +1 -0
- package/dist/number-input.mjs +79 -0
- package/dist/number-input.mjs.map +1 -0
- package/dist/object-drawing-toolbar.d.mts +38 -0
- package/dist/object-drawing-toolbar.d.mts.map +1 -0
- package/dist/object-drawing-toolbar.mjs +172 -0
- package/dist/object-drawing-toolbar.mjs.map +1 -0
- package/dist/object-type-detail.d.mts +27 -0
- package/dist/object-type-detail.d.mts.map +1 -0
- package/dist/object-type-detail.mjs +1389 -0
- package/dist/object-type-detail.mjs.map +1 -0
- package/dist/object-type-wizard.d.mts +78 -0
- package/dist/object-type-wizard.d.mts.map +1 -0
- package/dist/object-type-wizard.mjs +885 -0
- package/dist/object-type-wizard.mjs.map +1 -0
- package/dist/observation-detail-panel.d.mts +89 -0
- package/dist/observation-detail-panel.d.mts.map +1 -0
- package/dist/observation-detail-panel.mjs +168 -0
- package/dist/observation-detail-panel.mjs.map +1 -0
- package/dist/observations-map.d.mts +288 -0
- package/dist/observations-map.d.mts.map +1 -0
- package/dist/observations-map.mjs +1087 -0
- package/dist/observations-map.mjs.map +1 -0
- package/dist/operations-drawer.d.mts +51 -0
- package/dist/operations-drawer.d.mts.map +1 -0
- package/dist/operations-drawer.mjs +193 -0
- package/dist/operations-drawer.mjs.map +1 -0
- package/dist/outline.d.mts +27 -0
- package/dist/outline.d.mts.map +1 -0
- package/dist/outline.mjs +47 -0
- package/dist/outline.mjs.map +1 -0
- package/dist/overflow-list.d.mts +23 -0
- package/dist/overflow-list.d.mts.map +1 -0
- package/dist/overflow-list.mjs +38 -0
- package/dist/overflow-list.mjs.map +1 -0
- package/dist/overlay.d.mts +17 -0
- package/dist/overlay.d.mts.map +1 -0
- package/dist/overlay.mjs +32 -0
- package/dist/overlay.mjs.map +1 -0
- package/dist/page-content-header.d.mts +43 -0
- package/dist/page-content-header.d.mts.map +1 -0
- package/dist/page-content-header.mjs +224 -0
- package/dist/page-content-header.mjs.map +1 -0
- package/dist/pages/almanar-blocks-data.d.mts +4 -0
- package/dist/pages/almanar-blocks-data.d.mts.map +1 -0
- package/dist/pages/almanar-blocks-data.mjs +691 -0
- package/dist/pages/almanar-blocks-data.mjs.map +1 -0
- package/dist/pages/almanar-hierarchy-data.d.mts +9 -0
- package/dist/pages/almanar-hierarchy-data.d.mts.map +1 -0
- package/dist/pages/almanar-hierarchy-data.mjs +816 -0
- package/dist/pages/almanar-hierarchy-data.mjs.map +1 -0
- package/dist/pages/almanar-villa-taxonomy.d.mts +9 -0
- package/dist/pages/almanar-villa-taxonomy.d.mts.map +1 -0
- package/dist/pages/almanar-villa-taxonomy.mjs +1569 -0
- package/dist/pages/almanar-villa-taxonomy.mjs.map +1 -0
- package/dist/pages/app-marketplace-shared.d.mts +146 -0
- package/dist/pages/app-marketplace-shared.d.mts.map +1 -0
- package/dist/pages/app-marketplace-shared.mjs +739 -0
- package/dist/pages/app-marketplace-shared.mjs.map +1 -0
- package/dist/pages/capture-ui-enhanced.d.mts +125 -0
- package/dist/pages/capture-ui-enhanced.d.mts.map +1 -0
- package/dist/pages/capture-ui-enhanced.mjs +915 -0
- package/dist/pages/capture-ui-enhanced.mjs.map +1 -0
- package/dist/pages/core-admin-panel.d.mts +10 -0
- package/dist/pages/core-admin-panel.d.mts.map +1 -0
- package/dist/pages/core-admin-panel.mjs +3076 -0
- package/dist/pages/core-admin-panel.mjs.map +1 -0
- package/dist/pages/core-analytics-overview.d.mts +10 -0
- package/dist/pages/core-analytics-overview.d.mts.map +1 -0
- package/dist/pages/core-analytics-overview.mjs +904 -0
- package/dist/pages/core-analytics-overview.mjs.map +1 -0
- package/dist/pages/core-app-installer.d.mts +17 -0
- package/dist/pages/core-app-installer.d.mts.map +1 -0
- package/dist/pages/core-app-installer.mjs +94 -0
- package/dist/pages/core-app-installer.mjs.map +1 -0
- package/dist/pages/core-blueprint-viewer-3.d.mts +25 -0
- package/dist/pages/core-blueprint-viewer-3.d.mts.map +1 -0
- package/dist/pages/core-blueprint-viewer-3.mjs +688 -0
- package/dist/pages/core-blueprint-viewer-3.mjs.map +1 -0
- package/dist/pages/core-blueprint-viewer.d.mts +14 -0
- package/dist/pages/core-blueprint-viewer.d.mts.map +1 -0
- package/dist/pages/core-blueprint-viewer.mjs +665 -0
- package/dist/pages/core-blueprint-viewer.mjs.map +1 -0
- package/dist/pages/core-building-viewer-capture.d.mts +18 -0
- package/dist/pages/core-building-viewer-capture.d.mts.map +1 -0
- package/dist/pages/core-building-viewer-capture.mjs +268 -0
- package/dist/pages/core-building-viewer-capture.mjs.map +1 -0
- package/dist/pages/core-building-viewer.d.mts +20 -0
- package/dist/pages/core-building-viewer.d.mts.map +1 -0
- package/dist/pages/core-building-viewer.mjs +299 -0
- package/dist/pages/core-building-viewer.mjs.map +1 -0
- package/dist/pages/core-clinic.d.mts +14 -0
- package/dist/pages/core-clinic.d.mts.map +1 -0
- package/dist/pages/core-clinic.mjs +2175 -0
- package/dist/pages/core-clinic.mjs.map +1 -0
- package/dist/pages/core-content-area.d.mts +15 -0
- package/dist/pages/core-content-area.d.mts.map +1 -0
- package/dist/pages/core-content-area.mjs +192 -0
- package/dist/pages/core-content-area.mjs.map +1 -0
- package/dist/pages/core-core-connect-v3.d.mts +16 -0
- package/dist/pages/core-core-connect-v3.d.mts.map +1 -0
- package/dist/pages/core-core-connect-v3.mjs +30 -0
- package/dist/pages/core-core-connect-v3.mjs.map +1 -0
- package/dist/pages/core-core-connect.d.mts +15 -0
- package/dist/pages/core-core-connect.d.mts.map +1 -0
- package/dist/pages/core-core-connect.mjs +21 -0
- package/dist/pages/core-core-connect.mjs.map +1 -0
- package/dist/pages/core-design-canvas.d.mts +10 -0
- package/dist/pages/core-design-canvas.d.mts.map +1 -0
- package/dist/pages/core-design-canvas.mjs +322 -0
- package/dist/pages/core-design-canvas.mjs.map +1 -0
- package/dist/pages/core-login-page.d.mts +8 -0
- package/dist/pages/core-login-page.d.mts.map +1 -0
- package/dist/pages/core-login-page.mjs +141 -0
- package/dist/pages/core-login-page.mjs.map +1 -0
- package/dist/pages/core-map-compare-layout.d.mts +20 -0
- package/dist/pages/core-map-compare-layout.d.mts.map +1 -0
- package/dist/pages/core-map-compare-layout.mjs +187 -0
- package/dist/pages/core-map-compare-layout.mjs.map +1 -0
- package/dist/pages/core-observations-map-view.d.mts +19 -0
- package/dist/pages/core-observations-map-view.d.mts.map +1 -0
- package/dist/pages/core-observations-map-view.mjs +1273 -0
- package/dist/pages/core-observations-map-view.mjs.map +1 -0
- package/dist/pages/core-org-ai-report.d.mts +9 -0
- package/dist/pages/core-org-ai-report.d.mts.map +1 -0
- package/dist/pages/core-org-ai-report.mjs +474 -0
- package/dist/pages/core-org-ai-report.mjs.map +1 -0
- package/dist/pages/core-org-overview.d.mts +11 -0
- package/dist/pages/core-org-overview.d.mts.map +1 -0
- package/dist/pages/core-org-overview.mjs +718 -0
- package/dist/pages/core-org-overview.mjs.map +1 -0
- package/dist/pages/core-org-performance.d.mts +11 -0
- package/dist/pages/core-org-performance.d.mts.map +1 -0
- package/dist/pages/core-org-performance.mjs +1398 -0
- package/dist/pages/core-org-performance.mjs.map +1 -0
- package/dist/pages/core-org-reality-capture.d.mts +10 -0
- package/dist/pages/core-org-reality-capture.d.mts.map +1 -0
- package/dist/pages/core-org-reality-capture.mjs +1962 -0
- package/dist/pages/core-org-reality-capture.mjs.map +1 -0
- package/dist/pages/core-org-workforce-intelligence.d.mts +12 -0
- package/dist/pages/core-org-workforce-intelligence.d.mts.map +1 -0
- package/dist/pages/core-org-workforce-intelligence.mjs +1215 -0
- package/dist/pages/core-org-workforce-intelligence.mjs.map +1 -0
- package/dist/pages/core-progress-details.d.mts +10 -0
- package/dist/pages/core-progress-details.d.mts.map +1 -0
- package/dist/pages/core-progress-details.mjs +758 -0
- package/dist/pages/core-progress-details.mjs.map +1 -0
- package/dist/pages/core-project-overview.d.mts +9 -0
- package/dist/pages/core-project-overview.d.mts.map +1 -0
- package/dist/pages/core-project-overview.mjs +246 -0
- package/dist/pages/core-project-overview.mjs.map +1 -0
- package/dist/pages/core-project-quality-issues.d.mts +9 -0
- package/dist/pages/core-project-quality-issues.d.mts.map +1 -0
- package/dist/pages/core-project-quality-issues.mjs +508 -0
- package/dist/pages/core-project-quality-issues.mjs.map +1 -0
- package/dist/pages/core-project-reality-capture.d.mts +9 -0
- package/dist/pages/core-project-reality-capture.d.mts.map +1 -0
- package/dist/pages/core-project-reality-capture.mjs +496 -0
- package/dist/pages/core-project-reality-capture.mjs.map +1 -0
- package/dist/pages/core-project-schedule-cost.d.mts +9 -0
- package/dist/pages/core-project-schedule-cost.d.mts.map +1 -0
- package/dist/pages/core-project-schedule-cost.mjs +548 -0
- package/dist/pages/core-project-schedule-cost.mjs.map +1 -0
- package/dist/pages/core-project-setup.d.mts +10 -0
- package/dist/pages/core-project-setup.d.mts.map +1 -0
- package/dist/pages/core-project-setup.mjs +283 -0
- package/dist/pages/core-project-setup.mjs.map +1 -0
- package/dist/pages/core-project-workforce-safety.d.mts +9 -0
- package/dist/pages/core-project-workforce-safety.d.mts.map +1 -0
- package/dist/pages/core-project-workforce-safety.mjs +465 -0
- package/dist/pages/core-project-workforce-safety.mjs.map +1 -0
- package/dist/pages/core-safety-manager.d.mts +14 -0
- package/dist/pages/core-safety-manager.d.mts.map +1 -0
- package/dist/pages/core-safety-manager.mjs +3081 -0
- package/dist/pages/core-safety-manager.mjs.map +1 -0
- package/dist/pages/core-site-reality.d.mts +25 -0
- package/dist/pages/core-site-reality.d.mts.map +1 -0
- package/dist/pages/core-site-reality.mjs +505 -0
- package/dist/pages/core-site-reality.mjs.map +1 -0
- package/dist/pages/core-task-monitor.d.mts +4 -0
- package/dist/pages/core-task-monitor.d.mts.map +1 -0
- package/dist/pages/core-task-monitor.mjs +587 -0
- package/dist/pages/core-task-monitor.mjs.map +1 -0
- package/dist/pages/core-timesheet.d.mts +2 -0
- package/dist/pages/core-timesheet.mjs +2 -0
- package/dist/pages/core-verifytime-command-center.d.mts +4 -0
- package/dist/pages/core-verifytime-command-center.d.mts.map +1 -0
- package/dist/pages/core-verifytime-command-center.mjs +1089 -0
- package/dist/pages/core-verifytime-command-center.mjs.map +1 -0
- package/dist/pages/core-wc3-workspace.d.mts +71 -0
- package/dist/pages/core-wc3-workspace.d.mts.map +1 -0
- package/dist/pages/core-wc3-workspace.mjs +1015 -0
- package/dist/pages/core-wc3-workspace.mjs.map +1 -0
- package/dist/pages/core-work-permit.d.mts +14 -0
- package/dist/pages/core-work-permit.d.mts.map +1 -0
- package/dist/pages/core-work-permit.mjs +281 -0
- package/dist/pages/core-work-permit.mjs.map +1 -0
- package/dist/pages/core-workforce.d.mts +24 -0
- package/dist/pages/core-workforce.d.mts.map +1 -0
- package/dist/pages/core-workforce.mjs +1253 -0
- package/dist/pages/core-workforce.mjs.map +1 -0
- package/dist/pages/org-logos.d.mts +9 -0
- package/dist/pages/org-logos.d.mts.map +1 -0
- package/dist/pages/org-logos.mjs +11 -0
- package/dist/pages/org-logos.mjs.map +1 -0
- package/dist/pages/state-machine-fixtures.d.mts +34 -0
- package/dist/pages/state-machine-fixtures.d.mts.map +1 -0
- package/dist/pages/state-machine-fixtures.mjs +73 -0
- package/dist/pages/state-machine-fixtures.mjs.map +1 -0
- package/dist/pages/state-machine.d.mts +407 -0
- package/dist/pages/state-machine.d.mts.map +1 -0
- package/dist/pages/state-machine.mjs +2254 -0
- package/dist/pages/state-machine.mjs.map +1 -0
- package/dist/pages/typeform/AttachmentInput.d.mts +11 -0
- package/dist/pages/typeform/AttachmentInput.d.mts.map +1 -0
- package/dist/pages/typeform/AttachmentInput.mjs +59 -0
- package/dist/pages/typeform/AttachmentInput.mjs.map +1 -0
- package/dist/pages/typeform/BuildMethodScreen.d.mts +10 -0
- package/dist/pages/typeform/BuildMethodScreen.d.mts.map +1 -0
- package/dist/pages/typeform/BuildMethodScreen.mjs +176 -0
- package/dist/pages/typeform/BuildMethodScreen.mjs.map +1 -0
- package/dist/pages/typeform/BuilderFlow.d.mts +29 -0
- package/dist/pages/typeform/BuilderFlow.d.mts.map +1 -0
- package/dist/pages/typeform/BuilderFlow.mjs +111 -0
- package/dist/pages/typeform/BuilderFlow.mjs.map +1 -0
- package/dist/pages/typeform/BuilderScreen.d.mts +14 -0
- package/dist/pages/typeform/BuilderScreen.d.mts.map +1 -0
- package/dist/pages/typeform/BuilderScreen.mjs +668 -0
- package/dist/pages/typeform/BuilderScreen.mjs.map +1 -0
- package/dist/pages/typeform/DataSourceSelect.d.mts +13 -0
- package/dist/pages/typeform/DataSourceSelect.d.mts.map +1 -0
- package/dist/pages/typeform/DataSourceSelect.mjs +36 -0
- package/dist/pages/typeform/DataSourceSelect.mjs.map +1 -0
- package/dist/pages/typeform/DerivedCountDisplay.d.mts +10 -0
- package/dist/pages/typeform/DerivedCountDisplay.d.mts.map +1 -0
- package/dist/pages/typeform/DerivedCountDisplay.mjs +20 -0
- package/dist/pages/typeform/DerivedCountDisplay.mjs.map +1 -0
- package/dist/pages/typeform/FillerRJSF.d.mts +10 -0
- package/dist/pages/typeform/FillerRJSF.d.mts.map +1 -0
- package/dist/pages/typeform/FillerRJSF.mjs +314 -0
- package/dist/pages/typeform/FillerRJSF.mjs.map +1 -0
- package/dist/pages/typeform/FormBuilderWidgetRJSF.d.mts +9 -0
- package/dist/pages/typeform/FormBuilderWidgetRJSF.d.mts.map +1 -0
- package/dist/pages/typeform/FormBuilderWidgetRJSF.mjs +22 -0
- package/dist/pages/typeform/FormBuilderWidgetRJSF.mjs.map +1 -0
- package/dist/pages/typeform/PublishScreen.d.mts +18 -0
- package/dist/pages/typeform/PublishScreen.d.mts.map +1 -0
- package/dist/pages/typeform/PublishScreen.mjs +163 -0
- package/dist/pages/typeform/PublishScreen.mjs.map +1 -0
- package/dist/pages/typeform/QuestionInspector.d.mts +7 -0
- package/dist/pages/typeform/QuestionInspector.d.mts.map +1 -0
- package/dist/pages/typeform/QuestionInspector.mjs +749 -0
- package/dist/pages/typeform/QuestionInspector.mjs.map +1 -0
- package/dist/pages/typeform/QuestionRenderer.d.mts +23 -0
- package/dist/pages/typeform/QuestionRenderer.d.mts.map +1 -0
- package/dist/pages/typeform/QuestionRenderer.mjs +170 -0
- package/dist/pages/typeform/QuestionRenderer.mjs.map +1 -0
- package/dist/pages/typeform/RatingInput.d.mts +14 -0
- package/dist/pages/typeform/RatingInput.d.mts.map +1 -0
- package/dist/pages/typeform/RatingInput.mjs +58 -0
- package/dist/pages/typeform/RatingInput.mjs.map +1 -0
- package/dist/pages/typeform/RuleGroupEditor.d.mts +9 -0
- package/dist/pages/typeform/RuleGroupEditor.d.mts.map +1 -0
- package/dist/pages/typeform/RuleGroupEditor.mjs +183 -0
- package/dist/pages/typeform/RuleGroupEditor.mjs.map +1 -0
- package/dist/pages/typeform/SignaturePad.d.mts +11 -0
- package/dist/pages/typeform/SignaturePad.d.mts.map +1 -0
- package/dist/pages/typeform/SignaturePad.mjs +111 -0
- package/dist/pages/typeform/SignaturePad.mjs.map +1 -0
- package/dist/pages/typeform/TableInput.d.mts +15 -0
- package/dist/pages/typeform/TableInput.d.mts.map +1 -0
- package/dist/pages/typeform/TableInput.mjs +73 -0
- package/dist/pages/typeform/TableInput.mjs.map +1 -0
- package/dist/pages/typeform/WorkspaceScreen.d.mts +20 -0
- package/dist/pages/typeform/WorkspaceScreen.d.mts.map +1 -0
- package/dist/pages/typeform/WorkspaceScreen.mjs +158 -0
- package/dist/pages/typeform/WorkspaceScreen.mjs.map +1 -0
- package/dist/pages/typeform/coreRjsfTheme.d.mts +4 -0
- package/dist/pages/typeform/coreRjsfTheme.d.mts.map +1 -0
- package/dist/pages/typeform/coreRjsfTheme.mjs +142 -0
- package/dist/pages/typeform/coreRjsfTheme.mjs.map +1 -0
- package/dist/pages/typeform/dataSources.d.mts +35 -0
- package/dist/pages/typeform/dataSources.d.mts.map +1 -0
- package/dist/pages/typeform/dataSources.mjs +210 -0
- package/dist/pages/typeform/dataSources.mjs.map +1 -0
- package/dist/pages/typeform/fillerShared.d.mts +21 -0
- package/dist/pages/typeform/fillerShared.d.mts.map +1 -0
- package/dist/pages/typeform/fillerShared.mjs +112 -0
- package/dist/pages/typeform/fillerShared.mjs.map +1 -0
- package/dist/pages/typeform/logic.d.mts +46 -0
- package/dist/pages/typeform/logic.d.mts.map +1 -0
- package/dist/pages/typeform/logic.mjs +193 -0
- package/dist/pages/typeform/logic.mjs.map +1 -0
- package/dist/pages/typeform/model.d.mts +144 -0
- package/dist/pages/typeform/model.d.mts.map +1 -0
- package/dist/pages/typeform/model.mjs +328 -0
- package/dist/pages/typeform/model.mjs.map +1 -0
- package/dist/pages/typeform/schemaToJsonSchema.d.mts +9 -0
- package/dist/pages/typeform/schemaToJsonSchema.d.mts.map +1 -0
- package/dist/pages/typeform/schemaToJsonSchema.mjs +119 -0
- package/dist/pages/typeform/schemaToJsonSchema.mjs.map +1 -0
- package/dist/pages/typeform/useFormBuilder.d.mts +34 -0
- package/dist/pages/typeform/useFormBuilder.d.mts.map +1 -0
- package/dist/pages/typeform/useFormBuilder.mjs +389 -0
- package/dist/pages/typeform/useFormBuilder.mjs.map +1 -0
- package/dist/pages/view-mode-thumbs.d.mts +6 -0
- package/dist/pages/view-mode-thumbs.d.mts.map +1 -0
- package/dist/pages/view-mode-thumbs.mjs +8 -0
- package/dist/pages/view-mode-thumbs.mjs.map +1 -0
- package/dist/pages/wc3-action-type-detail.d.mts +166 -0
- package/dist/pages/wc3-action-type-detail.d.mts.map +1 -0
- package/dist/pages/wc3-action-type-detail.mjs +2182 -0
- package/dist/pages/wc3-action-type-detail.mjs.map +1 -0
- package/dist/pages/wc3-action-type-run-dialog.d.mts +23 -0
- package/dist/pages/wc3-action-type-run-dialog.d.mts.map +1 -0
- package/dist/pages/wc3-action-type-run-dialog.mjs +383 -0
- package/dist/pages/wc3-action-type-run-dialog.mjs.map +1 -0
- package/dist/pages/wc3-action-type-wizard.d.mts +75 -0
- package/dist/pages/wc3-action-type-wizard.d.mts.map +1 -0
- package/dist/pages/wc3-action-type-wizard.mjs +702 -0
- package/dist/pages/wc3-action-type-wizard.mjs.map +1 -0
- package/dist/pages/wc3-analysis-data-view.d.mts +15 -0
- package/dist/pages/wc3-analysis-data-view.d.mts.map +1 -0
- package/dist/pages/wc3-analysis-data-view.mjs +129 -0
- package/dist/pages/wc3-analysis-data-view.mjs.map +1 -0
- package/dist/pages/wc3-analysis-data.d.mts +181 -0
- package/dist/pages/wc3-analysis-data.d.mts.map +1 -0
- package/dist/pages/wc3-analysis-data.mjs +4074 -0
- package/dist/pages/wc3-analysis-data.mjs.map +1 -0
- package/dist/pages/wc3-analysis-object-view.d.mts +12 -0
- package/dist/pages/wc3-analysis-object-view.d.mts.map +1 -0
- package/dist/pages/wc3-analysis-object-view.mjs +196 -0
- package/dist/pages/wc3-analysis-object-view.mjs.map +1 -0
- package/dist/pages/wc3-analysis-saved-view.d.mts +6 -0
- package/dist/pages/wc3-analysis-saved-view.d.mts.map +1 -0
- package/dist/pages/wc3-analysis-saved-view.mjs +540 -0
- package/dist/pages/wc3-analysis-saved-view.mjs.map +1 -0
- package/dist/pages/wc3-analysis-shared.d.mts +346 -0
- package/dist/pages/wc3-analysis-shared.d.mts.map +1 -0
- package/dist/pages/wc3-analysis-shared.mjs +1119 -0
- package/dist/pages/wc3-analysis-shared.mjs.map +1 -0
- package/dist/pages/wc3-analysis-views.d.mts +25 -0
- package/dist/pages/wc3-analysis-views.d.mts.map +1 -0
- package/dist/pages/wc3-analysis-views.mjs +48 -0
- package/dist/pages/wc3-analysis-views.mjs.map +1 -0
- package/dist/pages/wc3-fs-data.d.mts +12 -0
- package/dist/pages/wc3-fs-data.d.mts.map +1 -0
- package/dist/pages/wc3-fs-data.mjs +745 -0
- package/dist/pages/wc3-fs-data.mjs.map +1 -0
- package/dist/pages/wc3-fs-location-field.d.mts +13 -0
- package/dist/pages/wc3-fs-location-field.d.mts.map +1 -0
- package/dist/pages/wc3-fs-location-field.mjs +56 -0
- package/dist/pages/wc3-fs-location-field.mjs.map +1 -0
- package/dist/pages/wc3-fs-path-label.d.mts +12 -0
- package/dist/pages/wc3-fs-path-label.d.mts.map +1 -0
- package/dist/pages/wc3-fs-path-label.mjs +36 -0
- package/dist/pages/wc3-fs-path-label.mjs.map +1 -0
- package/dist/pages/wc3-fs-records.d.mts +17 -0
- package/dist/pages/wc3-fs-records.d.mts.map +1 -0
- package/dist/pages/wc3-fs-records.mjs +107 -0
- package/dist/pages/wc3-fs-records.mjs.map +1 -0
- package/dist/pages/wc3-fs-store.d.mts +43 -0
- package/dist/pages/wc3-fs-store.d.mts.map +1 -0
- package/dist/pages/wc3-fs-store.mjs +81 -0
- package/dist/pages/wc3-fs-store.mjs.map +1 -0
- package/dist/pages/wc3-fs-types.d.mts +19 -0
- package/dist/pages/wc3-fs-types.d.mts.map +1 -0
- package/dist/pages/wc3-fs-types.mjs +66 -0
- package/dist/pages/wc3-fs-types.mjs.map +1 -0
- package/dist/pages/wc3-graph-explorer-flow.d.mts +14 -0
- package/dist/pages/wc3-graph-explorer-flow.d.mts.map +1 -0
- package/dist/pages/wc3-graph-explorer-flow.mjs +275 -0
- package/dist/pages/wc3-graph-explorer-flow.mjs.map +1 -0
- package/dist/pages/wc3-group-detail.d.mts +26 -0
- package/dist/pages/wc3-group-detail.d.mts.map +1 -0
- package/dist/pages/wc3-group-detail.mjs +358 -0
- package/dist/pages/wc3-group-detail.mjs.map +1 -0
- package/dist/pages/wc3-group-wizard.d.mts +28 -0
- package/dist/pages/wc3-group-wizard.d.mts.map +1 -0
- package/dist/pages/wc3-group-wizard.mjs +120 -0
- package/dist/pages/wc3-group-wizard.mjs.map +1 -0
- package/dist/pages/wc3-health-view.d.mts +34 -0
- package/dist/pages/wc3-health-view.d.mts.map +1 -0
- package/dist/pages/wc3-health-view.mjs +413 -0
- package/dist/pages/wc3-health-view.mjs.map +1 -0
- package/dist/pages/wc3-home-view.d.mts +24 -0
- package/dist/pages/wc3-home-view.d.mts.map +1 -0
- package/dist/pages/wc3-home-view.mjs +59 -0
- package/dist/pages/wc3-home-view.mjs.map +1 -0
- package/dist/pages/wc3-interface-detail.d.mts +66 -0
- package/dist/pages/wc3-interface-detail.d.mts.map +1 -0
- package/dist/pages/wc3-interface-detail.mjs +1060 -0
- package/dist/pages/wc3-interface-detail.mjs.map +1 -0
- package/dist/pages/wc3-interface-wizard.d.mts +39 -0
- package/dist/pages/wc3-interface-wizard.d.mts.map +1 -0
- package/dist/pages/wc3-interface-wizard.mjs +226 -0
- package/dist/pages/wc3-interface-wizard.mjs.map +1 -0
- package/dist/pages/wc3-lineage-data-view.d.mts +6 -0
- package/dist/pages/wc3-lineage-data-view.d.mts.map +1 -0
- package/dist/pages/wc3-lineage-data-view.mjs +481 -0
- package/dist/pages/wc3-lineage-data-view.mjs.map +1 -0
- package/dist/pages/wc3-lineage-data.d.mts +191 -0
- package/dist/pages/wc3-lineage-data.d.mts.map +1 -0
- package/dist/pages/wc3-lineage-data.mjs +1061 -0
- package/dist/pages/wc3-lineage-data.mjs.map +1 -0
- package/dist/pages/wc3-lineage-impact-view.d.mts +13 -0
- package/dist/pages/wc3-lineage-impact-view.d.mts.map +1 -0
- package/dist/pages/wc3-lineage-impact-view.mjs +247 -0
- package/dist/pages/wc3-lineage-impact-view.mjs.map +1 -0
- package/dist/pages/wc3-lineage-shared.d.mts +137 -0
- package/dist/pages/wc3-lineage-shared.d.mts.map +1 -0
- package/dist/pages/wc3-lineage-shared.mjs +150 -0
- package/dist/pages/wc3-lineage-shared.mjs.map +1 -0
- package/dist/pages/wc3-lineage-views.d.mts +7 -0
- package/dist/pages/wc3-lineage-views.d.mts.map +1 -0
- package/dist/pages/wc3-lineage-views.mjs +13 -0
- package/dist/pages/wc3-lineage-views.mjs.map +1 -0
- package/dist/pages/wc3-lineage-workflow-view.d.mts +12 -0
- package/dist/pages/wc3-lineage-workflow-view.d.mts.map +1 -0
- package/dist/pages/wc3-lineage-workflow-view.mjs +326 -0
- package/dist/pages/wc3-lineage-workflow-view.mjs.map +1 -0
- package/dist/pages/wc3-object-type-detail.d.mts +18 -0
- package/dist/pages/wc3-object-type-detail.d.mts.map +1 -0
- package/dist/pages/wc3-object-type-detail.mjs +977 -0
- package/dist/pages/wc3-object-type-detail.mjs.map +1 -0
- package/dist/pages/wc3-ontology-data.d.mts +246 -0
- package/dist/pages/wc3-ontology-data.d.mts.map +1 -0
- package/dist/pages/wc3-ontology-data.mjs +8542 -0
- package/dist/pages/wc3-ontology-data.mjs.map +1 -0
- package/dist/pages/wc3-ontology-glyphs.d.mts +14 -0
- package/dist/pages/wc3-ontology-glyphs.d.mts.map +1 -0
- package/dist/pages/wc3-ontology-glyphs.mjs +53 -0
- package/dist/pages/wc3-ontology-glyphs.mjs.map +1 -0
- package/dist/pages/wc3-ontology-scope.d.mts +62 -0
- package/dist/pages/wc3-ontology-scope.d.mts.map +1 -0
- package/dist/pages/wc3-ontology-scope.mjs +109 -0
- package/dist/pages/wc3-ontology-scope.mjs.map +1 -0
- package/dist/pages/wc3-ontology-views.d.mts +34 -0
- package/dist/pages/wc3-ontology-views.d.mts.map +1 -0
- package/dist/pages/wc3-ontology-views.mjs +1253 -0
- package/dist/pages/wc3-ontology-views.mjs.map +1 -0
- package/dist/pages/wc3-permit-policy.d.mts +56 -0
- package/dist/pages/wc3-permit-policy.d.mts.map +1 -0
- package/dist/pages/wc3-permit-policy.mjs +478 -0
- package/dist/pages/wc3-permit-policy.mjs.map +1 -0
- package/dist/pages/wc3-pipeline-detail.d.mts +13 -0
- package/dist/pages/wc3-pipeline-detail.d.mts.map +1 -0
- package/dist/pages/wc3-pipeline-detail.mjs +818 -0
- package/dist/pages/wc3-pipeline-detail.mjs.map +1 -0
- package/dist/pages/wc3-pipeline-list-view.d.mts +5 -0
- package/dist/pages/wc3-pipeline-list-view.d.mts.map +1 -0
- package/dist/pages/wc3-pipeline-list-view.mjs +692 -0
- package/dist/pages/wc3-pipeline-list-view.mjs.map +1 -0
- package/dist/pages/wc3-pipeline-shared.d.mts +301 -0
- package/dist/pages/wc3-pipeline-shared.d.mts.map +1 -0
- package/dist/pages/wc3-pipeline-shared.mjs +703 -0
- package/dist/pages/wc3-pipeline-shared.mjs.map +1 -0
- package/dist/pages/wc3-pipeline-side-views.d.mts +7 -0
- package/dist/pages/wc3-pipeline-side-views.d.mts.map +1 -0
- package/dist/pages/wc3-pipeline-side-views.mjs +998 -0
- package/dist/pages/wc3-pipeline-side-views.mjs.map +1 -0
- package/dist/pages/wc3-pipeline-views.d.mts +15 -0
- package/dist/pages/wc3-pipeline-views.d.mts.map +1 -0
- package/dist/pages/wc3-pipeline-views.mjs +23 -0
- package/dist/pages/wc3-pipeline-views.mjs.map +1 -0
- package/dist/pages/wc3-process-bottlenecks.d.mts +22 -0
- package/dist/pages/wc3-process-bottlenecks.d.mts.map +1 -0
- package/dist/pages/wc3-process-bottlenecks.mjs +352 -0
- package/dist/pages/wc3-process-bottlenecks.mjs.map +1 -0
- package/dist/pages/wc3-process-create.d.mts +24 -0
- package/dist/pages/wc3-process-create.d.mts.map +1 -0
- package/dist/pages/wc3-process-create.mjs +230 -0
- package/dist/pages/wc3-process-create.mjs.map +1 -0
- package/dist/pages/wc3-process-data.d.mts +238 -0
- package/dist/pages/wc3-process-data.d.mts.map +1 -0
- package/dist/pages/wc3-process-data.mjs +2251 -0
- package/dist/pages/wc3-process-data.mjs.map +1 -0
- package/dist/pages/wc3-process-detail.d.mts +21 -0
- package/dist/pages/wc3-process-detail.d.mts.map +1 -0
- package/dist/pages/wc3-process-detail.mjs +21 -0
- package/dist/pages/wc3-process-detail.mjs.map +1 -0
- package/dist/pages/wc3-process-list-view.d.mts +5 -0
- package/dist/pages/wc3-process-list-view.d.mts.map +1 -0
- package/dist/pages/wc3-process-list-view.mjs +602 -0
- package/dist/pages/wc3-process-list-view.mjs.map +1 -0
- package/dist/pages/wc3-process-shared.d.mts +443 -0
- package/dist/pages/wc3-process-shared.d.mts.map +1 -0
- package/dist/pages/wc3-process-shared.mjs +980 -0
- package/dist/pages/wc3-process-shared.mjs.map +1 -0
- package/dist/pages/wc3-process-views.d.mts +19 -0
- package/dist/pages/wc3-process-views.d.mts.map +1 -0
- package/dist/pages/wc3-process-views.mjs +23 -0
- package/dist/pages/wc3-process-views.mjs.map +1 -0
- package/dist/pages/wc3-product-catalogue-view.d.mts +5 -0
- package/dist/pages/wc3-product-catalogue-view.d.mts.map +1 -0
- package/dist/pages/wc3-product-catalogue-view.mjs +587 -0
- package/dist/pages/wc3-product-catalogue-view.mjs.map +1 -0
- package/dist/pages/wc3-product-data.d.mts +206 -0
- package/dist/pages/wc3-product-data.d.mts.map +1 -0
- package/dist/pages/wc3-product-data.mjs +2669 -0
- package/dist/pages/wc3-product-data.mjs.map +1 -0
- package/dist/pages/wc3-product-detail.d.mts +31 -0
- package/dist/pages/wc3-product-detail.d.mts.map +1 -0
- package/dist/pages/wc3-product-detail.mjs +1137 -0
- package/dist/pages/wc3-product-detail.mjs.map +1 -0
- package/dist/pages/wc3-product-install-dialog.d.mts +99 -0
- package/dist/pages/wc3-product-install-dialog.d.mts.map +1 -0
- package/dist/pages/wc3-product-install-dialog.mjs +808 -0
- package/dist/pages/wc3-product-install-dialog.mjs.map +1 -0
- package/dist/pages/wc3-product-shared.d.mts +152 -0
- package/dist/pages/wc3-product-shared.d.mts.map +1 -0
- package/dist/pages/wc3-product-shared.mjs +268 -0
- package/dist/pages/wc3-product-shared.mjs.map +1 -0
- package/dist/pages/wc3-product-views.d.mts +7 -0
- package/dist/pages/wc3-product-views.d.mts.map +1 -0
- package/dist/pages/wc3-product-views.mjs +7 -0
- package/dist/pages/wc3-product-views.mjs.map +1 -0
- package/dist/pages/wc3-shared-property-detail.d.mts +95 -0
- package/dist/pages/wc3-shared-property-detail.d.mts.map +1 -0
- package/dist/pages/wc3-shared-property-detail.mjs +546 -0
- package/dist/pages/wc3-shared-property-detail.mjs.map +1 -0
- package/dist/pages/wc3-shared-property-view.d.mts +10 -0
- package/dist/pages/wc3-shared-property-view.d.mts.map +1 -0
- package/dist/pages/wc3-shared-property-view.mjs +455 -0
- package/dist/pages/wc3-shared-property-view.mjs.map +1 -0
- package/dist/pages/wc3-shared-property-wizard.d.mts +31 -0
- package/dist/pages/wc3-shared-property-wizard.d.mts.map +1 -0
- package/dist/pages/wc3-shared-property-wizard.mjs +181 -0
- package/dist/pages/wc3-shared-property-wizard.mjs.map +1 -0
- package/dist/pages/work-permit-templates.d.mts +30 -0
- package/dist/pages/work-permit-templates.d.mts.map +1 -0
- package/dist/pages/work-permit-templates.mjs +793 -0
- package/dist/pages/work-permit-templates.mjs.map +1 -0
- package/dist/pages/workforce-analytics.d.mts +11 -0
- package/dist/pages/workforce-analytics.d.mts.map +1 -0
- package/dist/pages/workforce-analytics.mjs +561 -0
- package/dist/pages/workforce-analytics.mjs.map +1 -0
- package/dist/pages/workforce-compliance-settings.d.mts +9 -0
- package/dist/pages/workforce-compliance-settings.d.mts.map +1 -0
- package/dist/pages/workforce-compliance-settings.mjs +375 -0
- package/dist/pages/workforce-compliance-settings.mjs.map +1 -0
- package/dist/pages/workforce-compliance.d.mts +81 -0
- package/dist/pages/workforce-compliance.d.mts.map +1 -0
- package/dist/pages/workforce-compliance.mjs +805 -0
- package/dist/pages/workforce-compliance.mjs.map +1 -0
- package/dist/pages/workforce-crews.d.mts +5 -0
- package/dist/pages/workforce-crews.d.mts.map +1 -0
- package/dist/pages/workforce-crews.mjs +1091 -0
- package/dist/pages/workforce-crews.mjs.map +1 -0
- package/dist/pages/workforce-map-view.d.mts +8 -0
- package/dist/pages/workforce-map-view.d.mts.map +1 -0
- package/dist/pages/workforce-map-view.mjs +953 -0
- package/dist/pages/workforce-map-view.mjs.map +1 -0
- package/dist/pages/workforce-obs.d.mts +5 -0
- package/dist/pages/workforce-obs.d.mts.map +1 -0
- package/dist/pages/workforce-obs.mjs +649 -0
- package/dist/pages/workforce-obs.mjs.map +1 -0
- package/dist/pagination.d.mts +32 -0
- package/dist/pagination.d.mts.map +1 -0
- package/dist/pagination.mjs +67 -0
- package/dist/pagination.mjs.map +1 -0
- package/dist/permission-matrix.d.mts +43 -0
- package/dist/permission-matrix.d.mts.map +1 -0
- package/dist/permission-matrix.mjs +146 -0
- package/dist/permission-matrix.mjs.map +1 -0
- package/dist/popover.d.mts +19 -0
- package/dist/popover.d.mts.map +1 -0
- package/dist/popover.mjs +31 -0
- package/dist/popover.mjs.map +1 -0
- package/dist/product-package-detail.d.mts +173 -0
- package/dist/product-package-detail.d.mts.map +1 -0
- package/dist/product-package-detail.mjs +521 -0
- package/dist/product-package-detail.mjs.map +1 -0
- package/dist/progress-comparison.d.mts +93 -0
- package/dist/progress-comparison.d.mts.map +1 -0
- package/dist/progress-comparison.mjs +253 -0
- package/dist/progress-comparison.mjs.map +1 -0
- package/dist/progress-list-item.d.mts +46 -0
- package/dist/progress-list-item.d.mts.map +1 -0
- package/dist/progress-list-item.mjs +79 -0
- package/dist/progress-list-item.mjs.map +1 -0
- package/dist/progress-sheet.d.mts +39 -0
- package/dist/progress-sheet.d.mts.map +1 -0
- package/dist/progress-sheet.mjs +760 -0
- package/dist/progress-sheet.mjs.map +1 -0
- package/dist/progress-stat.d.mts +26 -0
- package/dist/progress-stat.d.mts.map +1 -0
- package/dist/progress-stat.mjs +54 -0
- package/dist/progress-stat.mjs.map +1 -0
- package/dist/progress.d.mts +13 -0
- package/dist/progress.d.mts.map +1 -0
- package/dist/progress.mjs +32 -0
- package/dist/progress.mjs.map +1 -0
- package/dist/prompt-input.d.mts +108 -0
- package/dist/prompt-input.d.mts.map +1 -0
- package/dist/prompt-input.mjs +400 -0
- package/dist/prompt-input.mjs.map +1 -0
- package/dist/property-list.d.mts +37 -0
- package/dist/property-list.d.mts.map +1 -0
- package/dist/property-list.mjs +60 -0
- package/dist/property-list.mjs.map +1 -0
- package/dist/push-panel.d.mts +75 -0
- package/dist/push-panel.d.mts.map +1 -0
- package/dist/push-panel.mjs +182 -0
- package/dist/push-panel.mjs.map +1 -0
- package/dist/radio-group.d.mts +9 -0
- package/dist/radio-group.d.mts.map +1 -0
- package/dist/radio-group.mjs +27 -0
- package/dist/radio-group.mjs.map +1 -0
- package/dist/record-detail-shell.d.mts +46 -0
- package/dist/record-detail-shell.d.mts.map +1 -0
- package/dist/record-detail-shell.mjs +29 -0
- package/dist/record-detail-shell.mjs.map +1 -0
- package/dist/resizable.d.mts +11 -0
- package/dist/resizable.d.mts.map +1 -0
- package/dist/resizable.mjs +23 -0
- package/dist/resizable.mjs.map +1 -0
- package/dist/resize-handle.d.mts +19 -0
- package/dist/resize-handle.d.mts.map +1 -0
- package/dist/resize-handle.mjs +45 -0
- package/dist/resize-handle.mjs.map +1 -0
- package/dist/responder-detail-panel.d.mts +72 -0
- package/dist/responder-detail-panel.d.mts.map +1 -0
- package/dist/responder-detail-panel.mjs +232 -0
- package/dist/responder-detail-panel.mjs.map +1 -0
- package/dist/rule-row.d.mts +63 -0
- package/dist/rule-row.d.mts.map +1 -0
- package/dist/rule-row.mjs +97 -0
- package/dist/rule-row.mjs.map +1 -0
- package/dist/schedule-week-bar.d.mts +24 -0
- package/dist/schedule-week-bar.d.mts.map +1 -0
- package/dist/schedule-week-bar.mjs +99 -0
- package/dist/schedule-week-bar.mjs.map +1 -0
- package/dist/score-gauge.d.mts +24 -0
- package/dist/score-gauge.d.mts.map +1 -0
- package/dist/score-gauge.mjs +73 -0
- package/dist/score-gauge.mjs.map +1 -0
- package/dist/scroll-area.d.mts +27 -0
- package/dist/scroll-area.d.mts.map +1 -0
- package/dist/scroll-area.mjs +35 -0
- package/dist/scroll-area.mjs.map +1 -0
- package/dist/search-filter-bar.d.mts +22 -0
- package/dist/search-filter-bar.d.mts.map +1 -0
- package/dist/search-filter-bar.mjs +56 -0
- package/dist/search-filter-bar.mjs.map +1 -0
- package/dist/section-header.d.mts +22 -0
- package/dist/section-header.d.mts.map +1 -0
- package/dist/section-header.mjs +32 -0
- package/dist/section-header.mjs.map +1 -0
- package/dist/section-panel.d.mts +47 -0
- package/dist/section-panel.d.mts.map +1 -0
- package/dist/section-panel.mjs +78 -0
- package/dist/section-panel.mjs.map +1 -0
- package/dist/section.d.mts +15 -0
- package/dist/section.d.mts.map +1 -0
- package/dist/section.mjs +34 -0
- package/dist/section.mjs.map +1 -0
- package/dist/segmented-control.d.mts +26 -0
- package/dist/segmented-control.d.mts.map +1 -0
- package/dist/segmented-control.mjs +70 -0
- package/dist/segmented-control.mjs.map +1 -0
- package/dist/select.d.mts +87 -0
- package/dist/select.d.mts.map +1 -0
- package/dist/select.mjs +280 -0
- package/dist/select.mjs.map +1 -0
- package/dist/selectable-card.d.mts +39 -0
- package/dist/selectable-card.d.mts.map +1 -0
- package/dist/selectable-card.mjs +102 -0
- package/dist/selectable-card.mjs.map +1 -0
- package/dist/separator.d.mts +8 -0
- package/dist/separator.d.mts.map +1 -0
- package/dist/separator.mjs +18 -0
- package/dist/separator.mjs.map +1 -0
- package/dist/services/chatService.d.mts +11 -0
- package/dist/services/chatService.d.mts.map +1 -0
- package/dist/services/chatService.mjs +44 -0
- package/dist/services/chatService.mjs.map +1 -0
- package/dist/setup-steps-checklist.d.mts +50 -0
- package/dist/setup-steps-checklist.d.mts.map +1 -0
- package/dist/setup-steps-checklist.mjs +183 -0
- package/dist/setup-steps-checklist.mjs.map +1 -0
- package/dist/sheet.d.mts +41 -0
- package/dist/sheet.d.mts.map +1 -0
- package/dist/sheet.mjs +71 -0
- package/dist/sheet.mjs.map +1 -0
- package/dist/side-menu.d.mts +61 -0
- package/dist/side-menu.d.mts.map +1 -0
- package/dist/side-menu.mjs +160 -0
- package/dist/side-menu.mjs.map +1 -0
- package/dist/sidebar.d.mts +36 -0
- package/dist/sidebar.d.mts.map +1 -0
- package/dist/sidebar.mjs +159 -0
- package/dist/sidebar.mjs.map +1 -0
- package/dist/single-house-view.d.mts +13 -0
- package/dist/single-house-view.d.mts.map +1 -0
- package/dist/single-house-view.mjs +506 -0
- package/dist/single-house-view.mjs.map +1 -0
- package/dist/site-image-viewer/batches.mjs +362 -0
- package/dist/site-image-viewer/batches.mjs.map +1 -0
- package/dist/site-image-viewer/blocks-zone-1a.mjs +1815 -0
- package/dist/site-image-viewer/blocks-zone-1a.mjs.map +1 -0
- package/dist/site-image-viewer/blocks-zone-1b.mjs +2623 -0
- package/dist/site-image-viewer/blocks-zone-1b.mjs.map +1 -0
- package/dist/site-image-viewer/legend-items.d.mts +6 -0
- package/dist/site-image-viewer/legend-items.d.mts.map +1 -0
- package/dist/site-image-viewer/legend-items.mjs +104 -0
- package/dist/site-image-viewer/legend-items.mjs.map +1 -0
- package/dist/site-image-viewer/milestone-ramp.d.mts +81 -0
- package/dist/site-image-viewer/milestone-ramp.d.mts.map +1 -0
- package/dist/site-image-viewer/milestone-ramp.mjs +112 -0
- package/dist/site-image-viewer/milestone-ramp.mjs.map +1 -0
- package/dist/site-image-viewer/phases.mjs +60 -0
- package/dist/site-image-viewer/phases.mjs.map +1 -0
- package/dist/site-image-viewer/site-legend.d.mts +20 -0
- package/dist/site-image-viewer/site-legend.d.mts.map +1 -0
- package/dist/site-image-viewer/site-legend.mjs +113 -0
- package/dist/site-image-viewer/site-legend.mjs.map +1 -0
- package/dist/site-image-viewer/types.d.mts +32 -0
- package/dist/site-image-viewer/types.d.mts.map +1 -0
- package/dist/site-image-viewer/types.mjs +1 -0
- package/dist/site-image-viewer/villa-hover-card.d.mts +15 -0
- package/dist/site-image-viewer/villa-hover-card.d.mts.map +1 -0
- package/dist/site-image-viewer/villa-hover-card.mjs +48 -0
- package/dist/site-image-viewer/villa-hover-card.mjs.map +1 -0
- package/dist/site-image-viewer/villas.mjs +34494 -0
- package/dist/site-image-viewer/villas.mjs.map +1 -0
- package/dist/site-image-viewer/zone1b-villas.mjs +36211 -0
- package/dist/site-image-viewer/zone1b-villas.mjs.map +1 -0
- package/dist/site-image-viewer/zones-marketing.mjs +114 -0
- package/dist/site-image-viewer/zones-marketing.mjs.map +1 -0
- package/dist/site-image-viewer/zones.mjs +114 -0
- package/dist/site-image-viewer/zones.mjs.map +1 -0
- package/dist/site-image-viewer-fixtures.d.mts +44 -0
- package/dist/site-image-viewer-fixtures.d.mts.map +1 -0
- package/dist/site-image-viewer-fixtures.mjs +112 -0
- package/dist/site-image-viewer-fixtures.mjs.map +1 -0
- package/dist/site-image-viewer.d.mts +98 -0
- package/dist/site-image-viewer.d.mts.map +1 -0
- package/dist/site-image-viewer.mjs +501 -0
- package/dist/site-image-viewer.mjs.map +1 -0
- package/dist/site-panel.d.mts +123 -0
- package/dist/site-panel.d.mts.map +1 -0
- package/dist/site-panel.mjs +1413 -0
- package/dist/site-panel.mjs.map +1 -0
- package/dist/site-reality-viewer.d.mts +46 -0
- package/dist/site-reality-viewer.d.mts.map +1 -0
- package/dist/site-reality-viewer.mjs +436 -0
- package/dist/site-reality-viewer.mjs.map +1 -0
- package/dist/site-toolbar.d.mts +54 -0
- package/dist/site-toolbar.d.mts.map +1 -0
- package/dist/site-toolbar.mjs +110 -0
- package/dist/site-toolbar.mjs.map +1 -0
- package/dist/skeleton.d.mts +6 -0
- package/dist/skeleton.d.mts.map +1 -0
- package/dist/skeleton.mjs +14 -0
- package/dist/skeleton.mjs.map +1 -0
- package/dist/slider.d.mts +8 -0
- package/dist/slider.d.mts.map +1 -0
- package/dist/slider.mjs +20 -0
- package/dist/slider.mjs.map +1 -0
- package/dist/sonner.d.mts +8 -0
- package/dist/sonner.d.mts.map +1 -0
- package/dist/sonner.mjs +20 -0
- package/dist/sonner.mjs.map +1 -0
- package/dist/spinner.d.mts +12 -0
- package/dist/spinner.d.mts.map +1 -0
- package/dist/spinner.mjs +38 -0
- package/dist/spinner.mjs.map +1 -0
- package/dist/stack.d.mts +18 -0
- package/dist/stack.d.mts.map +1 -0
- package/dist/stack.mjs +61 -0
- package/dist/stack.mjs.map +1 -0
- package/dist/stage-content.d.mts +13 -0
- package/dist/stage-content.d.mts.map +1 -0
- package/dist/stage-content.mjs +664 -0
- package/dist/stage-content.mjs.map +1 -0
- package/dist/status-dot.d.mts +18 -0
- package/dist/status-dot.d.mts.map +1 -0
- package/dist/status-dot.mjs +89 -0
- package/dist/status-dot.mjs.map +1 -0
- package/dist/stepper.d.mts +19 -0
- package/dist/stepper.d.mts.map +1 -0
- package/dist/stepper.mjs +113 -0
- package/dist/stepper.mjs.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/styles.tw4.css +1 -0
- package/dist/switch.d.mts +12 -0
- package/dist/switch.d.mts.map +1 -0
- package/dist/switch.mjs +17 -0
- package/dist/switch.mjs.map +1 -0
- package/dist/tab-list.d.mts +33 -0
- package/dist/tab-list.d.mts.map +1 -0
- package/dist/tab-list.mjs +90 -0
- package/dist/tab-list.mjs.map +1 -0
- package/dist/table.d.mts +14 -0
- package/dist/table.d.mts.map +1 -0
- package/dist/table.mjs +60 -0
- package/dist/table.mjs.map +1 -0
- package/dist/tabs.d.mts +42 -0
- package/dist/tabs.d.mts.map +1 -0
- package/dist/tabs.mjs +258 -0
- package/dist/tabs.mjs.map +1 -0
- package/dist/task-monitor.d.mts +70 -0
- package/dist/task-monitor.d.mts.map +1 -0
- package/dist/task-monitor.mjs +319 -0
- package/dist/task-monitor.mjs.map +1 -0
- package/dist/text.d.mts +18 -0
- package/dist/text.d.mts.map +1 -0
- package/dist/text.mjs +60 -0
- package/dist/text.mjs.map +1 -0
- package/dist/textarea.d.mts +7 -0
- package/dist/textarea.d.mts.map +1 -0
- package/dist/textarea.mjs +15 -0
- package/dist/textarea.mjs.map +1 -0
- package/dist/thinking-pill.d.mts +15 -0
- package/dist/thinking-pill.d.mts.map +1 -0
- package/dist/thinking-pill.mjs +28 -0
- package/dist/thinking-pill.mjs.map +1 -0
- package/dist/thumbnail.d.mts +20 -0
- package/dist/thumbnail.d.mts.map +1 -0
- package/dist/thumbnail.mjs +81 -0
- package/dist/thumbnail.mjs.map +1 -0
- package/dist/time-input.d.mts +15 -0
- package/dist/time-input.d.mts.map +1 -0
- package/dist/time-input.mjs +21 -0
- package/dist/time-input.mjs.map +1 -0
- package/dist/time-scrubber.d.mts +93 -0
- package/dist/time-scrubber.d.mts.map +1 -0
- package/dist/time-scrubber.mjs +420 -0
- package/dist/time-scrubber.mjs.map +1 -0
- package/dist/timeline-range-selector.d.mts +30 -0
- package/dist/timeline-range-selector.d.mts.map +1 -0
- package/dist/timeline-range-selector.mjs +232 -0
- package/dist/timeline-range-selector.mjs.map +1 -0
- package/dist/timestamp-picker.d.mts +32 -0
- package/dist/timestamp-picker.d.mts.map +1 -0
- package/dist/timestamp-picker.mjs +143 -0
- package/dist/timestamp-picker.mjs.map +1 -0
- package/dist/timestamp.d.mts +15 -0
- package/dist/timestamp.d.mts.map +1 -0
- package/dist/timestamp.mjs +61 -0
- package/dist/timestamp.mjs.map +1 -0
- package/dist/toast.d.mts +18 -0
- package/dist/toast.d.mts.map +1 -0
- package/dist/toast.mjs +59 -0
- package/dist/toast.mjs.map +1 -0
- package/dist/toaster.d.mts +5 -0
- package/dist/toaster.d.mts.map +1 -0
- package/dist/toaster.mjs +23 -0
- package/dist/toaster.mjs.map +1 -0
- package/dist/toggle-group.d.mts +16 -0
- package/dist/toggle-group.d.mts.map +1 -0
- package/dist/toggle-group.mjs +41 -0
- package/dist/toggle-group.mjs.map +1 -0
- package/dist/toggle.d.mts +16 -0
- package/dist/toggle.d.mts.map +1 -0
- package/dist/toggle.mjs +38 -0
- package/dist/toggle.mjs.map +1 -0
- package/dist/tokenizer.d.mts +23 -0
- package/dist/tokenizer.d.mts.map +1 -0
- package/dist/tokenizer.mjs +87 -0
- package/dist/tokenizer.mjs.map +1 -0
- package/dist/tones.d.mts +59 -0
- package/dist/tones.d.mts.map +1 -0
- package/dist/tones.mjs +177 -0
- package/dist/tones.mjs.map +1 -0
- package/dist/tool-call.d.mts +29 -0
- package/dist/tool-call.d.mts.map +1 -0
- package/dist/tool-call.mjs +89 -0
- package/dist/tool-call.mjs.map +1 -0
- package/dist/toolbar-color-picker.d.mts +50 -0
- package/dist/toolbar-color-picker.d.mts.map +1 -0
- package/dist/toolbar-color-picker.mjs +238 -0
- package/dist/toolbar-color-picker.mjs.map +1 -0
- package/dist/toolbar-pager.d.mts +17 -0
- package/dist/toolbar-pager.d.mts.map +1 -0
- package/dist/toolbar-pager.mjs +40 -0
- package/dist/toolbar-pager.mjs.map +1 -0
- package/dist/toolbar-stats.d.mts +34 -0
- package/dist/toolbar-stats.d.mts.map +1 -0
- package/dist/toolbar-stats.mjs +53 -0
- package/dist/toolbar-stats.mjs.map +1 -0
- package/dist/toolbar.d.mts +98 -0
- package/dist/toolbar.d.mts.map +1 -0
- package/dist/toolbar.mjs +86 -0
- package/dist/toolbar.mjs.map +1 -0
- package/dist/tooltip.d.mts +30 -0
- package/dist/tooltip.d.mts.map +1 -0
- package/dist/tooltip.mjs +83 -0
- package/dist/tooltip.mjs.map +1 -0
- package/dist/tree-list.d.mts +38 -0
- package/dist/tree-list.d.mts.map +1 -0
- package/dist/tree-list.mjs +95 -0
- package/dist/tree-list.mjs.map +1 -0
- package/dist/tree-row.d.mts +84 -0
- package/dist/tree-row.d.mts.map +1 -0
- package/dist/tree-row.mjs +150 -0
- package/dist/tree-row.mjs.map +1 -0
- package/dist/trend-chart.d.mts +28 -0
- package/dist/trend-chart.d.mts.map +1 -0
- package/dist/trend-chart.mjs +33 -0
- package/dist/trend-chart.mjs.map +1 -0
- package/dist/turn-timer.d.mts +23 -0
- package/dist/turn-timer.d.mts.map +1 -0
- package/dist/turn-timer.mjs +51 -0
- package/dist/turn-timer.mjs.map +1 -0
- package/dist/typeahead-item.d.mts +34 -0
- package/dist/typeahead-item.d.mts.map +1 -0
- package/dist/typeahead-item.mjs +74 -0
- package/dist/typeahead-item.mjs.map +1 -0
- package/dist/types/chat.d.mts +66 -0
- package/dist/types/chat.d.mts.map +1 -0
- package/dist/types/chat.mjs +1 -0
- package/dist/types.d.mts +44 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/types.mjs +49 -0
- package/dist/types.mjs.map +1 -0
- package/dist/typography.d.mts +17 -0
- package/dist/typography.d.mts.map +1 -0
- package/dist/typography.mjs +75 -0
- package/dist/typography.mjs.map +1 -0
- package/dist/use-debounced-value.d.mts +11 -0
- package/dist/use-debounced-value.d.mts.map +1 -0
- package/dist/use-debounced-value.mjs +25 -0
- package/dist/use-debounced-value.mjs.map +1 -0
- package/dist/use-document-dir.d.mts +15 -0
- package/dist/use-document-dir.d.mts.map +1 -0
- package/dist/use-document-dir.mjs +33 -0
- package/dist/use-document-dir.mjs.map +1 -0
- package/dist/use-persistent-state.d.mts +9 -0
- package/dist/use-persistent-state.d.mts.map +1 -0
- package/dist/use-persistent-state.mjs +29 -0
- package/dist/use-persistent-state.mjs.map +1 -0
- package/dist/use-toast.d.mts +47 -0
- package/dist/use-toast.d.mts.map +1 -0
- package/dist/use-toast.mjs +119 -0
- package/dist/use-toast.mjs.map +1 -0
- package/dist/vertical-zoom-tools.d.mts +27 -0
- package/dist/vertical-zoom-tools.d.mts.map +1 -0
- package/dist/vertical-zoom-tools.mjs +66 -0
- package/dist/vertical-zoom-tools.mjs.map +1 -0
- package/dist/view-tab-bar.d.mts +75 -0
- package/dist/view-tab-bar.d.mts.map +1 -0
- package/dist/view-tab-bar.mjs +80 -0
- package/dist/view-tab-bar.mjs.map +1 -0
- package/dist/viewer-toolbar.d.mts +41 -0
- package/dist/viewer-toolbar.d.mts.map +1 -0
- package/dist/viewer-toolbar.mjs +271 -0
- package/dist/viewer-toolbar.mjs.map +1 -0
- package/dist/violation-list.d.mts +26 -0
- package/dist/violation-list.d.mts.map +1 -0
- package/dist/violation-list.mjs +53 -0
- package/dist/violation-list.mjs.map +1 -0
- package/dist/walkthrough-modal.d.mts +12 -0
- package/dist/walkthrough-modal.d.mts.map +1 -0
- package/dist/walkthrough-modal.mjs +28 -0
- package/dist/walkthrough-modal.mjs.map +1 -0
- package/dist/walkthrough-tile.d.mts +17 -0
- package/dist/walkthrough-tile.d.mts.map +1 -0
- package/dist/walkthrough-tile.mjs +75 -0
- package/dist/walkthrough-tile.mjs.map +1 -0
- package/dist/week-selector.d.mts +45 -0
- package/dist/week-selector.d.mts.map +1 -0
- package/dist/week-selector.mjs +101 -0
- package/dist/week-selector.mjs.map +1 -0
- package/dist/widget-card.d.mts +18 -0
- package/dist/widget-card.d.mts.map +1 -0
- package/dist/widget-card.mjs +46 -0
- package/dist/widget-card.mjs.map +1 -0
- package/dist/wizard-dialog.d.mts +68 -0
- package/dist/wizard-dialog.d.mts.map +1 -0
- package/dist/wizard-dialog.mjs +108 -0
- package/dist/wizard-dialog.mjs.map +1 -0
- package/dist/work-item-card.d.mts +38 -0
- package/dist/work-item-card.d.mts.map +1 -0
- package/dist/work-item-card.mjs +231 -0
- package/dist/work-item-card.mjs.map +1 -0
- package/dist/worker-profile.d.mts +244 -0
- package/dist/worker-profile.d.mts.map +1 -0
- package/dist/worker-profile.mjs +621 -0
- package/dist/worker-profile.mjs.map +1 -0
- package/dist/zoom-tools.d.mts +29 -0
- package/dist/zoom-tools.d.mts.map +1 -0
- package/dist/zoom-tools.mjs +94 -0
- package/dist/zoom-tools.mjs.map +1 -0
- package/package.json +1792 -0
- package/skills/core-ui-charts/SKILL.md +243 -0
- package/skills/core-ui-chat/SKILL.md +260 -0
- package/skills/core-ui-components/SKILL.md +299 -0
- package/skills/core-ui-composition/SKILL.md +186 -0
- package/skills/core-ui-data-table/SKILL.md +243 -0
- package/skills/core-ui-forms/SKILL.md +289 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.mjs","names":[],"sources":["../../src/fragment-viewer/runtime.ts"],"sourcesContent":["import * as OBC from \"@thatopen/components\";\nimport * as OBF from \"@thatopen/components-front\";\nimport * as FRAGS from \"@thatopen/fragments\";\nimport * as THREE from \"three\";\n\nimport {Cinematic} from \"./cinematic\";\n\n/**\n * Fragments viewport: a container in, a navigable BIM model out.\n *\n * Framework-free on purpose — FragmentViewer is a thin React wrapper over this, the same way\n * `map.tsx` wraps mapbox-gl, and ViewerToolbar drives it through these same public methods.\n *\n * Built on @thatopen/components + components-front rather than raw three.js, because every control\n * a BIM viewer needs already exists there: orbit/first-person/plan navigation, ortho projection,\n * clipping planes, four measurement tools, hide/isolate, storey views, item data. Re-deriving those\n * would be weeks of work with worse results. The setup follows WC3's own 3.4.6 viewer.\n *\n * All three That Open packages are optional peer dependencies, reachable only through the\n * `@corensystem/coren-ui/fragment-viewer` subpath.\n */\n\n/**\n * Navigation modes offered to the user. Both sit on the SDK's \"Orbit\" mode: `Pan` simply drags the\n * camera on left-drag instead of rotating it, which is how CAD tools present it. The SDK's other\n * modes (FirstPerson, Plan) are deliberately not exposed — Plan overlaps with Levels, and\n * FirstPerson is a different product decision.\n */\nexport type NavigationMode = \"Orbit\" | \"Pan\";\nexport type MeasurementKind = \"length\" | \"area\" | \"angle\" | \"volume\";\n/** What a double-click does. `null` leaves clicks to plain selection. */\nexport type InteractionMode = \"section\" | MeasurementKind | null;\nexport type ProjectionMode = \"Perspective\" | \"Orthographic\";\nexport type FragmentViewportStatus = \"idle\" | \"loading\" | \"ready\" | \"error\";\n\nexport interface FragmentSelection {\n\t/** Number of highlighted elements across all models. */\n\titemCount: number;\n\t/** IFC category of the first picked element, when resolvable. */\n\tcategory?: string | null;\n\t/** IFC GUID of the first picked element, when resolvable. */\n\tguid?: string | null;\n\t/** Raw per-item data from Fragments, for callers wanting more than the summary. */\n\tdata: unknown[];\n}\n\n/** A point marker drawn in the model — a worker, sensor, or anything else with a position. */\nexport interface FragmentMarker {\n\tid: string;\n\t/** Position in the model's own coordinate frame, metres. */\n\tposition: [number, number, number];\n\t/** CSS colour. Defaults to the viewport's marker colour. */\n\tcolor?: string;\n}\n\n/** A storey view derived from the IFC spatial structure, for the Levels control. */\nexport interface FragmentStorey {\n\tid: string;\n\tname: string;\n\t/** World-space elevation of the floor, metres — lets callers place things on it (e.g. worker markers). */\n\televation: number;\n}\n\nexport interface FragmentViewportOptions {\n\t/** URL of the Fragments worker. Vite consumers: `import url from \"@thatopen/fragments/worker?url\"`. */\n\tworkerUrl: string;\n\t/** Scene background. `null` leaves the canvas transparent. */\n\tbackground?: string | null;\n\t/** Highlight colour for picked elements. */\n\tselectionColor?: string;\n\t/**\n\t * Show the underlying SDK logo over the canvas. The React wrapper defaults this to false; direct\n\t * runtime consumers may opt in explicitly.\n\t */\n\tshowLogo?: boolean;\n\t/**\n\t * Floor-only picking: a click selects the storey the element belongs to instead of the element\n\t * itself (no per-element highlight). The resolved storey id is reported via `onStoreyPick`.\n\t */\n\tselectFloorsOnly?: boolean;\n\t/** Fires when a click resolves to a storey (only in `selectFloorsOnly` mode). */\n\tonStoreyPick?: (storeyId: string) => void;\n\t/** Animate the camera when first framing the model on load. Default true. Set false to jump the\n\t * camera to the framed position instantly — useful when the viewer is revealed by an outer\n\t * transition and its own zoom-in would double up. */\n\tfitAnimation?: boolean;\n\t/** Frame only the elements whose IFC category matches one of these patterns (e.g. the building\n\t * shell) instead of the whole model. Keeps stray/site/annotation geometry from zooming the camera\n\t * out. Falls back to the whole model when nothing matches. */\n\tfitCategories?: RegExp[];\n\t/** Multiply the fit distance. Default 1; below 1 frames tighter (closer), above 1 pulls back. */\n\tfitFactor?: number;\n\tonStatusChange?: (status: FragmentViewportStatus, error?: Error) => void;\n\tonSelectionChange?: (selection: FragmentSelection | null) => void;\n\tonModelsChange?: (modelIds: string[]) => void;\n\t/** Fires as the camera orbits, reporting its yaw (azimuth) in degrees. Lets external chrome — e.g.\n\t * a site minimap — rotate to stay aligned with the view. Throttled to meaningful changes. */\n\tonHeadingChange?: (headingDeg: number) => void;\n}\n\n/** Edge length of a section plane's handle, in metres. The SDK default spans the whole scene. */\nconst CLIPPER_PLANE_SIZE_M = 20;\n\n/** Ghost-mode face tint — a cool grey, so faded geometry reads as glass rather than glare. */\nconst GHOST_FACE_COLOR = 0x9aa7b4;\n/** Ghost-mode line tint, kept fainter than the faces so edges don't dominate. */\nconst GHOST_LINE_COLOR = 0x6b7784;\n\n/** Fade applied to the storeys *other* than the selected one, so the level stands out in context. */\nconst STOREY_GHOST_MATERIAL = {\n\tcolor: new THREE.Color(0x9aa7b4),\n\trenderedFaces: 0,\n\topacity: 0.08,\n\ttransparent: true,\n} as const;\n\n/** Pointer travel still counted as a click rather than a camera drag. */\nconst DRAG_TOLERANCE_PX = 4;\n\n/**\n * A hard-hat marker geometry — a domed crown with a small brim — sized to fit the same footprint as a\n * sphere of `radius` (so it reads at the same size as the old sphere markers). Built as a single\n * `LatheGeometry` (a revolved profile) so it works as one instanced geometry, no mesh merging needed.\n */\nfunction createHelmetGeometry(radius: number): THREE.BufferGeometry {\n\t// Profile in (radiusFromAxis, height), in units of `radius`: dome curving down to a slight brim lip.\n\tconst profile: [number, number][] = [\n\t\t[0.02, 0.9],\n\t\t[0.3, 0.86],\n\t\t[0.52, 0.74],\n\t\t[0.68, 0.55],\n\t\t[0.76, 0.3],\n\t\t[0.78, 0.1],\n\t\t[1.0, 0.05],\n\t];\n\tconst points = profile.map(([x, y]) => new THREE.Vector2(x * radius, y * radius));\n\tconst geometry = new THREE.LatheGeometry(points, 18);\n\t// Centre it vertically on the marker position, the way the sphere was centred on it.\n\tgeometry.translate(0, -0.475 * radius, 0);\n\tgeometry.computeVertexNormals();\n\treturn geometry;\n}\n\ntype MeasurementTool = OBF.LengthMeasurement | OBF.AreaMeasurement | OBF.AngleMeasurement | OBF.VolumeMeasurement;\n\nexport class FragmentViewport {\n\treadonly components: OBC.Components;\n\treadonly world: OBC.SimpleWorld<OBC.SimpleScene, OBC.OrthoPerspectiveCamera, OBF.PostproductionRenderer>;\n\n\tprivate readonly container: HTMLElement;\n\tprivate readonly options: FragmentViewportOptions;\n\tprivate readonly fragments: OBC.FragmentsManager;\n\tprivate readonly highlighter: OBF.Highlighter;\n\t/** GPU picker used only in floor-only mode (the highlighter is disabled there). */\n\tprivate picker: OBC.FastModelPicker | null = null;\n\tprivate readonly clipper: OBC.Clipper;\n\tprivate readonly grid: OBC.SimpleGrid;\n\tprivate readonly measurements: Record<MeasurementKind, MeasurementTool>;\n\n\tprivate readonly resizeObserver: ResizeObserver;\n\tprivate readonly originalMaterials = new Map<\n\t\tFRAGS.BIMMaterial,\n\t\t{color: number; transparent: boolean; opacity: number; depthWrite: boolean}\n\t>();\n\tprivate markers: THREE.InstancedMesh | null = null;\n\tprivate markerIds: string[] = [];\n\t// Kept so the marker mesh can be reused across updates instead of rebuilt (which flickers).\n\tprivate markerCapacity = 0;\n\tprivate markerRadius = 0;\n\tprivate markerOccluded = false;\n\tprivate selection: OBC.ModelIdMap = {};\n\tprivate interaction: InteractionMode = null;\n\tprivate clippingEnabled = true;\n\tprivate ghostStyle: OBF.PostproductionAspect | null = null;\n\tprivate storeyBands = new Map<string, {min: number; max: number}>();\n\tprivate ghostedStorey: OBC.ModelIdMap = {};\n\t/** Cached per-element storey assignment (modelId → localId → storeyId). Avoids re-scanning geometry\n\t * on every floor switch, and lets openStorey apply only the *delta* in ghosting (no full un-ghost\n\t * flash). Invalidated when storeys are recomputed. */\n\tprivate elementStoreys: Map<string, Map<number, string>> | null = null;\n\t/** Last emitted camera yaw (deg); NaN until the first tick so the initial heading always fires. */\n\tprivate lastHeadingDeg = Number.NaN;\n\t/** Cinematic mode (sun shadows + AO + bloom + beams + tone mapping). Built lazily on first enable. */\n\tprivate cinematic: Cinematic | null = null;\n\tprivate disposed = false;\n\n\tconstructor(container: HTMLElement, options: FragmentViewportOptions) {\n\t\tthis.container = container;\n\t\tthis.options = options;\n\n\t\tthis.components = new OBC.Components();\n\t\tthis.world = this.components\n\t\t\t.get(OBC.Worlds)\n\t\t\t.create<OBC.SimpleScene, OBC.OrthoPerspectiveCamera, OBF.PostproductionRenderer>();\n\n\t\tthis.world.scene = new OBC.SimpleScene(this.components);\n\t\tthis.world.scene.setup();\n\t\tif (options.background !== null) {\n\t\t\tthis.world.scene.three.background = new THREE.Color(options.background ?? \"#e8edf2\");\n\t\t}\n\t\tthis.world.renderer = new OBF.PostproductionRenderer(this.components, container);\n\t\t// three.js ignores material.clippingPlanes unless this is on. Fragments clips in its own\n\t\t// shader, but the shell geometry and the postproduction passes rely on the standard path.\n\t\tthis.world.renderer.three.localClippingEnabled = true;\n\t\tthis.world.camera = new OBC.OrthoPerspectiveCamera(this.components);\n\t\tvoid this.world.camera.controls.setLookAt(18, 14, 18, 0, 2, 0);\n\n\t\t// The SDK appends its canvas to the container at its own size. Take it out of flow so the\n\t\t// container's height never depends on canvas intrinsics (a 300x150 default otherwise wins).\n\t\tconst canvas = this.world.renderer.three.domElement;\n\t\tcanvas.style.position = \"absolute\";\n\t\tcanvas.style.inset = \"0\";\n\t\tcanvas.style.width = \"100%\";\n\t\tcanvas.style.height = \"100%\";\n\n\t\tif (options.showLogo === false) this.world.renderer.showLogo = false;\n\n\t\tthis.components.init();\n\t\tthis.grid = this.components.get(OBC.Grids).create(this.world);\n\n\t\tthis.fragments = this.components.get(OBC.FragmentsManager);\n\t\tthis.fragments.init(options.workerUrl);\n\n\t\t// Fragments streams geometry against the camera, so every camera change needs an update.\n\t\tthis.world.camera.controls.addEventListener(\"update\", () => void this.fragments.core.update());\n\n\t\t// Report camera yaw so external chrome (e.g. the site minimap) can rotate to match the view.\n\t\tif (options.onHeadingChange) {\n\t\t\tconst emitHeading = () => {\n\t\t\t\tconst deg = THREE.MathUtils.radToDeg(this.world.camera.controls.azimuthAngle);\n\t\t\t\t// Skip sub-degree jitter; NaN on the first tick fails the check, so the initial heading fires.\n\t\t\t\tif (Math.abs(deg - this.lastHeadingDeg) < 0.5) return;\n\t\t\t\tthis.lastHeadingDeg = deg;\n\t\t\t\toptions.onHeadingChange?.(deg);\n\t\t\t};\n\t\t\tthis.world.camera.controls.addEventListener(\"update\", emitHeading);\n\t\t\temitHeading();\n\t\t}\n\t\tthis.world.onCameraChanged.add((camera: OBC.OrthoPerspectiveCamera) => {\n\t\t\tfor (const [, model] of this.fragments.list) model.useCamera(camera.three);\n\t\t\tvoid this.fragments.core.update(true);\n\t\t});\n\n\t\tthis.fragments.list.onItemSet.add(({value: model}) => {\n\t\t\tmodel.useCamera(this.world.camera.three);\n\t\t\tthis.world.scene.three.add(model.object);\n\t\t\t// Without this the clipping planes never reach the model and Sections does nothing.\n\t\t\tmodel.getClippingPlanesEvent = () => Array.from(this.world.renderer?.three.clippingPlanes ?? []);\n\t\t\tvoid this.fragments.core.update(true);\n\t\t\toptions.onModelsChange?.([...this.fragments.list.keys()]);\n\t\t});\n\t\tthis.fragments.list.onItemDeleted.add(() => options.onModelsChange?.([...this.fragments.list.keys()]));\n\n\t\t// Coplanar faces z-fight badly in BIM models; a small polygon offset settles them.\n\t\tthis.fragments.core.models.materials.list.onItemSet.add(({value: material}) => {\n\t\t\tif (\"isLodMaterial\" in material && material.isLodMaterial) return;\n\t\t\tmaterial.polygonOffset = true;\n\t\t\tmaterial.polygonOffsetUnits = 1;\n\t\t\tmaterial.polygonOffsetFactor = 1;\n\t\t});\n\n\t\tthis.components.get(OBC.Raycasters).get(this.world);\n\t\tthis.highlighter = this.components.get(OBF.Highlighter);\n\t\tthis.highlighter.setup({\n\t\t\tworld: this.world,\n\t\t\tselectMaterialDefinition: {\n\t\t\t\tcolor: new THREE.Color(options.selectionColor ?? \"#3b82f6\"),\n\t\t\t\topacity: 1,\n\t\t\t\ttransparent: false,\n\t\t\t\trenderedFaces: 0,\n\t\t\t},\n\t\t});\n\t\tthis.highlighter.multiple = \"shiftKey\";\n\t\tthis.highlighter.events.select.onHighlight.add((map) => void this.publishSelection(map));\n\t\t// Floor-only mode never selects individual elements — disable the highlighter entirely and pick the\n\t\t// clicked floor with a direct GPU pick instead, so element selection never fights storey ghosting.\n\t\tif (options.selectFloorsOnly) {\n\t\t\tthis.highlighter.enabled = false;\n\t\t\tthis.picker = new OBC.FastModelPicker(this.components, this.world);\n\t\t}\n\t\tthis.highlighter.events.select.onClear.add(() => {\n\t\t\tthis.selection = {};\n\t\t\toptions.onSelectionChange?.(null);\n\t\t});\n\n\t\tthis.clipper = this.components.get(OBC.Clipper);\n\t\tthis.clipper.enabled = true;\n\t\t// Re-clip whenever the plane set changes. clipper.create() resolves a frame later, so the\n\t\t// event — not a synchronous update after create() — is what guarantees the cut applies.\n\t\tconst reclip = () => void this.fragments.core.update(true);\n\t\tthis.clipper.onAfterCreate.add(reclip);\n\t\tthis.clipper.onAfterDelete.add(reclip);\n\t\tthis.clipper.onAfterDrag.add(reclip);\n\t\t// autoScalePlanes keeps the helper proportional to the camera, which on a tall model means it\n\t\t// grows to a scene-sized wall. Fix its size instead, and make the helper a faint tint so the\n\t\t// cut geometry — not the plane — is what you look at.\n\t\tthis.clipper.autoScalePlanes = false;\n\t\tthis.clipper.size = CLIPPER_PLANE_SIZE_M;\n\t\tthis.clipper.material.opacity = 0.1;\n\t\tthis.clipper.material.transparent = true;\n\n\t\tthis.measurements = {\n\t\t\tlength: this.components.get(OBF.LengthMeasurement),\n\t\t\tarea: this.components.get(OBF.AreaMeasurement),\n\t\t\tangle: this.components.get(OBF.AngleMeasurement),\n\t\t\tvolume: this.components.get(OBF.VolumeMeasurement),\n\t\t};\n\t\tfor (const tool of Object.values(this.measurements)) {\n\t\t\ttool.world = this.world;\n\t\t\ttool.enabled = false;\n\t\t}\n\t\tthis.measurements.length.snappings = [FRAGS.SnappingClass.POINT, FRAGS.SnappingClass.LINE];\n\n\t\t// A single click uses the armed tool. The SDK's own examples bind this to dblclick, but a\n\t\t// \"Sections\" button that appears to do nothing on click reads as broken — which is exactly the\n\t\t// feedback this got. Double-click still works, and a drag guard keeps orbiting from placing\n\t\t// planes by accident.\n\t\tcontainer.addEventListener(\"pointerdown\", this.onPointerDown);\n\t\tcontainer.addEventListener(\"pointerup\", this.onPointerUp);\n\t\tcontainer.addEventListener(\"dblclick\", this.onDoubleClick);\n\t\twindow.addEventListener(\"keydown\", this.onKeyDown);\n\n\t\t// The SDK sizes its renderer once, from the container as it was at construction. In a flex\n\t\t// layout that is often before the browser has settled the final height, leaving a canvas\n\t\t// stuck at its initial size in the corner. Track the container instead.\n\t\tthis.resizeObserver = new ResizeObserver(this.resize);\n\t\tthis.resizeObserver.observe(container);\n\t}\n\n\t// ─── Models ────────────────────────────────────────────────────────────────\n\n\t/** Fetch and display a `.frag`, then frame everything loaded. */\n\tasync load(src: string, modelId: string): Promise<void> {\n\t\tthis.ensureActive();\n\t\tthis.options.onStatusChange?.(\"loading\");\n\t\ttry {\n\t\t\tconst response = await fetch(src);\n\t\t\tif (!response.ok) throw new Error(`${response.status} ${response.statusText} — ${src}`);\n\t\t\tconst buffer = await response.arrayBuffer();\n\t\t\tif (this.disposed) return;\n\t\t\tawait this.fragments.core.load(buffer, {modelId});\n\t\t\tif (this.disposed) return;\n\t\t\tthis.groundGrid();\n\t\t\tawait this.fit();\n\t\t\tthis.options.onStatusChange?.(\"ready\");\n\t\t} catch (error) {\n\t\t\tif (this.disposed) return;\n\t\t\tthis.options.onStatusChange?.(\"error\", error instanceof Error ? error : new Error(String(error)));\n\t\t}\n\t}\n\n\tasync unload(modelId: string): Promise<void> {\n\t\tawait this.fragments.core.disposeModel(modelId);\n\t\tawait this.fragments.core.update(true);\n\t}\n\n\tget modelIds(): string[] {\n\t\treturn [...this.fragments.list.keys()];\n\t}\n\n\t// ─── Navigation ────────────────────────────────────────────────────────────\n\n\t/** Frame the loaded models — or, when `fitCategories` is set, only the elements in those categories\n\t * (e.g. the building shell), so stray/site geometry doesn't zoom the camera out. */\n\tasync fit(): Promise<void> {\n\t\tif (this.fragments.list.size === 0) return;\n\t\tconst box = (await this.categoryBox(this.options.fitCategories)) ?? this.wholeModelBox();\n\t\tif (box.isEmpty()) return;\n\t\tconst sphere = new THREE.Sphere();\n\t\tbox.getBoundingSphere(sphere);\n\t\tconst factor = this.options.fitFactor ?? 1;\n\t\tif (factor > 0 && factor !== 1) sphere.radius *= factor;\n\t\tawait this.world.camera.controls.fitToSphere(sphere, this.options.fitAnimation ?? true);\n\t\tawait this.fragments.core.update(true);\n\t}\n\n\t/**\n\t * Sit the ground grid at the base of the loaded geometry instead of world Y=0.\n\t *\n\t * The grid is created at Y=0, but nothing guarantees a model's ground floor lives there: this\n\t * building is authored with its origin up near the penthouse, so the whole tower hangs *below*\n\t * Y=0 and the grid slices through the top floor. Snapping the grid to the model's own min-Y drops\n\t * the reference plane back under the ground floor, where \"the ground\" belongs. Only the grid moves,\n\t * so every coordinate the rest of the viewport works in (storeys, markers, sections) is untouched.\n\t */\n\tprivate groundGrid(): void {\n\t\tconst box = this.wholeModelBox();\n\t\tif (box.isEmpty()) return;\n\t\tthis.grid.three.position.y = box.min.y;\n\t}\n\n\t/** Bounding box of all loaded geometry. */\n\tprivate wholeModelBox(): THREE.Box3 {\n\t\tconst boxer = this.components.get(OBC.BoundingBoxer);\n\t\tboxer.list.clear();\n\t\tboxer.addFromModels();\n\t\tconst box = boxer.get();\n\t\tboxer.list.clear();\n\t\treturn box;\n\t}\n\n\t/** Union of the bounding boxes of the given categories across every model, or null if none matched\n\t * (so the caller falls back to the whole model). */\n\tprivate async categoryBox(patterns?: RegExp[]): Promise<THREE.Box3 | null> {\n\t\tif (!patterns || patterns.length === 0) return null;\n\t\tconst union = new THREE.Box3();\n\t\tunion.makeEmpty();\n\t\tlet matched = false;\n\t\tfor (const [, model] of this.fragments.list) {\n\t\t\tconst items = await model.getItemsOfCategories(patterns);\n\t\t\tconst ids = Object.values(items).flat();\n\t\t\tif (ids.length === 0) continue;\n\t\t\tfor (const box of await model.getBoxes(ids)) {\n\t\t\t\tunion.union(box);\n\t\t\t\tmatched = true;\n\t\t\t}\n\t\t}\n\t\treturn matched ? union : null;\n\t}\n\n\tsetNavigation(mode: NavigationMode): void {\n\t\tthis.world.camera.set(\"Orbit\");\n\t\tthis.setLeftDrag(mode === \"Pan\" ? \"truck\" : \"rotate\");\n\t}\n\n\t/**\n\t * Swap what a left-drag does. camera-controls exposes its action enum as a static on the class;\n\t * read it off the instance's constructor rather than importing camera-controls directly, which\n\t * would add a dependency purely for two constants.\n\t */\n\tprivate setLeftDrag(action: \"rotate\" | \"truck\"): void {\n\t\tconst controls = this.world.camera.controls;\n\t\tconst actions = (controls.constructor as unknown as {ACTION?: Record<string, unknown>}).ACTION;\n\t\tif (!actions) return;\n\t\tconst next = action === \"truck\" ? actions.TRUCK : actions.ROTATE;\n\t\tcontrols.mouseButtons.left = next as typeof controls.mouseButtons.left;\n\t}\n\n\t// ─── Cinematic mode ──────────────────────────────────────────────────────\n\n\t/**\n\t * Toggle cinematic mode (sun cast-shadows + ambient occlusion + bloom + volumetric beams + ACES tone\n\t * mapping) and return the state now active.\n\t *\n\t * Full navigation stays live while on — orbit, pan and zoom — so you can turn the model in the light.\n\t * Turning it off restores every renderer/scene mutation and frees all GPU resources, so it costs\n\t * nothing (memory or frame time) while off.\n\t */\n\tsetCinematic(enabled: boolean): boolean {\n\t\tif (enabled) {\n\t\t\tthis.cinematic ??= new Cinematic(this.world);\n\t\t\tconst box = this.wholeModelBox();\n\t\t\tthis.cinematic.enable(box.isEmpty() ? null : box, this.grid.three);\n\t\t} else {\n\t\t\tthis.cinematic?.disable();\n\t\t}\n\t\treturn this.cinematic?.active ?? false;\n\t}\n\n\tget cinematicActive(): boolean {\n\t\treturn this.cinematic?.active ?? false;\n\t}\n\n\t/** Swap perspective <-> orthographic and return the mode now active. */\n\tasync toggleProjection(): Promise<ProjectionMode> {\n\t\tawait this.world.camera.projection.toggle();\n\t\tthis.world.renderer?.postproduction.updateCamera();\n\t\treturn this.world.camera.projection.current as ProjectionMode;\n\t}\n\n\tget projection(): ProjectionMode {\n\t\treturn this.world.camera.projection.current as ProjectionMode;\n\t}\n\n\t// ─── Sections and measurements ─────────────────────────────────────────────\n\n\t/**\n\t * Choose what a double-click does: place a clipping plane, start a measurement, or nothing\n\t * (leaving clicks to selection). Only one at a time, mirroring the toolbar's radio behaviour.\n\t */\n\tsetInteraction(mode: InteractionMode): void {\n\t\tthis.interaction = mode;\n\t\t// Otherwise a click both places a section and re-selects whatever is behind it.\n\t\tthis.highlighter.enabled = mode === null;\n\t\tfor (const [kind, tool] of Object.entries(this.measurements)) {\n\t\t\ttool.enabled = mode !== null && mode !== \"section\" && kind === mode;\n\t\t}\n\t}\n\n\tget interactionMode(): InteractionMode {\n\t\treturn this.interaction;\n\t}\n\n\t/** Enable/disable existing planes without deleting them; returns the state now active. */\n\ttoggleClipping(): boolean {\n\t\tthis.clippingEnabled = !this.clippingEnabled;\n\t\tfor (const [, plane] of this.clipper.list) plane.enabled = this.clippingEnabled;\n\t\treturn this.clippingEnabled;\n\t}\n\n\tclearSections(): void {\n\t\tthis.clipper.deleteAll();\n\t}\n\n\tclearMeasurements(): void {\n\t\tfor (const tool of Object.values(this.measurements)) tool.list.clear();\n\t}\n\n\t// ─── Appearance ────────────────────────────────────────────────────────────\n\n\tasync hideSelection(): Promise<void> {\n\t\tawait this.components.get(OBC.Hider).set(false, this.selection);\n\t\tawait this.highlighter.clear();\n\t\tawait this.fragments.core.update(true);\n\t}\n\n\tasync isolateSelection(): Promise<void> {\n\t\tawait this.components.get(OBC.Hider).isolate(this.selection);\n\t\tawait this.fragments.core.update(true);\n\t}\n\n\t/**\n\t * Restore everything: un-hide every element and leave any open storey view.\n\t *\n\t * Both halves are needed. `Hider.set(true)` alone leaves an open storey still filtering the model,\n\t * so the user clicks \"Show all\" and still sees one floor; closing the view alone leaves anything\n\t * hidden or isolated by hand still hidden.\n\t */\n\tasync showAll(): Promise<void> {\n\t\tawait this.components.get(OBC.Hider).set(true);\n\t\tawait this.fragments.core.update(true);\n\t}\n\n\tget ghost(): boolean {\n\t\treturn this.originalMaterials.size > 0;\n\t}\n\n\t/**\n\t * Fade the whole model to translucent glass so selections, sections and markers read through it —\n\t * \"ghost mode\" in every BIM viewer. Two parts matter for it to look clean rather than a wall of\n\t * white lines:\n\t *\n\t * - The postproduction edge pass is turned off. It outlines every element, and over faded\n\t * geometry those crisp edges stack into the bright white grid you would otherwise see.\n\t * - Faces fade to a cool grey, not pure white, and don't write depth — so you see *through* the\n\t * building to a soft translucent shell, the way BIMCamel and the SDK's own ghost look.\n\t */\n\tasync setGhost(enabled: boolean): Promise<void> {\n\t\tif (enabled === this.ghost) return;\n\t\tconst post = this.world.renderer?.postproduction;\n\t\tif (enabled) {\n\t\t\t// Drop to the COLOR aspect: no pen/edge pass, no shadows. That removes the crisp outlines\n\t\t\t// which, over faded geometry, stack into a wall of white lines. Toggling postproduction\n\t\t\t// off entirely instead throws \"Base pass not initialized\", so switch the style, not enabled.\n\t\t\tthis.ghostStyle = post?.style ?? null;\n\t\t\tif (post) post.style = OBF.PostproductionAspect.COLOR;\n\t\t\tfor (const material of this.fragments.core.models.materials.list.values()) {\n\t\t\t\tif (material.userData.customId) continue;\n\t\t\t\tconst isLod = !(\"color\" in material);\n\t\t\t\tconst color = isLod ? material.lodColor.getHex() : material.color.getHex();\n\t\t\t\tthis.originalMaterials.set(material, {\n\t\t\t\t\tcolor,\n\t\t\t\t\ttransparent: material.transparent,\n\t\t\t\t\topacity: material.opacity,\n\t\t\t\t\tdepthWrite: material.depthWrite,\n\t\t\t\t});\n\t\t\t\tmaterial.transparent = true;\n\t\t\t\tmaterial.opacity = isLod ? 0.06 : 0.12;\n\t\t\t\t// A translucent material still writes depth by default, so the ghosted building keeps\n\t\t\t\t// hiding everything behind it — including the markers ghost mode exists to reveal.\n\t\t\t\tmaterial.depthWrite = false;\n\t\t\t\tif (isLod) material.lodColor.setHex(GHOST_LINE_COLOR);\n\t\t\t\telse material.color.setHex(GHOST_FACE_COLOR);\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (post && this.ghostStyle !== null) post.style = this.ghostStyle;\n\t\t\tfor (const [material, original] of this.originalMaterials) {\n\t\t\t\tmaterial.transparent = original.transparent;\n\t\t\t\tmaterial.opacity = original.opacity;\n\t\t\t\tmaterial.depthWrite = original.depthWrite;\n\t\t\t\tif (\"color\" in material) material.color.setHex(original.color);\n\t\t\t\telse material.lodColor.setHex(original.color);\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t}\n\t\t\tthis.originalMaterials.clear();\n\t\t}\n\t\tawait this.fragments.core.update(true);\n\t}\n\n\tsetPostproduction(enabled: boolean): void {\n\t\tif (this.world.renderer) this.world.renderer.postproduction.enabled = enabled;\n\t}\n\n\t// ─── Markers ───────────────────────────────────────────────────────────────\n\n\t/**\n\t * Draw point markers in the model. One InstancedMesh for the whole set: thousands of separate\n\t * meshes would be thousands of draw calls and would stall the frame, while instancing draws them\n\t * all in one and scales to tens of thousands.\n\t *\n\t * Radius defaults to a fraction of the model's diagonal, so markers read at a sensible size\n\t * whether the model is a villa or a city block, and regardless of the file's units.\n\t */\n\tsetMarkers(markers: FragmentMarker[], options: {radius?: number; color?: string; occluded?: boolean} = {}): void {\n\t\tconst radius = options.radius ?? this.defaultMarkerRadius();\n\t\tconst occluded = options.occluded === true;\n\n\t\t// Reuse the existing InstancedMesh when we can — only the drawn instance count and their\n\t\t// transforms/colours change. Tearing it down and rebuilding it every floor switch is what made\n\t\t// the markers flicker; a persistent mesh just re-writes its instances in place.\n\t\tconst reusable =\n\t\t\tthis.markers !== null &&\n\t\t\tmarkers.length <= this.markerCapacity &&\n\t\t\tradius === this.markerRadius &&\n\t\t\toccluded === this.markerOccluded;\n\n\t\tif (!reusable) {\n\t\t\tthis.clearMarkers();\n\t\t\tif (markers.length === 0) return;\n\t\t\tconst geometry = createHelmetGeometry(radius);\n\t\t\tconst material = new THREE.MeshLambertMaterial();\n\t\t\t// The helmet is a revolved (single-sided) surface — draw both faces so it reads from any angle.\n\t\t\tmaterial.side = THREE.DoubleSide;\n\t\t\t// Markers must be cut by section planes too, or they float in front of a sectioned model.\n\t\t\tmaterial.clippingPlanes = this.world.renderer?.three.clippingPlanes ?? null;\n\t\t\t// By default markers read through the building, like pins on a map.\n\t\t\tif (!occluded) {\n\t\t\t\tmaterial.depthTest = false;\n\t\t\t\tmaterial.transparent = false;\n\t\t\t}\n\t\t\tconst capacity = Math.max(1, markers.length);\n\t\t\tconst mesh = new THREE.InstancedMesh(geometry, material, capacity);\n\t\t\tmesh.renderOrder = occluded ? 0 : 999;\n\t\t\tmesh.instanceMatrix.setUsage(THREE.DynamicDrawUsage);\n\t\t\t// Excluded from raycasts the SDK runs over world meshes, so markers never block model picking.\n\t\t\tmesh.raycast = () => {};\n\t\t\tthis.world.scene.three.add(mesh);\n\t\t\tthis.markers = mesh;\n\t\t\tthis.markerCapacity = capacity;\n\t\t\tthis.markerRadius = radius;\n\t\t\tthis.markerOccluded = occluded;\n\t\t}\n\n\t\tconst mesh = this.markers;\n\t\tif (!mesh) return;\n\t\tif (markers.length === 0) {\n\t\t\tmesh.count = 0;\n\t\t\tmesh.instanceMatrix.needsUpdate = true;\n\t\t\tthis.markerIds = [];\n\t\t\treturn;\n\t\t}\n\n\t\tconst matrix = new THREE.Matrix4();\n\t\tconst color = new THREE.Color();\n\t\tconst fallback = options.color ?? \"#f59e0b\";\n\t\tmarkers.forEach((marker, index) => {\n\t\t\tmatrix.setPosition(marker.position[0], marker.position[1], marker.position[2]);\n\t\t\tmesh.setMatrixAt(index, matrix);\n\t\t\tmesh.setColorAt(index, color.set(marker.color ?? fallback));\n\t\t});\n\t\tmesh.count = markers.length;\n\t\tmesh.instanceMatrix.needsUpdate = true;\n\t\tif (mesh.instanceColor) mesh.instanceColor.needsUpdate = true;\n\t\tthis.markerIds = markers.map((marker) => marker.id);\n\t}\n\n\tclearMarkers(): void {\n\t\tif (!this.markers) return;\n\t\tthis.world.scene.three.remove(this.markers);\n\t\tthis.markers.geometry.dispose();\n\t\t(this.markers.material as THREE.Material).dispose();\n\t\tthis.markers.dispose();\n\t\tthis.markers = null;\n\t\tthis.markerCapacity = 0;\n\t\tthis.markerRadius = 0;\n\t\tthis.markerOccluded = false;\n\t\tthis.markerIds = [];\n\t}\n\n\tget markerCount(): number {\n\t\treturn this.markerIds.length;\n\t}\n\n\t/** ~1/300th of the model diagonal: about 0.5 m on a 150 m building, which reads as a person. */\n\tprivate defaultMarkerRadius(): number {\n\t\tconst boxer = this.components.get(OBC.BoundingBoxer);\n\t\tboxer.list.clear();\n\t\tboxer.addFromModels();\n\t\tconst box = boxer.get();\n\t\tboxer.list.clear();\n\t\tif (box.isEmpty()) return 0.5;\n\t\tconst size = box.getSize(new THREE.Vector3());\n\t\treturn Math.max(0.15, size.length() / 300);\n\t}\n\n\t// ─── Levels ────────────────────────────────────────────────────────────────\n\n\t/**\n\t * Storeys from the IFC spatial structure. We don\\'t use the SDK\\'s storey plan-views: they cut a thin\n\t * horizontal slab that, on a multi-storey tower, lands between floors and shows nothing. Instead a\n\t * level is shown by ghosting every element not tagged to that storey (see `ensureElementStoreys`),\n\t * which keeps the 3D view. The elevation bands built here are kept only for the known-storey guard in\n\t * `openStorey` and the storey elevation metadata returned below.\n\t */\n\tasync storeys(): Promise<FragmentStorey[]> {\n\t\tthis.elementStoreys = null; // bands are about to be recomputed; drop the stale assignment\n\t\tconst views = this.components.get(OBC.Views);\n\t\tviews.world = this.world;\n\t\tconst created = await views.createFromIfcStoreys();\n\n\t\tconst elevationOf = (view: (typeof created)[number]) => {\n\t\t\tconst {normal, constant} = view.plane;\n\t\t\treturn Math.abs(normal.y) > 1e-6 ? -constant / normal.y : 0;\n\t\t};\n\t\tconst sorted = created\n\t\t\t.map((view) => ({id: view.id, elevation: elevationOf(view)}))\n\t\t\t.sort((a, b) => a.elevation - b.elevation);\n\n\t\t// Each storey spans from its floor up to the next floor. Give the top storey the median height.\n\t\tconst gaps = sorted\n\t\t\t.slice(1)\n\t\t\t.map((s, i) => s.elevation - sorted[i].elevation)\n\t\t\t.filter((g) => g > 0.5);\n\t\tconst medianGap = gaps.length ? [...gaps].sort((a, b) => a - b)[gaps.length >> 1] : 4;\n\t\tthis.storeyBands = new Map(\n\t\t\tsorted.map((storey, index) => {\n\t\t\t\tconst top = index + 1 < sorted.length ? sorted[index + 1].elevation : storey.elevation + medianGap;\n\t\t\t\t// A small skirt below the floor catches slabs and skirtings modelled just under it.\n\t\t\t\treturn [storey.id, {min: storey.elevation - 0.5, max: top - 0.1}];\n\t\t\t}),\n\t\t);\n\n\t\treturn sorted.map((storey) => ({id: storey.id, name: storey.id, elevation: storey.elevation}));\n\t}\n\n\t/** The whole model's world-space bounding box, as plain arrays (null if nothing is loaded). */\n\tbounds(): {min: [number, number, number]; max: [number, number, number]} | null {\n\t\tif (this.fragments.list.size === 0) return null;\n\t\tconst boxer = this.components.get(OBC.BoundingBoxer);\n\t\tboxer.list.clear();\n\t\tboxer.addFromModels();\n\t\tconst box = boxer.get();\n\t\tboxer.list.clear();\n\t\tif (box.isEmpty()) return null;\n\t\treturn {\n\t\t\tmin: [box.min.x, box.min.y, box.min.z],\n\t\t\tmax: [box.max.x, box.max.y, box.max.z],\n\t\t};\n\t}\n\n\t/**\n\t * Emphasise one storey: keep its elements in their real materials and fade every other storey to\n\t * translucent grey, so the level reads in context rather than floating alone. Done with a\n\t * per-element highlight on the *other* storeys — a material swap wouldn't work, because Fragments\n\t * materials are shared across storeys, so fading one fades all.\n\t */\n\tasync openStorey(id: string): Promise<void> {\n\t\tif (!this.storeyBands.has(id)) return;\n\t\tconst assign = await this.ensureElementStoreys();\n\n\t\t// The elements to ghost for this floor = everything not on it; the in-band set frames the camera.\n\t\tconst nextGhost: OBC.ModelIdMap = {};\n\t\tconst inBand: OBC.ModelIdMap = {};\n\t\tfor (const [modelId, perId] of assign) {\n\t\t\tconst g = new Set<number>();\n\t\t\tconst within = new Set<number>();\n\t\t\tfor (const [localId, sid] of perId) {\n\t\t\t\tif (sid === id) within.add(localId);\n\t\t\t\telse g.add(localId);\n\t\t\t}\n\t\t\tif (g.size) nextGhost[modelId] = g;\n\t\t\tif (within.size) inBand[modelId] = within;\n\t\t}\n\n\t\t// Freeze the frame while we swap highlights so no half-applied state is ever drawn. Disabling the\n\t\t// renderer (not Components) keeps the main loop alive, so it resumes cleanly afterwards.\n\t\tconst renderer = this.world.renderer;\n\t\tconst wasRendering = renderer ? renderer.enabled : true;\n\t\tif (renderer) renderer.enabled = false;\n\t\ttry {\n\t\t\t// Apply only the DELTA so the building never flashes fully solid on a floor→floor switch: add\n\t\t\t// the newly-ghosted elements, then un-ghost the ones now on the selected floor.\n\t\t\tfor (const [modelId, model] of this.fragments.list) {\n\t\t\t\tconst cur = this.ghostedStorey[modelId] ?? new Set<number>();\n\t\t\t\tconst nxt = nextGhost[modelId] ?? new Set<number>();\n\t\t\t\tconst toAdd: number[] = [];\n\t\t\t\tfor (const localId of nxt) if (!cur.has(localId)) toAdd.push(localId);\n\t\t\t\tconst toClear: number[] = [];\n\t\t\t\tfor (const localId of cur) if (!nxt.has(localId)) toClear.push(localId);\n\t\t\t\tif (toAdd.length) await model.highlight(toAdd, STOREY_GHOST_MATERIAL);\n\t\t\t\tif (toClear.length) await model.resetHighlight(toClear);\n\t\t\t}\n\t\t\tthis.ghostedStorey = nextGhost;\n\t\t\tawait this.fragments.core.update(true);\n\t\t} finally {\n\t\t\tif (renderer) renderer.enabled = wasRendering;\n\t\t}\n\n\t\t// Frame the selected level (world-space box; getBoxes is model-local).\n\t\tif (Object.keys(inBand).length) {\n\t\t\tconst boxer = this.components.get(OBC.BoundingBoxer);\n\t\t\tboxer.list.clear();\n\t\t\tawait boxer.addFromModelIdMap(inBand);\n\t\t\tconst box = boxer.get();\n\t\t\tboxer.list.clear();\n\t\t\tif (!box.isEmpty()) {\n\t\t\t\tconst sphere = box.getBoundingSphere(new THREE.Sphere());\n\t\t\t\tawait this.world.camera.controls.fitToSphere(sphere, true);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync closeStorey(): Promise<void> {\n\t\tawait this.resetStoreyGhost();\n\t\tawait this.fragments.core.update(true);\n\t\t// Re-frame the whole model so leaving a level returns to a sensible view.\n\t\tawait this.fit();\n\t}\n\n\t/**\n\t * Assign every element to a storey from the model's real IFC spatial structure — the\n\t * `IfcRelContainedInSpatialStructure` tags surfaced by the Classifier's `byIfcBuildingStorey`,\n\t * grouped by storey name (the same key `openStorey`/`storeyBands` use). Cached once; reused by the\n\t * ghosting delta and the per-storey footprints.\n\t *\n\t * We read the authored floor tags rather than guessing each element's storey from its centre\n\t * elevation: band-guessing breaks when the model's origin is offset from world Y=0 (this villa hangs\n\t * ~12.8 m below it), so the element boxes and the storey planes land in different frames, nothing\n\t * falls in a band, and every floor click ended up un-ghosted.\n\t */\n\tprivate async ensureElementStoreys(): Promise<Map<string, Map<number, string>>> {\n\t\tif (this.elementStoreys) return this.elementStoreys;\n\t\t// Prefer the authored IFC floor tags. Fall back to geometric elevation bands only when the model\n\t\t// carries no storey-containment relation (older/near-origin models), so those don't regress.\n\t\tconst tagged = await this.storeysFromIfcTags();\n\t\tthis.elementStoreys = tagged.size ? tagged : await this.storeysFromElevationBands();\n\t\treturn this.elementStoreys;\n\t}\n\n\t/** Group every element by its containing IFCBUILDINGSTOREY (the `ContainsElements` relation),\n\t * keyed by the storey's Name — the same key `openStorey`/`storeyBands` use. Empty when the model has\n\t * no such relation. */\n\tprivate async storeysFromIfcTags(): Promise<Map<string, Map<number, string>>> {\n\t\tconst classifier = this.components.get(OBC.Classifier);\n\t\tawait classifier.byIfcBuildingStorey();\n\t\tconst cache = new Map<string, Map<number, string>>();\n\t\tconst groups = classifier.list.get(\"Storeys\");\n\t\tif (!groups) return cache;\n\t\tfor (const [storeyName, group] of groups) {\n\t\t\tfor (const [modelId, localIds] of Object.entries(group.map)) {\n\t\t\t\tlet perId = cache.get(modelId);\n\t\t\t\tif (!perId) {\n\t\t\t\t\tperId = new Map<number, string>();\n\t\t\t\t\tcache.set(modelId, perId);\n\t\t\t\t}\n\t\t\t\tfor (const localId of localIds) perId.set(localId, storeyName);\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t}\n\n\t/** Fallback assignment: bucket each element into a storey by its centre elevation. Only correct when\n\t * the model geometry shares the frame of the storey planes (origin near world Y=0). */\n\tprivate async storeysFromElevationBands(): Promise<Map<string, Map<number, string>>> {\n\t\tconst cache = new Map<string, Map<number, string>>();\n\t\tfor (const [modelId, model] of this.fragments.list) {\n\t\t\tconst ids = await model.getLocalIds();\n\t\t\tif (!ids?.length) continue;\n\t\t\tconst boxes = await model.getBoxes(ids);\n\t\t\tconst perId = new Map<number, string>();\n\t\t\tids.forEach((localId, index) => {\n\t\t\t\tconst box = boxes[index];\n\t\t\t\tif (!box) return;\n\t\t\t\tconst centreY = (box.min.y + box.max.y) / 2;\n\t\t\t\tfor (const [sid, band] of this.storeyBands) {\n\t\t\t\t\tif (centreY >= band.min && centreY < band.max) {\n\t\t\t\t\t\tperId.set(localId, sid);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tcache.set(modelId, perId);\n\t\t}\n\t\treturn cache;\n\t}\n\n\t/**\n\t * The world-space bounding box of each storey's own elements — the real footprint and height of\n\t * every floor. Lets callers place things *inside* a level (e.g. worker markers) rather than across\n\t * the whole building.\n\t */\n\tasync storeyFootprints(): Promise<Record<string, {min: [number, number, number]; max: [number, number, number]}>> {\n\t\tconst assign = await this.ensureElementStoreys();\n\t\tconst byStorey = new Map<string, OBC.ModelIdMap>();\n\t\tfor (const [modelId, perId] of assign) {\n\t\t\tfor (const [localId, sid] of perId) {\n\t\t\t\tlet map = byStorey.get(sid);\n\t\t\t\tif (!map) {\n\t\t\t\t\tmap = {};\n\t\t\t\t\tbyStorey.set(sid, map);\n\t\t\t\t}\n\t\t\t\t(map[modelId] ??= new Set<number>()).add(localId);\n\t\t\t}\n\t\t}\n\n\t\tconst result: Record<string, {min: [number, number, number]; max: [number, number, number]}> = {};\n\t\tconst boxer = this.components.get(OBC.BoundingBoxer);\n\t\tfor (const [sid, map] of byStorey) {\n\t\t\tboxer.list.clear();\n\t\t\tawait boxer.addFromModelIdMap(map);\n\t\t\tconst box = boxer.get();\n\t\t\tboxer.list.clear();\n\t\t\tif (!box.isEmpty()) {\n\t\t\t\tresult[sid] = {\n\t\t\t\t\tmin: [box.min.x, box.min.y, box.min.z],\n\t\t\t\t\tmax: [box.max.x, box.max.y, box.max.z],\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t/** Clear the fade applied to non-selected storeys. */\n\tprivate async resetStoreyGhost(): Promise<void> {\n\t\tfor (const [modelId, ids] of Object.entries(this.ghostedStorey)) {\n\t\t\tconst model = this.fragments.list.get(modelId);\n\t\t\tif (model && ids.size) await model.resetHighlight([...ids]);\n\t\t}\n\t\tthis.ghostedStorey = {};\n\t}\n\n\t// ─── Internals ─────────────────────────────────────────────────────────────\n\n\t/**\n\t * Floor-only picking: GPU-pick the element under the pointer, resolve its storey, and report it so the\n\t * host isolates that floor. Runs off the highlighter entirely, so element selection never fights the\n\t * storey ghosting (which is what made floor→floor switching invert).\n\t */\n\tprivate async pickFloorAtPointer(): Promise<void> {\n\t\tif (!this.picker) return;\n\t\tconst hit = await this.picker.getItemAt();\n\t\tif (this.disposed || !hit) return;\n\t\tconst assign = await this.ensureElementStoreys();\n\t\tconst storeyId = assign.get(hit.modelId)?.get(hit.localId);\n\t\tif (storeyId) this.options.onStoreyPick?.(storeyId);\n\t}\n\n\tprivate async publishSelection(map: OBC.ModelIdMap): Promise<void> {\n\t\tthis.selection = map;\n\t\tconst itemCount = Object.values(map).reduce((sum, ids) => sum + ids.size, 0);\n\t\tconst batches = await Promise.all(\n\t\t\tObject.entries(map).map(async ([modelId, localIds]) => {\n\t\t\t\tconst model = this.fragments.list.get(modelId);\n\t\t\t\treturn model ? model.getItemsData([...localIds]) : [];\n\t\t\t}),\n\t\t);\n\t\tif (this.disposed) return;\n\t\tconst data = batches.flat();\n\t\tconst first = data[0] as {_category?: {value?: string}; _guid?: {value?: string}} | undefined;\n\t\tthis.options.onSelectionChange?.({\n\t\t\titemCount,\n\t\t\tcategory: first?._category?.value ?? null,\n\t\t\tguid: first?._guid?.value ?? null,\n\t\t\tdata,\n\t\t});\n\t}\n\n\tprivate readonly resize = (): void => {\n\t\tif (this.disposed) return;\n\t\tthis.world.renderer?.resize();\n\t\tthis.world.camera.updateAspect();\n\t\tthis.cinematic?.resize();\n\t};\n\n\tprivate pointerDownAt: {x: number; y: number} | null = null;\n\n\tprivate readonly onPointerDown = (event: PointerEvent): void => {\n\t\tthis.pointerDownAt = {x: event.clientX, y: event.clientY};\n\t};\n\n\tprivate readonly onPointerUp = (event: PointerEvent): void => {\n\t\tconst start = this.pointerDownAt;\n\t\tthis.pointerDownAt = null;\n\t\tif (!start) return;\n\t\t// Anything past a few pixels was a camera drag, not a click.\n\t\tif (Math.hypot(event.clientX - start.x, event.clientY - start.y) > DRAG_TOLERANCE_PX) return;\n\t\tif (this.options.selectFloorsOnly) {\n\t\t\tvoid this.pickFloorAtPointer();\n\t\t\treturn;\n\t\t}\n\t\tif (this.interaction) this.useArmedTool();\n\t};\n\n\tprivate readonly onDoubleClick = (): void => {\n\t\t// Measurements chain points, so a double-click legitimately adds one more; sections would\n\t\t// otherwise place a second coincident plane, so only measurements act here.\n\t\tif (this.interaction && this.interaction !== \"section\") this.useArmedTool();\n\t};\n\n\tprivate useArmedTool(): void {\n\t\tif (this.disposed) return;\n\t\tif (this.interaction === \"section\") {\n\t\t\tvoid this.clipper.create(this.world);\n\t\t\t// A newly placed plane doesn't move the camera, so nothing triggers the Fragments update\n\t\t\t// that pushes the clip into the shader — force one. Without this the plane helper appears\n\t\t\t// but the geometry stays whole, which is exactly how \"sections isn't working\" looked.\n\t\t\tvoid this.fragments.core.update(true);\n\t\t} else if (this.interaction) void this.measurements[this.interaction].create();\n\t}\n\n\tprivate readonly onKeyDown = (event: KeyboardEvent): void => {\n\t\tif (event.code !== \"Delete\" && event.code !== \"Backspace\") return;\n\t\tif (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement) return;\n\t\tif (this.interaction && this.interaction !== \"section\") void this.measurements[this.interaction].delete();\n\t\telse void this.clipper.delete(this.world);\n\t};\n\n\tprivate ensureActive(): void {\n\t\tif (this.disposed) throw new Error(\"FragmentViewport has been disposed\");\n\t}\n\n\t/** Release the WebGL context and every listener. Must run on unmount or contexts leak. */\n\tasync dispose(): Promise<void> {\n\t\tif (this.disposed) return;\n\t\tthis.disposed = true;\n\t\tthis.resizeObserver.disconnect();\n\t\tthis.clearMarkers();\n\t\tthis.cinematic?.dispose();\n\t\tthis.container.removeEventListener(\"pointerdown\", this.onPointerDown);\n\t\tthis.container.removeEventListener(\"pointerup\", this.onPointerUp);\n\t\tthis.container.removeEventListener(\"dblclick\", this.onDoubleClick);\n\t\twindow.removeEventListener(\"keydown\", this.onKeyDown);\n\t\tthis.components.dispose();\n\t}\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { FragmentMarker, FragmentSelection, FragmentStorey, FragmentViewportStatus, InteractionMode, MeasurementKind, NavigationMode, ProjectionMode } from "./fragment-viewer/runtime.mjs";
|
|
2
|
+
import { FragmentViewerApi, FragmentViewerProvider, FragmentViewerState, useFragmentViewer, useOptionalFragmentViewer } from "./fragment-viewer/context.mjs";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
//#region src/fragment-viewer.d.ts
|
|
5
|
+
export interface FragmentViewerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect"> {
|
|
6
|
+
/** URL of the `.frag` model to display. */
|
|
7
|
+
src: string;
|
|
8
|
+
/** Optional model URL used when `src` cannot be loaded. */
|
|
9
|
+
fallbackSrc?: string;
|
|
10
|
+
/** Stable id for the model within the viewport. Defaults to `src`. */
|
|
11
|
+
modelId?: string;
|
|
12
|
+
/**
|
|
13
|
+
* URL of the Fragments web worker — required, because a bundled library cannot resolve the
|
|
14
|
+
* `@thatopen/fragments/worker` specifier to a runtime URL. In a Vite app:
|
|
15
|
+
* `import workerUrl from "@thatopen/fragments/worker?url"`.
|
|
16
|
+
*/
|
|
17
|
+
workerUrl: string;
|
|
18
|
+
/** Scene background. `null` leaves the canvas transparent. */
|
|
19
|
+
background?: string | null;
|
|
20
|
+
/** Highlight colour for picked elements. */
|
|
21
|
+
selectionColor?: string;
|
|
22
|
+
/** Show the underlying SDK logo over the canvas. Defaults to false. */
|
|
23
|
+
showLogo?: boolean;
|
|
24
|
+
/** Animate the camera when first framing the model on load. Default true. Set false to jump to the
|
|
25
|
+
* framed position instantly (e.g. when an outer transition already zooms the viewer in). */
|
|
26
|
+
fitAnimation?: boolean;
|
|
27
|
+
/** Frame only the elements whose IFC category matches one of these patterns (e.g. the building
|
|
28
|
+
* shell) instead of the whole model. Pass a stable (module-level) array — a new array each render
|
|
29
|
+
* reloads the model. */
|
|
30
|
+
fitCategories?: RegExp[];
|
|
31
|
+
/** Multiply the fit distance. Default 1; below 1 frames tighter (closer). */
|
|
32
|
+
fitFactor?: number;
|
|
33
|
+
/** Point markers drawn in the model — workers, sensors, anything with a position. */
|
|
34
|
+
markers?: FragmentMarker[];
|
|
35
|
+
/** Marker radius in model units. Defaults to ~1/300th of the model diagonal. */
|
|
36
|
+
markerRadius?: number;
|
|
37
|
+
/** Let geometry hide markers behind it. Default false — markers read through the model, like pins. */
|
|
38
|
+
markersOccluded?: boolean;
|
|
39
|
+
/** Fires on every pick; `null` means the selection was cleared. */
|
|
40
|
+
onSelectionChange?: (selection: FragmentSelection | null) => void;
|
|
41
|
+
/**
|
|
42
|
+
* Floor-only picking: a click selects (isolates) the storey the element belongs to instead of the
|
|
43
|
+
* element itself, so individual elements aren't selectable. Requires the IFC to have storeys.
|
|
44
|
+
*/
|
|
45
|
+
selectFloorsOnly?: boolean;
|
|
46
|
+
/** Fires as the model moves through loading → ready, or on failure. */
|
|
47
|
+
onStatusChange?: (status: FragmentViewportStatus, error?: Error) => void;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Renders a That Open Fragments (`.frag`) model with orbit, zoom and click-to-select — the same
|
|
51
|
+
* runtime the WC3 engineering viewers use. Fills its parent, so give that parent a bounded height.
|
|
52
|
+
*
|
|
53
|
+
* Wrap it in `FragmentViewerProvider` and it publishes state to `ViewerToolbar` and to any panel
|
|
54
|
+
* calling `useFragmentViewer()`. Without a provider it still works as a plain viewer.
|
|
55
|
+
*
|
|
56
|
+
* `three`, `@thatopen/fragments`, `@thatopen/components` and `@thatopen/components-front` are
|
|
57
|
+
* optional peer dependencies: install them in the consuming app.
|
|
58
|
+
*/
|
|
59
|
+
declare const FragmentViewer: React.ForwardRefExoticComponent<FragmentViewerProps & React.RefAttributes<HTMLDivElement>>;
|
|
60
|
+
//#endregion
|
|
61
|
+
export { type FragmentMarker, type FragmentSelection, type FragmentStorey, FragmentViewer, type FragmentViewerApi, FragmentViewerProvider, type FragmentViewerState, type FragmentViewportStatus, type InteractionMode, type MeasurementKind, type NavigationMode, type ProjectionMode, useFragmentViewer, useOptionalFragmentViewer };
|
|
62
|
+
//# sourceMappingURL=fragment-viewer.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fragment-viewer.d.mts","names":[],"sources":["../src/fragment-viewer.tsx"],"mappings":";;;;iBA8BiB,4BAA4B,KAAK,MAAM,eAAe;;EAEtE;;EAEA;;EAEA;;;;;;EAMA;;EAEA;;EAEA;;EAEA;;;EAGA;;;;EAIA,gBAAgB;;EAEhB;;EAEA,UAAU;;EAEV;;EAEA;;EAEA,qBAAqB,WAAW;;;;;EAKhC;;EAEA,kBAAkB,QAAQ,wBAAwB,QAAQ;;;;;;;;;;;;cAarD,gBAAc,MAAA,0BAAA,sBAAA,MAAA,cAAA"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { Empty } from "./empty.mjs";
|
|
2
|
+
import { Skeleton } from "./skeleton.mjs";
|
|
3
|
+
import { FragmentViewerProvider, useFragmentViewer, useFragmentViewerRegistration, useOptionalFragmentViewer } from "./fragment-viewer/context.mjs";
|
|
4
|
+
import { FragmentViewport } from "./fragment-viewer/runtime.mjs";
|
|
5
|
+
import { cn } from "@corensystem/coren-utils";
|
|
6
|
+
import { Box, TriangleAlert } from "lucide-react";
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
//#region src/fragment-viewer.tsx
|
|
10
|
+
/**
|
|
11
|
+
* Renders a That Open Fragments (`.frag`) model with orbit, zoom and click-to-select — the same
|
|
12
|
+
* runtime the WC3 engineering viewers use. Fills its parent, so give that parent a bounded height.
|
|
13
|
+
*
|
|
14
|
+
* Wrap it in `FragmentViewerProvider` and it publishes state to `ViewerToolbar` and to any panel
|
|
15
|
+
* calling `useFragmentViewer()`. Without a provider it still works as a plain viewer.
|
|
16
|
+
*
|
|
17
|
+
* `three`, `@thatopen/fragments`, `@thatopen/components` and `@thatopen/components-front` are
|
|
18
|
+
* optional peer dependencies: install them in the consuming app.
|
|
19
|
+
*/
|
|
20
|
+
const FragmentViewer = React.forwardRef(({ src, fallbackSrc, modelId, workerUrl, background = null, selectionColor, showLogo = false, fitAnimation, fitCategories, fitFactor, markers, markerRadius, markersOccluded, onSelectionChange, selectFloorsOnly, onStatusChange, className, ...props }, ref) => {
|
|
21
|
+
const hostRef = React.useRef(null);
|
|
22
|
+
const [status, setStatus] = React.useState("idle");
|
|
23
|
+
const [error, setError] = React.useState(null);
|
|
24
|
+
const [activeSrc, setActiveSrc] = React.useState(src);
|
|
25
|
+
const registration = useFragmentViewerRegistration();
|
|
26
|
+
React.useEffect(() => setActiveSrc(src), [src]);
|
|
27
|
+
React.useImperativeHandle(ref, () => hostRef.current);
|
|
28
|
+
const selectionHandler = React.useRef(onSelectionChange);
|
|
29
|
+
const statusHandler = React.useRef(onStatusChange);
|
|
30
|
+
const registrationRef = React.useRef(registration);
|
|
31
|
+
React.useEffect(() => {
|
|
32
|
+
selectionHandler.current = onSelectionChange;
|
|
33
|
+
statusHandler.current = onStatusChange;
|
|
34
|
+
registrationRef.current = registration;
|
|
35
|
+
}, [
|
|
36
|
+
onSelectionChange,
|
|
37
|
+
onStatusChange,
|
|
38
|
+
registration
|
|
39
|
+
]);
|
|
40
|
+
React.useEffect(() => {
|
|
41
|
+
const host = hostRef.current;
|
|
42
|
+
if (!host) return;
|
|
43
|
+
const viewport = new FragmentViewport(host, {
|
|
44
|
+
workerUrl,
|
|
45
|
+
background,
|
|
46
|
+
selectionColor,
|
|
47
|
+
showLogo,
|
|
48
|
+
selectFloorsOnly,
|
|
49
|
+
fitAnimation,
|
|
50
|
+
fitCategories,
|
|
51
|
+
fitFactor,
|
|
52
|
+
onStatusChange: (next, failure) => {
|
|
53
|
+
if (next === "error" && fallbackSrc && activeSrc !== fallbackSrc) {
|
|
54
|
+
setStatus("loading");
|
|
55
|
+
setError(null);
|
|
56
|
+
setActiveSrc(fallbackSrc);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
setStatus(next);
|
|
60
|
+
setError(failure ?? null);
|
|
61
|
+
registrationRef.current?.patch({
|
|
62
|
+
status: next,
|
|
63
|
+
error: failure ?? null
|
|
64
|
+
});
|
|
65
|
+
statusHandler.current?.(next, failure);
|
|
66
|
+
},
|
|
67
|
+
onSelectionChange: (selection) => {
|
|
68
|
+
registrationRef.current?.patch({ selection });
|
|
69
|
+
selectionHandler.current?.(selection);
|
|
70
|
+
},
|
|
71
|
+
onStoreyPick: (storeyId) => {
|
|
72
|
+
registrationRef.current?.patch({ activeStorey: storeyId });
|
|
73
|
+
viewportRef.current?.openStorey(storeyId);
|
|
74
|
+
},
|
|
75
|
+
onModelsChange: (modelIds) => registrationRef.current?.patch({ modelIds }),
|
|
76
|
+
onHeadingChange: (heading) => registrationRef.current?.patch({ heading })
|
|
77
|
+
});
|
|
78
|
+
viewportRef.current = viewport;
|
|
79
|
+
registrationRef.current?.register(viewport);
|
|
80
|
+
viewport.load(activeSrc, modelId ?? activeSrc);
|
|
81
|
+
return () => {
|
|
82
|
+
viewportRef.current = null;
|
|
83
|
+
registrationRef.current?.register(null);
|
|
84
|
+
viewport.dispose();
|
|
85
|
+
};
|
|
86
|
+
}, [
|
|
87
|
+
activeSrc,
|
|
88
|
+
fallbackSrc,
|
|
89
|
+
modelId,
|
|
90
|
+
workerUrl,
|
|
91
|
+
background,
|
|
92
|
+
selectionColor,
|
|
93
|
+
showLogo,
|
|
94
|
+
selectFloorsOnly,
|
|
95
|
+
fitAnimation,
|
|
96
|
+
fitCategories,
|
|
97
|
+
fitFactor
|
|
98
|
+
]);
|
|
99
|
+
const viewportRef = React.useRef(null);
|
|
100
|
+
React.useEffect(() => {
|
|
101
|
+
if (status !== "ready") return;
|
|
102
|
+
viewportRef.current?.setMarkers(markers ?? [], {
|
|
103
|
+
radius: markerRadius,
|
|
104
|
+
occluded: markersOccluded
|
|
105
|
+
});
|
|
106
|
+
}, [
|
|
107
|
+
markers,
|
|
108
|
+
markerRadius,
|
|
109
|
+
markersOccluded,
|
|
110
|
+
status
|
|
111
|
+
]);
|
|
112
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
113
|
+
ref: hostRef,
|
|
114
|
+
className: cn("wwc:relative wwc:h-full wwc:w-full", className),
|
|
115
|
+
...props,
|
|
116
|
+
children: [
|
|
117
|
+
status === "loading" && /* @__PURE__ */ jsx("div", {
|
|
118
|
+
className: "wwc:pointer-events-none wwc:absolute wwc:inset-0 wwc:z-10 wwc:flex wwc:items-center wwc:justify-center",
|
|
119
|
+
children: /* @__PURE__ */ jsx(Skeleton, { className: "wwc:h-24 wwc:w-48" })
|
|
120
|
+
}),
|
|
121
|
+
status === "error" && /* @__PURE__ */ jsx("div", {
|
|
122
|
+
className: "wwc:absolute wwc:inset-0 wwc:z-10 wwc:flex wwc:items-center wwc:justify-center wwc:bg-background/80 wwc:p-6",
|
|
123
|
+
children: /* @__PURE__ */ jsx(Empty, {
|
|
124
|
+
icon: /* @__PURE__ */ jsx(TriangleAlert, { className: "wwc:h-6 wwc:w-6" }),
|
|
125
|
+
title: "Model failed to load",
|
|
126
|
+
description: error?.message ?? "The Fragments model could not be read."
|
|
127
|
+
})
|
|
128
|
+
}),
|
|
129
|
+
status === "idle" && /* @__PURE__ */ jsx("div", {
|
|
130
|
+
className: "wwc:absolute wwc:inset-0 wwc:z-10 wwc:flex wwc:items-center wwc:justify-center",
|
|
131
|
+
children: /* @__PURE__ */ jsx(Empty, {
|
|
132
|
+
icon: /* @__PURE__ */ jsx(Box, { className: "wwc:h-6 wwc:w-6" }),
|
|
133
|
+
title: "No model",
|
|
134
|
+
description: "Provide a .frag source."
|
|
135
|
+
})
|
|
136
|
+
})
|
|
137
|
+
]
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
FragmentViewer.displayName = "FragmentViewer";
|
|
141
|
+
//#endregion
|
|
142
|
+
export { FragmentViewer, FragmentViewerProvider, useFragmentViewer, useOptionalFragmentViewer };
|
|
143
|
+
|
|
144
|
+
//# sourceMappingURL=fragment-viewer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fragment-viewer.mjs","names":[],"sources":["../src/fragment-viewer.tsx"],"sourcesContent":["import {cn} from \"@corensystem/coren-utils\";\nimport {Box, TriangleAlert} from \"lucide-react\";\nimport * as React from \"react\";\n\nimport {Empty} from \"./empty\";\nimport {useFragmentViewerRegistration} from \"./fragment-viewer/context\";\nimport {\n\tFragmentViewport,\n\ttype FragmentMarker,\n\ttype FragmentSelection,\n\ttype FragmentViewportStatus,\n} from \"./fragment-viewer/runtime\";\nimport {Skeleton} from \"./skeleton\";\n\nexport type {FragmentMarker, FragmentSelection, FragmentViewportStatus};\nexport {\n\tFragmentViewerProvider,\n\tuseFragmentViewer,\n\tuseOptionalFragmentViewer,\n\ttype FragmentViewerApi,\n\ttype FragmentViewerState,\n} from \"./fragment-viewer/context\";\nexport type {\n\tFragmentStorey,\n\tInteractionMode,\n\tMeasurementKind,\n\tNavigationMode,\n\tProjectionMode,\n} from \"./fragment-viewer/runtime\";\n\nexport interface FragmentViewerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n\t/** URL of the `.frag` model to display. */\n\tsrc: string;\n\t/** Optional model URL used when `src` cannot be loaded. */\n\tfallbackSrc?: string;\n\t/** Stable id for the model within the viewport. Defaults to `src`. */\n\tmodelId?: string;\n\t/**\n\t * URL of the Fragments web worker — required, because a bundled library cannot resolve the\n\t * `@thatopen/fragments/worker` specifier to a runtime URL. In a Vite app:\n\t * `import workerUrl from \"@thatopen/fragments/worker?url\"`.\n\t */\n\tworkerUrl: string;\n\t/** Scene background. `null` leaves the canvas transparent. */\n\tbackground?: string | null;\n\t/** Highlight colour for picked elements. */\n\tselectionColor?: string;\n\t/** Show the underlying SDK logo over the canvas. Defaults to false. */\n\tshowLogo?: boolean;\n\t/** Animate the camera when first framing the model on load. Default true. Set false to jump to the\n\t * framed position instantly (e.g. when an outer transition already zooms the viewer in). */\n\tfitAnimation?: boolean;\n\t/** Frame only the elements whose IFC category matches one of these patterns (e.g. the building\n\t * shell) instead of the whole model. Pass a stable (module-level) array — a new array each render\n\t * reloads the model. */\n\tfitCategories?: RegExp[];\n\t/** Multiply the fit distance. Default 1; below 1 frames tighter (closer). */\n\tfitFactor?: number;\n\t/** Point markers drawn in the model — workers, sensors, anything with a position. */\n\tmarkers?: FragmentMarker[];\n\t/** Marker radius in model units. Defaults to ~1/300th of the model diagonal. */\n\tmarkerRadius?: number;\n\t/** Let geometry hide markers behind it. Default false — markers read through the model, like pins. */\n\tmarkersOccluded?: boolean;\n\t/** Fires on every pick; `null` means the selection was cleared. */\n\tonSelectionChange?: (selection: FragmentSelection | null) => void;\n\t/**\n\t * Floor-only picking: a click selects (isolates) the storey the element belongs to instead of the\n\t * element itself, so individual elements aren't selectable. Requires the IFC to have storeys.\n\t */\n\tselectFloorsOnly?: boolean;\n\t/** Fires as the model moves through loading → ready, or on failure. */\n\tonStatusChange?: (status: FragmentViewportStatus, error?: Error) => void;\n}\n\n/**\n * Renders a That Open Fragments (`.frag`) model with orbit, zoom and click-to-select — the same\n * runtime the WC3 engineering viewers use. Fills its parent, so give that parent a bounded height.\n *\n * Wrap it in `FragmentViewerProvider` and it publishes state to `ViewerToolbar` and to any panel\n * calling `useFragmentViewer()`. Without a provider it still works as a plain viewer.\n *\n * `three`, `@thatopen/fragments`, `@thatopen/components` and `@thatopen/components-front` are\n * optional peer dependencies: install them in the consuming app.\n */\nconst FragmentViewer = React.forwardRef<HTMLDivElement, FragmentViewerProps>(\n\t(\n\t\t{\n\t\t\tsrc,\n\t\t\tfallbackSrc,\n\t\t\tmodelId,\n\t\t\tworkerUrl,\n\t\t\tbackground = null,\n\t\t\tselectionColor,\n\t\t\tshowLogo = false,\n\t\t\tfitAnimation,\n\t\t\tfitCategories,\n\t\t\tfitFactor,\n\t\t\tmarkers,\n\t\t\tmarkerRadius,\n\t\t\tmarkersOccluded,\n\t\t\tonSelectionChange,\n\t\t\tselectFloorsOnly,\n\t\t\tonStatusChange,\n\t\t\tclassName,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) => {\n\t\tconst hostRef = React.useRef<HTMLDivElement>(null);\n\t\tconst [status, setStatus] = React.useState<FragmentViewportStatus>(\"idle\");\n\t\tconst [error, setError] = React.useState<Error | null>(null);\n\t\tconst [activeSrc, setActiveSrc] = React.useState(src);\n\t\tconst registration = useFragmentViewerRegistration();\n\n\t\tReact.useEffect(() => setActiveSrc(src), [src]);\n\n\t\tReact.useImperativeHandle(ref, () => hostRef.current as HTMLDivElement);\n\n\t\t// Hold callbacks and context wiring in refs so a changed inline handler doesn't tear the WebGL\n\t\t// context down — recreating the viewport reloads the whole model.\n\t\tconst selectionHandler = React.useRef(onSelectionChange);\n\t\tconst statusHandler = React.useRef(onStatusChange);\n\t\tconst registrationRef = React.useRef(registration);\n\t\tReact.useEffect(() => {\n\t\t\tselectionHandler.current = onSelectionChange;\n\t\t\tstatusHandler.current = onStatusChange;\n\t\t\tregistrationRef.current = registration;\n\t\t}, [onSelectionChange, onStatusChange, registration]);\n\n\t\tReact.useEffect(() => {\n\t\t\tconst host = hostRef.current;\n\t\t\tif (!host) return;\n\n\t\t\tconst viewport = new FragmentViewport(host, {\n\t\t\t\tworkerUrl,\n\t\t\t\tbackground,\n\t\t\t\tselectionColor,\n\t\t\t\tshowLogo,\n\t\t\t\tselectFloorsOnly,\n\t\t\t\tfitAnimation,\n\t\t\t\tfitCategories,\n\t\t\t\tfitFactor,\n\t\t\t\tonStatusChange: (next, failure) => {\n\t\t\t\t\tif (next === \"error\" && fallbackSrc && activeSrc !== fallbackSrc) {\n\t\t\t\t\t\tsetStatus(\"loading\");\n\t\t\t\t\t\tsetError(null);\n\t\t\t\t\t\tsetActiveSrc(fallbackSrc);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsetStatus(next);\n\t\t\t\t\tsetError(failure ?? null);\n\t\t\t\t\tregistrationRef.current?.patch({status: next, error: failure ?? null});\n\t\t\t\t\tstatusHandler.current?.(next, failure);\n\t\t\t\t},\n\t\t\t\tonSelectionChange: (selection) => {\n\t\t\t\t\tregistrationRef.current?.patch({selection});\n\t\t\t\t\tselectionHandler.current?.(selection);\n\t\t\t\t},\n\t\t\t\t// A floor pick isolates that storey and syncs the context so panels react to activeStorey.\n\t\t\t\tonStoreyPick: (storeyId) => {\n\t\t\t\t\tregistrationRef.current?.patch({activeStorey: storeyId});\n\t\t\t\t\tvoid viewportRef.current?.openStorey(storeyId);\n\t\t\t\t},\n\t\t\t\tonModelsChange: (modelIds) => registrationRef.current?.patch({modelIds}),\n\t\t\t\tonHeadingChange: (heading) => registrationRef.current?.patch({heading}),\n\t\t\t});\n\n\t\t\tviewportRef.current = viewport;\n\t\t\tregistrationRef.current?.register(viewport);\n\t\t\tvoid viewport.load(activeSrc, modelId ?? activeSrc);\n\n\t\t\treturn () => {\n\t\t\t\tviewportRef.current = null;\n\t\t\t\tregistrationRef.current?.register(null);\n\t\t\t\tvoid viewport.dispose();\n\t\t\t};\n\t\t}, [\n\t\t\tactiveSrc,\n\t\t\tfallbackSrc,\n\t\t\tmodelId,\n\t\t\tworkerUrl,\n\t\t\tbackground,\n\t\t\tselectionColor,\n\t\t\tshowLogo,\n\t\t\tselectFloorsOnly,\n\t\t\tfitAnimation,\n\t\t\tfitCategories,\n\t\t\tfitFactor,\n\t\t]);\n\n\t\tconst viewportRef = React.useRef<FragmentViewport | null>(null);\n\t\tReact.useEffect(() => {\n\t\t\t// Applied separately from construction so changing the marker set never tears down the\n\t\t\t// WebGL context or reloads the model.\n\t\t\tif (status !== \"ready\") return;\n\t\t\tviewportRef.current?.setMarkers(markers ?? [], {radius: markerRadius, occluded: markersOccluded});\n\t\t}, [markers, markerRadius, markersOccluded, status]);\n\n\t\treturn (\n\t\t\t<div ref={hostRef} className={cn(\"wwc:relative wwc:h-full wwc:w-full\", className)} {...props}>\n\t\t\t\t{status === \"loading\" && (\n\t\t\t\t\t<div className=\"wwc:pointer-events-none wwc:absolute wwc:inset-0 wwc:z-10 wwc:flex wwc:items-center wwc:justify-center\">\n\t\t\t\t\t\t<Skeleton className=\"wwc:h-24 wwc:w-48\" />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{status === \"error\" && (\n\t\t\t\t\t<div className=\"wwc:absolute wwc:inset-0 wwc:z-10 wwc:flex wwc:items-center wwc:justify-center wwc:bg-background/80 wwc:p-6\">\n\t\t\t\t\t\t<Empty\n\t\t\t\t\t\t\ticon={<TriangleAlert className=\"wwc:h-6 wwc:w-6\" />}\n\t\t\t\t\t\t\ttitle=\"Model failed to load\"\n\t\t\t\t\t\t\tdescription={error?.message ?? \"The Fragments model could not be read.\"}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{status === \"idle\" && (\n\t\t\t\t\t<div className=\"wwc:absolute wwc:inset-0 wwc:z-10 wwc:flex wwc:items-center wwc:justify-center\">\n\t\t\t\t\t\t<Empty icon={<Box className=\"wwc:h-6 wwc:w-6\" />} title=\"No model\" description=\"Provide a .frag source.\" />\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t},\n);\nFragmentViewer.displayName = \"FragmentViewer\";\n\nexport {FragmentViewer};\n"],"mappings":"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"}
|
package/dist/gantt.d.mts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
//#region src/gantt.d.ts
|
|
3
|
+
export interface GanttTask {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
startDate: Date;
|
|
7
|
+
endDate: Date;
|
|
8
|
+
progress?: number;
|
|
9
|
+
color?: "default" | "muted" | "accent" | "chart1" | "chart2" | "chart3" | "chart4" | "chart5";
|
|
10
|
+
children?: GanttTask[];
|
|
11
|
+
}
|
|
12
|
+
export interface GanttResource {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
avatar?: string;
|
|
16
|
+
role?: string;
|
|
17
|
+
department?: string;
|
|
18
|
+
tasks: GanttTask[];
|
|
19
|
+
}
|
|
20
|
+
interface GanttContextValue {
|
|
21
|
+
startDate: Date;
|
|
22
|
+
endDate: Date;
|
|
23
|
+
columnWidth: number;
|
|
24
|
+
rowHeight: number;
|
|
25
|
+
sidebarWidth: number;
|
|
26
|
+
timelineRef: React.RefObject<HTMLDivElement | null>;
|
|
27
|
+
}
|
|
28
|
+
declare function useGantt(): GanttContextValue;
|
|
29
|
+
interface GanttProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
30
|
+
startDate: Date;
|
|
31
|
+
endDate: Date;
|
|
32
|
+
columnWidth?: number;
|
|
33
|
+
rowHeight?: number;
|
|
34
|
+
sidebarWidth?: number;
|
|
35
|
+
}
|
|
36
|
+
/** Gantt chart for project timeline visualization with task dependencies. */
|
|
37
|
+
declare const Gantt: React.ForwardRefExoticComponent<GanttProps & React.RefAttributes<HTMLDivElement>>;
|
|
38
|
+
interface GanttHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
39
|
+
sidebarHeader?: React.ReactNode;
|
|
40
|
+
}
|
|
41
|
+
declare const GanttHeader: React.ForwardRefExoticComponent<GanttHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
42
|
+
interface GanttBodyProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
43
|
+
showTodayLine?: boolean;
|
|
44
|
+
}
|
|
45
|
+
declare const GanttBody: React.ForwardRefExoticComponent<GanttBodyProps & React.RefAttributes<HTMLDivElement>>;
|
|
46
|
+
interface GanttRowProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
47
|
+
isGroup?: boolean;
|
|
48
|
+
_renderSidebar?: boolean;
|
|
49
|
+
_renderTimeline?: boolean;
|
|
50
|
+
}
|
|
51
|
+
declare const GanttRow: React.ForwardRefExoticComponent<GanttRowProps & React.RefAttributes<HTMLDivElement>>;
|
|
52
|
+
declare const GanttSidebarCell: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
53
|
+
declare const GanttTimelineCell: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
54
|
+
interface GanttBarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
55
|
+
startDate: Date;
|
|
56
|
+
endDate: Date;
|
|
57
|
+
color?: "default" | "muted" | "accent" | "chart1" | "chart2" | "chart3" | "chart4" | "chart5";
|
|
58
|
+
progress?: number;
|
|
59
|
+
label?: string;
|
|
60
|
+
showLabel?: boolean;
|
|
61
|
+
}
|
|
62
|
+
declare const GanttBar: React.ForwardRefExoticComponent<GanttBarProps & React.RefAttributes<HTMLDivElement>>;
|
|
63
|
+
declare const GanttTodayLine: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
64
|
+
interface GanttMilestoneProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
65
|
+
date: Date;
|
|
66
|
+
color?: "default" | "muted" | "accent" | "chart1" | "chart2" | "chart3" | "chart4" | "chart5";
|
|
67
|
+
}
|
|
68
|
+
declare const GanttMilestone: React.ForwardRefExoticComponent<GanttMilestoneProps & React.RefAttributes<HTMLDivElement>>;
|
|
69
|
+
declare function getDatePosition(date: Date, chartStart: Date, columnWidth: number): number;
|
|
70
|
+
//#endregion
|
|
71
|
+
export { Gantt, GanttBar, GanttBody, GanttHeader, type GanttHeaderProps, GanttMilestone, GanttRow, GanttSidebarCell, GanttTimelineCell, GanttTodayLine, getDatePosition, useGantt };
|
|
72
|
+
//# sourceMappingURL=gantt.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gantt.d.mts","names":[],"sources":["../src/gantt.tsx"],"mappings":";;iBAKiB;EAChB;EACA;EACA,WAAW;EACX,SAAS;EACT;EACA;EACA,WAAW;;iBAGK;EAChB;EACA;EACA;EACA;EACA;EACA,OAAO;;UAGE;EACT,WAAW;EACX,SAAS;EACT;EACA;EACA;EACA,aAAa,MAAM,UAAU;;iBAKrB,YAAQ;UAsBP,mBAAmB,MAAM,eAAe;EACjD,WAAW;EACX,SAAS;EACT;EACA;EACA;;;cAIK,OAAK,MAAA,0BAAA,aAAA,MAAA,cAAA;UAgCD,yBAAyB,MAAM,eAAe;EACvD,gBAAgB,MAAM;;cAGjB,aAAW,MAAA,0BAAA,mBAAA,MAAA,cAAA;UAoGP,uBAAuB,MAAM,eAAe;EACrD;;cAGK,WAAS,MAAA,0BAAA,iBAAA,MAAA,cAAA;UAiDL,sBAAsB,MAAM,eAAe;EACpD;EACA;EACA;;cAGK,UAAQ,MAAA,0BAAA,gBAAA,MAAA,cAAA;cAuER,kBAAgB,MAAA,0BAAA,MAAA,eAAA,kBAAA,MAAA,cAAA;cAgBhB,mBAAiB,MAAA,0BAAA,MAAA,eAAA,kBAAA,MAAA,cAAA;UA4Bb,sBAAsB,MAAM,eAAe;EACpD,WAAW;EACX,SAAS;EACT;EACA;EACA;EACA;;cAGK,UAAQ,MAAA,0BAAA,gBAAA,MAAA,cAAA;cAoCR,gBAAc,MAAA,0BAAA,MAAA,eAAA,kBAAA,MAAA,cAAA;UA8BV,4BAA4B,MAAM,eAAe;EAC1D,MAAM;EACN;;cAGK,gBAAc,MAAA,0BAAA,sBAAA,MAAA,cAAA;iBAsBX,gBAAgB,MAAM,MAAM,YAAY,MAAM"}
|