@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":"wc3-analysis-shared.mjs","names":["Table"],"sources":["../../src/pages/wc3-analysis-shared.tsx"],"sourcesContent":["import type {EChartsOption} from \"echarts\";\nimport type {ReactElement, ReactNode} from \"react\";\n\nimport {cn} from \"@corensystem/coren-utils\";\nimport {AlertTriangle, BarChart3, ChevronDown, Play, RotateCcw, Table2} from \"lucide-react\";\nimport {useState} from \"react\";\n\nimport {Accordion, AccordionContent, AccordionItem, AccordionTrigger} from \"../accordion\";\nimport {Badge} from \"../badge\";\nimport {Banner} from \"../banner\";\nimport {Button} from \"../button\";\nimport {Card, CardContent, CardHeader, CardTitle} from \"../card\";\nimport {DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger} from \"../dropdown-menu\";\nimport {Empty} from \"../empty\";\nimport {toast} from \"../sonner\";\nimport {Table, TableBody, TableCell, TableHead, TableHeader, TableRow} from \"../table\";\nimport {ToggleGroup, ToggleGroupItem} from \"../toggle-group\";\nimport {TrendChart} from \"../trend-chart\";\nimport {usePersistentState} from \"../use-persistent-state\";\nimport {\n\tWC3_ANALYSIS_GROUP_BYS,\n\tWC3_ANALYSIS_METRICS,\n\tWC3_ANALYSIS_SEVERITIES,\n\tWC3_ANALYSIS_STAGES,\n\tWC3_ANALYSIS_WINDOWS,\n\tWC3_OBSERVATION_ROWS,\n\tWC3_WORKER_ROWS,\n\ttype Wc3AnalysisGrain,\n\ttype Wc3AnalysisJoinedRow,\n\ttype Wc3AnalysisMetric,\n\ttype Wc3AnalysisMode,\n\ttype Wc3AnalysisRouteId,\n\ttype Wc3AnalysisRow,\n\ttype Wc3AnalysisSpec,\n\ttype Wc3AnalysisStageId,\n\ttype Wc3Materialisation,\n\ttype Wc3SavedAnalysis,\n\tanalysisDatasetName,\n\tanalysisDatasetRows,\n\tanalysisMetric,\n\tanalysisMetricMissingInput,\n\tanalysisWorker,\n\twc3AnalysisDefaultSpec,\n} from \"./wc3-analysis-data\";\nimport {Mono, type Wc3LineageNavTarget} from \"./wc3-lineage-shared\";\nimport {WC3_LINK_TYPES} from \"./wc3-ontology-data\";\nimport {WC3_PROCESS_FIXTURE_NOW, WC3_PROCESS_FIXTURE_NOW_MS} from \"./wc3-process-data\";\nimport {WC3_PERSONAS} from \"./wc3-product-shared\";\n\n// The ONE module the three Analysis surfaces share — the two builder tabs (Object analysis, Data\n// analysis) and the Saved analyses list. Same rule as wc3-process-shared.tsx and\n// wc3-pipeline-shared.tsx: it imports nothing from them, so there is no cycle and no helper has to\n// be pasted three times.\n//\n// It owns six things that MUST NOT be restated anywhere else:\n// · the SESSION shape (one spec + its result per builder mode, plus the saved analyses and the\n// materialisations) and every mutation of it — each one pure, session in → NEW session out,\n// · the EXECUTION ROUTING RULE (analysisRoute) — derived from the shape of the query, never faked,\n// · the RESULT COMPUTATION (analysisRun) — a scan of the seeded rows returning aggregates only,\n// · the RESULT DIAGNOSIS (analysisDiagnose), which is the one thing the prototype lacks: it only\n// handles a source with 0 rows SCANNED, never 0 rows MATCHED, so three of the four data-mode\n// sources render a blank panel that reads as a crash,\n// · every user-readable string (WC3_ANALYSIS_MESSAGES), verbatim from the prototype except where\n// the prototype states something untrue (see analysisTraversalKind) or has no state at all,\n// · the entire staged-builder shell (AnalysisWorkbench): the rail, the stage config panel, the\n// result panel, the execution-meta panel and the publish panel. Both builder tabs mount THAT ONE\n// component and differ only in the two stage bodies the prototype itself writes differently\n// (Source and Traverse / Join), so the two tabs structurally cannot drift.\n//\n// What is deliberately NOT here, because each has exactly one consumer: the saved list's column\n// defs, card, filter categories and view toggle (saved view); the object-mode source/traverse option\n// bodies (object view); the data-mode dataset picker (data view). `useDetailLabel` is deliberately\n// NOT re-exported either — no Analysis surface drills in.\n//\n// HONESTY CONTRACT. Every number rendered by anything in this file is computed from the seeded rows\n// by analysisRun. No row count, group count, timing or engine name is ever hardcoded. Where a\n// control cannot change a number, the UI says so (WC3_ANALYSIS_MESSAGES.windowInert); where a metric\n// has no materialised input, the UI names the missing input instead of estimating one.\n\n// ─── Props ───────────────────────────────────────────────────────────────────\n\n/** The engine a spec routes to, plus the verbatim justification the prototype gives. */\nexport type Wc3AnalysisRoute = {id: Wc3AnalysisRouteId; label: string; why: string};\n\n/** One grouped aggregate row. `vals` is keyed by metric id; a metric that returns null shows \"—\". */\nexport type Wc3AnalysisGroup = {key: string; n: number; vals: Record<string, number | null>};\n\n/** The result of ONE execution of ONE spec. Aggregates only — the full row set is never held. */\nexport type Wc3AnalysisResult = {\n\tgroups: Wc3AnalysisGroup[];\n\t/** Metrics with a compute fn. */\n\tsupported: Wc3AnalysisMetric[];\n\t/** Metrics whose `needs` dataset has no materialised rows. */\n\tblocked: Wc3AnalysisMetric[];\n\t/** The source dataset itself returned 0 rows. */\n\tsourceEmpty: boolean;\n\t/** Any source row carries `observed_at`. */\n\tsourceHasTimeColumn: boolean;\n\t/** Source rows + worker rows when a traversal/join runs. */\n\trowsScanned: number;\n\t/** After window + filters. */\n\trowsMatched: number;\n\t/** === groups.length */\n\trowsReturned: number;\n\t/** Matched rows whose `__worker` resolved to null. */\n\trowsUnlinked: number;\n\t/** Measured in-browser at commit time, 0.1ms resolution. */\n\tms: number;\n\troute: Wc3AnalysisRoute;\n\t/** Literal — nothing on this page is estimated. */\n\texact: true;\n\t/** WC3_PROCESS_FIXTURE_NOW. */\n\tasOf: string;\n\t/** Flipped by analysisSaveMaterialisation, reset by any spec change. */\n\tmaterialised: boolean;\n\t/** DECLARED, not enforced — see WC3_ANALYSIS_SCOPE. */\n\tscope: string;\n\tlineage: string[];\n};\n\n/** One builder tab's live state. The result is ALWAYS the result of the spec beside it. */\nexport type Wc3AnalysisModeState = {spec: Wc3AnalysisSpec; result: Wc3AnalysisResult};\n\n/** Everything the perspective mutates in-session. Owned by the shell, never by a view. */\nexport type Wc3AnalysisSession = {\n\tobject: Wc3AnalysisModeState;\n\tdata: Wc3AnalysisModeState;\n\tsaved: Wc3SavedAnalysis[];\n\tmaterialisations: Wc3Materialisation[];\n};\n\nexport type Wc3AnalysisViewProps = {\n\t/** The LIVE session, owned by the workspace shell. Never read the fixture in a surface. */\n\tsession: Wc3AnalysisSession;\n\t/** Commit a whole new session. Every mutation goes through this. */\n\tonSessionChange: (next: Wc3AnalysisSession) => void;\n\t/** Reports the drill-in segment for the shell's breadcrumb. No Analysis surface uses it today. */\n\tonDetailChange?: (label: string | null) => void;\n\t/** Cross-perspective / cross-tab navigation — coarse by design. */\n\tonNavigate?: (target: Wc3LineageNavTarget) => void;\n};\n\n// Like Wc3ProcessViewProps and Wc3PipelineViewProps and unlike Wc3ProductViewProps, the first two\n// props are REQUIRED with no `= {}` default: a frozen fixture cannot back an editable perspective.\n\n/** Why a result panel looks the way it does. Derived, never authored. */\nexport type Wc3AnalysisDiagnosis = \"ok\" | \"source-empty\" | \"no-time-column\" | \"filters-excluded-all\" | \"all-unlinked\";\n\n/** What the workbench hands a mode-specific stage body. */\nexport type Wc3AnalysisStageContext = {\n\tspec: Wc3AnalysisSpec;\n\tresult: Wc3AnalysisResult;\n\t/** Commit a spec patch: re-runs the analysis and clears `materialised`. */\n\tsetSpec: (patch: Partial<Wc3AnalysisSpec>) => void;\n};\n\nexport type Wc3AnalysisWorkbenchProps = {\n\tmode: Wc3AnalysisMode;\n\tsession: Wc3AnalysisSession;\n\tonSessionChange: (next: Wc3AnalysisSession) => void;\n\tonNavigate?: (target: Wc3LineageNavTarget) => void;\n\t/** Source stage body — one of exactly TWO stages whose options differ per mode. */\n\trenderSourceConfig: (ctx: Wc3AnalysisStageContext) => ReactNode;\n\t/** Traverse / Join stage body — the other one. */\n\trenderTraverseConfig: (ctx: Wc3AnalysisStageContext) => ReactNode;\n};\n\n// ─── Strings ─────────────────────────────────────────────────────────────────\n\n/**\n * Every user-readable string on this perspective.\n *\n * Verbatim from the prototype (06-unified-workspace.html, PageAnalysis / AnStageConfig / anRoute /\n * AnResult / AnExecMeta / AnPublish / AnSavedList) EXCEPT for four entries that are marked NEW:\n * `noTimeColumn` and `allUnlinked` close the prototype's only genuine gap (it has no state for\n * 0 rows matched), `windowInert` states a verified fact the prototype's silence hides, and the\n * object-mode traverse hint is rewritten because the prototype's version is false — see\n * {@link analysisTraversalKind}.\n */\nexport const WC3_ANALYSIS_MESSAGES = {\n\tintro: {\n\t\tobject:\n\t\t\t\"Start from an ontology object set, traverse links, add metrics, group and chart. Object identity and permissions come from the ontology throughout.\",\n\t\tdata: \"Start from a governed dataset or event history, join, derive and aggregate. Results can be saved as a materialisation or mapped back to an object type.\",\n\t},\n\tstageHint: {\n\t\tsource: {\n\t\t\tobject: \"An ontology object set. Identity, permissions and valid traversals are defined by the object type.\",\n\t\t\tdata: \"A governed dataset from the catalogue. Datasets declared but not materialised in this prototype return no rows and say so.\",\n\t\t},\n\t\tfilter: \"Bounded predicates evaluated before traversal. Filters narrow the set; they never widen permissions.\",\n\t\ttraverse: {\n\t\t\t// NEW. The prototype claims \"Only traversals the object type declares are offered — this is\n\t\t\t// the ontology acting as the semantic plane.\" That is false of the second option it offers:\n\t\t\t// WC3_LINK_TYPES declares exactly two links off ot_observation (lt_obs_reporter on\n\t\t\t// reported_by, lt_obs_zone on zone_id) and ZERO reference assigned_to, which is a plain\n\t\t\t// string property. The join still resolves, so the option stays — but it is labelled for\n\t\t\t// what it is rather than passed off as ontology metadata.\n\t\t\tobject:\n\t\t\t\t\"One ontology-declared link traversal and one plain property join. Each option below says which it is: only a traversal backed by a link type is the ontology acting as the semantic plane.\",\n\t\t\tdata: \"A declared join between governed datasets.\",\n\t\t},\n\t\tderive:\n\t\t\t\"Metric definitions belong to the ontology, not to this chart. A metric whose input has no materialised rows is unsupported and names what is required.\",\n\t\tgroup:\n\t\t\t\"One hierarchy level at a time. Aggregates come back as grouped rows; the full result set is never materialised in the browser.\",\n\t\tviz: \"Rendering reads the same grouped aggregate the engine returned. Drilling from a bar re-queries the objects behind it.\",\n\t\tpublish: \"Every control below either mutates session state or states plainly that it is unsupported.\",\n\t},\n\trouteWhy: {\n\t\truntime:\n\t\t\t\"A selected metric depends on an input the ontology does not hold as current state. A bounded product job would have to read the governed event set, compute the metric, and write results back through an Action — it cannot be answered by either the object store or a scan of current objects.\",\n\t\tanalytical: (grouped: boolean) =>\n\t\t\t`A historical time window with ${grouped ? \"grouped aggregation\" : \"a join\"} is a columnar scan over fact history, not a lookup of current state. The object store holds current state and would have to reconstruct history row-by-row, so this routes to the analytical adapter which reads columns and returns pages plus aggregates.`,\n\t\toperational: (joined: boolean) =>\n\t\t\t`Bounded filters over current object state with ${joined ? \"a single link traversal\" : \"no traversal\"} and no historical window. The operational object store answers this directly at low latency; sending it to the analytical engine would add scan cost for no benefit.`,\n\t},\n\t/**\n\t * The complete reachable routing rule, stated plainly so the panel does not oversell the thesis.\n\t * The Group stage offers no \"none\" option (faithfully, as in the prototype), so `grouped` is true\n\t * for every spec this UI can produce and the traversal choice can never move the branch.\n\t */\n\trouteLevers:\n\t\t\"The route is computed from the spec, not chosen: any metric with a declared input requirement routes to Product Runtime; otherwise a historical window routes to Analytical and current-state-only routes to Operational. Because the Group stage always sets a grouping, the traversal and group-by choices do not move this decision — the panel does not pretend otherwise.\",\n\tblockedMetrics:\n\t\t\"These need presence intervals per worker. The prototype declares badge_events_import_raw in the dataset catalogue, but it has no materialised rows, so there are no badge-in/badge-out pairs to integrate into exposure hours — and a rate has no denominator without them. Required input: badge events with fld_badge_no and fld_ts landed as a governed event set. No exposure figure is shown, estimated or interpolated.\",\n\tsourceEmpty: (dsName: string) =>\n\t\t`The selected source is declared in the catalogue but holds no materialised rows in this prototype. Required input: a pipeline that lands ${dsName} into the object store or the analytical adapter. Nothing is estimated in its place.`,\n\t/** NEW — the prototype renders a blank panel here. */\n\tnoTimeColumn: (dsName: string, window: number, scanned: number) =>\n\t\t`0 of ${scanned.toLocaleString()} rows matched. ${dsName} has no observed_at column, so the ${window}-week window excludes every row. Switch the window to “current state only” to scan current state.`,\n\t/** NEW — likewise. */\n\tfiltersExcludedAll: (scanned: number) =>\n\t\t`0 of ${scanned.toLocaleString()} rows matched. The declared filters and the time window together exclude every scanned row. Nothing is widened to fill the panel.`,\n\t/** NEW — likewise. */\n\tallUnlinked: (joinKey: string) =>\n\t\t`Every matched row grouped as “— unlinked —”: grouping by contractor reads it off the joined ot_worker, and the join on ${joinKey} resolved for none of these rows.`,\n\t/**\n\t * NEW, and verified by executing the engine: all 65 seeded observations fall between\n\t * 2026-05-29 14:00 and 2026-07-22 06:55, i.e. inside even the 8-week window measured back from\n\t * the 2026-07-22 08:00 fixture clock. Windows 0 / 8 / 26 / 56 all match the same rows and produce\n\t * the same groups. Without this note the control reads as a broken filter.\n\t */\n\twindowInert:\n\t\t\"Changes the execution route, not the row count — every seeded row falls inside even the shortest window.\",\n\tproofScope: (objects: number) =>\n\t\t`these timings are measured over ${objects.toLocaleString()} seeded objects in one browser tab. They demonstrate the query contract, routing rule and result lifecycle. They are not evidence of production-scale execution, and nothing here is projected to billions of rows.`,\n\tscopeQualifier: \"declared — no row on this page is permission-filtered\",\n\tsavedEmpty:\n\t\t\"Nothing saved yet. Saving keeps the spec, the execution route and the lineage together, so a result can always be traced back to the question that produced it.\",\n\tresultFooter: (groups: number, matched: number) =>\n\t\t`${groups.toLocaleString()} groups from ${matched.toLocaleString()} matched rows. Aggregates only; the browser never holds the full set.`,\n\tdrillThrough: (key: string, n: number) =>\n\t\t`Drill-through: ${key} — ${n.toLocaleString()} objects. Object identity is preserved from the ontology, so drilling lands on real instances.`,\n\tsavedToast: (name: string) => `Saved analysis “${name}” with its execution route and lineage.`,\n\tmaterialisedToast: (groups: number) =>\n\t\t`Materialised ${groups.toLocaleString()} grouped rows. Execution metadata now reads Materialised rather than Live query.`,\n\tpublish: {\n\t\tcommandCentre:\n\t\t\t\"A Command Center tile would bind to this saved analysis by reference, re-running it under the viewer's own permissions rather than caching one user's result. Save the analysis first to create that reference.\",\n\t\tmapToObjectType:\n\t\t\t\"Unsupported in this prototype. Mapping an analytical result into the ontology creates a new object type owned by a package, which is a governed package install (spec §3.2) — not a runtime write. This surface cannot author packages.\",\n\t\tproductRuntime:\n\t\t\t\"Product Runtime would receive a reference to this governed result set, not a copy. It reads the set, computes, and writes back only through ontology Actions.\",\n\t\tactionProposal: (key: string, n: number) =>\n\t\t\t`Would open a governed Action proposal scoped to ${key} (${n.toLocaleString()} objects). Write-back is an Action, never a direct table write — this is the ontology round-trip.`,\n\t\tnoGroups: \"No grouped rows to propose against.\",\n\t},\n} as const;\n\n/**\n * Route → Badge variant. operational = low-latency current state, analytical = columnar scan,\n * runtime = a bounded product job that does not exist yet. Theme tokens only.\n */\nexport const WC3_ANALYSIS_ROUTE_VARIANT: Record<Wc3AnalysisRouteId, \"successSoft\" | \"infoSoft\" | \"warningSoft\"> = {\n\toperational: \"successSoft\",\n\tanalytical: \"infoSoft\",\n\truntime: \"warningSoft\",\n};\n\n/** The prototype's route labels. Kept here so a saved record's `route` string can be read back. */\nconst ROUTE_LABEL: Record<Wc3AnalysisRouteId, string> = {\n\toperational: \"Operational\",\n\tanalytical: \"Analytical\",\n\truntime: \"Product Runtime\",\n};\n\n/**\n * DECLARED scope, not enforced. The workspace shell has no persona switcher, so this is the default\n * lens; no row on this page is permission-filtered and the panel says so next to it.\n */\nexport const WC3_ANALYSIS_SCOPE = `project · Falcon Heights Medical Tower — acting as ${WC3_PERSONAS[0].name}`;\n\n/**\n * Intra-perspective nav. Literals rather than an import of PERSPECTIVES, for the same reason\n * lineageNav uses literals: it would close the cycle workspace → registry → tabs → shared →\n * workspace. The shell guards an unknown tab id, so a rename degrades to a no-op rather than a crash.\n */\nexport const analysisNav = {\n\tobject: () => ({perspectiveId: \"analysis\", tabId: \"object\"}),\n\tdata: () => ({perspectiveId: \"analysis\", tabId: \"data\"}),\n\tsaved: () => ({perspectiveId: \"analysis\", tabId: \"saved\"}),\n} satisfies Record<string, () => Wc3LineageNavTarget>;\n\n// ─── Execution routing ───────────────────────────────────────────────────────\n\n/**\n * The execution engine a spec routes to. DERIVED from the shape of the query, never chosen by the\n * user and never faked — this is the architectural point of the whole perspective: one semantic\n * spec, three engines.\n *\n * Transcribed from the prototype's `anRoute`. Two things are transcribed rather than \"improved\":\n * · `needsRuntime` tests the metric's DECLARED `needs`, not the OBSERVED\n * `analysisMetricMissingInput`. Today both `needs` metrics are unmaterialised so the two agree;\n * the rule is the prototype's and stays. Materialising badge_events_import_raw would still route\n * to Product Runtime, which is correct — the metric is a product job either way.\n * · `grouped` is true for every spec this UI can produce, because the Group stage offers no \"none\"\n * option. So `joined` never actually moves the branch. See WC3_ANALYSIS_MESSAGES.routeLevers,\n * which the exec-meta panel renders so the surface does not imply otherwise.\n */\nexport function analysisRoute(spec: Wc3AnalysisSpec): Wc3AnalysisRoute {\n\tconst hist = spec.window > 0;\n\tconst grouped = !!spec.groupBy;\n\tconst joined = spec.mode === \"data\" ? !!spec.joinDs : !!spec.traverse;\n\tconst needsRuntime = spec.metrics.some((id) => !!analysisMetric(id)?.needs);\n\tif (needsRuntime) {\n\t\treturn {id: \"runtime\", label: ROUTE_LABEL.runtime, why: WC3_ANALYSIS_MESSAGES.routeWhy.runtime};\n\t}\n\tif (hist && (grouped || joined)) {\n\t\treturn {\n\t\t\tid: \"analytical\",\n\t\t\tlabel: ROUTE_LABEL.analytical,\n\t\t\twhy: WC3_ANALYSIS_MESSAGES.routeWhy.analytical(grouped),\n\t\t};\n\t}\n\treturn {\n\t\tid: \"operational\",\n\t\tlabel: ROUTE_LABEL.operational,\n\t\twhy: WC3_ANALYSIS_MESSAGES.routeWhy.operational(joined),\n\t};\n}\n\n// ─── Execution ───────────────────────────────────────────────────────────────\n\nconst DAY_MS = 86_400_000;\n\n/** \"2026-07-22 06:55\" → epoch ms. The fixture stamps use a space, not a T. */\nconst parseStamp = (s: string): number => Date.parse(s.replace(\" \", \"T\"));\n\n/** The join key an object-mode traversal / a data-mode join actually follows, or null. */\nfunction analysisJoinKey(spec: Wc3AnalysisSpec): string | null {\n\t// Data mode's key is FIXED at reported_by in the prototype — the join is declared between\n\t// datasets, not per source — which is exactly why a non-observation source resolves to no worker\n\t// at all. The data view says so next to the option rather than hiding it.\n\treturn spec.mode === \"object\" ? (spec.traverse ?? null) : spec.joinDs ? \"reported_by\" : null;\n}\n\nconst stringField = (row: Wc3AnalysisRow, field: string): string | null => {\n\tconst v = row[field];\n\treturn typeof v === \"string\" ? v : null;\n};\n\n/**\n * Runs ONE spec over the seeded rows and returns aggregates only — never a materialised full result\n * set, mirroring the prototype's ObjectSetSpec/Costed<T> framing.\n *\n * MUTATION HAZARD, and the reason every step below copies: `WC3_OBSERVATION_ROWS` is not a copy of\n * the observation rows, it is the SAME array object as `WC3_PROCESS_INSTANCES.ot_observation`. The\n * traversal therefore builds joined rows with `{...r, __worker}` and never assigns `r.__worker`, and\n * nothing here calls `.sort()` or `.reverse()` on a source array — only on arrays this function has\n * just created. A single in-place write would silently change the Processes instance queue and the\n * ontology instance counts, and it would not show up in this perspective's own tests.\n */\nexport function analysisRun(spec: Wc3AnalysisSpec): Wc3AnalysisResult {\n\tconst t0 = performance.now();\n\n\tconst source: Wc3AnalysisRow[] =\n\t\tspec.mode === \"object\"\n\t\t\t? (WC3_OBSERVATION_ROWS as unknown as Wc3AnalysisRow[])\n\t\t\t: analysisDatasetRows(spec.sourceDs ?? \"\");\n\tconst sourceEmpty = source.length === 0;\n\tconst sourceHasTimeColumn = source.some((r) => typeof r.observed_at === \"string\");\n\tlet rowsScanned = source.length;\n\n\t// Time window — weeks back from the frozen fixture clock.\n\tlet rows: Wc3AnalysisRow[] = source;\n\tif (spec.window > 0) {\n\t\tconst floor = WC3_PROCESS_FIXTURE_NOW_MS - spec.window * 7 * DAY_MS;\n\t\trows = rows.filter((r) => {\n\t\t\tconst stamp = stringField(r, \"observed_at\");\n\t\t\treturn stamp !== null && parseStamp(stamp) >= floor;\n\t\t});\n\t}\n\n\t// Declared filters — bounded predicates evaluated before traversal.\n\tfor (const f of spec.filters) {\n\t\trows = rows.filter((r) => String(r[f.field]) === String(f.value));\n\t}\n\n\t// Traversal / join — attach the worker, and through it the worker's contractor.\n\tconst joinKey = analysisJoinKey(spec);\n\tif (joinKey) rowsScanned += WC3_WORKER_ROWS.length;\n\t// The cast is only about the index signature: `Wc3AnalysisRow` declares every value as\n\t// string | number | boolean | null, and `__worker` holds a row object. The value is a FRESH\n\t// object built by spreading `r` — the source row is never written to.\n\tconst joined: Wc3AnalysisJoinedRow[] = rows.map(\n\t\t(r) =>\n\t\t\t({\n\t\t\t\t...r,\n\t\t\t\t__worker: joinKey ? analysisWorker(stringField(r, joinKey)) : null,\n\t\t\t}) as Wc3AnalysisJoinedRow,\n\t);\n\tconst rowsUnlinked = joinKey ? joined.filter((r) => !r.__worker).length : 0;\n\n\t// Grouping — one hierarchy level, optionally × month.\n\tconst keyOf = (r: Wc3AnalysisJoinedRow): string => {\n\t\tconst parts: string[] = [];\n\t\tif (spec.groupBy === \"contractor\") parts.push(r.__worker?.contractor ?? \"— unlinked —\");\n\t\tif (spec.groupBy === \"severity\") parts.push(stringField(r, \"severity_level\") ?? \"—\");\n\t\tif (spec.groupBy === \"zone\") parts.push(stringField(r, \"zone_id\") ?? \"—\");\n\t\tconst observedAt = stringField(r, \"observed_at\");\n\t\tif (spec.grain === \"month\" && observedAt) parts.push(observedAt.slice(0, 7));\n\t\treturn parts.join(\" · \");\n\t};\n\tconst buckets = new Map<string, Wc3AnalysisJoinedRow[]>();\n\tfor (const r of joined) {\n\t\tconst k = keyOf(r);\n\t\tconst bucket = buckets.get(k);\n\t\tif (bucket) bucket.push(r);\n\t\telse buckets.set(k, [r]);\n\t}\n\n\tconst chosen = spec.metrics.map((id) => analysisMetric(id)).filter((m): m is Wc3AnalysisMetric => m !== undefined);\n\tconst supported = chosen.filter((m) => analysisMetricMissingInput(m) === null);\n\tconst blocked = chosen.filter((m) => analysisMetricMissingInput(m) !== null);\n\n\t// Sorted by key, then re-sorted by size descending — the prototype does both, and keeping both is\n\t// what makes ties between equally-sized groups stable rather than insertion-ordered.\n\tconst groups: Wc3AnalysisGroup[] = [...buckets.keys()]\n\t\t.sort()\n\t\t.map((key) => {\n\t\t\tconst bucket = buckets.get(key) ?? [];\n\t\t\tconst vals: Record<string, number | null> = {};\n\t\t\tfor (const m of supported) vals[m.id] = m.compute ? m.compute(bucket) : null;\n\t\t\treturn {key, n: bucket.length, vals};\n\t\t})\n\t\t.sort((a, b) => b.n - a.n);\n\n\tconst ms = Math.max(1, Math.round((performance.now() - t0) * 10) / 10);\n\treturn {\n\t\tgroups,\n\t\tsupported,\n\t\tblocked,\n\t\tsourceEmpty,\n\t\tsourceHasTimeColumn,\n\t\trowsScanned,\n\t\trowsMatched: joined.length,\n\t\trowsReturned: groups.length,\n\t\trowsUnlinked,\n\t\tms,\n\t\troute: analysisRoute(spec),\n\t\texact: true,\n\t\tasOf: WC3_PROCESS_FIXTURE_NOW,\n\t\tmaterialised: false,\n\t\tscope: WC3_ANALYSIS_SCOPE,\n\t\tlineage: analysisLineage(spec),\n\t};\n}\n\n/**\n * The provenance chain behind a result, as the exec-meta panel prints it.\n *\n * The object-mode middle line interpolates the traversal rather than hardcoding `reported_by`, and\n * appends whether the ontology actually declares that traversal — because one of the two offered\n * options is a plain property join. See {@link analysisTraversalKind}.\n */\nexport function analysisLineage(spec: Wc3AnalysisSpec): string[] {\n\tif (spec.mode === \"object\") {\n\t\tconst lines = [\"ot_observation (seeded instances)\"];\n\t\tif (spec.traverse) {\n\t\t\tconst kind = analysisTraversalKind(spec.traverse);\n\t\t\tlines.push(\n\t\t\t\tkind.declared\n\t\t\t\t\t? `→ link ${spec.traverse} (${kind.linkTypeId} · ${kind.apiName})`\n\t\t\t\t\t: `→ property join ${spec.traverse} (no link type declares it)`,\n\t\t\t\t\"→ ot_worker.contractor\",\n\t\t\t);\n\t\t} else {\n\t\t\tlines.push(\"→ no traversal\");\n\t\t}\n\t\treturn lines;\n\t}\n\tconst lines = [analysisDatasetName(spec.sourceDs ?? \"\")];\n\tif (spec.joinDs) lines.push(`⨝ ${analysisDatasetName(spec.joinDs)}`);\n\treturn lines;\n}\n\n/**\n * Why a result panel looks the way it does — ordered, first match wins.\n *\n * This is the fix for the prototype's only genuine gap: `AnResult` handles 0 rows SCANNED but not\n * 0 rows MATCHED, so data mode on ds_workers or ds_activities currently renders a blank result that\n * reads as a bug. Verified: at the shipped default window of 56 weeks, ds_workers scans 290 and\n * matches 0, ds_activities scans 230 and matches 0 — neither row table carries an observed_at\n * column. Drop the window to 0 and ds_workers matches every row but produces ONE group,\n * \"— unlinked —\", because the data-mode join key is fixed at reported_by.\n */\nexport function analysisDiagnose(spec: Wc3AnalysisSpec, res: Wc3AnalysisResult): Wc3AnalysisDiagnosis {\n\tif (res.sourceEmpty) return \"source-empty\";\n\tif (res.rowsMatched === 0 && spec.window > 0 && !res.sourceHasTimeColumn) return \"no-time-column\";\n\tif (res.rowsMatched === 0) return \"filters-excluded-all\";\n\t// Only when EVERY matched row is unlinked. Selecting the assigned_to property join leaves a large\n\t// but partial unlinked bucket (21 of 65 observations have no assignee), which is truthful and\n\t// must not trip this diagnosis.\n\tif (spec.groupBy === \"contractor\" && res.rowsMatched > 0 && res.rowsUnlinked === res.rowsMatched) {\n\t\treturn \"all-unlinked\";\n\t}\n\treturn \"ok\";\n}\n\n/**\n * Honest label for an object-mode traversal: is it an ontology-declared link, or a plain FK column\n * the ontology says nothing about?\n *\n * The prototype offers `reported_by → ot_worker` and `assigned_to → ot_worker` under the hint \"Only\n * traversals the object type declares are offered\". Verified against WC3_LINK_TYPES: ot_observation\n * declares exactly TWO links — lt_obs_reporter (fkProperty reported_by, apiName reportedBy) and\n * lt_obs_zone (fkProperty zone_id). ZERO link types reference assigned_to; it is the plain string\n * property p_assigned_to_139. The join resolves for all 44 non-null values, so the option is worth\n * keeping — but it is not the ontology acting as the semantic plane, and the UI must not say it is.\n *\n * Note the spec field is the raw FK COLUMN (`reported_by`), not the link apiName (`reportedBy`);\n * this maps one to the other so a label can cite the link type without changing the spec vocabulary.\n */\nexport function analysisTraversalKind(\n\tfkProperty: string,\n): {declared: true; linkTypeId: string; apiName: string} | {declared: false} {\n\tconst lt = WC3_LINK_TYPES.find(\n\t\t(l) => l.backing.fkObjectTypeId === \"ot_observation\" && l.backing.fkProperty === fkProperty,\n\t);\n\treturn lt ? {declared: true, linkTypeId: lt.id, apiName: lt.sideA.apiName} : {declared: false};\n}\n\n/**\n * The three lines the rail prints per stage — label (from WC3_ANALYSIS_STAGES), a description of\n * what the spec says, and a count of what the run produced. Transcribed from `AnStageRail`, and\n * derivable in full for BOTH modes.\n *\n * `bad` flags a stage that is the reason the result is degenerate: the prototype flags derive when a\n * metric is unsupported and source when it holds no rows; the filter flag is added here because when\n * a source has no time column it is the WINDOW that excluded every row, and the rail should point at\n * the stage that did it.\n *\n * The `publish` entry cannot count saved analyses — that lives on the session, and this function is\n * pure over (spec, result). The workbench fills the count in.\n */\nexport function analysisStageSummary(\n\tspec: Wc3AnalysisSpec,\n\tres: Wc3AnalysisResult,\n): Record<Wc3AnalysisStageId, {desc: string; count: string; bad: boolean}> {\n\tconst diagnosis = analysisDiagnose(spec, res);\n\tconst joinKey = analysisJoinKey(spec);\n\tconst metricCount = `${spec.metrics.length} metric${spec.metrics.length === 1 ? \"\" : \"s\"}`;\n\treturn {\n\t\tsource: {\n\t\t\tdesc: spec.mode === \"object\" ? \"ot_observation\" : analysisDatasetName(spec.sourceDs ?? \"\"),\n\t\t\tcount: res.sourceEmpty ? \"0 rows — not materialised\" : `${res.rowsScanned.toLocaleString()} scanned`,\n\t\t\tbad: res.sourceEmpty,\n\t\t},\n\t\tfilter: {\n\t\t\tdesc: spec.filters.length ? spec.filters.map((f) => `${f.field}=${f.value}`).join(\", \") : \"none\",\n\t\t\tcount: `${res.rowsMatched.toLocaleString()} matched`,\n\t\t\tbad: diagnosis === \"no-time-column\",\n\t\t},\n\t\ttraverse: {\n\t\t\tdesc:\n\t\t\t\tspec.mode === \"object\"\n\t\t\t\t\t? spec.traverse\n\t\t\t\t\t\t? `→ ot_worker via ${spec.traverse}`\n\t\t\t\t\t\t: \"none\"\n\t\t\t\t\t: spec.joinDs\n\t\t\t\t\t\t? `⨝ ${analysisDatasetName(spec.joinDs)}`\n\t\t\t\t\t\t: \"none\",\n\t\t\t// The prototype prints \"—\" for data mode even when a join runs; the join is real in both\n\t\t\t// modes, so the count follows the effective join key instead of the mode.\n\t\t\tcount: joinKey ? \"joined ot_worker\" : \"—\",\n\t\t\tbad: false,\n\t\t},\n\t\tderive: {\n\t\t\tdesc: metricCount,\n\t\t\tcount: res.blocked.length ? `${res.blocked.length} unsupported` : `${res.supported.length} computed`,\n\t\t\tbad: res.blocked.length > 0,\n\t\t},\n\t\tgroup: {\n\t\t\tdesc: `${spec.groupBy ?? \"none\"}${spec.grain === \"month\" ? \" × month\" : \"\"}`,\n\t\t\tcount: `${res.rowsReturned.toLocaleString()} groups`,\n\t\t\tbad: false,\n\t\t},\n\t\tviz: {desc: spec.viz, count: res.groups.length ? \"ready\" : \"no rows\", bad: false},\n\t\tpublish: {desc: spec.name, count: \"—\", bad: false},\n\t};\n}\n\n// ─── Mutations ───────────────────────────────────────────────────────────────\n\n// Every helper below is PURE: session in → NEW session out, never an in-place write.\n//\n// THE INVARIANT these keep, and which TypeScript cannot enforce: `state.result` is always\n// `analysisRun(state.spec)` as of the last commit. It holds ONLY because analysisSetSpec /\n// analysisResetSpec / analysisReopen are the sole writers of a spec. A surface that builds\n// `{...session, object: {...session.object, spec: next}}` by hand type-checks perfectly and\n// desynchronises the exec-meta panel from the query with no error anywhere. Do not do that.\n\nconst cloneSpec = (spec: Wc3AnalysisSpec): Wc3AnalysisSpec => ({\n\t...spec,\n\tfilters: spec.filters.map((f) => ({...f})),\n\tmetrics: [...spec.metrics],\n});\n\n/** Replace one mode's slot without a computed key, so the session type stays exact. */\nconst withMode = (s: Wc3AnalysisSession, mode: Wc3AnalysisMode, state: Wc3AnalysisModeState): Wc3AnalysisSession =>\n\tmode === \"object\" ? {...s, object: state} : {...s, data: state};\n\n/** One builder tab's live spec + result. */\nexport function analysisModeState(s: Wc3AnalysisSession, mode: Wc3AnalysisMode): Wc3AnalysisModeState {\n\treturn mode === \"object\" ? s.object : s.data;\n}\n\n/**\n * The ONE way a spec changes. Re-runs the analysis, so the stored result is never stale, and drops\n * `materialised` — a materialisation is a fact about one executed spec, not about the builder.\n */\nexport function analysisSetSpec(\n\ts: Wc3AnalysisSession,\n\tmode: Wc3AnalysisMode,\n\tpatch: Partial<Wc3AnalysisSpec>,\n): Wc3AnalysisSession {\n\tconst next = {...analysisModeState(s, mode).spec, ...patch};\n\treturn withMode(s, mode, {spec: next, result: analysisRun(next)});\n}\n\n/**\n * Back to the mode's default spec.\n *\n * The prototype resets on every MODE SWITCH, destroying the other mode's half-built query. Here the\n * two modes are two tabs and both stay alive, so the reset is offered explicitly instead — reachable\n * but never accidental. Documented divergence.\n */\nexport function analysisResetSpec(s: Wc3AnalysisSession, mode: Wc3AnalysisMode): Wc3AnalysisSession {\n\tconst next = wc3AnalysisDefaultSpec(mode);\n\treturn withMode(s, mode, {spec: next, result: analysisRun(next)});\n}\n\n/**\n * Save the spec together with the route, the counts and the timing AS EXECUTED — which is why the\n * result is stored beside its spec rather than re-derived: `ms` is a measurement, not a property of\n * the spec, and a saved record must agree with what the panel showed when Save was pressed.\n */\nexport function analysisSaveAnalysis(s: Wc3AnalysisSession, mode: Wc3AnalysisMode): Wc3AnalysisSession {\n\tconst {spec, result} = analysisModeState(s, mode);\n\tconst saved: Wc3SavedAnalysis = {\n\t\tid: `AN-${s.saved.length + 1}`,\n\t\tname: spec.name,\n\t\t// Deep-cloned so a later edit to the live spec cannot rewrite history.\n\t\tspec: cloneSpec(spec),\n\t\troute: result.route.label,\n\t\trows: result.rowsMatched,\n\t\tgroups: result.rowsReturned,\n\t\tms: result.ms,\n\t\tat: WC3_PROCESS_FIXTURE_NOW,\n\t};\n\treturn {...s, saved: [...s.saved, saved]};\n}\n\n/** The one mutation that writes a result without touching its spec: it flips `materialised`. */\nexport function analysisSaveMaterialisation(s: Wc3AnalysisSession, mode: Wc3AnalysisMode): Wc3AnalysisSession {\n\tconst {spec, result} = analysisModeState(s, mode);\n\tconst mat: Wc3Materialisation = {\n\t\tid: `MAT-${s.materialisations.length + 1}`,\n\t\tname: `${spec.name} (materialised)`,\n\t\tgroups: result.rowsReturned,\n\t\tat: WC3_PROCESS_FIXTURE_NOW,\n\t\troute: result.route.label,\n\t};\n\tconst next = withMode(s, mode, {spec, result: {...result, materialised: true}});\n\treturn {...next, materialisations: [...s.materialisations, mat]};\n}\n\nexport function analysisDeleteSaved(s: Wc3AnalysisSession, id: string): Wc3AnalysisSession {\n\treturn {...s, saved: s.saved.filter((a) => a.id !== id)};\n}\n\nexport function analysisDeleteMaterialisation(s: Wc3AnalysisSession, id: string): Wc3AnalysisSession {\n\treturn {...s, materialisations: s.materialisations.filter((m) => m.id !== id)};\n}\n\n/** Re-open a saved analysis into ITS OWN mode's slot and re-run it. */\nexport function analysisReopen(s: Wc3AnalysisSession, saved: Wc3SavedAnalysis): Wc3AnalysisSession {\n\tconst spec = cloneSpec(saved.spec);\n\treturn withMode(s, spec.mode, {spec, result: analysisRun(spec)});\n}\n\n// ─── Inline components ───────────────────────────────────────────────────────\n\n/**\n * One option in a stage config body — the prototype's `.an-opt`.\n *\n * NEVER `disabled` when `unavailable`: selecting the unmaterialised dataset and the unsupported\n * metric is precisely how this page demonstrates the \"not materialised\" and \"Product Runtime\"\n * states. A disabled control would hide the two honesty demos the perspective exists to show.\n *\n * An unavailable option keeps the outline variant even when selected, because the amber text a\n * `default` (primary-filled) button would carry is unreadable on a primary background; selection is\n * signalled with a tinted background and a ring instead.\n */\nexport function AnalysisOption({\n\tselected,\n\tunavailable,\n\tonSelect,\n\tchildren,\n\thint,\n}: {\n\tselected: boolean;\n\tunavailable?: boolean;\n\tonSelect: () => void;\n\tchildren: ReactNode;\n\t/**\n\t * Detail about this option. A native title rather than a paragraph under the chip: the stage\n\t * panels were stacking one explanatory sentence PER OPTION, which is what made the rail scroll.\n\t * Native title also avoids HoverTooltip's asChild ref requirement on a plain function component.\n\t */\n\thint?: string;\n}): ReactElement {\n\treturn (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\tsize=\"sm\"\n\t\t\ttitle={hint}\n\t\t\tvariant={selected && !unavailable ? \"default\" : \"outline\"}\n\t\t\tonClick={onSelect}\n\t\t\taria-pressed={selected}\n\t\t\tclassName={cn(\n\t\t\t\t\"wwc:mr-1.5 wwc:mb-1.5\",\n\t\t\t\tunavailable && \"wwc:border-amber-600/40 wwc:text-amber-700 wwc:dark:text-amber-400\",\n\t\t\t\tselected && unavailable && \"wwc:bg-amber-500/10 wwc:ring-1 wwc:ring-amber-600/40\",\n\t\t\t)}\n\t\t>\n\t\t\t{children}\n\t\t</Button>\n\t);\n}\n\n/** The execution route as a Badge. Two consumers: the exec-meta panel and the saved list. */\nexport function AnalysisRouteBadge({route}: {route: Wc3AnalysisRoute | string}): ReactElement {\n\t// A saved record stores the route's LABEL, not its id, so a string is read back through the\n\t// label table rather than guessed at.\n\tconst label = typeof route === \"string\" ? route : route.label;\n\tconst id =\n\t\ttypeof route === \"string\"\n\t\t\t? ((Object.keys(ROUTE_LABEL) as Wc3AnalysisRouteId[]).find((k) => ROUTE_LABEL[k] === label) ?? \"operational\")\n\t\t\t: route.id;\n\treturn <Badge variant={WC3_ANALYSIS_ROUTE_VARIANT[id]}>{label}</Badge>;\n}\n\n/**\n * A spec rendered as labelled key/value pairs. Two consumers: the publish stage and the saved\n * cards/table — which is what lets the saved list's card be LOSSLESS against its row.\n */\nexport function AnalysisSpecSummary({spec, dense}: {spec: Wc3AnalysisSpec; dense?: boolean}): ReactElement {\n\t// Plain strings plus a `mono` flag rather than inline JSX values — an array literal holding JSX\n\t// trips react/jsx-key even though the wrapper below is the keyed element.\n\tconst rows: {label: string; value: string; mono?: boolean}[] = [\n\t\t{label: \"Mode\", value: spec.mode === \"object\" ? \"Object analysis\" : \"Data analysis\"},\n\t\t{\n\t\t\tlabel: \"Source\",\n\t\t\tvalue: spec.mode === \"object\" ? (spec.sourceType ?? \"—\") : analysisDatasetName(spec.sourceDs ?? \"\"),\n\t\t\tmono: true,\n\t\t},\n\t\t{\n\t\t\tlabel: \"Filters\",\n\t\t\tvalue: spec.filters.length ? spec.filters.map((f) => `${f.field} = ${f.value}`).join(\", \") : \"none\",\n\t\t},\n\t\t{\n\t\t\tlabel: spec.mode === \"object\" ? \"Traverse\" : \"Join\",\n\t\t\tvalue:\n\t\t\t\tspec.mode === \"object\"\n\t\t\t\t\t? spec.traverse\n\t\t\t\t\t\t? `${spec.traverse} → ot_worker`\n\t\t\t\t\t\t: \"no traversal\"\n\t\t\t\t\t: spec.joinDs\n\t\t\t\t\t\t? `⨝ ${analysisDatasetName(spec.joinDs)} on reported_by = worker_id`\n\t\t\t\t\t\t: \"no join\",\n\t\t},\n\t\t{\n\t\t\tlabel: \"Metrics\",\n\t\t\tvalue: spec.metrics.length ? spec.metrics.map((id) => analysisMetric(id)?.label ?? id).join(\", \") : \"none\",\n\t\t},\n\t\t{label: \"Group\", value: `${spec.groupBy ?? \"none\"}${spec.grain === \"month\" ? \" × month\" : \"\"}`},\n\t\t{label: \"Window\", value: spec.window === 0 ? \"current state only\" : `${spec.window} weeks`},\n\t\t{label: \"Chart\", value: spec.viz},\n\t];\n\treturn (\n\t\t<dl\n\t\t\tclassName={cn(\n\t\t\t\t\"wwc:grid wwc:grid-cols-[minmax(0,7rem)_minmax(0,1fr)] wwc:text-sm\",\n\t\t\t\tdense ? \"wwc:gap-x-3 wwc:gap-y-0.5 wwc:text-xs\" : \"wwc:gap-x-4 wwc:gap-y-1\",\n\t\t\t)}\n\t\t>\n\t\t\t{rows.map((row) => (\n\t\t\t\t<div key={row.label} className=\"wwc:contents\">\n\t\t\t\t\t<dt className=\"wwc:truncate wwc:text-muted-foreground\">{row.label}</dt>\n\t\t\t\t\t<dd className=\"wwc:min-w-0 wwc:break-words wwc:text-foreground\">\n\t\t\t\t\t\t{row.mono ? <Mono>{row.value}</Mono> : row.value}\n\t\t\t\t\t</dd>\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</dl>\n\t);\n}\n\n// ─── The staged builder ──────────────────────────────────────────────────────\n\n/**\n * The horizontal bar option for a grouped result.\n *\n * No hardcoded hex: the series colour comes from TrendChart's `seriesThemes`. ECharts draws a\n * category axis bottom-up, so the already size-sorted groups are reversed to put the largest at the\n * top of the chart.\n *\n * DOCUMENTED DIVERGENCE: the prototype caps the chart at 14 bars and the table at 20 rows. Those\n * caps were a CSS-bar limitation, not a data one — the widest grouping this fixture can produce is\n * zone × month at 24 groups — so every group is charted and every group is tabled, and the height\n * grows with the group count instead.\n */\nfunction horizontalBarOption(groups: Wc3AnalysisGroup[]): EChartsOption {\n\tconst ordered = [...groups].reverse();\n\treturn {\n\t\tgrid: {left: 148, right: 24, top: 8, bottom: 28, containLabel: false},\n\t\ttooltip: {trigger: \"axis\", axisPointer: {type: \"shadow\"}},\n\t\txAxis: {type: \"value\", splitLine: {lineStyle: {type: \"dashed\"}}},\n\t\tyAxis: {type: \"category\", data: ordered.map((g) => g.key), axisTick: {show: false}},\n\t\tseries: [{type: \"bar\", data: ordered.map((g) => g.n), barWidth: 12, itemStyle: {borderRadius: 3}}],\n\t};\n}\n\nfunction MetaRow({label, children}: {label: string; children: ReactNode}): ReactElement {\n\treturn (\n\t\t<div className=\"wwc:contents\">\n\t\t\t<dt className=\"wwc:text-muted-foreground\">{label}</dt>\n\t\t\t<dd className=\"wwc:min-w-0 wwc:break-words wwc:text-foreground\">{children}</dd>\n\t\t</div>\n\t);\n}\n\n/** A persistent explanatory panel raised by the publish stage or the drill-through button. */\ntype WorkbenchNote = {variant: \"info\" | \"warning\"; title: string; description: string};\n\n/**\n * THE STAGED BUILDER. Both builder tabs mount this one component and pass exactly two stage bodies —\n * Source and Traverse / Join, the only two the prototype itself writes differently per mode. The\n * rail, Filter, Derive, Group, Visualize, Publish, the result panel and the execution-meta panel are\n * one implementation, which is the reason the two tabs cannot drift.\n */\nexport function AnalysisWorkbench({\n\tmode,\n\tsession,\n\tonSessionChange,\n\tonNavigate,\n\trenderSourceConfig,\n\trenderTraverseConfig,\n}: Wc3AnalysisWorkbenchProps): ReactElement {\n\t// Persisted per mode, so the two builders keep their own place in the rail across a reload.\n\t// An ARRAY, and type=\"multiple\" below: every stage opens and closes independently, so comparing\n\t// two stages side by side no longer means losing the one you were reading. Opening the first\n\t// stage by default keeps the rail from starting as six blank rows.\n\tconst [openStages, setOpenStages] = usePersistentState<string[]>(`wc3.analysis.${mode}.stages`, [\"source\"]);\n\tconst [note, setNote] = useState<WorkbenchNote | null>(null);\n\t// The run is now EXPLICIT. `result` is still derived from the spec on every keystroke (it is cheap\n\t// and the stage summaries need it), but the right-hand side stays closed until the user asks for\n\t// it — and `ranSpec` records WHICH spec produced what is on screen, so editing a stage afterwards\n\t// marks the result stale instead of silently swapping the numbers under the reader.\n\tconst [ranSpec, setRanSpec] = usePersistentState<string | null>(`wc3.analysis.${mode}.ran`, null);\n\n\tconst {spec, result} = analysisModeState(session, mode);\n\tconst setSpec = (patch: Partial<Wc3AnalysisSpec>) => {\n\t\tsetNote(null);\n\t\tonSessionChange(analysisSetSpec(session, mode, patch));\n\t};\n\n\t// Dangling-id guard: the stage id survives a reload in localStorage while WC3_ANALYSIS_STAGES\n\t// could be renamed under it. An unknown id resolves to the first stage rather than rendering an\n\t// empty config card.\n\n\tconst rail = analysisStageSummary(spec, result);\n\tconst diagnosis = analysisDiagnose(spec, result);\n\tconst joinKey = analysisJoinKey(spec);\n\tconst ctx: Wc3AnalysisStageContext = {spec, result, setSpec};\n\n\t// Config stages only: \"publish\" is not something you configure, it is what you do to a result.\n\t// \"publish\" is not configuration (it is what you do to a result), and \"viz\" is already a toggle in\n\t// the result header — a second control for the same value in the rail would just be two places to\n\t// change one thing.\n\tconst configStages = WC3_ANALYSIS_STAGES.filter((s) => s.id !== \"publish\" && s.id !== \"viz\");\n\tconst specToken = JSON.stringify(spec);\n\t// Reset has nothing to do when the spec is already default and nothing has been run.\n\tconst defaultToken = JSON.stringify(wc3AnalysisDefaultSpec(mode));\n\tconst hasRun = ranSpec !== null;\n\tconst stale = hasRun && ranSpec !== specToken;\n\n\tconst vizToggle = (\n\t\t<ToggleGroup\n\t\t\ttype=\"single\"\n\t\t\tvalue={spec.viz}\n\t\t\t// Radix emits \"\" when the active item is pressed again; a segmented control has no\n\t\t\t// \"neither\" state, so that is swallowed.\n\t\t\tonValueChange={(next) => {\n\t\t\t\tif (next === \"bar\" || next === \"table\") setSpec({viz: next});\n\t\t\t}}\n\t\t\tvariant=\"outline\"\n\t\t\tsize=\"sm\"\n\t\t>\n\t\t\t<ToggleGroupItem value=\"bar\" aria-label=\"Bar chart\" title=\"Bar chart\">\n\t\t\t\t<BarChart3 className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t</ToggleGroupItem>\n\t\t\t<ToggleGroupItem value=\"table\" aria-label=\"Table\" title=\"Table\">\n\t\t\t\t<Table2 className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t</ToggleGroupItem>\n\t\t</ToggleGroup>\n\t);\n\n\tconst groupLabel = `${spec.groupBy ?? \"group\"}${spec.grain === \"month\" ? \" · month\" : \"\"}`;\n\n\tconst stageBody = (id: Wc3AnalysisStageId): ReactNode => {\n\t\tswitch (id) {\n\t\t\tcase \"source\":\n\t\t\t\treturn <div>{renderSourceConfig(ctx)}</div>;\n\t\t\tcase \"filter\":\n\t\t\t\treturn (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div className=\"wwc:flex wwc:flex-wrap\">\n\t\t\t\t\t\t\t{WC3_ANALYSIS_SEVERITIES.map((sev) => {\n\t\t\t\t\t\t\t\tconst on = spec.filters.some((f) => f.value === sev);\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<AnalysisOption\n\t\t\t\t\t\t\t\t\t\tkey={sev}\n\t\t\t\t\t\t\t\t\t\tselected={on}\n\t\t\t\t\t\t\t\t\t\tonSelect={() =>\n\t\t\t\t\t\t\t\t\t\t\tsetSpec({\n\t\t\t\t\t\t\t\t\t\t\t\tfilters: on\n\t\t\t\t\t\t\t\t\t\t\t\t\t? spec.filters.filter((f) => f.value !== sev)\n\t\t\t\t\t\t\t\t\t\t\t\t\t: [...spec.filters, {field: \"severity_level\", value: sev}],\n\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tseverity = {sev}\n\t\t\t\t\t\t\t\t\t</AnalysisOption>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<p className=\"wwc:mt-2 wwc:text-xs wwc:font-medium wwc:text-foreground\">Window</p>\n\t\t\t\t\t\t<div className=\"wwc:mt-1 wwc:flex wwc:flex-wrap\">\n\t\t\t\t\t\t\t{[...WC3_ANALYSIS_WINDOWS, 0].map((w) => {\n\t\t\t\t\t\t\t\t// The route each window would produce, computed by the same rule the engine\n\t\t\t\t\t\t\t\t// uses — never a label typed into the markup.\n\t\t\t\t\t\t\t\tconst preview = analysisRoute({...spec, window: w});\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<AnalysisOption key={w} selected={spec.window === w} onSelect={() => setSpec({window: w})}>\n\t\t\t\t\t\t\t\t\t\t{w === 0 ? \"current state only\" : `${w} weeks`}\n\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:opacity-70\">· {preview.label}</span>\n\t\t\t\t\t\t\t\t\t</AnalysisOption>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<p className=\"wwc:mt-2 wwc:text-xs wwc:text-muted-foreground\">{WC3_ANALYSIS_MESSAGES.windowInert}</p>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\tcase \"traverse\":\n\t\t\t\treturn renderTraverseConfig(ctx);\n\t\t\tcase \"derive\":\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"wwc:flex wwc:flex-wrap\">\n\t\t\t\t\t\t{WC3_ANALYSIS_METRICS.map((m) => {\n\t\t\t\t\t\t\tconst missing = analysisMetricMissingInput(m);\n\t\t\t\t\t\t\tconst on = spec.metrics.includes(m.id);\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<AnalysisOption\n\t\t\t\t\t\t\t\t\tkey={m.id}\n\t\t\t\t\t\t\t\t\tselected={on}\n\t\t\t\t\t\t\t\t\tunavailable={missing !== null}\n\t\t\t\t\t\t\t\t\tonSelect={() =>\n\t\t\t\t\t\t\t\t\t\tsetSpec({\n\t\t\t\t\t\t\t\t\t\t\tmetrics: on ? spec.metrics.filter((x) => x !== m.id) : [...spec.metrics, m.id],\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{m.label}\n\t\t\t\t\t\t\t\t\t{missing !== null ? <span className=\"wwc:opacity-70\">· unavailable</span> : null}\n\t\t\t\t\t\t\t\t</AnalysisOption>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\tcase \"group\":\n\t\t\t\treturn (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div className=\"wwc:flex wwc:flex-wrap\">\n\t\t\t\t\t\t\t{WC3_ANALYSIS_GROUP_BYS.map((g) => (\n\t\t\t\t\t\t\t\t<AnalysisOption key={g} selected={spec.groupBy === g} onSelect={() => setSpec({groupBy: g})}>\n\t\t\t\t\t\t\t\t\tby {g}\n\t\t\t\t\t\t\t\t</AnalysisOption>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"wwc:mt-1 wwc:flex wwc:flex-wrap\">\n\t\t\t\t\t\t\t<AnalysisOption\n\t\t\t\t\t\t\t\tselected={spec.grain === \"month\"}\n\t\t\t\t\t\t\t\tonSelect={() => setSpec({grain: (spec.grain === \"month\" ? null : \"month\") as Wc3AnalysisGrain})}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t× month\n\t\t\t\t\t\t\t</AnalysisOption>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t\tcase \"viz\":\n\t\t\t\treturn (\n\t\t\t\t\t<div className=\"wwc:flex wwc:flex-wrap\">\n\t\t\t\t\t\t{([\"bar\", \"table\"] as const).map((v) => (\n\t\t\t\t\t\t\t<AnalysisOption key={v} selected={spec.viz === v} onSelect={() => setSpec({viz: v})}>\n\t\t\t\t\t\t\t\t{v}\n\t\t\t\t\t\t\t</AnalysisOption>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t);\n\t\t}\n\t};\n\n\t// The prototype's publish STAGE, lifted out of the rail: these are things you do to a RESULT, so\n\t// they belong beside it and only exist once an analysis has actually been run.\n\t// The prototype's publish STAGE, lifted out of the rail: these are things you do to a RESULT, so\n\t// they belong beside it and only exist once an analysis has actually been run.\n\t//\n\t// ONE ROW by design: the six labelled buttons wrapped onto a second line, which made this footer\n\t// taller than the rail's run-button footer and broke the symmetry between the two panels. The\n\t// primary action stays visible; the rest live behind \"More\", so the footer height is fixed\n\t// regardless of how many actions or how long their labels get.\n\tconst publishActions = (\n\t\t<div className=\"wwc:flex wwc:items-center wwc:gap-1.5\">\n\t\t\t<Button\n\t\t\t\ttype=\"button\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\tonClick={() => {\n\t\t\t\t\tonSessionChange(analysisSaveAnalysis(session, mode));\n\t\t\t\t\ttoast.success(WC3_ANALYSIS_MESSAGES.savedToast(spec.name));\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\tSave analysis\n\t\t\t</Button>\n\t\t\t<DropdownMenu>\n\t\t\t\t<DropdownMenuTrigger asChild>\n\t\t\t\t\t<Button type=\"button\" size=\"sm\" variant=\"outline\">\n\t\t\t\t\t\tMore\n\t\t\t\t\t\t<ChevronDown className=\"wwc:h-3.5 wwc:w-3.5\" />\n\t\t\t\t\t</Button>\n\t\t\t\t</DropdownMenuTrigger>\n\t\t\t\t<DropdownMenuContent align=\"start\" className=\"wwc:w-64\">\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\tonSessionChange(analysisSaveMaterialisation(session, mode));\n\t\t\t\t\t\t\ttoast.success(WC3_ANALYSIS_MESSAGES.materialisedToast(result.rowsReturned));\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tSave as materialisation\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\treturn setNote({\n\t\t\t\t\t\t\t\tvariant: \"info\",\n\t\t\t\t\t\t\t\ttitle: \"Add to Command Center\",\n\t\t\t\t\t\t\t\tdescription: WC3_ANALYSIS_MESSAGES.publish.commandCentre,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tAdd to Command Center\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\treturn setNote({\n\t\t\t\t\t\t\t\tvariant: \"warning\",\n\t\t\t\t\t\t\t\ttitle: \"Map result to an Object Type\",\n\t\t\t\t\t\t\t\tdescription: WC3_ANALYSIS_MESSAGES.publish.mapToObjectType,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tMap result to an Object Type\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\treturn setNote({\n\t\t\t\t\t\t\t\tvariant: \"info\",\n\t\t\t\t\t\t\t\ttitle: \"Feed to Product Runtime\",\n\t\t\t\t\t\t\t\tdescription: WC3_ANALYSIS_MESSAGES.publish.productRuntime,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tFeed to Product Runtime\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t\t<DropdownMenuItem\n\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\tconst top = result.groups[0];\n\t\t\t\t\t\t\tsetNote(\n\t\t\t\t\t\t\t\ttop\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\tvariant: \"info\",\n\t\t\t\t\t\t\t\t\t\t\ttitle: \"Create Action proposal\",\n\t\t\t\t\t\t\t\t\t\t\tdescription: WC3_ANALYSIS_MESSAGES.publish.actionProposal(top.key, top.n),\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\tvariant: \"warning\",\n\t\t\t\t\t\t\t\t\t\t\ttitle: \"Create Action proposal\",\n\t\t\t\t\t\t\t\t\t\t\tdescription: WC3_ANALYSIS_MESSAGES.publish.noGroups,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tCreate Action proposal\n\t\t\t\t\t</DropdownMenuItem>\n\t\t\t\t</DropdownMenuContent>\n\t\t\t</DropdownMenu>\n\t\t</div>\n\t);\n\n\tconst resultBody = (): ReactNode => {\n\t\tif (diagnosis === \"source-empty\") {\n\t\t\treturn (\n\t\t\t\t<Banner\n\t\t\t\t\tvariant=\"warning\"\n\t\t\t\t\ttitle=\"No rows to analyse.\"\n\t\t\t\t\tdescription={WC3_ANALYSIS_MESSAGES.sourceEmpty(analysisDatasetName(spec.sourceDs ?? \"\"))}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\tif (diagnosis === \"no-time-column\") {\n\t\t\treturn (\n\t\t\t\t<Banner\n\t\t\t\t\tvariant=\"warning\"\n\t\t\t\t\ttitle=\"0 rows matched — this dataset has no time column.\"\n\t\t\t\t\tdescription={WC3_ANALYSIS_MESSAGES.noTimeColumn(\n\t\t\t\t\t\tanalysisDatasetName(spec.sourceDs ?? \"\"),\n\t\t\t\t\t\tspec.window,\n\t\t\t\t\t\tresult.rowsScanned,\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\tif (diagnosis === \"filters-excluded-all\") {\n\t\t\treturn (\n\t\t\t\t<Banner\n\t\t\t\t\tvariant=\"warning\"\n\t\t\t\t\ttitle=\"0 rows matched.\"\n\t\t\t\t\tdescription={WC3_ANALYSIS_MESSAGES.filtersExcludedAll(result.rowsScanned)}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\tif (diagnosis === \"all-unlinked\") {\n\t\t\treturn (\n\t\t\t\t<Banner\n\t\t\t\t\tvariant=\"warning\"\n\t\t\t\t\ttitle=\"Every matched row is unlinked.\"\n\t\t\t\t\tdescription={WC3_ANALYSIS_MESSAGES.allUnlinked(joinKey ?? \"no join key\")}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\tif (spec.viz === \"bar\") {\n\t\t\treturn (\n\t\t\t\t<TrendChart\n\t\t\t\t\ttitle={`Grouped by ${groupLabel}`}\n\t\t\t\t\tactions={vizToggle}\n\t\t\t\t\tvalue={`${result.rowsMatched.toLocaleString()} rows`}\n\t\t\t\t\toption={horizontalBarOption(result.groups)}\n\t\t\t\t\tseriesThemes={[{tone: \"primary\"}]}\n\t\t\t\t\theight={Math.max(240, result.groups.length * 24 + 64)}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t<div>\n\t\t\t\t<div className=\"wwc:mb-2 wwc:flex wwc:items-center wwc:justify-between wwc:gap-3\">\n\t\t\t\t\t<span className=\"wwc:text-sm wwc:font-medium\">Grouped by {groupLabel}</span>\n\t\t\t\t\t{vizToggle}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"wwc:overflow-x-auto\">\n\t\t\t\t\t<Table>\n\t\t\t\t\t\t<TableHeader>\n\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t<TableHead>{groupLabel}</TableHead>\n\t\t\t\t\t\t\t\t{result.supported.map((m) => (\n\t\t\t\t\t\t\t\t\t<TableHead key={m.id} className=\"wwc:text-right\">\n\t\t\t\t\t\t\t\t\t\t{m.label}\n\t\t\t\t\t\t\t\t\t</TableHead>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t</TableHeader>\n\t\t\t\t\t\t<TableBody>\n\t\t\t\t\t\t\t{result.groups.map((g) => (\n\t\t\t\t\t\t\t\t<TableRow key={g.key}>\n\t\t\t\t\t\t\t\t\t<TableCell>{g.key}</TableCell>\n\t\t\t\t\t\t\t\t\t{result.supported.map((m) => (\n\t\t\t\t\t\t\t\t\t\t<TableCell key={m.id} className=\"wwc:text-right wwc:tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t\t{g.vals[m.id] === null || g.vals[m.id] === undefined ? \"—\" : g.vals[m.id]?.toLocaleString()}\n\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</TableBody>\n\t\t\t\t\t</Table>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t};\n\n\treturn (\n\t\t/*\n\t\t * Deliberately NOT the shared Pane: Pane is the page-level scroller, which would let the left\n\t\t * rail grow with its content and push \"Run analysis\" below the fold. This owns the height and\n\t\t * lets each column scroll inside itself, so the run button stays pinned to the bottom of the rail.\n\t\t * Same gutters as Pane (px-6 / pt-4 / pb-6).\n\t\t */\n\t\t<div className=\"wwc:flex wwc:min-h-0 wwc:flex-1 wwc:flex-col wwc:gap-4 wwc:overflow-hidden wwc:px-6 wwc:pb-6 wwc:pt-4\">\n\t\t\t{/* No in-content <h1> and no intro paragraph — the perspective tab bar is the header, and on a\n\t\t\t full-height two-pane workbench every line above the panels is height taken from the result.\n\t\t\t WC3_ANALYSIS_MESSAGES.intro is still exported; nothing here renders it. */}\n\t\t\t{/*\n\t\t\t * Two columns: a narrow CONFIG rail on the left, the result on the right. minmax(0,1fr) is\n\t\t\t * load-bearing on the right track — an ECharts canvas lives there and a plain `1fr` cannot\n\t\t\t * shrink below its content, which forces horizontal page scroll on narrow viewports.\n\t\t\t */}\n\t\t\t<div className=\"wwc:grid wwc:min-h-0 wwc:min-w-0 wwc:flex-1 wwc:gap-4 wwc:xl:grid-cols-[21rem_minmax(0,1fr)]\">\n\t\t\t\t{/* ── Left: the stages, collapsed — scrolls, with the run button pinned beneath ── */}\n\t\t\t\t{/* One surface for the whole rail — the stages and the pinned run button read as a single\n\t\t\t\t panel rather than a floating list. bg-card, not a literal white, so dark mode follows. */}\n\t\t\t\t<div className=\"wwc:flex wwc:min-h-0 wwc:min-w-0 wwc:flex-col wwc:overflow-hidden wwc:rounded-lg wwc:border wwc:border-border wwc:bg-card wwc:text-card-foreground\">\n\t\t\t\t\t<div className=\"wwc:flex wwc:min-h-0 wwc:min-w-0 wwc:flex-1 wwc:flex-col wwc:gap-3 wwc:overflow-y-auto wwc:overflow-x-hidden wwc:p-3\">\n\t\t\t\t\t\t<Accordion\n\t\t\t\t\t\t\ttype=\"multiple\"\n\t\t\t\t\t\t\tvalue={openStages}\n\t\t\t\t\t\t\tonValueChange={setOpenStages}\n\t\t\t\t\t\t\tclassName=\"wwc:-mx-3 wwc:-mt-3 wwc:min-w-0\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{configStages.map((s) => {\n\t\t\t\t\t\t\t\tconst cell = rail[s.id];\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<AccordionItem key={s.id} value={s.id} className=\"wwc:px-3 wwc:last:border-b-0\">\n\t\t\t\t\t\t\t\t\t\t<AccordionTrigger className=\"wwc:py-2.5 wwc:hover:no-underline\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:flex wwc:min-w-0 wwc:flex-1 wwc:flex-col wwc:items-start wwc:gap-0.5 wwc:pr-2 wwc:text-left\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:flex wwc:items-center wwc:gap-1.5 wwc:text-xs wwc:font-semibold\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{s.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cell.bad ? <AlertTriangle className=\"wwc:h-3.5 wwc:w-3.5 wwc:text-amber-500\" /> : null}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t{/* The collapsed row still has to say what the stage is set to, or closing it\n\t\t\t\t\t\t\t\t\t\t\t hides the whole query. */}\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:w-full wwc:truncate wwc:text-xs wwc:font-normal wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cell.desc}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</AccordionTrigger>\n\t\t\t\t\t\t\t\t\t\t<AccordionContent className=\"wwc:pb-3\">{stageBody(s.id)}</AccordionContent>\n\t\t\t\t\t\t\t\t\t</AccordionItem>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</Accordion>\n\n\t\t\t\t\t\t{note ? (\n\t\t\t\t\t\t\t<Banner\n\t\t\t\t\t\t\t\tvariant={note.variant}\n\t\t\t\t\t\t\t\ttitle={note.title}\n\t\t\t\t\t\t\t\tdescription={note.description}\n\t\t\t\t\t\t\t\tonDismiss={() => setNote(null)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* Pinned: shrink-0 keeps it out of the scroll area, so it is reachable however long\n\t\t\t\t\t the expanded stages get. The top border separates it from the scrolling list. */}\n\t\t\t\t\t<div className=\"wwc:flex wwc:shrink-0 wwc:items-center wwc:gap-2 wwc:border-t wwc:border-border wwc:p-3\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName=\"wwc:flex-1\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetNote(null);\n\t\t\t\t\t\t\t\tsetRanSpec(specToken);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Play className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t\t{hasRun ? \"Run analysis again\" : \"Run analysis\"}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t{/* Back to the true start point: default spec AND no result. Clearing `ranSpec` is what\n\t\t\t\t\t\t returns the right-hand side to its empty state — resetting the spec alone would leave\n\t\t\t\t\t\t the previous result on screen, which is the opposite of a reset. */}\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\t\t\ticon\n\t\t\t\t\t\t\taria-label=\"Reset analysis\"\n\t\t\t\t\t\t\ttooltip=\"Reset to the starting point\"\n\t\t\t\t\t\t\tdisabled={!hasRun && specToken === defaultToken}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetNote(null);\n\t\t\t\t\t\t\t\tsetRanSpec(null);\n\t\t\t\t\t\t\t\tonSessionChange(analysisResetSpec(session, mode));\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RotateCcw className=\"wwc:h-4 wwc:w-4\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* ── Right: result (large) BESIDE the execution summary (narrow) ── */}\n\t\t\t\t<div className=\"wwc:flex wwc:min-h-0 wwc:min-w-0 wwc:flex-col wwc:gap-4 wwc:overflow-hidden\">\n\t\t\t\t\t{!hasRun ? (\n\t\t\t\t\t\t<Card className=\"wwc:flex wwc:min-h-[24rem] wwc:flex-1 wwc:items-center wwc:justify-center\">\n\t\t\t\t\t\t\t<Empty\n\t\t\t\t\t\t\t\ticon={<Play className=\"wwc:h-6 wwc:w-6\" />}\n\t\t\t\t\t\t\t\ttitle=\"No analysis run yet\"\n\t\t\t\t\t\t\t\tdescription=\"Set the stages on the left — source, filter, traversal, metrics, grouping — then run the analysis to see its result and how it executed.\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Card>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t/* Result and Execution sit SIDE BY SIDE — the result takes the elastic track and the\n\t\t\t\t\t\t execution summary a fixed narrow one, so the chart gets the width and the metadata\n\t\t\t\t\t\t reads as a sidebar rather than something buried below a tall chart. */\n\t\t\t\t\t\t<div className=\"wwc:grid wwc:min-h-0 wwc:min-w-0 wwc:flex-1 wwc:gap-4 wwc:overflow-hidden wwc:xl:grid-cols-[minmax(0,1fr)_19rem]\">\n\t\t\t\t\t\t\t{/* Mirrors the left rail: ONE panel whose body scrolls and whose actions are pinned. */}\n\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:min-h-0 wwc:min-w-0 wwc:flex-col wwc:overflow-hidden wwc:rounded-lg wwc:border wwc:border-border wwc:bg-card wwc:text-card-foreground\">\n\t\t\t\t\t\t\t\t<div className=\"wwc:flex wwc:min-h-0 wwc:min-w-0 wwc:flex-1 wwc:flex-col wwc:overflow-auto\">\n\t\t\t\t\t\t\t\t\t<CardHeader className=\"wwc:gap-1 wwc:p-3\">\n\t\t\t\t\t\t\t\t\t\t<CardTitle className=\"wwc:text-sm\">Result</CardTitle>\n\t\t\t\t\t\t\t\t\t\t<p className=\"wwc:text-sm wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t{WC3_ANALYSIS_MESSAGES.resultFooter(result.rowsReturned, result.rowsMatched)}\n\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t</CardHeader>\n\t\t\t\t\t\t\t\t\t<CardContent className=\"wwc:min-w-0 wwc:flex-1 wwc:space-y-3 wwc:p-3 wwc:pt-0\">\n\t\t\t\t\t\t\t\t\t\t{/* Editing a stage after a run does not silently repaint the numbers — it says so. */}\n\t\t\t\t\t\t\t\t\t\t{stale ? (\n\t\t\t\t\t\t\t\t\t\t\t<Banner\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"warning\"\n\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Configuration changed since this ran\"\n\t\t\t\t\t\t\t\t\t\t\t\tdescription=\"The result below is from the previous configuration. Run the analysis again to refresh it.\"\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t{result.blocked.length > 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t<Banner\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"warning\"\n\t\t\t\t\t\t\t\t\t\t\t\ttitle={`${result.blocked.length} metric${result.blocked.length === 1 ? \"\" : \"s\"} cannot be computed`}\n\t\t\t\t\t\t\t\t\t\t\t\tdescription={WC3_ANALYSIS_MESSAGES.blockedMetrics}\n\t\t\t\t\t\t\t\t\t\t\t\titems={result.blocked.map((m) => m.label)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t{resultBody()}\n\t\t\t\t\t\t\t\t\t</CardContent>\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t{/* Post-run actions, pinned exactly like the rail's run button: shrink-0 keeps them out of\n\t\t\t\t\t\t\t\t the scroll area so they stay reachable however tall the chart gets. */}\n\t\t\t\t\t\t\t\t<div className=\"wwc:shrink-0 wwc:border-t wwc:border-border wwc:p-3\">{publishActions}</div>\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{/* ── Execution summary: the narrow track beside the result ── */}\n\t\t\t\t\t\t\t<Card className=\"wwc:min-h-0 wwc:min-w-0 wwc:overflow-auto\">\n\t\t\t\t\t\t\t\t<CardHeader className=\"wwc:p-3\">\n\t\t\t\t\t\t\t\t\t<CardTitle className=\"wwc:text-sm\">Execution</CardTitle>\n\t\t\t\t\t\t\t\t</CardHeader>\n\t\t\t\t\t\t\t\t<CardContent className=\"wwc:space-y-3 wwc:p-3 wwc:pt-0\">\n\t\t\t\t\t\t\t\t\t<dl className=\"wwc:grid wwc:grid-cols-[minmax(0,6.5rem)_minmax(0,1fr)] wwc:gap-x-3 wwc:gap-y-1.5 wwc:text-xs\">\n\t\t\t\t\t\t\t\t\t\t<MetaRow label=\"Route\">\n\t\t\t\t\t\t\t\t\t\t\t<AnalysisRouteBadge route={result.route} />\n\t\t\t\t\t\t\t\t\t\t</MetaRow>\n\t\t\t\t\t\t\t\t\t\t<MetaRow label=\"Rows scanned\">{result.rowsScanned.toLocaleString()}</MetaRow>\n\t\t\t\t\t\t\t\t\t\t<MetaRow label=\"Rows returned\">{result.rowsReturned.toLocaleString()} groups</MetaRow>\n\t\t\t\t\t\t\t\t\t\t<MetaRow label=\"Time\">\n\t\t\t\t\t\t\t\t\t\t\t{result.ms} ms <span className=\"wwc:text-muted-foreground\">measured, in-browser</span>\n\t\t\t\t\t\t\t\t\t\t</MetaRow>\n\t\t\t\t\t\t\t\t\t\t<MetaRow label=\"Result\">{result.exact ? \"Exact\" : \"Estimated\"}</MetaRow>\n\t\t\t\t\t\t\t\t\t\t<MetaRow label=\"As of\">{result.asOf}</MetaRow>\n\t\t\t\t\t\t\t\t\t\t<MetaRow label=\"Storage\">{result.materialised ? \"Materialised\" : \"Live query\"}</MetaRow>\n\t\t\t\t\t\t\t\t\t\t<MetaRow label=\"Scope\">\n\t\t\t\t\t\t\t\t\t\t\t{result.scope}{\" \"}\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:text-muted-foreground\">({WC3_ANALYSIS_MESSAGES.scopeQualifier})</span>\n\t\t\t\t\t\t\t\t\t\t</MetaRow>\n\t\t\t\t\t\t\t\t\t\t<MetaRow label=\"Lineage\">\n\t\t\t\t\t\t\t\t\t\t\t{result.lineage.map((line) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<span key={line} className=\"wwc:block wwc:font-mono wwc:text-[11px]\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{line}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t</MetaRow>\n\t\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t\t\t<div className=\"wwc:rounded-md wwc:border wwc:border-border wwc:bg-muted/40 wwc:p-2 wwc:text-xs wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:font-semibold wwc:text-foreground\">Why this engine:</span> {result.route.why}\n\t\t\t\t\t\t\t\t\t\t<p className=\"wwc:mt-1.5\">{WC3_ANALYSIS_MESSAGES.routeLevers}</p>\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<div className=\"wwc:rounded-md wwc:border wwc:border-amber-600/40 wwc:bg-amber-500/10 wwc:p-2 wwc:text-xs wwc:text-amber-700 wwc:dark:text-amber-400\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"wwc:font-semibold\">Scope of this proof:</span>{\" \"}\n\t\t\t\t\t\t\t\t\t\t{WC3_ANALYSIS_MESSAGES.proofScope(WC3_OBSERVATION_ROWS.length)}\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t<p className=\"wwc:text-xs wwc:text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t{session.saved.length.toLocaleString()} saved {session.saved.length === 1 ? \"analysis\" : \"analyses\"}\n\t\t\t\t\t\t\t\t\t\t{onNavigate ? (\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"wwc:h-auto wwc:px-1 wwc:py-0\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => onNavigate(analysisNav.saved())}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\tOpen Saved analyses\n\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t</CardContent>\n\t\t\t\t\t\t\t</Card>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\n// ─── Re-exports ──────────────────────────────────────────────────────────────\n\n// Re-exported, not restated: the Analysis surfaces use the same pane, mono span, object-type chip\n// and nav-target builders the Lineage tabs already ship. `useDetailLabel` is deliberately absent —\n// no Analysis surface drills in, so a breadcrumb tail would have nothing to report.\nexport {Mono, Pane, TypeGlyphLabel, lineageNav} from \"./wc3-lineage-shared\";\nexport type {Wc3LineageNavTarget} from \"./wc3-lineage-shared\";\n\n// The whole fixture surface, so a view has ONE import source and never reaches into\n// wc3-analysis-data directly.\nexport {\n\tWC3_ANALYSIS_GROUP_BYS,\n\tWC3_ANALYSIS_METRICS,\n\tWC3_ANALYSIS_SEVERITIES,\n\tWC3_ANALYSIS_SOURCE_DATASET_IDS,\n\tWC3_ANALYSIS_STAGES,\n\tWC3_ANALYSIS_WINDOWS,\n\tWC3_OBSERVATION_ROWS,\n\tWC3_WORKER_ROWS,\n\tanalysisDataset,\n\tanalysisDatasetMaterialised,\n\tanalysisDatasetName,\n\tanalysisDatasetRows,\n\tanalysisMetric,\n\tanalysisMetricMissingInput,\n\tanalysisWorker,\n\twc3AnalysisDefaultSpec,\n} from \"./wc3-analysis-data\";\nexport type {\n\tWc3AnalysisFilter,\n\tWc3AnalysisGrain,\n\tWc3AnalysisGroupBy,\n\tWc3AnalysisJoinedRow,\n\tWc3AnalysisMetric,\n\tWc3AnalysisMode,\n\tWc3AnalysisRouteId,\n\tWc3AnalysisSpec,\n\tWc3AnalysisStageId,\n\tWc3AnalysisViz,\n\tWc3Materialisation,\n\tWc3SavedAnalysis,\n\tWc3WorkerRow,\n} from \"./wc3-analysis-data\";\n"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Wc3AnalysisSession, Wc3AnalysisViewProps } from "./wc3-analysis-shared.mjs";
|
|
2
|
+
import { ReactElement } from "react";
|
|
3
|
+
//#region src/pages/wc3-analysis-views.d.ts
|
|
4
|
+
export declare const ANALYSIS_VIEWS: Record<string, (props: Wc3AnalysisViewProps) => ReactElement>;
|
|
5
|
+
/**
|
|
6
|
+
* Seed for the shell's live analysis session.
|
|
7
|
+
*
|
|
8
|
+
* BOTH builder tabs are seeded up front — the prototype keeps one spec and destroys it on a mode
|
|
9
|
+
* switch (anDefaultSpec is re-run every time UI.analysis.mode changes), but here object and data are
|
|
10
|
+
* two tabs and the shell resolves exactly one ANALYSIS_VIEWS entry per render. Destroying the other
|
|
11
|
+
* mode's half-built query on every tab switch would be a regression, not fidelity. Documented
|
|
12
|
+
* divergence.
|
|
13
|
+
*
|
|
14
|
+
* `wc3AnalysisDefaultSpec` returns a fresh object literal per call, so there is nothing aliased to a
|
|
15
|
+
* frozen fixture here; `saved` and `materialisations` start as NEW empty arrays rather than as the
|
|
16
|
+
* WC3_*_SEED constants, so an in-session push can never reach a module-level array.
|
|
17
|
+
*
|
|
18
|
+
* The result is computed here, not left null: it is the result of the spec beside it and that
|
|
19
|
+
* invariant is what lets every surface read `state.result` without a null check. Two runs over 210
|
|
20
|
+
* and 210 rows at mount — measured in single-digit milliseconds.
|
|
21
|
+
*/
|
|
22
|
+
export declare function seedAnalysisSession(): Wc3AnalysisSession;
|
|
23
|
+
//#endregion
|
|
24
|
+
export type { Wc3AnalysisSession, Wc3AnalysisViewProps };
|
|
25
|
+
//# sourceMappingURL=wc3-analysis-views.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wc3-analysis-views.d.mts","names":[],"sources":["../../src/pages/wc3-analysis-views.ts"],"mappings":";;;qBA+Ba,gBAAgB,gBAAgB,OAAO,yBAAyB;;;;;;;;;;;;;;;;;;wBAuB7D,uBAAuB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { wc3AnalysisDefaultSpec } from "./wc3-analysis-data.mjs";
|
|
2
|
+
import { analysisRun } from "./wc3-analysis-shared.mjs";
|
|
3
|
+
import { DataAnalysisView } from "./wc3-analysis-data-view.mjs";
|
|
4
|
+
import { ObjectAnalysisView } from "./wc3-analysis-object-view.mjs";
|
|
5
|
+
import { SavedAnalysesView } from "./wc3-analysis-saved-view.mjs";
|
|
6
|
+
//#region src/pages/wc3-analysis-views.ts
|
|
7
|
+
const ANALYSIS_VIEWS = {
|
|
8
|
+
object: ObjectAnalysisView,
|
|
9
|
+
data: DataAnalysisView,
|
|
10
|
+
saved: SavedAnalysesView
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Seed for the shell's live analysis session.
|
|
14
|
+
*
|
|
15
|
+
* BOTH builder tabs are seeded up front — the prototype keeps one spec and destroys it on a mode
|
|
16
|
+
* switch (anDefaultSpec is re-run every time UI.analysis.mode changes), but here object and data are
|
|
17
|
+
* two tabs and the shell resolves exactly one ANALYSIS_VIEWS entry per render. Destroying the other
|
|
18
|
+
* mode's half-built query on every tab switch would be a regression, not fidelity. Documented
|
|
19
|
+
* divergence.
|
|
20
|
+
*
|
|
21
|
+
* `wc3AnalysisDefaultSpec` returns a fresh object literal per call, so there is nothing aliased to a
|
|
22
|
+
* frozen fixture here; `saved` and `materialisations` start as NEW empty arrays rather than as the
|
|
23
|
+
* WC3_*_SEED constants, so an in-session push can never reach a module-level array.
|
|
24
|
+
*
|
|
25
|
+
* The result is computed here, not left null: it is the result of the spec beside it and that
|
|
26
|
+
* invariant is what lets every surface read `state.result` without a null check. Two runs over 210
|
|
27
|
+
* and 210 rows at mount — measured in single-digit milliseconds.
|
|
28
|
+
*/
|
|
29
|
+
function seedAnalysisSession() {
|
|
30
|
+
const object = wc3AnalysisDefaultSpec("object");
|
|
31
|
+
const data = wc3AnalysisDefaultSpec("data");
|
|
32
|
+
return {
|
|
33
|
+
object: {
|
|
34
|
+
spec: object,
|
|
35
|
+
result: analysisRun(object)
|
|
36
|
+
},
|
|
37
|
+
data: {
|
|
38
|
+
spec: data,
|
|
39
|
+
result: analysisRun(data)
|
|
40
|
+
},
|
|
41
|
+
saved: [],
|
|
42
|
+
materialisations: []
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//#endregion
|
|
46
|
+
export { ANALYSIS_VIEWS, seedAnalysisSession };
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=wc3-analysis-views.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wc3-analysis-views.mjs","names":[],"sources":["../../src/pages/wc3-analysis-views.ts"],"sourcesContent":["import type {ReactElement} from \"react\";\n\nimport {wc3AnalysisDefaultSpec} from \"./wc3-analysis-data\";\nimport {DataAnalysisView} from \"./wc3-analysis-data-view\";\nimport {ObjectAnalysisView} from \"./wc3-analysis-object-view\";\nimport {SavedAnalysesView} from \"./wc3-analysis-saved-view\";\nimport {analysisRun, type Wc3AnalysisSession, type Wc3AnalysisViewProps} from \"./wc3-analysis-shared\";\n\n// The three declared tabs are all REAL surfaces, and all three are kept — unlike Products (six tabs\n// collapsed to PRODUCT_TABS behind a SideMenu) and Processes (four tabs collapsed to detail-page\n// sections). The reasoning is different in kind and is recorded here rather than rediscovered:\n//\n// · `object` and `data` are two MODES of the prototype's one PageAnalysis (06-unified-workspace.html\n// :9889), not sections of a record page. The prototype already renders them as a TAB BAR at the top\n// of the page and resets the spec when you cross between them. Promoting that tab bar to the\n// perspective tab bar is a lossless move: the header stays the mode switch and no in-content mode\n// toggle has to be invented, which the \"no in-content <h1>\" rule would have made awkward anyway.\n// · They are NOT two components. Both entries mount the SAME AnalysisWorkbench from\n// wc3-analysis-shared.tsx and differ only in the two stage bodies the prototype itself writes\n// differently (Source and Traverse/Join). Everything else — the rail, filter/derive/group/viz/publish,\n// the result panel, the execution-meta panel — is one implementation, so the two tabs structurally\n// cannot drift.\n// · `saved` is a genuine list of records (spec + route + lineage) and gets the one-DataTable list/card\n// surface. It opens EMPTY and stays empty until the session saves something, because the prototype's\n// store opens with S.analyses = [] and S.materializations = []. That empty state is shipped honestly\n// with the prototype's own copy rather than seeded with invented history.\n//\n// Same seam as PRODUCT_VIEWS (wc3-product-views.ts:14), PIPELINE_VIEWS (wc3-pipeline-views.ts:17),\n// LINEAGE_VIEWS (wc3-lineage-views.ts:11) and PROCESS_VIEWS (wc3-process-views.ts:17): keyed by TAB ID,\n// looked up by the shell, and a tab left out of this record still falls through to the perspective's\n// `placeholders` entry.\nexport const ANALYSIS_VIEWS: Record<string, (props: Wc3AnalysisViewProps) => ReactElement> = {\n\tobject: ObjectAnalysisView,\n\tdata: DataAnalysisView,\n\tsaved: SavedAnalysesView,\n};\n\n/**\n * Seed for the shell's live analysis session.\n *\n * BOTH builder tabs are seeded up front — the prototype keeps one spec and destroys it on a mode\n * switch (anDefaultSpec is re-run every time UI.analysis.mode changes), but here object and data are\n * two tabs and the shell resolves exactly one ANALYSIS_VIEWS entry per render. Destroying the other\n * mode's half-built query on every tab switch would be a regression, not fidelity. Documented\n * divergence.\n *\n * `wc3AnalysisDefaultSpec` returns a fresh object literal per call, so there is nothing aliased to a\n * frozen fixture here; `saved` and `materialisations` start as NEW empty arrays rather than as the\n * WC3_*_SEED constants, so an in-session push can never reach a module-level array.\n *\n * The result is computed here, not left null: it is the result of the spec beside it and that\n * invariant is what lets every surface read `state.result` without a null check. Two runs over 210\n * and 210 rows at mount — measured in single-digit milliseconds.\n */\nexport function seedAnalysisSession(): Wc3AnalysisSession {\n\tconst object = wc3AnalysisDefaultSpec(\"object\");\n\tconst data = wc3AnalysisDefaultSpec(\"data\");\n\treturn {\n\t\tobject: {spec: object, result: analysisRun(object)},\n\t\tdata: {spec: data, result: analysisRun(data)},\n\t\tsaved: [],\n\t\tmaterialisations: [],\n\t};\n}\n\n// Re-exported so the shell needs one import line and never reaches into the shared module.\nexport type {Wc3AnalysisSession, Wc3AnalysisViewProps} from \"./wc3-analysis-shared\";\n"],"mappings":";;;;;;AA+BA,MAAa,iBAAgF;CAC5F,QAAQ;CACR,MAAM;CACN,OAAO;AACR;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,sBAA0C;CACzD,MAAM,SAAS,uBAAuB,QAAQ;CAC9C,MAAM,OAAO,uBAAuB,MAAM;CAC1C,OAAO;EACN,QAAQ;GAAC,MAAM;GAAQ,QAAQ,YAAY,MAAM;EAAC;EAClD,MAAM;GAAC,MAAM;GAAM,QAAQ,YAAY,IAAI;EAAC;EAC5C,OAAO,CAAC;EACR,kBAAkB,CAAC;CACpB;AACD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FileSystemNode } from "../file-system/model.mjs";
|
|
2
|
+
import "../file-system/index.mjs";
|
|
3
|
+
//#region src/pages/wc3-fs-data.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* The organizations the top-bar switcher picks between, and the roots of the file system. Defined here
|
|
6
|
+
* because the switcher and the tree must agree on the list: picking an org in the bar shows that org's
|
|
7
|
+
* tree, so two lists would mean a selectable org with no files.
|
|
8
|
+
*/
|
|
9
|
+
export declare const WC3_ORGANIZATIONS: readonly ["Core Construction", "BuildRight Inc", "Metro Developers", "Nesma United Industries"];
|
|
10
|
+
export declare const WC3_FS_NODES: FileSystemNode[];
|
|
11
|
+
//#endregion
|
|
12
|
+
//# sourceMappingURL=wc3-fs-data.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wc3-fs-data.d.mts","names":[],"sources":["../../src/pages/wc3-fs-data.ts"],"mappings":";;;;;;;;qBAoBa;qBAkBA,cAAc"}
|