askui 0.20.2 → 0.20.3

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 (228) hide show
  1. package/dist/cjs/core/model/custom-element-json.d.ts +1 -1
  2. package/dist/cjs/execution/dsl.d.ts +528 -162
  3. package/dist/cjs/execution/dsl.js +533 -162
  4. package/dist/esm/core/model/custom-element-json.d.ts +1 -1
  5. package/dist/esm/execution/dsl.d.ts +528 -162
  6. package/dist/esm/execution/dsl.js +533 -162
  7. package/package.json +1 -1
  8. package/dist/cjs/core/annotation/annotation-writer.js.map +0 -1
  9. package/dist/cjs/core/annotation/annotation.js.map +0 -1
  10. package/dist/cjs/core/inference-response/inference-response.js.map +0 -1
  11. package/dist/cjs/core/inference-response/invalid-model-type-error.js.map +0 -1
  12. package/dist/cjs/core/inference-response/model-type.js.map +0 -1
  13. package/dist/cjs/core/model/annotation-result/annotation-interface.js.map +0 -1
  14. package/dist/cjs/core/model/annotation-result/boundary-box.js.map +0 -1
  15. package/dist/cjs/core/model/annotation-result/detected-element.js.map +0 -1
  16. package/dist/cjs/core/model/custom-element-json.js.map +0 -1
  17. package/dist/cjs/core/model/custom-element.js.map +0 -1
  18. package/dist/cjs/core/reporting/default-step.js.map +0 -1
  19. package/dist/cjs/core/reporting/index.js.map +0 -1
  20. package/dist/cjs/core/reporting/instruction.js.map +0 -1
  21. package/dist/cjs/core/reporting/reporter-config.js.map +0 -1
  22. package/dist/cjs/core/reporting/reporter.js.map +0 -1
  23. package/dist/cjs/core/reporting/snapshot-detail-level.js.map +0 -1
  24. package/dist/cjs/core/reporting/snapshot.js.map +0 -1
  25. package/dist/cjs/core/reporting/step-reporter.js.map +0 -1
  26. package/dist/cjs/core/reporting/step-run.js.map +0 -1
  27. package/dist/cjs/core/reporting/step-status-end.js.map +0 -1
  28. package/dist/cjs/core/reporting/step-status.js.map +0 -1
  29. package/dist/cjs/core/reporting/step.js.map +0 -1
  30. package/dist/cjs/core/runner-protocol/index.js.map +0 -1
  31. package/dist/cjs/core/runner-protocol/request/capture-screenshot-request.js.map +0 -1
  32. package/dist/cjs/core/runner-protocol/request/control-request.js.map +0 -1
  33. package/dist/cjs/core/runner-protocol/request/get-server-process-pid.js.map +0 -1
  34. package/dist/cjs/core/runner-protocol/request/index.js.map +0 -1
  35. package/dist/cjs/core/runner-protocol/request/interactive-annotation-request.js.map +0 -1
  36. package/dist/cjs/core/runner-protocol/request/read-recording-request.js.map +0 -1
  37. package/dist/cjs/core/runner-protocol/request/runner-protocol-request.js.map +0 -1
  38. package/dist/cjs/core/runner-protocol/request/start-recording-request.js.map +0 -1
  39. package/dist/cjs/core/runner-protocol/request/stop-recording-request.js.map +0 -1
  40. package/dist/cjs/core/runner-protocol/response/index.js.map +0 -1
  41. package/dist/cjs/core/ui-control-commands/action.js.map +0 -1
  42. package/dist/cjs/core/ui-control-commands/control-command-code.js.map +0 -1
  43. package/dist/cjs/core/ui-control-commands/control-command.js.map +0 -1
  44. package/dist/cjs/core/ui-control-commands/index.js.map +0 -1
  45. package/dist/cjs/core/ui-control-commands/input-event.js.map +0 -1
  46. package/dist/cjs/execution/config-error.js.map +0 -1
  47. package/dist/cjs/execution/control-command-error.js.map +0 -1
  48. package/dist/cjs/execution/credentials-args.js.map +0 -1
  49. package/dist/cjs/execution/dsl.js.map +0 -1
  50. package/dist/cjs/execution/execution-runtime.js.map +0 -1
  51. package/dist/cjs/execution/index.js.map +0 -1
  52. package/dist/cjs/execution/inference-client.js.map +0 -1
  53. package/dist/cjs/execution/inference-response-error.js.map +0 -1
  54. package/dist/cjs/execution/is-image-required-interface.js.map +0 -1
  55. package/dist/cjs/execution/misc.js.map +0 -1
  56. package/dist/cjs/execution/model-composition-branch.js.map +0 -1
  57. package/dist/cjs/execution/read-environment-credentials.js.map +0 -1
  58. package/dist/cjs/execution/read-recording-response-stream-handler.js.map +0 -1
  59. package/dist/cjs/execution/repeat-error.js.map +0 -1
  60. package/dist/cjs/execution/ui-control-client-dependency-builder.js.map +0 -1
  61. package/dist/cjs/execution/ui-control-client.js.map +0 -1
  62. package/dist/cjs/execution/ui-controller-client-connection-state.js.map +0 -1
  63. package/dist/cjs/execution/ui-controller-client-error.js.map +0 -1
  64. package/dist/cjs/execution/ui-controller-client-interface.js.map +0 -1
  65. package/dist/cjs/execution/ui-controller-client.js.map +0 -1
  66. package/dist/cjs/lib/download-binaries.js.map +0 -1
  67. package/dist/cjs/lib/index.js.map +0 -1
  68. package/dist/cjs/lib/interactive_cli/add-script-package-json.d.ts +0 -1
  69. package/dist/cjs/lib/interactive_cli/add-script-package-json.js +0 -39
  70. package/dist/cjs/lib/interactive_cli/add-script-package-json.js.map +0 -1
  71. package/dist/cjs/lib/interactive_cli/cli-options-interface.js.map +0 -1
  72. package/dist/cjs/lib/interactive_cli/cli.js.map +0 -1
  73. package/dist/cjs/lib/interactive_cli/create-example-project.js.map +0 -1
  74. package/dist/cjs/lib/interactive_cli/index.js.map +0 -1
  75. package/dist/cjs/lib/libfuse-error.js.map +0 -1
  76. package/dist/cjs/lib/logger.js.map +0 -1
  77. package/dist/cjs/lib/timeout-error.js.map +0 -1
  78. package/dist/cjs/lib/ui-controller-args.js.map +0 -1
  79. package/dist/cjs/lib/ui-controller-darwin.js.map +0 -1
  80. package/dist/cjs/lib/ui-controller-facade.js.map +0 -1
  81. package/dist/cjs/lib/ui-controller-linux.js.map +0 -1
  82. package/dist/cjs/lib/ui-controller-win32.js.map +0 -1
  83. package/dist/cjs/lib/ui-controller.js.map +0 -1
  84. package/dist/cjs/lib/unkown-error.js.map +0 -1
  85. package/dist/cjs/lib/wayland-error.js.map +0 -1
  86. package/dist/cjs/main.js.map +0 -1
  87. package/dist/cjs/shared/index.js.map +0 -1
  88. package/dist/cjs/shared/log-levels.js.map +0 -1
  89. package/dist/cjs/shared/proxy-agent-args.js.map +0 -1
  90. package/dist/cjs/utils/analytics/analytics-interface.js.map +0 -1
  91. package/dist/cjs/utils/analytics/analytics.js.map +0 -1
  92. package/dist/cjs/utils/analytics/index.js.map +0 -1
  93. package/dist/cjs/utils/analytics/installation-timestamp-create-error.js.map +0 -1
  94. package/dist/cjs/utils/analytics/installation-timestamp-get-error.js.map +0 -1
  95. package/dist/cjs/utils/analytics/installation-timestamp.js.map +0 -1
  96. package/dist/cjs/utils/analytics/user-identifier-interface.js.map +0 -1
  97. package/dist/cjs/utils/analytics/user-identifier.js.map +0 -1
  98. package/dist/cjs/utils/base_64_image/base-64-image-error.js.map +0 -1
  99. package/dist/cjs/utils/base_64_image/base-64-image-string-error.js.map +0 -1
  100. package/dist/cjs/utils/base_64_image/base-64-image.js.map +0 -1
  101. package/dist/cjs/utils/base_64_image/sharp.js.map +0 -1
  102. package/dist/cjs/utils/http/credentials.js.map +0 -1
  103. package/dist/cjs/utils/http/custom-errors/authentication-http-client-error.js.map +0 -1
  104. package/dist/cjs/utils/http/custom-errors/client-http-client-error.js.map +0 -1
  105. package/dist/cjs/utils/http/custom-errors/general-http-client-error.js.map +0 -1
  106. package/dist/cjs/utils/http/custom-errors/http-client-error.js.map +0 -1
  107. package/dist/cjs/utils/http/custom-errors/index.js.map +0 -1
  108. package/dist/cjs/utils/http/custom-errors/server-http-client-error.js.map +0 -1
  109. package/dist/cjs/utils/http/custom-errors/unkown-http-client-error.js.map +0 -1
  110. package/dist/cjs/utils/http/http-client-got.js.map +0 -1
  111. package/dist/cjs/utils/http/index.js.map +0 -1
  112. package/dist/cjs/utils/image-resize-errors/image-resizing-base-error.js.map +0 -1
  113. package/dist/cjs/utils/image-resize-errors/index.js.map +0 -1
  114. package/dist/cjs/utils/path.js.map +0 -1
  115. package/dist/cjs/utils/proxy/proxy-builder.js.map +0 -1
  116. package/dist/cjs/utils/resized-image-interface.js.map +0 -1
  117. package/dist/cjs/utils/transformations.js.map +0 -1
  118. package/dist/esm/core/annotation/annotation-writer.js.map +0 -1
  119. package/dist/esm/core/annotation/annotation.js.map +0 -1
  120. package/dist/esm/core/inference-response/inference-response.js.map +0 -1
  121. package/dist/esm/core/inference-response/invalid-model-type-error.js.map +0 -1
  122. package/dist/esm/core/inference-response/model-type.js.map +0 -1
  123. package/dist/esm/core/model/annotation-result/annotation-interface.js.map +0 -1
  124. package/dist/esm/core/model/annotation-result/boundary-box.js.map +0 -1
  125. package/dist/esm/core/model/annotation-result/detected-element.js.map +0 -1
  126. package/dist/esm/core/model/custom-element-json.js.map +0 -1
  127. package/dist/esm/core/model/custom-element.js.map +0 -1
  128. package/dist/esm/core/reporting/default-step.js.map +0 -1
  129. package/dist/esm/core/reporting/index.js.map +0 -1
  130. package/dist/esm/core/reporting/instruction.js.map +0 -1
  131. package/dist/esm/core/reporting/reporter-config.js.map +0 -1
  132. package/dist/esm/core/reporting/reporter.js.map +0 -1
  133. package/dist/esm/core/reporting/snapshot-detail-level.js.map +0 -1
  134. package/dist/esm/core/reporting/snapshot.js.map +0 -1
  135. package/dist/esm/core/reporting/step-reporter.js.map +0 -1
  136. package/dist/esm/core/reporting/step-run.js.map +0 -1
  137. package/dist/esm/core/reporting/step-status-end.js.map +0 -1
  138. package/dist/esm/core/reporting/step-status.js.map +0 -1
  139. package/dist/esm/core/reporting/step.js.map +0 -1
  140. package/dist/esm/core/runner-protocol/index.js.map +0 -1
  141. package/dist/esm/core/runner-protocol/request/capture-screenshot-request.js.map +0 -1
  142. package/dist/esm/core/runner-protocol/request/control-request.js.map +0 -1
  143. package/dist/esm/core/runner-protocol/request/get-server-process-pid.js.map +0 -1
  144. package/dist/esm/core/runner-protocol/request/index.js.map +0 -1
  145. package/dist/esm/core/runner-protocol/request/interactive-annotation-request.js.map +0 -1
  146. package/dist/esm/core/runner-protocol/request/read-recording-request.js.map +0 -1
  147. package/dist/esm/core/runner-protocol/request/runner-protocol-request.js.map +0 -1
  148. package/dist/esm/core/runner-protocol/request/start-recording-request.js.map +0 -1
  149. package/dist/esm/core/runner-protocol/request/stop-recording-request.js.map +0 -1
  150. package/dist/esm/core/runner-protocol/response/index.js.map +0 -1
  151. package/dist/esm/core/ui-control-commands/action.js.map +0 -1
  152. package/dist/esm/core/ui-control-commands/control-command-code.js.map +0 -1
  153. package/dist/esm/core/ui-control-commands/control-command.js.map +0 -1
  154. package/dist/esm/core/ui-control-commands/index.js.map +0 -1
  155. package/dist/esm/core/ui-control-commands/input-event.js.map +0 -1
  156. package/dist/esm/execution/config-error.js.map +0 -1
  157. package/dist/esm/execution/control-command-error.js.map +0 -1
  158. package/dist/esm/execution/credentials-args.js.map +0 -1
  159. package/dist/esm/execution/dsl.js.map +0 -1
  160. package/dist/esm/execution/execution-runtime.js.map +0 -1
  161. package/dist/esm/execution/index.js.map +0 -1
  162. package/dist/esm/execution/inference-client.js.map +0 -1
  163. package/dist/esm/execution/inference-response-error.js.map +0 -1
  164. package/dist/esm/execution/is-image-required-interface.js.map +0 -1
  165. package/dist/esm/execution/misc.js.map +0 -1
  166. package/dist/esm/execution/model-composition-branch.js.map +0 -1
  167. package/dist/esm/execution/read-environment-credentials.js.map +0 -1
  168. package/dist/esm/execution/read-recording-response-stream-handler.js.map +0 -1
  169. package/dist/esm/execution/repeat-error.js.map +0 -1
  170. package/dist/esm/execution/ui-control-client-dependency-builder.js.map +0 -1
  171. package/dist/esm/execution/ui-control-client.js.map +0 -1
  172. package/dist/esm/execution/ui-controller-client-connection-state.js.map +0 -1
  173. package/dist/esm/execution/ui-controller-client-error.js.map +0 -1
  174. package/dist/esm/execution/ui-controller-client-interface.js.map +0 -1
  175. package/dist/esm/execution/ui-controller-client.js.map +0 -1
  176. package/dist/esm/lib/download-binaries.js.map +0 -1
  177. package/dist/esm/lib/index.js.map +0 -1
  178. package/dist/esm/lib/interactive_cli/add-script-package-json.d.ts +0 -1
  179. package/dist/esm/lib/interactive_cli/add-script-package-json.js +0 -32
  180. package/dist/esm/lib/interactive_cli/add-script-package-json.js.map +0 -1
  181. package/dist/esm/lib/interactive_cli/cli-options-interface.js.map +0 -1
  182. package/dist/esm/lib/interactive_cli/cli.js.map +0 -1
  183. package/dist/esm/lib/interactive_cli/create-example-project.js.map +0 -1
  184. package/dist/esm/lib/interactive_cli/index.js.map +0 -1
  185. package/dist/esm/lib/libfuse-error.js.map +0 -1
  186. package/dist/esm/lib/logger.js.map +0 -1
  187. package/dist/esm/lib/timeout-error.js.map +0 -1
  188. package/dist/esm/lib/ui-controller-args.js.map +0 -1
  189. package/dist/esm/lib/ui-controller-darwin.js.map +0 -1
  190. package/dist/esm/lib/ui-controller-facade.js.map +0 -1
  191. package/dist/esm/lib/ui-controller-linux.js.map +0 -1
  192. package/dist/esm/lib/ui-controller-win32.js.map +0 -1
  193. package/dist/esm/lib/ui-controller.js.map +0 -1
  194. package/dist/esm/lib/unkown-error.js.map +0 -1
  195. package/dist/esm/lib/wayland-error.js.map +0 -1
  196. package/dist/esm/main.js.map +0 -1
  197. package/dist/esm/shared/index.js.map +0 -1
  198. package/dist/esm/shared/log-levels.js.map +0 -1
  199. package/dist/esm/shared/proxy-agent-args.js.map +0 -1
  200. package/dist/esm/utils/analytics/analytics-interface.js.map +0 -1
  201. package/dist/esm/utils/analytics/analytics.js.map +0 -1
  202. package/dist/esm/utils/analytics/index.js.map +0 -1
  203. package/dist/esm/utils/analytics/installation-timestamp-create-error.js.map +0 -1
  204. package/dist/esm/utils/analytics/installation-timestamp-get-error.js.map +0 -1
  205. package/dist/esm/utils/analytics/installation-timestamp.js.map +0 -1
  206. package/dist/esm/utils/analytics/user-identifier-interface.js.map +0 -1
  207. package/dist/esm/utils/analytics/user-identifier.js.map +0 -1
  208. package/dist/esm/utils/base_64_image/base-64-image-error.js.map +0 -1
  209. package/dist/esm/utils/base_64_image/base-64-image-string-error.js.map +0 -1
  210. package/dist/esm/utils/base_64_image/base-64-image.js.map +0 -1
  211. package/dist/esm/utils/base_64_image/sharp.js.map +0 -1
  212. package/dist/esm/utils/http/credentials.js.map +0 -1
  213. package/dist/esm/utils/http/custom-errors/authentication-http-client-error.js.map +0 -1
  214. package/dist/esm/utils/http/custom-errors/client-http-client-error.js.map +0 -1
  215. package/dist/esm/utils/http/custom-errors/general-http-client-error.js.map +0 -1
  216. package/dist/esm/utils/http/custom-errors/http-client-error.js.map +0 -1
  217. package/dist/esm/utils/http/custom-errors/index.js.map +0 -1
  218. package/dist/esm/utils/http/custom-errors/server-http-client-error.js.map +0 -1
  219. package/dist/esm/utils/http/custom-errors/unkown-http-client-error.js.map +0 -1
  220. package/dist/esm/utils/http/http-client-got.js.map +0 -1
  221. package/dist/esm/utils/http/index.js.map +0 -1
  222. package/dist/esm/utils/image-resize-errors/image-resizing-base-error.js.map +0 -1
  223. package/dist/esm/utils/image-resize-errors/index.js.map +0 -1
  224. package/dist/esm/utils/path.js.map +0 -1
  225. package/dist/esm/utils/proxy/proxy-builder.js.map +0 -1
  226. package/dist/esm/utils/resized-image-interface.js.map +0 -1
  227. package/dist/esm/utils/transformations.js.map +0 -1
  228. package/dist/example_projects_templates/configs/jasmine.config.json +0 -12
