@cssints/apg-specs 0.0.0-stage → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -2
  3. package/dist/apg/accordion.bridge.d.mts +35 -0
  4. package/dist/apg/accordion.bridge.mjs +326 -0
  5. package/dist/apg/accordion.model.json +8397 -0
  6. package/dist/apg/alert.bridge.d.mts +22 -0
  7. package/dist/apg/alert.bridge.mjs +86 -0
  8. package/dist/apg/alert.model.json +871 -0
  9. package/dist/apg/alertdialog.bridge.d.mts +21 -0
  10. package/dist/apg/alertdialog.bridge.mjs +221 -0
  11. package/dist/apg/alertdialog.model.json +5232 -0
  12. package/dist/apg/breadcrumb.bridge.d.mts +26 -0
  13. package/dist/apg/breadcrumb.bridge.mjs +120 -0
  14. package/dist/apg/breadcrumb.model.json +574 -0
  15. package/dist/apg/button.bridge.d.mts +35 -0
  16. package/dist/apg/button.bridge.mjs +208 -0
  17. package/dist/apg/button.model.json +5814 -0
  18. package/dist/apg/carousel.bridge.d.mts +44 -0
  19. package/dist/apg/carousel.bridge.mjs +262 -0
  20. package/dist/apg/carousel.model.json +8963 -0
  21. package/dist/apg/checkbox-group.bridge.d.mts +25 -0
  22. package/dist/apg/checkbox-group.bridge.mjs +276 -0
  23. package/dist/apg/checkbox-group.model.json +3863 -0
  24. package/dist/apg/checkbox.bridge.d.mts +34 -0
  25. package/dist/apg/checkbox.bridge.mjs +253 -0
  26. package/dist/apg/checkbox.model.json +3158 -0
  27. package/dist/apg/combobox-autocomplete.bridge.d.mts +14 -0
  28. package/dist/apg/combobox-autocomplete.bridge.mjs +326 -0
  29. package/dist/apg/combobox-autocomplete.model.json +11586 -0
  30. package/dist/apg/combobox-dialog.bridge.d.mts +17 -0
  31. package/dist/apg/combobox-dialog.bridge.mjs +250 -0
  32. package/dist/apg/combobox-dialog.model.json +8981 -0
  33. package/dist/apg/combobox-grid.bridge.d.mts +17 -0
  34. package/dist/apg/combobox-grid.bridge.mjs +227 -0
  35. package/dist/apg/combobox-grid.model.json +8554 -0
  36. package/dist/apg/combobox-select-only.bridge.d.mts +24 -0
  37. package/dist/apg/combobox-select-only.bridge.mjs +304 -0
  38. package/dist/apg/combobox-select-only.model.json +7846 -0
  39. package/dist/apg/combobox-tree.bridge.d.mts +17 -0
  40. package/dist/apg/combobox-tree.bridge.mjs +211 -0
  41. package/dist/apg/combobox-tree.model.json +9345 -0
  42. package/dist/apg/dialog-modal.bridge.d.mts +35 -0
  43. package/dist/apg/dialog-modal.bridge.mjs +186 -0
  44. package/dist/apg/dialog-modal.model.json +7580 -0
  45. package/dist/apg/disclosure.bridge.d.mts +25 -0
  46. package/dist/apg/disclosure.bridge.mjs +202 -0
  47. package/dist/apg/disclosure.model.json +4703 -0
  48. package/dist/apg/feed.bridge.d.mts +31 -0
  49. package/dist/apg/feed.bridge.mjs +246 -0
  50. package/dist/apg/feed.model.json +4523 -0
  51. package/dist/apg/grid-selection.bridge.d.mts +13 -0
  52. package/dist/apg/grid-selection.bridge.mjs +160 -0
  53. package/dist/apg/grid-selection.model.json +6974 -0
  54. package/dist/apg/grid-sort.bridge.d.mts +12 -0
  55. package/dist/apg/grid-sort.bridge.mjs +138 -0
  56. package/dist/apg/grid-sort.model.json +3799 -0
  57. package/dist/apg/grid.bridge.d.mts +54 -0
  58. package/dist/apg/grid.bridge.mjs +441 -0
  59. package/dist/apg/grid.model.json +3802 -0
  60. package/dist/apg/link.bridge.d.mts +24 -0
  61. package/dist/apg/link.bridge.mjs +126 -0
  62. package/dist/apg/link.model.json +694 -0
  63. package/dist/apg/listbox-multi.bridge.d.mts +10 -0
  64. package/dist/apg/listbox-multi.bridge.mjs +261 -0
  65. package/dist/apg/listbox-multi.model.json +10893 -0
  66. package/dist/apg/listbox-rearrangeable.bridge.d.mts +20 -0
  67. package/dist/apg/listbox-rearrangeable.bridge.mjs +237 -0
  68. package/dist/apg/listbox-rearrangeable.model.json +17592 -0
  69. package/dist/apg/listbox-shared.d.mts +58 -0
  70. package/dist/apg/listbox-shared.mjs +171 -0
  71. package/dist/apg/listbox-single.bridge.d.mts +10 -0
  72. package/dist/apg/listbox-single.bridge.mjs +196 -0
  73. package/dist/apg/listbox-single.model.json +8024 -0
  74. package/dist/apg/listbox-typeahead.bridge.d.mts +10 -0
  75. package/dist/apg/listbox-typeahead.bridge.mjs +153 -0
  76. package/dist/apg/listbox-typeahead.model.json +5615 -0
  77. package/dist/apg/menu-button.bridge.d.mts +29 -0
  78. package/dist/apg/menu-button.bridge.mjs +259 -0
  79. package/dist/apg/menu-button.model.json +5706 -0
  80. package/dist/apg/menu-checkable.bridge.d.mts +25 -0
  81. package/dist/apg/menu-checkable.bridge.mjs +226 -0
  82. package/dist/apg/menu-checkable.model.json +4277 -0
  83. package/dist/apg/menu-menubar.bridge.d.mts +27 -0
  84. package/dist/apg/menu-menubar.bridge.mjs +273 -0
  85. package/dist/apg/menu-menubar.model.json +9540 -0
  86. package/dist/apg/meter.bridge.d.mts +28 -0
  87. package/dist/apg/meter.bridge.mjs +159 -0
  88. package/dist/apg/meter.model.json +1185 -0
  89. package/dist/apg/player.bridge.d.mts +24 -0
  90. package/dist/apg/player.bridge.mjs +342 -0
  91. package/dist/apg/player.model.json +11013 -0
  92. package/dist/apg/radio.bridge.d.mts +35 -0
  93. package/dist/apg/radio.bridge.mjs +371 -0
  94. package/dist/apg/radio.model.json +5011 -0
  95. package/dist/apg/slider-multithumb.bridge.d.mts +34 -0
  96. package/dist/apg/slider-multithumb.bridge.mjs +365 -0
  97. package/dist/apg/slider-multithumb.model.json +5774 -0
  98. package/dist/apg/slider.bridge.d.mts +54 -0
  99. package/dist/apg/slider.bridge.mjs +359 -0
  100. package/dist/apg/slider.model.json +4881 -0
  101. package/dist/apg/spinbutton.bridge.d.mts +41 -0
  102. package/dist/apg/spinbutton.bridge.mjs +327 -0
  103. package/dist/apg/spinbutton.model.json +7571 -0
  104. package/dist/apg/switch.bridge.d.mts +30 -0
  105. package/dist/apg/switch.bridge.mjs +243 -0
  106. package/dist/apg/switch.model.json +3159 -0
  107. package/dist/apg/tabs.bridge.d.mts +41 -0
  108. package/dist/apg/tabs.bridge.mjs +294 -0
  109. package/dist/apg/tabs.model.json +7659 -0
  110. package/dist/apg/timeline.bridge.d.mts +36 -0
  111. package/dist/apg/timeline.bridge.mjs +265 -0
  112. package/dist/apg/timeline.model.json +6189 -0
  113. package/dist/apg/toolbar.bridge.d.mts +25 -0
  114. package/dist/apg/toolbar.bridge.mjs +307 -0
  115. package/dist/apg/toolbar.model.json +6616 -0
  116. package/dist/apg/tooltip.bridge.d.mts +36 -0
  117. package/dist/apg/tooltip.bridge.mjs +208 -0
  118. package/dist/apg/tooltip.model.json +8295 -0
  119. package/dist/apg/treegrid.bridge.d.mts +28 -0
  120. package/dist/apg/treegrid.bridge.mjs +311 -0
  121. package/dist/apg/treegrid.model.json +17358 -0
  122. package/dist/apg/treeview.bridge.d.mts +26 -0
  123. package/dist/apg/treeview.bridge.mjs +396 -0
  124. package/dist/apg/treeview.model.json +13745 -0
  125. package/dist/apg/windowsplitter.bridge.d.mts +36 -0
  126. package/dist/apg/windowsplitter.bridge.mjs +242 -0
  127. package/dist/apg/windowsplitter.model.json +6253 -0
  128. package/dist/canvas/camera.model.json +6568 -0
  129. package/dist/canvas/canvas.bridge.d.mts +190 -0
  130. package/dist/canvas/canvas.bridge.mjs +729 -0
  131. package/dist/canvas/pointer.model.json +17095 -0
  132. package/dist/scenario.d.mts +233 -0
  133. package/dist/scenario.mjs +313 -0
  134. package/package.json +57 -4
  135. package/scenarios/apg/README.md +221 -0
  136. package/scenarios/apg/accordion.base-ui.json +1005 -0
  137. package/scenarios/apg/accordion.react-aria.json +929 -0
  138. package/scenarios/apg/alert.base-ui.json +81 -0
  139. package/scenarios/apg/alert.react-aria.json +98 -0
  140. package/scenarios/apg/alertdialog.base-ui.json +331 -0
  141. package/scenarios/apg/alertdialog.react-aria.json +225 -0
  142. package/scenarios/apg/breadcrumb.react-aria.json +312 -0
  143. package/scenarios/apg/button.ariakit.json +136 -0
  144. package/scenarios/apg/button.base-ui.json +747 -0
  145. package/scenarios/apg/button.react-aria.json +443 -0
  146. package/scenarios/apg/carousel.apg.json +909 -0
  147. package/scenarios/apg/checkbox.ariakit.json +299 -0
  148. package/scenarios/apg/checkbox.base-ui.json +1126 -0
  149. package/scenarios/apg/checkbox.react-aria.json +518 -0
  150. package/scenarios/apg/combobox.ariakit.json +945 -0
  151. package/scenarios/apg/combobox.base-ui.json +2444 -0
  152. package/scenarios/apg/combobox.react-aria.json +845 -0
  153. package/scenarios/apg/dialog-modal.ariakit.json +1102 -0
  154. package/scenarios/apg/dialog-modal.base-ui.json +775 -0
  155. package/scenarios/apg/dialog-modal.react-aria.json +638 -0
  156. package/scenarios/apg/disclosure.apg.json +349 -0
  157. package/scenarios/apg/disclosure.ariakit.json +163 -0
  158. package/scenarios/apg/disclosure.base-ui.json +451 -0
  159. package/scenarios/apg/disclosure.react-aria.json +643 -0
  160. package/scenarios/apg/feed.apg.json +442 -0
  161. package/scenarios/apg/grid.ariakit.json +197 -0
  162. package/scenarios/apg/grid.base-ui.json +720 -0
  163. package/scenarios/apg/grid.react-aria.json +969 -0
  164. package/scenarios/apg/landmarks.ariakit.json +93 -0
  165. package/scenarios/apg/landmarks.react-aria.json +330 -0
  166. package/scenarios/apg/link.ariakit.json +83 -0
  167. package/scenarios/apg/link.base-ui.json +88 -0
  168. package/scenarios/apg/link.react-aria.json +186 -0
  169. package/scenarios/apg/listbox.ariakit.json +78 -0
  170. package/scenarios/apg/listbox.base-ui.json +163 -0
  171. package/scenarios/apg/listbox.react-aria.json +1118 -0
  172. package/scenarios/apg/menu-button.ariakit.json +924 -0
  173. package/scenarios/apg/menu-button.base-ui.json +1155 -0
  174. package/scenarios/apg/menu-button.react-aria.json +1080 -0
  175. package/scenarios/apg/menubar.ariakit.json +758 -0
  176. package/scenarios/apg/menubar.base-ui.json +673 -0
  177. package/scenarios/apg/meter.base-ui.json +243 -0
  178. package/scenarios/apg/meter.react-aria.json +201 -0
  179. package/scenarios/apg/radio.ariakit.json +459 -0
  180. package/scenarios/apg/radio.base-ui.json +581 -0
  181. package/scenarios/apg/radio.react-aria.json +576 -0
  182. package/scenarios/apg/slider-multithumb.base-ui.json +316 -0
  183. package/scenarios/apg/slider-multithumb.react-aria.json +363 -0
  184. package/scenarios/apg/slider.base-ui.json +544 -0
  185. package/scenarios/apg/slider.react-aria.json +456 -0
  186. package/scenarios/apg/spinbutton.base-ui.json +1688 -0
  187. package/scenarios/apg/spinbutton.react-aria.json +426 -0
  188. package/scenarios/apg/switch.base-ui.json +456 -0
  189. package/scenarios/apg/switch.react-aria.json +303 -0
  190. package/scenarios/apg/table.ariakit.json +65 -0
  191. package/scenarios/apg/table.react-aria.json +221 -0
  192. package/scenarios/apg/tabs.ariakit.json +329 -0
  193. package/scenarios/apg/tabs.base-ui.json +875 -0
  194. package/scenarios/apg/tabs.react-aria.json +644 -0
  195. package/scenarios/apg/toolbar.ariakit.json +595 -0
  196. package/scenarios/apg/toolbar.base-ui.json +1189 -0
  197. package/scenarios/apg/toolbar.react-aria.json +383 -0
  198. package/scenarios/apg/tooltip.ariakit.json +441 -0
  199. package/scenarios/apg/tooltip.base-ui.json +411 -0
  200. package/scenarios/apg/tooltip.react-aria.json +454 -0
  201. package/scenarios/apg/treegrid.apg.json +2558 -0
  202. package/scenarios/apg/treegrid.react-aria.json +5094 -0
  203. package/scenarios/apg/treeview.apg.json +928 -0
  204. package/scenarios/apg/windowsplitter.apg.json +557 -0
  205. package/scenarios/canvas/README.md +69 -0
  206. package/scenarios/canvas/camera.contract.json +237 -0
  207. package/scenarios/canvas/camera.excalidraw.json +57 -0
  208. package/scenarios/canvas/marquee.excalidraw.json +122 -0
  209. package/scenarios/canvas/pan.excalidraw.json +46 -0
  210. package/scenarios/canvas/pointer.contract.json +528 -0
  211. package/scenarios/parts.json +291 -0
  212. package/shared/aria.qnt +186 -0
  213. package/shared/details-group.qnt +50 -0
  214. package/shared/focusgroup.qnt +152 -0
  215. package/shared/invokers.qnt +81 -0
  216. package/shared/popover.qnt +71 -0
  217. package/specs/apg/STATIC.md +103 -0
  218. package/specs/apg/accordion.qnt +578 -0
  219. package/specs/apg/alert.qnt +131 -0
  220. package/specs/apg/alertdialog.qnt +455 -0
  221. package/specs/apg/breadcrumb.qnt +88 -0
  222. package/specs/apg/button.qnt +445 -0
  223. package/specs/apg/carousel.qnt +732 -0
  224. package/specs/apg/checkbox-group.qnt +388 -0
  225. package/specs/apg/checkbox.qnt +394 -0
  226. package/specs/apg/combobox-autocomplete.qnt +764 -0
  227. package/specs/apg/combobox-dialog.qnt +627 -0
  228. package/specs/apg/combobox-grid.qnt +632 -0
  229. package/specs/apg/combobox-select-only.qnt +626 -0
  230. package/specs/apg/combobox-tree.qnt +633 -0
  231. package/specs/apg/dialog-modal.qnt +499 -0
  232. package/specs/apg/disclosure.qnt +309 -0
  233. package/specs/apg/feed.qnt +485 -0
  234. package/specs/apg/grid-selection.qnt +512 -0
  235. package/specs/apg/grid-sort.qnt +330 -0
  236. package/specs/apg/grid.qnt +360 -0
  237. package/specs/apg/link.qnt +119 -0
  238. package/specs/apg/listbox-multi.qnt +799 -0
  239. package/specs/apg/listbox-rearrangeable.qnt +801 -0
  240. package/specs/apg/listbox-single.qnt +511 -0
  241. package/specs/apg/listbox-typeahead.qnt +396 -0
  242. package/specs/apg/menu-button.qnt +363 -0
  243. package/specs/apg/menu-checkable.qnt +304 -0
  244. package/specs/apg/menu-menubar.qnt +531 -0
  245. package/specs/apg/meter.qnt +129 -0
  246. package/specs/apg/player.qnt +1081 -0
  247. package/specs/apg/radio.qnt +394 -0
  248. package/specs/apg/slider-multithumb.qnt +441 -0
  249. package/specs/apg/slider.qnt +396 -0
  250. package/specs/apg/spinbutton.qnt +494 -0
  251. package/specs/apg/switch.qnt +389 -0
  252. package/specs/apg/tabs.qnt +412 -0
  253. package/specs/apg/timeline.qnt +612 -0
  254. package/specs/apg/toolbar.qnt +364 -0
  255. package/specs/apg/tooltip.qnt +553 -0
  256. package/specs/apg/treegrid.qnt +983 -0
  257. package/specs/apg/treeview.qnt +1004 -0
  258. package/specs/apg/windowsplitter.qnt +487 -0
  259. package/specs/canvas/camera.qnt +407 -0
  260. package/specs/canvas/pointer.qnt +841 -0
