# Navigation JS


<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

## Public API

------------------------------------------------------------------------

### generate_navigation_js

``` python

def generate_navigation_js(
    config:TokenSelectorConfig, # config for this instance
    ids:TokenSelectorHtmlIds, # HTML IDs
)->str: # JS code fragment for the IIFE

```

*Generate mode-specific navigation and selection JS functions.*

``` python
from cjm_fasthtml_token_selector.core.config import TokenSelectorConfig, _reset_prefix_counter
from cjm_fasthtml_token_selector.core.html_ids import TokenSelectorHtmlIds

_reset_prefix_counter()

# Gap mode
cfg = TokenSelectorConfig(prefix="t", selection_mode="gap")
ids = TokenSelectorHtmlIds(prefix="t")
js = generate_navigation_js(cfg, ids)
assert "ns.moveLeft" in js
assert "ns.moveRight" in js
assert "ns.selectGap" in js
assert "ns.moveToFirst" in js
assert "ns.moveToLast" in js
print("Gap mode navigation JS generated!")

# Word mode
cfg_w = TokenSelectorConfig(prefix="tw", selection_mode="word")
js_w = generate_navigation_js(cfg_w, ids)
assert "ns.selectWord" in js_w
print("Word mode navigation JS generated!")

# Span mode
cfg_s = TokenSelectorConfig(prefix="ts", selection_mode="span")
js_s = generate_navigation_js(cfg_s, ids)
assert "ns.extendLeft" in js_s
assert "ns.extendRight" in js_s
assert "ns.selectToken" in js_s
print("Span mode navigation JS generated!")

_reset_prefix_counter()
print("All navigation JS tests passed!")
```

    Gap mode navigation JS generated!
    Word mode navigation JS generated!
    Span mode navigation JS generated!
    All navigation JS tests passed!
