markdown-flow-ui 0.2.13 → 0.2.15

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 (475) hide show
  1. package/README.md +7 -0
  2. package/dist/_virtual/index.es3.js +5 -4
  3. package/dist/_virtual/index.es3.js.map +1 -1
  4. package/dist/_virtual/index.es4.js +4 -5
  5. package/dist/_virtual/index.es4.js.map +1 -1
  6. package/dist/_virtual/index3.cjs +1 -1
  7. package/dist/_virtual/index4.cjs +1 -1
  8. package/dist/assets/markdown-flow-ui.css +10 -1
  9. package/dist/components/ContentRender/CodeBlock.cjs +1 -1
  10. package/dist/components/ContentRender/CodeBlock.cjs.map +1 -1
  11. package/dist/components/ContentRender/CodeBlock.d.ts +5 -0
  12. package/dist/components/ContentRender/CodeBlock.es.js +41 -38
  13. package/dist/components/ContentRender/CodeBlock.es.js.map +1 -1
  14. package/dist/components/ContentRender/ContentRender.cjs +2 -2
  15. package/dist/components/ContentRender/ContentRender.cjs.map +1 -1
  16. package/dist/components/ContentRender/ContentRender.d.ts +9 -4
  17. package/dist/components/ContentRender/ContentRender.es.js +389 -298
  18. package/dist/components/ContentRender/ContentRender.es.js.map +1 -1
  19. package/dist/components/ContentRender/IframeSandbox.cjs +7 -7
  20. package/dist/components/ContentRender/IframeSandbox.cjs.map +1 -1
  21. package/dist/components/ContentRender/IframeSandbox.d.ts +5 -1
  22. package/dist/components/ContentRender/IframeSandbox.es.js +311 -266
  23. package/dist/components/ContentRender/IframeSandbox.es.js.map +1 -1
  24. package/dist/components/ContentRender/MarkdownFlowInput.cjs +1 -1
  25. package/dist/components/ContentRender/MarkdownFlowInput.cjs.map +1 -1
  26. package/dist/components/ContentRender/MarkdownFlowInput.d.ts +5 -1
  27. package/dist/components/ContentRender/MarkdownFlowInput.es.js +37 -32
  28. package/dist/components/ContentRender/MarkdownFlowInput.es.js.map +1 -1
  29. package/dist/components/ContentRender/SandboxApp.cjs +2 -2
  30. package/dist/components/ContentRender/SandboxApp.cjs.map +1 -1
  31. package/dist/components/ContentRender/SandboxApp.d.ts +5 -1
  32. package/dist/components/ContentRender/SandboxApp.es.js +108 -103
  33. package/dist/components/ContentRender/SandboxApp.es.js.map +1 -1
  34. package/dist/components/ContentRender/blackboard-vendor.d.ts +1 -1
  35. package/dist/components/ContentRender/contentRenderI18n.cjs +1 -1
  36. package/dist/components/ContentRender/contentRenderI18n.cjs.map +1 -1
  37. package/dist/components/ContentRender/contentRenderI18n.d.ts +6 -1
  38. package/dist/components/ContentRender/contentRenderI18n.es.js +5 -56
  39. package/dist/components/ContentRender/contentRenderI18n.es.js.map +1 -1
  40. package/dist/components/ContentRender/contentRenderI18n.test.d.ts +1 -0
  41. package/dist/components/ContentRender/index.cjs +1 -1
  42. package/dist/components/ContentRender/index.d.ts +11 -11
  43. package/dist/components/ContentRender/index.es.js +1 -2
  44. package/dist/components/ContentRender/index.es.js.map +1 -1
  45. package/dist/components/ContentRender/locales/contentRender.json.cjs +2 -0
  46. package/dist/components/ContentRender/locales/contentRender.json.cjs.map +1 -0
  47. package/dist/components/ContentRender/locales/contentRender.json.d.ts +90 -0
  48. package/dist/components/ContentRender/locales/contentRender.json.es.js +11 -0
  49. package/dist/components/ContentRender/locales/contentRender.json.es.js.map +1 -0
  50. package/dist/components/ContentRender/plugins/CustomVariable.cjs +1 -1
  51. package/dist/components/ContentRender/plugins/CustomVariable.cjs.map +1 -1
  52. package/dist/components/ContentRender/plugins/CustomVariable.d.ts +7 -3
  53. package/dist/components/ContentRender/plugins/CustomVariable.es.js +165 -151
  54. package/dist/components/ContentRender/plugins/CustomVariable.es.js.map +1 -1
  55. package/dist/components/ContentRender/plugins/MermaidChart.cjs +1 -1
  56. package/dist/components/ContentRender/plugins/MermaidChart.cjs.map +1 -1
  57. package/dist/components/ContentRender/plugins/MermaidChart.d.ts +1 -0
  58. package/dist/components/ContentRender/plugins/MermaidChart.es.js +68 -44
  59. package/dist/components/ContentRender/plugins/MermaidChart.es.js.map +1 -1
  60. package/dist/components/MarkdownFlow/MarkdownFlow.cjs +1 -1
  61. package/dist/components/MarkdownFlow/MarkdownFlow.cjs.map +1 -1
  62. package/dist/components/MarkdownFlow/MarkdownFlow.d.ts +12 -4
  63. package/dist/components/MarkdownFlow/MarkdownFlow.es.js +51 -39
  64. package/dist/components/MarkdownFlow/MarkdownFlow.es.js.map +1 -1
  65. package/dist/components/MarkdownFlow/ScrollToBottomButton.cjs +1 -1
  66. package/dist/components/MarkdownFlow/ScrollToBottomButton.cjs.map +1 -1
  67. package/dist/components/MarkdownFlow/ScrollToBottomButton.d.ts +31 -1
  68. package/dist/components/MarkdownFlow/ScrollToBottomButton.es.js +46 -17
  69. package/dist/components/MarkdownFlow/ScrollToBottomButton.es.js.map +1 -1
  70. package/dist/components/MarkdownFlow/ScrollToBottomControl.cjs +2 -0
  71. package/dist/components/MarkdownFlow/ScrollToBottomControl.cjs.map +1 -0
  72. package/dist/components/MarkdownFlow/ScrollToBottomControl.d.ts +18 -0
  73. package/dist/components/MarkdownFlow/ScrollToBottomControl.es.js +47 -0
  74. package/dist/components/MarkdownFlow/ScrollToBottomControl.es.js.map +1 -0
  75. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.cjs +1 -1
  76. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.cjs.map +1 -1
  77. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.d.ts +1 -1
  78. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.es.js +33 -52
  79. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.es.js.map +1 -1
  80. package/dist/components/MarkdownFlow/index.cjs +1 -1
  81. package/dist/components/MarkdownFlow/index.d.ts +9 -6
  82. package/dist/components/MarkdownFlow/index.es.js +6 -6
  83. package/dist/components/MarkdownFlow/index.es.js.map +1 -1
  84. package/dist/components/MarkdownFlow/useScrollToBottom.cjs +1 -1
  85. package/dist/components/MarkdownFlow/useScrollToBottom.cjs.map +1 -1
  86. package/dist/components/MarkdownFlow/useScrollToBottom.d.ts +40 -8
  87. package/dist/components/MarkdownFlow/useScrollToBottom.es.js +352 -83
  88. package/dist/components/MarkdownFlow/useScrollToBottom.es.js.map +1 -1
  89. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs +1 -1
  90. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs.map +1 -1
  91. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.d.ts +5 -3
  92. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js +371 -324
  93. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js.map +1 -1
  94. package/dist/components/MarkdownFlowEditor/components/CustomDialog.cjs +1 -1
  95. package/dist/components/MarkdownFlowEditor/components/CustomDialog.cjs.map +1 -1
  96. package/dist/components/MarkdownFlowEditor/components/CustomDialog.d.ts +10 -0
  97. package/dist/components/MarkdownFlowEditor/components/CustomDialog.es.js +22 -19
  98. package/dist/components/MarkdownFlowEditor/components/CustomDialog.es.js.map +1 -1
  99. package/dist/components/MarkdownFlowEditor/components/CustomPopover.cjs +1 -1
  100. package/dist/components/MarkdownFlowEditor/components/CustomPopover.cjs.map +1 -1
  101. package/dist/components/MarkdownFlowEditor/components/CustomPopover.d.ts +8 -0
  102. package/dist/components/MarkdownFlowEditor/components/CustomPopover.es.js +19 -15
  103. package/dist/components/MarkdownFlowEditor/components/CustomPopover.es.js.map +1 -1
  104. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.cjs +1 -1
  105. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.cjs.map +1 -1
  106. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.d.ts +4 -1
  107. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.es.js +99 -93
  108. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.es.js.map +1 -1
  109. package/dist/components/MarkdownFlowEditor/components/ImageInject.cjs +1 -1
  110. package/dist/components/MarkdownFlowEditor/components/ImageInject.cjs.map +1 -1
  111. package/dist/components/MarkdownFlowEditor/components/ImageInject.d.ts +1 -1
  112. package/dist/components/MarkdownFlowEditor/components/ImageInject.es.js +183 -182
  113. package/dist/components/MarkdownFlowEditor/components/ImageInject.es.js.map +1 -1
  114. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.cjs +1 -1
  115. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.cjs.map +1 -1
  116. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.d.ts +1 -1
  117. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.es.js +107 -103
  118. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.es.js.map +1 -1
  119. package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs +1 -1
  120. package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs.map +1 -1
  121. package/dist/components/MarkdownFlowEditor/components/VariableSelect.d.ts +1 -1
  122. package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js +106 -106
  123. package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js.map +1 -1
  124. package/dist/components/MarkdownFlowEditor/components/VideoInject.cjs +1 -1
  125. package/dist/components/MarkdownFlowEditor/components/VideoInject.cjs.map +1 -1
  126. package/dist/components/MarkdownFlowEditor/components/VideoInject.es.js +64 -63
  127. package/dist/components/MarkdownFlowEditor/components/VideoInject.es.js.map +1 -1
  128. package/dist/components/MarkdownFlowEditor/components/icons/ButtonIcon.cjs +1 -1
  129. package/dist/components/MarkdownFlowEditor/components/icons/ButtonIcon.cjs.map +1 -1
  130. package/dist/components/MarkdownFlowEditor/components/icons/ButtonIcon.es.js +13 -13
  131. package/dist/components/MarkdownFlowEditor/components/icons/ButtonIcon.es.js.map +1 -1
  132. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.cjs +1 -1
  133. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.cjs.map +1 -1
  134. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.es.js +12 -12
  135. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.es.js.map +1 -1
  136. package/dist/components/MarkdownFlowEditor/editor-context.d.ts +1 -1
  137. package/dist/components/MarkdownFlowEditor/editorI18n.cjs +1 -1
  138. package/dist/components/MarkdownFlowEditor/editorI18n.cjs.map +1 -1
  139. package/dist/components/MarkdownFlowEditor/editorI18n.d.ts +290 -0
  140. package/dist/components/MarkdownFlowEditor/editorI18n.es.js +12 -8
  141. package/dist/components/MarkdownFlowEditor/editorI18n.es.js.map +1 -1
  142. package/dist/components/MarkdownFlowEditor/editorI18n.test.d.ts +1 -0
  143. package/dist/components/MarkdownFlowEditor/index.d.ts +6 -6
  144. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.cjs +2 -0
  145. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.cjs.map +1 -0
  146. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.d.ts +72 -0
  147. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.es.js +140 -0
  148. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.es.js.map +1 -0
  149. package/dist/components/MarkdownFlowEditor/locales/en-US.json.cjs +1 -1
  150. package/dist/components/MarkdownFlowEditor/locales/en-US.json.d.ts +2 -0
  151. package/dist/components/MarkdownFlowEditor/locales/en-US.json.es.js +118 -114
  152. package/dist/components/MarkdownFlowEditor/locales/en-US.json.es.js.map +1 -1
  153. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.cjs +1 -1
  154. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.d.ts +2 -0
  155. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.es.js +118 -114
  156. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.es.js.map +1 -1
  157. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.cjs +2 -0
  158. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.cjs.map +1 -0
  159. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.d.ts +72 -0
  160. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.es.js +140 -0
  161. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.es.js.map +1 -0
  162. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.cjs +1 -1
  163. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.d.ts +2 -0
  164. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.es.js +70 -66
  165. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.es.js.map +1 -1
  166. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.cjs +1 -1
  167. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.cjs.map +1 -1
  168. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js +40 -35
  169. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js.map +1 -1
  170. package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.d.ts +1 -1
  171. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.cjs +1 -1
  172. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.cjs.map +1 -1
  173. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js +27 -23
  174. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js.map +1 -1
  175. package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.cjs +2 -0
  176. package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.cjs.map +1 -0
  177. package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.d.ts +7 -0
  178. package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.es.js +12 -0
  179. package/dist/components/MarkdownFlowEditor/plugins/mediaPlaceholderLabels.es.js.map +1 -0
  180. package/dist/components/MarkdownFlowEditor/utils.d.ts +1 -1
  181. package/dist/components/Slide/MarkdownSlideScaling.cjs +1 -1
  182. package/dist/components/Slide/MarkdownSlideScaling.cjs.map +1 -1
  183. package/dist/components/Slide/MarkdownSlideScaling.d.ts +1 -1
  184. package/dist/components/Slide/MarkdownSlideScaling.es.js +20 -20
  185. package/dist/components/Slide/MarkdownSlideScaling.es.js.map +1 -1
  186. package/dist/components/Slide/MobilePlayerSettingsSheet.cjs +1 -1
  187. package/dist/components/Slide/MobilePlayerSettingsSheet.cjs.map +1 -1
  188. package/dist/components/Slide/MobilePlayerSettingsSheet.d.ts +7 -2
  189. package/dist/components/Slide/MobilePlayerSettingsSheet.es.js +61 -57
  190. package/dist/components/Slide/MobilePlayerSettingsSheet.es.js.map +1 -1
  191. package/dist/components/Slide/Player.cjs +1 -1
  192. package/dist/components/Slide/Player.cjs.map +1 -1
  193. package/dist/components/Slide/Player.d.ts +6 -6
  194. package/dist/components/Slide/Player.es.js +547 -541
  195. package/dist/components/Slide/Player.es.js.map +1 -1
  196. package/dist/components/Slide/Slide.cjs +1 -1
  197. package/dist/components/Slide/Slide.cjs.map +1 -1
  198. package/dist/components/Slide/Slide.d.ts +14 -12
  199. package/dist/components/Slide/Slide.es.js +745 -726
  200. package/dist/components/Slide/Slide.es.js.map +1 -1
  201. package/dist/components/Slide/SubtitleOverlay.cjs +1 -1
  202. package/dist/components/Slide/SubtitleOverlay.cjs.map +1 -1
  203. package/dist/components/Slide/SubtitleOverlay.d.ts +2 -2
  204. package/dist/components/Slide/SubtitleOverlay.es.js +17 -17
  205. package/dist/components/Slide/SubtitleOverlay.es.js.map +1 -1
  206. package/dist/components/Slide/diff-utils.d.ts +1 -1
  207. package/dist/components/Slide/index.d.ts +12 -12
  208. package/dist/components/Slide/locales/slide.json.cjs +2 -0
  209. package/dist/components/Slide/locales/slide.json.cjs.map +1 -0
  210. package/dist/components/Slide/locales/slide.json.d.ts +205 -0
  211. package/dist/components/Slide/locales/slide.json.es.js +11 -0
  212. package/dist/components/Slide/locales/slide.json.es.js.map +1 -0
  213. package/dist/components/Slide/slideI18n.cjs +1 -1
  214. package/dist/components/Slide/slideI18n.cjs.map +1 -1
  215. package/dist/components/Slide/slideI18n.d.ts +6 -3
  216. package/dist/components/Slide/slideI18n.es.js +10 -155
  217. package/dist/components/Slide/slideI18n.es.js.map +1 -1
  218. package/dist/components/Slide/useSlide.d.ts +1 -1
  219. package/dist/components/Slide/utils/appendedMarkerAdvance.d.ts +1 -1
  220. package/dist/components/Slide/utils/audioSegments.d.ts +1 -1
  221. package/dist/components/Slide/utils/interactionResolution.d.ts +2 -2
  222. package/dist/components/Slide/utils/listenModeElementList.d.ts +2 -2
  223. package/dist/components/Slide/utils/markdownScaling.d.ts +1 -1
  224. package/dist/components/Slide/utils/playerCustomActions.d.ts +2 -2
  225. package/dist/components/Slide/utils/playerKeyboardShortcuts.cjs +1 -1
  226. package/dist/components/Slide/utils/playerKeyboardShortcuts.cjs.map +1 -1
  227. package/dist/components/Slide/utils/playerKeyboardShortcuts.d.ts +1 -1
  228. package/dist/components/Slide/utils/playerKeyboardShortcuts.es.js +20 -20
  229. package/dist/components/Slide/utils/playerKeyboardShortcuts.es.js.map +1 -1
  230. package/dist/components/Slide/utils/runStreamFixture.d.ts +1 -1
  231. package/dist/components/Slide/utils/segmentSeek.d.ts +1 -1
  232. package/dist/components/Slide/utils/silentStepAutoAdvance.d.ts +1 -1
  233. package/dist/components/Slide/utils/streamingNavigation.d.ts +1 -1
  234. package/dist/components/Slide/utils/subtitleCue.d.ts +1 -1
  235. package/dist/components/Slide/utils/subtitleJumpNavigation.d.ts +1 -1
  236. package/dist/components/index.d.ts +22 -18
  237. package/dist/components/ui/button.cjs +1 -1
  238. package/dist/components/ui/button.cjs.map +1 -1
  239. package/dist/components/ui/button.es.js +12 -13
  240. package/dist/components/ui/button.es.js.map +1 -1
  241. package/dist/components/ui/checkbox.cjs +1 -1
  242. package/dist/components/ui/checkbox.cjs.map +1 -1
  243. package/dist/components/ui/checkbox.es.js +35 -35
  244. package/dist/components/ui/checkbox.es.js.map +1 -1
  245. package/dist/components/ui/dialog.cjs +1 -1
  246. package/dist/components/ui/dialog.cjs.map +1 -1
  247. package/dist/components/ui/dialog.d.ts +5 -1
  248. package/dist/components/ui/dialog.es.js +37 -37
  249. package/dist/components/ui/dialog.es.js.map +1 -1
  250. package/dist/components/ui/input.cjs +1 -1
  251. package/dist/components/ui/input.cjs.map +1 -1
  252. package/dist/components/ui/input.es.js +4 -4
  253. package/dist/components/ui/input.es.js.map +1 -1
  254. package/dist/components/ui/inputGroup/button.cjs +1 -1
  255. package/dist/components/ui/inputGroup/button.cjs.map +1 -1
  256. package/dist/components/ui/inputGroup/button.es.js +9 -10
  257. package/dist/components/ui/inputGroup/button.es.js.map +1 -1
  258. package/dist/components/ui/inputGroup/input-group.cjs +1 -1
  259. package/dist/components/ui/inputGroup/input-group.cjs.map +1 -1
  260. package/dist/components/ui/inputGroup/input-group.d.ts +1 -1
  261. package/dist/components/ui/inputGroup/input-group.es.js +10 -10
  262. package/dist/components/ui/inputGroup/input-group.es.js.map +1 -1
  263. package/dist/components/ui/inputGroup/textarea.cjs +1 -1
  264. package/dist/components/ui/inputGroup/textarea.cjs.map +1 -1
  265. package/dist/components/ui/inputGroup/textarea.es.js +3 -3
  266. package/dist/components/ui/inputGroup/textarea.es.js.map +1 -1
  267. package/dist/components/ui/loading-overlay-card.cjs +2 -2
  268. package/dist/components/ui/loading-overlay-card.cjs.map +1 -1
  269. package/dist/components/ui/loading-overlay-card.es.js +11 -11
  270. package/dist/components/ui/loading-overlay-card.es.js.map +1 -1
  271. package/dist/components/ui/popover.cjs +1 -1
  272. package/dist/components/ui/popover.cjs.map +1 -1
  273. package/dist/components/ui/popover.es.js +6 -6
  274. package/dist/components/ui/popover.es.js.map +1 -1
  275. package/dist/components/ui/tooltip.cjs +1 -1
  276. package/dist/components/ui/tooltip.cjs.map +1 -1
  277. package/dist/components/ui/tooltip.es.js +16 -16
  278. package/dist/components/ui/tooltip.es.js.map +1 -1
  279. package/dist/editor.d.ts +2 -2
  280. package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  281. package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  282. package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  283. package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  284. package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  285. package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  286. package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  287. package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  288. package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  289. package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  290. package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  291. package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  292. package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  293. package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  294. package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  295. package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  296. package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  297. package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  298. package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  299. package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  300. package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  301. package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  302. package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  303. package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  304. package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  305. package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  306. package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  307. package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  308. package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  309. package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  310. package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  311. package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  312. package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  313. package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  314. package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  315. package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  316. package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  317. package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  318. package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  319. package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  320. package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  321. package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  322. package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  323. package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  324. package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  325. package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  326. package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  327. package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  328. package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  329. package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  330. package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  331. package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  332. package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  333. package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  334. package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  335. package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  336. package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  337. package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  338. package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  339. package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  340. package/dist/index.cjs +1 -1
  341. package/dist/index.d.ts +2 -2
  342. package/dist/index.es.js +22 -19
  343. package/dist/index.es.js.map +1 -1
  344. package/dist/lib/locale.cjs +1 -1
  345. package/dist/lib/locale.cjs.map +1 -1
  346. package/dist/lib/locale.d.ts +5 -1
  347. package/dist/lib/locale.es.js +26 -13
  348. package/dist/lib/locale.es.js.map +1 -1
  349. package/dist/lib/locale.test.d.ts +1 -0
  350. package/dist/lib/useDetachedLanguage.cjs +2 -0
  351. package/dist/lib/useDetachedLanguage.cjs.map +1 -0
  352. package/dist/lib/useDetachedLanguage.d.ts +3 -0
  353. package/dist/lib/useDetachedLanguage.es.js +25 -0
  354. package/dist/lib/useDetachedLanguage.es.js.map +1 -0
  355. package/dist/lib/useResolvedDirection.cjs +2 -0
  356. package/dist/lib/useResolvedDirection.cjs.map +1 -0
  357. package/dist/lib/useResolvedDirection.d.ts +6 -0
  358. package/dist/lib/useResolvedDirection.es.js +37 -0
  359. package/dist/lib/useResolvedDirection.es.js.map +1 -0
  360. package/dist/markdown-flow-ui-lib.css +1 -1
  361. package/dist/node_modules/@radix-ui/react-arrow/dist/index.cjs +1 -1
  362. package/dist/node_modules/@radix-ui/react-arrow/dist/index.cjs.map +1 -1
  363. package/dist/node_modules/@radix-ui/react-arrow/dist/index.es.js +6 -6
  364. package/dist/node_modules/@radix-ui/react-arrow/dist/index.es.js.map +1 -1
  365. package/dist/node_modules/@radix-ui/react-context/dist/index.cjs +1 -1
  366. package/dist/node_modules/@radix-ui/react-context/dist/index.cjs.map +1 -1
  367. package/dist/node_modules/@radix-ui/react-context/dist/index.es.js +21 -21
  368. package/dist/node_modules/@radix-ui/react-context/dist/index.es.js.map +1 -1
  369. package/dist/node_modules/@radix-ui/react-dialog/dist/index.cjs +2 -2
  370. package/dist/node_modules/@radix-ui/react-dialog/dist/index.cjs.map +1 -1
  371. package/dist/node_modules/@radix-ui/react-dialog/dist/index.es.js +100 -100
  372. package/dist/node_modules/@radix-ui/react-dialog/dist/index.es.js.map +1 -1
  373. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs +1 -1
  374. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs.map +1 -1
  375. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js +38 -38
  376. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js.map +1 -1
  377. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs +1 -1
  378. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs.map +1 -1
  379. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.es.js +9 -9
  380. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.es.js.map +1 -1
  381. package/dist/node_modules/@radix-ui/react-popover/dist/index.cjs +1 -1
  382. package/dist/node_modules/@radix-ui/react-popover/dist/index.cjs.map +1 -1
  383. package/dist/node_modules/@radix-ui/react-popover/dist/index.es.js +95 -95
  384. package/dist/node_modules/@radix-ui/react-popover/dist/index.es.js.map +1 -1
  385. package/dist/node_modules/@radix-ui/react-popper/dist/index.cjs +1 -1
  386. package/dist/node_modules/@radix-ui/react-popper/dist/index.cjs.map +1 -1
  387. package/dist/node_modules/@radix-ui/react-popper/dist/index.es.js +48 -48
  388. package/dist/node_modules/@radix-ui/react-popper/dist/index.es.js.map +1 -1
  389. package/dist/node_modules/@radix-ui/react-portal/dist/index.cjs +1 -1
  390. package/dist/node_modules/@radix-ui/react-portal/dist/index.cjs.map +1 -1
  391. package/dist/node_modules/@radix-ui/react-portal/dist/index.es.js +6 -6
  392. package/dist/node_modules/@radix-ui/react-portal/dist/index.es.js.map +1 -1
  393. package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs +1 -1
  394. package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -1
  395. package/dist/node_modules/@radix-ui/react-primitive/dist/index.es.js +9 -9
  396. package/dist/node_modules/@radix-ui/react-primitive/dist/index.es.js.map +1 -1
  397. package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs +1 -1
  398. package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -1
  399. package/dist/node_modules/@radix-ui/react-slot/dist/index.es.js +17 -17
  400. package/dist/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -1
  401. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.cjs +1 -1
  402. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.cjs.map +1 -1
  403. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.es.js +100 -100
  404. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.es.js.map +1 -1
  405. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.cjs +1 -1
  406. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.cjs.map +1 -1
  407. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.es.js +6 -6
  408. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.es.js.map +1 -1
  409. package/dist/node_modules/@uiw/react-codemirror/esm/index.cjs +1 -1
  410. package/dist/node_modules/@uiw/react-codemirror/esm/index.cjs.map +1 -1
  411. package/dist/node_modules/@uiw/react-codemirror/esm/index.es.js +27 -27
  412. package/dist/node_modules/@uiw/react-codemirror/esm/index.es.js.map +1 -1
  413. package/dist/node_modules/lucide-react/dist/esm/icons/{chevron-down.cjs → chevrons-down.cjs} +2 -2
  414. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-down.cjs.map +1 -0
  415. package/dist/node_modules/lucide-react/dist/esm/icons/{chevron-down.es.js → chevrons-down.es.js} +6 -3
  416. package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-down.es.js.map +1 -0
  417. package/dist/node_modules/rc-input/es/BaseInput.cjs +1 -1
  418. package/dist/node_modules/rc-input/es/BaseInput.es.js +1 -1
  419. package/dist/node_modules/rc-textarea/es/ResizableTextArea.cjs +1 -1
  420. package/dist/node_modules/rc-textarea/es/ResizableTextArea.es.js +1 -1
  421. package/dist/node_modules/rc-textarea/es/TextArea.cjs +1 -1
  422. package/dist/node_modules/rc-textarea/es/TextArea.es.js +1 -1
  423. package/dist/node_modules/rc-textarea/es/index.cjs +1 -1
  424. package/dist/node_modules/rc-textarea/es/index.es.js +1 -1
  425. package/dist/node_modules/react-markdown/lib/index.cjs +1 -1
  426. package/dist/node_modules/react-markdown/lib/index.cjs.map +1 -1
  427. package/dist/node_modules/react-markdown/lib/index.es.js +39 -39
  428. package/dist/node_modules/react-markdown/lib/index.es.js.map +1 -1
  429. package/dist/node_modules/remark-flow/dist/interaction-plugin-core.cjs +1 -1
  430. package/dist/node_modules/remark-flow/dist/interaction-plugin-core.es.js +1 -1
  431. package/dist/renderer.cjs +1 -1
  432. package/dist/renderer.d.ts +18 -17
  433. package/dist/renderer.es.js +20 -17
  434. package/dist/renderer.es.js.map +1 -1
  435. package/dist/scroll.cjs +2 -0
  436. package/dist/scroll.cjs.map +1 -0
  437. package/dist/scroll.d.ts +6 -0
  438. package/dist/scroll.es.js +9 -0
  439. package/dist/scroll.es.js.map +1 -0
  440. package/dist/slide.d.ts +3 -3
  441. package/package.json +13 -2
  442. package/dist/_virtual/jsx-runtime.cjs +0 -2
  443. package/dist/_virtual/jsx-runtime.cjs.map +0 -1
  444. package/dist/_virtual/jsx-runtime.es.js +0 -6
  445. package/dist/_virtual/jsx-runtime.es.js.map +0 -1
  446. package/dist/_virtual/jsx-runtime.es2.js +0 -5
  447. package/dist/_virtual/jsx-runtime.es2.js.map +0 -1
  448. package/dist/_virtual/jsx-runtime2.cjs +0 -2
  449. package/dist/_virtual/jsx-runtime2.cjs.map +0 -1
  450. package/dist/_virtual/react-jsx-runtime.development.cjs +0 -2
  451. package/dist/_virtual/react-jsx-runtime.development.cjs.map +0 -1
  452. package/dist/_virtual/react-jsx-runtime.development.es.js +0 -5
  453. package/dist/_virtual/react-jsx-runtime.development.es.js.map +0 -1
  454. package/dist/_virtual/react-jsx-runtime.production.cjs +0 -2
  455. package/dist/_virtual/react-jsx-runtime.production.cjs.map +0 -1
  456. package/dist/_virtual/react-jsx-runtime.production.es.js +0 -5
  457. package/dist/_virtual/react-jsx-runtime.production.es.js.map +0 -1
  458. package/dist/lib/localeTextMap.cjs +0 -2
  459. package/dist/lib/localeTextMap.cjs.map +0 -1
  460. package/dist/lib/localeTextMap.es.js +0 -5
  461. package/dist/lib/localeTextMap.es.js.map +0 -1
  462. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs.map +0 -1
  463. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.es.js.map +0 -1
  464. package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs +0 -24
  465. package/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs.map +0 -1
  466. package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js +0 -409
  467. package/dist/node_modules/react/cjs/react-jsx-runtime.development.es.js.map +0 -1
  468. package/dist/node_modules/react/cjs/react-jsx-runtime.production.cjs +0 -10
  469. package/dist/node_modules/react/cjs/react-jsx-runtime.production.cjs.map +0 -1
  470. package/dist/node_modules/react/cjs/react-jsx-runtime.production.es.js +0 -36
  471. package/dist/node_modules/react/cjs/react-jsx-runtime.production.es.js.map +0 -1
  472. package/dist/node_modules/react/jsx-runtime.cjs +0 -2
  473. package/dist/node_modules/react/jsx-runtime.cjs.map +0 -1
  474. package/dist/node_modules/react/jsx-runtime.es.js +0 -11
  475. package/dist/node_modules/react/jsx-runtime.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ImageInject.es.js","sources":["../../../../src/components/MarkdownFlowEditor/components/ImageInject.tsx"],"sourcesContent":["/** inject image to mc-editor */\nimport React, { useContext, useEffect, useMemo, useState } from \"react\";\nimport { Button } from \"../../ui/button\";\nimport { Input } from \"../../ui/input\";\nimport { useTranslation } from \"react-i18next\";\nimport { Loader2, Upload } from \"lucide-react\";\n\nimport EditorContext from \"../editor-context\";\nimport { isValidImageUrl, sanitizeImageUrl } from \"../utils/image\";\nimport { UploadProps, UploadRequestOption } from \"../uploadTypes\";\n\nexport type ImageResource = {\n resourceUrl: string;\n resourceTitle?: string;\n scalePercent?: number;\n};\n\nexport interface ImageInjectProps {\n value?: Partial<ImageResource>;\n onSelect: (resource: ImageResource) => void;\n uploadProps?: UploadProps;\n}\n\nconst ImageInject = React.forwardRef<HTMLDivElement, ImageInjectProps>(\n ({ value, onSelect, uploadProps }, ref) => {\n const { t } = useTranslation();\n const { setDialogOpen } = useContext(EditorContext);\n\n const [resource, setResource] = useState<ImageResource>({\n resourceUrl: value?.resourceUrl ?? \"\",\n resourceTitle: value?.resourceTitle ?? \"\",\n scalePercent: value?.scalePercent ?? 100,\n });\n const [previewLoaded, setPreviewLoaded] = useState<boolean>(\n Boolean(value?.resourceUrl)\n );\n const [tempUrl, setTempUrl] = useState<string>(value?.resourceUrl ?? \"\");\n const [scale, setScale] = useState<number | undefined>(\n value?.scalePercent ?? 100\n );\n const [scaleInputValue, setScaleInputValue] = useState<string>(\n value?.scalePercent !== undefined ? String(value.scalePercent) : \"100\"\n );\n const [errorTip, setErrorTip] = useState<string>(\"\");\n const [uploadStatus, setUploadStatus] = useState<\n \"idle\" | \"loading\" | \"success\" | \"error\"\n >(\"idle\");\n const isUploading = uploadStatus === \"loading\";\n\n useEffect(() => {\n if (value?.resourceUrl) {\n setResource((prev) => ({\n ...prev,\n resourceUrl: value.resourceUrl ?? \"\",\n resourceTitle: value.resourceTitle ?? prev.resourceTitle ?? \"\",\n scalePercent: value.scalePercent ?? prev.scalePercent ?? 100,\n }));\n setTempUrl(value.resourceUrl ?? \"\");\n const resolvedScale =\n value.scalePercent !== undefined ? value.scalePercent : 100;\n setScale(resolvedScale);\n setScaleInputValue(\n value.scalePercent !== undefined\n ? String(value.scalePercent)\n : String(resolvedScale)\n );\n setPreviewLoaded(true);\n }\n setUploadStatus(\"idle\");\n }, [value]);\n\n const handleCancel = () => {\n if (isUploading) return;\n setDialogOpen(false);\n };\n\n const applyImage = (url: string, name?: string) => {\n const sanitizedUrl = sanitizeImageUrl(url);\n setResource({\n resourceUrl: sanitizedUrl,\n resourceTitle: name || resource.resourceTitle || t(\"imageDefaultTitle\"),\n scalePercent: scale,\n });\n setTempUrl(sanitizedUrl);\n setPreviewLoaded(true);\n setErrorTip(\"\");\n if (uploadStatus === \"loading\") {\n setUploadStatus(\"success\");\n }\n };\n\n const handleSelect = () => {\n if (isUploading) return;\n if (!resource.resourceUrl) return;\n onSelect({\n resourceUrl: resource.resourceUrl,\n resourceTitle:\n resource.resourceTitle || t(\"imageDefaultTitle\", \"Image name\"),\n scalePercent: scale,\n });\n setDialogOpen(false);\n };\n\n const handleUrlChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const url = e.target.value.trim();\n setTempUrl(url);\n setPreviewLoaded(false);\n setErrorTip(\"\");\n };\n\n const handleTitleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setResource((prev) => ({\n ...prev,\n resourceTitle: e.target.value,\n }));\n };\n\n const handleScaleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value.replace(/[^\\d]/g, \"\");\n setScaleInputValue(inputValue);\n if (!inputValue) {\n setScale(undefined);\n setResource((prev) => ({\n ...prev,\n scalePercent: undefined,\n }));\n return;\n }\n const numeric = Math.max(1, Math.min(1000, Number(inputValue)));\n setScale(numeric);\n setResource((prev) => ({\n ...prev,\n scalePercent: numeric,\n }));\n };\n\n const handleRun = () => {\n if (isUploading) return;\n setUploadStatus(\"idle\");\n if (!tempUrl) {\n setErrorTip(t(\"imageUrlRequired\", \"Please enter image URL\"));\n return;\n }\n if (!isValidImageUrl(tempUrl)) {\n setErrorTip(t(\"imageInvalidUrl\", \"Please enter a valid image URL\"));\n return;\n }\n applyImage(tempUrl);\n if (!resource.resourceTitle && tempUrl) {\n try {\n const parsed = new URL(tempUrl);\n const name = decodeURIComponent(\n parsed.pathname.split(\"/\").filter(Boolean).pop() ?? \"\"\n );\n if (name) {\n setResource((prev) => ({\n ...prev,\n resourceTitle: name,\n }));\n }\n } catch (error) {\n // ignore\n console.error(error);\n }\n }\n };\n\n const finalize = (url: string, fileName: string) => {\n setUploadStatus(\"success\");\n applyImage(url, fileName);\n };\n\n const handleUploadError = (error: any, currentFile: File) => {\n const message =\n error?.message || t(\"imageUploadError\", \"Upload failed, please retry\");\n setErrorTip(message);\n setUploadStatus(\"error\");\n setPreviewLoaded(Boolean(resource.resourceUrl));\n uploadProps?.onError?.(error, currentFile);\n };\n\n const runCustomRequest = async (targetFile: File) => {\n const options: UploadRequestOption = {\n file: targetFile,\n filename: uploadProps?.name,\n data:\n typeof uploadProps?.data === \"function\"\n ? await uploadProps.data(targetFile)\n : uploadProps?.data,\n headers: uploadProps?.headers,\n withCredentials: uploadProps?.withCredentials,\n action:\n typeof uploadProps?.action === \"function\"\n ? await uploadProps.action(targetFile)\n : uploadProps?.action,\n onProgress: (event) => uploadProps?.onProgress?.(event, targetFile),\n onError: (error) => handleUploadError(error, targetFile),\n onSuccess: (response: any) => {\n uploadProps?.onSuccess?.(response, targetFile);\n const url =\n typeof response === \"string\"\n ? response\n : (response?.url ?? response?.data?.url);\n if (url) {\n finalize(url, targetFile.name);\n } else {\n handleUploadError(new Error(\"INVALID_RESPONSE\"), targetFile);\n }\n },\n };\n uploadProps?.customRequest?.(options);\n };\n\n const runActionUpload = async (targetFile: File) => {\n const action =\n typeof uploadProps?.action === \"function\"\n ? await uploadProps.action(targetFile)\n : uploadProps?.action;\n if (!action) {\n finalize(URL.createObjectURL(targetFile), targetFile.name);\n return;\n }\n\n try {\n const formData = new FormData();\n formData.append(uploadProps?.name ?? \"file\", targetFile);\n const extraData =\n typeof uploadProps?.data === \"function\"\n ? await uploadProps.data(targetFile)\n : uploadProps?.data;\n if (extraData) {\n Object.entries(extraData).forEach(([key, val]) => {\n formData.append(key, val as any);\n });\n }\n\n const response = await fetch(action, {\n method: \"POST\",\n body: formData,\n headers: uploadProps?.headers,\n credentials: uploadProps?.withCredentials ? \"include\" : \"same-origin\",\n });\n const result = await response.json();\n uploadProps?.onSuccess?.(result, targetFile);\n const url = typeof result === \"string\" ? result : result?.data;\n\n if (url) {\n finalize(url, targetFile.name);\n } else {\n handleUploadError(new Error(\"INVALID_RESPONSE\"), targetFile);\n }\n } catch (error: any) {\n handleUploadError(error, targetFile);\n }\n };\n\n const triggerUpload = async (file: File) => {\n try {\n setErrorTip(\"\");\n let candidate: File | Blob | boolean | void = file;\n if (uploadProps?.beforeUpload) {\n candidate = await uploadProps.beforeUpload(file);\n if (candidate === false) {\n return;\n }\n }\n\n if (candidate instanceof Blob && !(candidate instanceof File)) {\n candidate = new File([candidate], file.name, {\n type: candidate.type || file.type,\n });\n }\n\n const finalFile = candidate instanceof File ? candidate : file;\n setUploadStatus(\"loading\");\n setPreviewLoaded(false);\n\n if (uploadProps?.customRequest) {\n await runCustomRequest(finalFile);\n return;\n }\n if (uploadProps?.action) {\n await runActionUpload(finalFile);\n return;\n }\n\n const localUrl = URL.createObjectURL(finalFile);\n finalize(localUrl, finalFile.name);\n uploadProps?.onSuccess?.({ url: localUrl }, finalFile);\n } catch (error: any) {\n setUploadStatus(\"error\");\n handleUploadError(error, file);\n }\n };\n\n const onFileInputChange = async (\n event: React.ChangeEvent<HTMLInputElement>\n ) => {\n const file = event.target.files?.[0];\n if (!file) return;\n await triggerUpload(file);\n event.target.value = \"\";\n };\n\n const scaleInput = useMemo(\n () => (\n <div className=\"flex items-center gap-2\">\n <Input\n type=\"text\"\n value={scaleInputValue}\n onChange={handleScaleChange}\n className=\"w-24\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n />\n <span>%</span>\n </div>\n ),\n [scaleInputValue]\n );\n\n return (\n <div ref={ref} className=\"space-y-6\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-foreground\">\n {t(\"imageUrlLabel\", \"URL\")}\n </label>\n <div className=\"flex gap-2\">\n <Input\n type=\"text\"\n placeholder={t(\"imageUrlPlaceholder\", \"Please enter image URL\")}\n value={tempUrl}\n onChange={handleUrlChange}\n autoComplete=\"off\"\n />\n <Button\n className=\"h-8\"\n variant=\"outline\"\n type=\"button\"\n onClick={handleRun}\n >\n {t(\"imageRunButton\", \"Preview\")}\n </Button>\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-foreground\">\n {t(\"imageUploadLabel\", \"Upload\")}\n </label>\n <label\n className={`relative group flex h-48 w-full flex-col items-center justify-center overflow-hidden rounded-lg border border-dashed transition-colors ${\n previewLoaded ? \"bg-muted/40\" : \"bg-muted/10\"\n } ${\n isUploading\n ? \"cursor-wait opacity-80 pointer-events-none\"\n : \"cursor-pointer\"\n }`}\n >\n {isUploading && (\n <div className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 bg-background/80\">\n <Loader2 className=\"h-6 w-6 animate-spin text-primary\" />\n <span className=\"text-sm text-muted-foreground\">\n {t(\"imageUploading\", \"Uploading...\")}\n </span>\n </div>\n )}\n {previewLoaded && resource.resourceUrl ? (\n <>\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={resource.resourceUrl}\n alt={resource.resourceTitle || \"preview\"}\n className=\"h-full w-full object-contain\"\n />\n {!isUploading && (\n <div className=\"pointer-events-none absolute inset-0 flex flex-col items-center justify-center gap-2 bg-[#D7D7D7] opacity-0 transition-opacity duration-200 group-hover:opacity-100\">\n <Upload\n className=\"h-6 w-6\"\n style={{\n color: \"var(--base-muted-foreground, #737373)\",\n }}\n />\n <span\n className=\"text-sm\"\n style={{\n color: \"var(--base-muted-foreground, #737373)\",\n }}\n >\n {t(\n \"imageUploadPlaceholder\",\n \"Drag files or click to upload\"\n )}\n </span>\n </div>\n )}\n </>\n ) : (\n <div className=\"flex flex-col items-center gap-2 text-sm text-muted-foreground\">\n <Upload className=\"h-6 w-6\" />\n <span>\n {t(\"imageUploadPlaceholder\", \"Drag files or click to upload\")}\n </span>\n </div>\n )}\n <input\n type=\"file\"\n accept=\"image/*\"\n className=\"hidden\"\n disabled={isUploading}\n onChange={onFileInputChange}\n />\n </label>\n {uploadStatus === \"success\" && (\n <p className=\"text-xs text-muted-foreground\">\n {t(\"imageUploadSuccess\", \"Upload complete\")}\n </p>\n )}\n </div>\n\n {previewLoaded && resource.resourceUrl && (\n <>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-foreground\">\n {t(\"imageTitleLabel\", \"Image Title\")}\n </label>\n <Input\n type=\"text\"\n placeholder={t(\n \"imageTitlePlaceholder\",\n \"Please enter image title\"\n )}\n value={resource.resourceTitle || \"\"}\n onChange={handleTitleChange}\n />\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-foreground\">\n {t(\"imageScaleLabel\", \"Scale\")}\n </label>\n {scaleInput}\n </div>\n </>\n )}\n\n {!!errorTip && <p className=\"text-xs text-destructive\">{errorTip}</p>}\n\n <div className=\"flex justify-end gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handleCancel}\n disabled={isUploading}\n >\n {t(\"imageCancelButton\", \"Cancel\")}\n </Button>\n <Button\n className=\"h-8\"\n onClick={handleSelect}\n disabled={!resource?.resourceUrl || isUploading}\n >\n {t(\"imageUseButton\", \"Use Image\")}\n </Button>\n </div>\n </div>\n );\n }\n);\n\nImageInject.displayName = \"ImageInject\";\n\nexport default ImageInject;\n"],"names":["ImageInject","React","value","onSelect","uploadProps","ref","t","useTranslation","setDialogOpen","useContext","EditorContext","resource","setResource","useState","previewLoaded","setPreviewLoaded","tempUrl","setTempUrl","scale","setScale","scaleInputValue","setScaleInputValue","errorTip","setErrorTip","uploadStatus","setUploadStatus","isUploading","useEffect","prev","resolvedScale","handleCancel","applyImage","url","name","sanitizedUrl","sanitizeImageUrl","handleSelect","handleUrlChange","handleTitleChange","handleScaleChange","inputValue","numeric","handleRun","isValidImageUrl","parsed","error","finalize","fileName","handleUploadError","currentFile","message","runCustomRequest","targetFile","options","event","response","runActionUpload","action","formData","extraData","key","val","result","triggerUpload","file","candidate","finalFile","localUrl","onFileInputChange","scaleInput","useMemo","jsxs","jsx","Input","Button","Loader2","Fragment","Upload"],"mappings":"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"}