@@ -0,0 +1,3802 @@
1
+ {
2
+ "generatedFrom": "../../specs/apg/grid.qnt",
3
+ "specHash": "5349d3004355c984c021894b1290a347d5a53c34b9b759792688965f14440216",
4
+ "module": "apg_grid",
5
+ "vars": [
6
+ {
7
+ "name": "row",
8
+ "type": "int"
9
+ },
10
+ {
11
+ "name": "col",
12
+ "type": "int"
13
+ },
14
+ {
15
+ "name": "hasFocus",
16
+ "type": "bool"
17
+ },
18
+ {
19
+ "name": "mode",
20
+ "type": "str"
21
+ },
22
+ {
23
+ "name": "dirty",
24
+ "type": "bool"
25
+ },
26
+ {
27
+ "name": "lastEdit",
28
+ "type": "str"
29
+ },
30
+ {
31
+ "name": "gridKind",
32
+ "type": "str"
33
+ },
34
+ {
35
+ "name": "wrapCols",
36
+ "type": "bool"
37
+ },
38
+ {
39
+ "name": "wrapRows",
40
+ "type": "bool"
41
+ },
42
+ {
43
+ "name": "focusTarget",
44
+ "type": "str"
45
+ },
46
+ {
47
+ "name": "gridReadonly",
48
+ "type": "bool"
49
+ }
50
+ ],
51
+ "defs": {
52
+ "ROWS": {
53
+ "kind": "function",
54
+ "params": [],
55
+ "body": {
56
+ "kind": "int",
57
+ "value": "4"
58
+ }
59
+ },
60
+ "COLS": {
61
+ "kind": "function",
62
+ "params": [],
63
+ "body": {
64
+ "kind": "int",
65
+ "value": "3"
66
+ }
67
+ },
68
+ "PAGE": {
69
+ "kind": "function",
70
+ "params": [],
71
+ "body": {
72
+ "kind": "int",
73
+ "value": "2"
74
+ }
75
+ },
76
+ "LAST_ROW": {
77
+ "kind": "function",
78
+ "params": [],
79
+ "body": {
80
+ "kind": "app",
81
+ "opcode": "isub",
82
+ "args": [
83
+ {
84
+ "kind": "name",
85
+ "name": "ROWS"
86
+ },
87
+ {
88
+ "kind": "int",
89
+ "value": "1"
90
+ }
91
+ ]
92
+ }
93
+ },
94
+ "LAST_COL": {
95
+ "kind": "function",
96
+ "params": [],
97
+ "body": {
98
+ "kind": "app",
99
+ "opcode": "isub",
100
+ "args": [
101
+ {
102
+ "kind": "name",
103
+ "name": "COLS"
104
+ },
105
+ {
106
+ "kind": "int",
107
+ "value": "1"
108
+ }
109
+ ]
110
+ }
111
+ },
112
+ "CELLS": {
113
+ "kind": "function",
114
+ "params": [],
115
+ "body": {
116
+ "kind": "app",
117
+ "opcode": "imul",
118
+ "args": [
119
+ {
120
+ "kind": "name",
121
+ "name": "ROWS"
122
+ },
123
+ {
124
+ "kind": "name",
125
+ "name": "COLS"
126
+ }
127
+ ]
128
+ }
129
+ },
130
+ "colReadonly": {
131
+ "kind": "function",
132
+ "params": [
133
+ "c"
134
+ ],
135
+ "body": {
136
+ "kind": "app",
137
+ "opcode": "eq",
138
+ "args": [
139
+ {
140
+ "kind": "name",
141
+ "name": "c"
142
+ },
143
+ {
144
+ "kind": "name",
145
+ "name": "LAST_COL"
146
+ }
147
+ ]
148
+ }
149
+ },
150
+ "cur": {
151
+ "kind": "function",
152
+ "params": [],
153
+ "body": {
154
+ "kind": "app",
155
+ "opcode": "iadd",
156
+ "args": [
157
+ {
158
+ "kind": "app",
159
+ "opcode": "imul",
160
+ "args": [
161
+ {
162
+ "kind": "name",
163
+ "name": "row"
164
+ },
165
+ {
166
+ "kind": "name",
167
+ "name": "COLS"
168
+ }
169
+ ]
170
+ },
171
+ {
172
+ "kind": "name",
173
+ "name": "col"
174
+ }
175
+ ]
176
+ }
177
+ },
178
+ "navigating": {
179
+ "kind": "function",
180
+ "params": [],
181
+ "body": {
182
+ "kind": "app",
183
+ "opcode": "and",
184
+ "args": [
185
+ {
186
+ "kind": "name",
187
+ "name": "hasFocus"
188
+ },
189
+ {
190
+ "kind": "app",
191
+ "opcode": "eq",
192
+ "args": [
193
+ {
194
+ "kind": "name",
195
+ "name": "mode"
196
+ },
197
+ {
198
+ "kind": "str",
199
+ "value": "navigate"
200
+ }
201
+ ]
202
+ }
203
+ ]
204
+ }
205
+ },
206
+ "editing": {
207
+ "kind": "function",
208
+ "params": [],
209
+ "body": {
210
+ "kind": "app",
211
+ "opcode": "eq",
212
+ "args": [
213
+ {
214
+ "kind": "name",
215
+ "name": "mode"
216
+ },
217
+ {
218
+ "kind": "str",
219
+ "value": "edit"
220
+ }
221
+ ]
222
+ }
223
+ },
224
+ "canEdit": {
225
+ "kind": "function",
226
+ "params": [],
227
+ "body": {
228
+ "kind": "app",
229
+ "opcode": "and",
230
+ "args": [
231
+ {
232
+ "kind": "app",
233
+ "opcode": "not",
234
+ "args": [
235
+ {
236
+ "kind": "name",
237
+ "name": "gridReadonly"
238
+ }
239
+ ]
240
+ },
241
+ {
242
+ "kind": "app",
243
+ "opcode": "not",
244
+ "args": [
245
+ {
246
+ "kind": "app",
247
+ "opcode": "colReadonly",
248
+ "args": [
249
+ {
250
+ "kind": "name",
251
+ "name": "col"
252
+ }
253
+ ]
254
+ }
255
+ ]
256
+ }
257
+ ]
258
+ }
259
+ },
260
+ "rightIdx": {
261
+ "kind": "function",
262
+ "params": [],
263
+ "body": {
264
+ "kind": "app",
265
+ "opcode": "ite",
266
+ "args": [
267
+ {
268
+ "kind": "app",
269
+ "opcode": "ilt",
270
+ "args": [
271
+ {
272
+ "kind": "name",
273
+ "name": "col"
274
+ },
275
+ {
276
+ "kind": "name",
277
+ "name": "LAST_COL"
278
+ }
279
+ ]
280
+ },
281
+ {
282
+ "kind": "app",
283
+ "opcode": "iadd",
284
+ "args": [
285
+ {
286
+ "kind": "name",
287
+ "name": "cur"
288
+ },
289
+ {
290
+ "kind": "int",
291
+ "value": "1"
292
+ }
293
+ ]
294
+ },
295
+ {
296
+ "kind": "app",
297
+ "opcode": "ite",
298
+ "args": [
299
+ {
300
+ "kind": "app",
301
+ "opcode": "and",
302
+ "args": [
303
+ {
304
+ "kind": "name",
305
+ "name": "wrapCols"
306
+ },
307
+ {
308
+ "kind": "app",
309
+ "opcode": "ilt",
310
+ "args": [
311
+ {
312
+ "kind": "name",
313
+ "name": "row"
314
+ },
315
+ {
316
+ "kind": "name",
317
+ "name": "LAST_ROW"
318
+ }
319
+ ]
320
+ }
321
+ ]
322
+ },
323
+ {
324
+ "kind": "app",
325
+ "opcode": "iadd",
326
+ "args": [
327
+ {
328
+ "kind": "name",
329
+ "name": "cur"
330
+ },
331
+ {
332
+ "kind": "int",
333
+ "value": "1"
334
+ }
335
+ ]
336
+ },
337
+ {
338
+ "kind": "name",
339
+ "name": "cur"
340
+ }
341
+ ]
342
+ }
343
+ ]
344
+ }
345
+ },
346
+ "leftIdx": {
347
+ "kind": "function",
348
+ "params": [],
349
+ "body": {
350
+ "kind": "app",
351
+ "opcode": "ite",
352
+ "args": [
353
+ {
354
+ "kind": "app",
355
+ "opcode": "igt",
356
+ "args": [
357
+ {
358
+ "kind": "name",
359
+ "name": "col"
360
+ },
361
+ {
362
+ "kind": "int",
363
+ "value": "0"
364
+ }
365
+ ]
366
+ },
367
+ {
368
+ "kind": "app",
369
+ "opcode": "isub",
370
+ "args": [
371
+ {
372
+ "kind": "name",
373
+ "name": "cur"
374
+ },
375
+ {
376
+ "kind": "int",
377
+ "value": "1"
378
+ }
379
+ ]
380
+ },
381
+ {
382
+ "kind": "app",
383
+ "opcode": "ite",
384
+ "args": [
385
+ {
386
+ "kind": "app",
387
+ "opcode": "and",
388
+ "args": [
389
+ {
390
+ "kind": "name",
391
+ "name": "wrapCols"
392
+ },
393
+ {
394
+ "kind": "app",
395
+ "opcode": "igt",
396
+ "args": [
397
+ {
398
+ "kind": "name",
399
+ "name": "row"
400
+ },
401
+ {
402
+ "kind": "int",
403
+ "value": "0"
404
+ }
405
+ ]
406
+ }
407
+ ]
408
+ },
409
+ {
410
+ "kind": "app",
411
+ "opcode": "isub",
412
+ "args": [
413
+ {
414
+ "kind": "name",
415
+ "name": "cur"
416
+ },
417
+ {
418
+ "kind": "int",
419
+ "value": "1"
420
+ }
421
+ ]
422
+ },
423
+ {
424
+ "kind": "name",
425
+ "name": "cur"
426
+ }
427
+ ]
428
+ }
429
+ ]
430
+ }
431
+ },
432
+ "downIdx": {
433
+ "kind": "function",
434
+ "params": [],
435
+ "body": {
436
+ "kind": "app",
437
+ "opcode": "ite",
438
+ "args": [
439
+ {
440
+ "kind": "app",
441
+ "opcode": "ilt",
442
+ "args": [
443
+ {
444
+ "kind": "name",
445
+ "name": "row"
446
+ },
447
+ {
448
+ "kind": "name",
449
+ "name": "LAST_ROW"
450
+ }
451
+ ]
452
+ },
453
+ {
454
+ "kind": "app",
455
+ "opcode": "iadd",
456
+ "args": [
457
+ {
458
+ "kind": "name",
459
+ "name": "cur"
460
+ },
461
+ {
462
+ "kind": "name",
463
+ "name": "COLS"
464
+ }
465
+ ]
466
+ },
467
+ {
468
+ "kind": "app",
469
+ "opcode": "ite",
470
+ "args": [
471
+ {
472
+ "kind": "app",
473
+ "opcode": "and",
474
+ "args": [
475
+ {
476
+ "kind": "name",
477
+ "name": "wrapRows"
478
+ },
479
+ {
480
+ "kind": "app",
481
+ "opcode": "ilt",
482
+ "args": [
483
+ {
484
+ "kind": "name",
485
+ "name": "col"
486
+ },
487
+ {
488
+ "kind": "name",
489
+ "name": "LAST_COL"
490
+ }
491
+ ]
492
+ }
493
+ ]
494
+ },
495
+ {
496
+ "kind": "app",
497
+ "opcode": "iadd",
498
+ "args": [
499
+ {
500
+ "kind": "name",
501
+ "name": "col"
502
+ },
503
+ {
504
+ "kind": "int",
505
+ "value": "1"
506
+ }
507
+ ]
508
+ },
509
+ {
510
+ "kind": "name",
511
+ "name": "cur"
512
+ }
513
+ ]
514
+ }
515
+ ]
516
+ }
517
+ },
518
+ "upIdx": {
519
+ "kind": "function",
520
+ "params": [],
521
+ "body": {
522
+ "kind": "app",
523
+ "opcode": "ite",
524
+ "args": [
525
+ {
526
+ "kind": "app",
527
+ "opcode": "igt",
528
+ "args": [
529
+ {
530
+ "kind": "name",
531
+ "name": "row"
532
+ },
533
+ {
534
+ "kind": "int",
535
+ "value": "0"
536
+ }
537
+ ]
538
+ },
539
+ {
540
+ "kind": "app",
541
+ "opcode": "isub",
542
+ "args": [
543
+ {
544
+ "kind": "name",
545
+ "name": "cur"
546
+ },
547
+ {
548
+ "kind": "name",
549
+ "name": "COLS"
550
+ }
551
+ ]
552
+ },
553
+ {
554
+ "kind": "app",
555
+ "opcode": "ite",
556
+ "args": [
557
+ {
558
+ "kind": "app",
559
+ "opcode": "and",
560
+ "args": [
561
+ {
562
+ "kind": "name",
563
+ "name": "wrapRows"
564
+ },
565
+ {
566
+ "kind": "app",
567
+ "opcode": "igt",
568
+ "args": [
569
+ {
570
+ "kind": "name",
571
+ "name": "col"
572
+ },
573
+ {
574
+ "kind": "int",
575
+ "value": "0"
576
+ }
577
+ ]
578
+ }
579
+ ]
580
+ },
581
+ {
582
+ "kind": "app",
583
+ "opcode": "isub",
584
+ "args": [
585
+ {
586
+ "kind": "app",
587
+ "opcode": "iadd",
588
+ "args": [
589
+ {
590
+ "kind": "app",
591
+ "opcode": "imul",
592
+ "args": [
593
+ {
594
+ "kind": "name",
595
+ "name": "LAST_ROW"
596
+ },
597
+ {
598
+ "kind": "name",
599
+ "name": "COLS"
600
+ }
601
+ ]
602
+ },
603
+ {
604
+ "kind": "name",
605
+ "name": "col"
606
+ }
607
+ ]
608
+ },
609
+ {
610
+ "kind": "int",
611
+ "value": "1"
612
+ }
613
+ ]
614
+ },
615
+ {
616
+ "kind": "name",
617
+ "name": "cur"
618
+ }
619
+ ]
620
+ }
621
+ ]
622
+ }
623
+ },
624
+ "pageDownIdx": {
625
+ "kind": "function",
626
+ "params": [],
627
+ "body": {
628
+ "kind": "app",
629
+ "opcode": "ite",
630
+ "args": [
631
+ {
632
+ "kind": "app",
633
+ "opcode": "igt",
634
+ "args": [
635
+ {
636
+ "kind": "app",
637
+ "opcode": "iadd",
638
+ "args": [
639
+ {
640
+ "kind": "name",
641
+ "name": "row"
642
+ },
643
+ {
644
+ "kind": "name",
645
+ "name": "PAGE"
646
+ }
647
+ ]
648
+ },
649
+ {
650
+ "kind": "name",
651
+ "name": "LAST_ROW"
652
+ }
653
+ ]
654
+ },
655
+ {
656
+ "kind": "app",
657
+ "opcode": "iadd",
658
+ "args": [
659
+ {
660
+ "kind": "app",
661
+ "opcode": "imul",
662
+ "args": [
663
+ {
664
+ "kind": "name",
665
+ "name": "LAST_ROW"
666
+ },
667
+ {
668
+ "kind": "name",
669
+ "name": "COLS"
670
+ }
671
+ ]
672
+ },
673
+ {
674
+ "kind": "name",
675
+ "name": "col"
676
+ }
677
+ ]
678
+ },
679
+ {
680
+ "kind": "app",
681
+ "opcode": "iadd",
682
+ "args": [
683
+ {
684
+ "kind": "name",
685
+ "name": "cur"
686
+ },
687
+ {
688
+ "kind": "app",
689
+ "opcode": "imul",
690
+ "args": [
691
+ {
692
+ "kind": "name",
693
+ "name": "PAGE"
694
+ },
695
+ {
696
+ "kind": "name",
697
+ "name": "COLS"
698
+ }
699
+ ]
700
+ }
701
+ ]
702
+ }
703
+ ]
704
+ }
705
+ },
706
+ "pageUpIdx": {
707
+ "kind": "function",
708
+ "params": [],
709
+ "body": {
710
+ "kind": "app",
711
+ "opcode": "ite",
712
+ "args": [
713
+ {
714
+ "kind": "app",
715
+ "opcode": "ilt",
716
+ "args": [
717
+ {
718
+ "kind": "name",
719
+ "name": "row"
720
+ },
721
+ {
722
+ "kind": "name",
723
+ "name": "PAGE"
724
+ }
725
+ ]
726
+ },
727
+ {
728
+ "kind": "name",
729
+ "name": "col"
730
+ },
731
+ {
732
+ "kind": "app",
733
+ "opcode": "isub",
734
+ "args": [
735
+ {
736
+ "kind": "name",
737
+ "name": "cur"
738
+ },
739
+ {
740
+ "kind": "app",
741
+ "opcode": "imul",
742
+ "args": [
743
+ {
744
+ "kind": "name",
745
+ "name": "PAGE"
746
+ },
747
+ {
748
+ "kind": "name",
749
+ "name": "COLS"
750
+ }
751
+ ]
752
+ }
753
+ ]
754
+ }
755
+ ]
756
+ }
757
+ },
758
+ "keyTarget": {
759
+ "kind": "function",
760
+ "params": [
761
+ "k"
762
+ ],
763
+ "body": {
764
+ "kind": "app",
765
+ "opcode": "ite",
766
+ "args": [
767
+ {
768
+ "kind": "app",
769
+ "opcode": "eq",
770
+ "args": [
771
+ {
772
+ "kind": "name",
773
+ "name": "k"
774
+ },
775
+ {
776
+ "kind": "str",
777
+ "value": "ArrowRight"
778
+ }
779
+ ]
780
+ },
781
+ {
782
+ "kind": "name",
783
+ "name": "rightIdx"
784
+ },
785
+ {
786
+ "kind": "app",
787
+ "opcode": "ite",
788
+ "args": [
789
+ {
790
+ "kind": "app",
791
+ "opcode": "eq",
792
+ "args": [
793
+ {
794
+ "kind": "name",
795
+ "name": "k"
796
+ },
797
+ {
798
+ "kind": "str",
799
+ "value": "ArrowLeft"
800
+ }
801
+ ]
802
+ },
803
+ {
804
+ "kind": "name",
805
+ "name": "leftIdx"
806
+ },
807
+ {
808
+ "kind": "app",
809
+ "opcode": "ite",
810
+ "args": [
811
+ {
812
+ "kind": "app",
813
+ "opcode": "eq",
814
+ "args": [
815
+ {
816
+ "kind": "name",
817
+ "name": "k"
818
+ },
819
+ {
820
+ "kind": "str",
821
+ "value": "ArrowDown"
822
+ }
823
+ ]
824
+ },
825
+ {
826
+ "kind": "name",
827
+ "name": "downIdx"
828
+ },
829
+ {
830
+ "kind": "app",
831
+ "opcode": "ite",
832
+ "args": [
833
+ {
834
+ "kind": "app",
835
+ "opcode": "eq",
836
+ "args": [
837
+ {
838
+ "kind": "name",
839
+ "name": "k"
840
+ },
841
+ {
842
+ "kind": "str",
843
+ "value": "ArrowUp"
844
+ }
845
+ ]
846
+ },
847
+ {
848
+ "kind": "name",
849
+ "name": "upIdx"
850
+ },
851
+ {
852
+ "kind": "app",
853
+ "opcode": "ite",
854
+ "args": [
855
+ {
856
+ "kind": "app",
857
+ "opcode": "eq",
858
+ "args": [
859
+ {
860
+ "kind": "name",
861
+ "name": "k"
862
+ },
863
+ {
864
+ "kind": "str",
865
+ "value": "PageDown"
866
+ }
867
+ ]
868
+ },
869
+ {
870
+ "kind": "name",
871
+ "name": "pageDownIdx"
872
+ },
873
+ {
874
+ "kind": "app",
875
+ "opcode": "ite",
876
+ "args": [
877
+ {
878
+ "kind": "app",
879
+ "opcode": "eq",
880
+ "args": [
881
+ {
882
+ "kind": "name",
883
+ "name": "k"
884
+ },
885
+ {
886
+ "kind": "str",
887
+ "value": "PageUp"
888
+ }
889
+ ]
890
+ },
891
+ {
892
+ "kind": "name",
893
+ "name": "pageUpIdx"
894
+ },
895
+ {
896
+ "kind": "app",
897
+ "opcode": "ite",
898
+ "args": [
899
+ {
900
+ "kind": "app",
901
+ "opcode": "eq",
902
+ "args": [
903
+ {
904
+ "kind": "name",
905
+ "name": "k"
906
+ },
907
+ {
908
+ "kind": "str",
909
+ "value": "Home"
910
+ }
911
+ ]
912
+ },
913
+ {
914
+ "kind": "app",
915
+ "opcode": "imul",
916
+ "args": [
917
+ {
918
+ "kind": "name",
919
+ "name": "row"
920
+ },
921
+ {
922
+ "kind": "name",
923
+ "name": "COLS"
924
+ }
925
+ ]
926
+ },
927
+ {
928
+ "kind": "app",
929
+ "opcode": "ite",
930
+ "args": [
931
+ {
932
+ "kind": "app",
933
+ "opcode": "eq",
934
+ "args": [
935
+ {
936
+ "kind": "name",
937
+ "name": "k"
938
+ },
939
+ {
940
+ "kind": "str",
941
+ "value": "End"
942
+ }
943
+ ]
944
+ },
945
+ {
946
+ "kind": "app",
947
+ "opcode": "iadd",
948
+ "args": [
949
+ {
950
+ "kind": "app",
951
+ "opcode": "imul",
952
+ "args": [
953
+ {
954
+ "kind": "name",
955
+ "name": "row"
956
+ },
957
+ {
958
+ "kind": "name",
959
+ "name": "COLS"
960
+ }
961
+ ]
962
+ },
963
+ {
964
+ "kind": "name",
965
+ "name": "LAST_COL"
966
+ }
967
+ ]
968
+ },
969
+ {
970
+ "kind": "app",
971
+ "opcode": "ite",
972
+ "args": [
973
+ {
974
+ "kind": "app",
975
+ "opcode": "eq",
976
+ "args": [
977
+ {
978
+ "kind": "name",
979
+ "name": "k"
980
+ },
981
+ {
982
+ "kind": "str",
983
+ "value": "Control+Home"
984
+ }
985
+ ]
986
+ },
987
+ {
988
+ "kind": "int",
989
+ "value": "0"
990
+ },
991
+ {
992
+ "kind": "app",
993
+ "opcode": "ite",
994
+ "args": [
995
+ {
996
+ "kind": "app",
997
+ "opcode": "eq",
998
+ "args": [
999
+ {
1000
+ "kind": "name",
1001
+ "name": "k"
1002
+ },
1003
+ {
1004
+ "kind": "str",
1005
+ "value": "Control+End"
1006
+ }
1007
+ ]
1008
+ },
1009
+ {
1010
+ "kind": "app",
1011
+ "opcode": "isub",
1012
+ "args": [
1013
+ {
1014
+ "kind": "name",
1015
+ "name": "CELLS"
1016
+ },
1017
+ {
1018
+ "kind": "int",
1019
+ "value": "1"
1020
+ }
1021
+ ]
1022
+ },
1023
+ {
1024
+ "kind": "name",
1025
+ "name": "cur"
1026
+ }
1027
+ ]
1028
+ }
1029
+ ]
1030
+ }
1031
+ ]
1032
+ }
1033
+ ]
1034
+ }
1035
+ ]
1036
+ }
1037
+ ]
1038
+ }
1039
+ ]
1040
+ }
1041
+ ]
1042
+ }
1043
+ ]
1044
+ }
1045
+ ]
1046
+ }
1047
+ },
1048
+ "startsEdit": {
1049
+ "kind": "function",
1050
+ "params": [
1051
+ "k"
1052
+ ],
1053
+ "body": {
1054
+ "kind": "app",
1055
+ "opcode": "and",
1056
+ "args": [
1057
+ {
1058
+ "kind": "name",
1059
+ "name": "navigating"
1060
+ },
1061
+ {
1062
+ "kind": "name",
1063
+ "name": "canEdit"
1064
+ },
1065
+ {
1066
+ "kind": "app",
1067
+ "opcode": "or",
1068
+ "args": [
1069
+ {
1070
+ "kind": "app",
1071
+ "opcode": "eq",
1072
+ "args": [
1073
+ {
1074
+ "kind": "name",
1075
+ "name": "k"
1076
+ },
1077
+ {
1078
+ "kind": "str",
1079
+ "value": "Enter"
1080
+ }
1081
+ ]
1082
+ },
1083
+ {
1084
+ "kind": "app",
1085
+ "opcode": "eq",
1086
+ "args": [
1087
+ {
1088
+ "kind": "name",
1089
+ "name": "k"
1090
+ },
1091
+ {
1092
+ "kind": "str",
1093
+ "value": "F2"
1094
+ }
1095
+ ]
1096
+ },
1097
+ {
1098
+ "kind": "app",
1099
+ "opcode": "eq",
1100
+ "args": [
1101
+ {
1102
+ "kind": "name",
1103
+ "name": "k"
1104
+ },
1105
+ {
1106
+ "kind": "str",
1107
+ "value": "a"
1108
+ }
1109
+ ]
1110
+ }
1111
+ ]
1112
+ }
1113
+ ]
1114
+ }
1115
+ },
1116
+ "commitsEdit": {
1117
+ "kind": "function",
1118
+ "params": [
1119
+ "k"
1120
+ ],
1121
+ "body": {
1122
+ "kind": "app",
1123
+ "opcode": "and",
1124
+ "args": [
1125
+ {
1126
+ "kind": "name",
1127
+ "name": "editing"
1128
+ },
1129
+ {
1130
+ "kind": "app",
1131
+ "opcode": "or",
1132
+ "args": [
1133
+ {
1134
+ "kind": "app",
1135
+ "opcode": "eq",
1136
+ "args": [
1137
+ {
1138
+ "kind": "name",
1139
+ "name": "k"
1140
+ },
1141
+ {
1142
+ "kind": "str",
1143
+ "value": "Enter"
1144
+ }
1145
+ ]
1146
+ },
1147
+ {
1148
+ "kind": "app",
1149
+ "opcode": "eq",
1150
+ "args": [
1151
+ {
1152
+ "kind": "name",
1153
+ "name": "k"
1154
+ },
1155
+ {
1156
+ "kind": "str",
1157
+ "value": "F2"
1158
+ }
1159
+ ]
1160
+ }
1161
+ ]
1162
+ }
1163
+ ]
1164
+ }
1165
+ },
1166
+ "cancelsEdit": {
1167
+ "kind": "function",
1168
+ "params": [
1169
+ "k"
1170
+ ],
1171
+ "body": {
1172
+ "kind": "app",
1173
+ "opcode": "and",
1174
+ "args": [
1175
+ {
1176
+ "kind": "name",
1177
+ "name": "editing"
1178
+ },
1179
+ {
1180
+ "kind": "app",
1181
+ "opcode": "eq",
1182
+ "args": [
1183
+ {
1184
+ "kind": "name",
1185
+ "name": "k"
1186
+ },
1187
+ {
1188
+ "kind": "str",
1189
+ "value": "Escape"
1190
+ }
1191
+ ]
1192
+ }
1193
+ ]
1194
+ }
1195
+ },
1196
+ "endsEdit": {
1197
+ "kind": "function",
1198
+ "params": [
1199
+ "k"
1200
+ ],
1201
+ "body": {
1202
+ "kind": "app",
1203
+ "opcode": "or",
1204
+ "args": [
1205
+ {
1206
+ "kind": "app",
1207
+ "opcode": "commitsEdit",
1208
+ "args": [
1209
+ {
1210
+ "kind": "name",
1211
+ "name": "k"
1212
+ }
1213
+ ]
1214
+ },
1215
+ {
1216
+ "kind": "app",
1217
+ "opcode": "cancelsEdit",
1218
+ "args": [
1219
+ {
1220
+ "kind": "name",
1221
+ "name": "k"
1222
+ }
1223
+ ]
1224
+ }
1225
+ ]
1226
+ }
1227
+ },
1228
+ "leavesGrid": {
1229
+ "kind": "function",
1230
+ "params": [
1231
+ "k"
1232
+ ],
1233
+ "body": {
1234
+ "kind": "app",
1235
+ "opcode": "and",
1236
+ "args": [
1237
+ {
1238
+ "kind": "name",
1239
+ "name": "navigating"
1240
+ },
1241
+ {
1242
+ "kind": "app",
1243
+ "opcode": "or",
1244
+ "args": [
1245
+ {
1246
+ "kind": "app",
1247
+ "opcode": "eq",
1248
+ "args": [
1249
+ {
1250
+ "kind": "name",
1251
+ "name": "k"
1252
+ },
1253
+ {
1254
+ "kind": "str",
1255
+ "value": "Tab"
1256
+ }
1257
+ ]
1258
+ },
1259
+ {
1260
+ "kind": "app",
1261
+ "opcode": "eq",
1262
+ "args": [
1263
+ {
1264
+ "kind": "name",
1265
+ "name": "k"
1266
+ },
1267
+ {
1268
+ "kind": "str",
1269
+ "value": "Shift+Tab"
1270
+ }
1271
+ ]
1272
+ }
1273
+ ]
1274
+ }
1275
+ ]
1276
+ }
1277
+ },
1278
+ "ARIA_ROWCOUNT": {
1279
+ "kind": "function",
1280
+ "params": [],
1281
+ "body": {
1282
+ "kind": "name",
1283
+ "name": "ROWS"
1284
+ }
1285
+ },
1286
+ "ARIA_COLCOUNT": {
1287
+ "kind": "function",
1288
+ "params": [],
1289
+ "body": {
1290
+ "kind": "name",
1291
+ "name": "COLS"
1292
+ }
1293
+ },
1294
+ "ariaRowindex": {
1295
+ "kind": "function",
1296
+ "params": [
1297
+ "r"
1298
+ ],
1299
+ "body": {
1300
+ "kind": "app",
1301
+ "opcode": "iadd",
1302
+ "args": [
1303
+ {
1304
+ "kind": "name",
1305
+ "name": "r"
1306
+ },
1307
+ {
1308
+ "kind": "int",
1309
+ "value": "1"
1310
+ }
1311
+ ]
1312
+ }
1313
+ },
1314
+ "ariaColindex": {
1315
+ "kind": "function",
1316
+ "params": [
1317
+ "c"
1318
+ ],
1319
+ "body": {
1320
+ "kind": "app",
1321
+ "opcode": "iadd",
1322
+ "args": [
1323
+ {
1324
+ "kind": "name",
1325
+ "name": "c"
1326
+ },
1327
+ {
1328
+ "kind": "int",
1329
+ "value": "1"
1330
+ }
1331
+ ]
1332
+ }
1333
+ },
1334
+ "cellReadonly": {
1335
+ "kind": "function",
1336
+ "params": [
1337
+ "r",
1338
+ "c"
1339
+ ],
1340
+ "body": {
1341
+ "kind": "app",
1342
+ "opcode": "or",
1343
+ "args": [
1344
+ {
1345
+ "kind": "name",
1346
+ "name": "gridReadonly"
1347
+ },
1348
+ {
1349
+ "kind": "app",
1350
+ "opcode": "colReadonly",
1351
+ "args": [
1352
+ {
1353
+ "kind": "name",
1354
+ "name": "c"
1355
+ }
1356
+ ]
1357
+ }
1358
+ ]
1359
+ }
1360
+ },
1361
+ "cellTabindex": {
1362
+ "kind": "function",
1363
+ "params": [
1364
+ "r",
1365
+ "c"
1366
+ ],
1367
+ "body": {
1368
+ "kind": "app",
1369
+ "opcode": "ite",
1370
+ "args": [
1371
+ {
1372
+ "kind": "app",
1373
+ "opcode": "and",
1374
+ "args": [
1375
+ {
1376
+ "kind": "app",
1377
+ "opcode": "eq",
1378
+ "args": [
1379
+ {
1380
+ "kind": "name",
1381
+ "name": "r"
1382
+ },
1383
+ {
1384
+ "kind": "name",
1385
+ "name": "row"
1386
+ }
1387
+ ]
1388
+ },
1389
+ {
1390
+ "kind": "app",
1391
+ "opcode": "eq",
1392
+ "args": [
1393
+ {
1394
+ "kind": "name",
1395
+ "name": "c"
1396
+ },
1397
+ {
1398
+ "kind": "name",
1399
+ "name": "col"
1400
+ }
1401
+ ]
1402
+ },
1403
+ {
1404
+ "kind": "app",
1405
+ "opcode": "eq",
1406
+ "args": [
1407
+ {
1408
+ "kind": "name",
1409
+ "name": "focusTarget"
1410
+ },
1411
+ {
1412
+ "kind": "str",
1413
+ "value": "cell"
1414
+ }
1415
+ ]
1416
+ }
1417
+ ]
1418
+ },
1419
+ {
1420
+ "kind": "int",
1421
+ "value": "0"
1422
+ },
1423
+ {
1424
+ "kind": "app",
1425
+ "opcode": "iuminus",
1426
+ "args": [
1427
+ {
1428
+ "kind": "int",
1429
+ "value": "1"
1430
+ }
1431
+ ]
1432
+ }
1433
+ ]
1434
+ }
1435
+ },
1436
+ "widgetTabindex": {
1437
+ "kind": "function",
1438
+ "params": [
1439
+ "r",
1440
+ "c"
1441
+ ],
1442
+ "body": {
1443
+ "kind": "app",
1444
+ "opcode": "ite",
1445
+ "args": [
1446
+ {
1447
+ "kind": "app",
1448
+ "opcode": "and",
1449
+ "args": [
1450
+ {
1451
+ "kind": "app",
1452
+ "opcode": "eq",
1453
+ "args": [
1454
+ {
1455
+ "kind": "name",
1456
+ "name": "r"
1457
+ },
1458
+ {
1459
+ "kind": "name",
1460
+ "name": "row"
1461
+ }
1462
+ ]
1463
+ },
1464
+ {
1465
+ "kind": "app",
1466
+ "opcode": "eq",
1467
+ "args": [
1468
+ {
1469
+ "kind": "name",
1470
+ "name": "c"
1471
+ },
1472
+ {
1473
+ "kind": "name",
1474
+ "name": "col"
1475
+ }
1476
+ ]
1477
+ },
1478
+ {
1479
+ "kind": "app",
1480
+ "opcode": "eq",
1481
+ "args": [
1482
+ {
1483
+ "kind": "name",
1484
+ "name": "focusTarget"
1485
+ },
1486
+ {
1487
+ "kind": "str",
1488
+ "value": "widget"
1489
+ }
1490
+ ]
1491
+ }
1492
+ ]
1493
+ },
1494
+ {
1495
+ "kind": "int",
1496
+ "value": "0"
1497
+ },
1498
+ {
1499
+ "kind": "app",
1500
+ "opcode": "iuminus",
1501
+ "args": [
1502
+ {
1503
+ "kind": "int",
1504
+ "value": "1"
1505
+ }
1506
+ ]
1507
+ }
1508
+ ]
1509
+ }
1510
+ },
1511
+ "cellDomFocused": {
1512
+ "kind": "function",
1513
+ "params": [
1514
+ "r",
1515
+ "c"
1516
+ ],
1517
+ "body": {
1518
+ "kind": "app",
1519
+ "opcode": "and",
1520
+ "args": [
1521
+ {
1522
+ "kind": "name",
1523
+ "name": "navigating"
1524
+ },
1525
+ {
1526
+ "kind": "app",
1527
+ "opcode": "eq",
1528
+ "args": [
1529
+ {
1530
+ "kind": "name",
1531
+ "name": "focusTarget"
1532
+ },
1533
+ {
1534
+ "kind": "str",
1535
+ "value": "cell"
1536
+ }
1537
+ ]
1538
+ },
1539
+ {
1540
+ "kind": "app",
1541
+ "opcode": "eq",
1542
+ "args": [
1543
+ {
1544
+ "kind": "name",
1545
+ "name": "r"
1546
+ },
1547
+ {
1548
+ "kind": "name",
1549
+ "name": "row"
1550
+ }
1551
+ ]
1552
+ },
1553
+ {
1554
+ "kind": "app",
1555
+ "opcode": "eq",
1556
+ "args": [
1557
+ {
1558
+ "kind": "name",
1559
+ "name": "c"
1560
+ },
1561
+ {
1562
+ "kind": "name",
1563
+ "name": "col"
1564
+ }
1565
+ ]
1566
+ }
1567
+ ]
1568
+ }
1569
+ },
1570
+ "widgetDomFocused": {
1571
+ "kind": "function",
1572
+ "params": [
1573
+ "r",
1574
+ "c"
1575
+ ],
1576
+ "body": {
1577
+ "kind": "app",
1578
+ "opcode": "and",
1579
+ "args": [
1580
+ {
1581
+ "kind": "name",
1582
+ "name": "navigating"
1583
+ },
1584
+ {
1585
+ "kind": "app",
1586
+ "opcode": "eq",
1587
+ "args": [
1588
+ {
1589
+ "kind": "name",
1590
+ "name": "focusTarget"
1591
+ },
1592
+ {
1593
+ "kind": "str",
1594
+ "value": "widget"
1595
+ }
1596
+ ]
1597
+ },
1598
+ {
1599
+ "kind": "app",
1600
+ "opcode": "eq",
1601
+ "args": [
1602
+ {
1603
+ "kind": "name",
1604
+ "name": "r"
1605
+ },
1606
+ {
1607
+ "kind": "name",
1608
+ "name": "row"
1609
+ }
1610
+ ]
1611
+ },
1612
+ {
1613
+ "kind": "app",
1614
+ "opcode": "eq",
1615
+ "args": [
1616
+ {
1617
+ "kind": "name",
1618
+ "name": "c"
1619
+ },
1620
+ {
1621
+ "kind": "name",
1622
+ "name": "col"
1623
+ }
1624
+ ]
1625
+ }
1626
+ ]
1627
+ }
1628
+ },
1629
+ "inputDomFocused": {
1630
+ "kind": "function",
1631
+ "params": [
1632
+ "r",
1633
+ "c"
1634
+ ],
1635
+ "body": {
1636
+ "kind": "app",
1637
+ "opcode": "and",
1638
+ "args": [
1639
+ {
1640
+ "kind": "name",
1641
+ "name": "editing"
1642
+ },
1643
+ {
1644
+ "kind": "app",
1645
+ "opcode": "eq",
1646
+ "args": [
1647
+ {
1648
+ "kind": "name",
1649
+ "name": "r"
1650
+ },
1651
+ {
1652
+ "kind": "name",
1653
+ "name": "row"
1654
+ }
1655
+ ]
1656
+ },
1657
+ {
1658
+ "kind": "app",
1659
+ "opcode": "eq",
1660
+ "args": [
1661
+ {
1662
+ "kind": "name",
1663
+ "name": "c"
1664
+ },
1665
+ {
1666
+ "kind": "name",
1667
+ "name": "col"
1668
+ }
1669
+ ]
1670
+ }
1671
+ ]
1672
+ }
1673
+ },
1674
+ "tabStops": {
1675
+ "kind": "function",
1676
+ "params": [
1677
+ "r",
1678
+ "c"
1679
+ ],
1680
+ "body": {
1681
+ "kind": "app",
1682
+ "opcode": "iadd",
1683
+ "args": [
1684
+ {
1685
+ "kind": "app",
1686
+ "opcode": "ite",
1687
+ "args": [
1688
+ {
1689
+ "kind": "app",
1690
+ "opcode": "eq",
1691
+ "args": [
1692
+ {
1693
+ "kind": "app",
1694
+ "opcode": "cellTabindex",
1695
+ "args": [
1696
+ {
1697
+ "kind": "name",
1698
+ "name": "r"
1699
+ },
1700
+ {
1701
+ "kind": "name",
1702
+ "name": "c"
1703
+ }
1704
+ ]
1705
+ },
1706
+ {
1707
+ "kind": "int",
1708
+ "value": "0"
1709
+ }
1710
+ ]
1711
+ },
1712
+ {
1713
+ "kind": "int",
1714
+ "value": "1"
1715
+ },
1716
+ {
1717
+ "kind": "int",
1718
+ "value": "0"
1719
+ }
1720
+ ]
1721
+ },
1722
+ {
1723
+ "kind": "app",
1724
+ "opcode": "ite",
1725
+ "args": [
1726
+ {
1727
+ "kind": "app",
1728
+ "opcode": "eq",
1729
+ "args": [
1730
+ {
1731
+ "kind": "app",
1732
+ "opcode": "widgetTabindex",
1733
+ "args": [
1734
+ {
1735
+ "kind": "name",
1736
+ "name": "r"
1737
+ },
1738
+ {
1739
+ "kind": "name",
1740
+ "name": "c"
1741
+ }
1742
+ ]
1743
+ },
1744
+ {
1745
+ "kind": "int",
1746
+ "value": "0"
1747
+ }
1748
+ ]
1749
+ },
1750
+ {
1751
+ "kind": "int",
1752
+ "value": "1"
1753
+ },
1754
+ {
1755
+ "kind": "int",
1756
+ "value": "0"
1757
+ }
1758
+ ]
1759
+ }
1760
+ ]
1761
+ }
1762
+ },
1763
+ "rowTabStops": {
1764
+ "kind": "function",
1765
+ "params": [
1766
+ "r"
1767
+ ],
1768
+ "body": {
1769
+ "kind": "app",
1770
+ "opcode": "iadd",
1771
+ "args": [
1772
+ {
1773
+ "kind": "app",
1774
+ "opcode": "iadd",
1775
+ "args": [
1776
+ {
1777
+ "kind": "app",
1778
+ "opcode": "tabStops",
1779
+ "args": [
1780
+ {
1781
+ "kind": "name",
1782
+ "name": "r"
1783
+ },
1784
+ {
1785
+ "kind": "int",
1786
+ "value": "0"
1787
+ }
1788
+ ]
1789
+ },
1790
+ {
1791
+ "kind": "app",
1792
+ "opcode": "tabStops",
1793
+ "args": [
1794
+ {
1795
+ "kind": "name",
1796
+ "name": "r"
1797
+ },
1798
+ {
1799
+ "kind": "int",
1800
+ "value": "1"
1801
+ }
1802
+ ]
1803
+ }
1804
+ ]
1805
+ },
1806
+ {
1807
+ "kind": "app",
1808
+ "opcode": "tabStops",
1809
+ "args": [
1810
+ {
1811
+ "kind": "name",
1812
+ "name": "r"
1813
+ },
1814
+ {
1815
+ "kind": "int",
1816
+ "value": "2"
1817
+ }
1818
+ ]
1819
+ }
1820
+ ]
1821
+ }
1822
+ },
1823
+ "FocusInBounds": {
1824
+ "kind": "invariant",
1825
+ "params": [],
1826
+ "body": {
1827
+ "kind": "app",
1828
+ "opcode": "and",
1829
+ "args": [
1830
+ {
1831
+ "kind": "app",
1832
+ "opcode": "igte",
1833
+ "args": [
1834
+ {
1835
+ "kind": "name",
1836
+ "name": "row"
1837
+ },
1838
+ {
1839
+ "kind": "int",
1840
+ "value": "0"
1841
+ }
1842
+ ]
1843
+ },
1844
+ {
1845
+ "kind": "app",
1846
+ "opcode": "ilt",
1847
+ "args": [
1848
+ {
1849
+ "kind": "name",
1850
+ "name": "row"
1851
+ },
1852
+ {
1853
+ "kind": "name",
1854
+ "name": "ROWS"
1855
+ }
1856
+ ]
1857
+ },
1858
+ {
1859
+ "kind": "app",
1860
+ "opcode": "igte",
1861
+ "args": [
1862
+ {
1863
+ "kind": "name",
1864
+ "name": "col"
1865
+ },
1866
+ {
1867
+ "kind": "int",
1868
+ "value": "0"
1869
+ }
1870
+ ]
1871
+ },
1872
+ {
1873
+ "kind": "app",
1874
+ "opcode": "ilt",
1875
+ "args": [
1876
+ {
1877
+ "kind": "name",
1878
+ "name": "col"
1879
+ },
1880
+ {
1881
+ "kind": "name",
1882
+ "name": "COLS"
1883
+ }
1884
+ ]
1885
+ }
1886
+ ]
1887
+ }
1888
+ },
1889
+ "ExactlyOneTabStop": {
1890
+ "kind": "invariant",
1891
+ "params": [],
1892
+ "body": {
1893
+ "kind": "app",
1894
+ "opcode": "eq",
1895
+ "args": [
1896
+ {
1897
+ "kind": "app",
1898
+ "opcode": "iadd",
1899
+ "args": [
1900
+ {
1901
+ "kind": "app",
1902
+ "opcode": "iadd",
1903
+ "args": [
1904
+ {
1905
+ "kind": "app",
1906
+ "opcode": "iadd",
1907
+ "args": [
1908
+ {
1909
+ "kind": "app",
1910
+ "opcode": "rowTabStops",
1911
+ "args": [
1912
+ {
1913
+ "kind": "int",
1914
+ "value": "0"
1915
+ }
1916
+ ]
1917
+ },
1918
+ {
1919
+ "kind": "app",
1920
+ "opcode": "rowTabStops",
1921
+ "args": [
1922
+ {
1923
+ "kind": "int",
1924
+ "value": "1"
1925
+ }
1926
+ ]
1927
+ }
1928
+ ]
1929
+ },
1930
+ {
1931
+ "kind": "app",
1932
+ "opcode": "rowTabStops",
1933
+ "args": [
1934
+ {
1935
+ "kind": "int",
1936
+ "value": "2"
1937
+ }
1938
+ ]
1939
+ }
1940
+ ]
1941
+ },
1942
+ {
1943
+ "kind": "app",
1944
+ "opcode": "rowTabStops",
1945
+ "args": [
1946
+ {
1947
+ "kind": "int",
1948
+ "value": "3"
1949
+ }
1950
+ ]
1951
+ }
1952
+ ]
1953
+ },
1954
+ {
1955
+ "kind": "int",
1956
+ "value": "1"
1957
+ }
1958
+ ]
1959
+ }
1960
+ },
1961
+ "AriaIndicesInRange": {
1962
+ "kind": "invariant",
1963
+ "params": [],
1964
+ "body": {
1965
+ "kind": "app",
1966
+ "opcode": "and",
1967
+ "args": [
1968
+ {
1969
+ "kind": "app",
1970
+ "opcode": "igte",
1971
+ "args": [
1972
+ {
1973
+ "kind": "app",
1974
+ "opcode": "ariaRowindex",
1975
+ "args": [
1976
+ {
1977
+ "kind": "name",
1978
+ "name": "row"
1979
+ }
1980
+ ]
1981
+ },
1982
+ {
1983
+ "kind": "int",
1984
+ "value": "1"
1985
+ }
1986
+ ]
1987
+ },
1988
+ {
1989
+ "kind": "app",
1990
+ "opcode": "ilte",
1991
+ "args": [
1992
+ {
1993
+ "kind": "app",
1994
+ "opcode": "ariaRowindex",
1995
+ "args": [
1996
+ {
1997
+ "kind": "name",
1998
+ "name": "row"
1999
+ }
2000
+ ]
2001
+ },
2002
+ {
2003
+ "kind": "name",
2004
+ "name": "ARIA_ROWCOUNT"
2005
+ }
2006
+ ]
2007
+ },
2008
+ {
2009
+ "kind": "app",
2010
+ "opcode": "igte",
2011
+ "args": [
2012
+ {
2013
+ "kind": "app",
2014
+ "opcode": "ariaColindex",
2015
+ "args": [
2016
+ {
2017
+ "kind": "name",
2018
+ "name": "col"
2019
+ }
2020
+ ]
2021
+ },
2022
+ {
2023
+ "kind": "int",
2024
+ "value": "1"
2025
+ }
2026
+ ]
2027
+ },
2028
+ {
2029
+ "kind": "app",
2030
+ "opcode": "ilte",
2031
+ "args": [
2032
+ {
2033
+ "kind": "app",
2034
+ "opcode": "ariaColindex",
2035
+ "args": [
2036
+ {
2037
+ "kind": "name",
2038
+ "name": "col"
2039
+ }
2040
+ ]
2041
+ },
2042
+ {
2043
+ "kind": "name",
2044
+ "name": "ARIA_COLCOUNT"
2045
+ }
2046
+ ]
2047
+ }
2048
+ ]
2049
+ }
2050
+ },
2051
+ "ModeValid": {
2052
+ "kind": "invariant",
2053
+ "params": [],
2054
+ "body": {
2055
+ "kind": "app",
2056
+ "opcode": "or",
2057
+ "args": [
2058
+ {
2059
+ "kind": "app",
2060
+ "opcode": "eq",
2061
+ "args": [
2062
+ {
2063
+ "kind": "name",
2064
+ "name": "mode"
2065
+ },
2066
+ {
2067
+ "kind": "str",
2068
+ "value": "navigate"
2069
+ }
2070
+ ]
2071
+ },
2072
+ {
2073
+ "kind": "app",
2074
+ "opcode": "eq",
2075
+ "args": [
2076
+ {
2077
+ "kind": "name",
2078
+ "name": "mode"
2079
+ },
2080
+ {
2081
+ "kind": "str",
2082
+ "value": "edit"
2083
+ }
2084
+ ]
2085
+ }
2086
+ ]
2087
+ }
2088
+ },
2089
+ "KindValid": {
2090
+ "kind": "invariant",
2091
+ "params": [],
2092
+ "body": {
2093
+ "kind": "app",
2094
+ "opcode": "or",
2095
+ "args": [
2096
+ {
2097
+ "kind": "app",
2098
+ "opcode": "eq",
2099
+ "args": [
2100
+ {
2101
+ "kind": "name",
2102
+ "name": "gridKind"
2103
+ },
2104
+ {
2105
+ "kind": "str",
2106
+ "value": "data"
2107
+ }
2108
+ ]
2109
+ },
2110
+ {
2111
+ "kind": "app",
2112
+ "opcode": "eq",
2113
+ "args": [
2114
+ {
2115
+ "kind": "name",
2116
+ "name": "gridKind"
2117
+ },
2118
+ {
2119
+ "kind": "str",
2120
+ "value": "layout"
2121
+ }
2122
+ ]
2123
+ }
2124
+ ]
2125
+ }
2126
+ },
2127
+ "FocusTargetValid": {
2128
+ "kind": "invariant",
2129
+ "params": [],
2130
+ "body": {
2131
+ "kind": "app",
2132
+ "opcode": "or",
2133
+ "args": [
2134
+ {
2135
+ "kind": "app",
2136
+ "opcode": "eq",
2137
+ "args": [
2138
+ {
2139
+ "kind": "name",
2140
+ "name": "focusTarget"
2141
+ },
2142
+ {
2143
+ "kind": "str",
2144
+ "value": "cell"
2145
+ }
2146
+ ]
2147
+ },
2148
+ {
2149
+ "kind": "app",
2150
+ "opcode": "eq",
2151
+ "args": [
2152
+ {
2153
+ "kind": "name",
2154
+ "name": "focusTarget"
2155
+ },
2156
+ {
2157
+ "kind": "str",
2158
+ "value": "widget"
2159
+ }
2160
+ ]
2161
+ }
2162
+ ]
2163
+ }
2164
+ },
2165
+ "LastEditValid": {
2166
+ "kind": "invariant",
2167
+ "params": [],
2168
+ "body": {
2169
+ "kind": "app",
2170
+ "opcode": "or",
2171
+ "args": [
2172
+ {
2173
+ "kind": "app",
2174
+ "opcode": "eq",
2175
+ "args": [
2176
+ {
2177
+ "kind": "name",
2178
+ "name": "lastEdit"
2179
+ },
2180
+ {
2181
+ "kind": "str",
2182
+ "value": "none"
2183
+ }
2184
+ ]
2185
+ },
2186
+ {
2187
+ "kind": "app",
2188
+ "opcode": "eq",
2189
+ "args": [
2190
+ {
2191
+ "kind": "name",
2192
+ "name": "lastEdit"
2193
+ },
2194
+ {
2195
+ "kind": "str",
2196
+ "value": "committed"
2197
+ }
2198
+ ]
2199
+ },
2200
+ {
2201
+ "kind": "app",
2202
+ "opcode": "eq",
2203
+ "args": [
2204
+ {
2205
+ "kind": "name",
2206
+ "name": "lastEdit"
2207
+ },
2208
+ {
2209
+ "kind": "str",
2210
+ "value": "cancelled"
2211
+ }
2212
+ ]
2213
+ }
2214
+ ]
2215
+ }
2216
+ },
2217
+ "EditImpliesFocus": {
2218
+ "kind": "invariant",
2219
+ "params": [],
2220
+ "body": {
2221
+ "kind": "app",
2222
+ "opcode": "or",
2223
+ "args": [
2224
+ {
2225
+ "kind": "app",
2226
+ "opcode": "not",
2227
+ "args": [
2228
+ {
2229
+ "kind": "name",
2230
+ "name": "editing"
2231
+ }
2232
+ ]
2233
+ },
2234
+ {
2235
+ "kind": "name",
2236
+ "name": "hasFocus"
2237
+ }
2238
+ ]
2239
+ }
2240
+ },
2241
+ "EditOnEditableCell": {
2242
+ "kind": "invariant",
2243
+ "params": [],
2244
+ "body": {
2245
+ "kind": "app",
2246
+ "opcode": "or",
2247
+ "args": [
2248
+ {
2249
+ "kind": "app",
2250
+ "opcode": "not",
2251
+ "args": [
2252
+ {
2253
+ "kind": "name",
2254
+ "name": "editing"
2255
+ }
2256
+ ]
2257
+ },
2258
+ {
2259
+ "kind": "name",
2260
+ "name": "canEdit"
2261
+ }
2262
+ ]
2263
+ }
2264
+ },
2265
+ "DirtyImpliesEdit": {
2266
+ "kind": "invariant",
2267
+ "params": [],
2268
+ "body": {
2269
+ "kind": "app",
2270
+ "opcode": "or",
2271
+ "args": [
2272
+ {
2273
+ "kind": "app",
2274
+ "opcode": "not",
2275
+ "args": [
2276
+ {
2277
+ "kind": "name",
2278
+ "name": "dirty"
2279
+ }
2280
+ ]
2281
+ },
2282
+ {
2283
+ "kind": "name",
2284
+ "name": "editing"
2285
+ }
2286
+ ]
2287
+ }
2288
+ },
2289
+ "DataGridNeverWraps": {
2290
+ "kind": "invariant",
2291
+ "params": [],
2292
+ "body": {
2293
+ "kind": "app",
2294
+ "opcode": "or",
2295
+ "args": [
2296
+ {
2297
+ "kind": "app",
2298
+ "opcode": "eq",
2299
+ "args": [
2300
+ {
2301
+ "kind": "name",
2302
+ "name": "gridKind"
2303
+ },
2304
+ {
2305
+ "kind": "str",
2306
+ "value": "layout"
2307
+ }
2308
+ ]
2309
+ },
2310
+ {
2311
+ "kind": "app",
2312
+ "opcode": "and",
2313
+ "args": [
2314
+ {
2315
+ "kind": "app",
2316
+ "opcode": "not",
2317
+ "args": [
2318
+ {
2319
+ "kind": "name",
2320
+ "name": "wrapCols"
2321
+ }
2322
+ ]
2323
+ },
2324
+ {
2325
+ "kind": "app",
2326
+ "opcode": "not",
2327
+ "args": [
2328
+ {
2329
+ "kind": "name",
2330
+ "name": "wrapRows"
2331
+ }
2332
+ ]
2333
+ }
2334
+ ]
2335
+ }
2336
+ ]
2337
+ }
2338
+ }
2339
+ },
2340
+ "actions": [
2341
+ {
2342
+ "name": "init",
2343
+ "assignments": [
2344
+ {
2345
+ "field": "row",
2346
+ "rhs": {
2347
+ "kind": "int",
2348
+ "value": "0"
2349
+ }
2350
+ },
2351
+ {
2352
+ "field": "col",
2353
+ "rhs": {
2354
+ "kind": "int",
2355
+ "value": "0"
2356
+ }
2357
+ },
2358
+ {
2359
+ "field": "hasFocus",
2360
+ "rhs": {
2361
+ "kind": "bool",
2362
+ "value": false
2363
+ }
2364
+ },
2365
+ {
2366
+ "field": "mode",
2367
+ "rhs": {
2368
+ "kind": "str",
2369
+ "value": "navigate"
2370
+ }
2371
+ },
2372
+ {
2373
+ "field": "dirty",
2374
+ "rhs": {
2375
+ "kind": "bool",
2376
+ "value": false
2377
+ }
2378
+ },
2379
+ {
2380
+ "field": "lastEdit",
2381
+ "rhs": {
2382
+ "kind": "str",
2383
+ "value": "none"
2384
+ }
2385
+ },
2386
+ {
2387
+ "field": "gridKind",
2388
+ "rhs": {
2389
+ "kind": "str",
2390
+ "value": "data"
2391
+ }
2392
+ },
2393
+ {
2394
+ "field": "wrapCols",
2395
+ "rhs": {
2396
+ "kind": "bool",
2397
+ "value": false
2398
+ }
2399
+ },
2400
+ {
2401
+ "field": "wrapRows",
2402
+ "rhs": {
2403
+ "kind": "bool",
2404
+ "value": false
2405
+ }
2406
+ },
2407
+ {
2408
+ "field": "focusTarget",
2409
+ "rhs": {
2410
+ "kind": "str",
2411
+ "value": "cell"
2412
+ }
2413
+ },
2414
+ {
2415
+ "field": "gridReadonly",
2416
+ "rhs": {
2417
+ "kind": "bool",
2418
+ "value": false
2419
+ }
2420
+ }
2421
+ ]
2422
+ },
2423
+ {
2424
+ "name": "key",
2425
+ "nondet": {
2426
+ "name": "key",
2427
+ "kind": "str",
2428
+ "pool": [
2429
+ "ArrowRight",
2430
+ "ArrowLeft",
2431
+ "ArrowDown",
2432
+ "ArrowUp",
2433
+ "Home",
2434
+ "End",
2435
+ "Control+Home",
2436
+ "Control+End",
2437
+ "PageUp",
2438
+ "PageDown",
2439
+ "Enter",
2440
+ "F2",
2441
+ "Escape",
2442
+ "a",
2443
+ "Tab",
2444
+ "Shift+Tab"
2445
+ ]
2446
+ },
2447
+ "assignments": [
2448
+ {
2449
+ "field": "row",
2450
+ "rhs": {
2451
+ "kind": "app",
2452
+ "opcode": "ite",
2453
+ "args": [
2454
+ {
2455
+ "kind": "name",
2456
+ "name": "navigating"
2457
+ },
2458
+ {
2459
+ "kind": "app",
2460
+ "opcode": "idiv",
2461
+ "args": [
2462
+ {
2463
+ "kind": "app",
2464
+ "opcode": "keyTarget",
2465
+ "args": [
2466
+ {
2467
+ "kind": "name",
2468
+ "name": "key"
2469
+ }
2470
+ ]
2471
+ },
2472
+ {
2473
+ "kind": "name",
2474
+ "name": "COLS"
2475
+ }
2476
+ ]
2477
+ },
2478
+ {
2479
+ "kind": "name",
2480
+ "name": "row"
2481
+ }
2482
+ ]
2483
+ }
2484
+ },
2485
+ {
2486
+ "field": "col",
2487
+ "rhs": {
2488
+ "kind": "app",
2489
+ "opcode": "ite",
2490
+ "args": [
2491
+ {
2492
+ "kind": "name",
2493
+ "name": "navigating"
2494
+ },
2495
+ {
2496
+ "kind": "app",
2497
+ "opcode": "imod",
2498
+ "args": [
2499
+ {
2500
+ "kind": "app",
2501
+ "opcode": "keyTarget",
2502
+ "args": [
2503
+ {
2504
+ "kind": "name",
2505
+ "name": "key"
2506
+ }
2507
+ ]
2508
+ },
2509
+ {
2510
+ "kind": "name",
2511
+ "name": "COLS"
2512
+ }
2513
+ ]
2514
+ },
2515
+ {
2516
+ "kind": "name",
2517
+ "name": "col"
2518
+ }
2519
+ ]
2520
+ }
2521
+ },
2522
+ {
2523
+ "field": "hasFocus",
2524
+ "rhs": {
2525
+ "kind": "app",
2526
+ "opcode": "ite",
2527
+ "args": [
2528
+ {
2529
+ "kind": "app",
2530
+ "opcode": "leavesGrid",
2531
+ "args": [
2532
+ {
2533
+ "kind": "name",
2534
+ "name": "key"
2535
+ }
2536
+ ]
2537
+ },
2538
+ {
2539
+ "kind": "bool",
2540
+ "value": false
2541
+ },
2542
+ {
2543
+ "kind": "name",
2544
+ "name": "hasFocus"
2545
+ }
2546
+ ]
2547
+ }
2548
+ },
2549
+ {
2550
+ "field": "mode",
2551
+ "rhs": {
2552
+ "kind": "app",
2553
+ "opcode": "ite",
2554
+ "args": [
2555
+ {
2556
+ "kind": "app",
2557
+ "opcode": "startsEdit",
2558
+ "args": [
2559
+ {
2560
+ "kind": "name",
2561
+ "name": "key"
2562
+ }
2563
+ ]
2564
+ },
2565
+ {
2566
+ "kind": "str",
2567
+ "value": "edit"
2568
+ },
2569
+ {
2570
+ "kind": "app",
2571
+ "opcode": "ite",
2572
+ "args": [
2573
+ {
2574
+ "kind": "app",
2575
+ "opcode": "endsEdit",
2576
+ "args": [
2577
+ {
2578
+ "kind": "name",
2579
+ "name": "key"
2580
+ }
2581
+ ]
2582
+ },
2583
+ {
2584
+ "kind": "str",
2585
+ "value": "navigate"
2586
+ },
2587
+ {
2588
+ "kind": "name",
2589
+ "name": "mode"
2590
+ }
2591
+ ]
2592
+ }
2593
+ ]
2594
+ }
2595
+ },
2596
+ {
2597
+ "field": "dirty",
2598
+ "rhs": {
2599
+ "kind": "app",
2600
+ "opcode": "ite",
2601
+ "args": [
2602
+ {
2603
+ "kind": "app",
2604
+ "opcode": "startsEdit",
2605
+ "args": [
2606
+ {
2607
+ "kind": "name",
2608
+ "name": "key"
2609
+ }
2610
+ ]
2611
+ },
2612
+ {
2613
+ "kind": "app",
2614
+ "opcode": "eq",
2615
+ "args": [
2616
+ {
2617
+ "kind": "name",
2618
+ "name": "key"
2619
+ },
2620
+ {
2621
+ "kind": "str",
2622
+ "value": "a"
2623
+ }
2624
+ ]
2625
+ },
2626
+ {
2627
+ "kind": "app",
2628
+ "opcode": "ite",
2629
+ "args": [
2630
+ {
2631
+ "kind": "app",
2632
+ "opcode": "and",
2633
+ "args": [
2634
+ {
2635
+ "kind": "name",
2636
+ "name": "editing"
2637
+ },
2638
+ {
2639
+ "kind": "app",
2640
+ "opcode": "eq",
2641
+ "args": [
2642
+ {
2643
+ "kind": "name",
2644
+ "name": "key"
2645
+ },
2646
+ {
2647
+ "kind": "str",
2648
+ "value": "a"
2649
+ }
2650
+ ]
2651
+ }
2652
+ ]
2653
+ },
2654
+ {
2655
+ "kind": "bool",
2656
+ "value": true
2657
+ },
2658
+ {
2659
+ "kind": "app",
2660
+ "opcode": "ite",
2661
+ "args": [
2662
+ {
2663
+ "kind": "app",
2664
+ "opcode": "endsEdit",
2665
+ "args": [
2666
+ {
2667
+ "kind": "name",
2668
+ "name": "key"
2669
+ }
2670
+ ]
2671
+ },
2672
+ {
2673
+ "kind": "bool",
2674
+ "value": false
2675
+ },
2676
+ {
2677
+ "kind": "name",
2678
+ "name": "dirty"
2679
+ }
2680
+ ]
2681
+ }
2682
+ ]
2683
+ }
2684
+ ]
2685
+ }
2686
+ },
2687
+ {
2688
+ "field": "lastEdit",
2689
+ "rhs": {
2690
+ "kind": "app",
2691
+ "opcode": "ite",
2692
+ "args": [
2693
+ {
2694
+ "kind": "app",
2695
+ "opcode": "commitsEdit",
2696
+ "args": [
2697
+ {
2698
+ "kind": "name",
2699
+ "name": "key"
2700
+ }
2701
+ ]
2702
+ },
2703
+ {
2704
+ "kind": "str",
2705
+ "value": "committed"
2706
+ },
2707
+ {
2708
+ "kind": "app",
2709
+ "opcode": "ite",
2710
+ "args": [
2711
+ {
2712
+ "kind": "app",
2713
+ "opcode": "cancelsEdit",
2714
+ "args": [
2715
+ {
2716
+ "kind": "name",
2717
+ "name": "key"
2718
+ }
2719
+ ]
2720
+ },
2721
+ {
2722
+ "kind": "str",
2723
+ "value": "cancelled"
2724
+ },
2725
+ {
2726
+ "kind": "name",
2727
+ "name": "lastEdit"
2728
+ }
2729
+ ]
2730
+ }
2731
+ ]
2732
+ }
2733
+ },
2734
+ {
2735
+ "field": "gridKind",
2736
+ "rhs": {
2737
+ "kind": "name",
2738
+ "name": "gridKind"
2739
+ }
2740
+ },
2741
+ {
2742
+ "field": "wrapCols",
2743
+ "rhs": {
2744
+ "kind": "name",
2745
+ "name": "wrapCols"
2746
+ }
2747
+ },
2748
+ {
2749
+ "field": "wrapRows",
2750
+ "rhs": {
2751
+ "kind": "name",
2752
+ "name": "wrapRows"
2753
+ }
2754
+ },
2755
+ {
2756
+ "field": "focusTarget",
2757
+ "rhs": {
2758
+ "kind": "name",
2759
+ "name": "focusTarget"
2760
+ }
2761
+ },
2762
+ {
2763
+ "field": "gridReadonly",
2764
+ "rhs": {
2765
+ "kind": "name",
2766
+ "name": "gridReadonly"
2767
+ }
2768
+ }
2769
+ ]
2770
+ },
2771
+ {
2772
+ "name": "click",
2773
+ "nondet": {
2774
+ "name": "cell",
2775
+ "kind": "int",
2776
+ "pool": [
2777
+ "0",
2778
+ "1",
2779
+ "2",
2780
+ "3",
2781
+ "4",
2782
+ "5",
2783
+ "6",
2784
+ "7",
2785
+ "8",
2786
+ "9",
2787
+ "10",
2788
+ "11"
2789
+ ]
2790
+ },
2791
+ "assignments": [
2792
+ {
2793
+ "field": "row",
2794
+ "rhs": {
2795
+ "kind": "app",
2796
+ "opcode": "idiv",
2797
+ "args": [
2798
+ {
2799
+ "kind": "name",
2800
+ "name": "cell"
2801
+ },
2802
+ {
2803
+ "kind": "name",
2804
+ "name": "COLS"
2805
+ }
2806
+ ]
2807
+ }
2808
+ },
2809
+ {
2810
+ "field": "col",
2811
+ "rhs": {
2812
+ "kind": "app",
2813
+ "opcode": "imod",
2814
+ "args": [
2815
+ {
2816
+ "kind": "name",
2817
+ "name": "cell"
2818
+ },
2819
+ {
2820
+ "kind": "name",
2821
+ "name": "COLS"
2822
+ }
2823
+ ]
2824
+ }
2825
+ },
2826
+ {
2827
+ "field": "hasFocus",
2828
+ "rhs": {
2829
+ "kind": "bool",
2830
+ "value": true
2831
+ }
2832
+ },
2833
+ {
2834
+ "field": "mode",
2835
+ "rhs": {
2836
+ "kind": "app",
2837
+ "opcode": "ite",
2838
+ "args": [
2839
+ {
2840
+ "kind": "app",
2841
+ "opcode": "and",
2842
+ "args": [
2843
+ {
2844
+ "kind": "name",
2845
+ "name": "editing"
2846
+ },
2847
+ {
2848
+ "kind": "app",
2849
+ "opcode": "eq",
2850
+ "args": [
2851
+ {
2852
+ "kind": "name",
2853
+ "name": "cell"
2854
+ },
2855
+ {
2856
+ "kind": "name",
2857
+ "name": "cur"
2858
+ }
2859
+ ]
2860
+ }
2861
+ ]
2862
+ },
2863
+ {
2864
+ "kind": "str",
2865
+ "value": "edit"
2866
+ },
2867
+ {
2868
+ "kind": "str",
2869
+ "value": "navigate"
2870
+ }
2871
+ ]
2872
+ }
2873
+ },
2874
+ {
2875
+ "field": "dirty",
2876
+ "rhs": {
2877
+ "kind": "app",
2878
+ "opcode": "ite",
2879
+ "args": [
2880
+ {
2881
+ "kind": "app",
2882
+ "opcode": "and",
2883
+ "args": [
2884
+ {
2885
+ "kind": "name",
2886
+ "name": "editing"
2887
+ },
2888
+ {
2889
+ "kind": "app",
2890
+ "opcode": "eq",
2891
+ "args": [
2892
+ {
2893
+ "kind": "name",
2894
+ "name": "cell"
2895
+ },
2896
+ {
2897
+ "kind": "name",
2898
+ "name": "cur"
2899
+ }
2900
+ ]
2901
+ }
2902
+ ]
2903
+ },
2904
+ {
2905
+ "kind": "name",
2906
+ "name": "dirty"
2907
+ },
2908
+ {
2909
+ "kind": "bool",
2910
+ "value": false
2911
+ }
2912
+ ]
2913
+ }
2914
+ },
2915
+ {
2916
+ "field": "lastEdit",
2917
+ "rhs": {
2918
+ "kind": "app",
2919
+ "opcode": "ite",
2920
+ "args": [
2921
+ {
2922
+ "kind": "app",
2923
+ "opcode": "and",
2924
+ "args": [
2925
+ {
2926
+ "kind": "name",
2927
+ "name": "editing"
2928
+ },
2929
+ {
2930
+ "kind": "app",
2931
+ "opcode": "neq",
2932
+ "args": [
2933
+ {
2934
+ "kind": "name",
2935
+ "name": "cell"
2936
+ },
2937
+ {
2938
+ "kind": "name",
2939
+ "name": "cur"
2940
+ }
2941
+ ]
2942
+ }
2943
+ ]
2944
+ },
2945
+ {
2946
+ "kind": "str",
2947
+ "value": "committed"
2948
+ },
2949
+ {
2950
+ "kind": "name",
2951
+ "name": "lastEdit"
2952
+ }
2953
+ ]
2954
+ }
2955
+ },
2956
+ {
2957
+ "field": "gridKind",
2958
+ "rhs": {
2959
+ "kind": "name",
2960
+ "name": "gridKind"
2961
+ }
2962
+ },
2963
+ {
2964
+ "field": "wrapCols",
2965
+ "rhs": {
2966
+ "kind": "name",
2967
+ "name": "wrapCols"
2968
+ }
2969
+ },
2970
+ {
2971
+ "field": "wrapRows",
2972
+ "rhs": {
2973
+ "kind": "name",
2974
+ "name": "wrapRows"
2975
+ }
2976
+ },
2977
+ {
2978
+ "field": "focusTarget",
2979
+ "rhs": {
2980
+ "kind": "name",
2981
+ "name": "focusTarget"
2982
+ }
2983
+ },
2984
+ {
2985
+ "field": "gridReadonly",
2986
+ "rhs": {
2987
+ "kind": "name",
2988
+ "name": "gridReadonly"
2989
+ }
2990
+ }
2991
+ ]
2992
+ },
2993
+ {
2994
+ "name": "focus_in",
2995
+ "assignments": [
2996
+ {
2997
+ "field": "row",
2998
+ "rhs": {
2999
+ "kind": "name",
3000
+ "name": "row"
3001
+ }
3002
+ },
3003
+ {
3004
+ "field": "col",
3005
+ "rhs": {
3006
+ "kind": "name",
3007
+ "name": "col"
3008
+ }
3009
+ },
3010
+ {
3011
+ "field": "hasFocus",
3012
+ "rhs": {
3013
+ "kind": "bool",
3014
+ "value": true
3015
+ }
3016
+ },
3017
+ {
3018
+ "field": "mode",
3019
+ "rhs": {
3020
+ "kind": "name",
3021
+ "name": "mode"
3022
+ }
3023
+ },
3024
+ {
3025
+ "field": "dirty",
3026
+ "rhs": {
3027
+ "kind": "name",
3028
+ "name": "dirty"
3029
+ }
3030
+ },
3031
+ {
3032
+ "field": "lastEdit",
3033
+ "rhs": {
3034
+ "kind": "name",
3035
+ "name": "lastEdit"
3036
+ }
3037
+ },
3038
+ {
3039
+ "field": "gridKind",
3040
+ "rhs": {
3041
+ "kind": "name",
3042
+ "name": "gridKind"
3043
+ }
3044
+ },
3045
+ {
3046
+ "field": "wrapCols",
3047
+ "rhs": {
3048
+ "kind": "name",
3049
+ "name": "wrapCols"
3050
+ }
3051
+ },
3052
+ {
3053
+ "field": "wrapRows",
3054
+ "rhs": {
3055
+ "kind": "name",
3056
+ "name": "wrapRows"
3057
+ }
3058
+ },
3059
+ {
3060
+ "field": "focusTarget",
3061
+ "rhs": {
3062
+ "kind": "name",
3063
+ "name": "focusTarget"
3064
+ }
3065
+ },
3066
+ {
3067
+ "field": "gridReadonly",
3068
+ "rhs": {
3069
+ "kind": "name",
3070
+ "name": "gridReadonly"
3071
+ }
3072
+ }
3073
+ ]
3074
+ },
3075
+ {
3076
+ "name": "focus_out",
3077
+ "assignments": [
3078
+ {
3079
+ "field": "row",
3080
+ "rhs": {
3081
+ "kind": "name",
3082
+ "name": "row"
3083
+ }
3084
+ },
3085
+ {
3086
+ "field": "col",
3087
+ "rhs": {
3088
+ "kind": "name",
3089
+ "name": "col"
3090
+ }
3091
+ },
3092
+ {
3093
+ "field": "hasFocus",
3094
+ "rhs": {
3095
+ "kind": "bool",
3096
+ "value": false
3097
+ }
3098
+ },
3099
+ {
3100
+ "field": "mode",
3101
+ "rhs": {
3102
+ "kind": "str",
3103
+ "value": "navigate"
3104
+ }
3105
+ },
3106
+ {
3107
+ "field": "dirty",
3108
+ "rhs": {
3109
+ "kind": "bool",
3110
+ "value": false
3111
+ }
3112
+ },
3113
+ {
3114
+ "field": "lastEdit",
3115
+ "rhs": {
3116
+ "kind": "app",
3117
+ "opcode": "ite",
3118
+ "args": [
3119
+ {
3120
+ "kind": "name",
3121
+ "name": "editing"
3122
+ },
3123
+ {
3124
+ "kind": "str",
3125
+ "value": "committed"
3126
+ },
3127
+ {
3128
+ "kind": "name",
3129
+ "name": "lastEdit"
3130
+ }
3131
+ ]
3132
+ }
3133
+ },
3134
+ {
3135
+ "field": "gridKind",
3136
+ "rhs": {
3137
+ "kind": "name",
3138
+ "name": "gridKind"
3139
+ }
3140
+ },
3141
+ {
3142
+ "field": "wrapCols",
3143
+ "rhs": {
3144
+ "kind": "name",
3145
+ "name": "wrapCols"
3146
+ }
3147
+ },
3148
+ {
3149
+ "field": "wrapRows",
3150
+ "rhs": {
3151
+ "kind": "name",
3152
+ "name": "wrapRows"
3153
+ }
3154
+ },
3155
+ {
3156
+ "field": "focusTarget",
3157
+ "rhs": {
3158
+ "kind": "name",
3159
+ "name": "focusTarget"
3160
+ }
3161
+ },
3162
+ {
3163
+ "field": "gridReadonly",
3164
+ "rhs": {
3165
+ "kind": "name",
3166
+ "name": "gridReadonly"
3167
+ }
3168
+ }
3169
+ ]
3170
+ },
3171
+ {
3172
+ "name": "set_kind",
3173
+ "nondet": {
3174
+ "name": "choice",
3175
+ "kind": "str",
3176
+ "pool": [
3177
+ "data",
3178
+ "layout"
3179
+ ]
3180
+ },
3181
+ "assignments": [
3182
+ {
3183
+ "field": "row",
3184
+ "rhs": {
3185
+ "kind": "name",
3186
+ "name": "row"
3187
+ }
3188
+ },
3189
+ {
3190
+ "field": "col",
3191
+ "rhs": {
3192
+ "kind": "name",
3193
+ "name": "col"
3194
+ }
3195
+ },
3196
+ {
3197
+ "field": "hasFocus",
3198
+ "rhs": {
3199
+ "kind": "name",
3200
+ "name": "hasFocus"
3201
+ }
3202
+ },
3203
+ {
3204
+ "field": "mode",
3205
+ "rhs": {
3206
+ "kind": "name",
3207
+ "name": "mode"
3208
+ }
3209
+ },
3210
+ {
3211
+ "field": "dirty",
3212
+ "rhs": {
3213
+ "kind": "name",
3214
+ "name": "dirty"
3215
+ }
3216
+ },
3217
+ {
3218
+ "field": "lastEdit",
3219
+ "rhs": {
3220
+ "kind": "name",
3221
+ "name": "lastEdit"
3222
+ }
3223
+ },
3224
+ {
3225
+ "field": "gridKind",
3226
+ "rhs": {
3227
+ "kind": "name",
3228
+ "name": "choice"
3229
+ }
3230
+ },
3231
+ {
3232
+ "field": "wrapCols",
3233
+ "rhs": {
3234
+ "kind": "app",
3235
+ "opcode": "ite",
3236
+ "args": [
3237
+ {
3238
+ "kind": "app",
3239
+ "opcode": "eq",
3240
+ "args": [
3241
+ {
3242
+ "kind": "name",
3243
+ "name": "choice"
3244
+ },
3245
+ {
3246
+ "kind": "str",
3247
+ "value": "data"
3248
+ }
3249
+ ]
3250
+ },
3251
+ {
3252
+ "kind": "bool",
3253
+ "value": false
3254
+ },
3255
+ {
3256
+ "kind": "name",
3257
+ "name": "wrapCols"
3258
+ }
3259
+ ]
3260
+ }
3261
+ },
3262
+ {
3263
+ "field": "wrapRows",
3264
+ "rhs": {
3265
+ "kind": "app",
3266
+ "opcode": "ite",
3267
+ "args": [
3268
+ {
3269
+ "kind": "app",
3270
+ "opcode": "eq",
3271
+ "args": [
3272
+ {
3273
+ "kind": "name",
3274
+ "name": "choice"
3275
+ },
3276
+ {
3277
+ "kind": "str",
3278
+ "value": "data"
3279
+ }
3280
+ ]
3281
+ },
3282
+ {
3283
+ "kind": "bool",
3284
+ "value": false
3285
+ },
3286
+ {
3287
+ "kind": "name",
3288
+ "name": "wrapRows"
3289
+ }
3290
+ ]
3291
+ }
3292
+ },
3293
+ {
3294
+ "field": "focusTarget",
3295
+ "rhs": {
3296
+ "kind": "name",
3297
+ "name": "focusTarget"
3298
+ }
3299
+ },
3300
+ {
3301
+ "field": "gridReadonly",
3302
+ "rhs": {
3303
+ "kind": "name",
3304
+ "name": "gridReadonly"
3305
+ }
3306
+ }
3307
+ ]
3308
+ },
3309
+ {
3310
+ "name": "set_wrap_cols",
3311
+ "nondet": {
3312
+ "name": "flag",
3313
+ "kind": "bool",
3314
+ "pool": [
3315
+ true,
3316
+ false
3317
+ ]
3318
+ },
3319
+ "assignments": [
3320
+ {
3321
+ "field": "row",
3322
+ "rhs": {
3323
+ "kind": "name",
3324
+ "name": "row"
3325
+ }
3326
+ },
3327
+ {
3328
+ "field": "col",
3329
+ "rhs": {
3330
+ "kind": "name",
3331
+ "name": "col"
3332
+ }
3333
+ },
3334
+ {
3335
+ "field": "hasFocus",
3336
+ "rhs": {
3337
+ "kind": "name",
3338
+ "name": "hasFocus"
3339
+ }
3340
+ },
3341
+ {
3342
+ "field": "mode",
3343
+ "rhs": {
3344
+ "kind": "name",
3345
+ "name": "mode"
3346
+ }
3347
+ },
3348
+ {
3349
+ "field": "dirty",
3350
+ "rhs": {
3351
+ "kind": "name",
3352
+ "name": "dirty"
3353
+ }
3354
+ },
3355
+ {
3356
+ "field": "lastEdit",
3357
+ "rhs": {
3358
+ "kind": "name",
3359
+ "name": "lastEdit"
3360
+ }
3361
+ },
3362
+ {
3363
+ "field": "gridKind",
3364
+ "rhs": {
3365
+ "kind": "name",
3366
+ "name": "gridKind"
3367
+ }
3368
+ },
3369
+ {
3370
+ "field": "wrapCols",
3371
+ "rhs": {
3372
+ "kind": "app",
3373
+ "opcode": "ite",
3374
+ "args": [
3375
+ {
3376
+ "kind": "app",
3377
+ "opcode": "eq",
3378
+ "args": [
3379
+ {
3380
+ "kind": "name",
3381
+ "name": "gridKind"
3382
+ },
3383
+ {
3384
+ "kind": "str",
3385
+ "value": "layout"
3386
+ }
3387
+ ]
3388
+ },
3389
+ {
3390
+ "kind": "name",
3391
+ "name": "flag"
3392
+ },
3393
+ {
3394
+ "kind": "bool",
3395
+ "value": false
3396
+ }
3397
+ ]
3398
+ }
3399
+ },
3400
+ {
3401
+ "field": "wrapRows",
3402
+ "rhs": {
3403
+ "kind": "name",
3404
+ "name": "wrapRows"
3405
+ }
3406
+ },
3407
+ {
3408
+ "field": "focusTarget",
3409
+ "rhs": {
3410
+ "kind": "name",
3411
+ "name": "focusTarget"
3412
+ }
3413
+ },
3414
+ {
3415
+ "field": "gridReadonly",
3416
+ "rhs": {
3417
+ "kind": "name",
3418
+ "name": "gridReadonly"
3419
+ }
3420
+ }
3421
+ ]
3422
+ },
3423
+ {
3424
+ "name": "set_wrap_rows",
3425
+ "nondet": {
3426
+ "name": "flag",
3427
+ "kind": "bool",
3428
+ "pool": [
3429
+ true,
3430
+ false
3431
+ ]
3432
+ },
3433
+ "assignments": [
3434
+ {
3435
+ "field": "row",
3436
+ "rhs": {
3437
+ "kind": "name",
3438
+ "name": "row"
3439
+ }
3440
+ },
3441
+ {
3442
+ "field": "col",
3443
+ "rhs": {
3444
+ "kind": "name",
3445
+ "name": "col"
3446
+ }
3447
+ },
3448
+ {
3449
+ "field": "hasFocus",
3450
+ "rhs": {
3451
+ "kind": "name",
3452
+ "name": "hasFocus"
3453
+ }
3454
+ },
3455
+ {
3456
+ "field": "mode",
3457
+ "rhs": {
3458
+ "kind": "name",
3459
+ "name": "mode"
3460
+ }
3461
+ },
3462
+ {
3463
+ "field": "dirty",
3464
+ "rhs": {
3465
+ "kind": "name",
3466
+ "name": "dirty"
3467
+ }
3468
+ },
3469
+ {
3470
+ "field": "lastEdit",
3471
+ "rhs": {
3472
+ "kind": "name",
3473
+ "name": "lastEdit"
3474
+ }
3475
+ },
3476
+ {
3477
+ "field": "gridKind",
3478
+ "rhs": {
3479
+ "kind": "name",
3480
+ "name": "gridKind"
3481
+ }
3482
+ },
3483
+ {
3484
+ "field": "wrapCols",
3485
+ "rhs": {
3486
+ "kind": "name",
3487
+ "name": "wrapCols"
3488
+ }
3489
+ },
3490
+ {
3491
+ "field": "wrapRows",
3492
+ "rhs": {
3493
+ "kind": "app",
3494
+ "opcode": "ite",
3495
+ "args": [
3496
+ {
3497
+ "kind": "app",
3498
+ "opcode": "eq",
3499
+ "args": [
3500
+ {
3501
+ "kind": "name",
3502
+ "name": "gridKind"
3503
+ },
3504
+ {
3505
+ "kind": "str",
3506
+ "value": "layout"
3507
+ }
3508
+ ]
3509
+ },
3510
+ {
3511
+ "kind": "name",
3512
+ "name": "flag"
3513
+ },
3514
+ {
3515
+ "kind": "bool",
3516
+ "value": false
3517
+ }
3518
+ ]
3519
+ }
3520
+ },
3521
+ {
3522
+ "field": "focusTarget",
3523
+ "rhs": {
3524
+ "kind": "name",
3525
+ "name": "focusTarget"
3526
+ }
3527
+ },
3528
+ {
3529
+ "field": "gridReadonly",
3530
+ "rhs": {
3531
+ "kind": "name",
3532
+ "name": "gridReadonly"
3533
+ }
3534
+ }
3535
+ ]
3536
+ },
3537
+ {
3538
+ "name": "set_focus_target",
3539
+ "nondet": {
3540
+ "name": "choice",
3541
+ "kind": "str",
3542
+ "pool": [
3543
+ "cell",
3544
+ "widget"
3545
+ ]
3546
+ },
3547
+ "assignments": [
3548
+ {
3549
+ "field": "row",
3550
+ "rhs": {
3551
+ "kind": "name",
3552
+ "name": "row"
3553
+ }
3554
+ },
3555
+ {
3556
+ "field": "col",
3557
+ "rhs": {
3558
+ "kind": "name",
3559
+ "name": "col"
3560
+ }
3561
+ },
3562
+ {
3563
+ "field": "hasFocus",
3564
+ "rhs": {
3565
+ "kind": "name",
3566
+ "name": "hasFocus"
3567
+ }
3568
+ },
3569
+ {
3570
+ "field": "mode",
3571
+ "rhs": {
3572
+ "kind": "name",
3573
+ "name": "mode"
3574
+ }
3575
+ },
3576
+ {
3577
+ "field": "dirty",
3578
+ "rhs": {
3579
+ "kind": "name",
3580
+ "name": "dirty"
3581
+ }
3582
+ },
3583
+ {
3584
+ "field": "lastEdit",
3585
+ "rhs": {
3586
+ "kind": "name",
3587
+ "name": "lastEdit"
3588
+ }
3589
+ },
3590
+ {
3591
+ "field": "gridKind",
3592
+ "rhs": {
3593
+ "kind": "name",
3594
+ "name": "gridKind"
3595
+ }
3596
+ },
3597
+ {
3598
+ "field": "wrapCols",
3599
+ "rhs": {
3600
+ "kind": "name",
3601
+ "name": "wrapCols"
3602
+ }
3603
+ },
3604
+ {
3605
+ "field": "wrapRows",
3606
+ "rhs": {
3607
+ "kind": "name",
3608
+ "name": "wrapRows"
3609
+ }
3610
+ },
3611
+ {
3612
+ "field": "focusTarget",
3613
+ "rhs": {
3614
+ "kind": "name",
3615
+ "name": "choice"
3616
+ }
3617
+ },
3618
+ {
3619
+ "field": "gridReadonly",
3620
+ "rhs": {
3621
+ "kind": "name",
3622
+ "name": "gridReadonly"
3623
+ }
3624
+ }
3625
+ ]
3626
+ },
3627
+ {
3628
+ "name": "set_readonly",
3629
+ "nondet": {
3630
+ "name": "flag",
3631
+ "kind": "bool",
3632
+ "pool": [
3633
+ true,
3634
+ false
3635
+ ]
3636
+ },
3637
+ "assignments": [
3638
+ {
3639
+ "field": "row",
3640
+ "rhs": {
3641
+ "kind": "name",
3642
+ "name": "row"
3643
+ }
3644
+ },
3645
+ {
3646
+ "field": "col",
3647
+ "rhs": {
3648
+ "kind": "name",
3649
+ "name": "col"
3650
+ }
3651
+ },
3652
+ {
3653
+ "field": "hasFocus",
3654
+ "rhs": {
3655
+ "kind": "name",
3656
+ "name": "hasFocus"
3657
+ }
3658
+ },
3659
+ {
3660
+ "field": "mode",
3661
+ "rhs": {
3662
+ "kind": "app",
3663
+ "opcode": "ite",
3664
+ "args": [
3665
+ {
3666
+ "kind": "app",
3667
+ "opcode": "and",
3668
+ "args": [
3669
+ {
3670
+ "kind": "name",
3671
+ "name": "flag"
3672
+ },
3673
+ {
3674
+ "kind": "name",
3675
+ "name": "editing"
3676
+ }
3677
+ ]
3678
+ },
3679
+ {
3680
+ "kind": "str",
3681
+ "value": "navigate"
3682
+ },
3683
+ {
3684
+ "kind": "name",
3685
+ "name": "mode"
3686
+ }
3687
+ ]
3688
+ }
3689
+ },
3690
+ {
3691
+ "field": "dirty",
3692
+ "rhs": {
3693
+ "kind": "app",
3694
+ "opcode": "ite",
3695
+ "args": [
3696
+ {
3697
+ "kind": "app",
3698
+ "opcode": "and",
3699
+ "args": [
3700
+ {
3701
+ "kind": "name",
3702
+ "name": "flag"
3703
+ },
3704
+ {
3705
+ "kind": "name",
3706
+ "name": "editing"
3707
+ }
3708
+ ]
3709
+ },
3710
+ {
3711
+ "kind": "bool",
3712
+ "value": false
3713
+ },
3714
+ {
3715
+ "kind": "name",
3716
+ "name": "dirty"
3717
+ }
3718
+ ]
3719
+ }
3720
+ },
3721
+ {
3722
+ "field": "lastEdit",
3723
+ "rhs": {
3724
+ "kind": "app",
3725
+ "opcode": "ite",
3726
+ "args": [
3727
+ {
3728
+ "kind": "app",
3729
+ "opcode": "and",
3730
+ "args": [
3731
+ {
3732
+ "kind": "name",
3733
+ "name": "flag"
3734
+ },
3735
+ {
3736
+ "kind": "name",
3737
+ "name": "editing"
3738
+ }
3739
+ ]
3740
+ },
3741
+ {
3742
+ "kind": "str",
3743
+ "value": "cancelled"
3744
+ },
3745
+ {
3746
+ "kind": "name",
3747
+ "name": "lastEdit"
3748
+ }
3749
+ ]
3750
+ }
3751
+ },
3752
+ {
3753
+ "field": "gridKind",
3754
+ "rhs": {
3755
+ "kind": "name",
3756
+ "name": "gridKind"
3757
+ }
3758
+ },
3759
+ {
3760
+ "field": "wrapCols",
3761
+ "rhs": {
3762
+ "kind": "name",
3763
+ "name": "wrapCols"
3764
+ }
3765
+ },
3766
+ {
3767
+ "field": "wrapRows",
3768
+ "rhs": {
3769
+ "kind": "name",
3770
+ "name": "wrapRows"
3771
+ }
3772
+ },
3773
+ {
3774
+ "field": "focusTarget",
3775
+ "rhs": {
3776
+ "kind": "name",
3777
+ "name": "focusTarget"
3778
+ }
3779
+ },
3780
+ {
3781
+ "field": "gridReadonly",
3782
+ "rhs": {
3783
+ "kind": "name",
3784
+ "name": "flag"
3785
+ }
3786
+ }
3787
+ ]
3788
+ }
3789
+ ],
3790
+ "step": [
3791
+ "init",
3792
+ "key",
3793
+ "click",
3794
+ "focus_in",
3795
+ "focus_out",
3796
+ "set_kind",
3797
+ "set_wrap_cols",
3798
+ "set_wrap_rows",
3799
+ "set_focus_target",
3800
+ "set_readonly"
3801
+ ]
3802
+ }