@fieldia/designer 0.23.0 → 0.25.0

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 (339) hide show
  1. package/package.json +4 -4
  2. package/src/lib/canvas-blocks.d.mts +4 -3
  3. package/src/lib/canvas-blocks.d.ts +4 -3
  4. package/src/lib/canvas-blocks.js +27 -1
  5. package/src/lib/canvas-blocks.js.map +1 -1
  6. package/src/lib/canvas-blocks.mjs +27 -1
  7. package/src/lib/canvas-blocks.mjs.map +1 -1
  8. package/src/lib/canvas-header.js +3 -3
  9. package/src/lib/canvas-header.js.map +1 -1
  10. package/src/lib/canvas-header.mjs +4 -4
  11. package/src/lib/canvas-header.mjs.map +1 -1
  12. package/src/lib/designer.d.mts +55 -2
  13. package/src/lib/designer.d.ts +55 -2
  14. package/src/lib/designer.js +189 -0
  15. package/src/lib/designer.js.map +1 -1
  16. package/src/lib/designer.mjs +192 -3
  17. package/src/lib/designer.mjs.map +1 -1
  18. package/src/lib/header-commands.d.mts +7 -2
  19. package/src/lib/header-commands.d.ts +7 -2
  20. package/src/lib/header-commands.js +11 -5
  21. package/src/lib/header-commands.js.map +1 -1
  22. package/src/lib/header-commands.mjs +9 -4
  23. package/src/lib/header-commands.mjs.map +1 -1
  24. package/src/lib/header-properties.js +3 -3
  25. package/src/lib/header-properties.js.map +1 -1
  26. package/src/lib/header-properties.mjs +4 -4
  27. package/src/lib/header-properties.mjs.map +1 -1
  28. package/src/lib/icons.js +1 -0
  29. package/src/lib/icons.js.map +1 -1
  30. package/src/lib/icons.mjs +1 -0
  31. package/src/lib/icons.mjs.map +1 -1
  32. package/src/lib/input-changes.js +8 -1
  33. package/src/lib/input-changes.js.map +1 -1
  34. package/src/lib/input-changes.mjs +8 -1
  35. package/src/lib/input-changes.mjs.map +1 -1
  36. package/src/lib/input-commands.d.mts +6 -0
  37. package/src/lib/input-commands.d.ts +6 -0
  38. package/src/lib/input-commands.js +19 -0
  39. package/src/lib/input-commands.js.map +1 -1
  40. package/src/lib/input-commands.mjs +20 -1
  41. package/src/lib/input-commands.mjs.map +1 -1
  42. package/src/lib/kind-settings-inputs.d.mts +1 -1
  43. package/src/lib/kind-settings-inputs.d.ts +1 -1
  44. package/src/lib/kind-settings-inputs.js +66 -0
  45. package/src/lib/kind-settings-inputs.js.map +1 -1
  46. package/src/lib/kind-settings-inputs.mjs +66 -0
  47. package/src/lib/kind-settings-inputs.mjs.map +1 -1
  48. package/src/lib/kinds.js +5 -2
  49. package/src/lib/kinds.js.map +1 -1
  50. package/src/lib/kinds.mjs +5 -2
  51. package/src/lib/kinds.mjs.map +1 -1
  52. package/src/lib/layout-changes.js +10 -0
  53. package/src/lib/layout-changes.js.map +1 -1
  54. package/src/lib/layout-changes.mjs +10 -0
  55. package/src/lib/layout-changes.mjs.map +1 -1
  56. package/src/lib/layout-ops.d.mts +3 -3
  57. package/src/lib/layout-ops.d.ts +3 -3
  58. package/src/lib/layout-ops.js +16 -5
  59. package/src/lib/layout-ops.js.map +1 -1
  60. package/src/lib/layout-ops.mjs +16 -5
  61. package/src/lib/layout-ops.mjs.map +1 -1
  62. package/src/lib/layout-tree.js +3 -1
  63. package/src/lib/layout-tree.js.map +1 -1
  64. package/src/lib/layout-tree.mjs +3 -1
  65. package/src/lib/layout-tree.mjs.map +1 -1
  66. package/src/lib/list-cards-settings.d.mts +30 -0
  67. package/src/lib/list-cards-settings.d.ts +30 -0
  68. package/src/lib/list-cards-settings.js +136 -0
  69. package/src/lib/list-cards-settings.js.map +1 -0
  70. package/src/lib/list-cards-settings.mjs +132 -0
  71. package/src/lib/list-cards-settings.mjs.map +1 -0
  72. package/src/lib/list-commands.d.mts +43 -4
  73. package/src/lib/list-commands.d.ts +43 -4
  74. package/src/lib/list-commands.js +163 -1
  75. package/src/lib/list-commands.js.map +1 -1
  76. package/src/lib/list-commands.mjs +163 -2
  77. package/src/lib/list-commands.mjs.map +1 -1
  78. package/src/lib/list-properties.js +144 -24
  79. package/src/lib/list-properties.js.map +1 -1
  80. package/src/lib/list-properties.mjs +145 -25
  81. package/src/lib/list-properties.mjs.map +1 -1
  82. package/src/lib/list-rows-settings.d.mts +30 -0
  83. package/src/lib/list-rows-settings.d.ts +30 -0
  84. package/src/lib/list-rows-settings.js +136 -0
  85. package/src/lib/list-rows-settings.js.map +1 -0
  86. package/src/lib/list-rows-settings.mjs +132 -0
  87. package/src/lib/list-rows-settings.mjs.map +1 -0
  88. package/src/lib/locales/ar/bar.js +1 -0
  89. package/src/lib/locales/ar/bar.js.map +1 -1
  90. package/src/lib/locales/ar/bar.mjs +1 -0
  91. package/src/lib/locales/ar/bar.mjs.map +1 -1
  92. package/src/lib/locales/ar/canvas.js +1 -1
  93. package/src/lib/locales/ar/canvas.js.map +1 -1
  94. package/src/lib/locales/ar/canvas.mjs +1 -1
  95. package/src/lib/locales/ar/canvas.mjs.map +1 -1
  96. package/src/lib/locales/ar/changes.js +6 -0
  97. package/src/lib/locales/ar/changes.js.map +1 -1
  98. package/src/lib/locales/ar/changes.mjs +6 -0
  99. package/src/lib/locales/ar/changes.mjs.map +1 -1
  100. package/src/lib/locales/ar/index.js +2 -1
  101. package/src/lib/locales/ar/index.js.map +1 -1
  102. package/src/lib/locales/ar/index.mjs +2 -1
  103. package/src/lib/locales/ar/index.mjs.map +1 -1
  104. package/src/lib/locales/ar/kinds.js +1 -0
  105. package/src/lib/locales/ar/kinds.js.map +1 -1
  106. package/src/lib/locales/ar/kinds.mjs +1 -0
  107. package/src/lib/locales/ar/kinds.mjs.map +1 -1
  108. package/src/lib/locales/ar/list.js +61 -1
  109. package/src/lib/locales/ar/list.js.map +1 -1
  110. package/src/lib/locales/ar/list.mjs +61 -1
  111. package/src/lib/locales/ar/list.mjs.map +1 -1
  112. package/src/lib/locales/ar/outline.js +1 -0
  113. package/src/lib/locales/ar/outline.js.map +1 -1
  114. package/src/lib/locales/ar/outline.mjs +1 -0
  115. package/src/lib/locales/ar/outline.mjs.map +1 -1
  116. package/src/lib/locales/ar/panel.js +97 -2
  117. package/src/lib/locales/ar/panel.js.map +1 -1
  118. package/src/lib/locales/ar/panel.mjs +97 -2
  119. package/src/lib/locales/ar/panel.mjs.map +1 -1
  120. package/src/lib/locales/ar/parts.js +1 -0
  121. package/src/lib/locales/ar/parts.js.map +1 -1
  122. package/src/lib/locales/ar/parts.mjs +1 -0
  123. package/src/lib/locales/ar/parts.mjs.map +1 -1
  124. package/src/lib/locales/ar/questions.js +13 -0
  125. package/src/lib/locales/ar/questions.js.map +1 -1
  126. package/src/lib/locales/ar/questions.mjs +13 -0
  127. package/src/lib/locales/ar/questions.mjs.map +1 -1
  128. package/src/lib/locales/ar/refusals.js +10 -0
  129. package/src/lib/locales/ar/refusals.js.map +1 -1
  130. package/src/lib/locales/ar/refusals.mjs +10 -0
  131. package/src/lib/locales/ar/refusals.mjs.map +1 -1
  132. package/src/lib/locales/ar/related-part.d.mts +2 -0
  133. package/src/lib/locales/ar/related-part.d.ts +2 -0
  134. package/src/lib/locales/ar/related-part.js +41 -0
  135. package/src/lib/locales/ar/related-part.js.map +1 -0
  136. package/src/lib/locales/ar/related-part.mjs +38 -0
  137. package/src/lib/locales/ar/related-part.mjs.map +1 -0
  138. package/src/lib/locales/ar/settings-changes.js +13 -0
  139. package/src/lib/locales/ar/settings-changes.js.map +1 -1
  140. package/src/lib/locales/ar/settings-changes.mjs +13 -0
  141. package/src/lib/locales/ar/settings-changes.mjs.map +1 -1
  142. package/src/lib/locales/ar/steps.js +3 -0
  143. package/src/lib/locales/ar/steps.js.map +1 -1
  144. package/src/lib/locales/ar/steps.mjs +3 -0
  145. package/src/lib/locales/ar/steps.mjs.map +1 -1
  146. package/src/lib/locales/ar/try-it.js +1 -0
  147. package/src/lib/locales/ar/try-it.js.map +1 -1
  148. package/src/lib/locales/ar/try-it.mjs +1 -0
  149. package/src/lib/locales/ar/try-it.mjs.map +1 -1
  150. package/src/lib/locales/en/bar.d.mts +2 -0
  151. package/src/lib/locales/en/bar.d.ts +2 -0
  152. package/src/lib/locales/en/bar.js +2 -0
  153. package/src/lib/locales/en/bar.js.map +1 -1
  154. package/src/lib/locales/en/bar.mjs +2 -0
  155. package/src/lib/locales/en/bar.mjs.map +1 -1
  156. package/src/lib/locales/en/canvas.d.mts +1 -0
  157. package/src/lib/locales/en/canvas.d.ts +1 -0
  158. package/src/lib/locales/en/canvas.js +1 -1
  159. package/src/lib/locales/en/canvas.js.map +1 -1
  160. package/src/lib/locales/en/canvas.mjs +1 -1
  161. package/src/lib/locales/en/canvas.mjs.map +1 -1
  162. package/src/lib/locales/en/changes.d.mts +6 -0
  163. package/src/lib/locales/en/changes.d.ts +6 -0
  164. package/src/lib/locales/en/changes.js +6 -0
  165. package/src/lib/locales/en/changes.js.map +1 -1
  166. package/src/lib/locales/en/changes.mjs +6 -0
  167. package/src/lib/locales/en/changes.mjs.map +1 -1
  168. package/src/lib/locales/en/index.d.mts +224 -0
  169. package/src/lib/locales/en/index.d.ts +224 -0
  170. package/src/lib/locales/en/index.js +2 -1
  171. package/src/lib/locales/en/index.js.map +1 -1
  172. package/src/lib/locales/en/index.mjs +2 -1
  173. package/src/lib/locales/en/index.mjs.map +1 -1
  174. package/src/lib/locales/en/kinds.d.mts +1 -0
  175. package/src/lib/locales/en/kinds.d.ts +1 -0
  176. package/src/lib/locales/en/kinds.js +1 -0
  177. package/src/lib/locales/en/kinds.js.map +1 -1
  178. package/src/lib/locales/en/kinds.mjs +1 -0
  179. package/src/lib/locales/en/kinds.mjs.map +1 -1
  180. package/src/lib/locales/en/list.d.mts +73 -0
  181. package/src/lib/locales/en/list.d.ts +73 -0
  182. package/src/lib/locales/en/list.js +64 -1
  183. package/src/lib/locales/en/list.js.map +1 -1
  184. package/src/lib/locales/en/list.mjs +64 -1
  185. package/src/lib/locales/en/list.mjs.map +1 -1
  186. package/src/lib/locales/en/outline.d.mts +1 -0
  187. package/src/lib/locales/en/outline.d.ts +1 -0
  188. package/src/lib/locales/en/outline.js +1 -0
  189. package/src/lib/locales/en/outline.js.map +1 -1
  190. package/src/lib/locales/en/outline.mjs +1 -0
  191. package/src/lib/locales/en/outline.mjs.map +1 -1
  192. package/src/lib/locales/en/panel.d.mts +51 -0
  193. package/src/lib/locales/en/panel.d.ts +51 -0
  194. package/src/lib/locales/en/panel.js +84 -6
  195. package/src/lib/locales/en/panel.js.map +1 -1
  196. package/src/lib/locales/en/panel.mjs +84 -6
  197. package/src/lib/locales/en/panel.mjs.map +1 -1
  198. package/src/lib/locales/en/parts.d.mts +1 -0
  199. package/src/lib/locales/en/parts.d.ts +1 -0
  200. package/src/lib/locales/en/parts.js +1 -0
  201. package/src/lib/locales/en/parts.js.map +1 -1
  202. package/src/lib/locales/en/parts.mjs +1 -0
  203. package/src/lib/locales/en/parts.mjs.map +1 -1
  204. package/src/lib/locales/en/questions.d.mts +14 -0
  205. package/src/lib/locales/en/questions.d.ts +14 -0
  206. package/src/lib/locales/en/questions.js +13 -0
  207. package/src/lib/locales/en/questions.js.map +1 -1
  208. package/src/lib/locales/en/questions.mjs +13 -0
  209. package/src/lib/locales/en/questions.mjs.map +1 -1
  210. package/src/lib/locales/en/refusals.d.mts +10 -0
  211. package/src/lib/locales/en/refusals.d.ts +10 -0
  212. package/src/lib/locales/en/refusals.js +10 -0
  213. package/src/lib/locales/en/refusals.js.map +1 -1
  214. package/src/lib/locales/en/refusals.mjs +10 -0
  215. package/src/lib/locales/en/refusals.mjs.map +1 -1
  216. package/src/lib/locales/en/related-part.d.mts +57 -0
  217. package/src/lib/locales/en/related-part.d.ts +57 -0
  218. package/src/lib/locales/en/related-part.js +46 -0
  219. package/src/lib/locales/en/related-part.js.map +1 -0
  220. package/src/lib/locales/en/related-part.mjs +43 -0
  221. package/src/lib/locales/en/related-part.mjs.map +1 -0
  222. package/src/lib/locales/en/rules-ui.js +1 -1
  223. package/src/lib/locales/en/rules-ui.js.map +1 -1
  224. package/src/lib/locales/en/rules-ui.mjs +1 -1
  225. package/src/lib/locales/en/rules-ui.mjs.map +1 -1
  226. package/src/lib/locales/en/settings-changes.d.mts +12 -0
  227. package/src/lib/locales/en/settings-changes.d.ts +12 -0
  228. package/src/lib/locales/en/settings-changes.js +12 -0
  229. package/src/lib/locales/en/settings-changes.js.map +1 -1
  230. package/src/lib/locales/en/settings-changes.mjs +12 -0
  231. package/src/lib/locales/en/settings-changes.mjs.map +1 -1
  232. package/src/lib/locales/en/steps.d.mts +3 -0
  233. package/src/lib/locales/en/steps.d.ts +3 -0
  234. package/src/lib/locales/en/steps.js +3 -0
  235. package/src/lib/locales/en/steps.js.map +1 -1
  236. package/src/lib/locales/en/steps.mjs +3 -0
  237. package/src/lib/locales/en/steps.mjs.map +1 -1
  238. package/src/lib/locales/en/try-it.d.mts +2 -0
  239. package/src/lib/locales/en/try-it.d.ts +2 -0
  240. package/src/lib/locales/en/try-it.js +2 -0
  241. package/src/lib/locales/en/try-it.js.map +1 -1
  242. package/src/lib/locales/en/try-it.mjs +2 -0
  243. package/src/lib/locales/en/try-it.mjs.map +1 -1
  244. package/src/lib/outline-rows.js +1 -0
  245. package/src/lib/outline-rows.js.map +1 -1
  246. package/src/lib/outline-rows.mjs +1 -0
  247. package/src/lib/outline-rows.mjs.map +1 -1
  248. package/src/lib/page-checks.d.mts +5 -0
  249. package/src/lib/page-checks.d.ts +5 -0
  250. package/src/lib/page-checks.js +7 -1
  251. package/src/lib/page-checks.js.map +1 -1
  252. package/src/lib/page-checks.mjs +7 -1
  253. package/src/lib/page-checks.mjs.map +1 -1
  254. package/src/lib/page-tree.d.mts +3 -1
  255. package/src/lib/page-tree.d.ts +3 -1
  256. package/src/lib/page-tree.js +46 -3
  257. package/src/lib/page-tree.js.map +1 -1
  258. package/src/lib/page-tree.mjs +45 -3
  259. package/src/lib/page-tree.mjs.map +1 -1
  260. package/src/lib/panel-block.js +4 -0
  261. package/src/lib/panel-block.js.map +1 -1
  262. package/src/lib/panel-block.mjs +4 -0
  263. package/src/lib/panel-block.mjs.map +1 -1
  264. package/src/lib/panel-field.js +28 -1
  265. package/src/lib/panel-field.js.map +1 -1
  266. package/src/lib/panel-field.mjs +28 -1
  267. package/src/lib/panel-field.mjs.map +1 -1
  268. package/src/lib/panel-page.js +134 -1
  269. package/src/lib/panel-page.js.map +1 -1
  270. package/src/lib/panel-page.mjs +134 -1
  271. package/src/lib/panel-page.mjs.map +1 -1
  272. package/src/lib/panel-related.d.mts +4 -0
  273. package/src/lib/panel-related.d.ts +4 -0
  274. package/src/lib/panel-related.js +198 -0
  275. package/src/lib/panel-related.js.map +1 -0
  276. package/src/lib/panel-related.mjs +195 -0
  277. package/src/lib/panel-related.mjs.map +1 -0
  278. package/src/lib/panel-screen.js +1 -0
  279. package/src/lib/panel-screen.js.map +1 -1
  280. package/src/lib/panel-screen.mjs +1 -0
  281. package/src/lib/panel-screen.mjs.map +1 -1
  282. package/src/lib/publish-ui.js +6 -3
  283. package/src/lib/publish-ui.js.map +1 -1
  284. package/src/lib/publish-ui.mjs +6 -3
  285. package/src/lib/publish-ui.mjs.map +1 -1
  286. package/src/lib/screen-editor.js +3 -0
  287. package/src/lib/screen-editor.js.map +1 -1
  288. package/src/lib/screen-editor.mjs +3 -0
  289. package/src/lib/screen-editor.mjs.map +1 -1
  290. package/src/lib/steps-checks.js +6 -2
  291. package/src/lib/steps-checks.js.map +1 -1
  292. package/src/lib/steps-checks.mjs +6 -2
  293. package/src/lib/steps-checks.mjs.map +1 -1
  294. package/src/lib/steps-editor.js +1 -1
  295. package/src/lib/steps-editor.js.map +1 -1
  296. package/src/lib/steps-editor.mjs +1 -1
  297. package/src/lib/steps-editor.mjs.map +1 -1
  298. package/src/lib/steps-settings.js +3 -0
  299. package/src/lib/steps-settings.js.map +1 -1
  300. package/src/lib/steps-settings.mjs +3 -0
  301. package/src/lib/steps-settings.mjs.map +1 -1
  302. package/src/lib/steps-words.js +5 -1
  303. package/src/lib/steps-words.js.map +1 -1
  304. package/src/lib/steps-words.mjs +5 -1
  305. package/src/lib/steps-words.mjs.map +1 -1
  306. package/src/lib/styles-json.d.mts +1 -1
  307. package/src/lib/styles-json.d.ts +1 -1
  308. package/src/lib/styles-json.js +7 -0
  309. package/src/lib/styles-json.js.map +1 -1
  310. package/src/lib/styles-json.mjs +7 -0
  311. package/src/lib/styles-json.mjs.map +1 -1
  312. package/src/lib/styles-kinds.d.mts +1 -1
  313. package/src/lib/styles-kinds.d.ts +1 -1
  314. package/src/lib/styles-kinds.js +12 -0
  315. package/src/lib/styles-kinds.js.map +1 -1
  316. package/src/lib/styles-kinds.mjs +12 -0
  317. package/src/lib/styles-kinds.mjs.map +1 -1
  318. package/src/lib/styles.d.mts +1 -1
  319. package/src/lib/styles.d.ts +1 -1
  320. package/src/lib/styles.js +1 -0
  321. package/src/lib/styles.js.map +1 -1
  322. package/src/lib/styles.mjs +1 -0
  323. package/src/lib/styles.mjs.map +1 -1
  324. package/src/lib/toolbox.d.mts +3 -0
  325. package/src/lib/toolbox.d.ts +3 -0
  326. package/src/lib/toolbox.js +14 -4
  327. package/src/lib/toolbox.js.map +1 -1
  328. package/src/lib/toolbox.mjs +14 -4
  329. package/src/lib/toolbox.mjs.map +1 -1
  330. package/src/lib/try-drawer.js +15 -5
  331. package/src/lib/try-drawer.js.map +1 -1
  332. package/src/lib/try-drawer.mjs +15 -5
  333. package/src/lib/try-drawer.mjs.map +1 -1
  334. package/src/lib/zone-setting.d.mts +7 -0
  335. package/src/lib/zone-setting.d.ts +7 -0
  336. package/src/lib/zone-setting.js +18 -0
  337. package/src/lib/zone-setting.js.map +1 -0
  338. package/src/lib/zone-setting.mjs +15 -0
  339. package/src/lib/zone-setting.mjs.map +1 -0
