@fuma-content/studio 1.0.0 → 1.0.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 (616) hide show
  1. package/build/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  2. package/build/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  3. package/build/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  4. package/build/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  5. package/build/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  6. package/build/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  7. package/build/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  8. package/build/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  9. package/build/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  10. package/build/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  11. package/build/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  12. package/build/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  13. package/build/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  14. package/build/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  15. package/build/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  16. package/build/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  17. package/build/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  18. package/build/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  19. package/build/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  20. package/build/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  21. package/build/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  22. package/build/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  23. package/build/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  24. package/build/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  25. package/build/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  26. package/build/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  27. package/build/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  28. package/build/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  29. package/build/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  30. package/build/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  31. package/build/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  32. package/build/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  33. package/build/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  34. package/build/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  35. package/build/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  36. package/build/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  37. package/build/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  38. package/build/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  39. package/build/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  40. package/build/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  41. package/build/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  42. package/build/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  43. package/build/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  44. package/build/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  45. package/build/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  46. package/build/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  47. package/build/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  48. package/build/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  49. package/build/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  50. package/build/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  51. package/build/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  52. package/build/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  53. package/build/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  54. package/build/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  55. package/build/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  56. package/build/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  57. package/build/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  58. package/build/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  59. package/build/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  60. package/build/client/assets/QueryClientProvider-DqiXnN2L.js +1 -0
  61. package/build/client/assets/actions-DkbV2Z0p.js +1 -0
  62. package/build/client/assets/actions-DpkI7OTF.js +1 -0
  63. package/build/client/assets/badge-CZkdLoIP.js +1 -0
  64. package/build/client/assets/button-Bm94vje1.js +41 -0
  65. package/build/client/assets/client-BWBqEatf.js +1 -0
  66. package/build/client/assets/client-Crg-pMcu.js +1 -0
  67. package/build/client/assets/client-DVneG3Rq.css +1 -0
  68. package/build/client/assets/client-OSVRoCKH.js +569 -0
  69. package/build/client/assets/dropdown-menu-EF-sTINr.js +1 -0
  70. package/build/client/assets/entry.rsc-D51PwnQL.js +1 -0
  71. package/build/client/assets/index-BdrDVoE8.js +1 -0
  72. package/build/client/assets/index-BpILsqFO.js +1 -0
  73. package/build/client/assets/index-Bx93mXy1.js +11 -0
  74. package/build/client/assets/index-CQRgqbuL.js +1 -0
  75. package/build/client/assets/index-DOs5iMXj.js +1 -0
  76. package/build/client/assets/index-DTzAH5JX.js +1 -0
  77. package/build/client/assets/layout-CnpYRqF0.js +1 -0
  78. package/build/client/assets/mdx-BNErtsK6.js +1 -0
  79. package/build/client/assets/page-DOzl4Kpa.js +1 -0
  80. package/build/client/assets/page-uNpJU_rv.js +1 -0
  81. package/build/client/assets/query-z9oLNeTD.js +1 -0
  82. package/build/client/assets/react-B8--K7an.js +10 -0
  83. package/build/client/assets/root-B_CXTQpA.js +1 -0
  84. package/build/client/assets/root-D3NoAGI1.js +1 -0
  85. package/build/client/assets/root-z8crlXSh.css +1 -0
  86. package/build/client/assets/route-DVneG3Rq.css +1 -0
  87. package/build/client/assets/router-a9jyj9wf.js +10 -0
  88. package/build/client/assets/separator-tWFpvpUX.js +1 -0
  89. package/build/client/assets/sidebar-BBYit8gY.js +12 -0
  90. package/build/client/assets/site-header-DQkKe-WA.js +1 -0
  91. package/build/client/assets/spinner-BdPhtfsc.js +1 -0
  92. package/build/client/assets/tooltip-Dvh-iHDG.js +16 -0
  93. package/build/client/assets/use-sync-ZgcwUdu_.js +9 -0
  94. package/build/client/assets/yaml-Cloe7OVn.js +32 -0
  95. package/build/server/__ssr_build/__vite_rsc_assets_manifest.js +268 -0
  96. package/build/server/__ssr_build/assets/QueryClientProvider-DlvBH3OQ.js +30 -0
  97. package/build/server/__ssr_build/assets/actions-B50-3n-a.js +63 -0
  98. package/build/server/__ssr_build/assets/actions-BFtCTvOL.js +21 -0
  99. package/{src/components/ui/badge.tsx → build/server/__ssr_build/assets/badge-DYFvBSp8.js} +23 -28
  100. package/build/server/__ssr_build/assets/button-C_-b_vqm.js +4098 -0
  101. package/build/server/__ssr_build/assets/client--HXec13w.js +130 -0
  102. package/build/server/__ssr_build/assets/client-BqW9rGyi.js +116885 -0
  103. package/build/server/__ssr_build/assets/client-CU90j0R8.js +154 -0
  104. package/build/server/__ssr_build/assets/dropdown-menu-D2YyT3lP.js +1312 -0
  105. package/build/server/__ssr_build/assets/entry.rsc-Cg_DxYkh.js +12 -0
  106. package/build/server/__ssr_build/assets/index-B-gno69w.js +58 -0
  107. package/build/server/__ssr_build/assets/index-DBc0nhEL.js +288 -0
  108. package/build/server/__ssr_build/assets/index-Dtw6X3NW.js +1092 -0
  109. package/build/server/__ssr_build/assets/index-DvVNShHF.js +86 -0
  110. package/build/server/__ssr_build/assets/index-PpqpVA51.js +612 -0
  111. package/build/server/__ssr_build/assets/layout-CPnSx9PI.js +454 -0
  112. package/build/server/__ssr_build/assets/mdx-bmeV1kyx.js +44 -0
  113. package/build/server/__ssr_build/assets/page-BwoghW3K.js +38 -0
  114. package/build/server/__ssr_build/assets/page-HxttullC.js +89 -0
  115. package/build/server/__ssr_build/assets/query-C1_xUNXy.js +1975 -0
  116. package/build/server/__ssr_build/assets/root-CS7F-km4.js +16 -0
  117. package/build/server/__ssr_build/assets/root-D-Y-rGw5.js +73 -0
  118. package/build/server/__ssr_build/assets/separator-8UA_ceSq.js +49 -0
  119. package/build/server/__ssr_build/assets/sidebar-BzNOZeBO.js +13194 -0
  120. package/build/server/__ssr_build/assets/site-header-CXHKSzqk.js +13 -0
  121. package/build/server/__ssr_build/assets/spinner-BXcLlTNs.js +1291 -0
  122. package/build/server/__ssr_build/assets/tooltip-DZ4WdJt-.js +9553 -0
  123. package/build/server/__ssr_build/assets/use-sync-TRS0zL-Y.js +3404 -0
  124. package/build/server/__ssr_build/assets/yaml-BEdFfhvc.js +63 -0
  125. package/build/server/__ssr_build/index.js +36076 -0
  126. package/build/server/__vite_rsc_assets_manifest.js +268 -0
  127. package/build/server/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  128. package/build/server/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  129. package/build/server/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  130. package/build/server/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  131. package/build/server/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  132. package/build/server/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  133. package/build/server/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  134. package/build/server/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  135. package/build/server/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  136. package/build/server/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  137. package/build/server/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  138. package/build/server/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  139. package/build/server/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  140. package/build/server/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  141. package/build/server/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  142. package/build/server/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  143. package/build/server/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  144. package/build/server/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  145. package/build/server/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  146. package/build/server/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  147. package/build/server/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  148. package/build/server/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  149. package/build/server/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  150. package/build/server/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  151. package/build/server/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  152. package/build/server/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  153. package/build/server/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  154. package/build/server/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  155. package/build/server/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  156. package/build/server/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  157. package/build/server/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  158. package/build/server/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  159. package/build/server/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  160. package/build/server/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  161. package/build/server/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  162. package/build/server/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  163. package/build/server/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  164. package/build/server/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  165. package/build/server/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  166. package/build/server/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  167. package/build/server/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  168. package/build/server/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  169. package/build/server/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  170. package/build/server/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  171. package/build/server/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  172. package/build/server/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  173. package/build/server/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  174. package/build/server/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  175. package/build/server/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  176. package/build/server/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  177. package/build/server/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  178. package/build/server/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  179. package/build/server/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  180. package/build/server/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  181. package/build/server/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  182. package/build/server/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  183. package/build/server/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  184. package/build/server/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  185. package/build/server/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  186. package/build/server/assets/actions-C92yn6jE.js +61 -0
  187. package/build/server/assets/actions-CWWFIcb1.js +46 -0
  188. package/build/server/assets/actions-DZdN0IBq.js +73 -0
  189. package/build/server/assets/client-BdxXy6rH.js +13 -0
  190. package/build/server/assets/client-DLzFPnCR.js +13 -0
  191. package/build/server/assets/config-Cb909uq6.js +257 -0
  192. package/build/server/assets/index-X49ifkk3.js +9 -0
  193. package/build/server/assets/jsx-runtime.react-server-D3We4JeM.js +324 -0
  194. package/build/server/assets/layout-CRw_6FCt.js +2071 -0
  195. package/build/server/assets/page-BcrsPZbM.js +9 -0
  196. package/build/server/assets/page-zlF_Ew1s.js +72 -0
  197. package/build/server/assets/root-CVOXO6T9.js +23 -0
  198. package/build/server/assets/root-dGb6ch_9.js +38 -0
  199. package/build/server/assets/root-z8crlXSh.css +1 -0
  200. package/build/server/assets/route-DVneG3Rq.css +1 -0
  201. package/build/server/assets/route-Ds0B4hTo.js +44 -0
  202. package/build/server/assets/route-DvwlfKZg.js +21 -0
  203. package/build/server/assets/route-o-6k10r9.js +70774 -0
  204. package/build/server/index.js +17032 -0
  205. package/dist/bin/cli.d.mts +1 -0
  206. package/dist/bin/cli.mjs +71 -0
  207. package/dist/bin.mjs +14 -40
  208. package/dist/package.mjs +1 -1
  209. package/package.json +33 -32
  210. package/dist/index.d.mts +0 -52
  211. package/dist/index.mjs +0 -67
  212. package/dist/mdx/actions.mjs +0 -32
  213. package/dist/mdx/client.mjs +0 -167
  214. package/dist/src/components/code-editor/mdx.lazy.mjs +0 -19
  215. package/dist/src/components/code-editor/mdx.mjs +0 -44
  216. package/dist/src/components/code-editor/yaml.lazy.mjs +0 -22
  217. package/dist/src/components/code-editor/yaml.mjs +0 -63
  218. package/dist/src/components/editor/editor-base-kit.mjs +0 -41
  219. package/dist/src/components/editor/editor-kit.mjs +0 -73
  220. package/dist/src/components/editor/md.mjs +0 -42
  221. package/dist/src/components/editor/plugins/ai-kit.mjs +0 -68
  222. package/dist/src/components/editor/plugins/align-base-kit.mjs +0 -28
  223. package/dist/src/components/editor/plugins/align-kit.mjs +0 -30
  224. package/dist/src/components/editor/plugins/autoformat-kit.mjs +0 -214
  225. package/dist/src/components/editor/plugins/basic-blocks-base-kit.mjs +0 -22
  226. package/dist/src/components/editor/plugins/basic-blocks-kit.mjs +0 -51
  227. package/dist/src/components/editor/plugins/basic-marks-base-kit.mjs +0 -20
  228. package/dist/src/components/editor/plugins/basic-marks-kit.mjs +0 -28
  229. package/dist/src/components/editor/plugins/block-menu-kit.mjs +0 -11
  230. package/dist/src/components/editor/plugins/block-placeholder-kit.mjs +0 -14
  231. package/dist/src/components/editor/plugins/block-selection-kit.mjs +0 -48
  232. package/dist/src/components/editor/plugins/callout-base-kit.mjs +0 -8
  233. package/dist/src/components/editor/plugins/callout-kit.mjs +0 -10
  234. package/dist/src/components/editor/plugins/code-block-base-kit.mjs +0 -16
  235. package/dist/src/components/editor/plugins/code-block-kit.mjs +0 -19
  236. package/dist/src/components/editor/plugins/column-base-kit.mjs +0 -8
  237. package/dist/src/components/editor/plugins/column-kit.mjs +0 -10
  238. package/dist/src/components/editor/plugins/comment-base-kit.mjs +0 -8
  239. package/dist/src/components/editor/plugins/comment-kit.mjs +0 -53
  240. package/dist/src/components/editor/plugins/copilot-kit.mjs +0 -49
  241. package/dist/src/components/editor/plugins/cursor-overlay-kit.mjs +0 -11
  242. package/dist/src/components/editor/plugins/date-base-kit.mjs +0 -8
  243. package/dist/src/components/editor/plugins/date-kit.mjs +0 -10
  244. package/dist/src/components/editor/plugins/discussion-kit.mjs +0 -94
  245. package/dist/src/components/editor/plugins/dnd-kit.mjs +0 -31
  246. package/dist/src/components/editor/plugins/emoji-kit.mjs +0 -11
  247. package/dist/src/components/editor/plugins/exit-break-kit.mjs +0 -12
  248. package/dist/src/components/editor/plugins/fixed-toolbar-kit.mjs +0 -15
  249. package/dist/src/components/editor/plugins/floating-toolbar-kit.mjs +0 -15
  250. package/dist/src/components/editor/plugins/font-base-kit.mjs +0 -14
  251. package/dist/src/components/editor/plugins/font-kit.mjs +0 -19
  252. package/dist/src/components/editor/plugins/indent-base-kit.mjs +0 -17
  253. package/dist/src/components/editor/plugins/indent-kit.mjs +0 -20
  254. package/dist/src/components/editor/plugins/line-height-base-kit.mjs +0 -20
  255. package/dist/src/components/editor/plugins/line-height-kit.mjs +0 -22
  256. package/dist/src/components/editor/plugins/link-base-kit.mjs +0 -8
  257. package/dist/src/components/editor/plugins/link-kit.mjs +0 -15
  258. package/dist/src/components/editor/plugins/list-base-kit.mjs +0 -19
  259. package/dist/src/components/editor/plugins/list-kit.mjs +0 -22
  260. package/dist/src/components/editor/plugins/markdown-kit.mjs +0 -17
  261. package/dist/src/components/editor/plugins/math-base-kit.mjs +0 -8
  262. package/dist/src/components/editor/plugins/math-kit.mjs +0 -10
  263. package/dist/src/components/editor/plugins/media-base-kit.mjs +0 -23
  264. package/dist/src/components/editor/plugins/media-kit.mjs +0 -37
  265. package/dist/src/components/editor/plugins/slash-kit.mjs +0 -11
  266. package/dist/src/components/editor/plugins/suggestion-base-kit.mjs +0 -8
  267. package/dist/src/components/editor/plugins/suggestion-kit.mjs +0 -50
  268. package/dist/src/components/editor/plugins/table-base-kit.mjs +0 -13
  269. package/dist/src/components/editor/plugins/table-kit.mjs +0 -15
  270. package/dist/src/components/editor/transforms.mjs +0 -125
  271. package/dist/src/components/editor/ui/ai-chat-editor.mjs +0 -21
  272. package/dist/src/components/editor/ui/ai-menu.mjs +0 -488
  273. package/dist/src/components/editor/ui/ai-node.mjs +0 -24
  274. package/dist/src/components/editor/ui/ai-toolbar-button.mjs +0 -23
  275. package/dist/src/components/editor/ui/align-toolbar-button.mjs +0 -71
  276. package/dist/src/components/editor/ui/block-context-menu.mjs +0 -130
  277. package/dist/src/components/editor/ui/block-discussion.mjs +0 -200
  278. package/dist/src/components/editor/ui/block-draggable.mjs +0 -265
  279. package/dist/src/components/editor/ui/block-list-static.mjs +0 -48
  280. package/dist/src/components/editor/ui/block-list.mjs +0 -47
  281. package/dist/src/components/editor/ui/block-selection.mjs +0 -28
  282. package/dist/src/components/editor/ui/block-suggestion.mjs +0 -319
  283. package/dist/src/components/editor/ui/blockquote-node-static.mjs +0 -14
  284. package/dist/src/components/editor/ui/blockquote-node.mjs +0 -16
  285. package/dist/src/components/editor/ui/callout-node-static.mjs +0 -29
  286. package/dist/src/components/editor/ui/callout-node.mjs +0 -50
  287. package/dist/src/components/editor/ui/caption.mjs +0 -39
  288. package/dist/src/components/editor/ui/code-block-node-static.mjs +0 -30
  289. package/dist/src/components/editor/ui/code-block-node.mjs +0 -121
  290. package/dist/src/components/editor/ui/code-node-static.mjs +0 -15
  291. package/dist/src/components/editor/ui/code-node.mjs +0 -17
  292. package/dist/src/components/editor/ui/column-node-static.mjs +0 -32
  293. package/dist/src/components/editor/ui/column-node.mjs +0 -229
  294. package/dist/src/components/editor/ui/comment-node-static.mjs +0 -14
  295. package/dist/src/components/editor/ui/comment-node.mjs +0 -33
  296. package/dist/src/components/editor/ui/comment-toolbar-button.mjs +0 -23
  297. package/dist/src/components/editor/ui/comment.mjs +0 -422
  298. package/dist/src/components/editor/ui/cursor-overlay.mjs +0 -36
  299. package/dist/src/components/editor/ui/date-node-static.mjs +0 -32
  300. package/dist/src/components/editor/ui/date-node.mjs +0 -60
  301. package/dist/src/components/editor/ui/editor-static.mjs +0 -31
  302. package/dist/src/components/editor/ui/editor.mjs +0 -60
  303. package/dist/src/components/editor/ui/emoji-node.mjs +0 -46
  304. package/dist/src/components/editor/ui/emoji-toolbar-button.mjs +0 -415
  305. package/dist/src/components/editor/ui/equation-node-static.mjs +0 -65
  306. package/dist/src/components/editor/ui/equation-node.mjs +0 -159
  307. package/dist/src/components/editor/ui/equation-toolbar-button.mjs +0 -23
  308. package/dist/src/components/editor/ui/fixed-toolbar-buttons.mjs +0 -109
  309. package/dist/src/components/editor/ui/fixed-toolbar.mjs +0 -16
  310. package/dist/src/components/editor/ui/floating-toolbar-buttons.mjs +0 -54
  311. package/dist/src/components/editor/ui/floating-toolbar.mjs +0 -51
  312. package/dist/src/components/editor/ui/font-color-toolbar-button.mjs +0 -637
  313. package/dist/src/components/editor/ui/font-size-toolbar-button.mjs +0 -83
  314. package/dist/src/components/editor/ui/ghost-text.mjs +0 -22
  315. package/dist/src/components/editor/ui/heading-node-static.mjs +0 -60
  316. package/dist/src/components/editor/ui/heading-node.mjs +0 -62
  317. package/dist/src/components/editor/ui/highlight-node-static.mjs +0 -15
  318. package/dist/src/components/editor/ui/highlight-node.mjs +0 -17
  319. package/dist/src/components/editor/ui/history-toolbar-button.mjs +0 -35
  320. package/dist/src/components/editor/ui/hr-node-static.mjs +0 -18
  321. package/dist/src/components/editor/ui/hr-node.mjs +0 -23
  322. package/dist/src/components/editor/ui/indent-toolbar-button.mjs +0 -29
  323. package/dist/src/components/editor/ui/inline-combobox.mjs +0 -148
  324. package/dist/src/components/editor/ui/insert-toolbar-button.mjs +0 -199
  325. package/dist/src/components/editor/ui/kbd-node-static.mjs +0 -15
  326. package/dist/src/components/editor/ui/kbd-node.mjs +0 -17
  327. package/dist/src/components/editor/ui/line-height-toolbar-button.mjs +0 -56
  328. package/dist/src/components/editor/ui/link-node-static.mjs +0 -20
  329. package/dist/src/components/editor/ui/link-node.mjs +0 -28
  330. package/dist/src/components/editor/ui/link-toolbar-button.mjs +0 -21
  331. package/dist/src/components/editor/ui/link-toolbar.mjs +0 -141
  332. package/dist/src/components/editor/ui/list-toolbar-button.mjs +0 -131
  333. package/dist/src/components/editor/ui/mark-toolbar-button.mjs +0 -20
  334. package/dist/src/components/editor/ui/media-image-node-static.mjs +0 -32
  335. package/dist/src/components/editor/ui/media-image-node.mjs +0 -64
  336. package/dist/src/components/editor/ui/media-placeholder-node.mjs +0 -184
  337. package/dist/src/components/editor/ui/media-preview-dialog.mjs +0 -113
  338. package/dist/src/components/editor/ui/media-toolbar-button.mjs +0 -156
  339. package/dist/src/components/editor/ui/media-toolbar.mjs +0 -80
  340. package/dist/src/components/editor/ui/media-upload-toast.mjs +0 -39
  341. package/dist/src/components/editor/ui/media-video-node-static.mjs +0 -27
  342. package/dist/src/components/editor/ui/mode-toolbar-button.mjs +0 -112
  343. package/dist/src/components/editor/ui/paragraph-node-static.mjs +0 -15
  344. package/dist/src/components/editor/ui/paragraph-node.mjs +0 -17
  345. package/dist/src/components/editor/ui/resize-handle.mjs +0 -43
  346. package/dist/src/components/editor/ui/slash-node.mjs +0 -228
  347. package/dist/src/components/editor/ui/suggestion-node-static.mjs +0 -24
  348. package/dist/src/components/editor/ui/suggestion-node.mjs +0 -111
  349. package/dist/src/components/editor/ui/suggestion-toolbar-button.mjs +0 -24
  350. package/dist/src/components/editor/ui/table-icons.mjs +0 -1310
  351. package/dist/src/components/editor/ui/table-node-static.mjs +0 -68
  352. package/dist/src/components/editor/ui/table-node.mjs +0 -375
  353. package/dist/src/components/editor/ui/table-toolbar-button.mjs +0 -190
  354. package/dist/src/components/editor/ui/turn-into-toolbar-button.mjs +0 -168
  355. package/dist/src/components/editor/use-chat.mjs +0 -80
  356. package/dist/src/components/json-schema-editor/client.mjs +0 -46
  357. package/dist/src/components/json-schema-editor/components/inputs.mjs +0 -438
  358. package/dist/src/components/json-schema-editor/get-default-values.mjs +0 -23
  359. package/dist/src/components/json-schema-editor/schema.mjs +0 -131
  360. package/dist/src/components/json-schema-editor/utils/merge-schema.mjs +0 -134
  361. package/dist/src/components/json-schema-editor/utils/schema-to-string.mjs +0 -53
  362. package/dist/src/components/ui/alert-dialog.mjs +0 -90
  363. package/dist/src/components/ui/avatar.mjs +0 -32
  364. package/dist/src/components/ui/button.mjs +0 -48
  365. package/dist/src/components/ui/calendar.mjs +0 -108
  366. package/dist/src/components/ui/checkbox.mjs +0 -23
  367. package/dist/src/components/ui/combobox.mjs +0 -53
  368. package/dist/src/components/ui/command.mjs +0 -42
  369. package/dist/src/components/ui/context-menu.mjs +0 -67
  370. package/dist/src/components/ui/dialog.mjs +0 -9
  371. package/dist/src/components/ui/dropdown-menu.mjs +0 -122
  372. package/dist/src/components/ui/input-group.mjs +0 -31
  373. package/dist/src/components/ui/input.mjs +0 -15
  374. package/dist/src/components/ui/label.mjs +0 -19
  375. package/dist/src/components/ui/popover.mjs +0 -37
  376. package/dist/src/components/ui/select.mjs +0 -80
  377. package/dist/src/components/ui/separator.mjs +0 -19
  378. package/dist/src/components/ui/spinner.mjs +0 -16
  379. package/dist/src/components/ui/tabs.mjs +0 -39
  380. package/dist/src/components/ui/textarea.mjs +0 -14
  381. package/dist/src/components/ui/toolbar.mjs +0 -183
  382. package/dist/src/components/ui/tooltip.mjs +0 -38
  383. package/dist/src/hooks/editor/use-is-creator.mjs +0 -19
  384. package/dist/src/hooks/use-upload-file.mjs +0 -73
  385. package/dist/src/lib/config.mjs +0 -34
  386. package/dist/src/lib/data/store.d.mts +0 -15
  387. package/dist/src/lib/lowlight.mjs +0 -7
  388. package/dist/src/lib/utils/deep-equal.mjs +0 -18
  389. package/dist/src/lib/utils/remove-undefined.mjs +0 -18
  390. package/dist/src/lib/utils.mjs +0 -10
  391. package/next.config.ts +0 -23
  392. package/postcss.config.mjs +0 -7
  393. package/src/app/(dashboard)/collection/[name]/[...slug]/page.client.tsx +0 -26
  394. package/src/app/(dashboard)/collection/[name]/[...slug]/page.tsx +0 -18
  395. package/src/app/(dashboard)/collection/[name]/page.client.tsx +0 -82
  396. package/src/app/(dashboard)/collection/[name]/page.tsx +0 -11
  397. package/src/app/(dashboard)/layout.tsx +0 -34
  398. package/src/app/(dashboard)/page.tsx +0 -38
  399. package/src/app/api/ai/command/prompts.ts +0 -313
  400. package/src/app/api/ai/command/route.ts +0 -203
  401. package/src/app/api/ai/command/utils.ts +0 -242
  402. package/src/app/api/ai/copilot/route.ts +0 -33
  403. package/src/app/api/uploadthing/route.ts +0 -5
  404. package/src/app/codeblock/LICENSE +0 -21
  405. package/src/app/codeblock/styles.css +0 -289
  406. package/src/app/favicon.ico +0 -0
  407. package/src/app/globals.css +0 -223
  408. package/src/app/layout.client.tsx +0 -15
  409. package/src/app/layout.tsx +0 -30
  410. package/src/components/app-sidebar.tsx +0 -162
  411. package/src/components/code-editor/mdx.lazy.tsx +0 -18
  412. package/src/components/code-editor/mdx.tsx +0 -48
  413. package/src/components/code-editor/yaml.lazy.tsx +0 -20
  414. package/src/components/code-editor/yaml.tsx +0 -71
  415. package/src/components/collection/actions.tsx +0 -41
  416. package/src/components/collection/client.tsx +0 -63
  417. package/src/components/collection/context.tsx +0 -24
  418. package/src/components/collection/document/actions.tsx +0 -83
  419. package/src/components/editor/editor-base-kit.tsx +0 -37
  420. package/src/components/editor/editor-kit.tsx +0 -87
  421. package/src/components/editor/md.tsx +0 -60
  422. package/src/components/editor/plugins/ai-kit.tsx +0 -102
  423. package/src/components/editor/plugins/align-base-kit.tsx +0 -16
  424. package/src/components/editor/plugins/align-kit.tsx +0 -18
  425. package/src/components/editor/plugins/autoformat-kit.tsx +0 -236
  426. package/src/components/editor/plugins/basic-blocks-base-kit.tsx +0 -34
  427. package/src/components/editor/plugins/basic-blocks-kit.tsx +0 -87
  428. package/src/components/editor/plugins/basic-marks-base-kit.tsx +0 -26
  429. package/src/components/editor/plugins/basic-marks-kit.tsx +0 -40
  430. package/src/components/editor/plugins/basic-nodes-kit.tsx +0 -6
  431. package/src/components/editor/plugins/block-menu-kit.tsx +0 -14
  432. package/src/components/editor/plugins/block-placeholder-kit.tsx +0 -17
  433. package/src/components/editor/plugins/block-selection-kit.tsx +0 -54
  434. package/src/components/editor/plugins/callout-base-kit.tsx +0 -5
  435. package/src/components/editor/plugins/callout-kit.tsx +0 -7
  436. package/src/components/editor/plugins/code-block-base-kit.tsx +0 -16
  437. package/src/components/editor/plugins/code-block-kit.tsx +0 -19
  438. package/src/components/editor/plugins/column-base-kit.tsx +0 -11
  439. package/src/components/editor/plugins/column-kit.tsx +0 -10
  440. package/src/components/editor/plugins/comment-base-kit.tsx +0 -5
  441. package/src/components/editor/plugins/comment-kit.tsx +0 -92
  442. package/src/components/editor/plugins/copilot-kit.tsx +0 -70
  443. package/src/components/editor/plugins/cursor-overlay-kit.tsx +0 -13
  444. package/src/components/editor/plugins/date-base-kit.tsx +0 -5
  445. package/src/components/editor/plugins/date-kit.tsx +0 -7
  446. package/src/components/editor/plugins/discussion-kit.tsx +0 -142
  447. package/src/components/editor/plugins/dnd-kit.tsx +0 -25
  448. package/src/components/editor/plugins/emoji-kit.tsx +0 -13
  449. package/src/components/editor/plugins/exit-break-kit.tsx +0 -12
  450. package/src/components/editor/plugins/fixed-toolbar-kit.tsx +0 -19
  451. package/src/components/editor/plugins/floating-toolbar-kit.tsx +0 -19
  452. package/src/components/editor/plugins/font-base-kit.tsx +0 -20
  453. package/src/components/editor/plugins/font-kit.tsx +0 -29
  454. package/src/components/editor/plugins/indent-base-kit.tsx +0 -13
  455. package/src/components/editor/plugins/indent-kit.tsx +0 -22
  456. package/src/components/editor/plugins/line-height-base-kit.tsx +0 -14
  457. package/src/components/editor/plugins/line-height-kit.tsx +0 -16
  458. package/src/components/editor/plugins/link-base-kit.tsx +0 -5
  459. package/src/components/editor/plugins/link-kit.tsx +0 -15
  460. package/src/components/editor/plugins/list-base-kit.tsx +0 -17
  461. package/src/components/editor/plugins/list-kit.tsx +0 -26
  462. package/src/components/editor/plugins/markdown-kit.tsx +0 -13
  463. package/src/components/editor/plugins/math-base-kit.tsx +0 -11
  464. package/src/components/editor/plugins/math-kit.tsx +0 -10
  465. package/src/components/editor/plugins/media-base-kit.tsx +0 -25
  466. package/src/components/editor/plugins/media-kit.tsx +0 -28
  467. package/src/components/editor/plugins/slash-kit.tsx +0 -18
  468. package/src/components/editor/plugins/suggestion-base-kit.tsx +0 -5
  469. package/src/components/editor/plugins/suggestion-kit.tsx +0 -83
  470. package/src/components/editor/plugins/table-base-kit.tsx +0 -20
  471. package/src/components/editor/plugins/table-kit.tsx +0 -22
  472. package/src/components/editor/settings-dialog.tsx +0 -418
  473. package/src/components/editor/transforms.ts +0 -193
  474. package/src/components/editor/types.ts +0 -149
  475. package/src/components/editor/ui/ai-chat-editor.tsx +0 -20
  476. package/src/components/editor/ui/ai-menu.tsx +0 -663
  477. package/src/components/editor/ui/ai-node.tsx +0 -40
  478. package/src/components/editor/ui/ai-toolbar-button.tsx +0 -23
  479. package/src/components/editor/ui/align-toolbar-button.tsx +0 -78
  480. package/src/components/editor/ui/block-context-menu.tsx +0 -154
  481. package/src/components/editor/ui/block-discussion.tsx +0 -318
  482. package/src/components/editor/ui/block-draggable.tsx +0 -464
  483. package/src/components/editor/ui/block-list-static.tsx +0 -75
  484. package/src/components/editor/ui/block-list.tsx +0 -72
  485. package/src/components/editor/ui/block-selection.tsx +0 -37
  486. package/src/components/editor/ui/block-suggestion.tsx +0 -438
  487. package/src/components/editor/ui/blockquote-node-static.tsx +0 -5
  488. package/src/components/editor/ui/blockquote-node.tsx +0 -7
  489. package/src/components/editor/ui/callout-node-static.tsx +0 -30
  490. package/src/components/editor/ui/callout-node.tsx +0 -64
  491. package/src/components/editor/ui/caption.tsx +0 -55
  492. package/src/components/editor/ui/code-block-node-static.tsx +0 -33
  493. package/src/components/editor/ui/code-block-node.tsx +0 -161
  494. package/src/components/editor/ui/code-node-static.tsx +0 -15
  495. package/src/components/editor/ui/code-node.tsx +0 -17
  496. package/src/components/editor/ui/column-node-static.tsx +0 -27
  497. package/src/components/editor/ui/column-node.tsx +0 -285
  498. package/src/components/editor/ui/comment-node-static.tsx +0 -12
  499. package/src/components/editor/ui/comment-node.tsx +0 -43
  500. package/src/components/editor/ui/comment-toolbar-button.tsx +0 -24
  501. package/src/components/editor/ui/comment.tsx +0 -577
  502. package/src/components/editor/ui/cursor-overlay.tsx +0 -66
  503. package/src/components/editor/ui/date-node-static.tsx +0 -45
  504. package/src/components/editor/ui/date-node.tsx +0 -86
  505. package/src/components/editor/ui/editor-static.tsx +0 -47
  506. package/src/components/editor/ui/editor.tsx +0 -120
  507. package/src/components/editor/ui/emoji-node.tsx +0 -65
  508. package/src/components/editor/ui/emoji-toolbar-button.tsx +0 -582
  509. package/src/components/editor/ui/equation-node-static.tsx +0 -94
  510. package/src/components/editor/ui/equation-node.tsx +0 -218
  511. package/src/components/editor/ui/equation-toolbar-button.tsx +0 -24
  512. package/src/components/editor/ui/fixed-toolbar-buttons.tsx +0 -135
  513. package/src/components/editor/ui/fixed-toolbar.tsx +0 -17
  514. package/src/components/editor/ui/floating-toolbar-buttons.tsx +0 -72
  515. package/src/components/editor/ui/floating-toolbar.tsx +0 -76
  516. package/src/components/editor/ui/font-color-toolbar-button.tsx +0 -804
  517. package/src/components/editor/ui/font-size-toolbar-button.tsx +0 -102
  518. package/src/components/editor/ui/ghost-text.tsx +0 -27
  519. package/src/components/editor/ui/heading-node-static.tsx +0 -54
  520. package/src/components/editor/ui/heading-node.tsx +0 -54
  521. package/src/components/editor/ui/highlight-node-static.tsx +0 -11
  522. package/src/components/editor/ui/highlight-node.tsx +0 -13
  523. package/src/components/editor/ui/history-toolbar-button.tsx +0 -41
  524. package/src/components/editor/ui/hr-node-static.tsx +0 -16
  525. package/src/components/editor/ui/hr-node.tsx +0 -28
  526. package/src/components/editor/ui/indent-toolbar-button.tsx +0 -27
  527. package/src/components/editor/ui/inline-combobox.tsx +0 -251
  528. package/src/components/editor/ui/insert-toolbar-button.tsx +0 -242
  529. package/src/components/editor/ui/kbd-node-static.tsx +0 -15
  530. package/src/components/editor/ui/kbd-node.tsx +0 -17
  531. package/src/components/editor/ui/line-height-toolbar-button.tsx +0 -66
  532. package/src/components/editor/ui/link-node-static.tsx +0 -21
  533. package/src/components/editor/ui/link-node.tsx +0 -37
  534. package/src/components/editor/ui/link-toolbar-button.tsx +0 -18
  535. package/src/components/editor/ui/link-toolbar.tsx +0 -196
  536. package/src/components/editor/ui/list-toolbar-button.tsx +0 -195
  537. package/src/components/editor/ui/mark-toolbar-button.tsx +0 -20
  538. package/src/components/editor/ui/media-image-node-static.tsx +0 -33
  539. package/src/components/editor/ui/media-image-node.tsx +0 -75
  540. package/src/components/editor/ui/media-placeholder-node.tsx +0 -235
  541. package/src/components/editor/ui/media-preview-dialog.tsx +0 -145
  542. package/src/components/editor/ui/media-toolbar-button.tsx +0 -202
  543. package/src/components/editor/ui/media-toolbar.tsx +0 -100
  544. package/src/components/editor/ui/media-upload-toast.tsx +0 -59
  545. package/src/components/editor/ui/media-video-node-static.tsx +0 -23
  546. package/src/components/editor/ui/mode-toolbar-button.tsx +0 -121
  547. package/src/components/editor/ui/paragraph-node-static.tsx +0 -13
  548. package/src/components/editor/ui/paragraph-node.tsx +0 -15
  549. package/src/components/editor/ui/resize-handle.tsx +0 -79
  550. package/src/components/editor/ui/slash-node.tsx +0 -274
  551. package/src/components/editor/ui/suggestion-node-static.tsx +0 -30
  552. package/src/components/editor/ui/suggestion-node.tsx +0 -157
  553. package/src/components/editor/ui/suggestion-toolbar-button.tsx +0 -25
  554. package/src/components/editor/ui/table-icons.tsx +0 -685
  555. package/src/components/editor/ui/table-node-static.tsx +0 -86
  556. package/src/components/editor/ui/table-node.tsx +0 -569
  557. package/src/components/editor/ui/table-toolbar-button.tsx +0 -260
  558. package/src/components/editor/ui/turn-into-toolbar-button.tsx +0 -176
  559. package/src/components/editor/use-chat.ts +0 -120
  560. package/src/components/icons/logo.tsx +0 -37
  561. package/src/components/json-schema-editor/client.tsx +0 -55
  562. package/src/components/json-schema-editor/components/inputs.tsx +0 -612
  563. package/src/components/json-schema-editor/get-default-values.ts +0 -29
  564. package/src/components/json-schema-editor/schema.tsx +0 -206
  565. package/src/components/json-schema-editor/utils/merge-schema.ts +0 -167
  566. package/src/components/json-schema-editor/utils/schema-to-string.ts +0 -87
  567. package/src/components/nav-user.tsx +0 -102
  568. package/src/components/site-header.tsx +0 -13
  569. package/src/components/ui/alert-dialog.tsx +0 -182
  570. package/src/components/ui/avatar.tsx +0 -96
  571. package/src/components/ui/button.tsx +0 -65
  572. package/src/components/ui/calendar.tsx +0 -186
  573. package/src/components/ui/checkbox.tsx +0 -29
  574. package/src/components/ui/combobox.tsx +0 -267
  575. package/src/components/ui/command.tsx +0 -180
  576. package/src/components/ui/context-menu.tsx +0 -161
  577. package/src/components/ui/dialog.tsx +0 -142
  578. package/src/components/ui/drawer.tsx +0 -120
  579. package/src/components/ui/dropdown-menu.tsx +0 -239
  580. package/src/components/ui/field.tsx +0 -224
  581. package/src/components/ui/input-group.tsx +0 -144
  582. package/src/components/ui/input.tsx +0 -19
  583. package/src/components/ui/label.tsx +0 -18
  584. package/src/components/ui/popover.tsx +0 -76
  585. package/src/components/ui/select.tsx +0 -182
  586. package/src/components/ui/separator.tsx +0 -28
  587. package/src/components/ui/sheet.tsx +0 -130
  588. package/src/components/ui/sidebar.tsx +0 -608
  589. package/src/components/ui/sonner.tsx +0 -45
  590. package/src/components/ui/spinner.tsx +0 -15
  591. package/src/components/ui/table.tsx +0 -89
  592. package/src/components/ui/tabs.tsx +0 -60
  593. package/src/components/ui/textarea.tsx +0 -18
  594. package/src/components/ui/toggle-group.tsx +0 -86
  595. package/src/components/ui/toggle.tsx +0 -45
  596. package/src/components/ui/toolbar.tsx +0 -365
  597. package/src/components/ui/tooltip.tsx +0 -57
  598. package/src/hooks/editor/use-is-creator.ts +0 -21
  599. package/src/hooks/use-mobile.ts +0 -19
  600. package/src/hooks/use-mounted.ts +0 -11
  601. package/src/hooks/use-upload-file.ts +0 -121
  602. package/src/lib/ai/markdown-joiner-transform.ts +0 -235
  603. package/src/lib/config.ts +0 -42
  604. package/src/lib/data/actions.ts +0 -46
  605. package/src/lib/data/boundary.client.tsx +0 -22
  606. package/src/lib/data/boundary.tsx +0 -22
  607. package/src/lib/data/query.ts +0 -9
  608. package/src/lib/data/store.ts +0 -52
  609. package/src/lib/lowlight.ts +0 -3
  610. package/src/lib/uploadthing.ts +0 -19
  611. package/src/lib/utils/deep-equal.ts +0 -37
  612. package/src/lib/utils/remove-undefined.ts +0 -21
  613. package/src/lib/utils/urls.ts +0 -6
  614. package/src/lib/utils.ts +0 -6
  615. package/tsconfig.build.json +0 -24
  616. package/tsconfig.json +0 -37
