diff --git a/lib/std/special/docs/main.js b/lib/std/special/docs/main.js index b11e10caa7..808a3d3d05 100644 --- a/lib/std/special/docs/main.js +++ b/lib/std/special/docs/main.js @@ -256,13 +256,15 @@ if (fnObj.combined === undefined) fnObj.combined = allCompTimeFnCallsResult(calls); if (fnObj.combined != null) renderContainer(fnObj.combined); - resizeDomList(domListFnExamples, calls.length, '
  • '); + var domListFnExamplesFragment = createDomListFragment(calls.length, '
  • '); for (var callI = 0; callI < calls.length; callI += 1) { - var liDom = domListFnExamples.children[callI]; + var liDom = domListFnExamplesFragment.children[callI]; liDom.innerHTML = getCallHtml(fnDecl, calls[callI]); } + domListFnExamples.innerHTML = ""; + domListFnExamples.appendChild(domListFnExamplesFragment); domFnExamples.classList.remove("hidden"); } else if (instantiations != null) { // TODO @@ -303,7 +305,7 @@ return; } - resizeDomList(domListParams, docCount, '
    '); + var domListParamsFragment = createDomListFragment(docCount, '
    '); var domIndex = 0; for (var i = 0; i < fields.length; i += 1) { @@ -312,7 +314,7 @@ if (fieldNode.docs == null) { continue; } - var divDom = domListParams.children[domIndex]; + var divDom = domListParamsFragment.children[domIndex]; domIndex += 1; var argTypeIndex = typeObj.args[i]; @@ -333,12 +335,15 @@ } divDom.innerHTML = html; } + + domListParams.innerHTML = ""; + domListParams.appendChild(domListParamsFragment); domSectParams.classList.remove("hidden"); } function renderNav() { var len = curNav.pkgNames.length + curNav.declNames.length; - resizeDomList(domListNav, len, '
  • '); + var domListNavFragment = createDomListFragment(len, '
  • '); var list = []; var hrefPkgNames = []; var hrefDeclNames = []; @@ -358,7 +363,7 @@ } for (var i = 0; i < list.length; i += 1) { - var liDom = domListNav.children[i]; + var liDom = domListNavFragment.children[i]; var aDom = liDom.children[0]; aDom.textContent = list[i].name; aDom.setAttribute('href', list[i].link); @@ -369,6 +374,8 @@ } } + domListNav.innerHTML = ""; + domListNav.appendChild(domListNavFragment); domSectNav.classList.remove("hidden"); } @@ -401,9 +408,9 @@ }); if (list.length !== 0) { - resizeDomList(domListPkgs, list.length, '
  • '); + var domListPkgsFragment = createDomListFragment(list.length, '
  • '); for (var i = 0; i < list.length; i += 1) { - var liDom = domListPkgs.children[i]; + var liDom = domListPkgsFragment.children[i]; var aDom = liDom.children[0]; aDom.textContent = list[i].name; aDom.setAttribute('href', navLinkPkg(list[i].pkg)); @@ -414,6 +421,8 @@ } } + domListPkgs.innerHTML = ""; + domListPkgs.appendChild(domListPkgsFragment); domSectPkgs.classList.remove("hidden"); } } @@ -454,29 +463,14 @@ return navLink(curNav.pkgNames, declNamesCopy); } - function resizeDomListDl(dlDom, desiredLen) { - // add the missing dom entries - var i, ev; - for (i = dlDom.childElementCount / 2; i < desiredLen; i += 1) { - dlDom.insertAdjacentHTML('beforeend', '
    '); - } - // remove extra dom entries - while (desiredLen < dlDom.childElementCount / 2) { - dlDom.removeChild(dlDom.lastChild); - dlDom.removeChild(dlDom.lastChild); - } - } - - function resizeDomList(listDom, desiredLen, templateHtml) { - // add the missing dom entries - var i, ev; - for (i = listDom.childElementCount; i < desiredLen; i += 1) { - listDom.insertAdjacentHTML('beforeend', templateHtml); - } - // remove extra dom entries - while (desiredLen < listDom.childElementCount) { - listDom.removeChild(listDom.lastChild); + function createDomListFragment(desiredLen, templateHtml) { + var templateHtmlContent = ""; + for (var i = 0; i < desiredLen; i++) { + templateHtmlContent += templateHtml; } + var domTemplate = document.createElement("template"); + domTemplate.innerHTML = templateHtmlContent; + return domTemplate.content; } function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl) { @@ -831,10 +825,10 @@ return operatorCompare(a.err.name.toLowerCase(), b.err.name.toLowerCase()); }); - resizeDomListDl(domListFnErrors, errorList.length); + var domListFnErrorsFragment = createDomListFragment(errorList.length, "
    "); for (var i = 0; i < errorList.length; i += 1) { - var nameTdDom = domListFnErrors.children[i * 2 + 0]; - var descTdDom = domListFnErrors.children[i * 2 + 1]; + var nameTdDom = domListFnErrorsFragment.children[i * 2 + 0]; + var descTdDom = domListFnErrorsFragment.children[i * 2 + 1]; nameTdDom.textContent = errorList[i].err.name; var docs = errorList[i].docs; if (docs != null) { @@ -843,6 +837,8 @@ descTdDom.textContent = ""; } } + domListFnErrors.innerHTML = ""; + domListFnErrors.appendChild(domListFnErrorsFragment); domTableFnErrors.classList.remove("hidden"); } domSectFnErrors.classList.remove("hidden"); @@ -1022,45 +1018,51 @@ } if (typesList.length !== 0) { - resizeDomList(domListTypes, typesList.length, '
  • '); + var domListTypesFragment = createDomListFragment(typesList.length, '
  • '); for (var i = 0; i < typesList.length; i += 1) { - var liDom = domListTypes.children[i]; + var liDom = domListTypesFragment.children[i]; var aDom = liDom.children[0]; var decl = typesList[i]; aDom.textContent = decl.name; aDom.setAttribute('href', navLinkDecl(decl.name)); } + domListTypes.innerHTML = ""; + domListTypes.appendChild(domListTypesFragment); domSectTypes.classList.remove("hidden"); } if (namespacesList.length !== 0) { - resizeDomList(domListNamespaces, namespacesList.length, '
  • '); + var domListNamespacesFragment = createDomListFragment(namespacesList.length, '
  • '); for (var i = 0; i < namespacesList.length; i += 1) { - var liDom = domListNamespaces.children[i]; + var liDom = domListNamespacesFragment.children[i]; var aDom = liDom.children[0]; var decl = namespacesList[i]; aDom.textContent = decl.name; aDom.setAttribute('href', navLinkDecl(decl.name)); } + domListNamespaces.innerHTML = ""; + domListNamespaces.appendChild(domListNamespacesFragment); domSectNamespaces.classList.remove("hidden"); } if (errSetsList.length !== 0) { - resizeDomList(domListErrSets, errSetsList.length, '
  • '); + var domListErrSetsFragment = createDomListFragment(errSetsList.length, '
  • '); for (var i = 0; i < errSetsList.length; i += 1) { - var liDom = domListErrSets.children[i]; + var liDom = domListErrSetsFragment.children[i]; var aDom = liDom.children[0]; var decl = errSetsList[i]; aDom.textContent = decl.name; aDom.setAttribute('href', navLinkDecl(decl.name)); } + domListErrSets.innerHTML = ""; + domListErrSets.appendChild(domListErrSetsFragment); domSectErrSets.classList.remove("hidden"); } if (fnsList.length !== 0) { - resizeDomList(domListFns, fnsList.length, ''); + var domListFnsFragment = createDomListFragment(fnsList.length, ''); for (var i = 0; i < fnsList.length; i += 1) { var decl = fnsList[i]; - var trDom = domListFns.children[i]; + var trDom = domListFnsFragment.children[i]; var tdFnCode = trDom.children[0]; var tdDesc = trDom.children[1]; @@ -1074,17 +1076,19 @@ tdDesc.textContent = ""; } } + domListFns.innerHTML = ""; + domListFns.appendChild(domListFnsFragment); domSectFns.classList.remove("hidden"); } if (container.fields != null && container.fields.length !== 0) { - resizeDomList(domListFields, container.fields.length, '
    '); + var domListFieldsFragment = createDomListFragment(container.fields.length, '
    '); var containerNode = zigAnalysis.astNodes[container.src]; for (var i = 0; i < container.fields.length; i += 1) { var field = container.fields[i]; var fieldNode = zigAnalysis.astNodes[containerNode.fields[i]]; - var divDom = domListFields.children[i]; + var divDom = domListFieldsFragment.children[i]; var html = '
    ' + escapeHtml(fieldNode.name);
     
    @@ -1107,15 +1111,17 @@
                     }
                     divDom.innerHTML = html;
                 }
    +            domListFields.innerHTML = "";
    +            domListFields.appendChild(domListFieldsFragment);
                 domSectFields.classList.remove("hidden");
             }
     
             if (varsList.length !== 0) {
    -            resizeDomList(domListGlobalVars, varsList.length,
    +            var domListGlobalVarsFragment = createDomListFragment(varsList.length,
                     '');
                 for (var i = 0; i < varsList.length; i += 1) {
                     var decl = varsList[i];
    -                var trDom = domListGlobalVars.children[i];
    +                var trDom = domListGlobalVarsFragment.children[i];
     
                     var tdName = trDom.children[0];
                     var tdNameA = tdName.children[0];
    @@ -1134,15 +1140,17 @@
                         tdDesc.textContent = "";
                     }
                 }
    +            domListGlobalVars.innerHTML = "";
    +            domListGlobalVars.appendChild(domListGlobalVarsFragment);
                 domSectGlobalVars.classList.remove("hidden");
             }
     
             if (valsList.length !== 0) {
    -            resizeDomList(domListValues, valsList.length,
    +            var domListValuesFragment = createDomListFragment(valsList.length,
                     '');
                 for (var i = 0; i < valsList.length; i += 1) {
                     var decl = valsList[i];
    -                var trDom = domListValues.children[i];
    +                var trDom = domListValuesFragment.children[i];
     
                     var tdName = trDom.children[0];
                     var tdNameA = tdName.children[0];
    @@ -1161,6 +1169,8 @@
                         tdDesc.textContent = "";
                     }
                 }
    +            domListValues.innerHTML = "";
    +            domListValues.appendChild(domListValuesFragment);
                 domSectValues.classList.remove("hidden");
             }
         }
    @@ -1768,7 +1778,7 @@
             if (ev.ctrlKey) name = "Ctrl+" + name;
             return name;
         }
    -    
    +
         function onWindowKeyDown(ev) {
             switch (getKeyString(ev)) {
                 case "Esc":
    @@ -1809,7 +1819,7 @@
     
         function startAsyncSearch() {
             clearAsyncSearch();
    -        searchTimer = setTimeout(startSearch, 100);
    +        searchTimer = setTimeout(startSearch, 10);
         }
         function startSearch() {
             clearAsyncSearch();
    @@ -1881,25 +1891,27 @@
             }
     
             if (matchedItems.length !== 0) {
    -            resizeDomList(domListSearchResults, matchedItems.length, '
  • '); - matchedItems.sort(function(a, b) { var cmp = operatorCompare(b.points, a.points); if (cmp != 0) return cmp; return operatorCompare(a.decl.name, b.decl.name); }); + var domListSearchResultsFragment = createDomListFragment(matchedItems.length, '
  • '); for (var i = 0; i < matchedItems.length; i += 1) { - var liDom = domListSearchResults.children[i]; + var liDom = domListSearchResultsFragment.children[i]; var aDom = liDom.children[0]; var match = matchedItems[i]; var lastPkgName = match.path.pkgNames[match.path.pkgNames.length - 1]; aDom.textContent = lastPkgName + "." + match.path.declNames.join('.'); aDom.setAttribute('href', navLink(match.path.pkgNames, match.path.declNames)); } - renderSearchCursor(); + domListSearchResults.innerHTML = ""; + domListSearchResults.appendChild(domListSearchResultsFragment); domSectSearchResults.classList.remove("hidden"); + + renderSearchCursor(); } else { domSectSearchNoResults.classList.remove("hidden"); }