@fieldia/core 0.30.1 → 0.31.1

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 (563) hide show
  1. package/README.md +373 -1
  2. package/package.json +1 -1
  3. package/schema/page.schema.json +758 -1
  4. package/src/index.d.mts +13 -2
  5. package/src/index.d.ts +13 -2
  6. package/src/index.js +45 -2
  7. package/src/index.js.map +1 -1
  8. package/src/index.mjs +18 -2
  9. package/src/index.mjs.map +1 -1
  10. package/src/lib/format/actions.d.mts +16 -16
  11. package/src/lib/format/actions.d.ts +16 -16
  12. package/src/lib/format/actions.js +3 -0
  13. package/src/lib/format/actions.js.map +1 -1
  14. package/src/lib/format/actions.mjs +3 -0
  15. package/src/lib/format/actions.mjs.map +1 -1
  16. package/src/lib/format/address-search.js +3 -0
  17. package/src/lib/format/address-search.js.map +1 -1
  18. package/src/lib/format/address-search.mjs +3 -0
  19. package/src/lib/format/address-search.mjs.map +1 -1
  20. package/src/lib/format/duplicates.js +3 -0
  21. package/src/lib/format/duplicates.js.map +1 -1
  22. package/src/lib/format/duplicates.mjs +3 -0
  23. package/src/lib/format/duplicates.mjs.map +1 -1
  24. package/src/lib/format/endings.js +3 -0
  25. package/src/lib/format/endings.js.map +1 -1
  26. package/src/lib/format/endings.mjs +3 -0
  27. package/src/lib/format/endings.mjs.map +1 -1
  28. package/src/lib/format/field.d.mts +669 -0
  29. package/src/lib/format/field.d.ts +669 -0
  30. package/src/lib/format/field.js +42 -4
  31. package/src/lib/format/field.js.map +1 -1
  32. package/src/lib/format/field.mjs +42 -4
  33. package/src/lib/format/field.mjs.map +1 -1
  34. package/src/lib/format/flow-checks.d.mts +14 -0
  35. package/src/lib/format/flow-checks.d.ts +14 -0
  36. package/src/lib/format/flow-checks.js +61 -0
  37. package/src/lib/format/flow-checks.js.map +1 -0
  38. package/src/lib/format/flow-checks.mjs +58 -0
  39. package/src/lib/format/flow-checks.mjs.map +1 -0
  40. package/src/lib/format/flow.d.mts +43 -0
  41. package/src/lib/format/flow.d.ts +43 -0
  42. package/src/lib/format/flow.js +22 -0
  43. package/src/lib/format/flow.js.map +1 -0
  44. package/src/lib/format/flow.mjs +19 -0
  45. package/src/lib/format/flow.mjs.map +1 -0
  46. package/src/lib/format/from-schema.d.mts +70 -0
  47. package/src/lib/format/from-schema.d.ts +70 -0
  48. package/src/lib/format/from-schema.js +599 -0
  49. package/src/lib/format/from-schema.js.map +1 -0
  50. package/src/lib/format/from-schema.mjs +591 -0
  51. package/src/lib/format/from-schema.mjs.map +1 -0
  52. package/src/lib/format/jitless.d.mts +1 -0
  53. package/src/lib/format/jitless.d.ts +1 -0
  54. package/src/lib/format/jitless.js +27 -0
  55. package/src/lib/format/jitless.js.map +1 -0
  56. package/src/lib/format/jitless.mjs +24 -0
  57. package/src/lib/format/jitless.mjs.map +1 -0
  58. package/src/lib/format/json-schema.js +3 -0
  59. package/src/lib/format/json-schema.js.map +1 -1
  60. package/src/lib/format/json-schema.mjs +3 -0
  61. package/src/lib/format/json-schema.mjs.map +1 -1
  62. package/src/lib/format/json.js +3 -0
  63. package/src/lib/format/json.js.map +1 -1
  64. package/src/lib/format/json.mjs +3 -0
  65. package/src/lib/format/json.mjs.map +1 -1
  66. package/src/lib/format/languages-checks.d.mts +2 -1
  67. package/src/lib/format/languages-checks.d.ts +2 -1
  68. package/src/lib/format/languages-checks.js +8 -2
  69. package/src/lib/format/languages-checks.js.map +1 -1
  70. package/src/lib/format/languages-checks.mjs +8 -2
  71. package/src/lib/format/languages-checks.mjs.map +1 -1
  72. package/src/lib/format/later-checks.d.mts +3 -1
  73. package/src/lib/format/later-checks.d.ts +3 -1
  74. package/src/lib/format/later-checks.js +3 -1
  75. package/src/lib/format/later-checks.js.map +1 -1
  76. package/src/lib/format/later-checks.mjs +3 -1
  77. package/src/lib/format/later-checks.mjs.map +1 -1
  78. package/src/lib/format/layout.d.mts +13192 -7550
  79. package/src/lib/format/layout.d.ts +13192 -7550
  80. package/src/lib/format/layout.js +61 -3
  81. package/src/lib/format/layout.js.map +1 -1
  82. package/src/lib/format/layout.mjs +59 -1
  83. package/src/lib/format/layout.mjs.map +1 -1
  84. package/src/lib/format/layout.types.d.mts +3 -1
  85. package/src/lib/format/layout.types.d.ts +3 -1
  86. package/src/lib/format/limits.js +3 -0
  87. package/src/lib/format/limits.js.map +1 -1
  88. package/src/lib/format/limits.mjs +3 -0
  89. package/src/lib/format/limits.mjs.map +1 -1
  90. package/src/lib/format/list-checks.d.mts +1 -1
  91. package/src/lib/format/list-checks.d.ts +1 -1
  92. package/src/lib/format/list-checks.js +67 -22
  93. package/src/lib/format/list-checks.js.map +1 -1
  94. package/src/lib/format/list-checks.mjs +67 -22
  95. package/src/lib/format/list-checks.mjs.map +1 -1
  96. package/src/lib/format/list-rows-checks.d.mts +11 -0
  97. package/src/lib/format/list-rows-checks.d.ts +11 -0
  98. package/src/lib/format/list-rows-checks.js +62 -0
  99. package/src/lib/format/list-rows-checks.js.map +1 -0
  100. package/src/lib/format/list-rows-checks.mjs +59 -0
  101. package/src/lib/format/list-rows-checks.mjs.map +1 -0
  102. package/src/lib/format/media-options.d.mts +84 -0
  103. package/src/lib/format/media-options.d.ts +84 -0
  104. package/src/lib/format/media-options.js +86 -0
  105. package/src/lib/format/media-options.js.map +1 -0
  106. package/src/lib/format/media-options.mjs +80 -0
  107. package/src/lib/format/media-options.mjs.map +1 -0
  108. package/src/lib/format/outbox-checks.d.mts +11 -0
  109. package/src/lib/format/outbox-checks.d.ts +11 -0
  110. package/src/lib/format/outbox-checks.js +12 -0
  111. package/src/lib/format/outbox-checks.js.map +1 -0
  112. package/src/lib/format/outbox-checks.mjs +9 -0
  113. package/src/lib/format/outbox-checks.mjs.map +1 -0
  114. package/src/lib/format/page.d.mts +3057 -966
  115. package/src/lib/format/page.d.ts +3057 -966
  116. package/src/lib/format/page.js +15 -0
  117. package/src/lib/format/page.js.map +1 -1
  118. package/src/lib/format/page.mjs +15 -0
  119. package/src/lib/format/page.mjs.map +1 -1
  120. package/src/lib/format/part-checks.d.mts +3 -0
  121. package/src/lib/format/part-checks.d.ts +3 -0
  122. package/src/lib/format/payment-checks.d.mts +13 -0
  123. package/src/lib/format/payment-checks.d.ts +13 -0
  124. package/src/lib/format/payment-checks.js +30 -0
  125. package/src/lib/format/payment-checks.js.map +1 -0
  126. package/src/lib/format/payment-checks.mjs +27 -0
  127. package/src/lib/format/payment-checks.mjs.map +1 -0
  128. package/src/lib/format/payment.d.mts +37 -0
  129. package/src/lib/format/payment.d.ts +37 -0
  130. package/src/lib/format/payment.js +15 -0
  131. package/src/lib/format/payment.js.map +1 -0
  132. package/src/lib/format/payment.mjs +12 -0
  133. package/src/lib/format/payment.mjs.map +1 -0
  134. package/src/lib/format/phone.js +3 -0
  135. package/src/lib/format/phone.js.map +1 -1
  136. package/src/lib/format/phone.mjs +3 -0
  137. package/src/lib/format/phone.mjs.map +1 -1
  138. package/src/lib/format/picker-options.d.mts +12 -0
  139. package/src/lib/format/picker-options.d.ts +12 -0
  140. package/src/lib/format/picker-options.js +21 -3
  141. package/src/lib/format/picker-options.js.map +1 -1
  142. package/src/lib/format/picker-options.mjs +20 -2
  143. package/src/lib/format/picker-options.mjs.map +1 -1
  144. package/src/lib/format/prefill-checks.d.mts +13 -0
  145. package/src/lib/format/prefill-checks.d.ts +13 -0
  146. package/src/lib/format/prefill-checks.js +35 -0
  147. package/src/lib/format/prefill-checks.js.map +1 -0
  148. package/src/lib/format/prefill-checks.mjs +32 -0
  149. package/src/lib/format/prefill-checks.mjs.map +1 -0
  150. package/src/lib/format/prefill.d.mts +33 -0
  151. package/src/lib/format/prefill.d.ts +33 -0
  152. package/src/lib/format/prefill.js +20 -0
  153. package/src/lib/format/prefill.js.map +1 -0
  154. package/src/lib/format/prefill.mjs +17 -0
  155. package/src/lib/format/prefill.mjs.map +1 -0
  156. package/src/lib/format/quiz.d.mts +58 -0
  157. package/src/lib/format/quiz.d.ts +58 -0
  158. package/src/lib/format/quiz.js +24 -0
  159. package/src/lib/format/quiz.js.map +1 -0
  160. package/src/lib/format/quiz.mjs +21 -0
  161. package/src/lib/format/quiz.mjs.map +1 -0
  162. package/src/lib/format/records.js +3 -0
  163. package/src/lib/format/records.js.map +1 -1
  164. package/src/lib/format/records.mjs +3 -0
  165. package/src/lib/format/records.mjs.map +1 -1
  166. package/src/lib/format/references.d.mts +1 -1
  167. package/src/lib/format/references.d.ts +1 -1
  168. package/src/lib/format/references.js +56 -7
  169. package/src/lib/format/references.js.map +1 -1
  170. package/src/lib/format/references.mjs +57 -8
  171. package/src/lib/format/references.mjs.map +1 -1
  172. package/src/lib/format/schedule-checks.d.mts +8 -0
  173. package/src/lib/format/schedule-checks.d.ts +8 -0
  174. package/src/lib/format/schedule-checks.js +16 -0
  175. package/src/lib/format/schedule-checks.js.map +1 -0
  176. package/src/lib/format/schedule-checks.mjs +13 -0
  177. package/src/lib/format/schedule-checks.mjs.map +1 -0
  178. package/src/lib/format/signature-checks.d.mts +8 -0
  179. package/src/lib/format/signature-checks.d.ts +8 -0
  180. package/src/lib/format/signature-checks.js +21 -0
  181. package/src/lib/format/signature-checks.js.map +1 -1
  182. package/src/lib/format/signature-checks.mjs +20 -0
  183. package/src/lib/format/signature-checks.mjs.map +1 -1
  184. package/src/lib/format/signature-options.js +3 -0
  185. package/src/lib/format/signature-options.js.map +1 -1
  186. package/src/lib/format/signature-options.mjs +3 -0
  187. package/src/lib/format/signature-options.mjs.map +1 -1
  188. package/src/lib/format/slots-options.js +3 -0
  189. package/src/lib/format/slots-options.js.map +1 -1
  190. package/src/lib/format/slots-options.mjs +3 -0
  191. package/src/lib/format/slots-options.mjs.map +1 -1
  192. package/src/lib/format/templates-checks.d.mts +6 -0
  193. package/src/lib/format/templates-checks.d.ts +6 -0
  194. package/src/lib/format/templates-checks.js +16 -0
  195. package/src/lib/format/templates-checks.js.map +1 -0
  196. package/src/lib/format/templates-checks.mjs +13 -0
  197. package/src/lib/format/templates-checks.mjs.map +1 -0
  198. package/src/lib/format/translate.d.mts +2 -0
  199. package/src/lib/format/translate.d.ts +2 -0
  200. package/src/lib/format/translate.js +6 -2
  201. package/src/lib/format/translate.js.map +1 -1
  202. package/src/lib/format/translate.mjs +4 -2
  203. package/src/lib/format/translate.mjs.map +1 -1
  204. package/src/lib/format/typed-options.d.mts +43 -0
  205. package/src/lib/format/typed-options.d.ts +43 -0
  206. package/src/lib/format/typed-options.js +50 -0
  207. package/src/lib/format/typed-options.js.map +1 -0
  208. package/src/lib/format/typed-options.mjs +46 -0
  209. package/src/lib/format/typed-options.mjs.map +1 -0
  210. package/src/lib/format/upgrade.d.mts +5 -1
  211. package/src/lib/format/upgrade.d.ts +5 -1
  212. package/src/lib/format/upgrade.js +5 -1
  213. package/src/lib/format/upgrade.js.map +1 -1
  214. package/src/lib/format/upgrade.mjs +5 -1
  215. package/src/lib/format/upgrade.mjs.map +1 -1
  216. package/src/lib/format/validate.js +3 -0
  217. package/src/lib/format/validate.js.map +1 -1
  218. package/src/lib/format/validate.mjs +3 -0
  219. package/src/lib/format/validate.mjs.map +1 -1
  220. package/src/lib/format/verify-checks.d.mts +10 -0
  221. package/src/lib/format/verify-checks.d.ts +10 -0
  222. package/src/lib/format/verify-checks.js +44 -0
  223. package/src/lib/format/verify-checks.js.map +1 -0
  224. package/src/lib/format/verify-checks.mjs +41 -0
  225. package/src/lib/format/verify-checks.mjs.map +1 -0
  226. package/src/lib/format/version.d.mts +2 -2
  227. package/src/lib/format/version.d.ts +2 -2
  228. package/src/lib/format/version.js +2 -2
  229. package/src/lib/format/version.js.map +1 -1
  230. package/src/lib/format/version.mjs +2 -2
  231. package/src/lib/format/version.mjs.map +1 -1
  232. package/src/lib/format/week.d.mts +18 -0
  233. package/src/lib/format/week.d.ts +18 -0
  234. package/src/lib/format/week.js +58 -0
  235. package/src/lib/format/week.js.map +1 -0
  236. package/src/lib/format/week.mjs +55 -0
  237. package/src/lib/format/week.mjs.map +1 -0
  238. package/src/lib/record/approvals-part.d.mts +1 -1
  239. package/src/lib/record/approvals-part.d.ts +1 -1
  240. package/src/lib/record/approvals-part.js +2 -2
  241. package/src/lib/record/approvals-part.js.map +1 -1
  242. package/src/lib/record/approvals-part.mjs +1 -1
  243. package/src/lib/record/approvals-part.mjs.map +1 -1
  244. package/src/lib/record/data-source.d.mts +348 -5
  245. package/src/lib/record/data-source.d.ts +348 -5
  246. package/src/lib/record/data-source.js.map +1 -1
  247. package/src/lib/record/data-source.mjs.map +1 -1
  248. package/src/lib/record/day-words.d.mts +22 -1
  249. package/src/lib/record/day-words.d.ts +22 -1
  250. package/src/lib/record/day-words.js +29 -2
  251. package/src/lib/record/day-words.js.map +1 -1
  252. package/src/lib/record/day-words.mjs +24 -2
  253. package/src/lib/record/day-words.mjs.map +1 -1
  254. package/src/lib/record/drafts.d.mts +9 -0
  255. package/src/lib/record/drafts.d.ts +9 -0
  256. package/src/lib/record/drafts.js +20 -0
  257. package/src/lib/record/drafts.js.map +1 -1
  258. package/src/lib/record/drafts.mjs +19 -0
  259. package/src/lib/record/drafts.mjs.map +1 -1
  260. package/src/lib/record/files-part.d.mts +1 -0
  261. package/src/lib/record/files-part.d.ts +1 -0
  262. package/src/lib/record/files-part.js +7 -1
  263. package/src/lib/record/files-part.js.map +1 -1
  264. package/src/lib/record/files-part.mjs +5 -1
  265. package/src/lib/record/files-part.mjs.map +1 -1
  266. package/src/lib/record/form-approvals.d.mts +12 -17
  267. package/src/lib/record/form-approvals.d.ts +12 -17
  268. package/src/lib/record/form-approvals.js +19 -9
  269. package/src/lib/record/form-approvals.js.map +1 -1
  270. package/src/lib/record/form-approvals.mjs +18 -8
  271. package/src/lib/record/form-approvals.mjs.map +1 -1
  272. package/src/lib/record/form-limits.d.mts +4 -28
  273. package/src/lib/record/form-limits.d.ts +4 -28
  274. package/src/lib/record/form-limits.js +8 -5
  275. package/src/lib/record/form-limits.js.map +1 -1
  276. package/src/lib/record/form-limits.mjs +8 -5
  277. package/src/lib/record/form-limits.mjs.map +1 -1
  278. package/src/lib/record/form.d.mts +118 -3
  279. package/src/lib/record/form.d.ts +118 -3
  280. package/src/lib/record/form.js +283 -75
  281. package/src/lib/record/form.js.map +1 -1
  282. package/src/lib/record/form.mjs +285 -77
  283. package/src/lib/record/form.mjs.map +1 -1
  284. package/src/lib/record/history-steps.d.mts +38 -0
  285. package/src/lib/record/history-steps.d.ts +38 -0
  286. package/src/lib/record/history-steps.js +63 -0
  287. package/src/lib/record/history-steps.js.map +1 -0
  288. package/src/lib/record/history-steps.mjs +58 -0
  289. package/src/lib/record/history-steps.mjs.map +1 -0
  290. package/src/lib/record/history.d.mts +16 -0
  291. package/src/lib/record/history.d.ts +16 -0
  292. package/src/lib/record/history.js +3 -0
  293. package/src/lib/record/history.js.map +1 -0
  294. package/src/lib/record/history.mjs +2 -0
  295. package/src/lib/record/history.mjs.map +1 -0
  296. package/src/lib/record/input-rules.d.mts +2 -0
  297. package/src/lib/record/input-rules.d.ts +2 -0
  298. package/src/lib/record/input-rules.js +4 -1
  299. package/src/lib/record/input-rules.js.map +1 -1
  300. package/src/lib/record/input-rules.mjs +2 -0
  301. package/src/lib/record/input-rules.mjs.map +1 -1
  302. package/src/lib/record/joins.d.mts +143 -0
  303. package/src/lib/record/joins.d.ts +143 -0
  304. package/src/lib/record/joins.js +28 -0
  305. package/src/lib/record/joins.js.map +1 -0
  306. package/src/lib/record/joins.mjs +24 -0
  307. package/src/lib/record/joins.mjs.map +1 -0
  308. package/src/lib/record/limits.js +7 -4
  309. package/src/lib/record/limits.js.map +1 -1
  310. package/src/lib/record/limits.mjs +8 -5
  311. package/src/lib/record/limits.mjs.map +1 -1
  312. package/src/lib/record/link-values.d.mts +31 -0
  313. package/src/lib/record/link-values.d.ts +31 -0
  314. package/src/lib/record/link-values.js +132 -0
  315. package/src/lib/record/link-values.js.map +1 -0
  316. package/src/lib/record/link-values.mjs +125 -0
  317. package/src/lib/record/link-values.mjs.map +1 -0
  318. package/src/lib/record/live-later.d.mts +15 -0
  319. package/src/lib/record/live-later.d.ts +15 -0
  320. package/src/lib/record/live-later.js +10 -0
  321. package/src/lib/record/live-later.js.map +1 -0
  322. package/src/lib/record/live-later.mjs +7 -0
  323. package/src/lib/record/live-later.mjs.map +1 -0
  324. package/src/lib/record/live-part.d.mts +6 -0
  325. package/src/lib/record/live-part.d.ts +6 -0
  326. package/src/lib/record/live-part.js +12 -0
  327. package/src/lib/record/live-part.js.map +1 -0
  328. package/src/lib/record/live-part.mjs +7 -0
  329. package/src/lib/record/live-part.mjs.map +1 -0
  330. package/src/lib/record/live.d.mts +8 -0
  331. package/src/lib/record/live.d.ts +8 -0
  332. package/src/lib/record/live.js +133 -0
  333. package/src/lib/record/live.js.map +1 -0
  334. package/src/lib/record/live.mjs +129 -0
  335. package/src/lib/record/live.mjs.map +1 -0
  336. package/src/lib/record/locales/all.d.mts +5 -5
  337. package/src/lib/record/locales/all.d.ts +5 -5
  338. package/src/lib/record/locales/all.js +3 -3
  339. package/src/lib/record/locales/all.js.map +1 -1
  340. package/src/lib/record/locales/all.mjs +3 -3
  341. package/src/lib/record/locales/all.mjs.map +1 -1
  342. package/src/lib/record/locales/ar.js +8 -0
  343. package/src/lib/record/locales/ar.js.map +1 -1
  344. package/src/lib/record/locales/ar.mjs +8 -0
  345. package/src/lib/record/locales/ar.mjs.map +1 -1
  346. package/src/lib/record/locales/de.js +8 -0
  347. package/src/lib/record/locales/de.js.map +1 -1
  348. package/src/lib/record/locales/de.mjs +8 -0
  349. package/src/lib/record/locales/de.mjs.map +1 -1
  350. package/src/lib/record/locales/es.d.mts +8 -0
  351. package/src/lib/record/locales/es.d.ts +8 -0
  352. package/src/lib/record/locales/es.js +111 -0
  353. package/src/lib/record/locales/es.js.map +1 -0
  354. package/src/lib/record/locales/es.mjs +108 -0
  355. package/src/lib/record/locales/es.mjs.map +1 -0
  356. package/src/lib/record/locales/fa.d.mts +5 -0
  357. package/src/lib/record/locales/fa.d.ts +5 -0
  358. package/src/lib/record/locales/fa.js +117 -0
  359. package/src/lib/record/locales/fa.js.map +1 -0
  360. package/src/lib/record/locales/fa.mjs +114 -0
  361. package/src/lib/record/locales/fa.mjs.map +1 -0
  362. package/src/lib/record/locales/fr.js +8 -0
  363. package/src/lib/record/locales/fr.js.map +1 -1
  364. package/src/lib/record/locales/fr.mjs +8 -0
  365. package/src/lib/record/locales/fr.mjs.map +1 -1
  366. package/src/lib/record/locales/later.d.mts +8 -0
  367. package/src/lib/record/locales/later.d.ts +8 -0
  368. package/src/lib/record/locales/later.js +16 -0
  369. package/src/lib/record/locales/later.js.map +1 -0
  370. package/src/lib/record/locales/later.mjs +13 -0
  371. package/src/lib/record/locales/later.mjs.map +1 -0
  372. package/src/lib/record/locales/tr.d.mts +6 -0
  373. package/src/lib/record/locales/tr.d.ts +6 -0
  374. package/src/lib/record/locales/tr.js +118 -0
  375. package/src/lib/record/locales/tr.js.map +1 -0
  376. package/src/lib/record/locales/tr.mjs +115 -0
  377. package/src/lib/record/locales/tr.mjs.map +1 -0
  378. package/src/lib/record/locales/ur.d.mts +9 -0
  379. package/src/lib/record/locales/ur.d.ts +9 -0
  380. package/src/lib/record/locales/ur.js +118 -0
  381. package/src/lib/record/locales/ur.js.map +1 -0
  382. package/src/lib/record/locales/ur.mjs +115 -0
  383. package/src/lib/record/locales/ur.mjs.map +1 -0
  384. package/src/lib/record/memory-approvals.d.mts +4 -1
  385. package/src/lib/record/memory-approvals.d.ts +4 -1
  386. package/src/lib/record/memory-approvals.js +29 -0
  387. package/src/lib/record/memory-approvals.js.map +1 -1
  388. package/src/lib/record/memory-approvals.mjs +29 -0
  389. package/src/lib/record/memory-approvals.mjs.map +1 -1
  390. package/src/lib/record/memory-codes.d.mts +37 -0
  391. package/src/lib/record/memory-codes.d.ts +37 -0
  392. package/src/lib/record/memory-codes.js +50 -0
  393. package/src/lib/record/memory-codes.js.map +1 -0
  394. package/src/lib/record/memory-codes.mjs +47 -0
  395. package/src/lib/record/memory-codes.mjs.map +1 -0
  396. package/src/lib/record/memory-data-source.d.mts +56 -2
  397. package/src/lib/record/memory-data-source.d.ts +56 -2
  398. package/src/lib/record/memory-data-source.js +80 -2
  399. package/src/lib/record/memory-data-source.js.map +1 -1
  400. package/src/lib/record/memory-data-source.mjs +80 -2
  401. package/src/lib/record/memory-data-source.mjs.map +1 -1
  402. package/src/lib/record/memory-kept.d.mts +3 -1
  403. package/src/lib/record/memory-kept.d.ts +3 -1
  404. package/src/lib/record/memory-kept.js +7 -2
  405. package/src/lib/record/memory-kept.js.map +1 -1
  406. package/src/lib/record/memory-kept.mjs +7 -2
  407. package/src/lib/record/memory-kept.mjs.map +1 -1
  408. package/src/lib/record/memory-later.d.mts +3 -1
  409. package/src/lib/record/memory-later.d.ts +3 -1
  410. package/src/lib/record/memory-later.js +9 -5
  411. package/src/lib/record/memory-later.js.map +1 -1
  412. package/src/lib/record/memory-later.mjs +8 -4
  413. package/src/lib/record/memory-later.mjs.map +1 -1
  414. package/src/lib/record/memory-live.d.mts +8 -0
  415. package/src/lib/record/memory-live.d.ts +8 -0
  416. package/src/lib/record/memory-live.js +70 -0
  417. package/src/lib/record/memory-live.js.map +1 -0
  418. package/src/lib/record/memory-live.mjs +67 -0
  419. package/src/lib/record/memory-live.mjs.map +1 -0
  420. package/src/lib/record/memory-views.d.mts +11 -0
  421. package/src/lib/record/memory-views.d.ts +11 -0
  422. package/src/lib/record/memory-views.js +68 -0
  423. package/src/lib/record/memory-views.js.map +1 -0
  424. package/src/lib/record/memory-views.mjs +65 -0
  425. package/src/lib/record/memory-views.mjs.map +1 -0
  426. package/src/lib/record/messages.d.mts +21 -3
  427. package/src/lib/record/messages.d.ts +21 -3
  428. package/src/lib/record/messages.js +15 -2
  429. package/src/lib/record/messages.js.map +1 -1
  430. package/src/lib/record/messages.mjs +15 -2
  431. package/src/lib/record/messages.mjs.map +1 -1
  432. package/src/lib/record/order.d.mts +21 -0
  433. package/src/lib/record/order.d.ts +21 -0
  434. package/src/lib/record/order.js +129 -0
  435. package/src/lib/record/order.js.map +1 -0
  436. package/src/lib/record/order.mjs +122 -0
  437. package/src/lib/record/order.mjs.map +1 -0
  438. package/src/lib/record/outbox-form.d.mts +79 -0
  439. package/src/lib/record/outbox-form.d.ts +79 -0
  440. package/src/lib/record/outbox-form.js +291 -0
  441. package/src/lib/record/outbox-form.js.map +1 -0
  442. package/src/lib/record/outbox-form.mjs +286 -0
  443. package/src/lib/record/outbox-form.mjs.map +1 -0
  444. package/src/lib/record/outbox-part.d.mts +6 -0
  445. package/src/lib/record/outbox-part.d.ts +6 -0
  446. package/src/lib/record/outbox-part.js +13 -0
  447. package/src/lib/record/outbox-part.js.map +1 -0
  448. package/src/lib/record/outbox-part.mjs +7 -0
  449. package/src/lib/record/outbox-part.mjs.map +1 -0
  450. package/src/lib/record/pay-part.d.mts +6 -0
  451. package/src/lib/record/pay-part.d.ts +6 -0
  452. package/src/lib/record/pay-part.js +11 -0
  453. package/src/lib/record/pay-part.js.map +1 -0
  454. package/src/lib/record/pay-part.mjs +7 -0
  455. package/src/lib/record/pay-part.mjs.map +1 -0
  456. package/src/lib/record/payment-form.d.mts +25 -0
  457. package/src/lib/record/payment-form.d.ts +25 -0
  458. package/src/lib/record/payment-form.js +98 -0
  459. package/src/lib/record/payment-form.js.map +1 -0
  460. package/src/lib/record/payment-form.mjs +95 -0
  461. package/src/lib/record/payment-form.mjs.map +1 -0
  462. package/src/lib/record/prefill-part.d.mts +7 -0
  463. package/src/lib/record/prefill-part.d.ts +7 -0
  464. package/src/lib/record/prefill-part.js +15 -0
  465. package/src/lib/record/prefill-part.js.map +1 -0
  466. package/src/lib/record/prefill-part.mjs +8 -0
  467. package/src/lib/record/prefill-part.mjs.map +1 -0
  468. package/src/lib/record/press-undo.d.mts +42 -0
  469. package/src/lib/record/press-undo.d.ts +42 -0
  470. package/src/lib/record/press-undo.js +115 -0
  471. package/src/lib/record/press-undo.js.map +1 -0
  472. package/src/lib/record/press-undo.mjs +110 -0
  473. package/src/lib/record/press-undo.mjs.map +1 -0
  474. package/src/lib/record/quiz.d.mts +36 -0
  475. package/src/lib/record/quiz.d.ts +36 -0
  476. package/src/lib/record/quiz.js +90 -0
  477. package/src/lib/record/quiz.js.map +1 -0
  478. package/src/lib/record/quiz.mjs +87 -0
  479. package/src/lib/record/quiz.mjs.map +1 -0
  480. package/src/lib/record/record-words.js +1 -1
  481. package/src/lib/record/record-words.js.map +1 -1
  482. package/src/lib/record/record-words.mjs +1 -1
  483. package/src/lib/record/record-words.mjs.map +1 -1
  484. package/src/lib/record/run.d.mts +54 -2
  485. package/src/lib/record/run.d.ts +54 -2
  486. package/src/lib/record/run.js +30 -6
  487. package/src/lib/record/run.js.map +1 -1
  488. package/src/lib/record/run.mjs +28 -5
  489. package/src/lib/record/run.mjs.map +1 -1
  490. package/src/lib/record/survey-kit.d.mts +37 -0
  491. package/src/lib/record/survey-kit.d.ts +37 -0
  492. package/src/lib/record/survey-kit.js +110 -0
  493. package/src/lib/record/survey-kit.js.map +1 -0
  494. package/src/lib/record/survey-kit.mjs +107 -0
  495. package/src/lib/record/survey-kit.mjs.map +1 -0
  496. package/src/lib/record/survey.d.mts +16 -0
  497. package/src/lib/record/survey.d.ts +16 -0
  498. package/src/lib/record/survey.js +17 -0
  499. package/src/lib/record/survey.js.map +1 -0
  500. package/src/lib/record/survey.mjs +13 -0
  501. package/src/lib/record/survey.mjs.map +1 -0
  502. package/src/lib/record/surveyflow-part.d.mts +9 -0
  503. package/src/lib/record/surveyflow-part.d.ts +9 -0
  504. package/src/lib/record/surveyflow-part.js +20 -0
  505. package/src/lib/record/surveyflow-part.js.map +1 -0
  506. package/src/lib/record/surveyflow-part.mjs +10 -0
  507. package/src/lib/record/surveyflow-part.mjs.map +1 -0
  508. package/src/lib/record/timing.d.mts +76 -0
  509. package/src/lib/record/timing.d.ts +76 -0
  510. package/src/lib/record/timing.js +112 -0
  511. package/src/lib/record/timing.js.map +1 -0
  512. package/src/lib/record/timing.mjs +104 -0
  513. package/src/lib/record/timing.mjs.map +1 -0
  514. package/src/lib/record/undo-later.d.mts +9 -0
  515. package/src/lib/record/undo-later.d.ts +9 -0
  516. package/src/lib/record/undo-later.js +10 -0
  517. package/src/lib/record/undo-later.js.map +1 -0
  518. package/src/lib/record/undo-later.mjs +7 -0
  519. package/src/lib/record/undo-later.mjs.map +1 -0
  520. package/src/lib/record/undo-part.d.mts +8 -0
  521. package/src/lib/record/undo-part.d.ts +8 -0
  522. package/src/lib/record/undo-part.js +17 -0
  523. package/src/lib/record/undo-part.js.map +1 -0
  524. package/src/lib/record/undo-part.mjs +9 -0
  525. package/src/lib/record/undo-part.mjs.map +1 -0
  526. package/src/lib/record/upload-to-later.d.mts +10 -0
  527. package/src/lib/record/upload-to-later.d.ts +10 -0
  528. package/src/lib/record/upload-to-later.js +15 -0
  529. package/src/lib/record/upload-to-later.js.map +1 -0
  530. package/src/lib/record/upload-to-later.mjs +12 -0
  531. package/src/lib/record/upload-to-later.mjs.map +1 -0
  532. package/src/lib/record/uploads.d.mts +5 -0
  533. package/src/lib/record/uploads.d.ts +5 -0
  534. package/src/lib/record/uploads.js.map +1 -1
  535. package/src/lib/record/uploads.mjs.map +1 -1
  536. package/src/lib/record/values.d.mts +6 -0
  537. package/src/lib/record/values.d.ts +6 -0
  538. package/src/lib/record/values.js.map +1 -1
  539. package/src/lib/record/values.mjs.map +1 -1
  540. package/src/lib/record/verify-form.d.mts +24 -0
  541. package/src/lib/record/verify-form.d.ts +24 -0
  542. package/src/lib/record/verify-form.js +65 -0
  543. package/src/lib/record/verify-form.js.map +1 -0
  544. package/src/lib/record/verify-form.mjs +62 -0
  545. package/src/lib/record/verify-form.mjs.map +1 -0
  546. package/src/lib/record/verify-part.d.mts +6 -0
  547. package/src/lib/record/verify-part.d.ts +6 -0
  548. package/src/lib/record/verify-part.js +11 -0
  549. package/src/lib/record/verify-part.js.map +1 -0
  550. package/src/lib/record/verify-part.mjs +7 -0
  551. package/src/lib/record/verify-part.mjs.map +1 -0
  552. package/src/lib/record/words-chunks.d.mts +37 -0
  553. package/src/lib/record/words-chunks.d.ts +37 -0
  554. package/src/lib/record/words-chunks.js +94 -0
  555. package/src/lib/record/words-chunks.js.map +1 -0
  556. package/src/lib/record/words-chunks.mjs +86 -0
  557. package/src/lib/record/words-chunks.mjs.map +1 -0
  558. package/src/runtime.d.mts +28 -6
  559. package/src/runtime.d.ts +28 -6
  560. package/src/runtime.js +35 -6
  561. package/src/runtime.js.map +1 -1
  562. package/src/runtime.mjs +15 -3
  563. package/src/runtime.mjs.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox-part.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/outbox-part.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,6CAAkE;AAAzD,mGAAA,IAAI,OAAA;AAAE,4GAAA,aAAa,OAAA;AAAE,2GAAA,YAAY,OAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The outbox part's form code (joins.ts): its side of a form — sends kept on the device without signal and sent in
