@moldable-ai/ui 0.2.19 → 0.2.21
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/dist/catalog/catalog-coverage.d.ts +15 -0
- package/dist/catalog/catalog-coverage.d.ts.map +1 -0
- package/dist/catalog/catalog-coverage.js +44 -0
- package/dist/catalog/catalog-manifest.d.ts +6 -0
- package/dist/catalog/catalog-manifest.d.ts.map +1 -0
- package/dist/catalog/catalog-manifest.js +117 -0
- package/dist/catalog/catalog-types.d.ts +64 -0
- package/dist/catalog/catalog-types.d.ts.map +1 -0
- package/dist/catalog/catalog-types.js +20 -0
- package/dist/catalog/component-catalog.d.ts +14 -0
- package/dist/catalog/component-catalog.d.ts.map +1 -0
- package/dist/catalog/component-catalog.js +49 -0
- package/dist/catalog/core-catalog-exclusions.d.ts +8 -0
- package/dist/catalog/core-catalog-exclusions.d.ts.map +1 -0
- package/dist/catalog/core-catalog-exclusions.js +151 -0
- package/dist/catalog/core-catalog.d.ts +2 -0
- package/dist/catalog/core-catalog.d.ts.map +1 -0
- package/dist/catalog/core-catalog.js +19 -0
- package/dist/catalog/core-collection-stories.d.ts +3 -0
- package/dist/catalog/core-collection-stories.d.ts.map +1 -0
- package/dist/catalog/core-collection-stories.js +42 -0
- package/dist/catalog/core-control-stories.d.ts +3 -0
- package/dist/catalog/core-control-stories.d.ts.map +1 -0
- package/dist/catalog/core-control-stories.js +94 -0
- package/dist/catalog/core-feedback-stories.d.ts +3 -0
- package/dist/catalog/core-feedback-stories.d.ts.map +1 -0
- package/dist/catalog/core-feedback-stories.js +50 -0
- package/dist/catalog/core-foundation-stories.d.ts +3 -0
- package/dist/catalog/core-foundation-stories.d.ts.map +1 -0
- package/dist/catalog/core-foundation-stories.js +53 -0
- package/dist/catalog/core-navigation-stories.d.ts +3 -0
- package/dist/catalog/core-navigation-stories.d.ts.map +1 -0
- package/dist/catalog/core-navigation-stories.js +25 -0
- package/dist/catalog/core-overlay-stories.d.ts +3 -0
- package/dist/catalog/core-overlay-stories.d.ts.map +1 -0
- package/dist/catalog/core-overlay-stories.js +20 -0
- package/dist/catalog/index.d.ts +7 -0
- package/dist/catalog/index.d.ts.map +1 -0
- package/dist/catalog/index.js +6 -0
- package/dist/components/app-error-boundary.d.ts +1 -0
- package/dist/components/app-error-boundary.d.ts.map +1 -1
- package/dist/components/app-error-boundary.js +13 -0
- package/dist/components/chat/chat-image-lightbox.d.ts +9 -0
- package/dist/components/chat/chat-image-lightbox.d.ts.map +1 -0
- package/dist/components/chat/chat-image-lightbox.js +9 -0
- package/dist/components/chat/chat-message.d.ts +19 -1
- package/dist/components/chat/chat-message.d.ts.map +1 -1
- package/dist/components/chat/chat-message.js +66 -16
- package/dist/components/chat/chat-messages.d.ts +5 -2
- package/dist/components/chat/chat-messages.d.ts.map +1 -1
- package/dist/components/chat/chat-messages.js +61 -6
- package/dist/components/chat/chat-panel.d.ts +49 -6
- package/dist/components/chat/chat-panel.d.ts.map +1 -1
- package/dist/components/chat/chat-panel.js +196 -163
- package/dist/components/chat/conversation-history.d.ts +39 -5
- package/dist/components/chat/conversation-history.d.ts.map +1 -1
- package/dist/components/chat/conversation-history.js +192 -26
- package/dist/components/chat/index.d.ts +2 -2
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/chat/index.js +1 -1
- package/dist/components/chat/tool-handlers.d.ts.map +1 -1
- package/dist/components/chat/tool-handlers.js +40 -2
- package/dist/components/chat/vertical-scroll-fade.d.ts +6 -0
- package/dist/components/chat/vertical-scroll-fade.d.ts.map +1 -0
- package/dist/components/chat/vertical-scroll-fade.js +12 -0
- package/dist/components/native-capabilities/bluetooth-panel-helpers.d.ts +9 -0
- package/dist/components/native-capabilities/bluetooth-panel-helpers.d.ts.map +1 -0
- package/dist/components/native-capabilities/bluetooth-panel-helpers.js +37 -0
- package/dist/components/native-capabilities/bluetooth-panel.d.ts +56 -0
- package/dist/components/native-capabilities/bluetooth-panel.d.ts.map +1 -0
- package/dist/components/native-capabilities/bluetooth-panel.js +470 -0
- package/dist/components/native-capabilities/camera-preview.d.ts +39 -0
- package/dist/components/native-capabilities/camera-preview.d.ts.map +1 -0
- package/dist/components/native-capabilities/camera-preview.js +228 -0
- package/dist/components/native-capabilities/capability-badge.d.ts +23 -0
- package/dist/components/native-capabilities/capability-badge.d.ts.map +1 -0
- package/dist/components/native-capabilities/capability-badge.js +39 -0
- package/dist/components/native-capabilities/capability-matrix.d.ts +14 -0
- package/dist/components/native-capabilities/capability-matrix.d.ts.map +1 -0
- package/dist/components/native-capabilities/capability-matrix.js +97 -0
- package/dist/components/native-capabilities/clipboard-button.d.ts +26 -0
- package/dist/components/native-capabilities/clipboard-button.d.ts.map +1 -0
- package/dist/components/native-capabilities/clipboard-button.js +99 -0
- package/dist/components/native-capabilities/device-io-controls.d.ts +4 -0
- package/dist/components/native-capabilities/device-io-controls.d.ts.map +1 -0
- package/dist/components/native-capabilities/device-io-controls.js +28 -0
- package/dist/components/native-capabilities/device-list.d.ts +20 -0
- package/dist/components/native-capabilities/device-list.d.ts.map +1 -0
- package/dist/components/native-capabilities/device-list.js +14 -0
- package/dist/components/native-capabilities/display-map.d.ts +23 -0
- package/dist/components/native-capabilities/display-map.d.ts.map +1 -0
- package/dist/components/native-capabilities/display-map.js +114 -0
- package/dist/components/native-capabilities/haptic-button.d.ts +26 -0
- package/dist/components/native-capabilities/haptic-button.d.ts.map +1 -0
- package/dist/components/native-capabilities/haptic-button.js +94 -0
- package/dist/components/native-capabilities/hid-panel.d.ts +40 -0
- package/dist/components/native-capabilities/hid-panel.d.ts.map +1 -0
- package/dist/components/native-capabilities/hid-panel.js +373 -0
- package/dist/components/native-capabilities/index.d.ts +27 -0
- package/dist/components/native-capabilities/index.d.ts.map +1 -0
- package/dist/components/native-capabilities/index.js +26 -0
- package/dist/components/native-capabilities/live-indicator.d.ts +15 -0
- package/dist/components/native-capabilities/live-indicator.d.ts.map +1 -0
- package/dist/components/native-capabilities/live-indicator.js +26 -0
- package/dist/components/native-capabilities/local-auth-button.d.ts +33 -0
- package/dist/components/native-capabilities/local-auth-button.d.ts.map +1 -0
- package/dist/components/native-capabilities/local-auth-button.js +115 -0
- package/dist/components/native-capabilities/location-panel.d.ts +29 -0
- package/dist/components/native-capabilities/location-panel.d.ts.map +1 -0
- package/dist/components/native-capabilities/location-panel.js +146 -0
- package/dist/components/native-capabilities/microphone-meter.d.ts +35 -0
- package/dist/components/native-capabilities/microphone-meter.d.ts.map +1 -0
- package/dist/components/native-capabilities/microphone-meter.js +244 -0
- package/dist/components/native-capabilities/midi-monitor.d.ts +54 -0
- package/dist/components/native-capabilities/midi-monitor.d.ts.map +1 -0
- package/dist/components/native-capabilities/midi-monitor.js +534 -0
- package/dist/components/native-capabilities/native-capability-panel.d.ts +11 -0
- package/dist/components/native-capabilities/native-capability-panel.d.ts.map +1 -0
- package/dist/components/native-capabilities/native-capability-panel.js +28 -0
- package/dist/components/native-capabilities/notification-panel.d.ts +24 -0
- package/dist/components/native-capabilities/notification-panel.d.ts.map +1 -0
- package/dist/components/native-capabilities/notification-panel.js +124 -0
- package/dist/components/native-capabilities/power-blocker-controller.d.ts +19 -0
- package/dist/components/native-capabilities/power-blocker-controller.d.ts.map +1 -0
- package/dist/components/native-capabilities/power-blocker-controller.js +83 -0
- package/dist/components/native-capabilities/power-panel.d.ts +67 -0
- package/dist/components/native-capabilities/power-panel.d.ts.map +1 -0
- package/dist/components/native-capabilities/power-panel.js +309 -0
- package/dist/components/native-capabilities/readout.d.ts +10 -0
- package/dist/components/native-capabilities/readout.d.ts.map +1 -0
- package/dist/components/native-capabilities/readout.js +11 -0
- package/dist/components/native-capabilities/screen-share-preview.d.ts +36 -0
- package/dist/components/native-capabilities/screen-share-preview.d.ts.map +1 -0
- package/dist/components/native-capabilities/screen-share-preview.js +191 -0
- package/dist/components/native-capabilities/secure-storage-panel.d.ts +36 -0
- package/dist/components/native-capabilities/secure-storage-panel.d.ts.map +1 -0
- package/dist/components/native-capabilities/secure-storage-panel.js +193 -0
- package/dist/components/native-capabilities/serial-console.d.ts +64 -0
- package/dist/components/native-capabilities/serial-console.d.ts.map +1 -0
- package/dist/components/native-capabilities/serial-console.js +399 -0
- package/dist/components/native-capabilities/shortcut-recorder.d.ts +35 -0
- package/dist/components/native-capabilities/shortcut-recorder.d.ts.map +1 -0
- package/dist/components/native-capabilities/shortcut-recorder.js +217 -0
- package/dist/components/native-capabilities/stream-log.d.ts +35 -0
- package/dist/components/native-capabilities/stream-log.d.ts.map +1 -0
- package/dist/components/native-capabilities/stream-log.js +65 -0
- package/dist/components/native-capabilities/system-audio-monitor.d.ts +34 -0
- package/dist/components/native-capabilities/system-audio-monitor.d.ts.map +1 -0
- package/dist/components/native-capabilities/system-audio-monitor.js +275 -0
- package/dist/components/native-capabilities/usb-panel.d.ts +54 -0
- package/dist/components/native-capabilities/usb-panel.d.ts.map +1 -0
- package/dist/components/native-capabilities/usb-panel.js +363 -0
- package/dist/components/native-capabilities/use-capability.d.ts +20 -0
- package/dist/components/native-capabilities/use-capability.d.ts.map +1 -0
- package/dist/components/native-capabilities/use-capability.js +61 -0
- package/dist/components/ui/alert-dialog.d.ts +7 -3
- package/dist/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/components/ui/alert-dialog.js +9 -5
- package/dist/components/ui/alert.d.ts +19 -3
- package/dist/components/ui/alert.d.ts.map +1 -1
- package/dist/components/ui/alert.js +25 -8
- package/dist/components/ui/app-frame.d.ts +28 -0
- package/dist/components/ui/app-frame.d.ts.map +1 -0
- package/dist/components/ui/app-frame.js +95 -0
- package/dist/components/ui/button-group.d.ts +1 -1
- package/dist/components/ui/button.js +1 -1
- package/dist/components/ui/collapsible.d.ts +9 -1
- package/dist/components/ui/collapsible.d.ts.map +1 -1
- package/dist/components/ui/collapsible.js +13 -2
- package/dist/components/ui/collection-navigation.d.ts +8 -0
- package/dist/components/ui/collection-navigation.d.ts.map +1 -0
- package/dist/components/ui/collection-navigation.js +19 -0
- package/dist/components/ui/color-well.d.ts +13 -0
- package/dist/components/ui/color-well.d.ts.map +1 -0
- package/dist/components/ui/color-well.js +30 -0
- package/dist/components/ui/command.d.ts +5 -1
- package/dist/components/ui/command.d.ts.map +1 -1
- package/dist/components/ui/command.js +13 -1
- package/dist/components/ui/confirm-dialog.d.ts +19 -0
- package/dist/components/ui/confirm-dialog.d.ts.map +1 -0
- package/dist/components/ui/confirm-dialog.js +45 -0
- package/dist/components/ui/date-field.d.ts +19 -0
- package/dist/components/ui/date-field.d.ts.map +1 -0
- package/dist/components/ui/date-field.js +54 -0
- package/dist/components/ui/date-picker.d.ts +24 -0
- package/dist/components/ui/date-picker.d.ts.map +1 -0
- package/dist/components/ui/date-picker.js +92 -0
- package/dist/components/ui/dialog.d.ts +4 -2
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/dialog.js +8 -5
- package/dist/components/ui/edge-fade.d.ts +11 -0
- package/dist/components/ui/edge-fade.d.ts.map +1 -0
- package/dist/components/ui/edge-fade.js +41 -0
- package/dist/components/ui/empty.d.ts +7 -2
- package/dist/components/ui/empty.d.ts.map +1 -1
- package/dist/components/ui/empty.js +20 -7
- package/dist/components/ui/field.d.ts +1 -1
- package/dist/components/ui/grid.d.ts +24 -0
- package/dist/components/ui/grid.d.ts.map +1 -0
- package/dist/components/ui/grid.js +258 -0
- package/dist/components/ui/icon-button.d.ts +15 -0
- package/dist/components/ui/icon-button.d.ts.map +1 -0
- package/dist/components/ui/icon-button.js +15 -0
- package/dist/components/ui/index.d.ts +23 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +23 -0
- package/dist/components/ui/input-group.d.ts +1 -1
- package/dist/components/ui/inspector.d.ts +15 -0
- package/dist/components/ui/inspector.d.ts.map +1 -0
- package/dist/components/ui/inspector.js +26 -0
- package/dist/components/ui/kbd.d.ts +1 -1
- package/dist/components/ui/list.d.ts +28 -0
- package/dist/components/ui/list.d.ts.map +1 -0
- package/dist/components/ui/list.js +235 -0
- package/dist/components/ui/material.d.ts +34 -0
- package/dist/components/ui/material.d.ts.map +1 -0
- package/dist/components/ui/material.js +34 -0
- package/dist/components/ui/message-scroller-controller.d.ts +162 -0
- package/dist/components/ui/message-scroller-controller.d.ts.map +1 -0
- package/dist/components/ui/message-scroller-controller.js +888 -0
- package/dist/components/ui/message-scroller-layout-stability.d.ts +33 -0
- package/dist/components/ui/message-scroller-layout-stability.d.ts.map +1 -0
- package/dist/components/ui/message-scroller-layout-stability.js +153 -0
- package/dist/components/ui/message-scroller-policy.d.ts +74 -0
- package/dist/components/ui/message-scroller-policy.d.ts.map +1 -0
- package/dist/components/ui/message-scroller-policy.js +129 -0
- package/dist/components/ui/message-scroller-primitive.d.ts +55 -0
- package/dist/components/ui/message-scroller-primitive.d.ts.map +1 -0
- package/dist/components/ui/message-scroller-primitive.js +226 -0
- package/dist/components/ui/message-scroller.d.ts +11 -0
- package/dist/components/ui/message-scroller.d.ts.map +1 -0
- package/dist/components/ui/message-scroller.js +25 -0
- package/dist/components/ui/navigation-button-group.d.ts +16 -0
- package/dist/components/ui/navigation-button-group.d.ts.map +1 -0
- package/dist/components/ui/navigation-button-group.js +9 -0
- package/dist/components/ui/notification-dot.d.ts +4 -0
- package/dist/components/ui/notification-dot.d.ts.map +1 -0
- package/dist/components/ui/notification-dot.js +7 -0
- package/dist/components/ui/number-input.d.ts +16 -0
- package/dist/components/ui/number-input.d.ts.map +1 -0
- package/dist/components/ui/number-input.js +56 -0
- package/dist/components/ui/panel.d.ts +18 -0
- package/dist/components/ui/panel.d.ts.map +1 -0
- package/dist/components/ui/panel.js +40 -0
- package/dist/components/ui/popover.d.ts +9 -2
- package/dist/components/ui/popover.d.ts.map +1 -1
- package/dist/components/ui/popover.js +14 -4
- package/dist/components/ui/scroll-area.d.ts +8 -2
- package/dist/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/scroll-area.js +6 -3
- package/dist/components/ui/search-field.d.ts +19 -0
- package/dist/components/ui/search-field.d.ts.map +1 -0
- package/dist/components/ui/search-field.js +64 -0
- package/dist/components/ui/segmented-control.d.ts +21 -0
- package/dist/components/ui/segmented-control.d.ts.map +1 -0
- package/dist/components/ui/segmented-control.js +62 -0
- package/dist/components/ui/sheet.d.ts +4 -2
- package/dist/components/ui/sheet.d.ts.map +1 -1
- package/dist/components/ui/sheet.js +12 -9
- package/dist/components/ui/sidebar.js +1 -1
- package/dist/components/ui/sonner.d.ts +4 -3
- package/dist/components/ui/sonner.d.ts.map +1 -1
- package/dist/components/ui/sonner.js +7 -6
- package/dist/components/ui/split-view.d.ts +11 -0
- package/dist/components/ui/split-view.d.ts.map +1 -0
- package/dist/components/ui/split-view.js +13 -0
- package/dist/components/ui/status.d.ts +13 -0
- package/dist/components/ui/status.d.ts.map +1 -0
- package/dist/components/ui/status.js +36 -0
- package/dist/components/ui/table.d.ts +11 -2
- package/dist/components/ui/table.d.ts.map +1 -1
- package/dist/components/ui/table.js +33 -6
- package/dist/components/ui/text.d.ts +17 -0
- package/dist/components/ui/text.d.ts.map +1 -0
- package/dist/components/ui/text.js +55 -0
- package/dist/components/ui/toggle.d.ts +12 -4
- package/dist/components/ui/toggle.d.ts.map +1 -1
- package/dist/components/ui/toggle.js +13 -2
- package/dist/components/ui/toolbar.d.ts +27 -0
- package/dist/components/ui/toolbar.d.ts.map +1 -0
- package/dist/components/ui/toolbar.js +71 -0
- package/dist/components/ui/tooltip.d.ts +8 -3
- package/dist/components/ui/tooltip.d.ts.map +1 -1
- package/dist/components/ui/tooltip.js +11 -6
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/lib/frame-lifecycle.d.ts +29 -0
- package/dist/lib/frame-lifecycle.d.ts.map +1 -1
- package/dist/lib/frame-lifecycle.js +85 -0
- package/dist/lib/native-capabilities/access.d.ts +13 -0
- package/dist/lib/native-capabilities/access.d.ts.map +1 -0
- package/dist/lib/native-capabilities/access.js +53 -0
- package/dist/lib/native-capabilities/bluetooth-access.d.ts +14 -0
- package/dist/lib/native-capabilities/bluetooth-access.d.ts.map +1 -0
- package/dist/lib/native-capabilities/bluetooth-access.js +43 -0
- package/dist/lib/native-capabilities/bluetooth-connection.d.ts +19 -0
- package/dist/lib/native-capabilities/bluetooth-connection.d.ts.map +1 -0
- package/dist/lib/native-capabilities/bluetooth-connection.js +88 -0
- package/dist/lib/native-capabilities/bluetooth-gatt.d.ts +7 -0
- package/dist/lib/native-capabilities/bluetooth-gatt.d.ts.map +1 -0
- package/dist/lib/native-capabilities/bluetooth-gatt.js +77 -0
- package/dist/lib/native-capabilities/bluetooth-internal.d.ts +10 -0
- package/dist/lib/native-capabilities/bluetooth-internal.d.ts.map +1 -0
- package/dist/lib/native-capabilities/bluetooth-internal.js +105 -0
- package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts +33 -0
- package/dist/lib/native-capabilities/bluetooth-native-fallback.d.ts.map +1 -0
- package/dist/lib/native-capabilities/bluetooth-native-fallback.js +214 -0
- package/dist/lib/native-capabilities/bluetooth-types.d.ts +85 -0
- package/dist/lib/native-capabilities/bluetooth-types.d.ts.map +1 -0
- package/dist/lib/native-capabilities/bluetooth-types.js +2 -0
- package/dist/lib/native-capabilities/bluetooth.d.ts +7 -0
- package/dist/lib/native-capabilities/bluetooth.d.ts.map +1 -0
- package/dist/lib/native-capabilities/bluetooth.js +4 -0
- package/dist/lib/native-capabilities/bridge.d.ts +23 -0
- package/dist/lib/native-capabilities/bridge.d.ts.map +1 -0
- package/dist/lib/native-capabilities/bridge.js +266 -0
- package/dist/lib/native-capabilities/capabilities.d.ts +7 -0
- package/dist/lib/native-capabilities/capabilities.d.ts.map +1 -0
- package/dist/lib/native-capabilities/capabilities.js +95 -0
- package/dist/lib/native-capabilities/clipboard.d.ts +11 -0
- package/dist/lib/native-capabilities/clipboard.d.ts.map +1 -0
- package/dist/lib/native-capabilities/clipboard.js +58 -0
- package/dist/lib/native-capabilities/device-io-errors.d.ts +11 -0
- package/dist/lib/native-capabilities/device-io-errors.d.ts.map +1 -0
- package/dist/lib/native-capabilities/device-io-errors.js +82 -0
- package/dist/lib/native-capabilities/displays.d.ts +38 -0
- package/dist/lib/native-capabilities/displays.d.ts.map +1 -0
- package/dist/lib/native-capabilities/displays.js +12 -0
- package/dist/lib/native-capabilities/global-shortcuts.d.ts +86 -0
- package/dist/lib/native-capabilities/global-shortcuts.d.ts.map +1 -0
- package/dist/lib/native-capabilities/global-shortcuts.js +351 -0
- package/dist/lib/native-capabilities/haptics.d.ts +25 -0
- package/dist/lib/native-capabilities/haptics.d.ts.map +1 -0
- package/dist/lib/native-capabilities/haptics.js +18 -0
- package/dist/lib/native-capabilities/hid-native.d.ts +26 -0
- package/dist/lib/native-capabilities/hid-native.d.ts.map +1 -0
- package/dist/lib/native-capabilities/hid-native.js +229 -0
- package/dist/lib/native-capabilities/hid.d.ts +52 -0
- package/dist/lib/native-capabilities/hid.d.ts.map +1 -0
- package/dist/lib/native-capabilities/hid.js +163 -0
- package/dist/lib/native-capabilities/index.d.ts +40 -0
- package/dist/lib/native-capabilities/index.d.ts.map +1 -0
- package/dist/lib/native-capabilities/index.js +21 -0
- package/dist/lib/native-capabilities/local-authentication.d.ts +32 -0
- package/dist/lib/native-capabilities/local-authentication.d.ts.map +1 -0
- package/dist/lib/native-capabilities/local-authentication.js +46 -0
- package/dist/lib/native-capabilities/location.d.ts +49 -0
- package/dist/lib/native-capabilities/location.d.ts.map +1 -0
- package/dist/lib/native-capabilities/location.js +114 -0
- package/dist/lib/native-capabilities/media-permissions.d.ts +28 -0
- package/dist/lib/native-capabilities/media-permissions.d.ts.map +1 -0
- package/dist/lib/native-capabilities/media-permissions.js +37 -0
- package/dist/lib/native-capabilities/media.d.ts +17 -0
- package/dist/lib/native-capabilities/media.d.ts.map +1 -0
- package/dist/lib/native-capabilities/media.js +104 -0
- package/dist/lib/native-capabilities/midi-access.d.ts +13 -0
- package/dist/lib/native-capabilities/midi-access.d.ts.map +1 -0
- package/dist/lib/native-capabilities/midi-access.js +68 -0
- package/dist/lib/native-capabilities/midi-internal.d.ts +12 -0
- package/dist/lib/native-capabilities/midi-internal.d.ts.map +1 -0
- package/dist/lib/native-capabilities/midi-internal.js +88 -0
- package/dist/lib/native-capabilities/midi-native-fallback.d.ts +27 -0
- package/dist/lib/native-capabilities/midi-native-fallback.d.ts.map +1 -0
- package/dist/lib/native-capabilities/midi-native-fallback.js +127 -0
- package/dist/lib/native-capabilities/midi-ports.d.ts +6 -0
- package/dist/lib/native-capabilities/midi-ports.d.ts.map +1 -0
- package/dist/lib/native-capabilities/midi-ports.js +115 -0
- package/dist/lib/native-capabilities/midi-types.d.ts +25 -0
- package/dist/lib/native-capabilities/midi-types.d.ts.map +1 -0
- package/dist/lib/native-capabilities/midi-types.js +1 -0
- package/dist/lib/native-capabilities/midi.d.ts +6 -0
- package/dist/lib/native-capabilities/midi.d.ts.map +1 -0
- package/dist/lib/native-capabilities/midi.js +3 -0
- package/dist/lib/native-capabilities/native-device-io.d.ts +28 -0
- package/dist/lib/native-capabilities/native-device-io.d.ts.map +1 -0
- package/dist/lib/native-capabilities/native-device-io.js +91 -0
- package/dist/lib/native-capabilities/native-device-lifecycle.d.ts +13 -0
- package/dist/lib/native-capabilities/native-device-lifecycle.d.ts.map +1 -0
- package/dist/lib/native-capabilities/native-device-lifecycle.js +40 -0
- package/dist/lib/native-capabilities/notifications.d.ts +38 -0
- package/dist/lib/native-capabilities/notifications.d.ts.map +1 -0
- package/dist/lib/native-capabilities/notifications.js +50 -0
- package/dist/lib/native-capabilities/power-session.d.ts +113 -0
- package/dist/lib/native-capabilities/power-session.d.ts.map +1 -0
- package/dist/lib/native-capabilities/power-session.js +264 -0
- package/dist/lib/native-capabilities/secure-storage.d.ts +36 -0
- package/dist/lib/native-capabilities/secure-storage.d.ts.map +1 -0
- package/dist/lib/native-capabilities/secure-storage.js +64 -0
- package/dist/lib/native-capabilities/serial-native.d.ts +23 -0
- package/dist/lib/native-capabilities/serial-native.d.ts.map +1 -0
- package/dist/lib/native-capabilities/serial-native.js +181 -0
- package/dist/lib/native-capabilities/serial.d.ts +76 -0
- package/dist/lib/native-capabilities/serial.d.ts.map +1 -0
- package/dist/lib/native-capabilities/serial.js +215 -0
- package/dist/lib/native-capabilities/system-audio.d.ts +127 -0
- package/dist/lib/native-capabilities/system-audio.d.ts.map +1 -0
- package/dist/lib/native-capabilities/system-audio.js +330 -0
- package/dist/lib/native-capabilities/types.d.ts +62 -0
- package/dist/lib/native-capabilities/types.d.ts.map +1 -0
- package/dist/lib/native-capabilities/types.js +27 -0
- package/dist/lib/native-capabilities/usb-native.d.ts +39 -0
- package/dist/lib/native-capabilities/usb-native.d.ts.map +1 -0
- package/dist/lib/native-capabilities/usb-native.js +217 -0
- package/dist/lib/native-capabilities/usb.d.ts +85 -0
- package/dist/lib/native-capabilities/usb.d.ts.map +1 -0
- package/dist/lib/native-capabilities/usb.js +225 -0
- package/dist/lib/theme.d.ts.map +1 -1
- package/dist/lib/theme.js +2 -1
- package/docs/README.md +39 -0
- package/docs/accessibility.md +32 -0
- package/docs/adaptive-materials.md +79 -0
- package/docs/app-anatomy.md +74 -0
- package/docs/component-catalog.md +82 -0
- package/docs/component-guide-template.md +37 -0
- package/docs/design-tokens.md +185 -0
- package/docs/foundations.md +58 -0
- package/docs/native-integration.md +33 -0
- package/docs/standalone-app-windows.md +136 -0
- package/package.json +8 -3
- package/src/components/ui/alert-dialog.md +31 -0
- package/src/components/ui/alert.md +77 -0
- package/src/components/ui/app-frame.md +38 -0
- package/src/components/ui/badge.md +57 -0
- package/src/components/ui/button.md +76 -0
- package/src/components/ui/collapsible.md +52 -0
- package/src/components/ui/color-well.md +11 -0
- package/src/components/ui/combobox.md +42 -0
- package/src/components/ui/command.md +54 -0
- package/src/components/ui/date-field.md +32 -0
- package/src/components/ui/date-picker.md +55 -0
- package/src/components/ui/dialog.md +40 -0
- package/src/components/ui/edge-fade.md +7 -0
- package/src/components/ui/empty.md +87 -0
- package/src/components/ui/field.md +77 -0
- package/src/components/ui/grid.md +109 -0
- package/src/components/ui/icon-button.md +36 -0
- package/src/components/ui/inspector.md +11 -0
- package/src/components/ui/item.md +87 -0
- package/src/components/ui/list.md +140 -0
- package/src/components/ui/material.md +51 -0
- package/src/components/ui/navigation-button-group.md +46 -0
- package/src/components/ui/notification-dot.md +7 -0
- package/src/components/ui/number-input.md +19 -0
- package/src/components/ui/panel.md +11 -0
- package/src/components/ui/popover.md +31 -0
- package/src/components/ui/resizable.md +66 -0
- package/src/components/ui/scroll-area.md +72 -0
- package/src/components/ui/search-field.md +33 -0
- package/src/components/ui/segmented-control.md +36 -0
- package/src/components/ui/sheet.md +30 -0
- package/src/components/ui/sidebar.md +113 -0
- package/src/components/ui/sonner.md +37 -0
- package/src/components/ui/split-view.md +15 -0
- package/src/components/ui/status.md +12 -0
- package/src/components/ui/table.md +37 -0
- package/src/components/ui/tabs.md +66 -0
- package/src/components/ui/text.md +17 -0
- package/src/components/ui/toggle-button.md +48 -0
- package/src/components/ui/toggle-group.md +80 -0
- package/src/components/ui/toggle.md +73 -0
- package/src/components/ui/toolbar.md +26 -0
- package/src/components/ui/tooltip.md +31 -0
- package/src/styles/index.css +704 -3
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { ChevronDown, Image as ImageIcon } from 'lucide-react';
|
|
3
|
+
import { AlertCircle, ChevronDown, Image as ImageIcon, RotateCcw, } from 'lucide-react';
|
|
4
4
|
import { memo, useEffect, useMemo, useState } from 'react';
|
|
5
5
|
import { cn } from '../../lib/utils';
|
|
6
6
|
import { Markdown } from '../markdown';
|
|
7
7
|
import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from '../ui/collapsible';
|
|
8
|
+
import { ChatImageLightbox } from './chat-image-lightbox';
|
|
8
9
|
import { ToolApproval, ToolApprovalHeader, ToolApprovalRejected, } from './tool-approval';
|
|
9
10
|
import { useToolApprovalResponse } from './tool-approval-context';
|
|
10
11
|
import { getToolHandler, } from './tool-handlers';
|
|
@@ -13,6 +14,11 @@ import { AnimatePresence, motion } from 'framer-motion';
|
|
|
13
14
|
const DEFAULT_ACTIONS_LABEL = 'Thinking';
|
|
14
15
|
// OpenRouter sends these for encrypted reasoning msgs
|
|
15
16
|
const stripRedacted = (text) => text.replace(/\[REDACTED\]/g, '').trim();
|
|
17
|
+
export function getChatMessageRenderKey(message, legacyIndex) {
|
|
18
|
+
return typeof message.storeSequence === 'number'
|
|
19
|
+
? `stored-message-${message.storeSequence}`
|
|
20
|
+
: `legacy-message-${message.role}-${message.id}-${legacyIndex}`;
|
|
21
|
+
}
|
|
16
22
|
function emptyActivityCounts() {
|
|
17
23
|
return {
|
|
18
24
|
createdFileCount: 0,
|
|
@@ -335,11 +341,20 @@ function summarizeToolActivity(part, toolHandler, progress, fallbackId) {
|
|
|
335
341
|
break;
|
|
336
342
|
case 'viewImage': {
|
|
337
343
|
incrementActivityCount(counts, 'toolCallCount');
|
|
344
|
+
if (!running && part.output !== undefined) {
|
|
345
|
+
content = toolHandler.renderOutput(part.output, entryId);
|
|
346
|
+
break;
|
|
347
|
+
}
|
|
338
348
|
const imagePath = stringValue(args?.imagePath) ?? stringValue(output?.imagePath);
|
|
339
349
|
const imageLabel = getPathLabel(imagePath);
|
|
340
350
|
content = (_jsxs(_Fragment, { children: [_jsx("span", { children: running ? 'Viewing image' : 'Viewed image' }), imageLabel && (_jsxs(_Fragment, { children: [' ', _jsx(ActivityCode, { title: imagePath, children: imageLabel })] }))] }));
|
|
341
351
|
break;
|
|
342
352
|
}
|
|
353
|
+
case 'remoteActivity':
|
|
354
|
+
incrementActivityCount(counts, 'toolCallCount');
|
|
355
|
+
content =
|
|
356
|
+
stringValue(output?.summary) ?? (running ? 'Using tool' : 'Used tool');
|
|
357
|
+
break;
|
|
343
358
|
case 'listSkillRepos':
|
|
344
359
|
case 'listAvailableSkills':
|
|
345
360
|
case 'syncSkills':
|
|
@@ -371,6 +386,7 @@ function summarizeToolActivity(part, toolHandler, progress, fallbackId) {
|
|
|
371
386
|
content,
|
|
372
387
|
isRunning: running,
|
|
373
388
|
isError: hasError,
|
|
389
|
+
allowOverflow: part.toolName === 'viewImage' && !running && part.output !== undefined,
|
|
374
390
|
},
|
|
375
391
|
counts,
|
|
376
392
|
};
|
|
@@ -418,9 +434,9 @@ function WorkSummary({ messageId, startedAtMs, completedAtMs, isWorking, childre
|
|
|
418
434
|
: durationLabel
|
|
419
435
|
? `Worked for ${durationLabel}`
|
|
420
436
|
: 'Worked';
|
|
421
|
-
return (_jsxs(Collapsible, { open: isOpen, onOpenChange: setIsOpen, className: "w-full", "data-work-summary": messageId, children: [_jsxs("div", { className: "text-muted-foreground/75 text-[13px] leading-5", children: [_jsxs(CollapsibleTrigger, { className: cn('group inline-flex max-w-full cursor-pointer items-center gap-1 rounded-md border border-transparent text-left transition-colors', 'hover:bg-muted/30 hover:text-foreground/80 focus-visible:ring-ring focus-visible:outline-none focus-visible:ring-2'), "aria-label": `${summaryLabel} activity`, children: [_jsx("span", { className: "truncate", children: summaryLabel }), _jsx(ChevronDown, { className: cn('size-3 shrink-0 opacity-40 transition-transform duration-200 group-hover:opacity-70', isOpen ? 'rotate-0' : '-rotate-90') })] }), _jsx("div", { className: "border-border/60 mt-1 w-full border-t" })] }), _jsx(CollapsibleContent, { className: "overflow-hidden", children: _jsx("div", { className: "pt-4", children: children }) })] }));
|
|
437
|
+
return (_jsxs(Collapsible, { open: isOpen, onOpenChange: setIsOpen, className: "w-full", "data-work-summary": messageId, "data-message-scroll-anchor": `work-summary-${messageId}`, children: [_jsxs("div", { className: "text-muted-foreground/75 text-[13px] leading-5", children: [_jsxs(CollapsibleTrigger, { className: cn('group inline-flex max-w-full cursor-pointer items-center gap-1 rounded-md border border-transparent text-left transition-colors', 'hover:bg-muted/30 hover:text-foreground/80 focus-visible:ring-ring focus-visible:outline-none focus-visible:ring-2'), "aria-label": `${summaryLabel} activity`, children: [_jsx("span", { className: "truncate", children: summaryLabel }), _jsx(ChevronDown, { className: cn('size-3 shrink-0 opacity-40 transition-transform duration-200 group-hover:opacity-70', isOpen ? 'rotate-0' : '-rotate-90') })] }), _jsx("div", { className: "border-border/60 mt-1 w-full border-t" })] }), _jsx(CollapsibleContent, { className: "overflow-hidden", children: _jsx("div", { className: "pt-4", children: children }) })] }));
|
|
422
438
|
}
|
|
423
|
-
function PureMessage({ message, isLast = false, isStreaming = false, }) {
|
|
439
|
+
function PureMessage({ message, isLast = false, isStreaming = false, animateEntry = true, onRetryError, }) {
|
|
424
440
|
// Get tool progress for streaming stdout/stderr
|
|
425
441
|
const toolProgress = useToolProgress();
|
|
426
442
|
// Get approval response handler
|
|
@@ -532,7 +548,8 @@ function PureMessage({ message, isLast = false, isStreaming = false, }) {
|
|
|
532
548
|
? toolProgress[part.toolCallId]
|
|
533
549
|
: undefined;
|
|
534
550
|
const shouldRenderImageToolInline = part.toolName === 'take_screenshot' ||
|
|
535
|
-
part.toolName === 'generateImage'
|
|
551
|
+
part.toolName === 'generateImage' ||
|
|
552
|
+
part.toolName === 'showImages';
|
|
536
553
|
if (shouldRenderImageToolInline && isToolLoading(part, progress)) {
|
|
537
554
|
closeActivityGroup();
|
|
538
555
|
items.push({
|
|
@@ -590,13 +607,28 @@ function PureMessage({ message, isLast = false, isStreaming = false, }) {
|
|
|
590
607
|
});
|
|
591
608
|
continue;
|
|
592
609
|
}
|
|
593
|
-
if (part.type === '
|
|
610
|
+
if (part.type === 'error') {
|
|
594
611
|
closeActivityGroup();
|
|
595
612
|
items.push({
|
|
596
|
-
type: '
|
|
613
|
+
type: 'error',
|
|
597
614
|
id: key,
|
|
598
|
-
|
|
615
|
+
errorPart: part,
|
|
599
616
|
});
|
|
617
|
+
continue;
|
|
618
|
+
}
|
|
619
|
+
if (part.type === 'file') {
|
|
620
|
+
closeActivityGroup();
|
|
621
|
+
const previous = items.at(-1);
|
|
622
|
+
if (previous?.type === 'file-group') {
|
|
623
|
+
previous.files.push({ id: key, filePart: part });
|
|
624
|
+
}
|
|
625
|
+
else {
|
|
626
|
+
items.push({
|
|
627
|
+
type: 'file-group',
|
|
628
|
+
id: `${key}-group`,
|
|
629
|
+
files: [{ id: key, filePart: part }],
|
|
630
|
+
});
|
|
631
|
+
}
|
|
600
632
|
}
|
|
601
633
|
}
|
|
602
634
|
// Close any remaining activity group
|
|
@@ -691,24 +723,42 @@ function PureMessage({ message, isLast = false, isStreaming = false, }) {
|
|
|
691
723
|
});
|
|
692
724
|
return next;
|
|
693
725
|
});
|
|
694
|
-
}, className: "mb-1 w-full", "data-ai-reasoning": true, children: [_jsxs(CollapsibleTrigger, { className: cn('group flex max-w-full cursor-pointer items-center gap-1 py-0.5 text-[13px] font-normal leading-5 transition-colors', 'text-muted-foreground/75 hover:text-foreground/80 min-w-0'), children: [_jsx("span", { className: "flex-1 truncate", children: titleForTrigger }), _jsx(ChevronDown, { className: cn('size-3 shrink-0 opacity-0 transition-all duration-200 group-hover:opacity-70', isOpen && 'rotate-180 opacity-50') })] }), _jsx(CollapsibleContent, { className: "text-muted-foreground/75 min-w-0 overflow-hidden pb-1.5 pl-3 pt-0 text-[13px] leading-5", children: _jsx("div", { className: "max-h-
|
|
726
|
+
}, className: "mb-1 w-full", "data-ai-reasoning": true, "data-message-scroll-anchor": item.id, children: [_jsxs(CollapsibleTrigger, { className: cn('group flex max-w-full cursor-pointer items-center gap-1 py-0.5 text-[13px] font-normal leading-5 transition-colors', 'text-muted-foreground/75 hover:text-foreground/80 min-w-0'), children: [_jsx("span", { className: "flex-1 truncate", children: titleForTrigger }), _jsx(ChevronDown, { className: cn('size-3 shrink-0 opacity-0 transition-all duration-200 group-hover:opacity-70', isOpen && 'rotate-180 opacity-50') })] }), _jsx(CollapsibleContent, { className: "text-muted-foreground/75 min-w-0 overflow-hidden pb-1.5 pl-3 pt-0 text-[13px] leading-5", children: _jsx("div", { className: "max-h-72 space-y-0.5 overflow-y-auto pr-2", children: group.entries.map((entry) => (_jsx("div", { className: cn('min-w-0', entry.allowOverflow
|
|
727
|
+
? 'overflow-visible'
|
|
728
|
+
: 'overflow-hidden truncate', entry.isError && 'text-destructive'), children: entry.content }, entry.id))) }) })] }, item.id));
|
|
695
729
|
}
|
|
696
730
|
if (item.type === 'inline-tool') {
|
|
697
|
-
return (_jsx("div", { className: "w-full min-w-0", children: item.content }, item.id));
|
|
731
|
+
return (_jsx("div", { "data-message-scroll-anchor": item.id, className: "w-full min-w-0", children: item.content }, item.id));
|
|
698
732
|
}
|
|
699
|
-
if (item.type === 'file'
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
733
|
+
if (item.type === 'file-group') {
|
|
734
|
+
if (message.role === 'user') {
|
|
735
|
+
return (_jsx("div", { "data-message-scroll-anchor": item.id, className: "flex w-full justify-end overflow-x-auto overflow-y-hidden", children: _jsx("div", { className: "flex max-w-full gap-2", children: item.files.map(({ id, filePart }) => {
|
|
736
|
+
const label = filePart.filename || 'Attached image';
|
|
737
|
+
const src = filePart.previewUrl;
|
|
738
|
+
return (_jsx("div", { className: "size-20 shrink-0", children: src ? (_jsx(ChatImageLightbox, { src: src, alt: label, className: "size-full rounded-2xl border", imageClassName: "size-full object-cover" })) : (_jsx("div", { className: "bg-muted flex size-full items-center justify-center rounded-2xl border", children: _jsx(ImageIcon, { className: "text-muted-foreground size-5" }) })) }, id));
|
|
739
|
+
}) }) }, item.id));
|
|
740
|
+
}
|
|
741
|
+
return (_jsx("div", { "data-message-scroll-anchor": item.id, className: "flex w-full flex-wrap gap-2", children: item.files.map(({ id, filePart }) => {
|
|
742
|
+
const label = filePart.filename || 'Generated image';
|
|
743
|
+
const src = filePart.previewUrl;
|
|
744
|
+
return (_jsx("div", { className: cn('w-fit max-w-full', filePart.presentation === 'thumbnail' && 'size-20'), children: src ? (_jsx(ChatImageLightbox, { src: src, alt: label, className: cn('bg-muted rounded-2xl border', filePart.presentation === 'thumbnail'
|
|
745
|
+
? 'size-full'
|
|
746
|
+
: 'max-h-[70vh] max-w-full'), imageClassName: filePart.presentation === 'thumbnail'
|
|
747
|
+
? 'size-full object-cover'
|
|
748
|
+
: 'max-h-[70vh] max-w-full object-contain' })) : (_jsx("div", { className: "flex aspect-square w-40 items-center justify-center", children: _jsx(ImageIcon, { className: "text-muted-foreground size-6" }) })) }, id));
|
|
749
|
+
}) }, item.id));
|
|
703
750
|
}
|
|
704
751
|
if (item.type === 'text' && item.textPart) {
|
|
705
752
|
if (message.role === 'user') {
|
|
706
|
-
return (_jsx("div", { className: "flex w-full justify-end", children: _jsx("div", { className: "bg-foreground/5 text-foreground max-w-[77%] break-words rounded-2xl px-3 py-2 text-[13px] leading-5", children: _jsx("div", { className: "whitespace-pre-wrap break-words", children: item.textPart.text }) }) }, item.id));
|
|
753
|
+
return (_jsx("div", { "data-message-scroll-anchor": item.id, className: "flex w-full justify-end", children: _jsx("div", { className: "bg-foreground/5 text-foreground max-w-[77%] break-words rounded-2xl px-3 py-2 text-[13px] leading-5", children: _jsx("div", { className: "whitespace-pre-wrap break-words", children: item.textPart.text }) }) }, item.id));
|
|
707
754
|
}
|
|
708
|
-
return (_jsx("div", { className: cn('flex min-w-0 flex-col gap-4', {
|
|
755
|
+
return (_jsx("div", { "data-message-scroll-anchor": item.id, className: cn('flex min-w-0 flex-col gap-4', {
|
|
709
756
|
'w-full': message.role === 'assistant',
|
|
710
757
|
}), children: _jsx(Markdown, { markdown: item.textPart.text, proseSize: "sm", className: cn('[&_.prose]:text-[13px] [&_.prose]:leading-[21px] [&_.prose]:text-current', '[&_.prose_pre]:bg-background/80 [&_.prose_code]:text-current', '[&_.prose_p:last-child]:mb-0 [&_.prose_p]:mb-2', '[&_.prose_ol:first-child]:mt-0 [&_.prose_ul:first-child]:mt-0', '[&_.prose>*:last-child]:mb-0') }) }, item.id));
|
|
711
758
|
}
|
|
759
|
+
if (item.type === 'error') {
|
|
760
|
+
return (_jsxs("div", { className: "border-destructive/30 bg-destructive/10 text-destructive flex items-start gap-2 rounded-lg border p-3 text-sm", children: [_jsx(AlertCircle, { className: "mt-0.5 size-4 shrink-0" }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "break-words", children: item.errorPart.text }), onRetryError && (_jsxs("button", { type: "button", onClick: onRetryError, className: "border-destructive/30 hover:bg-destructive/10 mt-2 inline-flex h-7 cursor-pointer items-center gap-1.5 rounded-md border px-2.5 text-xs font-medium transition-colors", children: [_jsx(RotateCcw, { className: "size-3.5" }), "Retry"] }))] })] }, item.id));
|
|
761
|
+
}
|
|
712
762
|
return null;
|
|
713
763
|
};
|
|
714
764
|
const finalTextItemIndex = message.role === 'assistant'
|
|
@@ -727,7 +777,7 @@ function PureMessage({ message, isLast = false, isStreaming = false, }) {
|
|
|
727
777
|
isStreaming &&
|
|
728
778
|
message.role === 'assistant' &&
|
|
729
779
|
!message.turn?.completedAtMs;
|
|
730
|
-
return (_jsx(AnimatePresence, { children: _jsx(motion.div, { "data-testid": `message-${message.role}`, className: "group/message w-full min-w-0 px-2", initial: { y: 5, opacity: 0 }, animate: { y: 0, opacity: 1 }, "data-role": message.role, children: _jsx("div", { className: "flex w-full min-w-0 items-start gap-4", children: _jsxs("div", { className: "mt-1 flex w-full min-w-0 flex-col gap-2", children: [shouldCollapsePreAnswerWork && (_jsx(WorkSummary, { messageId: message.id, startedAtMs: message.turn?.startedAtMs, completedAtMs: message.turn?.completedAtMs, isWorking: isTurnStillWorking, children: _jsx("div", { className: "flex min-w-0 flex-col gap-2", children: preAnswerWorkItems.map(renderContentItem) }) })), finalAnswerItems.map(renderContentItem)] }) }) }) }));
|
|
780
|
+
return (_jsx(AnimatePresence, { children: _jsx(motion.div, { "data-testid": `message-${message.role}`, "data-entry-animation": animateEntry ? 'true' : 'false', className: "group/message w-full min-w-0 px-2", initial: animateEntry ? { y: 5, opacity: 0 } : false, animate: { y: 0, opacity: 1 }, "data-role": message.role, children: _jsx("div", { className: "flex w-full min-w-0 items-start gap-4", children: _jsxs("div", { className: "mt-1 flex w-full min-w-0 flex-col gap-2", children: [shouldCollapsePreAnswerWork && (_jsx(WorkSummary, { messageId: message.id, startedAtMs: message.turn?.startedAtMs, completedAtMs: message.turn?.completedAtMs, isWorking: isTurnStillWorking, children: _jsx("div", { className: "flex min-w-0 flex-col gap-2", children: preAnswerWorkItems.map(renderContentItem) }) })), finalAnswerItems.map(renderContentItem)] }) }) }) }));
|
|
731
781
|
}
|
|
732
782
|
export const Message = memo(PureMessage);
|
|
733
783
|
export function ThinkingMessage() {
|
|
@@ -17,6 +17,7 @@ interface MessagesProps {
|
|
|
17
17
|
restoringMessageId?: string | null;
|
|
18
18
|
/** Callback when restore is requested for a message */
|
|
19
19
|
onRestoreCheckpoint?: (messageId: string) => void;
|
|
20
|
+
onResolveMessageContent?: (message: ChatMessage) => void | Promise<unknown>;
|
|
20
21
|
isCompacting?: boolean;
|
|
21
22
|
}
|
|
22
23
|
export declare function computeIsThinking(messages: ChatMessage[], status: ChatStatus): boolean;
|
|
@@ -27,10 +28,12 @@ interface MessageRowProps {
|
|
|
27
28
|
checkpoint?: MessageCheckpoint;
|
|
28
29
|
restoringMessageId?: string | null;
|
|
29
30
|
onRestoreCheckpoint?: (messageId: string) => void;
|
|
31
|
+
onResolveMessageContent?: (message: ChatMessage) => void | Promise<unknown>;
|
|
32
|
+
onRetryError?: () => void;
|
|
30
33
|
}
|
|
31
|
-
declare function PureMessageRow({ message, isLast, isStreaming, checkpoint, restoringMessageId, onRestoreCheckpoint, }: MessageRowProps): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
declare function PureMessageRow({ message, isLast, isStreaming, checkpoint, restoringMessageId, onRestoreCheckpoint, onResolveMessageContent, onRetryError, }: MessageRowProps): import("react/jsx-runtime").JSX.Element;
|
|
32
35
|
export declare const MessageRow: import("react").MemoExoticComponent<typeof PureMessageRow>;
|
|
33
|
-
declare function PureMessages({ messages, status, checkpoints, restoringMessageId, onRestoreCheckpoint, isCompacting, }: MessagesProps): import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
declare function PureMessages({ messages, status, checkpoints, restoringMessageId, onRestoreCheckpoint, onResolveMessageContent, isCompacting, }: MessagesProps): import("react/jsx-runtime").JSX.Element;
|
|
34
37
|
export declare const Messages: import("react").MemoExoticComponent<typeof PureMessages>;
|
|
35
38
|
export {};
|
|
36
39
|
//# sourceMappingURL=chat-messages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-messages.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-messages.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"chat-messages.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-messages.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAKjB,MAAM,gBAAgB,CAAA;AAGvB,KAAK,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO,CAAA;AAE/D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,MAAM,EAAE,UAAU,CAAA;IAClB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IAC5C,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,uBAAuB,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,UAAU,WAwB5E;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,WAAW,CAAA;IACpB,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,iBAAiB,CAAA;IAC9B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,uBAAuB,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3E,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CAC1B;AAED,iBAAS,cAAc,CAAC,EACtB,OAAO,EACP,MAAM,EACN,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,GACb,EAAE,eAAe,2CAuGjB;AAED,eAAO,MAAM,UAAU,4DAAuB,CAAA;AAE9C,iBAAS,YAAY,CAAC,EACpB,QAAQ,EACR,MAAM,EACN,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,YAAoB,GACrB,EAAE,aAAa,2CA2Bf;AAED,eAAO,MAAM,QAAQ,0DAAqB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { memo } from 'react';
|
|
3
|
-
import { CompactingMessage, Message, ThinkingMessage, } from './chat-message';
|
|
2
|
+
import { memo, useCallback, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { CompactingMessage, Message, ThinkingMessage, getChatMessageRenderKey, } from './chat-message';
|
|
4
4
|
import { CheckpointBadge } from './checkpoint-badge';
|
|
5
5
|
export function computeIsThinking(messages, status) {
|
|
6
6
|
const lastMessage = messages[messages.length - 1];
|
|
@@ -24,18 +24,73 @@ export function computeIsThinking(messages, status) {
|
|
|
24
24
|
}
|
|
25
25
|
return false;
|
|
26
26
|
}
|
|
27
|
-
function PureMessageRow({ message, isLast, isStreaming, checkpoint, restoringMessageId, onRestoreCheckpoint, }) {
|
|
27
|
+
function PureMessageRow({ message, isLast, isStreaming, checkpoint, restoringMessageId, onRestoreCheckpoint, onResolveMessageContent, onRetryError, }) {
|
|
28
|
+
const omittedContentRef = message.contentRef?.omitted
|
|
29
|
+
? message.contentRef
|
|
30
|
+
: null;
|
|
31
|
+
const containerRef = useRef(null);
|
|
32
|
+
const isResolvingRef = useRef(false);
|
|
33
|
+
const [isResolving, setIsResolving] = useState(false);
|
|
34
|
+
const [resolveFailed, setResolveFailed] = useState(false);
|
|
35
|
+
const resolveContent = useCallback(async () => {
|
|
36
|
+
if (!omittedContentRef ||
|
|
37
|
+
!onResolveMessageContent ||
|
|
38
|
+
isResolvingRef.current) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
isResolvingRef.current = true;
|
|
42
|
+
setIsResolving(true);
|
|
43
|
+
setResolveFailed(false);
|
|
44
|
+
try {
|
|
45
|
+
await onResolveMessageContent(message);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
isResolvingRef.current = false;
|
|
49
|
+
setIsResolving(false);
|
|
50
|
+
setResolveFailed(true);
|
|
51
|
+
}
|
|
52
|
+
}, [message, omittedContentRef, onResolveMessageContent]);
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
const element = containerRef.current;
|
|
55
|
+
if (!element ||
|
|
56
|
+
!omittedContentRef ||
|
|
57
|
+
!onResolveMessageContent ||
|
|
58
|
+
typeof IntersectionObserver === 'undefined') {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const observer = new IntersectionObserver((entries) => {
|
|
62
|
+
if (entries.some((entry) => entry.isIntersecting)) {
|
|
63
|
+
observer.disconnect();
|
|
64
|
+
void resolveContent();
|
|
65
|
+
}
|
|
66
|
+
}, { rootMargin: '160px' });
|
|
67
|
+
observer.observe(element);
|
|
68
|
+
return () => observer.disconnect();
|
|
69
|
+
}, [omittedContentRef, onResolveMessageContent, resolveContent]);
|
|
28
70
|
// Only show checkpoint badge on user messages that have checkpoints
|
|
29
71
|
const showCheckpointBadge = checkpoint && message.role === 'user' && onRestoreCheckpoint;
|
|
30
|
-
return (_jsxs("div", { className: "group/message-row relative", children: [
|
|
72
|
+
return (_jsxs("div", { ref: containerRef, className: "group/message-row relative", children: [omittedContentRef ? (_jsx("div", { className: message.role === 'user'
|
|
73
|
+
? 'flex justify-end px-2'
|
|
74
|
+
: 'flex justify-start px-2', children: _jsx("button", { type: "button", onClick: () => void resolveContent(), disabled: isResolving || !onResolveMessageContent, className: "border-border bg-muted/40 text-muted-foreground hover:bg-muted/70 flex cursor-pointer items-center gap-2 rounded-xl border px-3 py-2 text-xs disabled:cursor-default", children: isResolving
|
|
75
|
+
? 'Loading full message…'
|
|
76
|
+
: resolveFailed
|
|
77
|
+
? 'Retry loading full message'
|
|
78
|
+
: `Load full message (${formatContentBytes(omittedContentRef.serializedBytes)})` }) })) : (_jsx(Message, { message: message, isLast: isLast, isStreaming: isStreaming, animateEntry: typeof message.storeSequence !== 'number', onRetryError: onRetryError })), showCheckpointBadge && (_jsx("div", { className: "absolute bottom-1 right-4 opacity-0 transition-opacity group-hover/message-row:opacity-100", children: _jsx(CheckpointBadge, { messageId: message.id, fileCount: checkpoint.fileCount, totalBytes: checkpoint.totalBytes, isRestoring: restoringMessageId === message.id, onRestore: () => onRestoreCheckpoint(message.id) }) }))] }));
|
|
31
79
|
}
|
|
32
80
|
export const MessageRow = memo(PureMessageRow);
|
|
33
|
-
function PureMessages({ messages, status, checkpoints, restoringMessageId, onRestoreCheckpoint, isCompacting = false, }) {
|
|
81
|
+
function PureMessages({ messages, status, checkpoints, restoringMessageId, onRestoreCheckpoint, onResolveMessageContent, isCompacting = false, }) {
|
|
34
82
|
const isThinking = computeIsThinking(messages, status);
|
|
35
83
|
const isStreaming = status === 'streaming' || status === 'submitted';
|
|
36
84
|
return (_jsxs(_Fragment, { children: [messages.map((message, index) => {
|
|
37
85
|
const checkpoint = checkpoints?.get(message.id);
|
|
38
|
-
return (_jsx(MessageRow, { message: message, isLast: index === messages.length - 1, isStreaming: isStreaming, checkpoint: checkpoint, restoringMessageId: restoringMessageId, onRestoreCheckpoint: onRestoreCheckpoint }, message
|
|
86
|
+
return (_jsx(MessageRow, { message: message, isLast: index === messages.length - 1, isStreaming: isStreaming, checkpoint: checkpoint, restoringMessageId: restoringMessageId, onRestoreCheckpoint: onRestoreCheckpoint, onResolveMessageContent: onResolveMessageContent }, getChatMessageRenderKey(message, index)));
|
|
39
87
|
}), isThinking && !isCompacting && _jsx(ThinkingMessage, {}), isCompacting && _jsx(CompactingMessage, {})] }));
|
|
40
88
|
}
|
|
41
89
|
export const Messages = memo(PureMessages);
|
|
90
|
+
function formatContentBytes(bytes) {
|
|
91
|
+
if (bytes < 1024)
|
|
92
|
+
return `${bytes} B`;
|
|
93
|
+
if (bytes < 1024 * 1024)
|
|
94
|
+
return `${Math.ceil(bytes / 1024)} KB`;
|
|
95
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
96
|
+
}
|
|
@@ -2,7 +2,7 @@ import { type ChangeEvent, type FormEvent, type ReactNode } from 'react';
|
|
|
2
2
|
import { type ChatImageAttachment, type ChatSlashCommandOption, type ChatSubmitMode } from './chat-input';
|
|
3
3
|
import { type ChatMessage } from './chat-message';
|
|
4
4
|
import { type MessageCheckpoint } from './chat-messages';
|
|
5
|
-
import { type ConversationMeta } from './conversation-history';
|
|
5
|
+
import { type ConversationGroup, type ConversationMeta } from './conversation-history';
|
|
6
6
|
import { type ModelEffortPresetOption, type ModelProviderOption } from './model-effort-selector';
|
|
7
7
|
import { type ApprovalResponseHandler } from './tool-approval-context';
|
|
8
8
|
type ChatStatus = 'ready' | 'submitted' | 'streaming' | 'error';
|
|
@@ -12,6 +12,10 @@ type ChatAuthIssueInput = {
|
|
|
12
12
|
authIssue?: ChatAuthIssue | null;
|
|
13
13
|
error?: Error | null;
|
|
14
14
|
};
|
|
15
|
+
export declare function getChatAuthPromptCopy(issue: ChatAuthIssue): {
|
|
16
|
+
label: string;
|
|
17
|
+
action: string;
|
|
18
|
+
};
|
|
15
19
|
export declare function resolveChatAuthIssue({ missingApiKey, authIssue, error, }: ChatAuthIssueInput): ChatAuthIssue | null;
|
|
16
20
|
/**
|
|
17
21
|
* Progress data for a running tool (command execution with streaming stdout/stderr)
|
|
@@ -36,6 +40,17 @@ export interface ChatContextUsage {
|
|
|
36
40
|
isEstimate?: boolean;
|
|
37
41
|
compactsAutomatically?: boolean;
|
|
38
42
|
}
|
|
43
|
+
export interface ChatPlanUsageWindow {
|
|
44
|
+
label: string;
|
|
45
|
+
usedPercent: number;
|
|
46
|
+
resetAt?: number | null;
|
|
47
|
+
}
|
|
48
|
+
export interface ChatPlanUsage {
|
|
49
|
+
accountLabel?: string | null;
|
|
50
|
+
planLabel?: string | null;
|
|
51
|
+
windows: ChatPlanUsageWindow[];
|
|
52
|
+
}
|
|
53
|
+
export declare function hasPersistedChatError(messages: ChatMessage[]): boolean;
|
|
39
54
|
export interface ChatPanelProps {
|
|
40
55
|
/** Chat messages */
|
|
41
56
|
messages: ChatMessage[];
|
|
@@ -67,12 +82,30 @@ export interface ChatPanelProps {
|
|
|
67
82
|
conversations?: ConversationMeta[];
|
|
68
83
|
/** Current conversation ID */
|
|
69
84
|
currentConversationId?: string | null;
|
|
85
|
+
/** App scope currently visible in the desktop. */
|
|
86
|
+
currentAppId?: string | null;
|
|
87
|
+
/** Whether another bounded metadata page is available. */
|
|
88
|
+
hasMoreConversations?: boolean;
|
|
89
|
+
/** Whether the next metadata page is currently loading. */
|
|
90
|
+
isLoadingMoreConversations?: boolean;
|
|
91
|
+
/** Loads one more bounded metadata page on explicit viewport demand. */
|
|
92
|
+
onLoadMoreConversations?: () => void | Promise<unknown>;
|
|
93
|
+
/** Resolves one visible oversized message from its opaque content hash. */
|
|
94
|
+
onResolveMessageContent?: (message: ChatMessage) => void | Promise<unknown>;
|
|
70
95
|
/** Incremented when a conversation is explicitly loaded from history */
|
|
71
96
|
scrollToBottomSignal?: number;
|
|
97
|
+
/** Whether the current bounded display window has older persisted rows. */
|
|
98
|
+
hasOlderMessages?: boolean;
|
|
99
|
+
/** Whether an older display page is currently loading. */
|
|
100
|
+
isLoadingOlderMessages?: boolean;
|
|
101
|
+
/** Loads and prepends one older bounded display page. */
|
|
102
|
+
onLoadOlderMessages?: () => Promise<'prepended' | 'reset' | 'unchanged'>;
|
|
72
103
|
/** Handle conversation selection */
|
|
73
104
|
onSelectConversation?: (id: string) => void;
|
|
74
|
-
/** Handle conversation
|
|
75
|
-
|
|
105
|
+
/** Handle conversation archiving */
|
|
106
|
+
onArchiveConversation?: (id: string) => void;
|
|
107
|
+
/** Handle archiving every conversation in one app scope. */
|
|
108
|
+
onArchiveConversationGroup?: (group: ConversationGroup) => void;
|
|
76
109
|
/** Placeholder text */
|
|
77
110
|
placeholder?: string;
|
|
78
111
|
/** Welcome message when no messages exist */
|
|
@@ -81,6 +114,10 @@ export interface ChatPanelProps {
|
|
|
81
114
|
isExpanded: boolean;
|
|
82
115
|
/** Toggle expanded state */
|
|
83
116
|
onExpandedChange: (expanded: boolean) => void;
|
|
117
|
+
/** Whether chat is taking over the full desktop workspace. */
|
|
118
|
+
isFullScreen?: boolean;
|
|
119
|
+
/** Toggle the full-screen chat workspace. */
|
|
120
|
+
onFullScreenChange?: (fullScreen: boolean) => void;
|
|
84
121
|
/** Whether the panel is minimized (hidden below fold) */
|
|
85
122
|
isMinimized?: boolean;
|
|
86
123
|
/** Toggle minimized state */
|
|
@@ -89,12 +126,16 @@ export interface ChatPanelProps {
|
|
|
89
126
|
className?: string;
|
|
90
127
|
/** Error from chat request */
|
|
91
128
|
error?: Error | null;
|
|
129
|
+
/** Retry a failed turn by sending a new continuation turn. */
|
|
130
|
+
onRetryError?: () => void;
|
|
92
131
|
/** Whether API keys are missing */
|
|
93
132
|
missingApiKey?: boolean;
|
|
94
133
|
/** More specific auth issue to show in the setup prompt */
|
|
95
134
|
authIssue?: ChatAuthIssue | null;
|
|
96
|
-
/**
|
|
97
|
-
|
|
135
|
+
/** Start the default ChatGPT connection flow */
|
|
136
|
+
onConnectChatGPT?: () => void | Promise<void>;
|
|
137
|
+
/** Open advanced AI provider and API key setup */
|
|
138
|
+
onAdvancedSetup?: () => void;
|
|
98
139
|
/** Progress data for running tools (streaming stdout/stderr) */
|
|
99
140
|
toolProgress?: Record<string, ToolProgressData>;
|
|
100
141
|
/** Callback for tool approval responses */
|
|
@@ -139,10 +180,12 @@ export interface ChatPanelProps {
|
|
|
139
180
|
compactedHistoryStartIndex?: number | null;
|
|
140
181
|
/** Estimated chat context usage for the selected model */
|
|
141
182
|
contextUsage?: ChatContextUsage;
|
|
183
|
+
/** Provider plan limits for the active account */
|
|
184
|
+
planUsage?: ChatPlanUsage;
|
|
142
185
|
}
|
|
143
186
|
/**
|
|
144
187
|
* Floating chat panel with model selector
|
|
145
188
|
*/
|
|
146
|
-
export declare function ChatPanel({ messages, status, isTurnInFlight, input, onInputChange, onSubmit, onStop, onNewChat, modelProviders, modelEffortPresets, selectedModel, selectedReasoningEffort, onModelEffortChange, conversations, currentConversationId, scrollToBottomSignal, onSelectConversation,
|
|
189
|
+
export declare function ChatPanel({ messages, status, isTurnInFlight, input, onInputChange, onSubmit, onStop, onNewChat, modelProviders, modelEffortPresets, selectedModel, selectedReasoningEffort, onModelEffortChange, conversations, currentConversationId, currentAppId, hasMoreConversations, isLoadingMoreConversations, onLoadMoreConversations, onResolveMessageContent, scrollToBottomSignal, hasOlderMessages, isLoadingOlderMessages, onLoadOlderMessages, onSelectConversation, onArchiveConversation, onArchiveConversationGroup, placeholder, welcomeMessage, isExpanded, onExpandedChange, isFullScreen, onFullScreenChange, isMinimized, onMinimizedChange, className, error, onRetryError, missingApiKey, authIssue, onConnectChatGPT, onAdvancedSetup, toolProgress, onApprovalResponse, isEditingApp, onEditingAppChange, showEditingAppToggle, checkpoints, restoringMessageId, onRestoreCheckpoint, imageAttachments, onRemoveImageAttachment, isImageDropActive, queuedMessages, onRemoveQueuedMessage, onRetryQueuedMessage, onSteerQueuedMessage, onReorderQueuedMessages, onEditQueuedMessage, slashCommands, onSlashCommandSelect, isCompacting, compactedHistoryStartIndex, contextUsage, planUsage, }: ChatPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
147
190
|
export {};
|
|
148
191
|
//# sourceMappingURL=chat-panel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-panel.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-panel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat-panel.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-panel.tsx"],"names":[],"mappings":"AAkBA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,SAAS,EAEd,KAAK,SAAS,EAOf,MAAM,OAAO,CAAA;AAqBd,OAAO,EACL,KAAK,mBAAmB,EAExB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACpB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,KAAK,WAAW,EAIjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,KAAK,iBAAiB,EAGvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,gBAAgB,EAEtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,KAAK,uBAAuB,EAE5B,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,yBAAyB,CAAA;AAoBhC,KAAK,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,qBAAqB,CAAA;AAErE,KAAK,kBAAkB,GAAG;IACxB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAChC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;CACrB,CAAA;AAyCD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa;WAZ/C,MAAM;YAAU,MAAM;EAchC;AA0DD,wBAAgB,oBAAoB,CAAC,EACnC,aAAa,EACb,SAAS,EACT,KAAK,GACN,EAAE,kBAAkB,GAAG,aAAa,GAAG,IAAI,CAe3C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,SAAS,GAAG,UAAU,CAAA;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAA;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,mBAAmB,EAAE,CAAA;CAC/B;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAGtE;AA+ND,MAAM,WAAW,cAAc;IAC7B,oBAAoB;IACpB,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,0BAA0B;IAC1B,MAAM,EAAE,UAAU,CAAA;IAClB,kFAAkF;IAClF,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,0BAA0B;IAC1B,aAAa,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAA;IAC5D,yBAAyB;IACzB,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,EAAE,cAAc,KAAK,IAAI,CAAA;IACzE,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,2EAA2E;IAC3E,cAAc,EAAE,mBAAmB,EAAE,CAAA;IACrC,qDAAqD;IACrD,kBAAkB,EAAE,uBAAuB,EAAE,CAAA;IAC7C,wBAAwB;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,gCAAgC;IAChC,uBAAuB,EAAE,MAAM,CAAA;IAC/B,uDAAuD;IACvD,mBAAmB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,2BAA2B;IAC3B,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAClC,8BAA8B;IAC9B,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,2DAA2D;IAC3D,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC,wEAAwE;IACxE,uBAAuB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACvD,2EAA2E;IAC3E,uBAAuB,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3E,wEAAwE;IACxE,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,0DAA0D;IAC1D,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,yDAAyD;IACzD,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,OAAO,GAAG,WAAW,CAAC,CAAA;IACxE,oCAAoC;IACpC,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,oCAAoC;IACpC,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,4DAA4D;IAC5D,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;IAC/D,uBAAuB;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,oCAAoC;IACpC,UAAU,EAAE,OAAO,CAAA;IACnB,4BAA4B;IAC5B,gBAAgB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IAC7C,8DAA8D;IAC9D,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,6CAA6C;IAC7C,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;IAClD,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,6BAA6B;IAC7B,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;IAChD,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;IACpB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,mCAAmC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAChC,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7C,kDAAkD;IAClD,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC/C,2CAA2C;IAC3C,kBAAkB,CAAC,EAAE,uBAAuB,CAAA;IAC5C,2FAA2F;IAC3F,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,gFAAgF;IAChF,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,2CAA2C;IAC3C,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;IAC5C,0CAA0C;IAC1C,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,kDAAkD;IAClD,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACxC,wCAAwC;IACxC,uBAAuB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,2EAA2E;IAC3E,cAAc,CAAC,EAAE,iBAAiB,EAAE,CAAA;IACpC,gDAAgD;IAChD,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,gCAAgC;IAChC,uBAAuB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACpE,8CAA8C;IAC9C,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,gDAAgD;IAChD,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAA;IACxC,6CAA6C;IAC7C,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAA;IAChE,qDAAqD;IACrD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,0EAA0E;IAC1E,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1C,0DAA0D;IAC1D,YAAY,CAAC,EAAE,gBAAgB,CAAA;IAC/B,kDAAkD;IAClD,SAAS,CAAC,EAAE,aAAa,CAAA;CAC1B;AA+RD;;GAEG;AACH,wBAAgB,SAAS,CAAC,EACxB,QAAQ,EACR,MAAM,EACN,cAAc,EACd,KAAK,EACL,aAAa,EACb,QAAQ,EACR,MAAM,EACN,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,oBAA4B,EAC5B,0BAAkC,EAClC,uBAAuB,EACvB,uBAAuB,EACvB,oBAAwB,EACxB,gBAAwB,EACxB,sBAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,WAA+B,EAC/B,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,YAAoB,EACpB,kBAAkB,EAClB,WAAmB,EACnB,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,YAAY,EACZ,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,YAAiB,EACjB,kBAAkB,EAClB,YAAmB,EACnB,kBAAkB,EAClB,oBAA4B,EAC5B,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,gBAAqB,EACrB,uBAAuB,EACvB,iBAAyB,EACzB,cAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,YAAoB,EACpB,0BAA0B,EAC1B,YAAY,EACZ,SAAS,GACV,EAAE,cAAc,2CAqzBhB"}
|