@panneau/fields 5.0.0-alpha.2 → 5.0.0-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/README.md +186 -20
  2. package/dist/address/AddressField.css +44 -0
  3. package/dist/address/AddressField.d.ts +37 -0
  4. package/dist/address/AddressField.d.ts.map +1 -0
  5. package/dist/address/AddressField.js +411 -0
  6. package/dist/address/AddressField.js.map +1 -0
  7. package/dist/address/AddressField.module.js +22 -0
  8. package/dist/address/AddressField.module.js.map +1 -0
  9. package/dist/address/address.d.ts +23 -0
  10. package/dist/address/address.d.ts.map +1 -0
  11. package/dist/address/address.js +58 -0
  12. package/dist/address/address.js.map +1 -0
  13. package/dist/address/index.d.ts +3 -0
  14. package/dist/address/index.d.ts.map +1 -0
  15. package/dist/address/index.js +3 -0
  16. package/dist/boolean/BooleanField.d.ts +1 -1
  17. package/dist/boolean/BooleanField.js +78 -17
  18. package/dist/boolean/BooleanField.js.map +1 -1
  19. package/dist/boolean/index.d.ts +1 -1
  20. package/dist/color/ColorField.css +9 -0
  21. package/dist/color/ColorField.d.ts +12 -5
  22. package/dist/color/ColorField.d.ts.map +1 -1
  23. package/dist/color/ColorField.js +341 -81
  24. package/dist/color/ColorField.js.map +1 -1
  25. package/dist/color/ColorField.module.js +4 -2
  26. package/dist/color/ColorField.module.js.map +1 -1
  27. package/dist/color/index.d.ts +2 -1
  28. package/dist/color/index.d.ts.map +1 -1
  29. package/dist/color/index.js +3 -1
  30. package/dist/color/palette.d.ts +23 -0
  31. package/dist/color/palette.d.ts.map +1 -0
  32. package/dist/color/palette.js +34 -0
  33. package/dist/color/palette.js.map +1 -0
  34. package/dist/compound/Compound.css +26 -0
  35. package/dist/compound/Compound.module.js +16 -0
  36. package/dist/compound/Compound.module.js.map +1 -0
  37. package/dist/compound/compound.d.ts +56 -0
  38. package/dist/compound/compound.d.ts.map +1 -0
  39. package/dist/compound/compound.js +186 -0
  40. package/dist/compound/compound.js.map +1 -0
  41. package/dist/country/CountryField.css +42 -0
  42. package/dist/country/CountryField.d.ts +32 -0
  43. package/dist/country/CountryField.d.ts.map +1 -0
  44. package/dist/country/CountryField.js +424 -0
  45. package/dist/country/CountryField.js.map +1 -0
  46. package/dist/country/CountryField.module.js +20 -0
  47. package/dist/country/CountryField.module.js.map +1 -0
  48. package/dist/country/codes.d.ts +6 -0
  49. package/dist/country/codes.d.ts.map +1 -0
  50. package/dist/country/codes.js +261 -0
  51. package/dist/country/codes.js.map +1 -0
  52. package/dist/country/countries.d.ts +32 -0
  53. package/dist/country/countries.d.ts.map +1 -0
  54. package/dist/country/countries.js +60 -0
  55. package/dist/country/countries.js.map +1 -0
  56. package/dist/country/index.d.ts +3 -0
  57. package/dist/country/index.d.ts.map +1 -0
  58. package/dist/country/index.js +4 -0
  59. package/dist/credits/CreditsField.d.ts +15 -0
  60. package/dist/credits/CreditsField.d.ts.map +1 -0
  61. package/dist/credits/CreditsField.js +58 -0
  62. package/dist/credits/CreditsField.js.map +1 -0
  63. package/dist/credits/credits.d.ts +18 -0
  64. package/dist/credits/credits.d.ts.map +1 -0
  65. package/dist/credits/credits.js +33 -0
  66. package/dist/credits/credits.js.map +1 -0
  67. package/dist/credits/index.d.ts +5 -0
  68. package/dist/credits/index.d.ts.map +1 -0
  69. package/dist/credits/index.js +3 -0
  70. package/dist/date/DateField.d.ts +1 -1
  71. package/dist/date/DateField.js.map +1 -1
  72. package/dist/date/index.d.ts +1 -1
  73. package/dist/daterange/DateRangeField.css +9 -0
  74. package/dist/daterange/DateRangeField.d.ts +31 -0
  75. package/dist/daterange/DateRangeField.d.ts.map +1 -0
  76. package/dist/daterange/DateRangeField.js +372 -0
  77. package/dist/daterange/DateRangeField.js.map +1 -0
  78. package/dist/daterange/DateRangeField.module.js +12 -0
  79. package/dist/daterange/DateRangeField.module.js.map +1 -0
  80. package/dist/daterange/index.d.ts +3 -0
  81. package/dist/daterange/index.d.ts.map +1 -0
  82. package/dist/daterange/index.js +3 -0
  83. package/dist/daterange/range.d.ts +61 -0
  84. package/dist/daterange/range.d.ts.map +1 -0
  85. package/dist/daterange/range.js +119 -0
  86. package/dist/daterange/range.js.map +1 -0
  87. package/dist/datetime/DateTimeField.d.ts +1 -1
  88. package/dist/datetime/DateTimeField.js +107 -20
  89. package/dist/datetime/DateTimeField.js.map +1 -1
  90. package/dist/datetime/index.d.ts +1 -1
  91. package/dist/duration/DurationField.css +11 -0
  92. package/dist/duration/DurationField.d.ts +67 -0
  93. package/dist/duration/DurationField.d.ts.map +1 -0
  94. package/dist/duration/DurationField.js +260 -0
  95. package/dist/duration/DurationField.js.map +1 -0
  96. package/dist/duration/DurationField.module.js +12 -0
  97. package/dist/duration/DurationField.module.js.map +1 -0
  98. package/dist/duration/index.d.ts +2 -0
  99. package/dist/duration/index.d.ts.map +1 -0
  100. package/dist/duration/index.js +1 -0
  101. package/dist/email/EmailField.d.ts +2 -2
  102. package/dist/email/EmailField.js.map +1 -1
  103. package/dist/email/index.d.ts +1 -1
  104. package/dist/embed/EmbedField.css +60 -0
  105. package/dist/embed/EmbedField.d.ts +29 -0
  106. package/dist/embed/EmbedField.d.ts.map +1 -0
  107. package/dist/embed/EmbedField.js +309 -0
  108. package/dist/embed/EmbedField.js.map +1 -0
  109. package/dist/embed/EmbedField.module.js +22 -0
  110. package/dist/embed/EmbedField.module.js.map +1 -0
  111. package/dist/embed/index.d.ts +3 -0
  112. package/dist/embed/index.d.ts.map +1 -0
  113. package/dist/embed/index.js +3 -0
  114. package/dist/file/FileField.css +54 -0
  115. package/dist/file/FileField.d.ts +50 -0
  116. package/dist/file/FileField.d.ts.map +1 -0
  117. package/dist/file/FileField.js +288 -0
  118. package/dist/file/FileField.js.map +1 -0
  119. package/dist/file/FileField.module.js +22 -0
  120. package/dist/file/FileField.module.js.map +1 -0
  121. package/dist/file/index.d.ts +3 -0
  122. package/dist/file/index.d.ts.map +1 -0
  123. package/dist/file/index.js +1 -0
  124. package/dist/group/GroupField.css +20 -3
  125. package/dist/group/GroupField.d.ts +10 -4
  126. package/dist/group/GroupField.d.ts.map +1 -1
  127. package/dist/group/GroupField.js +71 -66
  128. package/dist/group/GroupField.js.map +1 -1
  129. package/dist/group/GroupField.module.js +10 -2
  130. package/dist/group/GroupField.module.js.map +1 -1
  131. package/dist/group/index.d.ts +1 -1
  132. package/dist/index.d.ts +21 -7
  133. package/dist/index.d.ts.map +1 -1
  134. package/dist/index.js +14 -2
  135. package/dist/json/JsonField.css +7 -0
  136. package/dist/json/JsonField.d.ts +22 -0
  137. package/dist/json/JsonField.d.ts.map +1 -0
  138. package/dist/json/JsonField.js +207 -0
  139. package/dist/json/JsonField.js.map +1 -0
  140. package/dist/json/JsonField.module.js +8 -0
  141. package/dist/json/JsonField.module.js.map +1 -0
  142. package/dist/json/index.d.ts +2 -0
  143. package/dist/json/index.d.ts.map +1 -0
  144. package/dist/json/index.js +1 -0
  145. package/dist/link/LinkField.css +12 -0
  146. package/dist/link/LinkField.d.ts +38 -0
  147. package/dist/link/LinkField.d.ts.map +1 -0
  148. package/dist/link/LinkField.js +742 -0
  149. package/dist/link/LinkField.js.map +1 -0
  150. package/dist/link/LinkField.module.js +8 -0
  151. package/dist/link/LinkField.module.js.map +1 -0
  152. package/dist/link/index.d.ts +3 -0
  153. package/dist/link/index.d.ts.map +1 -0
  154. package/dist/link/index.js +3 -0
  155. package/dist/link/link.d.ts +30 -0
  156. package/dist/link/link.d.ts.map +1 -0
  157. package/dist/link/link.js +63 -0
  158. package/dist/link/link.js.map +1 -0
  159. package/dist/link/pages.d.ts +17 -0
  160. package/dist/link/pages.d.ts.map +1 -0
  161. package/dist/link/pages.js +104 -0
  162. package/dist/link/pages.js.map +1 -0
  163. package/dist/locales/index.js.map +1 -1
  164. package/dist/localized/LocalizedField.css +27 -6
  165. package/dist/localized/LocalizedField.d.ts +19 -8
  166. package/dist/localized/LocalizedField.d.ts.map +1 -1
  167. package/dist/localized/LocalizedField.js +238 -105
  168. package/dist/localized/LocalizedField.js.map +1 -1
  169. package/dist/localized/LocalizedField.module.js +10 -4
  170. package/dist/localized/LocalizedField.module.js.map +1 -1
  171. package/dist/localized/index.d.ts +1 -1
  172. package/dist/location/LocationField.css +54 -0
  173. package/dist/location/LocationField.d.ts +31 -0
  174. package/dist/location/LocationField.d.ts.map +1 -0
  175. package/dist/location/LocationField.js +487 -0
  176. package/dist/location/LocationField.js.map +1 -0
  177. package/dist/location/LocationField.module.js +22 -0
  178. package/dist/location/LocationField.module.js.map +1 -0
  179. package/dist/location/LocationMap.d.ts +25 -0
  180. package/dist/location/LocationMap.d.ts.map +1 -0
  181. package/dist/location/LocationMap.js +205 -0
  182. package/dist/location/LocationMap.js.map +1 -0
  183. package/dist/location/index.d.ts +5 -0
  184. package/dist/location/index.d.ts.map +1 -0
  185. package/dist/location/index.js +4 -0
  186. package/dist/location/leafletCss.d.ts +2 -0
  187. package/dist/location/leafletCss.d.ts.map +1 -0
  188. package/dist/location/leafletCss.js +6 -0
  189. package/dist/location/leafletCss.js.map +1 -0
  190. package/dist/location/nominatim.d.ts +23 -0
  191. package/dist/location/nominatim.d.ts.map +1 -0
  192. package/dist/location/nominatim.js +79 -0
  193. package/dist/location/nominatim.js.map +1 -0
  194. package/dist/location/search.d.ts +10 -0
  195. package/dist/location/search.d.ts.map +1 -0
  196. package/dist/location/search.js +83 -0
  197. package/dist/location/search.js.map +1 -0
  198. package/dist/location/types.d.ts +46 -0
  199. package/dist/location/types.d.ts.map +1 -0
  200. package/dist/missing/MissingField.d.ts +4 -3
  201. package/dist/missing/MissingField.d.ts.map +1 -1
  202. package/dist/missing/MissingField.js +3 -2
  203. package/dist/missing/MissingField.js.map +1 -1
  204. package/dist/money/MoneyField.d.ts +28 -0
  205. package/dist/money/MoneyField.d.ts.map +1 -0
  206. package/dist/money/MoneyField.js +269 -0
  207. package/dist/money/MoneyField.js.map +1 -0
  208. package/dist/money/index.d.ts +3 -0
  209. package/dist/money/index.d.ts.map +1 -0
  210. package/dist/money/index.js +3 -0
  211. package/dist/money/money.d.ts +27 -0
  212. package/dist/money/money.d.ts.map +1 -0
  213. package/dist/money/money.js +56 -0
  214. package/dist/money/money.js.map +1 -0
  215. package/dist/number/NumberField.d.ts +1 -1
  216. package/dist/number/NumberField.js.map +1 -1
  217. package/dist/number/index.d.ts +1 -1
  218. package/dist/range/RangeField.d.ts +22 -0
  219. package/dist/range/RangeField.d.ts.map +1 -0
  220. package/dist/range/RangeField.js +203 -0
  221. package/dist/range/RangeField.js.map +1 -0
  222. package/dist/range/index.d.ts +2 -0
  223. package/dist/range/index.d.ts.map +1 -0
  224. package/dist/range/index.js +1 -0
  225. package/dist/region/RegionField.d.ts +23 -0
  226. package/dist/region/RegionField.d.ts.map +1 -0
  227. package/dist/region/RegionField.js +174 -0
  228. package/dist/region/RegionField.js.map +1 -0
  229. package/dist/region/RegionFlag.css +9 -0
  230. package/dist/region/RegionFlag.d.ts +20 -0
  231. package/dist/region/RegionFlag.d.ts.map +1 -0
  232. package/dist/region/RegionFlag.js +61 -0
  233. package/dist/region/RegionFlag.js.map +1 -0
  234. package/dist/region/RegionFlag.module.js +8 -0
  235. package/dist/region/RegionFlag.module.js.map +1 -0
  236. package/dist/region/data.d.ts +5 -0
  237. package/dist/region/data.d.ts.map +1 -0
  238. package/dist/region/data.js +513 -0
  239. package/dist/region/data.js.map +1 -0
  240. package/dist/region/flags/CA.d.ts +4 -0
  241. package/dist/region/flags/CA.d.ts.map +1 -0
  242. package/dist/region/flags/CA.js +21 -0
  243. package/dist/region/flags/CA.js.map +1 -0
  244. package/dist/region/flags/US.d.ts +4 -0
  245. package/dist/region/flags/US.d.ts.map +1 -0
  246. package/dist/region/flags/US.js +65 -0
  247. package/dist/region/flags/US.js.map +1 -0
  248. package/dist/region/flags.d.ts +17 -0
  249. package/dist/region/flags.d.ts.map +1 -0
  250. package/dist/region/flags.js +84 -0
  251. package/dist/region/flags.js.map +1 -0
  252. package/dist/region/index.d.ts +5 -0
  253. package/dist/region/index.d.ts.map +1 -0
  254. package/dist/region/index.js +5 -0
  255. package/dist/region/regions.d.ts +15 -0
  256. package/dist/region/regions.d.ts.map +1 -0
  257. package/dist/region/regions.js +29 -0
  258. package/dist/region/regions.js.map +1 -0
  259. package/dist/relation/RelationField.d.ts +2 -2
  260. package/dist/relation/RelationField.d.ts.map +1 -1
  261. package/dist/relation/RelationField.js +511 -171
  262. package/dist/relation/RelationField.js.map +1 -1
  263. package/dist/relation/index.d.ts +2 -2
  264. package/dist/repeater/RepeaterField.d.ts +13 -2
  265. package/dist/repeater/RepeaterField.d.ts.map +1 -1
  266. package/dist/repeater/RepeaterField.js +138 -50
  267. package/dist/repeater/RepeaterField.js.map +1 -1
  268. package/dist/repeater/index.d.ts +1 -1
  269. package/dist/select/SelectField.d.ts +1 -1
  270. package/dist/select/SelectField.js.map +1 -1
  271. package/dist/select/index.d.ts +1 -1
  272. package/dist/sessions/SessionsField.d.ts +15 -0
  273. package/dist/sessions/SessionsField.d.ts.map +1 -0
  274. package/dist/sessions/SessionsField.js +49 -0
  275. package/dist/sessions/SessionsField.js.map +1 -0
  276. package/dist/sessions/index.d.ts +4 -0
  277. package/dist/sessions/index.d.ts.map +1 -0
  278. package/dist/sessions/index.js +1 -0
  279. package/dist/shared/CodeComboBox.d.ts +21 -0
  280. package/dist/shared/CodeComboBox.d.ts.map +1 -0
  281. package/dist/shared/CodeComboBox.js +238 -0
  282. package/dist/shared/CodeComboBox.js.map +1 -0
  283. package/dist/shared/DefinitionField.d.ts +9 -4
  284. package/dist/shared/DefinitionField.d.ts.map +1 -1
  285. package/dist/shared/DefinitionField.js +98 -78
  286. package/dist/shared/DefinitionField.js.map +1 -1
  287. package/dist/shared/builtIn.d.ts +7 -3
  288. package/dist/shared/builtIn.d.ts.map +1 -1
  289. package/dist/shared/builtIn.js +39 -7
  290. package/dist/shared/builtIn.js.map +1 -1
  291. package/dist/shared/check.d.ts +27 -0
  292. package/dist/shared/check.d.ts.map +1 -0
  293. package/dist/shared/check.js +18 -0
  294. package/dist/shared/check.js.map +1 -0
  295. package/dist/shared/context.d.ts +33 -5
  296. package/dist/shared/context.d.ts.map +1 -1
  297. package/dist/shared/context.js +36 -20
  298. package/dist/shared/context.js.map +1 -1
  299. package/dist/shared/cx.js.map +1 -1
  300. package/dist/shared/dates.js +2 -2
  301. package/dist/shared/dates.js.map +1 -1
  302. package/dist/shared/embed.d.ts +19 -0
  303. package/dist/shared/embed.d.ts.map +1 -0
  304. package/dist/shared/embed.js +14 -0
  305. package/dist/shared/embed.js.map +1 -0
  306. package/dist/shared/entry.d.ts +13 -4
  307. package/dist/shared/entry.d.ts.map +1 -1
  308. package/dist/shared/entry.js +24 -7
  309. package/dist/shared/entry.js.map +1 -1
  310. package/dist/shared/flow.d.ts +8 -0
  311. package/dist/shared/flow.d.ts.map +1 -0
  312. package/dist/shared/flow.js +38 -0
  313. package/dist/shared/flow.js.map +1 -0
  314. package/dist/shared/part.d.ts +26 -0
  315. package/dist/shared/part.d.ts.map +1 -0
  316. package/dist/shared/part.js +64 -0
  317. package/dist/shared/part.js.map +1 -0
  318. package/dist/shared/relation.js.map +1 -1
  319. package/dist/shared/reveal.d.ts +16 -0
  320. package/dist/shared/reveal.d.ts.map +1 -0
  321. package/dist/shared/reveal.js +46 -0
  322. package/dist/shared/reveal.js.map +1 -0
  323. package/dist/shared/types.d.ts +12 -0
  324. package/dist/shared/types.d.ts.map +1 -1
  325. package/dist/slug/SlugField.css +18 -0
  326. package/dist/slug/SlugField.d.ts +33 -5
  327. package/dist/slug/SlugField.d.ts.map +1 -1
  328. package/dist/slug/SlugField.js +346 -126
  329. package/dist/slug/SlugField.js.map +1 -1
  330. package/dist/slug/SlugField.module.js +14 -0
  331. package/dist/slug/SlugField.module.js.map +1 -0
  332. package/dist/slug/index.d.ts +1 -1
  333. package/dist/slug/index.d.ts.map +1 -1
  334. package/dist/slug/index.js +1 -1
  335. package/dist/tags/TagsField.d.ts +17 -0
  336. package/dist/tags/TagsField.d.ts.map +1 -0
  337. package/dist/tags/TagsField.js +120 -0
  338. package/dist/tags/TagsField.js.map +1 -0
  339. package/dist/tags/index.d.ts +2 -0
  340. package/dist/tags/index.d.ts.map +1 -0
  341. package/dist/tags/index.js +1 -0
  342. package/dist/tel/TelField.css +25 -0
  343. package/dist/tel/TelField.d.ts +34 -0
  344. package/dist/tel/TelField.d.ts.map +1 -0
  345. package/dist/tel/TelField.js +390 -0
  346. package/dist/tel/TelField.js.map +1 -0
  347. package/dist/tel/TelField.module.js +12 -0
  348. package/dist/tel/TelField.module.js.map +1 -0
  349. package/dist/tel/index.d.ts +3 -0
  350. package/dist/tel/index.d.ts.map +1 -0
  351. package/dist/tel/index.js +3 -0
  352. package/dist/tel/phone.d.ts +59 -0
  353. package/dist/tel/phone.d.ts.map +1 -0
  354. package/dist/tel/phone.js +107 -0
  355. package/dist/tel/phone.js.map +1 -0
  356. package/dist/text/TextField.d.ts +12 -4
  357. package/dist/text/TextField.d.ts.map +1 -1
  358. package/dist/text/TextField.js +104 -60
  359. package/dist/text/TextField.js.map +1 -1
  360. package/dist/text/index.d.ts +1 -1
  361. package/dist/textarea/TextAreaField.d.ts +1 -1
  362. package/dist/textarea/TextAreaField.js.map +1 -1
  363. package/dist/textarea/index.d.ts +1 -1
  364. package/dist/time/TimeField.d.ts +1 -1
  365. package/dist/time/TimeField.js +64 -10
  366. package/dist/time/TimeField.js.map +1 -1
  367. package/dist/time/index.d.ts +1 -1
  368. package/dist/upload/FilePicker.css +24 -0
  369. package/dist/upload/FilePicker.d.ts +14 -0
  370. package/dist/upload/FilePicker.d.ts.map +1 -0
  371. package/dist/upload/FilePicker.js +130 -0
  372. package/dist/upload/FilePicker.js.map +1 -0
  373. package/dist/upload/FilePicker.module.js +12 -0
  374. package/dist/upload/FilePicker.module.js.map +1 -0
  375. package/dist/upload/UploadList.css +93 -0
  376. package/dist/upload/UploadList.d.ts +18 -0
  377. package/dist/upload/UploadList.d.ts.map +1 -0
  378. package/dist/upload/UploadList.js +144 -0
  379. package/dist/upload/UploadList.js.map +1 -0
  380. package/dist/upload/UploadList.module.js +32 -0
  381. package/dist/upload/UploadList.module.js.map +1 -0
  382. package/dist/upload/files.d.ts +5 -0
  383. package/dist/upload/files.d.ts.map +1 -0
  384. package/dist/upload/files.js +26 -0
  385. package/dist/upload/files.js.map +1 -0
  386. package/dist/upload/types.d.ts +58 -0
  387. package/dist/upload/types.d.ts.map +1 -0
  388. package/dist/upload/useRejectionMessage.d.ts +4 -0
  389. package/dist/upload/useRejectionMessage.d.ts.map +1 -0
  390. package/dist/upload/useRejectionMessage.js +25 -0
  391. package/dist/upload/useRejectionMessage.js.map +1 -0
  392. package/dist/upload/useUploads.d.ts +30 -0
  393. package/dist/upload/useUploads.d.ts.map +1 -0
  394. package/dist/upload/useUploads.js +115 -0
  395. package/dist/upload/useUploads.js.map +1 -0
  396. package/dist/uppy/index.d.ts +3 -0
  397. package/dist/uppy/index.d.ts.map +1 -0
  398. package/dist/uppy/index.js +1 -0
  399. package/dist/uppy/uploader.d.ts +44 -0
  400. package/dist/uppy/uploader.d.ts.map +1 -0
  401. package/dist/uppy/uploader.js +139 -0
  402. package/dist/uppy/uploader.js.map +1 -0
  403. package/dist/url/UrlField.d.ts +2 -2
  404. package/dist/url/UrlField.d.ts.map +1 -1
  405. package/dist/url/UrlField.js +69 -14
  406. package/dist/url/UrlField.js.map +1 -1
  407. package/dist/url/index.d.ts +1 -1
  408. package/package.json +110 -7
