hast-util-menu-state
hast utility to get the state of a <menu>
element.
Install
npm:
npm install hast-util-menu-state
Use
var menuState = require('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
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.