@pipe0/react 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (577) hide show
  1. package/CHANGELOG.md +119 -0
  2. package/README.md +172 -0
  3. package/dist/components/compound/pipe-catalog/active-filters.d.mts +26 -0
  4. package/dist/components/compound/pipe-catalog/active-filters.d.mts.map +1 -0
  5. package/dist/components/compound/pipe-catalog/active-filters.mjs +47 -0
  6. package/dist/components/compound/pipe-catalog/active-filters.mjs.map +1 -0
  7. package/dist/components/compound/pipe-catalog/card.d.mts +30 -0
  8. package/dist/components/compound/pipe-catalog/card.d.mts.map +1 -0
  9. package/dist/components/compound/pipe-catalog/card.mjs +77 -0
  10. package/dist/components/compound/pipe-catalog/card.mjs.map +1 -0
  11. package/dist/components/compound/pipe-catalog/category-filter.d.mts +30 -0
  12. package/dist/components/compound/pipe-catalog/category-filter.d.mts.map +1 -0
  13. package/dist/components/compound/pipe-catalog/category-filter.mjs +56 -0
  14. package/dist/components/compound/pipe-catalog/category-filter.mjs.map +1 -0
  15. package/dist/components/compound/pipe-catalog/column-filter.d.mts +40 -0
  16. package/dist/components/compound/pipe-catalog/column-filter.d.mts.map +1 -0
  17. package/dist/components/compound/pipe-catalog/column-filter.mjs +66 -0
  18. package/dist/components/compound/pipe-catalog/column-filter.mjs.map +1 -0
  19. package/dist/components/compound/pipe-catalog/column-filters.d.mts +16 -0
  20. package/dist/components/compound/pipe-catalog/column-filters.d.mts.map +1 -0
  21. package/dist/components/compound/pipe-catalog/column-filters.mjs +21 -0
  22. package/dist/components/compound/pipe-catalog/column-filters.mjs.map +1 -0
  23. package/dist/components/compound/pipe-catalog/empty.d.mts +22 -0
  24. package/dist/components/compound/pipe-catalog/empty.d.mts.map +1 -0
  25. package/dist/components/compound/pipe-catalog/empty.mjs +31 -0
  26. package/dist/components/compound/pipe-catalog/empty.mjs.map +1 -0
  27. package/dist/components/compound/pipe-catalog/index.d.mts +13 -0
  28. package/dist/components/compound/pipe-catalog/index.mjs +15 -0
  29. package/dist/components/compound/pipe-catalog/input-field-filter.d.mts +22 -0
  30. package/dist/components/compound/pipe-catalog/input-field-filter.d.mts.map +1 -0
  31. package/dist/components/compound/pipe-catalog/input-field-filter.mjs +22 -0
  32. package/dist/components/compound/pipe-catalog/input-field-filter.mjs.map +1 -0
  33. package/dist/components/compound/pipe-catalog/list.d.mts +34 -0
  34. package/dist/components/compound/pipe-catalog/list.d.mts.map +1 -0
  35. package/dist/components/compound/pipe-catalog/list.mjs +29 -0
  36. package/dist/components/compound/pipe-catalog/list.mjs.map +1 -0
  37. package/dist/components/compound/pipe-catalog/output-field-filter.d.mts +22 -0
  38. package/dist/components/compound/pipe-catalog/output-field-filter.d.mts.map +1 -0
  39. package/dist/components/compound/pipe-catalog/output-field-filter.mjs +22 -0
  40. package/dist/components/compound/pipe-catalog/output-field-filter.mjs.map +1 -0
  41. package/dist/components/compound/pipe-catalog/provider-filter.d.mts +22 -0
  42. package/dist/components/compound/pipe-catalog/provider-filter.d.mts.map +1 -0
  43. package/dist/components/compound/pipe-catalog/provider-filter.mjs +29 -0
  44. package/dist/components/compound/pipe-catalog/provider-filter.mjs.map +1 -0
  45. package/dist/components/compound/pipe-catalog/root.d.mts +47 -0
  46. package/dist/components/compound/pipe-catalog/root.d.mts.map +1 -0
  47. package/dist/components/compound/pipe-catalog/root.mjs +85 -0
  48. package/dist/components/compound/pipe-catalog/root.mjs.map +1 -0
  49. package/dist/components/compound/pipe-catalog/search-filter.d.mts +24 -0
  50. package/dist/components/compound/pipe-catalog/search-filter.d.mts.map +1 -0
  51. package/dist/components/compound/pipe-catalog/search-filter.mjs +46 -0
  52. package/dist/components/compound/pipe-catalog/search-filter.mjs.map +1 -0
  53. package/dist/components/compound/pipe-catalog/tag-filter.d.mts +22 -0
  54. package/dist/components/compound/pipe-catalog/tag-filter.d.mts.map +1 -0
  55. package/dist/components/compound/pipe-catalog/tag-filter.mjs +22 -0
  56. package/dist/components/compound/pipe-catalog/tag-filter.mjs.map +1 -0
  57. package/dist/components/compound/pipe-form/content.d.mts +18 -0
  58. package/dist/components/compound/pipe-form/content.d.mts.map +1 -0
  59. package/dist/components/compound/pipe-form/content.mjs +45 -0
  60. package/dist/components/compound/pipe-form/content.mjs.map +1 -0
  61. package/dist/components/compound/pipe-form/field.d.mts +17 -0
  62. package/dist/components/compound/pipe-form/field.d.mts.map +1 -0
  63. package/dist/components/compound/pipe-form/field.mjs +21 -0
  64. package/dist/components/compound/pipe-form/field.mjs.map +1 -0
  65. package/dist/components/compound/pipe-form/footer.d.mts +14 -0
  66. package/dist/components/compound/pipe-form/footer.d.mts.map +1 -0
  67. package/dist/components/compound/pipe-form/footer.mjs +14 -0
  68. package/dist/components/compound/pipe-form/footer.mjs.map +1 -0
  69. package/dist/components/compound/pipe-form/group.d.mts +13 -0
  70. package/dist/components/compound/pipe-form/group.d.mts.map +1 -0
  71. package/dist/components/compound/pipe-form/group.mjs +17 -0
  72. package/dist/components/compound/pipe-form/group.mjs.map +1 -0
  73. package/dist/components/compound/pipe-form/header.d.mts +14 -0
  74. package/dist/components/compound/pipe-form/header.d.mts.map +1 -0
  75. package/dist/components/compound/pipe-form/header.mjs +14 -0
  76. package/dist/components/compound/pipe-form/header.mjs.map +1 -0
  77. package/dist/components/compound/pipe-form/index.d.mts +9 -0
  78. package/dist/components/compound/pipe-form/index.mjs +11 -0
  79. package/dist/components/compound/pipe-form/root.d.mts +56 -0
  80. package/dist/components/compound/pipe-form/root.d.mts.map +1 -0
  81. package/dist/components/compound/pipe-form/root.mjs +98 -0
  82. package/dist/components/compound/pipe-form/root.mjs.map +1 -0
  83. package/dist/components/compound/pipe-form/section.d.mts +13 -0
  84. package/dist/components/compound/pipe-form/section.d.mts.map +1 -0
  85. package/dist/components/compound/pipe-form/section.mjs +17 -0
  86. package/dist/components/compound/pipe-form/section.mjs.map +1 -0
  87. package/dist/components/compound/pipe-form/submit-button.d.mts +9 -0
  88. package/dist/components/compound/pipe-form/submit-button.d.mts.map +1 -0
  89. package/dist/components/compound/pipe-form/submit-button.mjs +17 -0
  90. package/dist/components/compound/pipe-form/submit-button.mjs.map +1 -0
  91. package/dist/components/compound/pipe-form/title.d.mts +16 -0
  92. package/dist/components/compound/pipe-form/title.d.mts.map +1 -0
  93. package/dist/components/compound/pipe-form/title.mjs +14 -0
  94. package/dist/components/compound/pipe-form/title.mjs.map +1 -0
  95. package/dist/components/compound/search-catalog/active-filters.d.mts +26 -0
  96. package/dist/components/compound/search-catalog/active-filters.d.mts.map +1 -0
  97. package/dist/components/compound/search-catalog/active-filters.mjs +46 -0
  98. package/dist/components/compound/search-catalog/active-filters.mjs.map +1 -0
  99. package/dist/components/compound/search-catalog/card.d.mts +30 -0
  100. package/dist/components/compound/search-catalog/card.d.mts.map +1 -0
  101. package/dist/components/compound/search-catalog/card.mjs +77 -0
  102. package/dist/components/compound/search-catalog/card.mjs.map +1 -0
  103. package/dist/components/compound/search-catalog/category-filter.d.mts +29 -0
  104. package/dist/components/compound/search-catalog/category-filter.d.mts.map +1 -0
  105. package/dist/components/compound/search-catalog/category-filter.mjs +51 -0
  106. package/dist/components/compound/search-catalog/category-filter.mjs.map +1 -0
  107. package/dist/components/compound/search-catalog/column-filter.d.mts +40 -0
  108. package/dist/components/compound/search-catalog/column-filter.d.mts.map +1 -0
  109. package/dist/components/compound/search-catalog/column-filter.mjs +63 -0
  110. package/dist/components/compound/search-catalog/column-filter.mjs.map +1 -0
  111. package/dist/components/compound/search-catalog/column-filters.d.mts +15 -0
  112. package/dist/components/compound/search-catalog/column-filters.d.mts.map +1 -0
  113. package/dist/components/compound/search-catalog/column-filters.mjs +16 -0
  114. package/dist/components/compound/search-catalog/column-filters.mjs.map +1 -0
  115. package/dist/components/compound/search-catalog/empty.d.mts +22 -0
  116. package/dist/components/compound/search-catalog/empty.d.mts.map +1 -0
  117. package/dist/components/compound/search-catalog/empty.mjs +31 -0
  118. package/dist/components/compound/search-catalog/empty.mjs.map +1 -0
  119. package/dist/components/compound/search-catalog/index.d.mts +12 -0
  120. package/dist/components/compound/search-catalog/index.mjs +14 -0
  121. package/dist/components/compound/search-catalog/list.d.mts +19 -0
  122. package/dist/components/compound/search-catalog/list.d.mts.map +1 -0
  123. package/dist/components/compound/search-catalog/list.mjs +29 -0
  124. package/dist/components/compound/search-catalog/list.mjs.map +1 -0
  125. package/dist/components/compound/search-catalog/output-field-filter.d.mts +22 -0
  126. package/dist/components/compound/search-catalog/output-field-filter.d.mts.map +1 -0
  127. package/dist/components/compound/search-catalog/output-field-filter.mjs +22 -0
  128. package/dist/components/compound/search-catalog/output-field-filter.mjs.map +1 -0
  129. package/dist/components/compound/search-catalog/provider-filter.d.mts +22 -0
  130. package/dist/components/compound/search-catalog/provider-filter.d.mts.map +1 -0
  131. package/dist/components/compound/search-catalog/provider-filter.mjs +29 -0
  132. package/dist/components/compound/search-catalog/provider-filter.mjs.map +1 -0
  133. package/dist/components/compound/search-catalog/root.d.mts +33 -0
  134. package/dist/components/compound/search-catalog/root.d.mts.map +1 -0
  135. package/dist/components/compound/search-catalog/root.mjs +74 -0
  136. package/dist/components/compound/search-catalog/root.mjs.map +1 -0
  137. package/dist/components/compound/search-catalog/search-filter.d.mts +24 -0
  138. package/dist/components/compound/search-catalog/search-filter.d.mts.map +1 -0
  139. package/dist/components/compound/search-catalog/search-filter.mjs +46 -0
  140. package/dist/components/compound/search-catalog/search-filter.mjs.map +1 -0
  141. package/dist/components/compound/search-catalog/tag-filter.d.mts +22 -0
  142. package/dist/components/compound/search-catalog/tag-filter.d.mts.map +1 -0
  143. package/dist/components/compound/search-catalog/tag-filter.mjs +22 -0
  144. package/dist/components/compound/search-catalog/tag-filter.mjs.map +1 -0
  145. package/dist/components/compound/search-form/content.d.mts +18 -0
  146. package/dist/components/compound/search-form/content.d.mts.map +1 -0
  147. package/dist/components/compound/search-form/content.mjs +45 -0
  148. package/dist/components/compound/search-form/content.mjs.map +1 -0
  149. package/dist/components/compound/search-form/field.d.mts +17 -0
  150. package/dist/components/compound/search-form/field.d.mts.map +1 -0
  151. package/dist/components/compound/search-form/field.mjs +21 -0
  152. package/dist/components/compound/search-form/field.mjs.map +1 -0
  153. package/dist/components/compound/search-form/footer.d.mts +14 -0
  154. package/dist/components/compound/search-form/footer.d.mts.map +1 -0
  155. package/dist/components/compound/search-form/footer.mjs +14 -0
  156. package/dist/components/compound/search-form/footer.mjs.map +1 -0
  157. package/dist/components/compound/search-form/group.d.mts +13 -0
  158. package/dist/components/compound/search-form/group.d.mts.map +1 -0
  159. package/dist/components/compound/search-form/group.mjs +17 -0
  160. package/dist/components/compound/search-form/group.mjs.map +1 -0
  161. package/dist/components/compound/search-form/header.d.mts +14 -0
  162. package/dist/components/compound/search-form/header.d.mts.map +1 -0
  163. package/dist/components/compound/search-form/header.mjs +14 -0
  164. package/dist/components/compound/search-form/header.mjs.map +1 -0
  165. package/dist/components/compound/search-form/index.d.mts +9 -0
  166. package/dist/components/compound/search-form/index.mjs +11 -0
  167. package/dist/components/compound/search-form/root.d.mts +45 -0
  168. package/dist/components/compound/search-form/root.d.mts.map +1 -0
  169. package/dist/components/compound/search-form/root.mjs +90 -0
  170. package/dist/components/compound/search-form/root.mjs.map +1 -0
  171. package/dist/components/compound/search-form/section.d.mts +13 -0
  172. package/dist/components/compound/search-form/section.d.mts.map +1 -0
  173. package/dist/components/compound/search-form/section.mjs +17 -0
  174. package/dist/components/compound/search-form/section.mjs.map +1 -0
  175. package/dist/components/compound/search-form/submit-button.d.mts +9 -0
  176. package/dist/components/compound/search-form/submit-button.d.mts.map +1 -0
  177. package/dist/components/compound/search-form/submit-button.mjs +17 -0
  178. package/dist/components/compound/search-form/submit-button.mjs.map +1 -0
  179. package/dist/components/compound/search-form/title.d.mts +16 -0
  180. package/dist/components/compound/search-form/title.d.mts.map +1 -0
  181. package/dist/components/compound/search-form/title.mjs +14 -0
  182. package/dist/components/compound/search-form/title.mjs.map +1 -0
  183. package/dist/components/compound/searches-catalog/active-filters.d.mts +26 -0
  184. package/dist/components/compound/searches-catalog/active-filters.d.mts.map +1 -0
  185. package/dist/components/compound/searches-catalog/active-filters.mjs +46 -0
  186. package/dist/components/compound/searches-catalog/active-filters.mjs.map +1 -0
  187. package/dist/components/compound/searches-catalog/card.d.mts +22 -0
  188. package/dist/components/compound/searches-catalog/card.d.mts.map +1 -0
  189. package/dist/components/compound/searches-catalog/card.mjs +70 -0
  190. package/dist/components/compound/searches-catalog/card.mjs.map +1 -0
  191. package/dist/components/compound/searches-catalog/category-filter.d.mts +29 -0
  192. package/dist/components/compound/searches-catalog/category-filter.d.mts.map +1 -0
  193. package/dist/components/compound/searches-catalog/category-filter.mjs +51 -0
  194. package/dist/components/compound/searches-catalog/category-filter.mjs.map +1 -0
  195. package/dist/components/compound/searches-catalog/column-filter.d.mts +31 -0
  196. package/dist/components/compound/searches-catalog/column-filter.d.mts.map +1 -0
  197. package/dist/components/compound/searches-catalog/column-filter.mjs +58 -0
  198. package/dist/components/compound/searches-catalog/column-filter.mjs.map +1 -0
  199. package/dist/components/compound/searches-catalog/column-filters.d.mts +15 -0
  200. package/dist/components/compound/searches-catalog/column-filters.d.mts.map +1 -0
  201. package/dist/components/compound/searches-catalog/column-filters.mjs +16 -0
  202. package/dist/components/compound/searches-catalog/column-filters.mjs.map +1 -0
  203. package/dist/components/compound/searches-catalog/empty.d.mts +22 -0
  204. package/dist/components/compound/searches-catalog/empty.d.mts.map +1 -0
  205. package/dist/components/compound/searches-catalog/empty.mjs +31 -0
  206. package/dist/components/compound/searches-catalog/empty.mjs.map +1 -0
  207. package/dist/components/compound/searches-catalog/index.d.mts +12 -0
  208. package/dist/components/compound/searches-catalog/index.mjs +14 -0
  209. package/dist/components/compound/searches-catalog/list.d.mts +19 -0
  210. package/dist/components/compound/searches-catalog/list.d.mts.map +1 -0
  211. package/dist/components/compound/searches-catalog/list.mjs +29 -0
  212. package/dist/components/compound/searches-catalog/list.mjs.map +1 -0
  213. package/dist/components/compound/searches-catalog/output-field-filter.d.mts +22 -0
  214. package/dist/components/compound/searches-catalog/output-field-filter.d.mts.map +1 -0
  215. package/dist/components/compound/searches-catalog/output-field-filter.mjs +22 -0
  216. package/dist/components/compound/searches-catalog/output-field-filter.mjs.map +1 -0
  217. package/dist/components/compound/searches-catalog/provider-filter.d.mts +22 -0
  218. package/dist/components/compound/searches-catalog/provider-filter.d.mts.map +1 -0
  219. package/dist/components/compound/searches-catalog/provider-filter.mjs +29 -0
  220. package/dist/components/compound/searches-catalog/provider-filter.mjs.map +1 -0
  221. package/dist/components/compound/searches-catalog/root.d.mts +33 -0
  222. package/dist/components/compound/searches-catalog/root.d.mts.map +1 -0
  223. package/dist/components/compound/searches-catalog/root.mjs +74 -0
  224. package/dist/components/compound/searches-catalog/root.mjs.map +1 -0
  225. package/dist/components/compound/searches-catalog/search-filter.d.mts +24 -0
  226. package/dist/components/compound/searches-catalog/search-filter.d.mts.map +1 -0
  227. package/dist/components/compound/searches-catalog/search-filter.mjs +46 -0
  228. package/dist/components/compound/searches-catalog/search-filter.mjs.map +1 -0
  229. package/dist/components/compound/searches-catalog/tag-filter.d.mts +22 -0
  230. package/dist/components/compound/searches-catalog/tag-filter.d.mts.map +1 -0
  231. package/dist/components/compound/searches-catalog/tag-filter.mjs +22 -0
  232. package/dist/components/compound/searches-catalog/tag-filter.mjs.map +1 -0
  233. package/dist/components/defaults/adapters/async-include-exclude-select-input.mjs +32 -0
  234. package/dist/components/defaults/adapters/async-include-exclude-select-input.mjs.map +1 -0
  235. package/dist/components/defaults/adapters/async-multi-select-input.mjs +26 -0
  236. package/dist/components/defaults/adapters/async-multi-select-input.mjs.map +1 -0
  237. package/dist/components/defaults/adapters/boolean-input.mjs +82 -0
  238. package/dist/components/defaults/adapters/boolean-input.mjs.map +1 -0
  239. package/dist/components/defaults/adapters/connector-input.mjs +94 -0
  240. package/dist/components/defaults/adapters/connector-input.mjs.map +1 -0
  241. package/dist/components/defaults/adapters/context-select-input.mjs +74 -0
  242. package/dist/components/defaults/adapters/context-select-input.mjs.map +1 -0
  243. package/dist/components/defaults/adapters/cursor-pagination-input.mjs +29 -0
  244. package/dist/components/defaults/adapters/cursor-pagination-input.mjs.map +1 -0
  245. package/dist/components/defaults/adapters/date-range-input.mjs +53 -0
  246. package/dist/components/defaults/adapters/date-range-input.mjs.map +1 -0
  247. package/dist/components/defaults/adapters/exact-range-input.mjs +75 -0
  248. package/dist/components/defaults/adapters/exact-range-input.mjs.map +1 -0
  249. package/dist/components/defaults/adapters/fields-select-input.mjs +25 -0
  250. package/dist/components/defaults/adapters/fields-select-input.mjs.map +1 -0
  251. package/dist/components/defaults/adapters/include-exclude-input.mjs +33 -0
  252. package/dist/components/defaults/adapters/include-exclude-input.mjs.map +1 -0
  253. package/dist/components/defaults/adapters/include-exclude-select-input.mjs +36 -0
  254. package/dist/components/defaults/adapters/include-exclude-select-input.mjs.map +1 -0
  255. package/dist/components/defaults/adapters/index.d.mts +11 -0
  256. package/dist/components/defaults/adapters/index.d.mts.map +1 -0
  257. package/dist/components/defaults/adapters/index.mjs +73 -0
  258. package/dist/components/defaults/adapters/index.mjs.map +1 -0
  259. package/dist/components/defaults/adapters/int-input.mjs +16 -0
  260. package/dist/components/defaults/adapters/int-input.mjs.map +1 -0
  261. package/dist/components/defaults/adapters/json-extraction-input.mjs +333 -0
  262. package/dist/components/defaults/adapters/json-extraction-input.mjs.map +1 -0
  263. package/dist/components/defaults/adapters/json-schema-input.mjs +30 -0
  264. package/dist/components/defaults/adapters/json-schema-input.mjs.map +1 -0
  265. package/dist/components/defaults/adapters/key-value-list-input.mjs +100 -0
  266. package/dist/components/defaults/adapters/key-value-list-input.mjs.map +1 -0
  267. package/dist/components/defaults/adapters/min-max-int-input.mjs +65 -0
  268. package/dist/components/defaults/adapters/min-max-int-input.mjs.map +1 -0
  269. package/dist/components/defaults/adapters/multi-create-input.mjs +32 -0
  270. package/dist/components/defaults/adapters/multi-create-input.mjs.map +1 -0
  271. package/dist/components/defaults/adapters/multi-select-input.mjs +26 -0
  272. package/dist/components/defaults/adapters/multi-select-input.mjs.map +1 -0
  273. package/dist/components/defaults/adapters/number-input.mjs +15 -0
  274. package/dist/components/defaults/adapters/number-input.mjs.map +1 -0
  275. package/dist/components/defaults/adapters/ordered-multi-create-input.mjs +43 -0
  276. package/dist/components/defaults/adapters/ordered-multi-create-input.mjs.map +1 -0
  277. package/dist/components/defaults/adapters/output-field-input.mjs +37 -0
  278. package/dist/components/defaults/adapters/output-field-input.mjs.map +1 -0
  279. package/dist/components/defaults/adapters/pipes-trigger-input.mjs +381 -0
  280. package/dist/components/defaults/adapters/pipes-trigger-input.mjs.map +1 -0
  281. package/dist/components/defaults/adapters/prompt-input.mjs +208 -0
  282. package/dist/components/defaults/adapters/prompt-input.mjs.map +1 -0
  283. package/dist/components/defaults/adapters/providers-input.mjs +23 -0
  284. package/dist/components/defaults/adapters/providers-input.mjs.map +1 -0
  285. package/dist/components/defaults/adapters/range-input.mjs +61 -0
  286. package/dist/components/defaults/adapters/range-input.mjs.map +1 -0
  287. package/dist/components/defaults/adapters/select-input.mjs +54 -0
  288. package/dist/components/defaults/adapters/select-input.mjs.map +1 -0
  289. package/dist/components/defaults/adapters/tagged-text-input.mjs +154 -0
  290. package/dist/components/defaults/adapters/tagged-text-input.mjs.map +1 -0
  291. package/dist/components/defaults/adapters/template-input.mjs +34 -0
  292. package/dist/components/defaults/adapters/template-input.mjs.map +1 -0
  293. package/dist/components/defaults/adapters/text-input.mjs +18 -0
  294. package/dist/components/defaults/adapters/text-input.mjs.map +1 -0
  295. package/dist/components/defaults/adapters/textarea-input.mjs +17 -0
  296. package/dist/components/defaults/adapters/textarea-input.mjs.map +1 -0
  297. package/dist/components/defaults/catalog/active-filter-pill.mjs +30 -0
  298. package/dist/components/defaults/catalog/active-filter-pill.mjs.map +1 -0
  299. package/dist/components/defaults/catalog/card-derived.d.mts +98 -0
  300. package/dist/components/defaults/catalog/card-derived.d.mts.map +1 -0
  301. package/dist/components/defaults/catalog/card-derived.mjs +172 -0
  302. package/dist/components/defaults/catalog/card-derived.mjs.map +1 -0
  303. package/dist/components/defaults/catalog/card-primitives.d.mts +81 -0
  304. package/dist/components/defaults/catalog/card-primitives.d.mts.map +1 -0
  305. package/dist/components/defaults/catalog/card-primitives.mjs +108 -0
  306. package/dist/components/defaults/catalog/card-primitives.mjs.map +1 -0
  307. package/dist/components/defaults/catalog/category-filter.d.mts +13 -0
  308. package/dist/components/defaults/catalog/category-filter.d.mts.map +1 -0
  309. package/dist/components/defaults/catalog/category-filter.mjs +28 -0
  310. package/dist/components/defaults/catalog/category-filter.mjs.map +1 -0
  311. package/dist/components/defaults/catalog/category-section.d.mts +39 -0
  312. package/dist/components/defaults/catalog/category-section.d.mts.map +1 -0
  313. package/dist/components/defaults/catalog/category-section.mjs +59 -0
  314. package/dist/components/defaults/catalog/category-section.mjs.map +1 -0
  315. package/dist/components/defaults/catalog/empty-state.mjs +20 -0
  316. package/dist/components/defaults/catalog/empty-state.mjs.map +1 -0
  317. package/dist/components/defaults/catalog/filter-select.d.mts +13 -0
  318. package/dist/components/defaults/catalog/filter-select.d.mts.map +1 -0
  319. package/dist/components/defaults/catalog/filter-select.mjs +45 -0
  320. package/dist/components/defaults/catalog/filter-select.mjs.map +1 -0
  321. package/dist/components/defaults/catalog/layout.mjs +53 -0
  322. package/dist/components/defaults/catalog/layout.mjs.map +1 -0
  323. package/dist/components/defaults/catalog/provider-avatars.d.mts +37 -0
  324. package/dist/components/defaults/catalog/provider-avatars.d.mts.map +1 -0
  325. package/dist/components/defaults/catalog/provider-avatars.mjs +98 -0
  326. package/dist/components/defaults/catalog/provider-avatars.mjs.map +1 -0
  327. package/dist/components/defaults/field-section-enumeration.mjs +32 -0
  328. package/dist/components/defaults/field-section-enumeration.mjs.map +1 -0
  329. package/dist/components/defaults/layout/field-wrapper.d.mts +13 -0
  330. package/dist/components/defaults/layout/field-wrapper.d.mts.map +1 -0
  331. package/dist/components/defaults/layout/field-wrapper.mjs +67 -0
  332. package/dist/components/defaults/layout/field-wrapper.mjs.map +1 -0
  333. package/dist/components/defaults/layout/form.mjs +21 -0
  334. package/dist/components/defaults/layout/form.mjs.map +1 -0
  335. package/dist/components/defaults/layout/group.d.mts +16 -0
  336. package/dist/components/defaults/layout/group.d.mts.map +1 -0
  337. package/dist/components/defaults/layout/group.mjs +87 -0
  338. package/dist/components/defaults/layout/group.mjs.map +1 -0
  339. package/dist/components/defaults/layout/section.d.mts +14 -0
  340. package/dist/components/defaults/layout/section.d.mts.map +1 -0
  341. package/dist/components/defaults/layout/section.mjs +39 -0
  342. package/dist/components/defaults/layout/section.mjs.map +1 -0
  343. package/dist/components/defaults/layout/submit-button.d.mts +9 -0
  344. package/dist/components/defaults/layout/submit-button.d.mts.map +1 -0
  345. package/dist/components/defaults/layout/submit-button.mjs +23 -0
  346. package/dist/components/defaults/layout/submit-button.mjs.map +1 -0
  347. package/dist/components/defaults/toggle-advanced-button.mjs +29 -0
  348. package/dist/components/defaults/toggle-advanced-button.mjs.map +1 -0
  349. package/dist/components/field-renderer.d.mts +14 -0
  350. package/dist/components/field-renderer.d.mts.map +1 -0
  351. package/dist/components/field-renderer.mjs +21 -0
  352. package/dist/components/field-renderer.mjs.map +1 -0
  353. package/dist/components/hover-info.mjs +30 -0
  354. package/dist/components/hover-info.mjs.map +1 -0
  355. package/dist/components/internal/LiquidEditor/ChipEditPopover.mjs +319 -0
  356. package/dist/components/internal/LiquidEditor/ChipEditPopover.mjs.map +1 -0
  357. package/dist/components/internal/LiquidEditor/LiquidEditor.mjs +208 -0
  358. package/dist/components/internal/LiquidEditor/LiquidEditor.mjs.map +1 -0
  359. package/dist/components/internal/LiquidEditor/UnifiedReferencePicker.mjs +240 -0
  360. package/dist/components/internal/LiquidEditor/UnifiedReferencePicker.mjs.map +1 -0
  361. package/dist/components/internal/combobox/include-exclude-combobox.mjs +368 -0
  362. package/dist/components/internal/combobox/include-exclude-combobox.mjs.map +1 -0
  363. package/dist/components/internal/combobox/suggest-combobox.mjs +294 -0
  364. package/dist/components/internal/combobox/suggest-combobox.mjs.map +1 -0
  365. package/dist/components/internal/field-legend.mjs +37 -0
  366. package/dist/components/internal/field-legend.mjs.map +1 -0
  367. package/dist/components/internal/form-level-errors.mjs +71 -0
  368. package/dist/components/internal/form-level-errors.mjs.map +1 -0
  369. package/dist/components/internal/icons.mjs +131 -0
  370. package/dist/components/internal/icons.mjs.map +1 -0
  371. package/dist/components/internal/multi-select-popover-trigger.mjs +26 -0
  372. package/dist/components/internal/multi-select-popover-trigger.mjs.map +1 -0
  373. package/dist/components/internal/schema-editor/SchemaEditor.mjs +468 -0
  374. package/dist/components/internal/schema-editor/SchemaEditor.mjs.map +1 -0
  375. package/dist/components/internal/schema-editor/generate-schema-rows.mjs +374 -0
  376. package/dist/components/internal/schema-editor/generate-schema-rows.mjs.map +1 -0
  377. package/dist/components/internal/schema-editor/schema-editor-context.mjs +32 -0
  378. package/dist/components/internal/schema-editor/schema-editor-context.mjs.map +1 -0
  379. package/dist/components/internal/schema-editor/schema-utils.mjs +249 -0
  380. package/dist/components/internal/schema-editor/schema-utils.mjs.map +1 -0
  381. package/dist/components/internal/suggestion-menu/suggestion-menu-utils.mjs +12 -0
  382. package/dist/components/internal/suggestion-menu/suggestion-menu-utils.mjs.map +1 -0
  383. package/dist/components/internal/suggestion-menu/suggestion-menu.mjs +151 -0
  384. package/dist/components/internal/suggestion-menu/suggestion-menu.mjs.map +1 -0
  385. package/dist/components/internal/tag-chip-decoration.mjs +180 -0
  386. package/dist/components/internal/tag-chip-decoration.mjs.map +1 -0
  387. package/dist/components/rich-text.mjs +42 -0
  388. package/dist/components/rich-text.mjs.map +1 -0
  389. package/dist/components/ui/badge.mjs +32 -0
  390. package/dist/components/ui/badge.mjs.map +1 -0
  391. package/dist/components/ui/button.d.mts +19 -0
  392. package/dist/components/ui/button.d.mts.map +1 -0
  393. package/dist/components/ui/button.mjs +47 -0
  394. package/dist/components/ui/button.mjs.map +1 -0
  395. package/dist/components/ui/combobox.mjs +103 -0
  396. package/dist/components/ui/combobox.mjs.map +1 -0
  397. package/dist/components/ui/input-group.mjs +30 -0
  398. package/dist/components/ui/input-group.mjs.map +1 -0
  399. package/dist/components/ui/input.mjs +17 -0
  400. package/dist/components/ui/input.mjs.map +1 -0
  401. package/dist/components/ui/label.mjs +17 -0
  402. package/dist/components/ui/label.mjs.map +1 -0
  403. package/dist/components/ui/popover.mjs +40 -0
  404. package/dist/components/ui/popover.mjs.map +1 -0
  405. package/dist/components/ui/select.mjs +92 -0
  406. package/dist/components/ui/select.mjs.map +1 -0
  407. package/dist/components/ui/switch.mjs +21 -0
  408. package/dist/components/ui/switch.mjs.map +1 -0
  409. package/dist/components/ui/table.mjs +56 -0
  410. package/dist/components/ui/table.mjs.map +1 -0
  411. package/dist/components/ui/textarea.mjs +15 -0
  412. package/dist/components/ui/textarea.mjs.map +1 -0
  413. package/dist/components/ui/tooltip.mjs +48 -0
  414. package/dist/components/ui/tooltip.mjs.map +1 -0
  415. package/dist/context/catalog-card-context.mjs +31 -0
  416. package/dist/context/catalog-card-context.mjs.map +1 -0
  417. package/dist/context/catalog-config-context.d.mts +43 -0
  418. package/dist/context/catalog-config-context.d.mts.map +1 -0
  419. package/dist/context/catalog-config-context.mjs +48 -0
  420. package/dist/context/catalog-config-context.mjs.map +1 -0
  421. package/dist/context/form-context.mjs +11 -0
  422. package/dist/context/form-context.mjs.map +1 -0
  423. package/dist/context/form-customization-context.d.mts +71 -0
  424. package/dist/context/form-customization-context.d.mts.map +1 -0
  425. package/dist/context/form-customization-context.mjs +114 -0
  426. package/dist/context/form-customization-context.mjs.map +1 -0
  427. package/dist/context/form-provider.d.mts +41 -0
  428. package/dist/context/form-provider.d.mts.map +1 -0
  429. package/dist/context/form-provider.mjs +53 -0
  430. package/dist/context/form-provider.mjs.map +1 -0
  431. package/dist/context/pipe-catalog-card-context.d.mts +17 -0
  432. package/dist/context/pipe-catalog-card-context.d.mts.map +1 -0
  433. package/dist/context/pipe-catalog-card-context.mjs +13 -0
  434. package/dist/context/pipe-catalog-card-context.mjs.map +1 -0
  435. package/dist/context/pipe-catalog-context.d.mts +26 -0
  436. package/dist/context/pipe-catalog-context.d.mts.map +1 -0
  437. package/dist/context/pipe-catalog-context.mjs +13 -0
  438. package/dist/context/pipe-catalog-context.mjs.map +1 -0
  439. package/dist/context/pipe-form-context.d.mts +25 -0
  440. package/dist/context/pipe-form-context.d.mts.map +1 -0
  441. package/dist/context/pipe-form-context.mjs +13 -0
  442. package/dist/context/pipe-form-context.mjs.map +1 -0
  443. package/dist/context/portal-container-context.d.mts +5 -0
  444. package/dist/context/portal-container-context.d.mts.map +1 -0
  445. package/dist/context/portal-container-context.mjs +15 -0
  446. package/dist/context/portal-container-context.mjs.map +1 -0
  447. package/dist/context/search-catalog-card-context.d.mts +16 -0
  448. package/dist/context/search-catalog-card-context.d.mts.map +1 -0
  449. package/dist/context/search-catalog-card-context.mjs +13 -0
  450. package/dist/context/search-catalog-card-context.mjs.map +1 -0
  451. package/dist/context/search-catalog-context.d.mts +20 -0
  452. package/dist/context/search-catalog-context.d.mts.map +1 -0
  453. package/dist/context/search-catalog-context.mjs +13 -0
  454. package/dist/context/search-catalog-context.mjs.map +1 -0
  455. package/dist/context/search-form-context.d.mts +25 -0
  456. package/dist/context/search-form-context.d.mts.map +1 -0
  457. package/dist/context/search-form-context.mjs +13 -0
  458. package/dist/context/search-form-context.mjs.map +1 -0
  459. package/dist/context/searches-catalog-card-context.d.mts +16 -0
  460. package/dist/context/searches-catalog-card-context.d.mts.map +1 -0
  461. package/dist/context/searches-catalog-card-context.mjs +13 -0
  462. package/dist/context/searches-catalog-card-context.mjs.map +1 -0
  463. package/dist/context/searches-catalog-context.d.mts +20 -0
  464. package/dist/context/searches-catalog-context.d.mts.map +1 -0
  465. package/dist/context/searches-catalog-context.mjs +13 -0
  466. package/dist/context/searches-catalog-context.mjs.map +1 -0
  467. package/dist/hooks/use-debounce.mjs +28 -0
  468. package/dist/hooks/use-debounce.mjs.map +1 -0
  469. package/dist/hooks/use-debounced-fn.mjs +47 -0
  470. package/dist/hooks/use-debounced-fn.mjs.map +1 -0
  471. package/dist/hooks/use-disclosure.mjs +35 -0
  472. package/dist/hooks/use-disclosure.mjs.map +1 -0
  473. package/dist/hooks/use-field-error.d.mts +11 -0
  474. package/dist/hooks/use-field-error.d.mts.map +1 -0
  475. package/dist/hooks/use-field-error.mjs +23 -0
  476. package/dist/hooks/use-field-error.mjs.map +1 -0
  477. package/dist/hooks/use-floating-element.mjs +45 -0
  478. package/dist/hooks/use-floating-element.mjs.map +1 -0
  479. package/dist/hooks/use-form-core.d.mts +16 -0
  480. package/dist/hooks/use-form-core.d.mts.map +1 -0
  481. package/dist/hooks/use-form-core.mjs +241 -0
  482. package/dist/hooks/use-form-core.mjs.map +1 -0
  483. package/dist/hooks/use-jsonata-preview.mjs +38 -0
  484. package/dist/hooks/use-jsonata-preview.mjs.map +1 -0
  485. package/dist/hooks/use-menu-navigation.mjs +86 -0
  486. package/dist/hooks/use-menu-navigation.mjs.map +1 -0
  487. package/dist/hooks/use-pipe-catalog-table.d.mts +47 -0
  488. package/dist/hooks/use-pipe-catalog-table.d.mts.map +1 -0
  489. package/dist/hooks/use-pipe-catalog-table.mjs +170 -0
  490. package/dist/hooks/use-pipe-catalog-table.mjs.map +1 -0
  491. package/dist/hooks/use-pipe-form.d.mts +31 -0
  492. package/dist/hooks/use-pipe-form.d.mts.map +1 -0
  493. package/dist/hooks/use-pipe-form.mjs +65 -0
  494. package/dist/hooks/use-pipe-form.mjs.map +1 -0
  495. package/dist/hooks/use-search-catalog-table.d.mts +40 -0
  496. package/dist/hooks/use-search-catalog-table.d.mts.map +1 -0
  497. package/dist/hooks/use-search-catalog-table.mjs +161 -0
  498. package/dist/hooks/use-search-catalog-table.mjs.map +1 -0
  499. package/dist/hooks/use-search-form.d.mts +17 -0
  500. package/dist/hooks/use-search-form.d.mts.map +1 -0
  501. package/dist/hooks/use-search-form.mjs +58 -0
  502. package/dist/hooks/use-search-form.mjs.map +1 -0
  503. package/dist/hooks/use-searches-catalog-table.d.mts +40 -0
  504. package/dist/hooks/use-searches-catalog-table.d.mts.map +1 -0
  505. package/dist/hooks/use-searches-catalog-table.mjs +161 -0
  506. package/dist/hooks/use-searches-catalog-table.mjs.map +1 -0
  507. package/dist/index.d.mts +96 -0
  508. package/dist/index.mjs +98 -0
  509. package/dist/lib/utils.mjs +11 -0
  510. package/dist/lib/utils.mjs.map +1 -0
  511. package/dist/styles/pipe0-form.css +3785 -0
  512. package/dist/types/adapters.d.mts +107 -0
  513. package/dist/types/adapters.d.mts.map +1 -0
  514. package/dist/types/catalog-adapters.d.mts +122 -0
  515. package/dist/types/catalog-adapters.d.mts.map +1 -0
  516. package/dist/types/field-handle.d.mts +3 -0
  517. package/dist/types/field-props.d.mts +285 -0
  518. package/dist/types/field-props.d.mts.map +1 -0
  519. package/dist/types/form-customization.d.mts +25 -0
  520. package/dist/types/form-customization.d.mts.map +1 -0
  521. package/dist/types/form-handle.d.mts +23 -0
  522. package/dist/types/form-handle.d.mts.map +1 -0
  523. package/dist/utils/build-section-handlers.mjs +419 -0
  524. package/dist/utils/build-section-handlers.mjs.map +1 -0
  525. package/dist/utils/catalog-helpers.d.mts +12 -0
  526. package/dist/utils/catalog-helpers.d.mts.map +1 -0
  527. package/dist/utils/catalog-helpers.mjs +35 -0
  528. package/dist/utils/catalog-helpers.mjs.map +1 -0
  529. package/dist/utils/generate-random-string.mjs +11 -0
  530. package/dist/utils/generate-random-string.mjs.map +1 -0
  531. package/dist/utils/merge-form-stores.mjs +14 -0
  532. package/dist/utils/merge-form-stores.mjs.map +1 -0
  533. package/dist/utils/object-path.mjs +72 -0
  534. package/dist/utils/object-path.mjs.map +1 -0
  535. package/dist/utils/render-slot.d.mts +44 -0
  536. package/dist/utils/render-slot.d.mts.map +1 -0
  537. package/dist/utils/render-slot.mjs +30 -0
  538. package/dist/utils/render-slot.mjs.map +1 -0
  539. package/dist/widgets/avatar-group.d.mts +36 -0
  540. package/dist/widgets/avatar-group.d.mts.map +1 -0
  541. package/dist/widgets/avatar-group.mjs +114 -0
  542. package/dist/widgets/avatar-group.mjs.map +1 -0
  543. package/dist/widgets/emoji-glyph.d.mts +11 -0
  544. package/dist/widgets/emoji-glyph.d.mts.map +1 -0
  545. package/dist/widgets/emoji-glyph.mjs +13 -0
  546. package/dist/widgets/emoji-glyph.mjs.map +1 -0
  547. package/dist/widgets/field-type-badge.d.mts +13 -0
  548. package/dist/widgets/field-type-badge.d.mts.map +1 -0
  549. package/dist/widgets/field-type-badge.mjs +30 -0
  550. package/dist/widgets/field-type-badge.mjs.map +1 -0
  551. package/dist/widgets/icon-glyph.d.mts +16 -0
  552. package/dist/widgets/icon-glyph.d.mts.map +1 -0
  553. package/dist/widgets/icon-glyph.mjs +59 -0
  554. package/dist/widgets/icon-glyph.mjs.map +1 -0
  555. package/dist/widgets/index.d.mts +9 -0
  556. package/dist/widgets/index.mjs +11 -0
  557. package/dist/widgets/logo-url.d.mts +17 -0
  558. package/dist/widgets/logo-url.d.mts.map +1 -0
  559. package/dist/widgets/logo-url.mjs +17 -0
  560. package/dist/widgets/logo-url.mjs.map +1 -0
  561. package/dist/widgets/pricing-badge.d.mts +11 -0
  562. package/dist/widgets/pricing-badge.d.mts.map +1 -0
  563. package/dist/widgets/pricing-badge.mjs +13 -0
  564. package/dist/widgets/pricing-badge.mjs.map +1 -0
  565. package/dist/widgets/provider-logo.d.mts +16 -0
  566. package/dist/widgets/provider-logo.d.mts.map +1 -0
  567. package/dist/widgets/provider-logo.mjs +20 -0
  568. package/dist/widgets/provider-logo.mjs.map +1 -0
  569. package/dist/widgets/widget-strip.d.mts +16 -0
  570. package/dist/widgets/widget-strip.d.mts.map +1 -0
  571. package/dist/widgets/widget-strip.mjs +42 -0
  572. package/dist/widgets/widget-strip.mjs.map +1 -0
  573. package/dist/widgets/widget-view.d.mts +14 -0
  574. package/dist/widgets/widget-view.d.mts.map +1 -0
  575. package/dist/widgets/widget-view.mjs +36 -0
  576. package/dist/widgets/widget-view.mjs.map +1 -0
  577. package/package.json +82 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-select-popover-trigger.mjs","names":[],"sources":["../../../src/components/internal/multi-select-popover-trigger.tsx"],"sourcesContent":["import type { WidgetsByKind } from \"@pipe0/base\";\nimport { type RankingInfo, rankItem } from \"@tanstack/match-sorter-utils\";\nimport type { KeyboardEvent, ReactNode, Ref } from \"react\";\nimport { cn } from \"../../lib/utils.js\";\n\nexport interface PayloadOption {\n value: string;\n label: string;\n widgets?: WidgetsByKind;\n}\n\nexport type RankedOption = PayloadOption & { ranking: RankingInfo };\n\n/**\n * Rank-filter an option list using match-sorter-utils.\n * Returns options sorted by descending rank, empty `input` returns all options\n * (match-sorter assigns all passing).\n */\nexport function filterOptions(options: PayloadOption[], input: string): PayloadOption[] {\n if (!input) return options;\n return options\n .map((option) => {\n const labelRank = rankItem(option.label, input);\n const valueRank = rankItem(option.value, input);\n const ranking = labelRank.rank > valueRank.rank ? labelRank : valueRank;\n return ranking.passed ? { ...option, ranking } : null;\n })\n .filter((o): o is RankedOption => o !== null)\n .sort((a, b) => b.ranking.rank - a.ranking.rank);\n}\n\ninterface MultiSelectPopoverTriggerProps {\n createdValues: string[];\n labelFor?: (value: string) => string;\n onRemove: (item: string) => void;\n onAdd?: (item: string) => void;\n onFocus?: () => void;\n inputValue: string;\n onInputValueChange: (v: string) => void;\n placeholder?: string;\n inputRef: Ref<HTMLInputElement>;\n disableSearch?: boolean;\n ariaInvalid?: boolean;\n disabled?: boolean;\n allowCreate?: boolean;\n /**\n * When provided the trigger renders the chip row only and delegates the\n * search input to the caller (used when embedding inside `<Command>`).\n */\n children?: ReactNode;\n}\n\n/**\n * Chip row + embedded search input that triggers a Popover/Command.\n *\n * - Click anywhere to focus the embedded input and open the popover.\n * - Backspace on empty input removes the last chip.\n * - Enter adds the trimmed input (when `allowCreate` + `onAdd` provided).\n */\nexport function MultiSelectPopoverTrigger({\n createdValues,\n labelFor,\n onRemove,\n onAdd,\n onFocus,\n inputValue,\n onInputValueChange,\n placeholder,\n inputRef,\n disableSearch = false,\n ariaInvalid,\n disabled,\n allowCreate = false,\n}: MultiSelectPopoverTriggerProps) {\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Backspace\" && createdValues.length > 0 && inputValue === \"\") {\n e.preventDefault();\n onRemove(createdValues[createdValues.length - 1]);\n return;\n }\n if (e.key === \"Enter\" && allowCreate && onAdd) {\n const trimmed = inputValue.trim();\n if (trimmed) {\n e.preventDefault();\n onAdd(trimmed);\n }\n }\n };\n\n return (\n <div\n role=\"combobox\"\n aria-invalid={ariaInvalid || undefined}\n aria-disabled={disabled || undefined}\n className={cn(\n \"pz:flex pz:flex-wrap pz:items-center pz:gap-1 pz:rounded-md pz:border pz:border-input pz:bg-transparent pz:min-h-9 pz:px-2 pz:py-1 pz:shadow-xs pz:cursor-text\",\n \"pz:focus-within:ring-4 pz:focus-within:ring-ring/10 pz:focus-within:outline-1 pz:focus-within:outline-ring/50\",\n \"pz:aria-invalid:border-destructive/60 pz:aria-invalid:ring-destructive/20\",\n disabled && \"pz:opacity-60 pz:cursor-not-allowed\",\n )}\n onMouseDown={(e) => {\n // avoid stealing focus from child remove buttons\n if ((e.target as HTMLElement).closest(\"button\")) return;\n if (disabled) return;\n onFocus?.();\n // Defer to the next tick so popover trigger registers the click first.\n setTimeout(() => {\n if (inputRef && \"current\" in inputRef && inputRef.current !== null) {\n inputRef.current.focus();\n }\n }, 0);\n }}\n >\n {createdValues.map((item) => (\n <span\n key={item}\n className=\"pz:inline-flex pz:items-center pz:gap-1 pz:rounded-sm pz:bg-secondary pz:text-secondary-foreground pz:px-2 pz:py-0.5 pz:text-xs\"\n >\n {labelFor ? labelFor(item) : item}\n <button\n type=\"button\"\n className=\"pz:opacity-60 pz:hover:opacity-100 pz:cursor-pointer\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove(item);\n }}\n aria-label={`Remove ${labelFor ? labelFor(item) : item}`}\n >\n ×\n </button>\n </span>\n ))}\n {!disableSearch && (\n <input\n ref={inputRef}\n type=\"text\"\n className=\"pz:flex-1 pz:min-w-[80px] pz:bg-transparent pz:text-sm pz:outline-none pz:placeholder:text-muted-foreground\"\n value={inputValue}\n onChange={(e) => onInputValueChange(e.target.value)}\n onFocus={onFocus}\n onKeyDown={handleKeyDown}\n placeholder={createdValues.length === 0 ? placeholder : undefined}\n disabled={disabled}\n />\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAkBA,SAAgB,cAAc,SAA0B,OAAgC;AACtF,KAAI,CAAC,MAAO,QAAO;AACnB,QAAO,QACJ,KAAK,WAAW;EACf,MAAM,YAAY,SAAS,OAAO,OAAO,MAAM;EAC/C,MAAM,YAAY,SAAS,OAAO,OAAO,MAAM;EAC/C,MAAM,UAAU,UAAU,OAAO,UAAU,OAAO,YAAY;AAC9D,SAAO,QAAQ,SAAS;GAAE,GAAG;GAAQ;GAAS,GAAG;GACjD,CACD,QAAQ,MAAyB,MAAM,KAAK,CAC5C,MAAM,GAAG,MAAM,EAAE,QAAQ,OAAO,EAAE,QAAQ,KAAK"}
