@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,333 @@
1
+ import { Button } from "../../ui/button.mjs";
2
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "../../ui/select.mjs";
3
+ import { Input } from "../../ui/input.mjs";
4
+ import { IconPlus, IconTrash } from "../../internal/icons.mjs";
5
+ import { HoverInfo } from "../../hover-info.mjs";
6
+ import { Badge } from "../../ui/badge.mjs";
7
+ import { useFieldError } from "../../../hooks/use-field-error.mjs";
8
+ import { Label } from "../../ui/label.mjs";
9
+ import { useJsonataPreview } from "../../../hooks/use-jsonata-preview.mjs";
10
+ import { generateRandomString } from "../../../utils/generate-random-string.mjs";
11
+ import { ToggleAdvancedButton } from "../toggle-advanced-button.mjs";
12
+ import { useMemo, useState } from "react";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ import { RECORD_FIELD_TYPES, TYPES_TO_FORMATS } from "@pipe0/base";
15
+ import { Collapsible } from "@base-ui/react/collapsible";
16
+ import { Tabs } from "@base-ui/react/tabs";
17
+
18
+ //#region src/components/defaults/adapters/json-extraction-input.tsx
19
+ function ExtractionPreview({ exampleValue, extraction }) {
20
+ const { preview, error, isLoading } = useJsonataPreview(extraction.path, exampleValue);
21
+ return /* @__PURE__ */ jsxs(Tabs.Root, {
22
+ defaultValue: "extracted",
23
+ className: "pz:flex pz:flex-col pz:gap-1 pz:rounded-md pz:border pz:border-input pz:bg-muted/30",
24
+ children: [
25
+ /* @__PURE__ */ jsxs("div", {
26
+ className: "pz:flex pz:items-center pz:justify-between pz:px-2 pz:py-1",
27
+ children: [/* @__PURE__ */ jsx("span", {
28
+ className: "pz:text-xs pz:font-medium pz:text-muted-foreground",
29
+ children: "Preview"
30
+ }), /* @__PURE__ */ jsxs(Tabs.List, {
31
+ className: "pz:inline-flex pz:gap-1",
32
+ children: [
33
+ isLoading && /* @__PURE__ */ jsx("span", {
34
+ className: "pz:text-xs pz:text-muted-foreground",
35
+ children: "..."
36
+ }),
37
+ /* @__PURE__ */ jsx(Tabs.Tab, {
38
+ value: "extracted",
39
+ className: "pz:rounded-sm pz:px-2 pz:py-0.5 pz:text-xs pz:hover:bg-accent pz:data-[active]:bg-accent pz:data-[active]:text-accent-foreground",
40
+ children: "Extracted"
41
+ }),
42
+ /* @__PURE__ */ jsx(Tabs.Tab, {
43
+ value: "full",
44
+ className: "pz:rounded-sm pz:px-2 pz:py-0.5 pz:text-xs pz:hover:bg-accent pz:data-[active]:bg-accent pz:data-[active]:text-accent-foreground",
45
+ children: "Full value"
46
+ })
47
+ ]
48
+ })]
49
+ }),
50
+ /* @__PURE__ */ jsx(Tabs.Panel, {
51
+ value: "full",
52
+ children: /* @__PURE__ */ jsx("pre", {
53
+ className: "pz:m-0 pz:overflow-auto pz:rounded-b-md pz:bg-muted/30 pz:p-2 pz:text-xs pz:text-foreground",
54
+ children: JSON.stringify(exampleValue, null, 2)
55
+ })
56
+ }),
57
+ /* @__PURE__ */ jsx(Tabs.Panel, {
58
+ value: "extracted",
59
+ children: /* @__PURE__ */ jsx("pre", {
60
+ className: "pz:m-0 pz:overflow-auto pz:rounded-b-md pz:bg-muted/30 pz:p-2 pz:text-xs pz:text-foreground",
61
+ children: error ? error : JSON.stringify(preview, null, 2)
62
+ })
63
+ })
64
+ ]
65
+ });
66
+ }
67
+ function ExtractionCard({ extraction, idx, isLast, option, form, basePath, onUpdate, onRemove, onAdd }) {
68
+ const [showPreview, setShowPreview] = useState(false);
69
+ const extractionPath = `${basePath}.extractions.${idx}`;
70
+ const pathError = useFieldError(form, `${extractionPath}.path`);
71
+ const nameError = useFieldError(form, `${extractionPath}.output_field.name`);
72
+ const availableFormats = useMemo(() => TYPES_TO_FORMATS[extraction.output_field.type] ?? [], [extraction.output_field.type]);
73
+ const updatePath = (value) => {
74
+ onUpdate(idx, {
75
+ ...extraction,
76
+ path: value
77
+ });
78
+ };
79
+ const updateOutputField = (property, value) => {
80
+ if (value === null) return;
81
+ const newOutputField = {
82
+ ...extraction.output_field,
83
+ [property]: value
84
+ };
85
+ if (property === "type") {
86
+ const newFormats = TYPES_TO_FORMATS[value] ?? [];
87
+ if (newFormats.length === 0 || !newFormats.includes(newOutputField.format)) newOutputField.format = null;
88
+ }
89
+ onUpdate(idx, {
90
+ ...extraction,
91
+ output_field: newOutputField
92
+ });
93
+ };
94
+ return /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("div", {
95
+ className: "pz:flex pz:flex-col pz:gap-2 pz:border-t pz:border-b pz:border-input pz:p-3",
96
+ children: [/* @__PURE__ */ jsxs("div", {
97
+ className: "pz:flex pz:items-center pz:justify-between",
98
+ children: [/* @__PURE__ */ jsxs("div", {
99
+ className: "pz:h-7 pz:px-2 pz:font-semibold pz:select-none pz:text-xs pz:rounded-sm pz:bg-accent pz:border pz:border-input pz:text-muted-foreground pz:grid pz:place-content-center",
100
+ children: [idx + 1, ". Extraction"]
101
+ }), /* @__PURE__ */ jsx(Button, {
102
+ variant: "destructive",
103
+ size: "icon",
104
+ className: "pz:[&_svg]:size-3 pz:size-7 pz:rounded-sm",
105
+ onClick: () => onRemove(idx),
106
+ title: "Remove condition",
107
+ children: /* @__PURE__ */ jsx(IconTrash, {})
108
+ })]
109
+ }), /* @__PURE__ */ jsxs("div", {
110
+ className: "pz:flex pz:flex-col pz:gap-2",
111
+ children: [
112
+ option.exampleValue && showPreview && /* @__PURE__ */ jsx(ExtractionPreview, {
113
+ exampleValue: option.exampleValue,
114
+ extraction
115
+ }),
116
+ /* @__PURE__ */ jsxs("div", {
117
+ className: "pz:flex pz:flex-col pz:gap-1",
118
+ children: [
119
+ /* @__PURE__ */ jsxs("div", {
120
+ className: "pz:flex pz:items-center pz:justify-between",
121
+ children: [/* @__PURE__ */ jsxs(Label, {
122
+ className: "pz:text-xs pz:text-muted-foreground pz:inline-flex pz:items-center pz:gap-1",
123
+ children: ["Path ", /* @__PURE__ */ jsx(HoverInfo, { children: "Use JSONata" })]
124
+ }), option.exampleValue ? /* @__PURE__ */ jsx(Button, {
125
+ type: "button",
126
+ variant: "ghost",
127
+ size: "sm",
128
+ onClick: () => setShowPreview(!showPreview),
129
+ children: showPreview ? "Hide preview" : "Show preview"
130
+ }) : /* @__PURE__ */ jsx("span", {
131
+ className: "pz:text-xs pz:text-muted-foreground",
132
+ children: "No preview available"
133
+ })]
134
+ }),
135
+ /* @__PURE__ */ jsx(Input, {
136
+ value: extraction.path,
137
+ onChange: (e) => updatePath(e.target.value),
138
+ placeholder: "ex. emails[0].value",
139
+ "aria-invalid": !!pathError
140
+ }),
141
+ pathError && /* @__PURE__ */ jsx("span", {
142
+ className: "pz:text-destructive pz:text-xs pz:font-medium",
143
+ role: "alert",
144
+ children: pathError
145
+ })
146
+ ]
147
+ }),
148
+ /* @__PURE__ */ jsxs("div", {
149
+ className: "pz:flex pz:items-end pz:gap-2",
150
+ children: [/* @__PURE__ */ jsxs("div", {
151
+ className: "pz:flex pz:flex-col pz:gap-1 pz:flex-1",
152
+ children: [/* @__PURE__ */ jsx(Label, {
153
+ className: "pz:text-xs pz:text-muted-foreground",
154
+ children: "Output Type"
155
+ }), /* @__PURE__ */ jsxs(Select, {
156
+ value: extraction.output_field.type,
157
+ onValueChange: (v) => updateOutputField("type", v),
158
+ children: [/* @__PURE__ */ jsx(SelectTrigger, { children: /* @__PURE__ */ jsx(SelectValue, {}) }), /* @__PURE__ */ jsx(SelectContent, { children: RECORD_FIELD_TYPES.map((type) => /* @__PURE__ */ jsx(SelectItem, {
159
+ value: type,
160
+ children: type
161
+ }, type)) })]
162
+ })]
163
+ }), availableFormats.length > 0 && /* @__PURE__ */ jsxs("div", {
164
+ className: "pz:flex pz:flex-col pz:gap-1 pz:flex-1",
165
+ children: [/* @__PURE__ */ jsx(Label, {
166
+ className: "pz:text-xs pz:text-muted-foreground",
167
+ children: "Format"
168
+ }), /* @__PURE__ */ jsxs(Select, {
169
+ value: extraction.output_field.format || "",
170
+ onValueChange: (v) => updateOutputField("format", v),
171
+ children: [/* @__PURE__ */ jsx(SelectTrigger, { children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select format" }) }), /* @__PURE__ */ jsx(SelectContent, { children: availableFormats.map((format) => /* @__PURE__ */ jsx(SelectItem, {
172
+ value: format,
173
+ children: format
174
+ }, format)) })]
175
+ })]
176
+ })]
177
+ }),
178
+ /* @__PURE__ */ jsxs(Collapsible.Root, { children: [/* @__PURE__ */ jsx(Collapsible.Trigger, { render: /* @__PURE__ */ jsx(ToggleAdvancedButton, { children: "Open advanced" }) }), /* @__PURE__ */ jsxs(Collapsible.Panel, {
179
+ className: "pz:flex pz:flex-col pz:gap-2 pz:pt-2",
180
+ children: [/* @__PURE__ */ jsxs("div", {
181
+ className: "pz:flex pz:flex-col pz:gap-1",
182
+ children: [
183
+ /* @__PURE__ */ jsx(Label, {
184
+ className: "pz:text-xs pz:text-muted-foreground",
185
+ children: "Outpue field name"
186
+ }),
187
+ /* @__PURE__ */ jsx(Input, {
188
+ value: extraction.output_field.name,
189
+ onChange: (e) => updateOutputField("name", e.target.value),
190
+ "aria-invalid": !!nameError
191
+ }),
192
+ nameError && /* @__PURE__ */ jsx("span", {
193
+ className: "pz:text-destructive pz:text-xs pz:font-medium",
194
+ role: "alert",
195
+ children: nameError
196
+ })
197
+ ]
198
+ }), /* @__PURE__ */ jsxs("div", {
199
+ className: "pz:flex pz:flex-col pz:gap-1",
200
+ children: [/* @__PURE__ */ jsx(Label, {
201
+ className: "pz:text-xs pz:text-muted-foreground",
202
+ children: "Output field label"
203
+ }), /* @__PURE__ */ jsx(Input, {
204
+ value: extraction.output_field.label,
205
+ onChange: (e) => updateOutputField("label", e.target.value),
206
+ placeholder: "Describe your new field"
207
+ })]
208
+ })]
209
+ })] })
210
+ ]
211
+ })]
212
+ }), isLast && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(Button, {
213
+ type: "button",
214
+ variant: "link",
215
+ size: "xs",
216
+ onClick: onAdd,
217
+ children: [/* @__PURE__ */ jsx(IconPlus, {}), "Add path"]
218
+ }) })] });
219
+ }
220
+ function JsonExtractionInputAdapter(field) {
221
+ const meta = field.meta;
222
+ const value = field.value ?? {
223
+ field_name: "",
224
+ extractions: []
225
+ };
226
+ const addExtraction = (fieldName) => {
227
+ const inputFieldName = fieldName || value.field_name;
228
+ const isInitial = value.extractions.length === 0;
229
+ const newValue = {
230
+ field_name: inputFieldName,
231
+ extractions: [...value.extractions, {
232
+ path: "",
233
+ output_field: {
234
+ name: `extract_${inputFieldName}_${generateRandomString(4)}`,
235
+ format: null,
236
+ label: "Extract JSON",
237
+ type: "string"
238
+ }
239
+ }]
240
+ };
241
+ if (isInitial) field.form.setValue(field.path, newValue, {
242
+ shouldDirty: false,
243
+ shouldTouch: false,
244
+ shouldValidate: false
245
+ });
246
+ else field.setValue(newValue);
247
+ };
248
+ const removeAllExtractions = () => {
249
+ field.form.resetField(field.path, { defaultValue: {
250
+ field_name: "",
251
+ extractions: []
252
+ } });
253
+ };
254
+ const updateExtraction = (idx, ext) => {
255
+ const newExtractions = [...value.extractions];
256
+ newExtractions[idx] = ext;
257
+ field.setValue({
258
+ ...value,
259
+ extractions: newExtractions
260
+ });
261
+ };
262
+ const removeExtraction = (idx) => {
263
+ const newExtractions = [...value.extractions];
264
+ newExtractions.splice(idx, 1);
265
+ if (newExtractions.length === 0) field.setValue({
266
+ field_name: "",
267
+ extractions: []
268
+ });
269
+ else field.setValue({
270
+ ...value,
271
+ extractions: newExtractions
272
+ });
273
+ };
274
+ const option = useMemo(() => meta.fields.find((e) => e.fieldName === value.field_name), [value.field_name, meta.fields]);
275
+ return /* @__PURE__ */ jsx("div", {
276
+ "data-p0": "input",
277
+ className: "pz:flex pz:flex-col pz:gap-3",
278
+ children: value.field_name && value.extractions.length > 0 && option ? /* @__PURE__ */ jsxs("div", {
279
+ className: "pz:flex pz:flex-col pz:gap-2",
280
+ children: [/* @__PURE__ */ jsxs("div", {
281
+ className: "pz:flex pz:items-center pz:justify-between",
282
+ children: [/* @__PURE__ */ jsxs(Badge, {
283
+ variant: "secondary",
284
+ className: "pz:h-7 pz:bg-accent pz:border-input pz:border pz:text-accent-foreground pz:font-normal",
285
+ children: ["Field: ", /* @__PURE__ */ jsx("b", { children: option.fieldLabel || option.fieldName })]
286
+ }), /* @__PURE__ */ jsxs(Button, {
287
+ type: "button",
288
+ variant: "destructive",
289
+ size: "xs",
290
+ className: "pz:font-normal pz:h-7",
291
+ onClick: removeAllExtractions,
292
+ children: ["Reset ", /* @__PURE__ */ jsx(IconTrash, {})]
293
+ })]
294
+ }), value.extractions.map((extraction, idx) => /* @__PURE__ */ jsx(ExtractionCard, {
295
+ extraction,
296
+ idx,
297
+ isLast: idx === value.extractions.length - 1,
298
+ option,
299
+ form: field.form,
300
+ basePath: field.path,
301
+ onUpdate: updateExtraction,
302
+ onRemove: removeExtraction,
303
+ onAdd: () => addExtraction()
304
+ }, idx))]
305
+ }) : meta.fields.length > 0 ? /* @__PURE__ */ jsx("div", {
306
+ className: "pz:flex pz:flex-col pz:gap-2 pz:rounded-md pz:border-input",
307
+ children: /* @__PURE__ */ jsxs(Select, {
308
+ value: "",
309
+ onValueChange: (v) => {
310
+ if (v) addExtraction(v);
311
+ },
312
+ children: [/* @__PURE__ */ jsx(SelectTrigger, { children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select field" }) }), /* @__PURE__ */ jsx(SelectContent, { children: meta.fields.map((f) => /* @__PURE__ */ jsxs(SelectItem, {
313
+ value: f.fieldName,
314
+ children: [
315
+ f.fieldLabel,
316
+ " - ",
317
+ f.fieldName
318
+ ]
319
+ }, f.fieldName)) })]
320
+ })
321
+ }) : /* @__PURE__ */ jsxs("div", {
322
+ className: "pz:flex pz:items-center pz:gap-1.5 pz:rounded-md pz:px-1",
323
+ children: [/* @__PURE__ */ jsx("div", {
324
+ className: "pz:text-xs pz:font-normal",
325
+ children: "No JSON field available"
326
+ }), /* @__PURE__ */ jsx(HoverInfo, { children: "A JSON field is required for this pipe. Add a json field to your pipeline." })]
327
+ })
328
+ });
329
+ }
330
+
331
+ //#endregion
332
+ export { JsonExtractionInputAdapter };
333
+ //# sourceMappingURL=json-extraction-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-extraction-input.mjs","names":[],"sources":["../../../../src/components/defaults/adapters/json-extraction-input.tsx"],"sourcesContent":["import { Collapsible } from \"@base-ui/react/collapsible\";\nimport { Tabs } from \"@base-ui/react/tabs\";\nimport type { JSONExtraction, JSONExtractionMeta } from \"@pipe0/base\";\nimport { RECORD_FIELD_TYPES, TYPES_TO_FORMATS } from \"@pipe0/base\";\nimport { useMemo, useState } from \"react\";\nimport type { UseFormReturn } from \"react-hook-form\";\nimport { useFieldError } from \"../../../hooks/use-field-error.js\";\nimport { useJsonataPreview } from \"../../../hooks/use-jsonata-preview.js\";\nimport type { FieldHandle } from \"../../../types/field-handle.js\";\nimport { generateRandomString } from \"../../../utils/generate-random-string.js\";\nimport { HoverInfo } from \"../../hover-info.js\";\nimport { IconPlus, IconTrash } from \"../../internal/icons.js\";\nimport { Badge } from \"../../ui/badge.js\";\nimport { Button } from \"../../ui/button.js\";\nimport { Input } from \"../../ui/input.js\";\nimport { Label } from \"../../ui/label.js\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"../../ui/select.js\";\nimport { ToggleAdvancedButton } from \"../toggle-advanced-button.js\";\n\nfunction ExtractionPreview({\n exampleValue,\n extraction,\n}: {\n extraction: JSONExtraction[\"extractions\"][number];\n exampleValue: unknown;\n}) {\n const { preview, error, isLoading } = useJsonataPreview(extraction.path, exampleValue);\n\n return (\n <Tabs.Root\n defaultValue=\"extracted\"\n className=\"pz:flex pz:flex-col pz:gap-1 pz:rounded-md pz:border pz:border-input pz:bg-muted/30\"\n >\n <div className=\"pz:flex pz:items-center pz:justify-between pz:px-2 pz:py-1\">\n <span className=\"pz:text-xs pz:font-medium pz:text-muted-foreground\">Preview</span>\n <Tabs.List className=\"pz:inline-flex pz:gap-1\">\n {isLoading && <span className=\"pz:text-xs pz:text-muted-foreground\">...</span>}\n <Tabs.Tab\n value=\"extracted\"\n className=\"pz:rounded-sm pz:px-2 pz:py-0.5 pz:text-xs pz:hover:bg-accent pz:data-[active]:bg-accent pz:data-[active]:text-accent-foreground\"\n >\n Extracted\n </Tabs.Tab>\n <Tabs.Tab\n value=\"full\"\n className=\"pz:rounded-sm pz:px-2 pz:py-0.5 pz:text-xs pz:hover:bg-accent pz:data-[active]:bg-accent pz:data-[active]:text-accent-foreground\"\n >\n Full value\n </Tabs.Tab>\n </Tabs.List>\n </div>\n <Tabs.Panel value=\"full\">\n <pre className=\"pz:m-0 pz:overflow-auto pz:rounded-b-md pz:bg-muted/30 pz:p-2 pz:text-xs pz:text-foreground\">\n {JSON.stringify(exampleValue, null, 2)}\n </pre>\n </Tabs.Panel>\n <Tabs.Panel value=\"extracted\">\n <pre className=\"pz:m-0 pz:overflow-auto pz:rounded-b-md pz:bg-muted/30 pz:p-2 pz:text-xs pz:text-foreground\">\n {error ? error : JSON.stringify(preview, null, 2)}\n </pre>\n </Tabs.Panel>\n </Tabs.Root>\n );\n}\n\nfunction ExtractionCard({\n extraction,\n idx,\n isLast,\n option,\n form,\n basePath,\n onUpdate,\n onRemove,\n onAdd,\n}: {\n extraction: JSONExtraction[\"extractions\"][number];\n idx: number;\n isLast: boolean;\n option: JSONExtractionMeta[\"fields\"][number];\n form: UseFormReturn<any>;\n basePath: string;\n onUpdate: (idx: number, ext: JSONExtraction[\"extractions\"][number]) => void;\n onRemove: (idx: number) => void;\n onAdd: () => void;\n}) {\n const [showPreview, setShowPreview] = useState(false);\n const extractionPath = `${basePath}.extractions.${idx}`;\n const pathError = useFieldError(form, `${extractionPath}.path`);\n const nameError = useFieldError(form, `${extractionPath}.output_field.name`);\n\n const availableFormats = useMemo(\n () => TYPES_TO_FORMATS[extraction.output_field.type as keyof typeof TYPES_TO_FORMATS] ?? [],\n [extraction.output_field.type],\n );\n\n const updatePath = (value: string) => {\n onUpdate(idx, { ...extraction, path: value });\n };\n\n const updateOutputField = (\n property: \"type\" | \"format\" | \"name\" | \"label\" | \"description\",\n value: string | null,\n ) => {\n if (value === null) return;\n\n const newOutputField = { ...extraction.output_field, [property]: value };\n if (property === \"type\") {\n const newFormats = TYPES_TO_FORMATS[value as keyof typeof TYPES_TO_FORMATS] ?? [];\n if (newFormats.length === 0 || !newFormats.includes(newOutputField.format as never)) {\n newOutputField.format = null;\n }\n }\n onUpdate(idx, { ...extraction, output_field: newOutputField });\n };\n\n return (\n <div>\n <div className=\"pz:flex pz:flex-col pz:gap-2 pz:border-t pz:border-b pz:border-input pz:p-3\">\n <div className=\"pz:flex pz:items-center pz:justify-between\">\n <div className=\"pz:h-7 pz:px-2 pz:font-semibold pz:select-none pz:text-xs pz:rounded-sm pz:bg-accent pz:border pz:border-input pz:text-muted-foreground pz:grid pz:place-content-center\">\n {idx + 1}. Extraction\n </div>\n\n <Button\n variant=\"destructive\"\n size=\"icon\"\n className=\"pz:[&_svg]:size-3 pz:size-7 pz:rounded-sm\"\n onClick={() => onRemove(idx)}\n title=\"Remove condition\"\n >\n <IconTrash />\n </Button>\n </div>\n\n <div className=\"pz:flex pz:flex-col pz:gap-2\">\n {option.exampleValue && showPreview && (\n <ExtractionPreview exampleValue={option.exampleValue} extraction={extraction} />\n )}\n\n <div className=\"pz:flex pz:flex-col pz:gap-1\">\n <div className=\"pz:flex pz:items-center pz:justify-between\">\n <Label className=\"pz:text-xs pz:text-muted-foreground pz:inline-flex pz:items-center pz:gap-1\">\n Path <HoverInfo>Use JSONata</HoverInfo>\n </Label>\n {option.exampleValue ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setShowPreview(!showPreview)}\n >\n {showPreview ? \"Hide preview\" : \"Show preview\"}\n </Button>\n ) : (\n <span className=\"pz:text-xs pz:text-muted-foreground\">No preview available</span>\n )}\n </div>\n <Input\n value={extraction.path}\n onChange={(e) => updatePath(e.target.value)}\n placeholder=\"ex. emails[0].value\"\n aria-invalid={!!pathError}\n />\n {pathError && (\n <span className=\"pz:text-destructive pz:text-xs pz:font-medium\" role=\"alert\">\n {pathError}\n </span>\n )}\n </div>\n\n <div className=\"pz:flex pz:items-end pz:gap-2\">\n <div className=\"pz:flex pz:flex-col pz:gap-1 pz:flex-1\">\n <Label className=\"pz:text-xs pz:text-muted-foreground\">Output Type</Label>\n <Select\n value={extraction.output_field.type}\n onValueChange={(v) => updateOutputField(\"type\", v as string)}\n >\n <SelectTrigger>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {RECORD_FIELD_TYPES.map((type) => (\n <SelectItem key={type} value={type}>\n {type}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n {availableFormats.length > 0 && (\n <div className=\"pz:flex pz:flex-col pz:gap-1 pz:flex-1\">\n <Label className=\"pz:text-xs pz:text-muted-foreground\">Format</Label>\n <Select\n value={extraction.output_field.format || \"\"}\n onValueChange={(v) => updateOutputField(\"format\", v)}\n >\n <SelectTrigger>\n <SelectValue placeholder=\"Select format\" />\n </SelectTrigger>\n <SelectContent>\n {availableFormats.map((format) => (\n <SelectItem key={format} value={format}>\n {format}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n </div>\n\n <Collapsible.Root>\n <Collapsible.Trigger\n render={<ToggleAdvancedButton>Open advanced</ToggleAdvancedButton>}\n />\n <Collapsible.Panel className=\"pz:flex pz:flex-col pz:gap-2 pz:pt-2\">\n <div className=\"pz:flex pz:flex-col pz:gap-1\">\n <Label className=\"pz:text-xs pz:text-muted-foreground\">Outpue field name</Label>\n <Input\n value={extraction.output_field.name}\n onChange={(e) => updateOutputField(\"name\", e.target.value)}\n aria-invalid={!!nameError}\n />\n {nameError && (\n <span className=\"pz:text-destructive pz:text-xs pz:font-medium\" role=\"alert\">\n {nameError}\n </span>\n )}\n </div>\n <div className=\"pz:flex pz:flex-col pz:gap-1\">\n <Label className=\"pz:text-xs pz:text-muted-foreground\">Output field label</Label>\n <Input\n value={extraction.output_field.label}\n onChange={(e) => updateOutputField(\"label\", e.target.value)}\n placeholder=\"Describe your new field\"\n />\n </div>\n </Collapsible.Panel>\n </Collapsible.Root>\n </div>\n </div>\n {isLast && (\n <div>\n <Button type=\"button\" variant=\"link\" size=\"xs\" onClick={onAdd}>\n <IconPlus />\n Add path\n </Button>\n </div>\n )}\n </div>\n );\n}\n\nexport function JsonExtractionInputAdapter(field: FieldHandle<\"json_extraction_input\">) {\n const meta = field.meta as JSONExtractionMeta;\n const value = (field.value ?? {\n field_name: \"\",\n extractions: [],\n }) as JSONExtraction;\n\n const addExtraction = (fieldName?: string) => {\n const inputFieldName = fieldName || value.field_name;\n const isInitial = value.extractions.length === 0;\n const newValue: JSONExtraction = {\n field_name: inputFieldName,\n extractions: [\n ...value.extractions,\n {\n path: \"\",\n output_field: {\n name: `extract_${inputFieldName}_${generateRandomString(4)}`,\n format: null,\n label: \"Extract JSON\",\n type: \"string\",\n },\n },\n ],\n };\n if (isInitial) {\n // First selection just scaffolds an empty extraction skeleton — the\n // user hasn't entered real data yet, so don't mark the field as\n // dirty/touched or trigger validation. RHF's own flags are the\n // idiomatic way to express this.\n field.form.setValue(field.path as any, newValue, {\n shouldDirty: false,\n shouldTouch: false,\n shouldValidate: false,\n });\n } else {\n field.setValue(newValue);\n }\n };\n\n const removeAllExtractions = () => {\n // resetField is the idiomatic RHF way to return a field to a pristine\n // baseline: clears value, dirty, touched, and errors in one call.\n field.form.resetField(field.path as any, {\n defaultValue: { field_name: \"\", extractions: [] },\n });\n };\n\n const updateExtraction = (idx: number, ext: JSONExtraction[\"extractions\"][number]) => {\n const newExtractions = [...value.extractions];\n newExtractions[idx] = ext;\n field.setValue({ ...value, extractions: newExtractions });\n };\n\n const removeExtraction = (idx: number) => {\n const newExtractions = [...value.extractions];\n newExtractions.splice(idx, 1);\n if (newExtractions.length === 0) {\n field.setValue({ field_name: \"\", extractions: [] });\n } else {\n field.setValue({ ...value, extractions: newExtractions });\n }\n };\n\n const option = useMemo(\n () => meta.fields.find((e) => e.fieldName === value.field_name),\n [value.field_name, meta.fields],\n );\n\n return (\n <div data-p0=\"input\" className=\"pz:flex pz:flex-col pz:gap-3\">\n {value.field_name && value.extractions.length > 0 && option ? (\n <div className=\"pz:flex pz:flex-col pz:gap-2\">\n <div className=\"pz:flex pz:items-center pz:justify-between\">\n <Badge\n variant=\"secondary\"\n className=\"pz:h-7 pz:bg-accent pz:border-input pz:border pz:text-accent-foreground pz:font-normal\"\n >\n Field: <b>{option.fieldLabel || option.fieldName}</b>\n </Badge>\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"xs\"\n className=\"pz:font-normal pz:h-7\"\n onClick={removeAllExtractions}\n >\n Reset <IconTrash />\n </Button>\n </div>\n {value.extractions.map((extraction, idx) => (\n <ExtractionCard\n // biome-ignore lint/suspicious/noArrayIndexKey: index is stable\n key={idx}\n extraction={extraction}\n idx={idx}\n isLast={idx === value.extractions.length - 1}\n option={option}\n form={field.form}\n basePath={field.path}\n onUpdate={updateExtraction}\n onRemove={removeExtraction}\n onAdd={() => addExtraction()}\n />\n ))}\n </div>\n ) : meta.fields.length > 0 ? (\n <div className=\"pz:flex pz:flex-col pz:gap-2 pz:rounded-md pz:border-input\">\n <Select\n value=\"\"\n onValueChange={(v) => {\n if (v) addExtraction(v);\n }}\n >\n <SelectTrigger>\n <SelectValue placeholder=\"Select field\" />\n </SelectTrigger>\n <SelectContent>\n {meta.fields.map((f) => (\n <SelectItem key={f.fieldName} value={f.fieldName}>\n {f.fieldLabel} - {f.fieldName}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n ) : (\n <div className=\"pz:flex pz:items-center pz:gap-1.5 pz:rounded-md pz:px-1\">\n <div className=\"pz:text-xs pz:font-normal\">No JSON field available</div>\n <HoverInfo>\n A JSON field is required for this pipe. Add a json field to your pipeline.\n </HoverInfo>\n </div>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { cn } from "../../../lib/utils.mjs";
2
+ import { SchemaEditor } from "../../internal/schema-editor/SchemaEditor.mjs";
3
+ import { jsx } from "react/jsx-runtime";
4
+
5
+ //#region src/components/defaults/adapters/json-schema-input.tsx
6
+ /**
7
+ * Visual JSON Schema editor with type tags, nested property management,
8
+ * add/edit/delete properties, and required field toggling.
9
+ *
10
+ * For further customization, provide a custom adapter via FormProvider.
11
+ */
12
+ function JsonSchemaInputAdapter(field) {
13
+ const hasError = !!field.error;
14
+ return /* @__PURE__ */ jsx("div", {
15
+ "data-p0": "input",
16
+ "aria-invalid": hasError || void 0,
17
+ className: cn(hasError && "pz:rounded-md pz:border pz:border-destructive/60 pz:p-1"),
18
+ children: /* @__PURE__ */ jsx(SchemaEditor, {
19
+ value: field.value ?? {
20
+ type: "object",
21
+ properties: {}
22
+ },
23
+ onChange: field.setValue
24
+ })
25
+ });
26
+ }
27
+
28
+ //#endregion
29
+ export { JsonSchemaInputAdapter };
30
+ //# sourceMappingURL=json-schema-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema-input.mjs","names":[],"sources":["../../../../src/components/defaults/adapters/json-schema-input.tsx"],"sourcesContent":["import { cn } from \"../../../lib/utils.js\";\nimport type { FieldHandle } from \"../../../types/field-handle.js\";\nimport { SchemaEditor } from \"../../internal/schema-editor/SchemaEditor.js\";\n\n/**\n * Visual JSON Schema editor with type tags, nested property management,\n * add/edit/delete properties, and required field toggling.\n *\n * For further customization, provide a custom adapter via FormProvider.\n */\nexport function JsonSchemaInputAdapter(field: FieldHandle<\"json_schema_input\">) {\n const hasError = !!field.error;\n return (\n <div\n data-p0=\"input\"\n aria-invalid={hasError || undefined}\n className={cn(hasError && \"pz:rounded-md pz:border pz:border-destructive/60 pz:p-1\")}\n >\n <SchemaEditor\n value={field.value ?? { type: \"object\", properties: {} }}\n onChange={field.setValue}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AAUA,SAAgB,uBAAuB,OAAyC;CAC9E,MAAM,WAAW,CAAC,CAAC,MAAM;AACzB,QACE,oBAAC,OAAD;EACE,WAAQ;EACR,gBAAc,YAAY;EAC1B,WAAW,GAAG,YAAY,0DAA0D;YAEpF,oBAAC,cAAD;GACE,OAAO,MAAM,SAAS;IAAE,MAAM;IAAU,YAAY,EAAE;IAAE;GACxD,UAAU,MAAM;GAChB;EACE"}
@@ -0,0 +1,100 @@
1
+ import { Button } from "../../ui/button.mjs";
2
+ import { FieldLegend } from "../../internal/field-legend.mjs";
3
+ import { LiquidEditor } from "../../internal/LiquidEditor/LiquidEditor.mjs";
4
+ import { useState } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { Plus, X } from "lucide-react";
7
+
8
+ //#region src/components/defaults/adapters/key-value-list-input.tsx
9
+ /**
10
+ * Adapter for `pipesKeyValueListInput`. Each row's key and value cells use
11
+ * `LiquidEditor` so they support `/` references (input fields + secrets +
12
+ * constants in one picker). The kvl is used for things like HTTP headers
13
+ * and query params where either column may legitimately reference a field
14
+ * (e.g. a per-record `pageToken`) or a secret (e.g. an Authorization
15
+ * value).
16
+ *
17
+ * The unified legend would otherwise render twice per row (once per
18
+ * cell) — too noisy. The per-cell editors run with `hideLegend`; a
19
+ * single legend renders once below the entire list.
20
+ */
21
+ function KeyValueListInputAdapter(field) {
22
+ const { rows, addRow, removeRow, setKey, setValue, searchSecrets, meta } = field;
23
+ const maxItems = meta.maxItems ?? 50;
24
+ const canAdd = rows.length < maxItems;
25
+ const [ids, setIds] = useState(() => rows.map(() => crypto.randomUUID()));
26
+ if (ids.length < rows.length) setIds((prev) => [...prev, ...Array.from({ length: rows.length - prev.length }, () => crypto.randomUUID())]);
27
+ const handleAdd = () => {
28
+ setIds((prev) => [...prev, crypto.randomUUID()]);
29
+ addRow();
30
+ };
31
+ const handleRemove = (index) => {
32
+ setIds((prev) => prev.filter((_, i) => i !== index));
33
+ removeRow(index);
34
+ };
35
+ return /* @__PURE__ */ jsxs("div", {
36
+ "data-p0": "input",
37
+ className: "pz:flex pz:flex-col pz:gap-2",
38
+ children: [
39
+ rows.length === 0 && /* @__PURE__ */ jsx("p", {
40
+ className: "pz:text-xs pz:text-muted-foreground",
41
+ children: meta.keyLabel ? `No ${meta.keyLabel.toLowerCase()}s yet.` : "No entries yet."
42
+ }),
43
+ rows.map((row, index) => /* @__PURE__ */ jsxs("div", {
44
+ className: "pz:flex pz:items-start pz:gap-2",
45
+ children: [
46
+ /* @__PURE__ */ jsx("div", {
47
+ className: "pz:basis-1/3 pz:rounded-md pz:border pz:border-input pz:bg-transparent",
48
+ children: /* @__PURE__ */ jsx(LiquidEditor, {
49
+ value: row.key,
50
+ onChange: (v) => setKey(index, v),
51
+ inputFields: meta.inputFields ?? [],
52
+ searchSecrets,
53
+ placeholder: meta.keyPlaceholder ?? meta.keyLabel ?? "Key",
54
+ hideLegend: true
55
+ })
56
+ }),
57
+ /* @__PURE__ */ jsx("div", {
58
+ className: "pz:flex-1 pz:rounded-md pz:border pz:border-input pz:bg-transparent",
59
+ children: /* @__PURE__ */ jsx(LiquidEditor, {
60
+ value: row.value,
61
+ onChange: (v) => setValue(index, v),
62
+ inputFields: meta.inputFields ?? [],
63
+ searchSecrets,
64
+ placeholder: meta.valuePlaceholder ?? meta.valueLabel ?? "Value",
65
+ hideLegend: true
66
+ })
67
+ }),
68
+ /* @__PURE__ */ jsx(Button, {
69
+ type: "button",
70
+ variant: "ghost",
71
+ size: "icon",
72
+ "aria-label": "Remove row",
73
+ onClick: () => handleRemove(index),
74
+ children: /* @__PURE__ */ jsx(X, { className: "pz:size-4" })
75
+ })
76
+ ]
77
+ }, ids[index])),
78
+ rows.length > 0 && /* @__PURE__ */ jsx(FieldLegend, { entries: [{
79
+ key: "/",
80
+ label: "to insert a reference"
81
+ }] }),
82
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(Button, {
83
+ type: "button",
84
+ variant: "outline",
85
+ size: "sm",
86
+ onClick: handleAdd,
87
+ disabled: !canAdd,
88
+ children: [
89
+ /* @__PURE__ */ jsx(Plus, { className: "pz:size-4 pz:mr-1" }),
90
+ "Add ",
91
+ meta.keyLabel ?? "row"
92
+ ]
93
+ }) })
94
+ ]
95
+ });
96
+ }
97
+
98
+ //#endregion
99
+ export { KeyValueListInputAdapter };
100
+ //# sourceMappingURL=key-value-list-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-value-list-input.mjs","names":[],"sources":["../../../../src/components/defaults/adapters/key-value-list-input.tsx"],"sourcesContent":["import { Plus, X } from \"lucide-react\";\nimport { useState } from \"react\";\nimport type { FieldHandle } from \"../../../types/field-handle.js\";\nimport { FieldLegend } from \"../../internal/field-legend.js\";\nimport { LiquidEditor } from \"../../internal/LiquidEditor/LiquidEditor.js\";\nimport { Button } from \"../../ui/button.js\";\n\n/**\n * Adapter for `pipesKeyValueListInput`. Each row's key and value cells use\n * `LiquidEditor` so they support `/` references (input fields + secrets +\n * constants in one picker). The kvl is used for things like HTTP headers\n * and query params where either column may legitimately reference a field\n * (e.g. a per-record `pageToken`) or a secret (e.g. an Authorization\n * value).\n *\n * The unified legend would otherwise render twice per row (once per\n * cell) — too noisy. The per-cell editors run with `hideLegend`; a\n * single legend renders once below the entire list.\n */\nexport function KeyValueListInputAdapter(field: FieldHandle<\"key_value_list_input\">) {\n const { rows, addRow, removeRow, setKey, setValue, searchSecrets, meta } = field;\n const maxItems = meta.maxItems ?? 50;\n const canAdd = rows.length < maxItems;\n\n // Stable per-row identifiers, kept in lockstep with `rows`. The form value\n // is positional — `[{key, value}, ...]` — so reordering or removing the\n // row at index N would alias N's editor onto another row's content if we\n // keyed by index. We mirror mutations through `handleAdd`/`handleRemove`,\n // and lazily pad if `rows` was extended externally (e.g. form reset).\n const [ids, setIds] = useState<string[]>(() => rows.map(() => crypto.randomUUID()));\n if (ids.length < rows.length) {\n setIds((prev) => [\n ...prev,\n ...Array.from({ length: rows.length - prev.length }, () => crypto.randomUUID()),\n ]);\n }\n\n const handleAdd = () => {\n setIds((prev) => [...prev, crypto.randomUUID()]);\n addRow();\n };\n const handleRemove = (index: number) => {\n setIds((prev) => prev.filter((_, i) => i !== index));\n removeRow(index);\n };\n\n return (\n <div data-p0=\"input\" className=\"pz:flex pz:flex-col pz:gap-2\">\n {rows.length === 0 && (\n <p className=\"pz:text-xs pz:text-muted-foreground\">\n {meta.keyLabel ? `No ${meta.keyLabel.toLowerCase()}s yet.` : \"No entries yet.\"}\n </p>\n )}\n {rows.map((row, index) => (\n <div key={ids[index]} className=\"pz:flex pz:items-start pz:gap-2\">\n <div className=\"pz:basis-1/3 pz:rounded-md pz:border pz:border-input pz:bg-transparent\">\n <LiquidEditor\n value={row.key}\n onChange={(v) => setKey(index, v)}\n inputFields={meta.inputFields ?? []}\n searchSecrets={searchSecrets}\n placeholder={meta.keyPlaceholder ?? meta.keyLabel ?? \"Key\"}\n hideLegend\n />\n </div>\n <div className=\"pz:flex-1 pz:rounded-md pz:border pz:border-input pz:bg-transparent\">\n <LiquidEditor\n value={row.value}\n onChange={(v) => setValue(index, v)}\n inputFields={meta.inputFields ?? []}\n searchSecrets={searchSecrets}\n placeholder={meta.valuePlaceholder ?? meta.valueLabel ?? \"Value\"}\n hideLegend\n />\n </div>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n aria-label=\"Remove row\"\n onClick={() => handleRemove(index)}\n >\n <X className=\"pz:size-4\" />\n </Button>\n </div>\n ))}\n {rows.length > 0 && <FieldLegend entries={[{ key: \"/\", label: \"to insert a reference\" }]} />}\n <div>\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={handleAdd} disabled={!canAdd}>\n <Plus className=\"pz:size-4 pz:mr-1\" />\n Add {meta.keyLabel ?? \"row\"}\n </Button>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAmBA,SAAgB,yBAAyB,OAA4C;CACnF,MAAM,EAAE,MAAM,QAAQ,WAAW,QAAQ,UAAU,eAAe,SAAS;CAC3E,MAAM,WAAW,KAAK,YAAY;CAClC,MAAM,SAAS,KAAK,SAAS;CAO7B,MAAM,CAAC,KAAK,UAAU,eAAyB,KAAK,UAAU,OAAO,YAAY,CAAC,CAAC;AACnF,KAAI,IAAI,SAAS,KAAK,OACpB,SAAQ,SAAS,CACf,GAAG,MACH,GAAG,MAAM,KAAK,EAAE,QAAQ,KAAK,SAAS,KAAK,QAAQ,QAAQ,OAAO,YAAY,CAAC,CAChF,CAAC;CAGJ,MAAM,kBAAkB;AACtB,UAAQ,SAAS,CAAC,GAAG,MAAM,OAAO,YAAY,CAAC,CAAC;AAChD,UAAQ;;CAEV,MAAM,gBAAgB,UAAkB;AACtC,UAAQ,SAAS,KAAK,QAAQ,GAAG,MAAM,MAAM,MAAM,CAAC;AACpD,YAAU,MAAM;;AAGlB,QACE,qBAAC,OAAD;EAAK,WAAQ;EAAQ,WAAU;YAA/B;GACG,KAAK,WAAW,KACf,oBAAC,KAAD;IAAG,WAAU;cACV,KAAK,WAAW,MAAM,KAAK,SAAS,aAAa,CAAC,UAAU;IAC3D;GAEL,KAAK,KAAK,KAAK,UACd,qBAAC,OAAD;IAAsB,WAAU;cAAhC;KACE,oBAAC,OAAD;MAAK,WAAU;gBACb,oBAAC,cAAD;OACE,OAAO,IAAI;OACX,WAAW,MAAM,OAAO,OAAO,EAAE;OACjC,aAAa,KAAK,eAAe,EAAE;OACpB;OACf,aAAa,KAAK,kBAAkB,KAAK,YAAY;OACrD;OACA;MACE;KACN,oBAAC,OAAD;MAAK,WAAU;gBACb,oBAAC,cAAD;OACE,OAAO,IAAI;OACX,WAAW,MAAM,SAAS,OAAO,EAAE;OACnC,aAAa,KAAK,eAAe,EAAE;OACpB;OACf,aAAa,KAAK,oBAAoB,KAAK,cAAc;OACzD;OACA;MACE;KACN,oBAAC,QAAD;MACE,MAAK;MACL,SAAQ;MACR,MAAK;MACL,cAAW;MACX,eAAe,aAAa,MAAM;gBAElC,oBAAC,GAAD,EAAG,WAAU,aAAc;MACpB;KACL;MA9BI,IAAI,OA8BR,CACN;GACD,KAAK,SAAS,KAAK,oBAAC,aAAD,EAAa,SAAS,CAAC;IAAE,KAAK;IAAK,OAAO;IAAyB,CAAC,EAAI;GAC5F,oBAAC,OAAD,YACE,qBAAC,QAAD;IAAQ,MAAK;IAAS,SAAQ;IAAU,MAAK;IAAK,SAAS;IAAW,UAAU,CAAC;cAAjF;KACE,oBAAC,MAAD,EAAM,WAAU,qBAAsB;;KACjC,KAAK,YAAY;KACf;OACL;GACF"}
@@ -0,0 +1,65 @@
1
+ import { Input } from "../../ui/input.mjs";
2
+ import { useFieldError } from "../../../hooks/use-field-error.mjs";
3
+ import { Label } from "../../ui/label.mjs";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+
6
+ //#region src/components/defaults/adapters/min-max-int-input.tsx
7
+ function MinMaxIntInputAdapter(field) {
8
+ const minError = useFieldError(field.form, `${field.path}.min`);
9
+ const maxError = useFieldError(field.form, `${field.path}.max`);
10
+ const fromPathError = useFieldError(field.form, `${field.path}.from`);
11
+ const toPathError = useFieldError(field.form, `${field.path}.to`);
12
+ const fromError = minError ?? fromPathError;
13
+ const toError = maxError ?? toPathError;
14
+ return /* @__PURE__ */ jsxs("div", {
15
+ "data-p0": "input",
16
+ className: "pz:flex pz:flex-col pz:gap-1",
17
+ children: [/* @__PURE__ */ jsxs("div", {
18
+ className: "pz:flex pz:items-end pz:gap-2",
19
+ children: [
20
+ /* @__PURE__ */ jsxs("div", {
21
+ className: "pz:flex pz:flex-col pz:gap-1 pz:flex-1",
22
+ children: [/* @__PURE__ */ jsx(Label, {
23
+ className: "pz:text-xs pz:text-muted-foreground",
24
+ children: "Min"
25
+ }), /* @__PURE__ */ jsx(Input, {
26
+ type: "number",
27
+ value: field.from.value ?? "",
28
+ onChange: (e) => field.from.set(e.target.value === "" ? null : Number(e.target.value)),
29
+ min: field.meta.min,
30
+ max: field.meta.max,
31
+ step: 1,
32
+ "aria-invalid": !!fromError || !!field.error
33
+ })]
34
+ }),
35
+ /* @__PURE__ */ jsx("span", {
36
+ className: "pz:pb-2 pz:text-muted-foreground",
37
+ children: "–"
38
+ }),
39
+ /* @__PURE__ */ jsxs("div", {
40
+ className: "pz:flex pz:flex-col pz:gap-1 pz:flex-1",
41
+ children: [/* @__PURE__ */ jsx(Label, {
42
+ className: "pz:text-xs pz:text-muted-foreground",
43
+ children: "Max"
44
+ }), /* @__PURE__ */ jsx(Input, {
45
+ type: "number",
46
+ value: field.to.value ?? "",
47
+ onChange: (e) => field.to.set(e.target.value === "" ? null : Number(e.target.value)),
48
+ min: field.meta.min,
49
+ max: field.meta.max,
50
+ step: 1,
51
+ "aria-invalid": !!toError || !!field.error
52
+ })]
53
+ })
54
+ ]
55
+ }), (fromError || toError) && /* @__PURE__ */ jsx("span", {
56
+ className: "pz:text-destructive pz:text-xs pz:font-medium",
57
+ role: "alert",
58
+ children: fromError ?? toError
59
+ })]
60
+ });
61
+ }
62
+
63
+ //#endregion
64
+ export { MinMaxIntInputAdapter };
65
+ //# sourceMappingURL=min-max-int-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"min-max-int-input.mjs","names":[],"sources":["../../../../src/components/defaults/adapters/min-max-int-input.tsx"],"sourcesContent":["import { useFieldError } from \"../../../hooks/use-field-error.js\";\nimport type { FieldHandle } from \"../../../types/field-handle.js\";\nimport { Input } from \"../../ui/input.js\";\nimport { Label } from \"../../ui/label.js\";\n\nexport function MinMaxIntInputAdapter(field: FieldHandle<\"min_max_int_input\">) {\n const minError = useFieldError(field.form, `${field.path}.min`);\n const maxError = useFieldError(field.form, `${field.path}.max`);\n const fromPathError = useFieldError(field.form, `${field.path}.from`);\n const toPathError = useFieldError(field.form, `${field.path}.to`);\n const fromError = minError ?? fromPathError;\n const toError = maxError ?? toPathError;\n\n return (\n <div data-p0=\"input\" className=\"pz:flex pz:flex-col pz:gap-1\">\n <div className=\"pz:flex pz:items-end pz:gap-2\">\n <div className=\"pz:flex pz:flex-col pz:gap-1 pz:flex-1\">\n <Label className=\"pz:text-xs pz:text-muted-foreground\">Min</Label>\n <Input\n type=\"number\"\n value={field.from.value ?? \"\"}\n onChange={(e) => field.from.set(e.target.value === \"\" ? null : Number(e.target.value))}\n min={field.meta.min}\n max={field.meta.max}\n step={1}\n aria-invalid={!!fromError || !!field.error}\n />\n </div>\n <span className=\"pz:pb-2 pz:text-muted-foreground\">–</span>\n <div className=\"pz:flex pz:flex-col pz:gap-1 pz:flex-1\">\n <Label className=\"pz:text-xs pz:text-muted-foreground\">Max</Label>\n <Input\n type=\"number\"\n value={field.to.value ?? \"\"}\n onChange={(e) => field.to.set(e.target.value === \"\" ? null : Number(e.target.value))}\n min={field.meta.min}\n max={field.meta.max}\n step={1}\n aria-invalid={!!toError || !!field.error}\n />\n </div>\n </div>\n {(fromError || toError) && (\n <span className=\"pz:text-destructive pz:text-xs pz:font-medium\" role=\"alert\">\n {fromError ?? toError}\n </span>\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;AAKA,SAAgB,sBAAsB,OAAyC;CAC7E,MAAM,WAAW,cAAc,MAAM,MAAM,GAAG,MAAM,KAAK,MAAM;CAC/D,MAAM,WAAW,cAAc,MAAM,MAAM,GAAG,MAAM,KAAK,MAAM;CAC/D,MAAM,gBAAgB,cAAc,MAAM,MAAM,GAAG,MAAM,KAAK,OAAO;CACrE,MAAM,cAAc,cAAc,MAAM,MAAM,GAAG,MAAM,KAAK,KAAK;CACjE,MAAM,YAAY,YAAY;CAC9B,MAAM,UAAU,YAAY;AAE5B,QACE,qBAAC,OAAD;EAAK,WAAQ;EAAQ,WAAU;YAA/B,CACE,qBAAC,OAAD;GAAK,WAAU;aAAf;IACE,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,OAAD;MAAO,WAAU;gBAAsC;MAAW,GAClE,oBAAC,OAAD;MACE,MAAK;MACL,OAAO,MAAM,KAAK,SAAS;MAC3B,WAAW,MAAM,MAAM,KAAK,IAAI,EAAE,OAAO,UAAU,KAAK,OAAO,OAAO,EAAE,OAAO,MAAM,CAAC;MACtF,KAAK,MAAM,KAAK;MAChB,KAAK,MAAM,KAAK;MAChB,MAAM;MACN,gBAAc,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM;MACrC,EACE;;IACN,oBAAC,QAAD;KAAM,WAAU;eAAmC;KAAQ;IAC3D,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,OAAD;MAAO,WAAU;gBAAsC;MAAW,GAClE,oBAAC,OAAD;MACE,MAAK;MACL,OAAO,MAAM,GAAG,SAAS;MACzB,WAAW,MAAM,MAAM,GAAG,IAAI,EAAE,OAAO,UAAU,KAAK,OAAO,OAAO,EAAE,OAAO,MAAM,CAAC;MACpF,KAAK,MAAM,KAAK;MAChB,KAAK,MAAM,KAAK;MAChB,MAAM;MACN,gBAAc,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM;MACnC,EACE;;IACF;OACJ,aAAa,YACb,oBAAC,QAAD;GAAM,WAAU;GAAgD,MAAK;aAClE,aAAa;GACT,EAEL"}
@@ -0,0 +1,32 @@
1
+ import { useFieldError } from "../../../hooks/use-field-error.mjs";
2
+ import { SuggestCombobox } from "../../internal/combobox/suggest-combobox.mjs";
3
+ import { jsx } from "react/jsx-runtime";
4
+
5
+ //#region src/components/defaults/adapters/multi-create-input.tsx
6
+ function diffReplay(prev, next, add, remove) {
7
+ const prevSet = new Set(prev);
8
+ const nextSet = new Set(next);
9
+ for (const v of next) if (!prevSet.has(v)) add(v);
10
+ for (const v of prev) if (!nextSet.has(v)) remove(v);
11
+ }
12
+ function MultiCreateInputAdapter(field) {
13
+ const itemsError = useFieldError(field.form, field.path);
14
+ return /* @__PURE__ */ jsx("div", {
15
+ "data-p0": "input",
16
+ className: "pz:flex pz:flex-col pz:gap-1",
17
+ children: /* @__PURE__ */ jsx(SuggestCombobox, {
18
+ value: field.items,
19
+ onChange: (next) => diffReplay(field.items, next, field.add, field.remove),
20
+ options: field.options,
21
+ loadOptions: field.loadOptions,
22
+ allowCreate: true,
23
+ maxItems: field.meta.maxItems,
24
+ placeholder: field.meta.placeholder,
25
+ ariaInvalid: !!itemsError || !!field.error
26
+ })
27
+ });
28
+ }
29
+
30
+ //#endregion
31
+ export { MultiCreateInputAdapter };
32
+ //# sourceMappingURL=multi-create-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-create-input.mjs","names":[],"sources":["../../../../src/components/defaults/adapters/multi-create-input.tsx"],"sourcesContent":["import { useFieldError } from \"../../../hooks/use-field-error.js\";\nimport type { FieldHandle } from \"../../../types/field-handle.js\";\nimport { SuggestCombobox } from \"../../internal/combobox/suggest-combobox.js\";\n\nfunction diffReplay(\n prev: string[],\n next: string[],\n add: (v: string) => void,\n remove: (v: string) => void,\n) {\n const prevSet = new Set(prev);\n const nextSet = new Set(next);\n for (const v of next) if (!prevSet.has(v)) add(v);\n for (const v of prev) if (!nextSet.has(v)) remove(v);\n}\n\nexport function MultiCreateInputAdapter(field: FieldHandle<\"multi_create_input\">) {\n const itemsError = useFieldError(field.form, field.path);\n\n return (\n <div data-p0=\"input\" className=\"pz:flex pz:flex-col pz:gap-1\">\n <SuggestCombobox\n value={field.items}\n onChange={(next) => diffReplay(field.items, next, field.add, field.remove)}\n options={field.options}\n loadOptions={field.loadOptions}\n allowCreate\n maxItems={field.meta.maxItems}\n placeholder={field.meta.placeholder}\n ariaInvalid={!!itemsError || !!field.error}\n />\n </div>\n );\n}\n"],"mappings":";;;;;AAIA,SAAS,WACP,MACA,MACA,KACA,QACA;CACA,MAAM,UAAU,IAAI,IAAI,KAAK;CAC7B,MAAM,UAAU,IAAI,IAAI,KAAK;AAC7B,MAAK,MAAM,KAAK,KAAM,KAAI,CAAC,QAAQ,IAAI,EAAE,CAAE,KAAI,EAAE;AACjD,MAAK,MAAM,KAAK,KAAM,KAAI,CAAC,QAAQ,IAAI,EAAE,CAAE,QAAO,EAAE;;AAGtD,SAAgB,wBAAwB,OAA0C;CAChF,MAAM,aAAa,cAAc,MAAM,MAAM,MAAM,KAAK;AAExD,QACE,oBAAC,OAAD;EAAK,WAAQ;EAAQ,WAAU;YAC7B,oBAAC,iBAAD;GACE,OAAO,MAAM;GACb,WAAW,SAAS,WAAW,MAAM,OAAO,MAAM,MAAM,KAAK,MAAM,OAAO;GAC1E,SAAS,MAAM;GACf,aAAa,MAAM;GACnB;GACA,UAAU,MAAM,KAAK;GACrB,aAAa,MAAM,KAAK;GACxB,aAAa,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM;GACrC;EACE"}