@@ -1,9 +1,11 @@
1
+ import { GroupFieldEntry } from "../group/GroupField.js";
1
2
  import { getParentPath, useFieldsContext } from "./context.js";
2
3
  import { LocalizedFieldEntry } from "../localized/LocalizedField.js";
3
4
  import { MissingFieldEntry } from "../missing/MissingField.js";
5
+ import { RepeaterFieldEntry } from "../repeater/RepeaterField.js";
4
6
  import { builtInFields } from "./builtIn.js";
5
7
  import { c } from "react/compiler-runtime";
6
- import { evaluateCondition } from "@panneau/protocol/runtime";
8
+ import { evaluateCondition, getNestedShape } from "@panneau/protocol/runtime";
7
9
  import { jsx } from "react/jsx-runtime";
8
10
  //#region src/shared/DefinitionField.tsx
9
11
  /**
@@ -13,115 +15,132 @@ import { jsx } from "react/jsx-runtime";
13
15
  * parent value is false.
14
16
  */
15
17
  function NestedField(t0) {
16
- const $ = c(33);
17
- const { field, path, value, onChange, onBlur, errors, parentValue, disabled, readOnly, className } = t0;
18
+ const $ = c(39);
19
+ const { field, path, value, onChange, onBlur, errors, parentValue, locale, hideLabel, disabled, readOnly, className } = t0;
18
20
  const { binding: Binding } = useFieldsContext();
19
21
  let t1;
20
- if ($[0] !== disabled) {
21
- t1 = disabled !== void 0 ? { disabled } : {};
22
- $[0] = disabled;
22
+ if ($[0] !== locale) {
23
+ t1 = locale !== void 0 ? { locale } : {};
24
+ $[0] = locale;
23
25
  $[1] = t1;
24
26
  } else t1 = $[1];
25
27
  let t2;
26
- if ($[2] !== readOnly) {
27
- t2 = readOnly !== void 0 ? { readOnly } : {};
28
- $[2] = readOnly;
28
+ if ($[2] !== hideLabel) {
29
+ t2 = hideLabel !== void 0 ? { hideLabel } : {};
30
+ $[2] = hideLabel;
29
31
  $[3] = t2;
30
32
  } else t2 = $[3];
31
33
  let t3;
32
- if ($[4] !== className) {
33
- t3 = className !== void 0 ? { className } : {};
34
- $[4] = className;
34
+ if ($[4] !== disabled) {
35
+ t3 = disabled !== void 0 ? { disabled } : {};
36
+ $[4] = disabled;
35
37
  $[5] = t3;
36
38
  } else t3 = $[5];
37
39
  let t4;
38
- if ($[6] !== field || $[7] !== parentValue || $[8] !== path || $[9] !== t1 || $[10] !== t2 || $[11] !== t3) {
39
- t4 = {
40
+ if ($[6] !== readOnly) {
41
+ t4 = readOnly !== void 0 ? { readOnly } : {};
42
+ $[6] = readOnly;
43
+ $[7] = t4;
44
+ } else t4 = $[7];
45
+ let t5;
46
+ if ($[8] !== className) {
47
+ t5 = className !== void 0 ? { className } : {};
48
+ $[8] = className;
49
+ $[9] = t5;
50
+ } else t5 = $[9];
51
+ let t6;
52
+ if ($[10] !== field || $[11] !== parentValue || $[12] !== path || $[13] !== t1 || $[14] !== t2 || $[15] !== t3 || $[16] !== t4 || $[17] !== t5) {
53
+ t6 = {
40
54
  field,
41
55
  path,
42
56
  parentValue,
43
57
  ...t1,
44
58
  ...t2,
45
- ...t3
59
+ ...t3,
60
+ ...t4,
61
+ ...t5
46
62
  };
47
- $[6] = field;
48
- $[7] = parentValue;
49
- $[8] = path;
50
- $[9] = t1;
51
- $[10] = t2;
52
- $[11] = t3;
53
- $[12] = t4;
54
- } else t4 = $[12];
55
- const shared = t4;
63
+ $[10] = field;
64
+ $[11] = parentValue;
65
+ $[12] = path;
66
+ $[13] = t1;
67
+ $[14] = t2;
68
+ $[15] = t3;
69
+ $[16] = t4;
70
+ $[17] = t5;
71
+ $[18] = t6;
72
+ } else t6 = $[18];
73
+ const shared = t6;
56
74
  if (Binding !== null) {
57
- let t5;
58
- if ($[13] !== path) {
59
- t5 = getParentPath(path);
60
- $[13] = path;
61
- $[14] = t5;
62
- } else t5 = $[14];
63
- let t6;
64
- if ($[15] !== shared) {
65
- t6 = (bound) => /* @__PURE__ */ jsx(DefinitionField, {
75
+ let t7;
76
+ if ($[19] !== path) {
77
+ t7 = getParentPath(path);
78
+ $[19] = path;
79
+ $[20] = t7;
80
+ } else t7 = $[20];
81
+ let t8;
82
+ if ($[21] !== shared) {
83
+ t8 = (bound) => /* @__PURE__ */ jsx(DefinitionField, {
66
84
  ...shared,
67
85
  ...bound
68
86
  });
69
- $[15] = shared;
70
- $[16] = t6;
71
- } else t6 = $[16];
72
- let t7;
73
- if ($[17] !== Binding || $[18] !== field || $[19] !== path || $[20] !== t5 || $[21] !== t6) {
74
- t7 = /* @__PURE__ */ jsx(Binding, {
87
+ $[21] = shared;
88
+ $[22] = t8;
89
+ } else t8 = $[22];
90
+ let t9;
91
+ if ($[23] !== Binding || $[24] !== field || $[25] !== path || $[26] !== t7 || $[27] !== t8) {
92
+ t9 = /* @__PURE__ */ jsx(Binding, {
75
93
  field,
76
94
  path,
77
- parentPath: t5,
78
- render: t6
95
+ parentPath: t7,
96
+ render: t8
79
97
  });
80
- $[17] = Binding;
81
- $[18] = field;
82
- $[19] = path;
83
- $[20] = t5;
84
- $[21] = t6;
85
- $[22] = t7;
86
- } else t7 = $[22];
87
- return t7;
98
+ $[23] = Binding;
99
+ $[24] = field;
100
+ $[25] = path;
101
+ $[26] = t7;
102
+ $[27] = t8;
103
+ $[28] = t9;
104
+ } else t9 = $[28];
105
+ return t9;
88
106
  }
89
107
  if (field.visibleWhen !== void 0 && !evaluateCondition(field.visibleWhen, parentValue)) return null;
90
- const t5 = onChange ?? _temp;
91
- let t6;
92
- if ($[23] !== onBlur) {
93
- t6 = onBlur !== void 0 ? { onBlur } : {};
94
- $[23] = onBlur;
95
- $[24] = t6;
96
- } else t6 = $[24];
97
- let t7;
98
- if ($[25] !== errors) {
99
- t7 = errors !== void 0 ? { errors } : {};
100
- $[25] = errors;
101
- $[26] = t7;
102
- } else t7 = $[26];
108
+ const t7 = onChange ?? _temp;
103
109
  let t8;
104
- if ($[27] !== shared || $[28] !== t5 || $[29] !== t6 || $[30] !== t7 || $[31] !== value) {
105
- t8 = /* @__PURE__ */ jsx(DefinitionField, {
110
+ if ($[29] !== onBlur) {
111
+ t8 = onBlur !== void 0 ? { onBlur } : {};
112
+ $[29] = onBlur;
113
+ $[30] = t8;
114
+ } else t8 = $[30];
115
+ let t9;
116
+ if ($[31] !== errors) {
117
+ t9 = errors !== void 0 ? { errors } : {};
118
+ $[31] = errors;
119
+ $[32] = t9;
120
+ } else t9 = $[32];
121
+ let t10;
122
+ if ($[33] !== shared || $[34] !== t7 || $[35] !== t8 || $[36] !== t9 || $[37] !== value) {
123
+ t10 = /* @__PURE__ */ jsx(DefinitionField, {
106
124
  ...shared,
107
125
  value,
108
- onChange: t5,
109
- ...t6,
110
- ...t7
126
+ onChange: t7,
127
+ ...t8,
128
+ ...t9
111
129
  });
112
- $[27] = shared;
113
- $[28] = t5;
114
- $[29] = t6;
115
- $[30] = t7;
116
- $[31] = value;
117
- $[32] = t8;
118
- } else t8 = $[32];
119
- return t8;
130
+ $[33] = shared;
131
+ $[34] = t7;
132
+ $[35] = t8;
133
+ $[36] = t9;
134
+ $[37] = value;
135
+ $[38] = t10;
136
+ } else t10 = $[38];
137
+ return t10;
120
138
  }
121
139
  /**
122
140
  * Renders a field of the definition with the entry of its type: from the fields context, or a
123
- * built-in one. A localized field renders an input per locale. A type without an entry renders a
124
- * placeholder that names the missing plugin.
141
+ * built-in one. A localized field renders an input per locale. A compound field without an entry
142
+ * (decision 0065) renders as a group, or as a repeater with `multiple`. Another type without an
143
+ * entry renders a placeholder that names the missing plugin.
125
144
  */
126
145
  function _temp() {}
127
146
  function DefinitionField(props) {
@@ -137,7 +156,8 @@ function DefinitionField(props) {
137
156
  } else t0 = $[1];
138
157
  return t0;
139
158
  }
140
- const Entry = components[field.type] ?? builtInFields[field.type] ?? MissingFieldEntry;
159
+ const shape = getNestedShape(field);
160
+ const Entry = components[field.type] ?? builtInFields[field.type] ?? (shape === "repeater" ? RepeaterFieldEntry : shape === "group" ? GroupFieldEntry : MissingFieldEntry);
141
161
  let t0;
142
162
  if ($[2] !== Entry || $[3] !== props) {
143
163
  t0 = /* @__PURE__ */ jsx(Entry, { ...props });
@@ -1 +1 @@
1
- {"version":3,"file":"DefinitionField.js","names":["field","path","value","_c"],"sources":["../../src/shared/DefinitionField.tsx"],"sourcesContent":["import type { Field } from '@panneau/protocol';\nimport { evaluateCondition } from '@panneau/protocol/runtime';\n\n// Groups, repeaters and localized values render nested fields, which render through\n// `DefinitionField`: the modules import each other, which is fine since they only use each other\n// while rendering.\nimport { LocalizedFieldEntry } from '../localized/LocalizedField';\nimport { MissingFieldEntry } from '../missing/MissingField';\nimport { builtInFields } from './builtIn';\nimport { getParentPath, useFieldsContext } from './context';\nimport type { FieldEntryProps } from './types';\n\nexport interface NestedFieldProps {\n field: Field;\n /** Dot path of the field's value. */\n path: string;\n /** The value, without a binding. */\n value?: unknown;\n /** Sets the value, without a binding. */\n onChange?: (value: unknown) => void;\n onBlur?: () => void;\n errors?: readonly string[];\n /** The object the field belongs to, for conditions and generated values. */\n parentValue?: unknown;\n disabled?: boolean;\n readOnly?: boolean;\n className?: string;\n}\n\n/**\n * A field inside another one (a group, a block, a localized value), or at the top of a form.\n * With a binding in context, the binding gives its value and decides whether it shows. Without\n * one, it uses `value` and `onChange`, and hides itself when its `visibleWhen` condition on the\n * parent value is false.\n */\nexport function NestedField({\n field,\n path,\n value,\n onChange,\n onBlur,\n errors,\n parentValue,\n disabled,\n readOnly,\n className,\n}: NestedFieldProps) {\n const { binding: Binding } = useFieldsContext();\n const shared = {\n field,\n path,\n parentValue,\n ...(disabled !== undefined ? { disabled } : {}),\n ...(readOnly !== undefined ? { readOnly } : {}),\n ...(className !== undefined ? { className } : {}),\n };\n if (Binding !== null) {\n return (\n <Binding\n field={field}\n path={path}\n parentPath={getParentPath(path)}\n render={(bound) => <DefinitionField {...shared} {...bound} />}\n />\n );\n }\n if (field.visibleWhen !== undefined && !evaluateCondition(field.visibleWhen, parentValue)) {\n return null;\n }\n return (\n <DefinitionField\n {...shared}\n value={value}\n onChange={onChange ?? (() => undefined)}\n {...(onBlur !== undefined ? { onBlur } : {})}\n {...(errors !== undefined ? { errors } : {})}\n />\n );\n}\n\n/**\n * Renders a field of the definition with the entry of its type: from the fields context, or a\n * built-in one. A localized field renders an input per locale. A type without an entry renders a\n * placeholder that names the missing plugin.\n */\nexport function DefinitionField(props: FieldEntryProps) {\n const { components } = useFieldsContext();\n const { field } = props;\n if (field.localized === true) {\n return <LocalizedFieldEntry {...props} />;\n }\n const Entry = components[field.type] ?? builtInFields[field.type] ?? MissingFieldEntry;\n return <Entry {...props} />;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DefinitionField.js","names":["Field","evaluateCondition","getNestedShape","GroupFieldEntry","LocalizedFieldEntry","MissingFieldEntry","RepeaterFieldEntry","builtInFields","getParentPath","useFieldsContext","FieldEntryProps","NestedFieldProps","field","path","value","onChange","onBlur","errors","parentValue","locale","hideLabel","disabled","readOnly","className","NestedField","t0","$","_c","binding","Binding","t1","undefined","t2","t3","t4","t5","t6","shared","t7","t8","bound","t9","visibleWhen","_temp","t10","DefinitionField","props","components","localized","shape","Entry","type","_c"],"sources":["../../src/shared/DefinitionField.tsx"],"sourcesContent":["import type { Field } from '@panneau/protocol';\nimport { evaluateCondition, getNestedShape } from '@panneau/protocol/runtime';\n\n// Groups, repeaters and localized values render nested fields, which render through\n// `DefinitionField`: the modules import each other, which is fine since they only use each other\n// while rendering.\nimport { GroupFieldEntry } from '../group/GroupField';\nimport { LocalizedFieldEntry } from '../localized/LocalizedField';\nimport { MissingFieldEntry } from '../missing/MissingField';\nimport { RepeaterFieldEntry } from '../repeater/RepeaterField';\nimport { builtInFields } from './builtIn';\nimport { getParentPath, useFieldsContext } from './context';\nimport type { FieldEntryProps } from './types';\n\nexport interface NestedFieldProps {\n field: Field;\n /** Dot path of the field's value. */\n path: string;\n /** The value, without a binding. */\n value?: unknown;\n /** Sets the value, without a binding. */\n onChange?: (value: unknown) => void;\n onBlur?: () => void;\n errors?: readonly string[];\n /** The object the field belongs to, for conditions and generated values. */\n parentValue?: unknown;\n /** The locale of the value, in a localized field. */\n locale?: string;\n /** Renders the field without a visible label, named by its label for assistive technologies. */\n hideLabel?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n className?: string;\n}\n\n/**\n * A field inside another one (a group, a block, a localized value), or at the top of a form.\n * With a binding in context, the binding gives its value and decides whether it shows. Without\n * one, it uses `value` and `onChange`, and hides itself when its `visibleWhen` condition on the\n * parent value is false.\n */\nexport function NestedField({\n field,\n path,\n value,\n onChange,\n onBlur,\n errors,\n parentValue,\n locale,\n hideLabel,\n disabled,\n readOnly,\n className,\n}: NestedFieldProps) {\n const { binding: Binding } = useFieldsContext();\n const shared = {\n field,\n path,\n parentValue,\n ...(locale !== undefined ? { locale } : {}),\n ...(hideLabel !== undefined ? { hideLabel } : {}),\n ...(disabled !== undefined ? { disabled } : {}),\n ...(readOnly !== undefined ? { readOnly } : {}),\n ...(className !== undefined ? { className } : {}),\n };\n if (Binding !== null) {\n return (\n <Binding\n field={field}\n path={path}\n parentPath={getParentPath(path)}\n render={(bound) => <DefinitionField {...shared} {...bound} />}\n />\n );\n }\n if (field.visibleWhen !== undefined && !evaluateCondition(field.visibleWhen, parentValue)) {\n return null;\n }\n return (\n <DefinitionField\n {...shared}\n value={value}\n onChange={onChange ?? (() => undefined)}\n {...(onBlur !== undefined ? { onBlur } : {})}\n {...(errors !== undefined ? { errors } : {})}\n />\n );\n}\n\n/**\n * Renders a field of the definition with the entry of its type: from the fields context, or a\n * built-in one. A localized field renders an input per locale. A compound field without an entry\n * (decision 0065) renders as a group, or as a repeater with `multiple`. Another type without an\n * entry renders a placeholder that names the missing plugin.\n */\nexport function DefinitionField(props: FieldEntryProps) {\n const { components } = useFieldsContext();\n const { field } = props;\n if (field.localized === true) {\n return <LocalizedFieldEntry {...props} />;\n }\n const shape = getNestedShape(field);\n const Entry =\n components[field.type] ??\n builtInFields[field.type] ??\n (shape === 'repeater'\n ? RepeaterFieldEntry\n : shape === 'group'\n ? GroupFieldEntry\n : MissingFieldEntry);\n return <Entry {...props} />;\n}\n"],"mappings":"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"}
@@ -1,7 +1,11 @@
1
- import type { FieldEntry } from './types';
1
+ import type { FieldEntry } from './types.js';
2
2
  /**
3
- * The entries of the built-in field types. `richtext` and `media` come with their plugins (Phase
4
- * 2): until then, `DefinitionField` renders a placeholder for them.
3
+ * The entries of the built-in field types. `richtext` and `media` come with their plugins
4
+ * (`@panneau/editor` and `@panneau/media`): without them, `DefinitionField` renders a placeholder.
5
+ * `file` uploads through the upload source of the fields context, or gives the files themselves.
6
+ * `embed`, `location` and `address` use its embed source and its maps; `location` loads Leaflet
7
+ * when shown. `link` searches its pages with the relation source, and picks its files with the
8
+ * `media` entry.
5
9
  */
6
10
  export declare const builtInFields: Readonly<Record<string, FieldEntry>>;
7
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"builtIn.d.ts","sourceRoot":"","sources":["../../src/shared/builtIn.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAgB9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAK7D,CAAC"}
1
+ {"version":3,"file":"builtIn.d.ts","sourceRoot":"","sources":["../../src/shared/builtIn.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CA8B9D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAK7D,CAAC"}
@@ -1,23 +1,41 @@
1
- import { BooleanFieldEntry } from "../boolean/BooleanField.js";
1
+ import { GroupFieldEntry } from "../group/GroupField.js";
2
+ import { RepeaterFieldEntry } from "../repeater/RepeaterField.js";
3
+ import { CountryFieldEntry } from "../country/CountryField.js";
4
+ import { LocationFieldEntry } from "../location/LocationField.js";
2
5
  import { TextFieldEntry } from "../text/TextField.js";
6
+ import { RegionFieldEntry } from "../region/RegionField.js";
7
+ import { AddressFieldEntry } from "../address/AddressField.js";
8
+ import { BooleanFieldEntry } from "../boolean/BooleanField.js";
3
9
  import { ColorFieldEntry } from "../color/ColorField.js";
4
10
  import { DateFieldEntry } from "../date/DateField.js";
11
+ import { DateRangeFieldEntry } from "../daterange/DateRangeField.js";
5
12
  import { DateTimeFieldEntry } from "../datetime/DateTimeField.js";
13
+ import { DurationFieldEntry } from "../duration/DurationField.js";
6
14
  import { EmailFieldEntry } from "../email/EmailField.js";
7
- import { GroupFieldEntry } from "../group/GroupField.js";
15
+ import { EmbedFieldEntry } from "../embed/EmbedField.js";
16
+ import { FileFieldEntry } from "../file/FileField.js";
17
+ import { JsonFieldEntry } from "../json/JsonField.js";
18
+ import { TelFieldEntry } from "../tel/TelField.js";
19
+ import { UrlFieldEntry } from "../url/UrlField.js";
20
+ import { LinkFieldEntry } from "../link/LinkField.js";
21
+ import { MoneyFieldEntry } from "../money/MoneyField.js";
8
22
  import { NumberFieldEntry } from "../number/NumberField.js";
23
+ import { RangeFieldEntry } from "../range/RangeField.js";
9
24
  import { RelationFieldEntry } from "../relation/RelationField.js";
10
- import { RepeaterFieldEntry } from "../repeater/RepeaterField.js";
11
25
  import { SelectFieldEntry } from "../select/SelectField.js";
12
26
  import { SlugFieldEntry } from "../slug/SlugField.js";
27
+ import { TagsFieldEntry } from "../tags/TagsField.js";
13
28
  import { TextAreaFieldEntry } from "../textarea/TextAreaField.js";
14
29
  import { TimeFieldEntry } from "../time/TimeField.js";
15
- import { UrlFieldEntry } from "../url/UrlField.js";
16
30
  import { fr } from "@panneau/intl";
17
31
  //#region src/shared/builtIn.ts
18
32
  /**
19
- * The entries of the built-in field types. `richtext` and `media` come with their plugins (Phase
20
- * 2): until then, `DefinitionField` renders a placeholder for them.
33
+ * The entries of the built-in field types. `richtext` and `media` come with their plugins
34
+ * (`@panneau/editor` and `@panneau/media`): without them, `DefinitionField` renders a placeholder.
35
+ * `file` uploads through the upload source of the fields context, or gives the files themselves.
36
+ * `embed`, `location` and `address` use its embed source and its maps; `location` loads Leaflet
37
+ * when shown. `link` searches its pages with the relation source, and picks its files with the
38
+ * `media` entry.
21
39
  */
22
40
  var builtInFields = {
23
41
  text: TextFieldEntry,
@@ -32,9 +50,23 @@ var builtInFields = {
32
50
  url: UrlFieldEntry,
33
51
  color: ColorFieldEntry,
34
52
  slug: SlugFieldEntry,
53
+ file: FileFieldEntry,
35
54
  relation: RelationFieldEntry,
36
55
  group: GroupFieldEntry,
37
- repeater: RepeaterFieldEntry
56
+ repeater: RepeaterFieldEntry,
57
+ tel: TelFieldEntry,
58
+ range: RangeFieldEntry,
59
+ duration: DurationFieldEntry,
60
+ json: JsonFieldEntry,
61
+ tags: TagsFieldEntry,
62
+ embed: EmbedFieldEntry,
63
+ location: LocationFieldEntry,
64
+ country: CountryFieldEntry,
65
+ region: RegionFieldEntry,
66
+ address: AddressFieldEntry,
67
+ link: LinkFieldEntry,
68
+ daterange: DateRangeFieldEntry,
69
+ money: MoneyFieldEntry
38
70
  };
39
71
  /**
40
72
  * The built-in fields as a `@panneau/core` plugin: their entries, and the French messages of
@@ -1 +1 @@
1
- {"version":3,"file":"builtIn.js","names":[],"sources":["../../src/shared/builtIn.ts"],"sourcesContent":["import { fr } from '@panneau/intl';\n\nimport { BooleanFieldEntry } from '../boolean/BooleanField';\nimport { ColorFieldEntry } from '../color/ColorField';\nimport { DateFieldEntry } from '../date/DateField';\nimport { DateTimeFieldEntry } from '../datetime/DateTimeField';\nimport { EmailFieldEntry } from '../email/EmailField';\nimport { GroupFieldEntry } from '../group/GroupField';\nimport { NumberFieldEntry } from '../number/NumberField';\nimport { RelationFieldEntry } from '../relation/RelationField';\nimport { RepeaterFieldEntry } from '../repeater/RepeaterField';\nimport { SelectFieldEntry } from '../select/SelectField';\nimport { SlugFieldEntry } from '../slug/SlugField';\nimport { TextFieldEntry } from '../text/TextField';\nimport { TextAreaFieldEntry } from '../textarea/TextAreaField';\nimport { TimeFieldEntry } from '../time/TimeField';\nimport { UrlFieldEntry } from '../url/UrlField';\nimport type { FieldEntry } from './types';\n\n/**\n * The entries of the built-in field types. `richtext` and `media` come with their plugins (Phase\n * 2): until then, `DefinitionField` renders a placeholder for them.\n */\nexport const builtInFields: Readonly<Record<string, FieldEntry>> = {\n text: TextFieldEntry,\n textarea: TextAreaFieldEntry,\n number: NumberFieldEntry,\n boolean: BooleanFieldEntry,\n date: DateFieldEntry,\n datetime: DateTimeFieldEntry,\n time: TimeFieldEntry,\n select: SelectFieldEntry,\n email: EmailFieldEntry,\n url: UrlFieldEntry,\n color: ColorFieldEntry,\n slug: SlugFieldEntry,\n relation: RelationFieldEntry,\n group: GroupFieldEntry,\n repeater: RepeaterFieldEntry,\n};\n\n/**\n * The built-in fields as a `@panneau/core` plugin: their entries, and the French messages of\n * every Panneau package (`@panneau/ui`, `@panneau/fields`, `@panneau/forms`…, from\n * `@panneau/intl`). Pass it before the plugins that override a type.\n */\nexport const fieldsPlugin: {\n id: string;\n fields: Readonly<Record<string, FieldEntry>>;\n locales: Readonly<Record<string, Record<string, string>>>;\n} = {\n id: 'panneau-fields',\n fields: builtInFields,\n locales: { fr },\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAuBA,IAAa,gBAAsD;CAC/D,MAAM;CACN,UAAU;CACV,QAAQ;CACR,SAAS;CACT,MAAM;CACN,UAAU;CACV,MAAM;CACN,QAAQ;CACR,OAAO;CACP,KAAK;CACL,OAAO;CACP,MAAM;CACN,UAAU;CACV,OAAO;CACP,UAAU;AACd;;;;;;AAOA,IAAa,eAIT;CACA,IAAI;CACJ,QAAQ;CACR,SAAS,EAAE,GAAG;AAClB"}
1
+ {"version":3,"file":"builtIn.js","names":["fr","AddressFieldEntry","BooleanFieldEntry","ColorFieldEntry","CountryFieldEntry","DateFieldEntry","DateRangeFieldEntry","DateTimeFieldEntry","DurationFieldEntry","EmailFieldEntry","EmbedFieldEntry","FileFieldEntry","GroupFieldEntry","JsonFieldEntry","LinkFieldEntry","LocationFieldEntry","MoneyFieldEntry","NumberFieldEntry","RangeFieldEntry","RegionFieldEntry","RelationFieldEntry","RepeaterFieldEntry","SelectFieldEntry","SlugFieldEntry","TagsFieldEntry","TelFieldEntry","TextFieldEntry","TextAreaFieldEntry","TimeFieldEntry","UrlFieldEntry","FieldEntry","builtInFields","Readonly","Record","text","textarea","number","boolean","date","datetime","time","select","email","url","color","slug","file","relation","group","repeater","tel","range","duration","json","tags","embed","location","country","region","address","link","daterange","money","fieldsPlugin","id","fields","locales"],"sources":["../../src/shared/builtIn.ts"],"sourcesContent":["import { fr } from '@panneau/intl';\n\nimport { AddressFieldEntry } from '../address/AddressField';\nimport { BooleanFieldEntry } from '../boolean/BooleanField';\nimport { ColorFieldEntry } from '../color/ColorField';\nimport { CountryFieldEntry } from '../country/CountryField';\nimport { DateFieldEntry } from '../date/DateField';\nimport { DateRangeFieldEntry } from '../daterange/DateRangeField';\nimport { DateTimeFieldEntry } from '../datetime/DateTimeField';\nimport { DurationFieldEntry } from '../duration/DurationField';\nimport { EmailFieldEntry } from '../email/EmailField';\nimport { EmbedFieldEntry } from '../embed/EmbedField';\nimport { FileFieldEntry } from '../file/FileField';\nimport { GroupFieldEntry } from '../group/GroupField';\nimport { JsonFieldEntry } from '../json/JsonField';\nimport { LinkFieldEntry } from '../link/LinkField';\nimport { LocationFieldEntry } from '../location/LocationField';\nimport { MoneyFieldEntry } from '../money/MoneyField';\nimport { NumberFieldEntry } from '../number/NumberField';\nimport { RangeFieldEntry } from '../range/RangeField';\nimport { RegionFieldEntry } from '../region/RegionField';\nimport { RelationFieldEntry } from '../relation/RelationField';\nimport { RepeaterFieldEntry } from '../repeater/RepeaterField';\nimport { SelectFieldEntry } from '../select/SelectField';\nimport { SlugFieldEntry } from '../slug/SlugField';\nimport { TagsFieldEntry } from '../tags/TagsField';\nimport { TelFieldEntry } from '../tel/TelField';\nimport { TextFieldEntry } from '../text/TextField';\nimport { TextAreaFieldEntry } from '../textarea/TextAreaField';\nimport { TimeFieldEntry } from '../time/TimeField';\nimport { UrlFieldEntry } from '../url/UrlField';\nimport type { FieldEntry } from './types';\n\n/**\n * The entries of the built-in field types. `richtext` and `media` come with their plugins\n * (`@panneau/editor` and `@panneau/media`): without them, `DefinitionField` renders a placeholder.\n * `file` uploads through the upload source of the fields context, or gives the files themselves.\n * `embed`, `location` and `address` use its embed source and its maps; `location` loads Leaflet\n * when shown. `link` searches its pages with the relation source, and picks its files with the\n * `media` entry.\n */\nexport const builtInFields: Readonly<Record<string, FieldEntry>> = {\n text: TextFieldEntry,\n textarea: TextAreaFieldEntry,\n number: NumberFieldEntry,\n boolean: BooleanFieldEntry,\n date: DateFieldEntry,\n datetime: DateTimeFieldEntry,\n time: TimeFieldEntry,\n select: SelectFieldEntry,\n email: EmailFieldEntry,\n url: UrlFieldEntry,\n color: ColorFieldEntry,\n slug: SlugFieldEntry,\n file: FileFieldEntry,\n relation: RelationFieldEntry,\n group: GroupFieldEntry,\n repeater: RepeaterFieldEntry,\n tel: TelFieldEntry,\n range: RangeFieldEntry,\n duration: DurationFieldEntry,\n json: JsonFieldEntry,\n tags: TagsFieldEntry,\n embed: EmbedFieldEntry,\n location: LocationFieldEntry,\n country: CountryFieldEntry,\n region: RegionFieldEntry,\n address: AddressFieldEntry,\n link: LinkFieldEntry,\n daterange: DateRangeFieldEntry,\n money: MoneyFieldEntry,\n};\n\n/**\n * The built-in fields as a `@panneau/core` plugin: their entries, and the French messages of\n * every Panneau package (`@panneau/ui`, `@panneau/fields`, `@panneau/forms`…, from\n * `@panneau/intl`). Pass it before the plugins that override a type.\n */\nexport const fieldsPlugin: {\n id: string;\n fields: Readonly<Record<string, FieldEntry>>;\n locales: Readonly<Record<string, Record<string, string>>>;\n} = {\n id: 'panneau-fields',\n fields: builtInFields,\n locales: { fr },\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,IAAa+B,gBAAsD;CAC/DG,MAAMR;CACNS,UAAUR;CACVS,QAAQnB;CACRoB,SAASnC;CACToC,MAAMjC;CACNkC,UAAUhC;CACViC,MAAMZ;CACNa,QAAQnB;CACRoB,OAAOjC;CACPkC,KAAKd;CACLe,OAAOzC;CACP0C,MAAMtB;CACNuB,MAAMnC;CACNoC,UAAU3B;CACV4B,OAAOpC;CACPqC,UAAU5B;CACV6B,KAAKzB;CACL0B,OAAOjC;CACPkC,UAAU5C;CACV6C,MAAMxC;CACNyC,MAAM9B;CACN+B,OAAO7C;CACP8C,UAAUzC;CACV0C,SAASrD;CACTsD,QAAQvC;CACRwC,SAAS1D;CACT2D,MAAM9C;CACN+C,WAAWvD;CACXwD,OAAO9C;AACX;;;;;;AAOA,IAAa+C,eAIT;CACAC,IAAI;CACJC,QAAQlC;CACRmC,SAAS,EAAElE,GAAG;AAClB"}
@@ -0,0 +1,27 @@
1
+ import type { FieldCheckRequest, FieldCheckResponse } from '@panneau/protocol';
2
+ /**
3
+ * Where fields with `check` check their value as it is typed: whether a slug is available, and
4
+ * its URL. The value's locale and the form's values come with each check.
5
+ */
6
+ export interface FieldCheckSource {
7
+ check(field: string, request: {
8
+ value: string;
9
+ locale?: string;
10
+ values?: Record<string, unknown>;
11
+ }, options: {
12
+ signal: AbortSignal;
13
+ }): Promise<FieldCheckResponse>;
14
+ }
15
+ /** What `createFieldCheckSource()` needs from an adapter: the `checkField()` of `@panneau/data`. */
16
+ export interface FieldCheckAdapter {
17
+ checkField?(resource: string, field: string, request: FieldCheckRequest, options?: {
18
+ signal?: AbortSignal;
19
+ }): Promise<FieldCheckResponse>;
20
+ }
21
+ /**
22
+ * The check source of a form of a resource, through an adapter (`POST
23
+ * /resources/{resource}/fields/{field}/check`): `id` is the item being edited, or null when
24
+ * creating one. Null when the adapter can't check.
25
+ */
26
+ export declare function createFieldCheckSource(adapter: FieldCheckAdapter, resource: string, id?: string | null): FieldCheckSource | null;
27
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/shared/check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE/E;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CACD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAC7E,OAAO,EAAE;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAClC;AAED,oGAAoG;AACpG,MAAM,WAAW,iBAAiB;IAC9B,UAAU,CAAC,CACP,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACnC,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,MAAM,EAChB,EAAE,GAAE,MAAM,GAAG,IAAW,GACzB,gBAAgB,GAAG,IAAI,CASzB"}
@@ -0,0 +1,18 @@
1
+ //#region src/shared/check.ts
2
+ /**
3
+ * The check source of a form of a resource, through an adapter (`POST
4
+ * /resources/{resource}/fields/{field}/check`): `id` is the item being edited, or null when
5
+ * creating one. Null when the adapter can't check.
6
+ */
7
+ function createFieldCheckSource(adapter, resource, id = null) {
8
+ const { checkField } = adapter;
9
+ if (checkField === void 0) return null;
10
+ return { check: (field, request, { signal }) => checkField.call(adapter, resource, field, {
11
+ ...request,
12
+ id
13
+ }, { signal }) };
14
+ }
15
+ //#endregion
16
+ export { createFieldCheckSource };
17
+
18
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","names":["FieldCheckRequest","FieldCheckResponse","FieldCheckSource","check","field","request","value","locale","values","Record","options","signal","AbortSignal","Promise","FieldCheckAdapter","checkField","resource","createFieldCheckSource","adapter","id","undefined","call"],"sources":["../../src/shared/check.ts"],"sourcesContent":["import type { FieldCheckRequest, FieldCheckResponse } from '@panneau/protocol';\n\n/**\n * Where fields with `check` check their value as it is typed: whether a slug is available, and\n * its URL. The value's locale and the form's values come with each check.\n */\nexport interface FieldCheckSource {\n check(\n field: string,\n request: { value: string; locale?: string; values?: Record<string, unknown> },\n options: { signal: AbortSignal },\n ): Promise<FieldCheckResponse>;\n}\n\n/** What `createFieldCheckSource()` needs from an adapter: the `checkField()` of `@panneau/data`. */\nexport interface FieldCheckAdapter {\n checkField?(\n resource: string,\n field: string,\n request: FieldCheckRequest,\n options?: { signal?: AbortSignal },\n ): Promise<FieldCheckResponse>;\n}\n\n/**\n * The check source of a form of a resource, through an adapter (`POST\n * /resources/{resource}/fields/{field}/check`): `id` is the item being edited, or null when\n * creating one. Null when the adapter can't check.\n */\nexport function createFieldCheckSource(\n adapter: FieldCheckAdapter,\n resource: string,\n id: string | null = null,\n): FieldCheckSource | null {\n const { checkField } = adapter;\n if (checkField === undefined) {\n return null;\n }\n return {\n check: (field, request, { signal }) =>\n checkField.call(adapter, resource, field, { ...request, id }, { signal }),\n };\n}\n"],"mappings":";;;;;;AA6BA,SAAgBiB,uBACZC,SACAF,UACAG,KAAoB,MACG;CACvB,MAAM,EAAEJ,eAAeG;CACvB,IAAIH,eAAeK,KAAAA,GACf,OAAO;CAEX,OAAO,EACHjB,QAAQC,OAAOC,SAAS,EAAEM,aACtBI,WAAWM,KAAKH,SAASF,UAAUZ,OAAO;EAAE,GAAGC;EAASc;CAAG,GAAG,EAAER,OAAO,CAAC,EAChF;AACJ"}
@@ -1,13 +1,22 @@
1
1
  import { type ComponentType, type ReactNode } from 'react';
2
2
  import type { Field } from '@panneau/protocol';
3
- import type { RelationSource } from './relation';
4
- import type { FieldEntry } from './types';
3
+ import type { MapsConfig } from '../location/types.js';
4
+ import type { UploadSource } from '../upload/types.js';
5
+ import type { FieldCheckSource } from './check.js';
6
+ import type { EmbedSource } from './embed.js';
7
+ import type { RelationSource } from './relation.js';
8
+ import type { FieldEntry } from './types.js';
5
9
  /** What a binding gives a field: its value, handlers and errors at a path. */
6
10
  export interface BoundFieldProps {
7
11
  value: unknown;
8
12
  onChange: (value: unknown) => void;
9
13
  onBlur?: () => void;
10
14
  errors?: readonly string[];
15
+ /**
16
+ * Paths inside the field that have errors (`title.en`), for fields that show their nested
17
+ * fields themselves: a localized field marks its locales in error.
18
+ */
19
+ invalidPaths?: readonly string[];
11
20
  }
12
21
  /** Props of a binding: it decides whether a field shows, and where its value comes from. */
13
22
  export interface FieldBindingProps {
@@ -32,6 +41,17 @@ export interface FieldsContextValue {
32
41
  locales: readonly string[];
33
42
  /** Where relation fields search for items. */
34
43
  relationSource: RelationSource | null;
44
+ /**
45
+ * Where fields that take files upload them directly to storage. Without one, they give the
46
+ * files themselves.
47
+ */
48
+ uploadSource: UploadSource | null;
49
+ /** Where fields with `check` check their value, such as a slug's availability. */
50
+ checkSource: FieldCheckSource | null;
51
+ /** Where `embed` fields get what a URL embeds. Without one, they keep the URL alone. */
52
+ embedSource: EmbedSource | null;
53
+ /** The tiles and the address search of `location` fields. */
54
+ maps: MapsConfig | null;
35
55
  binding: FieldBinding | null;
36
56
  }
37
57
  /** The fields context of the closest `FieldsProvider`. */
@@ -41,15 +61,23 @@ export interface FieldsProviderProps {
41
61
  components?: Readonly<Record<string, FieldEntry>>;
42
62
  locales?: readonly string[];
43
63
  relationSource?: RelationSource | null;
64
+ /** Make it once, outside of render: fields make an uploader for each source they get. */
65
+ uploadSource?: UploadSource | null;
66
+ /** `createFieldCheckSource(adapter, resource, id)`, for the form of an item. */
67
+ checkSource?: FieldCheckSource | null;
68
+ /** `createEmbedSource(adapter)`. */
69
+ embedSource?: EmbedSource | null;
70
+ /** The tiles and the address search of `location` fields. */
71
+ maps?: MapsConfig | null;
44
72
  binding?: FieldBinding | null;
45
73
  children?: ReactNode;
46
74
  }
47
75
  /**
48
76
  * Provides what fields rendered from a definition need: the components of each type, the locales
49
- * of localized values, a relation source and a binding. Values not given come from the parent
50
- * provider.
77
+ * of localized values, the sources of relations, uploads, checks and embeds, the maps of
78
+ * locations, and a binding. Values not given come from the parent provider.
51
79
  */
52
- export declare function FieldsProvider({ components, locales, relationSource, binding, children, }: FieldsProviderProps): import("react").JSX.Element;
80
+ export declare function FieldsProvider({ components, locales, relationSource, uploadSource, checkSource, embedSource, maps, binding, children, }: FieldsProviderProps): import("react").JSX.Element;
53
81
  /** The parent path of a path: `blocks.2` for `blocks.2.title`, `''` for `title`. */
54
82
  export declare function getParentPath(path: string): string;
55
83
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/shared/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAsB,MAAM,OAAO,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,8EAA8E;AAC9E,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,4FAA4F;AAC5F,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,2FAA2F;IAC3F,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,MAAM,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,SAAS,CAAC;CACjD;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IAC/B,+DAA+D;IAC/D,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACjD,6CAA6C;IAC7C,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,8CAA8C;IAC9C,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;CAChC;AASD,0DAA0D;AAC1D,wBAAgB,gBAAgB,IAAI,kBAAkB,CAErD;AAED,MAAM,WAAW,mBAAmB;IAChC,uEAAuE;IACvE,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC3B,UAAU,EACV,OAAO,EACP,cAAc,EACd,OAAO,EACP,QAAQ,GACX,EAAE,mBAAmB,+BAUrB;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGlD"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/shared/context.tsx"],"names":[],"mappings":"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"}
@@ -1,11 +1,15 @@
1
1
  import { c } from "react/compiler-runtime";
2
- import { createContext, use } from "react";
3
2
  import { jsx } from "react/jsx-runtime";
3
+ import { createContext, use } from "react";
4
4
  //#region src/shared/context.tsx
5
5
  var FieldsContext = createContext({
6
6
  components: {},
7
7
  locales: [],
8
8
  relationSource: null,
9
+ uploadSource: null,
10
+ checkSource: null,
11
+ embedSource: null,
12
+ maps: null,
9
13
  binding: null
10
14
  });
11
15
  /** The fields context of the closest `FieldsProvider`. */
@@ -14,12 +18,12 @@ function useFieldsContext() {
14
18
  }
15
19
  /**
16
20
  * Provides what fields rendered from a definition need: the components of each type, the locales
17
- * of localized values, a relation source and a binding. Values not given come from the parent
18
- * provider.
21
+ * of localized values, the sources of relations, uploads, checks and embeds, the maps of
22
+ * locations, and a binding. Values not given come from the parent provider.
19
23
  */
20
24
  function FieldsProvider(t0) {
21
- const $ = c(11);
22
- const { components, locales, relationSource, binding, children } = t0;
25
+ const $ = c(15);
26
+ const { components, locales, relationSource, uploadSource, checkSource, embedSource, maps, binding, children } = t0;
23
27
  const parent = use(FieldsContext);
24
28
  let t1;
25
29
  if ($[0] !== components || $[1] !== parent.components) {
@@ -33,33 +37,45 @@ function FieldsProvider(t0) {
33
37
  } else t1 = $[2];
34
38
  const t2 = locales ?? parent.locales;
35
39
  const t3 = relationSource === void 0 ? parent.relationSource : relationSource;
36
- const t4 = binding === void 0 ? parent.binding : binding;
37
- let t5;
38
- if ($[3] !== t1 || $[4] !== t2 || $[5] !== t3 || $[6] !== t4) {
39
- t5 = {
40
+ const t4 = uploadSource === void 0 ? parent.uploadSource : uploadSource;
41
+ const t5 = checkSource === void 0 ? parent.checkSource : checkSource;
42
+ const t6 = embedSource === void 0 ? parent.embedSource : embedSource;
43
+ const t7 = maps === void 0 ? parent.maps : maps;
44
+ const t8 = binding === void 0 ? parent.binding : binding;
45
+ let t9;
46
+ if ($[3] !== t1 || $[4] !== t2 || $[5] !== t3 || $[6] !== t4 || $[7] !== t5 || $[8] !== t6 || $[9] !== t7 || $[10] !== t8) {
47
+ t9 = {
40
48
  components: t1,
41
49
  locales: t2,
42
50
  relationSource: t3,
43
- binding: t4
51
+ uploadSource: t4,
52
+ checkSource: t5,
53
+ embedSource: t6,
54
+ maps: t7,
55
+ binding: t8
44
56
  };
45
57
  $[3] = t1;
46
58
  $[4] = t2;
47
59
  $[5] = t3;
48
60
  $[6] = t4;
49
61
  $[7] = t5;
50
- } else t5 = $[7];
51
- const value = t5;
52
- let t6;
53
- if ($[8] !== children || $[9] !== value) {
54
- t6 = /* @__PURE__ */ jsx(FieldsContext, {
62
+ $[8] = t6;
63
+ $[9] = t7;
64
+ $[10] = t8;
65
+ $[11] = t9;
66
+ } else t9 = $[11];
67
+ const value = t9;
68
+ let t10;
69
+ if ($[12] !== children || $[13] !== value) {
70
+ t10 = /* @__PURE__ */ jsx(FieldsContext, {
55
71
  value,
56
72
  children
57
73
  });
58
- $[8] = children;
59
- $[9] = value;
60
- $[10] = t6;
61
- } else t6 = $[10];
62
- return t6;
74
+ $[12] = children;
75
+ $[13] = value;
76
+ $[14] = t10;
77
+ } else t10 = $[14];
78
+ return t10;
63
79
  }
64
80
  /** The parent path of a path: `blocks.2` for `blocks.2.title`, `''` for `title`. */
65
81
  function getParentPath(path) {