markdown-flow-ui 0.2.14 → 0.2.16-dev.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 (465) hide show
  1. package/README.md +7 -0
  2. package/dist/assets/markdown-flow-ui.css +10 -1
  3. package/dist/components/ContentRender/CodeBlock.cjs +1 -1
  4. package/dist/components/ContentRender/CodeBlock.cjs.map +1 -1
  5. package/dist/components/ContentRender/CodeBlock.d.ts +5 -0
  6. package/dist/components/ContentRender/CodeBlock.es.js +41 -38
  7. package/dist/components/ContentRender/CodeBlock.es.js.map +1 -1
  8. package/dist/components/ContentRender/ContentRender.cjs +2 -2
  9. package/dist/components/ContentRender/ContentRender.cjs.map +1 -1
  10. package/dist/components/ContentRender/ContentRender.d.ts +12 -4
  11. package/dist/components/ContentRender/ContentRender.es.js +436 -306
  12. package/dist/components/ContentRender/ContentRender.es.js.map +1 -1
  13. package/dist/components/ContentRender/IframeSandbox.cjs +7 -7
  14. package/dist/components/ContentRender/IframeSandbox.cjs.map +1 -1
  15. package/dist/components/ContentRender/IframeSandbox.d.ts +5 -1
  16. package/dist/components/ContentRender/IframeSandbox.es.js +311 -266
  17. package/dist/components/ContentRender/IframeSandbox.es.js.map +1 -1
  18. package/dist/components/ContentRender/MarkdownFlowInput.cjs +1 -1
  19. package/dist/components/ContentRender/MarkdownFlowInput.cjs.map +1 -1
  20. package/dist/components/ContentRender/MarkdownFlowInput.d.ts +5 -1
  21. package/dist/components/ContentRender/MarkdownFlowInput.es.js +37 -32
  22. package/dist/components/ContentRender/MarkdownFlowInput.es.js.map +1 -1
  23. package/dist/components/ContentRender/SandboxApp.cjs +2 -2
  24. package/dist/components/ContentRender/SandboxApp.cjs.map +1 -1
  25. package/dist/components/ContentRender/SandboxApp.d.ts +5 -1
  26. package/dist/components/ContentRender/SandboxApp.es.js +108 -103
  27. package/dist/components/ContentRender/SandboxApp.es.js.map +1 -1
  28. package/dist/components/ContentRender/blackboard-vendor.d.ts +1 -1
  29. package/dist/components/ContentRender/contentRenderI18n.cjs +1 -1
  30. package/dist/components/ContentRender/contentRenderI18n.cjs.map +1 -1
  31. package/dist/components/ContentRender/contentRenderI18n.d.ts +6 -1
  32. package/dist/components/ContentRender/contentRenderI18n.es.js +5 -56
  33. package/dist/components/ContentRender/contentRenderI18n.es.js.map +1 -1
  34. package/dist/components/ContentRender/contentRenderI18n.test.d.ts +1 -0
  35. package/dist/components/ContentRender/index.cjs +1 -1
  36. package/dist/components/ContentRender/index.d.ts +11 -11
  37. package/dist/components/ContentRender/index.es.js +1 -2
  38. package/dist/components/ContentRender/index.es.js.map +1 -1
  39. package/dist/components/ContentRender/locales/contentRender.json.cjs +2 -0
  40. package/dist/components/ContentRender/locales/contentRender.json.cjs.map +1 -0
  41. package/dist/components/ContentRender/locales/contentRender.json.d.ts +90 -0
  42. package/dist/components/ContentRender/locales/contentRender.json.es.js +11 -0
  43. package/dist/components/ContentRender/locales/contentRender.json.es.js.map +1 -0
  44. package/dist/components/ContentRender/plugins/CustomVariable.cjs +1 -1
  45. package/dist/components/ContentRender/plugins/CustomVariable.cjs.map +1 -1
  46. package/dist/components/ContentRender/plugins/CustomVariable.d.ts +7 -3
  47. package/dist/components/ContentRender/plugins/CustomVariable.es.js +165 -151
  48. package/dist/components/ContentRender/plugins/CustomVariable.es.js.map +1 -1
  49. package/dist/components/ContentRender/plugins/MermaidChart.cjs +1 -1
  50. package/dist/components/ContentRender/plugins/MermaidChart.cjs.map +1 -1
  51. package/dist/components/ContentRender/plugins/MermaidChart.d.ts +1 -0
  52. package/dist/components/ContentRender/plugins/MermaidChart.es.js +68 -44
  53. package/dist/components/ContentRender/plugins/MermaidChart.es.js.map +1 -1
  54. package/dist/components/ContentRender/typewriterPacing.fixtures.d.ts +14 -0
  55. package/dist/components/ContentRender/utils/typewriter-pacing.cjs +3 -0
  56. package/dist/components/ContentRender/utils/typewriter-pacing.cjs.map +1 -0
  57. package/dist/components/ContentRender/utils/typewriter-pacing.d.ts +27 -0
  58. package/dist/components/ContentRender/utils/typewriter-pacing.es.js +98 -0
  59. package/dist/components/ContentRender/utils/typewriter-pacing.es.js.map +1 -0
  60. package/dist/components/ContentRender/utils/typewriter-pacing.test.d.ts +1 -0
  61. package/dist/components/MarkdownFlow/MarkdownFlow.cjs +1 -1
  62. package/dist/components/MarkdownFlow/MarkdownFlow.cjs.map +1 -1
  63. package/dist/components/MarkdownFlow/MarkdownFlow.d.ts +12 -4
  64. package/dist/components/MarkdownFlow/MarkdownFlow.es.js +51 -39
  65. package/dist/components/MarkdownFlow/MarkdownFlow.es.js.map +1 -1
  66. package/dist/components/MarkdownFlow/ScrollToBottomButton.cjs +1 -1
  67. package/dist/components/MarkdownFlow/ScrollToBottomButton.cjs.map +1 -1
  68. package/dist/components/MarkdownFlow/ScrollToBottomButton.d.ts +31 -1
  69. package/dist/components/MarkdownFlow/ScrollToBottomButton.es.js +46 -17
  70. package/dist/components/MarkdownFlow/ScrollToBottomButton.es.js.map +1 -1
  71. package/dist/components/MarkdownFlow/ScrollToBottomControl.cjs +2 -0
  72. package/dist/components/MarkdownFlow/ScrollToBottomControl.cjs.map +1 -0
  73. package/dist/components/MarkdownFlow/ScrollToBottomControl.d.ts +18 -0
  74. package/dist/components/MarkdownFlow/ScrollToBottomControl.es.js +47 -0
  75. package/dist/components/MarkdownFlow/ScrollToBottomControl.es.js.map +1 -0
  76. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.cjs +1 -1
  77. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.cjs.map +1 -1
  78. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.d.ts +1 -1
  79. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.es.js +33 -52
  80. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.es.js.map +1 -1
  81. package/dist/components/MarkdownFlow/index.cjs +1 -1
  82. package/dist/components/MarkdownFlow/index.d.ts +9 -6
  83. package/dist/components/MarkdownFlow/index.es.js +6 -6
  84. package/dist/components/MarkdownFlow/index.es.js.map +1 -1
  85. package/dist/components/MarkdownFlow/useScrollToBottom.cjs +1 -1
  86. package/dist/components/MarkdownFlow/useScrollToBottom.cjs.map +1 -1
  87. package/dist/components/MarkdownFlow/useScrollToBottom.d.ts +40 -8
  88. package/dist/components/MarkdownFlow/useScrollToBottom.es.js +352 -83
  89. package/dist/components/MarkdownFlow/useScrollToBottom.es.js.map +1 -1
  90. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs +1 -1
  91. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs.map +1 -1
  92. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.d.ts +5 -3
  93. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js +371 -324
  94. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js.map +1 -1
  95. package/dist/components/MarkdownFlowEditor/components/CustomDialog.cjs +1 -1
  96. package/dist/components/MarkdownFlowEditor/components/CustomDialog.cjs.map +1 -1
  97. package/dist/components/MarkdownFlowEditor/components/CustomDialog.d.ts +10 -0
  98. package/dist/components/MarkdownFlowEditor/components/CustomDialog.es.js +22 -19
  99. package/dist/components/MarkdownFlowEditor/components/CustomDialog.es.js.map +1 -1
  100. package/dist/components/MarkdownFlowEditor/components/CustomPopover.cjs +1 -1
  101. package/dist/components/MarkdownFlowEditor/components/CustomPopover.cjs.map +1 -1
  102. package/dist/components/MarkdownFlowEditor/components/CustomPopover.d.ts +8 -0
  103. package/dist/components/MarkdownFlowEditor/components/CustomPopover.es.js +19 -15
  104. package/dist/components/MarkdownFlowEditor/components/CustomPopover.es.js.map +1 -1
  105. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.cjs +1 -1
  106. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.cjs.map +1 -1
  107. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.d.ts +4 -1
  108. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.es.js +99 -93
  109. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.es.js.map +1 -1
  110. package/dist/components/MarkdownFlowEditor/components/ImageInject.cjs +1 -1
  111. package/dist/components/MarkdownFlowEditor/components/ImageInject.cjs.map +1 -1
  112. package/dist/components/MarkdownFlowEditor/components/ImageInject.d.ts +1 -1
  113. package/dist/components/MarkdownFlowEditor/components/ImageInject.es.js +183 -182
  114. package/dist/components/MarkdownFlowEditor/components/ImageInject.es.js.map +1 -1
  115. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.cjs +1 -1
  116. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.cjs.map +1 -1
  117. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.d.ts +1 -1
  118. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.es.js +107 -103
  119. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.es.js.map +1 -1
  120. package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs +1 -1
  121. package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs.map +1 -1
  122. package/dist/components/MarkdownFlowEditor/components/VariableSelect.d.ts +1 -1
  123. package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js +106 -106
  124. package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js.map +1 -1
  125. package/dist/components/MarkdownFlowEditor/components/VideoInject.cjs +1 -1
  126. package/dist/components/MarkdownFlowEditor/components/VideoInject.cjs.map +1 -1
  127. package/dist/components/MarkdownFlowEditor/components/VideoInject.es.js +64 -63
  128. package/dist/components/MarkdownFlowEditor/components/VideoInject.es.js.map +1 -1
  129. package/dist/components/MarkdownFlowEditor/components/icons/ButtonIcon.cjs +1 -1
  130. package/dist/components/MarkdownFlowEditor/components/icons/ButtonIcon.cjs.map +1 -1
  131. package/dist/components/MarkdownFlowEditor/components/icons/ButtonIcon.es.js +13 -13
  132. package/dist/components/MarkdownFlowEditor/components/icons/ButtonIcon.es.js.map +1 -1
  133. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.cjs +1 -1
  134. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.cjs.map +1 -1
  135. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.es.js +12 -12
  136. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.es.js.map +1 -1
  137. package/dist/components/MarkdownFlowEditor/editor-context.d.ts +1 -1
  138. package/dist/components/MarkdownFlowEditor/editorI18n.cjs +1 -1
  139. package/dist/components/MarkdownFlowEditor/editorI18n.cjs.map +1 -1
  140. package/dist/components/MarkdownFlowEditor/editorI18n.d.ts +290 -0
  141. package/dist/components/MarkdownFlowEditor/editorI18n.es.js +12 -8
  142. package/dist/components/MarkdownFlowEditor/editorI18n.es.js.map +1 -1
  143. package/dist/components/MarkdownFlowEditor/editorI18n.test.d.ts +1 -0
  144. package/dist/components/MarkdownFlowEditor/index.d.ts +6 -6
  145. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.cjs +2 -0
  146. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.cjs.map +1 -0
  147. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.d.ts +72 -0
  148. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.es.js +140 -0
  149. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.es.js.map +1 -0
  150. package/dist/components/MarkdownFlowEditor/locales/en-US.json.cjs +1 -1
  151. package/dist/components/MarkdownFlowEditor/locales/en-US.json.d.ts +2 -0
  152. package/dist/components/MarkdownFlowEditor/locales/en-US.json.es.js +118 -114
  153. package/dist/components/MarkdownFlowEditor/locales/en-US.json.es.js.map +1 -1
  154. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.cjs +1 -1
  155. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.d.ts +2 -0
  156. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.es.js +118 -114
  157. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.es.js.map +1 -1
  158. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.cjs +2 -0
  159. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.cjs.map +1 -0
  160. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.d.ts +72 -0
  161. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.es.js +140 -0
  162. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.es.js.map +1 -0
  163. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.cjs +1 -1
  164. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.d.ts +2 -0
  165. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.es.js +70 -66
  166. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.es.js.map +1 -1
  167. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.cjs +1 -1
  168. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.cjs.map +1 -1
  169. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js +40 -35
  170. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js.map +1 -1
  171. package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.d.ts +1 -1
  172. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.cjs +1 -1
  173. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.cjs.map +1 -1
  174. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js +27 -23
  175. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js.map +1 -1
  176. package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.cjs +2 -0
  177. package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.cjs.map +1 -0
  178. package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.d.ts +7 -0
  179. package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.es.js +12 -0
  180. package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.es.js.map +1 -0
  181. package/dist/components/MarkdownFlowEditor/utils.d.ts +1 -1
  182. package/dist/components/Slide/MarkdownSlideScaling.cjs +1 -1
  183. package/dist/components/Slide/MarkdownSlideScaling.cjs.map +1 -1
  184. package/dist/components/Slide/MarkdownSlideScaling.d.ts +1 -1
  185. package/dist/components/Slide/MarkdownSlideScaling.es.js +20 -20
  186. package/dist/components/Slide/MarkdownSlideScaling.es.js.map +1 -1
  187. package/dist/components/Slide/MobilePlayerSettingsSheet.cjs +1 -1
  188. package/dist/components/Slide/MobilePlayerSettingsSheet.cjs.map +1 -1
  189. package/dist/components/Slide/MobilePlayerSettingsSheet.d.ts +7 -2
  190. package/dist/components/Slide/MobilePlayerSettingsSheet.es.js +61 -57
  191. package/dist/components/Slide/MobilePlayerSettingsSheet.es.js.map +1 -1
  192. package/dist/components/Slide/Player.cjs +1 -1
  193. package/dist/components/Slide/Player.cjs.map +1 -1
  194. package/dist/components/Slide/Player.d.ts +6 -6
  195. package/dist/components/Slide/Player.es.js +547 -541
  196. package/dist/components/Slide/Player.es.js.map +1 -1
  197. package/dist/components/Slide/Slide.cjs +1 -1
  198. package/dist/components/Slide/Slide.cjs.map +1 -1
  199. package/dist/components/Slide/Slide.d.ts +14 -12
  200. package/dist/components/Slide/Slide.es.js +745 -726
  201. package/dist/components/Slide/Slide.es.js.map +1 -1
  202. package/dist/components/Slide/SubtitleOverlay.cjs +1 -1
  203. package/dist/components/Slide/SubtitleOverlay.cjs.map +1 -1
  204. package/dist/components/Slide/SubtitleOverlay.d.ts +2 -2
  205. package/dist/components/Slide/SubtitleOverlay.es.js +17 -17
  206. package/dist/components/Slide/SubtitleOverlay.es.js.map +1 -1
  207. package/dist/components/Slide/diff-utils.d.ts +1 -1
  208. package/dist/components/Slide/index.d.ts +12 -12
  209. package/dist/components/Slide/locales/slide.json.cjs +2 -0
  210. package/dist/components/Slide/locales/slide.json.cjs.map +1 -0
  211. package/dist/components/Slide/locales/slide.json.d.ts +205 -0
  212. package/dist/components/Slide/locales/slide.json.es.js +11 -0
  213. package/dist/components/Slide/locales/slide.json.es.js.map +1 -0
  214. package/dist/components/Slide/slideI18n.cjs +1 -1
  215. package/dist/components/Slide/slideI18n.cjs.map +1 -1
  216. package/dist/components/Slide/slideI18n.d.ts +6 -3
  217. package/dist/components/Slide/slideI18n.es.js +10 -155
  218. package/dist/components/Slide/slideI18n.es.js.map +1 -1
  219. package/dist/components/Slide/useSlide.d.ts +1 -1
  220. package/dist/components/Slide/utils/appendedMarkerAdvance.d.ts +1 -1
  221. package/dist/components/Slide/utils/audioSegments.d.ts +1 -1
  222. package/dist/components/Slide/utils/interactionResolution.d.ts +2 -2
  223. package/dist/components/Slide/utils/listenModeElementList.d.ts +2 -2
  224. package/dist/components/Slide/utils/markdownScaling.d.ts +1 -1
  225. package/dist/components/Slide/utils/playerCustomActions.d.ts +2 -2
  226. package/dist/components/Slide/utils/playerKeyboardShortcuts.cjs +1 -1
  227. package/dist/components/Slide/utils/playerKeyboardShortcuts.cjs.map +1 -1
  228. package/dist/components/Slide/utils/playerKeyboardShortcuts.d.ts +1 -1
  229. package/dist/components/Slide/utils/playerKeyboardShortcuts.es.js +20 -20
  230. package/dist/components/Slide/utils/playerKeyboardShortcuts.es.js.map +1 -1
  231. package/dist/components/Slide/utils/runStreamFixture.d.ts +1 -1
  232. package/dist/components/Slide/utils/segmentSeek.d.ts +1 -1
  233. package/dist/components/Slide/utils/silentStepAutoAdvance.d.ts +1 -1
  234. package/dist/components/Slide/utils/streamingNavigation.d.ts +1 -1
  235. package/dist/components/Slide/utils/subtitleCue.d.ts +1 -1
  236. package/dist/components/Slide/utils/subtitleJumpNavigation.d.ts +1 -1
  237. package/dist/components/index.d.ts +22 -18
  238. package/dist/components/ui/button.cjs +1 -1
  239. package/dist/components/ui/button.cjs.map +1 -1
  240. package/dist/components/ui/button.es.js +12 -13
  241. package/dist/components/ui/button.es.js.map +1 -1
  242. package/dist/components/ui/checkbox.cjs +1 -1
  243. package/dist/components/ui/checkbox.cjs.map +1 -1
  244. package/dist/components/ui/checkbox.es.js +35 -35
  245. package/dist/components/ui/checkbox.es.js.map +1 -1
  246. package/dist/components/ui/dialog.cjs +1 -1
  247. package/dist/components/ui/dialog.cjs.map +1 -1
  248. package/dist/components/ui/dialog.d.ts +5 -1
  249. package/dist/components/ui/dialog.es.js +37 -37
  250. package/dist/components/ui/dialog.es.js.map +1 -1
  251. package/dist/components/ui/input.cjs +1 -1
  252. package/dist/components/ui/input.cjs.map +1 -1
  253. package/dist/components/ui/input.es.js +4 -4
  254. package/dist/components/ui/input.es.js.map +1 -1
  255. package/dist/components/ui/inputGroup/button.cjs +1 -1
  256. package/dist/components/ui/inputGroup/button.cjs.map +1 -1
  257. package/dist/components/ui/inputGroup/button.es.js +9 -10
  258. package/dist/components/ui/inputGroup/button.es.js.map +1 -1
  259. package/dist/components/ui/inputGroup/input-group.cjs +1 -1
  260. package/dist/components/ui/inputGroup/input-group.cjs.map +1 -1
  261. package/dist/components/ui/inputGroup/input-group.d.ts +1 -1
  262. package/dist/components/ui/inputGroup/input-group.es.js +10 -10
  263. package/dist/components/ui/inputGroup/input-group.es.js.map +1 -1
  264. package/dist/components/ui/inputGroup/textarea.cjs +1 -1
  265. package/dist/components/ui/inputGroup/textarea.cjs.map +1 -1
  266. package/dist/components/ui/inputGroup/textarea.es.js +2 -2
  267. package/dist/components/ui/inputGroup/textarea.es.js.map +1 -1
  268. package/dist/components/ui/loading-overlay-card.cjs +2 -2
  269. package/dist/components/ui/loading-overlay-card.cjs.map +1 -1
  270. package/dist/components/ui/loading-overlay-card.es.js +11 -11
  271. package/dist/components/ui/loading-overlay-card.es.js.map +1 -1
  272. package/dist/components/ui/popover.cjs +1 -1
  273. package/dist/components/ui/popover.cjs.map +1 -1
  274. package/dist/components/ui/popover.es.js +6 -6
  275. package/dist/components/ui/popover.es.js.map +1 -1
  276. package/dist/components/ui/tooltip.cjs +1 -1
  277. package/dist/components/ui/tooltip.cjs.map +1 -1
  278. package/dist/components/ui/tooltip.es.js +16 -16
  279. package/dist/components/ui/tooltip.es.js.map +1 -1
  280. package/dist/editor.d.ts +2 -2
  281. package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  282. package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  283. package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  284. package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  285. package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  286. package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  287. package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  288. package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  289. package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  290. package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  291. package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  292. package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  293. package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  294. package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  295. package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  296. package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  297. package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  298. package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  299. package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  300. package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  301. package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  302. package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  303. package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  304. package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  305. package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  306. package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  307. package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  308. package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  309. package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  310. package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  311. package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  312. package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  313. package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  314. package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  315. package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  316. package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  317. package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  318. package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  319. package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  320. package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  321. package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  322. package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  323. package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  324. package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  325. package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  326. package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  327. package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  328. package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  329. package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  330. package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  331. package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  332. package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  333. package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  334. package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  335. package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  336. package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  337. package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  338. package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  339. package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  340. package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  341. package/dist/index.cjs +1 -1
  342. package/dist/index.d.ts +2 -2
  343. package/dist/index.es.js +22 -19
  344. package/dist/index.es.js.map +1 -1
  345. package/dist/lib/locale.cjs +1 -1
  346. package/dist/lib/locale.cjs.map +1 -1
  347. package/dist/lib/locale.d.ts +5 -1
  348. package/dist/lib/locale.es.js +26 -13
  349. package/dist/lib/locale.es.js.map +1 -1
  350. package/dist/lib/locale.test.d.ts +1 -0
  351. package/dist/lib/useDetachedLanguage.cjs +2 -0
  352. package/dist/lib/useDetachedLanguage.cjs.map +1 -0
  353. package/dist/lib/useDetachedLanguage.d.ts +3 -0
  354. package/dist/lib/useDetachedLanguage.es.js +25 -0
  355. package/dist/lib/useDetachedLanguage.es.js.map +1 -0
  356. package/dist/lib/useResolvedDirection.cjs +2 -0
  357. package/dist/lib/useResolvedDirection.cjs.map +1 -0
  358. package/dist/lib/useResolvedDirection.d.ts +6 -0
  359. package/dist/lib/useResolvedDirection.es.js +37 -0
  360. package/dist/lib/useResolvedDirection.es.js.map +1 -0
  361. package/dist/markdown-flow-ui-lib.css +1 -1
  362. package/dist/node_modules/@radix-ui/react-arrow/dist/index.cjs +1 -1
  363. package/dist/node_modules/@radix-ui/react-arrow/dist/index.cjs.map +1 -1
  364. package/dist/node_modules/@radix-ui/react-arrow/dist/index.es.js +6 -6
  365. package/dist/node_modules/@radix-ui/react-arrow/dist/index.es.js.map +1 -1
  366. package/dist/node_modules/@radix-ui/react-context/dist/index.cjs +1 -1
  367. package/dist/node_modules/@radix-ui/react-context/dist/index.cjs.map +1 -1
  368. package/dist/node_modules/@radix-ui/react-context/dist/index.es.js +21 -21
  369. package/dist/node_modules/@radix-ui/react-context/dist/index.es.js.map +1 -1
  370. package/dist/node_modules/@radix-ui/react-dialog/dist/index.cjs +2 -2
  371. package/dist/node_modules/@radix-ui/react-dialog/dist/index.cjs.map +1 -1
  372. package/dist/node_modules/@radix-ui/react-dialog/dist/index.es.js +100 -100
  373. package/dist/node_modules/@radix-ui/react-dialog/dist/index.es.js.map +1 -1
  374. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs +1 -1
  375. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs.map +1 -1
  376. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js +38 -38
  377. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js.map +1 -1
  378. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs +1 -1
  379. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs.map +1 -1
  380. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.es.js +9 -9
  381. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.es.js.map +1 -1
  382. package/dist/node_modules/@radix-ui/react-popover/dist/index.cjs +1 -1
  383. package/dist/node_modules/@radix-ui/react-popover/dist/index.cjs.map +1 -1
  384. package/dist/node_modules/@radix-ui/react-popover/dist/index.es.js +95 -95
  385. package/dist/node_modules/@radix-ui/react-popover/dist/index.es.js.map +1 -1
  386. package/dist/node_modules/@radix-ui/react-popper/dist/index.cjs +1 -1
  387. package/dist/node_modules/@radix-ui/react-popper/dist/index.cjs.map +1 -1
  388. package/dist/node_modules/@radix-ui/react-popper/dist/index.es.js +48 -48
  389. package/dist/node_modules/@radix-ui/react-popper/dist/index.es.js.map +1 -1
  390. package/dist/node_modules/@radix-ui/react-portal/dist/index.cjs +1 -1
  391. package/dist/node_modules/@radix-ui/react-portal/dist/index.cjs.map +1 -1
  392. package/dist/node_modules/@radix-ui/react-portal/dist/index.es.js +6 -6
  393. package/dist/node_modules/@radix-ui/react-portal/dist/index.es.js.map +1 -1
  394. package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs +1 -1
  395. package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -1
  396. package/dist/node_modules/@radix-ui/react-primitive/dist/index.es.js +9 -9
  397. package/dist/node_modules/@radix-ui/react-primitive/dist/index.es.js.map +1 -1
  398. package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs +1 -1
  399. package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -1
  400. package/dist/node_modules/@radix-ui/react-slot/dist/index.es.js +17 -17
  401. package/dist/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -1
  402. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.cjs +1 -1
  403. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.cjs.map +1 -1
  404. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.es.js +100 -100
  405. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.es.js.map +1 -1
  406. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.cjs +1 -1
  407. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.cjs.map +1 -1
  408. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.es.js +6 -6
  409. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.es.js.map +1 -1
  410. package/dist/node_modules/@uiw/react-codemirror/esm/index.cjs +1 -1
  411. package/dist/node_modules/@uiw/react-codemirror/esm/index.cjs.map +1 -1
  412. package/dist/node_modules/@uiw/react-codemirror/esm/index.es.js +27 -27
  413. package/dist/node_modules/@uiw/react-codemirror/esm/index.es.js.map +1 -1
  414. package/dist/node_modules/lucide-react/dist/esm/icons/{chevron-down.cjs → chevrons-down.cjs} +2 -2
  415. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-down.cjs.map +1 -0
  416. package/dist/node_modules/lucide-react/dist/esm/icons/{chevron-down.es.js → chevrons-down.es.js} +6 -3
  417. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-down.es.js.map +1 -0
  418. package/dist/node_modules/react-markdown/lib/index.cjs +1 -1
  419. package/dist/node_modules/react-markdown/lib/index.cjs.map +1 -1
  420. package/dist/node_modules/react-markdown/lib/index.es.js +39 -39
  421. package/dist/node_modules/react-markdown/lib/index.es.js.map +1 -1
  422. package/dist/renderer.cjs +1 -1
  423. package/dist/renderer.d.ts +18 -17
  424. package/dist/renderer.es.js +20 -17
  425. package/dist/renderer.es.js.map +1 -1
  426. package/dist/scroll.cjs +1 -1
  427. package/dist/scroll.d.ts +6 -3
  428. package/dist/scroll.es.js +4 -2
  429. package/dist/scroll.es.js.map +1 -1
  430. package/dist/slide.d.ts +3 -3
  431. package/package.json +5 -2
  432. package/dist/_virtual/jsx-runtime.cjs +0 -2
  433. package/dist/_virtual/jsx-runtime.cjs.map +0 -1
  434. package/dist/_virtual/jsx-runtime.es.js +0 -6
  435. package/dist/_virtual/jsx-runtime.es.js.map +0 -1
  436. package/dist/_virtual/jsx-runtime.es2.js +0 -5
  437. package/dist/_virtual/jsx-runtime.es2.js.map +0 -1
  438. package/dist/_virtual/jsx-runtime2.cjs +0 -2
  439. package/dist/_virtual/jsx-runtime2.cjs.map +0 -1
  440. package/dist/_virtual/react-jsx-runtime.development.cjs +0 -2
  441. package/dist/_virtual/react-jsx-runtime.development.cjs.map +0 -1
  442. package/dist/_virtual/react-jsx-runtime.development.es.js +0 -5
  443. package/dist/_virtual/react-jsx-runtime.development.es.js.map +0 -1
  444. package/dist/_virtual/react-jsx-runtime.production.cjs +0 -2
  445. package/dist/_virtual/react-jsx-runtime.production.cjs.map +0 -1
  446. package/dist/_virtual/react-jsx-runtime.production.es.js +0 -5
  447. package/dist/_virtual/react-jsx-runtime.production.es.js.map +0 -1
  448. package/dist/lib/localeTextMap.cjs +0 -2
  449. package/dist/lib/localeTextMap.cjs.map +0 -1
  450. package/dist/lib/localeTextMap.es.js +0 -5
  451. package/dist/lib/localeTextMap.es.js.map +0 -1
  452. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs.map +0 -1
  453. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.es.js.map +0 -1
  454. package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs +0 -24
  455. package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs.map +0 -1
  456. package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js +0 -409
  457. package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js.map +0 -1
  458. package/dist/node_modules/react/cjs/react-jsx-runtime.production.cjs +0 -10
  459. package/dist/node_modules/react/cjs/react-jsx-runtime.production.cjs.map +0 -1
  460. package/dist/node_modules/react/cjs/react-jsx-runtime.production.es.js +0 -36
  461. package/dist/node_modules/react/cjs/react-jsx-runtime.production.es.js.map +0 -1
  462. package/dist/node_modules/react/jsx-runtime.cjs +0 -2
  463. package/dist/node_modules/react/jsx-runtime.cjs.map +0 -1
  464. package/dist/node_modules/react/jsx-runtime.es.js +0 -11
  465. package/dist/node_modules/react/jsx-runtime.es.js.map +0 -1
