@health-samurai/react-components 0.0.0-alpha.2 → 0.0.0-alpha.21

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 (571) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +102 -1
  3. package/dist/bundle.css +2349 -754
  4. package/dist/src/components/button-dropdown.d.ts +10 -0
  5. package/dist/src/components/button-dropdown.d.ts.map +1 -0
  6. package/dist/src/components/button-dropdown.js +70 -0
  7. package/dist/src/components/button-dropdown.js.map +1 -0
  8. package/dist/src/components/button-dropdown.stories.js +48 -0
  9. package/dist/src/components/button-dropdown.stories.js.map +1 -0
  10. package/dist/src/components/code-editor/fhir-autocomplete.d.ts +70 -0
  11. package/dist/src/components/code-editor/fhir-autocomplete.d.ts.map +1 -0
  12. package/dist/src/components/code-editor/fhir-autocomplete.js +1850 -0
  13. package/dist/src/components/code-editor/fhir-autocomplete.js.map +1 -0
  14. package/dist/src/components/code-editor/fhir-autocomplete.test.js +1099 -0
  15. package/dist/src/components/code-editor/fhir-autocomplete.test.js.map +1 -0
  16. package/dist/src/components/code-editor/http/grammar/http.d.ts +3 -0
  17. package/dist/src/components/code-editor/http/grammar/http.d.ts.map +1 -0
  18. package/dist/src/components/code-editor/http/grammar/http.grammar +74 -0
  19. package/dist/src/components/code-editor/http/grammar/http.js +38 -0
  20. package/dist/src/components/code-editor/http/grammar/http.js.map +1 -0
  21. package/dist/src/components/code-editor/http/grammar/http.terms.d.ts +2 -0
  22. package/dist/src/components/code-editor/http/grammar/http.terms.d.ts.map +1 -0
  23. package/dist/src/components/code-editor/http/grammar/http.terms.js +4 -0
  24. package/dist/src/components/code-editor/http/grammar/http.terms.js.map +1 -0
  25. package/dist/src/components/code-editor/http/grammar/http.test.js +80 -0
  26. package/dist/src/components/code-editor/http/grammar/http.test.js.map +1 -0
  27. package/dist/src/components/code-editor/http/index.d.ts +12 -0
  28. package/dist/src/components/code-editor/http/index.d.ts.map +1 -0
  29. package/dist/src/components/code-editor/http/index.js +486 -0
  30. package/dist/src/components/code-editor/http/index.js.map +1 -0
  31. package/dist/src/components/code-editor/index.d.ts +39 -1
  32. package/dist/src/components/code-editor/index.d.ts.map +1 -1
  33. package/dist/src/components/code-editor/index.js +1792 -45
  34. package/dist/src/components/code-editor/index.js.map +1 -1
  35. package/dist/src/components/code-editor/json-ast.d.ts +46 -0
  36. package/dist/src/components/code-editor/json-ast.d.ts.map +1 -0
  37. package/dist/src/components/code-editor/json-ast.js +465 -0
  38. package/dist/src/components/code-editor/json-ast.js.map +1 -0
  39. package/dist/src/components/code-editor/json-ast.test.js +206 -0
  40. package/dist/src/components/code-editor/json-ast.test.js.map +1 -0
  41. package/dist/src/components/code-editor/sql-completion.d.ts +22 -0
  42. package/dist/src/components/code-editor/sql-completion.d.ts.map +1 -0
  43. package/dist/src/components/code-editor/sql-completion.js +897 -0
  44. package/dist/src/components/code-editor/sql-completion.js.map +1 -0
  45. package/dist/src/components/code-editor.stories.js +280 -3
  46. package/dist/src/components/code-editor.stories.js.map +1 -1
  47. package/dist/src/components/copy-icon.d.ts +5 -1
  48. package/dist/src/components/copy-icon.d.ts.map +1 -1
  49. package/dist/src/components/copy-icon.js +41 -3
  50. package/dist/src/components/copy-icon.js.map +1 -1
  51. package/dist/src/components/data-table.d.ts +9 -0
  52. package/dist/src/components/data-table.d.ts.map +1 -0
  53. package/dist/src/components/data-table.js +66 -0
  54. package/dist/src/components/data-table.js.map +1 -0
  55. package/dist/src/components/data-table.stories.js +240 -0
  56. package/dist/src/components/data-table.stories.js.map +1 -0
  57. package/dist/src/components/date-picker-input.d.ts +10 -0
  58. package/dist/src/components/date-picker-input.d.ts.map +1 -0
  59. package/dist/src/components/date-picker-input.js +90 -0
  60. package/dist/src/components/date-picker-input.js.map +1 -0
  61. package/dist/src/components/date-picker-input.stories.js +76 -0
  62. package/dist/src/components/date-picker-input.stories.js.map +1 -0
  63. package/dist/src/components/fhir-structure-view.d.ts +34 -0
  64. package/dist/src/components/fhir-structure-view.d.ts.map +1 -0
  65. package/dist/src/components/fhir-structure-view.js +230 -0
  66. package/dist/src/components/fhir-structure-view.js.map +1 -0
  67. package/dist/src/components/fhir-structure-view.stories.js +447 -0
  68. package/dist/src/components/fhir-structure-view.stories.js.map +1 -0
  69. package/dist/src/components/icon-button.d.ts +12 -0
  70. package/dist/src/components/icon-button.d.ts.map +1 -0
  71. package/dist/src/components/icon-button.js +41 -0
  72. package/dist/src/components/icon-button.js.map +1 -0
  73. package/dist/src/components/icon-button.stories.js +157 -0
  74. package/dist/src/components/icon-button.stories.js.map +1 -0
  75. package/dist/src/components/operation-outcome-view.d.ts +27 -0
  76. package/dist/src/components/operation-outcome-view.d.ts.map +1 -0
  77. package/dist/src/components/operation-outcome-view.js +198 -0
  78. package/dist/src/components/operation-outcome-view.js.map +1 -0
  79. package/dist/src/components/operation-outcome-view.stories.js +207 -0
  80. package/dist/src/components/operation-outcome-view.stories.js.map +1 -0
  81. package/dist/src/components/request-line-editor.d.ts +13 -35
  82. package/dist/src/components/request-line-editor.d.ts.map +1 -1
  83. package/dist/src/components/request-line-editor.js +73 -49
  84. package/dist/src/components/request-line-editor.js.map +1 -1
  85. package/dist/src/components/request-line-editor.stories.js +17 -53
  86. package/dist/src/components/request-line-editor.stories.js.map +1 -1
  87. package/dist/src/components/sandbox.d.ts +13 -0
  88. package/dist/src/components/sandbox.d.ts.map +1 -0
  89. package/dist/src/components/sandbox.js +107 -0
  90. package/dist/src/components/sandbox.js.map +1 -0
  91. package/dist/src/components/sandbox.stories.js +126 -0
  92. package/dist/src/components/sandbox.stories.js.map +1 -0
  93. package/dist/src/components/segment-control.d.ts +13 -0
  94. package/dist/src/components/segment-control.d.ts.map +1 -0
  95. package/dist/src/components/segment-control.js +33 -0
  96. package/dist/src/components/segment-control.js.map +1 -0
  97. package/dist/src/components/segment-control.stories.js +68 -0
  98. package/dist/src/components/segment-control.stories.js.map +1 -0
  99. package/dist/src/components/split-button.d.ts +12 -0
  100. package/dist/src/components/split-button.d.ts.map +1 -0
  101. package/dist/src/components/split-button.js +33 -0
  102. package/dist/src/components/split-button.js.map +1 -0
  103. package/dist/src/components/split-button.stories.js +84 -0
  104. package/dist/src/components/split-button.stories.js.map +1 -0
  105. package/dist/src/components/tag.d.ts +16 -0
  106. package/dist/src/components/tag.d.ts.map +1 -0
  107. package/dist/src/components/tag.js +198 -0
  108. package/dist/src/components/tag.js.map +1 -0
  109. package/dist/src/components/tag.stories.js +459 -0
  110. package/dist/src/components/tag.stories.js.map +1 -0
  111. package/dist/src/components/tile.d.ts +15 -0
  112. package/dist/src/components/tile.d.ts.map +1 -0
  113. package/dist/src/components/tile.js +76 -0
  114. package/dist/src/components/tile.js.map +1 -0
  115. package/dist/src/components/tile.stories.js +167 -0
  116. package/dist/src/components/tile.stories.js.map +1 -0
  117. package/dist/src/components/toolbar.d.ts +18 -0
  118. package/dist/src/components/toolbar.d.ts.map +1 -0
  119. package/dist/src/components/toolbar.js +61 -0
  120. package/dist/src/components/toolbar.js.map +1 -0
  121. package/dist/src/components/toolbar.stories.js +69 -0
  122. package/dist/src/components/toolbar.stories.js.map +1 -0
  123. package/dist/src/components/tree-view.d.ts +47 -0
  124. package/dist/src/components/tree-view.d.ts.map +1 -0
  125. package/dist/src/components/tree-view.js +122 -0
  126. package/dist/src/components/tree-view.js.map +1 -0
  127. package/dist/src/components/tree-view.stories.js +283 -0
  128. package/dist/src/components/tree-view.stories.js.map +1 -0
  129. package/dist/src/icons.d.ts +11 -0
  130. package/dist/src/icons.d.ts.map +1 -0
  131. package/dist/src/icons.js +328 -0
  132. package/dist/src/icons.js.map +1 -0
  133. package/dist/src/index.css +358 -74
  134. package/dist/src/index.d.ts +17 -1
  135. package/dist/src/index.d.ts.map +1 -1
  136. package/dist/src/index.js +17 -1
  137. package/dist/src/index.js.map +1 -1
  138. package/dist/src/shadcn/components/ui/accordion.d.ts +2 -2
  139. package/dist/src/shadcn/components/ui/accordion.d.ts.map +1 -1
  140. package/dist/src/shadcn/components/ui/accordion.js +35 -9
  141. package/dist/src/shadcn/components/ui/accordion.js.map +1 -1
  142. package/dist/src/shadcn/components/ui/alert-dialog.d.ts +12 -4
  143. package/dist/src/shadcn/components/ui/alert-dialog.d.ts.map +1 -1
  144. package/dist/src/shadcn/components/ui/alert-dialog.js +128 -18
  145. package/dist/src/shadcn/components/ui/alert-dialog.js.map +1 -1
  146. package/dist/src/shadcn/components/ui/alert-dialog.stories.js +269 -19
  147. package/dist/src/shadcn/components/ui/alert-dialog.stories.js.map +1 -1
  148. package/dist/src/shadcn/components/ui/alert.d.ts +29 -6
  149. package/dist/src/shadcn/components/ui/alert.d.ts.map +1 -1
  150. package/dist/src/shadcn/components/ui/alert.js +50 -19
  151. package/dist/src/shadcn/components/ui/alert.js.map +1 -1
  152. package/dist/src/shadcn/components/ui/alert.stories.js +140 -36
  153. package/dist/src/shadcn/components/ui/alert.stories.js.map +1 -1
  154. package/dist/src/shadcn/components/ui/aspect-ratio.d.ts.map +1 -1
  155. package/dist/src/shadcn/components/ui/aspect-ratio.js +1 -0
  156. package/dist/src/shadcn/components/ui/aspect-ratio.js.map +1 -1
  157. package/dist/src/shadcn/components/ui/avatar.d.ts.map +1 -1
  158. package/dist/src/shadcn/components/ui/avatar.js +4 -3
  159. package/dist/src/shadcn/components/ui/avatar.js.map +1 -1
  160. package/dist/src/shadcn/components/ui/avatar.stories.js +68 -2
  161. package/dist/src/shadcn/components/ui/avatar.stories.js.map +1 -1
  162. package/dist/src/shadcn/components/ui/badge.d.ts +1 -1
  163. package/dist/src/shadcn/components/ui/badge.d.ts.map +1 -1
  164. package/dist/src/shadcn/components/ui/badge.js +16 -5
  165. package/dist/src/shadcn/components/ui/badge.js.map +1 -1
  166. package/dist/src/shadcn/components/ui/breadcrumb.d.ts +5 -2
  167. package/dist/src/shadcn/components/ui/breadcrumb.d.ts.map +1 -1
  168. package/dist/src/shadcn/components/ui/breadcrumb.js +98 -13
  169. package/dist/src/shadcn/components/ui/breadcrumb.js.map +1 -1
  170. package/dist/src/shadcn/components/ui/breadcrumb.stories.js +205 -45
  171. package/dist/src/shadcn/components/ui/breadcrumb.stories.js.map +1 -1
  172. package/dist/src/shadcn/components/ui/button.d.ts.map +1 -1
  173. package/dist/src/shadcn/components/ui/button.js +65 -11
  174. package/dist/src/shadcn/components/ui/button.js.map +1 -1
  175. package/dist/src/shadcn/components/ui/button.stories.js +99 -17
  176. package/dist/src/shadcn/components/ui/button.stories.js.map +1 -1
  177. package/dist/src/shadcn/components/ui/calendar.d.ts +1 -1
  178. package/dist/src/shadcn/components/ui/calendar.d.ts.map +1 -1
  179. package/dist/src/shadcn/components/ui/calendar.js +1 -0
  180. package/dist/src/shadcn/components/ui/calendar.js.map +1 -1
  181. package/dist/src/shadcn/components/ui/card.d.ts +5 -1
  182. package/dist/src/shadcn/components/ui/card.d.ts.map +1 -1
  183. package/dist/src/shadcn/components/ui/card.js +28 -7
  184. package/dist/src/shadcn/components/ui/card.js.map +1 -1
  185. package/dist/src/shadcn/components/ui/card.stories.js +23 -2
  186. package/dist/src/shadcn/components/ui/card.stories.js.map +1 -1
  187. package/dist/src/shadcn/components/ui/carousel.d.ts +1 -1
  188. package/dist/src/shadcn/components/ui/carousel.d.ts.map +1 -1
  189. package/dist/src/shadcn/components/ui/carousel.js +1 -0
  190. package/dist/src/shadcn/components/ui/carousel.js.map +1 -1
  191. package/dist/src/shadcn/components/ui/chart.d.ts +5 -5
  192. package/dist/src/shadcn/components/ui/chart.d.ts.map +1 -1
  193. package/dist/src/shadcn/components/ui/chart.js +4 -3
  194. package/dist/src/shadcn/components/ui/chart.js.map +1 -1
  195. package/dist/src/shadcn/components/ui/checkbox.d.ts +5 -1
  196. package/dist/src/shadcn/components/ui/checkbox.d.ts.map +1 -1
  197. package/dist/src/shadcn/components/ui/checkbox.js +46 -6
  198. package/dist/src/shadcn/components/ui/checkbox.js.map +1 -1
  199. package/dist/src/shadcn/components/ui/checkbox.stories.js +156 -46
  200. package/dist/src/shadcn/components/ui/checkbox.stories.js.map +1 -1
  201. package/dist/src/shadcn/components/ui/combobox.d.ts +29 -0
  202. package/dist/src/shadcn/components/ui/combobox.d.ts.map +1 -0
  203. package/dist/src/shadcn/components/ui/combobox.js +226 -0
  204. package/dist/src/shadcn/components/ui/combobox.js.map +1 -0
  205. package/dist/src/shadcn/components/ui/combobox.stories.js +167 -0
  206. package/dist/src/shadcn/components/ui/combobox.stories.js.map +1 -0
  207. package/dist/src/shadcn/components/ui/command.d.ts +4 -2
  208. package/dist/src/shadcn/components/ui/command.d.ts.map +1 -1
  209. package/dist/src/shadcn/components/ui/command.js +75 -13
  210. package/dist/src/shadcn/components/ui/command.js.map +1 -1
  211. package/dist/src/shadcn/components/ui/command.stories.js +277 -57
  212. package/dist/src/shadcn/components/ui/command.stories.js.map +1 -1
  213. package/dist/src/shadcn/components/ui/context-menu.d.ts +7 -3
  214. package/dist/src/shadcn/components/ui/context-menu.d.ts.map +1 -1
  215. package/dist/src/shadcn/components/ui/context-menu.js +120 -13
  216. package/dist/src/shadcn/components/ui/context-menu.js.map +1 -1
  217. package/dist/src/shadcn/components/ui/dialog.d.ts.map +1 -1
  218. package/dist/src/shadcn/components/ui/dialog.js +35 -7
  219. package/dist/src/shadcn/components/ui/dialog.js.map +1 -1
  220. package/dist/src/shadcn/components/ui/drawer.d.ts.map +1 -1
  221. package/dist/src/shadcn/components/ui/drawer.js +27 -5
  222. package/dist/src/shadcn/components/ui/drawer.js.map +1 -1
  223. package/dist/src/shadcn/components/ui/dropdown-menu.d.ts +7 -3
  224. package/dist/src/shadcn/components/ui/dropdown-menu.d.ts.map +1 -1
  225. package/dist/src/shadcn/components/ui/dropdown-menu.js +122 -14
  226. package/dist/src/shadcn/components/ui/dropdown-menu.js.map +1 -1
  227. package/dist/src/shadcn/components/ui/dropdown-menu.stories.js +22 -5
  228. package/dist/src/shadcn/components/ui/dropdown-menu.stories.js.map +1 -1
  229. package/dist/src/shadcn/components/ui/form.d.ts +2 -2
  230. package/dist/src/shadcn/components/ui/form.d.ts.map +1 -1
  231. package/dist/src/shadcn/components/ui/form.js +17 -8
  232. package/dist/src/shadcn/components/ui/form.js.map +1 -1
  233. package/dist/src/shadcn/components/ui/hover-card.d.ts.map +1 -1
  234. package/dist/src/shadcn/components/ui/hover-card.js +2 -1
  235. package/dist/src/shadcn/components/ui/hover-card.js.map +1 -1
  236. package/dist/src/shadcn/components/ui/input-otp.d.ts.map +1 -1
  237. package/dist/src/shadcn/components/ui/input-otp.js +1 -0
  238. package/dist/src/shadcn/components/ui/input-otp.js.map +1 -1
  239. package/dist/src/shadcn/components/ui/input.d.ts +3 -1
  240. package/dist/src/shadcn/components/ui/input.d.ts.map +1 -1
  241. package/dist/src/shadcn/components/ui/input.js +126 -17
  242. package/dist/src/shadcn/components/ui/input.js.map +1 -1
  243. package/dist/src/shadcn/components/ui/input.stories.js +218 -29
  244. package/dist/src/shadcn/components/ui/input.stories.js.map +1 -1
  245. package/dist/src/shadcn/components/ui/label.d.ts.map +1 -1
  246. package/dist/src/shadcn/components/ui/label.js +9 -1
  247. package/dist/src/shadcn/components/ui/label.js.map +1 -1
  248. package/dist/src/shadcn/components/ui/menubar.d.ts.map +1 -1
  249. package/dist/src/shadcn/components/ui/menubar.js +35 -13
  250. package/dist/src/shadcn/components/ui/menubar.js.map +1 -1
  251. package/dist/src/shadcn/components/ui/pagination.d.ts +9 -2
  252. package/dist/src/shadcn/components/ui/pagination.d.ts.map +1 -1
  253. package/dist/src/shadcn/components/ui/pagination.js +41 -24
  254. package/dist/src/shadcn/components/ui/pagination.js.map +1 -1
  255. package/dist/src/shadcn/components/ui/pagination.stories.js +44 -37
  256. package/dist/src/shadcn/components/ui/pagination.stories.js.map +1 -1
  257. package/dist/src/shadcn/components/ui/popover.d.ts.map +1 -1
  258. package/dist/src/shadcn/components/ui/popover.js +13 -1
  259. package/dist/src/shadcn/components/ui/popover.js.map +1 -1
  260. package/dist/src/shadcn/components/ui/progress.d.ts.map +1 -1
  261. package/dist/src/shadcn/components/ui/progress.js +6 -2
  262. package/dist/src/shadcn/components/ui/progress.js.map +1 -1
  263. package/dist/src/shadcn/components/ui/radio-button-group.d.ts +21 -0
  264. package/dist/src/shadcn/components/ui/radio-button-group.d.ts.map +1 -0
  265. package/dist/src/shadcn/components/ui/radio-button-group.js +148 -0
  266. package/dist/src/shadcn/components/ui/radio-button-group.js.map +1 -0
  267. package/dist/src/shadcn/components/ui/radio-button-group.stories.js +283 -0
  268. package/dist/src/shadcn/components/ui/radio-button-group.stories.js.map +1 -0
  269. package/dist/src/shadcn/components/ui/radio-group.d.ts +5 -1
  270. package/dist/src/shadcn/components/ui/radio-group.d.ts.map +1 -1
  271. package/dist/src/shadcn/components/ui/radio-group.js +40 -7
  272. package/dist/src/shadcn/components/ui/radio-group.js.map +1 -1
  273. package/dist/src/shadcn/components/ui/radio-group.stories.js +107 -32
  274. package/dist/src/shadcn/components/ui/radio-group.stories.js.map +1 -1
  275. package/dist/src/shadcn/components/ui/resizable.d.ts.map +1 -1
  276. package/dist/src/shadcn/components/ui/resizable.js +2 -1
  277. package/dist/src/shadcn/components/ui/resizable.js.map +1 -1
  278. package/dist/src/shadcn/components/ui/resizable.stories.js +2 -2
  279. package/dist/src/shadcn/components/ui/resizable.stories.js.map +1 -1
  280. package/dist/src/shadcn/components/ui/scroll-area.d.ts.map +1 -1
  281. package/dist/src/shadcn/components/ui/scroll-area.js +10 -3
  282. package/dist/src/shadcn/components/ui/scroll-area.js.map +1 -1
  283. package/dist/src/shadcn/components/ui/select.d.ts +1 -2
  284. package/dist/src/shadcn/components/ui/select.d.ts.map +1 -1
  285. package/dist/src/shadcn/components/ui/select.js +49 -19
  286. package/dist/src/shadcn/components/ui/select.js.map +1 -1
  287. package/dist/src/shadcn/components/ui/select.stories.js +193 -70
  288. package/dist/src/shadcn/components/ui/select.stories.js.map +1 -1
  289. package/dist/src/shadcn/components/ui/separator.d.ts.map +1 -1
  290. package/dist/src/shadcn/components/ui/separator.js +8 -1
  291. package/dist/src/shadcn/components/ui/separator.js.map +1 -1
  292. package/dist/src/shadcn/components/ui/sheet.js +1 -1
  293. package/dist/src/shadcn/components/ui/sheet.js.map +1 -1
  294. package/dist/src/shadcn/components/ui/sidebar.d.ts +4 -4
  295. package/dist/src/shadcn/components/ui/sidebar.d.ts.map +1 -1
  296. package/dist/src/shadcn/components/ui/sidebar.js +21 -6
  297. package/dist/src/shadcn/components/ui/sidebar.js.map +1 -1
  298. package/dist/src/shadcn/components/ui/skeleton.d.ts.map +1 -1
  299. package/dist/src/shadcn/components/ui/skeleton.js +3 -1
  300. package/dist/src/shadcn/components/ui/skeleton.js.map +1 -1
  301. package/dist/src/shadcn/components/ui/slider.d.ts.map +1 -1
  302. package/dist/src/shadcn/components/ui/slider.js +35 -4
  303. package/dist/src/shadcn/components/ui/slider.js.map +1 -1
  304. package/dist/src/shadcn/components/ui/sonner.d.ts +24 -2
  305. package/dist/src/shadcn/components/ui/sonner.d.ts.map +1 -1
  306. package/dist/src/shadcn/components/ui/sonner.js +127 -9
  307. package/dist/src/shadcn/components/ui/sonner.js.map +1 -1
  308. package/dist/src/shadcn/components/ui/sonner.stories.js +251 -12
  309. package/dist/src/shadcn/components/ui/sonner.stories.js.map +1 -1
  310. package/dist/src/shadcn/components/ui/switch.d.ts +7 -1
  311. package/dist/src/shadcn/components/ui/switch.d.ts.map +1 -1
  312. package/dist/src/shadcn/components/ui/switch.js +55 -3
  313. package/dist/src/shadcn/components/ui/switch.js.map +1 -1
  314. package/dist/src/shadcn/components/ui/switch.stories.js +84 -9
  315. package/dist/src/shadcn/components/ui/switch.stories.js.map +1 -1
  316. package/dist/src/shadcn/components/ui/table.d.ts +23 -6
  317. package/dist/src/shadcn/components/ui/table.d.ts.map +1 -1
  318. package/dist/src/shadcn/components/ui/table.js +65 -20
  319. package/dist/src/shadcn/components/ui/table.js.map +1 -1
  320. package/dist/src/shadcn/components/ui/table.stories.js +217 -97
  321. package/dist/src/shadcn/components/ui/table.stories.js.map +1 -1
  322. package/dist/src/shadcn/components/ui/tabs.d.ts +30 -5
  323. package/dist/src/shadcn/components/ui/tabs.d.ts.map +1 -1
  324. package/dist/src/shadcn/components/ui/tabs.js +470 -23
  325. package/dist/src/shadcn/components/ui/tabs.js.map +1 -1
  326. package/dist/src/shadcn/components/ui/tabs.stories.js +405 -181
  327. package/dist/src/shadcn/components/ui/tabs.stories.js.map +1 -1
  328. package/dist/src/shadcn/components/ui/textarea.d.ts +8 -1
  329. package/dist/src/shadcn/components/ui/textarea.d.ts.map +1 -1
  330. package/dist/src/shadcn/components/ui/textarea.js +30 -2
  331. package/dist/src/shadcn/components/ui/textarea.js.map +1 -1
  332. package/dist/src/shadcn/components/ui/textarea.stories.js +85 -4
  333. package/dist/src/shadcn/components/ui/textarea.stories.js.map +1 -1
  334. package/dist/src/shadcn/components/ui/toggle-group.d.ts +3 -3
  335. package/dist/src/shadcn/components/ui/toggle-group.d.ts.map +1 -1
  336. package/dist/src/shadcn/components/ui/toggle-group.js +14 -12
  337. package/dist/src/shadcn/components/ui/toggle-group.js.map +1 -1
  338. package/dist/src/shadcn/components/ui/toggle.d.ts +3 -4
  339. package/dist/src/shadcn/components/ui/toggle.d.ts.map +1 -1
  340. package/dist/src/shadcn/components/ui/toggle.js +44 -16
  341. package/dist/src/shadcn/components/ui/toggle.js.map +1 -1
  342. package/dist/src/shadcn/components/ui/toggle.stories.js +130 -7
  343. package/dist/src/shadcn/components/ui/toggle.stories.js.map +1 -1
  344. package/dist/src/shadcn/components/ui/tooltip.d.ts.map +1 -1
  345. package/dist/src/shadcn/components/ui/tooltip.js +12 -1
  346. package/dist/src/shadcn/components/ui/tooltip.js.map +1 -1
  347. package/dist/src/shadcn/components/ui/tree.d.ts +29 -0
  348. package/dist/src/shadcn/components/ui/tree.d.ts.map +1 -0
  349. package/dist/src/shadcn/components/ui/tree.js +135 -0
  350. package/dist/src/shadcn/components/ui/tree.js.map +1 -0
  351. package/dist/src/shadcn/shadcn.css +4 -4
  352. package/dist/src/tokens.css +50 -20
  353. package/dist/src/typography.css +78 -15
  354. package/package.json +84 -64
  355. package/src/components/button-dropdown.stories.tsx +41 -0
  356. package/src/components/button-dropdown.tsx +97 -0
  357. package/src/components/code-editor/fhir-autocomplete.test.ts +993 -0
  358. package/src/components/code-editor/fhir-autocomplete.ts +2322 -0
  359. package/src/components/code-editor/http/grammar/http.grammar +74 -0
  360. package/src/components/code-editor/http/grammar/http.terms.ts +9 -0
  361. package/src/components/code-editor/http/grammar/http.test.ts +110 -0
  362. package/src/components/code-editor/http/grammar/http.ts +21 -0
  363. package/src/components/code-editor/http/index.ts +424 -0
  364. package/src/components/code-editor/index.tsx +1944 -42
  365. package/src/components/code-editor/json-ast.test.ts +230 -0
  366. package/src/components/code-editor/json-ast.ts +590 -0
  367. package/src/components/code-editor/sql-completion.ts +1112 -0
  368. package/src/components/code-editor.stories.tsx +325 -2
  369. package/src/components/copy-icon.tsx +57 -3
  370. package/src/components/data-table.stories.tsx +91 -0
  371. package/src/components/data-table.tsx +126 -0
  372. package/src/components/date-picker-input.stories.tsx +79 -0
  373. package/src/components/date-picker-input.tsx +104 -0
  374. package/src/components/fhir-structure-view.stories.tsx +439 -0
  375. package/src/components/fhir-structure-view.tsx +233 -0
  376. package/src/components/icon-button.stories.tsx +86 -0
  377. package/src/components/icon-button.tsx +57 -0
  378. package/src/components/operation-outcome-view.stories.tsx +163 -0
  379. package/src/components/operation-outcome-view.tsx +254 -0
  380. package/src/components/request-line-editor.stories.tsx +17 -27
  381. package/src/components/request-line-editor.tsx +103 -61
  382. package/src/components/sandbox.stories.tsx +131 -0
  383. package/src/components/sandbox.tsx +191 -0
  384. package/src/components/segment-control.stories.tsx +61 -0
  385. package/src/components/segment-control.tsx +83 -0
  386. package/src/components/split-button.stories.tsx +68 -0
  387. package/src/components/split-button.tsx +74 -0
  388. package/src/components/tag.stories.tsx +371 -0
  389. package/src/components/tag.tsx +236 -0
  390. package/src/components/tile.stories.tsx +149 -0
  391. package/src/components/tile.tsx +105 -0
  392. package/src/components/toolbar.stories.tsx +64 -0
  393. package/src/components/toolbar.tsx +98 -0
  394. package/src/components/tree-view.stories.tsx +265 -0
  395. package/src/components/tree-view.tsx +246 -0
  396. package/src/icons.tsx +331 -0
  397. package/src/index.css +358 -74
  398. package/src/index.tsx +17 -3
  399. package/src/shadcn/components/ui/accordion.tsx +91 -10
  400. package/src/shadcn/components/ui/alert-dialog.stories.tsx +209 -15
  401. package/src/shadcn/components/ui/alert-dialog.tsx +236 -26
  402. package/src/shadcn/components/ui/alert.stories.tsx +120 -21
  403. package/src/shadcn/components/ui/alert.tsx +125 -28
  404. package/src/shadcn/components/ui/aspect-ratio.tsx +1 -0
  405. package/src/shadcn/components/ui/avatar.stories.tsx +74 -1
  406. package/src/shadcn/components/ui/avatar.tsx +22 -6
  407. package/src/shadcn/components/ui/badge.tsx +67 -18
  408. package/src/shadcn/components/ui/breadcrumb.stories.tsx +161 -41
  409. package/src/shadcn/components/ui/breadcrumb.tsx +172 -23
  410. package/src/shadcn/components/ui/button.stories.tsx +106 -18
  411. package/src/shadcn/components/ui/button.tsx +151 -55
  412. package/src/shadcn/components/ui/calendar.tsx +1 -0
  413. package/src/shadcn/components/ui/card.stories.tsx +17 -3
  414. package/src/shadcn/components/ui/card.tsx +89 -14
  415. package/src/shadcn/components/ui/carousel.tsx +1 -0
  416. package/src/shadcn/components/ui/chart.tsx +9 -5
  417. package/src/shadcn/components/ui/checkbox.stories.tsx +78 -30
  418. package/src/shadcn/components/ui/checkbox.tsx +91 -8
  419. package/src/shadcn/components/ui/combobox.stories.tsx +148 -0
  420. package/src/shadcn/components/ui/combobox.tsx +324 -0
  421. package/src/shadcn/components/ui/command.stories.tsx +184 -39
  422. package/src/shadcn/components/ui/command.tsx +218 -37
  423. package/src/shadcn/components/ui/context-menu.tsx +333 -40
  424. package/src/shadcn/components/ui/dialog.tsx +101 -13
  425. package/src/shadcn/components/ui/drawer.tsx +94 -18
  426. package/src/shadcn/components/ui/dropdown-menu.stories.tsx +18 -2
  427. package/src/shadcn/components/ui/dropdown-menu.tsx +334 -68
  428. package/src/shadcn/components/ui/form.tsx +22 -11
  429. package/src/shadcn/components/ui/hover-card.tsx +2 -1
  430. package/src/shadcn/components/ui/input-otp.tsx +1 -0
  431. package/src/shadcn/components/ui/input.stories.tsx +235 -27
  432. package/src/shadcn/components/ui/input.tsx +400 -29
  433. package/src/shadcn/components/ui/label.tsx +22 -4
  434. package/src/shadcn/components/ui/menubar.tsx +188 -43
  435. package/src/shadcn/components/ui/pagination.stories.tsx +8 -2
  436. package/src/shadcn/components/ui/pagination.tsx +65 -8
  437. package/src/shadcn/components/ui/popover.tsx +36 -4
  438. package/src/shadcn/components/ui/progress.tsx +21 -5
  439. package/src/shadcn/components/ui/radio-button-group.stories.tsx +247 -0
  440. package/src/shadcn/components/ui/radio-button-group.tsx +188 -0
  441. package/src/shadcn/components/ui/radio-group.stories.tsx +70 -14
  442. package/src/shadcn/components/ui/radio-group.tsx +85 -9
  443. package/src/shadcn/components/ui/resizable.stories.tsx +2 -2
  444. package/src/shadcn/components/ui/resizable.tsx +2 -1
  445. package/src/shadcn/components/ui/scroll-area.tsx +34 -5
  446. package/src/shadcn/components/ui/select.stories.tsx +108 -32
  447. package/src/shadcn/components/ui/select.tsx +182 -36
  448. package/src/shadcn/components/ui/separator.tsx +16 -5
  449. package/src/shadcn/components/ui/sheet.tsx +1 -1
  450. package/src/shadcn/components/ui/sidebar.tsx +69 -26
  451. package/src/shadcn/components/ui/skeleton.tsx +4 -1
  452. package/src/shadcn/components/ui/slider.tsx +83 -11
  453. package/src/shadcn/components/ui/sonner.stories.tsx +238 -17
  454. package/src/shadcn/components/ui/sonner.tsx +254 -11
  455. package/src/shadcn/components/ui/switch.stories.tsx +52 -5
  456. package/src/shadcn/components/ui/switch.tsx +92 -7
  457. package/src/shadcn/components/ui/table.stories.tsx +252 -72
  458. package/src/shadcn/components/ui/table.tsx +204 -26
  459. package/src/shadcn/components/ui/tabs.stories.tsx +235 -123
  460. package/src/shadcn/components/ui/tabs.tsx +694 -36
  461. package/src/shadcn/components/ui/textarea.stories.tsx +94 -2
  462. package/src/shadcn/components/ui/textarea.tsx +70 -5
  463. package/src/shadcn/components/ui/toggle-group.tsx +35 -13
  464. package/src/shadcn/components/ui/toggle.stories.tsx +92 -5
  465. package/src/shadcn/components/ui/toggle.tsx +96 -23
  466. package/src/shadcn/components/ui/tooltip.tsx +34 -8
  467. package/src/shadcn/components/ui/tree.tsx +257 -0
  468. package/src/shadcn/shadcn.css +4 -4
  469. package/src/tokens.css +50 -20
  470. package/src/typography.css +78 -15
  471. package/dist/src/components/code-editor.stories.d.ts +0 -7
  472. package/dist/src/components/code-editor.stories.d.ts.map +0 -1
  473. package/dist/src/components/request-line-editor.stories.d.ts +0 -11
  474. package/dist/src/components/request-line-editor.stories.d.ts.map +0 -1
  475. package/dist/src/index.stories.d.ts +0 -14
  476. package/dist/src/index.stories.d.ts.map +0 -1
  477. package/dist/src/index.stories.js +0 -19
  478. package/dist/src/index.stories.js.map +0 -1
  479. package/dist/src/shadcn/components/ui/accordion.stories.d.ts +0 -8
  480. package/dist/src/shadcn/components/ui/accordion.stories.d.ts.map +0 -1
  481. package/dist/src/shadcn/components/ui/alert-dialog.stories.d.ts +0 -8
  482. package/dist/src/shadcn/components/ui/alert-dialog.stories.d.ts.map +0 -1
  483. package/dist/src/shadcn/components/ui/alert.stories.d.ts +0 -8
  484. package/dist/src/shadcn/components/ui/alert.stories.d.ts.map +0 -1
  485. package/dist/src/shadcn/components/ui/aspect-ratio.stories.d.ts +0 -8
  486. package/dist/src/shadcn/components/ui/aspect-ratio.stories.d.ts.map +0 -1
  487. package/dist/src/shadcn/components/ui/avatar.stories.d.ts +0 -8
  488. package/dist/src/shadcn/components/ui/avatar.stories.d.ts.map +0 -1
  489. package/dist/src/shadcn/components/ui/badge.stories.d.ts +0 -8
  490. package/dist/src/shadcn/components/ui/badge.stories.d.ts.map +0 -1
  491. package/dist/src/shadcn/components/ui/breadcrumb.stories.d.ts +0 -8
  492. package/dist/src/shadcn/components/ui/breadcrumb.stories.d.ts.map +0 -1
  493. package/dist/src/shadcn/components/ui/button.stories.d.ts +0 -23
  494. package/dist/src/shadcn/components/ui/button.stories.d.ts.map +0 -1
  495. package/dist/src/shadcn/components/ui/calendar.stories.d.ts +0 -8
  496. package/dist/src/shadcn/components/ui/calendar.stories.d.ts.map +0 -1
  497. package/dist/src/shadcn/components/ui/card.stories.d.ts +0 -8
  498. package/dist/src/shadcn/components/ui/card.stories.d.ts.map +0 -1
  499. package/dist/src/shadcn/components/ui/carousel.stories.d.ts +0 -8
  500. package/dist/src/shadcn/components/ui/carousel.stories.d.ts.map +0 -1
  501. package/dist/src/shadcn/components/ui/chart.stories.d.ts +0 -8
  502. package/dist/src/shadcn/components/ui/chart.stories.d.ts.map +0 -1
  503. package/dist/src/shadcn/components/ui/checkbox.stories.d.ts +0 -8
  504. package/dist/src/shadcn/components/ui/checkbox.stories.d.ts.map +0 -1
  505. package/dist/src/shadcn/components/ui/collapsible.stories.d.ts +0 -8
  506. package/dist/src/shadcn/components/ui/collapsible.stories.d.ts.map +0 -1
  507. package/dist/src/shadcn/components/ui/command.stories.d.ts +0 -8
  508. package/dist/src/shadcn/components/ui/command.stories.d.ts.map +0 -1
  509. package/dist/src/shadcn/components/ui/context-menu.stories.d.ts +0 -8
  510. package/dist/src/shadcn/components/ui/context-menu.stories.d.ts.map +0 -1
  511. package/dist/src/shadcn/components/ui/dialog.stories.d.ts +0 -8
  512. package/dist/src/shadcn/components/ui/dialog.stories.d.ts.map +0 -1
  513. package/dist/src/shadcn/components/ui/drawer.stories.d.ts +0 -8
  514. package/dist/src/shadcn/components/ui/drawer.stories.d.ts.map +0 -1
  515. package/dist/src/shadcn/components/ui/dropdown-menu.stories.d.ts +0 -8
  516. package/dist/src/shadcn/components/ui/dropdown-menu.stories.d.ts.map +0 -1
  517. package/dist/src/shadcn/components/ui/form.stories.d.ts +0 -8
  518. package/dist/src/shadcn/components/ui/form.stories.d.ts.map +0 -1
  519. package/dist/src/shadcn/components/ui/hover-card.stories.d.ts +0 -8
  520. package/dist/src/shadcn/components/ui/hover-card.stories.d.ts.map +0 -1
  521. package/dist/src/shadcn/components/ui/input-otp.stories.d.ts +0 -8
  522. package/dist/src/shadcn/components/ui/input-otp.stories.d.ts.map +0 -1
  523. package/dist/src/shadcn/components/ui/input.stories.d.ts +0 -18
  524. package/dist/src/shadcn/components/ui/input.stories.d.ts.map +0 -1
  525. package/dist/src/shadcn/components/ui/label.stories.d.ts +0 -8
  526. package/dist/src/shadcn/components/ui/label.stories.d.ts.map +0 -1
  527. package/dist/src/shadcn/components/ui/menubar.stories.d.ts +0 -8
  528. package/dist/src/shadcn/components/ui/menubar.stories.d.ts.map +0 -1
  529. package/dist/src/shadcn/components/ui/navigation-menu.stories.d.ts +0 -8
  530. package/dist/src/shadcn/components/ui/navigation-menu.stories.d.ts.map +0 -1
  531. package/dist/src/shadcn/components/ui/pagination.stories.d.ts +0 -8
  532. package/dist/src/shadcn/components/ui/pagination.stories.d.ts.map +0 -1
  533. package/dist/src/shadcn/components/ui/popover.stories.d.ts +0 -8
  534. package/dist/src/shadcn/components/ui/popover.stories.d.ts.map +0 -1
  535. package/dist/src/shadcn/components/ui/progress.stories.d.ts +0 -8
  536. package/dist/src/shadcn/components/ui/progress.stories.d.ts.map +0 -1
  537. package/dist/src/shadcn/components/ui/radio-group.stories.d.ts +0 -8
  538. package/dist/src/shadcn/components/ui/radio-group.stories.d.ts.map +0 -1
  539. package/dist/src/shadcn/components/ui/resizable.stories.d.ts +0 -8
  540. package/dist/src/shadcn/components/ui/resizable.stories.d.ts.map +0 -1
  541. package/dist/src/shadcn/components/ui/scroll-area.stories.d.ts +0 -8
  542. package/dist/src/shadcn/components/ui/scroll-area.stories.d.ts.map +0 -1
  543. package/dist/src/shadcn/components/ui/select.stories.d.ts +0 -11
  544. package/dist/src/shadcn/components/ui/select.stories.d.ts.map +0 -1
  545. package/dist/src/shadcn/components/ui/separator.stories.d.ts +0 -8
  546. package/dist/src/shadcn/components/ui/separator.stories.d.ts.map +0 -1
  547. package/dist/src/shadcn/components/ui/sheet.stories.d.ts +0 -8
  548. package/dist/src/shadcn/components/ui/sheet.stories.d.ts.map +0 -1
  549. package/dist/src/shadcn/components/ui/sidebar.stories.d.ts +0 -11
  550. package/dist/src/shadcn/components/ui/sidebar.stories.d.ts.map +0 -1
  551. package/dist/src/shadcn/components/ui/skeleton.stories.d.ts +0 -8
  552. package/dist/src/shadcn/components/ui/skeleton.stories.d.ts.map +0 -1
  553. package/dist/src/shadcn/components/ui/slider.stories.d.ts +0 -8
  554. package/dist/src/shadcn/components/ui/slider.stories.d.ts.map +0 -1
  555. package/dist/src/shadcn/components/ui/sonner.stories.d.ts +0 -8
  556. package/dist/src/shadcn/components/ui/sonner.stories.d.ts.map +0 -1
  557. package/dist/src/shadcn/components/ui/switch.stories.d.ts +0 -8
  558. package/dist/src/shadcn/components/ui/switch.stories.d.ts.map +0 -1
  559. package/dist/src/shadcn/components/ui/table.stories.d.ts +0 -8
  560. package/dist/src/shadcn/components/ui/table.stories.d.ts.map +0 -1
  561. package/dist/src/shadcn/components/ui/tabs.stories.d.ts +0 -32
  562. package/dist/src/shadcn/components/ui/tabs.stories.d.ts.map +0 -1
  563. package/dist/src/shadcn/components/ui/textarea.stories.d.ts +0 -8
  564. package/dist/src/shadcn/components/ui/textarea.stories.d.ts.map +0 -1
  565. package/dist/src/shadcn/components/ui/toggle-group.stories.d.ts +0 -8
  566. package/dist/src/shadcn/components/ui/toggle-group.stories.d.ts.map +0 -1
  567. package/dist/src/shadcn/components/ui/toggle.stories.d.ts +0 -8
  568. package/dist/src/shadcn/components/ui/toggle.stories.d.ts.map +0 -1
  569. package/dist/src/shadcn/components/ui/tooltip.stories.d.ts +0 -8
  570. package/dist/src/shadcn/components/ui/tooltip.stories.d.ts.map +0 -1
  571. package/src/index.stories.tsx +0 -21
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/code-editor/sql-completion.ts"],"sourcesContent":["import {\n\tautocompletion,\n\ttype Completion,\n\ttype CompletionContext,\n\ttype CompletionResult,\n\ttype CompletionSource,\n\tstartCompletion,\n} from \"@codemirror/autocomplete\";\nimport { EditorState, type Extension } from \"@codemirror/state\";\nimport { EditorView } from \"@codemirror/view\";\n\n// ── Public types ──\n\nexport type SqlQueryType =\n\t| \"tables\"\n\t| \"columns\"\n\t| \"functions\"\n\t| \"jsonb_columns\"\n\t| \"structure_definition\";\n\ninterface StructureDefinitionElementType {\n\tcode: string;\n}\n\ninterface StructureDefinitionElement {\n\tpath?: string;\n\ttype?: StructureDefinitionElementType[];\n\tmax?: string;\n\tshort?: string;\n\tdefinition?: string;\n}\n\ninterface StructureDefinition {\n\tname?: string;\n\tsnapshot?: {\n\t\telement: StructureDefinitionElement[];\n\t};\n}\n\nexport interface SqlConfig {\n\texecuteSql: (\n\t\tquery: string,\n\t\ttype: SqlQueryType,\n\t) => Promise<Record<string, unknown>[]>;\n}\n\n// ── Internal types ──\n\ntype SchemaMap = Record<string, string[]>;\ntype JsonbColumnMap = Record<string, string[]>;\ntype ColumnInfo = { name: string; dataType: string };\ntype ColumnMap = Record<string, ColumnInfo[]>;\n\ntype FhirFieldInfo = {\n\tname: string;\n\tdatatype: string;\n\tisArray: boolean;\n\tdescription: string | undefined;\n};\n\ntype FhirPathChildren = Record<string, FhirFieldInfo[]>;\n\ntype JsonbChain = {\n\ttableOrAlias: string | null;\n\tcolumn: string;\n\tpath: string[];\n\tisPathOp: boolean;\n\tpartialInput: string;\n\tinsideQuote: boolean;\n\tlastRawSegment: string | null;\n};\n\ntype AliasEntry = { schema: string; table: string };\n\nexport interface SqlMetadata {\n\tschemas: SchemaMap;\n\tjsonbColumns: JsonbColumnMap;\n\tfunctions: string[];\n\tcolumns: ColumnMap;\n}\n\n// ── SQL queries ──\n\nconst TABLES_QUERY = `SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema NOT IN ('pg_catalog', 'information_schema', 'pgagent') AND table_type = 'BASE TABLE' ORDER BY table_schema, table_name`;\n\nconst JSONB_COLUMNS_QUERY = `SELECT c.table_schema, c.table_name, c.column_name FROM information_schema.columns c JOIN information_schema.tables t ON c.table_schema = t.table_schema AND c.table_name = t.table_name WHERE t.table_type = 'BASE TABLE' AND c.table_schema NOT IN ('pg_catalog', 'information_schema', 'pgagent') AND c.udt_name = 'jsonb'`;\n\nconst FUNCTIONS_QUERY = `SELECT DISTINCT p.proname AS name FROM pg_proc p JOIN pg_namespace n ON p.pronamespace = n.oid LEFT JOIN pg_depend d ON d.objid = p.oid AND d.deptype = 'e' WHERE n.nspname NOT IN ('pg_catalog', 'information_schema') AND d.objid IS NULL ORDER BY p.proname`;\n\nconst COLUMNS_QUERY = `SELECT c.table_schema, c.table_name, c.column_name, c.data_type FROM information_schema.columns c JOIN information_schema.tables t ON c.table_schema = t.table_schema AND c.table_name = t.table_name WHERE t.table_type = 'BASE TABLE' AND c.table_schema NOT IN ('pg_catalog', 'information_schema', 'pgagent') ORDER BY c.table_schema, c.table_name, c.ordinal_position`;\n\n// ── FHIR StructureDefinition processing ──\n\nfunction isExpandedVariant(path: string, unionBases: Set<string>): boolean {\n\tconst parts = path.split(\".\");\n\tif (parts.length < 2) return false;\n\tconst parentPath = parts.slice(0, -1).join(\".\");\n\tconst name = parts[parts.length - 1]!;\n\n\tfor (const base of unionBases) {\n\t\tconst baseParts = base.split(\".\");\n\t\tconst baseName = baseParts[baseParts.length - 1]!;\n\t\tconst baseParent = baseParts.slice(0, -1).join(\".\");\n\n\t\tif (\n\t\t\tparentPath === baseParent &&\n\t\t\tname.startsWith(baseName) &&\n\t\t\tname.length > baseName.length &&\n\t\t\t/^[A-Z]/.test(name.slice(baseName.length))\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction buildFromStructureDefinition(\n\tsd: StructureDefinition,\n): FhirPathChildren {\n\tconst elements = sd.snapshot?.element ?? [];\n\tconst result: FhirPathChildren = {};\n\n\tconst unionBases = new Set<string>();\n\tfor (const el of elements) {\n\t\tif (!el.path) continue;\n\t\tconst name = el.path.split(\".\").pop() ?? \"\";\n\t\tif (name.endsWith(\"[x]\")) {\n\t\t\tunionBases.add(el.path.replace(/\\[x\\]$/, \"\"));\n\t\t}\n\t}\n\n\tfor (const el of elements) {\n\t\tif (!el.path) continue;\n\t\tconst parts = el.path.split(\".\");\n\t\tif (parts.length < 2) continue;\n\n\t\tif (isExpandedVariant(el.path, unionBases)) continue;\n\n\t\tconst parentPath = parts.slice(0, -1).join(\".\");\n\t\tconst rawName = parts[parts.length - 1]!;\n\n\t\tif (!result[parentPath]) result[parentPath] = [];\n\n\t\tif (rawName.endsWith(\"[x]\")) {\n\t\t\tconst name = rawName.slice(0, -3);\n\t\t\tif (result[parentPath].some((f) => f.name === name)) continue;\n\n\t\t\tresult[parentPath].push({\n\t\t\t\tname,\n\t\t\t\tdatatype: \"union\",\n\t\t\t\tisArray: el.max === \"*\",\n\t\t\t\tdescription: el.short ?? el.definition,\n\t\t\t});\n\n\t\t\tconst unionPath = `${parentPath}.${name}`;\n\t\t\tif (!result[unionPath]) result[unionPath] = [];\n\t\t\tfor (const t of el.type ?? []) {\n\t\t\t\tif (!result[unionPath].some((f) => f.name === t.code)) {\n\t\t\t\t\tresult[unionPath].push({\n\t\t\t\t\t\tname: t.code,\n\t\t\t\t\t\tdatatype: t.code,\n\t\t\t\t\t\tisArray: false,\n\t\t\t\t\t\tdescription: el.short ?? el.definition,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (result[parentPath].some((f) => f.name === rawName)) continue;\n\n\t\t\tresult[parentPath].push({\n\t\t\t\tname: rawName,\n\t\t\t\tdatatype: el.type?.[0]?.code ?? \"\",\n\t\t\t\tisArray: el.max === \"*\",\n\t\t\t\tdescription: el.short ?? el.definition,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction transformReferenceFields(result: FhirPathChildren): void {\n\tfor (const [path, children] of Object.entries(result)) {\n\t\tconst hasReferenceField = children.some((c) => c.name === \"reference\");\n\t\tif (!hasReferenceField) continue;\n\n\t\tresult[path] = children.flatMap((child) => {\n\t\t\tif (child.name === \"reference\") {\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"id\",\n\t\t\t\t\t\tdatatype: \"string\",\n\t\t\t\t\t\tisArray: false,\n\t\t\t\t\t\tdescription: \"Resource ID\" as string | undefined,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: \"resourceType\",\n\t\t\t\t\t\tdatatype: \"string\",\n\t\t\t\t\t\tisArray: false,\n\t\t\t\t\t\tdescription: \"Resource type\" as string | undefined,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn [child];\n\t\t});\n\t}\n}\n\n// ── SQL parsing utilities ──\n\nconst SQL_TABLE_KEYWORDS =\n\t/\\b(?:from|join|inner\\s+join|left\\s+join|right\\s+join|full\\s+join|cross\\s+join|into|update|table)\\s+$/i;\n\nfunction isInsideString(textBefore: string): boolean {\n\tlet count = 0;\n\tfor (let i = 0; i < textBefore.length; i++) {\n\t\tif (textBefore[i] === \"'\") {\n\t\t\tif (i + 1 < textBefore.length && textBefore[i + 1] === \"'\") {\n\t\t\t\ti++;\n\t\t\t} else {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t}\n\t}\n\treturn count % 2 !== 0;\n}\n\nfunction isInJsonbContext(textBefore: string): boolean {\n\treturn parseJsonbChain(textBefore) !== null;\n}\n\nfunction parseJsonbChain(textBefore: string): JsonbChain | null {\n\tconst pathOpMatch = textBefore.match(/((?:\\w+\\.)?\\w+)\\s*#>>?\\s*'\\{([^}]*)$/);\n\tif (pathOpMatch) {\n\t\tconst ref = pathOpMatch[1]!;\n\t\tconst pathContent = pathOpMatch[2]!;\n\t\tconst segments = pathContent ? pathContent.split(\",\") : [];\n\t\tconst partialInput = segments.length > 0 ? (segments.pop() ?? \"\") : \"\";\n\t\tconst lastRawSegment =\n\t\t\tsegments.length > 0 ? (segments[segments.length - 1] ?? null) : null;\n\t\tconst path = segments.filter((s) => !/^\\d+$/.test(s));\n\n\t\tconst dotParts = ref.split(\".\");\n\t\tif (dotParts.length === 2) {\n\t\t\treturn {\n\t\t\t\ttableOrAlias: dotParts[0]!,\n\t\t\t\tcolumn: dotParts[1]!,\n\t\t\t\tpath,\n\t\t\t\tisPathOp: true,\n\t\t\t\tpartialInput,\n\t\t\t\tinsideQuote: false,\n\t\t\t\tlastRawSegment,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\ttableOrAlias: null,\n\t\t\tcolumn: dotParts[0]!,\n\t\t\tpath,\n\t\t\tisPathOp: true,\n\t\t\tpartialInput,\n\t\t\tinsideQuote: false,\n\t\t\tlastRawSegment,\n\t\t};\n\t}\n\n\tconst arrowPattern =\n\t\t/(?:((?:\\w+\\.)?\\w+)((?:\\s*->>?\\s*(?:'[^']*'|\\d+))*)\\s*->>?\\s*)('?)([^']*)?$/;\n\tconst arrowMatch = textBefore.match(arrowPattern);\n\tif (!arrowMatch) return null;\n\n\tconst ref = arrowMatch[1]!;\n\tconst chainPart = arrowMatch[2] || \"\";\n\tconst insideQuote = arrowMatch[3] === \"'\";\n\tconst partialInput = arrowMatch[4] ?? \"\";\n\n\tconst chainSegments: string[] = [];\n\tlet lastRawSeg: string | null = null;\n\tconst segmentRegex = /->>?\\s*(?:'([^']*)'|(\\d+))/g;\n\tfor (\n\t\tlet m = segmentRegex.exec(chainPart);\n\t\tm !== null;\n\t\tm = segmentRegex.exec(chainPart)\n\t) {\n\t\tconst seg = m[1] ?? m[2] ?? \"\";\n\t\tlastRawSeg = seg;\n\t\tif (!/^\\d+$/.test(seg)) {\n\t\t\tchainSegments.push(seg);\n\t\t}\n\t}\n\n\tconst dotParts = ref.split(\".\");\n\tif (dotParts.length === 2) {\n\t\treturn {\n\t\t\ttableOrAlias: dotParts[0]!,\n\t\t\tcolumn: dotParts[1]!,\n\t\t\tpath: chainSegments,\n\t\t\tisPathOp: false,\n\t\t\tpartialInput,\n\t\t\tinsideQuote,\n\t\t\tlastRawSegment: lastRawSeg,\n\t\t};\n\t}\n\treturn {\n\t\ttableOrAlias: null,\n\t\tcolumn: dotParts[0]!,\n\t\tpath: chainSegments,\n\t\tisPathOp: false,\n\t\tpartialInput,\n\t\tinsideQuote,\n\t\tlastRawSegment: lastRawSeg,\n\t};\n}\n\nfunction buildAliasMap(\n\tsql: string,\n\tschemas: SchemaMap,\n): Record<string, AliasEntry> {\n\tconst aliases: Record<string, AliasEntry> = {};\n\tconst regex = /\\b(?:FROM|JOIN)\\s+((?:\\w+\\.)?\\w+)(?:\\s+(?:AS\\s+)?(\\w+))?/gi;\n\n\tfor (let match = regex.exec(sql); match !== null; match = regex.exec(sql)) {\n\t\tconst fullTable = match[1]!;\n\t\tconst alias = match[2];\n\n\t\tlet schema: string;\n\t\tlet table: string;\n\t\tif (fullTable.includes(\".\")) {\n\t\t\tconst parts = fullTable.split(\".\");\n\t\t\tschema = parts[0]!;\n\t\t\ttable = parts[1]!;\n\t\t} else {\n\t\t\ttable = fullTable;\n\t\t\tlet found: string | null = null;\n\t\t\tfor (const [s, tables] of Object.entries(schemas)) {\n\t\t\t\tif (tables.includes(table)) {\n\t\t\t\t\tfound = s;\n\t\t\t\t\tif (s === \"public\") break;\n\t\t\t\t}\n\t\t\t}\n\t\t\tschema = found ?? \"public\";\n\t\t}\n\n\t\tif (alias) {\n\t\t\taliases[alias.toLowerCase()] = { schema, table };\n\t\t}\n\t\taliases[table.toLowerCase()] = { schema, table };\n\t}\n\n\treturn aliases;\n}\n\nfunction tableToResourceType(table: string): string {\n\treturn table\n\t\t.split(\"_\")\n\t\t.map((s) => s.charAt(0).toUpperCase() + s.slice(1))\n\t\t.join(\"\");\n}\n\nfunction getCurrentStatement(doc: string, pos: number): string {\n\tlet start = 0;\n\tlet end = doc.length;\n\n\tconst before = doc.lastIndexOf(\";\", pos - 1);\n\tif (before !== -1) start = before + 1;\n\n\tconst after = doc.indexOf(\";\", pos);\n\tif (after !== -1) end = after;\n\n\treturn doc.slice(start, end);\n}\n\n// ── Completion result builders ──\n\nfunction buildJsonbResult(\n\tchain: JsonbChain,\n\tpathChildren: FhirPathChildren,\n\tresourceType: string,\n\tcontext: CompletionContext,\n): CompletionResult | null {\n\tconst lookupPath =\n\t\tchain.path.length > 0\n\t\t\t? `${resourceType}.${chain.path.join(\".\")}`\n\t\t\t: resourceType;\n\n\tconst children = pathChildren[lookupPath];\n\tif (!children || children.length === 0) return null;\n\n\tconst partial = chain.partialInput.toLowerCase();\n\tconst filtered = partial\n\t\t? children.filter((f) => f.name.toLowerCase().startsWith(partial))\n\t\t: children;\n\n\tif (filtered.length === 0) return null;\n\n\tif (chain.isPathOp) {\n\t\treturn {\n\t\t\tfrom: context.pos - chain.partialInput.length,\n\t\t\tvalidFor: /^\\w*$/,\n\t\t\toptions: filtered.map(\n\t\t\t\t(f): Completion => ({\n\t\t\t\t\tlabel: f.name,\n\t\t\t\t\ttype: \"property\",\n\t\t\t\t\tdetail: f.datatype + (f.isArray ? \"[]\" : \"\"),\n\t\t\t\t\t...(f.description != null ? { info: f.description } : {}),\n\t\t\t\t}),\n\t\t\t),\n\t\t};\n\t}\n\n\tif (chain.insideQuote) {\n\t\treturn {\n\t\t\tfrom: context.pos - chain.partialInput.length,\n\t\t\tvalidFor: /^\\w*$/,\n\t\t\toptions: filtered.map(\n\t\t\t\t(f): Completion => ({\n\t\t\t\t\tlabel: f.name,\n\t\t\t\t\ttype: \"property\",\n\t\t\t\t\tdetail: f.datatype + (f.isArray ? \"[]\" : \"\"),\n\t\t\t\t\t...(f.description != null ? { info: f.description } : {}),\n\t\t\t\t\tapply: (\n\t\t\t\t\t\tview: EditorView,\n\t\t\t\t\t\t_completion: Completion,\n\t\t\t\t\t\tfrom: number,\n\t\t\t\t\t\tto: number,\n\t\t\t\t\t) => {\n\t\t\t\t\t\tconst after = view.state.sliceDoc(to, to + 1);\n\t\t\t\t\t\tconst end = after === \"'\" ? to + 1 : to;\n\t\t\t\t\t\tconst insert = `${f.name}'`;\n\t\t\t\t\t\tview.dispatch({\n\t\t\t\t\t\t\tchanges: { from, to: end, insert },\n\t\t\t\t\t\t\tselection: { anchor: from + insert.length },\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t};\n\t}\n\n\treturn {\n\t\tfrom: context.pos - chain.partialInput.length,\n\t\tvalidFor: /^'?\\w*'?$/,\n\t\toptions: filtered.map(\n\t\t\t(f): Completion => ({\n\t\t\t\tlabel: `'${f.name}'`,\n\t\t\t\ttype: \"property\",\n\t\t\t\tdetail: f.datatype + (f.isArray ? \"[]\" : \"\"),\n\t\t\t\t...(f.description != null ? { info: f.description } : {}),\n\t\t\t\tapply: `'${f.name}'`,\n\t\t\t}),\n\t\t),\n\t};\n}\n\nfunction isArrayPosition(\n\tchain: JsonbChain,\n\tpathChildren: FhirPathChildren,\n\tresourceType: string,\n): boolean {\n\tif (!chain.lastRawSegment || /^\\d+$/.test(chain.lastRawSegment)) return false;\n\tif (!chain.isPathOp && chain.insideQuote) return false;\n\n\tconst fieldName = chain.lastRawSegment;\n\tconst parentPath =\n\t\tchain.path.length > 1\n\t\t\t? `${resourceType}.${chain.path.slice(0, -1).join(\".\")}`\n\t\t\t: resourceType;\n\tconst parentChildren = pathChildren[parentPath];\n\tif (!parentChildren) return false;\n\n\tconst element = parentChildren.find((f) => f.name === fieldName);\n\treturn !!element?.isArray;\n}\n\nfunction buildArrayIndexResult(\n\tchain: JsonbChain,\n\tcontext: CompletionContext,\n): CompletionResult {\n\treturn {\n\t\tfrom: context.pos - chain.partialInput.length,\n\t\toptions: [\n\t\t\t{\n\t\t\t\tlabel: \"0\",\n\t\t\t\ttype: \"enum\",\n\t\t\t\tdetail: \"array index\",\n\t\t\t},\n\t\t],\n\t};\n}\n\nasync function resolveNestedTypes(\n\tpathChildren: FhirPathChildren,\n\tresourceType: string,\n\tpath: string[],\n\tfetchSchema: (type: string) => Promise<FhirPathChildren | null>,\n): Promise<void> {\n\tfor (let i = 0; i < path.length; i++) {\n\t\tconst currentPath = `${resourceType}.${path.slice(0, i + 1).join(\".\")}`;\n\n\t\tif (pathChildren[currentPath]) continue;\n\n\t\tconst parentPath =\n\t\t\ti === 0 ? resourceType : `${resourceType}.${path.slice(0, i).join(\".\")}`;\n\t\tconst parentChildren = pathChildren[parentPath];\n\t\tif (!parentChildren) return;\n\n\t\tconst segmentName = path[i]!;\n\t\tconst element = parentChildren.find((f) => f.name === segmentName);\n\t\tif (!element?.datatype) return;\n\n\t\tif (element.datatype === \"union\") continue;\n\n\t\tconst firstChar = element.datatype[0]!;\n\t\tif (firstChar !== firstChar.toUpperCase()) return;\n\n\t\tconst typeChildren = await fetchSchema(element.datatype);\n\t\tif (!typeChildren) return;\n\n\t\tconst typeName = element.datatype;\n\t\tfor (const [key, children] of Object.entries(typeChildren)) {\n\t\t\tconst suffix = key === typeName ? \"\" : key.slice(typeName.length);\n\t\t\tpathChildren[currentPath + suffix] = children;\n\t\t}\n\t}\n}\n\n// ── Completion extensions ──\n\nfunction tableCompletionExtension(schemas: SchemaMap): Extension {\n\tconst source = (context: CompletionContext): CompletionResult | null => {\n\t\tconst line = context.state.doc.lineAt(context.pos);\n\t\tconst textBefore = line.text.slice(0, context.pos - line.from);\n\n\t\tif (isInsideString(textBefore)) return null;\n\n\t\tconst schemaDot = textBefore.match(/(\\w+)\\.(\\w*)$/);\n\t\tif (schemaDot) {\n\t\t\tconst schemaName = schemaDot[1]!;\n\t\t\tconst tables = schemas[schemaName];\n\t\t\tif (!tables) return null;\n\t\t\treturn {\n\t\t\t\tfrom: context.pos - (schemaDot[2] ?? \"\").length,\n\t\t\t\toptions: tables.map((t) => ({ label: t, type: \"table\" })),\n\t\t\t};\n\t\t}\n\n\t\tconst word = context.matchBefore(/\\w*/);\n\t\tif (!word) return null;\n\n\t\tconst beforeWord = textBefore.slice(0, word.from - line.from);\n\t\tif (!SQL_TABLE_KEYWORDS.test(beforeWord) && !context.explicit) return null;\n\n\t\tconst options: { label: string; type: string; detail?: string }[] = [];\n\n\t\tfor (const [schema, tables] of Object.entries(schemas)) {\n\t\t\toptions.push({ label: `${schema}.`, type: \"keyword\", detail: \"schema\" });\n\t\t\tfor (const table of tables) {\n\t\t\t\tif (schema === \"public\") {\n\t\t\t\t\toptions.push({ label: table, type: \"table\" });\n\t\t\t\t} else {\n\t\t\t\t\toptions.push({\n\t\t\t\t\t\tlabel: `${schema}.${table}`,\n\t\t\t\t\t\ttype: \"table\",\n\t\t\t\t\t\tdetail: schema,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { from: word.from, options };\n\t};\n\n\treturn EditorState.languageData.of(() => [{ autocomplete: source }]);\n}\n\nfunction columnCompletionExtension(ctx: {\n\tschemas: SchemaMap;\n\tcolumns: ColumnMap;\n}): Extension {\n\tconst source = (context: CompletionContext): CompletionResult | null => {\n\t\tconst line = context.state.doc.lineAt(context.pos);\n\t\tconst textBefore = line.text.slice(0, context.pos - line.from);\n\n\t\tif (isInsideString(textBefore)) return null;\n\n\t\tconst fullDoc = context.state.doc.toString();\n\t\tconst statement = getCurrentStatement(fullDoc, context.pos);\n\t\tconst aliases = buildAliasMap(statement, ctx.schemas);\n\n\t\tif (Object.keys(aliases).length === 0) return null;\n\n\t\tconst aliasDot = textBefore.match(/(\\w+)\\.(\\w*)$/);\n\t\tif (aliasDot) {\n\t\t\tconst beforeAlias = textBefore.slice(\n\t\t\t\t0,\n\t\t\t\ttextBefore.length - aliasDot[0].length,\n\t\t\t);\n\t\t\tif (SQL_TABLE_KEYWORDS.test(beforeAlias)) return null;\n\n\t\t\tconst aliasName = aliasDot[1]!;\n\t\t\tconst entry = aliases[aliasName.toLowerCase()];\n\t\t\tif (!entry) return null;\n\t\t\tconst key = `${entry.schema}.${entry.table}`;\n\t\t\tconst cols = ctx.columns[key];\n\t\t\tif (!cols || cols.length === 0) return null;\n\n\t\t\treturn {\n\t\t\t\tfrom: context.pos - (aliasDot[2] ?? \"\").length,\n\t\t\t\toptions: cols.map((c) => ({\n\t\t\t\t\tlabel: c.name,\n\t\t\t\t\ttype: \"variable\",\n\t\t\t\t\tdetail: c.dataType,\n\t\t\t\t})),\n\t\t\t};\n\t\t}\n\n\t\tconst word = context.matchBefore(/\\w*/);\n\t\tif (!word) return null;\n\t\tif (word.from === word.to && !context.explicit) return null;\n\n\t\tconst textBeforeWord = textBefore.slice(0, word.from - line.from);\n\t\tif (SQL_TABLE_KEYWORDS.test(textBeforeWord)) return null;\n\n\t\tconst seen = new Set<string>();\n\t\tconst options: { label: string; type: string; detail: string }[] = [];\n\t\tfor (const entry of Object.values(aliases)) {\n\t\t\tconst key = `${entry.schema}.${entry.table}`;\n\t\t\tconst cols = ctx.columns[key];\n\t\t\tif (!cols) continue;\n\t\t\tfor (const c of cols) {\n\t\t\t\tconst dedup = `${c.name}::${entry.table}`;\n\t\t\t\tif (seen.has(dedup)) continue;\n\t\t\t\tseen.add(dedup);\n\t\t\t\toptions.push({\n\t\t\t\t\tlabel: c.name,\n\t\t\t\t\ttype: \"variable\",\n\t\t\t\t\tdetail: `${c.dataType} · ${entry.table}`,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (options.length === 0) return null;\n\t\treturn { from: word.from, options };\n\t};\n\n\treturn EditorState.languageData.of(() => [{ autocomplete: source }]);\n}\n\nfunction triggerCompletionAfter(view: EditorView) {\n\trequestAnimationFrame(() => startCompletion(view));\n}\n\nfunction jsonbOperatorExtension(): Extension {\n\tconst source = (context: CompletionContext): CompletionResult | null => {\n\t\tconst line = context.state.doc.lineAt(context.pos);\n\t\tconst textBefore = line.text.slice(0, context.pos - line.from);\n\n\t\tif (/\\w\\s*#$/.test(textBefore)) {\n\t\t\treturn {\n\t\t\t\tfrom: context.pos - 1,\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: \"#>> '{}'\",\n\t\t\t\t\t\ttype: \"operator\",\n\t\t\t\t\t\tapply: (view, _completion, from, to) => {\n\t\t\t\t\t\t\tconst insert = \"#>> '{\";\n\t\t\t\t\t\t\tview.dispatch({\n\t\t\t\t\t\t\t\tchanges: { from, to, insert: `${insert}}' ` },\n\t\t\t\t\t\t\t\tselection: { anchor: from + insert.length },\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\ttriggerCompletionAfter(view);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: \"#> '{}'\",\n\t\t\t\t\t\ttype: \"operator\",\n\t\t\t\t\t\tapply: (view, _completion, from, to) => {\n\t\t\t\t\t\t\tconst insert = \"#> '{\";\n\t\t\t\t\t\t\tview.dispatch({\n\t\t\t\t\t\t\t\tchanges: { from, to, insert: `${insert}}' ` },\n\t\t\t\t\t\t\t\tselection: { anchor: from + insert.length },\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\ttriggerCompletionAfter(view);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\n\t\tif (/\\w\\s*->$/.test(textBefore) && !/\\w\\s*->>$/.test(textBefore)) {\n\t\t\treturn {\n\t\t\t\tfrom: context.pos - 2,\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: \"->> ''\",\n\t\t\t\t\t\ttype: \"operator\",\n\t\t\t\t\t\tapply: (view, _completion, from, to) => {\n\t\t\t\t\t\t\tconst insert = \"->> '\";\n\t\t\t\t\t\t\tview.dispatch({\n\t\t\t\t\t\t\t\tchanges: { from, to, insert: `${insert}' ` },\n\t\t\t\t\t\t\t\tselection: { anchor: from + insert.length },\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\ttriggerCompletionAfter(view);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: \"-> ''\",\n\t\t\t\t\t\ttype: \"operator\",\n\t\t\t\t\t\tapply: (view, _completion, from, to) => {\n\t\t\t\t\t\t\tconst insert = \"-> '\";\n\t\t\t\t\t\t\tview.dispatch({\n\t\t\t\t\t\t\t\tchanges: { from, to, insert: `${insert}' ` },\n\t\t\t\t\t\t\t\tselection: { anchor: from + insert.length },\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\ttriggerCompletionAfter(view);\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: \"->> 0\",\n\t\t\t\t\t\ttype: \"operator\",\n\t\t\t\t\t\tapply: (view, _completion, from, to) => {\n\t\t\t\t\t\t\tconst insert = \"->> \";\n\t\t\t\t\t\t\tview.dispatch({\n\t\t\t\t\t\t\t\tchanges: { from, to, insert: `${insert}0 ` },\n\t\t\t\t\t\t\t\tselection: {\n\t\t\t\t\t\t\t\t\tanchor: from + insert.length,\n\t\t\t\t\t\t\t\t\thead: from + insert.length + 1,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: \"-> 0\",\n\t\t\t\t\t\ttype: \"operator\",\n\t\t\t\t\t\tapply: (view, _completion, from, to) => {\n\t\t\t\t\t\t\tconst insert = \"-> \";\n\t\t\t\t\t\t\tview.dispatch({\n\t\t\t\t\t\t\t\tchanges: { from, to, insert: `${insert}0 ` },\n\t\t\t\t\t\t\t\tselection: {\n\t\t\t\t\t\t\t\t\tanchor: from + insert.length,\n\t\t\t\t\t\t\t\t\thead: from + insert.length + 1,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\n\t\treturn null;\n\t};\n\n\treturn EditorState.languageData.of(() => [{ autocomplete: source }]);\n}\n\nfunction jsonbCompletionExtension(ctx: {\n\tschemas: SchemaMap;\n\tjsonbColumns: JsonbColumnMap;\n\tsdCache: Record<string, FhirPathChildren>;\n\tsdNotFound: Set<string>;\n\tfetchSchema: (type: string) => Promise<FhirPathChildren | null>;\n}): Extension {\n\tconst resolveChain = (\n\t\tcontext: CompletionContext,\n\t): { chain: JsonbChain; resourceType: string } | null => {\n\t\tconst line = context.state.doc.lineAt(context.pos);\n\t\tconst textBefore = line.text.slice(0, context.pos - line.from);\n\n\t\tconst chain = parseJsonbChain(textBefore);\n\t\tif (!chain) return null;\n\n\t\tconst fullDoc = context.state.doc.toString();\n\t\tconst statement = getCurrentStatement(fullDoc, context.pos);\n\t\tconst aliases = buildAliasMap(statement, ctx.schemas);\n\n\t\tlet resolved: AliasEntry | null = null;\n\n\t\tif (chain.tableOrAlias) {\n\t\t\tresolved = aliases[chain.tableOrAlias.toLowerCase()] ?? null;\n\t\t} else {\n\t\t\tfor (const entry of Object.values(aliases)) {\n\t\t\t\tconst key = `${entry.schema}.${entry.table}`;\n\t\t\t\tconst cols = ctx.jsonbColumns[key];\n\t\t\t\tif (cols?.includes(chain.column)) {\n\t\t\t\t\tresolved = entry;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!resolved) return null;\n\n\t\tconst jsonbKey = `${resolved.schema}.${resolved.table}`;\n\t\tconst jsonbCols = ctx.jsonbColumns[jsonbKey];\n\t\tif (!jsonbCols?.includes(chain.column)) return null;\n\n\t\tif (chain.column !== \"resource\") return null;\n\n\t\tconst resourceType = tableToResourceType(resolved.table);\n\t\tif (ctx.sdNotFound.has(resourceType)) return null;\n\n\t\treturn { chain, resourceType };\n\t};\n\n\tconst complete = async (\n\t\tchain: JsonbChain,\n\t\tresourceType: string,\n\t\tpathChildren: FhirPathChildren,\n\t\tcontext: CompletionContext,\n\t): Promise<CompletionResult | null> => {\n\t\tif (chain.path.length > 0) {\n\t\t\tawait resolveNestedTypes(\n\t\t\t\tpathChildren,\n\t\t\t\tresourceType,\n\t\t\t\tchain.path,\n\t\t\t\tctx.fetchSchema,\n\t\t\t);\n\t\t}\n\n\t\tif (isArrayPosition(chain, pathChildren, resourceType)) {\n\t\t\treturn buildArrayIndexResult(chain, context);\n\t\t}\n\n\t\treturn buildJsonbResult(chain, pathChildren, resourceType, context);\n\t};\n\n\tconst source = (\n\t\tcontext: CompletionContext,\n\t): CompletionResult | null | Promise<CompletionResult | null> => {\n\t\tconst info = resolveChain(context);\n\t\tif (!info) return null;\n\n\t\tconst { chain, resourceType } = info;\n\n\t\tconst cached = ctx.sdCache[resourceType];\n\t\tif (cached) {\n\t\t\tif (chain.path.length === 0) {\n\t\t\t\treturn buildJsonbResult(chain, cached, resourceType, context);\n\t\t\t}\n\t\t\treturn complete(chain, resourceType, cached, context);\n\t\t}\n\n\t\treturn ctx.fetchSchema(resourceType).then((fetched) => {\n\t\t\tif (!fetched) return null;\n\t\t\treturn complete(chain, resourceType, fetched, context);\n\t\t});\n\t};\n\n\treturn EditorState.languageData.of(() => [{ autocomplete: source }]);\n}\n\nfunction sqlCompletionOverride(): Extension {\n\treturn autocompletion({\n\t\toverride: [\n\t\t\tasync (context: CompletionContext): Promise<CompletionResult | null> => {\n\t\t\t\tconst line = context.state.doc.lineAt(context.pos);\n\t\t\t\tconst textBefore = line.text.slice(0, context.pos - line.from);\n\t\t\t\tconst inJsonb = isInJsonbContext(textBefore);\n\n\t\t\t\tconst langSources = context.state.languageDataAt<CompletionSource>(\n\t\t\t\t\t\"autocomplete\",\n\t\t\t\t\tcontext.pos,\n\t\t\t\t);\n\n\t\t\t\tconst results = (\n\t\t\t\t\tawait Promise.all(\n\t\t\t\t\t\tlangSources.map((src) => Promise.resolve(src(context))),\n\t\t\t\t\t)\n\t\t\t\t).filter((r): r is CompletionResult => r !== null);\n\n\t\t\t\tif (results.length === 0) return null;\n\n\t\t\t\tif (inJsonb) {\n\t\t\t\t\tconst jsonbTypes = new Set([\"property\", \"enum\", \"operator\"]);\n\t\t\t\t\tconst jsonbResult = results.find((r) =>\n\t\t\t\t\t\tr.options.some((o) => jsonbTypes.has(o.type ?? \"\")),\n\t\t\t\t\t);\n\t\t\t\t\tif (!jsonbResult) return null;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...jsonbResult,\n\t\t\t\t\t\toptions: jsonbResult.options.filter((o) =>\n\t\t\t\t\t\t\tjsonbTypes.has(o.type ?? \"\"),\n\t\t\t\t\t\t),\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst aliasColumnResult = results.find(\n\t\t\t\t\t(r) =>\n\t\t\t\t\t\tr.options.length > 0 &&\n\t\t\t\t\t\tr.options.every((o) => o.type === \"variable\"),\n\t\t\t\t);\n\t\t\t\tif (aliasColumnResult) return aliasColumnResult;\n\n\t\t\t\tconst hasTableResults = results.some((r) =>\n\t\t\t\t\tr.options.some((o) => o.type === \"table\"),\n\t\t\t\t);\n\n\t\t\t\tif (hasTableResults) {\n\t\t\t\t\tconst tableOptions = results.flatMap((r) =>\n\t\t\t\t\t\tr.options.filter((o) => o.type === \"table\" || o.type === \"keyword\"),\n\t\t\t\t\t);\n\t\t\t\t\tconst from = results.find((r) =>\n\t\t\t\t\t\tr.options.some((o) => o.type === \"table\"),\n\t\t\t\t\t)?.from;\n\t\t\t\t\tif (from == null) return null;\n\t\t\t\t\treturn { from, options: tableOptions };\n\t\t\t\t}\n\n\t\t\t\tif (results.length === 1) return results[0]!;\n\n\t\t\t\tconst groups = new Map<\n\t\t\t\t\tnumber,\n\t\t\t\t\t{ from: number; options: Completion[] }\n\t\t\t\t>();\n\t\t\t\tfor (const r of results) {\n\t\t\t\t\tconst existing = groups.get(r.from);\n\t\t\t\t\tif (existing) {\n\t\t\t\t\t\texisting.options.push(...r.options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tgroups.set(r.from, {\n\t\t\t\t\t\t\tfrom: r.from,\n\t\t\t\t\t\t\toptions: [...r.options],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlet best: { from: number; options: Completion[] } | null = null;\n\t\t\t\tfor (const g of groups.values()) {\n\t\t\t\t\tif (!best || g.options.length > best.options.length) best = g;\n\t\t\t\t}\n\t\t\t\tif (best) {\n\t\t\t\t\tbest.options = best.options.map((o) => {\n\t\t\t\t\t\tif (o.type === \"keyword\") return { ...o, boost: 2 };\n\t\t\t\t\t\tif (o.type === \"type\") return { ...o, boost: 1 };\n\t\t\t\t\t\tif (o.type === \"variable\") return { ...o, boost: -1 };\n\t\t\t\t\t\treturn o;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn best;\n\t\t\t},\n\t\t],\n\t});\n}\n\n// ── Public API ──\n\nexport async function fetchSqlMetadata(\n\texecuteSql: SqlConfig[\"executeSql\"],\n): Promise<SqlMetadata> {\n\tconst [tablesRows, jsonbRows, functionsRows, columnsRows] = await Promise.all(\n\t\t[\n\t\t\texecuteSql(TABLES_QUERY, \"tables\"),\n\t\t\texecuteSql(JSONB_COLUMNS_QUERY, \"jsonb_columns\"),\n\t\t\texecuteSql(FUNCTIONS_QUERY, \"functions\"),\n\t\t\texecuteSql(COLUMNS_QUERY, \"columns\"),\n\t\t],\n\t);\n\n\tconst schemas: SchemaMap = {};\n\tfor (const row of tablesRows) {\n\t\tconst s = String(row.table_schema);\n\t\tif (!schemas[s]) schemas[s] = [];\n\t\tschemas[s].push(String(row.table_name));\n\t}\n\n\tconst jsonbColumns: JsonbColumnMap = {};\n\tfor (const row of jsonbRows) {\n\t\tconst key = `${row.table_schema}.${row.table_name}`;\n\t\tif (!jsonbColumns[key]) jsonbColumns[key] = [];\n\t\tjsonbColumns[key].push(String(row.column_name));\n\t}\n\n\tconst functions = functionsRows.map((r) => String(r.name));\n\n\tconst columns: ColumnMap = {};\n\tfor (const row of columnsRows) {\n\t\tconst key = `${row.table_schema}.${row.table_name}`;\n\t\tif (!columns[key]) columns[key] = [];\n\t\tcolumns[key].push({\n\t\t\tname: String(row.column_name),\n\t\t\tdataType: String(row.data_type),\n\t\t});\n\t}\n\n\treturn { schemas, jsonbColumns, functions, columns };\n}\n\nexport function buildSqlCompletionExtensions(\n\tmetadata: SqlMetadata,\n\texecuteSql: SqlConfig[\"executeSql\"],\n): Extension[] {\n\tconst sdCache: Record<string, FhirPathChildren> = {};\n\tconst sdNotFound = new Set<string>();\n\n\tconst fetchSchema = async (\n\t\tresourceType: string,\n\t): Promise<FhirPathChildren | null> => {\n\t\tif (sdCache[resourceType]) return sdCache[resourceType];\n\t\tif (sdNotFound.has(resourceType)) return null;\n\n\t\ttry {\n\t\t\tconst name = resourceType.replace(/'/g, \"''\");\n\t\t\tconst rows = await executeSql(\n\t\t\t\t`SELECT resource FROM far.canonicalresource WHERE rt = 'StructureDefinition' AND resource->>'name' = '${name}' LIMIT 1`,\n\t\t\t\t\"structure_definition\",\n\t\t\t);\n\t\t\tconst sd = (rows[0]?.resource ?? null) as StructureDefinition | null;\n\t\t\tif (!sd) {\n\t\t\t\tsdNotFound.add(resourceType);\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst pathChildren = buildFromStructureDefinition(sd);\n\t\t\ttransformReferenceFields(pathChildren);\n\t\t\tsdCache[resourceType] = pathChildren;\n\t\t\treturn pathChildren;\n\t\t} catch {\n\t\t\tsdNotFound.add(resourceType);\n\t\t\treturn null;\n\t\t}\n\t};\n\n\treturn [\n\t\tEditorView.theme({\n\t\t\t\".cm-tooltip.cm-tooltip-autocomplete\": {\n\t\t\t\tbackground: \"var(--color-bg-primary)\",\n\t\t\t\tborder: \"1px solid var(--color-border-primary)\",\n\t\t\t\tborderRadius: \"var(--radius-md)\",\n\t\t\t\tpadding: \"4px\",\n\t\t\t\tboxShadow: \"0 4px 12px rgba(0, 0, 0, 0.1)\",\n\t\t\t\tfontFamily: \"var(--font-family-sans)\",\n\t\t\t\tfontSize: \"14px\",\n\t\t\t},\n\t\t\t\".cm-tooltip.cm-tooltip-autocomplete > ul\": {\n\t\t\t\tmaxHeight: \"300px\",\n\t\t\t},\n\t\t\t\".cm-tooltip-autocomplete ul li\": {\n\t\t\t\tpadding: \"4px 8px\",\n\t\t\t\tborderRadius: \"4px\",\n\t\t\t},\n\t\t\t\".cm-tooltip-autocomplete ul li[aria-selected]\": {\n\t\t\t\tbackground: \"var(--color-bg-quaternary)\",\n\t\t\t\tcolor: \"var(--color-text-primary)\",\n\t\t\t},\n\t\t\t\".cm-completionLabel\": {\n\t\t\t\tcolor: \"var(--color-text-primary)\",\n\t\t\t\tfontSize: \"14px\",\n\t\t\t},\n\t\t\t\".cm-completionDetail\": {\n\t\t\t\tcolor: \"var(--color-text-tertiary)\",\n\t\t\t\tfontSize: \"12px\",\n\t\t\t\tfontStyle: \"normal\",\n\t\t\t\tmarginLeft: \"8px\",\n\t\t\t},\n\t\t\t\".cm-completionIcon\": {\n\t\t\t\tpadding: \"0\",\n\t\t\t\tmarginRight: \"6px\",\n\t\t\t\twidth: \"18px\",\n\t\t\t\theight: \"18px\",\n\t\t\t\tdisplay: \"inline-flex\",\n\t\t\t\talignItems: \"center\",\n\t\t\t\tjustifyContent: \"center\",\n\t\t\t\tborderRadius: \"4px\",\n\t\t\t\tfontSize: \"11px\",\n\t\t\t\tfontWeight: \"600\",\n\t\t\t\tlineHeight: \"1\",\n\t\t\t\tboxSizing: \"border-box\",\n\t\t\t},\n\t\t\t\".cm-completionIcon-table\": {\n\t\t\t\tbackground: \"var(--color-blue-100)\",\n\t\t\t\tcolor: \"var(--color-blue-600)\",\n\t\t\t},\n\t\t\t\".cm-completionIcon-table::after\": {\n\t\t\t\tcontent: \"'T'\",\n\t\t\t},\n\t\t\t\".cm-completionIcon-keyword\": {\n\t\t\t\tbackground: \"var(--color-green-200)\",\n\t\t\t\tcolor: \"var(--color-green-700)\",\n\t\t\t},\n\t\t\t\".cm-completionIcon-keyword::after\": {\n\t\t\t\tcontent: \"'S'\",\n\t\t\t},\n\t\t\t\".cm-completionIcon-property\": {\n\t\t\t\tbackground: \"var(--color-purple-100)\",\n\t\t\t\tcolor: \"var(--color-purple-600)\",\n\t\t\t},\n\t\t\t\".cm-completionIcon-property::after\": {\n\t\t\t\tcontent: \"'F'\",\n\t\t\t},\n\t\t\t\".cm-completionIcon-variable\": {\n\t\t\t\tbackground: \"var(--color-yellow-200)\",\n\t\t\t\tcolor: \"var(--color-yellow-700)\",\n\t\t\t},\n\t\t\t\".cm-completionIcon-variable::after\": {\n\t\t\t\tcontent: \"'C'\",\n\t\t\t},\n\t\t}),\n\t\ttableCompletionExtension(metadata.schemas),\n\t\tcolumnCompletionExtension({\n\t\t\tschemas: metadata.schemas,\n\t\t\tcolumns: metadata.columns,\n\t\t}),\n\t\tjsonbCompletionExtension({\n\t\t\tschemas: metadata.schemas,\n\t\t\tjsonbColumns: metadata.jsonbColumns,\n\t\t\tsdCache,\n\t\t\tsdNotFound,\n\t\t\tfetchSchema,\n\t\t}),\n\t\tjsonbOperatorExtension(),\n\t\tsqlCompletionOverride(),\n\t];\n}\n"],"names":["autocompletion","startCompletion","EditorState","EditorView","TABLES_QUERY","JSONB_COLUMNS_QUERY","FUNCTIONS_QUERY","COLUMNS_QUERY","isExpandedVariant","path","unionBases","parts","split","length","parentPath","slice","join","name","base","baseParts","baseName","baseParent","startsWith","test","buildFromStructureDefinition","sd","elements","snapshot","element","result","Set","el","pop","endsWith","add","replace","rawName","some","f","push","datatype","isArray","max","description","short","definition","unionPath","t","type","code","transformReferenceFields","children","Object","entries","hasReferenceField","c","flatMap","child","SQL_TABLE_KEYWORDS","isInsideString","textBefore","count","i","isInJsonbContext","parseJsonbChain","pathOpMatch","match","ref","pathContent","segments","partialInput","lastRawSegment","filter","s","dotParts","tableOrAlias","column","isPathOp","insideQuote","arrowPattern","arrowMatch","chainPart","chainSegments","lastRawSeg","segmentRegex","m","exec","seg","buildAliasMap","sql","schemas","aliases","regex","fullTable","alias","schema","table","includes","found","tables","toLowerCase","tableToResourceType","map","charAt","toUpperCase","getCurrentStatement","doc","pos","start","end","before","lastIndexOf","after","indexOf","buildJsonbResult","chain","pathChildren","resourceType","context","lookupPath","partial","filtered","from","validFor","options","label","detail","info","apply","view","_completion","to","state","sliceDoc","insert","dispatch","changes","selection","anchor","isArrayPosition","fieldName","parentChildren","find","buildArrayIndexResult","resolveNestedTypes","fetchSchema","currentPath","segmentName","firstChar","typeChildren","typeName","key","suffix","tableCompletionExtension","source","line","lineAt","text","schemaDot","schemaName","word","matchBefore","beforeWord","explicit","languageData","of","autocomplete","columnCompletionExtension","ctx","fullDoc","toString","statement","keys","aliasDot","beforeAlias","aliasName","entry","cols","columns","dataType","textBeforeWord","seen","values","dedup","has","triggerCompletionAfter","requestAnimationFrame","jsonbOperatorExtension","head","jsonbCompletionExtension","resolveChain","resolved","jsonbColumns","jsonbKey","jsonbCols","sdNotFound","complete","cached","sdCache","then","fetched","sqlCompletionOverride","override","inJsonb","langSources","languageDataAt","results","Promise","all","src","resolve","r","jsonbTypes","jsonbResult","o","aliasColumnResult","every","hasTableResults","tableOptions","groups","Map","existing","get","set","best","g","boost","fetchSqlMetadata","executeSql","tablesRows","jsonbRows","functionsRows","columnsRows","row","String","table_schema","table_name","column_name","functions","data_type","buildSqlCompletionExtensions","metadata","rows","resource","theme","background","border","borderRadius","padding","boxShadow","fontFamily","fontSize","maxHeight","color","fontStyle","marginLeft","marginRight","width","height","display","alignItems","justifyContent","fontWeight","lineHeight","boxSizing","content"],"mappings":"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"}
@@ -1,5 +1,9 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { CodeEditor } from "./code-editor/index.js";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { AidboxClient, BrowserAuthProvider } from "@health-samurai/aidbox-client";
3
+ import { createCodeMirrorLsp } from "@health-samurai/aidbox-fhirpath-lsp";
4
+ import React from "react";
5
+ import { Input } from "../shadcn/components/ui/input.js";
6
+ import { CodeEditor, EditorInput } from "./code-editor/index.js";
3
7
  const meta = {
4
8
  title: "Component/Editor",
5
9
  component: CodeEditor,
@@ -31,8 +35,281 @@ export const Default = {
31
35
  },
32
36
  render: ()=>/*#__PURE__*/ _jsx("div", {
33
37
  className: "h-[500px] w-[500px]",
34
- children: /*#__PURE__*/ _jsx(CodeEditor, {})
38
+ children: /*#__PURE__*/ _jsx(CodeEditor, {
39
+ mode: "http"
40
+ })
35
41
  })
36
42
  };
