@dust-tt/sparkle 0.2.637 → 0.2.638-rc-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.
Files changed (65) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/esm/components/LoadingBlock.js +1 -1
  3. package/dist/esm/components/LoadingBlock.js.map +1 -1
  4. package/dist/esm/components/markdown/Markdown.d.ts +14 -0
  5. package/dist/esm/components/markdown/Markdown.d.ts.map +1 -1
  6. package/dist/esm/components/markdown/Markdown.js +18 -7
  7. package/dist/esm/components/markdown/Markdown.js.map +1 -1
  8. package/dist/esm/components/streaming/BlockStreamer.d.ts +8 -0
  9. package/dist/esm/components/streaming/BlockStreamer.d.ts.map +1 -0
  10. package/dist/esm/components/streaming/BlockStreamer.js +40 -0
  11. package/dist/esm/components/streaming/BlockStreamer.js.map +1 -0
  12. package/dist/esm/components/streaming/StreamingListItem.d.ts +14 -0
  13. package/dist/esm/components/streaming/StreamingListItem.d.ts.map +1 -0
  14. package/dist/esm/components/streaming/StreamingListItem.js +93 -0
  15. package/dist/esm/components/streaming/StreamingListItem.js.map +1 -0
  16. package/dist/esm/components/streaming/StreamingMarkdown.d.ts +5 -0
  17. package/dist/esm/components/streaming/StreamingMarkdown.d.ts.map +1 -0
  18. package/dist/esm/components/streaming/StreamingMarkdown.js +80 -0
  19. package/dist/esm/components/streaming/StreamingMarkdown.js.map +1 -0
  20. package/dist/esm/components/streaming/StreamingParagraph.d.ts +14 -0
  21. package/dist/esm/components/streaming/StreamingParagraph.d.ts.map +1 -0
  22. package/dist/esm/components/streaming/StreamingParagraph.js +41 -0
  23. package/dist/esm/components/streaming/StreamingParagraph.js.map +1 -0
  24. package/dist/esm/components/streaming/index.d.ts +3 -0
  25. package/dist/esm/components/streaming/index.d.ts.map +1 -0
  26. package/dist/esm/components/streaming/index.js +2 -0
  27. package/dist/esm/components/streaming/index.js.map +1 -0
  28. package/dist/esm/components/streaming/markdownComponents.d.ts +11 -0
  29. package/dist/esm/components/streaming/markdownComponents.d.ts.map +1 -0
  30. package/dist/esm/components/streaming/markdownComponents.js +85 -0
  31. package/dist/esm/components/streaming/markdownComponents.js.map +1 -0
  32. package/dist/esm/components/streaming/types.d.ts +70 -0
  33. package/dist/esm/components/streaming/types.d.ts.map +1 -0
  34. package/dist/esm/components/streaming/types.js +10 -0
  35. package/dist/esm/components/streaming/types.js.map +1 -0
  36. package/dist/esm/components/streaming/utils.d.ts +18 -0
  37. package/dist/esm/components/streaming/utils.d.ts.map +1 -0
  38. package/dist/esm/components/streaming/utils.js +97 -0
  39. package/dist/esm/components/streaming/utils.js.map +1 -0
  40. package/dist/esm/index.d.ts +1 -0
  41. package/dist/esm/index.d.ts.map +1 -1
  42. package/dist/esm/index.js +1 -0
  43. package/dist/esm/index.js.map +1 -1
  44. package/dist/esm/stories/StreamingMarkdown.stories.d.ts +12 -0
  45. package/dist/esm/stories/StreamingMarkdown.stories.d.ts.map +1 -0
  46. package/dist/esm/stories/StreamingMarkdown.stories.js +620 -0
  47. package/dist/esm/stories/StreamingMarkdown.stories.js.map +1 -0
  48. package/dist/esm/styles/global.css +43 -0
  49. package/dist/esm/styles/tailwind.css +43 -0
  50. package/dist/sparkle.css +56 -0
  51. package/package.json +2 -1
  52. package/src/components/LoadingBlock.tsx +1 -1
  53. package/src/components/markdown/Markdown.tsx +35 -12
  54. package/src/components/streaming/BlockStreamer.tsx +61 -0
  55. package/src/components/streaming/StreamingListItem.tsx +176 -0
  56. package/src/components/streaming/StreamingMarkdown.tsx +126 -0
  57. package/src/components/streaming/StreamingParagraph.tsx +104 -0
  58. package/src/components/streaming/index.ts +2 -0
  59. package/src/components/streaming/markdownComponents.tsx +270 -0
  60. package/src/components/streaming/types.ts +72 -0
  61. package/src/components/streaming/utils.ts +126 -0
  62. package/src/index.ts +1 -0
  63. package/src/stories/StreamingMarkdown.stories.tsx +1454 -0
  64. package/src/styles/global.css +43 -0
  65. package/src/styles/tailwind.css +43 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamingMarkdown.stories.js","sourceRoot":"","sources":["../../../src/stories/StreamingMarkdown.stories.tsx"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAepE,IAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAuB;IACjE,UAAU,EAAE,EAAE;IACd,sBAAsB,EAAE,cAAM,OAAA,IAAI,EAAJ,CAAI;CACnC,CAAC,CAAC;AAQH,SAAS,SAAS,CAAC,KAAqB;IAChC,IAAA,KACJ,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAD5B,UAAU,gBAAA,EAAE,sBAAsB,4BACN,CAAC;IACrC,IAAM,IAAI,GAAG,KAAK,CAAC,UAAU;QAC3B,CAAC,CACG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAC5B,CAAC,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,GAAG,IAAI,UAAU,EAAnB,CAAmB,CAAC;QACtC,CAAC,CAAC,SAAS,CAAC;IAEd,KAAK,CAAC,SAAS,CAAC;QACd,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,UAAC,CAAC;gBACb,IAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACnC,sBAAsB,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAE/C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,iCACG,IAAI,CAAC,GAAG,CAAC,UAAC,CAAC,EAAE,GAAG;;QAAK,OAAA,CACpB,8BAAM,GAAG,EAAE,CAAC,CAAC,GAAG;YACd,8BACE,SAAS,EAAC,iNAAiN,EAC3N,KAAK,EAAE,MAAA,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,0CAAE,KAAK,IAE9B,CAAC,CAAC,OAAO,CACL;YACN,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CACxB,CACR,CAAA;KAAA,CAAC,CACE,CACP,CAAC;AACJ,CAAC;AAED,4CAA4C;AAC5C,SAAS,YAAY,CAAC,EAQrB;QAPC,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,OAAO,aAAA;IAMP,OAAO,CACL,8BACE,SAAS,EAAC,4FAA4F,EACtG,OAAO,EAAE,cAAM,OAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,QAAQ,CAAC,EAAnB,CAAmB;;QAEhC,SAAS,CACN,CACR,CAAC;AACJ,CAAC;AAED,yCAAyC;AACzC,SAAS,gBAAgB;IACvB,OAAO;QACL,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAM,OAAO,GAA8B,EAAE,CAAC;QAE9C,OAAO,UAAC,IAAU;YAChB,KAAK,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,UAAC,IAAS;;gBACvC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,KAAI,MAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAA,EAAE,CAAC;oBACpD,IAAM,UAAU,GAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,0CAAE,KAAK,CACvC,KAAK,CAAC,GAAG,EACT,GAAG,CAAC,UAAC,GAAW,IAAK,OAAA,CAAC;wBACrB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,EAAE,CAAC;wBACtD,GAAG,KAAA;qBACJ,CAAC,EAHoB,CAGpB,CAAC,CAAC;oBAEN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;oBACxB,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO,cAAM,OAAA,UAAC,IAAU;QACtB,KAAK,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,UAAC,IAAS;;YACvC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,KAAI,MAAA,IAAI,CAAC,QAAQ,0CAAG,CAAC,CAAC,CAAA,EAAE,CAAC;gBAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG;oBACtB,QAAQ,EAAE,MAAA,IAAI,CAAC,UAAU,0CAAE,GAAG;oBAC9B,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK;iBAClC,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EAXY,CAWZ,CAAC;AACJ,CAAC;AAED,IAAM,IAAI,GAAmC;IAC3C,KAAK,EAAE,8BAA8B;IACrC,SAAS,EAAE,iBAAiB;IAC5B,UAAU,EAAE;QACV,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,SAAS,EACP,kEAAkE;aACrE;SACF;KACF;IACD,QAAQ,EAAE;QACR,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAClC,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QACtC,uBAAuB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC5C,cAAc,EAAE;YACd,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,QAAQ,CAAC;YAC9D,WAAW,EAAE,6CAA6C;SAC3D;KACF;IACD,IAAI,EAAE;QACJ,iBAAiB,EAAE,OAAO;QAC1B,uBAAuB,EAAE,UAAU;QACnC,cAAc,EAAE,QAAQ;KACzB;CACF,CAAC;AAEF,eAAe,IAAI,CAAC;AAEpB,MAAM,CAAC,IAAM,wBAAwB,GAAU;IAC7C,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,KAAK,EACH,iJAAiJ;aACpJ;SACF;KACF;IACD,MAAM,EAAE,UAAC,IAAI;QACX,IAAM,WAAW,GAAG,gQAAgQ,CAAC;QAE/Q,IAAA,KAAA,OAAwB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,EAAxC,OAAO,QAAA,EAAE,UAAU,QAAqB,CAAC;QAEhD,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE;YAC/D,gCACE,OAAO,EAAE,cAAM,OAAA,UAAU,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,CAAC,EAAxB,CAAwB,EACvC,KAAK,EAAE;oBACL,KAAK,EAAE,aAAa;oBACpB,OAAO,EAAE,UAAU;oBACnB,YAAY,EAAE,CAAC;oBACf,MAAM,EAAE,gBAAgB;oBACxB,UAAU,EAAE,SAAS;oBACrB,MAAM,EAAE,SAAS;iBAClB,sCAGM;YAET,6BACE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE;gBAEnE,6BACE,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;oBAEjE,4BAAI,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB;oBACjE,oBAAC,iBAAiB,aAChB,GAAG,EAAE,iBAAU,OAAO,CAAE,IACpB,IAAI,IACR,OAAO,EAAE,WAAW,EACpB,cAAc,EAAC,QAAQ,EACvB,iBAAiB,EAAC,QAAQ,IAC1B,CACE;gBAEN,6BACE,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;oBAEjE,4BAAI,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,8BAErC;oBACL,oBAAC,iBAAiB,aAChB,GAAG,EAAE,qBAAc,OAAO,CAAE,IACxB,IAAI,IACR,OAAO,EAAE,WAAW,EACpB,cAAc,EAAC,YAAY,EAC3B,iBAAiB,EAAC,QAAQ,IAC1B,CACE;gBAEN,6BACE,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;oBAEjE,4BAAI,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB;oBAChE,oBAAC,iBAAiB,aAChB,GAAG,EAAE,0BAAmB,OAAO,CAAE,IAC7B,IAAI,IACR,OAAO,EAAE,WAAW,EACpB,cAAc,EAAC,iBAAiB,EAChC,iBAAiB,EAAC,QAAQ,IAC1B,CACE;gBAEN,6BACE,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;oBAEjE,4BAAI,KAAK,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,6BAErC;oBACL,oBAAC,iBAAiB,aAChB,GAAG,EAAE,gBAAS,OAAO,CAAE,IACnB,IAAI,IACR,OAAO,EAAE,WAAW,EACpB,cAAc,EAAC,YAAY,EAC3B,iBAAiB,EAAC,OAAO,IACzB,CACE,CACF,CACF,CACP,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAU;IACtC,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,KAAK,EACH,sEAAsE;aACzE;SACF;KACF;IACD,MAAM,EAAE,UAAC,IAAI;QACX,IAAM,WAAW,GAAG,ooBA4B2B,CAAC;QAE1C,IAAA,KAAA,OAAwB,KAAK,CAAC,QAAQ,CAAS,EAAE,CAAC,IAAA,EAAjD,OAAO,QAAA,EAAE,UAAU,QAA8B,CAAC;QACnD,IAAA,KAAA,OAAgC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAA,EAApD,WAAW,QAAA,EAAE,cAAc,QAAyB,CAAC;QAE5D,IAAM,cAAc,GAAG;YACrB,UAAU,CAAC,EAAE,CAAC,CAAC;YACf,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAM,SAAS,GAAG,CAAC,CAAC,CAAC,yCAAyC;YAC9D,IAAM,QAAQ,GAAG,WAAW,CAAC;gBAC3B,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;oBAC5B,aAAa,CAAC,QAAQ,CAAC,CAAC;oBACxB,cAAc,CAAC,KAAK,CAAC,CAAC;oBACtB,OAAO;gBACT,CAAC;gBACD,IAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;gBACjD,CAAC,IAAI,SAAS,CAAC;gBACf,UAAU,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,GAAG,IAAI,EAAX,CAAW,CAAC,CAAC;YACpC,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC,CAAC;QAEF,OAAO,CACL;YACE,6BAAK,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;gBAC9B,gCACE,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE;wBACL,OAAO,EAAE,UAAU;wBACnB,YAAY,EAAE,CAAC;wBACf,MAAM,EAAE,gBAAgB;wBACxB,MAAM,EAAE,SAAS;qBAClB,sBAGM;gBACT,8BAAM,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,IAC5B,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CACvC,CACH;YACN,6BAAK,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE;gBACpE,oBAAC,iBAAiB,eAAK,IAAI,IAAE,OAAO,EAAE,OAAO,IAAI,CAC7C;YACN,6BAAK,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;;gBACvC,OAAO,CAAC,MAAM;;gBAAK,WAAW,CAAC,MAAM,CAClD,CACF,CACP,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAU;IACtC,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,KAAK,EAAE,sDAAsD;aAC9D;SACF;KACF;IACD,MAAM,EAAE,UAAC,IAAI;QACX,IAAM,aAAa,GAAG,sUAgBzB,CAAC;QAEE,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,EAAE;YACtE;gBACE,6DAAmC;gBACnC,oBAAC,gBAAgB,CAAC,QAAQ,IACxB,KAAK,EAAE;wBACL,UAAU,EAAE,cAAc;wBAC1B,sBAAsB,EAAE,cAAO,CAAC;qBACjC;oBAED,oBAAC,iBAAiB,eACZ,IAAI,IACR,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,KAAK,EAClB,4BAA4B,EAC1B;4BACE,GAAG,EAAE,SAAS;4BACd,OAAO,EAAE,YAAY;yBACR,EAEjB,yBAAyB,EAAE;4BACzB,gBAAgB,EAAE;4BAClB,mBAAmB,EAAE;yBACtB,IACD,CACwB,CACxB;YACN;gBACE,+DAAqC;gBACrC,oBAAC,gBAAgB,CAAC,QAAQ,IACxB,KAAK,EAAE;wBACL,UAAU,EAAE,cAAc;wBAC1B,sBAAsB,EAAE,cAAO,CAAC;qBACjC;oBAED,oBAAC,iBAAiB,eACZ,IAAI,IACR,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,IAAI,EACjB,4BAA4B,EAC1B;4BACE,GAAG,EAAE,SAAS;4BACd,OAAO,EAAE,YAAY;yBACR,EAEjB,yBAAyB,EAAE;4BACzB,gBAAgB,EAAE;4BAClB,mBAAmB,EAAE;yBACtB,IACD,CACwB,CACxB,CACF,CACP,CAAC;IACJ,CAAC;CACF,CAAC;AAGF,0DAA0D;AAC1D,SAAS,OAAO,CAAC,IAAY;IAC3B,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;IACnB,OAAO;QACL,aAAa;QACb,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACb,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACZ,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;IACrC,CAAC,CAAC;AACJ,CAAC;AAED,IAAM,WAAW,GAAG,+6CAwCnB,CAAC;AAEF,IAAM,OAAO,GAAG,krcAwZ8C,CAAC;AAE/D,IAAM,cAAc,GAAG;IACrB,EAAE,EAAE;QACF,KAAK,EAAE,sCAAsC;QAC7C,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;QACnC,IAAI,EAAE,IAAI;KACX;IACD,EAAE,EAAE;QACF,KAAK,EAAE,kCAAkC;QACzC,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,CAAC,eAAe,CAAC;QAC1B,IAAI,EAAE,IAAI;KACX;IACD,EAAE,EAAE;QACF,KAAK,EAAE,kCAAkC;QACzC,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;QACtC,IAAI,EAAE,IAAI;KACX;CACF,CAAC;AAEF,MAAM,CAAC,IAAM,oBAAoB,GAAU;IACzC,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,KAAK,EACH,oGAAoG;aACvG;SACF;KACF;IACD,MAAM,EAAE,UAAC,IAAI;QACL,IAAA,KAAA,OAAwB,KAAK,CAAC,QAAQ,CAAS,EAAE,CAAC,IAAA,EAAjD,OAAO,QAAA,EAAE,UAAU,QAA8B,CAAC;QACnD,IAAA,KAAA,OAAwB,KAAK,CAAC,QAAQ,CAAS,CAAC,CAAC,IAAA,EAAhD,OAAO,QAAA,EAAE,UAAU,QAA6B,CAAC;QAClD,IAAA,KAKF,IAAW,EAJb,wBAAqB,EAArB,gBAAgB,mBAAG,EAAE,KAAA,EACrB,gBAAa,EAAb,QAAQ,mBAAG,EAAE,KAAA,EACb,gBAAa,EAAb,QAAQ,mBAAG,EAAE,KAAA,EACb,YAAS,EAAT,IAAI,mBAAG,EAAE,KACI,CAAC;QAEhB,KAAK,CAAC,SAAS,CAAC;YACd,IAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;YAChC,UAAU,CAAC,EAAE,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACzC,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;YACnD,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1D,IAAM,EAAE,GAAG,WAAW,CAAC;gBACrB,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACrB,aAAa,CAAC,EAAE,CAAC,CAAC;oBAClB,OAAO;gBACT,CAAC;gBACD,IAAM,CAAC,GAAG,IAAI,EAAE,CAAC;gBACjB,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC/C,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;gBACrC,CAAC,IAAI,IAAI,CAAC;gBACV,UAAU,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,GAAG,IAAI,EAAR,CAAQ,CAAC,CAAC;YAC9B,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,OAAO,cAAM,OAAA,aAAa,CAAC,EAAE,CAAC,EAAjB,CAAiB,CAAC;QACjC,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAE1D,IAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAAC,UAAC,QAAgB;YAC5D,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAC1C,KAAK,CAAC,2BAAoB,QAAQ,CAAE,CAAC,CAAC;QACxC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAM,qBAAqB,GAAyB,KAAK,CAAC,OAAO,CAC/D,cAAM,OAAA,CAAC;YACL,UAAU,EAAE,cAAc;YAC1B,sBAAsB,EAAE,UAAC,GAAG,EAAE,KAAK;gBACjC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;SACF,CAAC,EALI,CAKJ,EACF,EAAE,CACH,CAAC;QAEF,IAAM,oBAAoB,GAAe,KAAK,CAAC,OAAO,CACpD,cAAM,OAAA,CAAC;YACL,GAAG,EAAE,SAAS;YACd,OAAO,EAAE,UAAC,KAA8C,IAAK,OAAA,CAC3D,oBAAC,YAAY,IACX,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,OAAO,EAAE,kBAAkB,GAC3B,CACH,EAN4D,CAM5D;SACF,CAAC,EATI,CASJ,EACF,CAAC,kBAAkB,CAAC,CACrB,CAAC;QAEF,IAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CACrC,cAAM,OAAA,CAAC,gBAAgB,EAAE,EAAE,mBAAmB,EAAE,CAAC,EAA3C,CAA2C,EACjD,EAAE,CACH,CAAC;QAEF,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;YACtC;gBACE,gCACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAM,OAAA,UAAU,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,CAAC,EAAxB,CAAwB,EACvC,KAAK,EAAE;wBACL,OAAO,EAAE,UAAU;wBACnB,YAAY,EAAE,CAAC;wBACf,MAAM,EAAE,kCAAkC;wBAC1C,UAAU,EAAE,uBAAuB;wBACnC,MAAM,EAAE,SAAS;qBAClB,wBAGM,CACL;YACN,oBAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,qBAAqB;gBACrD,oBAAC,iBAAiB,aAChB,GAAG,EAAE,OAAO,IACR,IAAI,IACR,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,IAAI,EACjB,4BAA4B,EAAE,oBAAoB,EAClD,yBAAyB,EAAE,iBAAiB,IAC5C,CACwB,CACxB,CACP,CAAC;IACJ,CAAC;IACD,IAAI,EAAE;QACJ,gBAAgB,EAAE,EAAE;QACpB,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,EAAE;KACF;IACR,QAAQ,EAAE;QACR,gBAAgB,EAAE;YAChB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;YACvD,WAAW,EAAE,wCAAwC;SACtD;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;YACpD,WAAW,EAAE,oBAAoB;SAClC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;YACtD,WAAW,EAAE,oBAAoB;SAClC;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,WAAW,EAAE,aAAa;SAC3B;QACD,WAAW,EAAE;YACX,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,6BAA6B;SAC3C;KACK;CACT,CAAC;AAEF,MAAM,CAAC,IAAM,iBAAiB,GAAU;IACtC,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,KAAK,EACH,mQAAmQ;aACtQ;SACF;KACF;IACD,MAAM,EAAE,UAAC,IAAI;QACL,IAAA,KAAA,OAAwB,KAAK,CAAC,QAAQ,CAAS,EAAE,CAAC,IAAA,EAAjD,OAAO,QAAA,EAAE,UAAU,QAA8B,CAAC;QACnD,IAAA,KAAA,OAAwB,KAAK,CAAC,QAAQ,CAAS,CAAC,CAAC,IAAA,EAAhD,OAAO,QAAA,EAAE,UAAU,QAA6B,CAAC;QAClD,IAAA,KAKF,IAAW,EAJb,wBAAqB,EAArB,gBAAgB,mBAAG,EAAE,KAAA,EACrB,gBAAa,EAAb,QAAQ,mBAAG,EAAE,KAAA,EACb,gBAAa,EAAb,QAAQ,mBAAG,EAAE,KAAA,EACb,YAAS,EAAT,IAAI,mBAAG,EAAE,KACI,CAAC;QAEhB,KAAK,CAAC,SAAS,CAAC;YACd,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC5B,UAAU,CAAC,EAAE,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACzC,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;YACnD,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAC;YAC3D,IAAM,EAAE,GAAG,WAAW,CAAC;gBACrB,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACrB,aAAa,CAAC,EAAE,CAAC,CAAC;oBAClB,OAAO;gBACT,CAAC;gBACD,gDAAgD;gBAChD,IAAM,CAAC,GAAG,IAAI,EAAE,CAAC;gBACjB,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC/C,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;gBACrC,CAAC,IAAI,IAAI,CAAC;gBACV,UAAU,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,GAAG,IAAI,EAAR,CAAQ,CAAC,CAAC;YAC9B,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,OAAO,cAAM,OAAA,aAAa,CAAC,EAAE,CAAC,EAAjB,CAAiB,CAAC;QACjC,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAE1D,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;YACtC;gBACE,gCACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE;wBACP,UAAU,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,CAAC,CAAC;oBAC3B,CAAC,EACD,KAAK,EAAE;wBACL,OAAO,EAAE,UAAU;wBACnB,YAAY,EAAE,CAAC;wBACf,MAAM,EAAE,kCAAkC;wBAC1C,UAAU,EAAE,uBAAuB;wBACnC,MAAM,EAAE,SAAS;qBAClB,wBAGM,CACL;YACN,oBAAC,iBAAiB,aAAC,GAAG,EAAE,OAAO,IAAM,IAAI,IAAE,OAAO,EAAE,OAAO,IAAI,CAC3D,CACP,CAAC;IACJ,CAAC;IACD,IAAI,EAAE;QACJ,gBAAgB,EAAE,EAAE;QACpB,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,EAAE;KACF;IACR,QAAQ,EAAE;QACR,gBAAgB,EAAE;YAChB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;YACvD,WAAW,EAAE,wCAAwC;SACtD;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;YACpD,WAAW,EAAE,oBAAoB;SAClC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;YACtD,WAAW,EAAE,oBAAoB;SAClC;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,WAAW,EAAE,aAAa;SAC3B;KACK;CACT,CAAC;AAEF,MAAM,CAAC,IAAM,+BAA+B,GAAU;IACpD,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,WAAW,EAAE;gBACX,KAAK,EACH,iLAAiL;aACpL;SACF;KACF;IACD,MAAM,EAAE,UAAC,IAAI;QACL,IAAA,KAAA,OAAwB,KAAK,CAAC,QAAQ,CAAS,EAAE,CAAC,IAAA,EAAjD,OAAO,QAAA,EAAE,UAAU,QAA8B,CAAC;QACnD,IAAA,KAAA,OAAwB,KAAK,CAAC,QAAQ,CAAS,CAAC,CAAC,IAAA,EAAhD,OAAO,QAAA,EAAE,UAAU,QAA6B,CAAC;QAClD,IAAA,KAKF,IAAW,EAJb,wBAAqB,EAArB,gBAAgB,mBAAG,EAAE,KAAA,EACrB,gBAAa,EAAb,QAAQ,mBAAG,EAAE,KAAA,EACb,gBAAa,EAAb,QAAQ,mBAAG,EAAE,KAAA,EACb,YAAS,EAAT,IAAI,mBAAG,EAAE,KACI,CAAC;QAEhB,KAAK,CAAC,SAAS,CAAC;YACd,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YAC5B,UAAU,CAAC,EAAE,CAAC,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,IAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACzC,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;YACnD,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAC;YAC3D,IAAM,EAAE,GAAG,WAAW,CAAC;gBACrB,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACrB,aAAa,CAAC,EAAE,CAAC,CAAC;oBAClB,OAAO;gBACT,CAAC;gBACD,gDAAgD;gBAChD,IAAM,CAAC,GAAG,IAAI,EAAE,CAAC;gBACjB,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;gBAC/C,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;gBACrC,CAAC,IAAI,IAAI,CAAC;gBACV,UAAU,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,GAAG,IAAI,EAAR,CAAQ,CAAC,CAAC;YAC9B,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,OAAO,cAAM,OAAA,aAAa,CAAC,EAAE,CAAC,EAAjB,CAAiB,CAAC;QACjC,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAE1D,IAAM,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAAC,UAAC,QAAgB;YAC5D,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAC1C,KAAK,CAAC,2BAAoB,QAAQ,CAAE,CAAC,CAAC;QACxC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAM,qBAAqB,GAAyB,KAAK,CAAC,OAAO,CAC/D,cAAM,OAAA,CAAC;YACL,UAAU,EAAE,cAAc;YAC1B,sBAAsB,EAAE,UAAC,GAAG,EAAE,KAAK;gBACjC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;SACF,CAAC,EALI,CAKJ,EACF,EAAE,CACH,CAAC;QAEF,IAAM,oBAAoB,GAAe,KAAK,CAAC,OAAO,CACpD,cAAM,OAAA,CAAC;YACL,GAAG,EAAE,SAAS;YACd,OAAO,EAAE,UAAC,KAA8C,IAAK,OAAA,CAC3D,oBAAC,YAAY,IACX,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,OAAO,EAAE,kBAAkB,GAC3B,CACH,EAN4D,CAM5D;SACF,CAAC,EATI,CASJ,EACF,CAAC,kBAAkB,CAAC,CACrB,CAAC;QAEF,IAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CACrC,cAAM,OAAA,CAAC,gBAAgB,EAAE,EAAE,mBAAmB,EAAE,CAAC,EAA3C,CAA2C,EACjD,EAAE,CACH,CAAC;QAEF,0CAA0C;QAC1C,IAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;QAEhE,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE;YAC/D,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE;gBAC5D,gCACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAM,OAAA,UAAU,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,CAAC,EAAxB,CAAwB,EACvC,KAAK,EAAE;wBACL,OAAO,EAAE,UAAU;wBACnB,YAAY,EAAE,CAAC;wBACf,MAAM,EAAE,kCAAkC;wBAC1C,UAAU,EAAE,uBAAuB;wBACnC,MAAM,EAAE,SAAS;wBACjB,UAAU,EAAE,GAAG;qBAChB,qCAGM;gBACT,8BACE,KAAK,EAAE;wBACL,OAAO,EAAE,aAAa;wBACtB,UAAU,EAAE,QAAQ;wBACpB,GAAG,EAAE,CAAC;wBACN,OAAO,EAAE,UAAU;wBACnB,YAAY,EAAE,EAAE;wBAChB,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;wBACpD,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;wBAC/C,QAAQ,EAAE,EAAE;wBACZ,UAAU,EAAE,GAAG;qBAChB,IAEA,gBAAgB,CAAC,CAAC,CAAC,CAClB;oBACE,8BACE,KAAK,EAAE;4BACL,OAAO,EAAE,cAAc;4BACvB,KAAK,EAAE,CAAC;4BACR,MAAM,EAAE,CAAC;4BACT,YAAY,EAAE,KAAK;4BACnB,UAAU,EAAE,SAAS;4BACrB,SAAS,EAAE,qBAAqB;yBACjC,GACK;;oBACK,GAAG;oBACf,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;wBAC1D,CACJ,CAAC,CAAC,CAAC,CACF;oBACE,8BACE,KAAK,EAAE;4BACL,OAAO,EAAE,cAAc;4BACvB,KAAK,EAAE,CAAC;4BACR,MAAM,EAAE,CAAC;4BACT,YAAY,EAAE,KAAK;4BACnB,UAAU,EAAE,SAAS;yBACtB,GACK;+BAEP,CACJ,CACI,CACH;YAEN,6BACE,KAAK,EAAE;oBACL,OAAO,EAAE,MAAM;oBACf,mBAAmB,EAAE,SAAS;oBAC9B,GAAG,EAAE,EAAE;oBACP,SAAS,EAAE,GAAG;iBACf;gBAGD,6BACE,KAAK,EAAE;wBACL,MAAM,EAAE,mBAAmB;wBAC3B,YAAY,EAAE,CAAC;wBACf,OAAO,EAAE,EAAE;wBACX,UAAU,EAAE,iCAAiC;wBAC7C,QAAQ,EAAE,UAAU;wBACpB,QAAQ,EAAE,MAAM;qBACjB;oBAED,6BACE,KAAK,EAAE;4BACL,QAAQ,EAAE,QAAQ;4BAClB,GAAG,EAAE,CAAC,EAAE;4BACR,UAAU,EAAE,iCAAiC;4BAC7C,OAAO,EAAE,YAAY;4BACrB,SAAS,EAAE,CAAC,CAAC;4BACb,YAAY,EAAE,EAAE;4BAChB,YAAY,EAAE,mBAAmB;4BACjC,MAAM,EAAE,EAAE;yBACX;wBAED,4BACE,KAAK,EAAE;gCACL,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;gCAChB,QAAQ,EAAE,EAAE;gCACZ,UAAU,EAAE,GAAG;gCACf,OAAO,EAAE,MAAM;gCACf,UAAU,EAAE,QAAQ;gCACpB,GAAG,EAAE,CAAC;6BACP;;4BAGA,gBAAgB,IAAI,CACnB,8BACE,KAAK,EAAE;oCACL,QAAQ,EAAE,EAAE;oCACZ,UAAU,EAAE,SAAS;oCACrB,KAAK,EAAE,OAAO;oCACd,OAAO,EAAE,SAAS;oCAClB,YAAY,EAAE,EAAE;iCACjB,qBAGI,CACR,CACE;wBACL,2BAAG,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,qDAE3D,CACA;oBACN,oBAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,qBAAqB;wBACrD,oBAAC,iBAAiB,aAChB,GAAG,EAAE,oBAAa,OAAO,CAAE,IACvB,IAAI,IACR,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,gBAAgB,EAC7B,4BAA4B,EAAE,oBAAoB,EAClD,yBAAyB,EAAE,iBAAiB,IAC5C,CACwB,CACxB;gBAGN,6BACE,KAAK,EAAE;wBACL,MAAM,EAAE,mBAAmB;wBAC3B,YAAY,EAAE,CAAC;wBACf,OAAO,EAAE,EAAE;wBACX,UAAU,EAAE,iCAAiC;wBAC7C,QAAQ,EAAE,UAAU;wBACpB,QAAQ,EAAE,MAAM;qBACjB;oBAED,6BACE,KAAK,EAAE;4BACL,QAAQ,EAAE,QAAQ;4BAClB,GAAG,EAAE,CAAC,EAAE;4BACR,UAAU,EAAE,iCAAiC;4BAC7C,OAAO,EAAE,YAAY;4BACrB,SAAS,EAAE,CAAC,CAAC;4BACb,YAAY,EAAE,EAAE;4BAChB,YAAY,EAAE,mBAAmB;4BACjC,MAAM,EAAE,EAAE;yBACX;wBAED,4BACE,KAAK,EAAE;gCACL,MAAM,EAAE,CAAC;gCACT,KAAK,EAAE,SAAS;gCAChB,QAAQ,EAAE,EAAE;gCACZ,UAAU,EAAE,GAAG;gCACf,OAAO,EAAE,MAAM;gCACf,UAAU,EAAE,QAAQ;gCACpB,GAAG,EAAE,CAAC;6BACP;;4BAGA,gBAAgB,IAAI,CACnB,8BACE,KAAK,EAAE;oCACL,QAAQ,EAAE,EAAE;oCACZ,UAAU,EAAE,SAAS;oCACrB,KAAK,EAAE,OAAO;oCACd,OAAO,EAAE,SAAS;oCAClB,YAAY,EAAE,EAAE;iCACjB;;gCAEY,gBAAgB,CACxB,CACR,CACE;wBACL,2BAAG,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,sDAE3D,CACA;oBACN,oBAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,qBAAqB;wBACrD,oBAAC,QAAQ,IACP,GAAG,EAAE,qBAAc,OAAO,CAAE,EAC5B,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,gBAAgB,EAC7B,4BAA4B,EAAE,oBAAoB,EAClD,yBAAyB,EAAE,iBAAiB,GAC5C,CACwB,CACxB,CACF;YAEN,mCAAQ,gIAKP,CAAS,CACN,CACP,CAAC;IACJ,CAAC;IACD,IAAI,EAAE;QACJ,gBAAgB,EAAE,EAAE;QACpB,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,EAAE;KACF;IACR,QAAQ,EAAE;QACR,gBAAgB,EAAE;YAChB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;YACvD,WAAW,EAAE,wCAAwC;SACtD;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;YACpD,WAAW,EAAE,oBAAoB;SAClC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE;YACtD,WAAW,EAAE,oBAAoB;SAClC;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,WAAW,EAAE,6BAA6B;SAC3C;KACK;CACT,CAAC"}
