markdown-flow-ui 0.3.2-dev.1 → 0.3.2

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 (313) hide show
  1. package/README.md +0 -13
  2. package/dist/_virtual/index.es6.js +3 -5
  3. package/dist/_virtual/index.es6.js.map +1 -1
  4. package/dist/_virtual/index.es7.js +5 -3
  5. package/dist/_virtual/index.es7.js.map +1 -1
  6. package/dist/_virtual/index.es8.js +2 -2
  7. package/dist/_virtual/index.es9.js +2 -2
  8. package/dist/_virtual/index6.cjs +1 -1
  9. package/dist/_virtual/index7.cjs +1 -1
  10. package/dist/_virtual/index8.cjs +1 -1
  11. package/dist/_virtual/index9.cjs +1 -1
  12. package/dist/assets/markdown-flow-ui.css +1 -1
  13. package/dist/components/ContentRender/IframeSandbox.cjs.map +1 -1
  14. package/dist/components/ContentRender/IframeSandbox.es.js.map +1 -1
  15. package/dist/components/ContentRender/utils/video-markdown-run.cjs.map +1 -1
  16. package/dist/components/ContentRender/utils/video-markdown-run.es.js.map +1 -1
  17. package/dist/components/MarkdownFlow/ScrollToBottomButton.cjs.map +1 -1
  18. package/dist/components/MarkdownFlow/ScrollToBottomButton.es.js.map +1 -1
  19. package/dist/components/MarkdownFlow/ScrollToBottomControl.cjs.map +1 -1
  20. package/dist/components/MarkdownFlow/ScrollToBottomControl.es.js.map +1 -1
  21. package/dist/components/MarkdownFlow/useScrollToBottom.cjs.map +1 -1
  22. package/dist/components/MarkdownFlow/useScrollToBottom.es.js.map +1 -1
  23. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs +1 -1
  24. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs.map +1 -1
  25. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.d.ts +2 -2
  26. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js +323 -558
  27. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js.map +1 -1
  28. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.cjs +1 -1
  29. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.cjs.map +1 -1
  30. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.d.ts +0 -8
  31. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.es.js +64 -107
  32. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.es.js.map +1 -1
  33. package/dist/components/MarkdownFlowEditor/editor-context.cjs +1 -1
  34. package/dist/components/MarkdownFlowEditor/editor-context.cjs.map +1 -1
  35. package/dist/components/MarkdownFlowEditor/editor-context.es.js +4 -10
  36. package/dist/components/MarkdownFlowEditor/editor-context.es.js.map +1 -1
  37. package/dist/components/MarkdownFlowEditor/editorI18n.d.ts +0 -308
  38. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.cjs +1 -1
  39. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.d.ts +1 -15
  40. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.es.js +87 -115
  41. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.es.js.map +1 -1
  42. package/dist/components/MarkdownFlowEditor/locales/de-DE.json.cjs +1 -1
  43. package/dist/components/MarkdownFlowEditor/locales/de-DE.json.d.ts +1 -15
  44. package/dist/components/MarkdownFlowEditor/locales/de-DE.json.es.js +88 -116
  45. package/dist/components/MarkdownFlowEditor/locales/de-DE.json.es.js.map +1 -1
  46. package/dist/components/MarkdownFlowEditor/locales/en-US.json.cjs +1 -1
  47. package/dist/components/MarkdownFlowEditor/locales/en-US.json.d.ts +1 -15
  48. package/dist/components/MarkdownFlowEditor/locales/en-US.json.es.js +88 -116
  49. package/dist/components/MarkdownFlowEditor/locales/en-US.json.es.js.map +1 -1
  50. package/dist/components/MarkdownFlowEditor/locales/es-ES.json.cjs +1 -1
  51. package/dist/components/MarkdownFlowEditor/locales/es-ES.json.d.ts +1 -15
  52. package/dist/components/MarkdownFlowEditor/locales/es-ES.json.es.js +80 -108
  53. package/dist/components/MarkdownFlowEditor/locales/es-ES.json.es.js.map +1 -1
  54. package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.cjs +1 -1
  55. package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.d.ts +1 -15
  56. package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.es.js +82 -110
  57. package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.es.js.map +1 -1
  58. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.cjs +1 -1
  59. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.d.ts +1 -15
  60. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.es.js +86 -114
  61. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.es.js.map +1 -1
  62. package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.cjs +1 -1
  63. package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.d.ts +1 -15
  64. package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.es.js +88 -116
  65. package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.es.js.map +1 -1
  66. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.cjs +1 -1
  67. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.d.ts +1 -15
  68. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.es.js +85 -113
  69. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.es.js.map +1 -1
  70. package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.cjs +1 -1
  71. package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.d.ts +1 -15
  72. package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.es.js +94 -122
  73. package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.es.js.map +1 -1
  74. package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.cjs +1 -1
  75. package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.d.ts +1 -15
  76. package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.es.js +74 -102
  77. package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.es.js.map +1 -1
  78. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.cjs +1 -1
  79. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.d.ts +1 -15
  80. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.es.js +72 -100
  81. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.es.js.map +1 -1
  82. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.cjs +1 -1
  83. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.cjs.map +1 -1
  84. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.d.ts +2 -1
  85. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js +62 -53
  86. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js.map +1 -1
  87. package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.cjs.map +1 -1
  88. package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.d.ts +1 -1
  89. package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.es.js.map +1 -1
  90. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.cjs +3 -3
  91. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.cjs.map +1 -1
  92. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.d.ts +1 -5
  93. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.es.js +149 -154
  94. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.es.js.map +1 -1
  95. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.cjs +1 -1
  96. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.cjs.map +1 -1
  97. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.d.ts +2 -1
  98. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js +53 -42
  99. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js.map +1 -1
  100. package/dist/components/MarkdownFlowEditor/types.cjs +1 -1
  101. package/dist/components/MarkdownFlowEditor/types.cjs.map +1 -1
  102. package/dist/components/MarkdownFlowEditor/types.d.ts +1 -11
  103. package/dist/components/MarkdownFlowEditor/types.es.js +2 -2
  104. package/dist/components/MarkdownFlowEditor/types.es.js.map +1 -1
  105. package/dist/components/MarkdownFlowEditor/utils.cjs +1 -1
  106. package/dist/components/MarkdownFlowEditor/utils.cjs.map +1 -1
  107. package/dist/components/MarkdownFlowEditor/utils.d.ts +0 -10
  108. package/dist/components/MarkdownFlowEditor/utils.es.js +59 -73
  109. package/dist/components/MarkdownFlowEditor/utils.es.js.map +1 -1
  110. package/dist/components/Slide/MarkdownSlideScaling.cjs.map +1 -1
  111. package/dist/components/Slide/MarkdownSlideScaling.es.js.map +1 -1
  112. package/dist/components/Slide/MobilePlayerSettingsSheet.es.js +16 -16
  113. package/dist/components/Slide/Player.cjs.map +1 -1
  114. package/dist/components/Slide/Player.es.js.map +1 -1
  115. package/dist/components/Slide/Slide.cjs.map +1 -1
  116. package/dist/components/Slide/Slide.es.js.map +1 -1
  117. package/dist/components/Slide/SubtitleOverlay.cjs.map +1 -1
  118. package/dist/components/Slide/SubtitleOverlay.es.js.map +1 -1
  119. package/dist/components/Slide/slideI18n.cjs.map +1 -1
  120. package/dist/components/Slide/slideI18n.es.js.map +1 -1
  121. package/dist/components/Slide/useSlide.cjs.map +1 -1
  122. package/dist/components/Slide/useSlide.es.js.map +1 -1
  123. package/dist/components/Slide/utils/streamingNavigation.cjs.map +1 -1
  124. package/dist/components/Slide/utils/streamingNavigation.es.js.map +1 -1
  125. package/dist/components/ui/dialog.cjs +1 -1
  126. package/dist/components/ui/dialog.cjs.map +1 -1
  127. package/dist/components/ui/dialog.es.js +27 -27
  128. package/dist/components/ui/dialog.es.js.map +1 -1
  129. package/dist/lib/interaction-defaults.cjs.map +1 -1
  130. package/dist/lib/interaction-defaults.es.js.map +1 -1
  131. package/dist/markdown-flow-ui-lib.css +1 -1
  132. package/dist/markdown-flow-ui.css +1 -1
  133. package/dist/node_modules/@braintree/sanitize-url/dist/index.cjs +1 -1
  134. package/dist/node_modules/@braintree/sanitize-url/dist/index.es.js +1 -1
  135. package/dist/node_modules/@radix-ui/react-context/dist/index.cjs +1 -1
  136. package/dist/node_modules/@radix-ui/react-context/dist/index.cjs.map +1 -1
  137. package/dist/node_modules/@radix-ui/react-context/dist/index.es.js +34 -49
  138. package/dist/node_modules/@radix-ui/react-context/dist/index.es.js.map +1 -1
  139. package/dist/node_modules/@radix-ui/react-dialog/dist/index.cjs +1 -5
  140. package/dist/node_modules/@radix-ui/react-dialog/dist/index.cjs.map +1 -1
  141. package/dist/node_modules/@radix-ui/react-dialog/dist/index.es.js +206 -220
  142. package/dist/node_modules/@radix-ui/react-dialog/dist/index.es.js.map +1 -1
  143. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive/dist/index.cjs +2 -0
  144. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive/dist/index.cjs.map +1 -0
  145. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive/dist/index.es.js +50 -0
  146. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive/dist/index.es.js.map +1 -0
  147. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs/dist/index.cjs +2 -0
  148. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs/dist/index.cjs.map +1 -0
  149. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs/dist/index.es.js +34 -0
  150. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs/dist/index.es.js.map +1 -0
  151. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.cjs +2 -0
  152. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.cjs.map +1 -0
  153. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.es.js +82 -0
  154. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.es.js.map +1 -0
  155. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs +2 -0
  156. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs.map +1 -0
  157. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js +216 -0
  158. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js.map +1 -0
  159. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/dist/index.cjs +2 -0
  160. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/dist/index.cjs.map +1 -0
  161. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/dist/index.es.js +15 -0
  162. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/dist/index.es.js.map +1 -0
  163. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/dist/index.cjs +2 -0
  164. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/dist/index.cjs.map +1 -0
  165. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/dist/index.es.js +18 -0
  166. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/dist/index.es.js.map +1 -0
  167. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/dist/index.cjs +2 -0
  168. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/dist/index.cjs.map +1 -0
  169. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/dist/index.es.js +104 -0
  170. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/dist/index.es.js.map +1 -0
  171. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.cjs +2 -0
  172. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -0
  173. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.es.js +39 -0
  174. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.es.js.map +1 -0
  175. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs +2 -0
  176. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs.map +1 -0
  177. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js +13 -0
  178. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js.map +1 -0
  179. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs +2 -0
  180. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs.map +1 -0
  181. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.es.js +70 -0
  182. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.es.js.map +1 -0
  183. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-effect-event/dist/index.cjs +2 -0
  184. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-effect-event/dist/index.cjs.map +1 -0
  185. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-effect-event/dist/index.es.js +20 -0
  186. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-effect-event/dist/index.es.js.map +1 -0
  187. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect/dist/index.cjs +2 -0
  188. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect/dist/index.cjs.map +1 -0
  189. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect/dist/index.es.js +7 -0
  190. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect/dist/index.es.js.map +1 -0
  191. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.cjs +1 -1
  192. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.cjs.map +1 -1
  193. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.es.js +18 -9
  194. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.es.js.map +1 -1
  195. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs +1 -1
  196. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs.map +1 -1
  197. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.es.js +148 -100
  198. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.es.js.map +1 -1
  199. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-compose-refs/dist/index.cjs +2 -0
  200. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-compose-refs/dist/index.cjs.map +1 -0
  201. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-compose-refs/dist/index.es.js +34 -0
  202. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-compose-refs/dist/index.es.js.map +1 -0
  203. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.cjs +2 -0
  204. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -0
  205. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.es.js +39 -0
  206. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.es.js.map +1 -0
  207. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs +2 -0
  208. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs.map +1 -0
  209. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js +13 -0
  210. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js.map +1 -0
  211. package/dist/node_modules/@radix-ui/react-id/dist/index.cjs +1 -1
  212. package/dist/node_modules/@radix-ui/react-id/dist/index.cjs.map +1 -1
  213. package/dist/node_modules/@radix-ui/react-id/dist/index.es.js +8 -8
  214. package/dist/node_modules/@radix-ui/react-id/dist/index.es.js.map +1 -1
  215. package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs +1 -1
  216. package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -1
  217. package/dist/node_modules/@radix-ui/react-primitive/dist/index.es.js +1 -1
  218. package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.cjs +2 -0
  219. package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -0
  220. package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.es.js +50 -0
  221. package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -0
  222. package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs +1 -1
  223. package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -1
  224. package/dist/node_modules/@radix-ui/react-slot/dist/index.es.js +80 -41
  225. package/dist/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -1
  226. package/dist/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs/dist/index.cjs +2 -0
  227. package/dist/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs/dist/index.cjs.map +1 -0
  228. package/dist/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs/dist/index.es.js +34 -0
  229. package/dist/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs/dist/index.es.js.map +1 -0
  230. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.cjs +1 -1
  231. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.cjs.map +1 -1
  232. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.es.js +1 -1
  233. package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.cjs +2 -0
  234. package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -0
  235. package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.es.js +12 -0
  236. package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -0
  237. package/dist/node_modules/classnames/index.cjs +1 -1
  238. package/dist/node_modules/classnames/index.es.js +1 -1
  239. package/dist/node_modules/hast-util-to-jsx-runtime/lib/index.cjs +1 -1
  240. package/dist/node_modules/hast-util-to-jsx-runtime/lib/index.es.js +1 -1
  241. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/c4Diagram-5PPSVZJV.cjs +1 -1
  242. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/c4Diagram-5PPSVZJV.es.js +1 -1
  243. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-2GRJ4B5K.cjs +1 -1
  244. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-2GRJ4B5K.es.js +1 -1
  245. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-NSK5VX7P.cjs +1 -1
  246. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/chunk-NSK5VX7P.es.js +1 -1
  247. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-JCYQIIEL.cjs +1 -1
  248. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-JCYQIIEL.es.js +1 -1
  249. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-v2-OCEON4UE.cjs +1 -1
  250. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-v2-OCEON4UE.es.js +1 -1
  251. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/flowDiagram-UKHOOZJN.cjs +1 -1
  252. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/flowDiagram-UKHOOZJN.es.js +1 -1
  253. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/ganttDiagram-PKOTCBZU.cjs +1 -1
  254. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/ganttDiagram-PKOTCBZU.es.js +1 -1
  255. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/sequenceDiagram-SI44F4Z6.cjs +1 -1
  256. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/sequenceDiagram-SI44F4Z6.es.js +1 -1
  257. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-OKZ733FA.cjs +1 -1
  258. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-OKZ733FA.es.js +1 -1
  259. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-v2-UEYNNEHI.cjs +1 -1
  260. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-v2-UEYNNEHI.es.js +1 -1
  261. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/swimlanesDiagram-ULZ7WXOC.cjs +1 -1
  262. package/dist/node_modules/mermaid/dist/chunks/mermaid.core/swimlanesDiagram-ULZ7WXOC.es.js +1 -1
  263. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.cjs +2 -2
  264. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.cjs.map +1 -1
  265. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.es.js +75 -72
  266. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.es.js.map +1 -1
  267. package/package.json +10 -10
  268. package/dist/components/MarkdownFlowEditor/components/CustomPopover.cjs +0 -2
  269. package/dist/components/MarkdownFlowEditor/components/CustomPopover.cjs.map +0 -1
  270. package/dist/components/MarkdownFlowEditor/components/CustomPopover.d.ts +0 -17
  271. package/dist/components/MarkdownFlowEditor/components/CustomPopover.es.js +0 -46
  272. package/dist/components/MarkdownFlowEditor/components/CustomPopover.es.js.map +0 -1
  273. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.cjs +0 -2
  274. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.cjs.map +0 -1
  275. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.d.ts +0 -18
  276. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.es.js +0 -184
  277. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.es.js.map +0 -1
  278. package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs +0 -2
  279. package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs.map +0 -1
  280. package/dist/components/MarkdownFlowEditor/components/VariableSelect.d.ts +0 -11
  281. package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js +0 -172
  282. package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js.map +0 -1
  283. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.cjs +0 -2
  284. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.cjs.map +0 -1
  285. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.d.ts +0 -3
  286. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.es.js +0 -32
  287. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.es.js.map +0 -1
  288. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.cjs +0 -3
  289. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.cjs.map +0 -1
  290. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.d.ts +0 -9
  291. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.es.js +0 -53
  292. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.es.js.map +0 -1
  293. package/dist/components/ui/popover.cjs +0 -2
  294. package/dist/components/ui/popover.cjs.map +0 -1
  295. package/dist/components/ui/popover.es.js +0 -24
  296. package/dist/components/ui/popover.es.js.map +0 -1
  297. package/dist/node_modules/@radix-ui/react-popover/dist/index.cjs +0 -2
  298. package/dist/node_modules/@radix-ui/react-popover/dist/index.cjs.map +0 -1
  299. package/dist/node_modules/@radix-ui/react-popover/dist/index.es.js +0 -241
  300. package/dist/node_modules/@radix-ui/react-popover/dist/index.es.js.map +0 -1
  301. package/dist/node_modules/lucide-react/dist/esm/icons/braces.cjs +0 -7
  302. package/dist/node_modules/lucide-react/dist/esm/icons/braces.cjs.map +0 -1
  303. package/dist/node_modules/lucide-react/dist/esm/icons/braces.es.js +0 -25
  304. package/dist/node_modules/lucide-react/dist/esm/icons/braces.es.js.map +0 -1
  305. package/dist/node_modules/lucide-react/dist/esm/icons/plus.cjs +0 -7
  306. package/dist/node_modules/lucide-react/dist/esm/icons/plus.cjs.map +0 -1
  307. package/dist/node_modules/lucide-react/dist/esm/icons/plus.es.js +0 -16
  308. package/dist/node_modules/lucide-react/dist/esm/icons/plus.es.js.map +0 -1
  309. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs +0 -7
  310. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs.map +0 -1
  311. package/dist/node_modules/lucide-react/dist/esm/icons/search.es.js +0 -16
  312. package/dist/node_modules/lucide-react/dist/esm/icons/search.es.js.map +0 -1
  313. /package/dist/components/MarkdownFlowEditor/plugins/{VariablePlaceholder.test.d.ts → MediaPlaceholder.variables.test.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"interaction-defaults.cjs","sources":["../../src/lib/interaction-defaults.ts"],"sourcesContent":["import {\n createInteractionParser,\n trimVariablePadding,\n INTERACTION_CONTENT_SOURCE,\n} from \"remark-flow\";\nimport type { Node } from \"unist\";\nimport { getMarkdownSourceAnalysis } from \"../components/ContentRender/utils/inline-code-ranges\";\n\nexport interface InteractionParseResult {\n buttonTexts?: string[];\n buttonValues?: string[];\n placeholder?: string;\n variableName?: string;\n isMultiSelect?: boolean;\n}\n\nexport interface InteractionDefaultValues {\n buttonText?: string;\n inputText?: string;\n selectedValues?: string[];\n}\n\nexport interface InteractionDefaultResolverParams {\n content?: string | null;\n rawValue?: string | null;\n interactionInfo?: InteractionParseResult | null;\n}\n\nexport type InteractionDefaultResolver = (\n params: InteractionDefaultResolverParams\n) => InteractionDefaultValues | null | undefined;\n\nexport interface InteractionDefaultValueOptions {\n resolveDefaultValues?: InteractionDefaultResolver;\n}\n\ninterface StructuredInteractionPayload {\n buttonText?: unknown;\n inputText?: unknown;\n selectedValues?: unknown;\n}\n\nconst interactionParser = createInteractionParser();\nconst INTERACTION_TAG_PATTERN = /<custom-variable\\b/i;\n// Same definition of where an interaction ends as the parser uses, so an option carrying a\n// `\\]` is read whole instead of being cut at its first bracket. A variable assignment is optional.\nconst INTERACTION_SHORTCODE_PATTERN = new RegExp(\n `\\\\?\\\\[(${INTERACTION_CONTENT_SOURCE})\\\\](?!\\\\()`\n);\nconst JSON_LIKE_VALUE_PATTERN = /^[\\[{]/;\n\ninterface InteractionOptionCandidate {\n token: string;\n value: string;\n}\n\nconst findInteractionSource = (\n node: Node & { value?: unknown; children?: readonly Node[] }\n): string | null => {\n if (node.type === \"flowInteraction\" && \"value\" in node)\n return typeof node.value === \"string\" ? node.value : null;\n if (node.children) {\n for (const child of node.children) {\n const source = findInteractionSource(child);\n if (source !== null) return source;\n }\n }\n return null;\n};\n\nconst parseInteractionBlock = (\n content?: string | null\n): InteractionParseResult | null => {\n if (!content) {\n return null;\n }\n\n try {\n // Read a grammar-owned interaction, so a syntax example cannot supply its key\n // or swallow a later real control. Keep the existing serialized-tag path.\n const source =\n findInteractionSource(getMarkdownSourceAnalysis(content).tree) ??\n (INTERACTION_TAG_PATTERN.test(content) ? content : null);\n if (source === null) return null;\n // The compatibility formatter turns invalid source into a text-input placeholder.\n // Defaults must retain plain replay behavior instead of inventing an interaction.\n if (interactionParser.parse(source).error) return null;\n return interactionParser.parseToRemarkFormat(\n source\n ) as InteractionParseResult;\n } catch (error) {\n console.warn(\"Failed to parse interaction block\", error);\n }\n\n return null;\n};\n\nconst normalizeButtonValue = (\n token: string,\n info: InteractionParseResult\n): { value: string; display?: string } | null => {\n if (!token) {\n return null;\n }\n\n const cleaned = trimVariablePadding(token);\n const buttonValues = info.buttonValues || [];\n const buttonTexts = info.buttonTexts || [];\n const valueIndex = buttonValues.indexOf(cleaned);\n\n if (valueIndex > -1) {\n return {\n value: buttonValues[valueIndex],\n display: buttonTexts[valueIndex],\n };\n }\n\n const textIndex = buttonTexts.indexOf(cleaned);\n\n if (textIndex > -1) {\n return {\n value: buttonValues[textIndex] || buttonTexts[textIndex],\n display: buttonTexts[textIndex],\n };\n }\n\n return null;\n};\n\nconst splitPresetValues = (raw: string) => {\n return raw\n .split(/[,,\\n]/)\n .map((item) => trimVariablePadding(item))\n .filter(Boolean);\n};\n\nconst trimLeadingInteractionSeparators = (raw: string) => {\n let index = 0;\n while (\n index < raw.length &&\n (raw[index] === \",\" ||\n raw[index] === \",\" ||\n trimVariablePadding(raw[index]) === \"\")\n )\n index += 1;\n return raw.slice(index);\n};\n\nconst buildInteractionOptionCandidates = (\n info: InteractionParseResult\n): InteractionOptionCandidate[] => {\n const buttonValues = info.buttonValues || [];\n const buttonTexts = info.buttonTexts || [];\n const candidates: InteractionOptionCandidate[] = [];\n const seenCandidates = new Set<string>();\n\n buttonValues.forEach((buttonValue, index) => {\n const normalizedValue = trimVariablePadding(`${buttonValue ?? \"\"}`);\n const normalizedText = trimVariablePadding(`${buttonTexts[index] ?? \"\"}`);\n\n [normalizedValue, normalizedText].forEach((token) => {\n if (!token) {\n return;\n }\n\n const candidateKey = `${token}::${normalizedValue || token}`;\n if (seenCandidates.has(candidateKey)) {\n return;\n }\n\n seenCandidates.add(candidateKey);\n candidates.push({\n token,\n value: normalizedValue || token,\n });\n });\n });\n\n return candidates.sort(\n (left, right) => right.token.length - left.token.length\n );\n};\n\nconst matchInteractionOptionPrefix = (\n raw: string,\n info: InteractionParseResult\n): InteractionOptionCandidate | null => {\n const normalizedRaw = trimLeadingInteractionSeparators(raw);\n const candidates = buildInteractionOptionCandidates(info);\n\n for (const candidate of candidates) {\n if (!normalizedRaw.startsWith(candidate.token)) {\n continue;\n }\n\n const trailingChar = normalizedRaw[candidate.token.length];\n if (\n trailingChar &&\n trailingChar !== \",\" &&\n trailingChar !== \",\" &&\n trimVariablePadding(trailingChar) !== \"\"\n ) {\n continue;\n }\n\n return candidate;\n }\n\n return null;\n};\n\nconst resolveMultiSelectFallbackDefaults = (\n raw: string,\n info: InteractionParseResult\n): InteractionDefaultValues => {\n const tokens = splitPresetValues(raw);\n\n if (!tokens.length) {\n return {};\n }\n\n const selectedValues: string[] = [];\n const customInputs: string[] = [];\n\n tokens.forEach((token) => {\n const mapped = normalizeButtonValue(token, info);\n\n if (mapped) {\n selectedValues.push(mapped.value);\n return;\n }\n\n if (info.placeholder) {\n customInputs.push(token);\n return;\n }\n\n selectedValues.push(token);\n });\n\n return {\n selectedValues: selectedValues.length ? selectedValues : undefined,\n inputText: customInputs.length ? customInputs.join(\", \") : undefined,\n };\n};\n\nconst resolveMultiSelectInteractionDefaults = (\n raw: string,\n info: InteractionParseResult\n): InteractionDefaultValues => {\n const selectedValues: string[] = [];\n let remainingRaw = trimVariablePadding(raw);\n\n // Prefer option-aware prefix matching before delimiter splitting so\n // option labels that contain commas can still round-trip correctly.\n while (remainingRaw) {\n const matchedCandidate = matchInteractionOptionPrefix(remainingRaw, info);\n\n if (!matchedCandidate) {\n break;\n }\n\n selectedValues.push(matchedCandidate.value);\n const normalizedRemainingRaw =\n trimLeadingInteractionSeparators(remainingRaw);\n remainingRaw = trimLeadingInteractionSeparators(\n normalizedRemainingRaw.slice(matchedCandidate.token.length)\n );\n }\n\n if (selectedValues.length > 0) {\n return {\n selectedValues,\n inputText:\n info.placeholder && remainingRaw.trim()\n ? remainingRaw.trim()\n : undefined,\n };\n }\n\n const fallbackDefaults = resolveMultiSelectFallbackDefaults(raw, info);\n\n if (fallbackDefaults.selectedValues?.length) {\n return fallbackDefaults;\n }\n\n if (info.placeholder) {\n return {\n inputText: raw.trim(),\n };\n }\n\n return fallbackDefaults;\n};\n\nconst normalizeStructuredInteractionDefaults = (\n payload?: StructuredInteractionPayload | null\n): InteractionDefaultValues | null => {\n if (!payload || Array.isArray(payload)) {\n return null;\n }\n\n const selectedValues = Array.isArray(payload.selectedValues)\n ? payload.selectedValues\n .map((item) => trimVariablePadding(`${item ?? \"\"}`))\n .filter(Boolean)\n : undefined;\n const buttonText = trimVariablePadding(`${payload.buttonText ?? \"\"}`);\n const inputText =\n typeof payload.inputText === \"string\" ? payload.inputText : undefined;\n\n if (!selectedValues?.length && !buttonText && !inputText) {\n return null;\n }\n\n return {\n buttonText: buttonText || undefined,\n inputText,\n selectedValues: selectedValues?.length ? selectedValues : undefined,\n };\n};\n\nconst parseStructuredInteractionDefaults = (rawValue?: string | null) => {\n if (!rawValue) {\n return null;\n }\n\n if (!JSON_LIKE_VALUE_PATTERN.test(trimVariablePadding(rawValue))) {\n return null;\n }\n\n try {\n const parsed = JSON.parse(rawValue) as StructuredInteractionPayload;\n return normalizeStructuredInteractionDefaults(parsed);\n } catch {\n return null;\n }\n};\n\nconst hasPotentialInteractionBlock = (content?: string | null) =>\n Boolean(\n content &&\n (INTERACTION_TAG_PATTERN.test(content) ||\n INTERACTION_SHORTCODE_PATTERN.test(content))\n );\n\nconst resolveCustomInteractionDefaults = (\n content?: string | null,\n rawValue?: string | null,\n interactionInfo?: InteractionParseResult | null,\n options?: InteractionDefaultValueOptions\n) => {\n return (\n options?.resolveDefaultValues?.({\n content,\n rawValue,\n interactionInfo,\n }) ?? null\n );\n};\n\nexport const getInteractionDefaultValues = (\n content?: string | null,\n rawValue?: string | null,\n options?: InteractionDefaultValueOptions\n): InteractionDefaultValues => {\n const normalized =\n rawValue === null || rawValue === undefined\n ? undefined\n : trimVariablePadding(rawValue.toString());\n\n if (!normalized) {\n return {};\n }\n\n const structuredDefaults = parseStructuredInteractionDefaults(normalized);\n\n if (structuredDefaults) {\n return structuredDefaults;\n }\n\n const customDefaults = resolveCustomInteractionDefaults(\n content,\n normalized,\n null,\n options\n );\n\n if (customDefaults) {\n return customDefaults;\n }\n\n if (!hasPotentialInteractionBlock(content)) {\n return {\n buttonText: normalized,\n inputText: normalized,\n };\n }\n\n const interactionInfo = parseInteractionBlock(content);\n const customDefaultsWithInteraction = resolveCustomInteractionDefaults(\n content,\n normalized,\n interactionInfo,\n options\n );\n\n if (customDefaultsWithInteraction) {\n return customDefaultsWithInteraction;\n }\n\n if (!interactionInfo) {\n return {\n buttonText: normalized,\n inputText: normalized,\n };\n }\n\n if (interactionInfo.isMultiSelect) {\n return resolveMultiSelectInteractionDefaults(normalized, interactionInfo);\n }\n\n const mapped = normalizeButtonValue(normalized, interactionInfo);\n\n if (mapped) {\n return {\n buttonText: mapped.value || mapped.display || normalized,\n };\n }\n\n if (interactionInfo.placeholder) {\n return {\n inputText: normalized,\n };\n }\n\n return {\n buttonText: normalized,\n inputText: normalized,\n };\n};\n\nexport const getInteractionDefaultSelectedValues = (\n content?: string | null,\n rawValue?: string | null,\n options?: InteractionDefaultValueOptions\n) => {\n const defaults = getInteractionDefaultValues(content, rawValue, options);\n\n if (defaults.selectedValues) {\n return defaults.selectedValues;\n }\n\n return rawValue\n ? rawValue\n .split(\",\")\n .map((value) => trimVariablePadding(value))\n .filter(Boolean)\n : undefined;\n};\n"],"names":["interactionParser","createInteractionParser","INTERACTION_TAG_PATTERN","INTERACTION_SHORTCODE_PATTERN","INTERACTION_CONTENT_SOURCE","JSON_LIKE_VALUE_PATTERN","findInteractionSource","node","child","source","parseInteractionBlock","content","getMarkdownSourceAnalysis","error","normalizeButtonValue","token","info","cleaned","trimVariablePadding","buttonValues","buttonTexts","valueIndex","textIndex","splitPresetValues","raw","item","trimLeadingInteractionSeparators","index","buildInteractionOptionCandidates","candidates","seenCandidates","buttonValue","normalizedValue","normalizedText","candidateKey","left","right","matchInteractionOptionPrefix","normalizedRaw","candidate","trailingChar","resolveMultiSelectFallbackDefaults","tokens","selectedValues","customInputs","mapped","resolveMultiSelectInteractionDefaults","remainingRaw","matchedCandidate","normalizedRemainingRaw","fallbackDefaults","normalizeStructuredInteractionDefaults","payload","buttonText","inputText","parseStructuredInteractionDefaults","rawValue","parsed","hasPotentialInteractionBlock","resolveCustomInteractionDefaults","interactionInfo","options","getInteractionDefaultValues","normalized","structuredDefaults","customDefaults","customDefaultsWithInteraction","getInteractionDefaultSelectedValues","defaults","value"],"mappings":"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"}
