mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2025-02-17 18:49:21 +01:00
Improve search performance
This commit is contained in:
parent
50efda702a
commit
89fff8a6ab
File diff suppressed because one or more lines are too long
@ -151,7 +151,7 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
<script src="{{ base_url }}/assets/javascripts/application-01fc542e64.js"></script>
|
<script src="{{ base_url }}/assets/javascripts/application-134345668e.js"></script>
|
||||||
<script>app.initialize({url:{base:"{{ base_url }}"}})</script>
|
<script>app.initialize({url:{base:"{{ base_url }}"}})</script>
|
||||||
{% for path in extra_javascript %}
|
{% for path in extra_javascript %}
|
||||||
<script src="{{ path }}"></script>
|
<script src="{{ path }}"></script>
|
||||||
|
@ -40,6 +40,7 @@ export default class Result {
|
|||||||
* @property {HTMLElement} list_ - Search result list
|
* @property {HTMLElement} list_ - Search result list
|
||||||
* @property {Object} message_ - Search result messages
|
* @property {Object} message_ - Search result messages
|
||||||
* @property {Object} index_ - Search index
|
* @property {Object} index_ - Search index
|
||||||
|
* @property {string} value_ - Last input value
|
||||||
*
|
*
|
||||||
* @param {(string|HTMLElement)} el - Selector or HTML element
|
* @param {(string|HTMLElement)} el - Selector or HTML element
|
||||||
* @param {(Array<Object>|Function)} data - Function providing data or array
|
* @param {(Array<Object>|Function)} data - Function providing data or array
|
||||||
@ -153,13 +154,22 @@ export default class Result {
|
|||||||
if (!(target instanceof HTMLInputElement))
|
if (!(target instanceof HTMLInputElement))
|
||||||
throw new ReferenceError
|
throw new ReferenceError
|
||||||
|
|
||||||
|
/* Abort early, if input hasn't changed */
|
||||||
|
if (target.value === this.value_)
|
||||||
|
return
|
||||||
|
|
||||||
/* Clear current list */
|
/* Clear current list */
|
||||||
while (this.list_.firstChild)
|
while (this.list_.firstChild)
|
||||||
this.list_.removeChild(this.list_.firstChild)
|
this.list_.removeChild(this.list_.firstChild)
|
||||||
|
|
||||||
|
/* Abort early, if search input is empty */
|
||||||
|
this.value_ = target.value
|
||||||
|
if (this.value_.length === 0)
|
||||||
|
return
|
||||||
|
|
||||||
/* Perform search on index and group sections by document */
|
/* Perform search on index and group sections by document */
|
||||||
const result = this.index_
|
const result = this.index_
|
||||||
.search(target.value)
|
.search(this.value_)
|
||||||
.reduce((items, item) => {
|
.reduce((items, item) => {
|
||||||
const doc = this.docs_.get(item.ref)
|
const doc = this.docs_.get(item.ref)
|
||||||
if (doc.parent) {
|
if (doc.parent) {
|
||||||
@ -171,7 +181,7 @@ export default class Result {
|
|||||||
|
|
||||||
/* Assemble highlight regex from query string */
|
/* Assemble highlight regex from query string */
|
||||||
const match = new RegExp(
|
const match = new RegExp(
|
||||||
`\\b(${target.value.trim().replace(" ", "|")})`, "img")
|
`\\b(${this.value_.trim().replace(" ", "|")})`, "img")
|
||||||
const highlight = string => `<em>${string}</em>`
|
const highlight = string => `<em>${string}</em>`
|
||||||
|
|
||||||
/* Render results */
|
/* Render results */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user