43
+ function parse(query) {
44
+ let hi = 0;
45
+ let lo = 0;
46
+ const res = {
47
+ method: "",
48
+ methodTrivia: "",
49
+ path: "",
50
+ pathTrivia: "",
51
+ headers: [],
52
+ headersTrivia: ""
53
+ };
54
+ // Note that we iterate by code units, but it doesn't change correctness.
55
+ // method
56
+ for(hi = 0; hi < query.length; ++hi){
57
+ const c = query[hi];
58
+ if (c === " " || c === "\t" || c === "\n") {
59
+ break;
60
+ }
61
+ }
62
+ res.method = query.substring(lo, hi);
63
+ lo = hi;
64
+ if (lo >= query.length) {
65
+ return res;
66
+ }
67
+ // method trivia
68
+ for(hi = lo; hi < query.length; ++hi){
69
+ const c = query[hi];
70
+ if (!(c === " " || c === "\t")) {
71
+ break;
72
+ }
73
+ }
74
+ res.methodTrivia = query.substring(lo, hi);
75
+ lo = hi;
76
+ if (lo >= query.length) {
77
+ return res;
78
+ }
79
+ // path
80
+ for(hi = lo; hi < query.length; ++hi){
81
+ const c = query[hi];
82
+ if (c === "\n") {
83
+ break;
84
+ }
85
+ }
86
+ res.path = query.substring(lo, hi);
87
+ lo = hi;
88
+ if (lo >= query.length) {
89
+ return res;
90
+ }
91
+ // path trivia
92
+ if (query[hi] === "\n") {
93
+ hi += 1;
94
+ res.pathTrivia = query.substring(lo, hi);
95
+ }
96
+ lo = hi;
97
+ if (lo >= query.length) {
98
+ return res;
99
+ }
100
+ // headers
101
+ let header = {
102
+ name: "",
103
+ nameTrivia: "",
104
+ value: "",
105
+ valueTrivia: ""
106
+ };
107
+ let headerReady = false;
108
+ // SAFETY: don't decrease hi inside this loop.
109
+ for(hi = lo; hi < query.length; ++hi){
110
+ if (headerReady) {
111
+ res.headers.push(header);
112
+ }
113
+ header = {
114
+ name: "",
115
+ nameTrivia: "",
116
+ value: "",
117
+ valueTrivia: ""
118
+ };
119
+ headerReady = false;
120
+ if (query[hi] === "\n") {
121
+ break;
122
+ }
123
+ // header name
124
+ for(lo = hi; hi < query.length; ++hi){
125
+ const c = query[hi];
126
+ if (c === " " || c === "\t" || c === "\n" || c === ":") {
127
+ break;
128
+ }
129
+ }
130
+ headerReady = true;
131
+ header.name = query.substring(lo, hi);
132
+ lo = hi;
133
+ if (lo >= query.length) {
134
+ break;
135
+ }
136
+ // header name trivia
137
+ let colonFound = false;
138
+ for(lo = hi; hi < query.length; ++hi){
139
+ const c = query[hi];
140
+ if (c === ":" && !colonFound) {
141
+ colonFound = true;
142
+ } else if (!(c === " " || c === "\t")) {
143
+ break;
144
+ }
145
+ }
146
+ header.nameTrivia = query.substring(lo, hi);
147
+ lo = hi;
148
+ if (lo >= query.length) {
149
+ break;
150
+ }
151
+ // header value
152
+ for(hi = lo; hi < query.length; ++hi){
153
+ const c = query[hi];
154
+ if (c === "\n") {
155
+ break;
156
+ }
157
+ }
158
+ header.value = query.substring(lo, hi);
159
+ lo = hi;
160
+ if (lo >= query.length) {
161
+ break;
162
+ }
163
+ // header value trivia
164
+ if (query[hi] === "\n") {
165
+ header.valueTrivia = query.substring(lo, hi + 1);
166
+ }
167
+ lo = hi + 1;
168
+ if (lo >= query.length) {
169
+ break;
170
+ }
171
+ }
172
+ if (headerReady) {
173
+ res.headers.push(header);
174
+ }
175
+ if (query[hi] === "\n") {
176
+ res.headersTrivia = query.substring(lo, hi + 1);
177
+ }
178
+ return res;
179
+ }
180
+ const MethodInput = /*#__PURE__*/ React.memo(function MethodInput({ method, onMethodChange }) {
181
+ return /*#__PURE__*/ _jsxs("div", {
182
+ className: "flex justify-center items-baseline",
183
+ children: [
184
+ "Method:",
185
+ /*#__PURE__*/ _jsx(Input, {
186
+ type: "text",
187
+ className: "inline",
188
+ value: method,
189
+ onChange: onMethodChange
190
+ })
191
+ ]
192
+ });
193
+ });
194
+ const PathInput = /*#__PURE__*/ React.memo(function PathInput({ path, onPathChange }) {
195
+ return /*#__PURE__*/ _jsxs("div", {
196
+ className: "flex justify-center items-baseline",
197
+ children: [
198
+ "Path: ",
199
+ /*#__PURE__*/ _jsx(Input, {
200
+ type: "text",
201
+ className: "inline",
202
+ value: path,
203
+ onChange: onPathChange
204
+ })
205
+ ]
206
+ });
207
+ });
208
+ function ComplexComp() {
209
+ const [rawQuery, setRawQuery] = React.useState("");
210
+ const parsed = React.useMemo(()=>parse(rawQuery), [
211
+ rawQuery
212
+ ]);
213
+ const parsedRef = React.useRef(parsed);
214
+ React.useEffect(()=>{
215
+ parsedRef.current = parsed;
216
+ }, [
217
+ parsed
218
+ ]);
219
+ const method = React.useMemo(()=>parsed.method, [
220
+ parsed.method
221
+ ]);
222
+ const path = React.useMemo(()=>parsed.path, [
223
+ parsed.path
224
+ ]);
225
+ const viewRef = React.useRef(null);
226
+ const onMethodChange = React.useCallback((ev)=>{
227
+ let newVal = ev.target.value;
228
+ if (newVal.indexOf(" ") !== -1) {
229
+ newVal = newVal.replaceAll(" ", "").replaceAll("\t", "");
230
+ }
231
+ const view = viewRef.current;
232
+ if (view === null) {
233
+ return null;
234
+ }
235
+ const from = 0;
236
+ const to = parsedRef.current.method.length;
237
+ view.dispatch({
238
+ changes: {
239
+ from: from,
240
+ to: to,
241
+ insert: newVal
242
+ }
243
+ });
244
+ }, []);
245
+ const onPathChange = React.useCallback((ev)=>{
246
+ const newVal = ev.target.value;
247
+ const view = viewRef.current;
248
+ if (view === null) {
249
+ return null;
250
+ }
251
+ const from = parsedRef.current.method.length + parsedRef.current.methodTrivia.length;
252
+ const to = from + parsedRef.current.path.length;
253
+ view.dispatch({
254
+ changes: {
255
+ from: from,
256
+ to: to,
257
+ insert: newVal
258
+ }
259
+ });
260
+ }, []);
261
+ return /*#__PURE__*/ _jsxs(_Fragment, {
262
+ children: [
263
+ /*#__PURE__*/ _jsx(MethodInput, {
264
+ method: method,
265
+ onMethodChange: onMethodChange
266
+ }),
267
+ /*#__PURE__*/ _jsx(PathInput, {
268
+ path: path,
269
+ onPathChange: onPathChange
270
+ }),
271
+ /*#__PURE__*/ _jsx("div", {
272
+ className: "h-[500px] w-[500px] border-black border-2",
273
+ children: /*#__PURE__*/ _jsx(CodeEditor, {
274
+ mode: "http",
275
+ onUpdate: (update)=>{
276
+ if (update.docChanged) {
277
+ setRawQuery(update.state.doc.toString());
278
+ }
279
+ },
280
+ viewCallback: (view)=>{
281
+ viewRef.current = view;
282
+ }
283
+ })
284
+ })
285
+ ]
286
+ });
287
+ }
288
+ export const Complex = {
289
+ render: ()=>ComplexComp()
290
+ };
291
+ function FhirpathComp() {
292
+ const { extension, worker } = React.useMemo(()=>{
293
+ const client = new AidboxClient("http://localhost:8765", new BrowserAuthProvider("http://localhost:8765"));
294
+ return createCodeMirrorLsp(client, {
295
+ debug: true
296
+ });
297
+ }, []);
298
+ React.useEffect(()=>()=>worker.terminate(), [
299
+ worker
300
+ ]);
301
+ return /*#__PURE__*/ _jsx("div", {
302
+ className: "h-[500px] w-[500px]",
303
+ children: /*#__PURE__*/ _jsx(EditorInput, {
304
+ id: "fhirpath-editor-input",
305
+ additionalExtensions: [
306
+ extension
307
+ ]
308
+ })
309
+ });
310
+ }
311
+ export const FhirpathExtension = {
312
+ render: ()=>/*#__PURE__*/ _jsx(FhirpathComp, {})
313
+ };
37
314
 
