@crafter/rn-ai-elements 0.0.1
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/lib/commonjs/chatbot/AIImage.js +126 -0
- package/lib/commonjs/chatbot/AIImage.js.map +1 -0
- package/lib/commonjs/chatbot/Attachments.js +317 -0
- package/lib/commonjs/chatbot/Attachments.js.map +1 -0
- package/lib/commonjs/chatbot/ChatErrorBoundary.js +201 -0
- package/lib/commonjs/chatbot/ChatErrorBoundary.js.map +1 -0
- package/lib/commonjs/chatbot/ChatMessageItem.js +169 -0
- package/lib/commonjs/chatbot/ChatMessageItem.js.map +1 -0
- package/lib/commonjs/chatbot/Conversation.js +415 -0
- package/lib/commonjs/chatbot/Conversation.js.map +1 -0
- package/lib/commonjs/chatbot/ConversationScrollButton.js +131 -0
- package/lib/commonjs/chatbot/ConversationScrollButton.js.map +1 -0
- package/lib/commonjs/chatbot/Message.js +203 -0
- package/lib/commonjs/chatbot/Message.js.map +1 -0
- package/lib/commonjs/chatbot/PromptInput.js +352 -0
- package/lib/commonjs/chatbot/PromptInput.js.map +1 -0
- package/lib/commonjs/chatbot/Reasoning.js +184 -0
- package/lib/commonjs/chatbot/Reasoning.js.map +1 -0
- package/lib/commonjs/chatbot/Shimmer.js +116 -0
- package/lib/commonjs/chatbot/Shimmer.js.map +1 -0
- package/lib/commonjs/chatbot/Sources.js +212 -0
- package/lib/commonjs/chatbot/Sources.js.map +1 -0
- package/lib/commonjs/chatbot/Suggestion.js +99 -0
- package/lib/commonjs/chatbot/Suggestion.js.map +1 -0
- package/lib/commonjs/chatbot/Tool.js +307 -0
- package/lib/commonjs/chatbot/Tool.js.map +1 -0
- package/lib/commonjs/chatbot/adapters/uiMessageAdapter.js +141 -0
- package/lib/commonjs/chatbot/adapters/uiMessageAdapter.js.map +1 -0
- package/lib/commonjs/chatbot/index.js +140 -0
- package/lib/commonjs/chatbot/index.js.map +1 -0
- package/lib/commonjs/chatbot/types.js +6 -0
- package/lib/commonjs/chatbot/types.js.map +1 -0
- package/lib/commonjs/hooks/index.js +34 -0
- package/lib/commonjs/hooks/index.js.map +1 -0
- package/lib/commonjs/hooks/useAutoScroll.js +39 -0
- package/lib/commonjs/hooks/useAutoScroll.js.map +1 -0
- package/lib/commonjs/hooks/useClipboard.js +44 -0
- package/lib/commonjs/hooks/useClipboard.js.map +1 -0
- package/lib/commonjs/hooks/useCollapsible.js +35 -0
- package/lib/commonjs/hooks/useCollapsible.js.map +1 -0
- package/lib/commonjs/hooks/useStickToBottom.js +68 -0
- package/lib/commonjs/hooks/useStickToBottom.js.map +1 -0
- package/lib/commonjs/index.js +257 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/primitives/Badge.js +119 -0
- package/lib/commonjs/primitives/Badge.js.map +1 -0
- package/lib/commonjs/primitives/Button.js +185 -0
- package/lib/commonjs/primitives/Button.js.map +1 -0
- package/lib/commonjs/primitives/Card.js +166 -0
- package/lib/commonjs/primitives/Card.js.map +1 -0
- package/lib/commonjs/primitives/Collapsible.js +137 -0
- package/lib/commonjs/primitives/Collapsible.js.map +1 -0
- package/lib/commonjs/primitives/ScrollArea.js +40 -0
- package/lib/commonjs/primitives/ScrollArea.js.map +1 -0
- package/lib/commonjs/primitives/index.js +83 -0
- package/lib/commonjs/primitives/index.js.map +1 -0
- package/lib/commonjs/streaming/StreamingMarkdown.js +252 -0
- package/lib/commonjs/streaming/StreamingMarkdown.js.map +1 -0
- package/lib/commonjs/streaming/index.js +13 -0
- package/lib/commonjs/streaming/index.js.map +1 -0
- package/lib/commonjs/streaming/parser.js +482 -0
- package/lib/commonjs/streaming/parser.js.map +1 -0
- package/lib/commonjs/streaming/renderers/BlockquoteRenderer.js +35 -0
- package/lib/commonjs/streaming/renderers/BlockquoteRenderer.js.map +1 -0
- package/lib/commonjs/streaming/renderers/CodeRenderer.js +128 -0
- package/lib/commonjs/streaming/renderers/CodeRenderer.js.map +1 -0
- package/lib/commonjs/streaming/renderers/HeadingRenderer.js +61 -0
- package/lib/commonjs/streaming/renderers/HeadingRenderer.js.map +1 -0
- package/lib/commonjs/streaming/renderers/ImageRenderer.js +53 -0
- package/lib/commonjs/streaming/renderers/ImageRenderer.js.map +1 -0
- package/lib/commonjs/streaming/renderers/LinkRenderer.js +49 -0
- package/lib/commonjs/streaming/renderers/LinkRenderer.js.map +1 -0
- package/lib/commonjs/streaming/renderers/ListRenderer.js +63 -0
- package/lib/commonjs/streaming/renderers/ListRenderer.js.map +1 -0
- package/lib/commonjs/streaming/renderers/TableRenderer.js +77 -0
- package/lib/commonjs/streaming/renderers/TableRenderer.js.map +1 -0
- package/lib/commonjs/streaming/renderers/TextRenderer.js +41 -0
- package/lib/commonjs/streaming/renderers/TextRenderer.js.map +1 -0
- package/lib/commonjs/streaming/renderers/index.js +76 -0
- package/lib/commonjs/streaming/renderers/index.js.map +1 -0
- package/lib/commonjs/streaming/renderers/renderInlineChildren.js +112 -0
- package/lib/commonjs/streaming/renderers/renderInlineChildren.js.map +1 -0
- package/lib/commonjs/streaming/renderers/renderNode.js +81 -0
- package/lib/commonjs/streaming/renderers/renderNode.js.map +1 -0
- package/lib/commonjs/theme/ThemeProvider.js +68 -0
- package/lib/commonjs/theme/ThemeProvider.js.map +1 -0
- package/lib/commonjs/theme/defaultTheme.js +96 -0
- package/lib/commonjs/theme/defaultTheme.js.map +1 -0
- package/lib/commonjs/theme/index.js +32 -0
- package/lib/commonjs/theme/index.js.map +1 -0
- package/lib/commonjs/theme/tokens.js +2 -0
- package/lib/commonjs/theme/tokens.js.map +1 -0
- package/lib/commonjs/types.d.js +2 -0
- package/lib/commonjs/types.d.js.map +1 -0
- package/lib/commonjs/voice/index.js +13 -0
- package/lib/commonjs/voice/index.js.map +1 -0
- package/lib/commonjs/voice/useSpeechRecognition.js +172 -0
- package/lib/commonjs/voice/useSpeechRecognition.js.map +1 -0
- package/lib/module/chatbot/AIImage.js +121 -0
- package/lib/module/chatbot/AIImage.js.map +1 -0
- package/lib/module/chatbot/Attachments.js +312 -0
- package/lib/module/chatbot/Attachments.js.map +1 -0
- package/lib/module/chatbot/ChatErrorBoundary.js +196 -0
- package/lib/module/chatbot/ChatErrorBoundary.js.map +1 -0
- package/lib/module/chatbot/ChatMessageItem.js +164 -0
- package/lib/module/chatbot/ChatMessageItem.js.map +1 -0
- package/lib/module/chatbot/Conversation.js +412 -0
- package/lib/module/chatbot/Conversation.js.map +1 -0
- package/lib/module/chatbot/ConversationScrollButton.js +126 -0
- package/lib/module/chatbot/ConversationScrollButton.js.map +1 -0
- package/lib/module/chatbot/Message.js +198 -0
- package/lib/module/chatbot/Message.js.map +1 -0
- package/lib/module/chatbot/PromptInput.js +347 -0
- package/lib/module/chatbot/PromptInput.js.map +1 -0
- package/lib/module/chatbot/Reasoning.js +179 -0
- package/lib/module/chatbot/Reasoning.js.map +1 -0
- package/lib/module/chatbot/Shimmer.js +111 -0
- package/lib/module/chatbot/Shimmer.js.map +1 -0
- package/lib/module/chatbot/Sources.js +207 -0
- package/lib/module/chatbot/Sources.js.map +1 -0
- package/lib/module/chatbot/Suggestion.js +94 -0
- package/lib/module/chatbot/Suggestion.js.map +1 -0
- package/lib/module/chatbot/Tool.js +303 -0
- package/lib/module/chatbot/Tool.js.map +1 -0
- package/lib/module/chatbot/adapters/uiMessageAdapter.js +137 -0
- package/lib/module/chatbot/adapters/uiMessageAdapter.js.map +1 -0
- package/lib/module/chatbot/index.js +39 -0
- package/lib/module/chatbot/index.js.map +1 -0
- package/lib/module/chatbot/types.js +4 -0
- package/lib/module/chatbot/types.js.map +1 -0
- package/lib/module/hooks/index.js +7 -0
- package/lib/module/hooks/index.js.map +1 -0
- package/lib/module/hooks/useAutoScroll.js +35 -0
- package/lib/module/hooks/useAutoScroll.js.map +1 -0
- package/lib/module/hooks/useClipboard.js +40 -0
- package/lib/module/hooks/useClipboard.js.map +1 -0
- package/lib/module/hooks/useCollapsible.js +31 -0
- package/lib/module/hooks/useCollapsible.js.map +1 -0
- package/lib/module/hooks/useStickToBottom.js +64 -0
- package/lib/module/hooks/useStickToBottom.js.map +1 -0
- package/lib/module/index.js +19 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/primitives/Badge.js +114 -0
- package/lib/module/primitives/Badge.js.map +1 -0
- package/lib/module/primitives/Button.js +180 -0
- package/lib/module/primitives/Button.js.map +1 -0
- package/lib/module/primitives/Card.js +156 -0
- package/lib/module/primitives/Card.js.map +1 -0
- package/lib/module/primitives/Collapsible.js +130 -0
- package/lib/module/primitives/Collapsible.js.map +1 -0
- package/lib/module/primitives/ScrollArea.js +35 -0
- package/lib/module/primitives/ScrollArea.js.map +1 -0
- package/lib/module/primitives/index.js +8 -0
- package/lib/module/primitives/index.js.map +1 -0
- package/lib/module/streaming/StreamingMarkdown.js +246 -0
- package/lib/module/streaming/StreamingMarkdown.js.map +1 -0
- package/lib/module/streaming/index.js +4 -0
- package/lib/module/streaming/index.js.map +1 -0
- package/lib/module/streaming/parser.js +477 -0
- package/lib/module/streaming/parser.js.map +1 -0
- package/lib/module/streaming/renderers/BlockquoteRenderer.js +30 -0
- package/lib/module/streaming/renderers/BlockquoteRenderer.js.map +1 -0
- package/lib/module/streaming/renderers/CodeRenderer.js +123 -0
- package/lib/module/streaming/renderers/CodeRenderer.js.map +1 -0
- package/lib/module/streaming/renderers/HeadingRenderer.js +56 -0
- package/lib/module/streaming/renderers/HeadingRenderer.js.map +1 -0
- package/lib/module/streaming/renderers/ImageRenderer.js +48 -0
- package/lib/module/streaming/renderers/ImageRenderer.js.map +1 -0
- package/lib/module/streaming/renderers/LinkRenderer.js +44 -0
- package/lib/module/streaming/renderers/LinkRenderer.js.map +1 -0
- package/lib/module/streaming/renderers/ListRenderer.js +58 -0
- package/lib/module/streaming/renderers/ListRenderer.js.map +1 -0
- package/lib/module/streaming/renderers/TableRenderer.js +72 -0
- package/lib/module/streaming/renderers/TableRenderer.js.map +1 -0
- package/lib/module/streaming/renderers/TextRenderer.js +36 -0
- package/lib/module/streaming/renderers/TextRenderer.js.map +1 -0
- package/lib/module/streaming/renderers/index.js +13 -0
- package/lib/module/streaming/renderers/index.js.map +1 -0
- package/lib/module/streaming/renderers/renderInlineChildren.js +107 -0
- package/lib/module/streaming/renderers/renderInlineChildren.js.map +1 -0
- package/lib/module/streaming/renderers/renderNode.js +78 -0
- package/lib/module/streaming/renderers/renderNode.js.map +1 -0
- package/lib/module/theme/ThemeProvider.js +62 -0
- package/lib/module/theme/ThemeProvider.js.map +1 -0
- package/lib/module/theme/defaultTheme.js +92 -0
- package/lib/module/theme/defaultTheme.js.map +1 -0
- package/lib/module/theme/index.js +5 -0
- package/lib/module/theme/index.js.map +1 -0
- package/lib/module/theme/tokens.js +2 -0
- package/lib/module/theme/tokens.js.map +1 -0
- package/lib/module/types.d.js +2 -0
- package/lib/module/types.d.js.map +1 -0
- package/lib/module/voice/index.js +14 -0
- package/lib/module/voice/index.js.map +1 -0
- package/lib/module/voice/useSpeechRecognition.js +169 -0
- package/lib/module/voice/useSpeechRecognition.js.map +1 -0
- package/lib/typescript/src/chatbot/AIImage.d.ts +24 -0
- package/lib/typescript/src/chatbot/AIImage.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/Attachments.d.ts +20 -0
- package/lib/typescript/src/chatbot/Attachments.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/ChatErrorBoundary.d.ts +57 -0
- package/lib/typescript/src/chatbot/ChatErrorBoundary.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/ChatMessageItem.d.ts +45 -0
- package/lib/typescript/src/chatbot/ChatMessageItem.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/Conversation.d.ts +94 -0
- package/lib/typescript/src/chatbot/Conversation.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/ConversationScrollButton.d.ts +62 -0
- package/lib/typescript/src/chatbot/ConversationScrollButton.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/Message.d.ts +39 -0
- package/lib/typescript/src/chatbot/Message.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/PromptInput.d.ts +93 -0
- package/lib/typescript/src/chatbot/PromptInput.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/Reasoning.d.ts +14 -0
- package/lib/typescript/src/chatbot/Reasoning.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/Shimmer.d.ts +13 -0
- package/lib/typescript/src/chatbot/Shimmer.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/Sources.d.ts +17 -0
- package/lib/typescript/src/chatbot/Sources.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/Suggestion.d.ts +15 -0
- package/lib/typescript/src/chatbot/Suggestion.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/Tool.d.ts +30 -0
- package/lib/typescript/src/chatbot/Tool.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/adapters/uiMessageAdapter.d.ts +24 -0
- package/lib/typescript/src/chatbot/adapters/uiMessageAdapter.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/index.d.ts +29 -0
- package/lib/typescript/src/chatbot/index.d.ts.map +1 -0
- package/lib/typescript/src/chatbot/types.d.ts +49 -0
- package/lib/typescript/src/chatbot/types.d.ts.map +1 -0
- package/lib/typescript/src/hooks/index.d.ts +9 -0
- package/lib/typescript/src/hooks/index.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useAutoScroll.d.ts +23 -0
- package/lib/typescript/src/hooks/useAutoScroll.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useClipboard.d.ts +22 -0
- package/lib/typescript/src/hooks/useClipboard.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useCollapsible.d.ts +28 -0
- package/lib/typescript/src/hooks/useCollapsible.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useStickToBottom.d.ts +39 -0
- package/lib/typescript/src/hooks/useStickToBottom.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +11 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/primitives/Badge.d.ts +10 -0
- package/lib/typescript/src/primitives/Badge.d.ts.map +1 -0
- package/lib/typescript/src/primitives/Button.d.ts +16 -0
- package/lib/typescript/src/primitives/Button.d.ts.map +1 -0
- package/lib/typescript/src/primitives/Card.d.ts +33 -0
- package/lib/typescript/src/primitives/Card.d.ts.map +1 -0
- package/lib/typescript/src/primitives/Collapsible.d.ts +20 -0
- package/lib/typescript/src/primitives/Collapsible.d.ts.map +1 -0
- package/lib/typescript/src/primitives/ScrollArea.d.ts +10 -0
- package/lib/typescript/src/primitives/ScrollArea.d.ts.map +1 -0
- package/lib/typescript/src/primitives/index.d.ts +11 -0
- package/lib/typescript/src/primitives/index.d.ts.map +1 -0
- package/lib/typescript/src/streaming/StreamingMarkdown.d.ts +47 -0
- package/lib/typescript/src/streaming/StreamingMarkdown.d.ts.map +1 -0
- package/lib/typescript/src/streaming/index.d.ts +3 -0
- package/lib/typescript/src/streaming/index.d.ts.map +1 -0
- package/lib/typescript/src/streaming/parser.d.ts +41 -0
- package/lib/typescript/src/streaming/parser.d.ts.map +1 -0
- package/lib/typescript/src/streaming/renderers/BlockquoteRenderer.d.ts +7 -0
- package/lib/typescript/src/streaming/renderers/BlockquoteRenderer.d.ts.map +1 -0
- package/lib/typescript/src/streaming/renderers/CodeRenderer.d.ts +7 -0
- package/lib/typescript/src/streaming/renderers/CodeRenderer.d.ts.map +1 -0
- package/lib/typescript/src/streaming/renderers/HeadingRenderer.d.ts +7 -0
- package/lib/typescript/src/streaming/renderers/HeadingRenderer.d.ts.map +1 -0
- package/lib/typescript/src/streaming/renderers/ImageRenderer.d.ts +7 -0
- package/lib/typescript/src/streaming/renderers/ImageRenderer.d.ts.map +1 -0
- package/lib/typescript/src/streaming/renderers/LinkRenderer.d.ts +7 -0
- package/lib/typescript/src/streaming/renderers/LinkRenderer.d.ts.map +1 -0
- package/lib/typescript/src/streaming/renderers/ListRenderer.d.ts +7 -0
- package/lib/typescript/src/streaming/renderers/ListRenderer.d.ts.map +1 -0
- package/lib/typescript/src/streaming/renderers/TableRenderer.d.ts +7 -0
- package/lib/typescript/src/streaming/renderers/TableRenderer.d.ts.map +1 -0
- package/lib/typescript/src/streaming/renderers/TextRenderer.d.ts +7 -0
- package/lib/typescript/src/streaming/renderers/TextRenderer.d.ts.map +1 -0
- package/lib/typescript/src/streaming/renderers/index.d.ts +19 -0
- package/lib/typescript/src/streaming/renderers/index.d.ts.map +1 -0
- package/lib/typescript/src/streaming/renderers/renderInlineChildren.d.ts +12 -0
- package/lib/typescript/src/streaming/renderers/renderInlineChildren.d.ts.map +1 -0
- package/lib/typescript/src/streaming/renderers/renderNode.d.ts +8 -0
- package/lib/typescript/src/streaming/renderers/renderNode.d.ts.map +1 -0
- package/lib/typescript/src/theme/ThemeProvider.d.ts +14 -0
- package/lib/typescript/src/theme/ThemeProvider.d.ts.map +1 -0
- package/lib/typescript/src/theme/defaultTheme.d.ts +4 -0
- package/lib/typescript/src/theme/defaultTheme.d.ts.map +1 -0
- package/lib/typescript/src/theme/index.d.ts +5 -0
- package/lib/typescript/src/theme/index.d.ts.map +1 -0
- package/lib/typescript/src/theme/tokens.d.ts +66 -0
- package/lib/typescript/src/theme/tokens.d.ts.map +1 -0
- package/lib/typescript/src/voice/index.d.ts +3 -0
- package/lib/typescript/src/voice/index.d.ts.map +1 -0
- package/lib/typescript/src/voice/useSpeechRecognition.d.ts +77 -0
- package/lib/typescript/src/voice/useSpeechRecognition.d.ts.map +1 -0
- package/package.json +132 -0
- package/src/chatbot/AIImage.tsx +166 -0
- package/src/chatbot/Attachments.tsx +382 -0
- package/src/chatbot/ChatErrorBoundary.tsx +230 -0
- package/src/chatbot/ChatMessageItem.tsx +195 -0
- package/src/chatbot/Conversation.tsx +537 -0
- package/src/chatbot/ConversationScrollButton.tsx +149 -0
- package/src/chatbot/Message.tsx +266 -0
- package/src/chatbot/PromptInput.tsx +532 -0
- package/src/chatbot/Reasoning.tsx +198 -0
- package/src/chatbot/Shimmer.tsx +146 -0
- package/src/chatbot/Sources.tsx +263 -0
- package/src/chatbot/Suggestion.tsx +123 -0
- package/src/chatbot/Tool.tsx +340 -0
- package/src/chatbot/adapters/uiMessageAdapter.ts +177 -0
- package/src/chatbot/index.ts +97 -0
- package/src/chatbot/types.ts +66 -0
- package/src/hooks/index.ts +17 -0
- package/src/hooks/useAutoScroll.ts +43 -0
- package/src/hooks/useClipboard.ts +46 -0
- package/src/hooks/useCollapsible.ts +42 -0
- package/src/hooks/useStickToBottom.ts +82 -0
- package/src/index.ts +139 -0
- package/src/primitives/Badge.tsx +119 -0
- package/src/primitives/Button.tsx +213 -0
- package/src/primitives/Card.tsx +221 -0
- package/src/primitives/Collapsible.tsx +168 -0
- package/src/primitives/ScrollArea.tsx +53 -0
- package/src/primitives/index.ts +36 -0
- package/src/streaming/StreamingMarkdown.tsx +282 -0
- package/src/streaming/index.ts +2 -0
- package/src/streaming/parser.ts +506 -0
- package/src/streaming/renderers/BlockquoteRenderer.tsx +42 -0
- package/src/streaming/renderers/CodeRenderer.tsx +158 -0
- package/src/streaming/renderers/HeadingRenderer.tsx +64 -0
- package/src/streaming/renderers/ImageRenderer.tsx +62 -0
- package/src/streaming/renderers/LinkRenderer.tsx +53 -0
- package/src/streaming/renderers/ListRenderer.tsx +65 -0
- package/src/streaming/renderers/TableRenderer.tsx +103 -0
- package/src/streaming/renderers/TextRenderer.tsx +39 -0
- package/src/streaming/renderers/index.ts +26 -0
- package/src/streaming/renderers/renderInlineChildren.tsx +115 -0
- package/src/streaming/renderers/renderNode.tsx +72 -0
- package/src/theme/ThemeProvider.tsx +77 -0
- package/src/theme/defaultTheme.ts +93 -0
- package/src/theme/index.ts +4 -0
- package/src/theme/tokens.ts +69 -0
- package/src/types.d.ts +71 -0
- package/src/voice/index.ts +15 -0
- package/src/voice/useSpeechRecognition.ts +230 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.renderNode = renderNode;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _theme = require("../../theme");
|
|
10
|
+
var _TextRenderer = require("./TextRenderer");
|
|
11
|
+
var _HeadingRenderer = require("./HeadingRenderer");
|
|
12
|
+
var _CodeRenderer = require("./CodeRenderer");
|
|
13
|
+
var _ListRenderer = require("./ListRenderer");
|
|
14
|
+
var _LinkRenderer = require("./LinkRenderer");
|
|
15
|
+
var _ImageRenderer = require("./ImageRenderer");
|
|
16
|
+
var _BlockquoteRenderer = require("./BlockquoteRenderer");
|
|
17
|
+
var _TableRenderer = require("./TableRenderer");
|
|
18
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
|
+
/** Themed horizontal rule. */const HorizontalRule = /*#__PURE__*/_react.default.memo(function HorizontalRule() {
|
|
21
|
+
const theme = (0, _theme.useAIElementsTheme)();
|
|
22
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
23
|
+
style: [hrStyles.rule, {
|
|
24
|
+
backgroundColor: theme.colors.border
|
|
25
|
+
}]
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
const hrStyles = _reactNative.StyleSheet.create({
|
|
29
|
+
rule: {
|
|
30
|
+
height: 1,
|
|
31
|
+
marginVertical: 16
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Map a single MarkdownNode to its corresponding React Native renderer.
|
|
37
|
+
* Used by both StreamingMarkdown and BlockquoteRenderer (for nested blocks).
|
|
38
|
+
*/
|
|
39
|
+
function renderNode(node, key) {
|
|
40
|
+
switch (node.type) {
|
|
41
|
+
case 'paragraph':
|
|
42
|
+
case 'text':
|
|
43
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextRenderer.TextRenderer, {
|
|
44
|
+
node: node
|
|
45
|
+
}, key);
|
|
46
|
+
case 'heading':
|
|
47
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_HeadingRenderer.HeadingRenderer, {
|
|
48
|
+
node: node
|
|
49
|
+
}, key);
|
|
50
|
+
case 'code_inline':
|
|
51
|
+
case 'code_block':
|
|
52
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_CodeRenderer.CodeRenderer, {
|
|
53
|
+
node: node
|
|
54
|
+
}, key);
|
|
55
|
+
case 'list':
|
|
56
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ListRenderer.ListRenderer, {
|
|
57
|
+
node: node
|
|
58
|
+
}, key);
|
|
59
|
+
case 'link':
|
|
60
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_LinkRenderer.LinkRenderer, {
|
|
61
|
+
node: node
|
|
62
|
+
}, key);
|
|
63
|
+
case 'image':
|
|
64
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ImageRenderer.ImageRenderer, {
|
|
65
|
+
node: node
|
|
66
|
+
}, key);
|
|
67
|
+
case 'blockquote':
|
|
68
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_BlockquoteRenderer.BlockquoteRenderer, {
|
|
69
|
+
node: node
|
|
70
|
+
}, key);
|
|
71
|
+
case 'horizontal_rule':
|
|
72
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(HorizontalRule, {}, key);
|
|
73
|
+
case 'table':
|
|
74
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TableRenderer.TableRenderer, {
|
|
75
|
+
node: node
|
|
76
|
+
}, key);
|
|
77
|
+
default:
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=renderNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_theme","_TextRenderer","_HeadingRenderer","_CodeRenderer","_ListRenderer","_LinkRenderer","_ImageRenderer","_BlockquoteRenderer","_TableRenderer","_jsxRuntime","e","__esModule","default","HorizontalRule","React","memo","theme","useAIElementsTheme","jsx","View","style","hrStyles","rule","backgroundColor","colors","border","StyleSheet","create","height","marginVertical","renderNode","node","key","type","TextRenderer","HeadingRenderer","CodeRenderer","ListRenderer","LinkRenderer","ImageRenderer","BlockquoteRenderer","TableRenderer"],"sourceRoot":"../../../../src","sources":["streaming/renderers/renderNode.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAEA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,gBAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;AACA,IAAAO,aAAA,GAAAP,OAAA;AACA,IAAAQ,cAAA,GAAAR,OAAA;AACA,IAAAS,mBAAA,GAAAT,OAAA;AACA,IAAAU,cAAA,GAAAV,OAAA;AAAgD,IAAAW,WAAA,GAAAX,OAAA;AAAA,SAAAD,uBAAAa,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhD,8BACA,MAAMG,cAAc,gBAAGC,cAAK,CAACC,IAAI,CAAC,SAASF,cAAcA,CAAA,EAAG;EAC1D,MAAMG,KAAK,GAAG,IAAAC,yBAAkB,EAAC,CAAC;EAClC,oBACE,IAAAR,WAAA,CAAAS,GAAA,EAACnB,YAAA,CAAAoB,IAAI;IACHC,KAAK,EAAE,CACLC,QAAQ,CAACC,IAAI,EACb;MAAEC,eAAe,EAAEP,KAAK,CAACQ,MAAM,CAACC;IAAO,CAAC;EACxC,CACH,CAAC;AAEN,CAAC,CAAC;AAEF,MAAMJ,QAAQ,GAAGK,uBAAU,CAACC,MAAM,CAAC;EACjCL,IAAI,EAAE;IACJM,MAAM,EAAE,CAAC;IACTC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACO,SAASC,UAAUA,CAACC,IAAkB,EAAEC,GAAW,EAAa;EACrE,QAAQD,IAAI,CAACE,IAAI;IACf,KAAK,WAAW;IAChB,KAAK,MAAM;MACT,oBAAO,IAAAxB,WAAA,CAAAS,GAAA,EAACjB,aAAA,CAAAiC,YAAY;QAAWH,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAE/C,KAAK,SAAS;MACZ,oBAAO,IAAAvB,WAAA,CAAAS,GAAA,EAAChB,gBAAA,CAAAiC,eAAe;QAAWJ,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAElD,KAAK,aAAa;IAClB,KAAK,YAAY;MACf,oBAAO,IAAAvB,WAAA,CAAAS,GAAA,EAACf,aAAA,CAAAiC,YAAY;QAAWL,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAE/C,KAAK,MAAM;MACT,oBAAO,IAAAvB,WAAA,CAAAS,GAAA,EAACd,aAAA,CAAAiC,YAAY;QAAWN,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAE/C,KAAK,MAAM;MACT,oBAAO,IAAAvB,WAAA,CAAAS,GAAA,EAACb,aAAA,CAAAiC,YAAY;QAAWP,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAE/C,KAAK,OAAO;MACV,oBAAO,IAAAvB,WAAA,CAAAS,GAAA,EAACZ,cAAA,CAAAiC,aAAa;QAAWR,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAEhD,KAAK,YAAY;MACf,oBAAO,IAAAvB,WAAA,CAAAS,GAAA,EAACX,mBAAA,CAAAiC,kBAAkB;QAAWT,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAErD,KAAK,iBAAiB;MACpB,oBAAO,IAAAvB,WAAA,CAAAS,GAAA,EAACL,cAAc,MAAMmB,GAAM,CAAC;IAErC,KAAK,OAAO;MACV,oBAAO,IAAAvB,WAAA,CAAAS,GAAA,EAACV,cAAA,CAAAiC,aAAa;QAAWV,IAAI,EAAEA;MAAK,GAAhBC,GAAkB,CAAC;IAEhD;MACE,OAAO,IAAI;EACf;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AIElementsProvider = AIElementsProvider;
|
|
7
|
+
exports.useAIElementsTheme = useAIElementsTheme;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _reactNative = require("react-native");
|
|
10
|
+
var _defaultTheme = require("./defaultTheme");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
13
|
+
const ThemeContext = /*#__PURE__*/(0, _react.createContext)(_defaultTheme.lightTheme);
|
|
14
|
+
function mergeTheme(base, overrides) {
|
|
15
|
+
if (!overrides) return base;
|
|
16
|
+
return {
|
|
17
|
+
...base,
|
|
18
|
+
...overrides,
|
|
19
|
+
colors: {
|
|
20
|
+
...base.colors,
|
|
21
|
+
...overrides.colors
|
|
22
|
+
},
|
|
23
|
+
spacing: {
|
|
24
|
+
...base.spacing,
|
|
25
|
+
...overrides.spacing
|
|
26
|
+
},
|
|
27
|
+
radius: {
|
|
28
|
+
...base.radius,
|
|
29
|
+
...overrides.radius
|
|
30
|
+
},
|
|
31
|
+
typography: {
|
|
32
|
+
...base.typography,
|
|
33
|
+
...overrides.typography,
|
|
34
|
+
fontSize: {
|
|
35
|
+
...base.typography.fontSize,
|
|
36
|
+
...overrides.typography?.fontSize
|
|
37
|
+
},
|
|
38
|
+
lineHeight: {
|
|
39
|
+
...base.typography.lineHeight,
|
|
40
|
+
...overrides.typography?.lineHeight
|
|
41
|
+
},
|
|
42
|
+
fontWeight: {
|
|
43
|
+
...base.typography.fontWeight,
|
|
44
|
+
...overrides.typography?.fontWeight
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function AIElementsProvider({
|
|
50
|
+
theme: themeOverrides,
|
|
51
|
+
mode = 'system',
|
|
52
|
+
children
|
|
53
|
+
}) {
|
|
54
|
+
const systemScheme = (0, _reactNative.useColorScheme)();
|
|
55
|
+
const resolvedTheme = (0, _react.useMemo)(() => {
|
|
56
|
+
const isDark = mode === 'system' ? systemScheme === 'dark' : mode === 'dark';
|
|
57
|
+
const base = isDark ? _defaultTheme.darkTheme : _defaultTheme.lightTheme;
|
|
58
|
+
return mergeTheme(base, themeOverrides);
|
|
59
|
+
}, [mode, systemScheme, themeOverrides]);
|
|
60
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(ThemeContext.Provider, {
|
|
61
|
+
value: resolvedTheme,
|
|
62
|
+
children: children
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function useAIElementsTheme() {
|
|
66
|
+
return (0, _react.useContext)(ThemeContext);
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=ThemeProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_defaultTheme","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ThemeContext","createContext","lightTheme","mergeTheme","base","overrides","colors","spacing","radius","typography","fontSize","lineHeight","fontWeight","AIElementsProvider","theme","themeOverrides","mode","children","systemScheme","useColorScheme","resolvedTheme","useMemo","isDark","darkTheme","jsx","Provider","value","useAIElementsTheme","useContext"],"sourceRoot":"../../../src","sources":["theme/ThemeProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.lightTheme = exports.darkTheme = void 0;
|
|
7
|
+
const sharedTokens = {
|
|
8
|
+
spacing: {
|
|
9
|
+
xs: 4,
|
|
10
|
+
sm: 8,
|
|
11
|
+
md: 12,
|
|
12
|
+
lg: 16,
|
|
13
|
+
xl: 24,
|
|
14
|
+
'2xl': 32
|
|
15
|
+
},
|
|
16
|
+
radius: {
|
|
17
|
+
sm: 6,
|
|
18
|
+
md: 10,
|
|
19
|
+
lg: 16,
|
|
20
|
+
full: 9999
|
|
21
|
+
},
|
|
22
|
+
typography: {
|
|
23
|
+
fontFamily: 'System',
|
|
24
|
+
monoFontFamily: 'monospace',
|
|
25
|
+
fontSize: {
|
|
26
|
+
xs: 11,
|
|
27
|
+
sm: 13,
|
|
28
|
+
md: 15,
|
|
29
|
+
lg: 17,
|
|
30
|
+
xl: 20,
|
|
31
|
+
'2xl': 24
|
|
32
|
+
},
|
|
33
|
+
lineHeight: {
|
|
34
|
+
tight: 1.25,
|
|
35
|
+
normal: 1.5,
|
|
36
|
+
relaxed: 1.75
|
|
37
|
+
},
|
|
38
|
+
fontWeight: {
|
|
39
|
+
normal: '400',
|
|
40
|
+
medium: '500',
|
|
41
|
+
semibold: '600',
|
|
42
|
+
bold: '700'
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
const lightTheme = exports.lightTheme = {
|
|
47
|
+
...sharedTokens,
|
|
48
|
+
dark: false,
|
|
49
|
+
colors: {
|
|
50
|
+
primary: '#18181B',
|
|
51
|
+
primaryForeground: '#FAFAFA',
|
|
52
|
+
secondary: '#F4F4F5',
|
|
53
|
+
secondaryForeground: '#18181B',
|
|
54
|
+
background: '#FFFFFF',
|
|
55
|
+
foreground: '#09090B',
|
|
56
|
+
muted: '#F4F4F5',
|
|
57
|
+
mutedForeground: '#71717A',
|
|
58
|
+
card: '#FFFFFF',
|
|
59
|
+
cardForeground: '#09090B',
|
|
60
|
+
border: '#E4E4E7',
|
|
61
|
+
destructive: '#EF4444',
|
|
62
|
+
destructiveForeground: '#FAFAFA',
|
|
63
|
+
success: '#22C55E',
|
|
64
|
+
successForeground: '#FAFAFA',
|
|
65
|
+
warning: '#F59E0B',
|
|
66
|
+
warningForeground: '#18181B',
|
|
67
|
+
accent: '#F4F4F5',
|
|
68
|
+
accentForeground: '#18181B'
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
const darkTheme = exports.darkTheme = {
|
|
72
|
+
...sharedTokens,
|
|
73
|
+
dark: true,
|
|
74
|
+
colors: {
|
|
75
|
+
primary: '#FAFAFA',
|
|
76
|
+
primaryForeground: '#18181B',
|
|
77
|
+
secondary: '#27272A',
|
|
78
|
+
secondaryForeground: '#FAFAFA',
|
|
79
|
+
background: '#09090B',
|
|
80
|
+
foreground: '#FAFAFA',
|
|
81
|
+
muted: '#27272A',
|
|
82
|
+
mutedForeground: '#A1A1AA',
|
|
83
|
+
card: '#09090B',
|
|
84
|
+
cardForeground: '#FAFAFA',
|
|
85
|
+
border: '#27272A',
|
|
86
|
+
destructive: '#DC2626',
|
|
87
|
+
destructiveForeground: '#FAFAFA',
|
|
88
|
+
success: '#16A34A',
|
|
89
|
+
successForeground: '#FAFAFA',
|
|
90
|
+
warning: '#D97706',
|
|
91
|
+
warningForeground: '#FAFAFA',
|
|
92
|
+
accent: '#27272A',
|
|
93
|
+
accentForeground: '#FAFAFA'
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=defaultTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["sharedTokens","spacing","xs","sm","md","lg","xl","radius","full","typography","fontFamily","monoFontFamily","fontSize","lineHeight","tight","normal","relaxed","fontWeight","medium","semibold","bold","lightTheme","exports","dark","colors","primary","primaryForeground","secondary","secondaryForeground","background","foreground","muted","mutedForeground","card","cardForeground","border","destructive","destructiveForeground","success","successForeground","warning","warningForeground","accent","accentForeground","darkTheme"],"sourceRoot":"../../../src","sources":["theme/defaultTheme.ts"],"mappings":";;;;;;AAEA,MAAMA,YAAwE,GAAG;EAC/EC,OAAO,EAAE;IACPC,EAAE,EAAE,CAAC;IACLC,EAAE,EAAE,CAAC;IACLC,EAAE,EAAE,EAAE;IACNC,EAAE,EAAE,EAAE;IACNC,EAAE,EAAE,EAAE;IACN,KAAK,EAAE;EACT,CAAC;EACDC,MAAM,EAAE;IACNJ,EAAE,EAAE,CAAC;IACLC,EAAE,EAAE,EAAE;IACNC,EAAE,EAAE,EAAE;IACNG,IAAI,EAAE;EACR,CAAC;EACDC,UAAU,EAAE;IACVC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,WAAW;IAC3BC,QAAQ,EAAE;MACRV,EAAE,EAAE,EAAE;MACNC,EAAE,EAAE,EAAE;MACNC,EAAE,EAAE,EAAE;MACNC,EAAE,EAAE,EAAE;MACNC,EAAE,EAAE,EAAE;MACN,KAAK,EAAE;IACT,CAAC;IACDO,UAAU,EAAE;MACVC,KAAK,EAAE,IAAI;MACXC,MAAM,EAAE,GAAG;MACXC,OAAO,EAAE;IACX,CAAC;IACDC,UAAU,EAAE;MACVF,MAAM,EAAE,KAAK;MACbG,MAAM,EAAE,KAAK;MACbC,QAAQ,EAAE,KAAK;MACfC,IAAI,EAAE;IACR;EACF;AACF,CAAC;AAEM,MAAMC,UAA2B,GAAAC,OAAA,CAAAD,UAAA,GAAG;EACzC,GAAGrB,YAAY;EACfuB,IAAI,EAAE,KAAK;EACXC,MAAM,EAAE;IACNC,OAAO,EAAE,SAAS;IAClBC,iBAAiB,EAAE,SAAS;IAC5BC,SAAS,EAAE,SAAS;IACpBC,mBAAmB,EAAE,SAAS;IAC9BC,UAAU,EAAE,SAAS;IACrBC,UAAU,EAAE,SAAS;IACrBC,KAAK,EAAE,SAAS;IAChBC,eAAe,EAAE,SAAS;IAC1BC,IAAI,EAAE,SAAS;IACfC,cAAc,EAAE,SAAS;IACzBC,MAAM,EAAE,SAAS;IACjBC,WAAW,EAAE,SAAS;IACtBC,qBAAqB,EAAE,SAAS;IAChCC,OAAO,EAAE,SAAS;IAClBC,iBAAiB,EAAE,SAAS;IAC5BC,OAAO,EAAE,SAAS;IAClBC,iBAAiB,EAAE,SAAS;IAC5BC,MAAM,EAAE,SAAS;IACjBC,gBAAgB,EAAE;EACpB;AACF,CAAC;AAEM,MAAMC,SAA0B,GAAAtB,OAAA,CAAAsB,SAAA,GAAG;EACxC,GAAG5C,YAAY;EACfuB,IAAI,EAAE,IAAI;EACVC,MAAM,EAAE;IACNC,OAAO,EAAE,SAAS;IAClBC,iBAAiB,EAAE,SAAS;IAC5BC,SAAS,EAAE,SAAS;IACpBC,mBAAmB,EAAE,SAAS;IAC9BC,UAAU,EAAE,SAAS;IACrBC,UAAU,EAAE,SAAS;IACrBC,KAAK,EAAE,SAAS;IAChBC,eAAe,EAAE,SAAS;IAC1BC,IAAI,EAAE,SAAS;IACfC,cAAc,EAAE,SAAS;IACzBC,MAAM,EAAE,SAAS;IACjBC,WAAW,EAAE,SAAS;IACtBC,qBAAqB,EAAE,SAAS;IAChCC,OAAO,EAAE,SAAS;IAClBC,iBAAiB,EAAE,SAAS;IAC5BC,OAAO,EAAE,SAAS;IAClBC,iBAAiB,EAAE,SAAS;IAC5BC,MAAM,EAAE,SAAS;IACjBC,gBAAgB,EAAE;EACpB;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "AIElementsProvider", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _ThemeProvider.AIElementsProvider;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "darkTheme", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _defaultTheme.darkTheme;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "lightTheme", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _defaultTheme.lightTheme;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "useAIElementsTheme", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _ThemeProvider.useAIElementsTheme;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
var _ThemeProvider = require("./ThemeProvider");
|
|
31
|
+
var _defaultTheme = require("./defaultTheme");
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_ThemeProvider","require","_defaultTheme"],"sourceRoot":"../../../src","sources":["theme/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAGA,IAAAC,aAAA,GAAAD,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["theme/tokens.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["types.d.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useSpeechRecognition", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _useSpeechRecognition.useSpeechRecognition;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _useSpeechRecognition = require("./useSpeechRecognition");
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_useSpeechRecognition","require"],"sourceRoot":"../../../src","sources":["voice/index.ts"],"mappings":";;;;;;;;;;;AAUA,IAAAA,qBAAA,GAAAC,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useSpeechRecognition = useSpeechRecognition;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _expoSpeechRecognition = require("expo-speech-recognition");
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// useSpeechRecognition — React wrapper around ExpoSpeechRecognitionModule
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
//
|
|
13
|
+
// Wraps the imperative `ExpoSpeechRecognitionModule.start / stop / abort`
|
|
14
|
+
// API with React state so a component can just read `isListening` +
|
|
15
|
+
// `transcript` and call `start()` / `stop()` / `toggle()`. Handles:
|
|
16
|
+
//
|
|
17
|
+
// - Permission request + gating (asks once, then uses the cached result)
|
|
18
|
+
// - Transcript accumulation across interim and final results
|
|
19
|
+
// - Automatic cleanup if the component unmounts mid-recognition
|
|
20
|
+
// - Error surfacing as a discriminated `error` state
|
|
21
|
+
//
|
|
22
|
+
// **Peer dependency:** this hook imports from `expo-speech-recognition`,
|
|
23
|
+
// which is declared as an **optional** peer dependency of
|
|
24
|
+
// `@crafter/rn-ai-elements`. Consumers who don't want voice input don't
|
|
25
|
+
// have to install it — they just don't import from
|
|
26
|
+
// `@crafter/rn-ai-elements/voice`. Consumers who do want voice input
|
|
27
|
+
// install `expo-speech-recognition` themselves, add its config plugin to
|
|
28
|
+
// `app.json`, and rebuild the native app.
|
|
29
|
+
//
|
|
30
|
+
// Intentionally minimal: no language picker, no contextual biasing, no
|
|
31
|
+
// audio persistence. Covers the common case of "tap mic, speak, text
|
|
32
|
+
// appears in the input field" and nothing more — add config props later
|
|
33
|
+
// if a consumer needs them.
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
|
|
36
|
+
const DEFAULT_LANG = 'en-US';
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* React hook wrapping `expo-speech-recognition` for chat-style voice input.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```tsx
|
|
43
|
+
* import { useSpeechRecognition } from '@crafter/rn-ai-elements/voice';
|
|
44
|
+
*
|
|
45
|
+
* const { isListening, transcript, toggle } = useSpeechRecognition({
|
|
46
|
+
* onFinalResult: (text) => console.log('final:', text),
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* // Pipe transcript into your input state
|
|
50
|
+
* useEffect(() => {
|
|
51
|
+
* if (transcript) setInput(transcript);
|
|
52
|
+
* }, [transcript]);
|
|
53
|
+
*
|
|
54
|
+
* // Wire the mic button
|
|
55
|
+
* <PromptInput
|
|
56
|
+
* value={input}
|
|
57
|
+
* onChangeText={setInput}
|
|
58
|
+
* isListening={isListening}
|
|
59
|
+
* onMicPress={toggle}
|
|
60
|
+
* ...
|
|
61
|
+
* />
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
function useSpeechRecognition(options = {}) {
|
|
65
|
+
const {
|
|
66
|
+
lang = DEFAULT_LANG,
|
|
67
|
+
interimResults = true,
|
|
68
|
+
continuous = false,
|
|
69
|
+
addsPunctuation = true,
|
|
70
|
+
onFinalResult
|
|
71
|
+
} = options;
|
|
72
|
+
const [isListening, setIsListening] = (0, _react.useState)(false);
|
|
73
|
+
const [transcript, setTranscript] = (0, _react.useState)('');
|
|
74
|
+
const [error, setError] = (0, _react.useState)(null);
|
|
75
|
+
|
|
76
|
+
// Keep the latest onFinalResult in a ref so consumers don't have to
|
|
77
|
+
// memoize it to avoid re-registering listeners.
|
|
78
|
+
const onFinalResultRef = (0, _react.useRef)(onFinalResult);
|
|
79
|
+
onFinalResultRef.current = onFinalResult;
|
|
80
|
+
|
|
81
|
+
// --- Native event listeners (auto-cleanup on unmount) -------------------
|
|
82
|
+
|
|
83
|
+
(0, _expoSpeechRecognition.useSpeechRecognitionEvent)('start', () => {
|
|
84
|
+
setIsListening(true);
|
|
85
|
+
setError(null);
|
|
86
|
+
});
|
|
87
|
+
(0, _expoSpeechRecognition.useSpeechRecognitionEvent)('end', () => {
|
|
88
|
+
setIsListening(false);
|
|
89
|
+
});
|
|
90
|
+
(0, _expoSpeechRecognition.useSpeechRecognitionEvent)('result', event => {
|
|
91
|
+
// `event.results` is an array of alternatives; the first entry is the
|
|
92
|
+
// best transcript per the platform's ranking. We only render that one.
|
|
93
|
+
const best = event.results[0]?.transcript ?? '';
|
|
94
|
+
setTranscript(best);
|
|
95
|
+
if (event.isFinal) {
|
|
96
|
+
onFinalResultRef.current?.(best);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
(0, _expoSpeechRecognition.useSpeechRecognitionEvent)('error', event => {
|
|
100
|
+
// `no-speech` is a soft "nothing was said" signal, not a hard error —
|
|
101
|
+
// it still fires `end` afterwards, so just surface it quietly.
|
|
102
|
+
setError({
|
|
103
|
+
code: event.error,
|
|
104
|
+
message: event.message
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
// --- Control methods -----------------------------------------------------
|
|
109
|
+
|
|
110
|
+
const start = (0, _react.useCallback)(async () => {
|
|
111
|
+
// Check current permissions first, only prompt if they're missing —
|
|
112
|
+
// requesting every time is jarring and will hit the dialog dismissal
|
|
113
|
+
// cap on iOS.
|
|
114
|
+
const current = await _expoSpeechRecognition.ExpoSpeechRecognitionModule.getPermissionsAsync();
|
|
115
|
+
if (!current.granted) {
|
|
116
|
+
const requested = await _expoSpeechRecognition.ExpoSpeechRecognitionModule.requestPermissionsAsync();
|
|
117
|
+
if (!requested.granted) {
|
|
118
|
+
setError({
|
|
119
|
+
code: 'not-allowed',
|
|
120
|
+
message: 'Speech recognition permission was denied. Enable it in Settings to use voice input.'
|
|
121
|
+
});
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Fresh run → clear any stale transcript/error from the previous turn.
|
|
127
|
+
setTranscript('');
|
|
128
|
+
setError(null);
|
|
129
|
+
const recognitionOptions = {
|
|
130
|
+
lang,
|
|
131
|
+
interimResults,
|
|
132
|
+
continuous,
|
|
133
|
+
addsPunctuation
|
|
134
|
+
};
|
|
135
|
+
try {
|
|
136
|
+
_expoSpeechRecognition.ExpoSpeechRecognitionModule.start(recognitionOptions);
|
|
137
|
+
} catch (err) {
|
|
138
|
+
setError({
|
|
139
|
+
code: 'client',
|
|
140
|
+
message: err instanceof Error ? err.message : String(err)
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}, [lang, interimResults, continuous, addsPunctuation]);
|
|
144
|
+
const stop = (0, _react.useCallback)(() => {
|
|
145
|
+
try {
|
|
146
|
+
_expoSpeechRecognition.ExpoSpeechRecognitionModule.stop();
|
|
147
|
+
} catch {
|
|
148
|
+
// If stop is called while not listening it's a no-op — swallow.
|
|
149
|
+
}
|
|
150
|
+
}, []);
|
|
151
|
+
const toggle = (0, _react.useCallback)(async () => {
|
|
152
|
+
if (isListening) {
|
|
153
|
+
stop();
|
|
154
|
+
} else {
|
|
155
|
+
await start();
|
|
156
|
+
}
|
|
157
|
+
}, [isListening, start, stop]);
|
|
158
|
+
const reset = (0, _react.useCallback)(() => {
|
|
159
|
+
setTranscript('');
|
|
160
|
+
setError(null);
|
|
161
|
+
}, []);
|
|
162
|
+
return {
|
|
163
|
+
isListening,
|
|
164
|
+
transcript,
|
|
165
|
+
error,
|
|
166
|
+
start,
|
|
167
|
+
stop,
|
|
168
|
+
toggle,
|
|
169
|
+
reset
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=useSpeechRecognition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_expoSpeechRecognition","DEFAULT_LANG","useSpeechRecognition","options","lang","interimResults","continuous","addsPunctuation","onFinalResult","isListening","setIsListening","useState","transcript","setTranscript","error","setError","onFinalResultRef","useRef","current","useSpeechRecognitionEvent","event","best","results","isFinal","code","message","start","useCallback","ExpoSpeechRecognitionModule","getPermissionsAsync","granted","requested","requestPermissionsAsync","recognitionOptions","err","Error","String","stop","toggle","reset"],"sourceRoot":"../../../src","sources":["voice/useSpeechRecognition.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { memo, useCallback, useState } from 'react';
|
|
4
|
+
import { Image, Pressable, StyleSheet, View } from 'react-native';
|
|
5
|
+
import { useAIElementsTheme } from '../theme';
|
|
6
|
+
import { Shimmer } from './Shimmer';
|
|
7
|
+
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Types
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Helpers
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
|
|
16
|
+
function resolveImageUri(source) {
|
|
17
|
+
if ('uri' in source && source.uri) {
|
|
18
|
+
return source.uri;
|
|
19
|
+
}
|
|
20
|
+
const mime = source.mimeType ?? 'image/png';
|
|
21
|
+
return `data:${mime};base64,${source.base64}`;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Component
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
|
|
28
|
+
function AIImageComponent({
|
|
29
|
+
source,
|
|
30
|
+
alt,
|
|
31
|
+
width: explicitWidth,
|
|
32
|
+
height: explicitHeight,
|
|
33
|
+
resizeMode = 'cover',
|
|
34
|
+
style,
|
|
35
|
+
onPress
|
|
36
|
+
}) {
|
|
37
|
+
const theme = useAIElementsTheme();
|
|
38
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
39
|
+
const [containerWidth, setContainerWidth] = useState(0);
|
|
40
|
+
const [aspectRatio, setAspectRatio] = useState(explicitWidth && explicitHeight ? explicitWidth / explicitHeight : undefined);
|
|
41
|
+
const uri = resolveImageUri(source);
|
|
42
|
+
|
|
43
|
+
// Measure natural aspect ratio when not provided
|
|
44
|
+
const handleLoad = useCallback(() => {
|
|
45
|
+
setIsLoading(false);
|
|
46
|
+
if (!explicitWidth || !explicitHeight) {
|
|
47
|
+
Image.getSize(uri, (w, h) => {
|
|
48
|
+
if (h > 0) {
|
|
49
|
+
setAspectRatio(w / h);
|
|
50
|
+
}
|
|
51
|
+
}, () => {
|
|
52
|
+
// fallback: keep undefined, image will use container size
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}, [uri, explicitWidth, explicitHeight]);
|
|
56
|
+
const handleLayout = useCallback(event => {
|
|
57
|
+
setContainerWidth(event.nativeEvent.layout.width);
|
|
58
|
+
}, []);
|
|
59
|
+
|
|
60
|
+
// Determine display dimensions
|
|
61
|
+
const displayWidth = explicitWidth ?? containerWidth;
|
|
62
|
+
const displayHeight = explicitHeight ?? (aspectRatio ? displayWidth / aspectRatio : 200);
|
|
63
|
+
const imageContent = /*#__PURE__*/_jsxs(View, {
|
|
64
|
+
onLayout: handleLayout,
|
|
65
|
+
style: [styles.container, {
|
|
66
|
+
borderRadius: theme.radius.md,
|
|
67
|
+
overflow: 'hidden',
|
|
68
|
+
width: explicitWidth ?? '100%',
|
|
69
|
+
height: displayHeight
|
|
70
|
+
}, style],
|
|
71
|
+
children: [isLoading && /*#__PURE__*/_jsx(View, {
|
|
72
|
+
style: StyleSheet.absoluteFill,
|
|
73
|
+
children: /*#__PURE__*/_jsx(Shimmer, {
|
|
74
|
+
width: "100%",
|
|
75
|
+
height: displayHeight,
|
|
76
|
+
borderRadius: theme.radius.md
|
|
77
|
+
})
|
|
78
|
+
}), /*#__PURE__*/_jsx(Image, {
|
|
79
|
+
source: {
|
|
80
|
+
uri
|
|
81
|
+
},
|
|
82
|
+
accessibilityLabel: alt,
|
|
83
|
+
resizeMode: resizeMode,
|
|
84
|
+
onLoad: handleLoad,
|
|
85
|
+
style: [StyleSheet.absoluteFill, {
|
|
86
|
+
opacity: isLoading ? 0 : 1
|
|
87
|
+
}]
|
|
88
|
+
})]
|
|
89
|
+
});
|
|
90
|
+
if (onPress) {
|
|
91
|
+
return /*#__PURE__*/_jsx(Pressable, {
|
|
92
|
+
onPress: onPress,
|
|
93
|
+
style: ({
|
|
94
|
+
pressed
|
|
95
|
+
}) => [pressed && styles.pressed],
|
|
96
|
+
children: imageContent
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return imageContent;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
// Styles
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
|
|
106
|
+
const styles = StyleSheet.create({
|
|
107
|
+
container: {
|
|
108
|
+
position: 'relative',
|
|
109
|
+
backgroundColor: 'transparent'
|
|
110
|
+
},
|
|
111
|
+
pressed: {
|
|
112
|
+
opacity: 0.85
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
// Export
|
|
118
|
+
// ---------------------------------------------------------------------------
|
|
119
|
+
|
|
120
|
+
export const AIImage = /*#__PURE__*/memo(AIImageComponent);
|
|
121
|
+
//# sourceMappingURL=AIImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","memo","useCallback","useState","Image","Pressable","StyleSheet","View","useAIElementsTheme","Shimmer","jsx","_jsx","jsxs","_jsxs","resolveImageUri","source","uri","mime","mimeType","base64","AIImageComponent","alt","width","explicitWidth","height","explicitHeight","resizeMode","style","onPress","theme","isLoading","setIsLoading","containerWidth","setContainerWidth","aspectRatio","setAspectRatio","undefined","handleLoad","getSize","w","h","handleLayout","event","nativeEvent","layout","displayWidth","displayHeight","imageContent","onLayout","styles","container","borderRadius","radius","md","overflow","children","absoluteFill","accessibilityLabel","onLoad","opacity","pressed","create","position","backgroundColor","AIImage"],"sourceRoot":"../../../src","sources":["chatbot/AIImage.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AAC1D,SACEC,KAAK,EACLC,SAAS,EACTC,UAAU,EACVC,IAAI,QAKC,cAAc;AACrB,SAASC,kBAAkB,QAAQ,UAAU;AAC7C,SAASC,OAAO,QAAQ,WAAW;;AAEnC;AACA;AACA;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAgBA;AACA;AACA;;AAEA,SAASC,eAAeA,CAACC,MAAqB,EAAU;EACtD,IAAI,KAAK,IAAIA,MAAM,IAAIA,MAAM,CAACC,GAAG,EAAE;IACjC,OAAOD,MAAM,CAACC,GAAG;EACnB;EACA,MAAMC,IAAI,GAAGF,MAAM,CAACG,QAAQ,IAAI,WAAW;EAC3C,OAAO,QAAQD,IAAI,WAAWF,MAAM,CAACI,MAAM,EAAE;AAC/C;;AAEA;AACA;AACA;;AAEA,SAASC,gBAAgBA,CAAC;EACxBL,MAAM;EACNM,GAAG;EACHC,KAAK,EAAEC,aAAa;EACpBC,MAAM,EAAEC,cAAc;EACtBC,UAAU,GAAG,OAAO;EACpBC,KAAK;EACLC;AACY,CAAC,EAAE;EACf,MAAMC,KAAK,GAAGrB,kBAAkB,CAAC,CAAC;EAClC,MAAM,CAACsB,SAAS,EAAEC,YAAY,CAAC,GAAG5B,QAAQ,CAAC,IAAI,CAAC;EAChD,MAAM,CAAC6B,cAAc,EAAEC,iBAAiB,CAAC,GAAG9B,QAAQ,CAAC,CAAC,CAAC;EACvD,MAAM,CAAC+B,WAAW,EAAEC,cAAc,CAAC,GAAGhC,QAAQ,CAC5CoB,aAAa,IAAIE,cAAc,GAC3BF,aAAa,GAAGE,cAAc,GAC9BW,SACN,CAAC;EAED,MAAMpB,GAAG,GAAGF,eAAe,CAACC,MAAM,CAAC;;EAEnC;EACA,MAAMsB,UAAU,GAAGnC,WAAW,CAAC,MAAM;IACnC6B,YAAY,CAAC,KAAK,CAAC;IAEnB,IAAI,CAACR,aAAa,IAAI,CAACE,cAAc,EAAE;MACrCrB,KAAK,CAACkC,OAAO,CACXtB,GAAG,EACH,CAACuB,CAAC,EAAEC,CAAC,KAAK;QACR,IAAIA,CAAC,GAAG,CAAC,EAAE;UACTL,cAAc,CAACI,CAAC,GAAGC,CAAC,CAAC;QACvB;MACF,CAAC,EACD,MAAM;QACJ;MAAA,CAEJ,CAAC;IACH;EACF,CAAC,EAAE,CAACxB,GAAG,EAAEO,aAAa,EAAEE,cAAc,CAAC,CAAC;EAExC,MAAMgB,YAAY,GAAGvC,WAAW,CAAEwC,KAAwB,IAAK;IAC7DT,iBAAiB,CAACS,KAAK,CAACC,WAAW,CAACC,MAAM,CAACtB,KAAK,CAAC;EACnD,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAMuB,YAAY,GAAGtB,aAAa,IAAIS,cAAc;EACpD,MAAMc,aAAa,GACjBrB,cAAc,KAAKS,WAAW,GAAGW,YAAY,GAAGX,WAAW,GAAG,GAAG,CAAC;EAEpE,MAAMa,YAAY,gBAChBlC,KAAA,CAACN,IAAI;IACHyC,QAAQ,EAAEP,YAAa;IACvBd,KAAK,EAAE,CACLsB,MAAM,CAACC,SAAS,EAChB;MACEC,YAAY,EAAEtB,KAAK,CAACuB,MAAM,CAACC,EAAE;MAC7BC,QAAQ,EAAE,QAAQ;MAClBhC,KAAK,EAAEC,aAAa,IAAI,MAAM;MAC9BC,MAAM,EAAEsB;IACV,CAAC,EACDnB,KAAK,CACL;IAAA4B,QAAA,GAEDzB,SAAS,iBACRnB,IAAA,CAACJ,IAAI;MAACoB,KAAK,EAAErB,UAAU,CAACkD,YAAa;MAAAD,QAAA,eACnC5C,IAAA,CAACF,OAAO;QACNa,KAAK,EAAC,MAAM;QACZE,MAAM,EAAEsB,aAAc;QACtBK,YAAY,EAAEtB,KAAK,CAACuB,MAAM,CAACC;MAAG,CAC/B;IAAC,CACE,CACP,eAED1C,IAAA,CAACP,KAAK;MACJW,MAAM,EAAE;QAAEC;MAAI,CAAE;MAChByC,kBAAkB,EAAEpC,GAAI;MACxBK,UAAU,EAAEA,UAA8B;MAC1CgC,MAAM,EAAErB,UAAW;MACnBV,KAAK,EAAE,CACLrB,UAAU,CAACkD,YAAY,EACvB;QAAEG,OAAO,EAAE7B,SAAS,GAAG,CAAC,GAAG;MAAE,CAAC;IAC9B,CACH,CAAC;EAAA,CACE,CACP;EAED,IAAIF,OAAO,EAAE;IACX,oBACEjB,IAAA,CAACN,SAAS;MACRuB,OAAO,EAAEA,OAAQ;MACjBD,KAAK,EAAEA,CAAC;QAAEiC;MAAQ,CAAC,KAAK,CAACA,OAAO,IAAIX,MAAM,CAACW,OAAO,CAAE;MAAAL,QAAA,EAEnDR;IAAY,CACJ,CAAC;EAEhB;EAEA,OAAOA,YAAY;AACrB;;AAEA;AACA;AACA;;AAEA,MAAME,MAAM,GAAG3C,UAAU,CAACuD,MAAM,CAAC;EAC/BX,SAAS,EAAE;IACTY,QAAQ,EAAE,UAAU;IACpBC,eAAe,EAAE;EACnB,CAAC;EACDH,OAAO,EAAE;IACPD,OAAO,EAAE;EACX;AACF,CAAC,CAAC;;AAEF;AACA;AACA;;AAEA,OAAO,MAAMK,OAAO,gBAAG/D,IAAI,CAACmB,gBAAgB,CAAC","ignoreList":[]}
|