markdown-flow-ui 0.3.2-dev.2 → 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 (283) hide show
  1. package/README.md +0 -13
  2. package/dist/_virtual/index.es8.js +2 -2
  3. package/dist/_virtual/index.es9.js +2 -2
  4. package/dist/_virtual/index8.cjs +1 -1
  5. package/dist/_virtual/index9.cjs +1 -1
  6. package/dist/assets/markdown-flow-ui.css +1 -1
  7. package/dist/components/ContentRender/IframeSandbox.cjs.map +1 -1
  8. package/dist/components/ContentRender/IframeSandbox.es.js.map +1 -1
  9. package/dist/components/ContentRender/utils/video-markdown-run.cjs.map +1 -1
  10. package/dist/components/ContentRender/utils/video-markdown-run.es.js.map +1 -1
  11. package/dist/components/MarkdownFlow/ScrollToBottomButton.cjs.map +1 -1
  12. package/dist/components/MarkdownFlow/ScrollToBottomButton.es.js.map +1 -1
  13. package/dist/components/MarkdownFlow/ScrollToBottomControl.cjs.map +1 -1
  14. package/dist/components/MarkdownFlow/ScrollToBottomControl.es.js.map +1 -1
  15. package/dist/components/MarkdownFlow/useScrollToBottom.cjs.map +1 -1
  16. package/dist/components/MarkdownFlow/useScrollToBottom.es.js.map +1 -1
  17. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs +1 -1
  18. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.cjs.map +1 -1
  19. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.d.ts +2 -2
  20. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js +323 -562
  21. package/dist/components/MarkdownFlowEditor/MarkdownFlowEditor.es.js.map +1 -1
  22. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.cjs +1 -1
  23. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.cjs.map +1 -1
  24. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.d.ts +0 -8
  25. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.es.js +64 -107
  26. package/dist/components/MarkdownFlowEditor/components/EditorToolbar.es.js.map +1 -1
  27. package/dist/components/MarkdownFlowEditor/editor-context.cjs +1 -1
  28. package/dist/components/MarkdownFlowEditor/editor-context.cjs.map +1 -1
  29. package/dist/components/MarkdownFlowEditor/editor-context.es.js +4 -10
  30. package/dist/components/MarkdownFlowEditor/editor-context.es.js.map +1 -1
  31. package/dist/components/MarkdownFlowEditor/editorI18n.d.ts +0 -308
  32. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.cjs +1 -1
  33. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.d.ts +1 -15
  34. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.es.js +87 -115
  35. package/dist/components/MarkdownFlowEditor/locales/ar-SA.json.es.js.map +1 -1
  36. package/dist/components/MarkdownFlowEditor/locales/de-DE.json.cjs +1 -1
  37. package/dist/components/MarkdownFlowEditor/locales/de-DE.json.d.ts +1 -15
  38. package/dist/components/MarkdownFlowEditor/locales/de-DE.json.es.js +88 -116
  39. package/dist/components/MarkdownFlowEditor/locales/de-DE.json.es.js.map +1 -1
  40. package/dist/components/MarkdownFlowEditor/locales/en-US.json.cjs +1 -1
  41. package/dist/components/MarkdownFlowEditor/locales/en-US.json.d.ts +1 -15
  42. package/dist/components/MarkdownFlowEditor/locales/en-US.json.es.js +88 -116
  43. package/dist/components/MarkdownFlowEditor/locales/en-US.json.es.js.map +1 -1
  44. package/dist/components/MarkdownFlowEditor/locales/es-ES.json.cjs +1 -1
  45. package/dist/components/MarkdownFlowEditor/locales/es-ES.json.d.ts +1 -15
  46. package/dist/components/MarkdownFlowEditor/locales/es-ES.json.es.js +80 -108
  47. package/dist/components/MarkdownFlowEditor/locales/es-ES.json.es.js.map +1 -1
  48. package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.cjs +1 -1
  49. package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.d.ts +1 -15
  50. package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.es.js +82 -110
  51. package/dist/components/MarkdownFlowEditor/locales/fil-PH.json.es.js.map +1 -1
  52. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.cjs +1 -1
  53. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.d.ts +1 -15
  54. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.es.js +86 -114
  55. package/dist/components/MarkdownFlowEditor/locales/fr-FR.json.es.js.map +1 -1
  56. package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.cjs +1 -1
  57. package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.d.ts +1 -15
  58. package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.es.js +88 -116
  59. package/dist/components/MarkdownFlowEditor/locales/ja-JP.json.es.js.map +1 -1
  60. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.cjs +1 -1
  61. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.d.ts +1 -15
  62. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.es.js +85 -113
  63. package/dist/components/MarkdownFlowEditor/locales/th-TH.json.es.js.map +1 -1
  64. package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.cjs +1 -1
  65. package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.d.ts +1 -15
  66. package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.es.js +94 -122
  67. package/dist/components/MarkdownFlowEditor/locales/ur-PK.json.es.js.map +1 -1
  68. package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.cjs +1 -1
  69. package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.d.ts +1 -15
  70. package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.es.js +74 -102
  71. package/dist/components/MarkdownFlowEditor/locales/vi-VN.json.es.js.map +1 -1
  72. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.cjs +1 -1
  73. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.d.ts +1 -15
  74. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.es.js +72 -100
  75. package/dist/components/MarkdownFlowEditor/locales/zh-CN.json.es.js.map +1 -1
  76. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.cjs +1 -1
  77. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.cjs.map +1 -1
  78. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.d.ts +2 -1
  79. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js +62 -53
  80. package/dist/components/MarkdownFlowEditor/plugins/ImgPlaceholder.es.js.map +1 -1
  81. package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.cjs.map +1 -1
  82. package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.d.ts +1 -1
  83. package/dist/components/MarkdownFlowEditor/plugins/PlaceholderWidget.es.js.map +1 -1
  84. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.cjs +3 -3
  85. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.cjs.map +1 -1
  86. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.d.ts +1 -5
  87. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.es.js +149 -154
  88. package/dist/components/MarkdownFlowEditor/plugins/SyntaxHighlighter.es.js.map +1 -1
  89. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.cjs +1 -1
  90. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.cjs.map +1 -1
  91. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.d.ts +2 -1
  92. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js +53 -42
  93. package/dist/components/MarkdownFlowEditor/plugins/VideoPlaceholder.es.js.map +1 -1
  94. package/dist/components/MarkdownFlowEditor/types.cjs +1 -1
  95. package/dist/components/MarkdownFlowEditor/types.cjs.map +1 -1
  96. package/dist/components/MarkdownFlowEditor/types.d.ts +1 -11
  97. package/dist/components/MarkdownFlowEditor/types.es.js +2 -2
  98. package/dist/components/MarkdownFlowEditor/types.es.js.map +1 -1
  99. package/dist/components/MarkdownFlowEditor/utils.cjs +1 -1
  100. package/dist/components/MarkdownFlowEditor/utils.cjs.map +1 -1
  101. package/dist/components/MarkdownFlowEditor/utils.d.ts +0 -10
  102. package/dist/components/MarkdownFlowEditor/utils.es.js +59 -73
  103. package/dist/components/MarkdownFlowEditor/utils.es.js.map +1 -1
  104. package/dist/components/Slide/MarkdownSlideScaling.cjs.map +1 -1
  105. package/dist/components/Slide/MarkdownSlideScaling.es.js.map +1 -1
  106. package/dist/components/Slide/MobilePlayerSettingsSheet.es.js +16 -16
  107. package/dist/components/Slide/Player.cjs.map +1 -1
  108. package/dist/components/Slide/Player.es.js.map +1 -1
  109. package/dist/components/Slide/Slide.cjs.map +1 -1
  110. package/dist/components/Slide/Slide.es.js.map +1 -1
  111. package/dist/components/Slide/SubtitleOverlay.cjs.map +1 -1
  112. package/dist/components/Slide/SubtitleOverlay.es.js.map +1 -1
  113. package/dist/components/Slide/slideI18n.cjs.map +1 -1
  114. package/dist/components/Slide/slideI18n.es.js.map +1 -1
  115. package/dist/components/Slide/useSlide.cjs.map +1 -1
  116. package/dist/components/Slide/useSlide.es.js.map +1 -1
  117. package/dist/components/Slide/utils/streamingNavigation.cjs.map +1 -1
  118. package/dist/components/Slide/utils/streamingNavigation.es.js.map +1 -1
  119. package/dist/components/ui/dialog.cjs +1 -1
  120. package/dist/components/ui/dialog.cjs.map +1 -1
  121. package/dist/components/ui/dialog.es.js +27 -27
  122. package/dist/components/ui/dialog.es.js.map +1 -1
  123. package/dist/lib/interaction-defaults.cjs.map +1 -1
  124. package/dist/lib/interaction-defaults.es.js.map +1 -1
  125. package/dist/markdown-flow-ui-lib.css +1 -1
  126. package/dist/markdown-flow-ui.css +1 -1
  127. package/dist/node_modules/@braintree/sanitize-url/dist/index.cjs +1 -1
  128. package/dist/node_modules/@braintree/sanitize-url/dist/index.es.js +1 -1
  129. package/dist/node_modules/@radix-ui/react-context/dist/index.cjs +1 -1
  130. package/dist/node_modules/@radix-ui/react-context/dist/index.cjs.map +1 -1
  131. package/dist/node_modules/@radix-ui/react-context/dist/index.es.js +34 -49
  132. package/dist/node_modules/@radix-ui/react-context/dist/index.es.js.map +1 -1
  133. package/dist/node_modules/@radix-ui/react-dialog/dist/index.cjs +1 -5
  134. package/dist/node_modules/@radix-ui/react-dialog/dist/index.cjs.map +1 -1
  135. package/dist/node_modules/@radix-ui/react-dialog/dist/index.es.js +206 -220
  136. package/dist/node_modules/@radix-ui/react-dialog/dist/index.es.js.map +1 -1
  137. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive/dist/index.cjs +2 -0
  138. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive/dist/index.cjs.map +1 -0
  139. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive/dist/index.es.js +50 -0
  140. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/primitive/dist/index.es.js.map +1 -0
  141. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs/dist/index.cjs +2 -0
  142. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs/dist/index.cjs.map +1 -0
  143. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs/dist/index.es.js +34 -0
  144. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs/dist/index.es.js.map +1 -0
  145. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.cjs +2 -0
  146. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.cjs.map +1 -0
  147. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.es.js +82 -0
  148. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context/dist/index.es.js.map +1 -0
  149. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs +2 -0
  150. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.cjs.map +1 -0
  151. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js +216 -0
  152. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/dist/index.es.js.map +1 -0
  153. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/dist/index.cjs +2 -0
  154. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/dist/index.cjs.map +1 -0
  155. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/dist/index.es.js +15 -0
  156. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/dist/index.es.js.map +1 -0
  157. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/dist/index.cjs +2 -0
  158. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/dist/index.cjs.map +1 -0
  159. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/dist/index.es.js +18 -0
  160. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/dist/index.es.js.map +1 -0
  161. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/dist/index.cjs +2 -0
  162. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/dist/index.cjs.map +1 -0
  163. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/dist/index.es.js +104 -0
  164. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/dist/index.es.js.map +1 -0
  165. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.cjs +2 -0
  166. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -0
  167. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.es.js +39 -0
  168. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive/dist/index.es.js.map +1 -0
  169. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs +2 -0
  170. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs.map +1 -0
  171. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js +13 -0
  172. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js.map +1 -0
  173. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs +2 -0
  174. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs.map +1 -0
  175. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.es.js +70 -0
  176. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/dist/index.es.js.map +1 -0
  177. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-effect-event/dist/index.cjs +2 -0
  178. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-effect-event/dist/index.cjs.map +1 -0
  179. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-effect-event/dist/index.es.js +20 -0
  180. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-effect-event/dist/index.es.js.map +1 -0
  181. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect/dist/index.cjs +2 -0
  182. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect/dist/index.cjs.map +1 -0
  183. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect/dist/index.es.js +7 -0
  184. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-layout-effect/dist/index.es.js.map +1 -0
  185. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.cjs +1 -1
  186. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.cjs.map +1 -1
  187. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.es.js +18 -9
  188. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.es.js.map +1 -1
  189. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs +1 -1
  190. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.cjs.map +1 -1
  191. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.es.js +148 -100
  192. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.es.js.map +1 -1
  193. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-compose-refs/dist/index.cjs +2 -0
  194. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-compose-refs/dist/index.cjs.map +1 -0
  195. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-compose-refs/dist/index.es.js +34 -0
  196. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-compose-refs/dist/index.es.js.map +1 -0
  197. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.cjs +2 -0
  198. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -0
  199. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.es.js +39 -0
  200. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-primitive/dist/index.es.js.map +1 -0
  201. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs +2 -0
  202. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref/dist/index.cjs.map +1 -0
  203. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js +13 -0
  204. package/dist/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref/dist/index.es.js.map +1 -0
  205. package/dist/node_modules/@radix-ui/react-id/dist/index.cjs +1 -1
  206. package/dist/node_modules/@radix-ui/react-id/dist/index.cjs.map +1 -1
  207. package/dist/node_modules/@radix-ui/react-id/dist/index.es.js +8 -8
  208. package/dist/node_modules/@radix-ui/react-id/dist/index.es.js.map +1 -1
  209. package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs +1 -1
  210. package/dist/node_modules/@radix-ui/react-primitive/dist/index.cjs.map +1 -1
  211. package/dist/node_modules/@radix-ui/react-primitive/dist/index.es.js +1 -1
  212. package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.cjs +2 -0
  213. package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -0
  214. package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.es.js +50 -0
  215. package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -0
  216. package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs +1 -1
  217. package/dist/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -1
  218. package/dist/node_modules/@radix-ui/react-slot/dist/index.es.js +80 -41
  219. package/dist/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -1
  220. package/dist/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs/dist/index.cjs +2 -0
  221. package/dist/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs/dist/index.cjs.map +1 -0
  222. package/dist/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs/dist/index.es.js +34 -0
  223. package/dist/node_modules/@radix-ui/react-slot/node_modules/@radix-ui/react-compose-refs/dist/index.es.js.map +1 -0
  224. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.cjs +1 -1
  225. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.cjs.map +1 -1
  226. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.es.js +1 -1
  227. package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.cjs +2 -0
  228. package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.cjs.map +1 -0
  229. package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.es.js +12 -0
  230. package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.es.js.map +1 -0
  231. package/dist/node_modules/classnames/index.cjs +1 -1
  232. package/dist/node_modules/classnames/index.es.js +1 -1
  233. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.cjs +2 -2
  234. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.cjs.map +1 -1
  235. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.es.js +75 -72
  236. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.es.js.map +1 -1
  237. package/package.json +10 -10
  238. package/dist/components/MarkdownFlowEditor/components/CustomPopover.cjs +0 -2
  239. package/dist/components/MarkdownFlowEditor/components/CustomPopover.cjs.map +0 -1
  240. package/dist/components/MarkdownFlowEditor/components/CustomPopover.d.ts +0 -17
  241. package/dist/components/MarkdownFlowEditor/components/CustomPopover.es.js +0 -46
  242. package/dist/components/MarkdownFlowEditor/components/CustomPopover.es.js.map +0 -1
  243. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.cjs +0 -2
  244. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.cjs.map +0 -1
  245. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.d.ts +0 -18
  246. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.es.js +0 -184
  247. package/dist/components/MarkdownFlowEditor/components/VariableSearchDropdown.es.js.map +0 -1
  248. package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs +0 -2
  249. package/dist/components/MarkdownFlowEditor/components/VariableSelect.cjs.map +0 -1
  250. package/dist/components/MarkdownFlowEditor/components/VariableSelect.d.ts +0 -11
  251. package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js +0 -172
  252. package/dist/components/MarkdownFlowEditor/components/VariableSelect.es.js.map +0 -1
  253. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.cjs +0 -2
  254. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.cjs.map +0 -1
  255. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.d.ts +0 -3
  256. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.es.js +0 -32
  257. package/dist/components/MarkdownFlowEditor/components/icons/SearchBracesIcon.es.js.map +0 -1
  258. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.cjs +0 -3
  259. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.cjs.map +0 -1
  260. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.d.ts +0 -9
  261. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.es.js +0 -53
  262. package/dist/components/MarkdownFlowEditor/plugins/VariablePlaceholder.es.js.map +0 -1
  263. package/dist/components/ui/popover.cjs +0 -2
  264. package/dist/components/ui/popover.cjs.map +0 -1
  265. package/dist/components/ui/popover.es.js +0 -24
  266. package/dist/components/ui/popover.es.js.map +0 -1
  267. package/dist/node_modules/@radix-ui/react-popover/dist/index.cjs +0 -2
  268. package/dist/node_modules/@radix-ui/react-popover/dist/index.cjs.map +0 -1
  269. package/dist/node_modules/@radix-ui/react-popover/dist/index.es.js +0 -241
  270. package/dist/node_modules/@radix-ui/react-popover/dist/index.es.js.map +0 -1
  271. package/dist/node_modules/lucide-react/dist/esm/icons/braces.cjs +0 -7
  272. package/dist/node_modules/lucide-react/dist/esm/icons/braces.cjs.map +0 -1
  273. package/dist/node_modules/lucide-react/dist/esm/icons/braces.es.js +0 -25
  274. package/dist/node_modules/lucide-react/dist/esm/icons/braces.es.js.map +0 -1
  275. package/dist/node_modules/lucide-react/dist/esm/icons/plus.cjs +0 -7
  276. package/dist/node_modules/lucide-react/dist/esm/icons/plus.cjs.map +0 -1
  277. package/dist/node_modules/lucide-react/dist/esm/icons/plus.es.js +0 -16
  278. package/dist/node_modules/lucide-react/dist/esm/icons/plus.es.js.map +0 -1
  279. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs +0 -7
  280. package/dist/node_modules/lucide-react/dist/esm/icons/search.cjs.map +0 -1
  281. package/dist/node_modules/lucide-react/dist/esm/icons/search.es.js +0 -16
  282. package/dist/node_modules/lucide-react/dist/esm/icons/search.es.js.map +0 -1
  283. /package/dist/components/MarkdownFlowEditor/plugins/{VariablePlaceholder.test.d.ts → MediaPlaceholder.variables.test.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"SubtitleOverlay.cjs","sources":["../../../src/components/Slide/SubtitleOverlay.tsx"],"sourcesContent":["import React, { memo, useEffect, useMemo } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { getVisibleSubtitleText } from \"./utils/subtitleCue\";\nimport { usePlaybackTimeStore } from \"./utils/playbackTimeStore\";\nimport type { PlaybackTimeStore } from \"./utils/playbackTimeStore\";\nimport type { ElementSubtitleCue } from \"./types\";\nimport \"./subtitle-overlay.css\";\n\nexport interface SubtitleOverlayProps\n extends Omit<React.ComponentProps<\"div\">, \"children\"> {\n extraBottomOffset?: number;\n hasPlayerGap?: boolean;\n isEnabled?: boolean;\n onVisibilityChange?: (visible: boolean) => void;\n playbackTimeStore: PlaybackTimeStore;\n subtitleCues?: ElementSubtitleCue[];\n}\n\nconst SubtitleOverlay = ({\n className,\n extraBottomOffset = 0,\n hasPlayerGap = false,\n isEnabled = true,\n onVisibilityChange,\n playbackTimeStore,\n style,\n subtitleCues = [],\n ...props\n}: SubtitleOverlayProps) => {\n const currentTimeMs = usePlaybackTimeStore(playbackTimeStore);\n const visibleSubtitleText = useMemo(\n () => getVisibleSubtitleText(subtitleCues, currentTimeMs),\n [currentTimeMs, subtitleCues]\n );\n const hasVisibleSubtitle = Boolean(visibleSubtitleText);\n\n useEffect(() => {\n onVisibilityChange?.(isEnabled && hasVisibleSubtitle);\n }, [hasVisibleSubtitle, isEnabled, onVisibilityChange]);\n\n if (!isEnabled || !visibleSubtitleText) {\n return null;\n }\n\n return (\n <div\n aria-live=\"off\"\n className={cn(\n \"slide-subtitle-overlay\",\n hasPlayerGap && \"slide-subtitle-overlay--with-player-gap\",\n className\n )}\n style={\n {\n ...style,\n \"--slide-subtitle-extra-offset\": `${Math.max(extraBottomOffset, 0)}px`,\n } as React.CSSProperties\n }\n {...props}\n >\n <div className=\"slide-subtitle-overlay__surface\">\n <p className=\"slide-subtitle-overlay__text\">{visibleSubtitleText}</p>\n </div>\n </div>\n );\n};\n\nconst MemoizedSubtitleOverlay = memo(SubtitleOverlay);\n\nMemoizedSubtitleOverlay.displayName = \"SubtitleOverlay\";\n\nexport default MemoizedSubtitleOverlay;\n"],"names":["SubtitleOverlay","className","extraBottomOffset","hasPlayerGap","isEnabled","onVisibilityChange","playbackTimeStore","style","subtitleCues","props","currentTimeMs","usePlaybackTimeStore","visibleSubtitleText","useMemo","getVisibleSubtitleText","hasVisibleSubtitle","useEffect","jsx","cn","MemoizedSubtitleOverlay","memo"],"mappings":"2TAmBA,MAAMA,EAAkB,CAAC,CACvB,UAAAC,EACA,kBAAAC,EAAoB,EACpB,aAAAC,EAAe,GACf,UAAAC,EAAY,GACZ,mBAAAC,EAAA,kBACAC,EACA,MAAAC,EACA,aAAAC,EAAe,CAAA,EACf,GAAGC,CACL,IAA4B,CAC1B,MAAMC,EAAgBC,EAAAA,qBAAqBL,CAAiB,EACtDM,EAAsBC,EAAAA,QAC1B,IAAMC,EAAAA,uBAAuBN,EAAcE,CAAa,EACxD,CAACA,EAAeF,CAAY,CAAA,EAExBO,EAAqB,EAAQH,EAMnC,OAJAI,EAAAA,UAAU,IAAM,CACdX,IAAqBD,GAAaW,CAAkB,CACtD,EAAG,CAACA,EAAoBX,EAAWC,CAAkB,CAAC,EAElD,CAACD,GAAa,CAACQ,EACV,KAIPK,EAAAA,IAAC,MAAA,CACC,YAAU,MACV,UAAWC,EAAAA,GACT,yBACAf,GAAgB,0CAChBF,CAAA,EAEF,MACE,CACE,GAAGM,EACH,gCAAiC,GAAG,KAAK,IAAIL,EAAmB,CAAC,CAAC,IAAA,EAGrE,GAAGO,EAEJ,SAAAQ,EAAAA,IAAC,OAAI,UAAU,kCACb,eAAC,IAAA,CAAE,UAAU,+BAAgC,SAAAL,CAAA,CAAoB,CAAA,CACnE,CAAA,CAAA,CAGN,EAEMO,EAA0BC,EAAAA,KAAKpB,CAAe,EAEpDmB,EAAwB,YAAc"}