@@ -63,3 +63,46 @@
63
63
  position: relative;
64
64
  top: 4px;
65
65
  }
66
+
67
+ /* Streaming markdown keyframes for preview (duplicated to ensure Storybook has them) */
68
+ @keyframes s-stream-fadeIn {
69
+ from {
70
+ opacity: 0;
71
+ }
72
+ to {
73
+ opacity: 1;
74
+ }
75
+ }
76
+
77
+ @keyframes s-stream-fadeInAccelerate {
78
+ 0% {
79
+ opacity: 0;
80
+ }
81
+ 60% {
82
+ opacity: 0.15;
83
+ }
84
+ 80% {
85
+ opacity: 0.5;
86
+ }
87
+ 100% {
88
+ opacity: 1;
89
+ }
90
+ }
91
+
92
+ @keyframes s-stream-fadeInAccelerateFast {
93
+ 0% {
94
+ opacity: 0;
95
+ }
96
+ 40% {
97
+ opacity: 0.1;
98
+ }
99
+ 60% {
100
+ opacity: 0.3;
101
+ }
102
+ 80% {
103
+ opacity: 0.7;
104
+ }
105
+ 100% {
106
+ opacity: 1;
107
+ }
108
+ }
@@ -24,3 +24,46 @@
24
24
  @apply s-bg-purple-100;
