@rxap/layout
Version:
This library provides a set of Angular components and services for creating consistent and configurable application layouts, including headers, footers, side navigation, and content areas. It offers features such as dynamic navigation, external applicatio
68 lines (54 loc) • 1.76 kB
JavaScript
(function(compodoc) {
function LunrSearchEngine() {
this.index = undefined;
this.store = {};
this.name = 'LunrSearchEngine';
}
LunrSearchEngine.prototype.init = function() {
var that = this,
d = new promise.Promise();
that.index = lunr.Index.load(COMPODOC_SEARCH_INDEX.index);
that.store = COMPODOC_SEARCH_INDEX.store;
d.done();
return d;
};
LunrSearchEngine.prototype.search = function(q, offset, length) {
var that = this,
results = [],
d = new promise.Promise();
if (this.index) {
results = $.map(this.index.search('*' + q + '*'), function(result) {
var doc = that.store[result.ref];
return {
title: doc.title,
url: doc.url,
body: doc.summary || doc.body
};
});
}
d.done({
query: q,
results: length === 0 ? results : results.slice(0, length),
count: results.length
});
return d;
};
compodoc.addEventListener(compodoc.EVENTS.READY, function(event) {
var engine = new LunrSearchEngine(),
initialized = false;
function query(q, offset, length) {
if (!initialized) throw new Error('Search has not been initialized');
return engine.search(q, offset, length);
}
compodoc.search = {
query: query
};
engine.init()
.then(function() {
initialized = true;
compodoc.dispatchEvent({
type: compodoc.EVENTS.SEARCH_READY
});
});
});
})(compodoc);