@@ -1,6 +1,8 @@
1
+ import { bulkSettable, importable } from '@fieldia/core';
1
2
  import { storedAs } from './kinds.mjs';
2
- import { allIds, fieldReads, keptFields, listCalendarFields, listMapFields, nextName } from './page-tree.mjs';
3
+ import { allIds, fieldReads, keptFields, listCalendarFields, listCardFields, listMapFields, nextName } from './page-tree.mjs';
3
4
  import { Refusal } from './refusal.mjs';
5
+ import { formulaProblem, problemWords } from './rules-formula.mjs';
4
6
  /** Its header's rule: none (false), or set in "0px" to "400px" from the column's end. */
5
7
  export const ruleIsGood = (rule) => rule === false || (typeof rule === 'string' && /^(\d|[1-9]\d|[1-3]\d{2}|400)px$/.test(rule));
6
8
  /** A column's width: 1 to 200 characters, or "8px" to "4000px" for the whole column. */
@@ -19,6 +21,68 @@ const actionName = (label) => label
19
21
  .toLowerCase()
20
22
  .replace(/[^a-z0-9]+/g, '_')
21
23
  .replace(/^_+|_+$/g, '') || 'action';
24
+ /**
25
+ * A list's or a related list's rows' own rules set as asked: each condition refused in words where it does not read on
26
+ * a row's record (`reads`: a page whose fields are its records' — the list page itself, or a related list's own
27
+ * `fields`), a button kept by its id, a new one named afresh in the page, each doing something.
28
+ */
29
+ export function setRowRules(target, options, draft, reads) {
30
+ const refuse = (when) => {
31
+ if (formulaProblem(reads, when))
32
+ throw new Refusal((w) => w.rules.inWhen(problemWords(formulaProblem(reads, when, w), w)));
33
+ };
34
+ if (options.rowTones !== undefined) {
35
+ const kept = (options.rowTones ?? []).map((item) => ({ tone: item.tone, when: typeof item.when === 'string' ? item.when.trim() : item.when }));
36
+ for (const item of kept)
37
+ if (typeof item.when === 'string')
38
+ refuse(item.when);
39
+ if (kept.length)
40
+ target.rowTones = kept;
41
+ else
42
+ delete target.rowTones;
43
+ }
44
+ if (options.rowBold !== undefined) {
45
+ const said = options.rowBold?.trim();
46
+ if (said) {
47
+ refuse(said);
48
+ target.rowBold = said;
49
+ }
50
+ else
51
+ delete target.rowBold;
52
+ }
53
+ if (options.rowButtons !== undefined) {
54
+ const before = new Map((target.rowButtons ?? []).map((button) => [button.id, button]));
55
+ const ids = allIds(draft);
56
+ const kept = (options.rowButtons ?? []).map((button) => {
57
+ const label = button.label.trim();
58
+ if (!label)
59
+ throw new Refusal((w) => w.tables.buttonNeedsWords);
60
+ const was = button.id ? before.get(button.id) : undefined;
61
+ const id = was ? was.id : nextName((one) => ids.has(one), `${target.id}-row-button`, '-');
62
+ ids.add(id);
63
+ const made = { ...(was ?? { type: 'button', id }), label };
64
+ if (button.action?.trim())
65
+ made.action = button.action.trim();
66
+ else
67
+ delete made.action;
68
+ const hidden = button.invisible?.trim();
69
+ if (hidden) {
70
+ refuse(hidden);
71
+ made.invisible = hidden;
72
+ }
73
+ else
74
+ delete made.invisible;
75
+ // A button does something: an app action, or the steps it had.
76
+ if (!made.action && !made.steps?.length)
77
+ made.action = actionName(label);
78
+ return made;
79
+ });
80
+ if (kept.length)
81
+ target.rowButtons = kept;
82
+ else
83
+ delete target.rowButtons;
84
+ }
85
+ }
22
86
  /** The fields a filter reads, through its groups. */
