-module(butterbee@page_module@table_element). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/butterbee/page_module/table_element.gleam"). -export([define/4, perform_action/4]). -export_type([node_table/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC( " Define elements for page module using this module.\n" "\n" " Example:\n" "\n" " ```gleam\n" " import butterbee/page_module/table_element.{type NodeTable}\n" "\n" " pub fn pokedex_table(\n" " driver: WebDriver(state),\n" " on_element: NodeTable,\n" " action: fn(_) -> WebDriver(new_state),\n" " ) {\n" " table_element.define(\n" " table: by.css(\"table#pokedex\"),\n" " table_row: by.css(\"tr\"),\n" " table_cell: by.css(\"td\"),\n" " table_width: 3,\n" " )\n" " |> table_element.perform_action(driver, on_element, action)\n" " }\n" " ```\n" "\n" " For a more complete example, see the [`page module`](https://hexdocs.pm/butterbee/page-modules) guide.\n" ). -type node_table() :: table | {row, integer()} | {cell, integer(), integer()}. -file("src/butterbee/page_module/table_element.gleam", 35). -spec define( butterbidi@browsing_context@types@locator:locator(), butterbidi@browsing_context@types@locator:locator(), butterbidi@browsing_context@types@locator:locator(), integer() ) -> {butterbidi@browsing_context@types@locator:locator(), butterbidi@browsing_context@types@locator:locator(), butterbidi@browsing_context@types@locator:locator(), integer()}. define(Table_locator, Table_row_locator, Table_cell_locator, Table_width) -> {Table_locator, Table_row_locator, Table_cell_locator, Table_width}. -file("src/butterbee/page_module/table_element.gleam", 44). -spec perform_action( {butterbidi@browsing_context@types@locator:locator(), butterbidi@browsing_context@types@locator:locator(), butterbidi@browsing_context@types@locator:locator(), integer()}, butterbee@webdriver:web_driver(any()), node_table(), fun((butterbee@webdriver:web_driver(butterbidi@script@types@remote_value:node_remote_value())) -> butterbee@webdriver:web_driver(WXS)) ) -> butterbee@webdriver:web_driver(WXS). perform_action(Locator, Driver, On_element, Action) -> {Table_locator, Table_row_locator, Table_cell_locator, Table_width} = Locator, _pipe@6 = case On_element of table -> butterbee@get:node(Driver, Table_locator); {row, Row} -> _pipe = Driver, _pipe@1 = butterbee@get:node(_pipe, Table_locator), _pipe@2 = butterbee@get:nodes_from_node(_pipe@1, Table_row_locator), butterbee@get:node_from_nodes(_pipe@2, Row); {cell, Row@1, Column} -> Cell = (Row@1 * Table_width) + Column, _pipe@3 = Driver, _pipe@4 = butterbee@get:node(_pipe@3, Table_locator), _pipe@5 = butterbee@get:nodes_from_node(_pipe@4, Table_cell_locator), butterbee@get:node_from_nodes(_pipe@5, Cell) end, Action(_pipe@6).