3
+ * order when it comes back (outbox-form.ts). In the one-tag script it comes in one script with the viewer's outbox
4
+ * part, which says them on screen (fieldia.outbox.js).
5
+ */
6
+ export { join, indexedOutbox, memoryOutbox } from './outbox-form.mjs';
7
+ //# sourceMappingURL=outbox-part.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outbox-part.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/outbox-part.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The pay part's form code (joins.ts): its side of a form — what a page's payment asks now, paying it before a send,
3
+ * the payment a send carries (payment-form.ts). In the one-tag script it comes in one script with the viewer's pay
4
+ * part, which draws the payment step (fieldia.pay.js).
5
+ */
6
+ export { join } from './payment-form.mjs';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * The pay part's form code (joins.ts): its side of a form — what a page's payment asks now, paying it before a send,
3
+ * the payment a send carries (payment-form.ts). In the one-tag script it comes in one script with the viewer's pay
4
+ * part, which draws the payment step (fieldia.pay.js).
5
+ */
6
+ export { join } from './payment-form';
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.join = void 0;
4
+ /**
5
+ * The pay part's form code (joins.ts): its side of a form — what a page's payment asks now, paying it before a send,
6
+ * the payment a send carries (payment-form.ts). In the one-tag script it comes in one script with the viewer's pay
7
+ * part, which draws the payment step (fieldia.pay.js).
8
+ */
9
+ var payment_form_1 = require("./payment-form");
10
+ Object.defineProperty(exports, "join", { enumerable: true, get: function () { return payment_form_1.join; } });
11
+ //# sourceMappingURL=pay-part.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pay-part.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/pay-part.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,+CAAsC;AAA7B,oGAAA,IAAI,OAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The pay part's form code (joins.ts): its side of a form — what a page's payment asks now, paying it before a send,
3
+ * the payment a send carries (payment-form.ts). In the one-tag script it comes in one script with the viewer's pay
4
+ * part, which draws the payment step (fieldia.pay.js).
5
+ */
6
+ export { join } from './payment-form.mjs';
7
+ //# sourceMappingURL=pay-part.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pay-part.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/pay-part.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { PaidPayment, PaymentDue, PayRequest } from './data-source.mjs';
2
+ import type { FormInner, FormJoin } from './joins.mjs';
3
+ /** A payment step that shows what is due and settles once it is paid, or with null once the person goes back. */
4
+ export type PayStep = (due: PaymentDue, request: PayRequest) => Promise<PaidPayment | null>;
5
+ /** A form's payment code, made for it (`join`; `form.joined('pay')`). */
6
+ export interface FormPayment extends FormJoin {
7
+ /** What is due now, or null: no payment asked, its condition not holding, nothing above 0, or no source to pay through. */
8
+ due(): PaymentDue | null;
9
+ /** Whether what was paid covers what is due now. */
10
+ covered(due: PaymentDue): boolean;
11
+ /**
12
+ * Pay what is due before a send: through the payment step drawn with the page (`step`, the viewer's), else the host's
13
+ * (`ActionHost.pay`), else the data source's `pay` itself. Paid, it is kept (`state.paid`) and the send carries it;
14
+ * else null — nothing is sent.
15
+ */
16
+ pay(due: PaymentDue): Promise<PaidPayment | null>;
17
+ /** The payment step a viewer drew with the page: what `pay` shows. */
18
+ step(step: PayStep): void;
19
+ }
20
+ /**
21
+ * The pay part's side of a form (`payment` on its page): what is due — the amount, a number or a field's; its currency,
22
+ * a code or a field's, else a money field's own; while `when` holds, above 0 — taken before the answers go, once the
23
+ * form's own checks found nothing; not taken, nothing is sent; taken, the send carries it (`payment`).
24
+ */
25
+ export declare function join(host: FormInner): FormPayment;
@@ -0,0 +1,25 @@
1
+ import type { PaidPayment, PaymentDue, PayRequest } from './data-source';
2
+ import type { FormInner, FormJoin } from './joins';
3
+ /** A payment step that shows what is due and settles once it is paid, or with null once the person goes back. */
4
+ export type PayStep = (due: PaymentDue, request: PayRequest) => Promise<PaidPayment | null>;
5
+ /** A form's payment code, made for it (`join`; `form.joined('pay')`). */
6
+ export interface FormPayment extends FormJoin {
7
+ /** What is due now, or null: no payment asked, its condition not holding, nothing above 0, or no source to pay through. */
8
+ due(): PaymentDue | null;
9
+ /** Whether what was paid covers what is due now. */
10
+ covered(due: PaymentDue): boolean;
11
+ /**
12
+ * Pay what is due before a send: through the payment step drawn with the page (`step`, the viewer's), else the host's
13
+ * (`ActionHost.pay`), else the data source's `pay` itself. Paid, it is kept (`state.paid`) and the send carries it;
14
+ * else null — nothing is sent.
15
+ */
16
+ pay(due: PaymentDue): Promise<PaidPayment | null>;
17
+ /** The payment step a viewer drew with the page: what `pay` shows. */
18
+ step(step: PayStep): void;
19
+ }
20
+ /**
21
+ * The pay part's side of a form (`payment` on its page): what is due — the amount, a number or a field's; its currency,
22
+ * a code or a field's, else a money field's own; while `when` holds, above 0 — taken before the answers go, once the
23
+ * form's own checks found nothing; not taken, nothing is sent; taken, the send carries it (`payment`).
24
+ */
25
+ export declare function join(host: FormInner): FormPayment;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.join = join;
4
+ const app_functions_1 = require("../expression/app-functions");
5
+ const modifier_1 = require("../expression/modifier");
6
+ /** A key no other payment has: the provider's idempotency key, the same for every try of one response's payment. */
7
+ const newKey = () => `pay-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
8
+ /**
9
+ * The pay part's side of a form (`payment` on its page): what is due — the amount, a number or a field's; its currency,
10
+ * a code or a field's, else a money field's own; while `when` holds, above 0 — taken before the answers go, once the
11
+ * form's own checks found nothing; not taken, nothing is sent; taken, the send carries it (`payment`).
12
+ */
13
+ function join(host) {
14
+ const { form, page, options, messages, set } = host;
15
+ const payment = page.payment;
16
+ const source = options.dataSource;
17
+ let key = newKey();
18
+ let shown;
19
+ let when;
20
+ /** A field's value by name, where the page has that field; else the setting itself. */
21
+ const read = (setting) => (typeof setting === 'string' && setting in page.fields ? form.getState().values[setting] : setting);
22
+ const kit = {
23
+ due() {
24
+ if (!payment || !source?.pay)
25
+ return null;
26
+ if (payment.when) {
27
+ const { context, env } = host.reading();
28
+ if (!(when ??= (0, modifier_1.compileModifier)(payment.when, (0, app_functions_1.functionTable)(options.functions))).evaluate(context, env))
29
+ return null;
30
+ }
31
+ const amount = read(payment.amount);
32
+ if (typeof amount !== 'number' || !Number.isFinite(amount) || amount <= 0)
33
+ return null;
34
+ const field = typeof payment.amount === 'string' ? page.fields[payment.amount] : undefined;
35
+ const own = field?.type === 'monetary' ? (field.currency ?? (field.currencyField ? form.getState().values[field.currencyField] : undefined)) : undefined;
36
+ const written = payment.currency !== undefined ? read(payment.currency) : own;
37
+ const currency = typeof written === 'string' ? written : written && typeof written === 'object' && 'label' in written ? String(written.label) : '';
38
+ if (!/^[A-Z]{3}$/.test(currency))
39
+ return null;
40
+ return { amount, currency, label: payment.label, ...(payment.description ? { description: payment.description } : {}), key };
41
+ },
42
+ covered(due) {
43
+ const paid = form.getState().paid;
44
+ return !!paid && paid.key === due.key && paid.amount === due.amount && paid.currency === due.currency;
45
+ },
46
+ async pay(due) {
47
+ const state = form.getState();
48
+ const request = {
49
+ pageId: page.id,
50
+ model: page.data.kind === 'record' ? page.data.model : '',
51
+ recordId: state.recordId ?? null,
52
+ amount: due.amount,
53
+ currency: due.currency,
54
+ label: due.label,
55
+ ...(due.description ? { description: due.description } : {}),
56
+ key: due.key,
57
+ // The values as the send will carry them — hidden fields and those a link filled among them: what a checkout
58
+ // fills its own boxes from, and a campaign's code it may price by.
59
+ values: host.sending(),
60
+ language: page.language ?? messages.locale,
61
+ };
62
+ let paid = null;
63
+ const step = shown ?? options.host?.pay;
64
+ if (step)
65
+ paid = await step(due, request);
66
+ else if (source?.pay) {
67
+ const answer = await source.pay(request);
68
+ paid = answer.status === 'paid' ? { amount: due.amount, currency: due.currency, key: due.key, ...(answer.reference ? { reference: answer.reference } : {}) } : null;
69
+ }
70
+ if (paid)
71
+ set({ paid });
72
+ return paid;
73
+ },
74
+ step(step) {
75
+ shown = step;
76
+ },
77
+ // Before a send the form's own checks let go: what is due taken, or nothing sent.
78
+ async before(problems) {
79
+ if (Object.keys(problems).length)
80
+ return;
81
+ const due = kit.due();
82
+ if (due && !kit.covered(due) && !(await kit.pay(due)))
83
+ return false;
84
+ return undefined;
85
+ },
86
+ around(kind, sent, go) {
87
+ const paid = form.getState().paid;
88
+ return go(kind !== 'upload' && paid ? { ...sent, payment: paid } : sent);
89
+ },
90
+ // Another response, or another record: a payment of its own, by a new key.
91
+ reset() {
92
+ key = newKey();
93
+ set({ paid: null });
94
+ },
95
+ };
96
+ return kit;
97
+ }
98
+ //# sourceMappingURL=payment-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-form.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/payment-form.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { functionTable } from '../expression/app-functions.mjs';
2
+ import { compileModifier } from '../expression/modifier.mjs';
3
+ /** A key no other payment has: the provider's idempotency key, the same for every try of one response's payment. */
4
+ const newKey = () => `pay-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
5
+ /**
6
+ * The pay part's side of a form (`payment` on its page): what is due — the amount, a number or a field's; its currency,
7
+ * a code or a field's, else a money field's own; while `when` holds, above 0 — taken before the answers go, once the
8
+ * form's own checks found nothing; not taken, nothing is sent; taken, the send carries it (`payment`).
9
+ */
10
+ export function join(host) {
11
+ const { form, page, options, messages, set } = host;
12
+ const payment = page.payment;
13
+ const source = options.dataSource;
14
+ let key = newKey();
15
+ let shown;
16
+ let when;
17
+ /** A field's value by name, where the page has that field; else the setting itself. */
18
+ const read = (setting) => (typeof setting === 'string' && setting in page.fields ? form.getState().values[setting] : setting);
19
+ const kit = {
20
+ due() {
21
+ if (!payment || !source?.pay)
22
+ return null;
23
+ if (payment.when) {
24
+ const { context, env } = host.reading();
25
+ if (!(when ??= compileModifier(payment.when, functionTable(options.functions))).evaluate(context, env))
26
+ return null;
27
+ }
28
+ const amount = read(payment.amount);
29
+ if (typeof amount !== 'number' || !Number.isFinite(amount) || amount <= 0)
30
+ return null;
31
+ const field = typeof payment.amount === 'string' ? page.fields[payment.amount] : undefined;
32
+ const own = field?.type === 'monetary' ? (field.currency ?? (field.currencyField ? form.getState().values[field.currencyField] : undefined)) : undefined;
33
+ const written = payment.currency !== undefined ? read(payment.currency) : own;
34
+ const currency = typeof written === 'string' ? written : written && typeof written === 'object' && 'label' in written ? String(written.label) : '';
35
+ if (!/^[A-Z]{3}$/.test(currency))
36
+ return null;
37
+ return { amount, currency, label: payment.label, ...(payment.description ? { description: payment.description } : {}), key };
38
+ },
39
+ covered(due) {
40
+ const paid = form.getState().paid;
41
+ return !!paid && paid.key === due.key && paid.amount === due.amount && paid.currency === due.currency;
42
+ },
43
+ async pay(due) {
44
+ const state = form.getState();
45
+ const request = {
46
+ pageId: page.id,
47
+ model: page.data.kind === 'record' ? page.data.model : '',
48
+ recordId: state.recordId ?? null,
49
+ amount: due.amount,
50
+ currency: due.currency,
51
+ label: due.label,
52
+ ...(due.description ? { description: due.description } : {}),
53
+ key: due.key,
54
+ // The values as the send will carry them — hidden fields and those a link filled among them: what a checkout
55
+ // fills its own boxes from, and a campaign's code it may price by.
56
+ values: host.sending(),
57
+ language: page.language ?? messages.locale,
58
+ };
59
+ let paid = null;
60
+ const step = shown ?? options.host?.pay;
61
+ if (step)
62
+ paid = await step(due, request);
63
+ else if (source?.pay) {
64
+ const answer = await source.pay(request);
65
+ paid = answer.status === 'paid' ? { amount: due.amount, currency: due.currency, key: due.key, ...(answer.reference ? { reference: answer.reference } : {}) } : null;
66
+ }
67
+ if (paid)
68
+ set({ paid });
69
+ return paid;
70
+ },
71
+ step(step) {
72
+ shown = step;
73
+ },
74
+ // Before a send the form's own checks let go: what is due taken, or nothing sent.
75
+ async before(problems) {
76
+ if (Object.keys(problems).length)
77
+ return;
78
+ const due = kit.due();
79
+ if (due && !kit.covered(due) && !(await kit.pay(due)))
80
+ return false;
81
+ return undefined;
82
+ },
83
+ around(kind, sent, go) {
84
+ const paid = form.getState().paid;
85
+ return go(kind !== 'upload' && paid ? { ...sent, payment: paid } : sent);
86
+ },
87
+ // Another response, or another record: a payment of its own, by a new key.
88
+ reset() {
89
+ key = newKey();
90
+ set({ paid: null });
91
+ },
92
+ };
93
+ return kit;
94
+ }
95
+ //# sourceMappingURL=payment-form.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-form.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/payment-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAyB,MAAM,wBAAwB,CAAC;AAuBhF,oHAAoH;AACpH,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAEjG;;;;GAIG;AACH,MAAM,UAAU,IAAI,CAAC,IAAe;IAClC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAClC,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC;IACnB,IAAI,KAA0B,CAAC;IAC/B,IAAI,IAAkC,CAAC;IACvC,uFAAuF;IACvF,MAAM,IAAI,GAAG,CAAC,OAAoC,EAAE,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3J,MAAM,GAAG,GAAgB;QACvB,GAAG;YACD,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG;gBAAE,OAAO,IAAI,CAAC;YAC1C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACxC,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;oBAAE,OAAO,IAAI,CAAC;YACtH,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YACvF,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3F,MAAM,GAAG,GAAG,KAAK,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACzJ,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC9E,MAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,MAAM,CAAE,OAA8B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3K,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;QAC/H,CAAC;QACD,OAAO,CAAC,GAAG;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;YAClC,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,CAAC;QACxG,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAG;YACX,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAe;gBAC1B,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACzD,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;gBAChC,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,6GAA6G;gBAC7G,mEAAmE;gBACnE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE;gBACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM;aAC3C,CAAC;YACF,IAAI,IAAI,GAAuB,IAAI,CAAC;YACpC,MAAM,IAAI,GAAG,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YACxC,IAAI,IAAI;gBAAE,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;iBACrC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACzC,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACtK,CAAC;YACD,IAAI,IAAI;gBAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,IAAI;YACP,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QACD,kFAAkF;QAClF,KAAK,CAAC,MAAM,CAAC,QAAQ;YACnB,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;gBAAE,OAAO;YACzC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;YACtB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YACpE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3E,CAAC;QACD,2EAA2E;QAC3E,KAAK;YACH,GAAG,GAAG,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACtB,CAAC;KACF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The prefill part (joins.ts): a link's parameters read as the fields they fill, and its side of a form — those fields
3
+ * laid where it starts, the hidden ones sent with the answers (link-values.ts). In the one-tag script it comes as
4
+ * fieldia.prefill.js, with the page checks of a page's `prefill` (prefill-checks.ts), asked for by a form whose page
5
+ * fills fields from its link.
6
+ */
7
+ export { join, linkParams, linkValue, linkValues } from './link-values.mjs';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The prefill part (joins.ts): a link's parameters read as the fields they fill, and its side of a form — those fields
3
+ * laid where it starts, the hidden ones sent with the answers (link-values.ts). In the one-tag script it comes as
4
+ * fieldia.prefill.js, with the page checks of a page's `prefill` (prefill-checks.ts), asked for by a form whose page
5
+ * fills fields from its link.
6
+ */
7
+ export { join, linkParams, linkValue, linkValues } from './link-values';
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.linkValues = exports.linkValue = exports.linkParams = exports.join = void 0;
4
+ /**
5
+ * The prefill part (joins.ts): a link's parameters read as the fields they fill, and its side of a form — those fields
6
+ * laid where it starts, the hidden ones sent with the answers (link-values.ts). In the one-tag script it comes as
7
+ * fieldia.prefill.js, with the page checks of a page's `prefill` (prefill-checks.ts), asked for by a form whose page
8
+ * fills fields from its link.
9
+ */
10
+ var link_values_1 = require("./link-values");
11
+ Object.defineProperty(exports, "join", { enumerable: true, get: function () { return link_values_1.join; } });
12
+ Object.defineProperty(exports, "linkParams", { enumerable: true, get: function () { return link_values_1.linkParams; } });
13
+ Object.defineProperty(exports, "linkValue", { enumerable: true, get: function () { return link_values_1.linkValue; } });
14
+ Object.defineProperty(exports, "linkValues", { enumerable: true, get: function () { return link_values_1.linkValues; } });
15
+ //# sourceMappingURL=prefill-part.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefill-part.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/prefill-part.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,6CAAwE;AAA/D,mGAAA,IAAI,OAAA;AAAE,yGAAA,UAAU,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,yGAAA,UAAU,OAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The prefill part (joins.ts): a link's parameters read as the fields they fill, and its side of a form — those fields
3
+ * laid where it starts, the hidden ones sent with the answers (link-values.ts). In the one-tag script it comes as
4
+ * fieldia.prefill.js, with the page checks of a page's `prefill` (prefill-checks.ts), asked for by a form whose page
5
+ * fills fields from its link.
6
+ */
7
+ export { join, linkParams, linkValue, linkValues } from './link-values.mjs';
8
+ //# sourceMappingURL=prefill-part.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prefill-part.mjs","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/prefill-part.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { ButtonNode, MenuItem, PressUndo, StatButton } from '../format/layout.mjs';
2
+ import { type PressTaken, type RunResult, type RunScope, type UndoKit } from './run.mjs';
3
+ import type { Fields } from '../format/field.mjs';
4
+ import type { FormInner } from './joins.mjs';
5
+ import { type Value, type Values } from './values.mjs';
6
+ /** What a press did, as Undo takes it back: the values it changed (each before and after), and whether it saved them. */
7
+ export interface PressDone extends Pick<PressTaken, 'app' | 'archived'> {
8
+ wrote: Map<string, {
9
+ before: Value;
10
+ after: Value;
11
+ }>;
12
+ saved?: boolean;
13
+ }
14
+ /**
15
+ * What a press did, read as it ends against the values it began with (`PressTaken.at`): each field it changed — a
16
+ * value worked out aside, which follows — and whether it saved them (the record holds no change left to save).
17
+ */
18
+ export declare function pressDone(taken: PressTaken, now: Values, fields: Fields, saved: boolean): PressDone;
19
+ /**
20
+ * Take back what a press did (`PressTaken`), as its toast's Undo asks: the app's own undos, latest first, each
21
+ * answered as a call is; the record it archived brought back, or the reverse; then the values its steps and the
22
+ * app's answers wrote put back — each only while it holds what they left, a change made since by anyone else staying
23
+ * — and saved again where the press saved. On the record the press was on: another shown since, nothing is done.
24
+ */
25
+ export declare function takeBack(kit: UndoKit, taken: PressDone, scope: RunScope): Promise<RunResult>;
26
+ /** What a press that offered Undo is said with once it ends, and what Undo is handed (form.ts). */
27
+ export interface OfferContext {
28
+ kit: UndoKit;
29
+ source: ButtonNode | StatButton | MenuItem;
30
+ scope: RunScope;
31
+ taken: PressTaken;
32
+ result: RunResult;
33
+ offers: PressUndo | undefined;
34
+ }
35
+ /**
36
+ * A press that offers Undo has ended: the words it held are said — the last, once it ran whole, with Undo, where what
37
+ * it did can be taken back (its button's steps for it; else Fieldia's own taking back, where nothing it did is beyond
38
+ * it — a copy, a delete, a page opened, a post, the app's call answered with no undo; else the app's own undos) — or,
39
+ * with nothing said, "Done: {label}". Undo runs on the record the press ended on: another shown since, only the app's
40
+ * own undos run.
41
+ */
42
+ export declare function offerUndo(inner: FormInner, context: OfferContext): void;
@@ -0,0 +1,42 @@
1
+ import type { ButtonNode, MenuItem, PressUndo, StatButton } from '../format/layout';
2
+ import { type PressTaken, type RunResult, type RunScope, type UndoKit } from './run';
3
+ import type { Fields } from '../format/field';
4
+ import type { FormInner } from './joins';
5
+ import { type Value, type Values } from './values';
6
+ /** What a press did, as Undo takes it back: the values it changed (each before and after), and whether it saved them. */
7
+ export interface PressDone extends Pick<PressTaken, 'app' | 'archived'> {
8
+ wrote: Map<string, {
9
+ before: Value;
10
+ after: Value;
11
+ }>;
12
+ saved?: boolean;
13
+ }
14
+ /**
15
+ * What a press did, read as it ends against the values it began with (`PressTaken.at`): each field it changed — a
16
+ * value worked out aside, which follows — and whether it saved them (the record holds no change left to save).
17
+ */
18
+ export declare function pressDone(taken: PressTaken, now: Values, fields: Fields, saved: boolean): PressDone;
19
+ /**
20
+ * Take back what a press did (`PressTaken`), as its toast's Undo asks: the app's own undos, latest first, each
21
+ * answered as a call is; the record it archived brought back, or the reverse; then the values its steps and the
22
+ * app's answers wrote put back — each only while it holds what they left, a change made since by anyone else staying
23
+ * — and saved again where the press saved. On the record the press was on: another shown since, nothing is done.
24
+ */
25
+ export declare function takeBack(kit: UndoKit, taken: PressDone, scope: RunScope): Promise<RunResult>;
26
+ /** What a press that offered Undo is said with once it ends, and what Undo is handed (form.ts). */
27
+ export interface OfferContext {
28
+ kit: UndoKit;
29
+ source: ButtonNode | StatButton | MenuItem;
30
+ scope: RunScope;
31
+ taken: PressTaken;
32
+ result: RunResult;
33
+ offers: PressUndo | undefined;
34
+ }
35
+ /**
36
+ * A press that offers Undo has ended: the words it held are said — the last, once it ran whole, with Undo, where what
37
+ * it did can be taken back (its button's steps for it; else Fieldia's own taking back, where nothing it did is beyond
38
+ * it — a copy, a delete, a page opened, a post, the app's call answered with no undo; else the app's own undos) — or,
39
+ * with nothing said, "Done: {label}". Undo runs on the record the press ended on: another shown since, only the app's
40
+ * own undos run.
41
+ */
42
+ export declare function offerUndo(inner: FormInner, context: OfferContext): void;
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pressDone = pressDone;
4
+ exports.takeBack = takeBack;
5
+ exports.offerUndo = offerUndo;
6
+ const messages_1 = require("./messages");
7
+ const run_1 = require("./run");
8
+ const values_1 = require("./values");
9
+ const wordsOf = (error) => (error instanceof Error ? error.message : String(error));
10
+ /** The steps a press does that Fieldia cannot take back by itself: a copy, a delete, a form put back or closed, a page opened, an address, a post. */
11
+ const BEYOND = /"do":"(duplicate|delete|reset|close|open|openUrl|post)"/;
12
+ /**
13
+ * What a press did, read as it ends against the values it began with (`PressTaken.at`): each field it changed — a
14
+ * value worked out aside, which follows — and whether it saved them (the record holds no change left to save).
15
+ */
16
+ function pressDone(taken, now, fields, saved) {
17
+ const wrote = new Map();
18
+ for (const name of new Set([...Object.keys(taken.at), ...Object.keys(now)])) {
19
+ if (fields[name]?.compute || (0, values_1.sameValue)(taken.at[name], now[name]))
20
+ continue;
21
+ wrote.set(name, { before: (taken.at[name] ?? null), after: (0, values_1.structuredCopy)(now[name] ?? null) });
22
+ }
23
+ return { app: taken.app, ...(taken.archived !== undefined ? { archived: taken.archived } : {}), wrote, ...(wrote.size && saved ? { saved } : {}) };
24
+ }
25
+ /**
26
+ * Take back what a press did (`PressTaken`), as its toast's Undo asks: the app's own undos, latest first, each
27
+ * answered as a call is; the record it archived brought back, or the reverse; then the values its steps and the
28
+ * app's answers wrote put back — each only while it holds what they left, a change made since by anyone else staying
29
+ * — and saved again where the press saved. On the record the press was on: another shown since, nothing is done.
30
+ */
31
+ async function takeBack(kit, taken, scope) {
32
+ const { form, answered, recordStep, replaced, tell } = kit;
33
+ scope.generation ??= form.generation();
34
+ const ended = (stopped) => stopped ? { done: false, reason: stopped.reason, ...(stopped.message !== undefined ? { message: stopped.message } : {}), ...(stopped.error !== undefined ? { error: stopped.error } : {}) } : run_1.DONE;
35
+ try {
36
+ // The app's own, whatever record is shown now: what it answers is laid only on the one the press ended on.
37
+ for (const undo of [...taken.app].reverse()) {
38
+ let answer;
39
+ try {
40
+ answer = await undo();
41
+ }
42
+ catch (error) {
43
+ return ended({ reason: 'app', message: wordsOf(error), error });
44
+ }
45
+ if (!answer)
46
+ continue;
47
+ if (replaced(scope)) {
48
+ if (answer.say !== undefined)
49
+ tell(null, typeof answer.say === 'string' ? answer.say : answer.say.message, (typeof answer.say === 'object' && answer.say.tone) || 'info');
50
+ continue;
51
+ }
52
+ const stopped = await answered(answer, scope);
53
+ if (stopped)
54
+ return ended(stopped);
55
+ }
56
+ if (taken.archived === undefined && !taken.wrote.size)
57
+ return run_1.DONE;
58
+ if (replaced(scope))
59
+ return ended(form.gone());
60
+ if (taken.archived !== undefined) {
61
+ const stopped = await recordStep(taken.archived ? 'unarchive' : 'archive', scope);
62
+ if (stopped)
63
+ return ended(stopped);
64
+ }
65
+ if (!taken.wrote.size)
66
+ return run_1.DONE;
67
+ const back = {};
68
+ for (const [name, { before, after }] of taken.wrote)
69
+ if ((0, values_1.sameValue)(form.values()[name], after))
70
+ back[name] = before;
71
+ if (Object.keys(back).length)
72
+ form.write(back, scope.chain);
73
+ return ended(taken.saved ? await form.save(scope.chain) : null);
74
+ }
75
+ catch (error) {
76
+ return ended({ reason: 'cannot', message: wordsOf(error), error });
77
+ }
78
+ }
79
+ /**
80
+ * A press that offers Undo has ended: the words it held are said — the last, once it ran whole, with Undo, where what
81
+ * it did can be taken back (its button's steps for it; else Fieldia's own taking back, where nothing it did is beyond
82
+ * it — a copy, a delete, a page opened, a post, the app's call answered with no undo; else the app's own undos) — or,
83
+ * with nothing said, "Done: {label}". Undo runs on the record the press ended on: another shown since, only the app's
84
+ * own undos run.
85
+ */
86
+ function offerUndo(inner, context) {
87
+ const { kit, source, scope, taken, result, offers } = context;
88
+ const { messages } = inner;
89
+ const host = kit.form.host;
90
+ const done = pressDone(taken, kit.form.values(), inner.fields, !kit.form.changed());
91
+ const beyond = taken.beyond ?? BEYOND.exec(JSON.stringify([source.steps ?? [], 'builtin' in source ? { do: source.builtin } : {}]))?.[1];
92
+ const did = taken.app.length > 0 || taken.archived !== undefined || done.wrote.size > 0;
93
+ const can = result.done && (Array.isArray(offers) || (offers === true ? did && beyond === undefined : taken.app.length > 0));
94
+ const said = [...taken.said];
95
+ const builtin = 'builtin' in source ? source.builtin : undefined;
96
+ const plain = builtin === 'archive' ? messages.pressArchived : builtin === 'unarchive' ? messages.pressUnarchived : (0, messages_1.fillMessage)(messages, messages.pressDone, { label: source.label ?? '' });
97
+ const last = can ? (said.pop() ?? { message: plain, tone: 'success' }) : null;
98
+ for (const words of said)
99
+ host?.say(words.message, words.tone);
100
+ if (!last)
101
+ return;
102
+ const on = kit.form.generation();
103
+ const id = `${scope.id}.undo`;
104
+ host?.say(last.message, last.tone, {
105
+ undo: () => inner.track((async () => {
106
+ const again = { id, chain: [], typed: 'first', generation: on, ...(scope.recordIds ? { recordIds: [...scope.recordIds] } : {}) };
107
+ const steps = Array.isArray(offers) ? offers : [];
108
+ // Its steps, on the record the press ended on; else what it did, taken back.
109
+ const ended = Array.isArray(offers) ? (on === kit.form.generation() ? await kit.runSteps(offers, again) : { done: false, ...inner.replaced() }) : await takeBack(kit, offers === true ? done : { app: taken.app, wrote: new Map() }, again);
110
+ inner.emit('run', { id, steps, result: ended });
111
+ return ended;
112
+ })()),
113
+ });
114
+ }
115
+ //# sourceMappingURL=press-undo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"press-undo.js","sourceRoot":"","sources":["../../../../../../libs/core/src/lib/record/press-undo.ts"],"names":[],"mappings":"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"}