@docyrus/rn-assistant 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/commonjs/components/assistant-screen/assistant-screen.js +1 -1
  2. package/dist/commonjs/components/assistant-screen/assistant-screen.js.map +1 -1
  3. package/dist/commonjs/components/message-parts/message-parts.js +84 -20
  4. package/dist/commonjs/components/message-parts/message-parts.js.map +1 -1
  5. package/dist/commonjs/components/message-parts/tools/data-table-tool.js +417 -0
  6. package/dist/commonjs/components/message-parts/tools/data-table-tool.js.map +1 -0
  7. package/dist/commonjs/components/message-parts/tools/generate-chart-tool.js +240 -0
  8. package/dist/commonjs/components/message-parts/tools/generate-chart-tool.js.map +1 -0
  9. package/dist/commonjs/components/message-parts/tools/index.js +28 -0
  10. package/dist/commonjs/components/message-parts/tools/index.js.map +1 -1
  11. package/dist/commonjs/components/message-parts/tools/mermaid-diagram-tool.js +223 -0
  12. package/dist/commonjs/components/message-parts/tools/mermaid-diagram-tool.js.map +1 -0
  13. package/dist/commonjs/components/message-parts/tools/request-user-input-tool.js +366 -0
  14. package/dist/commonjs/components/message-parts/tools/request-user-input-tool.js.map +1 -0
  15. package/dist/module/components/assistant-screen/assistant-screen.js +1 -1
  16. package/dist/module/components/assistant-screen/assistant-screen.js.map +1 -1
  17. package/dist/module/components/message-parts/message-parts.js +85 -21
  18. package/dist/module/components/message-parts/message-parts.js.map +1 -1
  19. package/dist/module/components/message-parts/tools/data-table-tool.js +413 -0
  20. package/dist/module/components/message-parts/tools/data-table-tool.js.map +1 -0
  21. package/dist/module/components/message-parts/tools/generate-chart-tool.js +236 -0
  22. package/dist/module/components/message-parts/tools/generate-chart-tool.js.map +1 -0
  23. package/dist/module/components/message-parts/tools/index.js +4 -0
  24. package/dist/module/components/message-parts/tools/index.js.map +1 -1
  25. package/dist/module/components/message-parts/tools/mermaid-diagram-tool.js +219 -0
  26. package/dist/module/components/message-parts/tools/mermaid-diagram-tool.js.map +1 -0
  27. package/dist/module/components/message-parts/tools/request-user-input-tool.js +362 -0
  28. package/dist/module/components/message-parts/tools/request-user-input-tool.js.map +1 -0
  29. package/dist/typescript/commonjs/src/components/assistant-screen/assistant-screen.d.ts.map +1 -1
  30. package/dist/typescript/commonjs/src/components/message-parts/message-parts.d.ts.map +1 -1
  31. package/dist/typescript/commonjs/src/components/message-parts/tools/data-table-tool.d.ts +25 -0
  32. package/dist/typescript/commonjs/src/components/message-parts/tools/data-table-tool.d.ts.map +1 -0
  33. package/dist/typescript/commonjs/src/components/message-parts/tools/generate-chart-tool.d.ts +14 -0
  34. package/dist/typescript/commonjs/src/components/message-parts/tools/generate-chart-tool.d.ts.map +1 -0
  35. package/dist/typescript/commonjs/src/components/message-parts/tools/index.d.ts +4 -0
  36. package/dist/typescript/commonjs/src/components/message-parts/tools/index.d.ts.map +1 -1
  37. package/dist/typescript/commonjs/src/components/message-parts/tools/mermaid-diagram-tool.d.ts +13 -0
  38. package/dist/typescript/commonjs/src/components/message-parts/tools/mermaid-diagram-tool.d.ts.map +1 -0
  39. package/dist/typescript/commonjs/src/components/message-parts/tools/request-user-input-tool.d.ts +33 -0
  40. package/dist/typescript/commonjs/src/components/message-parts/tools/request-user-input-tool.d.ts.map +1 -0
  41. package/dist/typescript/module/src/components/assistant-screen/assistant-screen.d.ts.map +1 -1
  42. package/dist/typescript/module/src/components/message-parts/message-parts.d.ts.map +1 -1
  43. package/dist/typescript/module/src/components/message-parts/tools/data-table-tool.d.ts +25 -0
  44. package/dist/typescript/module/src/components/message-parts/tools/data-table-tool.d.ts.map +1 -0
  45. package/dist/typescript/module/src/components/message-parts/tools/generate-chart-tool.d.ts +14 -0
  46. package/dist/typescript/module/src/components/message-parts/tools/generate-chart-tool.d.ts.map +1 -0
  47. package/dist/typescript/module/src/components/message-parts/tools/index.d.ts +4 -0
  48. package/dist/typescript/module/src/components/message-parts/tools/index.d.ts.map +1 -1
  49. package/dist/typescript/module/src/components/message-parts/tools/mermaid-diagram-tool.d.ts +13 -0
  50. package/dist/typescript/module/src/components/message-parts/tools/mermaid-diagram-tool.d.ts.map +1 -0
  51. package/dist/typescript/module/src/components/message-parts/tools/request-user-input-tool.d.ts +33 -0
  52. package/dist/typescript/module/src/components/message-parts/tools/request-user-input-tool.d.ts.map +1 -0
  53. package/package.json +7 -2
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_reactNativeWebview","_lucideReactNative","_index","_jsxRuntime","buildChartHtml","spec","data","isDark","bg","fullSpec","background","JSON","stringify","GenerateChartTool","state","errorText","title","theme","useDocyrusRNAssistantTheme","modalOpen","setModalOpen","useState","jsxs","View","style","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","children","jsx","BarChart3","size","color","colors","mutedForeground","Text","fontSize","fontWeight","ActivityIndicator","XCircle","destructive","type","html","useMemo","Fragment","borderRadius","borderWidth","borderColor","border","backgroundColor","card","overflow","marginVertical","justifyContent","muted","flex","foreground","numberOfLines","TouchableOpacity","onPress","hitSlop","Maximize2","height","width","WebView","source","scrollEnabled","originWhitelist","javaScriptEnabled","Modal","visible","animationType","presentationStyle","SafeAreaView","X","displayName"],"sourceRoot":"../../../../../src","sources":["components/message-parts/tools/generate-chart-tool.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAD,OAAA;AAGA,IAAAE,mBAAA,GAAAF,OAAA;AACA,IAAAG,kBAAA,GAAAH,OAAA;AAIA,IAAAI,MAAA,GAAAJ,OAAA;AAA4D,IAAAK,WAAA,GAAAL,OAAA;AAY5D,SAASM,cAAcA,CAACC,IAAyB,EAAEC,IAAS,EAAEC,MAAe,EAAU;EACrF,MAAMC,EAAE,GAAGD,MAAM,GAAG,SAAS,GAAG,SAAS;;EAEzC;EACA,MAAME,QAAQ,GAAG;IAAE,GAAGJ;EAAK,CAAC;EAE5B,IAAI,CAACI,QAAQ,CAACH,IAAI,IAAIA,IAAI,EAAE;IAC1BG,QAAQ,CAACH,IAAI,GAAGA,IAAI;EACtB;;EAEA;EACA,IAAIC,MAAM,IAAI,CAACE,QAAQ,CAACC,UAAU,EAAE;IAClCD,QAAQ,CAACC,UAAU,GAAGF,EAAE;EAC1B;EAEA,OAAO;AACT;AACA;AACA;AACA;AACA,iDAAiDA,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiBG,IAAI,CAACC,SAAS,CAACH,QAAQ,CAAC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AAEO,SAASI,iBAAiBA,CAAC;EAChCC,KAAK;EAAET,IAAI;EAAEC,IAAI;EAAES,SAAS;EAAEC;AACR,CAAC,EAAE;EACzB,MAAMC,KAAK,GAAG,IAAAC,iCAA0B,EAAC,CAAC;EAC1C,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;;EAEjD;EACA,IAAIP,KAAK,KAAK,iBAAiB,IAAIA,KAAK,KAAK,iBAAiB,EAAE;IAC9D,oBACE,IAAAX,WAAA,CAAAmB,IAAA,EAACvB,YAAA,CAAAwB,IAAI;MAACC,KAAK,EAAE;QACXC,aAAa,EAAE,KAAK;QACpBC,UAAU,EAAE,QAAQ;QACpBC,GAAG,EAAE,CAAC;QACNC,eAAe,EAAE,CAAC;QAClBC,iBAAiB,EAAE;MACrB,CAAE;MAAAC,QAAA,gBACA,IAAA3B,WAAA,CAAA4B,GAAA,EAAC9B,kBAAA,CAAA+B,SAAS;QAACC,IAAI,EAAE,EAAG;QAACC,KAAK,EAAEjB,KAAK,CAACkB,MAAM,CAACC;MAAgB,CAAE,CAAC,eAC5D,IAAAjC,WAAA,CAAA4B,GAAA,EAAChC,YAAA,CAAAsC,IAAI;QAACb,KAAK,EAAE;UAAEc,QAAQ,EAAE,EAAE;UAAEC,UAAU,EAAE,KAAK;UAAEL,KAAK,EAAEjB,KAAK,CAACkB,MAAM,CAACC;QAAgB,CAAE;QAAAN,QAAA,EACnFd,KAAK,IAAI;MAAwB,CAC9B,CAAC,eACP,IAAAb,WAAA,CAAA4B,GAAA,EAAChC,YAAA,CAAAyC,iBAAiB;QAACP,IAAI,EAAC,OAAO;QAACC,KAAK,EAAEjB,KAAK,CAACkB,MAAM,CAACC;MAAgB,CAAE,CAAC;IAAA,CACnE,CAAC;EAEX;;EAEA;EACA,IAAItB,KAAK,KAAK,cAAc,EAAE;IAC5B,oBACE,IAAAX,WAAA,CAAAmB,IAAA,EAACvB,YAAA,CAAAwB,IAAI;MAACC,KAAK,EAAE;QACXC,aAAa,EAAE,KAAK;QACpBC,UAAU,EAAE,QAAQ;QACpBC,GAAG,EAAE,CAAC;QACNC,eAAe,EAAE,CAAC;QAClBC,iBAAiB,EAAE;MACrB,CAAE;MAAAC,QAAA,gBACA,IAAA3B,WAAA,CAAA4B,GAAA,EAAC9B,kBAAA,CAAAwC,OAAO;QAACR,IAAI,EAAE,EAAG;QAACC,KAAK,EAAEjB,KAAK,CAACkB,MAAM,CAACO;MAAY,CAAE,CAAC,eACtD,IAAAvC,WAAA,CAAAmB,IAAA,EAACvB,YAAA,CAAAsC,IAAI;QAACb,KAAK,EAAE;UAAEc,QAAQ,EAAE,EAAE;UAAEJ,KAAK,EAAEjB,KAAK,CAACkB,MAAM,CAACO;QAAY,CAAE;QAAAZ,QAAA,GAAC,cAClD,EAACf,SAAS,GAAG,KAAKA,SAAS,EAAE,GAAG,EAAE;MAAA,CAC1C,CAAC;IAAA,CACH,CAAC;EAEX;EAEA,IAAI,CAACV,IAAI,IAAI,CAACA,IAAI,CAACsC,IAAI,EAAE,OAAO,IAAI;EAEpC,MAAMC,IAAI,GAAG,IAAAC,cAAO,EAClB,MAAMzC,cAAc,CAACC,IAAI,EAAEC,IAAI,EAAEW,KAAK,CAACV,MAAM,CAAC,EAC9C,CAACF,IAAI,EAAEC,IAAI,EAAEW,KAAK,CAACV,MAAM,CAC3B,CAAC;EAED,oBACE,IAAAJ,WAAA,CAAAmB,IAAA,EAAAnB,WAAA,CAAA2C,QAAA;IAAAhB,QAAA,gBACE,IAAA3B,WAAA,CAAAmB,IAAA,EAACvB,YAAA,CAAAwB,IAAI;MAACC,KAAK,EAAE;QACXuB,YAAY,EAAE,EAAE;QAChBC,WAAW,EAAE,CAAC;QACdC,WAAW,EAAEhC,KAAK,CAACkB,MAAM,CAACe,MAAM;QAChCC,eAAe,EAAElC,KAAK,CAACkB,MAAM,CAACiB,IAAI;QAClCC,QAAQ,EAAE,QAAQ;QAClBC,cAAc,EAAE;MAClB,CAAE;MAAAxB,QAAA,gBAEA,IAAA3B,WAAA,CAAAmB,IAAA,EAACvB,YAAA,CAAAwB,IAAI;QAACC,KAAK,EAAE;UACXC,aAAa,EAAE,KAAK;UACpBC,UAAU,EAAE,QAAQ;UACpB6B,cAAc,EAAE,eAAe;UAC/BJ,eAAe,EAAElC,KAAK,CAACV,MAAM,GAAGU,KAAK,CAACkB,MAAM,CAACqB,KAAK,GAAG,SAAS;UAC9D3B,iBAAiB,EAAE,EAAE;UACrBD,eAAe,EAAE;QACnB,CAAE;QAAAE,QAAA,gBACA,IAAA3B,WAAA,CAAAmB,IAAA,EAACvB,YAAA,CAAAwB,IAAI;UAACC,KAAK,EAAE;YACXC,aAAa,EAAE,KAAK;YAAEC,UAAU,EAAE,QAAQ;YAAEC,GAAG,EAAE,CAAC;YAAE8B,IAAI,EAAE;UAC5D,CAAE;UAAA3B,QAAA,gBACA,IAAA3B,WAAA,CAAA4B,GAAA,EAAC9B,kBAAA,CAAA+B,SAAS;YAACC,IAAI,EAAE,EAAG;YAACC,KAAK,EAAEjB,KAAK,CAACkB,MAAM,CAACC;UAAgB,CAAE,CAAC,eAC5D,IAAAjC,WAAA,CAAA4B,GAAA,EAAChC,YAAA,CAAAsC,IAAI;YACHb,KAAK,EAAE;cACLc,QAAQ,EAAE,EAAE;cACZC,UAAU,EAAE,KAAK;cACjBL,KAAK,EAAEjB,KAAK,CAACkB,MAAM,CAACuB,UAAU;cAC9BD,IAAI,EAAE;YACR,CAAE;YACFE,aAAa,EAAE,CAAE;YAAA7B,QAAA,EAChBd,KAAK,IAAI;UAAO,CACb,CAAC;QAAA,CACH,CAAC,eACP,IAAAb,WAAA,CAAA4B,GAAA,EAAChC,YAAA,CAAA6D,gBAAgB;UAACC,OAAO,EAAEA,CAAA,KAAMzC,YAAY,CAAC,IAAI,CAAE;UAAC0C,OAAO,EAAE,CAAE;UAAAhC,QAAA,eAC9D,IAAA3B,WAAA,CAAA4B,GAAA,EAAC9B,kBAAA,CAAA8D,SAAS;YAAC9B,IAAI,EAAE,EAAG;YAACC,KAAK,EAAEjB,KAAK,CAACkB,MAAM,CAACC;UAAgB,CAAE;QAAC,CAC5C,CAAC;MAAA,CACf,CAAC,eAGP,IAAAjC,WAAA,CAAA4B,GAAA,EAAChC,YAAA,CAAAwB,IAAI;QAACC,KAAK,EAAE;UAAEwC,MAAM,EAAE,GAAG;UAAEC,KAAK,EAAE;QAAO,CAAE;QAAAnC,QAAA,eAC1C,IAAA3B,WAAA,CAAA4B,GAAA,EAAC/B,mBAAA,CAAAkE,OAAO;UACNC,MAAM,EAAE;YAAEvB;UAAK,CAAE;UACjBpB,KAAK,EAAE;YAAEiC,IAAI,EAAE,CAAC;YAAEN,eAAe,EAAE;UAAc,CAAE;UACnDiB,aAAa,EAAE,KAAM;UACrBC,eAAe,EAAE,CAAC,GAAG,CAAE;UACvBC,iBAAiB;QAAA,CAAE;MAAC,CAClB,CAAC;IAAA,CACH,CAAC,eAGP,IAAAnE,WAAA,CAAA4B,GAAA,EAAChC,YAAA,CAAAwE,KAAK;MAACC,OAAO,EAAErD,SAAU;MAACsD,aAAa,EAAC,OAAO;MAACC,iBAAiB,EAAC,YAAY;MAAA5C,QAAA,eAC7E,IAAA3B,WAAA,CAAAmB,IAAA,EAACvB,YAAA,CAAA4E,YAAY;QAACnD,KAAK,EAAE;UAAEiC,IAAI,EAAE,CAAC;UAAEN,eAAe,EAAElC,KAAK,CAACV,MAAM,GAAG,SAAS,GAAG;QAAU,CAAE;QAAAuB,QAAA,gBACtF,IAAA3B,WAAA,CAAAmB,IAAA,EAACvB,YAAA,CAAAwB,IAAI;UAACC,KAAK,EAAE;YACXC,aAAa,EAAE,KAAK;YACpBC,UAAU,EAAE,QAAQ;YACpB6B,cAAc,EAAE,eAAe;YAC/BJ,eAAe,EAAElC,KAAK,CAACV,MAAM,GAAGU,KAAK,CAACkB,MAAM,CAACqB,KAAK,GAAG,SAAS;YAC9D3B,iBAAiB,EAAE,EAAE;YACrBD,eAAe,EAAE;UACnB,CAAE;UAAAE,QAAA,gBACA,IAAA3B,WAAA,CAAAmB,IAAA,EAACvB,YAAA,CAAAwB,IAAI;YAACC,KAAK,EAAE;cACXC,aAAa,EAAE,KAAK;cAAEC,UAAU,EAAE,QAAQ;cAAEC,GAAG,EAAE,EAAE;cAAE8B,IAAI,EAAE;YAC7D,CAAE;YAAA3B,QAAA,gBACA,IAAA3B,WAAA,CAAA4B,GAAA,EAAC9B,kBAAA,CAAA+B,SAAS;cAACC,IAAI,EAAE,EAAG;cAACC,KAAK,EAAEjB,KAAK,CAACkB,MAAM,CAACC;YAAgB,CAAE,CAAC,eAC5D,IAAAjC,WAAA,CAAA4B,GAAA,EAAChC,YAAA,CAAAsC,IAAI;cACHb,KAAK,EAAE;gBACLc,QAAQ,EAAE,EAAE;gBACZC,UAAU,EAAE,KAAK;gBACjBL,KAAK,EAAEjB,KAAK,CAACkB,MAAM,CAACuB,UAAU;gBAC9BD,IAAI,EAAE;cACR,CAAE;cACFE,aAAa,EAAE,CAAE;cAAA7B,QAAA,EAChBd,KAAK,IAAI;YAAO,CACb,CAAC;UAAA,CACH,CAAC,eACP,IAAAb,WAAA,CAAA4B,GAAA,EAAChC,YAAA,CAAA6D,gBAAgB;YAACC,OAAO,EAAEA,CAAA,KAAMzC,YAAY,CAAC,KAAK,CAAE;YAAC0C,OAAO,EAAE,CAAE;YAAAhC,QAAA,eAC/D,IAAA3B,WAAA,CAAA4B,GAAA,EAAC9B,kBAAA,CAAA2E,CAAC;cAAC3C,IAAI,EAAE,EAAG;cAACC,KAAK,EAAEjB,KAAK,CAACkB,MAAM,CAACC;YAAgB,CAAE;UAAC,CACpC,CAAC;QAAA,CACf,CAAC,eACP,IAAAjC,WAAA,CAAA4B,GAAA,EAAC/B,mBAAA,CAAAkE,OAAO;UACNC,MAAM,EAAE;YAAEvB;UAAK,CAAE;UACjBpB,KAAK,EAAE;YAAEiC,IAAI,EAAE;UAAE,CAAE;UACnBW,aAAa,EAAE,KAAM;UACrBC,eAAe,EAAE,CAAC,GAAG,CAAE;UACvBC,iBAAiB;QAAA,CAAE,CAAC;MAAA,CACV;IAAC,CACV,CAAC;EAAA,CACR,CAAC;AAEP;AAEAzD,iBAAiB,CAACgE,WAAW,GAAG,mBAAmB","ignoreList":[]}
@@ -3,12 +3,36 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "DataTableTool", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _dataTableTool.DataTableTool;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "GenerateChartTool", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _generateChartTool.GenerateChartTool;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "MermaidDiagramTool", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _mermaidDiagramTool.MermaidDiagramTool;
22
+ }
23
+ });
6
24
  Object.defineProperty(exports, "RequestApprovalTool", {
7
25
  enumerable: true,
8
26
  get: function () {
9
27
  return _requestApprovalTool.RequestApprovalTool;
10
28
  }
11
29
  });