@@ -1,70 +1,94 @@
1
- import { j as e } from "../../../_virtual/jsx-runtime.es.js";
2
- import v, { useState as i, useEffect as w } from "react";
3
- import d from "../../../node_modules/mermaid/dist/mermaid.core.es.js";
4
- import { CJK_SAFE_SANS_FONT_FAMILY as h } from "../cjkFontFamily.es.js";
5
- const c = {
1
+ import { jsxs as m, jsx as t } from "react/jsx-runtime";
2
+ import S, { useState as l, useEffect as _ } from "react";
3
+ import c from "../../../node_modules/mermaid/dist/mermaid.core.es.js";
4
+ import { CJK_SAFE_SANS_FONT_FAMILY as p } from "../cjkFontFamily.es.js";
5
+ const d = {
6
6
  emptyChart: "Empty chart content",
7
7
  loading: "Loading Mermaid chart...",
8
+ error: "Unable to display the Mermaid chart",
8
9
  badge: "mermaid"
9
- }, g = (r) => r.trim().replace(/^_streaming\s*/i, ""), N = ({
10
- chart: r,
11
- messages: a,
12
- frozen: l
10
+ }, f = (e) => e.trim().replace(/^_streaming\s*/i, ""), v = ({
11
+ chart: e,
12
+ messages: r,
13
+ frozen: g
13
14
  }) => {
14
- const [m, s] = i(""), [p, n] = i(""), [y, x] = i(!1), f = async () => {
15
+ const [h, s] = l(""), [y, o] = l(""), [u, b] = l(!1), C = async () => {
15
16
  try {
16
- const t = g(r);
17
- if (!t) {
18
- n(a?.emptyChart ?? c.emptyChart), s("");
17
+ const a = f(e);
18
+ if (!a) {
19
+ o(""), s("");
19
20
  return;
20
21
  }
21
- d.initialize({
22
+ c.initialize({
22
23
  startOnLoad: !1,
23
24
  theme: "default",
24
25
  securityLevel: "loose",
25
- fontFamily: h,
26
+ fontFamily: p,
26
27
  themeVariables: {
27
- fontFamily: h
28
+ fontFamily: p
28
29
  }
29
30
  });
30
31
  try {
31
- await d.parse(t);
32
- } catch (b) {
33
- const j = String(b).toLowerCase();
34
- n(j), s(""), x(!0);
32
+ await c.parse(a);
33
+ } catch (x) {
34
+ const N = String(x).toLowerCase();
35
+ o(N), s(""), b(!0);
35
36
  return;
36
37
  }
37
- const o = `mermaid-${Date.now()}`, { svg: u } = await d.render(o, t);
38
- s(u), n("");
39
- } catch (t) {
40
- const o = String(t).toLowerCase();
41
- n(o), s("");
38
+ const n = `mermaid-${Date.now()}`, { svg: w } = await c.render(n, a);
39
+ s(w), o("");
40
+ } catch (a) {
41
+ const n = String(a).toLowerCase();
42
+ o(n), s("");
42
43
  }
43
44
  };
44
- if (w(() => {
45
- l && y || f();
46
- }, [r, l]), p) {
47
- const t = g(r) || r.trim();
48
- return /* @__PURE__ */ e.jsxs("div", { className: "my-4 border border-gray-200 rounded-lg bg-gray-50", children: [
49
- /* @__PURE__ */ e.jsxs("div", { className: "px-4 py-3 bg-gray-100 border-b border-gray-200 flex items-center gap-2", children: [
50
- /* @__PURE__ */ e.jsx("span", { className: "text-yellow-600", children: "⚠️" }),
51
- /* @__PURE__ */ e.jsx("span", { className: "text-sm text-yellow-700 font-medium whitespace-pre-wrap", children: p })
52
- ] }),
53
- /* @__PURE__ */ e.jsxs("div", { className: "relative", children: [
54
- /* @__PURE__ */ e.jsx("pre", { className: "p-4 text-sm font-mono text-yellow-800", children: /* @__PURE__ */ e.jsx("code", { children: t }) }),
55
- /* @__PURE__ */ e.jsx("div", { className: "absolute top-2 right-2 px-2 py-1 text-xs text-yellow-700 bg-white/90 rounded border border-gray-200", children: a?.badge ?? c.badge })
56
- ] })
57
- ] });
45
+ _(() => {
46
+ g && u || C();
47
+ }, [e, g]);
48
+ const i = f(e);
49
+ if (y || !i) {
50
+ const a = i || e.trim();
51
+ return /* @__PURE__ */ m(
52
+ "div",
53
+ {
54
+ className: "my-4 border border-gray-200 rounded-lg bg-gray-50",
55
+ "data-mermaid-error": y || void 0,
56
+ children: [
57
+ /* @__PURE__ */ m("div", { className: "px-4 py-3 bg-gray-100 border-b border-gray-200 flex items-center gap-2", children: [
58
+ /* @__PURE__ */ t("span", { className: "text-yellow-600", children: "⚠️" }),
59
+ /* @__PURE__ */ t(
60
+ "span",
61
+ {
62
+ dir: "auto",
63
+ className: "text-sm text-yellow-700 font-medium whitespace-pre-wrap",
64
+ children: i ? r?.error ?? d.error : r?.emptyChart ?? d.emptyChart
65
+ }
66
+ )
67
+ ] }),
68
+ /* @__PURE__ */ m("div", { className: "relative", children: [
69
+ /* @__PURE__ */ t(
70
+ "pre",
71
+ {
72
+ dir: "ltr",
73
+ className: "p-4 text-sm font-mono text-yellow-800 text-start [unicode-bidi:isolate]",
74
+ children: /* @__PURE__ */ t("code", { children: a })
75
+ }
76
+ ),
77
+ /* @__PURE__ */ t("div", { className: "absolute top-2 right-2 px-2 py-1 text-xs text-yellow-700 bg-white/90 rounded border border-gray-200", children: r?.badge ?? d.badge })
78
+ ] })
79
+ ]
80
+ }
81
+ );
58
82
  }
59
- return /* @__PURE__ */ e.jsx("div", { className: "my-4 text-center overflow-auto content-render-mermaid", children: m ? /* @__PURE__ */ e.jsx(
83
+ return /* @__PURE__ */ t("div", { className: "my-4 text-center overflow-auto content-render-mermaid", children: h ? /* @__PURE__ */ t(
60
84
  "div",
61
85
  {
62
86
  className: "content-render-mermaid-inner",
63
- dangerouslySetInnerHTML: { __html: m }
87
+ dangerouslySetInnerHTML: { __html: h }
64
88
  }
65
- ) : /* @__PURE__ */ e.jsx("div", { className: "py-8 text-gray-500 italic", children: a?.loading ?? c.loading }) });
66
- }, L = v.memo(N, (r, a) => r.chart === a.chart && r.frozen === a.frozen);
89
+ ) : /* @__PURE__ */ t("div", { className: "py-8 text-gray-500 italic", children: r?.loading ?? d.loading }) });
90
+ }, A = S.memo(v, (e, r) => e.chart === r.chart && e.frozen === r.frozen && e.messages?.emptyChart === r.messages?.emptyChart && e.messages?.loading === r.messages?.loading && e.messages?.error === r.messages?.error && e.messages?.badge === r.messages?.badge);
67
91
  export {
68
- L as default
92
+ A as default
69
93
  };
70
94
  //# sourceMappingURL=MermaidChart.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MermaidChart.es.js","sources":["../../../../src/components/ContentRender/plugins/MermaidChart.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport mermaid from \"mermaid\";\nimport { CJK_SAFE_SANS_FONT_FAMILY } from \"../cjkFontFamily\";\n\nexport interface MermaidChartProps {\n chart: string;\n messages?: {\n emptyChart?: string;\n loading?: string;\n badge?: string;\n };\n frozen?: boolean;\n}\n\nconst DEFAULT_MESSAGES = {\n emptyChart: \"Empty chart content\",\n loading: \"Loading Mermaid chart...\",\n badge: \"mermaid\",\n} as const;\n\nconst preprocessChart = (raw: string) =>\n raw.trim().replace(/^_streaming\\s*/i, \"\");\n\nconst MermaidChart: React.FC<MermaidChartProps> = ({\n chart,\n messages,\n frozen,\n}) => {\n const [svg, setSvg] = useState(\"\");\n const [error, setError] = useState(\"\");\n const [hasRendered, setHasRendered] = useState(false);\n\n const renderChart = async () => {\n try {\n const cleaned = preprocessChart(chart);\n\n if (!cleaned) {\n setError(messages?.emptyChart ?? DEFAULT_MESSAGES.emptyChart);\n setSvg(\"\");\n return;\n }\n\n // Initialize Mermaid with an explicit CJK-safe font stack.\n // Using a concrete stack avoids clipping caused by `inherit` resolving to\n // Storybook's default font during off-screen rendering.\n mermaid.initialize({\n startOnLoad: false,\n theme: \"default\",\n securityLevel: \"loose\",\n fontFamily: CJK_SAFE_SANS_FONT_FAMILY,\n themeVariables: {\n fontFamily: CJK_SAFE_SANS_FONT_FAMILY,\n },\n });\n\n // use mermaid.parse to check for errors\n try {\n await mermaid.parse(cleaned);\n } catch (parseErr) {\n const parseErrorMsg = String(parseErr).toLowerCase();\n setError(parseErrorMsg);\n setSvg(\"\");\n // once render success, setHasRendered flag\n setHasRendered(true);\n return;\n }\n\n const id = `mermaid-${Date.now()}`;\n\n // Render the chart\n const { svg: renderedSvg } = await mermaid.render(id, cleaned);\n setSvg(renderedSvg);\n setError(\"\");\n } catch (err) {\n const errorMsg = String(err).toLowerCase();\n setError(errorMsg);\n setSvg(\"\");\n }\n };\n\n useEffect(() => {\n if (frozen && hasRendered) return; // 核心:被冻结就不渲染\n renderChart();\n }, [chart, frozen]);\n\n if (error) {\n const displayChart = preprocessChart(chart) || chart.trim();\n return (\n <div className=\"my-4 border border-gray-200 rounded-lg bg-gray-50\">\n <div className=\"px-4 py-3 bg-gray-100 border-b border-gray-200 flex items-center gap-2\">\n <span className=\"text-yellow-600\">⚠️</span>\n <span className=\"text-sm text-yellow-700 font-medium whitespace-pre-wrap\">\n {error}\n </span>\n </div>\n <div className=\"relative\">\n <pre className=\"p-4 text-sm font-mono text-yellow-800\">\n <code>{displayChart}</code>\n </pre>\n <div className=\"absolute top-2 right-2 px-2 py-1 text-xs text-yellow-700 bg-white/90 rounded border border-gray-200\">\n {messages?.badge ?? DEFAULT_MESSAGES.badge}\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"my-4 text-center overflow-auto content-render-mermaid\">\n {svg ? (\n <div\n className=\"content-render-mermaid-inner\"\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n ) : (\n <div className=\"py-8 text-gray-500 italic\">\n {messages?.loading ?? DEFAULT_MESSAGES.loading}\n </div>\n )}\n </div>\n );\n};\n\nexport default React.memo(MermaidChart, (prev, next) => {\n return prev.chart === next.chart && prev.frozen === next.frozen;\n});\n"],"names":["DEFAULT_MESSAGES","preprocessChart","raw","MermaidChart","chart","messages","frozen","svg","setSvg","useState","error","setError","hasRendered","setHasRendered","renderChart","cleaned","mermaid","CJK_SAFE_SANS_FONT_FAMILY","parseErr","parseErrorMsg","id","renderedSvg","err","errorMsg","useEffect","displayChart","jsxs","jsx","MermaidChart$1","React","prev","next"],"mappings":"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"}
1
+ {"version":3,"file":"MermaidChart.es.js","sources":["../../../../src/components/ContentRender/plugins/MermaidChart.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport mermaid from \"mermaid\";\nimport { CJK_SAFE_SANS_FONT_FAMILY } from \"../cjkFontFamily\";\n\nexport interface MermaidChartProps {\n chart: string;\n messages?: {\n emptyChart?: string;\n loading?: string;\n error?: string;\n badge?: string;\n };\n frozen?: boolean;\n}\n\nconst DEFAULT_MESSAGES = {\n emptyChart: \"Empty chart content\",\n loading: \"Loading Mermaid chart...\",\n error: \"Unable to display the Mermaid chart\",\n badge: \"mermaid\",\n} as const;\n\nconst preprocessChart = (raw: string) =>\n raw.trim().replace(/^_streaming\\s*/i, \"\");\n\nconst MermaidChart: React.FC<MermaidChartProps> = ({\n chart,\n messages,\n frozen,\n}) => {\n const [svg, setSvg] = useState(\"\");\n const [error, setError] = useState(\"\");\n const [hasRendered, setHasRendered] = useState(false);\n\n const renderChart = async () => {\n try {\n const cleaned = preprocessChart(chart);\n\n if (!cleaned) {\n setError(\"\");\n setSvg(\"\");\n return;\n }\n\n // Initialize Mermaid with an explicit CJK-safe font stack.\n // Using a concrete stack avoids clipping caused by `inherit` resolving to\n // Storybook's default font during off-screen rendering.\n mermaid.initialize({\n startOnLoad: false,\n theme: \"default\",\n securityLevel: \"loose\",\n fontFamily: CJK_SAFE_SANS_FONT_FAMILY,\n themeVariables: {\n fontFamily: CJK_SAFE_SANS_FONT_FAMILY,\n },\n });\n\n // use mermaid.parse to check for errors\n try {\n await mermaid.parse(cleaned);\n } catch (parseErr) {\n const parseErrorMsg = String(parseErr).toLowerCase();\n setError(parseErrorMsg);\n setSvg(\"\");\n // once render success, setHasRendered flag\n setHasRendered(true);\n return;\n }\n\n const id = `mermaid-${Date.now()}`;\n\n // Render the chart\n const { svg: renderedSvg } = await mermaid.render(id, cleaned);\n setSvg(renderedSvg);\n setError(\"\");\n } catch (err) {\n const errorMsg = String(err).toLowerCase();\n setError(errorMsg);\n setSvg(\"\");\n }\n };\n\n useEffect(() => {\n if (frozen && hasRendered) return; // 核心:被冻结就不渲染\n renderChart();\n }, [chart, frozen]);\n\n const cleanedChart = preprocessChart(chart);\n if (error || !cleanedChart) {\n const displayChart = cleanedChart || chart.trim();\n return (\n <div\n className=\"my-4 border border-gray-200 rounded-lg bg-gray-50\"\n data-mermaid-error={error || undefined}\n >\n <div className=\"px-4 py-3 bg-gray-100 border-b border-gray-200 flex items-center gap-2\">\n <span className=\"text-yellow-600\">⚠️</span>\n <span\n dir=\"auto\"\n className=\"text-sm text-yellow-700 font-medium whitespace-pre-wrap\"\n >\n {cleanedChart\n ? (messages?.error ?? DEFAULT_MESSAGES.error)\n : (messages?.emptyChart ?? DEFAULT_MESSAGES.emptyChart)}\n </span>\n </div>\n <div className=\"relative\">\n <pre\n dir=\"ltr\"\n className=\"p-4 text-sm font-mono text-yellow-800 text-start [unicode-bidi:isolate]\"\n >\n <code>{displayChart}</code>\n </pre>\n <div className=\"absolute top-2 right-2 px-2 py-1 text-xs text-yellow-700 bg-white/90 rounded border border-gray-200\">\n {messages?.badge ?? DEFAULT_MESSAGES.badge}\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"my-4 text-center overflow-auto content-render-mermaid\">\n {svg ? (\n <div\n className=\"content-render-mermaid-inner\"\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n ) : (\n <div className=\"py-8 text-gray-500 italic\">\n {messages?.loading ?? DEFAULT_MESSAGES.loading}\n </div>\n )}\n </div>\n );\n};\n\nexport default React.memo(MermaidChart, (prev, next) => {\n return (\n prev.chart === next.chart &&\n prev.frozen === next.frozen &&\n prev.messages?.emptyChart === next.messages?.emptyChart &&\n prev.messages?.loading === next.messages?.loading &&\n prev.messages?.error === next.messages?.error &&\n prev.messages?.badge === next.messages?.badge\n );\n});\n"],"names":["DEFAULT_MESSAGES","preprocessChart","raw","MermaidChart","chart","messages","frozen","svg","setSvg","useState","error","setError","hasRendered","setHasRendered","renderChart","cleaned","mermaid","CJK_SAFE_SANS_FONT_FAMILY","parseErr","parseErrorMsg","id","renderedSvg","err","errorMsg","useEffect","cleanedChart","displayChart","jsxs","jsx","MermaidChart$1","React","prev","next"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { MarkdownFlowLocale } from '../../lib/locale.js';
2
+ export declare const TYPEWRITER_PACING_FIXTURE_LENGTHS: readonly ["short", "medium", "long"];
3
+ export type TypewriterPacingFixtureLength = (typeof TYPEWRITER_PACING_FIXTURE_LENGTHS)[number];
4
+ export declare const TYPEWRITER_PACING_LANGUAGE_CODES: readonly ["zh", "en", "fr", "ar", "th"];
5
+ export type TypewriterPacingLanguageCode = (typeof TYPEWRITER_PACING_LANGUAGE_CODES)[number];
6
+ export interface TypewriterPacingLanguage {
7
+ code: TypewriterPacingLanguageCode;
8
+ label: string;
9
+ locale: MarkdownFlowLocale;
10
+ lang: string;
11
+ dir: "ltr" | "rtl";
12
+ }
13
+ export declare const TYPEWRITER_PACING_LANGUAGES: readonly TypewriterPacingLanguage[];
14
+ export declare const TYPEWRITER_PACING_FIXTURES: Record<TypewriterPacingFixtureLength, Record<TypewriterPacingLanguageCode, string>>;
@@ -0,0 +1,3 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=200,i={han:100,latin:28,arabic:34,thai:42,otherLetterOrNumber:35,punctuationOrEmoji:100,whitespace:0},R="‍",h="\r",w=`
2
+ `,g=new RegExp("\\p{Grapheme_Extend}","u"),N=new RegExp("\\p{Mark}","u"),C=new RegExp("\\p{Spacing_Mark}","u"),y=/^\s+$/u,f=new RegExp("\\p{Script_Extensions=Han}","u"),I=new RegExp("\\p{Script_Extensions=Latin}","u"),d=new RegExp("\\p{Script_Extensions=Arabic}","u"),k=new RegExp("\\p{Script_Extensions=Thai}","u"),S=/[\p{Letter}\p{Number}]/u,P=/[\p{Punctuation}\p{Symbol}]/u,O=new RegExp("\\p{Extended_Pictographic}","u");let c;const b=()=>{if(c!==void 0)return c;const e=typeof Intl>"u"?void 0:Intl.Segmenter;return c=e?new e(void 0,{granularity:"grapheme"}):null,c},a=(e,n,r)=>{const t=e.codePointAt(0);return t!==void 0&&t>=n&&t<=r},T=e=>a(e,127462,127487),G=e=>a(e,65024,65039)||a(e,917760,917999),u=e=>a(e,127995,127999),M=e=>a(e,917536,917631),x=e=>g.test(e)||N.test(e)||C.test(e)||G(e)||u(e)||M(e)||e==="⃣"||e==="ำ",E=e=>{const n=Array.from(e),r=[];for(let t=0;t<n.length;t+=1){let s=n[t];if(s===h&&n[t+1]===w){s+=n[t+1],t+=1,r.push(s);continue}if(T(s)&&T(n[t+1]||"")){s+=n[t+1],t+=1,r.push(s);continue}for(;t+1<n.length;){const o=n[t+1];if(x(o)){s+=o,t+=1;continue}if(o===R){s+=o,t+=1,t+1<n.length&&(s+=n[t+1],t+=1);continue}break}r.push(s)}return r},p=(e,n)=>{const r=b();return r?Array.from(r.segment(e),({segment:t})=>t):E(e)},H=e=>O.test(e)||Array.from(e).some(n=>T(n)||u(n)||n==="⃣"),A=e=>y.test(e)?i.whitespace:H(e)||P.test(e)?i.punctuationOrEmoji:f.test(e)?i.han:I.test(e)?i.latin:d.test(e)?i.arabic:k.test(e)?i.thai:S.test(e)?i.otherLetterOrNumber:i.punctuationOrEmoji,l=(e,n)=>p(e).map(r=>({text:r,cost:A(r)})),_=(e,n)=>({tokens:l(e),head:0}),L=e=>e.head>=e.tokens.length,Q=(e,n,r)=>{if(!n)return e;const t=e.tokens.slice(e.head);if(t.length===0)return _(n);const s=t[t.length-1],o=l(`${s.text}${n}`);return{tokens:[...t.slice(0,-1),...o],head:0}},j=(e,n)=>{let r=e.head,t=Math.max(0,n),s="";for(;r<e.tokens.length;){const o=e.tokens[r];if(o.cost>t)break;s+=o.text,t-=o.cost,r+=1}return{chunk:s,queue:{tokens:e.tokens,head:r},remainingBudget:t}};exports.CONTENT_AWARE_TYPEWRITER_TICK_BUDGET=m;exports.appendContentAwareTypewriterQueue=Q;exports.consumeContentAwareTypewriterQueue=j;exports.createContentAwareTypewriterQueue=_;exports.fallbackSegmentTypewriterGraphemes=E;exports.getContentAwareTypewriterCost=A;exports.isContentAwareTypewriterQueueEmpty=L;exports.segmentTypewriterGraphemes=p;
3
+ //# sourceMappingURL=typewriter-pacing.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typewriter-pacing.cjs","sources":["../../../../src/components/ContentRender/utils/typewriter-pacing.ts"],"sourcesContent":["export const CONTENT_AWARE_TYPEWRITER_TICK_BUDGET = 200;\n\nconst TYPEWRITER_GRAPHEME_COST = {\n han: 100,\n latin: 28,\n arabic: 34,\n thai: 42,\n otherLetterOrNumber: 35,\n punctuationOrEmoji: 100,\n whitespace: 0,\n} as const;\n\nconst ZERO_WIDTH_JOINER = \"\\u200d\";\nconst CARRIAGE_RETURN = \"\\r\";\nconst LINE_FEED = \"\\n\";\n\nconst GRAPHEME_EXTEND_PATTERN = /\\p{Grapheme_Extend}/u;\nconst MARK_PATTERN = /\\p{Mark}/u;\nconst SPACING_MARK_PATTERN = /\\p{Spacing_Mark}/u;\nconst WHITESPACE_PATTERN = /^\\s+$/u;\nconst HAN_PATTERN = /\\p{Script_Extensions=Han}/u;\nconst LATIN_PATTERN = /\\p{Script_Extensions=Latin}/u;\nconst ARABIC_PATTERN = /\\p{Script_Extensions=Arabic}/u;\nconst THAI_PATTERN = /\\p{Script_Extensions=Thai}/u;\nconst LETTER_OR_NUMBER_PATTERN = /[\\p{Letter}\\p{Number}]/u;\nconst PUNCTUATION_OR_SYMBOL_PATTERN = /[\\p{Punctuation}\\p{Symbol}]/u;\nconst EXTENDED_PICTOGRAPHIC_PATTERN = /\\p{Extended_Pictographic}/u;\n\nexport interface TypewriterGraphemeSegmenter {\n segment(input: string): Iterable<{ segment: string }>;\n}\n\nexport interface ContentAwareTypewriterToken {\n text: string;\n cost: number;\n}\n\nexport interface ContentAwareTypewriterQueue {\n tokens: readonly ContentAwareTypewriterToken[];\n head: number;\n}\n\nexport interface ContentAwareTypewriterConsumption {\n chunk: string;\n queue: ContentAwareTypewriterQueue;\n remainingBudget: number;\n}\n\nlet cachedIntlSegmenter: TypewriterGraphemeSegmenter | null | undefined;\n\nconst getIntlSegmenter = (): TypewriterGraphemeSegmenter | null => {\n if (cachedIntlSegmenter !== undefined) {\n return cachedIntlSegmenter;\n }\n\n const Segmenter =\n typeof Intl === \"undefined\"\n ? undefined\n : (Intl as typeof Intl & { Segmenter?: typeof Intl.Segmenter }).Segmenter;\n\n cachedIntlSegmenter = Segmenter\n ? new Segmenter(undefined, { granularity: \"grapheme\" })\n : null;\n return cachedIntlSegmenter;\n};\n\nconst isCodePointInRange = (codePoint: string, start: number, end: number) => {\n const value = codePoint.codePointAt(0);\n return value !== undefined && value >= start && value <= end;\n};\n\nconst isRegionalIndicator = (codePoint: string) =>\n isCodePointInRange(codePoint, 0x1f1e6, 0x1f1ff);\n\nconst isVariationSelector = (codePoint: string) =>\n isCodePointInRange(codePoint, 0xfe00, 0xfe0f) ||\n isCodePointInRange(codePoint, 0xe0100, 0xe01ef);\n\nconst isEmojiModifier = (codePoint: string) =>\n isCodePointInRange(codePoint, 0x1f3fb, 0x1f3ff);\n\nconst isEmojiTag = (codePoint: string) =>\n isCodePointInRange(codePoint, 0xe0020, 0xe007f);\n\nconst isFallbackExtend = (codePoint: string) =>\n GRAPHEME_EXTEND_PATTERN.test(codePoint) ||\n MARK_PATTERN.test(codePoint) ||\n SPACING_MARK_PATTERN.test(codePoint) ||\n isVariationSelector(codePoint) ||\n isEmojiModifier(codePoint) ||\n isEmojiTag(codePoint) ||\n codePoint === \"\\u20e3\" ||\n codePoint === \"\\u0e33\";\n\nexport const fallbackSegmentTypewriterGraphemes = (value: string) => {\n const codePoints = Array.from(value);\n const graphemes: string[] = [];\n\n for (let index = 0; index < codePoints.length; index += 1) {\n let grapheme = codePoints[index];\n\n if (grapheme === CARRIAGE_RETURN && codePoints[index + 1] === LINE_FEED) {\n grapheme += codePoints[index + 1];\n index += 1;\n graphemes.push(grapheme);\n continue;\n }\n\n if (\n isRegionalIndicator(grapheme) &&\n isRegionalIndicator(codePoints[index + 1] || \"\")\n ) {\n grapheme += codePoints[index + 1];\n index += 1;\n graphemes.push(grapheme);\n continue;\n }\n\n while (index + 1 < codePoints.length) {\n const nextCodePoint = codePoints[index + 1];\n\n if (isFallbackExtend(nextCodePoint)) {\n grapheme += nextCodePoint;\n index += 1;\n continue;\n }\n\n if (nextCodePoint === ZERO_WIDTH_JOINER) {\n grapheme += nextCodePoint;\n index += 1;\n\n if (index + 1 < codePoints.length) {\n grapheme += codePoints[index + 1];\n index += 1;\n }\n\n continue;\n }\n\n break;\n }\n\n graphemes.push(grapheme);\n }\n\n return graphemes;\n};\n\nexport const segmentTypewriterGraphemes = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n) => {\n const resolvedSegmenter =\n segmenter === undefined ? getIntlSegmenter() : segmenter;\n\n if (!resolvedSegmenter) {\n return fallbackSegmentTypewriterGraphemes(value);\n }\n\n return Array.from(resolvedSegmenter.segment(value), ({ segment }) => segment);\n};\n\nconst isEmojiGrapheme = (grapheme: string) =>\n EXTENDED_PICTOGRAPHIC_PATTERN.test(grapheme) ||\n Array.from(grapheme).some(\n (codePoint) =>\n isRegionalIndicator(codePoint) ||\n isEmojiModifier(codePoint) ||\n codePoint === \"\\u20e3\"\n );\n\nexport const getContentAwareTypewriterCost = (grapheme: string) => {\n if (WHITESPACE_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.whitespace;\n }\n\n if (\n isEmojiGrapheme(grapheme) ||\n PUNCTUATION_OR_SYMBOL_PATTERN.test(grapheme)\n ) {\n return TYPEWRITER_GRAPHEME_COST.punctuationOrEmoji;\n }\n\n if (HAN_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.han;\n }\n\n if (LATIN_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.latin;\n }\n\n if (ARABIC_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.arabic;\n }\n\n if (THAI_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.thai;\n }\n\n if (LETTER_OR_NUMBER_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.otherLetterOrNumber;\n }\n\n return TYPEWRITER_GRAPHEME_COST.punctuationOrEmoji;\n};\n\nconst tokenizeContentAwareTypewriterText = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n) =>\n segmentTypewriterGraphemes(value, segmenter).map((text) => ({\n text,\n cost: getContentAwareTypewriterCost(text),\n }));\n\nexport const createContentAwareTypewriterQueue = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n): ContentAwareTypewriterQueue => ({\n tokens: tokenizeContentAwareTypewriterText(value, segmenter),\n head: 0,\n});\n\nexport const isContentAwareTypewriterQueueEmpty = (\n queue: ContentAwareTypewriterQueue\n) => queue.head >= queue.tokens.length;\n\nexport const appendContentAwareTypewriterQueue = (\n queue: ContentAwareTypewriterQueue,\n suffix: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n): ContentAwareTypewriterQueue => {\n if (!suffix) {\n return queue;\n }\n\n const remainingTokens = queue.tokens.slice(queue.head);\n if (remainingTokens.length === 0) {\n return createContentAwareTypewriterQueue(suffix, segmenter);\n }\n\n const lastToken = remainingTokens[remainingTokens.length - 1];\n const repairedTail = tokenizeContentAwareTypewriterText(\n `${lastToken.text}${suffix}`,\n segmenter\n );\n\n return {\n tokens: [...remainingTokens.slice(0, -1), ...repairedTail],\n head: 0,\n };\n};\n\nexport const consumeContentAwareTypewriterQueue = (\n queue: ContentAwareTypewriterQueue,\n availableBudget: number\n): ContentAwareTypewriterConsumption => {\n let head = queue.head;\n let remainingBudget = Math.max(0, availableBudget);\n let chunk = \"\";\n\n while (head < queue.tokens.length) {\n const token = queue.tokens[head];\n if (token.cost > remainingBudget) {\n break;\n }\n\n chunk += token.text;\n remainingBudget -= token.cost;\n head += 1;\n }\n\n return {\n chunk,\n queue: {\n tokens: queue.tokens,\n head,\n },\n remainingBudget,\n };\n};\n\nexport const getContentAwareTypewriterTickCount = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n) => {\n let queue = createContentAwareTypewriterQueue(value, segmenter);\n let budget = 0;\n let ticks = 0;\n\n while (!isContentAwareTypewriterQueueEmpty(queue)) {\n budget += CONTENT_AWARE_TYPEWRITER_TICK_BUDGET;\n const result = consumeContentAwareTypewriterQueue(queue, budget);\n\n if (!result.chunk) {\n throw new Error(\"Typewriter pacing could not consume the next grapheme\");\n }\n\n queue = result.queue;\n budget = result.remainingBudget;\n ticks += 1;\n }\n\n return ticks;\n};\n"],"names":["CONTENT_AWARE_TYPEWRITER_TICK_BUDGET","TYPEWRITER_GRAPHEME_COST","ZERO_WIDTH_JOINER","CARRIAGE_RETURN","LINE_FEED","GRAPHEME_EXTEND_PATTERN","MARK_PATTERN","SPACING_MARK_PATTERN","WHITESPACE_PATTERN","HAN_PATTERN","LATIN_PATTERN","ARABIC_PATTERN","THAI_PATTERN","LETTER_OR_NUMBER_PATTERN","PUNCTUATION_OR_SYMBOL_PATTERN","EXTENDED_PICTOGRAPHIC_PATTERN","cachedIntlSegmenter","getIntlSegmenter","Segmenter","isCodePointInRange","codePoint","start","end","value","isRegionalIndicator","isVariationSelector","isEmojiModifier","isEmojiTag","isFallbackExtend","fallbackSegmentTypewriterGraphemes","codePoints","graphemes","index","grapheme","nextCodePoint","segmentTypewriterGraphemes","segmenter","resolvedSegmenter","segment","isEmojiGrapheme","getContentAwareTypewriterCost","tokenizeContentAwareTypewriterText","text","createContentAwareTypewriterQueue","isContentAwareTypewriterQueueEmpty","queue","appendContentAwareTypewriterQueue","suffix","remainingTokens","lastToken","repairedTail","consumeContentAwareTypewriterQueue","availableBudget","head","remainingBudget","chunk","token"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export declare const CONTENT_AWARE_TYPEWRITER_TICK_BUDGET = 200;
2
+ export interface TypewriterGraphemeSegmenter {
3
+ segment(input: string): Iterable<{
4
+ segment: string;
5
+ }>;
6
+ }
7
+ export interface ContentAwareTypewriterToken {
8
+ text: string;
9
+ cost: number;
10
+ }
11
+ export interface ContentAwareTypewriterQueue {
12
+ tokens: readonly ContentAwareTypewriterToken[];
13
+ head: number;
14
+ }
15
+ export interface ContentAwareTypewriterConsumption {
16
+ chunk: string;
17
+ queue: ContentAwareTypewriterQueue;
18
+ remainingBudget: number;
19
+ }
20
+ export declare const fallbackSegmentTypewriterGraphemes: (value: string) => string[];
21
+ export declare const segmentTypewriterGraphemes: (value: string, segmenter?: TypewriterGraphemeSegmenter | null) => string[];
22
+ export declare const getContentAwareTypewriterCost: (grapheme: string) => 0 | 100 | 28 | 34 | 42 | 35;
23
+ export declare const createContentAwareTypewriterQueue: (value: string, segmenter?: TypewriterGraphemeSegmenter | null) => ContentAwareTypewriterQueue;
24
+ export declare const isContentAwareTypewriterQueueEmpty: (queue: ContentAwareTypewriterQueue) => boolean;
25
+ export declare const appendContentAwareTypewriterQueue: (queue: ContentAwareTypewriterQueue, suffix: string, segmenter?: TypewriterGraphemeSegmenter | null) => ContentAwareTypewriterQueue;
26
+ export declare const consumeContentAwareTypewriterQueue: (queue: ContentAwareTypewriterQueue, availableBudget: number) => ContentAwareTypewriterConsumption;
27
+ export declare const getContentAwareTypewriterTickCount: (value: string, segmenter?: TypewriterGraphemeSegmenter | null) => number;
@@ -0,0 +1,98 @@
1
+ const H = 200, i = {
2
+ han: 100,
3
+ latin: 28,
4
+ arabic: 34,
5
+ thai: 42,
6
+ otherLetterOrNumber: 35,
7
+ punctuationOrEmoji: 100,
8
+ whitespace: 0
9
+ }, p = "‍", A = "\r", l = `
10
+ `, _ = new RegExp("\\p{Grapheme_Extend}", "u"), R = new RegExp("\\p{Mark}", "u"), m = new RegExp("\\p{Spacing_Mark}", "u"), h = /^\s+$/u, N = new RegExp("\\p{Script_Extensions=Han}", "u"), g = new RegExp("\\p{Script_Extensions=Latin}", "u"), f = new RegExp("\\p{Script_Extensions=Arabic}", "u"), I = new RegExp("\\p{Script_Extensions=Thai}", "u"), k = /[\p{Letter}\p{Number}]/u, w = /[\p{Punctuation}\p{Symbol}]/u, C = new RegExp("\\p{Extended_Pictographic}", "u");
11
+ let a;
12
+ const d = () => {
13
+ if (a !== void 0)
14
+ return a;
15
+ const t = typeof Intl > "u" ? void 0 : Intl.Segmenter;
16
+ return a = t ? new t(void 0, { granularity: "grapheme" }) : null, a;
17
+ }, c = (t, n, r) => {
18
+ const e = t.codePointAt(0);
19
+ return e !== void 0 && e >= n && e <= r;
20
+ }, T = (t) => c(t, 127462, 127487), S = (t) => c(t, 65024, 65039) || c(t, 917760, 917999), E = (t) => c(t, 127995, 127999), P = (t) => c(t, 917536, 917631), y = (t) => _.test(t) || R.test(t) || m.test(t) || S(t) || E(t) || P(t) || t === "⃣" || t === "ำ", O = (t) => {
21
+ const n = Array.from(t), r = [];
22
+ for (let e = 0; e < n.length; e += 1) {
23
+ let s = n[e];
24
+ if (s === A && n[e + 1] === l) {
25
+ s += n[e + 1], e += 1, r.push(s);
26
+ continue;
27
+ }
28
+ if (T(s) && T(n[e + 1] || "")) {
29
+ s += n[e + 1], e += 1, r.push(s);
30
+ continue;
31
+ }
32
+ for (; e + 1 < n.length; ) {
33
+ const o = n[e + 1];
34
+ if (y(o)) {
35
+ s += o, e += 1;
36
+ continue;
37
+ }
38
+ if (o === p) {
39
+ s += o, e += 1, e + 1 < n.length && (s += n[e + 1], e += 1);
40
+ continue;
41
+ }
42
+ break;
43
+ }
44
+ r.push(s);
45
+ }
46
+ return r;
47
+ }, b = (t, n) => {
48
+ const r = d();
49
+ return r ? Array.from(r.segment(t), ({ segment: e }) => e) : O(t);
50
+ }, x = (t) => C.test(t) || Array.from(t).some(
51
+ (n) => T(n) || E(n) || n === "⃣"
52
+ ), G = (t) => h.test(t) ? i.whitespace : x(t) || w.test(t) ? i.punctuationOrEmoji : N.test(t) ? i.han : g.test(t) ? i.latin : f.test(t) ? i.arabic : I.test(t) ? i.thai : k.test(t) ? i.otherLetterOrNumber : i.punctuationOrEmoji, u = (t, n) => b(t).map((r) => ({
53
+ text: r,
54
+ cost: G(r)
55
+ })), M = (t, n) => ({
56
+ tokens: u(t),
57
+ head: 0
58
+ }), L = (t) => t.head >= t.tokens.length, j = (t, n, r) => {
59
+ if (!n)
60
+ return t;
61
+ const e = t.tokens.slice(t.head);
62
+ if (e.length === 0)
63
+ return M(n);
64
+ const s = e[e.length - 1], o = u(
65
+ `${s.text}${n}`
66
+ );
67
+ return {
68
+ tokens: [...e.slice(0, -1), ...o],
69
+ head: 0
70
+ };
71
+ }, D = (t, n) => {
72
+ let r = t.head, e = Math.max(0, n), s = "";
73
+ for (; r < t.tokens.length; ) {
74
+ const o = t.tokens[r];
75
+ if (o.cost > e)
76
+ break;
77
+ s += o.text, e -= o.cost, r += 1;
78
+ }
79
+ return {
80
+ chunk: s,
81
+ queue: {
82
+ tokens: t.tokens,
83
+ head: r
84
+ },
85
+ remainingBudget: e
86
+ };
87
+ };
88
+ export {
89
+ H as CONTENT_AWARE_TYPEWRITER_TICK_BUDGET,
90
+ j as appendContentAwareTypewriterQueue,
91
+ D as consumeContentAwareTypewriterQueue,
92
+ M as createContentAwareTypewriterQueue,
93
+ O as fallbackSegmentTypewriterGraphemes,
94
+ G as getContentAwareTypewriterCost,
95
+ L as isContentAwareTypewriterQueueEmpty,
96
+ b as segmentTypewriterGraphemes
97
+ };
98
+ //# sourceMappingURL=typewriter-pacing.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typewriter-pacing.es.js","sources":["../../../../src/components/ContentRender/utils/typewriter-pacing.ts"],"sourcesContent":["export const CONTENT_AWARE_TYPEWRITER_TICK_BUDGET = 200;\n\nconst TYPEWRITER_GRAPHEME_COST = {\n han: 100,\n latin: 28,\n arabic: 34,\n thai: 42,\n otherLetterOrNumber: 35,\n punctuationOrEmoji: 100,\n whitespace: 0,\n} as const;\n\nconst ZERO_WIDTH_JOINER = \"\\u200d\";\nconst CARRIAGE_RETURN = \"\\r\";\nconst LINE_FEED = \"\\n\";\n\nconst GRAPHEME_EXTEND_PATTERN = /\\p{Grapheme_Extend}/u;\nconst MARK_PATTERN = /\\p{Mark}/u;\nconst SPACING_MARK_PATTERN = /\\p{Spacing_Mark}/u;\nconst WHITESPACE_PATTERN = /^\\s+$/u;\nconst HAN_PATTERN = /\\p{Script_Extensions=Han}/u;\nconst LATIN_PATTERN = /\\p{Script_Extensions=Latin}/u;\nconst ARABIC_PATTERN = /\\p{Script_Extensions=Arabic}/u;\nconst THAI_PATTERN = /\\p{Script_Extensions=Thai}/u;\nconst LETTER_OR_NUMBER_PATTERN = /[\\p{Letter}\\p{Number}]/u;\nconst PUNCTUATION_OR_SYMBOL_PATTERN = /[\\p{Punctuation}\\p{Symbol}]/u;\nconst EXTENDED_PICTOGRAPHIC_PATTERN = /\\p{Extended_Pictographic}/u;\n\nexport interface TypewriterGraphemeSegmenter {\n segment(input: string): Iterable<{ segment: string }>;\n}\n\nexport interface ContentAwareTypewriterToken {\n text: string;\n cost: number;\n}\n\nexport interface ContentAwareTypewriterQueue {\n tokens: readonly ContentAwareTypewriterToken[];\n head: number;\n}\n\nexport interface ContentAwareTypewriterConsumption {\n chunk: string;\n queue: ContentAwareTypewriterQueue;\n remainingBudget: number;\n}\n\nlet cachedIntlSegmenter: TypewriterGraphemeSegmenter | null | undefined;\n\nconst getIntlSegmenter = (): TypewriterGraphemeSegmenter | null => {\n if (cachedIntlSegmenter !== undefined) {\n return cachedIntlSegmenter;\n }\n\n const Segmenter =\n typeof Intl === \"undefined\"\n ? undefined\n : (Intl as typeof Intl & { Segmenter?: typeof Intl.Segmenter }).Segmenter;\n\n cachedIntlSegmenter = Segmenter\n ? new Segmenter(undefined, { granularity: \"grapheme\" })\n : null;\n return cachedIntlSegmenter;\n};\n\nconst isCodePointInRange = (codePoint: string, start: number, end: number) => {\n const value = codePoint.codePointAt(0);\n return value !== undefined && value >= start && value <= end;\n};\n\nconst isRegionalIndicator = (codePoint: string) =>\n isCodePointInRange(codePoint, 0x1f1e6, 0x1f1ff);\n\nconst isVariationSelector = (codePoint: string) =>\n isCodePointInRange(codePoint, 0xfe00, 0xfe0f) ||\n isCodePointInRange(codePoint, 0xe0100, 0xe01ef);\n\nconst isEmojiModifier = (codePoint: string) =>\n isCodePointInRange(codePoint, 0x1f3fb, 0x1f3ff);\n\nconst isEmojiTag = (codePoint: string) =>\n isCodePointInRange(codePoint, 0xe0020, 0xe007f);\n\nconst isFallbackExtend = (codePoint: string) =>\n GRAPHEME_EXTEND_PATTERN.test(codePoint) ||\n MARK_PATTERN.test(codePoint) ||\n SPACING_MARK_PATTERN.test(codePoint) ||\n isVariationSelector(codePoint) ||\n isEmojiModifier(codePoint) ||\n isEmojiTag(codePoint) ||\n codePoint === \"\\u20e3\" ||\n codePoint === \"\\u0e33\";\n\nexport const fallbackSegmentTypewriterGraphemes = (value: string) => {\n const codePoints = Array.from(value);\n const graphemes: string[] = [];\n\n for (let index = 0; index < codePoints.length; index += 1) {\n let grapheme = codePoints[index];\n\n if (grapheme === CARRIAGE_RETURN && codePoints[index + 1] === LINE_FEED) {\n grapheme += codePoints[index + 1];\n index += 1;\n graphemes.push(grapheme);\n continue;\n }\n\n if (\n isRegionalIndicator(grapheme) &&\n isRegionalIndicator(codePoints[index + 1] || \"\")\n ) {\n grapheme += codePoints[index + 1];\n index += 1;\n graphemes.push(grapheme);\n continue;\n }\n\n while (index + 1 < codePoints.length) {\n const nextCodePoint = codePoints[index + 1];\n\n if (isFallbackExtend(nextCodePoint)) {\n grapheme += nextCodePoint;\n index += 1;\n continue;\n }\n\n if (nextCodePoint === ZERO_WIDTH_JOINER) {\n grapheme += nextCodePoint;\n index += 1;\n\n if (index + 1 < codePoints.length) {\n grapheme += codePoints[index + 1];\n index += 1;\n }\n\n continue;\n }\n\n break;\n }\n\n graphemes.push(grapheme);\n }\n\n return graphemes;\n};\n\nexport const segmentTypewriterGraphemes = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n) => {\n const resolvedSegmenter =\n segmenter === undefined ? getIntlSegmenter() : segmenter;\n\n if (!resolvedSegmenter) {\n return fallbackSegmentTypewriterGraphemes(value);\n }\n\n return Array.from(resolvedSegmenter.segment(value), ({ segment }) => segment);\n};\n\nconst isEmojiGrapheme = (grapheme: string) =>\n EXTENDED_PICTOGRAPHIC_PATTERN.test(grapheme) ||\n Array.from(grapheme).some(\n (codePoint) =>\n isRegionalIndicator(codePoint) ||\n isEmojiModifier(codePoint) ||\n codePoint === \"\\u20e3\"\n );\n\nexport const getContentAwareTypewriterCost = (grapheme: string) => {\n if (WHITESPACE_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.whitespace;\n }\n\n if (\n isEmojiGrapheme(grapheme) ||\n PUNCTUATION_OR_SYMBOL_PATTERN.test(grapheme)\n ) {\n return TYPEWRITER_GRAPHEME_COST.punctuationOrEmoji;\n }\n\n if (HAN_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.han;\n }\n\n if (LATIN_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.latin;\n }\n\n if (ARABIC_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.arabic;\n }\n\n if (THAI_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.thai;\n }\n\n if (LETTER_OR_NUMBER_PATTERN.test(grapheme)) {\n return TYPEWRITER_GRAPHEME_COST.otherLetterOrNumber;\n }\n\n return TYPEWRITER_GRAPHEME_COST.punctuationOrEmoji;\n};\n\nconst tokenizeContentAwareTypewriterText = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n) =>\n segmentTypewriterGraphemes(value, segmenter).map((text) => ({\n text,\n cost: getContentAwareTypewriterCost(text),\n }));\n\nexport const createContentAwareTypewriterQueue = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n): ContentAwareTypewriterQueue => ({\n tokens: tokenizeContentAwareTypewriterText(value, segmenter),\n head: 0,\n});\n\nexport const isContentAwareTypewriterQueueEmpty = (\n queue: ContentAwareTypewriterQueue\n) => queue.head >= queue.tokens.length;\n\nexport const appendContentAwareTypewriterQueue = (\n queue: ContentAwareTypewriterQueue,\n suffix: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n): ContentAwareTypewriterQueue => {\n if (!suffix) {\n return queue;\n }\n\n const remainingTokens = queue.tokens.slice(queue.head);\n if (remainingTokens.length === 0) {\n return createContentAwareTypewriterQueue(suffix, segmenter);\n }\n\n const lastToken = remainingTokens[remainingTokens.length - 1];\n const repairedTail = tokenizeContentAwareTypewriterText(\n `${lastToken.text}${suffix}`,\n segmenter\n );\n\n return {\n tokens: [...remainingTokens.slice(0, -1), ...repairedTail],\n head: 0,\n };\n};\n\nexport const consumeContentAwareTypewriterQueue = (\n queue: ContentAwareTypewriterQueue,\n availableBudget: number\n): ContentAwareTypewriterConsumption => {\n let head = queue.head;\n let remainingBudget = Math.max(0, availableBudget);\n let chunk = \"\";\n\n while (head < queue.tokens.length) {\n const token = queue.tokens[head];\n if (token.cost > remainingBudget) {\n break;\n }\n\n chunk += token.text;\n remainingBudget -= token.cost;\n head += 1;\n }\n\n return {\n chunk,\n queue: {\n tokens: queue.tokens,\n head,\n },\n remainingBudget,\n };\n};\n\nexport const getContentAwareTypewriterTickCount = (\n value: string,\n segmenter?: TypewriterGraphemeSegmenter | null\n) => {\n let queue = createContentAwareTypewriterQueue(value, segmenter);\n let budget = 0;\n let ticks = 0;\n\n while (!isContentAwareTypewriterQueueEmpty(queue)) {\n budget += CONTENT_AWARE_TYPEWRITER_TICK_BUDGET;\n const result = consumeContentAwareTypewriterQueue(queue, budget);\n\n if (!result.chunk) {\n throw new Error(\"Typewriter pacing could not consume the next grapheme\");\n }\n\n queue = result.queue;\n budget = result.remainingBudget;\n ticks += 1;\n }\n\n return ticks;\n};\n"],"names":["CONTENT_AWARE_TYPEWRITER_TICK_BUDGET","TYPEWRITER_GRAPHEME_COST","ZERO_WIDTH_JOINER","CARRIAGE_RETURN","LINE_FEED","GRAPHEME_EXTEND_PATTERN","MARK_PATTERN","SPACING_MARK_PATTERN","WHITESPACE_PATTERN","HAN_PATTERN","LATIN_PATTERN","ARABIC_PATTERN","THAI_PATTERN","LETTER_OR_NUMBER_PATTERN","PUNCTUATION_OR_SYMBOL_PATTERN","EXTENDED_PICTOGRAPHIC_PATTERN","cachedIntlSegmenter","getIntlSegmenter","Segmenter","isCodePointInRange","codePoint","start","end","value","isRegionalIndicator","isVariationSelector","isEmojiModifier","isEmojiTag","isFallbackExtend","fallbackSegmentTypewriterGraphemes","codePoints","graphemes","index","grapheme","nextCodePoint","segmentTypewriterGraphemes","segmenter","resolvedSegmenter","segment","isEmojiGrapheme","getContentAwareTypewriterCost","tokenizeContentAwareTypewriterText","text","createContentAwareTypewriterQueue","isContentAwareTypewriterQueueEmpty","queue","appendContentAwareTypewriterQueue","suffix","remainingTokens","lastToken","repairedTail","consumeContentAwareTypewriterQueue","availableBudget","head","remainingBudget","chunk","token"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("../../_virtual/jsx-runtime.cjs"),p=require("../ContentRender/ContentRender.cjs");require("react");require("react-dom/client");require("../ContentRender/contentRenderI18n.cjs");require("../ui/inputGroup/input-group.cjs");;/* empty css */const S=({initialContentList:r=[],locale:u,customRenderBar:s,onSend:d,confirmButtonText:i,copyButtonText:a,copiedButtonText:n,beforeSend:l,interactionDefaultValueOptions:o})=>t.jsxRuntimeExports.jsx("div",{className:"markdown-flow",children:r.map((e,m)=>{const c=e.isFinished??!1?void 0:d,x=l??(()=>!0);return t.jsxRuntimeExports.jsx(p.default,{content:e.content,userInput:e.userInput,defaultInputText:e.defaultInputText,defaultButtonText:e.defaultButtonText,defaultSelectedValues:e.defaultSelectedValues,readonly:e.readonly,customRenderBar:e.customRenderBar||s,onSend:c,beforeSend:x,locale:u,interactionDefaultValueOptions:o,onClickCustomButtonAfterContent:e.onClickCustomButtonAfterContent,confirmButtonText:i,copyButtonText:a,copiedButtonText:n,dynamicInteractionFormat:e.dynamicInteractionFormat},m)})});exports.default=S;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),d=require("../../lib/locale.cjs"),x=require("../ContentRender/ContentRender.cjs");require("react");require("react-dom/client");require("../ui/inputGroup/input-group.cjs");;/* empty css */const C=({initialContentList:i=[],locale:t,lang:r,dir:u,customRenderBar:n,onSend:s,confirmButtonText:l,copyButtonText:o,copiedButtonText:c,beforeSend:m,interactionDefaultValueOptions:w})=>a.jsx("div",{className:"markdown-flow",dir:u??d.getMarkdownFlowDirection(t),lang:r??d.getMarkdownFlowLanguage(t),children:i.map((e,F)=>{const S=e.isFinished??!1?void 0:s,q=m??(()=>!0);return a.jsx(x.default,{content:e.content,userInput:e.userInput,defaultInputText:e.defaultInputText,defaultButtonText:e.defaultButtonText,defaultSelectedValues:e.defaultSelectedValues,readonly:e.readonly,customRenderBar:e.customRenderBar||n,onSend:S,beforeSend:q,locale:t,lang:r,dir:u,interactionDefaultValueOptions:w,onClickCustomButtonAfterContent:e.onClickCustomButtonAfterContent,confirmButtonText:l,copyButtonText:o,copiedButtonText:c,dynamicInteractionFormat:e.dynamicInteractionFormat},F)})});exports.default=C;
2
2
  //# sourceMappingURL=MarkdownFlow.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownFlow.cjs","sources":["../../../src/components/MarkdownFlow/MarkdownFlow.tsx"],"sourcesContent":["import React from \"react\";\nimport type { InteractionDefaultValueOptions } from \"../../lib/interaction-defaults\";\nimport type { MarkdownFlowLocale } from \"../../lib/locale\";\nimport ContentRender from \"../ContentRender\";\nimport { CustomRenderBarProps, OnSendContentParams } from \"../types\";\nimport \"./markdownFlow.css\";\n\nexport interface MarkdownFlowProps {\n initialContentList?: {\n content: string;\n isFinished?: boolean;\n userInput?: string;\n defaultInputText?: string;\n defaultButtonText?: string;\n defaultSelectedValues?: string[];\n readonly?: boolean;\n customRenderBar?: CustomRenderBarProps;\n onClickCustomButtonAfterContent?: () => void;\n dynamicInteractionFormat?: string;\n }[];\n /** Locale used for built-in UI text when a more specific text prop is not provided. */\n locale?: MarkdownFlowLocale;\n customRenderBar?: CustomRenderBarProps;\n onSend?: (content: OnSendContentParams) => void;\n // Multi-select confirm button text (i18n support)\n confirmButtonText?: string;\n // Copy button text for code blocks\n copyButtonText?: string;\n // Copied state text for code blocks\n copiedButtonText?: string;\n beforeSend?: (content: OnSendContentParams) => boolean;\n interactionDefaultValueOptions?: InteractionDefaultValueOptions;\n}\n\nconst MarkdownFlow: React.FC<MarkdownFlowProps> = ({\n initialContentList = [],\n locale,\n customRenderBar,\n onSend: onSendProp,\n confirmButtonText,\n copyButtonText,\n copiedButtonText,\n beforeSend: beforeSendProp,\n interactionDefaultValueOptions,\n}) => {\n return (\n <div className=\"markdown-flow\">\n {initialContentList.map((contentInfo, index) => {\n const isFinished = contentInfo.isFinished ?? false;\n const onSend = isFinished ? undefined : onSendProp;\n const beforeSend = beforeSendProp ?? (() => true);\n return (\n <ContentRender\n key={index}\n content={contentInfo.content}\n userInput={contentInfo.userInput}\n defaultInputText={contentInfo.defaultInputText}\n defaultButtonText={contentInfo.defaultButtonText}\n defaultSelectedValues={contentInfo.defaultSelectedValues}\n readonly={contentInfo.readonly}\n customRenderBar={contentInfo.customRenderBar || customRenderBar}\n onSend={onSend}\n beforeSend={beforeSend}\n locale={locale}\n interactionDefaultValueOptions={interactionDefaultValueOptions}\n onClickCustomButtonAfterContent={\n contentInfo.onClickCustomButtonAfterContent\n }\n confirmButtonText={confirmButtonText}\n copyButtonText={copyButtonText}\n copiedButtonText={copiedButtonText}\n dynamicInteractionFormat={contentInfo.dynamicInteractionFormat}\n />\n );\n })}\n </div>\n );\n};\n\nexport default MarkdownFlow;\n"],"names":["MarkdownFlow","initialContentList","locale","customRenderBar","onSendProp","confirmButtonText","copyButtonText","copiedButtonText","beforeSendProp","interactionDefaultValueOptions","jsx","contentInfo","index","onSend","beforeSend","ContentRender"],"mappings":"2XAkCA,MAAMA,EAA4C,CAAC,CACjD,mBAAAC,EAAqB,CAAA,EACrB,OAAAC,EACA,gBAAAC,EACA,OAAQC,EACR,kBAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,WAAYC,EACZ,+BAAAC,CACF,IAEIC,wBAAC,OAAI,UAAU,gBACZ,WAAmB,IAAI,CAACC,EAAaC,IAAU,CAE9C,MAAMC,EADaF,EAAY,YAAc,GACjB,OAAYP,EAClCU,EAAaN,IAAmB,IAAM,IAC5C,OACEE,EAAAA,kBAAAA,IAACK,EAAAA,QAAA,CAEC,QAASJ,EAAY,QACrB,UAAWA,EAAY,UACvB,iBAAkBA,EAAY,iBAC9B,kBAAmBA,EAAY,kBAC/B,sBAAuBA,EAAY,sBACnC,SAAUA,EAAY,SACtB,gBAAiBA,EAAY,iBAAmBR,EAChD,OAAAU,EACA,WAAAC,EACA,OAAAZ,EACA,+BAAAO,EACA,gCACEE,EAAY,gCAEd,kBAAAN,EACA,eAAAC,EACA,iBAAAC,EACA,yBAA0BI,EAAY,wBAAA,EAlBjCC,CAAA,CAqBX,CAAC,CAAA,CACH"}
1
+ {"version":3,"file":"MarkdownFlow.cjs","sources":["../../../src/components/MarkdownFlow/MarkdownFlow.tsx"],"sourcesContent":["import React from \"react\";\nimport type { InteractionDefaultValueOptions } from \"../../lib/interaction-defaults\";\nimport {\n getMarkdownFlowDirection,\n getMarkdownFlowLanguage,\n type MarkdownFlowLocale,\n} from \"../../lib/locale\";\nimport ContentRender from \"../ContentRender\";\nimport { CustomRenderBarProps, OnSendContentParams } from \"../types\";\nimport \"./markdownFlow.css\";\n\nexport interface MarkdownFlowProps {\n initialContentList?: {\n content: string;\n isFinished?: boolean;\n userInput?: string;\n defaultInputText?: string;\n defaultButtonText?: string;\n defaultSelectedValues?: string[];\n readonly?: boolean;\n customRenderBar?: CustomRenderBarProps;\n onClickCustomButtonAfterContent?: () => void;\n dynamicInteractionFormat?: string;\n }[];\n /**\n * Locale used for built-in UI text when a more specific text prop is not provided.\n * Arabic sets RTL direction; other supported locales set LTR direction.\n * When omitted, direction is inherited from the host and UI text uses the default locale.\n */\n locale?: MarkdownFlowLocale;\n /** Overrides the locale-derived language. */\n lang?: string;\n /** Overrides the locale-derived direction. */\n dir?: React.HTMLAttributes<HTMLDivElement>[\"dir\"];\n customRenderBar?: CustomRenderBarProps;\n onSend?: (content: OnSendContentParams) => void;\n // Multi-select confirm button text (i18n support)\n confirmButtonText?: string;\n // Copy button text for code blocks\n copyButtonText?: string;\n // Copied state text for code blocks\n copiedButtonText?: string;\n beforeSend?: (content: OnSendContentParams) => boolean;\n interactionDefaultValueOptions?: InteractionDefaultValueOptions;\n}\n\nconst MarkdownFlow: React.FC<MarkdownFlowProps> = ({\n initialContentList = [],\n locale,\n lang,\n dir,\n customRenderBar,\n onSend: onSendProp,\n confirmButtonText,\n copyButtonText,\n copiedButtonText,\n beforeSend: beforeSendProp,\n interactionDefaultValueOptions,\n}) => {\n return (\n <div\n className=\"markdown-flow\"\n dir={dir ?? getMarkdownFlowDirection(locale)}\n lang={lang ?? getMarkdownFlowLanguage(locale)}\n >\n {initialContentList.map((contentInfo, index) => {\n const isFinished = contentInfo.isFinished ?? false;\n const onSend = isFinished ? undefined : onSendProp;\n const beforeSend = beforeSendProp ?? (() => true);\n return (\n <ContentRender\n key={index}\n content={contentInfo.content}\n userInput={contentInfo.userInput}\n defaultInputText={contentInfo.defaultInputText}\n defaultButtonText={contentInfo.defaultButtonText}\n defaultSelectedValues={contentInfo.defaultSelectedValues}\n readonly={contentInfo.readonly}\n customRenderBar={contentInfo.customRenderBar || customRenderBar}\n onSend={onSend}\n beforeSend={beforeSend}\n locale={locale}\n lang={lang}\n dir={dir}\n interactionDefaultValueOptions={interactionDefaultValueOptions}\n onClickCustomButtonAfterContent={\n contentInfo.onClickCustomButtonAfterContent\n }\n confirmButtonText={confirmButtonText}\n copyButtonText={copyButtonText}\n copiedButtonText={copiedButtonText}\n dynamicInteractionFormat={contentInfo.dynamicInteractionFormat}\n />\n );\n })}\n </div>\n );\n};\n\nexport default MarkdownFlow;\n"],"names":["MarkdownFlow","initialContentList","locale","lang","dir","customRenderBar","onSendProp","confirmButtonText","copyButtonText","copiedButtonText","beforeSendProp","interactionDefaultValueOptions","jsx","getMarkdownFlowDirection","getMarkdownFlowLanguage","contentInfo","index","onSend","beforeSend","ContentRender"],"mappings":"8VA8CA,MAAMA,EAA4C,CAAC,CACjD,mBAAAC,EAAqB,CAAA,EAAC,OACtBC,EACA,KAAAC,EACA,IAAAC,EACA,gBAAAC,EACA,OAAQC,EACR,kBAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,WAAYC,EACZ,+BAAAC,CACF,IAEIC,EAAAA,IAAC,MAAA,CACC,UAAU,gBACV,IAAKR,GAAOS,EAAAA,yBAAyBX,CAAM,EAC3C,KAAMC,GAAQW,EAAAA,wBAAwBZ,CAAM,EAE3C,SAAAD,EAAmB,IAAI,CAACc,EAAaC,IAAU,CAE9C,MAAMC,EADaF,EAAY,YAAc,GACjB,OAAYT,EAClCY,EAAaR,IAAmB,IAAM,IAC5C,OACEE,EAAAA,IAACO,EAAAA,QAAA,CAEC,QAASJ,EAAY,QACrB,UAAWA,EAAY,UACvB,iBAAkBA,EAAY,iBAC9B,kBAAmBA,EAAY,kBAC/B,sBAAuBA,EAAY,sBACnC,SAAUA,EAAY,SACtB,gBAAiBA,EAAY,iBAAmBV,EAChD,OAAAY,EACA,WAAAC,EAAA,OACAhB,EACA,KAAAC,EACA,IAAAC,EACA,+BAAAO,EACA,gCACEI,EAAY,gCAEd,kBAAAR,EACA,eAAAC,EACA,iBAAAC,EACA,yBAA0BM,EAAY,wBAAA,EApBjCC,CAAA,CAuBX,CAAC,CAAA,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { default as React } from 'react';
2
- import { InteractionDefaultValueOptions } from '../../lib/interaction-defaults';
3
- import { MarkdownFlowLocale } from '../../lib/locale';
4
- import { CustomRenderBarProps, OnSendContentParams } from '../types';
2
+ import { InteractionDefaultValueOptions } from '../../lib/interaction-defaults.js';
3
+ import { MarkdownFlowLocale } from '../../lib/locale.js';
4
+ import { CustomRenderBarProps, OnSendContentParams } from '../types.js';
5
5
  export interface MarkdownFlowProps {
6
6
  initialContentList?: {
7
7
  content: string;
@@ -15,8 +15,16 @@ export interface MarkdownFlowProps {
15
15
  onClickCustomButtonAfterContent?: () => void;
16
16
  dynamicInteractionFormat?: string;
17
17
  }[];
18
- /** Locale used for built-in UI text when a more specific text prop is not provided. */
18
+ /**
19
+ * Locale used for built-in UI text when a more specific text prop is not provided.
20
+ * Arabic sets RTL direction; other supported locales set LTR direction.
21
+ * When omitted, direction is inherited from the host and UI text uses the default locale.
22
+ */
19
23
  locale?: MarkdownFlowLocale;
24
+ /** Overrides the locale-derived language. */
25
+ lang?: string;
26
+ /** Overrides the locale-derived direction. */
27
+ dir?: React.HTMLAttributes<HTMLDivElement>["dir"];
20
28
  customRenderBar?: CustomRenderBarProps;
21
29
  onSend?: (content: OnSendContentParams) => void;
22
30
  confirmButtonText?: string;
@@ -1,46 +1,58 @@
1
- import { j as t } from "../../_virtual/jsx-runtime.es.js";
2
- import x from "../ContentRender/ContentRender.es.js";
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { getMarkdownFlowLanguage as f, getMarkdownFlowDirection as C } from "../../lib/locale.es.js";
3
+ import k from "../ContentRender/ContentRender.es.js";
3
4
  import "react";
4
5
  import "react-dom/client";
5
- import "../ContentRender/contentRenderI18n.es.js";
6
6
  import "../ui/inputGroup/input-group.es.js";
7
7
  /* empty css */
8
- const w = ({
9
- initialContentList: r = [],
10
- locale: d,
11
- customRenderBar: a,
12
- onSend: o,
13
- confirmButtonText: s,
14
- copyButtonText: u,
15
- copiedButtonText: i,
16
- beforeSend: n,
17
- interactionDefaultValueOptions: m
18
- }) => /* @__PURE__ */ t.jsx("div", { className: "markdown-flow", children: r.map((e, l) => {
19
- const p = e.isFinished ?? !1 ? void 0 : o, c = n ?? (() => !0);
20
- return /* @__PURE__ */ t.jsx(
21
- x,
22
- {
23
- content: e.content,
24
- userInput: e.userInput,
25
- defaultInputText: e.defaultInputText,
26
- defaultButtonText: e.defaultButtonText,
27
- defaultSelectedValues: e.defaultSelectedValues,
28
- readonly: e.readonly,
29
- customRenderBar: e.customRenderBar || a,
30
- onSend: p,
31
- beforeSend: c,
32
- locale: d,
33
- interactionDefaultValueOptions: m,
34
- onClickCustomButtonAfterContent: e.onClickCustomButtonAfterContent,
35
- confirmButtonText: s,
36
- copyButtonText: u,
37
- copiedButtonText: i,
38
- dynamicInteractionFormat: e.dynamicInteractionFormat
39
- },
40
- l
41
- );
42
- }) });
8
+ const R = ({
9
+ initialContentList: a = [],
10
+ locale: t,
11
+ lang: r,
12
+ dir: d,
13
+ customRenderBar: i,
14
+ onSend: u,
15
+ confirmButtonText: n,
16
+ copyButtonText: s,
17
+ copiedButtonText: m,
18
+ beforeSend: l,
19
+ interactionDefaultValueOptions: p
20
+ }) => /* @__PURE__ */ o(
21
+ "div",
22
+ {
23
+ className: "markdown-flow",
24
+ dir: d ?? C(t),
25
+ lang: r ?? f(t),
26
+ children: a.map((e, c) => {
27
+ const w = e.isFinished ?? !1 ? void 0 : u, F = l ?? (() => !0);
28
+ return /* @__PURE__ */ o(
29
+ k,
30
+ {
31
+ content: e.content,
32
+ userInput: e.userInput,
33
+ defaultInputText: e.defaultInputText,
34
+ defaultButtonText: e.defaultButtonText,
35
+ defaultSelectedValues: e.defaultSelectedValues,
36
+ readonly: e.readonly,
37
+ customRenderBar: e.customRenderBar || i,
38
+ onSend: w,
39
+ beforeSend: F,
40
+ locale: t,
41
+ lang: r,
42
+ dir: d,
43
+ interactionDefaultValueOptions: p,
44
+ onClickCustomButtonAfterContent: e.onClickCustomButtonAfterContent,
45
+ confirmButtonText: n,
46
+ copyButtonText: s,
47
+ copiedButtonText: m,
48
+ dynamicInteractionFormat: e.dynamicInteractionFormat
49
+ },
50
+ c
51
+ );
52
+ })
53
+ }
54
+ );
43
55
  export {
44
- w as default
56
+ R as default
45
57
  };
46
58
  //# sourceMappingURL=MarkdownFlow.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownFlow.es.js","sources":["../../../src/components/MarkdownFlow/MarkdownFlow.tsx"],"sourcesContent":["import React from \"react\";\nimport type { InteractionDefaultValueOptions } from \"../../lib/interaction-defaults\";\nimport type { MarkdownFlowLocale } from \"../../lib/locale\";\nimport ContentRender from \"../ContentRender\";\nimport { CustomRenderBarProps, OnSendContentParams } from \"../types\";\nimport \"./markdownFlow.css\";\n\nexport interface MarkdownFlowProps {\n initialContentList?: {\n content: string;\n isFinished?: boolean;\n userInput?: string;\n defaultInputText?: string;\n defaultButtonText?: string;\n defaultSelectedValues?: string[];\n readonly?: boolean;\n customRenderBar?: CustomRenderBarProps;\n onClickCustomButtonAfterContent?: () => void;\n dynamicInteractionFormat?: string;\n }[];\n /** Locale used for built-in UI text when a more specific text prop is not provided. */\n locale?: MarkdownFlowLocale;\n customRenderBar?: CustomRenderBarProps;\n onSend?: (content: OnSendContentParams) => void;\n // Multi-select confirm button text (i18n support)\n confirmButtonText?: string;\n // Copy button text for code blocks\n copyButtonText?: string;\n // Copied state text for code blocks\n copiedButtonText?: string;\n beforeSend?: (content: OnSendContentParams) => boolean;\n interactionDefaultValueOptions?: InteractionDefaultValueOptions;\n}\n\nconst MarkdownFlow: React.FC<MarkdownFlowProps> = ({\n initialContentList = [],\n locale,\n customRenderBar,\n onSend: onSendProp,\n confirmButtonText,\n copyButtonText,\n copiedButtonText,\n beforeSend: beforeSendProp,\n interactionDefaultValueOptions,\n}) => {\n return (\n <div className=\"markdown-flow\">\n {initialContentList.map((contentInfo, index) => {\n const isFinished = contentInfo.isFinished ?? false;\n const onSend = isFinished ? undefined : onSendProp;\n const beforeSend = beforeSendProp ?? (() => true);\n return (\n <ContentRender\n key={index}\n content={contentInfo.content}\n userInput={contentInfo.userInput}\n defaultInputText={contentInfo.defaultInputText}\n defaultButtonText={contentInfo.defaultButtonText}\n defaultSelectedValues={contentInfo.defaultSelectedValues}\n readonly={contentInfo.readonly}\n customRenderBar={contentInfo.customRenderBar || customRenderBar}\n onSend={onSend}\n beforeSend={beforeSend}\n locale={locale}\n interactionDefaultValueOptions={interactionDefaultValueOptions}\n onClickCustomButtonAfterContent={\n contentInfo.onClickCustomButtonAfterContent\n }\n confirmButtonText={confirmButtonText}\n copyButtonText={copyButtonText}\n copiedButtonText={copiedButtonText}\n dynamicInteractionFormat={contentInfo.dynamicInteractionFormat}\n />\n );\n })}\n </div>\n );\n};\n\nexport default MarkdownFlow;\n"],"names":["MarkdownFlow","initialContentList","locale","customRenderBar","onSendProp","confirmButtonText","copyButtonText","copiedButtonText","beforeSendProp","interactionDefaultValueOptions","jsx","contentInfo","index","onSend","beforeSend","ContentRender"],"mappings":";;;;;;;AAkCA,MAAMA,IAA4C,CAAC;AAAA,EACjD,oBAAAC,IAAqB,CAAA;AAAA,EACrB,QAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,QAAQC;AAAA,EACR,mBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,YAAYC;AAAA,EACZ,gCAAAC;AACF,MAEIC,gBAAAA,MAAC,SAAI,WAAU,iBACZ,YAAmB,IAAI,CAACC,GAAaC,MAAU;AAE9C,QAAMC,IADaF,EAAY,cAAc,KACjB,SAAYP,GAClCU,IAAaN,MAAmB,MAAM;AAC5C,SACEE,gBAAAA,EAAAA;AAAAA,IAACK;AAAA,IAAA;AAAA,MAEC,SAASJ,EAAY;AAAA,MACrB,WAAWA,EAAY;AAAA,MACvB,kBAAkBA,EAAY;AAAA,MAC9B,mBAAmBA,EAAY;AAAA,MAC/B,uBAAuBA,EAAY;AAAA,MACnC,UAAUA,EAAY;AAAA,MACtB,iBAAiBA,EAAY,mBAAmBR;AAAA,MAChD,QAAAU;AAAA,MACA,YAAAC;AAAA,MACA,QAAAZ;AAAA,MACA,gCAAAO;AAAA,MACA,iCACEE,EAAY;AAAA,MAEd,mBAAAN;AAAA,MACA,gBAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,0BAA0BI,EAAY;AAAA,IAAA;AAAA,IAlBjCC;AAAA,EAAA;AAqBX,CAAC,EAAA,CACH;"}
1
+ {"version":3,"file":"MarkdownFlow.es.js","sources":["../../../src/components/MarkdownFlow/MarkdownFlow.tsx"],"sourcesContent":["import React from \"react\";\nimport type { InteractionDefaultValueOptions } from \"../../lib/interaction-defaults\";\nimport {\n getMarkdownFlowDirection,\n getMarkdownFlowLanguage,\n type MarkdownFlowLocale,\n} from \"../../lib/locale\";\nimport ContentRender from \"../ContentRender\";\nimport { CustomRenderBarProps, OnSendContentParams } from \"../types\";\nimport \"./markdownFlow.css\";\n\nexport interface MarkdownFlowProps {\n initialContentList?: {\n content: string;\n isFinished?: boolean;\n userInput?: string;\n defaultInputText?: string;\n defaultButtonText?: string;\n defaultSelectedValues?: string[];\n readonly?: boolean;\n customRenderBar?: CustomRenderBarProps;\n onClickCustomButtonAfterContent?: () => void;\n dynamicInteractionFormat?: string;\n }[];\n /**\n * Locale used for built-in UI text when a more specific text prop is not provided.\n * Arabic sets RTL direction; other supported locales set LTR direction.\n * When omitted, direction is inherited from the host and UI text uses the default locale.\n */\n locale?: MarkdownFlowLocale;\n /** Overrides the locale-derived language. */\n lang?: string;\n /** Overrides the locale-derived direction. */\n dir?: React.HTMLAttributes<HTMLDivElement>[\"dir\"];\n customRenderBar?: CustomRenderBarProps;\n onSend?: (content: OnSendContentParams) => void;\n // Multi-select confirm button text (i18n support)\n confirmButtonText?: string;\n // Copy button text for code blocks\n copyButtonText?: string;\n // Copied state text for code blocks\n copiedButtonText?: string;\n beforeSend?: (content: OnSendContentParams) => boolean;\n interactionDefaultValueOptions?: InteractionDefaultValueOptions;\n}\n\nconst MarkdownFlow: React.FC<MarkdownFlowProps> = ({\n initialContentList = [],\n locale,\n lang,\n dir,\n customRenderBar,\n onSend: onSendProp,\n confirmButtonText,\n copyButtonText,\n copiedButtonText,\n beforeSend: beforeSendProp,\n interactionDefaultValueOptions,\n}) => {\n return (\n <div\n className=\"markdown-flow\"\n dir={dir ?? getMarkdownFlowDirection(locale)}\n lang={lang ?? getMarkdownFlowLanguage(locale)}\n >\n {initialContentList.map((contentInfo, index) => {\n const isFinished = contentInfo.isFinished ?? false;\n const onSend = isFinished ? undefined : onSendProp;\n const beforeSend = beforeSendProp ?? (() => true);\n return (\n <ContentRender\n key={index}\n content={contentInfo.content}\n userInput={contentInfo.userInput}\n defaultInputText={contentInfo.defaultInputText}\n defaultButtonText={contentInfo.defaultButtonText}\n defaultSelectedValues={contentInfo.defaultSelectedValues}\n readonly={contentInfo.readonly}\n customRenderBar={contentInfo.customRenderBar || customRenderBar}\n onSend={onSend}\n beforeSend={beforeSend}\n locale={locale}\n lang={lang}\n dir={dir}\n interactionDefaultValueOptions={interactionDefaultValueOptions}\n onClickCustomButtonAfterContent={\n contentInfo.onClickCustomButtonAfterContent\n }\n confirmButtonText={confirmButtonText}\n copyButtonText={copyButtonText}\n copiedButtonText={copiedButtonText}\n dynamicInteractionFormat={contentInfo.dynamicInteractionFormat}\n />\n );\n })}\n </div>\n );\n};\n\nexport default MarkdownFlow;\n"],"names":["MarkdownFlow","initialContentList","locale","lang","dir","customRenderBar","onSendProp","confirmButtonText","copyButtonText","copiedButtonText","beforeSendProp","interactionDefaultValueOptions","jsx","getMarkdownFlowDirection","getMarkdownFlowLanguage","contentInfo","index","onSend","beforeSend","ContentRender"],"mappings":";;;;;;;AA8CA,MAAMA,IAA4C,CAAC;AAAA,EACjD,oBAAAC,IAAqB,CAAA;AAAA,EACrB,QAAAC;AAAA,EACA,MAAAC;AAAA,EACA,KAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,QAAQC;AAAA,EACR,mBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,YAAYC;AAAA,EACZ,gCAAAC;AACF,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAU;AAAA,IACV,KAAKR,KAAOS,EAAyBX,CAAM;AAAA,IAC3C,MAAMC,KAAQW,EAAwBZ,CAAM;AAAA,IAE3C,UAAAD,EAAmB,IAAI,CAACc,GAAaC,MAAU;AAE9C,YAAMC,IADaF,EAAY,cAAc,KACjB,SAAYT,GAClCY,IAAaR,MAAmB,MAAM;AAC5C,aACE,gBAAAE;AAAA,QAACO;AAAA,QAAA;AAAA,UAEC,SAASJ,EAAY;AAAA,UACrB,WAAWA,EAAY;AAAA,UACvB,kBAAkBA,EAAY;AAAA,UAC9B,mBAAmBA,EAAY;AAAA,UAC/B,uBAAuBA,EAAY;AAAA,UACnC,UAAUA,EAAY;AAAA,UACtB,iBAAiBA,EAAY,mBAAmBV;AAAA,UAChD,QAAAY;AAAA,UACA,YAAAC;AAAA,UACA,QAAAhB;AAAA,UACA,MAAAC;AAAA,UACA,KAAAC;AAAA,UACA,gCAAAO;AAAA,UACA,iCACEI,EAAY;AAAA,UAEd,mBAAAR;AAAA,UACA,gBAAAC;AAAA,UACA,kBAAAC;AAAA,UACA,0BAA0BM,EAAY;AAAA,QAAA;AAAA,QApBjCC;AAAA,MAAA;AAAA,IAuBX,CAAC;AAAA,EAAA;AAAA;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("../../_virtual/jsx-runtime.cjs"),c=require("react-dom"),i=require("../../node_modules/lucide-react/dist/esm/icons/chevron-down.cjs"),u=({visible:n,ariaLabel:l,portalTarget:t,className:s="",...e})=>{if(!n)return null;const o=r.jsxRuntimeExports.jsx("button",{...e,type:e.type||"button",className:`scroll-to-bottom-btn ${s}`.trim(),"aria-label":l,children:r.jsxRuntimeExports.jsx(i.default,{"aria-hidden":"true",focusable:"false"})});return t?c.createPortal(o,t):o};exports.ScrollToBottomButton=u;exports.default=u;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),y=require("react"),j=require("react-dom"),D=require("../../lib/utils.cjs"),M=require("../../node_modules/lucide-react/dist/esm/icons/chevrons-down.cjs"),s=t=>typeof t=="number"?`${t}px`:t,e=({visible:t,ariaLabel:c,portalTarget:r,placement:a="bottom-center",position:u="absolute",bottomOffset:d=20,horizontalOffset:i=20,zIndex:m=1,className:b="",style:f,tabIndex:h,disabled:B,type:S="button",...p})=>{const q=y.useCallback(o=>{!t&&o&&o.ownerDocument.activeElement===o&&o.blur()},[t]),x={"--scroll-to-bottom-bottom":s(d),"--scroll-to-bottom-horizontal":s(i),"--scroll-to-bottom-position":u,zIndex:m,...f},n=l.jsx("button",{...p,ref:q,disabled:!t||B,type:S,className:D.cn("scroll-to-bottom-btn",b),style:x,"aria-label":c,"aria-hidden":t?void 0:!0,"data-placement":a,"data-visible":t?"true":"false",tabIndex:t?h:-1,children:l.jsx(M.default,{size:20,"aria-hidden":"true",focusable:"false"})});return r?j.createPortal(n,r):n};e.displayName="ScrollToBottomButton";exports.ScrollToBottomButton=e;exports.default=e;
2
2
  //# sourceMappingURL=ScrollToBottomButton.cjs.map