38
315
  //# sourceMappingURL=code-editor.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/code-editor.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react-vite\";\nimport { CodeEditor } from \"./code-editor\";\n\nconst meta: Meta<typeof CodeEditor> = {\n\ttitle: \"Component/Editor\",\n\tcomponent: CodeEditor,\n\tparameters: {\n\t\tlayout: \"centered\",\n\t},\n\ttags: [\"autodocs\"],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof CodeEditor>;\n\nexport const Default: Story = {\n\targs: {\n\t\tdefaultValue: JSON.stringify(\n\t\t\t{\n\t\t\t\tresourceType: \"Patient\",\n\t\t\t\tmeta: { versionId: 10 },\n\t\t\t\tgender: \"male\",\n\t\t\t\tname: [{ family: \"Doe\", given: [\"John\"] }],\n\t\t\t},\n\t\t\tnull,\n\t\t\t2,\n\t\t),\n\t},\n\trender: () => (\n\t\t<div className=\"h-[500px] w-[500px]\">\n\t\t\t<CodeEditor />\n\t\t</div>\n\t),\n};\n"],"names":["CodeEditor","meta","title","component","parameters","layout","tags","Default","args","defaultValue","JSON","stringify","resourceType","versionId","gender","name","family","given","render","div","className"],"mappings":";AACA,SAASA,UAAU,QAAQ,yBAAgB;AAE3C,MAAMC,OAAgC;IACrCC,OAAO;IACPC,WAAWH;IACXI,YAAY;QACXC,QAAQ;IACT;IACAC,MAAM;QAAC;KAAW;AACnB;AAEA,eAAeL,KAAK;AAGpB,OAAO,MAAMM,UAAiB;IAC7BC,MAAM;QACLC,cAAcC,KAAKC,SAAS,CAC3B;YACCC,cAAc;YACdX,MAAM;gBAAEY,WAAW;YAAG;YACtBC,QAAQ;YACRC,MAAM;gBAAC;oBAAEC,QAAQ;oBAAOC,OAAO;wBAAC;qBAAO;gBAAC;aAAE;QAC3C,GACA,MACA;IAEF;IACAC,QAAQ,kBACP,KAACC;YAAIC,WAAU;sBACd,cAAA,KAACpB;;AAGJ,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/code-editor.stories.tsx"],"sourcesContent":["import type { EditorView } from \"@codemirror/view\";\nimport {\n\tAidboxClient,\n\tBrowserAuthProvider,\n} from \"@health-samurai/aidbox-client\";\nimport { createCodeMirrorLsp } from \"@health-samurai/aidbox-fhirpath-lsp\";\nimport type { Meta, StoryObj } from \"@storybook/react-vite\";\nimport React from \"react\";\nimport { Input } from \"#shadcn/components/ui/input.js\";\nimport { CodeEditor, EditorInput } from \"./code-editor\";\n\nconst meta: Meta<typeof CodeEditor> = {\n\ttitle: \"Component/Editor\",\n\tcomponent: CodeEditor,\n\tparameters: {\n\t\tlayout: \"centered\",\n\t},\n\ttags: [\"autodocs\"],\n};\n\nexport default meta;\ntype Story = StoryObj<typeof CodeEditor>;\n\nexport const Default: Story = {\n\targs: {\n\t\tdefaultValue: JSON.stringify(\n\t\t\t{\n\t\t\t\tresourceType: \"Patient\",\n\t\t\t\tmeta: { versionId: 10 },\n\t\t\t\tgender: \"male\",\n\t\t\t\tname: [{ family: \"Doe\", given: [\"John\"] }],\n\t\t\t},\n\t\t\tnull,\n\t\t\t2,\n\t\t),\n\t},\n\trender: () => (\n\t\t<div className=\"h-[500px] w-[500px]\">\n\t\t\t<CodeEditor mode=\"http\" />\n\t\t</div>\n\t),\n};\n\ntype ParsedHeader = {\n\tname: string;\n\tnameTrivia: string;\n\tvalue: string;\n\tvalueTrivia: string;\n};\n\ntype Parsed = {\n\tmethod: string;\n\tmethodTrivia: string;\n\tpath: string;\n\tpathTrivia: string;\n\theaders: ParsedHeader[];\n\theadersTrivia: string;\n};\n\nfunction parse(query: string): Parsed {\n\tlet hi = 0;\n\tlet lo = 0;\n\tconst res: Parsed = {\n\t\tmethod: \"\",\n\t\tmethodTrivia: \"\",\n\t\tpath: \"\",\n\t\tpathTrivia: \"\",\n\t\theaders: [],\n\t\theadersTrivia: \"\",\n\t};\n\n\t// Note that we iterate by code units, but it doesn't change correctness.\n\t// method\n\tfor (hi = 0; hi < query.length; ++hi) {\n\t\tconst c = query[hi];\n\t\tif (c === \" \" || c === \"\\t\" || c === \"\\n\") {\n\t\t\tbreak;\n\t\t}\n\t}\n\tres.method = query.substring(lo, hi);\n\tlo = hi;\n\tif (lo >= query.length) {\n\t\treturn res;\n\t}\n\n\t// method trivia\n\tfor (hi = lo; hi < query.length; ++hi) {\n\t\tconst c = query[hi];\n\t\tif (!(c === \" \" || c === \"\\t\")) {\n\t\t\tbreak;\n\t\t}\n\t}\n\tres.methodTrivia = query.substring(lo, hi);\n\tlo = hi;\n\tif (lo >= query.length) {\n\t\treturn res;\n\t}\n\n\t// path\n\tfor (hi = lo; hi < query.length; ++hi) {\n\t\tconst c = query[hi];\n\t\tif (c === \"\\n\") {\n\t\t\tbreak;\n\t\t}\n\t}\n\tres.path = query.substring(lo, hi);\n\tlo = hi;\n\tif (lo >= query.length) {\n\t\treturn res;\n\t}\n\n\t// path trivia\n\tif (query[hi] === \"\\n\") {\n\t\thi += 1;\n\t\tres.pathTrivia = query.substring(lo, hi);\n\t}\n\tlo = hi;\n\tif (lo >= query.length) {\n\t\treturn res;\n\t}\n\n\t// headers\n\tlet header: ParsedHeader = {\n\t\tname: \"\",\n\t\tnameTrivia: \"\",\n\t\tvalue: \"\",\n\t\tvalueTrivia: \"\",\n\t};\n\tlet headerReady = false;\n\t// SAFETY: don't decrease hi inside this loop.\n\tfor (hi = lo; hi < query.length; ++hi) {\n\t\tif (headerReady) {\n\t\t\tres.headers.push(header);\n\t\t}\n\t\theader = { name: \"\", nameTrivia: \"\", value: \"\", valueTrivia: \"\" };\n\t\theaderReady = false;\n\n\t\tif (query[hi] === \"\\n\") {\n\t\t\t// end of headers\n\t\t\tbreak;\n\t\t}\n\n\t\t// header name\n\t\tfor (lo = hi; hi < query.length; ++hi) {\n\t\t\tconst c = query[hi];\n\t\t\tif (c === \" \" || c === \"\\t\" || c === \"\\n\" || c === \":\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\theaderReady = true;\n\t\theader.name = query.substring(lo, hi);\n\t\tlo = hi;\n\t\tif (lo >= query.length) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// header name trivia\n\t\tlet colonFound = false;\n\t\tfor (lo = hi; hi < query.length; ++hi) {\n\t\t\tconst c = query[hi];\n\t\t\tif (c === \":\" && !colonFound) {\n\t\t\t\tcolonFound = true;\n\t\t\t} else if (!(c === \" \" || c === \"\\t\")) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\theader.nameTrivia = query.substring(lo, hi);\n\t\tlo = hi;\n\t\tif (lo >= query.length) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// header value\n\t\tfor (hi = lo; hi < query.length; ++hi) {\n\t\t\tconst c = query[hi];\n\t\t\tif (c === \"\\n\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\theader.value = query.substring(lo, hi);\n\t\tlo = hi;\n\t\tif (lo >= query.length) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// header value trivia\n\t\tif (query[hi] === \"\\n\") {\n\t\t\theader.valueTrivia = query.substring(lo, hi + 1);\n\t\t}\n\t\tlo = hi + 1;\n\t\tif (lo >= query.length) {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (headerReady) {\n\t\tres.headers.push(header);\n\t}\n\n\tif (query[hi] === \"\\n\") {\n\t\tres.headersTrivia = query.substring(lo, hi + 1);\n\t}\n\n\treturn res;\n}\n\nconst MethodInput = React.memo(function MethodInput({\n\tmethod,\n\tonMethodChange,\n}: {\n\tmethod: string;\n\tonMethodChange: (ev: React.ChangeEvent<HTMLInputElement>) => void;\n}) {\n\treturn (\n\t\t<div className=\"flex justify-center items-baseline\">\n\t\t\tMethod:\n\t\t\t<Input\n\t\t\t\ttype=\"text\"\n\t\t\t\tclassName=\"inline\"\n\t\t\t\tvalue={method}\n\t\t\t\tonChange={onMethodChange}\n\t\t\t/>\n\t\t</div>\n\t);\n});\n\nconst PathInput = React.memo(function PathInput({\n\tpath,\n\tonPathChange,\n}: {\n\tpath: string;\n\tonPathChange: (ev: React.ChangeEvent<HTMLInputElement>) => void;\n}) {\n\treturn (\n\t\t<div className=\"flex justify-center items-baseline\">\n\t\t\t{\"Path: \"}\n\t\t\t<Input\n\t\t\t\ttype=\"text\"\n\t\t\t\tclassName=\"inline\"\n\t\t\t\tvalue={path}\n\t\t\t\tonChange={onPathChange}\n\t\t\t/>\n\t\t</div>\n\t);\n});\n\nfunction ComplexComp() {\n\tconst [rawQuery, setRawQuery] = React.useState(\"\");\n\tconst parsed = React.useMemo(() => parse(rawQuery), [rawQuery]);\n\tconst parsedRef = React.useRef(parsed);\n\tReact.useEffect(() => {\n\t\tparsedRef.current = parsed;\n\t}, [parsed]);\n\tconst method = React.useMemo(() => parsed.method, [parsed.method]);\n\tconst path = React.useMemo(() => parsed.path, [parsed.path]);\n\n\tconst viewRef = React.useRef<EditorView | null>(null);\n\n\tconst onMethodChange = React.useCallback(\n\t\t(ev: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tlet newVal = ev.target.value;\n\n\t\t\tif (newVal.indexOf(\" \") !== -1) {\n\t\t\t\tnewVal = newVal.replaceAll(\" \", \"\").replaceAll(\"\\t\", \"\");\n\t\t\t}\n\n\t\t\tconst view = viewRef.current;\n\t\t\tif (view === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst from = 0;\n\t\t\tconst to = parsedRef.current.method.length;\n\n\t\t\tview.dispatch({\n\t\t\t\tchanges: {\n\t\t\t\t\tfrom: from,\n\t\t\t\t\tto: to,\n\t\t\t\t\tinsert: newVal,\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\t[],\n\t);\n\n\tconst onPathChange = React.useCallback(\n\t\t(ev: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst newVal = ev.target.value;\n\n\t\t\tconst view = viewRef.current;\n\t\t\tif (view === null) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst from =\n\t\t\t\tparsedRef.current.method.length + parsedRef.current.methodTrivia.length;\n\t\t\tconst to = from + parsedRef.current.path.length;\n\n\t\t\tview.dispatch({\n\t\t\t\tchanges: {\n\t\t\t\t\tfrom: from,\n\t\t\t\t\tto: to,\n\t\t\t\t\tinsert: newVal,\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\t[],\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<MethodInput method={method} onMethodChange={onMethodChange} />\n\t\t\t<PathInput path={path} onPathChange={onPathChange} />\n\t\t\t<div className=\"h-[500px] w-[500px] border-black border-2\">\n\t\t\t\t<CodeEditor\n\t\t\t\t\tmode=\"http\"\n\t\t\t\t\tonUpdate={(update) => {\n\t\t\t\t\t\tif (update.docChanged) {\n\t\t\t\t\t\t\tsetRawQuery(update.state.doc.toString());\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tviewCallback={(view) => {\n\t\t\t\t\t\tviewRef.current = view;\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n\nexport const Complex: Story = {\n\trender: () => ComplexComp(),\n};\n\nfunction FhirpathComp() {\n\tconst { extension, worker } = React.useMemo(() => {\n\t\tconst client = new AidboxClient(\n\t\t\t\"http://localhost:8765\",\n\t\t\tnew BrowserAuthProvider(\"http://localhost:8765\"),\n\t\t);\n\t\treturn createCodeMirrorLsp(client, { debug: true });\n\t}, []);\n\n\tReact.useEffect(() => () => worker.terminate(), [worker]);\n\n\treturn (\n\t\t<div className=\"h-[500px] w-[500px]\">\n\t\t\t<EditorInput\n\t\t\t\tid=\"fhirpath-editor-input\"\n\t\t\t\tadditionalExtensions={[extension]}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport const FhirpathExtension: Story = {\n\trender: () => <FhirpathComp />,\n};\n"],"names":["AidboxClient","BrowserAuthProvider","createCodeMirrorLsp","React","Input","CodeEditor","EditorInput","meta","title","component","parameters","layout","tags","Default","args","defaultValue","JSON","stringify","resourceType","versionId","gender","name","family","given","render","div","className","mode","parse","query","hi","lo","res","method","methodTrivia","path","pathTrivia","headers","headersTrivia","length","c","substring","header","nameTrivia","value","valueTrivia","headerReady","push","colonFound","MethodInput","memo","onMethodChange","type","onChange","PathInput","onPathChange","ComplexComp","rawQuery","setRawQuery","useState","parsed","useMemo","parsedRef","useRef","useEffect","current","viewRef","useCallback","ev","newVal","target","indexOf","replaceAll","view","from","to","dispatch","changes","insert","onUpdate","update","docChanged","state","doc","toString","viewCallback","Complex","FhirpathComp","extension","worker","client","debug","terminate","id","additionalExtensions","FhirpathExtension"],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  interface CopyIconProps {