30
+ Object.defineProperty(exports, "RequestUserInputTool", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _requestUserInputTool.RequestUserInputTool;
34
+ }
35
+ });
12
36
  Object.defineProperty(exports, "SearchWebTool", {
13
37
  enumerable: true,
14
38
  get: function () {
@@ -24,4 +48,8 @@ Object.defineProperty(exports, "ShowImageTool", {
24
48
  var _showImageTool = require("./show-image-tool.js");
25
49
  var _requestApprovalTool = require("./request-approval-tool.js");
26
50
  var _searchWebTool = require("./search-web-tool.js");
51
+ var _mermaidDiagramTool = require("./mermaid-diagram-tool.js");
52
+ var _generateChartTool = require("./generate-chart-tool.js");
53
+ var _dataTableTool = require("./data-table-tool.js");
54
+ var _requestUserInputTool = require("./request-user-input-tool.js");
27
55
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_showImageTool","require","_requestApprovalTool","_searchWebTool"],"sourceRoot":"../../../../../src","sources":["components/message-parts/tools/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_showImageTool","require","_requestApprovalTool","_searchWebTool","_mermaidDiagramTool","_generateChartTool","_dataTableTool","_requestUserInputTool"],"sourceRoot":"../../../../../src","sources":["components/message-parts/tools/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,qBAAA,GAAAN,OAAA","ignoreList":[]}
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MermaidDiagramTool = MermaidDiagramTool;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _reactNativeWebview = require("react-native-webview");
10
+ var _lucideReactNative = require("lucide-react-native");
11
+ var _index = require("../../../theme/index.js");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ function buildMermaidHtml(notation, isDark) {
14
+ const bg = isDark ? '#1e1e2e' : '#ffffff';
15
+ const fg = isDark ? '#cdd6f4' : '#1e293b';
16
+ return `<!DOCTYPE html>
17
+ <html>
18
+ <head>
19
+ <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=3">
20
+ <style>
21
+ html, body { margin:0; padding:0; background:${bg}; color:${fg}; overflow:auto; }
22
+ #diagram { display:flex; justify-content:center; align-items:center; min-height:100vh; padding:16px; }
23
+ #diagram svg { max-width:100%; height:auto; }
24
+ </style>
25
+ </head>
26
+ <body>
27
+ <div id="diagram"></div>
28
+ <script src="https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.min.js"></script>
29
+ <script>
30
+ mermaid.initialize({ startOnLoad:false, theme:'${isDark ? 'dark' : 'default'}' });
31
+ mermaid.render('mmd', ${JSON.stringify(notation)}).then(({svg}) => {
32
+ document.getElementById('diagram').innerHTML = svg;
33
+ }).catch(e => {
34
+ document.getElementById('diagram').innerHTML = '<p style="color:red">'+e.message+'</p>';
35
+ });
36
+ </script>
37
+ </body>
38
+ </html>`;
39
+ }
40
+ function MermaidDiagramTool({
41
+ title,
42
+ description,
43
+ mermaidNotation,
44
+ state
45
+ }) {
46
+ const theme = (0, _index.useDocyrusRNAssistantTheme)();
47
+ const [modalOpen, setModalOpen] = (0, _react.useState)(false);
48
+
49
+ // Loading / streaming state
50
+ if (state === 'input-streaming' || state === 'input-available') {
51
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
52
+ style: {
53
+ flexDirection: 'row',
54
+ alignItems: 'center',
55
+ gap: 6,
56
+ paddingVertical: 5,
57
+ paddingHorizontal: 2
58
+ },
59
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideReactNative.Share2, {
60
+ size: 12,
61
+ color: theme.colors.mutedForeground
62
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
63
+ style: {
64
+ fontSize: 12,
65
+ fontWeight: '300',
66
+ color: theme.colors.mutedForeground
67
+ },
68
+ children: title || 'Generating diagram\u2026'
69
+ })]
70
+ });
71
+ }
72
+ if (!mermaidNotation) return null;
73
+ const html = buildMermaidHtml(mermaidNotation, theme.isDark);
74
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
75
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
76
+ style: {
77
+ borderRadius: 10,
78
+ borderWidth: 1,
79
+ borderColor: theme.colors.border,
80
+ backgroundColor: theme.colors.card,
81
+ overflow: 'hidden',
82
+ marginVertical: 4
83
+ },
84
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
85
+ style: {
86
+ flexDirection: 'row',
87
+ alignItems: 'center',
88
+ justifyContent: 'space-between',
89
+ backgroundColor: theme.isDark ? theme.colors.muted : '#f1f5f9',
90
+ paddingHorizontal: 12,
91
+ paddingVertical: 8
92
+ },
93
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
94
+ style: {
95
+ flexDirection: 'row',
96
+ alignItems: 'center',
97
+ gap: 10,
98
+ flex: 1
99
+ },
100
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideReactNative.Share2, {
101
+ size: 18,
102
+ color: theme.colors.mutedForeground
103
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
104
+ style: {
105
+ flex: 1
106
+ },
107
+ children: [title ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
108
+ style: {
109
+ fontSize: 13,
110
+ fontWeight: '500',
111
+ color: theme.colors.foreground
112
+ },
113
+ numberOfLines: 1,
114
+ children: title
115
+ }) : null, description ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
116
+ style: {
117
+ fontSize: 11,
118
+ color: theme.colors.mutedForeground
119
+ },
120
+ numberOfLines: 1,
121
+ children: description
122
+ }) : null]
123
+ })]
124
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
125
+ onPress: () => setModalOpen(true),
126
+ hitSlop: 8,
127
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideReactNative.Maximize2, {
128
+ size: 14,
129
+ color: theme.colors.mutedForeground
130
+ })
131
+ })]
132
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
133
+ style: {
134
+ height: 280,
135
+ width: '100%'
136
+ },
137
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeWebview.WebView, {
138
+ source: {
139
+ html
140
+ },
141
+ style: {
142
+ flex: 1,
143
+ backgroundColor: 'transparent'
144
+ },
145
+ scrollEnabled: true,
146
+ originWhitelist: ['*'],
147
+ javaScriptEnabled: true
148
+ })
149
+ })]
150
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Modal, {
151
+ visible: modalOpen,
152
+ animationType: "slide",
153
+ presentationStyle: "fullScreen",
154
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.SafeAreaView, {
155
+ style: {
156
+ flex: 1,
157
+ backgroundColor: theme.isDark ? '#1e1e2e' : '#ffffff'
158
+ },
159
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
160
+ style: {
161
+ flexDirection: 'row',
162
+ alignItems: 'center',
163
+ justifyContent: 'space-between',
164
+ backgroundColor: theme.isDark ? theme.colors.muted : '#f1f5f9',
165
+ paddingHorizontal: 16,
166
+ paddingVertical: 10
167
+ },
168
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
169
+ style: {
170
+ flexDirection: 'row',
171
+ alignItems: 'center',
172
+ gap: 12,
173
+ flex: 1
174
+ },
175
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideReactNative.Share2, {
176
+ size: 22,
177
+ color: theme.colors.mutedForeground
178
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
179
+ style: {
180
+ flex: 1
181
+ },
182
+ children: [title ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
183
+ style: {
184
+ fontSize: 15,
185
+ fontWeight: '500',
186
+ color: theme.colors.foreground
187
+ },
188
+ numberOfLines: 1,
189
+ children: title
190
+ }) : null, description ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
191
+ style: {
192
+ fontSize: 12,
193
+ color: theme.colors.mutedForeground
194
+ },
195
+ numberOfLines: 1,
196
+ children: description
197
+ }) : null]
198
+ })]
199
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
200
+ onPress: () => setModalOpen(false),
201
+ hitSlop: 8,
202
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideReactNative.X, {
203
+ size: 20,
204
+ color: theme.colors.mutedForeground
205
+ })
206
+ })]
207
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeWebview.WebView, {
208
+ source: {
209
+ html
210
+ },
211
+ style: {
212
+ flex: 1
213
+ },
214
+ scrollEnabled: true,
215
+ originWhitelist: ['*'],
216
+ javaScriptEnabled: true
217
+ })]
218
+ })
219
+ })]
220
+ });
221
+ }
222
+ MermaidDiagramTool.displayName = 'MermaidDiagramTool';
223
+ //# sourceMappingURL=mermaid-diagram-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_reactNativeWebview","_lucideReactNative","_index","_jsxRuntime","buildMermaidHtml","notation","isDark","bg","fg","JSON","stringify","MermaidDiagramTool","title","description","mermaidNotation","state","theme","useDocyrusRNAssistantTheme","modalOpen","setModalOpen","useState","jsxs","View","style","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","children","jsx","Share2","size","color","colors","mutedForeground","Text","fontSize","fontWeight","html","Fragment","borderRadius","borderWidth","borderColor","border","backgroundColor","card","overflow","marginVertical","justifyContent","muted","flex","foreground","numberOfLines","TouchableOpacity","onPress","hitSlop","Maximize2","height","width","WebView","source","scrollEnabled","originWhitelist","javaScriptEnabled","Modal","visible","animationType","presentationStyle","SafeAreaView","X","displayName"],"sourceRoot":"../../../../../src","sources":["components/message-parts/tools/mermaid-diagram-tool.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,366 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RequestUserInputTool = RequestUserInputTool;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _lucideReactNative = require("lucide-react-native");
10
+ var _index = require("../../../theme/index.js");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function parseSchema(raw) {
13
+ if (typeof raw === 'string') {
14
+ try {
15
+ return JSON.parse(raw);
16
+ } catch {
17
+ return {};
18
+ }
19
+ }
20
+ return raw || {};
21
+ }
22
+ function RequestUserInputTool({
23
+ state,
24
+ schema,
25
+ title,
26
+ description,
27
+ submitLabel,
28
+ output,
29
+ onSubmit,
30
+ onCancel
31
+ }) {
32
+ const theme = (0, _index.useDocyrusRNAssistantTheme)();
33
+ const parsed = (0, _react.useMemo)(() => parseSchema(schema), [schema]);
34
+ const properties = parsed.properties || {};
35
+ const required = parsed.required || [];
36
+ const fieldKeys = Object.keys(properties);
37
+ const [formData, setFormData] = (0, _react.useState)(() => {
38
+ const initial = {};
39
+ for (const key of fieldKeys) {
40
+ const prop = properties[key] ?? {};
41
+ if (prop.default !== undefined) {
42
+ initial[key] = prop.default;
43
+ } else if (prop.type === 'boolean') {
44
+ initial[key] = false;
45
+ } else {
46
+ initial[key] = '';
47
+ }
48
+ }
49
+ return initial;
50
+ });
51
+ const [isSubmitting, setIsSubmitting] = (0, _react.useState)(false);
52
+ const isViewMode = state === 'output-available';
53
+ const isFormValid = (0, _react.useMemo)(() => {
54
+ for (const key of required) {
55
+ const val = formData[key];
56
+ if (val === null || val === undefined || val === '') return false;
57
+ if (Array.isArray(val) && val.length === 0) return false;
58
+ }
59
+ return true;
60
+ }, [formData, required]);
61
+ const updateField = (0, _react.useCallback)((key, value) => {
62
+ setFormData(prev => ({
63
+ ...prev,
64
+ [key]: value
65
+ }));
66
+ }, []);
67
+ const handleSubmit = (0, _react.useCallback)(() => {
68
+ if (!isFormValid || isSubmitting) return;
69
+ setIsSubmitting(true);
70
+ const validatedData = {};
71
+ for (const [key] of Object.entries(properties)) {
72
+ const value = formData[key];
73
+ const isReq = required.includes(key);
74
+ if (!isReq && (value === '' || value === null || value === undefined)) continue;
75
+ validatedData[key] = value;
76
+ }
77
+ onSubmit?.(validatedData);
78
+ setTimeout(() => setIsSubmitting(false), 500);
79
+ }, [formData, isFormValid, isSubmitting, onSubmit, properties, required]);
80
+
81
+ // View mode — show submitted output
82
+ if (isViewMode) {
83
+ const displayData = output?.result || output || formData;
84
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
85
+ style: {
86
+ borderRadius: 10,
87
+ borderWidth: 1,
88
+ borderColor: theme.colors.border,
89
+ backgroundColor: theme.colors.card,
90
+ padding: 14,
91
+ marginVertical: 4,
92
+ gap: 8
93
+ },
94
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
95
+ style: {
96
+ flexDirection: 'row',
97
+ alignItems: 'center',
98
+ gap: 6
99
+ },
100
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideReactNative.CheckCircle2, {
101
+ size: 16,
102
+ color: "#16a34a"
103
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
104
+ style: {
105
+ fontSize: 14,
106
+ fontWeight: '500',
107
+ color: theme.colors.foreground
108
+ },
109
+ children: "Thanks for your input"
110
+ })]
111
+ }), fieldKeys.length > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
112
+ style: {
113
+ gap: 6
114
+ },
115
+ children: fieldKeys.map(key => {
116
+ const prop = properties[key] ?? {};
117
+ const val = displayData[key];
118
+ const display = val === null || val === undefined ? '-' : String(val);
119
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
120
+ style: {
121
+ flexDirection: 'row',
122
+ gap: 6
123
+ },
124
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
125
+ style: {
126
+ fontSize: 12,
127
+ fontWeight: '500',
128
+ color: theme.colors.mutedForeground,
129
+ width: 100
130
+ },
131
+ children: prop.title || key
132
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
133
+ style: {
134
+ fontSize: 12,
135
+ color: theme.colors.foreground,
136
+ flex: 1
137
+ },
138
+ children: display
139
+ })]
140
+ }, key);
141
+ })
142
+ }) : null]
143
+ });
144
+ }
145
+
146
+ // Input mode — render form
147
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
148
+ style: {
149
+ borderRadius: 10,
150
+ borderWidth: 1,
151
+ borderColor: theme.colors.border,
152
+ backgroundColor: theme.colors.card,
153
+ padding: 14,
154
+ marginVertical: 4,
155
+ gap: 10
156
+ },
157
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
158
+ style: {
159
+ gap: 4
160
+ },
161
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
162
+ style: {
163
+ fontSize: 14,
164
+ fontWeight: '500',
165
+ color: theme.colors.foreground
166
+ },
167
+ children: title || 'User Input Required'
168
+ }), description ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
169
+ style: {
170
+ fontSize: 12,
171
+ color: theme.colors.mutedForeground,
172
+ lineHeight: 17
173
+ },
174
+ children: description
175
+ }) : null]
176
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
177
+ style: {
178
+ maxHeight: 400
179
+ },
180
+ nestedScrollEnabled: true,
181
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
182
+ style: {
183
+ gap: 12
184
+ },
185
+ children: fieldKeys.map(key => {
186
+ const prop = properties[key] ?? {};
187
+ const isReq = required.includes(key);
188
+ const label = prop.title || key;
189
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
190
+ style: {
191
+ gap: 4
192
+ },
193
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
194
+ style: {
195
+ fontSize: 12,
196
+ fontWeight: '500',
197
+ color: theme.colors.foreground
198
+ },
199
+ children: [label, isReq ? ' *' : '']
200
+ }), prop.description ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
201
+ style: {
202
+ fontSize: 11,
203
+ color: theme.colors.mutedForeground
204
+ },
205
+ children: prop.description
206
+ }) : null, renderField(prop, key, formData[key], updateField, theme)]
207
+ }, key);
208
+ })
209
+ })
210
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
211
+ style: {
212
+ flexDirection: 'row',
213
+ gap: 8,
214
+ paddingTop: 10,
215
+ borderTopWidth: 1,
216
+ borderTopColor: theme.colors.border
217
+ },
218
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
219
+ onPress: handleSubmit,
220
+ disabled: !isFormValid || isSubmitting,
221
+ style: {
222
+ flexDirection: 'row',
223
+ alignItems: 'center',
224
+ gap: 5,
225
+ backgroundColor: isFormValid && !isSubmitting ? theme.colors.primary : theme.colors.muted,
226
+ paddingHorizontal: 14,
227
+ paddingVertical: 8,
228
+ borderRadius: 8
229
+ },
230
+ children: [isSubmitting ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
231
+ size: "small",
232
+ color: "#ffffff"
233
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideReactNative.Check, {
234
+ size: 14,
235
+ color: "#ffffff"
236
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
237
+ style: {
238
+ fontSize: 13,
239
+ fontWeight: '600',
240
+ color: '#ffffff'
241
+ },
242
+ children: submitLabel || 'Submit'
243
+ })]
244
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
245
+ onPress: onCancel,
246
+ disabled: isSubmitting,
247
+ style: {
248
+ flexDirection: 'row',
249
+ alignItems: 'center',
250
+ gap: 5,
251
+ backgroundColor: theme.colors.muted,
252
+ paddingHorizontal: 14,
253
+ paddingVertical: 8,
254
+ borderRadius: 8
255
+ },
256
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_lucideReactNative.X, {
257
+ size: 14,
258
+ color: theme.colors.mutedForeground
259
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
260
+ style: {
261
+ fontSize: 13,
262
+ fontWeight: '500',
263
+ color: theme.colors.mutedForeground
264
+ },
265
+ children: "Cancel"
266
+ })]
267
+ })]
268
+ })]
269
+ });
270
+ }
271
+ RequestUserInputTool.displayName = 'RequestUserInputTool';
272
+
273
+ /* ------------------------------------------------------------------ */
274
+ /* Field renderers */
275
+ /* ------------------------------------------------------------------ */
276
+
277
+ function renderField(prop, key, value, onChange, theme) {
278
+ // Boolean → switch
279
+ if (prop.type === 'boolean') {
280
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Switch, {
281
+ value: !!value,
282
+ onValueChange: v => onChange(key, v),
283
+ trackColor: {
284
+ false: theme.colors.muted,
285
+ true: theme.colors.primary
286
+ }
287
+ });
288
+ }
289
+
290
+ // Enum → selectable chips
291
+ if (prop.enum && prop.enum.length > 0) {
292
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
293
+ style: {
294
+ flexDirection: 'row',
295
+ flexWrap: 'wrap',
296
+ gap: 6
297
+ },
298
+ children: prop.enum.map(opt => {
299
+ const selected = value === opt;
300
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
301
+ onPress: () => onChange(key, opt),
302
+ style: {
303
+ paddingHorizontal: 10,
304
+ paddingVertical: 6,
305
+ borderRadius: 6,
306
+ borderWidth: 1,
307
+ borderColor: selected ? theme.colors.primary : theme.colors.border,
308
+ backgroundColor: selected ? `${theme.colors.primary}15` : 'transparent'
309
+ },
310
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
311
+ style: {
312
+ fontSize: 12,
313
+ color: selected ? theme.colors.primary : theme.colors.foreground
314
+ },
315
+ children: String(opt)
316
+ })
317
+ }, String(opt));
318
+ })
319
+ });
320
+ }
321
+
322
+ // Number
323
+ if (prop.type === 'number' || prop.type === 'integer') {
324
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
325
+ value: value === '' || value === undefined ? '' : String(value),
326
+ onChangeText: t => onChange(key, t === '' ? '' : Number(t)),
327
+ keyboardType: "numeric",
328
+ placeholder: "Enter number",
329
+ placeholderTextColor: theme.colors.mutedForeground,
330
+ style: {
331
+ borderWidth: 1,
332
+ borderColor: theme.colors.border,
333
+ borderRadius: 8,
334
+ paddingHorizontal: 10,
335
+ paddingVertical: 8,
336
+ fontSize: 13,
337
+ color: theme.colors.foreground,
338
+ backgroundColor: theme.isDark ? theme.colors.muted : '#ffffff'
339
+ }
340
+ });
341
+ }
342
+
343
+ // Default: text input (multiline for long text)
344
+ const isLong = prop.type === 'string' && (prop.title?.toLowerCase().includes('description') || prop.title?.toLowerCase().includes('content'));
345
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
346
+ value: value ?? '',
347
+ onChangeText: t => onChange(key, t),
348
+ placeholder: `Enter ${prop.title || key}`,
349
+ placeholderTextColor: theme.colors.mutedForeground,
350
+ multiline: isLong,
351
+ numberOfLines: isLong ? 3 : 1,
352
+ style: {
353
+ borderWidth: 1,
354
+ borderColor: theme.colors.border,
355
+ borderRadius: 8,
356
+ paddingHorizontal: 10,
357
+ paddingVertical: 8,
358
+ fontSize: 13,
359
+ color: theme.colors.foreground,
360
+ backgroundColor: theme.isDark ? theme.colors.muted : '#ffffff',
361
+ minHeight: isLong ? 72 : undefined,
362
+ textAlignVertical: isLong ? 'top' : 'center'
363
+ }
364
+ });
365
+ }
366
+ //# sourceMappingURL=request-user-input-tool.js.map