@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
@@ -0,0 +1,46 @@
1
+ import type { AddressValue } from '@panneau/protocol';
2
+ /** A place an address search found: what it shows, its point, and the parts of its address. */
3
+ export interface GeocodingResult {
4
+ label: string;
5
+ lat: number;
6
+ lng: number;
7
+ /**
8
+ * The parts of its address, when the source knows them: `address` fields fill theirs with them
9
+ * (decision 0054), and leave out the results without them.
10
+ */
11
+ address?: Omit<AddressValue, 'point'>;
12
+ }
13
+ /**
14
+ * Where `location` and `address` fields search addresses (decisions 0033 and 0054). Projects bring their own: a service
15
+ * with a key, their backend, or `createNominatimSource()` for small volumes.
16
+ */
17
+ export interface GeocodingSource {
18
+ /** The places that match an address or a name, best first. */
19
+ search(query: string, options: {
20
+ signal: AbortSignal;
21
+ locale?: string;
22
+ }): Promise<GeocodingResult[]>;
23
+ /** The address of a point, to fill it in when the point is placed on the map. Optional. */
24
+ reverse?(point: {
25
+ lat: number;
26
+ lng: number;
27
+ }, options: {
28
+ signal: AbortSignal;
29
+ locale?: string;
30
+ }): Promise<GeocodingResult | null>;
31
+ }
32
+ /** Raster tiles of the maps of `location` fields. */
33
+ export interface MapTiles {
34
+ /** URL template of the tiles: `https://tile.openstreetmap.org/{z}/{x}/{y}.png`. */
35
+ url: string;
36
+ /** The credit the tiles ask for, as HTML. */
37
+ attribution: string;
38
+ /** Highest zoom of the tiles. Defaults to 19. */
39
+ maxZoom?: number;
40
+ }
41
+ /** The tiles and the address search of the maps of `location` fields. */
42
+ export interface MapsConfig {
43
+ tiles?: MapTiles;
44
+ geocoding?: GeocodingSource;
45
+ }
46
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/location/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,+FAA+F;AAC/F,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,8DAA8D;IAC9D,MAAM,CACF,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAClD,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC9B,2FAA2F;IAC3F,OAAO,CAAC,CACJ,KAAK,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EACnC,OAAO,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAClD,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;CACtC;AAED,qDAAqD;AACrD,MAAM,WAAW,QAAQ;IACrB,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;IACZ,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yEAAyE;AACzE,MAAM,WAAW,UAAU;IACvB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC/B"}
@@ -1,7 +1,8 @@
1
- import type { FieldEntryProps } from '../shared/types';
1
+ import type { FieldEntryProps } from '../shared/types.js';
2
2
  /**
3
- * The slot of a field type that no plugin provides, such as `richtext` and `media` until Phase 2:
4
- * it keeps the field's place in the form and names the missing type. The value is left as is.
3
+ * The slot of a field type that no plugin provides, such as `richtext` and `media` without
4
+ * `@panneau/editor` and `@panneau/media`: it keeps the field's place in the form and names the
5
+ * missing type. The value is left as is.
5
6
  */
6
7
  export declare function MissingFieldEntry({ field, className }: FieldEntryProps): import("react").JSX.Element;
7
8
  //# sourceMappingURL=MissingField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MissingField.d.ts","sourceRoot":"","sources":["../../src/missing/MissingField.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,eAAe,+BAUtE"}