2
2
  text: string;
3
+ showTooltip?: boolean;
4
+ tooltipText?: string;
5
+ showToast?: boolean;
6
+ onCopy?: (text: string) => void;
3
7
  }
4
- declare function CopyIcon({ text }: CopyIconProps): import("react/jsx-runtime").JSX.Element;
8
+ declare function CopyIcon({ text, showTooltip, tooltipText, showToast, onCopy, ...props }: CopyIconProps): import("react/jsx-runtime").JSX.Element;
5
9
  export { CopyIcon };
6
10
  //# sourceMappingURL=copy-icon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"copy-icon.d.ts","sourceRoot":"","sources":["../../../src/components/copy-icon.tsx"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACtB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,iBAAS,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,aAAa,2CAoBxC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"copy-icon.d.ts","sourceRoot":"","sources":["../../../src/components/copy-icon.tsx"],"names":[],"mappings":"AASA,UAAU,aAAa;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,iBAAS,QAAQ,CAAC,EACjB,IAAI,EACJ,WAAkB,EAClB,WAAoB,EACpB,SAAgB,EAChB,MAAM,EACN,GAAG,KAAK,EACR,EAAE,aAAa,2CAyDf;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -1,12 +1,33 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Check, Copy } from "lucide-react";
3
3
  import * as React from "react";