@@ -0,0 +1,1291 @@
1
+ import { r as reactExports, j as jsxRuntimeExports, i as reactDomExports } from "../index.js";
2
+ import { c as createLucideIcon, j as createPopperScope, h as useControllableState, R as Root2$1, a as createContextScope, k as useId, u as useComposedRefs, A as Anchor, P as Primitive, b as composeEventHandlers, f as useLayoutEffect2, l as Portal$1, V as VISUALLY_HIDDEN_STYLES, e as useCallbackRef, m as hideOthers, p as useFocusGuards, n as ReactRemoveScroll, o as createSlot, F as FocusScope, D as DismissableLayer, C as Content, q as Arrow, s as cn } from "./button-C_-b_vqm.js";
3
+ import { u as useDirection, a as createCollection, C as Check } from "./index-DBc0nhEL.js";
4
+ const __iconNode$2 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
5
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$2);
6
+ const __iconNode$1 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
7
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$1);
8
+ const __iconNode = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
9
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode);
10
+ function usePrevious(value) {
11
+ const ref = reactExports.useRef({ value, previous: value });
12
+ return reactExports.useMemo(() => {
13
+ if (ref.current.value !== value) {
14
+ ref.current.previous = ref.current.value;
15
+ ref.current.value = value;
16
+ }
17
+ return ref.current.previous;
18
+ }, [value]);
19
+ }
20
+ function clamp(value, [min, max]) {
21
+ return Math.min(max, Math.max(min, value));
22
+ }
23
+ var OPEN_KEYS = [" ", "Enter", "ArrowUp", "ArrowDown"];
24
+ var SELECTION_KEYS = [" ", "Enter"];
25
+ var SELECT_NAME = "Select";
26
+ var [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME);
27
+ var [createSelectContext] = createContextScope(SELECT_NAME, [
28
+ createCollectionScope,
29
+ createPopperScope
30
+ ]);
31
+ var usePopperScope = createPopperScope();
32
+ var [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME);
33
+ var [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);
34
+ var Select$1 = (props) => {
35
+ const {
36
+ __scopeSelect,
37
+ children,
38
+ open: openProp,
39
+ defaultOpen,
40
+ onOpenChange,
41
+ value: valueProp,
42
+ defaultValue,
43
+ onValueChange,
44
+ dir,
45
+ name,
46
+ autoComplete,
47
+ disabled,
48
+ required,
49
+ form
50
+ } = props;
51
+ const popperScope = usePopperScope(__scopeSelect);
52
+ const [trigger, setTrigger] = reactExports.useState(null);
53
+ const [valueNode, setValueNode] = reactExports.useState(null);
54
+ const [valueNodeHasChildren, setValueNodeHasChildren] = reactExports.useState(false);
55
+ const direction = useDirection(dir);
56
+ const [open, setOpen] = useControllableState({
57
+ prop: openProp,
58
+ defaultProp: defaultOpen ?? false,
59
+ onChange: onOpenChange,
60
+ caller: SELECT_NAME
61
+ });
62
+ const [value, setValue] = useControllableState({
63
+ prop: valueProp,
64
+ defaultProp: defaultValue,
65
+ onChange: onValueChange,
66
+ caller: SELECT_NAME
67
+ });
68
+ const triggerPointerDownPosRef = reactExports.useRef(null);
69
+ const isFormControl = trigger ? form || !!trigger.closest("form") : true;
70
+ const [nativeOptionsSet, setNativeOptionsSet] = reactExports.useState(/* @__PURE__ */ new Set());
71
+ const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(";");
72
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Root2$1, { ...popperScope, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
73
+ SelectProvider,
74
+ {
75
+ required,
76
+ scope: __scopeSelect,
77
+ trigger,
78
+ onTriggerChange: setTrigger,
79
+ valueNode,
80
+ onValueNodeChange: setValueNode,
81
+ valueNodeHasChildren,
82
+ onValueNodeHasChildrenChange: setValueNodeHasChildren,
83
+ contentId: useId(),
84
+ value,
85
+ onValueChange: setValue,
86
+ open,
87
+ onOpenChange: setOpen,
88
+ dir: direction,
89
+ triggerPointerDownPosRef,
90
+ disabled,
91
+ children: [
92
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
93
+ SelectNativeOptionsProvider,
94
+ {
95
+ scope: props.__scopeSelect,
96
+ onNativeOptionAdd: reactExports.useCallback((option) => {
97
+ setNativeOptionsSet((prev) => new Set(prev).add(option));
98
+ }, []),
99
+ onNativeOptionRemove: reactExports.useCallback((option) => {
100
+ setNativeOptionsSet((prev) => {
101
+ const optionsSet = new Set(prev);
102
+ optionsSet.delete(option);
103
+ return optionsSet;
104
+ });
105
+ }, []),
106
+ children
107
+ }
108
+ ) }),
109
+ isFormControl ? /* @__PURE__ */ jsxRuntimeExports.jsxs(
110
+ SelectBubbleInput,
111
+ {
112
+ "aria-hidden": true,
113
+ required,
114
+ tabIndex: -1,
115
+ name,
116
+ autoComplete,
117
+ value,
118
+ onChange: (event) => setValue(event.target.value),
119
+ disabled,
120
+ form,
121
+ children: [
122
+ value === void 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "" }) : null,
123
+ Array.from(nativeOptionsSet)
124
+ ]
125
+ },
126
+ nativeSelectKey
127
+ ) : null
128
+ ]
129
+ }
130
+ ) });
131
+ };
132
+ Select$1.displayName = SELECT_NAME;
133
+ var TRIGGER_NAME = "SelectTrigger";
134
+ var SelectTrigger$1 = reactExports.forwardRef(
135
+ (props, forwardedRef) => {
136
+ const { __scopeSelect, disabled = false, ...triggerProps } = props;
137
+ const popperScope = usePopperScope(__scopeSelect);
138
+ const context = useSelectContext(TRIGGER_NAME, __scopeSelect);
139
+ const isDisabled = context.disabled || disabled;
140
+ const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange);
141
+ const getItems = useCollection(__scopeSelect);
142
+ const pointerTypeRef = reactExports.useRef("touch");
143
+ const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {
144
+ const enabledItems = getItems().filter((item) => !item.disabled);
145
+ const currentItem = enabledItems.find((item) => item.value === context.value);
146
+ const nextItem = findNextItem(enabledItems, search, currentItem);
147
+ if (nextItem !== void 0) {
148
+ context.onValueChange(nextItem.value);
149
+ }
150
+ });
151
+ const handleOpen = (pointerEvent) => {
152
+ if (!isDisabled) {
153
+ context.onOpenChange(true);
154
+ resetTypeahead();
155
+ }
156
+ if (pointerEvent) {
157
+ context.triggerPointerDownPosRef.current = {
158
+ x: Math.round(pointerEvent.pageX),
159
+ y: Math.round(pointerEvent.pageY)
160
+ };
161
+ }
162
+ };
163
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
164
+ Primitive.button,
165
+ {
166
+ type: "button",
167
+ role: "combobox",
168
+ "aria-controls": context.contentId,
169
+ "aria-expanded": context.open,
170
+ "aria-required": context.required,
171
+ "aria-autocomplete": "none",
172
+ dir: context.dir,
173
+ "data-state": context.open ? "open" : "closed",
174
+ disabled: isDisabled,
175
+ "data-disabled": isDisabled ? "" : void 0,
176
+ "data-placeholder": shouldShowPlaceholder(context.value) ? "" : void 0,
177
+ ...triggerProps,
178
+ ref: composedRefs,
179
+ onClick: composeEventHandlers(triggerProps.onClick, (event) => {
180
+ event.currentTarget.focus();
181
+ if (pointerTypeRef.current !== "mouse") {
182
+ handleOpen(event);
183
+ }
184
+ }),
185
+ onPointerDown: composeEventHandlers(triggerProps.onPointerDown, (event) => {
186
+ pointerTypeRef.current = event.pointerType;
187
+ const target = event.target;
188
+ if (target.hasPointerCapture(event.pointerId)) {
189
+ target.releasePointerCapture(event.pointerId);
190
+ }
191
+ if (event.button === 0 && event.ctrlKey === false && event.pointerType === "mouse") {
192
+ handleOpen(event);
193
+ event.preventDefault();
194
+ }
195
+ }),
196
+ onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (event) => {
197
+ const isTypingAhead = searchRef.current !== "";
198
+ const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;
199
+ if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);
200
+ if (isTypingAhead && event.key === " ") return;
201
+ if (OPEN_KEYS.includes(event.key)) {
202
+ handleOpen();
203
+ event.preventDefault();
204
+ }
205
+ })
206
+ }
207
+ ) });
208
+ }
209
+ );
210
+ SelectTrigger$1.displayName = TRIGGER_NAME;
211
+ var VALUE_NAME = "SelectValue";
212
+ var SelectValue$1 = reactExports.forwardRef(
213
+ (props, forwardedRef) => {
214
+ const { __scopeSelect, className, style, children, placeholder = "", ...valueProps } = props;
215
+ const context = useSelectContext(VALUE_NAME, __scopeSelect);
216
+ const { onValueNodeHasChildrenChange } = context;
217
+ const hasChildren = children !== void 0;
218
+ const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);
219
+ useLayoutEffect2(() => {
220
+ onValueNodeHasChildrenChange(hasChildren);
221
+ }, [onValueNodeHasChildrenChange, hasChildren]);
222
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
223
+ Primitive.span,
224
+ {
225
+ ...valueProps,
226
+ ref: composedRefs,
227
+ style: { pointerEvents: "none" },
228
+ children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: placeholder }) : children
229
+ }
230
+ );
231
+ }
232
+ );
233
+ SelectValue$1.displayName = VALUE_NAME;
234
+ var ICON_NAME = "SelectIcon";
235
+ var SelectIcon = reactExports.forwardRef(
236
+ (props, forwardedRef) => {
237
+ const { __scopeSelect, children, ...iconProps } = props;
238
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Primitive.span, { "aria-hidden": true, ...iconProps, ref: forwardedRef, children: children || "▼" });
239
+ }
240
+ );
241
+ SelectIcon.displayName = ICON_NAME;
242
+ var PORTAL_NAME = "SelectPortal";
243
+ var SelectPortal = (props) => {
244
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$1, { asChild: true, ...props });
245
+ };
246
+ SelectPortal.displayName = PORTAL_NAME;
247
+ var CONTENT_NAME = "SelectContent";
248
+ var SelectContent$1 = reactExports.forwardRef(
249
+ (props, forwardedRef) => {
250
+ const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);
251
+ const [fragment, setFragment] = reactExports.useState();
252
+ useLayoutEffect2(() => {
253
+ setFragment(new DocumentFragment());
254
+ }, []);
255
+ if (!context.open) {
256
+ const frag = fragment;
257
+ return frag ? reactDomExports.createPortal(
258
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: props.children }) }) }),
259
+ frag
260
+ ) : null;
261
+ }
262
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SelectContentImpl, { ...props, ref: forwardedRef });
263
+ }
264
+ );
265
+ SelectContent$1.displayName = CONTENT_NAME;
266
+ var CONTENT_MARGIN = 10;
267
+ var [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);
268
+ var CONTENT_IMPL_NAME = "SelectContentImpl";
269
+ var Slot = createSlot("SelectContent.RemoveScroll");
270
+ var SelectContentImpl = reactExports.forwardRef(
271
+ (props, forwardedRef) => {
272
+ const {
273
+ __scopeSelect,
274
+ position = "item-aligned",
275
+ onCloseAutoFocus,
276
+ onEscapeKeyDown,
277
+ onPointerDownOutside,
278
+ //
279
+ // PopperContent props
280
+ side,
281
+ sideOffset,
282
+ align,
283
+ alignOffset,
284
+ arrowPadding,
285
+ collisionBoundary,
286
+ collisionPadding,
287
+ sticky,
288
+ hideWhenDetached,
289
+ avoidCollisions,
290
+ //
291
+ ...contentProps
292
+ } = props;
293
+ const context = useSelectContext(CONTENT_NAME, __scopeSelect);
294
+ const [content, setContent] = reactExports.useState(null);
295
+ const [viewport, setViewport] = reactExports.useState(null);
296
+ const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));
297
+ const [selectedItem, setSelectedItem] = reactExports.useState(null);
298
+ const [selectedItemText, setSelectedItemText] = reactExports.useState(
299
+ null
300
+ );
301
+ const getItems = useCollection(__scopeSelect);
302
+ const [isPositioned, setIsPositioned] = reactExports.useState(false);
303
+ const firstValidItemFoundRef = reactExports.useRef(false);
304
+ reactExports.useEffect(() => {
305
+ if (content) return hideOthers(content);
306
+ }, [content]);
307
+ useFocusGuards();
308
+ const focusFirst = reactExports.useCallback(
309
+ (candidates) => {
310
+ const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);
311
+ const [lastItem] = restItems.slice(-1);
312
+ const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;
313
+ for (const candidate of candidates) {
314
+ if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;
315
+ candidate?.scrollIntoView({ block: "nearest" });
316
+ if (candidate === firstItem && viewport) viewport.scrollTop = 0;
317
+ if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;
318
+ candidate?.focus();
319
+ if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;
320
+ }
321
+ },
322
+ [getItems, viewport]
323
+ );
324
+ const focusSelectedItem = reactExports.useCallback(
325
+ () => focusFirst([selectedItem, content]),
326
+ [focusFirst, selectedItem, content]
327
+ );
328
+ reactExports.useEffect(() => {
329
+ if (isPositioned) {
330
+ focusSelectedItem();
331
+ }
332
+ }, [isPositioned, focusSelectedItem]);
333
+ const { onOpenChange, triggerPointerDownPosRef } = context;
334
+ reactExports.useEffect(() => {
335
+ if (content) {
336
+ let pointerMoveDelta = { x: 0, y: 0 };
337
+ const handlePointerMove = (event) => {
338
+ pointerMoveDelta = {
339
+ x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),
340
+ y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0))
341
+ };
342
+ };
343
+ const handlePointerUp = (event) => {
344
+ if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {
345
+ event.preventDefault();
346
+ } else {
347
+ if (!content.contains(event.target)) {
348
+ onOpenChange(false);
349
+ }
350
+ }
351
+ document.removeEventListener("pointermove", handlePointerMove);
352
+ triggerPointerDownPosRef.current = null;
353
+ };
354
+ if (triggerPointerDownPosRef.current !== null) {
355
+ document.addEventListener("pointermove", handlePointerMove);
356
+ document.addEventListener("pointerup", handlePointerUp, { capture: true, once: true });
357
+ }
358
+ return () => {
359
+ document.removeEventListener("pointermove", handlePointerMove);
360
+ document.removeEventListener("pointerup", handlePointerUp, { capture: true });
361
+ };
362
+ }
363
+ }, [content, onOpenChange, triggerPointerDownPosRef]);
364
+ reactExports.useEffect(() => {
365
+ const close = () => onOpenChange(false);
366
+ window.addEventListener("blur", close);
367
+ window.addEventListener("resize", close);
368
+ return () => {
369
+ window.removeEventListener("blur", close);
370
+ window.removeEventListener("resize", close);
371
+ };
372
+ }, [onOpenChange]);
373
+ const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {
374
+ const enabledItems = getItems().filter((item) => !item.disabled);
375
+ const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);
376
+ const nextItem = findNextItem(enabledItems, search, currentItem);
377
+ if (nextItem) {
378
+ setTimeout(() => nextItem.ref.current.focus());
379
+ }
380
+ });
381
+ const itemRefCallback = reactExports.useCallback(
382
+ (node, value, disabled) => {
383
+ const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;
384
+ const isSelectedItem = context.value !== void 0 && context.value === value;
385
+ if (isSelectedItem || isFirstValidItem) {
386
+ setSelectedItem(node);
387
+ if (isFirstValidItem) firstValidItemFoundRef.current = true;
388
+ }
389
+ },
390
+ [context.value]
391
+ );
392
+ const handleItemLeave = reactExports.useCallback(() => content?.focus(), [content]);
393
+ const itemTextRefCallback = reactExports.useCallback(
394
+ (node, value, disabled) => {
395
+ const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;
396
+ const isSelectedItem = context.value !== void 0 && context.value === value;
397
+ if (isSelectedItem || isFirstValidItem) {
398
+ setSelectedItemText(node);
399
+ }
400
+ },
401
+ [context.value]
402
+ );
403
+ const SelectPosition = position === "popper" ? SelectPopperPosition : SelectItemAlignedPosition;
404
+ const popperContentProps = SelectPosition === SelectPopperPosition ? {
405
+ side,
406
+ sideOffset,
407
+ align,
408
+ alignOffset,
409
+ arrowPadding,
410
+ collisionBoundary,
411
+ collisionPadding,
412
+ sticky,
413
+ hideWhenDetached,
414
+ avoidCollisions
415
+ } : {};
416
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
417
+ SelectContentProvider,
418
+ {
419
+ scope: __scopeSelect,
420
+ content,
421
+ viewport,
422
+ onViewportChange: setViewport,
423
+ itemRefCallback,
424
+ selectedItem,
425
+ onItemLeave: handleItemLeave,
426
+ itemTextRefCallback,
427
+ focusSelectedItem,
428
+ selectedItemText,
429
+ position,
430
+ isPositioned,
431
+ searchRef,
432
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(ReactRemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
433
+ FocusScope,
434
+ {
435
+ asChild: true,
436
+ trapped: context.open,
437
+ onMountAutoFocus: (event) => {
438
+ event.preventDefault();
439
+ },
440
+ onUnmountAutoFocus: composeEventHandlers(onCloseAutoFocus, (event) => {
441
+ context.trigger?.focus({ preventScroll: true });
442
+ event.preventDefault();
443
+ }),
444
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
445
+ DismissableLayer,
446
+ {
447
+ asChild: true,
448
+ disableOutsidePointerEvents: true,
449
+ onEscapeKeyDown,
450
+ onPointerDownOutside,
451
+ onFocusOutside: (event) => event.preventDefault(),
452
+ onDismiss: () => context.onOpenChange(false),
453
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
454
+ SelectPosition,
455
+ {
456
+ role: "listbox",
457
+ id: context.contentId,
458
+ "data-state": context.open ? "open" : "closed",
459
+ dir: context.dir,
460
+ onContextMenu: (event) => event.preventDefault(),
461
+ ...contentProps,
462
+ ...popperContentProps,
463
+ onPlaced: () => setIsPositioned(true),
464
+ ref: composedRefs,
465
+ style: {
466
+ // flex layout so we can place the scroll buttons properly
467
+ display: "flex",
468
+ flexDirection: "column",
469
+ // reset the outline by default as the content MAY get focused
470
+ outline: "none",
471
+ ...contentProps.style
472
+ },
473
+ onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {
474
+ const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;
475
+ if (event.key === "Tab") event.preventDefault();
476
+ if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);
477
+ if (["ArrowUp", "ArrowDown", "Home", "End"].includes(event.key)) {
478
+ const items = getItems().filter((item) => !item.disabled);
479
+ let candidateNodes = items.map((item) => item.ref.current);
480
+ if (["ArrowUp", "End"].includes(event.key)) {
481
+ candidateNodes = candidateNodes.slice().reverse();
482
+ }
483
+ if (["ArrowUp", "ArrowDown"].includes(event.key)) {
484
+ const currentElement = event.target;
485
+ const currentIndex = candidateNodes.indexOf(currentElement);
486
+ candidateNodes = candidateNodes.slice(currentIndex + 1);
487
+ }
488
+ setTimeout(() => focusFirst(candidateNodes));
489
+ event.preventDefault();
490
+ }
491
+ })
492
+ }
493
+ )
494
+ }
495
+ )
496
+ }
497
+ ) })
498
+ }
499
+ );
500
+ }
501
+ );
502
+ SelectContentImpl.displayName = CONTENT_IMPL_NAME;
503
+ var ITEM_ALIGNED_POSITION_NAME = "SelectItemAlignedPosition";
504
+ var SelectItemAlignedPosition = reactExports.forwardRef((props, forwardedRef) => {
505
+ const { __scopeSelect, onPlaced, ...popperProps } = props;
506
+ const context = useSelectContext(CONTENT_NAME, __scopeSelect);
507
+ const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);
508
+ const [contentWrapper, setContentWrapper] = reactExports.useState(null);
509
+ const [content, setContent] = reactExports.useState(null);
510
+ const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));
511
+ const getItems = useCollection(__scopeSelect);
512
+ const shouldExpandOnScrollRef = reactExports.useRef(false);
513
+ const shouldRepositionRef = reactExports.useRef(true);
514
+ const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;
515
+ const position = reactExports.useCallback(() => {
516
+ if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {
517
+ const triggerRect = context.trigger.getBoundingClientRect();
518
+ const contentRect = content.getBoundingClientRect();
519
+ const valueNodeRect = context.valueNode.getBoundingClientRect();
520
+ const itemTextRect = selectedItemText.getBoundingClientRect();
521
+ if (context.dir !== "rtl") {
522
+ const itemTextOffset = itemTextRect.left - contentRect.left;
523
+ const left = valueNodeRect.left - itemTextOffset;
524
+ const leftDelta = triggerRect.left - left;
525
+ const minContentWidth = triggerRect.width + leftDelta;
526
+ const contentWidth = Math.max(minContentWidth, contentRect.width);
527
+ const rightEdge = window.innerWidth - CONTENT_MARGIN;
528
+ const clampedLeft = clamp(left, [
529
+ CONTENT_MARGIN,
530
+ // Prevents the content from going off the starting edge of the
531
+ // viewport. It may still go off the ending edge, but this can be
532
+ // controlled by the user since they may want to manage overflow in a
533
+ // specific way.
534
+ // https://github.com/radix-ui/primitives/issues/2049
535
+ Math.max(CONTENT_MARGIN, rightEdge - contentWidth)
536
+ ]);
537
+ contentWrapper.style.minWidth = minContentWidth + "px";
538
+ contentWrapper.style.left = clampedLeft + "px";
539
+ } else {
540
+ const itemTextOffset = contentRect.right - itemTextRect.right;
541
+ const right = window.innerWidth - valueNodeRect.right - itemTextOffset;
542
+ const rightDelta = window.innerWidth - triggerRect.right - right;
543
+ const minContentWidth = triggerRect.width + rightDelta;
544
+ const contentWidth = Math.max(minContentWidth, contentRect.width);
545
+ const leftEdge = window.innerWidth - CONTENT_MARGIN;
546
+ const clampedRight = clamp(right, [
547
+ CONTENT_MARGIN,
548
+ Math.max(CONTENT_MARGIN, leftEdge - contentWidth)
549
+ ]);
550
+ contentWrapper.style.minWidth = minContentWidth + "px";
551
+ contentWrapper.style.right = clampedRight + "px";
552
+ }
553
+ const items = getItems();
554
+ const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;
555
+ const itemsHeight = viewport.scrollHeight;
556
+ const contentStyles = window.getComputedStyle(content);
557
+ const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);
558
+ const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);
559
+ const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);
560
+ const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);
561
+ const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;
562
+ const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);
563
+ const viewportStyles = window.getComputedStyle(viewport);
564
+ const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);
565
+ const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);
566
+ const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;
567
+ const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;
568
+ const selectedItemHalfHeight = selectedItem.offsetHeight / 2;
569
+ const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;
570
+ const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;
571
+ const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;
572
+ const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;
573
+ if (willAlignWithoutTopOverflow) {
574
+ const isLastItem = items.length > 0 && selectedItem === items[items.length - 1].ref.current;
575
+ contentWrapper.style.bottom = "0px";
576
+ const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;
577
+ const clampedTriggerMiddleToBottomEdge = Math.max(
578
+ triggerMiddleToBottomEdge,
579
+ selectedItemHalfHeight + // viewport might have padding bottom, include it to avoid a scrollable viewport
580
+ (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth
581
+ );
582
+ const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;
583
+ contentWrapper.style.height = height + "px";
584
+ } else {
585
+ const isFirstItem = items.length > 0 && selectedItem === items[0].ref.current;
586
+ contentWrapper.style.top = "0px";
587
+ const clampedTopEdgeToTriggerMiddle = Math.max(
588
+ topEdgeToTriggerMiddle,
589
+ contentBorderTopWidth + viewport.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport
590
+ (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight
591
+ );
592
+ const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;
593
+ contentWrapper.style.height = height + "px";
594
+ viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;
595
+ }
596
+ contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;
597
+ contentWrapper.style.minHeight = minContentHeight + "px";
598
+ contentWrapper.style.maxHeight = availableHeight + "px";
599
+ onPlaced?.();
600
+ requestAnimationFrame(() => shouldExpandOnScrollRef.current = true);
601
+ }
602
+ }, [
603
+ getItems,
604
+ context.trigger,
605
+ context.valueNode,
606
+ contentWrapper,
607
+ content,
608
+ viewport,
609
+ selectedItem,
610
+ selectedItemText,
611
+ context.dir,
612
+ onPlaced
613
+ ]);
614
+ useLayoutEffect2(() => position(), [position]);
615
+ const [contentZIndex, setContentZIndex] = reactExports.useState();
616
+ useLayoutEffect2(() => {
617
+ if (content) setContentZIndex(window.getComputedStyle(content).zIndex);
618
+ }, [content]);
619
+ const handleScrollButtonChange = reactExports.useCallback(
620
+ (node) => {
621
+ if (node && shouldRepositionRef.current === true) {
622
+ position();
623
+ focusSelectedItem?.();
624
+ shouldRepositionRef.current = false;
625
+ }
626
+ },
627
+ [position, focusSelectedItem]
628
+ );
629
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
630
+ SelectViewportProvider,
631
+ {
632
+ scope: __scopeSelect,
633
+ contentWrapper,
634
+ shouldExpandOnScrollRef,
635
+ onScrollButtonChange: handleScrollButtonChange,
636
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
637
+ "div",
638
+ {
639
+ ref: setContentWrapper,
640
+ style: {
641
+ display: "flex",
642
+ flexDirection: "column",
643
+ position: "fixed",
644
+ zIndex: contentZIndex
645
+ },
646
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
647
+ Primitive.div,
648
+ {
649
+ ...popperProps,
650
+ ref: composedRefs,
651
+ style: {
652
+ // When we get the height of the content, it includes borders. If we were to set
653
+ // the height without having `boxSizing: 'border-box'` it would be too big.
654
+ boxSizing: "border-box",
655
+ // We need to ensure the content doesn't get taller than the wrapper
656
+ maxHeight: "100%",
657
+ ...popperProps.style
658
+ }
659
+ }
660
+ )
661
+ }
662
+ )
663
+ }
664
+ );
665
+ });
666
+ SelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;
667
+ var POPPER_POSITION_NAME = "SelectPopperPosition";
668
+ var SelectPopperPosition = reactExports.forwardRef((props, forwardedRef) => {
669
+ const {
670
+ __scopeSelect,
671
+ align = "start",
672
+ collisionPadding = CONTENT_MARGIN,
673
+ ...popperProps
674
+ } = props;
675
+ const popperScope = usePopperScope(__scopeSelect);
676
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
677
+ Content,
678
+ {
679
+ ...popperScope,
680
+ ...popperProps,
681
+ ref: forwardedRef,
682
+ align,
683
+ collisionPadding,
684
+ style: {
685
+ // Ensure border-box for floating-ui calculations
686
+ boxSizing: "border-box",
687
+ ...popperProps.style,
688
+ // re-namespace exposed content custom properties
689
+ ...{
690
+ "--radix-select-content-transform-origin": "var(--radix-popper-transform-origin)",
691
+ "--radix-select-content-available-width": "var(--radix-popper-available-width)",
692
+ "--radix-select-content-available-height": "var(--radix-popper-available-height)",
693
+ "--radix-select-trigger-width": "var(--radix-popper-anchor-width)",
694
+ "--radix-select-trigger-height": "var(--radix-popper-anchor-height)"
695
+ }
696
+ }
697
+ }
698
+ );
699
+ });
700
+ SelectPopperPosition.displayName = POPPER_POSITION_NAME;
701
+ var [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});
702
+ var VIEWPORT_NAME = "SelectViewport";
703
+ var SelectViewport = reactExports.forwardRef(
704
+ (props, forwardedRef) => {
705
+ const { __scopeSelect, nonce, ...viewportProps } = props;
706
+ const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);
707
+ const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);
708
+ const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);
709
+ const prevScrollTopRef = reactExports.useRef(0);
710
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
711
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
712
+ "style",
713
+ {
714
+ dangerouslySetInnerHTML: {
715
+ __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`
716
+ },
717
+ nonce
718
+ }
719
+ ),
720
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
721
+ Primitive.div,
722
+ {
723
+ "data-radix-select-viewport": "",
724
+ role: "presentation",
725
+ ...viewportProps,
726
+ ref: composedRefs,
727
+ style: {
728
+ // we use position: 'relative' here on the `viewport` so that when we call
729
+ // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport
730
+ // (independent of the scrollUpButton).
731
+ position: "relative",
732
+ flex: 1,
733
+ // Viewport should only be scrollable in the vertical direction.
734
+ // This won't work in vertical writing modes, so we'll need to
735
+ // revisit this if/when that is supported
736
+ // https://developer.chrome.com/blog/vertical-form-controls
737
+ overflow: "hidden auto",
738
+ ...viewportProps.style
739
+ },
740
+ onScroll: composeEventHandlers(viewportProps.onScroll, (event) => {
741
+ const viewport = event.currentTarget;
742
+ const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;
743
+ if (shouldExpandOnScrollRef?.current && contentWrapper) {
744
+ const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);
745
+ if (scrolledBy > 0) {
746
+ const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;
747
+ const cssMinHeight = parseFloat(contentWrapper.style.minHeight);
748
+ const cssHeight = parseFloat(contentWrapper.style.height);
749
+ const prevHeight = Math.max(cssMinHeight, cssHeight);
750
+ if (prevHeight < availableHeight) {
751
+ const nextHeight = prevHeight + scrolledBy;
752
+ const clampedNextHeight = Math.min(availableHeight, nextHeight);
753
+ const heightDiff = nextHeight - clampedNextHeight;
754
+ contentWrapper.style.height = clampedNextHeight + "px";
755
+ if (contentWrapper.style.bottom === "0px") {
756
+ viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;
757
+ contentWrapper.style.justifyContent = "flex-end";
758
+ }
759
+ }
760
+ }
761
+ }
762
+ prevScrollTopRef.current = viewport.scrollTop;
763
+ })
764
+ }
765
+ ) })
766
+ ] });
767
+ }
768
+ );
769
+ SelectViewport.displayName = VIEWPORT_NAME;
770
+ var GROUP_NAME = "SelectGroup";
771
+ var [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);
772
+ var SelectGroup = reactExports.forwardRef(
773
+ (props, forwardedRef) => {
774
+ const { __scopeSelect, ...groupProps } = props;
775
+ const groupId = useId();
776
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Primitive.div, { role: "group", "aria-labelledby": groupId, ...groupProps, ref: forwardedRef }) });
777
+ }
778
+ );
779
+ SelectGroup.displayName = GROUP_NAME;
780
+ var LABEL_NAME = "SelectLabel";
781
+ var SelectLabel = reactExports.forwardRef(
782
+ (props, forwardedRef) => {
783
+ const { __scopeSelect, ...labelProps } = props;
784
+ const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);
785
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });
786
+ }
787
+ );
788
+ SelectLabel.displayName = LABEL_NAME;
789
+ var ITEM_NAME = "SelectItem";
790
+ var [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);
791
+ var SelectItem$1 = reactExports.forwardRef(
792
+ (props, forwardedRef) => {
793
+ const {
794
+ __scopeSelect,
795
+ value,
796
+ disabled = false,
797
+ textValue: textValueProp,
798
+ ...itemProps
799
+ } = props;
800
+ const context = useSelectContext(ITEM_NAME, __scopeSelect);
801
+ const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);
802
+ const isSelected = context.value === value;
803
+ const [textValue, setTextValue] = reactExports.useState(textValueProp ?? "");
804
+ const [isFocused, setIsFocused] = reactExports.useState(false);
805
+ const composedRefs = useComposedRefs(
806
+ forwardedRef,
807
+ (node) => contentContext.itemRefCallback?.(node, value, disabled)
808
+ );
809
+ const textId = useId();
810
+ const pointerTypeRef = reactExports.useRef("touch");
811
+ const handleSelect = () => {
812
+ if (!disabled) {
813
+ context.onValueChange(value);
814
+ context.onOpenChange(false);
815
+ }
816
+ };
817
+ if (value === "") {
818
+ throw new Error(
819
+ "A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder."
820
+ );
821
+ }
822
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
823
+ SelectItemContextProvider,
824
+ {
825
+ scope: __scopeSelect,
826
+ value,
827
+ disabled,
828
+ textId,
829
+ isSelected,
830
+ onItemTextChange: reactExports.useCallback((node) => {
831
+ setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? "").trim());
832
+ }, []),
833
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
834
+ Collection.ItemSlot,
835
+ {
836
+ scope: __scopeSelect,
837
+ value,
838
+ disabled,
839
+ textValue,
840
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
841
+ Primitive.div,
842
+ {
843
+ role: "option",
844
+ "aria-labelledby": textId,
845
+ "data-highlighted": isFocused ? "" : void 0,
846
+ "aria-selected": isSelected && isFocused,
847
+ "data-state": isSelected ? "checked" : "unchecked",
848
+ "aria-disabled": disabled || void 0,
849
+ "data-disabled": disabled ? "" : void 0,
850
+ tabIndex: disabled ? void 0 : -1,
851
+ ...itemProps,
852
+ ref: composedRefs,
853
+ onFocus: composeEventHandlers(itemProps.onFocus, () => setIsFocused(true)),
854
+ onBlur: composeEventHandlers(itemProps.onBlur, () => setIsFocused(false)),
855
+ onClick: composeEventHandlers(itemProps.onClick, () => {
856
+ if (pointerTypeRef.current !== "mouse") handleSelect();
857
+ }),
858
+ onPointerUp: composeEventHandlers(itemProps.onPointerUp, () => {
859
+ if (pointerTypeRef.current === "mouse") handleSelect();
860
+ }),
861
+ onPointerDown: composeEventHandlers(itemProps.onPointerDown, (event) => {
862
+ pointerTypeRef.current = event.pointerType;
863
+ }),
864
+ onPointerMove: composeEventHandlers(itemProps.onPointerMove, (event) => {
865
+ pointerTypeRef.current = event.pointerType;
866
+ if (disabled) {
867
+ contentContext.onItemLeave?.();
868
+ } else if (pointerTypeRef.current === "mouse") {
869
+ event.currentTarget.focus({ preventScroll: true });
870
+ }
871
+ }),
872
+ onPointerLeave: composeEventHandlers(itemProps.onPointerLeave, (event) => {
873
+ if (event.currentTarget === document.activeElement) {
874
+ contentContext.onItemLeave?.();
875
+ }
876
+ }),
877
+ onKeyDown: composeEventHandlers(itemProps.onKeyDown, (event) => {
878
+ const isTypingAhead = contentContext.searchRef?.current !== "";
879
+ if (isTypingAhead && event.key === " ") return;
880
+ if (SELECTION_KEYS.includes(event.key)) handleSelect();
881
+ if (event.key === " ") event.preventDefault();
882
+ })
883
+ }
884
+ )
885
+ }
886
+ )
887
+ }
888
+ );
889
+ }
890
+ );
891
+ SelectItem$1.displayName = ITEM_NAME;
892
+ var ITEM_TEXT_NAME = "SelectItemText";
893
+ var SelectItemText = reactExports.forwardRef(
894
+ (props, forwardedRef) => {
895
+ const { __scopeSelect, className, style, ...itemTextProps } = props;
896
+ const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);
897
+ const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);
898
+ const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);
899
+ const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);
900
+ const [itemTextNode, setItemTextNode] = reactExports.useState(null);
901
+ const composedRefs = useComposedRefs(
902
+ forwardedRef,
903
+ (node) => setItemTextNode(node),
904
+ itemContext.onItemTextChange,
905
+ (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)
906
+ );
907
+ const textContent = itemTextNode?.textContent;
908
+ const nativeOption = reactExports.useMemo(
909
+ () => /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),
910
+ [itemContext.disabled, itemContext.value, textContent]
911
+ );
912
+ const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;
913
+ useLayoutEffect2(() => {
914
+ onNativeOptionAdd(nativeOption);
915
+ return () => onNativeOptionRemove(nativeOption);
916
+ }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);
917
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
918
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),
919
+ itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? reactDomExports.createPortal(itemTextProps.children, context.valueNode) : null
920
+ ] });
921
+ }
922
+ );
923
+ SelectItemText.displayName = ITEM_TEXT_NAME;
924
+ var ITEM_INDICATOR_NAME = "SelectItemIndicator";
925
+ var SelectItemIndicator = reactExports.forwardRef(
926
+ (props, forwardedRef) => {
927
+ const { __scopeSelect, ...itemIndicatorProps } = props;
928
+ const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);
929
+ return itemContext.isSelected ? /* @__PURE__ */ jsxRuntimeExports.jsx(Primitive.span, { "aria-hidden": true, ...itemIndicatorProps, ref: forwardedRef }) : null;
930
+ }
931
+ );
932
+ SelectItemIndicator.displayName = ITEM_INDICATOR_NAME;
933
+ var SCROLL_UP_BUTTON_NAME = "SelectScrollUpButton";
934
+ var SelectScrollUpButton$1 = reactExports.forwardRef((props, forwardedRef) => {
935
+ const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);
936
+ const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);
937
+ const [canScrollUp, setCanScrollUp] = reactExports.useState(false);
938
+ const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);
939
+ useLayoutEffect2(() => {
940
+ if (contentContext.viewport && contentContext.isPositioned) {
941
+ let handleScroll2 = function() {
942
+ const canScrollUp2 = viewport.scrollTop > 0;
943
+ setCanScrollUp(canScrollUp2);
944
+ };
945
+ const viewport = contentContext.viewport;
946
+ handleScroll2();
947
+ viewport.addEventListener("scroll", handleScroll2);
948
+ return () => viewport.removeEventListener("scroll", handleScroll2);
949
+ }
950
+ }, [contentContext.viewport, contentContext.isPositioned]);
951
+ return canScrollUp ? /* @__PURE__ */ jsxRuntimeExports.jsx(
952
+ SelectScrollButtonImpl,
953
+ {
954
+ ...props,
955
+ ref: composedRefs,
956
+ onAutoScroll: () => {
957
+ const { viewport, selectedItem } = contentContext;
958
+ if (viewport && selectedItem) {
959
+ viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;
960
+ }
961
+ }
962
+ }
963
+ ) : null;
964
+ });
965
+ SelectScrollUpButton$1.displayName = SCROLL_UP_BUTTON_NAME;
966
+ var SCROLL_DOWN_BUTTON_NAME = "SelectScrollDownButton";
967
+ var SelectScrollDownButton$1 = reactExports.forwardRef((props, forwardedRef) => {
968
+ const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);
969
+ const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);
970
+ const [canScrollDown, setCanScrollDown] = reactExports.useState(false);
971
+ const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);
972
+ useLayoutEffect2(() => {
973
+ if (contentContext.viewport && contentContext.isPositioned) {
974
+ let handleScroll2 = function() {
975
+ const maxScroll = viewport.scrollHeight - viewport.clientHeight;
976
+ const canScrollDown2 = Math.ceil(viewport.scrollTop) < maxScroll;
977
+ setCanScrollDown(canScrollDown2);
978
+ };
979
+ const viewport = contentContext.viewport;
980
+ handleScroll2();
981
+ viewport.addEventListener("scroll", handleScroll2);
982
+ return () => viewport.removeEventListener("scroll", handleScroll2);
983
+ }
984
+ }, [contentContext.viewport, contentContext.isPositioned]);
985
+ return canScrollDown ? /* @__PURE__ */ jsxRuntimeExports.jsx(
986
+ SelectScrollButtonImpl,
987
+ {
988
+ ...props,
989
+ ref: composedRefs,
990
+ onAutoScroll: () => {
991
+ const { viewport, selectedItem } = contentContext;
992
+ if (viewport && selectedItem) {
993
+ viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;
994
+ }
995
+ }
996
+ }
997
+ ) : null;
998
+ });
999
+ SelectScrollDownButton$1.displayName = SCROLL_DOWN_BUTTON_NAME;
1000
+ var SelectScrollButtonImpl = reactExports.forwardRef((props, forwardedRef) => {
1001
+ const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;
1002
+ const contentContext = useSelectContentContext("SelectScrollButton", __scopeSelect);
1003
+ const autoScrollTimerRef = reactExports.useRef(null);
1004
+ const getItems = useCollection(__scopeSelect);
1005
+ const clearAutoScrollTimer = reactExports.useCallback(() => {
1006
+ if (autoScrollTimerRef.current !== null) {
1007
+ window.clearInterval(autoScrollTimerRef.current);
1008
+ autoScrollTimerRef.current = null;
1009
+ }
1010
+ }, []);
1011
+ reactExports.useEffect(() => {
1012
+ return () => clearAutoScrollTimer();
1013
+ }, [clearAutoScrollTimer]);
1014
+ useLayoutEffect2(() => {
1015
+ const activeItem = getItems().find((item) => item.ref.current === document.activeElement);
1016
+ activeItem?.ref.current?.scrollIntoView({ block: "nearest" });
1017
+ }, [getItems]);
1018
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
1019
+ Primitive.div,
1020
+ {
1021
+ "aria-hidden": true,
1022
+ ...scrollIndicatorProps,
1023
+ ref: forwardedRef,
1024
+ style: { flexShrink: 0, ...scrollIndicatorProps.style },
1025
+ onPointerDown: composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {
1026
+ if (autoScrollTimerRef.current === null) {
1027
+ autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);
1028
+ }
1029
+ }),
1030
+ onPointerMove: composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {
1031
+ contentContext.onItemLeave?.();
1032
+ if (autoScrollTimerRef.current === null) {
1033
+ autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);
1034
+ }
1035
+ }),
1036
+ onPointerLeave: composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {
1037
+ clearAutoScrollTimer();
1038
+ })
1039
+ }
1040
+ );
1041
+ });
1042
+ var SEPARATOR_NAME = "SelectSeparator";
1043
+ var SelectSeparator = reactExports.forwardRef(
1044
+ (props, forwardedRef) => {
1045
+ const { __scopeSelect, ...separatorProps } = props;
1046
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Primitive.div, { "aria-hidden": true, ...separatorProps, ref: forwardedRef });
1047
+ }
1048
+ );
1049
+ SelectSeparator.displayName = SEPARATOR_NAME;
1050
+ var ARROW_NAME = "SelectArrow";
1051
+ var SelectArrow = reactExports.forwardRef(
1052
+ (props, forwardedRef) => {
1053
+ const { __scopeSelect, ...arrowProps } = props;
1054
+ const popperScope = usePopperScope(__scopeSelect);
1055
+ const context = useSelectContext(ARROW_NAME, __scopeSelect);
1056
+ const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);
1057
+ return context.open && contentContext.position === "popper" ? /* @__PURE__ */ jsxRuntimeExports.jsx(Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;
1058
+ }
1059
+ );
1060
+ SelectArrow.displayName = ARROW_NAME;
1061
+ var BUBBLE_INPUT_NAME = "SelectBubbleInput";
1062
+ var SelectBubbleInput = reactExports.forwardRef(
1063
+ ({ __scopeSelect, value, ...props }, forwardedRef) => {
1064
+ const ref = reactExports.useRef(null);
1065
+ const composedRefs = useComposedRefs(forwardedRef, ref);
1066
+ const prevValue = usePrevious(value);
1067
+ reactExports.useEffect(() => {
1068
+ const select = ref.current;
1069
+ if (!select) return;
1070
+ const selectProto = window.HTMLSelectElement.prototype;
1071
+ const descriptor = Object.getOwnPropertyDescriptor(
1072
+ selectProto,
1073
+ "value"
1074
+ );
1075
+ const setValue = descriptor.set;
1076
+ if (prevValue !== value && setValue) {
1077
+ const event = new Event("change", { bubbles: true });
1078
+ setValue.call(select, value);
1079
+ select.dispatchEvent(event);
1080
+ }
1081
+ }, [prevValue, value]);
1082
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
1083
+ Primitive.select,
1084
+ {
1085
+ ...props,
1086
+ style: { ...VISUALLY_HIDDEN_STYLES, ...props.style },
1087
+ ref: composedRefs,
1088
+ defaultValue: value
1089
+ }
1090
+ );
1091
+ }
1092
+ );
1093
+ SelectBubbleInput.displayName = BUBBLE_INPUT_NAME;
1094
+ function shouldShowPlaceholder(value) {
1095
+ return value === "" || value === void 0;
1096
+ }
1097
+ function useTypeaheadSearch(onSearchChange) {
1098
+ const handleSearchChange = useCallbackRef(onSearchChange);
1099
+ const searchRef = reactExports.useRef("");
1100
+ const timerRef = reactExports.useRef(0);
1101
+ const handleTypeaheadSearch = reactExports.useCallback(
1102
+ (key) => {
1103
+ const search = searchRef.current + key;
1104
+ handleSearchChange(search);
1105
+ (function updateSearch(value) {
1106
+ searchRef.current = value;
1107
+ window.clearTimeout(timerRef.current);
1108
+ if (value !== "") timerRef.current = window.setTimeout(() => updateSearch(""), 1e3);
1109
+ })(search);
1110
+ },
1111
+ [handleSearchChange]
1112
+ );
1113
+ const resetTypeahead = reactExports.useCallback(() => {
1114
+ searchRef.current = "";
1115
+ window.clearTimeout(timerRef.current);
1116
+ }, []);
1117
+ reactExports.useEffect(() => {
1118
+ return () => window.clearTimeout(timerRef.current);
1119
+ }, []);
1120
+ return [searchRef, handleTypeaheadSearch, resetTypeahead];
1121
+ }
1122
+ function findNextItem(items, search, currentItem) {
1123
+ const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);
1124
+ const normalizedSearch = isRepeated ? search[0] : search;
1125
+ const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;
1126
+ let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));
1127
+ const excludeCurrentItem = normalizedSearch.length === 1;
1128
+ if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);
1129
+ const nextItem = wrappedItems.find(
1130
+ (item) => item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())
1131
+ );
1132
+ return nextItem !== currentItem ? nextItem : void 0;
1133
+ }
1134
+ function wrapArray(array, startIndex) {
1135
+ return array.map((_, index) => array[(startIndex + index) % array.length]);
1136
+ }
1137
+ var Root2 = Select$1;
1138
+ var Trigger = SelectTrigger$1;
1139
+ var Value = SelectValue$1;
1140
+ var Icon = SelectIcon;
1141
+ var Portal = SelectPortal;
1142
+ var Content2 = SelectContent$1;
1143
+ var Viewport = SelectViewport;
1144
+ var Item = SelectItem$1;
1145
+ var ItemText = SelectItemText;
1146
+ var ItemIndicator = SelectItemIndicator;
1147
+ var ScrollUpButton = SelectScrollUpButton$1;
1148
+ var ScrollDownButton = SelectScrollDownButton$1;
1149
+ function Select({ ...props }) {
1150
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Root2, { "data-slot": "select", ...props });
1151
+ }
1152
+ function SelectValue({ ...props }) {
1153
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Value, { "data-slot": "select-value", ...props });
1154
+ }
1155
+ function SelectTrigger({
1156
+ className,
1157
+ size = "default",
1158
+ children,
1159
+ ...props
1160
+ }) {
1161
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
1162
+ Trigger,
1163
+ {
1164
+ "data-slot": "select-trigger",
1165
+ "data-size": size,
1166
+ className: cn(
1167
+ "flex w-fit items-center justify-between gap-1.5 whitespace-nowrap rounded-4xl border border-input bg-input/30 px-3 py-2 text-sm outline-none transition-colors focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-[3px] aria-invalid:ring-destructive/20 data-[size=default]:h-9 data-[size=sm]:h-8 data-placeholder:text-muted-foreground *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 dark:hover:bg-input/50 [&_svg]:shrink-0",
1168
+ className
1169
+ ),
1170
+ ...props,
1171
+ children: [
1172
+ children,
1173
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "pointer-events-none size-4 text-muted-foreground" }) })
1174
+ ]
1175
+ }
1176
+ );
1177
+ }
1178
+ function SelectContent({
1179
+ className,
1180
+ children,
1181
+ position = "item-aligned",
1182
+ align = "center",
1183
+ ...props
1184
+ }) {
1185
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
1186
+ Content2,
1187
+ {
1188
+ "data-slot": "select-content",
1189
+ className: cn(
1190
+ "data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-36 origin-(--radix-select-content-transform-origin) overflow-y-auto overflow-x-hidden rounded-2xl bg-popover text-popover-foreground shadow-2xl ring-1 ring-foreground/5 duration-100 data-closed:animate-out data-open:animate-in",
1191
+ position === "popper" && "data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1",
1192
+ className
1193
+ ),
1194
+ position,
1195
+ align,
1196
+ ...props,
1197
+ children: [
1198
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SelectScrollUpButton, {}),
1199
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
1200
+ Viewport,
1201
+ {
1202
+ "data-position": position,
1203
+ className: cn(
1204
+ "data-[position=popper]:h-(--radix-select-trigger-height) data-[position=popper]:w-full data-[position=popper]:min-w-(--radix-select-trigger-width)",
1205
+ position === "popper" && ""
1206
+ ),
1207
+ children
1208
+ }
1209
+ ),
1210
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SelectScrollDownButton, {})
1211
+ ]
1212
+ }
1213
+ ) });
1214
+ }
1215
+ function SelectItem({
1216
+ className,
1217
+ children,
1218
+ ...props
1219
+ }) {
1220
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
1221
+ Item,
1222
+ {
1223
+ "data-slot": "select-item",
1224
+ className: cn(
1225
+ "flex w-full select-none items-center gap-2.5 ps-3 p-2 text-sm outline-hidden focus:bg-accent data-[state=checked]:bg-accent data-[state=checked]:text-accent-foreground data-disabled:opacity-50 [&_svg]:shrink-0 *:[span]:flex *:[span]:items-center *:[span]:gap-2 *:[span]:flex-1",
1226
+ className
1227
+ ),
1228
+ ...props,
1229
+ children: [
1230
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ItemText, { children }),
1231
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ItemIndicator, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-4" }) })
1232
+ ]
1233
+ }
1234
+ );
1235
+ }
1236
+ function SelectScrollUpButton({
1237
+ className,
1238
+ ...props
1239
+ }) {
1240
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
1241
+ ScrollUpButton,
1242
+ {
1243
+ "data-slot": "select-scroll-up-button",
1244
+ className: cn(
1245
+ "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
1246
+ className
1247
+ ),
1248
+ ...props,
1249
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronUp, {})
1250
+ }
1251
+ );
1252
+ }
1253
+ function SelectScrollDownButton({
1254
+ className,
1255
+ ...props
1256
+ }) {
1257
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
1258
+ ScrollDownButton,
1259
+ {
1260
+ "data-slot": "select-scroll-down-button",
1261
+ className: cn(
1262
+ "z-10 flex cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4",
1263
+ className
1264
+ ),
1265
+ ...props,
1266
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, {})
1267
+ }
1268
+ );
1269
+ }
1270
+ function Spinner({ className, ...props }) {
1271
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
1272
+ LoaderCircle,
1273
+ {
1274
+ role: "status",
1275
+ "aria-label": "Loading",
1276
+ className: cn("size-4 animate-spin", className),
1277
+ ...props
1278
+ }
1279
+ );
1280
+ }
1281
+ export {
1282
+ ChevronDown as C,
1283
+ LoaderCircle as L,
1284
+ Select as S,
1285
+ SelectTrigger as a,
1286
+ SelectValue as b,
1287
+ SelectContent as c,
1288
+ SelectItem as d,
1289
+ Spinner as e,
1290
+ usePrevious as u
1291
+ };