1
+ {"version":3,"file":"SubtitleOverlay.cjs","sources":["../../../src/components/Slide/SubtitleOverlay.tsx"],"sourcesContent":["import React, { memo, useEffect, useMemo } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { getVisibleSubtitleText } from \"./utils/subtitleCue\";\nimport { usePlaybackTimeStore } from \"./utils/playbackTimeStore\";\nimport type { PlaybackTimeStore } from \"./utils/playbackTimeStore\";\nimport type { ElementSubtitleCue } from \"./types\";\nimport \"./subtitle-overlay.css\";\n\nexport interface SubtitleOverlayProps extends Omit<\n React.ComponentProps<\"div\">,\n \"children\"\n> {\n extraBottomOffset?: number;\n hasPlayerGap?: boolean;\n isEnabled?: boolean;\n onVisibilityChange?: (visible: boolean) => void;\n playbackTimeStore: PlaybackTimeStore;\n subtitleCues?: ElementSubtitleCue[];\n}\n\nconst SubtitleOverlay = ({\n className,\n extraBottomOffset = 0,\n hasPlayerGap = false,\n isEnabled = true,\n onVisibilityChange,\n playbackTimeStore,\n style,\n subtitleCues = [],\n ...props\n}: SubtitleOverlayProps) => {\n const currentTimeMs = usePlaybackTimeStore(playbackTimeStore);\n const visibleSubtitleText = useMemo(\n () => getVisibleSubtitleText(subtitleCues, currentTimeMs),\n [currentTimeMs, subtitleCues]\n );\n const hasVisibleSubtitle = Boolean(visibleSubtitleText);\n\n useEffect(() => {\n onVisibilityChange?.(isEnabled && hasVisibleSubtitle);\n }, [hasVisibleSubtitle, isEnabled, onVisibilityChange]);\n\n if (!isEnabled || !visibleSubtitleText) {\n return null;\n }\n\n return (\n <div\n aria-live=\"off\"\n className={cn(\n \"slide-subtitle-overlay\",\n hasPlayerGap && \"slide-subtitle-overlay--with-player-gap\",\n className\n )}\n style={\n {\n ...style,\n \"--slide-subtitle-extra-offset\": `${Math.max(extraBottomOffset, 0)}px`,\n } as React.CSSProperties\n }\n {...props}\n >\n <div className=\"slide-subtitle-overlay__surface\">\n <p className=\"slide-subtitle-overlay__text\">{visibleSubtitleText}</p>\n </div>\n </div>\n );\n};\n\nconst MemoizedSubtitleOverlay = memo(SubtitleOverlay);\n\nMemoizedSubtitleOverlay.displayName = \"SubtitleOverlay\";\n\nexport default MemoizedSubtitleOverlay;\n"],"names":["SubtitleOverlay","className","extraBottomOffset","hasPlayerGap","isEnabled","onVisibilityChange","playbackTimeStore","style","subtitleCues","props","currentTimeMs","usePlaybackTimeStore","visibleSubtitleText","useMemo","getVisibleSubtitleText","hasVisibleSubtitle","useEffect","jsx","cn","MemoizedSubtitleOverlay","memo"],"mappings":"2TAqBA,MAAMA,EAAkB,CAAC,CACvB,UAAAC,EACA,kBAAAC,EAAoB,EACpB,aAAAC,EAAe,GACf,UAAAC,EAAY,GACZ,mBAAAC,EAAA,kBACAC,EACA,MAAAC,EACA,aAAAC,EAAe,CAAA,EACf,GAAGC,CACL,IAA4B,CAC1B,MAAMC,EAAgBC,EAAAA,qBAAqBL,CAAiB,EACtDM,EAAsBC,EAAAA,QAC1B,IAAMC,EAAAA,uBAAuBN,EAAcE,CAAa,EACxD,CAACA,EAAeF,CAAY,CAAA,EAExBO,EAAqB,EAAQH,EAMnC,OAJAI,EAAAA,UAAU,IAAM,CACdX,IAAqBD,GAAaW,CAAkB,CACtD,EAAG,CAACA,EAAoBX,EAAWC,CAAkB,CAAC,EAElD,CAACD,GAAa,CAACQ,EACV,KAIPK,EAAAA,IAAC,MAAA,CACC,YAAU,MACV,UAAWC,EAAAA,GACT,yBACAf,GAAgB,0CAChBF,CAAA,EAEF,MACE,CACE,GAAGM,EACH,gCAAiC,GAAG,KAAK,IAAIL,EAAmB,CAAC,CAAC,IAAA,EAGrE,GAAGO,EAEJ,SAAAQ,EAAAA,IAAC,OAAI,UAAU,kCACb,eAAC,IAAA,CAAE,UAAU,+BAAgC,SAAAL,CAAA,CAAoB,CAAA,CACnE,CAAA,CAAA,CAGN,EAEMO,EAA0BC,EAAAA,KAAKpB,CAAe,EAEpDmB,EAAwB,YAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"SubtitleOverlay.es.js","sources":["../../../src/components/Slide/SubtitleOverlay.tsx"],"sourcesContent":["import React, { memo, useEffect, useMemo } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { getVisibleSubtitleText } from \"./utils/subtitleCue\";\nimport { usePlaybackTimeStore } from \"./utils/playbackTimeStore\";\nimport type { PlaybackTimeStore } from \"./utils/playbackTimeStore\";\nimport type { ElementSubtitleCue } from \"./types\";\nimport \"./subtitle-overlay.css\";\n\nexport interface SubtitleOverlayProps\n extends Omit<React.ComponentProps<\"div\">, \"children\"> {\n extraBottomOffset?: number;\n hasPlayerGap?: boolean;\n isEnabled?: boolean;\n onVisibilityChange?: (visible: boolean) => void;\n playbackTimeStore: PlaybackTimeStore;\n subtitleCues?: ElementSubtitleCue[];\n}\n\nconst SubtitleOverlay = ({\n className,\n extraBottomOffset = 0,\n hasPlayerGap = false,\n isEnabled = true,\n onVisibilityChange,\n playbackTimeStore,\n style,\n subtitleCues = [],\n ...props\n}: SubtitleOverlayProps) => {\n const currentTimeMs = usePlaybackTimeStore(playbackTimeStore);\n const visibleSubtitleText = useMemo(\n () => getVisibleSubtitleText(subtitleCues, currentTimeMs),\n [currentTimeMs, subtitleCues]\n );\n const hasVisibleSubtitle = Boolean(visibleSubtitleText);\n\n useEffect(() => {\n onVisibilityChange?.(isEnabled && hasVisibleSubtitle);\n }, [hasVisibleSubtitle, isEnabled, onVisibilityChange]);\n\n if (!isEnabled || !visibleSubtitleText) {\n return null;\n }\n\n return (\n <div\n aria-live=\"off\"\n className={cn(\n \"slide-subtitle-overlay\",\n hasPlayerGap && \"slide-subtitle-overlay--with-player-gap\",\n className\n )}\n style={\n {\n ...style,\n \"--slide-subtitle-extra-offset\": `${Math.max(extraBottomOffset, 0)}px`,\n } as React.CSSProperties\n }\n {...props}\n >\n <div className=\"slide-subtitle-overlay__surface\">\n <p className=\"slide-subtitle-overlay__text\">{visibleSubtitleText}</p>\n </div>\n </div>\n );\n};\n\nconst MemoizedSubtitleOverlay = memo(SubtitleOverlay);\n\nMemoizedSubtitleOverlay.displayName = \"SubtitleOverlay\";\n\nexport default MemoizedSubtitleOverlay;\n"],"names":["SubtitleOverlay","className","extraBottomOffset","hasPlayerGap","isEnabled","onVisibilityChange","playbackTimeStore","style","subtitleCues","props","currentTimeMs","usePlaybackTimeStore","visibleSubtitleText","useMemo","getVisibleSubtitleText","hasVisibleSubtitle","useEffect","jsx","cn","MemoizedSubtitleOverlay","memo"],"mappings":";;;;;;AAmBA,MAAMA,IAAkB,CAAC;AAAA,EACvB,WAAAC;AAAA,EACA,mBAAAC,IAAoB;AAAA,EACpB,cAAAC,IAAe;AAAA,EACf,WAAAC,IAAY;AAAA,EACZ,oBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC,IAAe,CAAA;AAAA,EACf,GAAGC;AACL,MAA4B;AAC1B,QAAMC,IAAgBC,EAAqBL,CAAiB,GACtDM,IAAsBC;AAAA,IAC1B,MAAMC,EAAuBN,GAAcE,CAAa;AAAA,IACxD,CAACA,GAAeF,CAAY;AAAA,EAAA,GAExBO,IAAqB,EAAQH;AAMnC,SAJAI,EAAU,MAAM;AACd,IAAAX,IAAqBD,KAAaW,CAAkB;AAAA,EACtD,GAAG,CAACA,GAAoBX,GAAWC,CAAkB,CAAC,GAElD,CAACD,KAAa,CAACQ,IACV,OAIP,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAf,KAAgB;AAAA,QAChBF;AAAA,MAAA;AAAA,MAEF,OACE;AAAA,QACE,GAAGM;AAAA,QACH,iCAAiC,GAAG,KAAK,IAAIL,GAAmB,CAAC,CAAC;AAAA,MAAA;AAAA,MAGrE,GAAGO;AAAA,MAEJ,UAAA,gBAAAQ,EAAC,SAAI,WAAU,mCACb,4BAAC,KAAA,EAAE,WAAU,gCAAgC,UAAAL,EAAA,CAAoB,EAAA,CACnE;AAAA,IAAA;AAAA,EAAA;AAGN,GAEMO,IAA0BC,EAAKpB,CAAe;AAEpDmB,EAAwB,cAAc;"}
1
+ {"version":3,"file":"SubtitleOverlay.es.js","sources":["../../../src/components/Slide/SubtitleOverlay.tsx"],"sourcesContent":["import React, { memo, useEffect, useMemo } from \"react\";\n\nimport { cn } from \"../../lib/utils\";\nimport { getVisibleSubtitleText } from \"./utils/subtitleCue\";\nimport { usePlaybackTimeStore } from \"./utils/playbackTimeStore\";\nimport type { PlaybackTimeStore } from \"./utils/playbackTimeStore\";\nimport type { ElementSubtitleCue } from \"./types\";\nimport \"./subtitle-overlay.css\";\n\nexport interface SubtitleOverlayProps extends Omit<\n React.ComponentProps<\"div\">,\n \"children\"\n> {\n extraBottomOffset?: number;\n hasPlayerGap?: boolean;\n isEnabled?: boolean;\n onVisibilityChange?: (visible: boolean) => void;\n playbackTimeStore: PlaybackTimeStore;\n subtitleCues?: ElementSubtitleCue[];\n}\n\nconst SubtitleOverlay = ({\n className,\n extraBottomOffset = 0,\n hasPlayerGap = false,\n isEnabled = true,\n onVisibilityChange,\n playbackTimeStore,\n style,\n subtitleCues = [],\n ...props\n}: SubtitleOverlayProps) => {\n const currentTimeMs = usePlaybackTimeStore(playbackTimeStore);\n const visibleSubtitleText = useMemo(\n () => getVisibleSubtitleText(subtitleCues, currentTimeMs),\n [currentTimeMs, subtitleCues]\n );\n const hasVisibleSubtitle = Boolean(visibleSubtitleText);\n\n useEffect(() => {\n onVisibilityChange?.(isEnabled && hasVisibleSubtitle);\n }, [hasVisibleSubtitle, isEnabled, onVisibilityChange]);\n\n if (!isEnabled || !visibleSubtitleText) {\n return null;\n }\n\n return (\n <div\n aria-live=\"off\"\n className={cn(\n \"slide-subtitle-overlay\",\n hasPlayerGap && \"slide-subtitle-overlay--with-player-gap\",\n className\n )}\n style={\n {\n ...style,\n \"--slide-subtitle-extra-offset\": `${Math.max(extraBottomOffset, 0)}px`,\n } as React.CSSProperties\n }\n {...props}\n >\n <div className=\"slide-subtitle-overlay__surface\">\n <p className=\"slide-subtitle-overlay__text\">{visibleSubtitleText}</p>\n </div>\n </div>\n );\n};\n\nconst MemoizedSubtitleOverlay = memo(SubtitleOverlay);\n\nMemoizedSubtitleOverlay.displayName = \"SubtitleOverlay\";\n\nexport default MemoizedSubtitleOverlay;\n"],"names":["SubtitleOverlay","className","extraBottomOffset","hasPlayerGap","isEnabled","onVisibilityChange","playbackTimeStore","style","subtitleCues","props","currentTimeMs","usePlaybackTimeStore","visibleSubtitleText","useMemo","getVisibleSubtitleText","hasVisibleSubtitle","useEffect","jsx","cn","MemoizedSubtitleOverlay","memo"],"mappings":";;;;;;AAqBA,MAAMA,IAAkB,CAAC;AAAA,EACvB,WAAAC;AAAA,EACA,mBAAAC,IAAoB;AAAA,EACpB,cAAAC,IAAe;AAAA,EACf,WAAAC,IAAY;AAAA,EACZ,oBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC,IAAe,CAAA;AAAA,EACf,GAAGC;AACL,MAA4B;AAC1B,QAAMC,IAAgBC,EAAqBL,CAAiB,GACtDM,IAAsBC;AAAA,IAC1B,MAAMC,EAAuBN,GAAcE,CAAa;AAAA,IACxD,CAACA,GAAeF,CAAY;AAAA,EAAA,GAExBO,IAAqB,EAAQH;AAMnC,SAJAI,EAAU,MAAM;AACd,IAAAX,IAAqBD,KAAaW,CAAkB;AAAA,EACtD,GAAG,CAACA,GAAoBX,GAAWC,CAAkB,CAAC,GAElD,CAACD,KAAa,CAACQ,IACV,OAIP,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAf,KAAgB;AAAA,QAChBF;AAAA,MAAA;AAAA,MAEF,OACE;AAAA,QACE,GAAGM;AAAA,QACH,iCAAiC,GAAG,KAAK,IAAIL,GAAmB,CAAC,CAAC;AAAA,MAAA;AAAA,MAGrE,GAAGO;AAAA,MAEJ,UAAA,gBAAAQ,EAAC,SAAI,WAAU,mCACb,4BAAC,KAAA,EAAE,WAAU,gCAAgC,UAAAL,EAAA,CAAoB,EAAA,CACnE;AAAA,IAAA;AAAA,EAAA;AAGN,GAEMO,IAA0BC,EAAKpB,CAAe;AAEpDmB,EAAwB,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"slideI18n.cjs","sources":["../../../src/components/Slide/slideI18n.ts"],"sourcesContent":["import {\n normalizeMarkdownFlowLocale,\n type MarkdownFlowLocale,\n} from \"../../lib/locale\";\nimport localeTexts from \"./locales/slide.json\";\n\nexport interface SlidePlayerLocaleTexts {\n closeSettingsLabel: string;\n enterFullscreenLabel: string;\n exitFullscreenLabel: string;\n moreOptionsAriaLabel: string;\n nextLabel: string;\n nextSubtitleLabel: string;\n /** @deprecated The player no longer renders a manual interaction action. */\n notesLabel: string;\n pauseAutoplayLabel: string;\n pauseLabel: string;\n playAutoplayLabel: string;\n playLabel: string;\n /** Display name of the spacebar in playback hints; does not change the key binding. */\n playbackShortcutLabel: string;\n previousLabel: string;\n previousSubtitleLabel: string;\n screenModeLabel: string;\n settingsTitle: string;\n subtitleLabel: string;\n subtitleToggleAriaLabel: string;\n volumeAriaLabel: string;\n screenLabel: string;\n nonFullscreenLabel: string;\n fullscreenLabel: string;\n fullscreenHintText: string;\n}\n\nexport interface SlideInteractionLocaleTexts {\n title: string;\n confirmButtonText: string;\n copyButtonText: string;\n copiedButtonText: string;\n dragHandleAriaLabel: string;\n}\n\nexport type SlideBufferingReason =\n | \"waitingForAudio\"\n | import(\"./Player\").SlidePlayerLoadingReason;\n\nexport interface SlideLocaleTexts {\n bufferingText: Record<SlideBufferingReason, string>;\n fullscreenBackAriaLabel: string;\n interactionTexts: SlideInteractionLocaleTexts;\n playerTexts: SlidePlayerLocaleTexts;\n slideProgressAriaLabel: string;\n slideProgressGeneratingLabel: string;\n}\n\nexport const SLIDE_LOCALE_TEXTS: Record<MarkdownFlowLocale, SlideLocaleTexts> =\n localeTexts;\n\nexport const DEFAULT_SLIDE_PLAYER_TEXTS: SlidePlayerLocaleTexts =\n SLIDE_LOCALE_TEXTS[\"en-US\"].playerTexts;\n\nexport const DEFAULT_SLIDE_INTERACTION_TEXTS: SlideInteractionLocaleTexts =\n SLIDE_LOCALE_TEXTS[\"en-US\"].interactionTexts;\n\nexport const DEFAULT_SLIDE_BUFFERING_TEXTS: Record<\n SlideBufferingReason,\n string\n> = SLIDE_LOCALE_TEXTS[\"en-US\"].bufferingText;\n\nexport const getSlideLocaleTexts = (locale?: string | null): SlideLocaleTexts =>\n SLIDE_LOCALE_TEXTS[normalizeMarkdownFlowLocale(locale)];\n\nexport const getSlidePlayerTexts = (\n locale?: string | null\n): SlidePlayerLocaleTexts => getSlideLocaleTexts(locale).playerTexts;\n"],"names":["SLIDE_LOCALE_TEXTS","localeTexts","DEFAULT_SLIDE_BUFFERING_TEXTS","getSlideLocaleTexts","locale","normalizeMarkdownFlowLocale","getSlidePlayerTexts"],"mappings":"8JAuDaA,EACXC,EAAAA,QAGAD,EAAmB,OAAO,EAAE,YAG5BA,EAAmB,OAAO,EAAE,iBAEvB,MAAME,EAGTF,EAAmB,OAAO,EAAE,cAEnBG,EAAuBC,GAClCJ,EAAmBK,EAAAA,4BAA4BD,CAAM,CAAC,EAE3CE,EACXF,GAC2BD,EAAoBC,CAAM,EAAE"}
1
+ {"version":3,"file":"slideI18n.cjs","sources":["../../../src/components/Slide/slideI18n.ts"],"sourcesContent":["import {\n normalizeMarkdownFlowLocale,\n type MarkdownFlowLocale,\n} from \"../../lib/locale\";\nimport localeTexts from \"./locales/slide.json\";\n\nexport interface SlidePlayerLocaleTexts {\n closeSettingsLabel: string;\n enterFullscreenLabel: string;\n exitFullscreenLabel: string;\n moreOptionsAriaLabel: string;\n nextLabel: string;\n nextSubtitleLabel: string;\n /** @deprecated The player no longer renders a manual interaction action. */\n notesLabel: string;\n pauseAutoplayLabel: string;\n pauseLabel: string;\n playAutoplayLabel: string;\n playLabel: string;\n /** Display name of the spacebar in playback hints; does not change the key binding. */\n playbackShortcutLabel: string;\n previousLabel: string;\n previousSubtitleLabel: string;\n screenModeLabel: string;\n settingsTitle: string;\n subtitleLabel: string;\n subtitleToggleAriaLabel: string;\n volumeAriaLabel: string;\n screenLabel: string;\n nonFullscreenLabel: string;\n fullscreenLabel: string;\n fullscreenHintText: string;\n}\n\nexport interface SlideInteractionLocaleTexts {\n title: string;\n confirmButtonText: string;\n copyButtonText: string;\n copiedButtonText: string;\n dragHandleAriaLabel: string;\n}\n\nexport type SlideBufferingReason =\n \"waitingForAudio\" | import(\"./Player\").SlidePlayerLoadingReason;\n\nexport interface SlideLocaleTexts {\n bufferingText: Record<SlideBufferingReason, string>;\n fullscreenBackAriaLabel: string;\n interactionTexts: SlideInteractionLocaleTexts;\n playerTexts: SlidePlayerLocaleTexts;\n slideProgressAriaLabel: string;\n slideProgressGeneratingLabel: string;\n}\n\nexport const SLIDE_LOCALE_TEXTS: Record<MarkdownFlowLocale, SlideLocaleTexts> =\n localeTexts;\n\nexport const DEFAULT_SLIDE_PLAYER_TEXTS: SlidePlayerLocaleTexts =\n SLIDE_LOCALE_TEXTS[\"en-US\"].playerTexts;\n\nexport const DEFAULT_SLIDE_INTERACTION_TEXTS: SlideInteractionLocaleTexts =\n SLIDE_LOCALE_TEXTS[\"en-US\"].interactionTexts;\n\nexport const DEFAULT_SLIDE_BUFFERING_TEXTS: Record<\n SlideBufferingReason,\n string\n> = SLIDE_LOCALE_TEXTS[\"en-US\"].bufferingText;\n\nexport const getSlideLocaleTexts = (locale?: string | null): SlideLocaleTexts =>\n SLIDE_LOCALE_TEXTS[normalizeMarkdownFlowLocale(locale)];\n\nexport const getSlidePlayerTexts = (\n locale?: string | null\n): SlidePlayerLocaleTexts => getSlideLocaleTexts(locale).playerTexts;\n"],"names":["SLIDE_LOCALE_TEXTS","localeTexts","DEFAULT_SLIDE_BUFFERING_TEXTS","getSlideLocaleTexts","locale","normalizeMarkdownFlowLocale","getSlidePlayerTexts"],"mappings":"8JAsDaA,EACXC,EAAAA,QAGAD,EAAmB,OAAO,EAAE,YAG5BA,EAAmB,OAAO,EAAE,iBAEvB,MAAME,EAGTF,EAAmB,OAAO,EAAE,cAEnBG,EAAuBC,GAClCJ,EAAmBK,EAAAA,4BAA4BD,CAAM,CAAC,EAE3CE,EACXF,GAC2BD,EAAoBC,CAAM,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"slideI18n.es.js","sources":["../../../src/components/Slide/slideI18n.ts"],"sourcesContent":["import {\n normalizeMarkdownFlowLocale,\n type MarkdownFlowLocale,\n} from \"../../lib/locale\";\nimport localeTexts from \"./locales/slide.json\";\n\nexport interface SlidePlayerLocaleTexts {\n closeSettingsLabel: string;\n enterFullscreenLabel: string;\n exitFullscreenLabel: string;\n moreOptionsAriaLabel: string;\n nextLabel: string;\n nextSubtitleLabel: string;\n /** @deprecated The player no longer renders a manual interaction action. */\n notesLabel: string;\n pauseAutoplayLabel: string;\n pauseLabel: string;\n playAutoplayLabel: string;\n playLabel: string;\n /** Display name of the spacebar in playback hints; does not change the key binding. */\n playbackShortcutLabel: string;\n previousLabel: string;\n previousSubtitleLabel: string;\n screenModeLabel: string;\n settingsTitle: string;\n subtitleLabel: string;\n subtitleToggleAriaLabel: string;\n volumeAriaLabel: string;\n screenLabel: string;\n nonFullscreenLabel: string;\n fullscreenLabel: string;\n fullscreenHintText: string;\n}\n\nexport interface SlideInteractionLocaleTexts {\n title: string;\n confirmButtonText: string;\n copyButtonText: string;\n copiedButtonText: string;\n dragHandleAriaLabel: string;\n}\n\nexport type SlideBufferingReason =\n | \"waitingForAudio\"\n | import(\"./Player\").SlidePlayerLoadingReason;\n\nexport interface SlideLocaleTexts {\n bufferingText: Record<SlideBufferingReason, string>;\n fullscreenBackAriaLabel: string;\n interactionTexts: SlideInteractionLocaleTexts;\n playerTexts: SlidePlayerLocaleTexts;\n slideProgressAriaLabel: string;\n slideProgressGeneratingLabel: string;\n}\n\nexport const SLIDE_LOCALE_TEXTS: Record<MarkdownFlowLocale, SlideLocaleTexts> =\n localeTexts;\n\nexport const DEFAULT_SLIDE_PLAYER_TEXTS: SlidePlayerLocaleTexts =\n SLIDE_LOCALE_TEXTS[\"en-US\"].playerTexts;\n\nexport const DEFAULT_SLIDE_INTERACTION_TEXTS: SlideInteractionLocaleTexts =\n SLIDE_LOCALE_TEXTS[\"en-US\"].interactionTexts;\n\nexport const DEFAULT_SLIDE_BUFFERING_TEXTS: Record<\n SlideBufferingReason,\n string\n> = SLIDE_LOCALE_TEXTS[\"en-US\"].bufferingText;\n\nexport const getSlideLocaleTexts = (locale?: string | null): SlideLocaleTexts =>\n SLIDE_LOCALE_TEXTS[normalizeMarkdownFlowLocale(locale)];\n\nexport const getSlidePlayerTexts = (\n locale?: string | null\n): SlidePlayerLocaleTexts => getSlideLocaleTexts(locale).playerTexts;\n"],"names":["SLIDE_LOCALE_TEXTS","localeTexts","DEFAULT_SLIDE_BUFFERING_TEXTS","getSlideLocaleTexts","locale","normalizeMarkdownFlowLocale","getSlidePlayerTexts"],"mappings":";;AAuDO,MAAMA,IACXC;AAGAD,EAAmB,OAAO,EAAE;AAG5BA,EAAmB,OAAO,EAAE;AAEvB,MAAME,IAGTF,EAAmB,OAAO,EAAE,eAEnBG,IAAsB,CAACC,MAClCJ,EAAmBK,EAA4BD,CAAM,CAAC,GAE3CE,IAAsB,CACjCF,MAC2BD,EAAoBC,CAAM,EAAE;"}
1
+ {"version":3,"file":"slideI18n.es.js","sources":["../../../src/components/Slide/slideI18n.ts"],"sourcesContent":["import {\n normalizeMarkdownFlowLocale,\n type MarkdownFlowLocale,\n} from \"../../lib/locale\";\nimport localeTexts from \"./locales/slide.json\";\n\nexport interface SlidePlayerLocaleTexts {\n closeSettingsLabel: string;\n enterFullscreenLabel: string;\n exitFullscreenLabel: string;\n moreOptionsAriaLabel: string;\n nextLabel: string;\n nextSubtitleLabel: string;\n /** @deprecated The player no longer renders a manual interaction action. */\n notesLabel: string;\n pauseAutoplayLabel: string;\n pauseLabel: string;\n playAutoplayLabel: string;\n playLabel: string;\n /** Display name of the spacebar in playback hints; does not change the key binding. */\n playbackShortcutLabel: string;\n previousLabel: string;\n previousSubtitleLabel: string;\n screenModeLabel: string;\n settingsTitle: string;\n subtitleLabel: string;\n subtitleToggleAriaLabel: string;\n volumeAriaLabel: string;\n screenLabel: string;\n nonFullscreenLabel: string;\n fullscreenLabel: string;\n fullscreenHintText: string;\n}\n\nexport interface SlideInteractionLocaleTexts {\n title: string;\n confirmButtonText: string;\n copyButtonText: string;\n copiedButtonText: string;\n dragHandleAriaLabel: string;\n}\n\nexport type SlideBufferingReason =\n \"waitingForAudio\" | import(\"./Player\").SlidePlayerLoadingReason;\n\nexport interface SlideLocaleTexts {\n bufferingText: Record<SlideBufferingReason, string>;\n fullscreenBackAriaLabel: string;\n interactionTexts: SlideInteractionLocaleTexts;\n playerTexts: SlidePlayerLocaleTexts;\n slideProgressAriaLabel: string;\n slideProgressGeneratingLabel: string;\n}\n\nexport const SLIDE_LOCALE_TEXTS: Record<MarkdownFlowLocale, SlideLocaleTexts> =\n localeTexts;\n\nexport const DEFAULT_SLIDE_PLAYER_TEXTS: SlidePlayerLocaleTexts =\n SLIDE_LOCALE_TEXTS[\"en-US\"].playerTexts;\n\nexport const DEFAULT_SLIDE_INTERACTION_TEXTS: SlideInteractionLocaleTexts =\n SLIDE_LOCALE_TEXTS[\"en-US\"].interactionTexts;\n\nexport const DEFAULT_SLIDE_BUFFERING_TEXTS: Record<\n SlideBufferingReason,\n string\n> = SLIDE_LOCALE_TEXTS[\"en-US\"].bufferingText;\n\nexport const getSlideLocaleTexts = (locale?: string | null): SlideLocaleTexts =>\n SLIDE_LOCALE_TEXTS[normalizeMarkdownFlowLocale(locale)];\n\nexport const getSlidePlayerTexts = (\n locale?: string | null\n): SlidePlayerLocaleTexts => getSlideLocaleTexts(locale).playerTexts;\n"],"names":["SLIDE_LOCALE_TEXTS","localeTexts","DEFAULT_SLIDE_BUFFERING_TEXTS","getSlideLocaleTexts","locale","normalizeMarkdownFlowLocale","getSlidePlayerTexts"],"mappings":";;AAsDO,MAAMA,IACXC;AAGAD,EAAmB,OAAO,EAAE;AAG5BA,EAAmB,OAAO,EAAE;AAEvB,MAAME,IAGTF,EAAmB,OAAO,EAAE,eAEnBG,IAAsB,CAACC,MAClCJ,EAAmBK,EAA4BD,CAAM,CAAC,GAE3CE,IAAsB,CACjCF,MAC2BD,EAAoBC,CAAM,EAAE;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSlide.cjs","sources":["../../../src/components/Slide/useSlide.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { applyDiffElement } from \"./diff-utils\";\nimport type { Element, ElementAudioSegment } from \"./types\";\nimport { resolveNextSlideIndexAfterMarkerAppend } from \"./utils/streamingNavigation\";\n\nexport interface SlideAudioItem {\n audioKey?: string;\n sequenceNumber?: number;\n audioUrl?: string;\n audioSegments?: ElementAudioSegment[];\n isAudioStreaming?: boolean;\n element?: Element;\n}\n\nexport interface UseSlideResult {\n currentElementList: Element[];\n stepElementLists: Element[][];\n slideElementList: Element[];\n currentIndex: number;\n audioList: SlideAudioItem[];\n audioSlideIndexes: number[];\n currentAudioSequenceIndexes: number[];\n currentStepHasSpeakableElement: boolean;\n currentInteractionElement?: Element;\n canGoPrev: boolean;\n canGoNext: boolean;\n handlePrev: () => void;\n handleNext: () => void;\n handleGoTo: (index: number) => void;\n}\n\nconst getMarkerElementList = (elementList: Element[]) =>\n elementList.filter((element) => element.is_marker);\n\nconst getMarkerElementIndexes = (elementList: Element[]) =>\n elementList.reduce<number[]>((indexes, element, index) => {\n if (element.is_marker) {\n indexes.push(index);\n }\n\n return indexes;\n }, []);\n\nconst hasPlayableAudio = (element?: Element) =>\n Boolean(\n element?.is_speakable &&\n (element.audio_url || (element.audio_segments?.length ?? 0) > 0)\n );\n\nconst isStreamingAudio = (segments: ElementAudioSegment[] = []) =>\n segments.length > 0 && !segments.some((segment) => segment.is_final);\n\nexport const resolveSlideAudioItemSource = (element: Element) => {\n const audioUrl = element.audio_url?.trim() ?? \"\";\n const audioSegments = element.audio_segments ?? [];\n\n return {\n audioUrl,\n audioSegments,\n isAudioStreaming: !audioUrl && isStreamingAudio(audioSegments),\n };\n};\n\nconst getElementAudioKey = (element: Element, index: number) => {\n const candidateElement = element as Element & {\n element_bid?: string;\n blockBid?: string;\n generated_block_bid?: string;\n };\n\n return (\n candidateElement.element_bid ||\n candidateElement.blockBid ||\n candidateElement.generated_block_bid ||\n `${element.type}:${String(element.sequence_number ?? index)}`\n );\n};\n\nconst getAudioList = (elementList: Element[]) =>\n elementList.reduce<SlideAudioItem[]>((list, element, elementIndex) => {\n if (hasPlayableAudio(element)) {\n const { audioUrl, audioSegments, isAudioStreaming } =\n resolveSlideAudioItemSource(element);\n\n list.push({\n audioKey: getElementAudioKey(element, elementIndex),\n sequenceNumber: element.sequence_number,\n // Keep the completed URL available once it arrives so loading can end.\n audioUrl,\n audioSegments,\n isAudioStreaming,\n element,\n });\n }\n\n return list;\n }, []);\n\nconst getAudioIndexMap = (elementList: Element[]) => {\n const audioIndexMap = new Map<number, number>();\n let audioIndex = 0;\n\n elementList.forEach((element, index) => {\n if (hasPlayableAudio(element)) {\n audioIndexMap.set(index, audioIndex);\n audioIndex += 1;\n }\n });\n\n return audioIndexMap;\n};\n\nconst getSlideAudioSequenceMap = (\n elementList: Element[],\n markerElementIndexes: number[],\n audioIndexMap: Map<number, number>\n) =>\n markerElementIndexes.reduce<Map<number, number[]>>(\n (sequenceMap, startIndex, slideIndex) => {\n const nextMarkerIndex =\n markerElementIndexes[slideIndex + 1] ?? elementList.length;\n const sequenceIndexes: number[] = [];\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n const element = elementList[index];\n\n if (!hasPlayableAudio(element)) {\n continue;\n }\n\n const audioIndex = audioIndexMap.get(index);\n\n if (audioIndex == null) {\n continue;\n }\n\n sequenceIndexes.push(audioIndex);\n }\n\n sequenceMap.set(slideIndex, sequenceIndexes);\n return sequenceMap;\n },\n new Map<number, number[]>()\n );\n\nconst getAudioSlideIndexes = (slideAudioSequenceMap: Map<number, number[]>) => {\n const audioSlideIndexes: number[] = [];\n\n slideAudioSequenceMap.forEach((audioIndexes, slideIndex) => {\n audioIndexes.forEach((audioIndex) => {\n audioSlideIndexes[audioIndex] = slideIndex;\n });\n });\n\n return audioSlideIndexes;\n};\n\nconst getInitialSlideIndex = (slideElementList: Element[]) => {\n const visibleIndex = slideElementList.findIndex(\n (element) => element.is_renderable === true\n );\n\n if (visibleIndex >= 0) {\n return visibleIndex;\n }\n\n return slideElementList.findIndex(\n (element) => element.is_renderable !== false\n );\n};\n\nconst getVisibleElement = (element: Element): Element => ({\n ...element,\n is_renderable: true,\n});\n\nconst getCurrentElementList = (\n slideElementList: Element[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return [];\n }\n\n return slideElementList\n .slice(0, currentIndex + 1)\n .reduce<Element[]>((currentList, element) => {\n if (element.type === \"interaction\") {\n return currentList;\n }\n\n const visibleElement = getVisibleElement(element);\n\n if (visibleElement.type === \"diff\") {\n const nextList = applyDiffElement(currentList, visibleElement);\n\n return nextList ?? [...currentList, visibleElement];\n }\n\n if (element.is_new) {\n return [visibleElement];\n }\n\n if (currentList.length === 0) {\n return [visibleElement];\n }\n\n return [...currentList, visibleElement];\n }, []);\n};\n\nconst getStepElementLists = (slideElementList: Element[]) =>\n slideElementList.map((_, index) =>\n getCurrentElementList(slideElementList, index)\n );\n\nconst getStepHasSpeakableElement = (\n elementList: Element[],\n markerElementIndexes: number[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return false;\n }\n\n const startIndex = markerElementIndexes[currentIndex];\n\n if (typeof startIndex !== \"number\") {\n return false;\n }\n\n const nextMarkerIndex =\n markerElementIndexes[currentIndex + 1] ?? elementList.length;\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n if (elementList[index]?.is_speakable) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasSameElementReferences = (\n prevElementList: Element[],\n nextElementList: Element[]\n) =>\n prevElementList.length === nextElementList.length &&\n prevElementList.every((element, index) => element === nextElementList[index]);\n\nconst hasSameNumberValues = (prevValues: number[], nextValues: number[]) =>\n prevValues.length === nextValues.length &&\n prevValues.every((value, index) => value === nextValues[index]);\n\nconst useSlide = (elementList: Element[] = []): UseSlideResult => {\n const stableElementListRef = useRef(elementList);\n const stableCurrentAudioSequenceIndexesRef = useRef<number[]>([]);\n const stableElementList = useMemo(() => {\n if (hasSameElementReferences(stableElementListRef.current, elementList)) {\n return stableElementListRef.current;\n }\n\n // Reuse the previous wrapper array when the element references are unchanged.\n stableElementListRef.current = elementList;\n return elementList;\n }, [elementList]);\n const slideElementList = useMemo(\n () => getMarkerElementList(stableElementList),\n [stableElementList]\n );\n const previousSlideElementListRef = useRef(slideElementList);\n const markerElementIndexes = useMemo(\n () => getMarkerElementIndexes(stableElementList),\n [stableElementList]\n );\n const audioList = useMemo(\n () => getAudioList(stableElementList),\n [stableElementList]\n );\n const audioIndexMap = useMemo(\n () => getAudioIndexMap(stableElementList),\n [stableElementList]\n );\n const slideAudioSequenceMap = useMemo(\n () =>\n getSlideAudioSequenceMap(\n stableElementList,\n markerElementIndexes,\n audioIndexMap\n ),\n [audioIndexMap, markerElementIndexes, stableElementList]\n );\n const audioSlideIndexes = useMemo(\n () => getAudioSlideIndexes(slideAudioSequenceMap),\n [slideAudioSequenceMap]\n );\n const [currentIndex, setCurrentIndex] = useState(() =>\n getInitialSlideIndex(slideElementList)\n );\n\n useEffect(() => {\n const previousSlideElementList = previousSlideElementListRef.current;\n\n setCurrentIndex((prevIndex) => {\n const resolvedNextIndex = resolveNextSlideIndexAfterMarkerAppend({\n previousIndex: prevIndex,\n previousSlideElementList,\n nextSlideElementList: slideElementList,\n });\n\n if (resolvedNextIndex >= 0) {\n return resolvedNextIndex;\n }\n\n return getInitialSlideIndex(slideElementList);\n });\n\n previousSlideElementListRef.current = slideElementList;\n }, [slideElementList]);\n\n const handlePrev = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex <= 0) {\n return Math.max(prevIndex, 0);\n }\n\n return Math.max(prevIndex - 1, 0);\n });\n }, []);\n\n const handleNext = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex < 0) {\n return prevIndex;\n }\n\n return Math.min(prevIndex + 1, slideElementList.length - 1);\n });\n }, [slideElementList.length]);\n\n const handleGoTo = useCallback(\n (index: number) => {\n if (!Number.isFinite(index) || slideElementList.length === 0) {\n return;\n }\n\n setCurrentIndex(\n Math.min(Math.max(Math.trunc(index), 0), slideElementList.length - 1)\n );\n },\n [slideElementList.length]\n );\n\n const canGoPrev = currentIndex > 0;\n const canGoNext =\n currentIndex >= 0 && currentIndex < slideElementList.length - 1;\n const currentStepElement = useMemo(() => {\n if (currentIndex < 0) {\n return undefined;\n }\n\n const element = slideElementList[currentIndex];\n\n if (!element) {\n return undefined;\n }\n\n return getVisibleElement(element);\n }, [currentIndex, slideElementList]);\n const currentElementList = useMemo(\n () => getCurrentElementList(slideElementList, currentIndex),\n [currentIndex, slideElementList]\n );\n const stepElementLists = useMemo(\n () => getStepElementLists(slideElementList),\n [slideElementList]\n );\n const currentAudioSequenceIndexes = useMemo(() => {\n const nextAudioSequenceIndexes =\n slideAudioSequenceMap.get(currentIndex) ?? [];\n\n if (\n hasSameNumberValues(\n stableCurrentAudioSequenceIndexesRef.current,\n nextAudioSequenceIndexes\n )\n ) {\n return stableCurrentAudioSequenceIndexesRef.current;\n }\n\n stableCurrentAudioSequenceIndexesRef.current = nextAudioSequenceIndexes;\n\n return nextAudioSequenceIndexes;\n }, [currentIndex, slideAudioSequenceMap]);\n const currentStepHasSpeakableElement = useMemo(\n () =>\n getStepHasSpeakableElement(\n stableElementList,\n markerElementIndexes,\n currentIndex\n ),\n [currentIndex, markerElementIndexes, stableElementList]\n );\n const currentInteractionElement = useMemo(\n () =>\n currentStepElement?.type === \"interaction\"\n ? currentStepElement\n : undefined,\n [currentStepElement]\n );\n\n return {\n currentElementList,\n stepElementLists,\n slideElementList,\n currentIndex,\n audioList,\n audioSlideIndexes,\n currentAudioSequenceIndexes,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n canGoPrev,\n canGoNext,\n handlePrev,\n handleNext,\n handleGoTo,\n };\n};\n\nexport default useSlide;\n"],"names":["getMarkerElementList","elementList","element","getMarkerElementIndexes","indexes","index","hasPlayableAudio","isStreamingAudio","segments","segment","resolveSlideAudioItemSource","audioUrl","audioSegments","getElementAudioKey","candidateElement","getAudioList","list","elementIndex","isAudioStreaming","getAudioIndexMap","audioIndexMap","audioIndex","getSlideAudioSequenceMap","markerElementIndexes","sequenceMap","startIndex","slideIndex","nextMarkerIndex","sequenceIndexes","getAudioSlideIndexes","slideAudioSequenceMap","audioSlideIndexes","audioIndexes","getInitialSlideIndex","slideElementList","visibleIndex","getVisibleElement","getCurrentElementList","currentIndex","currentList","visibleElement","applyDiffElement","getStepElementLists","_","getStepHasSpeakableElement","hasSameElementReferences","prevElementList","nextElementList","hasSameNumberValues","prevValues","nextValues","value","useSlide","stableElementListRef","useRef","stableCurrentAudioSequenceIndexesRef","stableElementList","useMemo","previousSlideElementListRef","audioList","setCurrentIndex","useState","useEffect","previousSlideElementList","prevIndex","resolvedNextIndex","resolveNextSlideIndexAfterMarkerAppend","handlePrev","useCallback","handleNext","handleGoTo","canGoPrev","canGoNext","currentStepElement","currentElementList","stepElementLists","currentAudioSequenceIndexes","nextAudioSequenceIndexes","currentStepHasSpeakableElement","currentInteractionElement"],"mappings":"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"}
1
+ {"version":3,"file":"useSlide.cjs","sources":["../../../src/components/Slide/useSlide.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { applyDiffElement } from \"./diff-utils\";\nimport type { Element, ElementAudioSegment } from \"./types\";\nimport { resolveNextSlideIndexAfterMarkerAppend } from \"./utils/streamingNavigation\";\n\nexport interface SlideAudioItem {\n audioKey?: string;\n sequenceNumber?: number;\n audioUrl?: string;\n audioSegments?: ElementAudioSegment[];\n isAudioStreaming?: boolean;\n element?: Element;\n}\n\nexport interface UseSlideResult {\n currentElementList: Element[];\n stepElementLists: Element[][];\n slideElementList: Element[];\n currentIndex: number;\n audioList: SlideAudioItem[];\n audioSlideIndexes: number[];\n currentAudioSequenceIndexes: number[];\n currentStepHasSpeakableElement: boolean;\n currentInteractionElement?: Element;\n canGoPrev: boolean;\n canGoNext: boolean;\n handlePrev: () => void;\n handleNext: () => void;\n handleGoTo: (index: number) => void;\n}\n\nconst getMarkerElementList = (elementList: Element[]) =>\n elementList.filter((element) => element.is_marker);\n\nconst getMarkerElementIndexes = (elementList: Element[]) =>\n elementList.reduce<number[]>((indexes, element, index) => {\n if (element.is_marker) {\n indexes.push(index);\n }\n\n return indexes;\n }, []);\n\nconst hasPlayableAudio = (element?: Element) =>\n Boolean(\n element?.is_speakable &&\n (element.audio_url || (element.audio_segments?.length ?? 0) > 0)\n );\n\nconst isStreamingAudio = (segments: ElementAudioSegment[] = []) =>\n segments.length > 0 && !segments.some((segment) => segment.is_final);\n\nexport const resolveSlideAudioItemSource = (element: Element) => {\n const audioUrl = element.audio_url?.trim() ?? \"\";\n const audioSegments = element.audio_segments ?? [];\n\n return {\n audioUrl,\n audioSegments,\n isAudioStreaming: !audioUrl && isStreamingAudio(audioSegments),\n };\n};\n\nconst getElementAudioKey = (element: Element, index: number) => {\n const candidateElement = element as Element & {\n element_bid?: string;\n blockBid?: string;\n generated_block_bid?: string;\n };\n\n return (\n candidateElement.element_bid ||\n candidateElement.blockBid ||\n candidateElement.generated_block_bid ||\n `${element.type}:${String(element.sequence_number ?? index)}`\n );\n};\n\nconst getAudioList = (elementList: Element[]) =>\n elementList.reduce<SlideAudioItem[]>((list, element, elementIndex) => {\n if (hasPlayableAudio(element)) {\n const { audioUrl, audioSegments, isAudioStreaming } =\n resolveSlideAudioItemSource(element);\n\n list.push({\n audioKey: getElementAudioKey(element, elementIndex),\n sequenceNumber: element.sequence_number,\n // Keep the completed URL available once it arrives so loading can end.\n audioUrl,\n audioSegments,\n isAudioStreaming,\n element,\n });\n }\n\n return list;\n }, []);\n\nconst getAudioIndexMap = (elementList: Element[]) => {\n const audioIndexMap = new Map<number, number>();\n let audioIndex = 0;\n\n elementList.forEach((element, index) => {\n if (hasPlayableAudio(element)) {\n audioIndexMap.set(index, audioIndex);\n audioIndex += 1;\n }\n });\n\n return audioIndexMap;\n};\n\nconst getSlideAudioSequenceMap = (\n elementList: Element[],\n markerElementIndexes: number[],\n audioIndexMap: Map<number, number>\n) =>\n markerElementIndexes.reduce<Map<number, number[]>>(\n (sequenceMap, startIndex, slideIndex) => {\n const nextMarkerIndex =\n markerElementIndexes[slideIndex + 1] ?? elementList.length;\n const sequenceIndexes: number[] = [];\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n const element = elementList[index];\n\n if (!hasPlayableAudio(element)) {\n continue;\n }\n\n const audioIndex = audioIndexMap.get(index);\n\n if (audioIndex == null) {\n continue;\n }\n\n sequenceIndexes.push(audioIndex);\n }\n\n sequenceMap.set(slideIndex, sequenceIndexes);\n return sequenceMap;\n },\n new Map<number, number[]>()\n );\n\nconst getAudioSlideIndexes = (slideAudioSequenceMap: Map<number, number[]>) => {\n const audioSlideIndexes: number[] = [];\n\n slideAudioSequenceMap.forEach((audioIndexes, slideIndex) => {\n audioIndexes.forEach((audioIndex) => {\n audioSlideIndexes[audioIndex] = slideIndex;\n });\n });\n\n return audioSlideIndexes;\n};\n\nconst getInitialSlideIndex = (slideElementList: Element[]) => {\n const visibleIndex = slideElementList.findIndex(\n (element) => element.is_renderable === true\n );\n\n if (visibleIndex >= 0) {\n return visibleIndex;\n }\n\n return slideElementList.findIndex(\n (element) => element.is_renderable !== false\n );\n};\n\nconst getVisibleElement = (element: Element): Element => ({\n ...element,\n is_renderable: true,\n});\n\nconst getCurrentElementList = (\n slideElementList: Element[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return [];\n }\n\n return slideElementList\n .slice(0, currentIndex + 1)\n .reduce<Element[]>((currentList, element) => {\n if (element.type === \"interaction\") {\n return currentList;\n }\n\n const visibleElement = getVisibleElement(element);\n\n if (visibleElement.type === \"diff\") {\n const nextList = applyDiffElement(currentList, visibleElement);\n\n return nextList ?? [...currentList, visibleElement];\n }\n\n if (element.is_new) {\n return [visibleElement];\n }\n\n if (currentList.length === 0) {\n return [visibleElement];\n }\n\n return [...currentList, visibleElement];\n }, []);\n};\n\nconst getStepElementLists = (slideElementList: Element[]) =>\n slideElementList.map((_, index) =>\n getCurrentElementList(slideElementList, index)\n );\n\nconst getStepHasSpeakableElement = (\n elementList: Element[],\n markerElementIndexes: number[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return false;\n }\n\n const startIndex = markerElementIndexes[currentIndex];\n\n if (typeof startIndex !== \"number\") {\n return false;\n }\n\n const nextMarkerIndex =\n markerElementIndexes[currentIndex + 1] ?? elementList.length;\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n if (elementList[index]?.is_speakable) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasSameElementReferences = (\n prevElementList: Element[],\n nextElementList: Element[]\n) =>\n prevElementList.length === nextElementList.length &&\n prevElementList.every((element, index) => element === nextElementList[index]);\n\nconst hasSameNumberValues = (prevValues: number[], nextValues: number[]) =>\n prevValues.length === nextValues.length &&\n prevValues.every((value, index) => value === nextValues[index]);\n\nconst useSlide = (elementList: Element[] = []): UseSlideResult => {\n const stableElementListRef = useRef(elementList);\n const stableCurrentAudioSequenceIndexesRef = useRef<number[]>([]);\n const stableElementList = useMemo(() => {\n if (hasSameElementReferences(stableElementListRef.current, elementList)) {\n return stableElementListRef.current;\n }\n\n // Reuse the previous wrapper array when the element references are unchanged.\n stableElementListRef.current = elementList;\n return elementList;\n }, [elementList]);\n const slideElementList = useMemo(\n () => getMarkerElementList(stableElementList),\n [stableElementList]\n );\n const previousSlideElementListRef = useRef(slideElementList);\n const markerElementIndexes = useMemo(\n () => getMarkerElementIndexes(stableElementList),\n [stableElementList]\n );\n const audioList = useMemo(\n () => getAudioList(stableElementList),\n [stableElementList]\n );\n const audioIndexMap = useMemo(\n () => getAudioIndexMap(stableElementList),\n [stableElementList]\n );\n const slideAudioSequenceMap = useMemo(\n () =>\n getSlideAudioSequenceMap(\n stableElementList,\n markerElementIndexes,\n audioIndexMap\n ),\n [audioIndexMap, markerElementIndexes, stableElementList]\n );\n const audioSlideIndexes = useMemo(\n () => getAudioSlideIndexes(slideAudioSequenceMap),\n [slideAudioSequenceMap]\n );\n const [currentIndex, setCurrentIndex] = useState(() =>\n getInitialSlideIndex(slideElementList)\n );\n\n useEffect(() => {\n const previousSlideElementList = previousSlideElementListRef.current;\n\n setCurrentIndex((prevIndex) => {\n const resolvedNextIndex = resolveNextSlideIndexAfterMarkerAppend({\n previousIndex: prevIndex,\n previousSlideElementList,\n nextSlideElementList: slideElementList,\n });\n\n if (resolvedNextIndex >= 0) {\n return resolvedNextIndex;\n }\n\n return getInitialSlideIndex(slideElementList);\n });\n\n previousSlideElementListRef.current = slideElementList;\n }, [slideElementList]);\n\n const handlePrev = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex <= 0) {\n return Math.max(prevIndex, 0);\n }\n\n return Math.max(prevIndex - 1, 0);\n });\n }, []);\n\n const handleNext = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex < 0) {\n return prevIndex;\n }\n\n return Math.min(prevIndex + 1, slideElementList.length - 1);\n });\n }, [slideElementList.length]);\n\n const handleGoTo = useCallback(\n (index: number) => {\n if (!Number.isFinite(index) || slideElementList.length === 0) {\n return;\n }\n\n setCurrentIndex(\n Math.min(Math.max(Math.trunc(index), 0), slideElementList.length - 1)\n );\n },\n [slideElementList.length]\n );\n\n const canGoPrev = currentIndex > 0;\n const canGoNext =\n currentIndex >= 0 && currentIndex < slideElementList.length - 1;\n const currentStepElement = useMemo(() => {\n if (currentIndex < 0) {\n return undefined;\n }\n\n const element = slideElementList[currentIndex];\n\n if (!element) {\n return undefined;\n }\n\n return getVisibleElement(element);\n }, [currentIndex, slideElementList]);\n const currentElementList = useMemo(\n () => getCurrentElementList(slideElementList, currentIndex),\n [currentIndex, slideElementList]\n );\n const stepElementLists = useMemo(\n () => getStepElementLists(slideElementList),\n [slideElementList]\n );\n const currentAudioSequenceIndexes = useMemo(() => {\n const nextAudioSequenceIndexes =\n slideAudioSequenceMap.get(currentIndex) ?? [];\n\n if (\n hasSameNumberValues(\n stableCurrentAudioSequenceIndexesRef.current,\n nextAudioSequenceIndexes\n )\n ) {\n return stableCurrentAudioSequenceIndexesRef.current;\n }\n\n stableCurrentAudioSequenceIndexesRef.current = nextAudioSequenceIndexes;\n\n return nextAudioSequenceIndexes;\n }, [currentIndex, slideAudioSequenceMap]);\n const currentStepHasSpeakableElement = useMemo(\n () =>\n getStepHasSpeakableElement(\n stableElementList,\n markerElementIndexes,\n currentIndex\n ),\n [currentIndex, markerElementIndexes, stableElementList]\n );\n const currentInteractionElement = useMemo(\n () =>\n currentStepElement?.type === \"interaction\"\n ? currentStepElement\n : undefined,\n [currentStepElement]\n );\n\n return {\n currentElementList,\n stepElementLists,\n slideElementList,\n currentIndex,\n audioList,\n audioSlideIndexes,\n currentAudioSequenceIndexes,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n canGoPrev,\n canGoNext,\n handlePrev,\n handleNext,\n handleGoTo,\n };\n};\n\nexport default useSlide;\n"],"names":["getMarkerElementList","elementList","element","getMarkerElementIndexes","indexes","index","hasPlayableAudio","isStreamingAudio","segments","segment","resolveSlideAudioItemSource","audioUrl","audioSegments","getElementAudioKey","candidateElement","getAudioList","list","elementIndex","isAudioStreaming","getAudioIndexMap","audioIndexMap","audioIndex","getSlideAudioSequenceMap","markerElementIndexes","sequenceMap","startIndex","slideIndex","nextMarkerIndex","sequenceIndexes","getAudioSlideIndexes","slideAudioSequenceMap","audioSlideIndexes","audioIndexes","getInitialSlideIndex","slideElementList","visibleIndex","getVisibleElement","getCurrentElementList","currentIndex","currentList","visibleElement","applyDiffElement","getStepElementLists","_","getStepHasSpeakableElement","hasSameElementReferences","prevElementList","nextElementList","hasSameNumberValues","prevValues","nextValues","value","useSlide","stableElementListRef","useRef","stableCurrentAudioSequenceIndexesRef","stableElementList","useMemo","previousSlideElementListRef","audioList","setCurrentIndex","useState","useEffect","previousSlideElementList","prevIndex","resolvedNextIndex","resolveNextSlideIndexAfterMarkerAppend","handlePrev","useCallback","handleNext","handleGoTo","canGoPrev","canGoNext","currentStepElement","currentElementList","stepElementLists","currentAudioSequenceIndexes","nextAudioSequenceIndexes","currentStepHasSpeakableElement","currentInteractionElement"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSlide.es.js","sources":["../../../src/components/Slide/useSlide.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { applyDiffElement } from \"./diff-utils\";\nimport type { Element, ElementAudioSegment } from \"./types\";\nimport { resolveNextSlideIndexAfterMarkerAppend } from \"./utils/streamingNavigation\";\n\nexport interface SlideAudioItem {\n audioKey?: string;\n sequenceNumber?: number;\n audioUrl?: string;\n audioSegments?: ElementAudioSegment[];\n isAudioStreaming?: boolean;\n element?: Element;\n}\n\nexport interface UseSlideResult {\n currentElementList: Element[];\n stepElementLists: Element[][];\n slideElementList: Element[];\n currentIndex: number;\n audioList: SlideAudioItem[];\n audioSlideIndexes: number[];\n currentAudioSequenceIndexes: number[];\n currentStepHasSpeakableElement: boolean;\n currentInteractionElement?: Element;\n canGoPrev: boolean;\n canGoNext: boolean;\n handlePrev: () => void;\n handleNext: () => void;\n handleGoTo: (index: number) => void;\n}\n\nconst getMarkerElementList = (elementList: Element[]) =>\n elementList.filter((element) => element.is_marker);\n\nconst getMarkerElementIndexes = (elementList: Element[]) =>\n elementList.reduce<number[]>((indexes, element, index) => {\n if (element.is_marker) {\n indexes.push(index);\n }\n\n return indexes;\n }, []);\n\nconst hasPlayableAudio = (element?: Element) =>\n Boolean(\n element?.is_speakable &&\n (element.audio_url || (element.audio_segments?.length ?? 0) > 0)\n );\n\nconst isStreamingAudio = (segments: ElementAudioSegment[] = []) =>\n segments.length > 0 && !segments.some((segment) => segment.is_final);\n\nexport const resolveSlideAudioItemSource = (element: Element) => {\n const audioUrl = element.audio_url?.trim() ?? \"\";\n const audioSegments = element.audio_segments ?? [];\n\n return {\n audioUrl,\n audioSegments,\n isAudioStreaming: !audioUrl && isStreamingAudio(audioSegments),\n };\n};\n\nconst getElementAudioKey = (element: Element, index: number) => {\n const candidateElement = element as Element & {\n element_bid?: string;\n blockBid?: string;\n generated_block_bid?: string;\n };\n\n return (\n candidateElement.element_bid ||\n candidateElement.blockBid ||\n candidateElement.generated_block_bid ||\n `${element.type}:${String(element.sequence_number ?? index)}`\n );\n};\n\nconst getAudioList = (elementList: Element[]) =>\n elementList.reduce<SlideAudioItem[]>((list, element, elementIndex) => {\n if (hasPlayableAudio(element)) {\n const { audioUrl, audioSegments, isAudioStreaming } =\n resolveSlideAudioItemSource(element);\n\n list.push({\n audioKey: getElementAudioKey(element, elementIndex),\n sequenceNumber: element.sequence_number,\n // Keep the completed URL available once it arrives so loading can end.\n audioUrl,\n audioSegments,\n isAudioStreaming,\n element,\n });\n }\n\n return list;\n }, []);\n\nconst getAudioIndexMap = (elementList: Element[]) => {\n const audioIndexMap = new Map<number, number>();\n let audioIndex = 0;\n\n elementList.forEach((element, index) => {\n if (hasPlayableAudio(element)) {\n audioIndexMap.set(index, audioIndex);\n audioIndex += 1;\n }\n });\n\n return audioIndexMap;\n};\n\nconst getSlideAudioSequenceMap = (\n elementList: Element[],\n markerElementIndexes: number[],\n audioIndexMap: Map<number, number>\n) =>\n markerElementIndexes.reduce<Map<number, number[]>>(\n (sequenceMap, startIndex, slideIndex) => {\n const nextMarkerIndex =\n markerElementIndexes[slideIndex + 1] ?? elementList.length;\n const sequenceIndexes: number[] = [];\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n const element = elementList[index];\n\n if (!hasPlayableAudio(element)) {\n continue;\n }\n\n const audioIndex = audioIndexMap.get(index);\n\n if (audioIndex == null) {\n continue;\n }\n\n sequenceIndexes.push(audioIndex);\n }\n\n sequenceMap.set(slideIndex, sequenceIndexes);\n return sequenceMap;\n },\n new Map<number, number[]>()\n );\n\nconst getAudioSlideIndexes = (slideAudioSequenceMap: Map<number, number[]>) => {\n const audioSlideIndexes: number[] = [];\n\n slideAudioSequenceMap.forEach((audioIndexes, slideIndex) => {\n audioIndexes.forEach((audioIndex) => {\n audioSlideIndexes[audioIndex] = slideIndex;\n });\n });\n\n return audioSlideIndexes;\n};\n\nconst getInitialSlideIndex = (slideElementList: Element[]) => {\n const visibleIndex = slideElementList.findIndex(\n (element) => element.is_renderable === true\n );\n\n if (visibleIndex >= 0) {\n return visibleIndex;\n }\n\n return slideElementList.findIndex(\n (element) => element.is_renderable !== false\n );\n};\n\nconst getVisibleElement = (element: Element): Element => ({\n ...element,\n is_renderable: true,\n});\n\nconst getCurrentElementList = (\n slideElementList: Element[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return [];\n }\n\n return slideElementList\n .slice(0, currentIndex + 1)\n .reduce<Element[]>((currentList, element) => {\n if (element.type === \"interaction\") {\n return currentList;\n }\n\n const visibleElement = getVisibleElement(element);\n\n if (visibleElement.type === \"diff\") {\n const nextList = applyDiffElement(currentList, visibleElement);\n\n return nextList ?? [...currentList, visibleElement];\n }\n\n if (element.is_new) {\n return [visibleElement];\n }\n\n if (currentList.length === 0) {\n return [visibleElement];\n }\n\n return [...currentList, visibleElement];\n }, []);\n};\n\nconst getStepElementLists = (slideElementList: Element[]) =>\n slideElementList.map((_, index) =>\n getCurrentElementList(slideElementList, index)\n );\n\nconst getStepHasSpeakableElement = (\n elementList: Element[],\n markerElementIndexes: number[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return false;\n }\n\n const startIndex = markerElementIndexes[currentIndex];\n\n if (typeof startIndex !== \"number\") {\n return false;\n }\n\n const nextMarkerIndex =\n markerElementIndexes[currentIndex + 1] ?? elementList.length;\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n if (elementList[index]?.is_speakable) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasSameElementReferences = (\n prevElementList: Element[],\n nextElementList: Element[]\n) =>\n prevElementList.length === nextElementList.length &&\n prevElementList.every((element, index) => element === nextElementList[index]);\n\nconst hasSameNumberValues = (prevValues: number[], nextValues: number[]) =>\n prevValues.length === nextValues.length &&\n prevValues.every((value, index) => value === nextValues[index]);\n\nconst useSlide = (elementList: Element[] = []): UseSlideResult => {\n const stableElementListRef = useRef(elementList);\n const stableCurrentAudioSequenceIndexesRef = useRef<number[]>([]);\n const stableElementList = useMemo(() => {\n if (hasSameElementReferences(stableElementListRef.current, elementList)) {\n return stableElementListRef.current;\n }\n\n // Reuse the previous wrapper array when the element references are unchanged.\n stableElementListRef.current = elementList;\n return elementList;\n }, [elementList]);\n const slideElementList = useMemo(\n () => getMarkerElementList(stableElementList),\n [stableElementList]\n );\n const previousSlideElementListRef = useRef(slideElementList);\n const markerElementIndexes = useMemo(\n () => getMarkerElementIndexes(stableElementList),\n [stableElementList]\n );\n const audioList = useMemo(\n () => getAudioList(stableElementList),\n [stableElementList]\n );\n const audioIndexMap = useMemo(\n () => getAudioIndexMap(stableElementList),\n [stableElementList]\n );\n const slideAudioSequenceMap = useMemo(\n () =>\n getSlideAudioSequenceMap(\n stableElementList,\n markerElementIndexes,\n audioIndexMap\n ),\n [audioIndexMap, markerElementIndexes, stableElementList]\n );\n const audioSlideIndexes = useMemo(\n () => getAudioSlideIndexes(slideAudioSequenceMap),\n [slideAudioSequenceMap]\n );\n const [currentIndex, setCurrentIndex] = useState(() =>\n getInitialSlideIndex(slideElementList)\n );\n\n useEffect(() => {\n const previousSlideElementList = previousSlideElementListRef.current;\n\n setCurrentIndex((prevIndex) => {\n const resolvedNextIndex = resolveNextSlideIndexAfterMarkerAppend({\n previousIndex: prevIndex,\n previousSlideElementList,\n nextSlideElementList: slideElementList,\n });\n\n if (resolvedNextIndex >= 0) {\n return resolvedNextIndex;\n }\n\n return getInitialSlideIndex(slideElementList);\n });\n\n previousSlideElementListRef.current = slideElementList;\n }, [slideElementList]);\n\n const handlePrev = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex <= 0) {\n return Math.max(prevIndex, 0);\n }\n\n return Math.max(prevIndex - 1, 0);\n });\n }, []);\n\n const handleNext = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex < 0) {\n return prevIndex;\n }\n\n return Math.min(prevIndex + 1, slideElementList.length - 1);\n });\n }, [slideElementList.length]);\n\n const handleGoTo = useCallback(\n (index: number) => {\n if (!Number.isFinite(index) || slideElementList.length === 0) {\n return;\n }\n\n setCurrentIndex(\n Math.min(Math.max(Math.trunc(index), 0), slideElementList.length - 1)\n );\n },\n [slideElementList.length]\n );\n\n const canGoPrev = currentIndex > 0;\n const canGoNext =\n currentIndex >= 0 && currentIndex < slideElementList.length - 1;\n const currentStepElement = useMemo(() => {\n if (currentIndex < 0) {\n return undefined;\n }\n\n const element = slideElementList[currentIndex];\n\n if (!element) {\n return undefined;\n }\n\n return getVisibleElement(element);\n }, [currentIndex, slideElementList]);\n const currentElementList = useMemo(\n () => getCurrentElementList(slideElementList, currentIndex),\n [currentIndex, slideElementList]\n );\n const stepElementLists = useMemo(\n () => getStepElementLists(slideElementList),\n [slideElementList]\n );\n const currentAudioSequenceIndexes = useMemo(() => {\n const nextAudioSequenceIndexes =\n slideAudioSequenceMap.get(currentIndex) ?? [];\n\n if (\n hasSameNumberValues(\n stableCurrentAudioSequenceIndexesRef.current,\n nextAudioSequenceIndexes\n )\n ) {\n return stableCurrentAudioSequenceIndexesRef.current;\n }\n\n stableCurrentAudioSequenceIndexesRef.current = nextAudioSequenceIndexes;\n\n return nextAudioSequenceIndexes;\n }, [currentIndex, slideAudioSequenceMap]);\n const currentStepHasSpeakableElement = useMemo(\n () =>\n getStepHasSpeakableElement(\n stableElementList,\n markerElementIndexes,\n currentIndex\n ),\n [currentIndex, markerElementIndexes, stableElementList]\n );\n const currentInteractionElement = useMemo(\n () =>\n currentStepElement?.type === \"interaction\"\n ? currentStepElement\n : undefined,\n [currentStepElement]\n );\n\n return {\n currentElementList,\n stepElementLists,\n slideElementList,\n currentIndex,\n audioList,\n audioSlideIndexes,\n currentAudioSequenceIndexes,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n canGoPrev,\n canGoNext,\n handlePrev,\n handleNext,\n handleGoTo,\n };\n};\n\nexport default useSlide;\n"],"names":["getMarkerElementList","elementList","element","getMarkerElementIndexes","indexes","index","hasPlayableAudio","isStreamingAudio","segments","segment","resolveSlideAudioItemSource","audioUrl","audioSegments","getElementAudioKey","candidateElement","getAudioList","list","elementIndex","isAudioStreaming","getAudioIndexMap","audioIndexMap","audioIndex","getSlideAudioSequenceMap","markerElementIndexes","sequenceMap","startIndex","slideIndex","nextMarkerIndex","sequenceIndexes","getAudioSlideIndexes","slideAudioSequenceMap","audioSlideIndexes","audioIndexes","getInitialSlideIndex","slideElementList","visibleIndex","getVisibleElement","getCurrentElementList","currentIndex","currentList","visibleElement","applyDiffElement","getStepElementLists","_","getStepHasSpeakableElement","hasSameElementReferences","prevElementList","nextElementList","hasSameNumberValues","prevValues","nextValues","value","useSlide","stableElementListRef","useRef","stableCurrentAudioSequenceIndexesRef","stableElementList","useMemo","previousSlideElementListRef","audioList","setCurrentIndex","useState","useEffect","previousSlideElementList","prevIndex","resolvedNextIndex","resolveNextSlideIndexAfterMarkerAppend","handlePrev","useCallback","handleNext","handleGoTo","canGoPrev","canGoNext","currentStepElement","currentElementList","stepElementLists","currentAudioSequenceIndexes","nextAudioSequenceIndexes","currentStepHasSpeakableElement","currentInteractionElement"],"mappings":"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"}
1
+ {"version":3,"file":"useSlide.es.js","sources":["../../../src/components/Slide/useSlide.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { applyDiffElement } from \"./diff-utils\";\nimport type { Element, ElementAudioSegment } from \"./types\";\nimport { resolveNextSlideIndexAfterMarkerAppend } from \"./utils/streamingNavigation\";\n\nexport interface SlideAudioItem {\n audioKey?: string;\n sequenceNumber?: number;\n audioUrl?: string;\n audioSegments?: ElementAudioSegment[];\n isAudioStreaming?: boolean;\n element?: Element;\n}\n\nexport interface UseSlideResult {\n currentElementList: Element[];\n stepElementLists: Element[][];\n slideElementList: Element[];\n currentIndex: number;\n audioList: SlideAudioItem[];\n audioSlideIndexes: number[];\n currentAudioSequenceIndexes: number[];\n currentStepHasSpeakableElement: boolean;\n currentInteractionElement?: Element;\n canGoPrev: boolean;\n canGoNext: boolean;\n handlePrev: () => void;\n handleNext: () => void;\n handleGoTo: (index: number) => void;\n}\n\nconst getMarkerElementList = (elementList: Element[]) =>\n elementList.filter((element) => element.is_marker);\n\nconst getMarkerElementIndexes = (elementList: Element[]) =>\n elementList.reduce<number[]>((indexes, element, index) => {\n if (element.is_marker) {\n indexes.push(index);\n }\n\n return indexes;\n }, []);\n\nconst hasPlayableAudio = (element?: Element) =>\n Boolean(\n element?.is_speakable &&\n (element.audio_url || (element.audio_segments?.length ?? 0) > 0)\n );\n\nconst isStreamingAudio = (segments: ElementAudioSegment[] = []) =>\n segments.length > 0 && !segments.some((segment) => segment.is_final);\n\nexport const resolveSlideAudioItemSource = (element: Element) => {\n const audioUrl = element.audio_url?.trim() ?? \"\";\n const audioSegments = element.audio_segments ?? [];\n\n return {\n audioUrl,\n audioSegments,\n isAudioStreaming: !audioUrl && isStreamingAudio(audioSegments),\n };\n};\n\nconst getElementAudioKey = (element: Element, index: number) => {\n const candidateElement = element as Element & {\n element_bid?: string;\n blockBid?: string;\n generated_block_bid?: string;\n };\n\n return (\n candidateElement.element_bid ||\n candidateElement.blockBid ||\n candidateElement.generated_block_bid ||\n `${element.type}:${String(element.sequence_number ?? index)}`\n );\n};\n\nconst getAudioList = (elementList: Element[]) =>\n elementList.reduce<SlideAudioItem[]>((list, element, elementIndex) => {\n if (hasPlayableAudio(element)) {\n const { audioUrl, audioSegments, isAudioStreaming } =\n resolveSlideAudioItemSource(element);\n\n list.push({\n audioKey: getElementAudioKey(element, elementIndex),\n sequenceNumber: element.sequence_number,\n // Keep the completed URL available once it arrives so loading can end.\n audioUrl,\n audioSegments,\n isAudioStreaming,\n element,\n });\n }\n\n return list;\n }, []);\n\nconst getAudioIndexMap = (elementList: Element[]) => {\n const audioIndexMap = new Map<number, number>();\n let audioIndex = 0;\n\n elementList.forEach((element, index) => {\n if (hasPlayableAudio(element)) {\n audioIndexMap.set(index, audioIndex);\n audioIndex += 1;\n }\n });\n\n return audioIndexMap;\n};\n\nconst getSlideAudioSequenceMap = (\n elementList: Element[],\n markerElementIndexes: number[],\n audioIndexMap: Map<number, number>\n) =>\n markerElementIndexes.reduce<Map<number, number[]>>(\n (sequenceMap, startIndex, slideIndex) => {\n const nextMarkerIndex =\n markerElementIndexes[slideIndex + 1] ?? elementList.length;\n const sequenceIndexes: number[] = [];\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n const element = elementList[index];\n\n if (!hasPlayableAudio(element)) {\n continue;\n }\n\n const audioIndex = audioIndexMap.get(index);\n\n if (audioIndex == null) {\n continue;\n }\n\n sequenceIndexes.push(audioIndex);\n }\n\n sequenceMap.set(slideIndex, sequenceIndexes);\n return sequenceMap;\n },\n new Map<number, number[]>()\n );\n\nconst getAudioSlideIndexes = (slideAudioSequenceMap: Map<number, number[]>) => {\n const audioSlideIndexes: number[] = [];\n\n slideAudioSequenceMap.forEach((audioIndexes, slideIndex) => {\n audioIndexes.forEach((audioIndex) => {\n audioSlideIndexes[audioIndex] = slideIndex;\n });\n });\n\n return audioSlideIndexes;\n};\n\nconst getInitialSlideIndex = (slideElementList: Element[]) => {\n const visibleIndex = slideElementList.findIndex(\n (element) => element.is_renderable === true\n );\n\n if (visibleIndex >= 0) {\n return visibleIndex;\n }\n\n return slideElementList.findIndex(\n (element) => element.is_renderable !== false\n );\n};\n\nconst getVisibleElement = (element: Element): Element => ({\n ...element,\n is_renderable: true,\n});\n\nconst getCurrentElementList = (\n slideElementList: Element[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return [];\n }\n\n return slideElementList\n .slice(0, currentIndex + 1)\n .reduce<Element[]>((currentList, element) => {\n if (element.type === \"interaction\") {\n return currentList;\n }\n\n const visibleElement = getVisibleElement(element);\n\n if (visibleElement.type === \"diff\") {\n const nextList = applyDiffElement(currentList, visibleElement);\n\n return nextList ?? [...currentList, visibleElement];\n }\n\n if (element.is_new) {\n return [visibleElement];\n }\n\n if (currentList.length === 0) {\n return [visibleElement];\n }\n\n return [...currentList, visibleElement];\n }, []);\n};\n\nconst getStepElementLists = (slideElementList: Element[]) =>\n slideElementList.map((_, index) =>\n getCurrentElementList(slideElementList, index)\n );\n\nconst getStepHasSpeakableElement = (\n elementList: Element[],\n markerElementIndexes: number[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return false;\n }\n\n const startIndex = markerElementIndexes[currentIndex];\n\n if (typeof startIndex !== \"number\") {\n return false;\n }\n\n const nextMarkerIndex =\n markerElementIndexes[currentIndex + 1] ?? elementList.length;\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n if (elementList[index]?.is_speakable) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasSameElementReferences = (\n prevElementList: Element[],\n nextElementList: Element[]\n) =>\n prevElementList.length === nextElementList.length &&\n prevElementList.every((element, index) => element === nextElementList[index]);\n\nconst hasSameNumberValues = (prevValues: number[], nextValues: number[]) =>\n prevValues.length === nextValues.length &&\n prevValues.every((value, index) => value === nextValues[index]);\n\nconst useSlide = (elementList: Element[] = []): UseSlideResult => {\n const stableElementListRef = useRef(elementList);\n const stableCurrentAudioSequenceIndexesRef = useRef<number[]>([]);\n const stableElementList = useMemo(() => {\n if (hasSameElementReferences(stableElementListRef.current, elementList)) {\n return stableElementListRef.current;\n }\n\n // Reuse the previous wrapper array when the element references are unchanged.\n stableElementListRef.current = elementList;\n return elementList;\n }, [elementList]);\n const slideElementList = useMemo(\n () => getMarkerElementList(stableElementList),\n [stableElementList]\n );\n const previousSlideElementListRef = useRef(slideElementList);\n const markerElementIndexes = useMemo(\n () => getMarkerElementIndexes(stableElementList),\n [stableElementList]\n );\n const audioList = useMemo(\n () => getAudioList(stableElementList),\n [stableElementList]\n );\n const audioIndexMap = useMemo(\n () => getAudioIndexMap(stableElementList),\n [stableElementList]\n );\n const slideAudioSequenceMap = useMemo(\n () =>\n getSlideAudioSequenceMap(\n stableElementList,\n markerElementIndexes,\n audioIndexMap\n ),\n [audioIndexMap, markerElementIndexes, stableElementList]\n );\n const audioSlideIndexes = useMemo(\n () => getAudioSlideIndexes(slideAudioSequenceMap),\n [slideAudioSequenceMap]\n );\n const [currentIndex, setCurrentIndex] = useState(() =>\n getInitialSlideIndex(slideElementList)\n );\n\n useEffect(() => {\n const previousSlideElementList = previousSlideElementListRef.current;\n\n setCurrentIndex((prevIndex) => {\n const resolvedNextIndex = resolveNextSlideIndexAfterMarkerAppend({\n previousIndex: prevIndex,\n previousSlideElementList,\n nextSlideElementList: slideElementList,\n });\n\n if (resolvedNextIndex >= 0) {\n return resolvedNextIndex;\n }\n\n return getInitialSlideIndex(slideElementList);\n });\n\n previousSlideElementListRef.current = slideElementList;\n }, [slideElementList]);\n\n const handlePrev = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex <= 0) {\n return Math.max(prevIndex, 0);\n }\n\n return Math.max(prevIndex - 1, 0);\n });\n }, []);\n\n const handleNext = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex < 0) {\n return prevIndex;\n }\n\n return Math.min(prevIndex + 1, slideElementList.length - 1);\n });\n }, [slideElementList.length]);\n\n const handleGoTo = useCallback(\n (index: number) => {\n if (!Number.isFinite(index) || slideElementList.length === 0) {\n return;\n }\n\n setCurrentIndex(\n Math.min(Math.max(Math.trunc(index), 0), slideElementList.length - 1)\n );\n },\n [slideElementList.length]\n );\n\n const canGoPrev = currentIndex > 0;\n const canGoNext =\n currentIndex >= 0 && currentIndex < slideElementList.length - 1;\n const currentStepElement = useMemo(() => {\n if (currentIndex < 0) {\n return undefined;\n }\n\n const element = slideElementList[currentIndex];\n\n if (!element) {\n return undefined;\n }\n\n return getVisibleElement(element);\n }, [currentIndex, slideElementList]);\n const currentElementList = useMemo(\n () => getCurrentElementList(slideElementList, currentIndex),\n [currentIndex, slideElementList]\n );\n const stepElementLists = useMemo(\n () => getStepElementLists(slideElementList),\n [slideElementList]\n );\n const currentAudioSequenceIndexes = useMemo(() => {\n const nextAudioSequenceIndexes =\n slideAudioSequenceMap.get(currentIndex) ?? [];\n\n if (\n hasSameNumberValues(\n stableCurrentAudioSequenceIndexesRef.current,\n nextAudioSequenceIndexes\n )\n ) {\n return stableCurrentAudioSequenceIndexesRef.current;\n }\n\n stableCurrentAudioSequenceIndexesRef.current = nextAudioSequenceIndexes;\n\n return nextAudioSequenceIndexes;\n }, [currentIndex, slideAudioSequenceMap]);\n const currentStepHasSpeakableElement = useMemo(\n () =>\n getStepHasSpeakableElement(\n stableElementList,\n markerElementIndexes,\n currentIndex\n ),\n [currentIndex, markerElementIndexes, stableElementList]\n );\n const currentInteractionElement = useMemo(\n () =>\n currentStepElement?.type === \"interaction\"\n ? currentStepElement\n : undefined,\n [currentStepElement]\n );\n\n return {\n currentElementList,\n stepElementLists,\n slideElementList,\n currentIndex,\n audioList,\n audioSlideIndexes,\n currentAudioSequenceIndexes,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n canGoPrev,\n canGoNext,\n handlePrev,\n handleNext,\n handleGoTo,\n };\n};\n\nexport default useSlide;\n"],"names":["getMarkerElementList","elementList","element","getMarkerElementIndexes","indexes","index","hasPlayableAudio","isStreamingAudio","segments","segment","resolveSlideAudioItemSource","audioUrl","audioSegments","getElementAudioKey","candidateElement","getAudioList","list","elementIndex","isAudioStreaming","getAudioIndexMap","audioIndexMap","audioIndex","getSlideAudioSequenceMap","markerElementIndexes","sequenceMap","startIndex","slideIndex","nextMarkerIndex","sequenceIndexes","getAudioSlideIndexes","slideAudioSequenceMap","audioSlideIndexes","audioIndexes","getInitialSlideIndex","slideElementList","visibleIndex","getVisibleElement","getCurrentElementList","currentIndex","currentList","visibleElement","applyDiffElement","getStepElementLists","_","getStepHasSpeakableElement","hasSameElementReferences","prevElementList","nextElementList","hasSameNumberValues","prevValues","nextValues","value","useSlide","stableElementListRef","useRef","stableCurrentAudioSequenceIndexesRef","stableElementList","useMemo","previousSlideElementListRef","audioList","setCurrentIndex","useState","useEffect","previousSlideElementList","prevIndex","resolvedNextIndex","resolveNextSlideIndexAfterMarkerAppend","handlePrev","useCallback","handleNext","handleGoTo","canGoPrev","canGoNext","currentStepElement","currentElementList","stepElementLists","currentAudioSequenceIndexes","nextAudioSequenceIndexes","currentStepHasSpeakableElement","currentInteractionElement"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"streamingNavigation.cjs","sources":["../../../../src/components/Slide/utils/streamingNavigation.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\ninterface ResolveNextSlideIndexParams {\n previousIndex: number;\n previousSlideElementList: Element[];\n nextSlideElementList: Element[];\n}\n\nconst isResolvedInteractionElement = (element?: Element) =>\n Boolean(\n element?.type === \"interaction\" &&\n (element.readonly || element.user_input?.trim())\n );\n\nconst hasStableMarkerPrefix = (\n previousSlideElementList: Element[],\n nextSlideElementList: Element[]\n) =>\n previousSlideElementList.length <= nextSlideElementList.length &&\n previousSlideElementList.every(\n (element, index) => element === nextSlideElementList[index]\n );\n\nconst hasStableMarkerIdentityPrefix = (\n previousSlideElementList: Element[],\n nextSlideElementList: Element[]\n) =>\n nextSlideElementList.length <= previousSlideElementList.length &&\n nextSlideElementList.every((element, index) => {\n const previousElement = previousSlideElementList[index];\n\n return (\n element.type === previousElement?.type &&\n element.sequence_number === previousElement?.sequence_number &&\n element.content === previousElement?.content\n );\n });\n\nexport const resolveNextSlideIndexAfterMarkerAppend = ({\n previousIndex,\n previousSlideElementList,\n nextSlideElementList,\n}: ResolveNextSlideIndexParams) => {\n if (nextSlideElementList.length === 0) {\n return -1;\n }\n\n const hasAppendedMarkers =\n nextSlideElementList.length > previousSlideElementList.length &&\n hasStableMarkerPrefix(previousSlideElementList, nextSlideElementList);\n const previousLastMarkerIndex = previousSlideElementList.length - 1;\n const wasFocusedOnPreviousLastMarker =\n previousIndex === previousLastMarkerIndex;\n const previousCurrentElement =\n previousIndex >= 0 ? previousSlideElementList[previousIndex] : undefined;\n\n // When a resolved interaction is already the terminal step and SSE appends\n // the first follow-up marker, jump into that new marker immediately instead\n // of waiting for the interaction auto-close and silent-step delay.\n if (\n hasAppendedMarkers &&\n wasFocusedOnPreviousLastMarker &&\n isResolvedInteractionElement(previousCurrentElement)\n ) {\n return previousSlideElementList.length;\n }\n\n const hasTruncatedMarkers =\n nextSlideElementList.length < previousSlideElementList.length &&\n hasStableMarkerIdentityPrefix(\n previousSlideElementList,\n nextSlideElementList\n );\n\n if (hasTruncatedMarkers && nextSlideElementList.length > 0) {\n return Math.min(previousIndex, nextSlideElementList.length - 1);\n }\n\n if (previousIndex >= 0 && previousIndex < nextSlideElementList.length) {\n return previousIndex;\n }\n\n return -1;\n};\n"],"names":["isResolvedInteractionElement","element","hasStableMarkerPrefix","previousSlideElementList","nextSlideElementList","index","hasStableMarkerIdentityPrefix","previousElement","resolveNextSlideIndexAfterMarkerAppend","previousIndex","hasAppendedMarkers","previousLastMarkerIndex","wasFocusedOnPreviousLastMarker","previousCurrentElement"],"mappings":"gFAQA,MAAMA,EAAgCC,GACpC,GACEA,GAAS,OAAS,gBACfA,EAAQ,UAAYA,EAAQ,YAAY,KAAA,IAGzCC,EAAwB,CAC5BC,EACAC,IAEAD,EAAyB,QAAUC,EAAqB,QACxDD,EAAyB,MACvB,CAACF,EAASI,IAAUJ,IAAYG,EAAqBC,CAAK,CAC5D,EAEIC,EAAgC,CACpCH,EACAC,IAEAA,EAAqB,QAAUD,EAAyB,QACxDC,EAAqB,MAAM,CAACH,EAASI,IAAU,CAC7C,MAAME,EAAkBJ,EAAyBE,CAAK,EAEtD,OACEJ,EAAQ,OAASM,GAAiB,MAClCN,EAAQ,kBAAoBM,GAAiB,iBAC7CN,EAAQ,UAAYM,GAAiB,OAEzC,CAAC,EAEUC,EAAyC,CAAC,CACrD,cAAAC,EACA,yBAAAN,EACA,qBAAAC,CACF,IAAmC,CACjC,GAAIA,EAAqB,SAAW,EAClC,MAAO,GAGT,MAAMM,EACJN,EAAqB,OAASD,EAAyB,QACvDD,EAAsBC,EAA0BC,CAAoB,EAChEO,EAA0BR,EAAyB,OAAS,EAC5DS,EACJH,IAAkBE,EACdE,EACJJ,GAAiB,EAAIN,EAAyBM,CAAa,EAAI,OAKjE,OACEC,GACAE,GACAZ,EAA6Ba,CAAsB,EAE5CV,EAAyB,OAIhCC,EAAqB,OAASD,EAAyB,QACvDG,EACEH,EACAC,CAAA,GAGuBA,EAAqB,OAAS,EAChD,KAAK,IAAIK,EAAeL,EAAqB,OAAS,CAAC,EAG5DK,GAAiB,GAAKA,EAAgBL,EAAqB,OACtDK,EAGF,EACT"}
1
+ {"version":3,"file":"streamingNavigation.cjs","sources":["../../../../src/components/Slide/utils/streamingNavigation.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\ninterface ResolveNextSlideIndexParams {\n previousIndex: number;\n previousSlideElementList: Element[];\n nextSlideElementList: Element[];\n}\n\nconst isResolvedInteractionElement = (element?: Element) =>\n Boolean(\n element?.type === \"interaction\" &&\n (element.readonly || element.user_input?.trim())\n );\n\nconst hasStableMarkerPrefix = (\n previousSlideElementList: Element[],\n nextSlideElementList: Element[]\n) =>\n previousSlideElementList.length <= nextSlideElementList.length &&\n previousSlideElementList.every(\n (element, index) => element === nextSlideElementList[index]\n );\n\nconst hasStableMarkerIdentityPrefix = (\n previousSlideElementList: Element[],\n nextSlideElementList: Element[]\n) =>\n nextSlideElementList.length <= previousSlideElementList.length &&\n nextSlideElementList.every((element, index) => {\n const previousElement = previousSlideElementList[index];\n\n return (\n element.type === previousElement?.type &&\n element.sequence_number === previousElement?.sequence_number &&\n element.content === previousElement?.content\n );\n });\n\nexport const resolveNextSlideIndexAfterMarkerAppend = ({\n previousIndex,\n previousSlideElementList,\n nextSlideElementList,\n}: ResolveNextSlideIndexParams) => {\n if (nextSlideElementList.length === 0) {\n return -1;\n }\n\n const hasAppendedMarkers =\n nextSlideElementList.length > previousSlideElementList.length &&\n hasStableMarkerPrefix(previousSlideElementList, nextSlideElementList);\n const previousLastMarkerIndex = previousSlideElementList.length - 1;\n const wasFocusedOnPreviousLastMarker =\n previousIndex === previousLastMarkerIndex;\n const previousCurrentElement =\n previousIndex >= 0 ? previousSlideElementList[previousIndex] : undefined;\n\n // When a resolved interaction is already the terminal step and SSE appends\n // the first follow-up marker, jump into that new marker immediately instead\n // of waiting for the interaction auto-close and silent-step delay.\n if (\n hasAppendedMarkers &&\n wasFocusedOnPreviousLastMarker &&\n isResolvedInteractionElement(previousCurrentElement)\n ) {\n return previousSlideElementList.length;\n }\n\n const hasTruncatedMarkers =\n nextSlideElementList.length < previousSlideElementList.length &&\n hasStableMarkerIdentityPrefix(\n previousSlideElementList,\n nextSlideElementList\n );\n\n if (hasTruncatedMarkers && nextSlideElementList.length > 0) {\n return Math.min(previousIndex, nextSlideElementList.length - 1);\n }\n\n if (previousIndex >= 0 && previousIndex < nextSlideElementList.length) {\n return previousIndex;\n }\n\n return -1;\n};\n"],"names":["isResolvedInteractionElement","element","hasStableMarkerPrefix","previousSlideElementList","nextSlideElementList","index","hasStableMarkerIdentityPrefix","previousElement","resolveNextSlideIndexAfterMarkerAppend","previousIndex","hasAppendedMarkers","previousLastMarkerIndex","wasFocusedOnPreviousLastMarker","previousCurrentElement"],"mappings":"gFAQA,MAAMA,EAAgCC,GACpC,GACEA,GAAS,OAAS,gBACjBA,EAAQ,UAAYA,EAAQ,YAAY,KAAA,IAGvCC,EAAwB,CAC5BC,EACAC,IAEAD,EAAyB,QAAUC,EAAqB,QACxDD,EAAyB,MACvB,CAACF,EAASI,IAAUJ,IAAYG,EAAqBC,CAAK,CAC5D,EAEIC,EAAgC,CACpCH,EACAC,IAEAA,EAAqB,QAAUD,EAAyB,QACxDC,EAAqB,MAAM,CAACH,EAASI,IAAU,CAC7C,MAAME,EAAkBJ,EAAyBE,CAAK,EAEtD,OACEJ,EAAQ,OAASM,GAAiB,MAClCN,EAAQ,kBAAoBM,GAAiB,iBAC7CN,EAAQ,UAAYM,GAAiB,OAEzC,CAAC,EAEUC,EAAyC,CAAC,CACrD,cAAAC,EACA,yBAAAN,EACA,qBAAAC,CACF,IAAmC,CACjC,GAAIA,EAAqB,SAAW,EAClC,MAAO,GAGT,MAAMM,EACJN,EAAqB,OAASD,EAAyB,QACvDD,EAAsBC,EAA0BC,CAAoB,EAChEO,EAA0BR,EAAyB,OAAS,EAC5DS,EACJH,IAAkBE,EACdE,EACJJ,GAAiB,EAAIN,EAAyBM,CAAa,EAAI,OAKjE,OACEC,GACAE,GACAZ,EAA6Ba,CAAsB,EAE5CV,EAAyB,OAIhCC,EAAqB,OAASD,EAAyB,QACvDG,EACEH,EACAC,CAAA,GAGuBA,EAAqB,OAAS,EAChD,KAAK,IAAIK,EAAeL,EAAqB,OAAS,CAAC,EAG5DK,GAAiB,GAAKA,EAAgBL,EAAqB,OACtDK,EAGF,EACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"streamingNavigation.es.js","sources":["../../../../src/components/Slide/utils/streamingNavigation.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\ninterface ResolveNextSlideIndexParams {\n previousIndex: number;\n previousSlideElementList: Element[];\n nextSlideElementList: Element[];\n}\n\nconst isResolvedInteractionElement = (element?: Element) =>\n Boolean(\n element?.type === \"interaction\" &&\n (element.readonly || element.user_input?.trim())\n );\n\nconst hasStableMarkerPrefix = (\n previousSlideElementList: Element[],\n nextSlideElementList: Element[]\n) =>\n previousSlideElementList.length <= nextSlideElementList.length &&\n previousSlideElementList.every(\n (element, index) => element === nextSlideElementList[index]\n );\n\nconst hasStableMarkerIdentityPrefix = (\n previousSlideElementList: Element[],\n nextSlideElementList: Element[]\n) =>\n nextSlideElementList.length <= previousSlideElementList.length &&\n nextSlideElementList.every((element, index) => {\n const previousElement = previousSlideElementList[index];\n\n return (\n element.type === previousElement?.type &&\n element.sequence_number === previousElement?.sequence_number &&\n element.content === previousElement?.content\n );\n });\n\nexport const resolveNextSlideIndexAfterMarkerAppend = ({\n previousIndex,\n previousSlideElementList,\n nextSlideElementList,\n}: ResolveNextSlideIndexParams) => {\n if (nextSlideElementList.length === 0) {\n return -1;\n }\n\n const hasAppendedMarkers =\n nextSlideElementList.length > previousSlideElementList.length &&\n hasStableMarkerPrefix(previousSlideElementList, nextSlideElementList);\n const previousLastMarkerIndex = previousSlideElementList.length - 1;\n const wasFocusedOnPreviousLastMarker =\n previousIndex === previousLastMarkerIndex;\n const previousCurrentElement =\n previousIndex >= 0 ? previousSlideElementList[previousIndex] : undefined;\n\n // When a resolved interaction is already the terminal step and SSE appends\n // the first follow-up marker, jump into that new marker immediately instead\n // of waiting for the interaction auto-close and silent-step delay.\n if (\n hasAppendedMarkers &&\n wasFocusedOnPreviousLastMarker &&\n isResolvedInteractionElement(previousCurrentElement)\n ) {\n return previousSlideElementList.length;\n }\n\n const hasTruncatedMarkers =\n nextSlideElementList.length < previousSlideElementList.length &&\n hasStableMarkerIdentityPrefix(\n previousSlideElementList,\n nextSlideElementList\n );\n\n if (hasTruncatedMarkers && nextSlideElementList.length > 0) {\n return Math.min(previousIndex, nextSlideElementList.length - 1);\n }\n\n if (previousIndex >= 0 && previousIndex < nextSlideElementList.length) {\n return previousIndex;\n }\n\n return -1;\n};\n"],"names":["isResolvedInteractionElement","element","hasStableMarkerPrefix","previousSlideElementList","nextSlideElementList","index","hasStableMarkerIdentityPrefix","previousElement","resolveNextSlideIndexAfterMarkerAppend","previousIndex","hasAppendedMarkers","previousLastMarkerIndex","wasFocusedOnPreviousLastMarker","previousCurrentElement"],"mappings":"AAQA,MAAMA,IAA+B,CAACC,MACpC,GACEA,GAAS,SAAS,kBACfA,EAAQ,YAAYA,EAAQ,YAAY,KAAA,KAGzCC,IAAwB,CAC5BC,GACAC,MAEAD,EAAyB,UAAUC,EAAqB,UACxDD,EAAyB;AAAA,EACvB,CAACF,GAASI,MAAUJ,MAAYG,EAAqBC,CAAK;AAC5D,GAEIC,IAAgC,CACpCH,GACAC,MAEAA,EAAqB,UAAUD,EAAyB,UACxDC,EAAqB,MAAM,CAACH,GAASI,MAAU;AAC7C,QAAME,IAAkBJ,EAAyBE,CAAK;AAEtD,SACEJ,EAAQ,SAASM,GAAiB,QAClCN,EAAQ,oBAAoBM,GAAiB,mBAC7CN,EAAQ,YAAYM,GAAiB;AAEzC,CAAC,GAEUC,IAAyC,CAAC;AAAA,EACrD,eAAAC;AAAA,EACA,0BAAAN;AAAA,EACA,sBAAAC;AACF,MAAmC;AACjC,MAAIA,EAAqB,WAAW;AAClC,WAAO;AAGT,QAAMM,IACJN,EAAqB,SAASD,EAAyB,UACvDD,EAAsBC,GAA0BC,CAAoB,GAChEO,IAA0BR,EAAyB,SAAS,GAC5DS,IACJH,MAAkBE,GACdE,IACJJ,KAAiB,IAAIN,EAAyBM,CAAa,IAAI;AAKjE,SACEC,KACAE,KACAZ,EAA6Ba,CAAsB,IAE5CV,EAAyB,SAIhCC,EAAqB,SAASD,EAAyB,UACvDG;AAAA,IACEH;AAAA,IACAC;AAAA,EAAA,KAGuBA,EAAqB,SAAS,IAChD,KAAK,IAAIK,GAAeL,EAAqB,SAAS,CAAC,IAG5DK,KAAiB,KAAKA,IAAgBL,EAAqB,SACtDK,IAGF;AACT;"}
1
+ {"version":3,"file":"streamingNavigation.es.js","sources":["../../../../src/components/Slide/utils/streamingNavigation.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\ninterface ResolveNextSlideIndexParams {\n previousIndex: number;\n previousSlideElementList: Element[];\n nextSlideElementList: Element[];\n}\n\nconst isResolvedInteractionElement = (element?: Element) =>\n Boolean(\n element?.type === \"interaction\" &&\n (element.readonly || element.user_input?.trim())\n );\n\nconst hasStableMarkerPrefix = (\n previousSlideElementList: Element[],\n nextSlideElementList: Element[]\n) =>\n previousSlideElementList.length <= nextSlideElementList.length &&\n previousSlideElementList.every(\n (element, index) => element === nextSlideElementList[index]\n );\n\nconst hasStableMarkerIdentityPrefix = (\n previousSlideElementList: Element[],\n nextSlideElementList: Element[]\n) =>\n nextSlideElementList.length <= previousSlideElementList.length &&\n nextSlideElementList.every((element, index) => {\n const previousElement = previousSlideElementList[index];\n\n return (\n element.type === previousElement?.type &&\n element.sequence_number === previousElement?.sequence_number &&\n element.content === previousElement?.content\n );\n });\n\nexport const resolveNextSlideIndexAfterMarkerAppend = ({\n previousIndex,\n previousSlideElementList,\n nextSlideElementList,\n}: ResolveNextSlideIndexParams) => {\n if (nextSlideElementList.length === 0) {\n return -1;\n }\n\n const hasAppendedMarkers =\n nextSlideElementList.length > previousSlideElementList.length &&\n hasStableMarkerPrefix(previousSlideElementList, nextSlideElementList);\n const previousLastMarkerIndex = previousSlideElementList.length - 1;\n const wasFocusedOnPreviousLastMarker =\n previousIndex === previousLastMarkerIndex;\n const previousCurrentElement =\n previousIndex >= 0 ? previousSlideElementList[previousIndex] : undefined;\n\n // When a resolved interaction is already the terminal step and SSE appends\n // the first follow-up marker, jump into that new marker immediately instead\n // of waiting for the interaction auto-close and silent-step delay.\n if (\n hasAppendedMarkers &&\n wasFocusedOnPreviousLastMarker &&\n isResolvedInteractionElement(previousCurrentElement)\n ) {\n return previousSlideElementList.length;\n }\n\n const hasTruncatedMarkers =\n nextSlideElementList.length < previousSlideElementList.length &&\n hasStableMarkerIdentityPrefix(\n previousSlideElementList,\n nextSlideElementList\n );\n\n if (hasTruncatedMarkers && nextSlideElementList.length > 0) {\n return Math.min(previousIndex, nextSlideElementList.length - 1);\n }\n\n if (previousIndex >= 0 && previousIndex < nextSlideElementList.length) {\n return previousIndex;\n }\n\n return -1;\n};\n"],"names":["isResolvedInteractionElement","element","hasStableMarkerPrefix","previousSlideElementList","nextSlideElementList","index","hasStableMarkerIdentityPrefix","previousElement","resolveNextSlideIndexAfterMarkerAppend","previousIndex","hasAppendedMarkers","previousLastMarkerIndex","wasFocusedOnPreviousLastMarker","previousCurrentElement"],"mappings":"AAQA,MAAMA,IAA+B,CAACC,MACpC,GACEA,GAAS,SAAS,kBACjBA,EAAQ,YAAYA,EAAQ,YAAY,KAAA,KAGvCC,IAAwB,CAC5BC,GACAC,MAEAD,EAAyB,UAAUC,EAAqB,UACxDD,EAAyB;AAAA,EACvB,CAACF,GAASI,MAAUJ,MAAYG,EAAqBC,CAAK;AAC5D,GAEIC,IAAgC,CACpCH,GACAC,MAEAA,EAAqB,UAAUD,EAAyB,UACxDC,EAAqB,MAAM,CAACH,GAASI,MAAU;AAC7C,QAAME,IAAkBJ,EAAyBE,CAAK;AAEtD,SACEJ,EAAQ,SAASM,GAAiB,QAClCN,EAAQ,oBAAoBM,GAAiB,mBAC7CN,EAAQ,YAAYM,GAAiB;AAEzC,CAAC,GAEUC,IAAyC,CAAC;AAAA,EACrD,eAAAC;AAAA,EACA,0BAAAN;AAAA,EACA,sBAAAC;AACF,MAAmC;AACjC,MAAIA,EAAqB,WAAW;AAClC,WAAO;AAGT,QAAMM,IACJN,EAAqB,SAASD,EAAyB,UACvDD,EAAsBC,GAA0BC,CAAoB,GAChEO,IAA0BR,EAAyB,SAAS,GAC5DS,IACJH,MAAkBE,GACdE,IACJJ,KAAiB,IAAIN,EAAyBM,CAAa,IAAI;AAKjE,SACEC,KACAE,KACAZ,EAA6Ba,CAAsB,IAE5CV,EAAyB,SAIhCC,EAAqB,SAASD,EAAyB,UACvDG;AAAA,IACEH;AAAA,IACAC;AAAA,EAAA,KAGuBA,EAAqB,SAAS,IAChD,KAAK,IAAIK,GAAeL,EAAqB,SAAS,CAAC,IAG5DK,KAAiB,KAAKA,IAAgBL,EAAqB,SACtDK,IAGF;AACT;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),p=require("react"),o=require("../../node_modules/@radix-ui/react-dialog/dist/index.cjs"),i=require("../../lib/utils.cjs"),m=require("../../node_modules/lucide-react/dist/esm/icons/x.cjs");function y(e){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(a,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return a.default=e,Object.freeze(a)}const l=y(p),x=o.Root,d=o.Portal,r=l.forwardRef(({className:e,...a},t)=>s.jsx(o.Overlay,{ref:t,className:i.cn("fixed inset-0 z-50 bg-black/20 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...a}));r.displayName=o.Overlay.displayName;const c=l.forwardRef(({className:e,children:a,closeButtonLabel:t="Close",...n},g)=>s.jsxs(d,{children:[s.jsx(r,{}),s.jsxs(o.Content,{ref:g,className:i.cn("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...n,children:[a,s.jsxs(o.Close,{className:"absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[s.jsx(m.default,{className:"h-4 w-4"}),s.jsx("span",{className:"sr-only",children:t})]})]})]}));c.displayName=o.Content.displayName;const u=l.forwardRef(({className:e,...a},t)=>s.jsx(o.Title,{ref:t,className:i.cn("text-lg font-semibold leading-none tracking-tight",e),...a}));u.displayName=o.Title.displayName;const f=l.forwardRef(({className:e,...a},t)=>s.jsx(o.Description,{ref:t,className:i.cn("text-sm text-muted-foreground",e),...a}));f.displayName=o.Description.displayName;exports.Dialog=x;exports.DialogContent=c;exports.DialogDescription=f;exports.DialogOverlay=r;exports.DialogPortal=d;exports.DialogTitle=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),p=require("react"),o=require("../../node_modules/@radix-ui/react-dialog/dist/index.cjs"),i=require("../../lib/utils.cjs"),m=require("../../node_modules/lucide-react/dist/esm/icons/x.cjs");function D(e){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(a,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return a.default=e,Object.freeze(a)}const l=D(p),y=o.Dialog,d=o.DialogPortal,r=l.forwardRef(({className:e,...a},t)=>s.jsx(o.DialogOverlay,{ref:t,className:i.cn("fixed inset-0 z-50 bg-black/20 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...a}));r.displayName=o.DialogOverlay.displayName;const c=l.forwardRef(({className:e,children:a,closeButtonLabel:t="Close",...n},f)=>s.jsxs(d,{children:[s.jsx(r,{}),s.jsxs(o.Content,{ref:f,className:i.cn("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",e),...n,children:[a,s.jsxs(o.Close,{className:"absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[s.jsx(m.default,{className:"h-4 w-4"}),s.jsx("span",{className:"sr-only",children:t})]})]})]}));c.displayName=o.Content.displayName;const g=l.forwardRef(({className:e,...a},t)=>s.jsx(o.DialogTitle,{ref:t,className:i.cn("text-lg font-semibold leading-none tracking-tight",e),...a}));g.displayName=o.DialogTitle.displayName;const u=l.forwardRef(({className:e,...a},t)=>s.jsx(o.Description,{ref:t,className:i.cn("text-sm text-muted-foreground",e),...a}));u.displayName=o.Description.displayName;exports.Dialog=y;exports.DialogContent=c;exports.DialogDescription=u;exports.DialogOverlay=r;exports.DialogPortal=d;exports.DialogTitle=g;
2
2
  //# sourceMappingURL=dialog.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.cjs","sources":["../../../src/components/ui/dialog.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/20 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nexport interface DialogContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n /** Accessible label for the close button. Defaults to \"Close\". */\n closeButtonLabel?: string;\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ className, children, closeButtonLabel = \"Close\", ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">{closeButtonLabel}</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n"],"names":["Dialog","DialogPrimitive.Root","DialogPortal","DialogPrimitive.Portal","DialogOverlay","React","className","props","ref","jsx","DialogPrimitive.Overlay","cn","DialogContent","children","closeButtonLabel","jsxs","DialogPrimitive.Content","DialogPrimitive.Close","X","DialogTitle","DialogPrimitive.Title","DialogDescription","DialogPrimitive.Description"],"mappings":"2kBAMMA,EAASC,EAAAA,KAITC,EAAeC,EAAAA,OAIfC,EAAgBC,EAAM,WAG1B,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,IAACC,EAAAA,QAAA,CACC,IAAAF,EACA,UAAWG,EAAAA,GACT,yJACAL,CAAA,EAED,GAAGC,CAAA,CACN,CACD,EACDH,EAAc,YAAcM,EAAAA,QAAwB,YAQpD,MAAME,EAAgBP,EAAM,WAG1B,CAAC,CAAE,UAAAC,EAAW,SAAAO,EAAU,iBAAAC,EAAmB,QAAS,GAAGP,CAAA,EAASC,WAC/DN,EAAA,CACC,SAAA,CAAAO,EAAAA,IAACL,EAAA,EAAc,EACfW,EAAAA,KAACC,EAAAA,QAAA,CACC,IAAAR,EACA,UAAWG,EAAAA,GACT,8fACAL,CAAA,EAED,GAAGC,EAEH,SAAA,CAAAM,EACDE,EAAAA,KAACE,EAAAA,MAAA,CAAsB,UAAU,8QAC/B,SAAA,CAAAR,EAAAA,IAACS,EAAAA,QAAA,CAAE,UAAU,SAAA,CAAU,EACvBT,EAAAA,IAAC,OAAA,CAAK,UAAU,UAAW,SAAAK,CAAA,CAAiB,CAAA,CAAA,CAC9C,CAAA,CAAA,CAAA,CACF,EACF,CACD,EACDF,EAAc,YAAcI,EAAAA,QAAwB,YA8BpD,MAAMG,EAAcd,EAAM,WAGxB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,IAACW,EAAAA,MAAA,CACC,IAAAZ,EACA,UAAWG,EAAAA,GACT,oDACAL,CAAA,EAED,GAAGC,CAAA,CACN,CACD,EACDY,EAAY,YAAcC,EAAAA,MAAsB,YAEhD,MAAMC,EAAoBhB,EAAM,WAG9B,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,IAACa,EAAAA,YAAA,CACC,IAAAd,EACA,UAAWG,EAAAA,GAAG,gCAAiCL,CAAS,EACvD,GAAGC,CAAA,CACN,CACD,EACDc,EAAkB,YAAcC,EAAAA,YAA4B"}