1
+ {"version":3,"file":"ImageInject.es.js","sources":["../../../../src/components/MarkdownFlowEditor/components/ImageInject.tsx"],"sourcesContent":["/** inject image to mc-editor */\nimport React, { useContext, useEffect, useMemo, useState } from \"react\";\nimport { Button } from \"../../ui/button\";\nimport { Input } from \"../../ui/input\";\nimport { useTranslation } from \"react-i18next\";\nimport { Loader2, Upload } from \"lucide-react\";\n\nimport EditorContext from \"../editor-context\";\nimport { isValidImageUrl, sanitizeImageUrl } from \"../utils/image\";\nimport { UploadProps, UploadRequestOption } from \"../uploadTypes\";\n\nexport type ImageResource = {\n resourceUrl: string;\n resourceTitle?: string;\n scalePercent?: number;\n};\n\nexport interface ImageInjectProps {\n value?: Partial<ImageResource>;\n onSelect: (resource: ImageResource) => void;\n uploadProps?: UploadProps;\n}\n\nconst ImageInject = React.forwardRef<HTMLDivElement, ImageInjectProps>(\n ({ value, onSelect, uploadProps }, ref) => {\n const { t } = useTranslation();\n const { setDialogOpen } = useContext(EditorContext);\n\n const [resource, setResource] = useState<ImageResource>({\n resourceUrl: value?.resourceUrl ?? \"\",\n resourceTitle: value?.resourceTitle ?? \"\",\n scalePercent: value?.scalePercent ?? 100,\n });\n const [previewLoaded, setPreviewLoaded] = useState<boolean>(\n Boolean(value?.resourceUrl)\n );\n const [tempUrl, setTempUrl] = useState<string>(value?.resourceUrl ?? \"\");\n const [scale, setScale] = useState<number | undefined>(\n value?.scalePercent ?? 100\n );\n const [scaleInputValue, setScaleInputValue] = useState<string>(\n value?.scalePercent !== undefined ? String(value.scalePercent) : \"100\"\n );\n const [errorTip, setErrorTip] = useState<string>(\"\");\n const [uploadStatus, setUploadStatus] = useState<\n \"idle\" | \"loading\" | \"success\" | \"error\"\n >(\"idle\");\n const isUploading = uploadStatus === \"loading\";\n\n useEffect(() => {\n if (value?.resourceUrl) {\n setResource((prev) => ({\n ...prev,\n resourceUrl: value.resourceUrl ?? \"\",\n resourceTitle: value.resourceTitle ?? prev.resourceTitle ?? \"\",\n scalePercent: value.scalePercent ?? prev.scalePercent ?? 100,\n }));\n setTempUrl(value.resourceUrl ?? \"\");\n const resolvedScale =\n value.scalePercent !== undefined ? value.scalePercent : 100;\n setScale(resolvedScale);\n setScaleInputValue(\n value.scalePercent !== undefined\n ? String(value.scalePercent)\n : String(resolvedScale)\n );\n setPreviewLoaded(true);\n }\n setUploadStatus(\"idle\");\n }, [value]);\n\n const handleCancel = () => {\n if (isUploading) return;\n setDialogOpen(false);\n };\n\n const applyImage = (url: string, name?: string) => {\n const sanitizedUrl = sanitizeImageUrl(url);\n setResource({\n resourceUrl: sanitizedUrl,\n resourceTitle: name || resource.resourceTitle || t(\"imageDefaultTitle\"),\n scalePercent: scale,\n });\n setTempUrl(sanitizedUrl);\n setPreviewLoaded(true);\n setErrorTip(\"\");\n if (uploadStatus === \"loading\") {\n setUploadStatus(\"success\");\n }\n };\n\n const handleSelect = () => {\n if (isUploading) return;\n if (!resource.resourceUrl) return;\n onSelect({\n resourceUrl: resource.resourceUrl,\n resourceTitle:\n resource.resourceTitle || t(\"imageDefaultTitle\", \"Image name\"),\n scalePercent: scale,\n });\n setDialogOpen(false);\n };\n\n const handleUrlChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const url = e.target.value.trim();\n setTempUrl(url);\n setPreviewLoaded(false);\n setErrorTip(\"\");\n };\n\n const handleTitleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setResource((prev) => ({\n ...prev,\n resourceTitle: e.target.value,\n }));\n };\n\n const handleScaleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value.replace(/[^\\d]/g, \"\");\n setScaleInputValue(inputValue);\n if (!inputValue) {\n setScale(undefined);\n setResource((prev) => ({\n ...prev,\n scalePercent: undefined,\n }));\n return;\n }\n const numeric = Math.max(1, Math.min(1000, Number(inputValue)));\n setScale(numeric);\n setResource((prev) => ({\n ...prev,\n scalePercent: numeric,\n }));\n };\n\n const handleRun = () => {\n if (isUploading) return;\n setUploadStatus(\"idle\");\n if (!tempUrl) {\n setErrorTip(t(\"imageUrlRequired\", \"Please enter image URL\"));\n return;\n }\n if (!isValidImageUrl(tempUrl)) {\n setErrorTip(t(\"imageInvalidUrl\", \"Please enter a valid image URL\"));\n return;\n }\n applyImage(tempUrl);\n if (!resource.resourceTitle && tempUrl) {\n try {\n const parsed = new URL(tempUrl);\n const name = decodeURIComponent(\n parsed.pathname.split(\"/\").filter(Boolean).pop() ?? \"\"\n );\n if (name) {\n setResource((prev) => ({\n ...prev,\n resourceTitle: name,\n }));\n }\n } catch (error) {\n // ignore\n console.error(error);\n }\n }\n };\n\n const finalize = (url: string, fileName: string) => {\n setUploadStatus(\"success\");\n applyImage(url, fileName);\n };\n\n const handleUploadError = (error: any, currentFile: File) => {\n const message =\n error?.message || t(\"imageUploadError\", \"Upload failed, please retry\");\n setErrorTip(message);\n setUploadStatus(\"error\");\n setPreviewLoaded(Boolean(resource.resourceUrl));\n uploadProps?.onError?.(error, currentFile);\n };\n\n const runCustomRequest = async (targetFile: File) => {\n const options: UploadRequestOption = {\n file: targetFile,\n filename: uploadProps?.name,\n data:\n typeof uploadProps?.data === \"function\"\n ? await uploadProps.data(targetFile)\n : uploadProps?.data,\n headers: uploadProps?.headers,\n withCredentials: uploadProps?.withCredentials,\n action:\n typeof uploadProps?.action === \"function\"\n ? await uploadProps.action(targetFile)\n : uploadProps?.action,\n onProgress: (event) => uploadProps?.onProgress?.(event, targetFile),\n onError: (error) => handleUploadError(error, targetFile),\n onSuccess: (response: any) => {\n uploadProps?.onSuccess?.(response, targetFile);\n const url =\n typeof response === \"string\"\n ? response\n : (response?.url ?? response?.data?.url);\n if (url) {\n finalize(url, targetFile.name);\n } else {\n handleUploadError(new Error(\"INVALID_RESPONSE\"), targetFile);\n }\n },\n };\n uploadProps?.customRequest?.(options);\n };\n\n const runActionUpload = async (targetFile: File) => {\n const action =\n typeof uploadProps?.action === \"function\"\n ? await uploadProps.action(targetFile)\n : uploadProps?.action;\n if (!action) {\n finalize(URL.createObjectURL(targetFile), targetFile.name);\n return;\n }\n\n try {\n const formData = new FormData();\n formData.append(uploadProps?.name ?? \"file\", targetFile);\n const extraData =\n typeof uploadProps?.data === \"function\"\n ? await uploadProps.data(targetFile)\n : uploadProps?.data;\n if (extraData) {\n Object.entries(extraData).forEach(([key, val]) => {\n formData.append(key, val as any);\n });\n }\n\n const response = await fetch(action, {\n method: \"POST\",\n body: formData,\n headers: uploadProps?.headers,\n credentials: uploadProps?.withCredentials ? \"include\" : \"same-origin\",\n });\n const result = await response.json();\n uploadProps?.onSuccess?.(result, targetFile);\n const url = typeof result === \"string\" ? result : result?.data;\n\n if (url) {\n finalize(url, targetFile.name);\n } else {\n handleUploadError(new Error(\"INVALID_RESPONSE\"), targetFile);\n }\n } catch (error: any) {\n handleUploadError(error, targetFile);\n }\n };\n\n const triggerUpload = async (file: File) => {\n try {\n setErrorTip(\"\");\n let candidate: File | Blob | boolean | void = file;\n if (uploadProps?.beforeUpload) {\n candidate = await uploadProps.beforeUpload(file);\n if (candidate === false) {\n return;\n }\n }\n\n if (candidate instanceof Blob && !(candidate instanceof File)) {\n candidate = new File([candidate], file.name, {\n type: candidate.type || file.type,\n });\n }\n\n const finalFile = candidate instanceof File ? candidate : file;\n setUploadStatus(\"loading\");\n setPreviewLoaded(false);\n\n if (uploadProps?.customRequest) {\n await runCustomRequest(finalFile);\n return;\n }\n if (uploadProps?.action) {\n await runActionUpload(finalFile);\n return;\n }\n\n const localUrl = URL.createObjectURL(finalFile);\n finalize(localUrl, finalFile.name);\n uploadProps?.onSuccess?.({ url: localUrl }, finalFile);\n } catch (error: any) {\n setUploadStatus(\"error\");\n handleUploadError(error, file);\n }\n };\n\n const onFileInputChange = async (\n event: React.ChangeEvent<HTMLInputElement>\n ) => {\n const file = event.target.files?.[0];\n if (!file) return;\n await triggerUpload(file);\n event.target.value = \"\";\n };\n\n const scaleInput = useMemo(\n () => (\n <div className=\"flex items-center gap-2\">\n <Input\n type=\"text\"\n value={scaleInputValue}\n onChange={handleScaleChange}\n className=\"w-24\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n />\n <span>%</span>\n </div>\n ),\n [scaleInputValue]\n );\n\n return (\n <div ref={ref} className=\"space-y-6\">\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-foreground\">\n {t(\"imageUrlLabel\", \"URL\")}\n </label>\n <div className=\"flex gap-2\">\n <Input\n type=\"text\"\n placeholder={t(\"imageUrlPlaceholder\", \"Please enter image URL\")}\n dir=\"ltr\"\n value={tempUrl}\n onChange={handleUrlChange}\n autoComplete=\"off\"\n />\n <Button\n className=\"h-8\"\n variant=\"outline\"\n type=\"button\"\n onClick={handleRun}\n >\n {t(\"imageRunButton\", \"Preview\")}\n </Button>\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-foreground\">\n {t(\"imageUploadLabel\", \"Upload\")}\n </label>\n <label\n className={`relative group flex h-48 w-full flex-col items-center justify-center overflow-hidden rounded-lg border border-dashed transition-colors ${\n previewLoaded ? \"bg-muted/40\" : \"bg-muted/10\"\n } ${\n isUploading\n ? \"cursor-wait opacity-80 pointer-events-none\"\n : \"cursor-pointer\"\n }`}\n >\n {isUploading && (\n <div className=\"absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 bg-background/80\">\n <Loader2 className=\"h-6 w-6 animate-spin text-primary\" />\n <span className=\"text-sm text-muted-foreground\">\n {t(\"imageUploading\", \"Uploading...\")}\n </span>\n </div>\n )}\n {previewLoaded && resource.resourceUrl ? (\n <>\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={resource.resourceUrl}\n alt={resource.resourceTitle || t(\"imageDefaultTitle\")}\n className=\"h-full w-full object-contain\"\n />\n {!isUploading && (\n <div className=\"pointer-events-none absolute inset-0 flex flex-col items-center justify-center gap-2 bg-[#D7D7D7] opacity-0 transition-opacity duration-200 group-hover:opacity-100\">\n <Upload\n className=\"h-6 w-6\"\n style={{\n color: \"var(--base-muted-foreground, #737373)\",\n }}\n />\n <span\n className=\"text-sm\"\n style={{\n color: \"var(--base-muted-foreground, #737373)\",\n }}\n >\n {t(\n \"imageUploadPlaceholder\",\n \"Drag files or click to upload\"\n )}\n </span>\n </div>\n )}\n </>\n ) : (\n <div className=\"flex flex-col items-center gap-2 text-sm text-muted-foreground\">\n <Upload className=\"h-6 w-6\" />\n <span>\n {t(\"imageUploadPlaceholder\", \"Drag files or click to upload\")}\n </span>\n </div>\n )}\n <input\n type=\"file\"\n accept=\"image/*\"\n className=\"hidden\"\n disabled={isUploading}\n onChange={onFileInputChange}\n />\n </label>\n {uploadStatus === \"success\" && (\n <p className=\"text-xs text-muted-foreground\">\n {t(\"imageUploadSuccess\", \"Upload complete\")}\n </p>\n )}\n </div>\n\n {previewLoaded && resource.resourceUrl && (\n <>\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-foreground\">\n {t(\"imageTitleLabel\", \"Image Title\")}\n </label>\n <Input\n type=\"text\"\n placeholder={t(\n \"imageTitlePlaceholder\",\n \"Please enter image title\"\n )}\n value={resource.resourceTitle || \"\"}\n onChange={handleTitleChange}\n />\n </div>\n\n <div className=\"space-y-2\">\n <label className=\"text-sm font-medium text-foreground\">\n {t(\"imageScaleLabel\", \"Scale\")}\n </label>\n {scaleInput}\n </div>\n </>\n )}\n\n {!!errorTip && <p className=\"text-xs text-destructive\">{errorTip}</p>}\n\n <div className=\"flex justify-end gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handleCancel}\n disabled={isUploading}\n >\n {t(\"imageCancelButton\", \"Cancel\")}\n </Button>\n <Button\n className=\"h-8\"\n onClick={handleSelect}\n disabled={!resource?.resourceUrl || isUploading}\n >\n {t(\"imageUseButton\", \"Use Image\")}\n </Button>\n </div>\n </div>\n );\n }\n);\n\nImageInject.displayName = \"ImageInject\";\n\nexport default ImageInject;\n"],"names":["ImageInject","React","value","onSelect","uploadProps","ref","t","useTranslation","setDialogOpen","useContext","EditorContext","resource","setResource","useState","previewLoaded","setPreviewLoaded","tempUrl","setTempUrl","scale","setScale","scaleInputValue","setScaleInputValue","errorTip","setErrorTip","uploadStatus","setUploadStatus","isUploading","useEffect","prev","resolvedScale","handleCancel","applyImage","url","name","sanitizedUrl","sanitizeImageUrl","handleSelect","handleUrlChange","handleTitleChange","handleScaleChange","inputValue","numeric","handleRun","isValidImageUrl","parsed","error","finalize","fileName","handleUploadError","currentFile","message","runCustomRequest","targetFile","options","event","response","runActionUpload","action","formData","extraData","key","val","result","triggerUpload","file","candidate","finalFile","localUrl","onFileInputChange","scaleInput","useMemo","jsxs","jsx","Input","Button","Loader2","Fragment","Upload"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("../../../_virtual/jsx-runtime.cjs"),n=require("react"),C=require("../../ui/input.cjs"),M=require("../../../lib/utils.cjs"),q=require("../../../node_modules/lucide-react/dist/esm/icons/search.cjs"),I=({open:l,anchorElement:a,onClose:c,onSelect:b,variables:g,systemVariables:v,labels:d})=>{const h=n.useRef(null),E=n.useRef(null),[R,y]=n.useState(""),[N,D]=n.useState({left:0,top:0}),[f,o]=n.useState(-1),j=n.useCallback(()=>{if(!a)return;const e=a.getBoundingClientRect();D({left:e.left,top:e.bottom+8})},[a]);n.useEffect(()=>{if(!l){y(""),o(-1);return}j();const e=window.setTimeout(()=>{E.current?.focus()},0),t=$=>{const L=$.target;h.current&&!h.current.contains(L)&&a&&!a.contains(L)&&c()},r=()=>j();return window.addEventListener("mousedown",t),window.addEventListener("scroll",r,!0),window.addEventListener("resize",r),()=>{window.clearTimeout(e),window.removeEventListener("mousedown",t),window.removeEventListener("scroll",r,!0),window.removeEventListener("resize",r)}},[l,a,c,j]);const x=R.trim().toLowerCase(),p=n.useCallback(e=>{if(!x)return!0;const t=e.name.toLowerCase().includes(x),r=e.label?e.label.toLowerCase().includes(x):!1;return t||r},[x]),u=n.useMemo(()=>v.filter(p),[v,p]),m=n.useMemo(()=>g.filter(p),[g,p]),i=n.useMemo(()=>[...u.map(e=>({group:"system",variable:e})),...m.map(e=>({group:"custom",variable:e}))],[u,m]),k=n.useMemo(()=>{const e=new Map;return i.forEach((t,r)=>{e.set(`${t.group}-${t.variable.name}`,r)}),e},[i]);n.useEffect(()=>{(!l||!i.length)&&o(-1)},[l,i.length]);const w=n.useCallback(e=>{b(e),c()},[c,b]),S=e=>{if(!i.length){e.key==="Escape"&&c();return}if(e.key==="ArrowDown")e.preventDefault(),o(t=>(t+1)%i.length);else if(e.key==="ArrowUp")e.preventDefault(),o(t=>t<=0?i.length-1:t-1);else if(e.key==="Enter"){e.preventDefault();const t=i[f];t&&w(t.variable)}else e.key==="Escape"&&(e.preventDefault(),c())};return l?s.jsxRuntimeExports.jsxs("div",{ref:h,className:"markdown-flow-editor-variable-search",style:{position:"fixed",left:`${N.left}px`,top:`${N.top}px`},children:[s.jsxRuntimeExports.jsxs("div",{className:"relative",children:[s.jsxRuntimeExports.jsx(q.default,{className:"variable-search-icon"}),s.jsxRuntimeExports.jsx(C.Input,{ref:E,value:R,placeholder:d.searchPlaceholder,onChange:e=>y(e.target.value),onKeyDown:S,className:"variable-search-input"})]}),s.jsxRuntimeExports.jsxs("div",{className:"variable-search-list",children:[u.length>0&&s.jsxRuntimeExports.jsxs("div",{className:"variable-search-section",children:[s.jsxRuntimeExports.jsx("p",{className:"variable-search-section-title",children:d.systemLabel}),u.map(e=>{const t=k.get(`system-${e.name}`)??-1,r=f===t;return s.jsxRuntimeExports.jsxs("button",{type:"button",onClick:()=>w(e),onMouseEnter:()=>{t>=0&&o(t)},className:M.cn("variable-search-item",r&&"variable-search-item-active"),children:[s.jsxRuntimeExports.jsx("span",{className:"variable-search-item-name",children:e.name}),e.label&&s.jsxRuntimeExports.jsx("span",{className:"variable-search-item-label",children:e.label})]},`system-${e.name}`)})]}),m.length>0&&s.jsxRuntimeExports.jsxs("div",{className:"variable-search-section",children:[s.jsxRuntimeExports.jsx("p",{className:"variable-search-section-title",children:d.customLabel}),m.map(e=>{const t=k.get(`custom-${e.name}`)??-1,r=f===t;return s.jsxRuntimeExports.jsxs("button",{type:"button",onClick:()=>w(e),onMouseEnter:()=>{t>=0&&o(t)},className:M.cn("variable-search-item",r&&"variable-search-item-active"),children:[s.jsxRuntimeExports.jsx("span",{className:"variable-search-item-name",children:e.name}),e.label&&s.jsxRuntimeExports.jsx("span",{className:"variable-search-item-label",children:e.label})]},`custom-${e.name}`)})]}),u.length===0&&m.length===0&&s.jsxRuntimeExports.jsx("div",{className:"variable-search-empty",children:d.emptyLabel})]})]}):null};exports.default=I;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react/jsx-runtime"),a=require("react"),q=require("../../ui/input.cjs"),R=require("../../../lib/utils.cjs"),I=require("../../../node_modules/lucide-react/dist/esm/icons/search.cjs"),V=({open:u,anchorElement:r,onClose:l,onSelect:j,variables:N,systemVariables:L,labels:h})=>{const f=a.useRef(null),M=a.useRef(null),[k,D]=a.useState(""),[C,$]=a.useState({left:0,top:0}),[x,o]=a.useState(-1),v=a.useCallback(()=>{if(!r)return;const e=r.getBoundingClientRect(),t=r.ownerDocument,n=t.defaultView;if(!n)return;const c=f.current?.getBoundingClientRect().width??0,w=n.getComputedStyle(r).direction==="rtl"?e.right-c:e.left,b=Math.max(8,t.documentElement.clientWidth-c-8);$({left:Math.min(Math.max(8,w),b),top:e.bottom+8})},[r]);a.useEffect(()=>{if(!u){D(""),o(-1);return}const e=r?.ownerDocument.defaultView;if(!e)return;v();const t=e.setTimeout(()=>{M.current?.focus()},0),n=w=>{const b=w.target;f.current&&!f.current.contains(b)&&r&&!r.contains(b)&&l()},c=()=>v();return e.addEventListener("mousedown",n),e.addEventListener("scroll",c,!0),e.addEventListener("resize",c),()=>{e.clearTimeout(t),e.removeEventListener("mousedown",n),e.removeEventListener("scroll",c,!0),e.removeEventListener("resize",c)}},[u,r,l,v]);const p=k.trim().toLowerCase(),g=a.useCallback(e=>{if(!p)return!0;const t=e.name.toLowerCase().includes(p),n=e.label?e.label.toLowerCase().includes(p):!1;return t||n},[p]),m=a.useMemo(()=>L.filter(g),[L,g]),d=a.useMemo(()=>N.filter(g),[N,g]),i=a.useMemo(()=>[...m.map(e=>({group:"system",variable:e})),...d.map(e=>({group:"custom",variable:e}))],[m,d]),S=a.useMemo(()=>{const e=new Map;return i.forEach((t,n)=>{e.set(`${t.group}-${t.variable.name}`,n)}),e},[i]);a.useEffect(()=>{(!u||!i.length)&&o(-1)},[u,i.length]);const y=a.useCallback(e=>{j(e),l()},[l,j]),E=e=>{if(!i.length){e.key==="Escape"&&l();return}if(e.key==="ArrowDown")e.preventDefault(),o(t=>(t+1)%i.length);else if(e.key==="ArrowUp")e.preventDefault(),o(t=>t<=0?i.length-1:t-1);else if(e.key==="Enter"){e.preventDefault();const t=i[x];t&&y(t.variable)}else e.key==="Escape"&&(e.preventDefault(),l())};return u?s.jsxs("div",{ref:f,className:"markdown-flow-editor-variable-search",style:{position:"fixed",left:`${C.left}px`,top:`${C.top}px`},children:[s.jsxs("div",{className:"relative",children:[s.jsx(I.default,{className:"variable-search-icon"}),s.jsx(q.Input,{ref:M,value:k,placeholder:h.searchPlaceholder,onChange:e=>D(e.target.value),onKeyDown:E,className:"variable-search-input"})]}),s.jsxs("div",{className:"variable-search-list",children:[m.length>0&&s.jsxs("div",{className:"variable-search-section",children:[s.jsx("p",{className:"variable-search-section-title",children:h.systemLabel}),m.map(e=>{const t=S.get(`system-${e.name}`)??-1,n=x===t;return s.jsxs("button",{type:"button",onClick:()=>y(e),onMouseEnter:()=>{t>=0&&o(t)},className:R.cn("variable-search-item",n&&"variable-search-item-active"),children:[s.jsx("span",{className:"variable-search-item-name",children:e.name}),e.label&&s.jsx("span",{className:"variable-search-item-label",children:e.label})]},`system-${e.name}`)})]}),d.length>0&&s.jsxs("div",{className:"variable-search-section",children:[s.jsx("p",{className:"variable-search-section-title",children:h.customLabel}),d.map(e=>{const t=S.get(`custom-${e.name}`)??-1,n=x===t;return s.jsxs("button",{type:"button",onClick:()=>y(e),onMouseEnter:()=>{t>=0&&o(t)},className:R.cn("variable-search-item",n&&"variable-search-item-active"),children:[s.jsx("span",{className:"variable-search-item-name",children:e.name}),e.label&&s.jsx("span",{className:"variable-search-item-label",children:e.label})]},`custom-${e.name}`)})]}),m.length===0&&d.length===0&&s.jsx("div",{className:"variable-search-empty",children:h.emptyLabel})]})]}):null};exports.default=V;
2
2
  //# sourceMappingURL=VariableSearchDropdown.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"VariableSearchDropdown.cjs","sources":["../../../../src/components/MarkdownFlowEditor/components/VariableSearchDropdown.tsx"],"sourcesContent":["import type React from \"react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { Search } from \"lucide-react\";\nimport { Variable } from \"../types\";\nimport { Input } from \"../../ui/input\";\nimport { cn } from \"../../../lib/utils\";\n\ninterface VariableSearchDropdownProps {\n open: boolean;\n anchorElement: HTMLElement | null;\n onClose: () => void;\n onSelect: (variable: Variable) => void;\n variables: Variable[];\n systemVariables: Variable[];\n labels: {\n searchPlaceholder: string;\n systemLabel: string;\n customLabel: string;\n emptyLabel: string;\n };\n}\n\nconst VariableSearchDropdown: React.FC<VariableSearchDropdownProps> = ({\n open,\n anchorElement,\n onClose,\n onSelect,\n variables,\n systemVariables,\n labels,\n}) => {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [query, setQuery] = useState(\"\");\n const [position, setPosition] = useState({ left: 0, top: 0 });\n const [highlightIndex, setHighlightIndex] = useState(-1);\n\n const updatePosition = useCallback(() => {\n if (!anchorElement) return;\n const rect = anchorElement.getBoundingClientRect();\n setPosition({\n left: rect.left,\n top: rect.bottom + 8,\n });\n }, [anchorElement]);\n\n useEffect(() => {\n if (!open) {\n setQuery(\"\");\n setHighlightIndex(-1);\n return;\n }\n updatePosition();\n const focusTimer = window.setTimeout(() => {\n inputRef.current?.focus();\n }, 0);\n const handleClick = (event: MouseEvent) => {\n const target = event.target as Node | null;\n if (\n containerRef.current &&\n !containerRef.current.contains(target) &&\n anchorElement &&\n !anchorElement.contains(target)\n ) {\n onClose();\n }\n };\n const handleScroll = () => updatePosition();\n window.addEventListener(\"mousedown\", handleClick);\n window.addEventListener(\"scroll\", handleScroll, true);\n window.addEventListener(\"resize\", handleScroll);\n\n return () => {\n window.clearTimeout(focusTimer);\n window.removeEventListener(\"mousedown\", handleClick);\n window.removeEventListener(\"scroll\", handleScroll, true);\n window.removeEventListener(\"resize\", handleScroll);\n };\n }, [open, anchorElement, onClose, updatePosition]);\n\n const normalizedQuery = query.trim().toLowerCase();\n const filterVariable = useCallback(\n (variable: Variable) => {\n if (!normalizedQuery) return true;\n const nameMatch = variable.name.toLowerCase().includes(normalizedQuery);\n const labelMatch = variable.label\n ? variable.label.toLowerCase().includes(normalizedQuery)\n : false;\n return nameMatch || labelMatch;\n },\n [normalizedQuery]\n );\n\n const filteredSystemVariables = useMemo(\n () => systemVariables.filter(filterVariable),\n [systemVariables, filterVariable]\n );\n const filteredCustomVariables = useMemo(\n () => variables.filter(filterVariable),\n [variables, filterVariable]\n );\n\n const orderedItems = useMemo(\n () => [\n ...filteredSystemVariables.map((variable) => ({\n group: \"system\" as const,\n variable,\n })),\n ...filteredCustomVariables.map((variable) => ({\n group: \"custom\" as const,\n variable,\n })),\n ],\n [filteredSystemVariables, filteredCustomVariables]\n );\n\n const indexesByKey = useMemo(() => {\n const map = new Map<string, number>();\n orderedItems.forEach((item, index) => {\n map.set(`${item.group}-${item.variable.name}`, index);\n });\n return map;\n }, [orderedItems]);\n\n useEffect(() => {\n if (!open || !orderedItems.length) {\n setHighlightIndex(-1);\n }\n }, [open, orderedItems.length]);\n\n const handleSelect = useCallback(\n (variable: Variable) => {\n onSelect(variable);\n onClose();\n },\n [onClose, onSelect]\n );\n\n const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (!orderedItems.length) {\n if (event.key === \"Escape\") {\n onClose();\n }\n return;\n }\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setHighlightIndex((prev) => (prev + 1) % orderedItems.length);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setHighlightIndex((prev) =>\n prev <= 0 ? orderedItems.length - 1 : prev - 1\n );\n } else if (event.key === \"Enter\") {\n event.preventDefault();\n const item = orderedItems[highlightIndex];\n if (item) {\n handleSelect(item.variable);\n }\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n onClose();\n }\n };\n\n if (!open) {\n return null;\n }\n\n return (\n <div\n ref={containerRef}\n className=\"markdown-flow-editor-variable-search\"\n style={{\n position: \"fixed\",\n left: `${position.left}px`,\n top: `${position.top}px`,\n }}\n >\n <div className=\"relative\">\n <Search className=\"variable-search-icon\" />\n <Input\n ref={inputRef}\n value={query}\n placeholder={labels.searchPlaceholder}\n onChange={(event) => setQuery(event.target.value)}\n onKeyDown={handleInputKeyDown}\n className=\"variable-search-input\"\n />\n </div>\n <div className=\"variable-search-list\">\n {filteredSystemVariables.length > 0 && (\n <div className=\"variable-search-section\">\n <p className=\"variable-search-section-title\">\n {labels.systemLabel}\n </p>\n {filteredSystemVariables.map((variable) => {\n const index = indexesByKey.get(`system-${variable.name}`) ?? -1;\n const isActive = highlightIndex === index;\n return (\n <button\n key={`system-${variable.name}`}\n type=\"button\"\n onClick={() => handleSelect(variable)}\n onMouseEnter={() => {\n if (index >= 0) {\n setHighlightIndex(index);\n }\n }}\n className={cn(\n \"variable-search-item\",\n isActive && \"variable-search-item-active\"\n )}\n >\n <span className=\"variable-search-item-name\">\n {variable.name}\n </span>\n {variable.label && (\n <span className=\"variable-search-item-label\">\n {variable.label}\n </span>\n )}\n </button>\n );\n })}\n </div>\n )}\n\n {filteredCustomVariables.length > 0 && (\n <div className=\"variable-search-section\">\n <p className=\"variable-search-section-title\">\n {labels.customLabel}\n </p>\n {filteredCustomVariables.map((variable) => {\n const index = indexesByKey.get(`custom-${variable.name}`) ?? -1;\n const isActive = highlightIndex === index;\n return (\n <button\n key={`custom-${variable.name}`}\n type=\"button\"\n onClick={() => handleSelect(variable)}\n onMouseEnter={() => {\n if (index >= 0) {\n setHighlightIndex(index);\n }\n }}\n className={cn(\n \"variable-search-item\",\n isActive && \"variable-search-item-active\"\n )}\n >\n <span className=\"variable-search-item-name\">\n {variable.name}\n </span>\n {variable.label && (\n <span className=\"variable-search-item-label\">\n {variable.label}\n </span>\n )}\n </button>\n );\n })}\n </div>\n )}\n\n {filteredSystemVariables.length === 0 &&\n filteredCustomVariables.length === 0 && (\n <div className=\"variable-search-empty\">{labels.emptyLabel}</div>\n )}\n </div>\n </div>\n );\n};\n\nexport default VariableSearchDropdown;\n"],"names":["VariableSearchDropdown","open","anchorElement","onClose","onSelect","variables","systemVariables","labels","containerRef","useRef","inputRef","query","setQuery","useState","position","setPosition","highlightIndex","setHighlightIndex","updatePosition","useCallback","rect","useEffect","focusTimer","handleClick","event","target","handleScroll","normalizedQuery","filterVariable","variable","nameMatch","labelMatch","filteredSystemVariables","useMemo","filteredCustomVariables","orderedItems","indexesByKey","map","item","index","handleSelect","handleInputKeyDown","prev","jsxs","jsx","Search","Input","isActive","cn"],"mappings":"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"}
1
+ {"version":3,"file":"VariableSearchDropdown.cjs","sources":["../../../../src/components/MarkdownFlowEditor/components/VariableSearchDropdown.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Search } from \"lucide-react\";\nimport { Variable } from \"../types\";\nimport { Input } from \"../../ui/input\";\nimport { cn } from \"../../../lib/utils\";\n\ninterface VariableSearchDropdownProps {\n open: boolean;\n anchorElement: HTMLElement | null;\n onClose: () => void;\n onSelect: (variable: Variable) => void;\n variables: Variable[];\n systemVariables: Variable[];\n labels: {\n searchPlaceholder: string;\n systemLabel: string;\n customLabel: string;\n emptyLabel: string;\n };\n}\n\nconst VariableSearchDropdown: React.FC<VariableSearchDropdownProps> = ({\n open,\n anchorElement,\n onClose,\n onSelect,\n variables,\n systemVariables,\n labels,\n}) => {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [query, setQuery] = useState(\"\");\n const [position, setPosition] = useState({ left: 0, top: 0 });\n const [highlightIndex, setHighlightIndex] = useState(-1);\n\n const updatePosition = useCallback(() => {\n if (!anchorElement) return;\n const rect = anchorElement.getBoundingClientRect();\n const doc = anchorElement.ownerDocument;\n const view = doc.defaultView;\n if (!view) return;\n const width = containerRef.current?.getBoundingClientRect().width ?? 0;\n const desiredLeft =\n view.getComputedStyle(anchorElement).direction === \"rtl\"\n ? rect.right - width\n : rect.left;\n const maxLeft = Math.max(8, doc.documentElement.clientWidth - width - 8);\n setPosition({\n left: Math.min(Math.max(8, desiredLeft), maxLeft),\n top: rect.bottom + 8,\n });\n }, [anchorElement]);\n\n useEffect(() => {\n if (!open) {\n setQuery(\"\");\n setHighlightIndex(-1);\n return;\n }\n const view = anchorElement?.ownerDocument.defaultView;\n if (!view) return;\n updatePosition();\n const focusTimer = view.setTimeout(() => {\n inputRef.current?.focus();\n }, 0);\n const handleClick = (event: MouseEvent) => {\n const target = event.target as Node | null;\n if (\n containerRef.current &&\n !containerRef.current.contains(target) &&\n anchorElement &&\n !anchorElement.contains(target)\n ) {\n onClose();\n }\n };\n const handleScroll = () => updatePosition();\n view.addEventListener(\"mousedown\", handleClick);\n view.addEventListener(\"scroll\", handleScroll, true);\n view.addEventListener(\"resize\", handleScroll);\n\n return () => {\n view.clearTimeout(focusTimer);\n view.removeEventListener(\"mousedown\", handleClick);\n view.removeEventListener(\"scroll\", handleScroll, true);\n view.removeEventListener(\"resize\", handleScroll);\n };\n }, [open, anchorElement, onClose, updatePosition]);\n\n const normalizedQuery = query.trim().toLowerCase();\n const filterVariable = useCallback(\n (variable: Variable) => {\n if (!normalizedQuery) return true;\n const nameMatch = variable.name.toLowerCase().includes(normalizedQuery);\n const labelMatch = variable.label\n ? variable.label.toLowerCase().includes(normalizedQuery)\n : false;\n return nameMatch || labelMatch;\n },\n [normalizedQuery]\n );\n\n const filteredSystemVariables = useMemo(\n () => systemVariables.filter(filterVariable),\n [systemVariables, filterVariable]\n );\n const filteredCustomVariables = useMemo(\n () => variables.filter(filterVariable),\n [variables, filterVariable]\n );\n\n const orderedItems = useMemo(\n () => [\n ...filteredSystemVariables.map((variable) => ({\n group: \"system\" as const,\n variable,\n })),\n ...filteredCustomVariables.map((variable) => ({\n group: \"custom\" as const,\n variable,\n })),\n ],\n [filteredSystemVariables, filteredCustomVariables]\n );\n\n const indexesByKey = useMemo(() => {\n const map = new Map<string, number>();\n orderedItems.forEach((item, index) => {\n map.set(`${item.group}-${item.variable.name}`, index);\n });\n return map;\n }, [orderedItems]);\n\n useEffect(() => {\n if (!open || !orderedItems.length) {\n setHighlightIndex(-1);\n }\n }, [open, orderedItems.length]);\n\n const handleSelect = useCallback(\n (variable: Variable) => {\n onSelect(variable);\n onClose();\n },\n [onClose, onSelect]\n );\n\n const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (!orderedItems.length) {\n if (event.key === \"Escape\") {\n onClose();\n }\n return;\n }\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setHighlightIndex((prev) => (prev + 1) % orderedItems.length);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setHighlightIndex((prev) =>\n prev <= 0 ? orderedItems.length - 1 : prev - 1\n );\n } else if (event.key === \"Enter\") {\n event.preventDefault();\n const item = orderedItems[highlightIndex];\n if (item) {\n handleSelect(item.variable);\n }\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n onClose();\n }\n };\n\n if (!open) {\n return null;\n }\n\n return (\n <div\n ref={containerRef}\n className=\"markdown-flow-editor-variable-search\"\n style={{\n position: \"fixed\",\n left: `${position.left}px`,\n top: `${position.top}px`,\n }}\n >\n <div className=\"relative\">\n <Search className=\"variable-search-icon\" />\n <Input\n ref={inputRef}\n value={query}\n placeholder={labels.searchPlaceholder}\n onChange={(event) => setQuery(event.target.value)}\n onKeyDown={handleInputKeyDown}\n className=\"variable-search-input\"\n />\n </div>\n <div className=\"variable-search-list\">\n {filteredSystemVariables.length > 0 && (\n <div className=\"variable-search-section\">\n <p className=\"variable-search-section-title\">\n {labels.systemLabel}\n </p>\n {filteredSystemVariables.map((variable) => {\n const index = indexesByKey.get(`system-${variable.name}`) ?? -1;\n const isActive = highlightIndex === index;\n return (\n <button\n key={`system-${variable.name}`}\n type=\"button\"\n onClick={() => handleSelect(variable)}\n onMouseEnter={() => {\n if (index >= 0) {\n setHighlightIndex(index);\n }\n }}\n className={cn(\n \"variable-search-item\",\n isActive && \"variable-search-item-active\"\n )}\n >\n <span className=\"variable-search-item-name\">\n {variable.name}\n </span>\n {variable.label && (\n <span className=\"variable-search-item-label\">\n {variable.label}\n </span>\n )}\n </button>\n );\n })}\n </div>\n )}\n\n {filteredCustomVariables.length > 0 && (\n <div className=\"variable-search-section\">\n <p className=\"variable-search-section-title\">\n {labels.customLabel}\n </p>\n {filteredCustomVariables.map((variable) => {\n const index = indexesByKey.get(`custom-${variable.name}`) ?? -1;\n const isActive = highlightIndex === index;\n return (\n <button\n key={`custom-${variable.name}`}\n type=\"button\"\n onClick={() => handleSelect(variable)}\n onMouseEnter={() => {\n if (index >= 0) {\n setHighlightIndex(index);\n }\n }}\n className={cn(\n \"variable-search-item\",\n isActive && \"variable-search-item-active\"\n )}\n >\n <span className=\"variable-search-item-name\">\n {variable.name}\n </span>\n {variable.label && (\n <span className=\"variable-search-item-label\">\n {variable.label}\n </span>\n )}\n </button>\n );\n })}\n </div>\n )}\n\n {filteredSystemVariables.length === 0 &&\n filteredCustomVariables.length === 0 && (\n <div className=\"variable-search-empty\">{labels.emptyLabel}</div>\n )}\n </div>\n </div>\n );\n};\n\nexport default VariableSearchDropdown;\n"],"names":["VariableSearchDropdown","open","anchorElement","onClose","onSelect","variables","systemVariables","labels","containerRef","useRef","inputRef","query","setQuery","useState","position","setPosition","highlightIndex","setHighlightIndex","updatePosition","useCallback","rect","doc","view","width","desiredLeft","maxLeft","useEffect","focusTimer","handleClick","event","target","handleScroll","normalizedQuery","filterVariable","variable","nameMatch","labelMatch","filteredSystemVariables","useMemo","filteredCustomVariables","orderedItems","indexesByKey","map","item","index","handleSelect","handleInputKeyDown","prev","jsxs","jsx","Search","Input","isActive","cn"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { default as React } from 'react';
2
- import { Variable } from '../types';
2
+ import { Variable } from '../types.js';
3
3
  interface VariableSearchDropdownProps {
4
4
  open: boolean;
5
5
  anchorElement: HTMLElement | null;
@@ -1,180 +1,184 @@
1
- import { j as s } from "../../../_virtual/jsx-runtime.es.js";
2
- import { useRef as C, useState as g, useCallback as v, useEffect as I, useMemo as f } from "react";
3
- import { Input as K } from "../../ui/input.es.js";
4
- import { cn as R } from "../../../lib/utils.es.js";
5
- import P from "../../../node_modules/lucide-react/dist/esm/icons/search.es.js";
6
- const H = ({
7
- open: l,
8
- anchorElement: n,
9
- onClose: i,
10
- onSelect: y,
11
- variables: j,
12
- systemVariables: N,
13
- labels: u
1
+ import { jsxs as c, jsx as a } from "react/jsx-runtime";
2
+ import { useRef as R, useState as L, useCallback as k, useEffect as V, useMemo as b } from "react";
3
+ import { Input as P } from "../../ui/input.es.js";
4
+ import { cn as z } from "../../../lib/utils.es.js";
5
+ import T from "../../../node_modules/lucide-react/dist/esm/icons/search.es.js";
6
+ const W = ({
7
+ open: m,
8
+ anchorElement: r,
9
+ onClose: l,
10
+ onSelect: D,
11
+ variables: M,
12
+ systemVariables: $,
13
+ labels: h
14
14
  }) => {
15
- const p = C(null), L = C(null), [k, E] = g(""), [D, S] = g({ left: 0, top: 0 }), [w, c] = g(-1), x = v(() => {
16
- if (!n) return;
17
- const e = n.getBoundingClientRect();
18
- S({
19
- left: e.left,
15
+ const f = R(null), C = R(null), [A, E] = L(""), [S, B] = L({ left: 0, top: 0 }), [w, o] = L(-1), y = k(() => {
16
+ if (!r) return;
17
+ const e = r.getBoundingClientRect(), t = r.ownerDocument, s = t.defaultView;
18
+ if (!s) return;
19
+ const i = f.current?.getBoundingClientRect().width ?? 0, x = s.getComputedStyle(r).direction === "rtl" ? e.right - i : e.left, v = Math.max(8, t.documentElement.clientWidth - i - 8);
20
+ B({
21
+ left: Math.min(Math.max(8, x), v),
20
22
  top: e.bottom + 8
21
23
  });
22
- }, [n]);
23
- I(() => {
24
- if (!l) {
25
- E(""), c(-1);
24
+ }, [r]);
25
+ V(() => {
26
+ if (!m) {
27
+ E(""), o(-1);
26
28
  return;
27
29
  }
28
- x();
29
- const e = window.setTimeout(() => {
30
- L.current?.focus();
31
- }, 0), t = (z) => {
32
- const M = z.target;
33
- p.current && !p.current.contains(M) && n && !n.contains(M) && i();
34
- }, a = () => x();
35
- return window.addEventListener("mousedown", t), window.addEventListener("scroll", a, !0), window.addEventListener("resize", a), () => {
36
- window.clearTimeout(e), window.removeEventListener("mousedown", t), window.removeEventListener("scroll", a, !0), window.removeEventListener("resize", a);
30
+ const e = r?.ownerDocument.defaultView;
31
+ if (!e) return;
32
+ y();
33
+ const t = e.setTimeout(() => {
34
+ C.current?.focus();
35
+ }, 0), s = (x) => {
36
+ const v = x.target;
37
+ f.current && !f.current.contains(v) && r && !r.contains(v) && l();
38
+ }, i = () => y();
39
+ return e.addEventListener("mousedown", s), e.addEventListener("scroll", i, !0), e.addEventListener("resize", i), () => {
40
+ e.clearTimeout(t), e.removeEventListener("mousedown", s), e.removeEventListener("scroll", i, !0), e.removeEventListener("resize", i);
37
41
  };
38
- }, [l, n, i, x]);
39
- const d = k.trim().toLowerCase(), h = v(
42
+ }, [m, r, l, y]);
43
+ const p = A.trim().toLowerCase(), g = k(
40
44
  (e) => {
41
- if (!d) return !0;
42
- const t = e.name.toLowerCase().includes(d), a = e.label ? e.label.toLowerCase().includes(d) : !1;
43
- return t || a;
45
+ if (!p) return !0;
46
+ const t = e.name.toLowerCase().includes(p), s = e.label ? e.label.toLowerCase().includes(p) : !1;
47
+ return t || s;
44
48
  },
45
- [d]
46
- ), o = f(
47
- () => N.filter(h),
48
- [N, h]
49
- ), m = f(
50
- () => j.filter(h),
51
- [j, h]
52
- ), r = f(
49
+ [p]
50
+ ), u = b(
51
+ () => $.filter(g),
52
+ [$, g]
53
+ ), d = b(
54
+ () => M.filter(g),
55
+ [M, g]
56
+ ), n = b(
53
57
  () => [
54
- ...o.map((e) => ({
58
+ ...u.map((e) => ({
55
59
  group: "system",
56
60
  variable: e
57
61
  })),
58
- ...m.map((e) => ({
62
+ ...d.map((e) => ({
59
63
  group: "custom",
60
64
  variable: e
61
65
  }))
62
66
  ],
63
- [o, m]
64
- ), $ = f(() => {
67
+ [u, d]
68
+ ), I = b(() => {
65
69
  const e = /* @__PURE__ */ new Map();
66
- return r.forEach((t, a) => {
67
- e.set(`${t.group}-${t.variable.name}`, a);
70
+ return n.forEach((t, s) => {
71
+ e.set(`${t.group}-${t.variable.name}`, s);
68
72
  }), e;
69
- }, [r]);
70
- I(() => {
71
- (!l || !r.length) && c(-1);
72
- }, [l, r.length]);
73
- const b = v(
73
+ }, [n]);
74
+ V(() => {
75
+ (!m || !n.length) && o(-1);
76
+ }, [m, n.length]);
77
+ const N = k(
74
78
  (e) => {
75
- y(e), i();
79
+ D(e), l();
76
80
  },
77
- [i, y]
78
- ), A = (e) => {
79
- if (!r.length) {
80
- e.key === "Escape" && i();
81
+ [l, D]
82
+ ), K = (e) => {
83
+ if (!n.length) {
84
+ e.key === "Escape" && l();
81
85
  return;
82
86
  }
83
87
  if (e.key === "ArrowDown")
84
- e.preventDefault(), c((t) => (t + 1) % r.length);
88
+ e.preventDefault(), o((t) => (t + 1) % n.length);
85
89
  else if (e.key === "ArrowUp")
86
- e.preventDefault(), c(
87
- (t) => t <= 0 ? r.length - 1 : t - 1
90
+ e.preventDefault(), o(
91
+ (t) => t <= 0 ? n.length - 1 : t - 1
88
92
  );
89
93
  else if (e.key === "Enter") {
90
94
  e.preventDefault();
91
- const t = r[w];
92
- t && b(t.variable);
93
- } else e.key === "Escape" && (e.preventDefault(), i());
95
+ const t = n[w];
96
+ t && N(t.variable);
97
+ } else e.key === "Escape" && (e.preventDefault(), l());
94
98
  };
95
- return l ? /* @__PURE__ */ s.jsxs(
99
+ return m ? /* @__PURE__ */ c(
96
100
  "div",
97
101
  {
98
- ref: p,
102
+ ref: f,
99
103
  className: "markdown-flow-editor-variable-search",
100
104
  style: {
101
105
  position: "fixed",
102
- left: `${D.left}px`,
103
- top: `${D.top}px`
106
+ left: `${S.left}px`,
107
+ top: `${S.top}px`
104
108
  },
105
109
  children: [
106
- /* @__PURE__ */ s.jsxs("div", { className: "relative", children: [
107
- /* @__PURE__ */ s.jsx(P, { className: "variable-search-icon" }),
108
- /* @__PURE__ */ s.jsx(
109
- K,
110
+ /* @__PURE__ */ c("div", { className: "relative", children: [
111
+ /* @__PURE__ */ a(T, { className: "variable-search-icon" }),
112
+ /* @__PURE__ */ a(
113
+ P,
110
114
  {
111
- ref: L,
112
- value: k,
113
- placeholder: u.searchPlaceholder,
115
+ ref: C,
116
+ value: A,
117
+ placeholder: h.searchPlaceholder,
114
118
  onChange: (e) => E(e.target.value),
115
- onKeyDown: A,
119
+ onKeyDown: K,
116
120
  className: "variable-search-input"
117
121
  }
118
122
  )
119
123
  ] }),
120
- /* @__PURE__ */ s.jsxs("div", { className: "variable-search-list", children: [
121
- o.length > 0 && /* @__PURE__ */ s.jsxs("div", { className: "variable-search-section", children: [
122
- /* @__PURE__ */ s.jsx("p", { className: "variable-search-section-title", children: u.systemLabel }),
123
- o.map((e) => {
124
- const t = $.get(`system-${e.name}`) ?? -1, a = w === t;
125
- return /* @__PURE__ */ s.jsxs(
124
+ /* @__PURE__ */ c("div", { className: "variable-search-list", children: [
125
+ u.length > 0 && /* @__PURE__ */ c("div", { className: "variable-search-section", children: [
126
+ /* @__PURE__ */ a("p", { className: "variable-search-section-title", children: h.systemLabel }),
127
+ u.map((e) => {
128
+ const t = I.get(`system-${e.name}`) ?? -1;
129
+ return /* @__PURE__ */ c(
126
130
  "button",
127
131
  {
128
132
  type: "button",
129
- onClick: () => b(e),
133
+ onClick: () => N(e),
130
134
  onMouseEnter: () => {
131
- t >= 0 && c(t);
135
+ t >= 0 && o(t);
132
136
  },
133
- className: R(
137
+ className: z(
134
138
  "variable-search-item",
135
- a && "variable-search-item-active"
139
+ w === t && "variable-search-item-active"
136
140
  ),
137
141
  children: [
138
- /* @__PURE__ */ s.jsx("span", { className: "variable-search-item-name", children: e.name }),
139
- e.label && /* @__PURE__ */ s.jsx("span", { className: "variable-search-item-label", children: e.label })
142
+ /* @__PURE__ */ a("span", { className: "variable-search-item-name", children: e.name }),
143
+ e.label && /* @__PURE__ */ a("span", { className: "variable-search-item-label", children: e.label })
140
144
  ]
141
145
  },
142
146
  `system-${e.name}`
143
147
  );
144
148
  })
145
149
  ] }),
146
- m.length > 0 && /* @__PURE__ */ s.jsxs("div", { className: "variable-search-section", children: [
147
- /* @__PURE__ */ s.jsx("p", { className: "variable-search-section-title", children: u.customLabel }),
148
- m.map((e) => {
149
- const t = $.get(`custom-${e.name}`) ?? -1, a = w === t;
150
- return /* @__PURE__ */ s.jsxs(
150
+ d.length > 0 && /* @__PURE__ */ c("div", { className: "variable-search-section", children: [
151
+ /* @__PURE__ */ a("p", { className: "variable-search-section-title", children: h.customLabel }),
152
+ d.map((e) => {
153
+ const t = I.get(`custom-${e.name}`) ?? -1;
154
+ return /* @__PURE__ */ c(
151
155
  "button",
152
156
  {
153
157
  type: "button",
154
- onClick: () => b(e),
158
+ onClick: () => N(e),
155
159
  onMouseEnter: () => {
156
- t >= 0 && c(t);
160
+ t >= 0 && o(t);
157
161
  },
158
- className: R(
162
+ className: z(
159
163
  "variable-search-item",
160
- a && "variable-search-item-active"
164
+ w === t && "variable-search-item-active"
161
165
  ),
162
166
  children: [
163
- /* @__PURE__ */ s.jsx("span", { className: "variable-search-item-name", children: e.name }),
164
- e.label && /* @__PURE__ */ s.jsx("span", { className: "variable-search-item-label", children: e.label })
167
+ /* @__PURE__ */ a("span", { className: "variable-search-item-name", children: e.name }),
168
+ e.label && /* @__PURE__ */ a("span", { className: "variable-search-item-label", children: e.label })
165
169
  ]
166
170
  },
167
171
  `custom-${e.name}`
168
172
  );
169
173
  })
170
174
  ] }),
171
- o.length === 0 && m.length === 0 && /* @__PURE__ */ s.jsx("div", { className: "variable-search-empty", children: u.emptyLabel })
175
+ u.length === 0 && d.length === 0 && /* @__PURE__ */ a("div", { className: "variable-search-empty", children: h.emptyLabel })
172
176
  ] })
173
177
  ]
174
178
  }
175
179
  ) : null;
176
180
  };
177
181
  export {
178
- H as default
182
+ W as default
179
183
  };
180
184
  //# sourceMappingURL=VariableSearchDropdown.es.js.map