4
- function CopyIcon({ text }) {
4
+ import { toast } from "sonner";
5
+ import { Tooltip, TooltipContent, TooltipTrigger } from "../shadcn/components/ui/tooltip.js";
6
+ function CopyIcon({ text, showTooltip = true, tooltipText = "Copy", showToast = true, onCopy, ...props }) {
5
7
  const [isActive, setIsActive] = React.useState(false);
6
8
  async function handleClick() {
7
9
  try {
8
10
  await navigator.clipboard.writeText(text);
9
11
  setIsActive(true);
12
+ if (showToast) {
13
+ const truncatedText = text.length > 30 ? `${text.slice(0, 30)}...` : text;
14
+ toast(/*#__PURE__*/ _jsxs("div", {
15
+ className: "flex flex-col gap-1",
16
+ children: [
17
+ /*#__PURE__*/ _jsx("span", {
18
+ className: "typo-body",
19
+ children: "Successfully copied"
20
+ }),
21
+ /*#__PURE__*/ _jsx("span", {
22
+ className: "typo-code text-text-secondary",
23
+ children: truncatedText
24
+ })
25
+ ]
26
+ }), {
27
+ duration: 2000
28
+ });
29
+ }
30
+ onCopy?.(text);
10
31
  setTimeout(()=>{
11
32
  setIsActive(false);
12
33
  }, 1000);
@@ -14,7 +35,8 @@ function CopyIcon({ text }) {
14
35
  console.error("Failed to copy to clipboard:", error);
15
36
  }
16
37
  }
17
- return /*#__PURE__*/ _jsx("button", {
38
+ const button = /*#__PURE__*/ _jsx("button", {
39
+ ...props,
18
40
  type: "button",
19
41
  onClick: handleClick,
20
42
  style: {
@@ -22,6 +44,22 @@ function CopyIcon({ text }) {
22
44
  },
23
45
  children: isActive ? /*#__PURE__*/ _jsx(Check, {}) : /*#__PURE__*/ _jsx(Copy, {})
24
46
  });
47
+ if (!showTooltip) {
48
+ return button;
49
+ }
50
+ return /*#__PURE__*/ _jsxs(Tooltip, {
51
+ children: [
52
+ /*#__PURE__*/ _jsx(TooltipTrigger, {
53
+ asChild: true,
54
+ children: button
55
+ }),
56
+ /*#__PURE__*/ _jsx(TooltipContent, {
57
+ children: /*#__PURE__*/ _jsx("p", {
58
+ children: tooltipText
59
+ })
60
+ })
61
+ ]
62
+ });
25
63
  }
26
64
  export { CopyIcon };
27
65
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/copy-icon.tsx"],"sourcesContent":["import { Check, Copy } from \"lucide-react\";\nimport * as React from \"react\";\n\ninterface CopyIconProps {\n\ttext: string;\n}\n\nfunction CopyIcon({ text }: CopyIconProps) {\n\tconst [isActive, setIsActive] = React.useState(false);\n\n\tasync function handleClick() {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(text);\n\t\t\tsetIsActive(true);\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetIsActive(false);\n\t\t\t}, 1000);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Failed to copy to clipboard:\", error);\n\t\t}\n\t}\n\n\treturn (\n\t\t<button type=\"button\" onClick={handleClick} style={{ cursor: \"pointer\" }}>\n\t\t\t{isActive ? <Check /> : <Copy />}\n\t\t</button>\n\t);\n}\n\nexport { CopyIcon };\n"],"names":["Check","Copy","React","CopyIcon","text","isActive","setIsActive","useState","handleClick","navigator","clipboard","writeText","setTimeout","error","console","button","type","onClick","style","cursor"],"mappings":";AAAA,SAASA,KAAK,EAAEC,IAAI,QAAQ,eAAe;AAC3C,YAAYC,WAAW,QAAQ;AAM/B,SAASC,SAAS,EAAEC,IAAI,EAAiB;IACxC,MAAM,CAACC,UAAUC,YAAY,GAAGJ,MAAMK,QAAQ,CAAC;IAE/C,eAAeC;QACd,IAAI;YACH,MAAMC,UAAUC,SAAS,CAACC,SAAS,CAACP;YACpCE,YAAY;YACZM,WAAW;gBACVN,YAAY;YACb,GAAG;QACJ,EAAE,OAAOO,OAAO;YACfC,QAAQD,KAAK,CAAC,gCAAgCA;QAC/C;IACD;IAEA,qBACC,KAACE;QAAOC,MAAK;QAASC,SAAST;QAAaU,OAAO;YAAEC,QAAQ;QAAU;kBACrEd,yBAAW,KAACL,2BAAW,KAACC;;AAG5B;AAEA,SAASE,QAAQ,GAAG"}
1
+ {"version":3,"sources":["../../../src/components/copy-icon.tsx"],"sourcesContent":["import { Check, Copy } from \"lucide-react\";\nimport * as React from \"react\";\nimport { toast } from \"sonner\";\nimport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipTrigger,\n} from \"#shadcn/components/ui/tooltip\";\n\ninterface CopyIconProps {\n\ttext: string;\n\tshowTooltip?: boolean;\n\ttooltipText?: string;\n\tshowToast?: boolean;\n\tonCopy?: (text: string) => void;\n}\n\nfunction CopyIcon({\n\ttext,\n\tshowTooltip = true,\n\ttooltipText = \"Copy\",\n\tshowToast = true,\n\tonCopy,\n\t...props\n}: CopyIconProps) {\n\tconst [isActive, setIsActive] = React.useState(false);\n\n\tasync function handleClick() {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(text);\n\t\t\tsetIsActive(true);\n\n\t\t\tif (showToast) {\n\t\t\t\tconst truncatedText =\n\t\t\t\t\ttext.length > 30 ? `${text.slice(0, 30)}...` : text;\n\t\t\t\ttoast(\n\t\t\t\t\t<div className=\"flex flex-col gap-1\">\n\t\t\t\t\t\t<span className=\"typo-body\">Successfully copied</span>\n\t\t\t\t\t\t<span className=\"typo-code text-text-secondary\">\n\t\t\t\t\t\t\t{truncatedText}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>,\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: 2000,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tonCopy?.(text);\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tsetIsActive(false);\n\t\t\t}, 1000);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Failed to copy to clipboard:\", error);\n\t\t}\n\t}\n\n\tconst button = (\n\t\t<button\n\t\t\t{...props}\n\t\t\ttype=\"button\"\n\t\t\tonClick={handleClick}\n\t\t\tstyle={{ cursor: \"pointer\" }}\n\t\t>\n\t\t\t{isActive ? <Check /> : <Copy />}\n\t\t</button>\n\t);\n\n\tif (!showTooltip) {\n\t\treturn button;\n\t}\n\n\treturn (\n\t\t<Tooltip>\n\t\t\t<TooltipTrigger asChild>{button}</TooltipTrigger>\n\t\t\t<TooltipContent>\n\t\t\t\t<p>{tooltipText}</p>\n\t\t\t</TooltipContent>\n\t\t</Tooltip>\n\t);\n}\n\nexport { CopyIcon };\n"],"names":["Check","Copy","React","toast","Tooltip","TooltipContent","TooltipTrigger","CopyIcon","text","showTooltip","tooltipText","showToast","onCopy","props","isActive","setIsActive","useState","handleClick","navigator","clipboard","writeText","truncatedText","length","slice","div","className","span","duration","setTimeout","error","console","button","type","onClick","style","cursor","asChild","p"],"mappings":";AAAA,SAASA,KAAK,EAAEC,IAAI,QAAQ,eAAe;AAC3C,YAAYC,WAAW,QAAQ;AAC/B,SAASC,KAAK,QAAQ,SAAS;AAC/B,SACCC,OAAO,EACPC,cAAc,EACdC,cAAc,QACR,qCAAgC;AAUvC,SAASC,SAAS,EACjBC,IAAI,EACJC,cAAc,IAAI,EAClBC,cAAc,MAAM,EACpBC,YAAY,IAAI,EAChBC,MAAM,EACN,GAAGC,OACY;IACf,MAAM,CAACC,UAAUC,YAAY,GAAGb,MAAMc,QAAQ,CAAC;IAE/C,eAAeC;QACd,IAAI;YACH,MAAMC,UAAUC,SAAS,CAACC,SAAS,CAACZ;YACpCO,YAAY;YAEZ,IAAIJ,WAAW;gBACd,MAAMU,gBACLb,KAAKc,MAAM,GAAG,KAAK,GAAGd,KAAKe,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,GAAGf;gBAChDL,oBACC,MAACqB;oBAAIC,WAAU;;sCACd,KAACC;4BAAKD,WAAU;sCAAY;;sCAC5B,KAACC;4BAAKD,WAAU;sCACdJ;;;oBAGH;oBACCM,UAAU;gBACX;YAEF;YAEAf,SAASJ;YAEToB,WAAW;gBACVb,YAAY;YACb,GAAG;QACJ,EAAE,OAAOc,OAAO;YACfC,QAAQD,KAAK,CAAC,gCAAgCA;QAC/C;IACD;IAEA,MAAME,uBACL,KAACA;QACC,GAAGlB,KAAK;QACTmB,MAAK;QACLC,SAAShB;QACTiB,OAAO;YAAEC,QAAQ;QAAU;kBAE1BrB,yBAAW,KAACd,2BAAW,KAACC;;IAI3B,IAAI,CAACQ,aAAa;QACjB,OAAOsB;IACR;IAEA,qBACC,MAAC3B;;0BACA,KAACE;gBAAe8B,OAAO;0BAAEL;;0BACzB,KAAC1B;0BACA,cAAA,KAACgC;8BAAG3B;;;;;AAIR;AAEA,SAASH,QAAQ,GAAG"}
@@ -0,0 +1,9 @@
1
+ import { type AccessorKeyColumnDef, type ColumnDef } from "@tanstack/react-table";
2
+ export interface DataTableProps<TData> {
3
+ columns: ColumnDef<TData, any>[];
4
+ data: TData[];
5
+ stickyHeader?: boolean;
6
+ }
7
+ export declare function DataTable<TData>({ columns, data, stickyHeader, }: DataTableProps<TData>): import("react/jsx-runtime").JSX.Element;
8
+ export type { ColumnDef, AccessorKeyColumnDef };
9
+ //# sourceMappingURL=data-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../../src/components/data-table.tsx"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,SAAS,EAId,MAAM,uBAAuB,CAAC;AAW/B,MAAM,WAAW,cAAc,CAAC,KAAK;IAMpC,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;IACjC,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,EAChC,OAAO,EACP,IAAI,EACJ,YAAoB,GACpB,EAAE,cAAc,CAAC,KAAK,CAAC,2CAyFvB;AAED,YAAY,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC"}