1
+ {"version":3,"file":"dialog.cjs","sources":["../../../src/components/ui/dialog.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/20 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nexport interface DialogContentProps extends React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Content\n> {\n /** Accessible label for the close button. Defaults to \"Close\". */\n closeButtonLabel?: string;\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ className, children, closeButtonLabel = \"Close\", ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">{closeButtonLabel}</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n"],"names":["Dialog","DialogPrimitive.Root","DialogPortal","DialogPrimitive.Portal","DialogOverlay","React","className","props","ref","jsx","DialogPrimitive.Overlay","cn","DialogContent","children","closeButtonLabel","jsxs","DialogPrimitive.Content","DialogPrimitive.Close","X","DialogTitle","DialogPrimitive.Title","DialogDescription","DialogPrimitive.Description"],"mappings":"2kBAMMA,EAASC,EAAAA,OAITC,EAAeC,EAAAA,aAIfC,EAAgBC,EAAM,WAG1B,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,IAACC,EAAAA,cAAA,CACC,IAAAF,EACA,UAAWG,EAAAA,GACT,yJACAL,CAAA,EAED,GAAGC,CAAA,CACN,CACD,EACDH,EAAc,YAAcM,EAAAA,cAAwB,YASpD,MAAME,EAAgBP,EAAM,WAG1B,CAAC,CAAE,UAAAC,EAAW,SAAAO,EAAU,iBAAAC,EAAmB,QAAS,GAAGP,CAAA,EAASC,WAC/DN,EAAA,CACC,SAAA,CAAAO,EAAAA,IAACL,EAAA,EAAc,EACfW,EAAAA,KAACC,EAAAA,QAAA,CACC,IAAAR,EACA,UAAWG,EAAAA,GACT,8fACAL,CAAA,EAED,GAAGC,EAEH,SAAA,CAAAM,EACDE,EAAAA,KAACE,EAAAA,MAAA,CAAsB,UAAU,8QAC/B,SAAA,CAAAR,EAAAA,IAACS,EAAAA,QAAA,CAAE,UAAU,SAAA,CAAU,EACvBT,EAAAA,IAAC,OAAA,CAAK,UAAU,UAAW,SAAAK,CAAA,CAAiB,CAAA,CAAA,CAC9C,CAAA,CAAA,CAAA,CACF,EACF,CACD,EACDF,EAAc,YAAcI,EAAAA,QAAwB,YA8BpD,MAAMG,EAAcd,EAAM,WAGxB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,IAACW,EAAAA,YAAA,CACC,IAAAZ,EACA,UAAWG,EAAAA,GACT,oDACAL,CAAA,EAED,GAAGC,CAAA,CACN,CACD,EACDY,EAAY,YAAcC,EAAAA,YAAsB,YAEhD,MAAMC,EAAoBhB,EAAM,WAG9B,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,IAACa,EAAAA,YAAA,CACC,IAAAd,EACA,UAAWG,EAAAA,GAAG,gCAAiCL,CAAS,EACvD,GAAGC,CAAA,CACN,CACD,EACDc,EAAkB,YAAcC,EAAAA,YAA4B"}
@@ -1,69 +1,69 @@
1
- import { jsx as o, jsxs as d } from "react/jsx-runtime";
1
+ import { jsx as o, jsxs as l } from "react/jsx-runtime";
2
2
  import * as s from "react";
3
- import { Overlay as i, Portal as g, Content as l, Close as u, Title as r, Description as c, Root as y } from "../../node_modules/@radix-ui/react-dialog/dist/index.es.js";
4
- import { cn as n } from "../../lib/utils.es.js";
5
- import N from "../../node_modules/lucide-react/dist/esm/icons/x.es.js";
6
- const z = y, x = g, m = s.forwardRef(({ className: a, ...t }, e) => /* @__PURE__ */ o(
7
- i,
3
+ import { DialogOverlay as n, DialogPortal as f, Content as d, Close as u, DialogTitle as r, Description as c, Dialog as D } from "../../node_modules/@radix-ui/react-dialog/dist/index.es.js";
4
+ import { cn as i } from "../../lib/utils.es.js";
5
+ import y from "../../node_modules/lucide-react/dist/esm/icons/x.es.js";
6
+ const R = D, N = f, m = s.forwardRef(({ className: a, ...t }, e) => /* @__PURE__ */ o(
7
+ n,
8
8
  {
9
9
  ref: e,
10
- className: n(
10
+ className: i(
11
11
  "fixed inset-0 z-50 bg-black/20 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
12
12
  a
13
13
  ),
14
14
  ...t
15
15
  }
16
16
  ));
17
- m.displayName = i.displayName;
18
- const b = s.forwardRef(({ className: a, children: t, closeButtonLabel: e = "Close", ...f }, p) => /* @__PURE__ */ d(x, { children: [
17
+ m.displayName = n.displayName;
18
+ const x = s.forwardRef(({ className: a, children: t, closeButtonLabel: e = "Close", ...g }, p) => /* @__PURE__ */ l(N, { children: [
19
19
  /* @__PURE__ */ o(m, {}),
20
- /* @__PURE__ */ d(
21
- l,
20
+ /* @__PURE__ */ l(
21
+ d,
22
22
  {
23
23
  ref: p,
24
- className: n(
24
+ className: i(
25
25
  "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
26
26
  a
27
27
  ),
28
- ...f,
28
+ ...g,
29
29
  children: [
30
30
  t,
31
- /* @__PURE__ */ d(u, { className: "absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
32
- /* @__PURE__ */ o(N, { className: "h-4 w-4" }),
31
+ /* @__PURE__ */ l(u, { className: "absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
32
+ /* @__PURE__ */ o(y, { className: "h-4 w-4" }),
33
33
  /* @__PURE__ */ o("span", { className: "sr-only", children: e })
34
34
  ] })
35
35
  ]
36
36
  }
37
37
  )
38
38
  ] }));
39
- b.displayName = l.displayName;
40
- const h = s.forwardRef(({ className: a, ...t }, e) => /* @__PURE__ */ o(
39
+ x.displayName = d.displayName;
40
+ const b = s.forwardRef(({ className: a, ...t }, e) => /* @__PURE__ */ o(
41
41
  r,
42
42
  {
43
43
  ref: e,
44
- className: n(
44
+ className: i(
45
45
  "text-lg font-semibold leading-none tracking-tight",
46
46
  a
47
47
  ),
48
48
  ...t
49
49
  }
50
50
  ));
51
- h.displayName = r.displayName;
52
- const w = s.forwardRef(({ className: a, ...t }, e) => /* @__PURE__ */ o(
51
+ b.displayName = r.displayName;
52
+ const h = s.forwardRef(({ className: a, ...t }, e) => /* @__PURE__ */ o(
53
53
  c,
54
54
  {
55
55
  ref: e,
56
- className: n("text-sm text-muted-foreground", a),
56
+ className: i("text-sm text-muted-foreground", a),
57
57
  ...t
58
58
  }
59
59
  ));
60
- w.displayName = c.displayName;
60
+ h.displayName = c.displayName;
61
61
  export {
62
- z as Dialog,
63
- b as DialogContent,
64
- w as DialogDescription,
62
+ R as Dialog,
63
+ x as DialogContent,
64
+ h as DialogDescription,
65
65
  m as DialogOverlay,
66
- x as DialogPortal,
67
- h as DialogTitle
66
+ N as DialogPortal,
67
+ b as DialogTitle
68
68
  };
69
69
  //# sourceMappingURL=dialog.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.es.js","sources":["../../../src/components/ui/dialog.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/20 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nexport interface DialogContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {\n /** Accessible label for the close button. Defaults to \"Close\". */\n closeButtonLabel?: string;\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ className, children, closeButtonLabel = \"Close\", ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">{closeButtonLabel}</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n"],"names":["Dialog","DialogPrimitive.Root","DialogPortal","DialogPrimitive.Portal","DialogOverlay","React","className","props","ref","jsx","DialogPrimitive.Overlay","cn","DialogContent","children","closeButtonLabel","jsxs","DialogPrimitive.Content","DialogPrimitive.Close","X","DialogTitle","DialogPrimitive.Title","DialogDescription","DialogPrimitive.Description"],"mappings":";;;;;AAMA,MAAMA,IAASC,GAITC,IAAeC,GAIfC,IAAgBC,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAACC;AAAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAc,cAAcM,EAAwB;AAQpD,MAAME,IAAgBP,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,UAAAO,GAAU,kBAAAC,IAAmB,SAAS,GAAGP,EAAA,GAASC,wBAC/DN,GAAA,EACC,UAAA;AAAA,EAAA,gBAAAO,EAACL,GAAA,EAAc;AAAA,EACf,gBAAAW;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,KAAAR;AAAA,MACA,WAAWG;AAAA,QACT;AAAA,QACAL;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAM;AAAA,QACD,gBAAAE,EAACE,GAAA,EAAsB,WAAU,+QAC/B,UAAA;AAAA,UAAA,gBAAAR,EAACS,GAAA,EAAE,WAAU,UAAA,CAAU;AAAA,UACvB,gBAAAT,EAAC,QAAA,EAAK,WAAU,WAAW,UAAAK,EAAA,CAAiB;AAAA,QAAA,EAAA,CAC9C;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AACF,GACF,CACD;AACDF,EAAc,cAAcI,EAAwB;AA8BpD,MAAMG,IAAcd,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAACW;AAAAA,EAAA;AAAA,IACC,KAAAZ;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDY,EAAY,cAAcC,EAAsB;AAEhD,MAAMC,IAAoBhB,EAAM,WAG9B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAACa;AAAAA,EAAA;AAAA,IACC,KAAAd;AAAA,IACA,WAAWG,EAAG,iCAAiCL,CAAS;AAAA,IACvD,GAAGC;AAAA,EAAA;AACN,CACD;AACDc,EAAkB,cAAcC,EAA4B;"}
1
+ {"version":3,"file":"dialog.es.js","sources":["../../../src/components/ui/dialog.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/20 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nexport interface DialogContentProps extends React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Content\n> {\n /** Accessible label for the close button. Defaults to \"Close\". */\n closeButtonLabel?: string;\n}\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(({ className, children, closeButtonLabel = \"Close\", ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">{closeButtonLabel}</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n"],"names":["Dialog","DialogPrimitive.Root","DialogPortal","DialogPrimitive.Portal","DialogOverlay","React","className","props","ref","jsx","DialogPrimitive.Overlay","cn","DialogContent","children","closeButtonLabel","jsxs","DialogPrimitive.Content","DialogPrimitive.Close","X","DialogTitle","DialogPrimitive.Title","DialogDescription","DialogPrimitive.Description"],"mappings":";;;;;AAMA,MAAMA,IAASC,GAITC,IAAeC,GAIfC,IAAgBC,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAACC;AAAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAc,cAAcM,EAAwB;AASpD,MAAME,IAAgBP,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,UAAAO,GAAU,kBAAAC,IAAmB,SAAS,GAAGP,EAAA,GAASC,wBAC/DN,GAAA,EACC,UAAA;AAAA,EAAA,gBAAAO,EAACL,GAAA,EAAc;AAAA,EACf,gBAAAW;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,KAAAR;AAAA,MACA,WAAWG;AAAA,QACT;AAAA,QACAL;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAM;AAAA,QACD,gBAAAE,EAACE,GAAA,EAAsB,WAAU,+QAC/B,UAAA;AAAA,UAAA,gBAAAR,EAACS,GAAA,EAAE,WAAU,UAAA,CAAU;AAAA,UACvB,gBAAAT,EAAC,QAAA,EAAK,WAAU,WAAW,UAAAK,EAAA,CAAiB;AAAA,QAAA,EAAA,CAC9C;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AACF,GACF,CACD;AACDF,EAAc,cAAcI,EAAwB;AA8BpD,MAAMG,IAAcd,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAACW;AAAAA,EAAA;AAAA,IACC,KAAAZ;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDY,EAAY,cAAcC,EAAsB;AAEhD,MAAMC,IAAoBhB,EAAM,WAG9B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAACa;AAAAA,EAAA;AAAA,IACC,KAAAd;AAAA,IACA,WAAWG,EAAG,iCAAiCL,CAAS;AAAA,IACvD,GAAGC;AAAA,EAAA;AACN,CACD;AACDc,EAAkB,cAAcC,EAA4B;"}