@@ -0,0 +1,468 @@
1
+ import { cn } from "../../../lib/utils.mjs";
2
+ import { Button } from "../../ui/button.mjs";
3
+ import { IconChevronDown, IconLock, IconPencil, IconPlus, IconTrash } from "../icons.mjs";
4
+ import { Popover, PopoverContent, PopoverTrigger } from "../../ui/popover.mjs";
5
+ import { addPlaceholderToPath, addPlaceholderToSchema, addRequiredToProperty, changePropertyName, changeType, findComposedKey, getPathProperty, isArraySchema, isComposedSchema, isNonArraySchemaObject, isObjectSchema, isSimpleSchema, moveUpLevel, removePathFromSchema, removeRequiredForProperty, schemaInputRegex } from "./schema-utils.mjs";
6
+ import { generateSchemaRows } from "./generate-schema-rows.mjs";
7
+ import { SchemaEditorContextProvider, useSchemaEditorContext } from "./schema-editor-context.mjs";
8
+ import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from "react";
9
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
+ import { useForm } from "react-hook-form";
11
+ import { Command } from "cmdk";
12
+
13
+ //#region src/components/internal/schema-editor/SchemaEditor.tsx
14
+ function InlineIconButton({ icon, children, ...rest }) {
15
+ return /* @__PURE__ */ jsxs(Button, {
16
+ type: "button",
17
+ size: "icon",
18
+ variant: "ghost",
19
+ className: "pz:size-5",
20
+ ...rest,
21
+ children: [icon, /* @__PURE__ */ jsx("span", {
22
+ className: "pz:sr-only",
23
+ children: children ?? "Action"
24
+ })]
25
+ });
26
+ }
27
+ function AddButton(props) {
28
+ return /* @__PURE__ */ jsx(InlineIconButton, {
29
+ icon: /* @__PURE__ */ jsx(IconPlus, {
30
+ width: 12,
31
+ height: 12
32
+ }),
33
+ ...props,
34
+ children: "Add"
35
+ });
36
+ }
37
+ function EditButton(props) {
38
+ return /* @__PURE__ */ jsx(InlineIconButton, {
39
+ icon: /* @__PURE__ */ jsx(IconPencil, {
40
+ width: 12,
41
+ height: 12
42
+ }),
43
+ ...props,
44
+ children: "Edit"
45
+ });
46
+ }
47
+ function DeleteButton(props) {
48
+ return /* @__PURE__ */ jsx(InlineIconButton, {
49
+ icon: /* @__PURE__ */ jsx(IconTrash, {
50
+ width: 12,
51
+ height: 12
52
+ }),
53
+ ...props,
54
+ children: "Delete"
55
+ });
56
+ }
57
+ function SelectTypePopover({ children, typeOptions, onSelect, isDisabled }) {
58
+ const [open, setOpen] = useState(false);
59
+ if (isDisabled) return children;
60
+ return /* @__PURE__ */ jsxs(Popover, {
61
+ open,
62
+ onOpenChange: setOpen,
63
+ children: [/* @__PURE__ */ jsx(PopoverTrigger, { render: children }), /* @__PURE__ */ jsx(PopoverContent, {
64
+ align: "start",
65
+ sideOffset: 4,
66
+ className: "pz:w-auto pz:min-w-[140px] pz:p-0",
67
+ children: /* @__PURE__ */ jsx(Command, {
68
+ className: "pz:flex pz:flex-col pz:p-1",
69
+ children: /* @__PURE__ */ jsx(Command.List, {
70
+ className: "pz:flex pz:flex-col pz:gap-0.5 pz:max-h-[240px] pz:overflow-y-auto",
71
+ children: /* @__PURE__ */ jsx(Command.Group, { children: typeOptions.propertyTypes.map((t) => /* @__PURE__ */ jsx(Command.Item, {
72
+ className: "pz:flex pz:w-full pz:items-center pz:rounded-sm pz:px-2 pz:py-1.5 pz:text-sm pz:cursor-pointer pz:hover:bg-accent pz:hover:text-accent-foreground pz:data-[selected=true]:bg-accent pz:data-[selected=true]:text-accent-foreground",
73
+ onSelect: () => {
74
+ onSelect(t);
75
+ setOpen(false);
76
+ },
77
+ children: t
78
+ }, t)) })
79
+ })
80
+ })
81
+ })]
82
+ });
83
+ }
84
+ function getTagColorClass(type) {
85
+ switch (type) {
86
+ case "string": return "pz:text-blue-700 pz:dark:text-blue-400";
87
+ case "object": return "pz:text-purple-700 pz:dark:text-purple-400";
88
+ case "oneOf": return "pz:text-orange-700 pz:dark:text-orange-400";
89
+ case "anyOf": return "pz:text-yellow-700 pz:dark:text-yellow-400";
90
+ case "allOf": return "pz:text-red-700 pz:dark:text-red-400";
91
+ case "array": return "pz:text-indigo-700 pz:dark:text-indigo-400";
92
+ case "integer": return "pz:text-green-700 pz:dark:text-green-400";
93
+ case "number": return "pz:text-cyan-700 pz:dark:text-cyan-400";
94
+ case "boolean": return "pz:text-amber-700 pz:dark:text-amber-400";
95
+ case "$ref": return "pz:text-sky-700 pz:dark:text-sky-400";
96
+ default: return "pz:text-gray-700 pz:dark:text-gray-400";
97
+ }
98
+ }
99
+ const Tag = forwardRef(function Tag({ children, className, onAdd, isDisabled, isReadOnly, type, innerTag, ...rest }, ref) {
100
+ const colorClass = isDisabled ? "pz:text-muted-foreground" : getTagColorClass(type);
101
+ const interactive = !isDisabled && !isReadOnly;
102
+ return /* @__PURE__ */ jsxs("div", {
103
+ className: "pz:inline-flex pz:items-center",
104
+ title: "Open type options",
105
+ children: [
106
+ /* @__PURE__ */ jsxs("div", {
107
+ ref,
108
+ className: cn("pz:inline-flex pz:items-center pz:gap-[2px] pz:rounded-md pz:px-1 pz:font-mono", colorClass, interactive ? "pz:cursor-pointer pz:hover:bg-accent pz:hover:underline" : "pz:cursor-default", className),
109
+ ...rest,
110
+ children: [children, innerTag && /* @__PURE__ */ jsx("span", {
111
+ className: "pz:mx-0.5",
112
+ children: "["
113
+ })]
114
+ }),
115
+ innerTag,
116
+ innerTag && /* @__PURE__ */ jsx("span", {
117
+ className: cn(colorClass),
118
+ children: "]"
119
+ }),
120
+ onAdd && interactive && /* @__PURE__ */ jsx(AddButton, {
121
+ onClick: onAdd,
122
+ title: "Add property"
123
+ })
124
+ ]
125
+ });
126
+ });
127
+ function useChangeType(path, rootSchema, onChange) {
128
+ return useCallback((type) => {
129
+ onChange(changeType(structuredClone(rootSchema), path, type));
130
+ }, [
131
+ path,
132
+ rootSchema,
133
+ onChange
134
+ ]);
135
+ }
136
+ function ExpandChevron({ isDisabled }) {
137
+ if (isDisabled) return null;
138
+ return /* @__PURE__ */ jsx(IconChevronDown, {
139
+ width: 11,
140
+ height: 11
141
+ });
142
+ }
143
+ function SimpleTag({ schema, path, typeOptions, isDisabled, isReadOnly, rootSchema, onChange }) {
144
+ const onSelect = useChangeType(path, rootSchema, onChange);
145
+ const label = schema.type === "string" && schema.enum?.length ? `enum(${schema.enum.slice(0, 2).map(String).join(" | ")}${schema.enum.length > 2 ? ` | +${schema.enum.length - 2} more` : ""})` : String(schema.type ?? "any");
146
+ return /* @__PURE__ */ jsx(SelectTypePopover, {
147
+ typeOptions,
148
+ onSelect,
149
+ isDisabled: isDisabled || isReadOnly,
150
+ children: /* @__PURE__ */ jsxs(Tag, {
151
+ isDisabled,
152
+ isReadOnly,
153
+ type: String(schema.type ?? "null"),
154
+ children: [/* @__PURE__ */ jsx("span", { children: label }), !isReadOnly && /* @__PURE__ */ jsx(ExpandChevron, { isDisabled })]
155
+ })
156
+ });
157
+ }
158
+ function ObjectTag({ path, typeOptions, isDisabled, isReadOnly, rootSchema, onChange }) {
159
+ const [, dispatch] = useSchemaEditorContext();
160
+ const onSelect = useChangeType(path, rootSchema, onChange);
161
+ const isAnyObject = useMemo(() => {
162
+ const property = getPathProperty(rootSchema, path);
163
+ if (!isObjectSchema(property)) return false;
164
+ return !property.properties;
165
+ }, [path, rootSchema]);
166
+ const handleAdd = () => {
167
+ const property = getPathProperty(rootSchema, path);
168
+ if (!isNonArraySchemaObject(property)) return;
169
+ if (Object.keys(property.properties || {}).some((k) => k.startsWith("%%%"))) return;
170
+ const [newSchema, placeholderId] = addPlaceholderToPath(rootSchema, path);
171
+ if (placeholderId) dispatch({
172
+ type: "SET_LATEST_ADDED_PLACEHOLDER",
173
+ payload: placeholderId
174
+ });
175
+ onChange(newSchema);
176
+ };
177
+ return /* @__PURE__ */ jsx(SelectTypePopover, {
178
+ typeOptions,
179
+ onSelect,
180
+ isDisabled: isDisabled || isReadOnly,
181
+ children: /* @__PURE__ */ jsxs(Tag, {
182
+ onAdd: handleAdd,
183
+ isDisabled,
184
+ isReadOnly,
185
+ type: "object",
186
+ children: [/* @__PURE__ */ jsx("span", { children: isAnyObject ? "AnyObject" : "object" }), !isReadOnly && /* @__PURE__ */ jsx(ExpandChevron, { isDisabled })]
187
+ })
188
+ });
189
+ }
190
+ function ArrayTag({ schema, path, typeOptions, isDisabled, isReadOnly, rootSchema, onChange }) {
191
+ const onSelect = useChangeType(path, rootSchema, onChange);
192
+ const innerTypeOptions = typeOptions.innerArrayTypeOptions;
193
+ if (!innerTypeOptions) throw new Error("ArrayTag has no innerArrayTypeOptions");
194
+ const childPath = path === "" ? "items" : path + ".items";
195
+ const itemsSchema = schema.items;
196
+ return /* @__PURE__ */ jsx(SelectTypePopover, {
197
+ typeOptions,
198
+ onSelect,
199
+ isDisabled: isDisabled || isReadOnly,
200
+ children: /* @__PURE__ */ jsxs(Tag, {
201
+ isDisabled,
202
+ isReadOnly,
203
+ type: "array",
204
+ innerTag: itemsSchema ? /* @__PURE__ */ jsx(RootTag, {
205
+ schema: itemsSchema,
206
+ path: childPath,
207
+ typeOptions: {
208
+ ...innerTypeOptions,
209
+ innerArrayTypeOptions: innerTypeOptions
210
+ },
211
+ onChange,
212
+ isDisabled,
213
+ isReadOnly,
214
+ rootSchema
215
+ }) : void 0,
216
+ children: [/* @__PURE__ */ jsx("span", { children: "array" }), !isReadOnly && /* @__PURE__ */ jsx(ExpandChevron, { isDisabled })]
217
+ })
218
+ });
219
+ }
220
+ function ComposedTag({ schema, path, typeOptions, isDisabled, isReadOnly, rootSchema, onChange }) {
221
+ const composedKey = useMemo(() => findComposedKey(schema), [schema]);
222
+ const onSelect = useChangeType(path, rootSchema, onChange);
223
+ const handleAdd = () => {
224
+ const [newSchema] = addPlaceholderToPath(rootSchema, path);
225
+ onChange(newSchema);
226
+ };
227
+ return /* @__PURE__ */ jsx(SelectTypePopover, {
228
+ typeOptions,
229
+ onSelect,
230
+ isDisabled: isDisabled || isReadOnly,
231
+ children: /* @__PURE__ */ jsxs(Tag, {
232
+ onAdd: handleAdd,
233
+ isDisabled,
234
+ isReadOnly,
235
+ type: composedKey,
236
+ children: [/* @__PURE__ */ jsx("span", { children: composedKey }), !isReadOnly && /* @__PURE__ */ jsx(ExpandChevron, { isDisabled })]
237
+ })
238
+ });
239
+ }
240
+ function RootTag(props) {
241
+ if (isArraySchema(props.schema)) return /* @__PURE__ */ jsx(ArrayTag, { ...props });
242
+ if (isSimpleSchema(props.schema)) return /* @__PURE__ */ jsx(SimpleTag, { ...props });
243
+ if (isObjectSchema(props.schema)) return /* @__PURE__ */ jsx(ObjectTag, { ...props });
244
+ if (isComposedSchema(props.schema)) return /* @__PURE__ */ jsx(ComposedTag, { ...props });
245
+ return /* @__PURE__ */ jsx(SimpleTag, { ...props });
246
+ }
247
+ function renderTag(rowType, props) {
248
+ switch (rowType) {
249
+ case "simple-row": return /* @__PURE__ */ jsx(SimpleTag, { ...props });
250
+ case "composed-row": return /* @__PURE__ */ jsx(ComposedTag, { ...props });
251
+ case "array-row": return /* @__PURE__ */ jsx(ArrayTag, { ...props });
252
+ case "object-row": return /* @__PURE__ */ jsx(ObjectTag, { ...props });
253
+ default: return /* @__PURE__ */ jsx(SimpleTag, { ...props });
254
+ }
255
+ }
256
+ function PropertyNameInput({ className, ref, ...props }) {
257
+ return /* @__PURE__ */ jsx("input", {
258
+ ref,
259
+ className: cn("pz:flex pz:w-20 pz:bg-background pz:text-foreground pz:outline-none pz:placeholder:text-muted-foreground pz:disabled:cursor-not-allowed pz:disabled:opacity-50", className),
260
+ ...props
261
+ });
262
+ }
263
+ function RowPropertyName({ row, onChange, handleRemove, isReadOnly, isDisabled }) {
264
+ const [isEditing, setIsEditing] = useState(() => row.propertyName.startsWith("%%%"));
265
+ const inputRef = useRef(null);
266
+ const submitButtonRef = useRef(null);
267
+ const [, dispatch] = useSchemaEditorContext();
268
+ const { register, handleSubmit } = useForm({ defaultValues: { propertyName: row.propertyName && !row.propertyName.startsWith("%%%") ? row.propertyName : "" } });
269
+ const onSubmit = (data, submitMode) => {
270
+ try {
271
+ if (data.propertyName === "") return handleRemove();
272
+ let newSchema = changePropertyName(row.rootSchema, row.path, data.propertyName);
273
+ if (row.propertyName.startsWith("%%%")) newSchema = addRequiredToProperty(newSchema, moveUpLevel(row.path) + `.${data.propertyName}`);
274
+ setIsEditing(false);
275
+ if (submitMode === "enter") {
276
+ const { schema, placeholderId } = addPlaceholderToSchema({
277
+ schema: newSchema,
278
+ path: moveUpLevel(moveUpLevel(row.path))
279
+ });
280
+ newSchema = schema;
281
+ if (placeholderId) dispatch({
282
+ type: "SET_LATEST_ADDED_PLACEHOLDER",
283
+ payload: placeholderId
284
+ });
285
+ }
286
+ onChange(newSchema);
287
+ } catch {}
288
+ };
289
+ const { ref, ...registerValues } = register("propertyName", { pattern: {
290
+ value: schemaInputRegex.propertyName.expression,
291
+ message: schemaInputRegex.propertyName.message
292
+ } });
293
+ const curriedSubmit = (submitMode) => handleSubmit((v) => onSubmit(v, submitMode));
294
+ const handleOnBlur = () => {
295
+ submitButtonRef.current?.click();
296
+ };
297
+ const showInput = isEditing;
298
+ const showText = row.propertyName && !isEditing;
299
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs("span", {
300
+ "aria-hidden": !showInput,
301
+ className: cn("pz:inline-flex", { "pz:sr-only": !showInput }),
302
+ children: [/* @__PURE__ */ jsxs("div", {
303
+ role: "form",
304
+ onKeyDown: async (e) => {
305
+ if (e.currentTarget.contains(document.activeElement) && e.code === "Enter") {
306
+ e.preventDefault();
307
+ e.stopPropagation();
308
+ await curriedSubmit("enter")();
309
+ }
310
+ },
311
+ children: [/* @__PURE__ */ jsx(PropertyNameInput, {
312
+ id: "id-" + row.propertyName.slice(3),
313
+ autoComplete: "off",
314
+ placeholder: "name",
315
+ ...registerValues,
316
+ ref: (e) => {
317
+ ref(e);
318
+ inputRef.current = e;
319
+ },
320
+ onBlur: handleOnBlur
321
+ }), /* @__PURE__ */ jsx("button", {
322
+ type: "button",
323
+ onClick: () => curriedSubmit("blur")(),
324
+ className: "pz:sr-only",
325
+ ref: submitButtonRef,
326
+ children: "Submit"
327
+ })]
328
+ }), /* @__PURE__ */ jsx("span", { children: ":\xA0\xA0\xA0" })]
329
+ }), /* @__PURE__ */ jsxs("span", {
330
+ "aria-hidden": !showText,
331
+ className: cn("pz:flex pz:items-center pz:gap-1", { "pz:sr-only": !showText }),
332
+ children: [
333
+ /* @__PURE__ */ jsx("span", {
334
+ className: cn("pz:whitespace-nowrap", isDisabled ? "pz:text-muted-foreground" : "pz:text-foreground"),
335
+ children: row.propertyName
336
+ }),
337
+ !isReadOnly && !isDisabled && /* @__PURE__ */ jsx(EditButton, {
338
+ onClick: () => {
339
+ setIsEditing(true);
340
+ setTimeout(() => inputRef.current?.focus(), 0);
341
+ },
342
+ title: "Edit name"
343
+ }),
344
+ /* @__PURE__ */ jsx("span", { children: ":\xA0" })
345
+ ]
346
+ })] });
347
+ }
348
+ function RequiredTag({ row, onChange }) {
349
+ return /* @__PURE__ */ jsx(InlineIconButton, {
350
+ icon: /* @__PURE__ */ jsx(IconLock, {
351
+ width: 12,
352
+ height: 12
353
+ }),
354
+ onClick: () => onChange(removeRequiredForProperty(row.rootSchema, row.path)),
355
+ title: "Make optional"
356
+ });
357
+ }
358
+ function RequiredToggle({ row, onChange }) {
359
+ return /* @__PURE__ */ jsx(Button, {
360
+ type: "button",
361
+ variant: "ghost",
362
+ className: "pz:h-5 pz:px-1.5 pz:font-normal pz:text-muted-foreground",
363
+ onClick: () => onChange(addRequiredToProperty(row.rootSchema, row.path)),
364
+ title: "Make required",
365
+ children: "or null"
366
+ });
367
+ }
368
+ function Row({ row, onChange, isReadOnly }) {
369
+ const handleRemove = useCallback(() => {
370
+ let newSchema = removeRequiredForProperty(row.rootSchema, row.path);
371
+ newSchema = removePathFromSchema(newSchema, row.path);
372
+ onChange(newSchema);
373
+ }, [
374
+ onChange,
375
+ row.rootSchema,
376
+ row.path
377
+ ]);
378
+ const isDisabled = row.isDisabled;
379
+ const isPlaceholder = row.propertyName?.startsWith("%%%");
380
+ const showRequiredToggle = !row.isRequired && !row.hideRequiredToggle && !isDisabled && !isPlaceholder && !isReadOnly;
381
+ const showOptionalIndicator = !row.isRequired && !row.hideRequiredToggle && !isDisabled && !isPlaceholder && isReadOnly;
382
+ const showRequiredTag = row.isRequired && !row.hideRequiredToggle && !isDisabled && !isReadOnly;
383
+ return /* @__PURE__ */ jsxs("div", {
384
+ className: "pz:schema-row pz:flex pz:items-center pz:gap-0 pz:text-sm",
385
+ children: [
386
+ /* @__PURE__ */ jsx("span", {
387
+ className: "pz:whitespace-pre pz:font-mono pz:text-sm pz:font-thin pz:text-border",
388
+ children: row.prefix
389
+ }),
390
+ /* @__PURE__ */ jsxs("div", {
391
+ className: "pz:flex pz:items-center",
392
+ children: [row.propertyName && /* @__PURE__ */ jsx(RowPropertyName, {
393
+ row,
394
+ onChange,
395
+ handleRemove,
396
+ isReadOnly,
397
+ isDisabled
398
+ }), renderTag(row.rowType, {
399
+ schema: row.schema,
400
+ path: row.path,
401
+ typeOptions: row.typeOptions,
402
+ isDisabled: row.isDisabled,
403
+ isReadOnly: row.isReadOnly,
404
+ rootSchema: row.rootSchema,
405
+ onChange
406
+ })]
407
+ }),
408
+ showOptionalIndicator && /* @__PURE__ */ jsx("span", {
409
+ className: "pz:ml-1 pz:text-muted-foreground",
410
+ children: "or null"
411
+ }),
412
+ showRequiredToggle && /* @__PURE__ */ jsx(RequiredToggle, {
413
+ row,
414
+ onChange
415
+ }),
416
+ showRequiredTag && /* @__PURE__ */ jsx(RequiredTag, {
417
+ row,
418
+ onChange
419
+ }),
420
+ row.isRemovable && !isDisabled && !isReadOnly && /* @__PURE__ */ jsx(DeleteButton, {
421
+ onClick: handleRemove,
422
+ title: "Delete property"
423
+ })
424
+ ]
425
+ });
426
+ }
427
+ function PlaceholderFocuser() {
428
+ const [state, dispatch] = useSchemaEditorContext();
429
+ useEffect(() => {
430
+ if (!state.latestPlaceholderId) return;
431
+ const selector = `input[id=${"id-" + state.latestPlaceholderId.slice(3)}]`;
432
+ const input = document.querySelector(selector);
433
+ if (input == null || document.activeElement === input) return;
434
+ input.focus();
435
+ dispatch({
436
+ type: "SET_LATEST_ADDED_PLACEHOLDER",
437
+ payload: ""
438
+ });
439
+ }, [state.latestPlaceholderId, dispatch]);
440
+ return null;
441
+ }
442
+ function SchemaEditorWrapper({ value, onChange, isDisabled = false, isReadOnly = false }) {
443
+ const rows = useMemo(() => generateSchemaRows({
444
+ schema: value,
445
+ isDisabled,
446
+ isReadOnly,
447
+ initialLevel: 0
448
+ }), [
449
+ value,
450
+ isDisabled,
451
+ isReadOnly
452
+ ]);
453
+ return /* @__PURE__ */ jsxs("div", {
454
+ className: "pz:items-stretch pz:whitespace-nowrap pz:text-sm",
455
+ children: [/* @__PURE__ */ jsx(PlaceholderFocuser, {}), rows.map((r, i) => /* @__PURE__ */ jsx(Row, {
456
+ row: r,
457
+ isReadOnly,
458
+ onChange
459
+ }, `${r.level}-${r.propertyName}-${r.path}-${i}`))]
460
+ });
461
+ }
462
+ function SchemaEditor(props) {
463
+ return /* @__PURE__ */ jsx(SchemaEditorContextProvider, { children: /* @__PURE__ */ jsx(SchemaEditorWrapper, { ...props }) });
464
+ }
465
+
466
+ //#endregion
467
+ export { SchemaEditor };
468
+ //# sourceMappingURL=SchemaEditor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaEditor.mjs","names":[],"sources":["../../../../src/components/internal/schema-editor/SchemaEditor.tsx"],"sourcesContent":["import { Command } from \"cmdk\";\nimport {\n type ComponentProps,\n forwardRef,\n type ReactElement,\n type ReactNode,\n type Ref,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport type { JSONSchema } from \"zod/v4/core\";\nimport { cn } from \"../../../lib/utils.js\";\nimport { Button } from \"../../ui/button.js\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../../ui/popover.js\";\nimport { IconChevronDown, IconLock, IconPencil, IconPlus, IconTrash } from \"../icons.js\";\nimport { generateSchemaRows, type SchemaRow, type SchemaRowType } from \"./generate-schema-rows.js\";\nimport { SchemaEditorContextProvider, useSchemaEditorContext } from \"./schema-editor-context.js\";\nimport {\n type AllPropertyTypes,\n addPlaceholderToPath,\n addPlaceholderToSchema,\n addRequiredToProperty,\n changePropertyName,\n changeType,\n EDITOR_PLACEHOLDER_TOKEN,\n findComposedKey,\n getPathProperty,\n isArraySchema,\n isComposedSchema,\n isNonArraySchemaObject,\n isObjectSchema,\n isSimpleSchema,\n moveUpLevel,\n type NonArraySchemaObject,\n removePathFromSchema,\n removeRequiredForProperty,\n schemaInputRegex,\n type TypeOptions,\n} from \"./schema-utils.js\";\n\n// ─── Inline buttons ─────────────────────────────────────────────\n\ntype InlineIconButtonProps = ComponentProps<typeof Button> & {\n icon: ReactNode;\n};\n\nfunction InlineIconButton({ icon, children, ...rest }: InlineIconButtonProps) {\n return (\n <Button type=\"button\" size=\"icon\" variant=\"ghost\" className=\"pz:size-5\" {...rest}>\n {icon}\n <span className=\"pz:sr-only\">{children ?? \"Action\"}</span>\n </Button>\n );\n}\n\nfunction AddButton(props: ComponentProps<typeof Button>) {\n return (\n <InlineIconButton icon={<IconPlus width={12} height={12} />} {...props}>\n Add\n </InlineIconButton>\n );\n}\n\nfunction EditButton(props: ComponentProps<typeof Button>) {\n return (\n <InlineIconButton icon={<IconPencil width={12} height={12} />} {...props}>\n Edit\n </InlineIconButton>\n );\n}\n\nfunction DeleteButton(props: ComponentProps<typeof Button>) {\n return (\n <InlineIconButton icon={<IconTrash width={12} height={12} />} {...props}>\n Delete\n </InlineIconButton>\n );\n}\n\n// ─── Type Selection ──────────────────────────────────────────────\n\nfunction SelectTypePopover({\n children,\n typeOptions,\n onSelect,\n isDisabled,\n}: {\n children: ReactElement;\n typeOptions: TypeOptions;\n onSelect: (type: AllPropertyTypes) => void;\n isDisabled: boolean;\n}) {\n const [open, setOpen] = useState(false);\n if (isDisabled) return children;\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger render={children} />\n <PopoverContent align=\"start\" sideOffset={4} className=\"pz:w-auto pz:min-w-[140px] pz:p-0\">\n <Command className=\"pz:flex pz:flex-col pz:p-1\">\n <Command.List className=\"pz:flex pz:flex-col pz:gap-0.5 pz:max-h-[240px] pz:overflow-y-auto\">\n <Command.Group>\n {typeOptions.propertyTypes.map((t) => (\n <Command.Item\n key={t}\n className=\"pz:flex pz:w-full pz:items-center pz:rounded-sm pz:px-2 pz:py-1.5 pz:text-sm pz:cursor-pointer pz:hover:bg-accent pz:hover:text-accent-foreground pz:data-[selected=true]:bg-accent pz:data-[selected=true]:text-accent-foreground\"\n onSelect={() => {\n onSelect(t);\n setOpen(false);\n }}\n >\n {t}\n </Command.Item>\n ))}\n </Command.Group>\n </Command.List>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n\n// ─── Tag Colors ──────────────────────────────────────────────────\n\ntype TagType = string;\n\nfunction getTagColorClass(type: TagType): string {\n switch (type) {\n case \"string\":\n return \"pz:text-blue-700 pz:dark:text-blue-400\";\n case \"object\":\n return \"pz:text-purple-700 pz:dark:text-purple-400\";\n case \"oneOf\":\n return \"pz:text-orange-700 pz:dark:text-orange-400\";\n case \"anyOf\":\n return \"pz:text-yellow-700 pz:dark:text-yellow-400\";\n case \"allOf\":\n return \"pz:text-red-700 pz:dark:text-red-400\";\n case \"array\":\n return \"pz:text-indigo-700 pz:dark:text-indigo-400\";\n case \"integer\":\n return \"pz:text-green-700 pz:dark:text-green-400\";\n case \"number\":\n return \"pz:text-cyan-700 pz:dark:text-cyan-400\";\n case \"boolean\":\n return \"pz:text-amber-700 pz:dark:text-amber-400\";\n case \"$ref\":\n return \"pz:text-sky-700 pz:dark:text-sky-400\";\n case \"null\":\n default:\n return \"pz:text-gray-700 pz:dark:text-gray-400\";\n }\n}\n\n// ─── Tag Component ──────────────────────────────────────────────\n\ntype TagElementProps = {\n children: ReactNode;\n onAdd?: () => void;\n isDisabled: boolean;\n isReadOnly: boolean;\n type: TagType;\n innerTag?: ReactNode;\n} & Omit<ComponentProps<\"div\">, \"type\" | \"children\">;\n\nconst Tag = forwardRef<HTMLDivElement, TagElementProps>(function Tag(\n { children, className, onAdd, isDisabled, isReadOnly, type, innerTag, ...rest },\n ref,\n) {\n const colorClass = isDisabled ? \"pz:text-muted-foreground\" : getTagColorClass(type);\n const interactive = !isDisabled && !isReadOnly;\n\n return (\n <div className=\"pz:inline-flex pz:items-center\" title=\"Open type options\">\n <div\n ref={ref}\n className={cn(\n \"pz:inline-flex pz:items-center pz:gap-[2px] pz:rounded-md pz:px-1 pz:font-mono\",\n colorClass,\n interactive\n ? \"pz:cursor-pointer pz:hover:bg-accent pz:hover:underline\"\n : \"pz:cursor-default\",\n className,\n )}\n {...rest}\n >\n {children}\n {innerTag && <span className=\"pz:mx-0.5\">[</span>}\n </div>\n {innerTag}\n {innerTag && <span className={cn(colorClass)}>]</span>}\n {onAdd && interactive && <AddButton onClick={onAdd} title=\"Add property\" />}\n </div>\n );\n});\n\n// ─── Type Tags ──────────────────────────────────────────────────\n\ntype TagProps = {\n schema: JSONSchema.BaseSchema;\n path: string;\n typeOptions: TypeOptions;\n isDisabled: boolean;\n isReadOnly: boolean;\n rootSchema: JSONSchema.BaseSchema;\n onChange: (schema: JSONSchema.BaseSchema) => void;\n};\n\nfunction useChangeType(\n path: string,\n rootSchema: JSONSchema.BaseSchema,\n onChange: TagProps[\"onChange\"],\n) {\n return useCallback(\n (type: AllPropertyTypes) => {\n const cp = structuredClone(rootSchema);\n const newSchema = changeType(cp, path, type);\n onChange(newSchema);\n },\n [path, rootSchema, onChange],\n );\n}\n\nfunction ExpandChevron({ isDisabled }: { isDisabled: boolean }) {\n if (isDisabled) return null;\n return <IconChevronDown width={11} height={11} />;\n}\n\nfunction SimpleTag({\n schema,\n path,\n typeOptions,\n isDisabled,\n isReadOnly,\n rootSchema,\n onChange,\n}: TagProps) {\n const onSelect = useChangeType(path, rootSchema, onChange);\n const label =\n schema.type === \"string\" && schema.enum?.length\n ? `enum(${schema.enum.slice(0, 2).map(String).join(\" | \")}${schema.enum.length > 2 ? ` | +${schema.enum.length - 2} more` : \"\"})`\n : String(schema.type ?? \"any\");\n\n return (\n <SelectTypePopover\n typeOptions={typeOptions}\n onSelect={onSelect}\n isDisabled={isDisabled || isReadOnly}\n >\n <Tag isDisabled={isDisabled} isReadOnly={isReadOnly} type={String(schema.type ?? \"null\")}>\n <span>{label}</span>\n {!isReadOnly && <ExpandChevron isDisabled={isDisabled} />}\n </Tag>\n </SelectTypePopover>\n );\n}\n\nfunction ObjectTag({ path, typeOptions, isDisabled, isReadOnly, rootSchema, onChange }: TagProps) {\n const [, dispatch] = useSchemaEditorContext();\n const onSelect = useChangeType(path, rootSchema, onChange);\n\n const isAnyObject = useMemo(() => {\n const property = getPathProperty(rootSchema, path);\n if (!isObjectSchema(property)) return false;\n return !property.properties;\n }, [path, rootSchema]);\n\n const handleAdd = () => {\n const property = getPathProperty(rootSchema, path);\n if (!isNonArraySchemaObject(property)) return;\n const existingKeys = Object.keys(property.properties || {});\n if (existingKeys.some((k) => k.startsWith(\"%%%\"))) return;\n const [newSchema, placeholderId] = addPlaceholderToPath(rootSchema, path);\n if (placeholderId)\n dispatch({\n type: \"SET_LATEST_ADDED_PLACEHOLDER\",\n payload: placeholderId,\n });\n onChange(newSchema);\n };\n\n return (\n <SelectTypePopover\n typeOptions={typeOptions}\n onSelect={onSelect}\n isDisabled={isDisabled || isReadOnly}\n >\n <Tag onAdd={handleAdd} isDisabled={isDisabled} isReadOnly={isReadOnly} type=\"object\">\n <span>{isAnyObject ? \"AnyObject\" : \"object\"}</span>\n {!isReadOnly && <ExpandChevron isDisabled={isDisabled} />}\n </Tag>\n </SelectTypePopover>\n );\n}\n\nfunction ArrayTag({\n schema,\n path,\n typeOptions,\n isDisabled,\n isReadOnly,\n rootSchema,\n onChange,\n}: TagProps) {\n const onSelect = useChangeType(path, rootSchema, onChange);\n const innerTypeOptions = typeOptions.innerArrayTypeOptions;\n if (!innerTypeOptions) throw new Error(\"ArrayTag has no innerArrayTypeOptions\");\n\n const childPath = path === \"\" ? \"items\" : path + \".items\";\n const itemsSchema = (schema as JSONSchema.ArraySchema).items as JSONSchema.BaseSchema | undefined;\n\n return (\n <SelectTypePopover\n typeOptions={typeOptions}\n onSelect={onSelect}\n isDisabled={isDisabled || isReadOnly}\n >\n <Tag\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n type=\"array\"\n innerTag={\n itemsSchema ? (\n <RootTag\n schema={itemsSchema}\n path={childPath}\n typeOptions={{\n ...innerTypeOptions,\n innerArrayTypeOptions: innerTypeOptions,\n }}\n onChange={onChange}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n rootSchema={rootSchema}\n />\n ) : undefined\n }\n >\n <span>array</span>\n {!isReadOnly && <ExpandChevron isDisabled={isDisabled} />}\n </Tag>\n </SelectTypePopover>\n );\n}\n\nfunction ComposedTag({\n schema,\n path,\n typeOptions,\n isDisabled,\n isReadOnly,\n rootSchema,\n onChange,\n}: TagProps) {\n const composedKey = useMemo(() => findComposedKey(schema as NonArraySchemaObject), [schema]);\n const onSelect = useChangeType(path, rootSchema, onChange);\n\n const handleAdd = () => {\n const [newSchema] = addPlaceholderToPath(rootSchema, path);\n onChange(newSchema);\n };\n\n return (\n <SelectTypePopover\n typeOptions={typeOptions}\n onSelect={onSelect}\n isDisabled={isDisabled || isReadOnly}\n >\n <Tag onAdd={handleAdd} isDisabled={isDisabled} isReadOnly={isReadOnly} type={composedKey}>\n <span>{composedKey}</span>\n {!isReadOnly && <ExpandChevron isDisabled={isDisabled} />}\n </Tag>\n </SelectTypePopover>\n );\n}\n\nfunction RootTag(props: TagProps) {\n if (isArraySchema(props.schema)) return <ArrayTag {...props} />;\n if (isSimpleSchema(props.schema)) return <SimpleTag {...props} />;\n if (isObjectSchema(props.schema)) return <ObjectTag {...props} />;\n if (isComposedSchema(props.schema)) return <ComposedTag {...props} />;\n return <SimpleTag {...props} />;\n}\n\nfunction renderTag(rowType: SchemaRowType, props: TagProps) {\n switch (rowType) {\n case \"simple-row\":\n return <SimpleTag {...props} />;\n case \"composed-row\":\n return <ComposedTag {...props} />;\n case \"array-row\":\n return <ArrayTag {...props} />;\n case \"object-row\":\n return <ObjectTag {...props} />;\n case \"any-row\":\n case \"unsupported-row\":\n default:\n return <SimpleTag {...props} />;\n }\n}\n\n// ─── Property Name ──────────────────────────────────────────────\n\ntype PropertyNameFormValues = { propertyName: string };\n\nfunction PropertyNameInput({\n className,\n ref,\n ...props\n}: ComponentProps<\"input\"> & { ref?: Ref<HTMLInputElement> }) {\n return (\n <input\n ref={ref}\n className={cn(\n \"pz:flex pz:w-20 pz:bg-background pz:text-foreground pz:outline-none pz:placeholder:text-muted-foreground pz:disabled:cursor-not-allowed pz:disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction RowPropertyName({\n row,\n onChange,\n handleRemove,\n isReadOnly,\n isDisabled,\n}: {\n row: SchemaRow & { propertyName: string };\n onChange: (schema: JSONSchema.BaseSchema) => void;\n isReadOnly: boolean;\n isDisabled: boolean;\n handleRemove: () => void;\n}) {\n const [isEditing, setIsEditing] = useState(() =>\n row.propertyName.startsWith(EDITOR_PLACEHOLDER_TOKEN),\n );\n const inputRef = useRef<HTMLInputElement>(null);\n const submitButtonRef = useRef<HTMLButtonElement>(null);\n const [, dispatch] = useSchemaEditorContext();\n\n const { register, handleSubmit } = useForm<PropertyNameFormValues>({\n defaultValues: {\n propertyName:\n row.propertyName && !row.propertyName.startsWith(EDITOR_PLACEHOLDER_TOKEN)\n ? row.propertyName\n : \"\",\n },\n });\n\n type SubmitMode = \"enter\" | \"blur\";\n const onSubmit = (data: PropertyNameFormValues, submitMode: SubmitMode) => {\n try {\n if (data.propertyName === \"\") return handleRemove();\n let newSchema = changePropertyName(row.rootSchema, row.path, data.propertyName);\n if (row.propertyName.startsWith(EDITOR_PLACEHOLDER_TOKEN)) {\n newSchema = addRequiredToProperty(\n newSchema,\n moveUpLevel(row.path) + `.${data.propertyName}`,\n );\n }\n setIsEditing(false);\n if (submitMode === \"enter\") {\n const { schema, placeholderId } = addPlaceholderToSchema({\n schema: newSchema,\n path: moveUpLevel(moveUpLevel(row.path)),\n });\n newSchema = schema;\n if (placeholderId)\n dispatch({\n type: \"SET_LATEST_ADDED_PLACEHOLDER\",\n payload: placeholderId,\n });\n }\n onChange(newSchema);\n } catch {\n // validation errors handled silently\n }\n };\n\n const { ref, ...registerValues } = register(\"propertyName\", {\n pattern: {\n value: schemaInputRegex.propertyName.expression,\n message: schemaInputRegex.propertyName.message,\n },\n });\n\n const curriedSubmit = (submitMode: SubmitMode) => handleSubmit((v) => onSubmit(v, submitMode));\n\n const handleOnBlur = () => {\n submitButtonRef.current?.click();\n };\n\n const showInput = isEditing;\n const showText = row.propertyName && !isEditing;\n\n return (\n <>\n <span\n aria-hidden={!showInput}\n className={cn(\"pz:inline-flex\", {\n \"pz:sr-only\": !showInput,\n })}\n >\n <div\n role=\"form\"\n onKeyDown={async (e) => {\n if (e.currentTarget.contains(document.activeElement) && e.code === \"Enter\") {\n e.preventDefault();\n e.stopPropagation();\n await curriedSubmit(\"enter\")();\n }\n }}\n >\n <PropertyNameInput\n id={\"id-\" + row.propertyName.slice(3)}\n autoComplete=\"off\"\n placeholder=\"name\"\n {...registerValues}\n ref={(e) => {\n ref(e);\n (inputRef as { current: HTMLInputElement | null }).current = e;\n }}\n onBlur={handleOnBlur}\n />\n <button\n type=\"button\"\n onClick={() => curriedSubmit(\"blur\")()}\n className=\"pz:sr-only\"\n ref={submitButtonRef}\n >\n Submit\n </button>\n </div>\n <span>:&nbsp;&nbsp;&nbsp;</span>\n </span>\n <span\n aria-hidden={!showText}\n className={cn(\"pz:flex pz:items-center pz:gap-1\", {\n \"pz:sr-only\": !showText,\n })}\n >\n <span\n className={cn(\n \"pz:whitespace-nowrap\",\n isDisabled ? \"pz:text-muted-foreground\" : \"pz:text-foreground\",\n )}\n >\n {row.propertyName}\n </span>\n {!isReadOnly && !isDisabled && (\n <EditButton\n onClick={() => {\n setIsEditing(true);\n setTimeout(() => inputRef.current?.focus(), 0);\n }}\n title=\"Edit name\"\n />\n )}\n <span>:&nbsp;</span>\n </span>\n </>\n );\n}\n\n// ─── Required toggle ────────────────────────────────────────────\n\nfunction RequiredTag({\n row,\n onChange,\n}: {\n row: SchemaRow;\n onChange: (schema: JSONSchema.BaseSchema) => void;\n}) {\n return (\n <InlineIconButton\n icon={<IconLock width={12} height={12} />}\n onClick={() => onChange(removeRequiredForProperty(row.rootSchema, row.path))}\n title=\"Make optional\"\n />\n );\n}\n\nfunction RequiredToggle({\n row,\n onChange,\n}: {\n row: SchemaRow;\n onChange: (schema: JSONSchema.BaseSchema) => void;\n}) {\n return (\n <Button\n type=\"button\"\n variant=\"ghost\"\n className=\"pz:h-5 pz:px-1.5 pz:font-normal pz:text-muted-foreground\"\n onClick={() => onChange(addRequiredToProperty(row.rootSchema, row.path))}\n title=\"Make required\"\n >\n or null\n </Button>\n );\n}\n\n// ─── Row Component ──────────────────────────────────────────────\n\nfunction Row({\n row,\n onChange,\n isReadOnly,\n}: {\n row: SchemaRow;\n onChange: (schema: JSONSchema.BaseSchema) => void;\n isReadOnly: boolean;\n}) {\n const handleRemove = useCallback(() => {\n let newSchema = removeRequiredForProperty(row.rootSchema, row.path);\n newSchema = removePathFromSchema(newSchema, row.path);\n onChange(newSchema);\n }, [onChange, row.rootSchema, row.path]);\n\n const isDisabled = row.isDisabled;\n const isPlaceholder = row.propertyName?.startsWith(EDITOR_PLACEHOLDER_TOKEN);\n\n const showRequiredToggle =\n !row.isRequired && !row.hideRequiredToggle && !isDisabled && !isPlaceholder && !isReadOnly;\n const showOptionalIndicator =\n !row.isRequired && !row.hideRequiredToggle && !isDisabled && !isPlaceholder && isReadOnly;\n const showRequiredTag = row.isRequired && !row.hideRequiredToggle && !isDisabled && !isReadOnly;\n\n return (\n <div className=\"pz:schema-row pz:flex pz:items-center pz:gap-0 pz:text-sm\">\n <span className=\"pz:whitespace-pre pz:font-mono pz:text-sm pz:font-thin pz:text-border\">\n {row.prefix}\n </span>\n <div className=\"pz:flex pz:items-center\">\n {row.propertyName && (\n <RowPropertyName\n row={row as SchemaRow & { propertyName: string }}\n onChange={onChange}\n handleRemove={handleRemove}\n isReadOnly={isReadOnly}\n isDisabled={isDisabled}\n />\n )}\n {renderTag(row.rowType, {\n schema: row.schema,\n path: row.path,\n typeOptions: row.typeOptions,\n isDisabled: row.isDisabled,\n isReadOnly: row.isReadOnly,\n rootSchema: row.rootSchema,\n onChange,\n })}\n </div>\n {showOptionalIndicator && <span className=\"pz:ml-1 pz:text-muted-foreground\">or null</span>}\n {showRequiredToggle && <RequiredToggle row={row} onChange={onChange} />}\n {showRequiredTag && <RequiredTag row={row} onChange={onChange} />}\n {row.isRemovable && !isDisabled && !isReadOnly && (\n <DeleteButton onClick={handleRemove} title=\"Delete property\" />\n )}\n </div>\n );\n}\n\n// ─── Auto-focus for new placeholders ────────────────────────────\n\nfunction PlaceholderFocuser() {\n const [state, dispatch] = useSchemaEditorContext();\n useEffect(() => {\n if (!state.latestPlaceholderId) return;\n const selector = `input[id=${\"id-\" + state.latestPlaceholderId.slice(3)}]`;\n const input = document.querySelector<HTMLInputElement>(selector);\n if (input == null || document.activeElement === input) return;\n input.focus();\n dispatch({ type: \"SET_LATEST_ADDED_PLACEHOLDER\", payload: \"\" });\n }, [state.latestPlaceholderId, dispatch]);\n return null;\n}\n\n// ─── Main SchemaEditor ──────────────────────────────────────────\n\ninterface SchemaEditorProps {\n value: JSONSchema.BaseSchema;\n onChange: (schema: JSONSchema.BaseSchema) => void;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n}\n\nfunction SchemaEditorWrapper({\n value,\n onChange,\n isDisabled = false,\n isReadOnly = false,\n}: SchemaEditorProps) {\n const rows = useMemo(\n () =>\n generateSchemaRows({\n schema: value,\n isDisabled,\n isReadOnly,\n initialLevel: 0,\n }),\n [value, isDisabled, isReadOnly],\n );\n\n return (\n <div className=\"pz:items-stretch pz:whitespace-nowrap pz:text-sm\">\n <PlaceholderFocuser />\n {rows.map((r, i) => (\n <Row\n key={`${r.level}-${r.propertyName}-${r.path}-${i}`}\n row={r}\n isReadOnly={isReadOnly}\n onChange={onChange}\n />\n ))}\n </div>\n );\n}\n\nexport function SchemaEditor(props: SchemaEditorProps) {\n return (\n <SchemaEditorContextProvider>\n <SchemaEditorWrapper {...props} />\n </SchemaEditorContextProvider>\n );\n}\n"],"mappings":"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"}