a11y-outline

web extension to navigate document outlines easily
git clone https://git.ce9e.org/a11y-outline.git

commit
f404a1dd07048cee356a0eb0e337cfe586b2c0c6
parent
4cb1d0a0372faf1586c75f0abe99c8e2f57678f1
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2021-07-31 14:08
refactor: split data gathering from rendering

Diffstat

M src/outline.js 25 ++++++++++++++++---------

1 files changed, 16 insertions, 9 deletions


diff --git a/src/outline.js b/src/outline.js

@@ -63,19 +63,26 @@ var insertItem = function(item, list) {
   63    63 	list.push(item);
   64    64 };
   65    65 
   66    -1 var buildTree = function(role, dialog) {
   67    -1 	var matches = aria.querySelectorAll(document, role)
   68    -1 		.filter(function(el) {
   69    -1 			return !aria.matches(el, ':hidden');
   70    -1 		});
   -1    66 var getMatches = function(role) {
   -1    67 	return aria.querySelectorAll(document, role)
   -1    68 		.filter(el => !aria.matches(el, ':hidden'));
   -1    69 };
   71    70 
   -1    71 var buildTree = function(matches) {
   72    72 	var items = [];
   73    73 	for (var i = 0; i < matches.length; i++) {
   74    74 		insertItem(createItem(matches[i], i), items);
   75    75 	}
   76    -1 	var tree = treeview(items, dialog.id + '-' + role);
   -1    76 	return items;
   -1    77 };
   -1    78 
   -1    79 var renderTree = function(role, dialog) {
   -1    80 	var matches = getMatches(role);
   -1    81 	var tree = buildTree(matches);
   -1    82 
   -1    83 	var ul = treeview(tree, dialog.id + '-' + role);
   77    84 
   78    -1 	tree.addEventListener('click', function(event) {
   -1    85 	ul.addEventListener('click', function(event) {
   79    86 		if (event.target.matches('a')) {
   80    87 			event.preventDefault();
   81    88 			dialog.close();
@@ -88,13 +95,13 @@ var buildTree = function(role, dialog) {
   88    95 		}
   89    96 	});
   90    97 
   91    -1 	dialog.appendChild(tree);
   -1    98 	dialog.appendChild(ul);
   92    99 };
   93   100 
   94   101 var updateVisiblePane = function(select, dialog) {
   95   102 	var id = dialog.id + '-' + select.value;
   96   103 	if (!document.getElementById(id)) {
   97    -1 		buildTree(select.value, dialog);
   -1   104 		renderTree(select.value, dialog);
   98   105 	}
   99   106 
  100   107 	var trees = dialog.querySelectorAll('[role="tree"]');