README
hast-util-menu-state
hast utility to get the state of a <menu>
element.
Install
This package is ESM only:
Node 12+ is needed to use it and it must be import
ed instead of require
d.
npm:
npm install hast-util-menu-state
Use
import {menuState} from 'hast-util-menu-state'
// If there’s no last element or that node is not a `menu`:
menuState([{type: 'element', tagName: 'a'}]) // => null
// If the last node is a `menu` without `type`:
menuState([{type: 'element', tagName: 'menu'}]) // => 'toolbar'
// If the last node is a `menu` with a `type`, or that node has
// a parent `menu` with a type:
menuState([
{type: 'element', tagName: 'menu', properties: {type: 'context'}},
{type: 'element', tagName: 'li'},
{type: 'element', tagName: 'menu'}
]) // => 'context'
API
This package exports the following identifiers: menuState
.
There is no default export.
menuState(nodes)
Get the state of a <menu>
element.
The state is calculated from the lowest <menu>
with a valid type
property.
If no <menu>
has a type
, it defaults to 'toolbar'
.
The algorithm stops looking for higher <menu>
s if a template
element,
or non-element, is found.
Parameters
nodes
(Array.<Node>
, optional) — Nodes to check, where the lastnode
is a<menu>
element. The first node is its root. All nodes are therefore inclusive ancestors.
Returns
string?
— either 'context'
or 'toolbar'
(the state the menu
is in), or
null
, if the last node is not a menu
element.
Security
hast-util-menu-state
does not change the syntax tree so there are no openings
for cross-site scripting (XSS) attacks.
Related
unist-util-visit-parents
— recursively walk over unist nodes, with ancestral information
Contribute
See contributing.md
in syntax-tree/.github
for ways to get
started.
See support.md
for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.