25
25
  }
26
26
  }
27
+
28
+ /* Streaming markdown keyframes (also duplicated in global.css for Storybook) */
29
+ @keyframes s-stream-fadeIn {
30
+ from {
31
+ opacity: 0;
32
+ }
33
+ to {
34
+ opacity: 1;
35
+ }
36
+ }
37
+
38
+ @keyframes s-stream-fadeInAccelerate {
39
+ 0% {
40
+ opacity: 0;
41
+ }
42
+ 60% {
43
+ opacity: 0.15;
44
+ }
45
+ 80% {
46
+ opacity: 0.5;
47
+ }
48
+ 100% {
49
+ opacity: 1;
50
+ }
51
+ }
52
+
53
+ @keyframes s-stream-fadeInAccelerateFast {
54
+ 0% {
55
+ opacity: 0;
56
+ }
57
+ 40% {
58
+ opacity: 0.1;
59
+ }
60
+ 60% {
61
+ opacity: 0.3;
62
+ }
63
+ 80% {
64
+ opacity: 0.7;
65
+ }
66
+ 100% {
67
+ opacity: 1;
68
+ }
69
+ }
package/dist/sparkle.css CHANGED
@@ -1505,6 +1505,10 @@ select {
1505
1505
  height: 98%;
1506
1506
  }