1
+ {"version":3,"file":"interaction-defaults.cjs","sources":["../../src/lib/interaction-defaults.ts"],"sourcesContent":["import {\n createInteractionParser,\n trimVariablePadding,\n INTERACTION_CONTENT_SOURCE,\n} from \"remark-flow\";\nimport type { Node } from \"unist\";\nimport { getMarkdownSourceAnalysis } from \"../components/ContentRender/utils/inline-code-ranges\";\n\nexport interface InteractionParseResult {\n buttonTexts?: string[];\n buttonValues?: string[];\n placeholder?: string;\n variableName?: string;\n isMultiSelect?: boolean;\n}\n\nexport interface InteractionDefaultValues {\n buttonText?: string;\n inputText?: string;\n selectedValues?: string[];\n}\n\nexport interface InteractionDefaultResolverParams {\n content?: string | null;\n rawValue?: string | null;\n interactionInfo?: InteractionParseResult | null;\n}\n\nexport type InteractionDefaultResolver = (\n params: InteractionDefaultResolverParams\n) => InteractionDefaultValues | null | undefined;\n\nexport interface InteractionDefaultValueOptions {\n resolveDefaultValues?: InteractionDefaultResolver;\n}\n\ninterface StructuredInteractionPayload {\n buttonText?: unknown;\n inputText?: unknown;\n selectedValues?: unknown;\n}\n\nconst interactionParser = createInteractionParser();\nconst INTERACTION_TAG_PATTERN = /<custom-variable\\b/i;\n// Same definition of where an interaction ends as the parser uses, so an option carrying a\n// `\\]` is read whole instead of being cut at its first bracket. A variable assignment is optional.\nconst INTERACTION_SHORTCODE_PATTERN = new RegExp(\n `\\\\?\\\\[(${INTERACTION_CONTENT_SOURCE})\\\\](?!\\\\()`\n);\nconst JSON_LIKE_VALUE_PATTERN = /^[\\[{]/;\n\ninterface InteractionOptionCandidate {\n token: string;\n value: string;\n}\n\nconst findInteractionSource = (\n node: Node & { value?: unknown; children?: readonly Node[] }\n): string | null => {\n if (node.type === \"flowInteraction\" && \"value\" in node)\n return typeof node.value === \"string\" ? node.value : null;\n if (node.children) {\n for (const child of node.children) {\n const source = findInteractionSource(child);\n if (source !== null) return source;\n }\n }\n return null;\n};\n\nconst parseInteractionBlock = (\n content?: string | null\n): InteractionParseResult | null => {\n if (!content) {\n return null;\n }\n\n try {\n // Read a grammar-owned interaction, so a syntax example cannot supply its key\n // or swallow a later real control. Keep the existing serialized-tag path.\n const source =\n findInteractionSource(getMarkdownSourceAnalysis(content).tree) ??\n (INTERACTION_TAG_PATTERN.test(content) ? content : null);\n if (source === null) return null;\n // The compatibility formatter turns invalid source into a text-input placeholder.\n // Defaults must retain plain replay behavior instead of inventing an interaction.\n if (interactionParser.parse(source).error) return null;\n return interactionParser.parseToRemarkFormat(\n source\n ) as InteractionParseResult;\n } catch (error) {\n console.warn(\"Failed to parse interaction block\", error);\n }\n\n return null;\n};\n\nconst normalizeButtonValue = (\n token: string,\n info: InteractionParseResult\n): { value: string; display?: string } | null => {\n if (!token) {\n return null;\n }\n\n const cleaned = trimVariablePadding(token);\n const buttonValues = info.buttonValues || [];\n const buttonTexts = info.buttonTexts || [];\n const valueIndex = buttonValues.indexOf(cleaned);\n\n if (valueIndex > -1) {\n return {\n value: buttonValues[valueIndex],\n display: buttonTexts[valueIndex],\n };\n }\n\n const textIndex = buttonTexts.indexOf(cleaned);\n\n if (textIndex > -1) {\n return {\n value: buttonValues[textIndex] || buttonTexts[textIndex],\n display: buttonTexts[textIndex],\n };\n }\n\n return null;\n};\n\nconst splitPresetValues = (raw: string) => {\n return raw\n .split(/[,,\\n]/)\n .map((item) => trimVariablePadding(item))\n .filter(Boolean);\n};\n\nconst trimLeadingInteractionSeparators = (raw: string) => {\n let index = 0;\n while (\n index < raw.length &&\n (raw[index] === \",\" ||\n raw[index] === \",\" ||\n trimVariablePadding(raw[index]) === \"\")\n )\n index += 1;\n return raw.slice(index);\n};\n\nconst buildInteractionOptionCandidates = (\n info: InteractionParseResult\n): InteractionOptionCandidate[] => {\n const buttonValues = info.buttonValues || [];\n const buttonTexts = info.buttonTexts || [];\n const candidates: InteractionOptionCandidate[] = [];\n const seenCandidates = new Set<string>();\n\n buttonValues.forEach((buttonValue, index) => {\n const normalizedValue = trimVariablePadding(`${buttonValue ?? \"\"}`);\n const normalizedText = trimVariablePadding(`${buttonTexts[index] ?? \"\"}`);\n\n [normalizedValue, normalizedText].forEach((token) => {\n if (!token) {\n return;\n }\n\n const candidateKey = `${token}::${normalizedValue || token}`;\n if (seenCandidates.has(candidateKey)) {\n return;\n }\n\n seenCandidates.add(candidateKey);\n candidates.push({\n token,\n value: normalizedValue || token,\n });\n });\n });\n\n return candidates.sort(\n (left, right) => right.token.length - left.token.length\n );\n};\n\nconst matchInteractionOptionPrefix = (\n raw: string,\n info: InteractionParseResult\n): InteractionOptionCandidate | null => {\n const normalizedRaw = trimLeadingInteractionSeparators(raw);\n const candidates = buildInteractionOptionCandidates(info);\n\n for (const candidate of candidates) {\n if (!normalizedRaw.startsWith(candidate.token)) {\n continue;\n }\n\n const trailingChar = normalizedRaw[candidate.token.length];\n if (\n trailingChar &&\n trailingChar !== \",\" &&\n trailingChar !== \",\" &&\n trimVariablePadding(trailingChar) !== \"\"\n ) {\n continue;\n }\n\n return candidate;\n }\n\n return null;\n};\n\nconst resolveMultiSelectFallbackDefaults = (\n raw: string,\n info: InteractionParseResult\n): InteractionDefaultValues => {\n const tokens = splitPresetValues(raw);\n\n if (!tokens.length) {\n return {};\n }\n\n const selectedValues: string[] = [];\n const customInputs: string[] = [];\n\n tokens.forEach((token) => {\n const mapped = normalizeButtonValue(token, info);\n\n if (mapped) {\n selectedValues.push(mapped.value);\n return;\n }\n\n if (info.placeholder) {\n customInputs.push(token);\n return;\n }\n\n selectedValues.push(token);\n });\n\n return {\n selectedValues: selectedValues.length ? selectedValues : undefined,\n inputText: customInputs.length ? customInputs.join(\", \") : undefined,\n };\n};\n\nconst resolveMultiSelectInteractionDefaults = (\n raw: string,\n info: InteractionParseResult\n): InteractionDefaultValues => {\n const selectedValues: string[] = [];\n let remainingRaw = trimVariablePadding(raw);\n\n // Prefer option-aware prefix matching before delimiter splitting so\n // option labels that contain commas can still round-trip correctly.\n while (remainingRaw) {\n const matchedCandidate = matchInteractionOptionPrefix(remainingRaw, info);\n\n if (!matchedCandidate) {\n break;\n }\n\n selectedValues.push(matchedCandidate.value);\n const normalizedRemainingRaw =\n trimLeadingInteractionSeparators(remainingRaw);\n remainingRaw = trimLeadingInteractionSeparators(\n normalizedRemainingRaw.slice(matchedCandidate.token.length)\n );\n }\n\n if (selectedValues.length > 0) {\n return {\n selectedValues,\n inputText:\n info.placeholder && remainingRaw.trim()\n ? remainingRaw.trim()\n : undefined,\n };\n }\n\n const fallbackDefaults = resolveMultiSelectFallbackDefaults(raw, info);\n\n if (fallbackDefaults.selectedValues?.length) {\n return fallbackDefaults;\n }\n\n if (info.placeholder) {\n return {\n inputText: raw.trim(),\n };\n }\n\n return fallbackDefaults;\n};\n\nconst normalizeStructuredInteractionDefaults = (\n payload?: StructuredInteractionPayload | null\n): InteractionDefaultValues | null => {\n if (!payload || Array.isArray(payload)) {\n return null;\n }\n\n const selectedValues = Array.isArray(payload.selectedValues)\n ? payload.selectedValues\n .map((item) => trimVariablePadding(`${item ?? \"\"}`))\n .filter(Boolean)\n : undefined;\n const buttonText = trimVariablePadding(`${payload.buttonText ?? \"\"}`);\n const inputText =\n typeof payload.inputText === \"string\" ? payload.inputText : undefined;\n\n if (!selectedValues?.length && !buttonText && !inputText) {\n return null;\n }\n\n return {\n buttonText: buttonText || undefined,\n inputText,\n selectedValues: selectedValues?.length ? selectedValues : undefined,\n };\n};\n\nconst parseStructuredInteractionDefaults = (rawValue?: string | null) => {\n if (!rawValue) {\n return null;\n }\n\n if (!JSON_LIKE_VALUE_PATTERN.test(trimVariablePadding(rawValue))) {\n return null;\n }\n\n try {\n const parsed = JSON.parse(rawValue) as StructuredInteractionPayload;\n return normalizeStructuredInteractionDefaults(parsed);\n } catch {\n return null;\n }\n};\n\nconst hasPotentialInteractionBlock = (content?: string | null) =>\n Boolean(\n content &&\n (INTERACTION_TAG_PATTERN.test(content) ||\n INTERACTION_SHORTCODE_PATTERN.test(content))\n );\n\nconst resolveCustomInteractionDefaults = (\n content?: string | null,\n rawValue?: string | null,\n interactionInfo?: InteractionParseResult | null,\n options?: InteractionDefaultValueOptions\n) => {\n return (\n options?.resolveDefaultValues?.({\n content,\n rawValue,\n interactionInfo,\n }) ?? null\n );\n};\n\nexport const getInteractionDefaultValues = (\n content?: string | null,\n rawValue?: string | null,\n options?: InteractionDefaultValueOptions\n): InteractionDefaultValues => {\n const normalized =\n rawValue === null || rawValue === undefined\n ? undefined\n : trimVariablePadding(rawValue.toString());\n\n if (!normalized) {\n return {};\n }\n\n const structuredDefaults = parseStructuredInteractionDefaults(normalized);\n\n if (structuredDefaults) {\n return structuredDefaults;\n }\n\n const customDefaults = resolveCustomInteractionDefaults(\n content,\n normalized,\n null,\n options\n );\n\n if (customDefaults) {\n return customDefaults;\n }\n\n if (!hasPotentialInteractionBlock(content)) {\n return {\n buttonText: normalized,\n inputText: normalized,\n };\n }\n\n const interactionInfo = parseInteractionBlock(content);\n const customDefaultsWithInteraction = resolveCustomInteractionDefaults(\n content,\n normalized,\n interactionInfo,\n options\n );\n\n if (customDefaultsWithInteraction) {\n return customDefaultsWithInteraction;\n }\n\n if (!interactionInfo) {\n return {\n buttonText: normalized,\n inputText: normalized,\n };\n }\n\n if (interactionInfo.isMultiSelect) {\n return resolveMultiSelectInteractionDefaults(normalized, interactionInfo);\n }\n\n const mapped = normalizeButtonValue(normalized, interactionInfo);\n\n if (mapped) {\n return {\n buttonText: mapped.value || mapped.display || normalized,\n };\n }\n\n if (interactionInfo.placeholder) {\n return {\n inputText: normalized,\n };\n }\n\n return {\n buttonText: normalized,\n inputText: normalized,\n };\n};\n\nexport const getInteractionDefaultSelectedValues = (\n content?: string | null,\n rawValue?: string | null,\n options?: InteractionDefaultValueOptions\n) => {\n const defaults = getInteractionDefaultValues(content, rawValue, options);\n\n if (defaults.selectedValues) {\n return defaults.selectedValues;\n }\n\n return rawValue\n ? rawValue\n .split(\",\")\n .map((value) => trimVariablePadding(value))\n .filter(Boolean)\n : undefined;\n};\n"],"names":["interactionParser","createInteractionParser","INTERACTION_TAG_PATTERN","INTERACTION_SHORTCODE_PATTERN","INTERACTION_CONTENT_SOURCE","JSON_LIKE_VALUE_PATTERN","findInteractionSource","node","child","source","parseInteractionBlock","content","getMarkdownSourceAnalysis","error","normalizeButtonValue","token","info","cleaned","trimVariablePadding","buttonValues","buttonTexts","valueIndex","textIndex","splitPresetValues","raw","item","trimLeadingInteractionSeparators","index","buildInteractionOptionCandidates","candidates","seenCandidates","buttonValue","normalizedValue","normalizedText","candidateKey","left","right","matchInteractionOptionPrefix","normalizedRaw","candidate","trailingChar","resolveMultiSelectFallbackDefaults","tokens","selectedValues","customInputs","mapped","resolveMultiSelectInteractionDefaults","remainingRaw","matchedCandidate","normalizedRemainingRaw","fallbackDefaults","normalizeStructuredInteractionDefaults","payload","buttonText","inputText","parseStructuredInteractionDefaults","rawValue","parsed","hasPotentialInteractionBlock","resolveCustomInteractionDefaults","interactionInfo","options","getInteractionDefaultValues","normalized","structuredDefaults","customDefaults","customDefaultsWithInteraction","getInteractionDefaultSelectedValues","defaults","value"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"interaction-defaults.es.js","sources":["../../src/lib/interaction-defaults.ts"],"sourcesContent":["import {\n createInteractionParser,\n trimVariablePadding,\n INTERACTION_CONTENT_SOURCE,\n} from \"remark-flow\";\nimport type { Node } from \"unist\";\nimport { getMarkdownSourceAnalysis } from \"../components/ContentRender/utils/inline-code-ranges\";\n\nexport interface InteractionParseResult {\n buttonTexts?: string[];\n buttonValues?: string[];\n placeholder?: string;\n variableName?: string;\n isMultiSelect?: boolean;\n}\n\nexport interface InteractionDefaultValues {\n buttonText?: string;\n inputText?: string;\n selectedValues?: string[];\n}\n\nexport interface InteractionDefaultResolverParams {\n content?: string | null;\n rawValue?: string | null;\n interactionInfo?: InteractionParseResult | null;\n}\n\nexport type InteractionDefaultResolver = (\n params: InteractionDefaultResolverParams\n) => InteractionDefaultValues | null | undefined;\n\nexport interface InteractionDefaultValueOptions {\n resolveDefaultValues?: InteractionDefaultResolver;\n}\n\ninterface StructuredInteractionPayload {\n buttonText?: unknown;\n inputText?: unknown;\n selectedValues?: unknown;\n}\n\nconst interactionParser = createInteractionParser();\nconst INTERACTION_TAG_PATTERN = /<custom-variable\\b/i;\n// Same definition of where an interaction ends as the parser uses, so an option carrying a\n// `\\]` is read whole instead of being cut at its first bracket. A variable assignment is optional.\nconst INTERACTION_SHORTCODE_PATTERN = new RegExp(\n `\\\\?\\\\[(${INTERACTION_CONTENT_SOURCE})\\\\](?!\\\\()`\n);\nconst JSON_LIKE_VALUE_PATTERN = /^[\\[{]/;\n\ninterface InteractionOptionCandidate {\n token: string;\n value: string;\n}\n\nconst findInteractionSource = (\n node: Node & { value?: unknown; children?: readonly Node[] }\n): string | null => {\n if (node.type === \"flowInteraction\" && \"value\" in node)\n return typeof node.value === \"string\" ? node.value : null;\n if (node.children) {\n for (const child of node.children) {\n const source = findInteractionSource(child);\n if (source !== null) return source;\n }\n }\n return null;\n};\n\nconst parseInteractionBlock = (\n content?: string | null\n): InteractionParseResult | null => {\n if (!content) {\n return null;\n }\n\n try {\n // Read a grammar-owned interaction, so a syntax example cannot supply its key\n // or swallow a later real control. Keep the existing serialized-tag path.\n const source =\n findInteractionSource(getMarkdownSourceAnalysis(content).tree) ??\n (INTERACTION_TAG_PATTERN.test(content) ? content : null);\n if (source === null) return null;\n // The compatibility formatter turns invalid source into a text-input placeholder.\n // Defaults must retain plain replay behavior instead of inventing an interaction.\n if (interactionParser.parse(source).error) return null;\n return interactionParser.parseToRemarkFormat(\n source\n ) as InteractionParseResult;\n } catch (error) {\n console.warn(\"Failed to parse interaction block\", error);\n }\n\n return null;\n};\n\nconst normalizeButtonValue = (\n token: string,\n info: InteractionParseResult\n): { value: string; display?: string } | null => {\n if (!token) {\n return null;\n }\n\n const cleaned = trimVariablePadding(token);\n const buttonValues = info.buttonValues || [];\n const buttonTexts = info.buttonTexts || [];\n const valueIndex = buttonValues.indexOf(cleaned);\n\n if (valueIndex > -1) {\n return {\n value: buttonValues[valueIndex],\n display: buttonTexts[valueIndex],\n };\n }\n\n const textIndex = buttonTexts.indexOf(cleaned);\n\n if (textIndex > -1) {\n return {\n value: buttonValues[textIndex] || buttonTexts[textIndex],\n display: buttonTexts[textIndex],\n };\n }\n\n return null;\n};\n\nconst splitPresetValues = (raw: string) => {\n return raw\n .split(/[,,\\n]/)\n .map((item) => trimVariablePadding(item))\n .filter(Boolean);\n};\n\nconst trimLeadingInteractionSeparators = (raw: string) => {\n let index = 0;\n while (\n index < raw.length &&\n (raw[index] === \",\" ||\n raw[index] === \",\" ||\n trimVariablePadding(raw[index]) === \"\")\n )\n index += 1;\n return raw.slice(index);\n};\n\nconst buildInteractionOptionCandidates = (\n info: InteractionParseResult\n): InteractionOptionCandidate[] => {\n const buttonValues = info.buttonValues || [];\n const buttonTexts = info.buttonTexts || [];\n const candidates: InteractionOptionCandidate[] = [];\n const seenCandidates = new Set<string>();\n\n buttonValues.forEach((buttonValue, index) => {\n const normalizedValue = trimVariablePadding(`${buttonValue ?? \"\"}`);\n const normalizedText = trimVariablePadding(`${buttonTexts[index] ?? \"\"}`);\n\n [normalizedValue, normalizedText].forEach((token) => {\n if (!token) {\n return;\n }\n\n const candidateKey = `${token}::${normalizedValue || token}`;\n if (seenCandidates.has(candidateKey)) {\n return;\n }\n\n seenCandidates.add(candidateKey);\n candidates.push({\n token,\n value: normalizedValue || token,\n });\n });\n });\n\n return candidates.sort(\n (left, right) => right.token.length - left.token.length\n );\n};\n\nconst matchInteractionOptionPrefix = (\n raw: string,\n info: InteractionParseResult\n): InteractionOptionCandidate | null => {\n const normalizedRaw = trimLeadingInteractionSeparators(raw);\n const candidates = buildInteractionOptionCandidates(info);\n\n for (const candidate of candidates) {\n if (!normalizedRaw.startsWith(candidate.token)) {\n continue;\n }\n\n const trailingChar = normalizedRaw[candidate.token.length];\n if (\n trailingChar &&\n trailingChar !== \",\" &&\n trailingChar !== \",\" &&\n trimVariablePadding(trailingChar) !== \"\"\n ) {\n continue;\n }\n\n return candidate;\n }\n\n return null;\n};\n\nconst resolveMultiSelectFallbackDefaults = (\n raw: string,\n info: InteractionParseResult\n): InteractionDefaultValues => {\n const tokens = splitPresetValues(raw);\n\n if (!tokens.length) {\n return {};\n }\n\n const selectedValues: string[] = [];\n const customInputs: string[] = [];\n\n tokens.forEach((token) => {\n const mapped = normalizeButtonValue(token, info);\n\n if (mapped) {\n selectedValues.push(mapped.value);\n return;\n }\n\n if (info.placeholder) {\n customInputs.push(token);\n return;\n }\n\n selectedValues.push(token);\n });\n\n return {\n selectedValues: selectedValues.length ? selectedValues : undefined,\n inputText: customInputs.length ? customInputs.join(\", \") : undefined,\n };\n};\n\nconst resolveMultiSelectInteractionDefaults = (\n raw: string,\n info: InteractionParseResult\n): InteractionDefaultValues => {\n const selectedValues: string[] = [];\n let remainingRaw = trimVariablePadding(raw);\n\n // Prefer option-aware prefix matching before delimiter splitting so\n // option labels that contain commas can still round-trip correctly.\n while (remainingRaw) {\n const matchedCandidate = matchInteractionOptionPrefix(remainingRaw, info);\n\n if (!matchedCandidate) {\n break;\n }\n\n selectedValues.push(matchedCandidate.value);\n const normalizedRemainingRaw =\n trimLeadingInteractionSeparators(remainingRaw);\n remainingRaw = trimLeadingInteractionSeparators(\n normalizedRemainingRaw.slice(matchedCandidate.token.length)\n );\n }\n\n if (selectedValues.length > 0) {\n return {\n selectedValues,\n inputText:\n info.placeholder && remainingRaw.trim()\n ? remainingRaw.trim()\n : undefined,\n };\n }\n\n const fallbackDefaults = resolveMultiSelectFallbackDefaults(raw, info);\n\n if (fallbackDefaults.selectedValues?.length) {\n return fallbackDefaults;\n }\n\n if (info.placeholder) {\n return {\n inputText: raw.trim(),\n };\n }\n\n return fallbackDefaults;\n};\n\nconst normalizeStructuredInteractionDefaults = (\n payload?: StructuredInteractionPayload | null\n): InteractionDefaultValues | null => {\n if (!payload || Array.isArray(payload)) {\n return null;\n }\n\n const selectedValues = Array.isArray(payload.selectedValues)\n ? payload.selectedValues\n .map((item) => trimVariablePadding(`${item ?? \"\"}`))\n .filter(Boolean)\n : undefined;\n const buttonText = trimVariablePadding(`${payload.buttonText ?? \"\"}`);\n const inputText =\n typeof payload.inputText === \"string\" ? payload.inputText : undefined;\n\n if (!selectedValues?.length && !buttonText && !inputText) {\n return null;\n }\n\n return {\n buttonText: buttonText || undefined,\n inputText,\n selectedValues: selectedValues?.length ? selectedValues : undefined,\n };\n};\n\nconst parseStructuredInteractionDefaults = (rawValue?: string | null) => {\n if (!rawValue) {\n return null;\n }\n\n if (!JSON_LIKE_VALUE_PATTERN.test(trimVariablePadding(rawValue))) {\n return null;\n }\n\n try {\n const parsed = JSON.parse(rawValue) as StructuredInteractionPayload;\n return normalizeStructuredInteractionDefaults(parsed);\n } catch {\n return null;\n }\n};\n\nconst hasPotentialInteractionBlock = (content?: string | null) =>\n Boolean(\n content &&\n (INTERACTION_TAG_PATTERN.test(content) ||\n INTERACTION_SHORTCODE_PATTERN.test(content))\n );\n\nconst resolveCustomInteractionDefaults = (\n content?: string | null,\n rawValue?: string | null,\n interactionInfo?: InteractionParseResult | null,\n options?: InteractionDefaultValueOptions\n) => {\n return (\n options?.resolveDefaultValues?.({\n content,\n rawValue,\n interactionInfo,\n }) ?? null\n );\n};\n\nexport const getInteractionDefaultValues = (\n content?: string | null,\n rawValue?: string | null,\n options?: InteractionDefaultValueOptions\n): InteractionDefaultValues => {\n const normalized =\n rawValue === null || rawValue === undefined\n ? undefined\n : trimVariablePadding(rawValue.toString());\n\n if (!normalized) {\n return {};\n }\n\n const structuredDefaults = parseStructuredInteractionDefaults(normalized);\n\n if (structuredDefaults) {\n return structuredDefaults;\n }\n\n const customDefaults = resolveCustomInteractionDefaults(\n content,\n normalized,\n null,\n options\n );\n\n if (customDefaults) {\n return customDefaults;\n }\n\n if (!hasPotentialInteractionBlock(content)) {\n return {\n buttonText: normalized,\n inputText: normalized,\n };\n }\n\n const interactionInfo = parseInteractionBlock(content);\n const customDefaultsWithInteraction = resolveCustomInteractionDefaults(\n content,\n normalized,\n interactionInfo,\n options\n );\n\n if (customDefaultsWithInteraction) {\n return customDefaultsWithInteraction;\n }\n\n if (!interactionInfo) {\n return {\n buttonText: normalized,\n inputText: normalized,\n };\n }\n\n if (interactionInfo.isMultiSelect) {\n return resolveMultiSelectInteractionDefaults(normalized, interactionInfo);\n }\n\n const mapped = normalizeButtonValue(normalized, interactionInfo);\n\n if (mapped) {\n return {\n buttonText: mapped.value || mapped.display || normalized,\n };\n }\n\n if (interactionInfo.placeholder) {\n return {\n inputText: normalized,\n };\n }\n\n return {\n buttonText: normalized,\n inputText: normalized,\n };\n};\n\nexport const getInteractionDefaultSelectedValues = (\n content?: string | null,\n rawValue?: string | null,\n options?: InteractionDefaultValueOptions\n) => {\n const defaults = getInteractionDefaultValues(content, rawValue, options);\n\n if (defaults.selectedValues) {\n return defaults.selectedValues;\n }\n\n return rawValue\n ? rawValue\n .split(\",\")\n .map((value) => trimVariablePadding(value))\n .filter(Boolean)\n : undefined;\n};\n"],"names":["interactionParser","createInteractionParser","INTERACTION_TAG_PATTERN","INTERACTION_SHORTCODE_PATTERN","INTERACTION_CONTENT_SOURCE","JSON_LIKE_VALUE_PATTERN","findInteractionSource","node","child","source","parseInteractionBlock","content","getMarkdownSourceAnalysis","error","normalizeButtonValue","token","info","cleaned","trimVariablePadding","buttonValues","buttonTexts","valueIndex","textIndex","splitPresetValues","raw","item","trimLeadingInteractionSeparators","index","buildInteractionOptionCandidates","candidates","seenCandidates","buttonValue","normalizedValue","normalizedText","candidateKey","left","right","matchInteractionOptionPrefix","normalizedRaw","candidate","trailingChar","resolveMultiSelectFallbackDefaults","tokens","selectedValues","customInputs","mapped","resolveMultiSelectInteractionDefaults","remainingRaw","matchedCandidate","normalizedRemainingRaw","fallbackDefaults","normalizeStructuredInteractionDefaults","payload","buttonText","inputText","parseStructuredInteractionDefaults","rawValue","parsed","hasPotentialInteractionBlock","resolveCustomInteractionDefaults","interactionInfo","options","getInteractionDefaultValues","normalized","structuredDefaults","customDefaults","customDefaultsWithInteraction","getInteractionDefaultSelectedValues","defaults","value"],"mappings":"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"}
1
+ {"version":3,"file":"interaction-defaults.es.js","sources":["../../src/lib/interaction-defaults.ts"],"sourcesContent":["import {\n createInteractionParser,\n trimVariablePadding,\n INTERACTION_CONTENT_SOURCE,\n} from \"remark-flow\";\nimport type { Node } from \"unist\";\nimport { getMarkdownSourceAnalysis } from \"../components/ContentRender/utils/inline-code-ranges\";\n\nexport interface InteractionParseResult {\n buttonTexts?: string[];\n buttonValues?: string[];\n placeholder?: string;\n variableName?: string;\n isMultiSelect?: boolean;\n}\n\nexport interface InteractionDefaultValues {\n buttonText?: string;\n inputText?: string;\n selectedValues?: string[];\n}\n\nexport interface InteractionDefaultResolverParams {\n content?: string | null;\n rawValue?: string | null;\n interactionInfo?: InteractionParseResult | null;\n}\n\nexport type InteractionDefaultResolver = (\n params: InteractionDefaultResolverParams\n) => InteractionDefaultValues | null | undefined;\n\nexport interface InteractionDefaultValueOptions {\n resolveDefaultValues?: InteractionDefaultResolver;\n}\n\ninterface StructuredInteractionPayload {\n buttonText?: unknown;\n inputText?: unknown;\n selectedValues?: unknown;\n}\n\nconst interactionParser = createInteractionParser();\nconst INTERACTION_TAG_PATTERN = /<custom-variable\\b/i;\n// Same definition of where an interaction ends as the parser uses, so an option carrying a\n// `\\]` is read whole instead of being cut at its first bracket. A variable assignment is optional.\nconst INTERACTION_SHORTCODE_PATTERN = new RegExp(\n `\\\\?\\\\[(${INTERACTION_CONTENT_SOURCE})\\\\](?!\\\\()`\n);\nconst JSON_LIKE_VALUE_PATTERN = /^[\\[{]/;\n\ninterface InteractionOptionCandidate {\n token: string;\n value: string;\n}\n\nconst findInteractionSource = (\n node: Node & { value?: unknown; children?: readonly Node[] }\n): string | null => {\n if (node.type === \"flowInteraction\" && \"value\" in node)\n return typeof node.value === \"string\" ? node.value : null;\n if (node.children) {\n for (const child of node.children) {\n const source = findInteractionSource(child);\n if (source !== null) return source;\n }\n }\n return null;\n};\n\nconst parseInteractionBlock = (\n content?: string | null\n): InteractionParseResult | null => {\n if (!content) {\n return null;\n }\n\n try {\n // Read a grammar-owned interaction, so a syntax example cannot supply its key\n // or swallow a later real control. Keep the existing serialized-tag path.\n const source =\n findInteractionSource(getMarkdownSourceAnalysis(content).tree) ??\n (INTERACTION_TAG_PATTERN.test(content) ? content : null);\n if (source === null) return null;\n // The compatibility formatter turns invalid source into a text-input placeholder.\n // Defaults must retain plain replay behavior instead of inventing an interaction.\n if (interactionParser.parse(source).error) return null;\n return interactionParser.parseToRemarkFormat(\n source\n ) as InteractionParseResult;\n } catch (error) {\n console.warn(\"Failed to parse interaction block\", error);\n }\n\n return null;\n};\n\nconst normalizeButtonValue = (\n token: string,\n info: InteractionParseResult\n): { value: string; display?: string } | null => {\n if (!token) {\n return null;\n }\n\n const cleaned = trimVariablePadding(token);\n const buttonValues = info.buttonValues || [];\n const buttonTexts = info.buttonTexts || [];\n const valueIndex = buttonValues.indexOf(cleaned);\n\n if (valueIndex > -1) {\n return {\n value: buttonValues[valueIndex],\n display: buttonTexts[valueIndex],\n };\n }\n\n const textIndex = buttonTexts.indexOf(cleaned);\n\n if (textIndex > -1) {\n return {\n value: buttonValues[textIndex] || buttonTexts[textIndex],\n display: buttonTexts[textIndex],\n };\n }\n\n return null;\n};\n\nconst splitPresetValues = (raw: string) => {\n return raw\n .split(/[,,\\n]/)\n .map((item) => trimVariablePadding(item))\n .filter(Boolean);\n};\n\nconst trimLeadingInteractionSeparators = (raw: string) => {\n let index = 0;\n while (\n index < raw.length &&\n (raw[index] === \",\" ||\n raw[index] === \",\" ||\n trimVariablePadding(raw[index]) === \"\")\n )\n index += 1;\n return raw.slice(index);\n};\n\nconst buildInteractionOptionCandidates = (\n info: InteractionParseResult\n): InteractionOptionCandidate[] => {\n const buttonValues = info.buttonValues || [];\n const buttonTexts = info.buttonTexts || [];\n const candidates: InteractionOptionCandidate[] = [];\n const seenCandidates = new Set<string>();\n\n buttonValues.forEach((buttonValue, index) => {\n const normalizedValue = trimVariablePadding(`${buttonValue ?? \"\"}`);\n const normalizedText = trimVariablePadding(`${buttonTexts[index] ?? \"\"}`);\n\n [normalizedValue, normalizedText].forEach((token) => {\n if (!token) {\n return;\n }\n\n const candidateKey = `${token}::${normalizedValue || token}`;\n if (seenCandidates.has(candidateKey)) {\n return;\n }\n\n seenCandidates.add(candidateKey);\n candidates.push({\n token,\n value: normalizedValue || token,\n });\n });\n });\n\n return candidates.sort(\n (left, right) => right.token.length - left.token.length\n );\n};\n\nconst matchInteractionOptionPrefix = (\n raw: string,\n info: InteractionParseResult\n): InteractionOptionCandidate | null => {\n const normalizedRaw = trimLeadingInteractionSeparators(raw);\n const candidates = buildInteractionOptionCandidates(info);\n\n for (const candidate of candidates) {\n if (!normalizedRaw.startsWith(candidate.token)) {\n continue;\n }\n\n const trailingChar = normalizedRaw[candidate.token.length];\n if (\n trailingChar &&\n trailingChar !== \",\" &&\n trailingChar !== \",\" &&\n trimVariablePadding(trailingChar) !== \"\"\n ) {\n continue;\n }\n\n return candidate;\n }\n\n return null;\n};\n\nconst resolveMultiSelectFallbackDefaults = (\n raw: string,\n info: InteractionParseResult\n): InteractionDefaultValues => {\n const tokens = splitPresetValues(raw);\n\n if (!tokens.length) {\n return {};\n }\n\n const selectedValues: string[] = [];\n const customInputs: string[] = [];\n\n tokens.forEach((token) => {\n const mapped = normalizeButtonValue(token, info);\n\n if (mapped) {\n selectedValues.push(mapped.value);\n return;\n }\n\n if (info.placeholder) {\n customInputs.push(token);\n return;\n }\n\n selectedValues.push(token);\n });\n\n return {\n selectedValues: selectedValues.length ? selectedValues : undefined,\n inputText: customInputs.length ? customInputs.join(\", \") : undefined,\n };\n};\n\nconst resolveMultiSelectInteractionDefaults = (\n raw: string,\n info: InteractionParseResult\n): InteractionDefaultValues => {\n const selectedValues: string[] = [];\n let remainingRaw = trimVariablePadding(raw);\n\n // Prefer option-aware prefix matching before delimiter splitting so\n // option labels that contain commas can still round-trip correctly.\n while (remainingRaw) {\n const matchedCandidate = matchInteractionOptionPrefix(remainingRaw, info);\n\n if (!matchedCandidate) {\n break;\n }\n\n selectedValues.push(matchedCandidate.value);\n const normalizedRemainingRaw =\n trimLeadingInteractionSeparators(remainingRaw);\n remainingRaw = trimLeadingInteractionSeparators(\n normalizedRemainingRaw.slice(matchedCandidate.token.length)\n );\n }\n\n if (selectedValues.length > 0) {\n return {\n selectedValues,\n inputText:\n info.placeholder && remainingRaw.trim()\n ? remainingRaw.trim()\n : undefined,\n };\n }\n\n const fallbackDefaults = resolveMultiSelectFallbackDefaults(raw, info);\n\n if (fallbackDefaults.selectedValues?.length) {\n return fallbackDefaults;\n }\n\n if (info.placeholder) {\n return {\n inputText: raw.trim(),\n };\n }\n\n return fallbackDefaults;\n};\n\nconst normalizeStructuredInteractionDefaults = (\n payload?: StructuredInteractionPayload | null\n): InteractionDefaultValues | null => {\n if (!payload || Array.isArray(payload)) {\n return null;\n }\n\n const selectedValues = Array.isArray(payload.selectedValues)\n ? payload.selectedValues\n .map((item) => trimVariablePadding(`${item ?? \"\"}`))\n .filter(Boolean)\n : undefined;\n const buttonText = trimVariablePadding(`${payload.buttonText ?? \"\"}`);\n const inputText =\n typeof payload.inputText === \"string\" ? payload.inputText : undefined;\n\n if (!selectedValues?.length && !buttonText && !inputText) {\n return null;\n }\n\n return {\n buttonText: buttonText || undefined,\n inputText,\n selectedValues: selectedValues?.length ? selectedValues : undefined,\n };\n};\n\nconst parseStructuredInteractionDefaults = (rawValue?: string | null) => {\n if (!rawValue) {\n return null;\n }\n\n if (!JSON_LIKE_VALUE_PATTERN.test(trimVariablePadding(rawValue))) {\n return null;\n }\n\n try {\n const parsed = JSON.parse(rawValue) as StructuredInteractionPayload;\n return normalizeStructuredInteractionDefaults(parsed);\n } catch {\n return null;\n }\n};\n\nconst hasPotentialInteractionBlock = (content?: string | null) =>\n Boolean(\n content &&\n (INTERACTION_TAG_PATTERN.test(content) ||\n INTERACTION_SHORTCODE_PATTERN.test(content))\n );\n\nconst resolveCustomInteractionDefaults = (\n content?: string | null,\n rawValue?: string | null,\n interactionInfo?: InteractionParseResult | null,\n options?: InteractionDefaultValueOptions\n) => {\n return (\n options?.resolveDefaultValues?.({\n content,\n rawValue,\n interactionInfo,\n }) ?? null\n );\n};\n\nexport const getInteractionDefaultValues = (\n content?: string | null,\n rawValue?: string | null,\n options?: InteractionDefaultValueOptions\n): InteractionDefaultValues => {\n const normalized =\n rawValue === null || rawValue === undefined\n ? undefined\n : trimVariablePadding(rawValue.toString());\n\n if (!normalized) {\n return {};\n }\n\n const structuredDefaults = parseStructuredInteractionDefaults(normalized);\n\n if (structuredDefaults) {\n return structuredDefaults;\n }\n\n const customDefaults = resolveCustomInteractionDefaults(\n content,\n normalized,\n null,\n options\n );\n\n if (customDefaults) {\n return customDefaults;\n }\n\n if (!hasPotentialInteractionBlock(content)) {\n return {\n buttonText: normalized,\n inputText: normalized,\n };\n }\n\n const interactionInfo = parseInteractionBlock(content);\n const customDefaultsWithInteraction = resolveCustomInteractionDefaults(\n content,\n normalized,\n interactionInfo,\n options\n );\n\n if (customDefaultsWithInteraction) {\n return customDefaultsWithInteraction;\n }\n\n if (!interactionInfo) {\n return {\n buttonText: normalized,\n inputText: normalized,\n };\n }\n\n if (interactionInfo.isMultiSelect) {\n return resolveMultiSelectInteractionDefaults(normalized, interactionInfo);\n }\n\n const mapped = normalizeButtonValue(normalized, interactionInfo);\n\n if (mapped) {\n return {\n buttonText: mapped.value || mapped.display || normalized,\n };\n }\n\n if (interactionInfo.placeholder) {\n return {\n inputText: normalized,\n };\n }\n\n return {\n buttonText: normalized,\n inputText: normalized,\n };\n};\n\nexport const getInteractionDefaultSelectedValues = (\n content?: string | null,\n rawValue?: string | null,\n options?: InteractionDefaultValueOptions\n) => {\n const defaults = getInteractionDefaultValues(content, rawValue, options);\n\n if (defaults.selectedValues) {\n return defaults.selectedValues;\n }\n\n return rawValue\n ? rawValue\n .split(\",\")\n .map((value) => trimVariablePadding(value))\n .filter(Boolean)\n : undefined;\n};\n"],"names":["interactionParser","createInteractionParser","INTERACTION_TAG_PATTERN","INTERACTION_SHORTCODE_PATTERN","INTERACTION_CONTENT_SOURCE","JSON_LIKE_VALUE_PATTERN","findInteractionSource","node","child","source","parseInteractionBlock","content","getMarkdownSourceAnalysis","error","normalizeButtonValue","token","info","cleaned","trimVariablePadding","buttonValues","buttonTexts","valueIndex","textIndex","splitPresetValues","raw","item","trimLeadingInteractionSeparators","index","buildInteractionOptionCandidates","candidates","seenCandidates","buttonValue","normalizedValue","normalizedText","candidateKey","left","right","matchInteractionOptionPrefix","normalizedRaw","candidate","trailingChar","resolveMultiSelectFallbackDefaults","tokens","selectedValues","customInputs","mapped","resolveMultiSelectInteractionDefaults","remainingRaw","matchedCandidate","normalizedRemainingRaw","fallbackDefaults","normalizeStructuredInteractionDefaults","payload","buttonText","inputText","parseStructuredInteractionDefaults","rawValue","parsed","hasPotentialInteractionBlock","resolveCustomInteractionDefaults","interactionInfo","options","getInteractionDefaultValues","normalized","structuredDefaults","customDefaults","customDefaultsWithInteraction","getInteractionDefaultSelectedValues","defaults","value"],"mappings":"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"}