@@ -180,7 +180,7 @@ export declare class FluentFilters extends FluentBase {
180
180
  * .customElement({
181
181
  * customImage: './logo.png', // required
182
182
  * name: 'myLogo', // optional
183
- * threshold: 0.9, // optional, defaults to 0.9
183
+ * threshold: 0.5, // optional, defaults to 0.5
184
184
  * stopThreshold: 0.9, // optional, defaults to 0.9
185
185
  * rotationDegreePerStep: 0, // optional, defaults to 0
186
186
  * imageCompareFormat: 'grayscale', // optional, defaults to 'grayscale'
@@ -196,7 +196,7 @@ export declare class FluentFilters extends FluentBase {
196
196
  * - **name** (*`string`, optional*):
197
197
  * - A unique name that can be used for filtering for the custom element. If not given, any text inside the custom image will be detected via OCR.
198
198
  * - **threshold** (*`number`, optional*):
199
- * - A threshold for how much a UI element needs to be similar to the custom element as defined by the image. Takes values between `0.0` (== all elements are recognized as the custom element which is probably not what you want) and `1.0` (== elements need to look exactly like the `customImage` which is unlikely to be achieved as even minor differences count). Defaults to `0.9`.
199
+ * - A threshold for how much a UI element needs to be similar to the custom element as defined by the image. Takes values between `0.0` (== all elements are recognized as the custom element which is probably not what you want) and `1.0` (== elements need to look exactly like the `customImage` which is unlikely to be achieved as even minor differences count). Defaults to `0.5`.
200
200
  * - **stopThreshold** (*`number`, optional*):
201
201
  * - A threshold for when to stop searching for UI elements similar to the custom element. As soon as UI elements have been found that are at least as similar as the `stopThreshold`, the search is going to stop. After that elements are filtered using the `threshold`. Because of that the `stopThreshold` should be greater than or equal to `threshold`. It is primarily to be used as a speed improvement (by lowering the value). Takes values between `0.0` and `1.0`. Defaults to `0.9`.
202
202
  * - **rotationDegreePerStep** (*`number`, optional*):
@@ -312,7 +312,7 @@ export declare class FluentFilters extends FluentBase {
312
312
  * await aui.get().text().withTextRegex('\b[Ss]\w+').exec()
313
313
  * ```
314
314
  *
315
- * ![](https://docs.askui.com/img/gif/withtextregex.gif)
315
+ * ![](https://docs.askui.com/img/gif/withTextRegex.gif)
316
316
  *
317
317
  *
318
318
  *
@@ -337,7 +337,7 @@ export declare class FluentFilters extends FluentBase {
337
337
  * await aui.moveMouseTo().text().withExactText('Password').exec()
338
338
  * ```
339
339
  *
340
- * ![](https://docs.askui.com/img/gif/withexacttext.gif)
340
+ * ![](https://docs.askui.com/img/gif/withExactText.gif)
341
341
  *
342
342
  *
343
343
  *
@@ -373,7 +373,7 @@ export declare class FluentFilters extends FluentBase {
373
373
  * **Important: _Matching only returns the best matching element when you use it with `get()`_**
374
374
  *
375
375
  * A bit of playing around to find a matching description is sometimes needed:
376
- * E.g., `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
376
+ * For example, `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
377
377
  * Generally, the more detail the better.
378
378
  *
379
379
  * We also recommend to not restrict the type of element by using the general selector `element()` as shown in the examples below.
@@ -539,17 +539,46 @@ export declare class FluentFiltersOrRelations extends FluentFilters {
539
539
  *
540
540
  * **Examples:**
541
541
  * ```typescript
542
- * -------------- -------------- --------------
543
- * | leftEl | | rightEl0 | | rightEl1 |
544
- * -------------- -------------- --------------
542
+ * ---------- --------- ---------
543
+ * | button | | text0 | | text3 |
544
+ * ---------- --------- --------- ---------
545
+ * | text1 | ---------
546
+ * --------- | text2 |
547
+ * ---------
545
548
  *
546
- * // Returns rightEl0 because rightEl0 is the first element right of leftEl
547
- * ...rightEl().rightOf().leftEl()
548
- * ...rightEl().rightOf(0).leftEl()
549
- * // Returns rightEl1 because rightEl1 is the second element right of leftEl
550
- * ...rightEl().rightOf(1).leftEl()
551
- * // Returns no element because leftEl is left of rightEl
552
- * ...leftEl().rightOf().rightEl()
549
+ * // General explanation for element_center_line
550
+ * // This will find text0 and text3
551
+ * ...text().rightOf(..., 'element_center_line').button()
552
+ *
553
+ * // General explanation for element_edge_area
554
+ * // This will find text0, text1 and text3
555
+ * ...text().rightOf(..., 'element_edge_area').button()
556
+ *
557
+ * // General explanation and display_edge_area
558
+ * // This will find text0, text1, text2 and text3
559
+ * ...text().rightOf(..., 'display_edge_area').button()
560
+ *
561
+ * // More examples:
562
+ * // Returns text0 because it is the first element rightOf button
563
+ * ...text().rightOf().button()
564
+ * ...text().rightOf(0).button()
565
+ * ...text().rightOf(0, 'element_edge_area').button()
566
+ *
567
+ * // Returns text3 because it is the second text touched by the
568
+ * // horizontal line from the center of button
569
+ * // Notice: text1 is not touched!
570
+ * ...text().rightOf(1, 'element_center_line').button()
571
+ *
572
+ * // Returns text3 because it is the third text touched by the
573
+ * // vertical area rightOf the y-axis of button
574
+ * // Notice: text2 is not touched!
575
+ * ...text().rightOf(2, 'element_edge_area').button()
576
+ *
577
+ * // Returns text2 because it is the third element rightOf button
578
+ * ...text().rightOf(2, 'display_edge_area').button()
579
+ *
580
+ * // Returns no element because button is rightOf the texts
581
+ * ...button().rightOf().text()
553
582
  * ```
554
583
  * ![](https://docs.askui.com/img/gif/rightOf.gif)
555
584
  *
@@ -571,17 +600,46 @@ export declare class FluentFiltersOrRelations extends FluentFilters {
571
600
  *
572
601
  * **Examples:**
573
602
  * ```typescript
574
- * -------------- -------------- --------------
575
- * | leftEl1 | | leftEl0 | | rightEl |
576
- * -------------- -------------- --------------
603
+ * --------- --------- ----------
604
+ * | text3 | | text0 | | button |
605
+ * --------- --------- --------- ----------
606
+ * --------- | text1 |
607
+ * | text2 | ---------
608
+ * ---------
609
+ *
610
+ * // General explanation for element_center_line
611
+ * // This will find text0 and text3
612
+ * ...text().leftOf(..., 'element_center_line').button()
613
+ *
614
+ * // General explanation for element_edge_area
615
+ * // This will find text0, text1 and text3
616
+ * ...text().leftOf(..., 'element_edge_area').button()
617
+ *
618
+ * // General explanation and display_edge_area
619
+ * // This will find text0, text1, text2 and text3
620
+ * ...text().leftOf(..., 'display_edge_area').button()
621
+ *
622
+ * // More examples:
623
+ * // Returns text0 because it is the first element leftOf button
624
+ * ...text().leftOf().button()
625
+ * ...text().leftOf(0).button()
626
+ * ...text().leftOf(0, 'element_edge_area').button()
627
+ *
628
+ * // Returns text3 because it is the second text touched by the
629
+ * // horizontal line from the center of button
630
+ * // Notice: text1 is not touched!
631
+ * ...text().leftOf(1, 'element_center_line').button()
632
+ *
633
+ * // Returns text3 because it is the third text touched by the
634
+ * // vertical area leftOf the y-axis of button
635
+ * // Notice: text2 is not touched!
636
+ * ...text().leftOf(2, 'element_edge_area').button()
637
+ *
638
+ * // Returns text2 because it is the third element leftOf button
639
+ * ...text().leftOf(2, 'display_edge_area').button()
577
640
  *
578
- * // Returns leftEl0 because leftEl0 is the first element left of rightEl
579
- * ...leftEl().leftOf().rightEl()
580
- * ...leftEl().leftOf(0).rightEl()
581
- * // Returns leftEl1 because leftEl1 is the second element left of rightEl
582
- * ...leftEl().leftOf(1).rightEl()
583
- * // Returns no element because rightEl is left of leftEl
584
- * ...rightEl().leftOf().leftEl()
641
+ * // Returns no element because button is rightOf the texts
642
+ * ...button().leftOf().text()
585
643
  * ```
586
644
  * ![](https://docs.askui.com/img/gif/leftOf.gif)
587
645
  *
@@ -603,22 +661,54 @@ export declare class FluentFiltersOrRelations extends FluentFilters {
603
661
  *
604
662
  * **Examples:**
605
663
  * ```typescript
606
- * --------------
607
- * | text |
608
- * --------------
609
- * --------------
610
- * | button0 |
611
- * --------------
612
- * --------------
613
- * | button1 |
614
- * --------------
615
- *
664
+ * ------------
665
+ * | text |
666
+ * ------------
667
+ * ------------
668
+ * | button0 |
669
+ * ------------
670
+ * -----------
671
+ * | button1 |
672
+ * -----------
673
+ * -----------
674
+ * | button2 |
675
+ * -----------
676
+ * ------------
677
+ * | button3 |
678
+ * ------------
679
+ *
680
+ * // General explanation for element_center_line
681
+ * // This will find button0 and button3
682
+ * ...button().below(..., 'element_center_line').text()
683
+ *
684
+ * // General explanation for element_edge_area
685
+ * // This will find button0, button1 and button3
686
+ * ...button().below(..., 'element_edge_area').text()
687
+ *
688
+ * // General explanation and display_edge_area
689
+ * // This will find button0, button1, button2 and button3
690
+ * ...button().below(..., 'display_edge_area').text()
691
+ *
692
+ * // More examples:
616
693
  * // Returns button0 because button0 is the first button below text
617
694
  * ...button().below().text()
618
695
  * ...button().below(0).text()
619
- * // Returns button1 because button1 is the second button below text
620
- * ...button().below(1).text()
621
- * // Returns no element because text is above button
696
+ * ...button().below(0, 'element_edge_area').text()
697
+ *
698
+ * // Returns button3 because it is the second button touched by the
699
+ * // vertical line from the center of text
700
+ * // Notice: button1 is not touched
701
+ * ...button().below(1, 'element_center_line').text()
702
+ *
703
+ * // Returns button3 because it is the third button touched by the
704
+ * // vertical area below the x-axis of text
705
+ * // Notice: button2 is not touched!
706
+ * ...button().below(2, 'element_edge_area').text()
707
+ *
708
+ * // Returns button2 because it is the third element below text
709
+ * ...button().below(2, 'display_edge_area').text()
710
+ *
711
+ * // Returns no element because text is above the buttons
622
712
  * ...text().below().button()
623
713
  * ```
624
714
  * ![](https://docs.askui.com/img/gif/below.gif)
@@ -641,22 +731,54 @@ export declare class FluentFiltersOrRelations extends FluentFilters {
641
731
  *
642
732
  * **Examples:**
643
733
  * ```typescript
644
- * --------------
645
- * | text1 |
646
- * --------------
647
- * --------------
648
- * | text0 |
649
- * --------------
650
- * --------------
651
- * | button |
652
- * --------------
653
- *
654
- * // Returns text0 because text0 is the first element above button
734
+ * ------------
735
+ * | text3 |
736
+ * ------------
737
+ * ------------
738
+ * | text2 |
739
+ * ------------
740
+ * ------------
741
+ * | text1 |
742
+ * ------------
743
+ * ------------
744
+ * | text0 |
745
+ * ------------
746
+ * ------------
747
+ * | button |
748
+ * ------------
749
+ *
750
+ * // General explanation for element_center_line
751
+ * // This will find text0 and text3
752
+ * ...text().above(..., 'element_center_line').button()
753
+ *
754
+ * // General explanation for element_edge_area
755
+ * // This will find text0, text1 and text3
756
+ * ...text().above(..., 'element_edge_area').button()
757
+ *
758
+ * // General explanation and display_edge_area
759
+ * // This will find text0, text1, text2 and text3
760
+ * ...text().above(..., 'display_edge_area').button()
761
+ *
762
+ * // More examples:
763
+ * // Returns text0 because it is the first element above button
655
764
  * ...text().above().button()
656
765
  * ...text().above(0).button()
657
- * // Returns text1 because text1 is the second element above button
658
- * ...text().above(1).button()
659
- * // Returns no element because button is below text
766
+ * ...text().above(0, 'element_edge_area').button()
767
+ *
768
+ * // Returns text3 because it is the second text touched by the
769
+ * // vertical line from the center of button
770
+ * // Notice: text1 is not touched!
771
+ * ...text().above(1, 'element_center_line').button()
772
+ *
773
+ * // Returns text3 because it is the third text touched by the
774
+ * // vertical area above the x-axis of button
775
+ * // Notice: text2 is not touched!
776
+ * ...text().above(2, 'element_edge_area').button()
777
+ *
778
+ * // Returns text2 because it is the third element above button
779
+ * ...text().above(2, 'display_edge_area').button()
780
+ *
781
+ * // Returns no element because button is below the texts
660
782
  * ...button().above().text()
661
783
  * ```
662
784
  * ![](https://docs.askui.com/img/gif/above.gif)
@@ -868,7 +990,7 @@ export declare class FluentFiltersCondition extends FluentBase {
868
990
  * .customElement({
869
991
  * customImage: './logo.png', // required
870
992
  * name: 'myLogo', // optional
871
- * threshold: 0.9, // optional, defaults to 0.9
993
+ * threshold: 0.5, // optional, defaults to 0.5
872
994
  * stopThreshold: 0.9, // optional, defaults to 0.9
873
995
  * rotationDegreePerStep: 0, // optional, defaults to 0
874
996
  * imageCompareFormat: 'grayscale', // optional, defaults to 'grayscale'
@@ -884,7 +1006,7 @@ export declare class FluentFiltersCondition extends FluentBase {
884
1006
  * - **name** (*`string`, optional*):
885
1007
  * - A unique name that can be used for filtering for the custom element. If not given, any text inside the custom image will be detected via OCR.
886
1008
  * - **threshold** (*`number`, optional*):
887
- * - A threshold for how much a UI element needs to be similar to the custom element as defined by the image. Takes values between `0.0` (== all elements are recognized as the custom element which is probably not what you want) and `1.0` (== elements need to look exactly like the `customImage` which is unlikely to be achieved as even minor differences count). Defaults to `0.9`.
1009
+ * - A threshold for how much a UI element needs to be similar to the custom element as defined by the image. Takes values between `0.0` (== all elements are recognized as the custom element which is probably not what you want) and `1.0` (== elements need to look exactly like the `customImage` which is unlikely to be achieved as even minor differences count). Defaults to `0.5`.
888
1010
  * - **stopThreshold** (*`number`, optional*):
889
1011
  * - A threshold for when to stop searching for UI elements similar to the custom element. As soon as UI elements have been found that are at least as similar as the `stopThreshold`, the search is going to stop. After that elements are filtered using the `threshold`. Because of that the `stopThreshold` should be greater than or equal to `threshold`. It is primarily to be used as a speed improvement (by lowering the value). Takes values between `0.0` and `1.0`. Defaults to `0.9`.
890
1012
  * - **rotationDegreePerStep** (*`number`, optional*):
@@ -1000,7 +1122,7 @@ export declare class FluentFiltersCondition extends FluentBase {
1000
1122
  * await aui.get().text().withTextRegex('\b[Ss]\w+').exec()
1001
1123
  * ```
1002
1124
  *
1003
- * ![](https://docs.askui.com/img/gif/withtextregex.gif)
1125
+ * ![](https://docs.askui.com/img/gif/withTextRegex.gif)
1004
1126
  *
1005
1127
  *
1006
1128
  *
@@ -1025,7 +1147,7 @@ export declare class FluentFiltersCondition extends FluentBase {
1025
1147
  * await aui.moveMouseTo().text().withExactText('Password').exec()
1026
1148
  * ```
1027
1149
  *
1028
- * ![](https://docs.askui.com/img/gif/withexacttext.gif)
1150
+ * ![](https://docs.askui.com/img/gif/withExactText.gif)
1029
1151
  *
1030
1152
  *
1031
1153
  *
@@ -1061,7 +1183,7 @@ export declare class FluentFiltersCondition extends FluentBase {
1061
1183
  * **Important: _Matching only returns the best matching element when you use it with `get()`_**
1062
1184
  *
1063
1185
  * A bit of playing around to find a matching description is sometimes needed:
1064
- * E.g., `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
1186
+ * For example, `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
1065
1187
  * Generally, the more detail the better.
1066
1188
  *
1067
1189
  * We also recommend to not restrict the type of element by using the general selector `element()` as shown in the examples below.
@@ -1227,17 +1349,46 @@ export declare class FluentFiltersOrRelationsCondition extends FluentFiltersCond
1227
1349
  *
1228
1350
  * **Examples:**
1229
1351
  * ```typescript
1230
- * -------------- -------------- --------------
1231
- * | leftEl | | rightEl0 | | rightEl1 |
1232
- * -------------- -------------- --------------
1352
+ * ---------- --------- ---------
1353
+ * | button | | text0 | | text3 |
1354
+ * ---------- --------- --------- ---------
1355
+ * | text1 | ---------
1356
+ * --------- | text2 |
1357
+ * ---------
1358
+ *
1359
+ * // General explanation for element_center_line
1360
+ * // This will find text0 and text3
1361
+ * ...text().rightOf(..., 'element_center_line').button()
1362
+ *
1363
+ * // General explanation for element_edge_area
1364
+ * // This will find text0, text1 and text3
1365
+ * ...text().rightOf(..., 'element_edge_area').button()
1366
+ *
1367
+ * // General explanation and display_edge_area
1368
+ * // This will find text0, text1, text2 and text3
1369
+ * ...text().rightOf(..., 'display_edge_area').button()
1370
+ *
1371
+ * // More examples:
1372
+ * // Returns text0 because it is the first element rightOf button
1373
+ * ...text().rightOf().button()
1374
+ * ...text().rightOf(0).button()
1375
+ * ...text().rightOf(0, 'element_edge_area').button()
1376
+ *
1377
+ * // Returns text3 because it is the second text touched by the
1378
+ * // horizontal line from the center of button
1379
+ * // Notice: text1 is not touched!
1380
+ * ...text().rightOf(1, 'element_center_line').button()
1233
1381
  *
1234
- * // Returns rightEl0 because rightEl0 is the first element right of leftEl
1235
- * ...rightEl().rightOf().leftEl()
1236
- * ...rightEl().rightOf(0).leftEl()
1237
- * // Returns rightEl1 because rightEl1 is the second element right of leftEl
1238
- * ...rightEl().rightOf(1).leftEl()
1239
- * // Returns no element because leftEl is left of rightEl
1240
- * ...leftEl().rightOf().rightEl()
1382
+ * // Returns text3 because it is the third text touched by the
1383
+ * // vertical area rightOf the y-axis of button
1384
+ * // Notice: text2 is not touched!
1385
+ * ...text().rightOf(2, 'element_edge_area').button()
1386
+ *
1387
+ * // Returns text2 because it is the third element rightOf button
1388
+ * ...text().rightOf(2, 'display_edge_area').button()
1389
+ *
1390
+ * // Returns no element because button is rightOf the texts
1391
+ * ...button().rightOf().text()
1241
1392
  * ```
1242
1393
  * ![](https://docs.askui.com/img/gif/rightOf.gif)
1243
1394
  *
@@ -1259,17 +1410,46 @@ export declare class FluentFiltersOrRelationsCondition extends FluentFiltersCond
1259
1410
  *
1260
1411
  * **Examples:**
1261
1412
  * ```typescript
1262
- * -------------- -------------- --------------
1263
- * | leftEl1 | | leftEl0 | | rightEl |
1264
- * -------------- -------------- --------------
1413
+ * --------- --------- ----------
1414
+ * | text3 | | text0 | | button |
1415
+ * --------- --------- --------- ----------
1416
+ * --------- | text1 |
1417
+ * | text2 | ---------
1418
+ * ---------
1419
+ *
1420
+ * // General explanation for element_center_line
1421
+ * // This will find text0 and text3
1422
+ * ...text().leftOf(..., 'element_center_line').button()
1423
+ *
1424
+ * // General explanation for element_edge_area
1425
+ * // This will find text0, text1 and text3
1426
+ * ...text().leftOf(..., 'element_edge_area').button()
1427
+ *
1428
+ * // General explanation and display_edge_area
1429
+ * // This will find text0, text1, text2 and text3
1430
+ * ...text().leftOf(..., 'display_edge_area').button()
1431
+ *
1432
+ * // More examples:
1433
+ * // Returns text0 because it is the first element leftOf button
1434
+ * ...text().leftOf().button()
1435
+ * ...text().leftOf(0).button()
1436
+ * ...text().leftOf(0, 'element_edge_area').button()
1437
+ *
1438
+ * // Returns text3 because it is the second text touched by the
1439
+ * // horizontal line from the center of button
1440
+ * // Notice: text1 is not touched!
1441
+ * ...text().leftOf(1, 'element_center_line').button()
1265
1442
  *
1266
- * // Returns leftEl0 because leftEl0 is the first element left of rightEl
1267
- * ...leftEl().leftOf().rightEl()
1268
- * ...leftEl().leftOf(0).rightEl()
1269
- * // Returns leftEl1 because leftEl1 is the second element left of rightEl
1270
- * ...leftEl().leftOf(1).rightEl()
1271
- * // Returns no element because rightEl is left of leftEl
1272
- * ...rightEl().leftOf().leftEl()
1443
+ * // Returns text3 because it is the third text touched by the
1444
+ * // vertical area leftOf the y-axis of button
1445
+ * // Notice: text2 is not touched!
1446
+ * ...text().leftOf(2, 'element_edge_area').button()
1447
+ *
1448
+ * // Returns text2 because it is the third element leftOf button
1449
+ * ...text().leftOf(2, 'display_edge_area').button()
1450
+ *
1451
+ * // Returns no element because button is rightOf the texts
1452
+ * ...button().leftOf().text()
1273
1453
  * ```
1274
1454
  * ![](https://docs.askui.com/img/gif/leftOf.gif)
1275
1455
  *
@@ -1291,22 +1471,54 @@ export declare class FluentFiltersOrRelationsCondition extends FluentFiltersCond
1291
1471
  *
1292
1472
  * **Examples:**
1293
1473
  * ```typescript
1294
- * --------------
1295
- * | text |
1296
- * --------------
1297
- * --------------
1298
- * | button0 |
1299
- * --------------
1300
- * --------------
1301
- * | button1 |
1302
- * --------------
1303
- *
1474
+ * ------------
1475
+ * | text |
1476
+ * ------------
1477
+ * ------------
1478
+ * | button0 |
1479
+ * ------------
1480
+ * -----------
1481
+ * | button1 |
1482
+ * -----------
1483
+ * -----------
1484
+ * | button2 |
1485
+ * -----------
1486
+ * ------------
1487
+ * | button3 |
1488
+ * ------------
1489
+ *
1490
+ * // General explanation for element_center_line
1491
+ * // This will find button0 and button3
1492
+ * ...button().below(..., 'element_center_line').text()
1493
+ *
1494
+ * // General explanation for element_edge_area
1495
+ * // This will find button0, button1 and button3
1496
+ * ...button().below(..., 'element_edge_area').text()
1497
+ *
1498
+ * // General explanation and display_edge_area
1499
+ * // This will find button0, button1, button2 and button3
1500
+ * ...button().below(..., 'display_edge_area').text()
1501
+ *
1502
+ * // More examples:
1304
1503
  * // Returns button0 because button0 is the first button below text
1305
1504
  * ...button().below().text()
1306
1505
  * ...button().below(0).text()
1307
- * // Returns button1 because button1 is the second button below text
1308
- * ...button().below(1).text()
1309
- * // Returns no element because text is above button
1506
+ * ...button().below(0, 'element_edge_area').text()
1507
+ *
1508
+ * // Returns button3 because it is the second button touched by the
1509
+ * // vertical line from the center of text
1510
+ * // Notice: button1 is not touched
1511
+ * ...button().below(1, 'element_center_line').text()
1512
+ *
1513
+ * // Returns button3 because it is the third button touched by the
1514
+ * // vertical area below the x-axis of text
1515
+ * // Notice: button2 is not touched!
1516
+ * ...button().below(2, 'element_edge_area').text()
1517
+ *
1518
+ * // Returns button2 because it is the third element below text
1519
+ * ...button().below(2, 'display_edge_area').text()
1520
+ *
1521
+ * // Returns no element because text is above the buttons
1310
1522
  * ...text().below().button()
1311
1523
  * ```
1312
1524
  * ![](https://docs.askui.com/img/gif/below.gif)
@@ -1329,22 +1541,54 @@ export declare class FluentFiltersOrRelationsCondition extends FluentFiltersCond
1329
1541
  *
1330
1542
  * **Examples:**
1331
1543
  * ```typescript
1332
- * --------------
1333
- * | text1 |
1334
- * --------------
1335
- * --------------
1336
- * | text0 |
1337
- * --------------
1338
- * --------------
1339
- * | button |
1340
- * --------------
1341
- *
1342
- * // Returns text0 because text0 is the first element above button
1544
+ * ------------
1545
+ * | text3 |
1546
+ * ------------
1547
+ * ------------
1548
+ * | text2 |
1549
+ * ------------
1550
+ * ------------
1551
+ * | text1 |
1552
+ * ------------
1553
+ * ------------
1554
+ * | text0 |
1555
+ * ------------
1556
+ * ------------
1557
+ * | button |
1558
+ * ------------
1559
+ *
1560
+ * // General explanation for element_center_line
1561
+ * // This will find text0 and text3
1562
+ * ...text().above(..., 'element_center_line').button()
1563
+ *
1564
+ * // General explanation for element_edge_area
1565
+ * // This will find text0, text1 and text3
1566
+ * ...text().above(..., 'element_edge_area').button()
1567
+ *
1568
+ * // General explanation and display_edge_area
1569
+ * // This will find text0, text1, text2 and text3
1570
+ * ...text().above(..., 'display_edge_area').button()
1571
+ *
1572
+ * // More examples:
1573
+ * // Returns text0 because it is the first element above button
1343
1574
  * ...text().above().button()
1344
1575
  * ...text().above(0).button()
1345
- * // Returns text1 because text1 is the second element above button
1346
- * ...text().above(1).button()
1347
- * // Returns no element because button is below text
1576
+ * ...text().above(0, 'element_edge_area').button()
1577
+ *
1578
+ * // Returns text3 because it is the second text touched by the
1579
+ * // vertical line from the center of button
1580
+ * // Notice: text1 is not touched!
1581
+ * ...text().above(1, 'element_center_line').button()
1582
+ *
1583
+ * // Returns text3 because it is the third text touched by the
1584
+ * // vertical area above the x-axis of button
1585
+ * // Notice: text2 is not touched!
1586
+ * ...text().above(2, 'element_edge_area').button()
1587
+ *
1588
+ * // Returns text2 because it is the third element above button
1589
+ * ...text().above(2, 'display_edge_area').button()
1590
+ *
1591
+ * // Returns no element because button is below the texts
1348
1592
  * ...button().above().text()
1349
1593
  * ```
1350
1594
  * ![](https://docs.askui.com/img/gif/above.gif)
@@ -1458,7 +1702,7 @@ declare class ExecCondition extends Exec {
1458
1702
  export declare abstract class FluentCommand extends FluentBase {
1459
1703
  constructor();
1460
1704
  /**
1461
- * Expects a condition, e.g., `exists()` or `notExits()`.
1705
+ * Expects a condition, for example, `exists()` or `notExits()`.
1462
1706
  *
1463
1707
  * Use the structure `expect().<your filter>.(exists()|notExists())` as shown in the examples below.
1464
1708
  *
@@ -1496,7 +1740,7 @@ export declare abstract class FluentCommand extends FluentBase {
1496
1740
  * await aui.moveMouseTo().text().withText('Grinning_Face').exec()
1497
1741
  * ```
1498
1742
  *
1499
- * ![](https://docs.askui.com/img/gif/movemouseto.gif)
1743
+ * ![](https://docs.askui.com/img/gif/moveMouseTo.gif)
1500
1744
  *
1501
1745
  *
1502
1746
  *
@@ -1532,7 +1776,7 @@ export declare abstract class FluentCommand extends FluentBase {
1532
1776
  * await aui.scrollInside(0,-500).text().withText('Bottom sheet').exec();
1533
1777
  * ```
1534
1778
  *
1535
- * ![](https://docs.askui.com/img/gif/scrollinside.gif)
1779
+ * ![](https://docs.askui.com/img/gif/scrollInside.gif)
1536
1780
  *
1537
1781
  * @param {number} x_offset - A (positive/negative) x direction.
1538
1782
  * @param {number} y_offset - A (positive/negative) y direction.
@@ -1604,7 +1848,7 @@ export declare abstract class FluentCommand extends FluentBase {
1604
1848
  * await aui.moveMouseRelatively(0, 50).exec();
1605
1849
  * ```
1606
1850
  *
1607
- * ![](https://docs.askui.com/img/gif/movemouserelatively.gif)
1851
+ * ![](https://docs.askui.com/img/gif/moveMouseRelatively.gif)
1608
1852
  *
1609
1853
  * @param {number} x_offset - A (positive/negative) x direction.
1610
1854
  * @param {number} y_offset - A (positive/negative) y direction.
@@ -1735,7 +1979,7 @@ export declare abstract class FluentCommand extends FluentBase {
1735
1979
  * await aui.mouseDoubleLeftClick().exec();
1736
1980
  * ```
1737
1981
  *
1738
- * ![](https://docs.askui.com/img/gif/mousedoubleleftclick.gif)
1982
+ * ![](https://docs.askui.com/img/gif/mouseDoubleLeftClick.gif)
1739
1983
  *
1740
1984
  * @return {Exec}
1741
1985
  */
@@ -1877,7 +2121,7 @@ export declare abstract class FluentCommand extends FluentBase {
1877
2121
  * await aui.pressAndroidTwoKey('volume_down', 'power').exec();
1878
2122
  * ```
1879
2123
  *
1880
- * ![](https://docs.askui.com/img/gif/pressAndroidTwoKey.gif)
2124
+ * ![](https://docs.askui.com/img/gif/pressAndroidTwoKeys.gif)
1881
2125
  *
1882
2126
  * @param {ANDROID_KEY} first_key - A Android key
1883
2127
  * @param {ANDROID_KEY} second_key - A Android key
@@ -2059,7 +2303,7 @@ export declare class FluentFiltersGetter extends FluentBase {
2059
2303
  * .customElement({
2060
2304
  * customImage: './logo.png', // required
2061
2305
  * name: 'myLogo', // optional
2062
- * threshold: 0.9, // optional, defaults to 0.9
2306
+ * threshold: 0.5, // optional, defaults to 0.5
2063
2307
  * stopThreshold: 0.9, // optional, defaults to 0.9
2064
2308
  * rotationDegreePerStep: 0, // optional, defaults to 0
2065
2309
  * imageCompareFormat: 'grayscale', // optional, defaults to 'grayscale'
@@ -2075,7 +2319,7 @@ export declare class FluentFiltersGetter extends FluentBase {
2075
2319
  * - **name** (*`string`, optional*):
2076
2320
  * - A unique name that can be used for filtering for the custom element. If not given, any text inside the custom image will be detected via OCR.
2077
2321
  * - **threshold** (*`number`, optional*):
2078
- * - A threshold for how much a UI element needs to be similar to the custom element as defined by the image. Takes values between `0.0` (== all elements are recognized as the custom element which is probably not what you want) and `1.0` (== elements need to look exactly like the `customImage` which is unlikely to be achieved as even minor differences count). Defaults to `0.9`.
2322
+ * - A threshold for how much a UI element needs to be similar to the custom element as defined by the image. Takes values between `0.0` (== all elements are recognized as the custom element which is probably not what you want) and `1.0` (== elements need to look exactly like the `customImage` which is unlikely to be achieved as even minor differences count). Defaults to `0.5`.
2079
2323
  * - **stopThreshold** (*`number`, optional*):
2080
2324
  * - A threshold for when to stop searching for UI elements similar to the custom element. As soon as UI elements have been found that are at least as similar as the `stopThreshold`, the search is going to stop. After that elements are filtered using the `threshold`. Because of that the `stopThreshold` should be greater than or equal to `threshold`. It is primarily to be used as a speed improvement (by lowering the value). Takes values between `0.0` and `1.0`. Defaults to `0.9`.
2081
2325
  * - **rotationDegreePerStep** (*`number`, optional*):
@@ -2191,7 +2435,7 @@ export declare class FluentFiltersGetter extends FluentBase {
2191
2435
  * await aui.get().text().withTextRegex('\b[Ss]\w+').exec()
2192
2436
  * ```
2193
2437
  *
2194
- * ![](https://docs.askui.com/img/gif/withtextregex.gif)
2438
+ * ![](https://docs.askui.com/img/gif/withTextRegex.gif)
2195
2439
  *
2196
2440
  *
2197
2441
  *
@@ -2216,7 +2460,7 @@ export declare class FluentFiltersGetter extends FluentBase {
2216
2460
  * await aui.moveMouseTo().text().withExactText('Password').exec()
2217
2461
  * ```
2218
2462
  *
2219
- * ![](https://docs.askui.com/img/gif/withexacttext.gif)
2463
+ * ![](https://docs.askui.com/img/gif/withExactText.gif)
2220
2464
  *
2221
2465
  *
2222
2466
  *
@@ -2252,7 +2496,7 @@ export declare class FluentFiltersGetter extends FluentBase {
2252
2496
  * **Important: _Matching only returns the best matching element when you use it with `get()`_**
2253
2497
  *
2254
2498
  * A bit of playing around to find a matching description is sometimes needed:
2255
- * E.g., `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
2499
+ * For example, `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
2256
2500
  * Generally, the more detail the better.
2257
2501
  *
2258
2502
  * We also recommend to not restrict the type of element by using the general selector `element()` as shown in the examples below.
@@ -2418,17 +2662,46 @@ export declare class FluentFiltersOrRelationsGetter extends FluentFiltersGetter
2418
2662
  *
2419
2663
  * **Examples:**
2420
2664
  * ```typescript
2421
- * -------------- -------------- --------------
2422
- * | leftEl | | rightEl0 | | rightEl1 |
2423
- * -------------- -------------- --------------
2665
+ * ---------- --------- ---------
2666
+ * | button | | text0 | | text3 |
2667
+ * ---------- --------- --------- ---------
2668
+ * | text1 | ---------
2669
+ * --------- | text2 |
2670
+ * ---------
2671
+ *
2672
+ * // General explanation for element_center_line
2673
+ * // This will find text0 and text3
2674
+ * ...text().rightOf(..., 'element_center_line').button()
2675
+ *
2676
+ * // General explanation for element_edge_area
2677
+ * // This will find text0, text1 and text3
2678
+ * ...text().rightOf(..., 'element_edge_area').button()
2679
+ *
2680
+ * // General explanation and display_edge_area
2681
+ * // This will find text0, text1, text2 and text3
2682
+ * ...text().rightOf(..., 'display_edge_area').button()
2424
2683
  *
2425
- * // Returns rightEl0 because rightEl0 is the first element right of leftEl
2426
- * ...rightEl().rightOf().leftEl()
2427
- * ...rightEl().rightOf(0).leftEl()
2428
- * // Returns rightEl1 because rightEl1 is the second element right of leftEl
2429
- * ...rightEl().rightOf(1).leftEl()
2430
- * // Returns no element because leftEl is left of rightEl
2431
- * ...leftEl().rightOf().rightEl()
2684
+ * // More examples:
2685
+ * // Returns text0 because it is the first element rightOf button
2686
+ * ...text().rightOf().button()
2687
+ * ...text().rightOf(0).button()
2688
+ * ...text().rightOf(0, 'element_edge_area').button()
2689
+ *
2690
+ * // Returns text3 because it is the second text touched by the
2691
+ * // horizontal line from the center of button
2692
+ * // Notice: text1 is not touched!
2693
+ * ...text().rightOf(1, 'element_center_line').button()
2694
+ *
2695
+ * // Returns text3 because it is the third text touched by the
2696
+ * // vertical area rightOf the y-axis of button
2697
+ * // Notice: text2 is not touched!
2698
+ * ...text().rightOf(2, 'element_edge_area').button()
2699
+ *
2700
+ * // Returns text2 because it is the third element rightOf button
2701
+ * ...text().rightOf(2, 'display_edge_area').button()
2702
+ *
2703
+ * // Returns no element because button is rightOf the texts
2704
+ * ...button().rightOf().text()
2432
2705
  * ```
2433
2706
  * ![](https://docs.askui.com/img/gif/rightOf.gif)
2434
2707
  *
@@ -2450,17 +2723,46 @@ export declare class FluentFiltersOrRelationsGetter extends FluentFiltersGetter
2450
2723
  *
2451
2724
  * **Examples:**
2452
2725
  * ```typescript
2453
- * -------------- -------------- --------------
2454
- * | leftEl1 | | leftEl0 | | rightEl |
2455
- * -------------- -------------- --------------
2726
+ * --------- --------- ----------
2727
+ * | text3 | | text0 | | button |
2728
+ * --------- --------- --------- ----------
2729
+ * --------- | text1 |
2730
+ * | text2 | ---------
2731
+ * ---------
2732
+ *
2733
+ * // General explanation for element_center_line
2734
+ * // This will find text0 and text3
2735
+ * ...text().leftOf(..., 'element_center_line').button()
2736
+ *
2737
+ * // General explanation for element_edge_area
2738
+ * // This will find text0, text1 and text3
2739
+ * ...text().leftOf(..., 'element_edge_area').button()
2456
2740
  *
2457
- * // Returns leftEl0 because leftEl0 is the first element left of rightEl
2458
- * ...leftEl().leftOf().rightEl()
2459
- * ...leftEl().leftOf(0).rightEl()
2460
- * // Returns leftEl1 because leftEl1 is the second element left of rightEl
2461
- * ...leftEl().leftOf(1).rightEl()
2462
- * // Returns no element because rightEl is left of leftEl
2463
- * ...rightEl().leftOf().leftEl()
2741
+ * // General explanation and display_edge_area
2742
+ * // This will find text0, text1, text2 and text3
2743
+ * ...text().leftOf(..., 'display_edge_area').button()
2744
+ *
2745
+ * // More examples:
2746
+ * // Returns text0 because it is the first element leftOf button
2747
+ * ...text().leftOf().button()
2748
+ * ...text().leftOf(0).button()
2749
+ * ...text().leftOf(0, 'element_edge_area').button()
2750
+ *
2751
+ * // Returns text3 because it is the second text touched by the
2752
+ * // horizontal line from the center of button
2753
+ * // Notice: text1 is not touched!
2754
+ * ...text().leftOf(1, 'element_center_line').button()
2755
+ *
2756
+ * // Returns text3 because it is the third text touched by the
2757
+ * // vertical area leftOf the y-axis of button
2758
+ * // Notice: text2 is not touched!
2759
+ * ...text().leftOf(2, 'element_edge_area').button()
2760
+ *
2761
+ * // Returns text2 because it is the third element leftOf button
2762
+ * ...text().leftOf(2, 'display_edge_area').button()
2763
+ *
2764
+ * // Returns no element because button is rightOf the texts
2765
+ * ...button().leftOf().text()
2464
2766
  * ```
2465
2767
  * ![](https://docs.askui.com/img/gif/leftOf.gif)
2466
2768
  *
@@ -2482,22 +2784,54 @@ export declare class FluentFiltersOrRelationsGetter extends FluentFiltersGetter
2482
2784
  *
2483
2785
  * **Examples:**
2484
2786
  * ```typescript
2485
- * --------------
2486
- * | text |
2487
- * --------------
2488
- * --------------
2489
- * | button0 |
2490
- * --------------
2491
- * --------------
2492
- * | button1 |
2493
- * --------------
2494
- *
2787
+ * ------------
2788
+ * | text |
2789
+ * ------------
2790
+ * ------------
2791
+ * | button0 |
2792
+ * ------------
2793
+ * -----------
2794
+ * | button1 |
2795
+ * -----------
2796
+ * -----------
2797
+ * | button2 |
2798
+ * -----------
2799
+ * ------------
2800
+ * | button3 |
2801
+ * ------------
2802
+ *
2803
+ * // General explanation for element_center_line
2804
+ * // This will find button0 and button3
2805
+ * ...button().below(..., 'element_center_line').text()
2806
+ *
2807
+ * // General explanation for element_edge_area
2808
+ * // This will find button0, button1 and button3
2809
+ * ...button().below(..., 'element_edge_area').text()
2810
+ *
2811
+ * // General explanation and display_edge_area
2812
+ * // This will find button0, button1, button2 and button3
2813
+ * ...button().below(..., 'display_edge_area').text()
2814
+ *
2815
+ * // More examples:
2495
2816
  * // Returns button0 because button0 is the first button below text
2496
2817
  * ...button().below().text()
2497
2818
  * ...button().below(0).text()
2498
- * // Returns button1 because button1 is the second button below text
2499
- * ...button().below(1).text()
2500
- * // Returns no element because text is above button
2819
+ * ...button().below(0, 'element_edge_area').text()
2820
+ *
2821
+ * // Returns button3 because it is the second button touched by the
2822
+ * // vertical line from the center of text
2823
+ * // Notice: button1 is not touched
2824
+ * ...button().below(1, 'element_center_line').text()
2825
+ *
2826
+ * // Returns button3 because it is the third button touched by the
2827
+ * // vertical area below the x-axis of text
2828
+ * // Notice: button2 is not touched!
2829
+ * ...button().below(2, 'element_edge_area').text()
2830
+ *
2831
+ * // Returns button2 because it is the third element below text
2832
+ * ...button().below(2, 'display_edge_area').text()
2833
+ *
2834
+ * // Returns no element because text is above the buttons
2501
2835
  * ...text().below().button()
2502
2836
  * ```
2503
2837
  * ![](https://docs.askui.com/img/gif/below.gif)
@@ -2520,22 +2854,54 @@ export declare class FluentFiltersOrRelationsGetter extends FluentFiltersGetter
2520
2854
  *
2521
2855
  * **Examples:**
2522
2856
  * ```typescript
2523
- * --------------
2524
- * | text1 |
2525
- * --------------
2526
- * --------------
2527
- * | text0 |
2528
- * --------------
2529
- * --------------
2530
- * | button |
2531
- * --------------
2532
- *
2533
- * // Returns text0 because text0 is the first element above button
2857
+ * ------------
2858
+ * | text3 |
2859
+ * ------------
2860
+ * ------------
2861
+ * | text2 |
2862
+ * ------------
2863
+ * ------------
2864
+ * | text1 |
2865
+ * ------------
2866
+ * ------------
2867
+ * | text0 |
2868
+ * ------------
2869
+ * ------------
2870
+ * | button |
2871
+ * ------------
2872
+ *
2873
+ * // General explanation for element_center_line
2874
+ * // This will find text0 and text3
2875
+ * ...text().above(..., 'element_center_line').button()
2876
+ *
2877
+ * // General explanation for element_edge_area
2878
+ * // This will find text0, text1 and text3
2879
+ * ...text().above(..., 'element_edge_area').button()
2880
+ *
2881
+ * // General explanation and display_edge_area
2882
+ * // This will find text0, text1, text2 and text3
2883
+ * ...text().above(..., 'display_edge_area').button()
2884
+ *
2885
+ * // More examples:
2886
+ * // Returns text0 because it is the first element above button
2534
2887
  * ...text().above().button()
2535
2888
  * ...text().above(0).button()
2536
- * // Returns text1 because text1 is the second element above button
2537
- * ...text().above(1).button()
2538
- * // Returns no element because button is below text
2889
+ * ...text().above(0, 'element_edge_area').button()
2890
+ *
2891
+ * // Returns text3 because it is the second text touched by the
2892
+ * // vertical line from the center of button
2893
+ * // Notice: text1 is not touched!
2894
+ * ...text().above(1, 'element_center_line').button()
2895
+ *
2896
+ * // Returns text3 because it is the third text touched by the
2897
+ * // vertical area above the x-axis of button
2898
+ * // Notice: text2 is not touched!
2899
+ * ...text().above(2, 'element_edge_area').button()
2900
+ *
2901
+ * // Returns text2 because it is the third element above button
2902
+ * ...text().above(2, 'display_edge_area').button()
2903
+ *
2904
+ * // Returns no element because button is below the texts
2539
2905
  * ...button().above().text()
2540
2906
  * ```
2541
2907
  * ![](https://docs.askui.com/img/gif/above.gif)