@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,3 @@
1
+ import { Schema } from "prosemirror-model";
2
+ export declare const schema: Schema<"text" | "line" | "mention" | "doc", "color" | "bold" | "fontFamily" | "fontSize" | "italic" | "strikethrough" | "underline" | "superscript" | "subscript">;
3
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../editor-pm/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,eAAO,MAAM,MAAM,oKAmLjB,CAAC"}
@@ -0,0 +1,183 @@
1
+ import { Schema } from "prosemirror-model";
2
+ export var schema = new Schema({
3
+ nodes: {
4
+ doc: {
5
+ content: "line*",
6
+ },
7
+ line: {
8
+ content: "inline*",
9
+ toDOM: function () {
10
+ return ["div", 0];
11
+ },
12
+ parseDOM: [{ tag: "div" }],
13
+ },
14
+ text: {
15
+ group: "inline",
16
+ },
17
+ mention: {
18
+ group: "inline",
19
+ inline: true,
20
+ atom: true,
21
+ selectable: true,
22
+ draggable: false,
23
+ attrs: { label: {}, value: {} },
24
+ parseDOM: [
25
+ {
26
+ tag: "span[data-mention-value]",
27
+ getAttrs: function (dom) {
28
+ return {
29
+ value: dom.getAttribute("data-mention-value"),
30
+ label: dom.getAttribute("data-mention-label"),
31
+ };
32
+ },
33
+ },
34
+ {
35
+ tag: "span[data-mention]",
36
+ getAttrs: function (dom) {
37
+ var text = dom.textContent || "";
38
+ var match = text.match(/@(.+)/);
39
+ return match
40
+ ? {
41
+ label: match[1],
42
+ value: match[1],
43
+ }
44
+ : false;
45
+ },
46
+ },
47
+ ],
48
+ toDOM: function (node) {
49
+ return [
50
+ "span",
51
+ {
52
+ "data-mention-value": node.attrs.value,
53
+ "data-mention-label": node.attrs.label,
54
+ },
55
+ "@[".concat(node.attrs.label, "](").concat(node.attrs.value, ")"),
56
+ ];
57
+ },
58
+ },
59
+ },
60
+ marks: {
61
+ bold: {
62
+ toDOM: function () {
63
+ return ["strong", 0];
64
+ },
65
+ parseDOM: [
66
+ { tag: "strong" },
67
+ { tag: "b" },
68
+ {
69
+ style: "font-weight",
70
+ getAttrs: function (value) { return /^(bold(er)?|[5-9]\d{2,})$/.test(value) && null; },
71
+ },
72
+ ],
73
+ },
74
+ italic: {
75
+ toDOM: function () {
76
+ return ["em", 0];
77
+ },
78
+ parseDOM: [
79
+ { tag: "em" },
80
+ { tag: "i" },
81
+ { style: "font-style=italic" },
82
+ ],
83
+ },
84
+ underline: {
85
+ toDOM: function () {
86
+ return ["u", 0];
87
+ },
88
+ parseDOM: [
89
+ { tag: "u" },
90
+ {
91
+ style: "text-decoration",
92
+ getAttrs: function (value) {
93
+ return /^(underline)$/.test(String(value)) ? null : false;
94
+ },
95
+ },
96
+ ],
97
+ },
98
+ strikethrough: {
99
+ toDOM: function () {
100
+ return ["s", 0];
101
+ },
102
+ parseDOM: [
103
+ { tag: "s" },
104
+ { tag: "del" },
105
+ { tag: "strike" },
106
+ {
107
+ style: "text-decoration",
108
+ getAttrs: function (value) {
109
+ return /^(line-through)$/.test(String(value)) ? null : false;
110
+ },
111
+ },
112
+ ],
113
+ },
114
+ // Superscript / subscript are mutually exclusive (a glyph can't be
115
+ // both), so each mark excludes the other in addition to itself —
116
+ // note `excludes` REPLACES ProseMirror's default self-exclusion,
117
+ // which is why the mark's own name is listed too.
118
+ superscript: {
119
+ excludes: "superscript subscript",
120
+ toDOM: function () {
121
+ return ["sup", 0];
122
+ },
123
+ parseDOM: [{ tag: "sup" }, { style: "vertical-align=super" }],
124
+ },
125
+ subscript: {
126
+ excludes: "subscript superscript",
127
+ toDOM: function () {
128
+ return ["sub", 0];
129
+ },
130
+ parseDOM: [{ tag: "sub" }, { style: "vertical-align=sub" }],
131
+ },
132
+ color: {
133
+ attrs: { color: {} },
134
+ toDOM: function (mark) {
135
+ return ["span", { style: "color: ".concat(mark.attrs.color) }, 0];
136
+ },
137
+ parseDOM: [
138
+ {
139
+ tag: "span[style*=color]",
140
+ getAttrs: function (dom) {
141
+ var style = dom.getAttribute("style");
142
+ var match = style.match(/color:\s*([^;]+)/);
143
+ return match ? { color: match[1] } : false;
144
+ },
145
+ },
146
+ ],
147
+ },
148
+ // Per-run font size, in points (the `TextFormat.fontSize` unit). Carried
149
+ // as a mark so xlsx-imported size runs survive an edit and so the toolbar
150
+ // font-size control can format a selection inside the cell editor.
151
+ fontSize: {
152
+ attrs: { size: {} },
153
+ toDOM: function (mark) {
154
+ return ["span", { style: "font-size: ".concat(mark.attrs.size, "pt") }, 0];
155
+ },
156
+ parseDOM: [
157
+ {
158
+ style: "font-size",
159
+ getAttrs: function (value) {
160
+ var match = /^([\d.]+)pt$/.exec(String(value).trim());
161
+ return match ? { size: Number(match[1]) } : false;
162
+ },
163
+ },
164
+ ],
165
+ },
166
+ // Per-run font family (`TextFormat.fontFamily`).
167
+ fontFamily: {
168
+ attrs: { family: {} },
169
+ toDOM: function (mark) {
170
+ return ["span", { style: "font-family: ".concat(mark.attrs.family) }, 0];
171
+ },
172
+ parseDOM: [
173
+ {
174
+ style: "font-family",
175
+ getAttrs: function (value) {
176
+ var family = String(value).replace(/["']/g, "").trim();
177
+ return family ? { family: family } : false;
178
+ },
179
+ },
180
+ ],
181
+ },
182
+ },
183
+ });
@@ -0,0 +1,8 @@
1
+ export type { TextFormatRun, Mention } from "@rowsncolumns/common-types";
2
+ export type OptionItem = {
3
+ title: string;
4
+ value?: string;
5
+ category?: OptionCategory;
6
+ };
7
+ export type OptionCategory = "table" | "function" | "column" | "namedrange" | "thisrow" | "specialitem" | "property" | "parameter";
8
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../editor-pm/types.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAEzE,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB,OAAO,GACP,UAAU,GACV,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,aAAa,GACb,UAAU,GACV,WAAW,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
1
+ import { Plugin, PluginKey } from "prosemirror-state";
2
+ /**
3
+ * Plugin state: `true` while the editor DOM is blurred.
4
+ */
5
+ export declare const unfocusedSelectionPluginKey: PluginKey<boolean>;
6
+ export declare const UNFOCUSED_SELECTION_CLASS = "rnc-pm-unfocused-selection";
7
+ /**
8
+ * Keeps the user's text selection visibly painted while the editor does not
9
+ * own DOM focus.
10
+ *
11
+ * Browsers only paint the native selection of a contenteditable while it is
12
+ * focused, so interacting with a control that must take focus (the toolbar's
13
+ * font-size input, a dropdown search field, a color picker) makes the
14
+ * selection *appear* to vanish even though ProseMirror's state still holds
15
+ * it. This plugin mirrors that kept selection as an inline decoration while
16
+ * the view is blurred and removes it as soon as focus returns — the standard
17
+ * "fake selection" approach rich-text editors use for toolbar interop.
18
+ *
19
+ * The decoration uses the `Highlight` CSS system color so it matches the
20
+ * platform's native selection paint without any stylesheet wiring; the
21
+ * `rnc-pm-unfocused-selection` class is attached for hosts that want to
22
+ * restyle it.
23
+ */
24
+ export declare function createUnfocusedSelectionPlugin(): Plugin<boolean>;
25
+ //# sourceMappingURL=unfocused-selection-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unfocused-selection-plugin.d.ts","sourceRoot":"","sources":["../../../editor-pm/unfocused-selection-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGtD;;GAEG;AACH,eAAO,MAAM,2BAA2B,oBAEvC,CAAC;AAEF,eAAO,MAAM,yBAAyB,+BAA+B,CAAC;AAEtE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,8BAA8B,oBA0C7C"}
@@ -0,0 +1,61 @@
1
+ import { Plugin, PluginKey } from "prosemirror-state";
2
+ import { Decoration, DecorationSet } from "prosemirror-view";
3
+ /**
4
+ * Plugin state: `true` while the editor DOM is blurred.
5
+ */
6
+ export var unfocusedSelectionPluginKey = new PluginKey("unfocusedSelection");
7
+ export var UNFOCUSED_SELECTION_CLASS = "rnc-pm-unfocused-selection";
8
+ /**
9
+ * Keeps the user's text selection visibly painted while the editor does not
10
+ * own DOM focus.
11
+ *
12
+ * Browsers only paint the native selection of a contenteditable while it is
13
+ * focused, so interacting with a control that must take focus (the toolbar's
14
+ * font-size input, a dropdown search field, a color picker) makes the
15
+ * selection *appear* to vanish even though ProseMirror's state still holds
16
+ * it. This plugin mirrors that kept selection as an inline decoration while
17
+ * the view is blurred and removes it as soon as focus returns — the standard
18
+ * "fake selection" approach rich-text editors use for toolbar interop.
19
+ *
20
+ * The decoration uses the `Highlight` CSS system color so it matches the
21
+ * platform's native selection paint without any stylesheet wiring; the
22
+ * `rnc-pm-unfocused-selection` class is attached for hosts that want to
23
+ * restyle it.
24
+ */
25
+ export function createUnfocusedSelectionPlugin() {
26
+ return new Plugin({
27
+ key: unfocusedSelectionPluginKey,
28
+ state: {
29
+ init: function () { return false; },
30
+ apply: function (tr, blurred) {
31
+ var meta = tr.getMeta(unfocusedSelectionPluginKey);
32
+ return meta === undefined ? blurred : meta;
33
+ },
34
+ },
35
+ props: {
36
+ handleDOMEvents: {
37
+ blur: function (view) {
38
+ view.dispatch(view.state.tr.setMeta(unfocusedSelectionPluginKey, true));
39
+ return false;
40
+ },
41
+ focus: function (view) {
42
+ view.dispatch(view.state.tr.setMeta(unfocusedSelectionPluginKey, false));
43
+ return false;
44
+ },
45
+ },
46
+ decorations: function (state) {
47
+ var blurred = unfocusedSelectionPluginKey.getState(state);
48
+ var _a = state.selection, from = _a.from, to = _a.to, empty = _a.empty;
49
+ if (!blurred || empty) {
50
+ return null;
51
+ }
52
+ return DecorationSet.create(state.doc, [
53
+ Decoration.inline(from, to, {
54
+ class: UNFOCUSED_SELECTION_CLASS,
55
+ style: "background-color: Highlight;",
56
+ }),
57
+ ]);
58
+ },
59
+ },
60
+ });
61
+ }
@@ -0,0 +1,24 @@
1
+ import type { ParsedToken } from "@rowsncolumns/calculator";
2
+ import { EditorView } from "prosemirror-view";
3
+ import { OptionItem, TextFormatRun } from "./types";
4
+ type InputProps = {
5
+ itemToString(value: OptionItem): string;
6
+ formulaMode?: boolean;
7
+ getView(): EditorView | null;
8
+ onSubmit?(value: string, textFormatRuns?: TextFormatRun[] | null): void;
9
+ suggestionToken: ParsedToken | undefined;
10
+ activeToken: ParsedToken | undefined;
11
+ propertyToken?: ParsedToken | undefined;
12
+ parameterRange?: {
13
+ start: number;
14
+ end: number;
15
+ } | undefined;
16
+ previousToken?: ParsedToken | undefined;
17
+ };
18
+ export declare const getUnterminatedStringRange: (token: ParsedToken | undefined, docSize: number, fallbackEnd: number) => {
19
+ from: number;
20
+ to: number;
21
+ } | null;
22
+ export declare const useDropdownChangePM: ({ itemToString, formulaMode, getView, onSubmit, suggestionToken, activeToken, propertyToken, parameterRange, previousToken, }: InputProps) => (item: OptionItem) => void;
23
+ export {};
24
+ //# sourceMappingURL=use-dropdown-change-pm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-dropdown-change-pm.d.ts","sourceRoot":"","sources":["../../../editor-pm/use-dropdown-change-pm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGpD,KAAK,UAAU,GAAG;IAChB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,IAAI,UAAU,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACxE,eAAe,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACxC,cAAc,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC5D,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,OAAO,WAAW,GAAG,SAAS,EAC9B,SAAS,MAAM,EACf,aAAa,MAAM;;;QAkBpB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,+HAUjC,UAAU,YAEF,UAAU,SAsJpB,CAAC"}
@@ -0,0 +1,140 @@
1
+ import { useCallback } from "react";
2
+ import { TextSelection } from "prosemirror-state";
3
+ import { tokenVocabulary } from "@rowsncolumns/fast-formula-parser";
4
+ import { extractTextFormatRuns, getPropertyStartIndex } from "./helpers";
5
+ export var getUnterminatedStringRange = function (token, docSize, fallbackEnd) {
6
+ var _a, _b, _c;
7
+ if (!token ||
8
+ ((_a = token.tokenType) === null || _a === void 0 ? void 0 : _a.name) !== tokenVocabulary.UnterminatedStringStart.name) {
9
+ return null;
10
+ }
11
+ var tokenLength = (_c = (_b = token.image) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
12
+ var fallbackStart = fallbackEnd - tokenLength;
13
+ var startOffset = token.startOffset !== undefined ? token.startOffset : fallbackStart - 1;
14
+ var start = Math.max(0, Math.min(startOffset + 1, docSize));
15
+ var end = Math.max(start, Math.min(start + tokenLength, docSize));
16
+ if (end <= start) {
17
+ return null;
18
+ }
19
+ return { from: start, to: end };
20
+ };
21
+ export var useDropdownChangePM = function (_a) {
22
+ var itemToString = _a.itemToString, formulaMode = _a.formulaMode, getView = _a.getView, onSubmit = _a.onSubmit, suggestionToken = _a.suggestionToken, activeToken = _a.activeToken, propertyToken = _a.propertyToken, parameterRange = _a.parameterRange, previousToken = _a.previousToken;
23
+ return useCallback(function (item) {
24
+ var _a, _b, _c;
25
+ var category = item.category;
26
+ var value = itemToString(item);
27
+ var view = getView();
28
+ if (formulaMode && view) {
29
+ var state_1 = view.state;
30
+ var tr_1 = state_1.tr;
31
+ var selection = state_1.selection;
32
+ var insertPos_1 = selection.from;
33
+ if (category === "parameter" && parameterRange) {
34
+ var from = Math.max(0, Math.min(parameterRange.start, state_1.doc.content.size));
35
+ var to = Math.max(from, Math.min(parameterRange.end, state_1.doc.content.size));
36
+ tr_1.delete(from, to);
37
+ tr_1.insertText(value, from);
38
+ var newCursorPos_1 = from + value.length;
39
+ tr_1.setSelection(TextSelection.near(tr_1.doc.resolve(newCursorPos_1)));
40
+ view.dispatch(tr_1);
41
+ view.focus();
42
+ return;
43
+ }
44
+ var deleteUnterminatedToken = function (tokenToDelete, fallbackEnd) {
45
+ var range = getUnterminatedStringRange(tokenToDelete, state_1.doc.content.size, fallbackEnd !== null && fallbackEnd !== void 0 ? fallbackEnd : insertPos_1);
46
+ if (range) {
47
+ tr_1.delete(range.from, range.to);
48
+ insertPos_1 = range.from;
49
+ }
50
+ };
51
+ // // If we have a suggestion token, delete it and update insert position
52
+ if (suggestionToken) {
53
+ var from = suggestionToken.startOffset + 1;
54
+ var to = suggestionToken.startOffset +
55
+ ((_b = (_a = suggestionToken.image) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) +
56
+ 1;
57
+ if (category === "property") {
58
+ var baseToken = propertyToken ||
59
+ suggestionToken.basePropertyToken ||
60
+ suggestionToken;
61
+ if (baseToken === null || baseToken === void 0 ? void 0 : baseToken.image) {
62
+ var dotIndex = getPropertyStartIndex(baseToken);
63
+ if (dotIndex !== -1) {
64
+ var baseStart = ((_c = baseToken.startOffset) !== null && _c !== void 0 ? _c : 0) + 1;
65
+ from = baseStart + dotIndex;
66
+ var tokenEnd = baseStart + baseToken.image.length;
67
+ to = tokenEnd;
68
+ }
69
+ }
70
+ }
71
+ var handled = false;
72
+ if (from <= to && to <= state_1.doc.content.size) {
73
+ tr_1.delete(from, to);
74
+ insertPos_1 = from;
75
+ handled = true;
76
+ }
77
+ if (!handled) {
78
+ deleteUnterminatedToken(suggestionToken);
79
+ }
80
+ }
81
+ deleteUnterminatedToken(previousToken, insertPos_1);
82
+ var textToInsert = "";
83
+ switch (category) {
84
+ case "table": {
85
+ var prevChar = insertPos_1 > 0
86
+ ? state_1.doc.textBetween(insertPos_1 - 1, insertPos_1)
87
+ : "";
88
+ var nextChar = state_1.doc.textBetween(insertPos_1, insertPos_1 + 1);
89
+ textToInsert = value + "[";
90
+ break;
91
+ }
92
+ case "column": {
93
+ var prevChar = insertPos_1 > 0
94
+ ? state_1.doc.textBetween(insertPos_1 - 1, insertPos_1)
95
+ : "";
96
+ var nextChar = state_1.doc.textBetween(insertPos_1, insertPos_1 + 1);
97
+ var prefix = prevChar === "[" || prevChar === "@" ? "" : "[";
98
+ var suffix = nextChar === "]" ? "" : "]";
99
+ textToInsert = prefix + value + suffix;
100
+ break;
101
+ }
102
+ case "thisrow":
103
+ textToInsert = "@";
104
+ break;
105
+ case "namedrange":
106
+ case "specialitem":
107
+ case "parameter":
108
+ textToInsert = value;
109
+ break;
110
+ case "property":
111
+ textToInsert = "." + value;
112
+ break;
113
+ case "function":
114
+ default:
115
+ textToInsert = value + "(";
116
+ break;
117
+ }
118
+ // Insert the text and move cursor to the end
119
+ tr_1.insertText(textToInsert, insertPos_1);
120
+ var newCursorPos = insertPos_1 + textToInsert.length;
121
+ tr_1.setSelection(TextSelection.near(tr_1.doc.resolve(newCursorPos)));
122
+ view.dispatch(tr_1);
123
+ view.focus();
124
+ }
125
+ else {
126
+ var textFormatRuns = extractTextFormatRuns(view === null || view === void 0 ? void 0 : view.state.doc);
127
+ onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(value, textFormatRuns);
128
+ }
129
+ }, [
130
+ onSubmit,
131
+ formulaMode,
132
+ getView,
133
+ itemToString,
134
+ suggestionToken,
135
+ activeToken,
136
+ propertyToken,
137
+ parameterRange,
138
+ previousToken,
139
+ ]);
140
+ };
@@ -0,0 +1,29 @@
1
+ import { type ParsedToken } from "@rowsncolumns/calculator";
2
+ import { EditorState } from "prosemirror-state";
3
+ import { EditorView } from "prosemirror-view";
4
+ import type { ProseMirrorEditorProps } from "./prosemirror-editor";
5
+ import { TextFormatRun } from "./types";
6
+ type UseEditorOnChangePMProps = {
7
+ onChange(value: string, textFormatRuns?: TextFormatRun[] | null): void;
8
+ getView(): EditorView | null;
9
+ isActive?: boolean;
10
+ enableContinuousSelection?: boolean;
11
+ onChangeCursor(position: number | undefined): void;
12
+ onChangeActiveToken(token: ParsedToken | undefined): void;
13
+ tokenizer(value: string): ParsedToken[];
14
+ onFormulaStateChange: ProseMirrorEditorProps["onFormulaStateChange"];
15
+ onSuggestionTokenChange(token: ParsedToken | undefined): void;
16
+ onTableTokenChange(token: ParsedToken | undefined): void;
17
+ onChangeFunctionToken(token: ParsedToken | undefined): void;
18
+ onChangeParameterIndex(index: number): void;
19
+ onChangeIsEdgeOfCell(isEdgeOfCell: boolean): void;
20
+ onCellPropertyTokenChange(token: ParsedToken | undefined): void;
21
+ onChangeFunctionParameters?(params: string[], ranges: {
22
+ start: number;
23
+ end: number;
24
+ }[]): void;
25
+ onChangePreviousToken(token: ParsedToken | undefined): void;
26
+ };
27
+ export declare const useEditorOnChangePM: ({ onChange, getView, isActive, enableContinuousSelection, tokenizer, onChangeCursor, onChangeActiveToken, onFormulaStateChange, onSuggestionTokenChange, onTableTokenChange, onChangeFunctionToken, onChangeParameterIndex, onCellPropertyTokenChange, onChangeFunctionParameters, onChangeIsEdgeOfCell, onChangePreviousToken, }: UseEditorOnChangePMProps) => (newState: EditorState) => void;
28
+ export {};
29
+ //# sourceMappingURL=use-editor-change-pm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-editor-change-pm.d.ts","sourceRoot":"","sources":["../../../editor-pm/use-editor-change-pm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAuBnE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACvE,OAAO,IAAI,UAAU,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACnD,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACxC,oBAAoB,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;IACrE,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9D,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IACzD,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5D,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,oBAAoB,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,yBAAyB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAChE,0BAA0B,CAAC,CACzB,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,GACvC,IAAI,CAAC;IACR,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;CAC7D,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,mUAiBjC,wBAAwB,gBAWV,WAAW,SA6M3B,CAAC"}
@@ -0,0 +1,154 @@
1
+ import { tokenVocabulary } from "@rowsncolumns/calculator";
2
+ import { isAFormula } from "@rowsncolumns/utils";
3
+ import { useCallback, useEffect, useRef } from "react";
4
+ import { enableCellSelection, extractTextFormatRuns, getActiveFunctionToken, getActiveSelectionIndex, getActiveSuggestionToken, getActiveTableToken, getActiveToken, getCursorPosition, getFunctionParameters, getParameterIndex, getTokenizationContent, getPreviousToken, hasPropertyReference, isCellToken, isNamedRangeToken, isTableColumnToken, isTableNameToken, resolveCellPropertyToken, serializeEditorValue, } from "./helpers";
5
+ import { useCallbackRef } from "@rowsncolumns/grid";
6
+ import { CELL_SUGGESTION_PREFIX } from "../editor/constants";
7
+ export var useEditorOnChangePM = function (_a) {
8
+ var onChange = _a.onChange, getView = _a.getView, isActive = _a.isActive, enableContinuousSelection = _a.enableContinuousSelection, tokenizer = _a.tokenizer, onChangeCursor = _a.onChangeCursor, onChangeActiveToken = _a.onChangeActiveToken, onFormulaStateChange = _a.onFormulaStateChange, onSuggestionTokenChange = _a.onSuggestionTokenChange, onTableTokenChange = _a.onTableTokenChange, onChangeFunctionToken = _a.onChangeFunctionToken, onChangeParameterIndex = _a.onChangeParameterIndex, onCellPropertyTokenChange = _a.onCellPropertyTokenChange, onChangeFunctionParameters = _a.onChangeFunctionParameters, onChangeIsEdgeOfCell = _a.onChangeIsEdgeOfCell, onChangePreviousToken = _a.onChangePreviousToken;
9
+ var lastSeenCursorTokenRef = useRef(undefined);
10
+ useEffect(function () {
11
+ if (!isActive) {
12
+ lastSeenCursorTokenRef.current = undefined;
13
+ }
14
+ }, [isActive]);
15
+ return useCallbackRef(useCallback(function (newState) {
16
+ var _a, _b, _c, _d, _e, _f;
17
+ var newValue = serializeEditorValue(newState.doc);
18
+ var isFormula = isAFormula(newValue);
19
+ var textFormatRuns = isFormula
20
+ ? undefined
21
+ : extractTextFormatRuns(newState.doc);
22
+ // Callback
23
+ onChange(newValue, textFormatRuns);
24
+ // Formula mode
25
+ var view = getView();
26
+ // Set cursor tokens
27
+ if (isFormula && isActive && view) {
28
+ var cursorPos = getCursorPosition(newState);
29
+ if (cursorPos === undefined) {
30
+ lastSeenCursorTokenRef.current = undefined;
31
+ onChangeCursor(undefined);
32
+ return;
33
+ }
34
+ // Get content for tokenization - handle both single and multi-line scenarios
35
+ var _g = getTokenizationContent(newState, cursorPos), line = _g.line, offsetInLine = _g.offsetInLine;
36
+ var tokens = tokenizer(line);
37
+ var activeToken = getActiveToken(offsetInLine, tokens);
38
+ var previousToken = getPreviousToken(offsetInLine, tokens);
39
+ var isEdge = (activeToken === null || activeToken === void 0 ? void 0 : activeToken.endColumn) === offsetInLine;
40
+ var isCell = activeToken
41
+ ? isCellToken(activeToken) ||
42
+ isTableColumnToken(activeToken) ||
43
+ isTableNameToken(activeToken)
44
+ : false;
45
+ var isNamedRange = activeToken
46
+ ? isNamedRangeToken(activeToken)
47
+ : false;
48
+ var isEdgeOfCell = isEdge &&
49
+ ((isCell && !hasPropertyReference(activeToken)) || isNamedRange);
50
+ var canSelectCells = Boolean(enableCellSelection(offsetInLine, cursorPos, tokens));
51
+ var selectionIndex = getActiveSelectionIndex(activeToken);
52
+ var suggestionToken = getActiveSuggestionToken(offsetInLine, activeToken, view);
53
+ var tableToken = getActiveTableToken(offsetInLine, activeToken, tokens, view, isEdge);
54
+ var tokenForFunction = activeToken !== null && activeToken !== void 0 ? activeToken : previousToken;
55
+ var functionToken = getActiveFunctionToken(tokenForFunction, tokens);
56
+ // Check for cell property token - we want to show suggestions when user types "A1."
57
+ var cellPropertyToken = resolveCellPropertyToken(activeToken, tokens);
58
+ if (!cellPropertyToken && suggestionToken) {
59
+ var basePropertyToken = suggestionToken.basePropertyToken;
60
+ if (basePropertyToken) {
61
+ cellPropertyToken = basePropertyToken;
62
+ }
63
+ }
64
+ var isPropertyContext = Boolean(cellPropertyToken);
65
+ if (isPropertyContext) {
66
+ canSelectCells = false;
67
+ }
68
+ if (canSelectCells) {
69
+ lastSeenCursorTokenRef.current = cursorPos;
70
+ }
71
+ var charBeforeCursor = offsetInLine > 0 ? line[offsetInLine - 1] : "";
72
+ var isSpaceTerminator = charBeforeCursor === " " &&
73
+ !CELL_SUGGESTION_PREFIX.includes((_b = (_a = previousToken === null || previousToken === void 0 ? void 0 : previousToken.tokenType) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : "");
74
+ if (isSpaceTerminator) {
75
+ lastSeenCursorTokenRef.current = undefined;
76
+ }
77
+ var lastSeenCursorPos = lastSeenCursorTokenRef.current;
78
+ var isLiteralToken = ((_c = activeToken === null || activeToken === void 0 ? void 0 : activeToken.tokenType) === null || _c === void 0 ? void 0 : _c.name) === tokenVocabulary.String.name ||
79
+ ((_d = activeToken === null || activeToken === void 0 ? void 0 : activeToken.tokenType) === null || _d === void 0 ? void 0 : _d.name) ===
80
+ tokenVocabulary.UnterminatedStringStart.name ||
81
+ ((_e = activeToken === null || activeToken === void 0 ? void 0 : activeToken.tokenType) === null || _e === void 0 ? void 0 : _e.name) === tokenVocabulary.Number.name ||
82
+ ((_f = activeToken === null || activeToken === void 0 ? void 0 : activeToken.tokenType) === null || _f === void 0 ? void 0 : _f.name) === tokenVocabulary.Boolean.name;
83
+ var isContinuation = enableContinuousSelection
84
+ ? canSelectCells || isEdgeOfCell
85
+ : !isPropertyContext &&
86
+ !isLiteralToken &&
87
+ lastSeenCursorPos !== undefined &&
88
+ cursorPos >= lastSeenCursorPos;
89
+ if (isLiteralToken || (!canSelectCells && !isContinuation)) {
90
+ lastSeenCursorTokenRef.current = undefined;
91
+ }
92
+ // Get function parameters
93
+ var parameterIndex = getParameterIndex(tokenForFunction, functionToken, tokens);
94
+ var _h = getFunctionParameters(line, functionToken), parameters = _h.parameters, ranges = _h.ranges;
95
+ // Cursor position to show cell suggestion
96
+ onChangeCursor(canSelectCells ? cursorPos : undefined);
97
+ // Active token
98
+ onChangeActiveToken(activeToken);
99
+ onChangePreviousToken(previousToken);
100
+ onSuggestionTokenChange === null || onSuggestionTokenChange === void 0 ? void 0 : onSuggestionTokenChange(suggestionToken);
101
+ // Table token change
102
+ onTableTokenChange === null || onTableTokenChange === void 0 ? void 0 : onTableTokenChange(tableToken);
103
+ // Function token change
104
+ onChangeFunctionToken === null || onChangeFunctionToken === void 0 ? void 0 : onChangeFunctionToken(functionToken);
105
+ // Cell property token change
106
+ onCellPropertyTokenChange === null || onCellPropertyTokenChange === void 0 ? void 0 : onCellPropertyTokenChange(cellPropertyToken);
107
+ // On parameter index change
108
+ onChangeParameterIndex === null || onChangeParameterIndex === void 0 ? void 0 : onChangeParameterIndex(parameterIndex);
109
+ onChangeFunctionParameters === null || onChangeFunctionParameters === void 0 ? void 0 : onChangeFunctionParameters(parameters, ranges);
110
+ onChangeIsEdgeOfCell(isEdgeOfCell);
111
+ /**
112
+ * Users are able to select cells
113
+ * 1. When canUserSelect = true
114
+ */
115
+ var finalCanSelectCells = !isPropertyContext && (canSelectCells || isContinuation);
116
+ var selectionMode = isPropertyContext || !canSelectCells ? "modify" : "append";
117
+ // Callback to update
118
+ onFormulaStateChange === null || onFormulaStateChange === void 0 ? void 0 : onFormulaStateChange(finalCanSelectCells, selectionMode, selectionIndex);
119
+ }
120
+ else {
121
+ lastSeenCursorTokenRef.current = undefined;
122
+ // Function token change
123
+ onChangeFunctionToken === null || onChangeFunctionToken === void 0 ? void 0 : onChangeFunctionToken(undefined);
124
+ onChangeFunctionParameters === null || onChangeFunctionParameters === void 0 ? void 0 : onChangeFunctionParameters([], []);
125
+ // Set suggestion token
126
+ onSuggestionTokenChange({
127
+ image: newValue,
128
+ startColumn: 0,
129
+ startOffset: 0,
130
+ endColumn: 0,
131
+ endOffset: 0,
132
+ endLine: 0,
133
+ tokenType: { name: "Suggestion" },
134
+ tokenTypeIdx: 0,
135
+ });
136
+ }
137
+ }, [
138
+ onChange,
139
+ getView,
140
+ isActive,
141
+ enableContinuousSelection,
142
+ tokenizer,
143
+ onFormulaStateChange,
144
+ onChangeActiveToken,
145
+ onSuggestionTokenChange,
146
+ onChangeIsEdgeOfCell,
147
+ onChangeCursor,
148
+ onTableTokenChange,
149
+ onChangeFunctionToken,
150
+ onChangeParameterIndex,
151
+ onCellPropertyTokenChange,
152
+ onChangeFunctionParameters,
153
+ ]));
154
+ };