1507
1507
 
1508
+ .s-h-auto {
1509
+ height: auto;
1510
+ }
1511
+
1508
1512
  .s-h-fit {
1509
1513
  height: -moz-fit-content;
1510
1514
  height: fit-content;
@@ -5451,6 +5455,58 @@ select {
5451
5455
  }
5452
5456
  }
5453
5457
 
5458
+ /* Streaming markdown keyframes (also duplicated in global.css for Storybook) */
5459
+
5460
+ @keyframes s-stream-fadeIn {
5461
+ from {
5462
+ opacity: 0;
5463
+ }
5464
+
5465
+ to {
5466
+ opacity: 1;
5467
+ }
5468
+ }
5469
+
5470
+ @keyframes s-stream-fadeInAccelerate {
5471
+ 0% {
5472
+ opacity: 0;
5473
+ }
5474
+
5475
+ 60% {
5476
+ opacity: 0.15;
5477
+ }
5478
+
5479
+ 80% {
5480
+ opacity: 0.5;
5481
+ }
5482
+
5483
+ 100% {
5484
+ opacity: 1;
5485
+ }
5486
+ }
5487
+
5488
+ @keyframes s-stream-fadeInAccelerateFast {
5489
+ 0% {
5490
+ opacity: 0;
5491
+ }
5492
+
5493
+ 40% {
5494
+ opacity: 0.1;
5495
+ }
5496
+
5497
+ 60% {
5498
+ opacity: 0.3;
5499
+ }
5500
+
5501
+ 80% {
5502
+ opacity: 0.7;
5503
+ }
5504
+
5505
+ 100% {
5506
+ opacity: 1;
5507
+ }
5508
+ }
5509
+
5454
5510
  .file\:s-border-0::file-selector-button {
5455
5511
  border-width: 0px;
5456
5512
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dust-tt/sparkle",
3
- "version": "0.2.637",
3
+ "version": "0.2.638-rc-1",
4
4
  "scripts": {
5
5
  "build": "rm -rf dist && npm run tailwind && npm run build:esm && npm run build:cjs",
6
6
  "tailwind": "tailwindcss -i ./src/styles/tailwind.css -o dist/sparkle.css",
@@ -128,6 +128,7 @@
128
128
  "react-resizable-panels": "^2.1.7",
129
129
  "react-syntax-highlighter": "^15.6.1",
130
130
  "rehype-katex": "^7.0.1",
131
+ "rehype-raw": "^7.0.0",
131
132
  "remark-directive": "^2.0.1",
132
133
  "remark-gfm": "^3.0.1",
133
134
  "remark-math": "^5.1.1",
@@ -10,7 +10,7 @@ function LoadingBlock({
10
10
  <div
11
11
  className={cn(
12
12
  "s-animate-opacity-pulse s-rounded-md",
13
- "s-bg-muted dark:s-bg-muted-background-night",
13
+ "s-bg-muted dark:s-bg-muted-night",
14
14
  className
15
15
  )}
16
16
  {...props}
@@ -5,6 +5,7 @@ import ReactMarkdown from "react-markdown";
5
5
  import type { ReactMarkdownProps } from "react-markdown/lib/ast-to-react";
6
6
  import type { PluggableList } from "react-markdown/lib/react-markdown";
7
7
  import rehypeKatex from "rehype-katex";
8
+ import rehypeRaw from "rehype-raw";
8
9
  import remarkDirective from "remark-directive";
9
10
  import remarkGfm from "remark-gfm";
10
11
  import remarkMath from "remark-math";
@@ -191,16 +192,11 @@ export function Markdown({
191
192
  {children}
192
193
  </h6>
193
194
  ),
194
- strong: ({ children }) => (
195
- <strong className="s-font-semibold s-text-foreground dark:s-text-foreground-night">
196
- {children}
197
- </strong>
198
- ),
195
+ strong: StrongBlock,
199
196
  input: Input,
200
197
  blockquote: BlockquoteBlock,
201
- hr: () => (
202
- <div className="s-my-6 s-border-b s-border-primary-150 dark:s-border-primary-150-night" />
203
- ),
198
+ hr: HrBlock,
199
+ img: ImgBlock,
204
200
  code: CodeBlockWithExtendedSupport,
205
201
  ...additionalMarkdownComponents,
206
202
  };
@@ -217,7 +213,7 @@ export function Markdown({
217
213
  [additionalMarkdownPlugins]
218
214
  );
219
215
 
220
- const rehypePlugins = [[rehypeKatex, { output: "mathml" }]] as PluggableList;
216
+ const rehypePlugins = [[rehypeKatex, { output: "mathml" }], rehypeRaw] as PluggableList;
221
217
 
222
218
  try {
223
219
  return (
@@ -252,7 +248,7 @@ export function Markdown({
252
248
  }
253
249
  }
254
250
 
255
- function LinkBlock({
251
+ export function LinkBlock({
256
252
  href,
257
253
  children,
258
254
  }: {
@@ -276,12 +272,39 @@ function LinkBlock({
276
272
  );
277
273
  }
278
274
 
279
- type InputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "ref"> &
275
+ export function StrongBlock({ children }: { children: React.ReactNode }) {
276
+ return (
277
+ <strong className="s-font-semibold s-text-foreground dark:s-text-foreground-night">
278
+ {children}
279
+ </strong>
280
+ );
281
+ }
282
+
283
+ export function HrBlock() {
284
+ return (
285
+ <div className="s-my-6 s-border-b s-border-primary-150 dark:s-border-primary-150-night" />
286
+ );
287
+ }
288
+
289
+ export function ImgBlock(props: React.ImgHTMLAttributes<HTMLImageElement>) {
290
+ return (
291
+ <img
292
+ {...props}
293
+ className="s-h-auto s-max-w-full"
294
+ style={{
295
+ maxWidth: "100%",
296
+ height: "auto",
297
+ }}
298
+ />
299
+ );
300
+ }
301
+
302
+ export type InputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "ref"> &
280
303
  ReactMarkdownProps & {
281
304
  ref?: React.Ref<HTMLInputElement>;
282
305
  };
283
306
 
284
- function Input({
307
+ export function Input({
285
308
  type,
286
309
  checked,
287
310
  className,
@@ -0,0 +1,61 @@
1
+ import React from "react";
2
+
3
+ import type { BlockStreamerProps } from "./types";
4
+
5
+ /**
6
+ * BlockStreamer component handles the token-based streaming animation.
7
+ * It tracks new content as discrete diffs that animate independently.
8
+ */
9
+ export const BlockStreamer: React.FC<BlockStreamerProps> = ({
10
+ text,
11
+ animate = true,
12
+ animationName,
13
+ animationDuration,
14
+ animationTimingFunction,
15
+ }) => {
16
+ const prevRef = React.useRef<string>("");
17
+ const tokensRef = React.useRef<{ text: string; key: number }[]>([]);
18
+
19
+ // Keep tokens up to date so initial render is visible.
20
+ const prev = prevRef.current;
21
+ if (!prev || text.length < prev.length || !text.startsWith(prev)) {
22
+ tokensRef.current = text ? [{ text, key: 0 }] : [];
23
+ prevRef.current = text;
24
+ } else if (text !== prev) {
25
+ const suffix = text.slice(prev.length);
26
+ if (suffix.length > 0) {
27
+ tokensRef.current.push({
28
+ text: suffix,
29
+ key: tokensRef.current.length,
30
+ });
31
+ prevRef.current = text;
32
+ }
33
+ }
34
+
35
+ return (
36
+ <>
37
+ {tokensRef.current.map((t) => (
38
+ <span
39
+ key={t.key}
40
+ style={
41
+ animate
42
+ ? {
43
+ whiteSpace: "pre-wrap",
44
+ display: "inline",
45
+ animationName,
46
+ animationDuration,
47
+ animationTimingFunction,
48
+ animationIterationCount: 1,
49
+ }
50
+ : {
51
+ whiteSpace: "pre-wrap",
52
+ display: "inline",
53
+ }
54
+ }
55
+ >
56
+ {t.text}
57
+ </span>
58
+ ))}
59
+ </>
60
+ );
61
+ };
@@ -0,0 +1,176 @@
1
+ import React from "react";
2
+
3
+ import { LiBlock } from "@sparkle/components/markdown/List";
4
+ import { BlockStreamer } from "@sparkle/components/streaming/BlockStreamer";
5
+ import type { ComponentProps } from "@sparkle/components/streaming/types";
6
+ import {
7
+ getElementProps,
8
+ isCodeElement,
9
+ isListElement,
10
+ isReactElementWithProps,
11
+ isTableElement,
12
+ keyOf,
13
+ } from "@sparkle/components/streaming/utils";
14
+
15
+ interface StreamingListItemProps extends ComponentProps {
16
+ isStreaming: boolean;
17
+ animationName: string;
18
+ animationDuration: string;
19
+ animationTimingFunction: string;
20
+ textColor?: string;
21
+ forcedTextSize?: string;
22
+ sizes: Record<string, string>;
23
+ }
24
+
25
+ export function StreamingListItem({
26
+ node,
27
+ isStreaming,
28
+ animationName,
29
+ animationDuration,
30
+ animationTimingFunction,
31
+ textColor,
32
+ forcedTextSize,
33
+ sizes,
34
+ ...props
35
+ }: StreamingListItemProps) {
36
+ const bk = keyOf(node, "li");
37
+
38
+ // Process list item children to handle text streaming and nested lists.
39
+ const processChildren = (children: React.ReactNode): React.ReactNode => {
40
+ if (!children) {
41
+ return null;
42
+ }
43
+
44
+ // If it's just a string, animate it.
45
+ if (typeof children === "string") {
46
+ return (
47
+ <BlockStreamer
48
+ text={children}
49
+ animate={isStreaming}
50
+ animationName={animationName}
51
+ animationDuration={animationDuration}
52
+ animationTimingFunction={animationTimingFunction}
53
+ />
54
+ );
55
+ }
56
+
57
+ // Safety check: if it's a non-React object, don't try to process it.
58
+ if (
59
+ typeof children === "object" &&
60
+ children !== null &&
61
+ !React.isValidElement(children) &&
62
+ !Array.isArray(children)
63
+ ) {
64
+ console.warn("Unexpected object in processChildren:", children);
65
+ return null;
66
+ }
67
+
68
+ // If it's an array, process each child
69
+ if (Array.isArray(children)) {
70
+ // Filter out empty strings and newlines that might cause spacing.
71
+ const filtered = children.filter(
72
+ (child) => !(typeof child === "string" && child.trim() === "")
73
+ );
74
+
75
+ return filtered.map((child, idx) => {
76
+ if (typeof child === "string") {
77
+ return (
78
+ <BlockStreamer
79
+ key={idx}
80
+ text={child}
81
+ animate={isStreaming}
82
+ animationName={animationName}
83
+ animationDuration={animationDuration}
84
+ animationTimingFunction={animationTimingFunction}
85
+ />
86
+ );
87
+ }
88
+
89
+ // Nested lists are preserved as-is (they'll handle their own animation).
90
+ if (React.isValidElement(child) && isListElement(child)) {
91
+ return child;
92
+ }
93
+
94
+ // Table elements are preserved as-is.
95
+ if (isTableElement(child)) {
96
+ return child;
97
+ }
98
+
99
+ // For paragraph elements inside list items, extract and animate their content.
100
+ if (isReactElementWithProps(child) && child.type === "p") {
101
+ const props = getElementProps(child);
102
+ return processChildren(props.children);
103
+ }
104
+
105
+ // Code elements (including pre blocks) should be returned as-is.
106
+ if (isCodeElement(child)) {
107
+ return child;
108
+ }
109
+
110
+ // Other elements: recursively process their children.
111
+ if (isReactElementWithProps(child)) {
112
+ const childProps = getElementProps(child);
113
+
114
+ // Don't process children for certain element types that handle their own content
115
+ if (isCodeElement(child) || isTableElement(child)) {
116
+ return child;
117
+ }
118
+
119
+ // Skip processing if children is already a string (don't double-process)
120
+ if (typeof childProps.children === "string") {
121
+ return child;
122
+ }
123
+
124
+ // Clone the element with processed children
125
+ return React.cloneElement(
126
+ child,
127
+ { ...childProps, key: idx },
128
+ processChildren(childProps.children)
129
+ );
130
+ }
131
+
132
+ // If it's an object but not a React element, return empty string to avoid [object Object]
133
+ if (typeof child === "object" && child !== null) {
134
+ return null;
135
+ }
136
+
137
+ return child;
138
+ });
139
+ }
140
+
141
+ // Single React element
142
+ if (React.isValidElement(children)) {
143
+ if (isListElement(children)) {
144
+ return children;
145
+ }
146
+ // For paragraph elements, extract their content
147
+ if (children.type === "p") {
148
+ const props = getElementProps(children);
149
+ return processChildren(props.children);
150
+ }
151
+ // Code and table elements should be returned as-is
152
+ if (isCodeElement(children) || isTableElement(children)) {
153
+ return children;
154
+ }
155
+ const childProps = getElementProps(children);
156
+ return React.cloneElement(
157
+ children,
158
+ childProps,
159
+ processChildren(childProps.children)
160
+ );
161
+ }
162
+
163
+ return children;
164
+ };
165
+
166
+ return (
167
+ <LiBlock
168
+ key={bk}
169
+ textColor={textColor || ""}
170
+ textSize={forcedTextSize || sizes.p}
171
+ className="s-stream-marker"
172
+ >
173
+ {processChildren(props.children)}
174
+ </LiBlock>
175
+ );
176
+ }
@@ -0,0 +1,126 @@
1
+ "use client";
2
+ import React, { useMemo } from "react";
3
+ import type { Components } from "react-markdown";
4
+ import ReactMarkdown from "react-markdown";
5
+ import type { PluggableList } from "react-markdown/lib/react-markdown";
6
+ import rehypeKatex from "rehype-katex";
7
+ import rehypeRaw from "rehype-raw";
8
+ import remarkDirective from "remark-directive";
9
+ import remarkGfm from "remark-gfm";
10
+ import remarkMath from "remark-math";
11
+
12
+ import { Chip } from "@sparkle/components";
13
+ import { MarkdownContentContext } from "@sparkle/components/markdown/MarkdownContentContext";
14
+ import { sanitizeContent } from "@sparkle/components/markdown/utils";
15
+
16
+ import { createMarkdownComponents } from "./markdownComponents";
17
+ import type { ProcessChildrenContext,StreamingMarkdownProps } from "./types";
18
+ import { showUnsupportedDirective } from "./utils";
19
+
20
+ export const StreamingMarkdown: React.FC<StreamingMarkdownProps> = ({
21
+ content,
22
+ animationName,
23
+ animationDuration = "600ms",
24
+ animationTimingFunction = "ease-out",
25
+ animationCurve = "linear",
26
+ isStreaming = true,
27
+ isLastMessage = false,
28
+ textColor = "s-text-foreground dark:s-text-foreground-night",
29
+ forcedTextSize,
30
+ additionalMarkdownComponents,
31
+ additionalMarkdownPlugins,
32
+ }) => {
33
+ const effectiveAnimationName = useMemo(() => {
34
+ if (animationName) {return animationName;}
35
+
36
+ switch (animationCurve) {
37
+ case "accelerate":
38
+ return "s-stream-fadeInAccelerate";
39
+ case "accelerate-fast":
40
+ return "s-stream-fadeInAccelerateFast";
41
+ case "custom":
42
+ return "s-stream-fadeInCustom";
43
+ case "linear":
44
+ default:
45
+ return "s-stream-fadeIn";
46
+ }
47
+ }, [animationName, animationCurve]);
48
+
49
+ const processedContent = useMemo(() => sanitizeContent(content), [content]);
50
+
51
+ const processContext: ProcessChildrenContext = useMemo(
52
+ () => ({
53
+ isStreaming,
54
+ animationName: effectiveAnimationName,
55
+ animationDuration,
56
+ animationTimingFunction,
57
+ }),
58
+ [
59
+ isStreaming,
60
+ effectiveAnimationName,
61
+ animationDuration,
62
+ animationTimingFunction,
63
+ ]
64
+ );
65
+
66
+ const markdownComponents: Components = useMemo(
67
+ () =>
68
+ createMarkdownComponents({
69
+ textColor,
70
+ forcedTextSize,
71
+ additionalMarkdownComponents,
72
+ processContext,
73
+ }),
74
+ [textColor, forcedTextSize, additionalMarkdownComponents, processContext]
75
+ );
76
+
77
+ const markdownPlugins: PluggableList = useMemo(
78
+ () => [
79
+ remarkDirective,
80
+ remarkGfm,
81
+ [remarkMath, { singleDollarTextMath: false }],
82
+ ...(additionalMarkdownPlugins || []),
83
+ showUnsupportedDirective,
84
+ ],
85
+ [additionalMarkdownPlugins]
86
+ );
87
+
88
+ const rehypePlugins = [
89
+ [rehypeKatex, { output: "mathml" }],
90
+ rehypeRaw,
91
+ ] as PluggableList;
92
+
93
+ try {
94
+ return (
95
+ <div className="s-w-full">
96
+ <MarkdownContentContext.Provider
97
+ value={{
98
+ content: processedContent,
99
+ isStreaming,
100
+ isLastMessage,
101
+ }}
102
+ >
103
+ <ReactMarkdown
104
+ linkTarget="_blank"
105
+ components={markdownComponents}
106
+ remarkPlugins={markdownPlugins}
107
+ rehypePlugins={rehypePlugins}
108
+ >
109
+ {processedContent}
110
+ </ReactMarkdown>
111
+ </MarkdownContentContext.Provider>
112
+ </div>
113
+ );
114
+ } catch (error) {
115
+ return (
116
+ <div className="s-w-full">
117
+ <Chip color="warning">
118
+ There was an error parsing this markdown content
119
+ </Chip>
120
+ {processedContent}
121
+ </div>
122
+ );
123
+ }
124
+ };
125
+
126
+ export default StreamingMarkdown;