1
+ {"version":3,"file":"MissingField.d.ts","sourceRoot":"","sources":["../../src/missing/MissingField.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,eAAe,+BAUtE"}
@@ -6,8 +6,9 @@ import { usePanneauIntl } from "@panneau/ui";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/missing/MissingField.tsx
8
8
  /**
9
- * The slot of a field type that no plugin provides, such as `richtext` and `media` until Phase 2:
10
- * it keeps the field's place in the form and names the missing type. The value is left as is.
9
+ * The slot of a field type that no plugin provides, such as `richtext` and `media` without
10
+ * `@panneau/editor` and `@panneau/media`: it keeps the field's place in the form and names the
11
+ * missing type. The value is left as is.
11
12
  */
12
13
  function MissingFieldEntry(t0) {
13
14
  const $ = c(14);
@@ -1 +1 @@
1
- {"version":3,"file":"MissingField.js","names":["_c","styles"],"sources":["../../src/missing/MissingField.tsx"],"sourcesContent":["import { usePanneauIntl } from '@panneau/ui';\n\nimport { cx } from '../shared/cx';\nimport { messages } from '../shared/messages';\nimport type { FieldEntryProps } from '../shared/types';\nimport styles from './MissingField.module.css';\n\n/**\n * The slot of a field type that no plugin provides, such as `richtext` and `media` until Phase 2:\n * it keeps the field's place in the form and names the missing type. The value is left as is.\n */\nexport function MissingFieldEntry({ field, className }: FieldEntryProps) {\n const intl = usePanneauIntl();\n return (\n <div className={cx(styles.missing, className)} data-field-type={field.type}>\n <span className={styles.label}>{field.label ?? field.name}</span>\n <p className={styles.notice} role=\"note\">\n {intl.formatMessage(messages.missingPlugin, { type: field.type })}\n </p>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AAWA,SAAO,kBAAA,IAAA;CAAA,MAAA,IAAAA,EAAA,EAAA;CAA2B,MAAA,EAAA,OAAA,cAAA;CAC9B,MAAA,OAAa,eAAe;CAAE,IAAA;CAAA,IAAA,EAAA,OAAA,WAAA;EAEV,KAAA,GAAGC,4BAAM,SAAU,SAAS;EAAC,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAmB,MAAA,KAAA,MAAK;CACjC,MAAA,KAAA,MAAK,SAAU,MAAK;CAAK,IAAA;CAAA,IAAA,EAAA,OAAA,IAAA;EAAzD,KAAA,oBAAA,QAAA;GAAiB,WAAAA,4BAAM;GAAS,UAAA;EAAiC,CAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,MAAA,QAAA,EAAA,OAAA,MAAA;EAE5D,KAAA,KAAI,cAAe,SAAQ,eAAgB,EAAA,MAAQ,MAAK,KAAM,CAAC;EAAC,EAAA,KAAA,MAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,IAAA;EADrE,KAAA,oBAAA,KAAA;GAAc,WAAAA,4BAAM;GAAc,MAAA;GAC7B,UAAA;EACD,CAAA;EAAA,EAAA,KAAA;EAAA,EAAA,KAAA;CAAA,OAAA,KAAA,EAAA;CAAA,IAAA;CAAA,IAAA,EAAA,OAAA,MAAA,QAAA,EAAA,QAAA,MAAA,EAAA,QAAA,MAAA,EAAA,QAAA,IAAA;EAJR,KAAA,qBAAA,OAAA;GAAgB,WAAA;GAAgD,mBAAA;GAAhE,UAAA,CACI,IACA,EAGE;;EAAA,EAAA,KAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;EAAA,EAAA,MAAA;CAAA,OAAA,KAAA,EAAA;CAAA,OALN;AAKM"}
1
+ {"version":3,"file":"MissingField.js","names":["usePanneauIntl","cx","messages","FieldEntryProps","styles","MissingFieldEntry","t0","$","_c","field","className","intl","t1","missing","t2","type","t3","label","name","t4","t5","formatMessage","missingPlugin","t6","notice","t7","_c","styles"],"sources":["../../src/missing/MissingField.tsx"],"sourcesContent":["import { usePanneauIntl } from '@panneau/ui';\n\nimport { cx } from '../shared/cx';\nimport { messages } from '../shared/messages';\nimport type { FieldEntryProps } from '../shared/types';\nimport styles from './MissingField.module.css';\n\n/**\n * The slot of a field type that no plugin provides, such as `richtext` and `media` without\n * `@panneau/editor` and `@panneau/media`: it keeps the field's place in the form and names the\n * missing type. The value is left as is.\n */\nexport function MissingFieldEntry({ field, className }: FieldEntryProps) {\n const intl = usePanneauIntl();\n return (\n <div className={cx(styles.missing, className)} data-field-type={field.type}>\n <span className={styles.label}>{field.label ?? field.name}</span>\n <p className={styles.notice} role=\"note\">\n {intl.formatMessage(messages.missingPlugin, { type: field.type })}\n </p>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAYA,SAAOK,kBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAA2B,MAAA,EAAAC,OAAAC,cAAAJ;CAC9B,MAAAK,OAAaX,eAAe;CAAE,IAAAY;CAAA,IAAAL,EAAA,OAAAG,WAAA;EAEVE,KAAAX,GAAGG,4BAAMS,SAAUH,SAAS;EAACH,EAAA,KAAAG;EAAAH,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAmB,MAAAO,KAAAL,MAAKM;CACjC,MAAAC,KAAAP,MAAKQ,SAAUR,MAAKS;CAAK,IAAAC;CAAA,IAAAZ,EAAA,OAAAS,IAAA;EAAzDG,KAAA,oBAAA,QAAA;GAAiB,WAAAf,4BAAMa;GAASD,UAAAA;EAAiC,CAAA;EAAAT,EAAA,KAAAS;EAAAT,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAE,MAAAM,QAAAR,EAAA,OAAAI,MAAA;EAE5DS,KAAAT,KAAIU,cAAenB,SAAQoB,eAAgB,EAAAP,MAAQN,MAAKM,KAAM,CAAC;EAACR,EAAA,KAAAE,MAAAM;EAAAR,EAAA,KAAAI;EAAAJ,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,OAAAa,IAAA;EADrEG,KAAA,oBAAA,KAAA;GAAc,WAAAnB,4BAAMoB;GAAc,MAAA;GAC7BJ,UAAAA;EACD,CAAA;EAAAb,EAAA,KAAAa;EAAAb,EAAA,KAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,IAAAkB;CAAA,IAAAlB,EAAA,OAAAE,MAAAM,QAAAR,EAAA,QAAAK,MAAAL,EAAA,QAAAY,MAAAZ,EAAA,QAAAgB,IAAA;EAJRE,KAAA,qBAAA,OAAA;GAAgB,WAAAb;GAAgD,mBAAAE;GAAhE,UAAA,CACIK,IACAI,EAGE;;EAAAhB,EAAA,KAAAE,MAAAM;EAAAR,EAAA,MAAAK;EAAAL,EAAA,MAAAY;EAAAZ,EAAA,MAAAgB;EAAAhB,EAAA,MAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAAA,OALNkB;AAKM"}
@@ -0,0 +1,28 @@
1
+ import type { FieldEntryProps, FieldProps } from '../shared/types.js';
2
+ import { type MoneyFieldValue } from './money.js';
3
+ export interface MoneyFieldProps extends FieldProps<MoneyFieldValue> {
4
+ /** The currency of every amount (`CAD`): the field shows it, and can't change it. */
5
+ currency?: string | null;
6
+ /**
7
+ * The currencies the user picks from, the first one for a new amount. Without `currency` or
8
+ * `currencies`, every currency.
9
+ */
10
+ currencies?: readonly string[] | null;
11
+ /** The smallest amount, in minor units. */
12
+ min?: number;
13
+ /** The largest amount, in minor units. */
14
+ max?: number;
15
+ placeholder?: string;
16
+ controlClassName?: string;
17
+ inputClassName?: string;
18
+ }
19
+ /**
20
+ * An amount and its currency, `{ amount, currency }`, with the amount in minor units (decision
21
+ * 0053): typed in the currency format of the locale, with the digits of the currency, and turned
22
+ * into minor units without floating point errors. A fixed `currency` shows in the amount; otherwise
23
+ * a menu after the amount picks it. Clearing the amount gives `null`.
24
+ */
25
+ export declare function MoneyField({ value, onChange, currency: fixed, currencies, min, max, disabled, readOnly, required, ...props }: MoneyFieldProps): import("react").JSX.Element;
26
+ /** The `money` type: settings `currency` and `currencies`, `min` and `max` from its rules. */
27
+ export declare function MoneyFieldEntry(props: FieldEntryProps): import("react").JSX.Element;
28
+ //# sourceMappingURL=MoneyField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MoneyField.d.ts","sourceRoot":"","sources":["../../src/money/MoneyField.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAEH,KAAK,eAAe,EAKvB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,eAAgB,SAAQ,UAAU,CAAC,eAAe,CAAC;IAChE,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACtC,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,QAAQ,EAAE,KAAK,EACf,UAAU,EACV,GAAG,EACH,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,eAAe,+BAsDjB;AAED,8FAA8F;AAC9F,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,+BAmBrD"}
@@ -0,0 +1,269 @@
1
+ import { getFieldProps, getRuleNumber, getSetting, isString } from "../shared/entry.js";
2
+ import { messages } from "../shared/messages.js";
3
+ import { CURRENCY_CODES, getCurrencyName, getMoneyFormatOptions, isMoneyValue, toMoneyValue } from "./money.js";
4
+ import { c } from "react/compiler-runtime";
5
+ import { fromMinorUnits } from "@panneau/protocol/runtime";
6
+ import { NumberInput, Select, usePanneauIntl } from "@panneau/ui";
7
+ import { jsx } from "react/jsx-runtime";
8
+ import { useState } from "react";
9
+ //#region src/money/MoneyField.tsx
10
+ /**
11
+ * An amount and its currency, `{ amount, currency }`, with the amount in minor units (decision
12
+ * 0053): typed in the currency format of the locale, with the digits of the currency, and turned
13
+ * into minor units without floating point errors. A fixed `currency` shows in the amount; otherwise
14
+ * a menu after the amount picks it. Clearing the amount gives `null`.
15
+ */
16
+ function MoneyField(t0) {
17
+ const $ = c(54);
18
+ let currencies;
19
+ let disabled;
20
+ let fixed;
21
+ let max;
22
+ let min;
23
+ let onChange;
24
+ let props;
25
+ let readOnly;
26
+ let required;
27
+ let value;
28
+ if ($[0] !== t0) {
29
+ ({value, onChange, currency: fixed, currencies, min, max, disabled, readOnly, required, ...props} = t0);
30
+ $[0] = t0;
31
+ $[1] = currencies;
32
+ $[2] = disabled;
33
+ $[3] = fixed;
34
+ $[4] = max;
35
+ $[5] = min;
36
+ $[6] = onChange;
37
+ $[7] = props;
38
+ $[8] = readOnly;
39
+ $[9] = required;
40
+ $[10] = value;
41
+ } else {
42
+ currencies = $[1];
43
+ disabled = $[2];
44
+ fixed = $[3];
45
+ max = $[4];
46
+ min = $[5];
47
+ onChange = $[6];
48
+ props = $[7];
49
+ readOnly = $[8];
50
+ required = $[9];
51
+ value = $[10];
52
+ }
53
+ const intl = usePanneauIntl();
54
+ const [picked, setPicked] = useState(null);
55
+ const current = isMoneyValue(value) ? value : null;
56
+ let t1;
57
+ if ($[11] !== currencies || $[12] !== fixed) {
58
+ t1 = fixed !== void 0 && fixed !== null ? [] : currencies !== void 0 && currencies !== null && currencies.length > 0 ? currencies : CURRENCY_CODES;
59
+ $[11] = currencies;
60
+ $[12] = fixed;
61
+ $[13] = t1;
62
+ } else t1 = $[13];
63
+ const choices = t1;
64
+ const currency = fixed ?? (current !== null ? current.currency : picked ?? currencies?.[0] ?? null);
65
+ const hasMenu = choices.length > 0;
66
+ let t2;
67
+ if ($[14] !== currency) {
68
+ t2 = (amount) => fromMinorUnits(amount, currency ?? "");
69
+ $[14] = currency;
70
+ $[15] = t2;
71
+ } else t2 = $[15];
72
+ const toMajor = t2;
73
+ let t3;
74
+ if ($[16] !== choices || $[17] !== currency || $[18] !== current || $[19] !== disabled || $[20] !== hasMenu || $[21] !== intl || $[22] !== onChange || $[23] !== readOnly || $[24] !== toMajor) {
75
+ t3 = hasMenu ? /* @__PURE__ */ jsx(Select, {
76
+ "aria-label": intl.formatMessage(messages.moneyCurrency),
77
+ appearance: "bare",
78
+ isRequired: true,
79
+ isDisabled: disabled === true || readOnly === true,
80
+ placeholder: intl.formatMessage(messages.moneyCurrency),
81
+ options: choices.map((code) => ({
82
+ value: code,
83
+ label: `${code} – ${getCurrencyName(code, intl.locale)}`
84
+ })),
85
+ value: currency,
86
+ renderValue: _temp,
87
+ onChange: (next) => {
88
+ const code_0 = next !== null ? String(next) : null;
89
+ setPicked(code_0);
90
+ if (current !== null) onChange?.(toMoneyValue(toMajor(current.amount), code_0));
91
+ }
92
+ }) : void 0;
93
+ $[16] = choices;
94
+ $[17] = currency;
95
+ $[18] = current;
96
+ $[19] = disabled;
97
+ $[20] = hasMenu;
98
+ $[21] = intl;
99
+ $[22] = onChange;
100
+ $[23] = readOnly;
101
+ $[24] = toMajor;
102
+ $[25] = t3;
103
+ } else t3 = $[25];
104
+ const menu = t3;
105
+ let t4;
106
+ if ($[26] !== current || $[27] !== toMajor) {
107
+ t4 = current !== null ? toMajor(current.amount) : null;
108
+ $[26] = current;
109
+ $[27] = toMajor;
110
+ $[28] = t4;
111
+ } else t4 = $[28];
112
+ let t5;
113
+ if ($[29] !== currency || $[30] !== onChange) {
114
+ t5 = (next_0) => onChange?.(next_0 === null ? null : toMoneyValue(next_0, currency));
115
+ $[29] = currency;
116
+ $[30] = onChange;
117
+ $[31] = t5;
118
+ } else t5 = $[31];
119
+ const t6 = hasMenu ? "narrowSymbol" : "symbol";
120
+ let t7;
121
+ if ($[32] !== currency || $[33] !== t6) {
122
+ t7 = getMoneyFormatOptions(currency, t6);
123
+ $[32] = currency;
124
+ $[33] = t6;
125
+ $[34] = t7;
126
+ } else t7 = $[34];
127
+ let t8;
128
+ if ($[35] !== min || $[36] !== toMajor) {
129
+ t8 = min !== void 0 ? { minValue: toMajor(min) } : {};
130
+ $[35] = min;
131
+ $[36] = toMajor;
132
+ $[37] = t8;
133
+ } else t8 = $[37];
134
+ let t9;
135
+ if ($[38] !== max || $[39] !== toMajor) {
136
+ t9 = max !== void 0 ? { maxValue: toMajor(max) } : {};
137
+ $[38] = max;
138
+ $[39] = toMajor;
139
+ $[40] = t9;
140
+ } else t9 = $[40];
141
+ let t10;
142
+ if ($[41] !== menu) {
143
+ t10 = menu !== void 0 ? { suffix: menu } : {};
144
+ $[41] = menu;
145
+ $[42] = t10;
146
+ } else t10 = $[42];
147
+ let t11;
148
+ if ($[43] !== disabled || $[44] !== props || $[45] !== readOnly || $[46] !== required || $[47] !== t10 || $[48] !== t4 || $[49] !== t5 || $[50] !== t7 || $[51] !== t8 || $[52] !== t9) {
149
+ t11 = /* @__PURE__ */ jsx(NumberInput, {
150
+ ...props,
151
+ value: t4,
152
+ onChange: t5,
153
+ formatOptions: t7,
154
+ ...t8,
155
+ ...t9,
156
+ ...t10,
157
+ isDisabled: disabled,
158
+ isReadOnly: readOnly,
159
+ isRequired: required
160
+ });
161
+ $[43] = disabled;
162
+ $[44] = props;
163
+ $[45] = readOnly;
164
+ $[46] = required;
165
+ $[47] = t10;
166
+ $[48] = t4;
167
+ $[49] = t5;
168
+ $[50] = t7;
169
+ $[51] = t8;
170
+ $[52] = t9;
171
+ $[53] = t11;
172
+ } else t11 = $[53];
173
+ return t11;
174
+ }
175
+ /** The `money` type: settings `currency` and `currencies`, `min` and `max` from its rules. */
176
+ function _temp(option) {
177
+ return String(option.value);
178
+ }
179
+ function MoneyFieldEntry(props) {
180
+ const $ = c(26);
181
+ const { field } = props;
182
+ let t0;
183
+ if ($[0] !== field) {
184
+ t0 = getRuleNumber(field, "min");
185
+ $[0] = field;
186
+ $[1] = t0;
187
+ } else t0 = $[1];
188
+ const min = t0;
189
+ let t1;
190
+ if ($[2] !== field) {
191
+ t1 = getRuleNumber(field, "max");
192
+ $[2] = field;
193
+ $[3] = t1;
194
+ } else t1 = $[3];
195
+ const max = t1;
196
+ let t2;
197
+ if ($[4] !== field) {
198
+ t2 = getSetting(field, "currency", isString);
199
+ $[4] = field;
200
+ $[5] = t2;
201
+ } else t2 = $[5];
202
+ const currency = t2;
203
+ let t3;
204
+ if ($[6] !== field) {
205
+ t3 = getSetting(field, "currencies", _temp2);
206
+ $[6] = field;
207
+ $[7] = t3;
208
+ } else t3 = $[7];
209
+ const currencies = t3;
210
+ let t4;
211
+ if ($[8] !== props) {
212
+ t4 = getFieldProps(props);
213
+ $[8] = props;
214
+ $[9] = t4;
215
+ } else t4 = $[9];
216
+ const t5 = isMoneyValue(props.value) ? props.value : null;
217
+ let t6;
218
+ if ($[10] !== currency) {
219
+ t6 = currency !== void 0 ? { currency } : {};
220
+ $[10] = currency;
221
+ $[11] = t6;
222
+ } else t6 = $[11];
223
+ let t7;
224
+ if ($[12] !== currencies) {
225
+ t7 = currencies !== void 0 ? { currencies } : {};
226
+ $[12] = currencies;
227
+ $[13] = t7;
228
+ } else t7 = $[13];
229
+ let t8;
230
+ if ($[14] !== min) {
231
+ t8 = min !== void 0 ? { min } : {};
232
+ $[14] = min;
233
+ $[15] = t8;
234
+ } else t8 = $[15];
235
+ let t9;
236
+ if ($[16] !== max) {
237
+ t9 = max !== void 0 ? { max } : {};
238
+ $[16] = max;
239
+ $[17] = t9;
240
+ } else t9 = $[17];
241
+ let t10;
242
+ if ($[18] !== props.onChange || $[19] !== t4 || $[20] !== t5 || $[21] !== t6 || $[22] !== t7 || $[23] !== t8 || $[24] !== t9) {
243
+ t10 = /* @__PURE__ */ jsx(MoneyField, {
244
+ ...t4,
245
+ value: t5,
246
+ onChange: props.onChange,
247
+ ...t6,
248
+ ...t7,
249
+ ...t8,
250
+ ...t9
251
+ });
252
+ $[18] = props.onChange;
253
+ $[19] = t4;
254
+ $[20] = t5;
255
+ $[21] = t6;
256
+ $[22] = t7;
257
+ $[23] = t8;
258
+ $[24] = t9;
259
+ $[25] = t10;
260
+ } else t10 = $[25];
261
+ return t10;
262
+ }
263
+ function _temp2(value) {
264
+ return Array.isArray(value) ? value.every(isString) : false;
265
+ }
266
+ //#endregion
267
+ export { MoneyField, MoneyFieldEntry };
268
+
269
+ //# sourceMappingURL=MoneyField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MoneyField.js","names":["useState","fromMinorUnits","NumberInput","Select","usePanneauIntl","getFieldProps","getRuleNumber","getSetting","isString","messages","FieldEntryProps","FieldProps","CURRENCY_CODES","MoneyFieldValue","getCurrencyName","getMoneyFormatOptions","isMoneyValue","toMoneyValue","MoneyFieldProps","currency","currencies","min","max","placeholder","controlClassName","inputClassName","MoneyField","t0","$","_c","disabled","fixed","onChange","props","readOnly","required","value","intl","picked","setPicked","current","t1","undefined","length","choices","hasMenu","t2","amount","toMajor","t3","formatMessage","moneyCurrency","map","code","label","locale","_temp","next","code_0","String","menu","t4","t5","next_0","t6","t7","t8","minValue","t9","maxValue","t10","suffix","t11","option","MoneyFieldEntry","field","_temp2","Array","isArray","every","_c"],"sources":["../../src/money/MoneyField.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { fromMinorUnits } from '@panneau/protocol/runtime';\nimport { NumberInput, Select, usePanneauIntl } from '@panneau/ui';\n\nimport { getFieldProps, getRuleNumber, getSetting, isString } from '../shared/entry';\nimport { messages } from '../shared/messages';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\nimport {\n CURRENCY_CODES,\n type MoneyFieldValue,\n getCurrencyName,\n getMoneyFormatOptions,\n isMoneyValue,\n toMoneyValue,\n} from './money';\n\nexport interface MoneyFieldProps extends FieldProps<MoneyFieldValue> {\n /** The currency of every amount (`CAD`): the field shows it, and can't change it. */\n currency?: string | null;\n /**\n * The currencies the user picks from, the first one for a new amount. Without `currency` or\n * `currencies`, every currency.\n */\n currencies?: readonly string[] | null;\n /** The smallest amount, in minor units. */\n min?: number;\n /** The largest amount, in minor units. */\n max?: number;\n placeholder?: string;\n controlClassName?: string;\n inputClassName?: string;\n}\n\n/**\n * An amount and its currency, `{ amount, currency }`, with the amount in minor units (decision\n * 0053): typed in the currency format of the locale, with the digits of the currency, and turned\n * into minor units without floating point errors. A fixed `currency` shows in the amount; otherwise\n * a menu after the amount picks it. Clearing the amount gives `null`.\n */\nexport function MoneyField({\n value,\n onChange,\n currency: fixed,\n currencies,\n min,\n max,\n disabled,\n readOnly,\n required,\n ...props\n}: MoneyFieldProps) {\n const intl = usePanneauIntl();\n // The currency picked before an amount is typed: the value is still `null`.\n const [picked, setPicked] = useState<string | null>(null);\n const current = isMoneyValue(value) ? value : null;\n const choices =\n fixed !== undefined && fixed !== null\n ? []\n : currencies !== undefined && currencies !== null && currencies.length > 0\n ? currencies\n : CURRENCY_CODES;\n const currency =\n fixed ?? (current !== null ? current.currency : (picked ?? currencies?.[0] ?? null));\n const hasMenu = choices.length > 0;\n const toMajor = (amount: number) => fromMinorUnits(amount, currency ?? '');\n\n const menu = hasMenu ? (\n <Select\n aria-label={intl.formatMessage(messages.moneyCurrency)}\n appearance=\"bare\"\n isRequired\n isDisabled={disabled === true || readOnly === true}\n placeholder={intl.formatMessage(messages.moneyCurrency)}\n options={choices.map((code) => ({\n value: code,\n label: `${code} – ${getCurrencyName(code, intl.locale)}`,\n }))}\n value={currency}\n renderValue={(option) => String(option.value)}\n onChange={(next) => {\n const code = next !== null ? String(next) : null;\n setPicked(code);\n if (current !== null) {\n // The same amount, in the digits of the currency picked.\n onChange?.(toMoneyValue(toMajor(current.amount), code));\n }\n }}\n />\n ) : undefined;\n\n return (\n <NumberInput\n {...props}\n value={current !== null ? toMajor(current.amount) : null}\n onChange={(next) => onChange?.(next === null ? null : toMoneyValue(next, currency))}\n formatOptions={getMoneyFormatOptions(currency, hasMenu ? 'narrowSymbol' : 'symbol')}\n {...(min !== undefined ? { minValue: toMajor(min) } : {})}\n {...(max !== undefined ? { maxValue: toMajor(max) } : {})}\n {...(menu !== undefined ? { suffix: menu } : {})}\n isDisabled={disabled}\n isReadOnly={readOnly}\n isRequired={required}\n />\n );\n}\n\n/** The `money` type: settings `currency` and `currencies`, `min` and `max` from its rules. */\nexport function MoneyFieldEntry(props: FieldEntryProps) {\n const { field } = props;\n const min = getRuleNumber(field, 'min');\n const max = getRuleNumber(field, 'max');\n const currency = getSetting(field, 'currency', isString);\n const currencies = getSetting(field, 'currencies', (value): value is string[] =>\n Array.isArray(value) ? value.every(isString) : false,\n );\n return (\n <MoneyField\n {...getFieldProps(props)}\n value={isMoneyValue(props.value) ? props.value : null}\n onChange={props.onChange}\n {...(currency !== undefined ? { currency } : {})}\n {...(currencies !== undefined ? { currencies } : {})}\n {...(min !== undefined ? { min } : {})}\n {...(max !== undefined ? { max } : {})}\n />\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { MoneyField, MoneyFieldEntry, type MoneyFieldProps } from './MoneyField.js';
2
+ export { type MoneyFieldValue, formatMoney, getCurrencyName, getMoneyFormatOptions, isMoneyValue, toMoneyValue, } from './money.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/money/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EACH,KAAK,eAAe,EACpB,WAAW,EACX,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,YAAY,GACf,MAAM,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { formatMoney, getCurrencyName, getMoneyFormatOptions, isMoneyValue, toMoneyValue } from "./money.js";
2
+ import { MoneyField, MoneyFieldEntry } from "./MoneyField.js";
3
+ export { MoneyField, MoneyFieldEntry, formatMoney, getCurrencyName, getMoneyFormatOptions, isMoneyValue, toMoneyValue };
@@ -0,0 +1,27 @@
1
+ import { CURRENCY_CODES, fromMinorUnits, getCurrencyDigits, toMinorUnits } from '@panneau/protocol/runtime';
2
+ /**
3
+ * A `money` value as a field holds it (decision 0053): an amount in minor units, and its currency,
4
+ * `null` while an amount is typed before a currency is picked, which the `money` rule refuses.
5
+ */
6
+ export interface MoneyFieldValue {
7
+ amount: number;
8
+ currency: string | null;
9
+ }
10
+ /** Whether a value is a `money` value: an amount and a currency, as the field holds it. */
11
+ export declare function isMoneyValue(value: unknown): value is MoneyFieldValue;
12
+ /** The name of a currency in a locale (`dollar canadien`), or its code. */
13
+ export declare function getCurrencyName(code: string, locale: string): string;
14
+ /**
15
+ * The format of an amount of a currency in a locale, with the digits of the currency in ISO 4217:
16
+ * `12,50 $` for 12.50 CAD in French, `¥1,250` for JPY.
17
+ */
18
+ export declare function getMoneyFormatOptions(currency: string | null, currencyDisplay?: Intl.NumberFormatOptions['currencyDisplay']): Intl.NumberFormatOptions;
19
+ /**
20
+ * An amount in minor units with its currency, in the format of the locale: `1 250,00 $` for
21
+ * `{ "amount": 125000, "currency": "CAD" }` in French. `null` for a value that isn't money.
22
+ */
23
+ export declare function formatMoney(value: unknown, locale: string): string | null;
24
+ /** An amount typed in major units, in minor units of its currency. */
25
+ export declare function toMoneyValue(major: number, currency: string | null): MoneyFieldValue;
26
+ export { CURRENCY_CODES, fromMinorUnits, getCurrencyDigits, toMinorUnits };
27
+ //# sourceMappingURL=money.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../../src/money/money.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,cAAc,EACd,cAAc,EACd,iBAAiB,EAEjB,YAAY,EACf,MAAM,2BAA2B,CAAC;AAEnC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAQrE;AAED,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,eAAe,GAAE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAY,GACxE,IAAI,CAAC,mBAAmB,CAS1B;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYzE;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,eAAe,CAEpF;AAED,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { CURRENCY_CODES, fromMinorUnits as fromMinorUnits$1, getCurrencyDigits, isCurrencyCode, toMinorUnits } from "@panneau/protocol/runtime";
2
+ //#region src/money/money.ts
3
+ /** Whether a value is a `money` value: an amount and a currency, as the field holds it. */
4
+ function isMoneyValue(value) {
5
+ return typeof value === "object" && value !== null && typeof value.amount === "number" && "currency" in value && (typeof value.currency === "string" || value.currency === null);
6
+ }
7
+ /** The name of a currency in a locale (`dollar canadien`), or its code. */
8
+ function getCurrencyName(code, locale) {
9
+ try {
10
+ return new Intl.DisplayNames([locale], { type: "currency" }).of(code) ?? code;
11
+ } catch {
12
+ return code;
13
+ }
14
+ }
15
+ /**
16
+ * The format of an amount of a currency in a locale, with the digits of the currency in ISO 4217:
17
+ * `12,50 $` for 12.50 CAD in French, `¥1,250` for JPY.
18
+ */
19
+ function getMoneyFormatOptions(currency, currencyDisplay = "symbol") {
20
+ const digits = getCurrencyDigits(currency ?? "");
21
+ return {
22
+ ...currency !== null && isCurrencyCode(currency) ? {
23
+ style: "currency",
24
+ currency,
25
+ currencyDisplay
26
+ } : {},
27
+ minimumFractionDigits: digits,
28
+ maximumFractionDigits: digits
29
+ };
30
+ }
31
+ /**
32
+ * An amount in minor units with its currency, in the format of the locale: `1 250,00 $` for
33
+ * `{ "amount": 125000, "currency": "CAD" }` in French. `null` for a value that isn't money.
34
+ */
35
+ function formatMoney(value, locale) {
36
+ if (!isMoneyValue(value)) return null;
37
+ const { amount, currency } = value;
38
+ const major = fromMinorUnits$1(amount, currency ?? "");
39
+ try {
40
+ const text = new Intl.NumberFormat(locale, getMoneyFormatOptions(currency)).format(major);
41
+ return currency !== null && !isCurrencyCode(currency) ? `${text} ${currency}` : text;
42
+ } catch {
43
+ return `${String(major)} ${currency ?? ""}`.trim();
44
+ }
45
+ }
46
+ /** An amount typed in major units, in minor units of its currency. */
47
+ function toMoneyValue(major, currency) {
48
+ return {
49
+ amount: toMinorUnits(major, currency ?? ""),
50
+ currency
51
+ };
52
+ }
53
+ //#endregion
54
+ export { CURRENCY_CODES, formatMoney, fromMinorUnits$1 as fromMinorUnits, getCurrencyDigits, getCurrencyName, getMoneyFormatOptions, isMoneyValue, toMinorUnits, toMoneyValue };
55
+
56
+ //# sourceMappingURL=money.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"money.js","names":["CURRENCY_CODES","fromMinorUnits","getCurrencyDigits","isCurrencyCode","toMinorUnits","MoneyFieldValue","amount","currency","isMoneyValue","value","getCurrencyName","code","locale","Intl","DisplayNames","type","of","getMoneyFormatOptions","currencyDisplay","NumberFormatOptions","digits","style","minimumFractionDigits","maximumFractionDigits","formatMoney","major","text","NumberFormat","format","String","trim","toMoneyValue","fromMinorUnits"],"sources":["../../src/money/money.ts"],"sourcesContent":["import {\n CURRENCY_CODES,\n fromMinorUnits,\n getCurrencyDigits,\n isCurrencyCode,\n toMinorUnits,\n} from '@panneau/protocol/runtime';\n\n/**\n * A `money` value as a field holds it (decision 0053): an amount in minor units, and its currency,\n * `null` while an amount is typed before a currency is picked, which the `money` rule refuses.\n */\nexport interface MoneyFieldValue {\n amount: number;\n currency: string | null;\n}\n\n/** Whether a value is a `money` value: an amount and a currency, as the field holds it. */\nexport function isMoneyValue(value: unknown): value is MoneyFieldValue {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { amount?: unknown }).amount === 'number' &&\n 'currency' in value &&\n (typeof value.currency === 'string' || value.currency === null)\n );\n}\n\n/** The name of a currency in a locale (`dollar canadien`), or its code. */\nexport function getCurrencyName(code: string, locale: string): string {\n try {\n return new Intl.DisplayNames([locale], { type: 'currency' }).of(code) ?? code;\n } catch {\n return code;\n }\n}\n\n/**\n * The format of an amount of a currency in a locale, with the digits of the currency in ISO 4217:\n * `12,50 $` for 12.50 CAD in French, `¥1,250` for JPY.\n */\nexport function getMoneyFormatOptions(\n currency: string | null,\n currencyDisplay: Intl.NumberFormatOptions['currencyDisplay'] = 'symbol',\n): Intl.NumberFormatOptions {\n const digits = getCurrencyDigits(currency ?? '');\n return {\n ...(currency !== null && isCurrencyCode(currency)\n ? { style: 'currency', currency, currencyDisplay }\n : {}),\n minimumFractionDigits: digits,\n maximumFractionDigits: digits,\n };\n}\n\n/**\n * An amount in minor units with its currency, in the format of the locale: `1 250,00 $` for\n * `{ \"amount\": 125000, \"currency\": \"CAD\" }` in French. `null` for a value that isn't money.\n */\nexport function formatMoney(value: unknown, locale: string): string | null {\n if (!isMoneyValue(value)) {\n return null;\n }\n const { amount, currency } = value;\n const major = fromMinorUnits(amount, currency ?? '');\n try {\n const text = new Intl.NumberFormat(locale, getMoneyFormatOptions(currency)).format(major);\n return currency !== null && !isCurrencyCode(currency) ? `${text} ${currency}` : text;\n } catch {\n return `${String(major)} ${currency ?? ''}`.trim();\n }\n}\n\n/** An amount typed in major units, in minor units of its currency. */\nexport function toMoneyValue(major: number, currency: string | null): MoneyFieldValue {\n return { amount: toMinorUnits(major, currency ?? ''), currency };\n}\n\nexport { CURRENCY_CODES, fromMinorUnits, getCurrencyDigits, toMinorUnits };\n"],"mappings":";;;AAkBA,SAAgBQ,aAAaC,OAA0C;CACnE,OACI,OAAOA,UAAU,YACjBA,UAAU,QACV,OAAQA,MAA+BH,WAAW,YAClD,cAAcG,UACb,OAAOA,MAAMF,aAAa,YAAYE,MAAMF,aAAa;AAElE;;AAGA,SAAgBG,gBAAgBC,MAAcC,QAAwB;CAClE,IAAI;EACA,OAAO,IAAIC,KAAKC,aAAa,CAACF,MAAM,GAAG,EAAEG,MAAM,WAAW,CAAC,CAAC,CAACC,GAAGL,IAAI,KAAKA;CAC7E,QAAQ;EACJ,OAAOA;CACX;AACJ;;;;;AAMA,SAAgBM,sBACZV,UACAW,kBAA+D,UACvC;CACxB,MAAME,SAASlB,kBAAkBK,YAAY,EAAE;CAC/C,OAAO;EACH,GAAIA,aAAa,QAAQJ,eAAeI,QAAQ,IAC1C;GAAEc,OAAO;GAAYd;GAAUW;EAAgB,IAC/C,CAAC;EACPI,uBAAuBF;EACvBG,uBAAuBH;CAC3B;AACJ;;;;;AAMA,SAAgBI,YAAYf,OAAgBG,QAA+B;CACvE,IAAI,CAACJ,aAAaC,KAAK,GACnB,OAAO;CAEX,MAAM,EAAEH,QAAQC,aAAaE;CAC7B,MAAMgB,QAAQxB,iBAAeK,QAAQC,YAAY,EAAE;CACnD,IAAI;EACA,MAAMmB,OAAO,IAAIb,KAAKc,aAAaf,QAAQK,sBAAsBV,QAAQ,CAAC,CAAC,CAACqB,OAAOH,KAAK;EACxF,OAAOlB,aAAa,QAAQ,CAACJ,eAAeI,QAAQ,IAAI,GAAGmB,KAAI,GAAInB,aAAamB;CACpF,QAAQ;EACJ,OAAO,GAAGG,OAAOJ,KAAK,EAAC,GAAIlB,YAAY,KAAKuB,KAAK;CACrD;AACJ;;AAGA,SAAgBC,aAAaN,OAAelB,UAA0C;CAClF,OAAO;EAAED,QAAQF,aAAaqB,OAAOlB,YAAY,EAAE;EAAGA;CAAS;AACnE"}
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import type { FieldEntryProps, FieldProps } from '../shared/types';
2
+ import type { FieldEntryProps, FieldProps } from '../shared/types.js';
3
3
  export interface NumberFieldProps extends FieldProps<number> {
4
4
  placeholder?: string;
5
5
  min?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"NumberField.js","names":["min","max","disabled","readOnly","required","_c"],"sources":["../../src/number/NumberField.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { NumberInput } from '@panneau/ui';\n\nimport { getFieldProps, getRuleNumber, getSetting, isNumber, isString } from '../shared/entry';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\n\nexport interface NumberFieldProps extends FieldProps<number> {\n placeholder?: string;\n min?: number;\n max?: number;\n /** Step of the steppers and arrow keys. Defaults to 1. */\n step?: number;\n /** Format of the number, for the locale: decimals, percent, currency. */\n formatOptions?: Intl.NumberFormatOptions;\n /** Content after the number: a unit. */\n suffix?: ReactNode;\n controlClassName?: string;\n inputClassName?: string;\n}\n\n/** A number, formatted for the locale. An empty field is `null`. */\nexport function NumberField({\n value,\n onChange,\n min,\n max,\n disabled,\n readOnly,\n required,\n ...props\n}: NumberFieldProps) {\n return (\n <NumberInput\n {...props}\n value={value ?? null}\n onChange={(next) => onChange?.(next)}\n minValue={min}\n maxValue={max}\n isDisabled={disabled}\n isReadOnly={readOnly}\n isRequired={required}\n />\n );\n}\n\n/**\n * The `number` type: `min` and `max` from its rules, and settings `step`, `decimals` (the most\n * digits after the decimal point) and `suffix`.\n */\nexport function NumberFieldEntry(props: FieldEntryProps) {\n const { field } = props;\n const min = getRuleNumber(field, 'min');\n const max = getRuleNumber(field, 'max');\n const step = getSetting(field, 'step', isNumber);\n const decimals = getSetting(field, 'decimals', isNumber);\n const suffix = getSetting(field, 'suffix', isString);\n return (\n <NumberField\n {...getFieldProps(props)}\n value={isNumber(props.value) ? props.value : null}\n onChange={props.onChange}\n {...(min !== undefined ? { min } : {})}\n {...(max !== undefined ? { max } : {})}\n {...(step !== undefined ? { step } : {})}\n {...(decimals !== undefined\n ? { formatOptions: { maximumFractionDigits: decimals } }\n : {})}\n {...(suffix !== undefined ? { suffix } : {})}\n />\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"NumberField.js","names":["ReactNode","NumberInput","getFieldProps","getRuleNumber","getSetting","isNumber","isString","FieldEntryProps","FieldProps","NumberFieldProps","placeholder","min","max","step","formatOptions","Intl","NumberFormatOptions","suffix","controlClassName","inputClassName","NumberField","t0","$","_c","disabled","onChange","props","readOnly","required","value","t1","t2","next","t3","NumberFieldEntry","field","decimals","t4","t5","t6","t7","undefined","t8","t9","t10","maximumFractionDigits","t11","t12","_c"],"sources":["../../src/number/NumberField.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { NumberInput } from '@panneau/ui';\n\nimport { getFieldProps, getRuleNumber, getSetting, isNumber, isString } from '../shared/entry';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\n\nexport interface NumberFieldProps extends FieldProps<number> {\n placeholder?: string;\n min?: number;\n max?: number;\n /** Step of the steppers and arrow keys. Defaults to 1. */\n step?: number;\n /** Format of the number, for the locale: decimals, percent, currency. */\n formatOptions?: Intl.NumberFormatOptions;\n /** Content after the number: a unit. */\n suffix?: ReactNode;\n controlClassName?: string;\n inputClassName?: string;\n}\n\n/** A number, formatted for the locale. An empty field is `null`. */\nexport function NumberField({\n value,\n onChange,\n min,\n max,\n disabled,\n readOnly,\n required,\n ...props\n}: NumberFieldProps) {\n return (\n <NumberInput\n {...props}\n value={value ?? null}\n onChange={(next) => onChange?.(next)}\n minValue={min}\n maxValue={max}\n isDisabled={disabled}\n isReadOnly={readOnly}\n isRequired={required}\n />\n );\n}\n\n/**\n * The `number` type: `min` and `max` from its rules, and settings `step`, `decimals` (the most\n * digits after the decimal point) and `suffix`.\n */\nexport function NumberFieldEntry(props: FieldEntryProps) {\n const { field } = props;\n const min = getRuleNumber(field, 'min');\n const max = getRuleNumber(field, 'max');\n const step = getSetting(field, 'step', isNumber);\n const decimals = getSetting(field, 'decimals', isNumber);\n const suffix = getSetting(field, 'suffix', isString);\n return (\n <NumberField\n {...getFieldProps(props)}\n value={isNumber(props.value) ? props.value : null}\n onChange={props.onChange}\n {...(min !== undefined ? { min } : {})}\n {...(max !== undefined ? { max } : {})}\n {...(step !== undefined ? { step } : {})}\n {...(decimals !== undefined\n ? { formatOptions: { maximumFractionDigits: decimals } }\n : {})}\n {...(suffix !== undefined ? { suffix } : {})}\n />\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { NumberField, NumberFieldEntry, type NumberFieldProps } from './NumberField';
1
+ export { NumberField, NumberFieldEntry, type NumberFieldProps } from './NumberField.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,22 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { FieldEntryProps, FieldProps } from '../shared/types.js';
3
+ export interface RangeFieldProps extends FieldProps<number> {
4
+ /** The start of the slider. Defaults to 0. */
5
+ min?: number;
6
+ /** The end of the slider. Defaults to 100. */
7
+ max?: number;
8
+ /** Step of the slider and of the arrow keys. Defaults to 1. */
9
+ step?: number;
10
+ /** Format of the number shown, for the locale. */
11
+ formatOptions?: Intl.NumberFormatOptions;
12
+ /** Content after the number: a unit. */
13
+ suffix?: ReactNode;
14
+ }
15
+ /** A number on a slider. It is `null` until the slider is moved. */
16
+ export declare function RangeField({ value, onChange, onBlur, min, max, disabled, readOnly, required, autoFocus: _autoFocus, id: _id, ...props }: RangeFieldProps): import("react").JSX.Element;
17
+ /**
18
+ * The `range` type: its ends from the `min` and `max` rules (0 and 100 without them), and
19
+ * settings `step`, `decimals` and `suffix`, as for `number`.
20
+ */
21
+ export declare function RangeFieldEntry(props: FieldEntryProps): import("react").JSX.Element;
22
+ //# sourceMappingURL=RangeField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangeField.d.ts","sourceRoot":"","sources":["../../src/range/RangeField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,WAAW,eAAgB,SAAQ,UAAU,CAAC,MAAM,CAAC;IACvD,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,aAAa,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC;IACzC,wCAAwC;IACxC,MAAM,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,GAAO,EACP,GAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EAAE,UAAU,EACrB,EAAE,EAAE,GAAG,EACP,GAAG,KAAK,EACX,EAAE,eAAe,+BAajB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,+BAsBrD"}