@rowsncolumns/ui 15.0.38

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 (358) hide show
  1. package/LICENSE.md +100 -0
  2. package/dist/cjs/arrow/index.d.ts +17 -0
  3. package/dist/cjs/arrow/index.d.ts.map +1 -0
  4. package/dist/cjs/arrow/index.js +46 -0
  5. package/dist/cjs/button/index.d.ts +14 -0
  6. package/dist/cjs/button/index.d.ts.map +1 -0
  7. package/dist/cjs/button/index.js +46 -0
  8. package/dist/cjs/calendar/index.d.ts +5 -0
  9. package/dist/cjs/calendar/index.d.ts.map +1 -0
  10. package/dist/cjs/calendar/index.js +13 -0
  11. package/dist/cjs/card/index.d.ts +10 -0
  12. package/dist/cjs/card/index.d.ts.map +1 -0
  13. package/dist/cjs/card/index.js +32 -0
  14. package/dist/cjs/cell-tooltip/index.d.ts +17 -0
  15. package/dist/cjs/cell-tooltip/index.d.ts.map +1 -0
  16. package/dist/cjs/cell-tooltip/index.js +38 -0
  17. package/dist/cjs/circular-loader/index.d.ts +9 -0
  18. package/dist/cjs/circular-loader/index.d.ts.map +1 -0
  19. package/dist/cjs/circular-loader/index.js +11 -0
  20. package/dist/cjs/color-picker/index.d.ts +12 -0
  21. package/dist/cjs/color-picker/index.d.ts.map +1 -0
  22. package/dist/cjs/color-picker/index.js +101 -0
  23. package/dist/cjs/color-picker/style.d.ts +5 -0
  24. package/dist/cjs/color-picker/style.d.ts.map +1 -0
  25. package/dist/cjs/color-picker/style.js +11 -0
  26. package/dist/cjs/command/index.d.ts +74 -0
  27. package/dist/cjs/command/index.d.ts.map +1 -0
  28. package/dist/cjs/command/index.js +37 -0
  29. package/dist/cjs/conditional-wrapper/index.d.ts +9 -0
  30. package/dist/cjs/conditional-wrapper/index.d.ts.map +1 -0
  31. package/dist/cjs/conditional-wrapper/index.js +4 -0
  32. package/dist/cjs/dialog/index.d.ts +17 -0
  33. package/dist/cjs/dialog/index.d.ts.map +1 -0
  34. package/dist/cjs/dialog/index.js +50 -0
  35. package/dist/cjs/dropdown/index.d.ts +34 -0
  36. package/dist/cjs/dropdown/index.d.ts.map +1 -0
  37. package/dist/cjs/dropdown/index.js +73 -0
  38. package/dist/cjs/editor/constants.d.ts +7 -0
  39. package/dist/cjs/editor/constants.d.ts.map +1 -0
  40. package/dist/cjs/editor/constants.js +50 -0
  41. package/dist/cjs/editor/editor-error-boundary.d.ts +3 -0
  42. package/dist/cjs/editor/editor-error-boundary.d.ts.map +1 -0
  43. package/dist/cjs/editor/editor-error-boundary.js +9 -0
  44. package/dist/cjs/editor/style.d.ts +12 -0
  45. package/dist/cjs/editor/style.d.ts.map +1 -0
  46. package/dist/cjs/editor/style.js +24 -0
  47. package/dist/cjs/editor/suggestions-dropdown.d.ts +25 -0
  48. package/dist/cjs/editor/suggestions-dropdown.d.ts.map +1 -0
  49. package/dist/cjs/editor/suggestions-dropdown.js +120 -0
  50. package/dist/cjs/editor-pm/constants.d.ts +2 -0
  51. package/dist/cjs/editor-pm/constants.d.ts.map +1 -0
  52. package/dist/cjs/editor-pm/constants.js +2 -0
  53. package/dist/cjs/editor-pm/decoration-plugin.d.ts +15 -0
  54. package/dist/cjs/editor-pm/decoration-plugin.d.ts.map +1 -0
  55. package/dist/cjs/editor-pm/decoration-plugin.js +38 -0
  56. package/dist/cjs/editor-pm/helpers.d.ts +197 -0
  57. package/dist/cjs/editor-pm/helpers.d.ts.map +1 -0
  58. package/dist/cjs/editor-pm/helpers.js +1170 -0
  59. package/dist/cjs/editor-pm/index.d.ts +10 -0
  60. package/dist/cjs/editor-pm/index.d.ts.map +1 -0
  61. package/dist/cjs/editor-pm/index.js +9 -0
  62. package/dist/cjs/editor-pm/mention-nodeview.d.ts +31 -0
  63. package/dist/cjs/editor-pm/mention-nodeview.d.ts.map +1 -0
  64. package/dist/cjs/editor-pm/mention-nodeview.js +105 -0
  65. package/dist/cjs/editor-pm/mentions-dropdown.d.ts +13 -0
  66. package/dist/cjs/editor-pm/mentions-dropdown.d.ts.map +1 -0
  67. package/dist/cjs/editor-pm/mentions-dropdown.js +19 -0
  68. package/dist/cjs/editor-pm/mentions-plugin.d.ts +18 -0
  69. package/dist/cjs/editor-pm/mentions-plugin.d.ts.map +1 -0
  70. package/dist/cjs/editor-pm/mentions-plugin.js +72 -0
  71. package/dist/cjs/editor-pm/placeholder-plugin.d.ts +4 -0
  72. package/dist/cjs/editor-pm/placeholder-plugin.d.ts.map +1 -0
  73. package/dist/cjs/editor-pm/placeholder-plugin.js +20 -0
  74. package/dist/cjs/editor-pm/prosemirror-editor.d.ts +493 -0
  75. package/dist/cjs/editor-pm/prosemirror-editor.d.ts.map +1 -0
  76. package/dist/cjs/editor-pm/prosemirror-editor.js +1145 -0
  77. package/dist/cjs/editor-pm/schema.d.ts +3 -0
  78. package/dist/cjs/editor-pm/schema.d.ts.map +1 -0
  79. package/dist/cjs/editor-pm/schema.js +183 -0
  80. package/dist/cjs/editor-pm/types.d.ts +8 -0
  81. package/dist/cjs/editor-pm/types.d.ts.map +1 -0
  82. package/dist/cjs/editor-pm/types.js +1 -0
  83. package/dist/cjs/editor-pm/unfocused-selection-plugin.d.ts +25 -0
  84. package/dist/cjs/editor-pm/unfocused-selection-plugin.d.ts.map +1 -0
  85. package/dist/cjs/editor-pm/unfocused-selection-plugin.js +61 -0
  86. package/dist/cjs/editor-pm/use-dropdown-change-pm.d.ts +24 -0
  87. package/dist/cjs/editor-pm/use-dropdown-change-pm.d.ts.map +1 -0
  88. package/dist/cjs/editor-pm/use-dropdown-change-pm.js +140 -0
  89. package/dist/cjs/editor-pm/use-editor-change-pm.d.ts +29 -0
  90. package/dist/cjs/editor-pm/use-editor-change-pm.d.ts.map +1 -0
  91. package/dist/cjs/editor-pm/use-editor-change-pm.js +154 -0
  92. package/dist/cjs/editor-pm/use-editor-decorator-pm.d.ts +17 -0
  93. package/dist/cjs/editor-pm/use-editor-decorator-pm.d.ts.map +1 -0
  94. package/dist/cjs/editor-pm/use-editor-decorator-pm.js +59 -0
  95. package/dist/cjs/editor-pm/use-editor-keydown-pm.d.ts +21 -0
  96. package/dist/cjs/editor-pm/use-editor-keydown-pm.d.ts.map +1 -0
  97. package/dist/cjs/editor-pm/use-editor-keydown-pm.js +81 -0
  98. package/dist/cjs/editor-pm/use-mention-keydown.d.ts +11 -0
  99. package/dist/cjs/editor-pm/use-mention-keydown.d.ts.map +1 -0
  100. package/dist/cjs/editor-pm/use-mention-keydown.js +59 -0
  101. package/dist/cjs/editor-pm/use-parameter-suggestions.d.ts +19 -0
  102. package/dist/cjs/editor-pm/use-parameter-suggestions.d.ts.map +1 -0
  103. package/dist/cjs/editor-pm/use-parameter-suggestions.js +79 -0
  104. package/dist/cjs/editor-pm/use-parameter-suggestions.test.d.ts +2 -0
  105. package/dist/cjs/editor-pm/use-parameter-suggestions.test.d.ts.map +1 -0
  106. package/dist/cjs/editor-pm/use-parameter-suggestions.test.js +122 -0
  107. package/dist/cjs/eye-dropper/index.d.ts +10 -0
  108. package/dist/cjs/eye-dropper/index.d.ts.map +1 -0
  109. package/dist/cjs/eye-dropper/index.js +24 -0
  110. package/dist/cjs/function-info/helpers.d.ts +10 -0
  111. package/dist/cjs/function-info/helpers.d.ts.map +1 -0
  112. package/dist/cjs/function-info/helpers.js +20 -0
  113. package/dist/cjs/function-info/index.d.ts +11 -0
  114. package/dist/cjs/function-info/index.d.ts.map +1 -0
  115. package/dist/cjs/function-info/index.js +71 -0
  116. package/dist/cjs/function-info/style.d.ts +7 -0
  117. package/dist/cjs/function-info/style.d.ts.map +1 -0
  118. package/dist/cjs/function-info/style.js +13 -0
  119. package/dist/cjs/hex-color-picker/index.d.ts +8 -0
  120. package/dist/cjs/hex-color-picker/index.d.ts.map +1 -0
  121. package/dist/cjs/hex-color-picker/index.js +47 -0
  122. package/dist/cjs/hooks/use-cycle-reference.d.ts +16 -0
  123. package/dist/cjs/hooks/use-cycle-reference.d.ts.map +1 -0
  124. package/dist/cjs/hooks/use-cycle-reference.js +72 -0
  125. package/dist/cjs/hooks/use-dropdown-categories.d.ts +9 -0
  126. package/dist/cjs/hooks/use-dropdown-categories.d.ts.map +1 -0
  127. package/dist/cjs/hooks/use-dropdown-categories.js +45 -0
  128. package/dist/cjs/hooks/use-dropdown.d.ts +38 -0
  129. package/dist/cjs/hooks/use-dropdown.d.ts.map +1 -0
  130. package/dist/cjs/hooks/use-dropdown.js +236 -0
  131. package/dist/cjs/hooks/use-isomorphic-layout-effect.ts.d.ts +6 -0
  132. package/dist/cjs/hooks/use-isomorphic-layout-effect.ts.d.ts.map +1 -0
  133. package/dist/cjs/hooks/use-isomorphic-layout-effect.ts.js +8 -0
  134. package/dist/cjs/hooks/use-modal.d.ts +28 -0
  135. package/dist/cjs/hooks/use-modal.d.ts.map +1 -0
  136. package/dist/cjs/hooks/use-modal.js +101 -0
  137. package/dist/cjs/hooks/use-visibility.d.ts +2 -0
  138. package/dist/cjs/hooks/use-visibility.d.ts.map +1 -0
  139. package/dist/cjs/hooks/use-visibility.js +12 -0
  140. package/dist/cjs/icon-button/index.d.ts +15 -0
  141. package/dist/cjs/icon-button/index.d.ts.map +1 -0
  142. package/dist/cjs/icon-button/index.js +34 -0
  143. package/dist/cjs/index.d.ts +34 -0
  144. package/dist/cjs/index.d.ts.map +1 -0
  145. package/dist/cjs/index.js +33 -0
  146. package/dist/cjs/input/index.d.ts +9 -0
  147. package/dist/cjs/input/index.d.ts.map +1 -0
  148. package/dist/cjs/input/index.js +9 -0
  149. package/dist/cjs/popover/index.d.ts +13 -0
  150. package/dist/cjs/popover/index.d.ts.map +1 -0
  151. package/dist/cjs/popover/index.js +29 -0
  152. package/dist/cjs/progress/index.d.ts +10 -0
  153. package/dist/cjs/progress/index.d.ts.map +1 -0
  154. package/dist/cjs/progress/index.js +15 -0
  155. package/dist/cjs/select/index.d.ts +14 -0
  156. package/dist/cjs/select/index.d.ts.map +1 -0
  157. package/dist/cjs/select/index.js +46 -0
  158. package/dist/cjs/separator/index.d.ts +5 -0
  159. package/dist/cjs/separator/index.d.ts.map +1 -0
  160. package/dist/cjs/separator/index.js +10 -0
  161. package/dist/cjs/skeleton/index.d.ts +7 -0
  162. package/dist/cjs/skeleton/index.d.ts.map +1 -0
  163. package/dist/cjs/skeleton/index.js +11 -0
  164. package/dist/cjs/stack/index.d.ts +11 -0
  165. package/dist/cjs/stack/index.d.ts.map +1 -0
  166. package/dist/cjs/stack/index.js +22 -0
  167. package/dist/cjs/tabs/index.d.ts +8 -0
  168. package/dist/cjs/tabs/index.d.ts.map +1 -0
  169. package/dist/cjs/tabs/index.js +21 -0
  170. package/dist/cjs/tooltip/index.d.ts +12 -0
  171. package/dist/cjs/tooltip/index.d.ts.map +1 -0
  172. package/dist/cjs/tooltip/index.js +20 -0
  173. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  174. package/dist/cjs/utils.d.ts +3 -0
  175. package/dist/cjs/utils.d.ts.map +1 -0
  176. package/dist/cjs/utils.js +9 -0
  177. package/dist/cjs/vitest.config.d.ts +3 -0
  178. package/dist/cjs/vitest.config.d.ts.map +1 -0
  179. package/dist/cjs/vitest.config.js +21 -0
  180. package/dist/esm/arrow/index.d.ts +17 -0
  181. package/dist/esm/arrow/index.d.ts.map +1 -0
  182. package/dist/esm/arrow/index.js +45 -0
  183. package/dist/esm/button/index.d.ts +14 -0
  184. package/dist/esm/button/index.d.ts.map +1 -0
  185. package/dist/esm/button/index.js +44 -0
  186. package/dist/esm/calendar/index.d.ts +5 -0
  187. package/dist/esm/calendar/index.d.ts.map +1 -0
  188. package/dist/esm/calendar/index.js +34 -0
  189. package/dist/esm/card/index.d.ts +10 -0
  190. package/dist/esm/card/index.d.ts.map +1 -0
  191. package/dist/esm/card/index.js +24 -0
  192. package/dist/esm/cell-tooltip/index.d.ts +17 -0
  193. package/dist/esm/cell-tooltip/index.d.ts.map +1 -0
  194. package/dist/esm/cell-tooltip/index.js +31 -0
  195. package/dist/esm/circular-loader/index.d.ts +9 -0
  196. package/dist/esm/circular-loader/index.d.ts.map +1 -0
  197. package/dist/esm/circular-loader/index.js +7 -0
  198. package/dist/esm/color-picker/index.d.ts +12 -0
  199. package/dist/esm/color-picker/index.d.ts.map +1 -0
  200. package/dist/esm/color-picker/index.js +99 -0
  201. package/dist/esm/color-picker/style.d.ts +5 -0
  202. package/dist/esm/color-picker/style.d.ts.map +1 -0
  203. package/dist/esm/color-picker/style.js +7 -0
  204. package/dist/esm/command/index.d.ts +74 -0
  205. package/dist/esm/command/index.d.ts.map +1 -0
  206. package/dist/esm/command/index.js +18 -0
  207. package/dist/esm/conditional-wrapper/index.d.ts +9 -0
  208. package/dist/esm/conditional-wrapper/index.d.ts.map +1 -0
  209. package/dist/esm/conditional-wrapper/index.js +1 -0
  210. package/dist/esm/dialog/index.d.ts +17 -0
  211. package/dist/esm/dialog/index.d.ts.map +1 -0
  212. package/dist/esm/dialog/index.js +30 -0
  213. package/dist/esm/dropdown/index.d.ts +34 -0
  214. package/dist/esm/dropdown/index.d.ts.map +1 -0
  215. package/dist/esm/dropdown/index.js +42 -0
  216. package/dist/esm/editor/constants.d.ts +7 -0
  217. package/dist/esm/editor/constants.d.ts.map +1 -0
  218. package/dist/esm/editor/constants.js +51 -0
  219. package/dist/esm/editor/editor-error-boundary.d.ts +3 -0
  220. package/dist/esm/editor/editor-error-boundary.d.ts.map +1 -0
  221. package/dist/esm/editor/editor-error-boundary.js +9 -0
  222. package/dist/esm/editor/style.d.ts +12 -0
  223. package/dist/esm/editor/style.d.ts.map +1 -0
  224. package/dist/esm/editor/style.js +17 -0
  225. package/dist/esm/editor/suggestions-dropdown.d.ts +25 -0
  226. package/dist/esm/editor/suggestions-dropdown.d.ts.map +1 -0
  227. package/dist/esm/editor/suggestions-dropdown.js +115 -0
  228. package/dist/esm/editor-pm/constants.d.ts +2 -0
  229. package/dist/esm/editor-pm/constants.d.ts.map +1 -0
  230. package/dist/esm/editor-pm/constants.js +2 -0
  231. package/dist/esm/editor-pm/decoration-plugin.d.ts +15 -0
  232. package/dist/esm/editor-pm/decoration-plugin.d.ts.map +1 -0
  233. package/dist/esm/editor-pm/decoration-plugin.js +38 -0
  234. package/dist/esm/editor-pm/helpers.d.ts +197 -0
  235. package/dist/esm/editor-pm/helpers.d.ts.map +1 -0
  236. package/dist/esm/editor-pm/helpers.js +1113 -0
  237. package/dist/esm/editor-pm/index.d.ts +10 -0
  238. package/dist/esm/editor-pm/index.d.ts.map +1 -0
  239. package/dist/esm/editor-pm/index.js +9 -0
  240. package/dist/esm/editor-pm/mention-nodeview.d.ts +31 -0
  241. package/dist/esm/editor-pm/mention-nodeview.d.ts.map +1 -0
  242. package/dist/esm/editor-pm/mention-nodeview.js +88 -0
  243. package/dist/esm/editor-pm/mentions-dropdown.d.ts +13 -0
  244. package/dist/esm/editor-pm/mentions-dropdown.d.ts.map +1 -0
  245. package/dist/esm/editor-pm/mentions-dropdown.js +17 -0
  246. package/dist/esm/editor-pm/mentions-plugin.d.ts +18 -0
  247. package/dist/esm/editor-pm/mentions-plugin.d.ts.map +1 -0
  248. package/dist/esm/editor-pm/mentions-plugin.js +92 -0
  249. package/dist/esm/editor-pm/placeholder-plugin.d.ts +4 -0
  250. package/dist/esm/editor-pm/placeholder-plugin.d.ts.map +1 -0
  251. package/dist/esm/editor-pm/placeholder-plugin.js +20 -0
  252. package/dist/esm/editor-pm/prosemirror-editor.d.ts +493 -0
  253. package/dist/esm/editor-pm/prosemirror-editor.d.ts.map +1 -0
  254. package/dist/esm/editor-pm/prosemirror-editor.js +1135 -0
  255. package/dist/esm/editor-pm/schema.d.ts +3 -0
  256. package/dist/esm/editor-pm/schema.d.ts.map +1 -0
  257. package/dist/esm/editor-pm/schema.js +179 -0
  258. package/dist/esm/editor-pm/types.d.ts +8 -0
  259. package/dist/esm/editor-pm/types.d.ts.map +1 -0
  260. package/dist/esm/editor-pm/types.js +1 -0
  261. package/dist/esm/editor-pm/unfocused-selection-plugin.d.ts +25 -0
  262. package/dist/esm/editor-pm/unfocused-selection-plugin.d.ts.map +1 -0
  263. package/dist/esm/editor-pm/unfocused-selection-plugin.js +61 -0
  264. package/dist/esm/editor-pm/use-dropdown-change-pm.d.ts +24 -0
  265. package/dist/esm/editor-pm/use-dropdown-change-pm.d.ts.map +1 -0
  266. package/dist/esm/editor-pm/use-dropdown-change-pm.js +137 -0
  267. package/dist/esm/editor-pm/use-editor-change-pm.d.ts +29 -0
  268. package/dist/esm/editor-pm/use-editor-change-pm.d.ts.map +1 -0
  269. package/dist/esm/editor-pm/use-editor-change-pm.js +152 -0
  270. package/dist/esm/editor-pm/use-editor-decorator-pm.d.ts +17 -0
  271. package/dist/esm/editor-pm/use-editor-decorator-pm.d.ts.map +1 -0
  272. package/dist/esm/editor-pm/use-editor-decorator-pm.js +57 -0
  273. package/dist/esm/editor-pm/use-editor-keydown-pm.d.ts +21 -0
  274. package/dist/esm/editor-pm/use-editor-keydown-pm.d.ts.map +1 -0
  275. package/dist/esm/editor-pm/use-editor-keydown-pm.js +79 -0
  276. package/dist/esm/editor-pm/use-mention-keydown.d.ts +11 -0
  277. package/dist/esm/editor-pm/use-mention-keydown.d.ts.map +1 -0
  278. package/dist/esm/editor-pm/use-mention-keydown.js +57 -0
  279. package/dist/esm/editor-pm/use-parameter-suggestions.d.ts +19 -0
  280. package/dist/esm/editor-pm/use-parameter-suggestions.d.ts.map +1 -0
  281. package/dist/esm/editor-pm/use-parameter-suggestions.js +66 -0
  282. package/dist/esm/editor-pm/use-parameter-suggestions.test.d.ts +2 -0
  283. package/dist/esm/editor-pm/use-parameter-suggestions.test.d.ts.map +1 -0
  284. package/dist/esm/editor-pm/use-parameter-suggestions.test.js +66 -0
  285. package/dist/esm/eye-dropper/index.d.ts +10 -0
  286. package/dist/esm/eye-dropper/index.d.ts.map +1 -0
  287. package/dist/esm/eye-dropper/index.js +23 -0
  288. package/dist/esm/function-info/helpers.d.ts +10 -0
  289. package/dist/esm/function-info/helpers.d.ts.map +1 -0
  290. package/dist/esm/function-info/helpers.js +20 -0
  291. package/dist/esm/function-info/index.d.ts +11 -0
  292. package/dist/esm/function-info/index.d.ts.map +1 -0
  293. package/dist/esm/function-info/index.js +68 -0
  294. package/dist/esm/function-info/style.d.ts +7 -0
  295. package/dist/esm/function-info/style.d.ts.map +1 -0
  296. package/dist/esm/function-info/style.js +10 -0
  297. package/dist/esm/hex-color-picker/index.d.ts +8 -0
  298. package/dist/esm/hex-color-picker/index.d.ts.map +1 -0
  299. package/dist/esm/hex-color-picker/index.js +44 -0
  300. package/dist/esm/hooks/use-cycle-reference.d.ts +16 -0
  301. package/dist/esm/hooks/use-cycle-reference.d.ts.map +1 -0
  302. package/dist/esm/hooks/use-cycle-reference.js +70 -0
  303. package/dist/esm/hooks/use-dropdown-categories.d.ts +9 -0
  304. package/dist/esm/hooks/use-dropdown-categories.d.ts.map +1 -0
  305. package/dist/esm/hooks/use-dropdown-categories.js +38 -0
  306. package/dist/esm/hooks/use-dropdown.d.ts +38 -0
  307. package/dist/esm/hooks/use-dropdown.d.ts.map +1 -0
  308. package/dist/esm/hooks/use-dropdown.js +236 -0
  309. package/dist/esm/hooks/use-isomorphic-layout-effect.ts.d.ts +6 -0
  310. package/dist/esm/hooks/use-isomorphic-layout-effect.ts.d.ts.map +1 -0
  311. package/dist/esm/hooks/use-isomorphic-layout-effect.ts.js +8 -0
  312. package/dist/esm/hooks/use-modal.d.ts +28 -0
  313. package/dist/esm/hooks/use-modal.d.ts.map +1 -0
  314. package/dist/esm/hooks/use-modal.js +93 -0
  315. package/dist/esm/hooks/use-visibility.d.ts +2 -0
  316. package/dist/esm/hooks/use-visibility.d.ts.map +1 -0
  317. package/dist/esm/hooks/use-visibility.js +12 -0
  318. package/dist/esm/icon-button/index.d.ts +15 -0
  319. package/dist/esm/icon-button/index.d.ts.map +1 -0
  320. package/dist/esm/icon-button/index.js +32 -0
  321. package/dist/esm/index.d.ts +34 -0
  322. package/dist/esm/index.d.ts.map +1 -0
  323. package/dist/esm/index.js +33 -0
  324. package/dist/esm/input/index.d.ts +9 -0
  325. package/dist/esm/input/index.d.ts.map +1 -0
  326. package/dist/esm/input/index.js +7 -0
  327. package/dist/esm/popover/index.d.ts +13 -0
  328. package/dist/esm/popover/index.d.ts.map +1 -0
  329. package/dist/esm/popover/index.js +22 -0
  330. package/dist/esm/progress/index.d.ts +10 -0
  331. package/dist/esm/progress/index.d.ts.map +1 -0
  332. package/dist/esm/progress/index.js +12 -0
  333. package/dist/esm/select/index.d.ts +14 -0
  334. package/dist/esm/select/index.d.ts.map +1 -0
  335. package/dist/esm/select/index.js +30 -0
  336. package/dist/esm/separator/index.d.ts +5 -0
  337. package/dist/esm/separator/index.d.ts.map +1 -0
  338. package/dist/esm/separator/index.js +6 -0
  339. package/dist/esm/skeleton/index.d.ts +7 -0
  340. package/dist/esm/skeleton/index.d.ts.map +1 -0
  341. package/dist/esm/skeleton/index.js +9 -0
  342. package/dist/esm/stack/index.d.ts +11 -0
  343. package/dist/esm/stack/index.d.ts.map +1 -0
  344. package/dist/esm/stack/index.js +20 -0
  345. package/dist/esm/tabs/index.d.ts +8 -0
  346. package/dist/esm/tabs/index.d.ts.map +1 -0
  347. package/dist/esm/tabs/index.js +11 -0
  348. package/dist/esm/tooltip/index.d.ts +12 -0
  349. package/dist/esm/tooltip/index.d.ts.map +1 -0
  350. package/dist/esm/tooltip/index.js +13 -0
  351. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  352. package/dist/esm/utils.d.ts +3 -0
  353. package/dist/esm/utils.d.ts.map +1 -0
  354. package/dist/esm/utils.js +5 -0
  355. package/dist/esm/vitest.config.d.ts +3 -0
  356. package/dist/esm/vitest.config.d.ts.map +1 -0
  357. package/dist/esm/vitest.config.js +21 -0
  358. package/package.json +78 -0