23
87
  export function filterFields(items) {
24
88
  return items.flatMap((item) => ('any' in item ? filterFields(item.any) : 'all' in item ? filterFields(item.all) : [item.field]));
@@ -108,6 +172,10 @@ export function listCommands(context) {
108
172
  delete list.cells[field];
109
173
  if (list.cells && !Object.keys(list.cells).length)
110
174
  delete list.cells;
175
+ if (list.optionalColumns)
176
+ delete list.optionalColumns[field];
177
+ if (list.optionalColumns && !Object.keys(list.optionalColumns).length)
178
+ delete list.optionalColumns;
111
179
  prune(draft);
112
180
  });
113
181
  if (ok)
@@ -153,6 +221,48 @@ export function listCommands(context) {
153
221
  delete list.sortable;
154
222
  else if (options.sortable === false)
155
223
  list.sortable = false;
224
+ if (options.export === true)
225
+ list.export = true;
226
+ else if (options.export === false)
227
+ delete list.export;
228
+ if (options.print === true)
229
+ list.print = true;
230
+ else if (options.print === false)
231
+ delete list.print;
232
+ if (options.bulkEdit === false)
233
+ delete list.bulkEdit;
234
+ else if (options.bulkEdit === true) {
235
+ if (!Array.isArray(list.bulkEdit))
236
+ list.bulkEdit = true;
237
+ }
238
+ else if (options.bulkEdit !== undefined) {
239
+ for (const name of options.bulkEdit) {
240
+ const def = fieldFor(draft, name);
241
+ if (!bulkSettable(def))
242
+ throw new Refusal((w) => w.refusals.notBulkSettable(def.label));
243
+ }
244
+ if (options.bulkEdit.length)
245
+ list.bulkEdit = [...new Set(options.bulkEdit)];
246
+ else
247
+ delete list.bulkEdit;
248
+ }
249
+ if (options.import === false)
250
+ delete list.import;
251
+ else if (options.import === true) {
252
+ if (!Array.isArray(list.import))
253
+ list.import = true;
254
+ }
255
+ else if (options.import !== undefined) {
256
+ for (const name of options.import) {
257
+ const def = fieldFor(draft, name);
258
+ if (!importable(def))
259
+ throw new Refusal((w) => w.refusals.notImportable(def.label));
260
+ }
261
+ if (options.import.length)
262
+ list.import = [...new Set(options.import)];
263
+ else
264
+ delete list.import;
265
+ }
156
266
  if (options.search === 'fields')
157
267
  list.search = 'fields';
158
268
  else if (options.search === 'bar') {
@@ -219,6 +329,37 @@ export function listCommands(context) {
219
329
  fieldFor(draft, name);
220
330
  list.calendar = JSON.parse(JSON.stringify(options.calendar));
221
331
  }
332
+ if (options.card === null)
333
+ delete list.card;
334
+ else if (options.card !== undefined) {
335
+ // As a map's card: its fields come from the model, and the page check says what is wrong with the rest.
336
+ for (const name of listCardFields(options.card))
337
+ fieldFor(draft, name);
338
+ list.card = JSON.parse(JSON.stringify(options.card));
339
+ }
340
+ if (options.gallery === null)
341
+ delete list.gallery;
342
+ else if (options.gallery !== undefined)
343
+ list.gallery = { ...options.gallery };
344
+ // A row's own rules: conditions on its record, refused in words where they do not read.
345
+ setRowRules(list, options, draft, draft);
346
+ if (options.optionalColumn !== undefined) {
347
+ const { field, starts } = options.optionalColumn;
348
+ if (!list.columns.includes(field))
349
+ throw new Refusal((w) => w.refusals.notAColumn(field));
350
+ const optional = { ...list.optionalColumns };
351
+ if (starts)
352
+ optional[field] = starts;
353
+ else
354
+ delete optional[field];
355
+ // Never every column hidden as the list opens: the one asked for shows.
356
+ if (starts === 'hide' && list.columns.every((name) => optional[name] === 'hide'))
357
+ optional[field] = 'show';
358
+ if (Object.keys(optional).length)
359
+ list.optionalColumns = optional;
360
+ else
361
+ delete list.optionalColumns;
362
+ }
222
363
  prune(draft);
223
364
  });
