@fieldia/designer 0.11.0 → 0.12.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 (379) hide show
  1. package/package.json +4 -4
  2. package/src/lib/canvas-form.js +9 -0
  3. package/src/lib/canvas-form.js.map +1 -1
  4. package/src/lib/canvas-form.mjs +9 -0
  5. package/src/lib/canvas-form.mjs.map +1 -1
  6. package/src/lib/canvas-header.d.mts +4 -1
  7. package/src/lib/canvas-header.d.ts +4 -1
  8. package/src/lib/canvas-header.js +56 -17
  9. package/src/lib/canvas-header.js.map +1 -1
  10. package/src/lib/canvas-header.mjs +56 -17
  11. package/src/lib/canvas-header.mjs.map +1 -1
  12. package/src/lib/choice-commands.d.mts +5 -1
  13. package/src/lib/choice-commands.d.ts +5 -1
  14. package/src/lib/choice-commands.js +41 -0
  15. package/src/lib/choice-commands.js.map +1 -1
  16. package/src/lib/choice-commands.mjs +41 -0
  17. package/src/lib/choice-commands.mjs.map +1 -1
  18. package/src/lib/clipboard-names.js +21 -4
  19. package/src/lib/clipboard-names.js.map +1 -1
  20. package/src/lib/clipboard-names.mjs +21 -4
  21. package/src/lib/clipboard-names.mjs.map +1 -1
  22. package/src/lib/conditions.d.mts +14 -2
  23. package/src/lib/conditions.d.ts +14 -2
  24. package/src/lib/conditions.js +25 -2
  25. package/src/lib/conditions.js.map +1 -1
  26. package/src/lib/conditions.mjs +23 -2
  27. package/src/lib/conditions.mjs.map +1 -1
  28. package/src/lib/designer.d.mts +20 -15
  29. package/src/lib/designer.d.ts +20 -15
  30. package/src/lib/designer.js +67 -3
  31. package/src/lib/designer.js.map +1 -1
  32. package/src/lib/designer.mjs +68 -4
  33. package/src/lib/designer.mjs.map +1 -1
  34. package/src/lib/header-commands.d.mts +69 -11
  35. package/src/lib/header-commands.d.ts +69 -11
  36. package/src/lib/header-commands.js +299 -20
  37. package/src/lib/header-commands.js.map +1 -1
  38. package/src/lib/header-commands.mjs +297 -20
  39. package/src/lib/header-commands.mjs.map +1 -1
  40. package/src/lib/header-properties.js +171 -20
  41. package/src/lib/header-properties.js.map +1 -1
  42. package/src/lib/header-properties.mjs +172 -21
  43. package/src/lib/header-properties.mjs.map +1 -1
  44. package/src/lib/hotkey-setting.d.mts +8 -0
  45. package/src/lib/hotkey-setting.d.ts +8 -0
  46. package/src/lib/hotkey-setting.js +25 -0
  47. package/src/lib/hotkey-setting.js.map +1 -0
  48. package/src/lib/hotkey-setting.mjs +20 -0
  49. package/src/lib/hotkey-setting.mjs.map +1 -0
  50. package/src/lib/icons.js +15 -0
  51. package/src/lib/icons.js.map +1 -1
  52. package/src/lib/icons.mjs +15 -0
  53. package/src/lib/icons.mjs.map +1 -1
  54. package/src/lib/inline-settings.js +32 -4
  55. package/src/lib/inline-settings.js.map +1 -1
  56. package/src/lib/inline-settings.mjs +33 -5
  57. package/src/lib/inline-settings.mjs.map +1 -1
  58. package/src/lib/input-changes.js +12 -0
  59. package/src/lib/input-changes.js.map +1 -1
  60. package/src/lib/input-changes.mjs +12 -0
  61. package/src/lib/input-changes.mjs.map +1 -1
  62. package/src/lib/kind-settings-choices.js +30 -0
  63. package/src/lib/kind-settings-choices.js.map +1 -1
  64. package/src/lib/kind-settings-choices.mjs +30 -0
  65. package/src/lib/kind-settings-choices.mjs.map +1 -1
  66. package/src/lib/kind-settings-inputs.js +80 -0
  67. package/src/lib/kind-settings-inputs.js.map +1 -1
  68. package/src/lib/kind-settings-inputs.mjs +80 -0
  69. package/src/lib/kind-settings-inputs.mjs.map +1 -1
  70. package/src/lib/kinds.d.mts +2 -0
  71. package/src/lib/kinds.d.ts +2 -0
  72. package/src/lib/kinds.js +71 -7
  73. package/src/lib/kinds.js.map +1 -1
  74. package/src/lib/kinds.mjs +70 -6
  75. package/src/lib/kinds.mjs.map +1 -1
  76. package/src/lib/layout-settings.d.mts +7 -1
  77. package/src/lib/layout-settings.d.ts +7 -1
  78. package/src/lib/layout-settings.js +36 -2
  79. package/src/lib/layout-settings.js.map +1 -1
  80. package/src/lib/layout-settings.mjs +35 -2
  81. package/src/lib/layout-settings.mjs.map +1 -1
  82. package/src/lib/locales/ar/canvas.js +6 -0
  83. package/src/lib/locales/ar/canvas.js.map +1 -1
  84. package/src/lib/locales/ar/canvas.mjs +6 -0
  85. package/src/lib/locales/ar/canvas.mjs.map +1 -1
  86. package/src/lib/locales/ar/changes.js +2 -2
  87. package/src/lib/locales/ar/changes.js.map +1 -1
  88. package/src/lib/locales/ar/changes.mjs +2 -2
  89. package/src/lib/locales/ar/changes.mjs.map +1 -1
  90. package/src/lib/locales/ar/defaults.js +7 -0
  91. package/src/lib/locales/ar/defaults.js.map +1 -1
  92. package/src/lib/locales/ar/defaults.mjs +7 -0
  93. package/src/lib/locales/ar/defaults.mjs.map +1 -1
  94. package/src/lib/locales/ar/index.js +2 -1
  95. package/src/lib/locales/ar/index.js.map +1 -1
  96. package/src/lib/locales/ar/index.mjs +2 -1
  97. package/src/lib/locales/ar/index.mjs.map +1 -1
  98. package/src/lib/locales/ar/kinds.js +15 -0
  99. package/src/lib/locales/ar/kinds.js.map +1 -1
  100. package/src/lib/locales/ar/kinds.mjs +15 -0
  101. package/src/lib/locales/ar/kinds.mjs.map +1 -1
  102. package/src/lib/locales/ar/layout.js +2 -0
  103. package/src/lib/locales/ar/layout.js.map +1 -1
  104. package/src/lib/locales/ar/layout.mjs +2 -0
  105. package/src/lib/locales/ar/layout.mjs.map +1 -1
  106. package/src/lib/locales/ar/panel.js +81 -1
  107. package/src/lib/locales/ar/panel.js.map +1 -1
  108. package/src/lib/locales/ar/panel.mjs +81 -1
  109. package/src/lib/locales/ar/panel.mjs.map +1 -1
  110. package/src/lib/locales/ar/questions.js +20 -0
  111. package/src/lib/locales/ar/questions.js.map +1 -1
  112. package/src/lib/locales/ar/questions.mjs +20 -0
  113. package/src/lib/locales/ar/questions.mjs.map +1 -1
  114. package/src/lib/locales/ar/refusals.js +23 -1
  115. package/src/lib/locales/ar/refusals.js.map +1 -1
  116. package/src/lib/locales/ar/refusals.mjs +23 -1
  117. package/src/lib/locales/ar/refusals.mjs.map +1 -1
  118. package/src/lib/locales/ar/rules-ui.js +19 -0
  119. package/src/lib/locales/ar/rules-ui.js.map +1 -1
  120. package/src/lib/locales/ar/rules-ui.mjs +19 -0
  121. package/src/lib/locales/ar/rules-ui.mjs.map +1 -1
  122. package/src/lib/locales/ar/rules.js +7 -0
  123. package/src/lib/locales/ar/rules.js.map +1 -1
  124. package/src/lib/locales/ar/rules.mjs +7 -0
  125. package/src/lib/locales/ar/rules.mjs.map +1 -1
  126. package/src/lib/locales/ar/settings-changes.js +20 -0
  127. package/src/lib/locales/ar/settings-changes.js.map +1 -1
  128. package/src/lib/locales/ar/settings-changes.mjs +20 -0
  129. package/src/lib/locales/ar/settings-changes.mjs.map +1 -1
  130. package/src/lib/locales/ar/steps.js +31 -1
  131. package/src/lib/locales/ar/steps.js.map +1 -1
  132. package/src/lib/locales/ar/steps.mjs +31 -1
  133. package/src/lib/locales/ar/steps.mjs.map +1 -1
  134. package/src/lib/locales/ar/tables.d.mts +2 -0
  135. package/src/lib/locales/ar/tables.d.ts +2 -0
  136. package/src/lib/locales/ar/tables.js +69 -0
  137. package/src/lib/locales/ar/tables.js.map +1 -0
  138. package/src/lib/locales/ar/tables.mjs +66 -0
  139. package/src/lib/locales/ar/tables.mjs.map +1 -0
  140. package/src/lib/locales/en/canvas.d.mts +13 -0
  141. package/src/lib/locales/en/canvas.d.ts +13 -0
  142. package/src/lib/locales/en/canvas.js +6 -0
  143. package/src/lib/locales/en/canvas.js.map +1 -1
  144. package/src/lib/locales/en/canvas.mjs +6 -0
  145. package/src/lib/locales/en/canvas.mjs.map +1 -1
  146. package/src/lib/locales/en/changes.d.mts +2 -2
  147. package/src/lib/locales/en/changes.d.ts +2 -2
  148. package/src/lib/locales/en/changes.js +1 -1
  149. package/src/lib/locales/en/changes.js.map +1 -1
  150. package/src/lib/locales/en/changes.mjs +1 -1
  151. package/src/lib/locales/en/changes.mjs.map +1 -1
  152. package/src/lib/locales/en/defaults.d.mts +8 -0
  153. package/src/lib/locales/en/defaults.d.ts +8 -0
  154. package/src/lib/locales/en/defaults.js +8 -0
  155. package/src/lib/locales/en/defaults.js.map +1 -1
  156. package/src/lib/locales/en/defaults.mjs +8 -0
  157. package/src/lib/locales/en/defaults.mjs.map +1 -1
  158. package/src/lib/locales/en/index.d.mts +308 -4
  159. package/src/lib/locales/en/index.d.ts +308 -4
  160. package/src/lib/locales/en/index.js +2 -1
  161. package/src/lib/locales/en/index.js.map +1 -1
  162. package/src/lib/locales/en/index.mjs +2 -1
  163. package/src/lib/locales/en/index.mjs.map +1 -1
  164. package/src/lib/locales/en/kinds.d.mts +15 -0
  165. package/src/lib/locales/en/kinds.d.ts +15 -0
  166. package/src/lib/locales/en/kinds.js +15 -0
  167. package/src/lib/locales/en/kinds.js.map +1 -1
  168. package/src/lib/locales/en/kinds.mjs +15 -0
  169. package/src/lib/locales/en/kinds.mjs.map +1 -1
  170. package/src/lib/locales/en/layout.d.mts +2 -0
  171. package/src/lib/locales/en/layout.d.ts +2 -0
  172. package/src/lib/locales/en/layout.js +2 -0
  173. package/src/lib/locales/en/layout.js.map +1 -1
  174. package/src/lib/locales/en/layout.mjs +2 -0
  175. package/src/lib/locales/en/layout.mjs.map +1 -1
  176. package/src/lib/locales/en/panel.d.mts +81 -0
  177. package/src/lib/locales/en/panel.d.ts +81 -0
  178. package/src/lib/locales/en/panel.js +63 -1
  179. package/src/lib/locales/en/panel.js.map +1 -1
  180. package/src/lib/locales/en/panel.mjs +63 -1
  181. package/src/lib/locales/en/panel.mjs.map +1 -1
  182. package/src/lib/locales/en/questions.d.mts +20 -0
  183. package/src/lib/locales/en/questions.d.ts +20 -0
  184. package/src/lib/locales/en/questions.js +21 -0
  185. package/src/lib/locales/en/questions.js.map +1 -1
  186. package/src/lib/locales/en/questions.mjs +21 -0
  187. package/src/lib/locales/en/questions.mjs.map +1 -1
  188. package/src/lib/locales/en/refusals.d.mts +22 -0
  189. package/src/lib/locales/en/refusals.d.ts +22 -0
  190. package/src/lib/locales/en/refusals.js +24 -1
  191. package/src/lib/locales/en/refusals.js.map +1 -1
  192. package/src/lib/locales/en/refusals.mjs +24 -1
  193. package/src/lib/locales/en/refusals.mjs.map +1 -1
  194. package/src/lib/locales/en/rules-ui.d.mts +24 -0
  195. package/src/lib/locales/en/rules-ui.d.ts +24 -0
  196. package/src/lib/locales/en/rules-ui.js +20 -0
  197. package/src/lib/locales/en/rules-ui.js.map +1 -1
  198. package/src/lib/locales/en/rules-ui.mjs +20 -0
  199. package/src/lib/locales/en/rules-ui.mjs.map +1 -1
  200. package/src/lib/locales/en/rules.d.mts +8 -0
  201. package/src/lib/locales/en/rules.d.ts +8 -0
  202. package/src/lib/locales/en/rules.js +8 -0
  203. package/src/lib/locales/en/rules.js.map +1 -1
  204. package/src/lib/locales/en/rules.mjs +9 -1
  205. package/src/lib/locales/en/rules.mjs.map +1 -1
  206. package/src/lib/locales/en/settings-changes.d.mts +20 -0
  207. package/src/lib/locales/en/settings-changes.d.ts +20 -0
  208. package/src/lib/locales/en/settings-changes.js +21 -0
  209. package/src/lib/locales/en/settings-changes.js.map +1 -1
  210. package/src/lib/locales/en/settings-changes.mjs +21 -0
  211. package/src/lib/locales/en/settings-changes.mjs.map +1 -1
  212. package/src/lib/locales/en/steps.d.mts +35 -0
  213. package/src/lib/locales/en/steps.d.ts +35 -0
  214. package/src/lib/locales/en/steps.js +32 -1
  215. package/src/lib/locales/en/steps.js.map +1 -1
  216. package/src/lib/locales/en/steps.mjs +32 -1
  217. package/src/lib/locales/en/steps.mjs.map +1 -1
  218. package/src/lib/locales/en/tables.d.mts +73 -0
  219. package/src/lib/locales/en/tables.d.ts +73 -0
  220. package/src/lib/locales/en/tables.js +85 -0
  221. package/src/lib/locales/en/tables.js.map +1 -0
  222. package/src/lib/locales/en/tables.mjs +82 -0
  223. package/src/lib/locales/en/tables.mjs.map +1 -0
  224. package/src/lib/page-checks.js +6 -3
  225. package/src/lib/page-checks.js.map +1 -1
  226. package/src/lib/page-checks.mjs +6 -3
  227. package/src/lib/page-checks.mjs.map +1 -1
  228. package/src/lib/page-tree.d.mts +5 -1
  229. package/src/lib/page-tree.d.ts +5 -1
  230. package/src/lib/page-tree.js +29 -3
  231. package/src/lib/page-tree.js.map +1 -1
  232. package/src/lib/page-tree.mjs +28 -3
  233. package/src/lib/page-tree.mjs.map +1 -1
  234. package/src/lib/panel-block.js +22 -3
  235. package/src/lib/panel-block.js.map +1 -1
  236. package/src/lib/panel-block.mjs +22 -3
  237. package/src/lib/panel-block.mjs.map +1 -1
  238. package/src/lib/panel-field.js +22 -2
  239. package/src/lib/panel-field.js.map +1 -1
  240. package/src/lib/panel-field.mjs +22 -2
  241. package/src/lib/panel-field.mjs.map +1 -1
  242. package/src/lib/panel-group.js +7 -1
  243. package/src/lib/panel-group.js.map +1 -1
  244. package/src/lib/panel-group.mjs +7 -1
  245. package/src/lib/panel-group.mjs.map +1 -1
  246. package/src/lib/panel-layout.js +7 -1
  247. package/src/lib/panel-layout.js.map +1 -1
  248. package/src/lib/panel-layout.mjs +7 -1
  249. package/src/lib/panel-layout.mjs.map +1 -1
  250. package/src/lib/panel-look.js +12 -2
  251. package/src/lib/panel-look.js.map +1 -1
  252. package/src/lib/panel-look.mjs +12 -2
  253. package/src/lib/panel-look.mjs.map +1 -1
  254. package/src/lib/panel-page.d.mts +4 -2
  255. package/src/lib/panel-page.d.ts +4 -2
  256. package/src/lib/panel-page.js +41 -3
  257. package/src/lib/panel-page.js.map +1 -1
  258. package/src/lib/panel-page.mjs +41 -3
  259. package/src/lib/panel-page.mjs.map +1 -1
  260. package/src/lib/panel-screen.js +2 -2
  261. package/src/lib/panel-screen.js.map +1 -1
  262. package/src/lib/panel-screen.mjs +3 -3
  263. package/src/lib/panel-screen.mjs.map +1 -1
  264. package/src/lib/placeholder-when.d.mts +13 -0
  265. package/src/lib/placeholder-when.d.ts +13 -0
  266. package/src/lib/placeholder-when.js +83 -0
  267. package/src/lib/placeholder-when.js.map +1 -0
  268. package/src/lib/placeholder-when.mjs +80 -0
  269. package/src/lib/placeholder-when.mjs.map +1 -0
  270. package/src/lib/roles-setting.d.mts +18 -0
  271. package/src/lib/roles-setting.d.ts +18 -0
  272. package/src/lib/roles-setting.js +48 -0
  273. package/src/lib/roles-setting.js.map +1 -0
  274. package/src/lib/roles-setting.mjs +43 -0
  275. package/src/lib/roles-setting.mjs.map +1 -0
  276. package/src/lib/rules-answers.js +22 -7
  277. package/src/lib/rules-answers.js.map +1 -1
  278. package/src/lib/rules-answers.mjs +22 -7
  279. package/src/lib/rules-answers.mjs.map +1 -1
  280. package/src/lib/rules-changes.js +1 -1
  281. package/src/lib/rules-changes.js.map +1 -1
  282. package/src/lib/rules-changes.mjs +2 -2
  283. package/src/lib/rules-changes.mjs.map +1 -1
  284. package/src/lib/rules-checks.js +1 -1
  285. package/src/lib/rules-checks.js.map +1 -1
  286. package/src/lib/rules-checks.mjs +1 -1
  287. package/src/lib/rules-checks.mjs.map +1 -1
  288. package/src/lib/rules-commands.d.mts +6 -0
  289. package/src/lib/rules-commands.d.ts +6 -0
  290. package/src/lib/rules-commands.js +63 -3
  291. package/src/lib/rules-commands.js.map +1 -1
  292. package/src/lib/rules-commands.mjs +63 -3
  293. package/src/lib/rules-commands.mjs.map +1 -1
  294. package/src/lib/rules-defaults.d.mts +8 -0
  295. package/src/lib/rules-defaults.d.ts +8 -0
  296. package/src/lib/rules-defaults.js +77 -0
  297. package/src/lib/rules-defaults.js.map +1 -0
  298. package/src/lib/rules-defaults.mjs +74 -0
  299. package/src/lib/rules-defaults.mjs.map +1 -0
  300. package/src/lib/rules-formula.js +12 -3
  301. package/src/lib/rules-formula.js.map +1 -1
  302. package/src/lib/rules-formula.mjs +12 -3
  303. package/src/lib/rules-formula.mjs.map +1 -1
  304. package/src/lib/rules-panel.js +4 -1
  305. package/src/lib/rules-panel.js.map +1 -1
  306. package/src/lib/rules-panel.mjs +4 -1
  307. package/src/lib/rules-panel.mjs.map +1 -1
  308. package/src/lib/rules-words.d.mts +10 -3
  309. package/src/lib/rules-words.d.ts +10 -3
  310. package/src/lib/rules-words.js +18 -3
  311. package/src/lib/rules-words.js.map +1 -1
  312. package/src/lib/rules-words.mjs +17 -3
  313. package/src/lib/rules-words.mjs.map +1 -1
  314. package/src/lib/rules-worked-out.js +31 -6
  315. package/src/lib/rules-worked-out.js.map +1 -1
  316. package/src/lib/rules-worked-out.mjs +31 -6
  317. package/src/lib/rules-worked-out.mjs.map +1 -1
  318. package/src/lib/shown-while.d.mts +16 -0
  319. package/src/lib/shown-while.d.ts +16 -0
  320. package/src/lib/shown-while.js +28 -0
  321. package/src/lib/shown-while.js.map +1 -0
  322. package/src/lib/shown-while.mjs +25 -0
  323. package/src/lib/shown-while.mjs.map +1 -0
  324. package/src/lib/steps-commands.d.mts +2 -2
  325. package/src/lib/steps-commands.d.ts +2 -2
  326. package/src/lib/steps-commands.js +3 -0
  327. package/src/lib/steps-commands.js.map +1 -1
  328. package/src/lib/steps-commands.mjs +3 -0
  329. package/src/lib/steps-commands.mjs.map +1 -1
  330. package/src/lib/steps-editor.js +12 -3
  331. package/src/lib/steps-editor.js.map +1 -1
  332. package/src/lib/steps-editor.mjs +12 -3
  333. package/src/lib/steps-editor.mjs.map +1 -1
  334. package/src/lib/steps-places.d.mts +3 -3
  335. package/src/lib/steps-places.d.ts +3 -3
  336. package/src/lib/steps-places.js +15 -4
  337. package/src/lib/steps-places.js.map +1 -1
  338. package/src/lib/steps-places.mjs +15 -4
  339. package/src/lib/steps-places.mjs.map +1 -1
  340. package/src/lib/steps-settings.js +75 -1
  341. package/src/lib/steps-settings.js.map +1 -1
  342. package/src/lib/steps-settings.mjs +75 -1
  343. package/src/lib/steps-settings.mjs.map +1 -1
  344. package/src/lib/steps-words.js +24 -3
  345. package/src/lib/steps-words.js.map +1 -1
  346. package/src/lib/steps-words.mjs +24 -3
  347. package/src/lib/steps-words.mjs.map +1 -1
  348. package/src/lib/structure-changes.js +6 -0
  349. package/src/lib/structure-changes.js.map +1 -1
  350. package/src/lib/structure-changes.mjs +6 -0
  351. package/src/lib/structure-changes.mjs.map +1 -1
  352. package/src/lib/styles-rules.d.mts +1 -1
  353. package/src/lib/styles-rules.d.ts +1 -1
  354. package/src/lib/styles-rules.js +12 -0
  355. package/src/lib/styles-rules.js.map +1 -1
  356. package/src/lib/styles-rules.mjs +12 -0
  357. package/src/lib/styles-rules.mjs.map +1 -1
  358. package/src/lib/styles.d.mts +1 -1
  359. package/src/lib/styles.d.ts +1 -1
  360. package/src/lib/styles.js +7 -0
  361. package/src/lib/styles.js.map +1 -1
  362. package/src/lib/styles.mjs +7 -0
  363. package/src/lib/styles.mjs.map +1 -1
  364. package/src/lib/table-commands.d.mts +76 -0
  365. package/src/lib/table-commands.d.ts +76 -0
  366. package/src/lib/table-commands.js +248 -0
  367. package/src/lib/table-commands.js.map +1 -0
  368. package/src/lib/table-commands.mjs +244 -0
  369. package/src/lib/table-commands.mjs.map +1 -0
  370. package/src/lib/table-panel.d.mts +8 -0
  371. package/src/lib/table-panel.d.ts +8 -0
  372. package/src/lib/table-panel.js +276 -0
  373. package/src/lib/table-panel.js.map +1 -0
  374. package/src/lib/table-panel.mjs +273 -0
  375. package/src/lib/table-panel.mjs.map +1 -0
  376. package/src/lib/toolbox.js +1 -0
  377. package/src/lib/toolbox.js.map +1 -1
  378. package/src/lib/toolbox.mjs +1 -0
  379. package/src/lib/toolbox.mjs.map +1 -1
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tableSettings = tableSettings;
4
+ const chrome_1 = require("./chrome");
5
+ const page_tree_1 = require("./page-tree");
6
+ const panel_controls_1 = require("./panel-controls");
7
+ const rules_formula_1 = require("./rules-formula");
8
+ const rules_formula_box_1 = require("./rules-formula-box");
9
+ const table_commands_1 = require("./table-commands");
10
+ /**
11
+ * A field's tone and a table's own rules in the panel: its value's tones and
12
+ * bold (Rules); a table's lines' tones and bold, and each column's cells by
13
+ * their line — blank, read-only, required, bold, toned, a pill, a width — and
14
+ * the column hidden by the record (Rules); its buttons on each line, for the
15
+ * lines chosen and beside Add a line (Content); how a line opens, how it shows
16
+ * on a phone, its columns' widths, a line copied (Layout); and the widths of
17
+ * the form a field is hidden at (Layout). Each a row the panel's search finds.
18
+ */
19
+ const TONES = ['danger', 'warning', 'success', 'info', 'muted'];
20
+ const WIDTHS = ['narrow', 'medium', 'wide'];
21
+ /** The page a line's conditions read: its fields, and the record as parent. */
22
+ const linePage = (page, def) => ({ ...page, fields: { ...def.fields, parent: { type: 'json', label: 'parent' } } });
23
+ function tableSettings(el, designer, id) {
24
+ const words = designer.words;
25
+ const w = words.tables;
26
+ const focused = (node) => node.ownerDocument.activeElement === node;
27
+ let page = designer.getPage();
28
+ let node = null;
29
+ let lines = null;
30
+ /** A condition's box: its fields suggested, what is wrong said under it, handed on as it reads. */
31
+ function whenBox(label, scope, save, placeholder = w.whenPlaceholder) {
32
+ const box = (0, rules_formula_box_1.formulaBox)(el, { words, label, placeholder, check: (on, source) => (0, rules_formula_1.formulaProblem)(on, source, words), commit: (source) => save(source || null) });
33
+ const element = el('div', { class: 'fd-answer-rule-field fd-table-when' }, el('span', { class: 'fd-answer-rule-word' }, label), box.element, box.problem);
34
+ return { element, box, show: (source) => box.update(scope(), source ?? '') };
35
+ }
36
+ /** Tones, each a colour while its condition holds, the first that holds; a new one kept once its condition reads. */
37
+ function toneList(scope, read, save) {
38
+ const list = el('ul', { class: 'fd-table-tones' });
39
+ const add = el('button', { type: 'button', class: 'fd-button fd-button-link fd-table-add-tone' }, w.addTone);
40
+ let drafting = false;
41
+ const rows = [];
42
+ add.addEventListener('click', () => {
43
+ drafting = true;
44
+ draw();
45
+ rows[rows.length - 1]?.when.input.focus();
46
+ });
47
+ function row(index) {
48
+ const tone = el('select', { class: 'fd-input fd-select fd-table-tone', 'aria-label': w.toneOf }, ...TONES.map((t) => el('option', { value: t }, w.tones[t])));
49
+ const keep = (when) => {
50
+ if (!when)
51
+ return;
52
+ const items = [...read()];
53
+ items[index] = { tone: tone.value, when };
54
+ const begun = index >= read().length;
55
+ if (begun)
56
+ drafting = false;
57
+ if (!save(items) && begun)
58
+ drafting = true;
59
+ };
60
+ const when = (0, rules_formula_box_1.formulaBox)(el, { words, label: w.when, placeholder: w.whenPlaceholder, check: (on, source) => (0, rules_formula_1.formulaProblem)(on, source, words), commit: (source) => keep(source) });
61
+ tone.addEventListener('change', () => keep(when.input.value.trim()));
62
+ const remove = (0, chrome_1.iconButton)(el, w.removeTone(index + 1), '×', () => {
63
+ if (index >= read().length) {
64
+ drafting = false;
65
+ return draw();
66
+ }
67
+ const items = read().filter((_, i) => i !== index);
68
+ save(items.length ? items : null);
69
+ });
70
+ const element = el('li', { class: 'fd-table-tone-row' }, tone, el('div', { class: 'fd-table-tone-when' }, when.element, when.problem), remove);
71
+ return { element, tone, when, remove };
72
+ }
73
+ function draw() {
74
+ const items = read();
75
+ const count = items.length + (drafting ? 1 : 0);
76
+ while (rows.length > count)
77
+ rows.pop()?.element.remove();
78
+ while (rows.length < count) {
79
+ const made = row(rows.length);
80
+ rows.push(made);
81
+ list.append(made.element);
82
+ }
83
+ rows.forEach((r, i) => {
84
+ const item = items[i];
85
+ if (!focused(r.tone))
86
+ r.tone.value = item?.tone ?? 'danger';
87
+ r.when.update(scope(), item && typeof item.when === 'string' ? item.when : item ? String(item.when) : r.when.input.value);
88
+ });
89
+ list.hidden = !count;
90
+ add.hidden = drafting;
91
+ }
92
+ return { element: el('div', { class: 'fd-table-tone-list' }, list, add), draw };
93
+ }
94
+ // ---- Rules: a field's value in a tone ----
95
+ const fieldTones = toneList(() => page, () => node?.tones ?? [], (tones) => designer.setFieldTones(id, tones));
96
+ const fieldBold = whenBox(w.boldWhen, () => page, (source) => designer.setFieldBold(id, source));
97
+ const toneRow = (0, panel_controls_1.onTab)(el('div', { class: 'fd-prop fd-table-setting' }, el('span', { class: 'fd-prop-name' }, w.tone), fieldTones.element, fieldBold.element, el('p', { class: 'fd-properties-hint fd-set-hint' }, w.toneHint)), 'rules', 'Tone');
98
+ // ---- Rules: a table's lines, and each column's cells ----
99
+ const lineScope = () => (lines ? linePage(page, lines) : page);
100
+ const rowTones = toneList(lineScope, () => node?.rowTones ?? [], (tones) => designer.setRowTones(id, tones));
101
+ const rowBold = whenBox(w.boldWhen, lineScope, (source) => designer.setRowBold(id, source));
102
+ const lineDelete = whenBox(w.deletedOnlyWhen, lineScope, (source) => designer.setLineDelete(id, source));
103
+ const column = el('select', { class: 'fd-input fd-select fd-table-column', 'aria-label': w.column });
104
+ const current = () => column.value;
105
+ const rule = (key, label) => {
106
+ const box = whenBox(label, key === 'hidden' ? () => page : lineScope, (source) => designer.setCellRule(id, current(), key, source));
107
+ box.element.dataset['cellRule'] = key;
108
+ return { key, box };
109
+ };
110
+ const cellRules = [rule('invisible', w.hiddenOnLineWhen), rule('readonly', w.readonlyWhen), rule('required', w.requiredWhen), rule('bold', w.boldWhen), rule('hidden', w.columnHiddenWhen)];
111
+ const cellTones = toneList(lineScope, () => node?.cells?.[current()]?.tones ?? [], (tones) => designer.setCellTones(id, current(), tones));
112
+ const badge = el('input', { type: 'checkbox', class: 'fd-checkbox', 'aria-label': w.badge });
113
+ badge.addEventListener('change', () => designer.setCellLook(id, current(), { badge: badge.checked || null }));
114
+ // Its cells drawn by a widget that suits what the column holds: hours as HH:MM, stars, a bar…
115
+ const cellWidget = el('select', { class: 'fd-input fd-select fd-table-cell-widget', 'aria-label': w.shownAs });
116
+ cellWidget.addEventListener('change', () => designer.setCellLook(id, current(), { widget: cellWidget.value || null }));
117
+ const width = el('input', { type: 'number', class: 'fd-input fd-inline-number', min: '1', max: '200', step: '1', 'aria-label': w.width });
118
+ // The roles the column shows to: kept once it is left or Enter is pressed, a role half typed being no role.
119
+ const columnRoles = el('input', { class: 'fd-input fd-answer-rule-code fd-table-column-roles', 'aria-label': w.columnShownTo, placeholder: words.rulesUi.rolesPlaceholder, spellcheck: 'false', autocomplete: 'off' });
120
+ const keepRoles = () => {
121
+ const typed = columnRoles.value.split(/[\s,]+/).filter(Boolean);
122
+ if (typed.join(',') === (node?.cells?.[current()]?.roles ?? []).join(','))
123
+ return;
124
+ if (!designer.setCellLook(id, current(), { roles: typed.length ? typed : null }))
125
+ columnRoles.value = (node?.cells?.[current()]?.roles ?? []).join(', ');
126
+ };
127
+ columnRoles.addEventListener('change', keepRoles);
128
+ columnRoles.addEventListener('keydown', (event) => event.key === 'Enter' && (event.preventDefault(), keepRoles()));
129
+ width.addEventListener('change', () => designer.setCellLook(id, current(), { width: width.value.trim() ? Number(width.value) : null }));
130
+ column.addEventListener('change', () => drawColumn());
131
+ const columnBox = el('div', { class: 'fd-table-column-rules' }, el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, w.column), column), ...cellRules.map((r) => r.box.element), el('p', { class: 'fd-properties-hint fd-set-hint' }, w.columnHiddenHint), el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, w.columnShownTo), columnRoles), el('span', { class: 'fd-answer-rule-word' }, w.toneOf), cellTones.element, el('label', { class: 'fd-inline-setting' }, badge, el('span', {}, w.badge)), el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, w.shownAs), cellWidget), el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, w.width), width));
132
+ const linesRow = (0, panel_controls_1.onTab)(el('div', { class: 'fd-prop fd-table-setting' }, el('span', { class: 'fd-prop-name' }, w.lineRules), el('span', { class: 'fd-answer-rule-word' }, w.linesTone), rowTones.element, rowBold.element, lineDelete.element, el('p', { class: 'fd-properties-hint fd-set-hint' }, w.linesHint), columnBox), 'rules', 'Line rules');
133
+ function drawColumn() {
134
+ const rules = node?.cells?.[current()] ?? {};
135
+ for (const r of cellRules)
136
+ r.box.show(typeof rules[r.key] === 'string' ? rules[r.key] : undefined);
137
+ cellTones.draw();
138
+ badge.checked = rules.badge === true;
139
+ const type = lines?.fields[current()]?.type ?? '';
140
+ const offered = table_commands_1.CELL_WIDGETS[type] ?? [];
141
+ const names = designer.words.kinds.names;
142
+ cellWidget.replaceChildren(el('option', { value: '' }, w.asItsType), ...offered.map((widget) => el('option', { value: widget }, names[table_commands_1.CELL_WIDGET_KINDS[widget]] ?? widget)));
143
+ cellWidget.value = rules.widget && offered.includes(rules.widget) ? rules.widget : '';
144
+ cellWidget.parentElement.hidden = !offered.length;
145
+ if (!focused(width))
146
+ width.value = rules.width ? String(rules.width) : '';
147
+ if (!focused(columnRoles))
148
+ columnRoles.value = (rules.roles ?? []).join(', ');
149
+ }
150
+ // ---- Content: the table's buttons ----
151
+ function buttonList(place, title) {
152
+ const list = el('ul', { class: 'fd-table-buttons', 'data-place': place });
153
+ const add = el('button', { type: 'button', class: 'fd-button fd-button-link' }, w.addButton);
154
+ const read = () => node?.[place] ?? [];
155
+ const save = (items) => designer.setTableButtons(id, place, items.map((b) => ({ id: b.id, label: b.label, action: b.action, invisible: typeof b.invisible === 'string' ? b.invisible : undefined })));
156
+ add.addEventListener('click', () => {
157
+ save([...read(), { type: 'button', id: '', label: w.newButton }]);
158
+ list.lastElementChild?.querySelector('input')?.focus();
159
+ });
160
+ const drawn = [];
161
+ function draw() {
162
+ const items = read();
163
+ while (drawn.length > items.length)
164
+ drawn.pop()?.element.remove();
165
+ while (drawn.length < items.length) {
166
+ const index = drawn.length;
167
+ const change = (patch) => save(read().map((b, i) => (i === index ? { ...b, ...patch } : b)));
168
+ const words = el('input', { class: 'fd-input', 'aria-label': w.buttonWords });
169
+ words.addEventListener('input', () => words.value.trim() && change({ label: words.value }));
170
+ const action = el('input', { class: 'fd-input fd-answer-rule-code', 'aria-label': w.action, spellcheck: 'false', autocomplete: 'off' });
171
+ action.addEventListener('change', () => change({ action: action.value.trim() || undefined }));
172
+ const hidden = whenBox(w.hiddenWhen, place === 'rowButtons' ? lineScope : () => page, (source) => change({ invisible: source ?? undefined }));
173
+ const remove = (0, chrome_1.iconButton)(el, w.removeButton(read()[index]?.label ?? ''), '×', () => {
174
+ const kept = read().filter((_, i) => i !== index);
175
+ designer.setTableButtons(id, place, kept.length ? kept.map((b) => ({ id: b.id, label: b.label, action: b.action, invisible: typeof b.invisible === 'string' ? b.invisible : undefined })) : null);
176
+ });
177
+ const element = el('li', { class: 'fd-table-button' }, el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, w.buttonWords), words), el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, w.action), action), hidden.element, remove);
178
+ drawn.push({ element, words, action, hidden, remove });
179
+ list.append(element);
180
+ }
181
+ drawn.forEach((d, i) => {
182
+ const item = items[i];
183
+ if (!focused(d.words))
184
+ d.words.value = item.label;
185
+ if (!focused(d.action))
186
+ d.action.value = item.action ?? '';
187
+ d.hidden.show(typeof item.invisible === 'string' ? item.invisible : undefined);
188
+ d.remove.setAttribute('aria-label', w.removeButton(item.label));
189
+ d.remove.title = w.removeButton(item.label);
190
+ });
191
+ }
192
+ return { element: el('div', { class: 'fd-table-button-place' }, el('span', { class: 'fd-answer-rule-word' }, title), list, add), draw };
193
+ }
194
+ const buttonPlaces = [buttonList('rowButtons', w.onEachLine), buttonList('selectedButtons', w.forChosenLines), buttonList('controlButtons', w.besideAdd)];
195
+ const buttonsRow = (0, panel_controls_1.onTab)(el('div', { class: 'fd-prop fd-table-setting' }, el('span', { class: 'fd-prop-name' }, w.tableButtons), ...buttonPlaces.map((p) => p.element)), 'content', 'Table buttons');
196
+ // ---- Layout: the table's shape, and the widths a field is hidden at ----
197
+ const select = (label, choices, change) => {
198
+ const box = el('select', { class: 'fd-input fd-select', 'aria-label': label }, ...choices.map(([value, text]) => el('option', { value }, text)));
199
+ box.addEventListener('change', () => change(box.value));
200
+ return box;
201
+ };
202
+ // Its fields, a form of its own laid out of them (lineForm, arranged in the page's JSON), or its own page.
203
+ const opens = select(w.lineOpens, [['', w.opensFields], ['form', w.opensForm], ['record', w.opensRecord]], (value) => designer.setTableShape(id, { lineOpens: value === 'record' ? 'record' : null, lineForm: value === 'form' ? true : null }));
204
+ const phone = select(w.onAPhone, [['', w.rows], ['narrow', w.cardsOnPhone], ['always', w.cardsAlways]], (value) => designer.setTableShape(id, { cards: (value || null) }));
205
+ const fit = select(w.columnWidths, [['', w.shareWidth], ['content', w.fitContent], ['shrink', w.shrinkToFit]], (value) => designer.setTableShape(id, { fit: (value || null) }));
206
+ // The order lines load in: their fields' names, apart by commas, "desc" after one turning it round.
207
+ const order = el('input', { class: 'fd-input fd-answer-rule-code fd-table-order', 'aria-label': w.linesOrder, placeholder: w.linesOrderPlaceholder, spellcheck: 'false', autocomplete: 'off' });
208
+ const orderText = (items) => (items ?? []).map((item) => `${item.field}${item.desc ? ' desc' : ''}`).join(', ');
209
+ const keepOrder = () => {
210
+ const typed = order.value.split(',').map((part) => part.trim().split(/\s+/)).filter((words) => words[0]).map(([field, way]) => ({ field, ...(way?.toLowerCase() === 'desc' ? { desc: true } : {}) }));
211
+ if (orderText(typed) === orderText(node?.order))
212
+ return;
213
+ if (!designer.setTableShape(id, { order: typed.length ? typed : null }))
214
+ order.value = orderText(node?.order);
215
+ };
216
+ order.addEventListener('change', keepOrder);
217
+ order.addEventListener('keydown', (event) => event.key === 'Enter' && (event.preventDefault(), keepOrder()));
218
+ const copy = el('input', { type: 'checkbox', class: 'fd-checkbox', 'aria-label': w.copyLine });
219
+ copy.addEventListener('change', () => designer.setTableShape(id, { copy: copy.checked || null }));
220
+ const field = (label, control) => el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, label), control);
221
+ const shapeRow = (0, panel_controls_1.onTab)(el('div', { class: 'fd-prop fd-table-setting' }, el('span', { class: 'fd-prop-name' }, w.table), field(w.lineOpens, opens), field(w.onAPhone, phone), field(w.columnWidths, fit), field(w.linesOrder, order), el('label', { class: 'fd-inline-setting' }, copy, el('span', {}, w.copyLine))), 'layout', 'Table');
222
+ const chips = WIDTHS.map((width) => {
223
+ const chip = el('button', { type: 'button', class: 'fd-inline-chip', 'aria-pressed': 'false', 'data-width': width }, w.widths[width]);
224
+ chip.addEventListener('click', () => {
225
+ const now = node?.hideOn ?? [];
226
+ designer.setHideOn(id, now.includes(width) ? now.filter((x) => x !== width) : [...now, width]);
227
+ });
228
+ return chip;
229
+ });
230
+ const hiddenOnRow = (0, panel_controls_1.onTab)(el('div', { class: 'fd-prop fd-table-setting' }, el('span', { class: 'fd-prop-name' }, w.hiddenOn), el('div', { class: 'fd-inline-chips', role: 'group', 'aria-label': w.hiddenOn }, ...chips), el('p', { class: 'fd-properties-hint fd-set-hint' }, w.hiddenOnHint)), 'layout', 'Hidden on');
231
+ return {
232
+ rows: [toneRow, linesRow, buttonsRow, shapeRow, hiddenOnRow],
233
+ update(next) {
234
+ page = next;
235
+ const found = (0, page_tree_1.findField)(page, id);
236
+ node = found?.node ?? null;
237
+ if (!node)
238
+ return;
239
+ const def = page.fields[node.field];
240
+ lines = def?.type === 'one2many' ? def : null;
241
+ // A value's tone is for a field that shows one value; a table has its lines'.
242
+ toneRow.hidden = !def || ['one2many', 'many2many', 'binary', 'image', 'html', 'matrix', 'properties', 'json'].includes(def.type);
243
+ linesRow.hidden = buttonsRow.hidden = shapeRow.hidden = !lines;
244
+ if (!toneRow.hidden) {
245
+ fieldTones.draw();
246
+ fieldBold.show(typeof node.bold === 'string' ? node.bold : undefined);
247
+ }
248
+ if (lines) {
249
+ rowTones.draw();
250
+ rowBold.show(typeof node.rowBold === 'string' ? node.rowBold : undefined);
251
+ lineDelete.show(typeof node.lineDelete === 'string' ? node.lineDelete : undefined);
252
+ const names = Object.keys(lines.fields).filter((name) => name !== lines.sequenceField && name !== lines.lineKinds?.field);
253
+ const key = JSON.stringify(names.map((name) => [name, lines.fields[name].label]));
254
+ if (column.dataset['drawn'] !== key) {
255
+ const was = column.value;
256
+ column.dataset['drawn'] = key;
257
+ column.replaceChildren(...names.map((name) => el('option', { value: name }, lines.fields[name].label)));
258
+ if (names.includes(was))
259
+ column.value = was;
260
+ }
261
+ drawColumn();
262
+ for (const place of buttonPlaces)
263
+ place.draw();
264
+ opens.value = node.lineOpens === 'record' ? 'record' : node.lineForm ? 'form' : '';
265
+ phone.value = node.cards ?? '';
266
+ fit.value = node.fit ?? '';
267
+ copy.checked = node.options?.['copy'] === true;
268
+ if (!focused(order))
269
+ order.value = orderText(node.order);
270
+ }
271
+ for (const chip of chips)
272
+ chip.setAttribute('aria-pressed', String(node.hideOn?.includes(chip.dataset['width']) ?? false));
273
+ },
274
+ };
275
+ }
276
+ //# sourceMappingURL=table-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-panel.js","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/table-panel.ts"],"names":[],"mappings":";;AA+BA,sCA0RC;AAxTD,qCAA2D;AAE3D,2CAAwC;AACxC,qDAAyC;AACzC,mDAAiD;AACjD,2DAAkE;AAClE,qDAAyG;AAEzG;;;;;;;;GAQG;AAEH,MAAM,KAAK,GAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACxE,MAAM,MAAM,GAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAG3D,+EAA+E;AAC/E,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAE,GAAU,EAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAoB,CAAC;AAO1J,SAAgB,aAAa,CAAC,EAAkB,EAAE,QAAkB,EAAE,EAAU;IAC9E,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,MAAM,OAAO,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,KAAK,IAAI,CAAC;IAC7E,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC9B,IAAI,IAAI,GAAqB,IAAI,CAAC;IAClC,IAAI,KAAK,GAAiB,IAAI,CAAC;IAE/B,mGAAmG;IACnG,SAAS,OAAO,CAAC,KAAa,EAAE,KAAiB,EAAE,IAAqC,EAAE,WAAW,GAAG,CAAC,CAAC,eAAe;QACvH,MAAM,GAAG,GAAG,IAAA,8BAAU,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,IAAA,8BAAc,EAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9J,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,oCAAoC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1J,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,MAA0B,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;IACnG,CAAC;IAED,qHAAqH;IACrH,SAAS,QAAQ,CAAC,KAAiB,EAAE,IAAsB,EAAE,IAA2C;QACtG,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,4CAA4C,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7G,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,IAAI,GAAqG,EAAE,CAAC;QAClH,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACjC,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,EAAE,CAAC;YACP,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,SAAS,GAAG,CAAC,KAAa;YACxB,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,kCAAkC,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAsB,CAAC;YACnL,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE;gBAC5B,IAAI,CAAC,IAAI;oBAAE,OAAO;gBAClB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;gBAC1B,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAa,EAAE,IAAI,EAAE,CAAC;gBAClD,MAAM,KAAK,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC,MAAM,CAAC;gBACrC,IAAI,KAAK;oBAAE,QAAQ,GAAG,KAAK,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK;oBAAE,QAAQ,GAAG,IAAI,CAAC;YAC7C,CAAC,CAAC;YACF,MAAM,IAAI,GAAG,IAAA,8BAAU,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,IAAA,8BAAc,EAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAClL,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;gBAC/D,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;oBAC3B,QAAQ,GAAG,KAAK,CAAC;oBACjB,OAAO,IAAI,EAAE,CAAC;gBAChB,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;gBACnD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;YAC/I,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QACD,SAAS,IAAI;YACX,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK;gBAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;oBAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,IAAI,IAAI,QAAQ,CAAC;gBAC5D,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5H,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;YACrB,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;IAClF,CAAC;IAED,6CAA6C;IAC7C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/G,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACjG,MAAM,OAAO,GAAG,IAAA,sBAAK,EAAC,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEjP,4DAA4D;IAC5D,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7G,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5F,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACzG,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,oCAAoC,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAsB,CAAC;IAC1H,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,GAAa,EAAE,KAAa,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QACpI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;QACtC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACtB,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC5L,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3I,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,CAAqB,CAAC;IACjH,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9G,8FAA8F;IAC9F,MAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,yCAAyC,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAsB,CAAC;IACpI,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACvH,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,2BAA2B,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,CAAqB,CAAC;IAC9J,4GAA4G;IAC5G,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,oDAAoD,EAAE,YAAY,EAAE,CAAC,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAqB,CAAC;IAC3O,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO;QAClF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAAE,WAAW,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3J,CAAC,CAAC;IACF,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClD,WAAW,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACnH,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACxI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,EAAE,CAClB,KAAK,EACL,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAClC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAC9G,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EACtC,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,EACxE,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,EAC1H,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EACtD,SAAS,CAAC,OAAO,EACjB,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAC3E,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,EACnH,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAC7G,CAAC;IACF,MAAM,QAAQ,GAAG,IAAA,sBAAK,EACpB,EAAE,CACA,KAAK,EACL,EAAE,KAAK,EAAE,0BAA0B,EAAE,EACrC,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EAClD,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EACzD,QAAQ,CAAC,OAAO,EAChB,OAAO,CAAC,OAAO,EACf,UAAU,CAAC,OAAO,EAClB,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EACjE,SAAS,CACV,EACD,OAAO,EACP,YAAY,CACb,CAAC;IACF,SAAS,UAAU;QACjB,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/G,SAAS,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;QACrC,MAAM,IAAI,GAAG,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,6BAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,KAAK,GAA2B,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QACjE,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,kCAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9K,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,UAAU,CAAC,aAA6B,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YAAE,WAAW,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC;IAED,yCAAyC;IACzC,SAAS,UAAU,CAAC,KAAuB,EAAE,KAAa;QACxD,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1E,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;QAC7F,MAAM,IAAI,GAAG,GAAiB,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,CAAC,KAAmB,EAAE,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACpN,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACjC,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,OAAO,CAA6B,EAAE,KAAK,EAAE,CAAC;QACtF,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,GAAiJ,EAAE,CAAC;QAC/J,SAAS,IAAI;YACX,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;gBAAE,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YAClE,OAAO,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC3B,MAAM,MAAM,GAAG,CAAC,KAA0B,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClH,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC,WAAW,EAAE,CAAqB,CAAC;gBAClG,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC5F,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAqB,CAAC;gBAC5J,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC9F,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC9I,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;oBAClF,MAAM,IAAI,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;oBAClD,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACpM,CAAC,CAAC,CAAC;gBACH,MAAM,OAAO,GAAG,EAAE,CAChB,IAAI,EACJ,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAC5B,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAClH,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,EAC9G,MAAM,CAAC,OAAO,EACd,MAAM,CACP,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACrB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;oBAAE,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBAClD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;oBAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC3D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC/E,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;IAC1I,CAAC;IACD,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1J,MAAM,UAAU,GAAG,IAAA,sBAAK,EAAC,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAErM,2EAA2E;IAC3E,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,OAA2B,EAAE,MAA+B,EAAE,EAAE;QAC7F,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAsB,CAAC;QACtK,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,2GAA2G;IAC3G,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CACnH,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAC1H,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,IAAI,CAA+B,EAAE,CAAC,CAAC,CAAC;IACzM,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,CAAgC,EAAE,CAAC,CAAC,CAAC;IAC/M,oGAAoG;IACpG,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,6CAA6C,EAAE,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,qBAAqB,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAqB,CAAC;IACpN,MAAM,SAAS,GAAG,CAAC,KAAyB,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpI,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtM,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;YAAE,OAAO;QACxD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAAE,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChH,CAAC,CAAC;IACF,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC5C,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAC7G,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAqB,CAAC;IACnH,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAClG,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,OAAoB,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IACpK,MAAM,QAAQ,GAAG,IAAA,sBAAK,EACpB,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC5R,QAAQ,EACR,OAAO,CACR,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACjC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAsB,CAAC;QAC3J,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAClC,MAAM,GAAG,GAAG,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;YAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACjG,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,IAAA,sBAAK,EACvB,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EACrQ,QAAQ,EACR,WAAW,CACZ,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC;QAC5D,MAAM,CAAC,IAAI;YACT,IAAI,GAAG,IAAI,CAAC;YACZ,MAAM,KAAK,GAAG,IAAA,qBAAS,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClC,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC;YAC3B,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,KAAK,GAAG,GAAG,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9C,8EAA8E;YAC9E,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjI,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;YAC/D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,UAAU,CAAC,IAAI,EAAE,CAAC;gBAClB,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACxE,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC1E,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACnF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,KAAM,CAAC,aAAa,IAAI,IAAI,KAAK,KAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC5H,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnF,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;oBACpC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;oBACzB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;oBAC9B,MAAM,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACzG,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;wBAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;gBAC9C,CAAC;gBACD,UAAU,EAAE,CAAC;gBACb,KAAK,MAAM,KAAK,IAAI,YAAY;oBAAE,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC/C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/B,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;gBAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;oBAAE,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3D,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,KAAK;gBAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAgB,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAC5I,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,273 @@
1
+ import { iconButton } from './chrome.mjs';
2
+ import { findField } from './page-tree.mjs';
3
+ import { onTab } from './panel-controls.mjs';
4
+ import { formulaProblem } from './rules-formula.mjs';
5
+ import { formulaBox } from './rules-formula-box.mjs';
6
+ import { CELL_WIDGET_KINDS, CELL_WIDGETS } from './table-commands.mjs';
7
+ /**
8
+ * A field's tone and a table's own rules in the panel: its value's tones and
9
+ * bold (Rules); a table's lines' tones and bold, and each column's cells by
10
+ * their line — blank, read-only, required, bold, toned, a pill, a width — and
11
+ * the column hidden by the record (Rules); its buttons on each line, for the
12
+ * lines chosen and beside Add a line (Content); how a line opens, how it shows
13
+ * on a phone, its columns' widths, a line copied (Layout); and the widths of
14
+ * the form a field is hidden at (Layout). Each a row the panel's search finds.
15
+ */
16
+ const TONES = ['danger', 'warning', 'success', 'info', 'muted'];
17
+ const WIDTHS = ['narrow', 'medium', 'wide'];
18
+ /** The page a line's conditions read: its fields, and the record as parent. */
19
+ const linePage = (page, def) => ({ ...page, fields: { ...def.fields, parent: { type: 'json', label: 'parent' } } });
20
+ export function tableSettings(el, designer, id) {
21
+ const words = designer.words;
22
+ const w = words.tables;
23
+ const focused = (node) => node.ownerDocument.activeElement === node;
24
+ let page = designer.getPage();
25
+ let node = null;
26
+ let lines = null;
27
+ /** A condition's box: its fields suggested, what is wrong said under it, handed on as it reads. */
28
+ function whenBox(label, scope, save, placeholder = w.whenPlaceholder) {
29
+ const box = formulaBox(el, { words, label, placeholder, check: (on, source) => formulaProblem(on, source, words), commit: (source) => save(source || null) });
30
+ const element = el('div', { class: 'fd-answer-rule-field fd-table-when' }, el('span', { class: 'fd-answer-rule-word' }, label), box.element, box.problem);
31
+ return { element, box, show: (source) => box.update(scope(), source ?? '') };
32
+ }
33
+ /** Tones, each a colour while its condition holds, the first that holds; a new one kept once its condition reads. */
34
+ function toneList(scope, read, save) {
35
+ const list = el('ul', { class: 'fd-table-tones' });
36
+ const add = el('button', { type: 'button', class: 'fd-button fd-button-link fd-table-add-tone' }, w.addTone);
37
+ let drafting = false;
38
+ const rows = [];
39
+ add.addEventListener('click', () => {
40
+ drafting = true;
41
+ draw();
42
+ rows[rows.length - 1]?.when.input.focus();
43
+ });
44
+ function row(index) {
45
+ const tone = el('select', { class: 'fd-input fd-select fd-table-tone', 'aria-label': w.toneOf }, ...TONES.map((t) => el('option', { value: t }, w.tones[t])));
46
+ const keep = (when) => {
47
+ if (!when)
48
+ return;
49
+ const items = [...read()];
50
+ items[index] = { tone: tone.value, when };
51
+ const begun = index >= read().length;
52
+ if (begun)
53
+ drafting = false;
54
+ if (!save(items) && begun)
55
+ drafting = true;
56
+ };
57
+ const when = formulaBox(el, { words, label: w.when, placeholder: w.whenPlaceholder, check: (on, source) => formulaProblem(on, source, words), commit: (source) => keep(source) });
58
+ tone.addEventListener('change', () => keep(when.input.value.trim()));
59
+ const remove = iconButton(el, w.removeTone(index + 1), '×', () => {
60
+ if (index >= read().length) {
61
+ drafting = false;
62
+ return draw();
63
+ }
64
+ const items = read().filter((_, i) => i !== index);
65
+ save(items.length ? items : null);
66
+ });
67
+ const element = el('li', { class: 'fd-table-tone-row' }, tone, el('div', { class: 'fd-table-tone-when' }, when.element, when.problem), remove);
68
+ return { element, tone, when, remove };
69
+ }
70
+ function draw() {
71
+ const items = read();
72
+ const count = items.length + (drafting ? 1 : 0);
73
+ while (rows.length > count)
74
+ rows.pop()?.element.remove();
75
+ while (rows.length < count) {
76
+ const made = row(rows.length);
77
+ rows.push(made);
78
+ list.append(made.element);
79
+ }
80
+ rows.forEach((r, i) => {
81
+ const item = items[i];
82
+ if (!focused(r.tone))
83
+ r.tone.value = item?.tone ?? 'danger';
84
+ r.when.update(scope(), item && typeof item.when === 'string' ? item.when : item ? String(item.when) : r.when.input.value);
85
+ });
86
+ list.hidden = !count;
87
+ add.hidden = drafting;
88
+ }
89
+ return { element: el('div', { class: 'fd-table-tone-list' }, list, add), draw };
90
+ }
91
+ // ---- Rules: a field's value in a tone ----
92
+ const fieldTones = toneList(() => page, () => node?.tones ?? [], (tones) => designer.setFieldTones(id, tones));
93
+ const fieldBold = whenBox(w.boldWhen, () => page, (source) => designer.setFieldBold(id, source));
94
+ const toneRow = onTab(el('div', { class: 'fd-prop fd-table-setting' }, el('span', { class: 'fd-prop-name' }, w.tone), fieldTones.element, fieldBold.element, el('p', { class: 'fd-properties-hint fd-set-hint' }, w.toneHint)), 'rules', 'Tone');
95
+ // ---- Rules: a table's lines, and each column's cells ----
96
+ const lineScope = () => (lines ? linePage(page, lines) : page);
97
+ const rowTones = toneList(lineScope, () => node?.rowTones ?? [], (tones) => designer.setRowTones(id, tones));
98
+ const rowBold = whenBox(w.boldWhen, lineScope, (source) => designer.setRowBold(id, source));
99
+ const lineDelete = whenBox(w.deletedOnlyWhen, lineScope, (source) => designer.setLineDelete(id, source));
100
+ const column = el('select', { class: 'fd-input fd-select fd-table-column', 'aria-label': w.column });
101
+ const current = () => column.value;
102
+ const rule = (key, label) => {
103
+ const box = whenBox(label, key === 'hidden' ? () => page : lineScope, (source) => designer.setCellRule(id, current(), key, source));
104
+ box.element.dataset['cellRule'] = key;
105
+ return { key, box };
106
+ };
107
+ const cellRules = [rule('invisible', w.hiddenOnLineWhen), rule('readonly', w.readonlyWhen), rule('required', w.requiredWhen), rule('bold', w.boldWhen), rule('hidden', w.columnHiddenWhen)];
108
+ const cellTones = toneList(lineScope, () => node?.cells?.[current()]?.tones ?? [], (tones) => designer.setCellTones(id, current(), tones));
109
+ const badge = el('input', { type: 'checkbox', class: 'fd-checkbox', 'aria-label': w.badge });
110
+ badge.addEventListener('change', () => designer.setCellLook(id, current(), { badge: badge.checked || null }));
111
+ // Its cells drawn by a widget that suits what the column holds: hours as HH:MM, stars, a bar…
112
+ const cellWidget = el('select', { class: 'fd-input fd-select fd-table-cell-widget', 'aria-label': w.shownAs });
113
+ cellWidget.addEventListener('change', () => designer.setCellLook(id, current(), { widget: cellWidget.value || null }));
114
+ const width = el('input', { type: 'number', class: 'fd-input fd-inline-number', min: '1', max: '200', step: '1', 'aria-label': w.width });
115
+ // The roles the column shows to: kept once it is left or Enter is pressed, a role half typed being no role.
116
+ const columnRoles = el('input', { class: 'fd-input fd-answer-rule-code fd-table-column-roles', 'aria-label': w.columnShownTo, placeholder: words.rulesUi.rolesPlaceholder, spellcheck: 'false', autocomplete: 'off' });
117
+ const keepRoles = () => {
118
+ const typed = columnRoles.value.split(/[\s,]+/).filter(Boolean);
119
+ if (typed.join(',') === (node?.cells?.[current()]?.roles ?? []).join(','))
120
+ return;
121
+ if (!designer.setCellLook(id, current(), { roles: typed.length ? typed : null }))
122
+ columnRoles.value = (node?.cells?.[current()]?.roles ?? []).join(', ');
123
+ };
124
+ columnRoles.addEventListener('change', keepRoles);
125
+ columnRoles.addEventListener('keydown', (event) => event.key === 'Enter' && (event.preventDefault(), keepRoles()));
126
+ width.addEventListener('change', () => designer.setCellLook(id, current(), { width: width.value.trim() ? Number(width.value) : null }));
127
+ column.addEventListener('change', () => drawColumn());
128
+ const columnBox = el('div', { class: 'fd-table-column-rules' }, el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, w.column), column), ...cellRules.map((r) => r.box.element), el('p', { class: 'fd-properties-hint fd-set-hint' }, w.columnHiddenHint), el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, w.columnShownTo), columnRoles), el('span', { class: 'fd-answer-rule-word' }, w.toneOf), cellTones.element, el('label', { class: 'fd-inline-setting' }, badge, el('span', {}, w.badge)), el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, w.shownAs), cellWidget), el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, w.width), width));
129
+ const linesRow = onTab(el('div', { class: 'fd-prop fd-table-setting' }, el('span', { class: 'fd-prop-name' }, w.lineRules), el('span', { class: 'fd-answer-rule-word' }, w.linesTone), rowTones.element, rowBold.element, lineDelete.element, el('p', { class: 'fd-properties-hint fd-set-hint' }, w.linesHint), columnBox), 'rules', 'Line rules');
130
+ function drawColumn() {
131
+ const rules = node?.cells?.[current()] ?? {};
132
+ for (const r of cellRules)
133
+ r.box.show(typeof rules[r.key] === 'string' ? rules[r.key] : undefined);
134
+ cellTones.draw();
135
+ badge.checked = rules.badge === true;
136
+ const type = lines?.fields[current()]?.type ?? '';
137
+ const offered = CELL_WIDGETS[type] ?? [];
138
+ const names = designer.words.kinds.names;
139
+ cellWidget.replaceChildren(el('option', { value: '' }, w.asItsType), ...offered.map((widget) => el('option', { value: widget }, names[CELL_WIDGET_KINDS[widget]] ?? widget)));
140
+ cellWidget.value = rules.widget && offered.includes(rules.widget) ? rules.widget : '';
141
+ cellWidget.parentElement.hidden = !offered.length;
142
+ if (!focused(width))
143
+ width.value = rules.width ? String(rules.width) : '';
144
+ if (!focused(columnRoles))
145
+ columnRoles.value = (rules.roles ?? []).join(', ');
146
+ }
147
+ // ---- Content: the table's buttons ----
148
+ function buttonList(place, title) {
149
+ const list = el('ul', { class: 'fd-table-buttons', 'data-place': place });
150
+ const add = el('button', { type: 'button', class: 'fd-button fd-button-link' }, w.addButton);
151
+ const read = () => node?.[place] ?? [];
152
+ const save = (items) => designer.setTableButtons(id, place, items.map((b) => ({ id: b.id, label: b.label, action: b.action, invisible: typeof b.invisible === 'string' ? b.invisible : undefined })));
153
+ add.addEventListener('click', () => {
154
+ save([...read(), { type: 'button', id: '', label: w.newButton }]);
155
+ list.lastElementChild?.querySelector('input')?.focus();
156
+ });
157
+ const drawn = [];
158
+ function draw() {
159
+ const items = read();
160
+ while (drawn.length > items.length)
161
+ drawn.pop()?.element.remove();
162
+ while (drawn.length < items.length) {
163
+ const index = drawn.length;
164
+ const change = (patch) => save(read().map((b, i) => (i === index ? { ...b, ...patch } : b)));
165
+ const words = el('input', { class: 'fd-input', 'aria-label': w.buttonWords });
166
+ words.addEventListener('input', () => words.value.trim() && change({ label: words.value }));
167
+ const action = el('input', { class: 'fd-input fd-answer-rule-code', 'aria-label': w.action, spellcheck: 'false', autocomplete: 'off' });
168
+ action.addEventListener('change', () => change({ action: action.value.trim() || undefined }));
169
+ const hidden = whenBox(w.hiddenWhen, place === 'rowButtons' ? lineScope : () => page, (source) => change({ invisible: source ?? undefined }));
170
+ const remove = iconButton(el, w.removeButton(read()[index]?.label ?? ''), '×', () => {
171
+ const kept = read().filter((_, i) => i !== index);
172
+ designer.setTableButtons(id, place, kept.length ? kept.map((b) => ({ id: b.id, label: b.label, action: b.action, invisible: typeof b.invisible === 'string' ? b.invisible : undefined })) : null);
173
+ });
174
+ const element = el('li', { class: 'fd-table-button' }, el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, w.buttonWords), words), el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, w.action), action), hidden.element, remove);
175
+ drawn.push({ element, words, action, hidden, remove });
176
+ list.append(element);
177
+ }
178
+ drawn.forEach((d, i) => {
179
+ const item = items[i];
180
+ if (!focused(d.words))
181
+ d.words.value = item.label;
182
+ if (!focused(d.action))
183
+ d.action.value = item.action ?? '';
184
+ d.hidden.show(typeof item.invisible === 'string' ? item.invisible : undefined);
185
+ d.remove.setAttribute('aria-label', w.removeButton(item.label));
186
+ d.remove.title = w.removeButton(item.label);
187
+ });
188
+ }
189
+ return { element: el('div', { class: 'fd-table-button-place' }, el('span', { class: 'fd-answer-rule-word' }, title), list, add), draw };
190
+ }
191
+ const buttonPlaces = [buttonList('rowButtons', w.onEachLine), buttonList('selectedButtons', w.forChosenLines), buttonList('controlButtons', w.besideAdd)];
192
+ const buttonsRow = onTab(el('div', { class: 'fd-prop fd-table-setting' }, el('span', { class: 'fd-prop-name' }, w.tableButtons), ...buttonPlaces.map((p) => p.element)), 'content', 'Table buttons');
193
+ // ---- Layout: the table's shape, and the widths a field is hidden at ----
194
+ const select = (label, choices, change) => {
195
+ const box = el('select', { class: 'fd-input fd-select', 'aria-label': label }, ...choices.map(([value, text]) => el('option', { value }, text)));
196
+ box.addEventListener('change', () => change(box.value));
197
+ return box;
198
+ };
199
+ // Its fields, a form of its own laid out of them (lineForm, arranged in the page's JSON), or its own page.
200
+ const opens = select(w.lineOpens, [['', w.opensFields], ['form', w.opensForm], ['record', w.opensRecord]], (value) => designer.setTableShape(id, { lineOpens: value === 'record' ? 'record' : null, lineForm: value === 'form' ? true : null }));
201
+ const phone = select(w.onAPhone, [['', w.rows], ['narrow', w.cardsOnPhone], ['always', w.cardsAlways]], (value) => designer.setTableShape(id, { cards: (value || null) }));
202
+ const fit = select(w.columnWidths, [['', w.shareWidth], ['content', w.fitContent], ['shrink', w.shrinkToFit]], (value) => designer.setTableShape(id, { fit: (value || null) }));
203
+ // The order lines load in: their fields' names, apart by commas, "desc" after one turning it round.
204
+ const order = el('input', { class: 'fd-input fd-answer-rule-code fd-table-order', 'aria-label': w.linesOrder, placeholder: w.linesOrderPlaceholder, spellcheck: 'false', autocomplete: 'off' });
205
+ const orderText = (items) => (items ?? []).map((item) => `${item.field}${item.desc ? ' desc' : ''}`).join(', ');
206
+ const keepOrder = () => {
207
+ const typed = order.value.split(',').map((part) => part.trim().split(/\s+/)).filter((words) => words[0]).map(([field, way]) => ({ field, ...(way?.toLowerCase() === 'desc' ? { desc: true } : {}) }));
208
+ if (orderText(typed) === orderText(node?.order))
209
+ return;
210
+ if (!designer.setTableShape(id, { order: typed.length ? typed : null }))
211
+ order.value = orderText(node?.order);
212
+ };
213
+ order.addEventListener('change', keepOrder);
214
+ order.addEventListener('keydown', (event) => event.key === 'Enter' && (event.preventDefault(), keepOrder()));
215
+ const copy = el('input', { type: 'checkbox', class: 'fd-checkbox', 'aria-label': w.copyLine });
216
+ copy.addEventListener('change', () => designer.setTableShape(id, { copy: copy.checked || null }));
217
+ const field = (label, control) => el('label', { class: 'fd-answer-rule-field' }, el('span', { class: 'fd-answer-rule-word' }, label), control);
218
+ const shapeRow = onTab(el('div', { class: 'fd-prop fd-table-setting' }, el('span', { class: 'fd-prop-name' }, w.table), field(w.lineOpens, opens), field(w.onAPhone, phone), field(w.columnWidths, fit), field(w.linesOrder, order), el('label', { class: 'fd-inline-setting' }, copy, el('span', {}, w.copyLine))), 'layout', 'Table');
219
+ const chips = WIDTHS.map((width) => {
220
+ const chip = el('button', { type: 'button', class: 'fd-inline-chip', 'aria-pressed': 'false', 'data-width': width }, w.widths[width]);
221
+ chip.addEventListener('click', () => {
222
+ const now = node?.hideOn ?? [];
223
+ designer.setHideOn(id, now.includes(width) ? now.filter((x) => x !== width) : [...now, width]);
224
+ });
225
+ return chip;
226
+ });
227
+ const hiddenOnRow = onTab(el('div', { class: 'fd-prop fd-table-setting' }, el('span', { class: 'fd-prop-name' }, w.hiddenOn), el('div', { class: 'fd-inline-chips', role: 'group', 'aria-label': w.hiddenOn }, ...chips), el('p', { class: 'fd-properties-hint fd-set-hint' }, w.hiddenOnHint)), 'layout', 'Hidden on');
228
+ return {
229
+ rows: [toneRow, linesRow, buttonsRow, shapeRow, hiddenOnRow],
230
+ update(next) {
231
+ page = next;
232
+ const found = findField(page, id);
233
+ node = found?.node ?? null;
234
+ if (!node)
235
+ return;
236
+ const def = page.fields[node.field];
237
+ lines = def?.type === 'one2many' ? def : null;
238
+ // A value's tone is for a field that shows one value; a table has its lines'.
239
+ toneRow.hidden = !def || ['one2many', 'many2many', 'binary', 'image', 'html', 'matrix', 'properties', 'json'].includes(def.type);
240
+ linesRow.hidden = buttonsRow.hidden = shapeRow.hidden = !lines;
241
+ if (!toneRow.hidden) {
242
+ fieldTones.draw();
243
+ fieldBold.show(typeof node.bold === 'string' ? node.bold : undefined);
244
+ }
245
+ if (lines) {
246
+ rowTones.draw();
247
+ rowBold.show(typeof node.rowBold === 'string' ? node.rowBold : undefined);
248
+ lineDelete.show(typeof node.lineDelete === 'string' ? node.lineDelete : undefined);
249
+ const names = Object.keys(lines.fields).filter((name) => name !== lines.sequenceField && name !== lines.lineKinds?.field);
250
+ const key = JSON.stringify(names.map((name) => [name, lines.fields[name].label]));
251
+ if (column.dataset['drawn'] !== key) {
252
+ const was = column.value;
253
+ column.dataset['drawn'] = key;
254
+ column.replaceChildren(...names.map((name) => el('option', { value: name }, lines.fields[name].label)));
255
+ if (names.includes(was))
256
+ column.value = was;
257
+ }
258
+ drawColumn();
259
+ for (const place of buttonPlaces)
260
+ place.draw();
261
+ opens.value = node.lineOpens === 'record' ? 'record' : node.lineForm ? 'form' : '';
262
+ phone.value = node.cards ?? '';
263
+ fit.value = node.fit ?? '';
264
+ copy.checked = node.options?.['copy'] === true;
265
+ if (!focused(order))
266
+ order.value = orderText(node.order);
267
+ }
268
+ for (const chip of chips)
269
+ chip.setAttribute('aria-pressed', String(node.hideOn?.includes(chip.dataset['width']) ?? false));
270
+ },
271
+ };
272
+ }
273
+ //# sourceMappingURL=table-panel.mjs.map