@@ -0,0 +1,71 @@
1
+ import { CrossCircledIcon } from "@rowsncolumns/icons";
2
+ import React, { useMemo } from "react";
3
+ import { IconButton } from "../icon-button";
4
+ import { Separator } from "../separator";
5
+ import { tokenizeFunctionSyntax } from "./helpers";
6
+ import { StyledFunctionParameterTitle, StyledFunctionSubtitle } from "./style";
7
+ var ACTIVE_COLOR = "#008000";
8
+ export var FunctionInfo = function (_a) {
9
+ var activeFunction = _a.activeFunction, _b = _a.parameterIndex, parameterIndex = _b === void 0 ? 0 : _b, onHideFormulaHelp = _a.onHideFormulaHelp;
10
+ var _c = activeFunction !== null && activeFunction !== void 0 ? activeFunction : {}, syntax = _c.syntax, example = _c.example, description = _c.description, parameters = _c.parameters;
11
+ /**
12
+ * It can happen that formula list does not contain
13
+ * parameters, but syntax has
14
+ * Use syntax
15
+ */
16
+ var paramLen = useMemo(function () {
17
+ return tokenizeFunctionSyntax(syntax !== null && syntax !== void 0 ? syntax : "").parameters.length;
18
+ }, [syntax]);
19
+ var paramIndex = Math.min(parameterIndex, paramLen - 1);
20
+ /**
21
+ * If Function is not documented,
22
+ */
23
+ if (!syntax) {
24
+ return null;
25
+ }
26
+ return (React.createElement("div", { className: "break-words text-rnc-foreground" },
27
+ React.createElement("div", { className: "py-1 px-2 text-sm rounded-t-sm place-items-center flex bg-rnc-accent -mt-1 font-formula" },
28
+ React.createElement("div", { className: "flex-1" },
29
+ React.createElement(TokenizedFunction, { syntax: syntax, parameterIndex: paramIndex })),
30
+ React.createElement(IconButton, { onClick: onHideFormulaHelp, title: "Hide formula suggestions for this cell" },
31
+ React.createElement(CrossCircledIcon, null))),
32
+ React.createElement(Separator, { orientation: "horizontal", color: "$gray7" }),
33
+ React.createElement("div", { className: "overflow-auto max-h-[300px]" },
34
+ example ? (React.createElement("div", { className: "px-2 py-2" },
35
+ React.createElement(StyledFunctionSubtitle, null, "Example"),
36
+ React.createElement(StyledFunctionParameterTitle, { active: true }, example))) : null,
37
+ React.createElement("div", { className: "px-2 py-2" },
38
+ React.createElement(StyledFunctionSubtitle, null, "About"),
39
+ React.createElement("div", { className: "text-xs font-system" }, description)),
40
+ (parameters === null || parameters === void 0 ? void 0 : parameters.length) ? (React.createElement(Separator, { orientation: "horizontal", color: "$gray7" })) : null, parameters === null || parameters === void 0 ? void 0 :
41
+ parameters.map(function (_a, index) {
42
+ var title = _a.title, description = _a.description;
43
+ return (React.createElement("div", { className: "px-2 py-2", key: title },
44
+ React.createElement(StyledFunctionParameterTitle, { active: paramIndex === index }, title),
45
+ React.createElement("div", { className: "text-xs font-system" }, description)));
46
+ }))));
47
+ };
48
+ /**
49
+ * Convert string function to tokens
50
+ * @param param0
51
+ */
52
+ var TokenizedFunction = function (_a) {
53
+ var syntax = _a.syntax, parameterIndex = _a.parameterIndex;
54
+ if (!syntax) {
55
+ return null;
56
+ }
57
+ var _b = tokenizeFunctionSyntax(syntax), functionOpen = _b.functionOpen, parameters = _b.parameters, functionClose = _b.functionClose;
58
+ var paramLen = parameters.length;
59
+ return (React.createElement(React.Fragment, null,
60
+ React.createElement("span", null, functionOpen),
61
+ parameters.map(function (param, i) {
62
+ var sep = i < paramLen - 1 ? ", " : "";
63
+ return (React.createElement(React.Fragment, { key: i },
64
+ React.createElement("span", { style: {
65
+ color: parameterIndex === i ? ACTIVE_COLOR : void 0,
66
+ fontWeight: parameterIndex === i ? "bold" : "normal",
67
+ } }, param),
68
+ sep));
69
+ }),
70
+ React.createElement("span", null, functionClose)));
71
+ };
@@ -0,0 +1,7 @@
1
+ import type { ComponentProps } from "react";
2
+ import React from "react";
3
+ export declare const StyledFunctionSubtitle: ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => React.JSX.Element;
4
+ export declare const StyledFunctionParameterTitle: ({ className, active, ...props }: ComponentProps<typeof StyledFunctionSubtitle> & {
5
+ active?: boolean;
6
+ }) => React.JSX.Element;
7
+ //# sourceMappingURL=style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../function-info/style.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,eAAO,MAAM,sBAAsB,GAAI,yBAGpC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,sBAUtC,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,iCAI1C,cAAc,CAAC,OAAO,sBAAsB,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,sBAatE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { __assign, __rest } from "tslib";
2
+ import React from "react";
3
+ import { cn } from "../utils";
4
+ export var StyledFunctionSubtitle = function (_a) {
5
+ var className = _a.className, props = __rest(_a, ["className"]);
6
+ return (React.createElement("div", __assign({ className: cn("uppercase pb-1 font-formula font-semibold text-xs text-rnc-foreground/60 tracking-wide", className) }, props)));
7
+ };
8
+ export var StyledFunctionParameterTitle = function (_a) {
9
+ var className = _a.className, active = _a.active, props = __rest(_a, ["className", "active"]);
10
+ return (React.createElement(StyledFunctionSubtitle, __assign({ className: cn("normal-case text-sm", active
11
+ ? "text-green-700 font-semibold tracking-wide font-formula"
12
+ : undefined, className) }, props)));
13
+ };
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ type HexColorPickerProps = {
3
+ value?: string;
4
+ onChange?(color: string): void;
5
+ };
6
+ export declare const HexColorPicker: ({ value, onChange }: HexColorPickerProps) => React.JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../hex-color-picker/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AASxC,KAAK,mBAAmB,GAAG;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,qBAAqB,mBAAmB,sBAwBtE,CAAC"}
@@ -0,0 +1,47 @@
1
+ import { __read } from "tslib";
2
+ import React, { useState } from "react";
3
+ import { IconButton } from "../icon-button";
4
+ import { PlusCircledIcon } from "@rowsncolumns/icons";
5
+ import { Popover, PopoverContent, PopoverTrigger } from "../popover";
6
+ import { Button } from "../button";
7
+ import isNil from "lodash/isNil";
8
+ import { HexColorPicker as ReactColorPicker } from "react-colorful";
9
+ import { Input } from "../input";
10
+ export var HexColorPicker = function (_a) {
11
+ var value = _a.value, onChange = _a.onChange;
12
+ var _b = __read(useState(false), 2), isOpen = _b[0], onOpenChange = _b[1];
13
+ var close = function () { return onOpenChange(false); };
14
+ return (React.createElement(Popover, { open: isOpen, onOpenChange: onOpenChange, modal: true },
15
+ React.createElement(PopoverTrigger, { asChild: true },
16
+ React.createElement(IconButton, { tooltip: "Add a custom color" },
17
+ React.createElement(PlusCircledIcon, null))),
18
+ React.createElement(PopoverContent, null,
19
+ React.createElement(ColorPickerContent, { initialValue: value, onCancel: function () {
20
+ close();
21
+ }, onSubmit: function (value) {
22
+ onChange === null || onChange === void 0 ? void 0 : onChange(value);
23
+ close();
24
+ } }))));
25
+ };
26
+ var ColorPickerContent = function (_a) {
27
+ var initialValue = _a.initialValue, onCancel = _a.onCancel, onSubmit = _a.onSubmit;
28
+ var defaultColor = isNil(initialValue) || initialValue === "transparent"
29
+ ? "#000000"
30
+ : initialValue;
31
+ var _b = __read(useState(defaultColor), 2), value = _b[0], onChange = _b[1];
32
+ return (React.createElement("div", { className: "flex flex-col gap-2" },
33
+ React.createElement(ReactColorPicker, { className: "rnc-colorpicker", color: value, onChange: function (color) { return onChange(color); } }),
34
+ React.createElement(Input, { value: value, onChange: function (e) {
35
+ onChange === null || onChange === void 0 ? void 0 : onChange(e.target.value);
36
+ }, onFocus: function (e) {
37
+ // Select on focus
38
+ e.target.select();
39
+ }, className: "text-xs" }),
40
+ React.createElement("div", { className: "flex gap-2 justify-end" },
41
+ React.createElement(Button, { size: "xs", onClick: function () {
42
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel();
43
+ } }, "Cancel"),
44
+ React.createElement(Button, { size: "xs", variant: "primary", onClick: function () {
45
+ onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(value);
46
+ } }, "OK"))));
47
+ };
@@ -0,0 +1,16 @@
1
+ import type { ParsedToken } from "@rowsncolumns/calculator";
2
+ type UseCycleFormulaReferenceProps = {
3
+ onUpdate: (address: string, selectionMode?: string) => void;
4
+ };
5
+ /**
6
+ * Detect the current reference type from a cell address
7
+ * e.g. $A$1 -> absolute, A$1 -> absolute-row, $A1 -> absolute-column, A1 -> relative
8
+ */
9
+ export declare const detectReferenceType: (address: string) => string;
10
+ /**
11
+ * Get the next reference type in the cycle based on the current address
12
+ */
13
+ export declare const getNextReference: (currentAddress: string) => string;
14
+ export declare const useCycleFormulaReference: ({ onUpdate, }: UseCycleFormulaReferenceProps) => (token: ParsedToken | undefined) => void;
15
+ export {};
16
+ //# sourceMappingURL=use-cycle-reference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-cycle-reference.d.ts","sourceRoot":"","sources":["../../../hooks/use-cycle-reference.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAS5D,KAAK,6BAA6B,GAAG;IACnC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7D,CAAC;AASF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,KAAG,MAUrD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,gBAAgB,MAAM,KAAG,MAKzD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,eAEtC,6BAA6B,aAEpB,WAAW,GAAG,SAAS,SA8ClC,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { __read } from "tslib";
2
+ import { tokenVocabulary } from "@rowsncolumns/fast-formula-parser";
3
+ import { addressToCell, cellToAddress, sanitizeSheetName, } from "@rowsncolumns/utils";
4
+ import { useCallback } from "react";
5
+ var referenceCycleOrder = [
6
+ "absolute",
7
+ "absolute-row",
8
+ "absolute-column",
9
+ "relative",
10
+ ];
11
+ /**
12
+ * Detect the current reference type from a cell address
13
+ * e.g. $A$1 -> absolute, A$1 -> absolute-row, $A1 -> absolute-column, A1 -> relative
14
+ */
15
+ export var detectReferenceType = function (address) {
16
+ // Check if column is absolute ($ before the letter)
17
+ var hasAbsoluteColumn = address.startsWith("$");
18
+ // Check if row is absolute ($ before the number)
19
+ var hasAbsoluteRow = /\$\d/.test(address);
20
+ if (hasAbsoluteColumn && hasAbsoluteRow)
21
+ return "absolute";
22
+ if (hasAbsoluteRow)
23
+ return "absolute-row";
24
+ if (hasAbsoluteColumn)
25
+ return "absolute-column";
26
+ return "relative";
27
+ };
28
+ /**
29
+ * Get the next reference type in the cycle based on the current address
30
+ */
31
+ export var getNextReference = function (currentAddress) {
32
+ var currentType = detectReferenceType(currentAddress);
33
+ var currentIndex = referenceCycleOrder.indexOf(currentType);
34
+ var nextIndex = (currentIndex + 1) % referenceCycleOrder.length;
35
+ return referenceCycleOrder[nextIndex];
36
+ };
37
+ export var useCycleFormulaReference = function (_a) {
38
+ var onUpdate = _a.onUpdate;
39
+ return useCallback(function (token) {
40
+ // Cell token
41
+ if ((token === null || token === void 0 ? void 0 : token.tokenType.name) === tokenVocabulary.Cell.name && token.image) {
42
+ var sheetName = token.sheetName;
43
+ var sheetNameStr = sheetName
44
+ ? sanitizeSheetName(sheetName) + "!"
45
+ : "";
46
+ var _a = __read(token.image.split(":"), 2), from = _a[0], to = _a[1];
47
+ // Detect current reference type and get the next one in cycle
48
+ var reference = getNextReference(from);
49
+ var fromCell = addressToCell(from);
50
+ var toCell = to ? addressToCell(to) : undefined;
51
+ var fromCellAddress = null;
52
+ var toCellAddress = "";
53
+ fromCellAddress = cellToAddress(fromCell, reference === "relative"
54
+ ? false
55
+ : reference === "absolute" || reference === "absolute-column", reference === "relative"
56
+ ? false
57
+ : reference === "absolute" || reference === "absolute-row");
58
+ if (toCell) {
59
+ toCellAddress = cellToAddress(toCell, reference === "relative"
60
+ ? false
61
+ : reference === "absolute" || reference === "absolute-column", reference === "relative"
62
+ ? false
63
+ : reference === "absolute" || reference === "absolute-row");
64
+ }
65
+ var address = "".concat(sheetNameStr).concat(fromCellAddress).concat(toCellAddress ? ":" + toCellAddress : "");
66
+ onUpdate(address, "modify");
67
+ }
68
+ else {
69
+ console.log("Token not processed - not a Cell token or missing image");
70
+ }
71
+ }, [onUpdate]);
72
+ };
@@ -0,0 +1,9 @@
1
+ import type { CalculatorFunction } from "@rowsncolumns/common-types";
2
+ import { OptionItem } from "../editor-pm/types";
3
+ type InputProps = {
4
+ items: (OptionItem | CalculatorFunction)[];
5
+ formulaMode?: boolean;
6
+ };
7
+ export declare const useDropdownCategories: ({ items, formulaMode }: InputProps) => [OptionItem[], OptionItem[], CalculatorFunction[], OptionItem[], OptionItem[], OptionItem[]];
8
+ export {};
9
+ //# sourceMappingURL=use-dropdown-categories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-dropdown-categories.d.ts","sourceRoot":"","sources":["../../../hooks/use-dropdown-categories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,KAAK,UAAU,GAAG;IAChB,KAAK,EAAE,CAAC,UAAU,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,wBAAwB,UAAU,iGAgEvE,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { useMemo } from "react";
2
+ export var useDropdownCategories = function (_a) {
3
+ var items = _a.items, formulaMode = _a.formulaMode;
4
+ return useMemo(function () {
5
+ // Structured references: table, column, specialitem
6
+ var structuredReferences = items.filter(function (item) {
7
+ return item.category === "table" ||
8
+ item.category === "column" ||
9
+ item.category === "specialitem" ||
10
+ item.category === "thisrow";
11
+ });
12
+ // Named ranges
13
+ var namedRanges = items.filter(function (item) { return item.category === "namedrange"; });
14
+ // Property references
15
+ var propertyReferences = items.filter(function (item) { return item.category === "property"; });
16
+ // Parameter references
17
+ var parameterSuggestions = items.filter(function (item) { return item.category === "parameter"; });
18
+ // Function suggestions (only CalculatorFunctions)
19
+ var functionSuggestions = formulaMode
20
+ ? items.filter(function (item) {
21
+ return item.title !== undefined &&
22
+ !("category" in item);
23
+ })
24
+ : [];
25
+ // Dropdown options: everything else that is not structured, named, property, or function
26
+ var dropdownOptions = formulaMode
27
+ ? []
28
+ : items.filter(function (item) {
29
+ return !structuredReferences.includes(item) &&
30
+ !namedRanges.includes(item) &&
31
+ !propertyReferences.includes(item) &&
32
+ !parameterSuggestions.includes(item) &&
33
+ item.title !== undefined &&
34
+ !("category" in item);
35
+ });
36
+ return [
37
+ structuredReferences,
38
+ dropdownOptions,
39
+ functionSuggestions,
40
+ namedRanges,
41
+ propertyReferences,
42
+ parameterSuggestions,
43
+ ];
44
+ }, [items, formulaMode]);
45
+ };
@@ -0,0 +1,38 @@
1
+ import type React from "react";
2
+ import { Maybe } from "@rowsncolumns/common-types";
3
+ import { OptionItem } from "../editor-pm/types.js";
4
+ type UseDropdownProps<T> = {
5
+ items: T[] | undefined;
6
+ initialQuery?: string;
7
+ initialOpen: boolean;
8
+ initialHighlightedIndex: number;
9
+ limit?: number;
10
+ showAllIfEmpty?: boolean;
11
+ isNewValue?: boolean;
12
+ itemsWhenEmpty?: T[];
13
+ itemToString(item: T): string;
14
+ onChange(value: T): void;
15
+ /**
16
+ * Marks the item that matches the current (pre-edit) value so the dropdown
17
+ * opens with it highlighted — e.g. a data-validation list highlighting the
18
+ * cell's current entry (Excel behavior). Only applied while the user hasn't
19
+ * typed yet; typing hands the highlight to the filter.
20
+ */
21
+ isItemSelected?(item: T): boolean;
22
+ };
23
+ export declare const sortByUnderscore: <T extends OptionItem>(a: Maybe<T>, b: Maybe<T>) => 0 | 1 | -1;
24
+ export declare const sanitizeDropdownQuery: (value: string) => string;
25
+ export declare const useDropdown: <T extends OptionItem>({ initialOpen, initialHighlightedIndex, initialQuery, onChange, items, isNewValue, itemToString, limit, showAllIfEmpty, itemsWhenEmpty, isItemSelected, }: UseDropdownProps<T>) => {
26
+ isOpen: boolean;
27
+ highlightedIndex: number;
28
+ onKeyDown: (e: React.KeyboardEvent<HTMLDivElement>) => void;
29
+ onSelect: (value: T) => void;
30
+ onChangeHighlightedIndex: React.Dispatch<React.SetStateAction<number>>;
31
+ items: T[];
32
+ setQuery: (value: string) => void;
33
+ openMenu: () => void;
34
+ closeMenu: () => void;
35
+ query: string;
36
+ };
37
+ export {};
38
+ //# sourceMappingURL=use-dropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-dropdown.d.ts","sourceRoot":"","sources":["../../../hooks/use-dropdown.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,KAAK,gBAAgB,CAAC,CAAC,IAAI;IACzB,KAAK,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;IACrB,YAAY,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACzB;;;;;OAKG;IACH,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC;CACnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,UAAU,EACnD,GAAG,KAAK,CAAC,CAAC,CAAC,EACX,GAAG,KAAK,CAAC,CAAC,CAAC,eAQZ,CAAC;AAuDF,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,WACtB,CAAC;AAE9B,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,UAAU,EAAE,2JAY/C,gBAAgB,CAAC,CAAC,CAAC;;;mBAgGd,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC;sBAd/B,CAAC;;;sBAoGgC,MAAM;;;;CAoBlD,CAAC"}
@@ -0,0 +1,236 @@
1
+ import { __read, __spreadArray } from "tslib";
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
+ import { useIsomorphicLayoutEffect } from "./use-isomorphic-layout-effect.ts";
4
+ import { matchSorter } from "match-sorter";
5
+ export var sortByUnderscore = function (a, b) {
6
+ var _a, _b;
7
+ var aUnderscore = (_a = String(a === null || a === void 0 ? void 0 : a.title)) === null || _a === void 0 ? void 0 : _a.startsWith("_");
8
+ var bUnderscore = (_b = String(b === null || b === void 0 ? void 0 : b.title)) === null || _b === void 0 ? void 0 : _b.startsWith("_");
9
+ if (aUnderscore === bUnderscore) {
10
+ return 0;
11
+ }
12
+ return aUnderscore ? 1 : -1;
13
+ };
14
+ // Keep dropdown ordering consistent with our UI grouping so keyboard selection
15
+ // lines up with what the user sees.
16
+ var reorderByPriority = function (list) {
17
+ var buckets = {
18
+ 0: [], // structured references
19
+ 1: [], // properties
20
+ 2: [], // parameters
21
+ 3: [], // named ranges
22
+ 4: [], // functions
23
+ 5: [], // everything else
24
+ };
25
+ list.forEach(function (item) {
26
+ var category = item === null || item === void 0 ? void 0 : item.category;
27
+ if (category === "table" ||
28
+ category === "column" ||
29
+ category === "specialitem" ||
30
+ category === "thisrow") {
31
+ buckets[0].push(item);
32
+ return;
33
+ }
34
+ if (category === "property") {
35
+ buckets[1].push(item);
36
+ return;
37
+ }
38
+ if (category === "parameter") {
39
+ buckets[2].push(item);
40
+ return;
41
+ }
42
+ if (category === "namedrange") {
43
+ buckets[3].push(item);
44
+ return;
45
+ }
46
+ // Functions are CalculatorFunction (no category) or explicit category
47
+ if (category === "function" || "syntax" in item) {
48
+ buckets[4].push(item);
49
+ return;
50
+ }
51
+ buckets[5].push(item);
52
+ });
53
+ return __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(buckets[0]), false), __read(buckets[1]), false), __read(buckets[2]), false), __read(buckets[3]), false), __read(buckets[4]), false), __read(buckets[5]), false);
54
+ };
55
+ export var sanitizeDropdownQuery = function (value) {
56
+ return value.replace(/["'`]/g, "");
57
+ };
58
+ export var useDropdown = function (_a) {
59
+ var initialOpen = _a.initialOpen, initialHighlightedIndex = _a.initialHighlightedIndex, initialQuery = _a.initialQuery, onChange = _a.onChange, _b = _a.items, items = _b === void 0 ? [] : _b, isNewValue = _a.isNewValue, itemToString = _a.itemToString, _c = _a.limit, limit = _c === void 0 ? 10 : _c, showAllIfEmpty = _a.showAllIfEmpty, itemsWhenEmpty = _a.itemsWhenEmpty, isItemSelected = _a.isItemSelected;
60
+ var _d = __read(useState(initialOpen), 2), isOpen = _d[0], setIsOpen = _d[1];
61
+ var _e = __read(useState(initialQuery !== null && initialQuery !== void 0 ? initialQuery : ""), 2), query = _e[0], setQuery = _e[1];
62
+ var _f = __read(useState(initialHighlightedIndex), 2), highlightedIndex = _f[0], setHighlightedIndex = _f[1];
63
+ var openMenu = useCallback(function () { return setIsOpen(true); }, []);
64
+ var closeMenu = useCallback(function () { return setIsOpen(false); }, []);
65
+ // Refs
66
+ var isDirty = useRef(isNewValue);
67
+ var initialQueryRef = useRef(undefined);
68
+ var highlightedIndexRef = useRef(undefined);
69
+ var queryRef = useRef(undefined);
70
+ var filteredItemsRef = useRef(undefined);
71
+ useIsomorphicLayoutEffect(function () {
72
+ queryRef.current = query;
73
+ }, [query]);
74
+ useIsomorphicLayoutEffect(function () {
75
+ highlightedIndexRef.current = highlightedIndex;
76
+ }, [highlightedIndex]);
77
+ useIsomorphicLayoutEffect(function () {
78
+ initialQueryRef.current = initialQuery !== null && initialQuery !== void 0 ? initialQuery : "";
79
+ isDirty.current = Boolean(isNewValue);
80
+ // The hosting editor stays mounted (hidden) between editing sessions, so
81
+ // the query must be re-seeded when a new session starts — otherwise the
82
+ // previous session's filter narrows the next dropdown open.
83
+ setQuery(initialQuery !== null && initialQuery !== void 0 ? initialQuery : "");
84
+ }, [initialQuery, isNewValue]);
85
+ // Filtered items
86
+ var filteredItems = useMemo(function () {
87
+ if (!query) {
88
+ if (itemsWhenEmpty === null || itemsWhenEmpty === void 0 ? void 0 : itemsWhenEmpty.length) {
89
+ return reorderByPriority(__spreadArray([], __read(itemsWhenEmpty), false));
90
+ }
91
+ if (!showAllIfEmpty) {
92
+ return [];
93
+ }
94
+ return reorderByPriority(__spreadArray([], __read(items), false).sort(sortByUnderscore));
95
+ }
96
+ if (!isDirty.current) {
97
+ return reorderByPriority(__spreadArray([], __read(items), false).sort(sortByUnderscore));
98
+ }
99
+ var cleanedQuery = sanitizeDropdownQuery(query);
100
+ // Break ties (e.g. "SU" matching both SUM and SUBSTITUTE) by preferring
101
+ // an exact-prefix match, then the shorter name, before the default
102
+ // alphabetical order — so the closest function is highlighted first.
103
+ var queryLower = cleanedQuery.toLowerCase();
104
+ var dropdownBaseSort = function (a, b) {
105
+ var _a, _b;
106
+ var aValue = String((_a = a.rankedValue) !== null && _a !== void 0 ? _a : "");
107
+ var bValue = String((_b = b.rankedValue) !== null && _b !== void 0 ? _b : "");
108
+ var aPrefix = aValue.toLowerCase().startsWith(queryLower);
109
+ var bPrefix = bValue.toLowerCase().startsWith(queryLower);
110
+ if (aPrefix !== bPrefix) {
111
+ return aPrefix ? -1 : 1;
112
+ }
113
+ if (aValue.length !== bValue.length) {
114
+ return aValue.length - bValue.length;
115
+ }
116
+ return aValue.localeCompare(bValue);
117
+ };
118
+ var sorted = matchSorter(items, cleanedQuery, {
119
+ keys: ["title"],
120
+ baseSort: dropdownBaseSort,
121
+ });
122
+ return reorderByPriority(sorted).slice(0, limit);
123
+ }, [items, query, limit, itemToString, showAllIfEmpty, itemsWhenEmpty]);
124
+ useIsomorphicLayoutEffect(function () {
125
+ filteredItemsRef.current = filteredItems;
126
+ }, [filteredItems]);
127
+ // User selects a value from the dropdown
128
+ var onSelect = useCallback(function (value) {
129
+ onChange === null || onChange === void 0 ? void 0 : onChange(value);
130
+ // Selecting an item consumes the filter; without this the selected
131
+ // text keeps filtering the list on the next dropdown open (e.g. a
132
+ // data-validation dropdown showing only the previously picked option).
133
+ isDirty.current = false;
134
+ setQuery("");
135
+ setHighlightedIndex(-1);
136
+ }, [onChange]);
137
+ var handleKeyDown = useCallback(function (e) {
138
+ var _a;
139
+ var query = queryRef.current;
140
+ var index = highlightedIndexRef.current;
141
+ var activeItems = (_a = filteredItemsRef.current) !== null && _a !== void 0 ? _a : [];
142
+ var hasValue = activeItems.length || query;
143
+ var len = activeItems.length - 1;
144
+ // If there are no items, lets skip hiding showing menu
145
+ if (!activeItems.length) {
146
+ return;
147
+ }
148
+ switch (e.key) {
149
+ case "ArrowDown": {
150
+ if (!isOpen && hasValue) {
151
+ openMenu();
152
+ return;
153
+ }
154
+ setHighlightedIndex(function (prev) {
155
+ if (prev === len) {
156
+ return 0;
157
+ }
158
+ return Math.min(prev + 1, len);
159
+ });
160
+ e.preventDefault();
161
+ break;
162
+ }
163
+ case "ArrowUp":
164
+ if (!isOpen && hasValue) {
165
+ openMenu();
166
+ }
167
+ setHighlightedIndex(function (prev) {
168
+ if (prev === 0) {
169
+ return len;
170
+ }
171
+ return Math.max(0, prev - 1);
172
+ });
173
+ e.preventDefault();
174
+ break;
175
+ case "Escape":
176
+ if (isOpen) {
177
+ closeMenu();
178
+ e.preventDefault();
179
+ }
180
+ break;
181
+ case "Tab":
182
+ case "Enter": {
183
+ if (index === -1 || index === undefined) {
184
+ return;
185
+ }
186
+ var selectedItem = activeItems[index];
187
+ onSelect(selectedItem);
188
+ e.preventDefault();
189
+ break;
190
+ }
191
+ }
192
+ }, [isOpen, openMenu, onSelect, closeMenu]);
193
+ useEffect(function () {
194
+ if (filteredItems.length) {
195
+ openMenu();
196
+ }
197
+ else {
198
+ closeMenu();
199
+ }
200
+ // If user clears the
201
+ if (!query) {
202
+ setHighlightedIndex(-1);
203
+ }
204
+ }, [query, filteredItems, closeMenu, openMenu]);
205
+ // Pre-select the item matching the current value (e.g. a data-validation
206
+ // dropdown highlighting the cell's current entry — Excel behavior). Runs
207
+ // only while the session is pristine (`isDirty` flips on the first typed
208
+ // change, handing the highlight to the filter). Declared AFTER the reset
209
+ // effect above so the seed wins the mount-time ordering when the query is
210
+ // empty (a blank cell selecting the list's empty/text-prefix entry).
211
+ useEffect(function () {
212
+ if (!isItemSelected || isDirty.current) {
213
+ return;
214
+ }
215
+ setHighlightedIndex(filteredItems.findIndex(isItemSelected));
216
+ }, [filteredItems, isItemSelected]);
217
+ var handleSetQuery = useCallback(function (value) {
218
+ setQuery(value);
219
+ setHighlightedIndex(0);
220
+ if (value !== initialQueryRef.current) {
221
+ isDirty.current = true;
222
+ }
223
+ }, []);
224
+ return {
225
+ isOpen: isOpen,
226
+ highlightedIndex: highlightedIndex,
227
+ onKeyDown: handleKeyDown,
228
+ onSelect: onSelect,
229
+ onChangeHighlightedIndex: setHighlightedIndex,
230
+ items: filteredItems,
231
+ setQuery: handleSetQuery,
232
+ openMenu: openMenu,
233
+ closeMenu: closeMenu,
234
+ query: query,
235
+ };
236
+ };
@@ -0,0 +1,6 @@
1
+ import { useEffect } from "react";
2
+ /**
3
+ * Prevent warning on SSR by falling back to useEffect when DOM isn't available
4
+ */
5
+ export declare const useIsomorphicLayoutEffect: typeof useEffect;
6
+ //# sourceMappingURL=use-isomorphic-layout-effect.ts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-isomorphic-layout-effect.ts.d.ts","sourceRoot":"","sources":["../../../hooks/use-isomorphic-layout-effect.ts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAmB,MAAM,OAAO,CAAC;AAEnD;;GAEG;AAEH,eAAO,MAAM,yBAAyB,kBAEzB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { canUseDOM } from "@rowsncolumns/utils";
2
+ import { useEffect, useLayoutEffect } from "react";
3
+ /**
4
+ * Prevent warning on SSR by falling back to useEffect when DOM isn't available
5
+ */
6
+ export var useIsomorphicLayoutEffect = canUseDOM
7
+ ? useLayoutEffect
8
+ : useEffect;
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+ type ConfirmOptions = {
3
+ title?: string;
4
+ description?: React.ReactNode;
5
+ confirmText?: string;
6
+ cancelText?: string;
7
+ container?: HTMLElement | HTMLDivElement | null;
8
+ };
9
+ type PromptOptions = {
10
+ title?: string;
11
+ description?: React.ReactNode;
12
+ confirmText?: string;
13
+ cancelText?: string;
14
+ placeholder?: string;
15
+ inputType?: "text" | "password";
16
+ defaultValue?: string;
17
+ container?: HTMLElement | HTMLDivElement | null;
18
+ };
19
+ type ModalContextValue = {
20
+ confirm: (message: string, options?: ConfirmOptions) => Promise<boolean>;
21
+ prompt: (message: string, options?: PromptOptions) => Promise<string | null>;
22
+ };
23
+ export declare const ModalProvider: ({ children }: {
24
+ children: React.ReactNode;
25
+ }) => React.JSX.Element;
26
+ export declare const useModal: () => ModalContextValue;
27
+ export {};
28
+ //# sourceMappingURL=use-modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-modal.d.ts","sourceRoot":"","sources":["../../../hooks/use-modal.tsx"],"names":[],"mappings":"AACA,OAAO,KAON,MAAM,OAAO,CAAC;AAgBf,KAAK,cAAc,GAAG;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC;CACjD,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC;CACjD,CAAC;AAEF,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC9E,CAAC;AAIF,eAAO,MAAM,aAAa,GAAI,cAAc;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,sBAoKxE,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAO,iBAM3B,CAAC"}