224
365
  },
@@ -238,6 +379,13 @@ export function listCommands(context) {
238
379
  const own = fieldFor(draft, column);
239
380
  if (cell.widget === 'dot' && own.type !== 'selection')
240
381
  throw new Refusal((w) => w.refusals.dotNeedsChoice(own.label));
382
+ // Chips are a link's records, a bar a number's, a phone a text's.
383
+ const fits = { tags: ['many2many'], progressbar: ['integer', 'float'], phone: ['char'] };
384
+ if (cell.widget && fits[cell.widget] && !fits[cell.widget].includes(own.type))
385
+ throw new Refusal((w) => w.refusals.cellWidgetKind(own.label));
386
+ // A sum, an average, the lowest and the highest are a number's; any column has a count.
387
+ if (cell.total && cell.total !== 'count' && !['integer', 'float', 'monetary'].includes(own.type))
388
+ throw new Refusal((w) => w.refusals.totalNeedsNumber(own.label));
241
389
  if (cell.lead) {
242
390
  const from = fieldFor(draft, cell.lead.field);
243
391
  if (from.type !== 'selection')
@@ -274,13 +422,26 @@ export function listCommands(context) {
274
422
  const at = filterOf(list, id);
275
423
  if (patch.label !== undefined)
276
424
  filters[at].label = patch.label;
277
- if (patch.filter !== undefined) {
425
+ if (patch.filter === null)
426
+ delete filters[at].filter;
427
+ else if (patch.filter !== undefined) {
278
428
  if (!patch.filter.length)
279
429
  throw new Refusal((w) => w.refusals.filterCondition);
280
430
  for (const name of filterFields(patch.filter))
281
431
  fieldFor(draft, name);
282
432
  filters[at].filter = patch.filter;
283
433
  }
434
+ if (patch.period === null)
435
+ delete filters[at].period;
436
+ else if (patch.period !== undefined) {
437
+ // A period is a date's, or a date and time's.
438
+ const dated = fieldFor(draft, patch.period.field);
439
+ if (dated.type !== 'date' && dated.type !== 'datetime')
440
+ throw new Refusal((w) => w.refusals.periodNeedsDate(dated.label));
441
+ filters[at].period = { ...patch.period };
442
+ }
443
+ if (!filters[at].filter && !filters[at].period)
444
+ throw new Refusal((w) => w.refusals.filterCondition);
284
445
  if (patch.on !== undefined) {
285
446
  const on = new Set(list.defaultFilters ?? []);
286
447
  if (patch.on)
@@ -1 +1 @@
1
- {"version":3,"file":"list-commands.mjs","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/list-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list-commands.mjs","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/list-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAkO,MAAM,eAAe,CAAC;AACzR,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC1H,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AA4E/D,yFAAyF;AACzF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAa,EAAW,EAAE,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAEnJ,wFAAwF;AACxF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAW,EAAE,CACrD,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,yCAAyC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEzK,yEAAyE;AACzE,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAExG,iFAAiF;AACjF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAExE,4CAA4C;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAE9E,0DAA0D;AAC1D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,UAAU,KAAK,EAAE,CAAC;AAE7D,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,EAAE,CACnC,KAAK;KACF,SAAS,CAAC,MAAM,CAAC;KACjB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;KACrB,WAAW,EAAE;KACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;KAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC;AAYzC;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAA4F,EAAE,OAAsB,EAAE,KAAW,EAAE,KAAW;IACxK,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;QAC9B,IAAI,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC;YAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7H,CAAC,CAAC;IACF,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/I,KAAK,MAAM,IAAI,IAAI,IAAI;YAAE,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;;YACnC,OAAO,MAAM,CAAC,QAAQ,CAAC;IAC9B,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;QACrC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;;YAAM,OAAO,MAAM,CAAC,OAAO,CAAC;IAC/B,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAiB,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACnE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAChE,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1D,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;YAC1F,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACZ,MAAM,IAAI,GAAe,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;YACvE,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;gBAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;;gBACzD,OAAO,IAAI,CAAC,MAAM,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;YACxC,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,MAAM,CAAC,CAAC;gBACf,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;YAC1B,CAAC;;gBAAM,OAAO,IAAI,CAAC,SAAS,CAAC;YAC7B,+DAA+D;YAC/D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM;gBAAE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;;YACrC,OAAO,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;AACH,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,YAAY,CAAC,KAA4B;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnI,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAK5B;IACC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACjC,2CAA2C;IAC3C,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,EAAE;QAC5B,IAAI,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE;YAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,KAAW,EAAY,EAAE;QACvC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACvF,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,KAAW,EAAE,IAAY,EAAS,EAAE;QACpD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QACzB,uGAAuG;QACvG,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC;gBAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7G,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,KAAW,EAAE,EAAE;QAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/F,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,IAAc,EAAE,EAAU,EAAE,EAAE;QAC9C,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,IAAc,EAAE,EAAU,EAAE,EAAE;QAC9C,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,KAAW,EAAE,MAAc,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC,CAAC;IAEF,OAAO;QACL,SAAS,CAAC,KAAK,EAAE,KAAK;YACpB,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACnC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;oBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAC/H,CAAC,CAAC,CAAC;QACL,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,KAAK;YACrB,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;QACL,CAAC;QAED,YAAY,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,EAAE,KAAK,CAAC,CAAC;oBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;gBACpF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC3B,6EAA6E;gBAC7E,IAAI,IAAI,CAAC,IAAI;oBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;gBACtE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM;oBAAE,OAAO,IAAI,CAAC,IAAI,CAAC;gBACzC,IAAI,IAAI,CAAC,KAAK;oBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;oBAAE,OAAO,IAAI,CAAC,KAAK,CAAC;gBACrE,IAAI,IAAI,CAAC,eAAe;oBAAE,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC7D,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM;oBAAE,OAAO,IAAI,CAAC,eAAe,CAAC;gBACnG,KAAK,CAAC,KAAK,CAAC,CAAC;YACf,CAAC,CAAC,CAAC;YACH,IAAI,EAAE;gBAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAChC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,cAAc,CAAC,OAAO;YACpB,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,GAAG,GAAG;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACzI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;gBACnC,CAAC;gBACD,MAAM,MAAM,GAAG,CAAC,GAA+B,EAAE,KAA2B,EAAE,EAAE;oBAC9E,IAAI,KAAK,KAAK,SAAS;wBAAE,OAAO;oBAChC,KAAK,MAAM,IAAI,IAAI,KAAK;wBAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAChD,IAAI,KAAK,CAAC,MAAM;wBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;;wBACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC,CAAC;gBACF,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC/B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI;wBAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBACvD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM;wBAAE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;wBACxH,OAAO,IAAI,CAAC,IAAI,CAAC;gBACxB,CAAC;gBACD,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC7C,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBACnC,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC,MAAM,CAAC;qBAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;oBAClC,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBAChF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACtB,CAAC;gBACD,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;qBAC/C,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;oBAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI;oBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;qBAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK;oBAAE,OAAO,IAAI,CAAC,MAAM,CAAC;gBACtD,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI;oBAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;qBACzC,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;oBAAE,OAAO,IAAI,CAAC,KAAK,CAAC;gBACpD,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK;oBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;qBAChD,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;wBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC1D,CAAC;qBAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC1C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;wBACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;4BAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC1F,CAAC;oBACD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM;wBAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;;wBACvE,OAAO,IAAI,CAAC,QAAQ,CAAC;gBAC5B,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK;oBAAE,OAAO,IAAI,CAAC,MAAM,CAAC;qBAC5C,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;wBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACtD,CAAC;qBAAM,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACxC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;wBAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;4BAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBACtF,CAAC;oBACD,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM;wBAAE,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;;wBACjE,OAAO,IAAI,CAAC,MAAM,CAAC;gBAC1B,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ;oBAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;qBACnD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;oBAClC,kFAAkF;oBAClF,OAAO,IAAI,CAAC,MAAM,CAAC;oBACnB,OAAO,IAAI,CAAC,YAAY,CAAC;oBACzB,OAAO,IAAI,CAAC,YAAY,CAAC;gBAC3B,CAAC;gBACD,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;oBACvC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;wBACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;wBAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;4BAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC/F,CAAC;oBACD,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM;wBAAE,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;;wBAC1E,OAAO,IAAI,CAAC,YAAY,CAAC;oBAC9B,yDAAyD;oBACzD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC5G,IAAI,KAAK,CAAC,MAAM;wBAAE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;wBAC3D,OAAO,IAAI,CAAC,YAAY,CAAC;gBAChC,CAAC;gBACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBACtC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;oBAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACnC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC/G,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;oBACxC,IAAI,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC,KAAK;wBAAE,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;;wBACnD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC1B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM;wBAAE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;;wBACtD,OAAO,IAAI,CAAC,YAAY,CAAC;gBAChC,CAAC;gBACD,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC,WAAW,CAAC;qBACrD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;oBACjD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjE,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBACtH,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;gBACzC,CAAC;gBACD,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC,GAAG,CAAC;qBACrC,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;oBACnC,0GAA0G;oBAC1G,KAAK,MAAM,IAAI,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;wBAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACrE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAY,CAAC;gBAChE,CAAC;gBACD,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;qBAC/C,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBACxC,mGAAmG;oBACnG,KAAK,MAAM,IAAI,IAAI,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC;wBAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAC/E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAiB,CAAC;gBAC/E,CAAC;gBACD,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC,IAAI,CAAC;qBACvC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACpC,wGAAwG;oBACxG,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC;wBAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACvE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAa,CAAC;gBACnE,CAAC;gBACD,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC,OAAO,CAAC;qBAC7C,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;oBAAE,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC9E,wFAAwF;gBACxF,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBACzC,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;oBACzC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;oBACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC1F,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC7C,IAAI,MAAM;wBAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;;wBAChC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC5B,wEAAwE;oBACxE,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;wBAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;oBAC3G,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM;wBAAE,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;;wBAC7D,OAAO,IAAI,CAAC,eAAe,CAAC;gBACnC,CAAC;gBACD,KAAK,CAAC,KAAK,CAAC,CAAC;YACf,CAAC,CAAC,CAAC;QACL,CAAC;QAED,WAAW,CAAC,MAAM,EAAE,IAAI;YACtB,OAAO,KAAK,CACV,CAAC,KAAK,EAAE,EAAE;gBACR,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC5F,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;oBAAE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;qBACxD,CAAC;oBACJ,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACzG,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACrG,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBACpC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBACtH,kEAAkE;oBAClE,MAAM,IAAI,GAAsC,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5H,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC9I,wFAAwF;oBACxF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBACnK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBACd,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;4BAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAClG,CAAC;oBACD,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAa,CAAC;gBAC/D,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;oBAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;oBAC7C,OAAO,IAAI,CAAC,KAAK,CAAC;gBACvB,KAAK,CAAC,KAAK,CAAC,CAAC;YACf,CAAC,EACD,QAAQ,MAAM,EAAE,CACjB,CAAC;QACJ,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,MAAM;YACzB,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;oBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACnE,IAAI,CAAC,MAAM,CAAC,MAAM;oBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;gBACzE,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC;oBAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC/D,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACjC,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACzF,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9B,CAAC;QAED,gBAAgB,CAAC,EAAE,EAAE,KAAK;YACxB,OAAO,KAAK,CACV,CAAC,KAAK,EAAE,EAAE;gBACR,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC9B,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;oBAAE,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;qBAChD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACpC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;oBAC/E,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;wBAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBACrE,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBACpC,CAAC;gBACD,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;oBAAE,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;qBAChD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACpC,8CAA8C;oBAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC1H,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3C,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM;oBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;gBACrG,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;oBAC3B,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;oBAC9C,IAAI,KAAK,CAAC,EAAE;wBAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;wBACpB,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACnB,IAAI,EAAE,CAAC,IAAI;wBAAE,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;;wBACtC,OAAO,IAAI,CAAC,cAAc,CAAC;gBAClC,CAAC;gBACD,KAAK,CAAC,KAAK,CAAC,CAAC;YACf,CAAC,EACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CACrF,CAAC;QACJ,CAAC;QAED,gBAAgB,CAAC,EAAE;YACjB,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC9B,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;oBAAE,OAAO,IAAI,CAAC,OAAO,CAAC;gBAC/C,IAAI,IAAI,CAAC,cAAc;oBAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3F,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM;oBAAE,OAAO,IAAI,CAAC,cAAc,CAAC;gBAC7D,KAAK,CAAC,KAAK,CAAC,CAAC;YACf,CAAC,CAAC,CAAC;QACL,CAAC;QAED,aAAa,CAAC,KAAK;YACjB,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;oBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACpE,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACjC,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5H,CAAC,CAAC,CAAC;YACH,IAAI,EAAE;gBAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9B,CAAC;QAED,gBAAgB,CAAC,EAAE,EAAE,KAAK;YACxB,OAAO,KAAK,CACV,CAAC,KAAK,EAAE,EAAE;gBACR,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC1D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;wBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBAChF,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACtC,CAAC;gBACD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC1D,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAChC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;wBAAE,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;;wBACpD,OAAO,MAAM,CAAC,OAAO,CAAC;gBAC7B,CAAC;YACH,CAAC,EACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAC7K,CAAC;QACJ,CAAC;QAED,gBAAgB,CAAC,EAAE;YACjB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;oBAAE,OAAO,IAAI,CAAC,OAAO,CAAC;YACjD,CAAC,CAAC,CAAC;YACH,IAAI,EAAE;gBAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YACnB,OAAO,EAAE,CAAC;QACZ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -7,6 +7,8 @@ const core_1 = require("@fieldia/core");
7
7
  const kinds_1 = require("./kinds");
8
8
  const list_commands_1 = require("./list-commands");
9
9
  const list_calendar_1 = require("./list-calendar");
10
+ const list_cards_settings_1 = require("./list-cards-settings");
11
+ const list_rows_settings_1 = require("./list-rows-settings");
10
12
  const menu_1 = require("./menu");
11
13
  const steps_panel_1 = require("./steps-panel");
12
14
  const number_box_1 = require("./number-box");
@@ -41,7 +43,7 @@ function testsFor(field, words) {
41
43
  return [['=', t.is], ['>', t.more], ['<', t.less], ['>=', t.atLeast], ['<=', t.atMost], ...filled];
42
44
  case 'date':
43
45
  case 'datetime':
44
- return [['=', t.is], ['>', t.after], ['<', t.before], ...filled];
46
+ return [['=', t.is], ['>', t.after], ['<', t.before], ['period', t.period], ...filled];
45
47
  case 'char':
46
48
  case 'text':
47
49
  return [['ilike', t.contains], ['=', t.is], ['!=', t.isNot], ...filled];
@@ -78,24 +80,41 @@ function filterRow(el, designer, id) {
78
80
  const page = () => designer.getPage();
79
81
  const fieldOf = (n) => page().fields[n] ?? designer.modelFields().find((m) => m.name === n)?.field;
80
82
  let valueKey = '';
81
- const save = (patch) => {
82
- const current = listOf(page()).filters?.find((f) => f.id === id)?.filter[0];
83
- const next = { ...current, ...patch };
84
- if (next.op === 'set' || next.op === 'notset')
85
- delete next.value;
86
- designer.updateListFilter(id, { filter: [next] });
83
+ /** The filter's one test as its row shows it: its condition, or its period. */
84
+ const current = () => {
85
+ const named = listOf(page()).filters?.find((f) => f.id === id);
86
+ if (named?.period && !named.filter)
87
+ return { field: named.period.field, op: 'period', value: named.period.is };
88
+ return named?.filter?.[0];
87
89
  };
90
+ /** Kept as the page keeps it: a period as a period, any other test as a condition. */
91
+ const write = (next) => {
92
+ if (next.op === 'period')
93
+ return designer.updateListFilter(id, { filter: null, period: { field: next.field, is: next.value } });
94
+ const condition = { ...next };
95
+ if (condition.op === 'set' || condition.op === 'notset')
96
+ delete condition.value;
97
+ return designer.updateListFilter(id, { filter: [condition], period: null });
98
+ };
99
+ const save = (patch) => write({ ...current(), ...patch });
100
+ /** A test's first value: a period's This month, else the field's own. */
101
+ const valueFor = (op, field) => (op === 'period' ? 'thisMonth' : firstValue(field));
88
102
  which.addEventListener('change', () => {
89
103
  const field = fieldOf(which.value);
90
104
  if (!field)
91
105
  return;
92
- const [op] = testsFor(field, designer.words)[0];
93
- designer.updateListFilter(id, { filter: [op === 'set' ? { field: which.value, op } : { field: which.value, op, value: firstValue(field) }] });
106
+ // A period stays one from one date to another; else the field's first test.
107
+ const kept = current().op === 'period' && testsFor(field, designer.words).some(([op]) => op === 'period');
108
+ const [op] = kept ? ['period'] : testsFor(field, designer.words)[0];
109
+ write(op === 'set' ? { field: which.value, op } : { field: which.value, op, value: kept ? current().value : valueFor(op, field) });
94
110
  });
95
111
  test.addEventListener('change', () => {
96
- const current = listOf(page()).filters?.find((f) => f.id === id)?.filter[0];
97
- const field = fieldOf(current.field);
98
- save({ op: test.value, ...(current.value === undefined && field ? { value: firstValue(field) } : {}) });
112
+ const now = current();
113
+ const field = fieldOf(now.field);
114
+ const op = test.value;
115
+ // To a period or from one, the value starts again: a period's names are no day.
116
+ const fresh = now.value === undefined || (op === 'period') !== (now.op === 'period');
117
+ save({ op, ...(fresh && field ? { value: valueFor(op, field) } : {}) });
99
118
  });
100
119
  /** The value the filter holds now, as the page last drew it. */
101
120
  let heldValue;
@@ -103,6 +122,12 @@ function filterRow(el, designer, id) {
103
122
  let numberShown = null;
104
123
  function valueControl(field, condition) {
105
124
  numberShown = null;
125
+ if (condition.op === 'period') {
126
+ const box = select(el, w.filterValue, core_1.DATE_PERIODS.map((period) => [period, w.periods[period]]));
127
+ box.value = String(condition.value);
128
+ box.addEventListener('change', () => save({ value: box.value }));
129
+ return box;
130
+ }
106
131
  if (field.type === 'selection' || field.type === 'boolean') {
107
132
  const options = field.type === 'boolean' ? [['true', w.yes], ['false', w.no]] : field.options.map((o) => [String(o.value), o.label]);
108
133
  const box = select(el, w.filterValue, options);
@@ -137,7 +162,9 @@ function filterRow(el, designer, id) {
137
162
  name.value = label;
138
163
  on.checked = isOn;
139
164
  remove.setAttribute('aria-label', w.removeFilter(label));
140
- const single = items.filter.length === 1 && !('any' in items.filter[0]) && !('all' in items.filter[0]) ? items.filter[0] : null;
165
+ // One condition, or a period alone: what this row edits. Anything more was written by hand.
166
+ const one = !items.period && items.filter?.length === 1 && !('any' in items.filter[0]) && !('all' in items.filter[0]) ? items.filter[0] : null;
167
+ const single = items.period && !items.filter ? { field: items.period.field, op: 'period', value: items.period.is } : one;
141
168
  const field = single ? fieldOf(single.field) : undefined;
142
169
  condition.hidden = !single || !field;
143
170
  byHand.hidden = !condition.hidden;
@@ -154,6 +181,10 @@ function filterRow(el, designer, id) {
154
181
  valueKey = key;
155
182
  valueBox.replaceChildren(...(single.op === 'set' || single.op === 'notset' ? [] : [valueControl(field, single)]));
156
183
  }
184
+ // A period's list follows the page: an undo puts the last period back.
185
+ const periods = single.op === 'period' ? valueBox.querySelector('select') : null;
186
+ if (periods && !focused(periods))
187
+ periods.value = String(single.value);
157
188
  numberShown?.refresh();
158
189
  },
159
190
  focus() {
@@ -513,17 +544,46 @@ function listProperties(el, designer) {
513
544
  });
514
545
  // A box to choose each row; the search bar, or a keyword and each field's values; rows under their parent.
515
546
  const choose = el('input', { type: 'checkbox', 'aria-label': w.choose });
547
+ // Refused, a box says what the page says: the panel may have been brought up to date already as the refusal was told.
548
+ const pageList = () => listOf(designer.getPage());
516
549
  choose.addEventListener('change', () => {
517
550
  if (!designer.setListOptions({ choose: choose.checked }))
518
- choose.checked = !choose.checked;
551
+ choose.checked = pageList().choose !== false;
519
552
  });
520
553
  const chooseRow = el('div', { class: 'fd-prop', 'data-part': 'choose' }, el('label', { class: 'fd-q-required' }, choose, el('span', {}, w.choose)), el('p', { class: 'fd-properties-hint' }, w.chooseHint));
521
554
  const sorts = el('input', { type: 'checkbox', 'aria-label': w.sortable });
522
555
  sorts.addEventListener('change', () => {
523
556
  if (!designer.setListOptions({ sortable: sorts.checked }))
524
- sorts.checked = !sorts.checked;
557
+ sorts.checked = pageList().sortable !== false;
525
558
  });
526
559
  const sortsRow = el('div', { class: 'fd-prop', 'data-part': 'sortable' }, el('label', { class: 'fd-q-required' }, sorts, el('span', {}, w.sortable)), el('p', { class: 'fd-properties-hint' }, w.sortableHint));
560
+ // Export and Edit of many rows at once, each off unless asked.
561
+ const exports = el('input', { type: 'checkbox', 'aria-label': w.exportRows });
562
+ exports.addEventListener('change', () => {
563
+ if (!designer.setListOptions({ export: exports.checked }))
564
+ exports.checked = pageList().export === true;
565
+ });
566
+ const exportRow = el('div', { class: 'fd-prop', 'data-part': 'export' }, el('label', { class: 'fd-q-required' }, exports, el('span', {}, w.exportRows)), el('p', { class: 'fd-properties-hint' }, w.exportHint));
567
+ const bulk = el('input', { type: 'checkbox', 'aria-label': w.bulkEdit });
568
+ bulk.addEventListener('change', () => {
569
+ if (!designer.setListOptions({ bulkEdit: bulk.checked }))
570
+ bulk.checked = !!pageList().bulkEdit;
571
+ });
572
+ const bulkRow = el('div', { class: 'fd-prop', 'data-part': 'bulk-edit' }, el('label', { class: 'fd-q-required' }, bulk, el('span', {}, w.bulkEdit)), el('p', { class: 'fd-properties-hint' }, w.bulkEditHint));
573
+ // Import from Excel and CSV, off unless asked, after Export and Edit.
574
+ const imports = el('input', { type: 'checkbox', 'aria-label': w.importRows });
575
+ imports.addEventListener('change', () => {
576
+ if (!designer.setListOptions({ import: imports.checked }))
577
+ imports.checked = !!pageList().import;
578
+ });
579
+ const importRow = el('div', { class: 'fd-prop', 'data-part': 'import' }, el('label', { class: 'fd-q-required' }, imports, el('span', {}, w.importRows)), el('p', { class: 'fd-properties-hint' }, w.importHint));
580
+ // Print every record the search finds, off unless asked, as Export is.
581
+ const prints = el('input', { type: 'checkbox', 'aria-label': w.printRows });
582
+ prints.addEventListener('change', () => {
583
+ if (!designer.setListOptions({ print: prints.checked }))
584
+ prints.checked = pageList().print === true;
585
+ });
586
+ const printRow = el('div', { class: 'fd-prop', 'data-part': 'print' }, el('label', { class: 'fd-q-required' }, prints, el('span', {}, w.printRows)), el('p', { class: 'fd-properties-hint' }, w.printHint));
527
587
  const searchWay = select(el, w.searchWay, [['bar', w.searchWays.bar], ['fields', w.searchWays.fields]]);
528
588
  searchWay.addEventListener('change', () => designer.setListOptions({ search: searchWay.value }));
529
589
  const filterBox = el('div', { class: 'fd-list-filter-fields' });
@@ -534,7 +594,11 @@ function listProperties(el, designer) {
534
594
  const parentRow = el('label', { class: 'fd-prop', 'data-part': 'parent' }, el('span', { class: 'fd-prop-name' }, w.parentField), parent, parentWhy);
535
595
  const onMap = mapSection(el, designer);
536
596
  const onCalendar = (0, list_calendar_1.calendarSection)(el, designer);
537
- const element = el('div', { class: 'fd-props' }, prop(el, w.rowsOnPage, size.input), prop(el, w.sortedBy, sortBy), directionRow, chooseRow, sortsRow, prop(el, w.searchWay, searchWay), filterFieldsRow, parentRow, el('div', { class: 'fd-prop' }, el('span', { class: 'fd-prop-name' }, w.searchLooksIn), searchBox, el('p', { class: 'fd-properties-hint' }, w.noneTicked)), el('div', { class: 'fd-prop fd-prop-filters', 'data-part': 'filters' }, el('span', { class: 'fd-prop-name' }, w.filters), filtersBox, addFilter), el('div', { class: 'fd-prop' }, el('span', { class: 'fd-prop-name' }, w.groupBy), groupsBox, addGroup), onMap.element, onCalendar.element, el('p', { class: 'fd-properties-hint' }, w.rowOpens));
597
+ const asCards = (0, list_cards_settings_1.cardsSection)(el, designer);
598
+ const rowRules = (0, list_rows_settings_1.rowsSection)(el, designer);
599
+ const element = el('div', { class: 'fd-props' }, prop(el, w.rowsOnPage, size.input), prop(el, w.sortedBy, sortBy), directionRow, chooseRow, sortsRow, exportRow, bulkRow,
600
+ // What goes out — Export, Edit, Print — then what comes in.
601
+ printRow, importRow, prop(el, w.searchWay, searchWay), filterFieldsRow, parentRow, el('div', { class: 'fd-prop' }, el('span', { class: 'fd-prop-name' }, w.searchLooksIn), searchBox, el('p', { class: 'fd-properties-hint' }, w.noneTicked)), el('div', { class: 'fd-prop fd-prop-filters', 'data-part': 'filters' }, el('span', { class: 'fd-prop-name' }, w.filters), filtersBox, addFilter), el('div', { class: 'fd-prop' }, el('span', { class: 'fd-prop-name' }, w.groupBy), groupsBox, addGroup), rowRules.element, asCards.element, onMap.element, onCalendar.element, el('p', { class: 'fd-properties-hint' }, w.rowOpens));
538
602
  return {
539
603
  element,
540
604
  update(page) {
@@ -579,6 +643,10 @@ function listProperties(el, designer) {
579
643
  filtersBox.lastElementChild?.remove();
580
644
  choose.checked = list.choose !== false;
581
645
  sorts.checked = list.sortable !== false;
646
+ exports.checked = list.export === true;
647
+ bulk.checked = !!list.bulkEdit;
648
+ imports.checked = !!list.import;
649
+ prints.checked = list.print === true;
582
650
  searchWay.value = list.search ?? 'bar';
583
651
  // The filter bar's fields: those whose values it can list, ticked in the order the page keeps them.
584
652
  filterFieldsRow.hidden = list.search !== 'fields';
@@ -615,6 +683,8 @@ function listProperties(el, designer) {
615
683
  remove.addEventListener('click', () => designer.setListOptions({ groupBy: groups.filter((g) => g !== name) }));
616
684
  return el('span', { class: 'fd-chip' }, label, remove);
617
685
  }));
686
+ rowRules.update(page);
687
+ asCards.update(page);
618
688
  onMap.update(page);
619
689
  onCalendar.update(page);
620
690
  },
@@ -663,6 +733,26 @@ function columnProperties(el, designer, name) {
663
733
  };
664
734
  }
665
735
  // ---- a column's cells ------------------------------------------------------------------------------
736
+ /** The ways a column of a kind can be drawn, beside its words. */
737
+ function cellWays(type) {
738
+ switch (type) {
739
+ case 'selection':
740
+ return ['dot', 'badge'];
741
+ case 'many2one':
742
+ return ['badge', 'avatar'];
743
+ case 'many2many':
744
+ return ['tags'];
745
+ case 'char':
746
+ return ['badge', 'avatar', 'image', 'phone'];
747
+ case 'image':
748
+ return ['image', 'avatar'];
749
+ case 'integer':
750
+ case 'float':
751
+ return ['progressbar'];
752
+ default:
753
+ return [];
754
+ }
755
+ }
666
756
  /**
667
757
  * How a column draws its cells, as a work tracker's backlog does: a state's
668
758
  * dot in each value's colour, an icon before the words by another field's
@@ -677,11 +767,27 @@ function cellSettings(el, designer, name) {
677
767
  delete cell[key];
678
768
  return designer.setListCell(name, Object.keys(cell).length ? cell : null);
679
769
  };
680
- const widget = select(el, w.cellWidget, [['', w.cellWidgets.words], ['dot', w.cellWidgets.dot]]);
681
- widget.addEventListener('change', () => save({ ...cellNow(), widget: widget.value || undefined, ...(widget.value ? {} : { options: undefined }) }));
770
+ const widget = select(el, w.cellWidget, []);
771
+ // Another way of drawing it: the options of the one before go with it, but a pill's and a dot's colours, which are the same.
772
+ widget.addEventListener('change', () => {
773
+ const now = cellNow();
774
+ const colours = (widget.value === 'dot' || widget.value === 'badge') && (now.widget === 'dot' || now.widget === 'badge');
775
+ save({ ...now, widget: widget.value || undefined, options: colours ? now.options : undefined });
776
+ });
682
777
  const widgetRow = prop(el, w.cellWidget, widget);
683
778
  const dots = el('div', { class: 'fd-list-cell-looks' });
684
779
  const dotsRow = el('div', { class: 'fd-prop', 'data-part': 'dots' }, dots);
780
+ // A phone's call and WhatsApp links beside its number.
781
+ const links = el('input', { type: 'checkbox', 'aria-label': w.phoneLinks });
782
+ links.addEventListener('change', () => {
783
+ const { links: _was, ...rest } = cellNow().options ?? {};
784
+ save({ ...cellNow(), options: links.checked ? { ...rest, links: true } : Object.keys(rest).length ? rest : undefined });
785
+ });
786
+ const linksRow = el('label', { class: 'fd-q-required', 'data-part': 'phone-links' }, links, el('span', {}, w.phoneLinks));
787
+ // Whether people may hide it, from the Columns menu, and how it starts.
788
+ const mayHide = select(el, w.mayHide, ['no', 'show', 'hide'].map((k) => [k, w.mayHideChoices[k]]));
789
+ mayHide.addEventListener('change', () => designer.setListOptions({ optionalColumn: { field: name, starts: mayHide.value === 'no' ? null : mayHide.value } }));
790
+ const mayHideRow = el('div', { class: 'fd-prop', 'data-part': 'may-hide' }, el('span', { class: 'fd-prop-name' }, w.mayHide), mayHide, el('p', { class: 'fd-properties-hint' }, w.mayHideHint));
685
791
  const lead = el('select', { class: 'fd-input fd-select', 'aria-label': w.leadFrom });
686
792
  lead.addEventListener('change', () => save({ ...cellNow(), lead: lead.value ? { field: lead.value, looks: {} } : undefined }));
687
793
  const leadLooks = el('div', { class: 'fd-list-cell-looks' });
@@ -741,20 +847,34 @@ function cellSettings(el, designer, name) {
741
847
  });
742
848
  const ruleInRow = prop(el, w.cellRuleIn, ruleIn.input);
743
849
  const ruleRow = el('div', { class: 'fd-prop', 'data-part': 'rule' }, el('span', { class: 'fd-prop-name' }, w.cellRule), rule, el('p', { class: 'fd-properties-hint' }, w.cellRuleHint));
850
+ // Its total, under the list, on Group By headings and for the rows ticked: a number's sum, average, lowest or highest, or any column's count.
851
+ const total = select(el, w.cellTotal, []);
852
+ total.addEventListener('change', () => save({ ...cellNow(), total: (total.value || undefined) }));
853
+ const totalRow = el('div', { class: 'fd-prop', 'data-part': 'total' }, el('span', { class: 'fd-prop-name' }, w.cellTotal), total, el('p', { class: 'fd-properties-hint' }, w.cellTotalHint));
744
854
  /** A value's colour, and its icon for a lead: a row for each option of a choice. */
745
855
  const optionRows = (field, row) => field?.type === 'selection' ? field.options.map((option) => el('div', { class: 'fd-list-cell-look' }, el('span', { class: 'fd-list-cell-look-name' }, option.label), ...row(String(option.value), option.label))) : [];
746
856
  return {
747
- rows: [widgetRow, dotsRow, leadRow, widthRow, prop(el, w.cellSide, side), ruleRow, ruleInRow],
857
+ rows: [widgetRow, dotsRow, linksRow, leadRow, widthRow, prop(el, w.cellSide, side), totalRow, ruleRow, ruleInRow, mayHideRow],
748
858
  update(page) {
749
859
  const field = page.fields[name];
750
860
  const cell = page.layout.type === 'list' ? (page.layout.cells?.[name] ?? {}) : {};
751
- widget.value = cell.widget === 'dot' ? 'dot' : '';
752
- widgetRow.hidden = field?.type !== 'selection';
753
- // Each state's dot colour, when the column draws its dot.
754
- dotsRow.hidden = cell.widget !== 'dot';
861
+ const kinds = field && ['integer', 'float', 'monetary'].includes(field.type) ? ['sum', 'avg', 'min', 'max', 'count'] : ['count'];
862
+ total.replaceChildren(el('option', { value: '' }, w.cellTotals.none), ...kinds.map((kind) => el('option', { value: kind }, w.cellTotals[kind])));
863
+ total.value = cell.total ?? '';
864
+ // The ways its kind can be drawn: a choice's dot or pill, links' chips, a picture, a number's bar, a phone.
865
+ const ways = cellWays(field?.type);
866
+ widget.replaceChildren(...['', ...ways].map((way) => el('option', { value: way }, w.cellWidgets[(way || 'words')])));
867
+ widget.value = cell.widget && ways.includes(cell.widget) ? cell.widget : '';
868
+ widgetRow.hidden = !ways.length;
869
+ // Each state's dot or pill colour, when the column draws one.
870
+ dotsRow.hidden = cell.widget !== 'dot' && cell.widget !== 'badge';
871
+ linksRow.hidden = cell.widget !== 'phone';
872
+ links.checked = cell.options?.['links'] === true;
873
+ const list = page.layout.type === 'list' ? page.layout : undefined;
874
+ mayHide.value = list?.optionalColumns?.[name] ?? 'no';
755
875
  const colours = (cell.options?.['colours'] ?? {});
756
876
  dots.replaceChildren(...optionRows(field, (value, label) => {
757
- const colour = el('input', { type: 'color', class: 'fd-insp-colour', 'aria-label': w.dotColour(label) });
877
+ const colour = el('input', { type: 'color', class: 'fd-insp-colour', 'aria-label': cell.widget === 'badge' ? w.pillColour(label) : w.dotColour(label) });
758
878
  colour.value = colours[value] ?? '#7e7e7e';
759
879
  colour.addEventListener('input', () => save({ ...cellNow(), options: { ...cellNow().options, colours: { ...(cellNow().options?.['colours'] ?? {}), [value]: colour.value } } }));
760
880
  return [colour];