@codedoc/core
Version:
Create beautiful modern documentation websites.
46 lines • 2.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.codeLineHints$ = exports.initHintBox = void 0;
var rxjs_1 = require("rxjs");
var operators_1 = require("rxjs/operators");
var transport_1 = require("@connectv/sdh/transport");
var renderer_1 = require("../../../transport/renderer");
var component_1 = require("./component");
var commentRegex = new RegExp([
/\/\/\s?\-\-\>\s*(.*[^\s])\s*$/,
/\/\*\s?\-\-\>\s*(.*[^\s])\s*\*\/$/,
/\#\s?\-\-\>\s*(.*[^\s])\s*$/,
/\<\!\-\-\s?\>\s*(.*[^\s])\s*\-\-\>$/,
].map(function (r) { return "(?:" + r.source + ")"; }).join('|'));
function initHintBox() {
transport_1.onReady(function () {
var renderer = renderer_1.getRenderer();
var target = new rxjs_1.Subject();
renderer.render(renderer.create(component_1.HintBox, { target: target })).on(document.body);
var _exec = function () {
document.querySelectorAll('pre>code>div').forEach(function (line$) {
var hint = '';
var hint$;
line$.querySelectorAll('.token.comment').forEach(function (comment$) {
var match = commentRegex.exec(comment$.textContent || '');
if (match) {
hint = match.slice(1).find(function (_) { return _; }) || hint;
if (hint)
hint$ = comment$;
}
});
if (hint.length > 0 && hint$) {
hint$.style.opacity = '.5';
line$.setAttribute('data-hint', hint);
rxjs_1.fromEvent(line$, 'mouseenter').pipe(operators_1.mapTo(line$)).subscribe(target);
rxjs_1.fromEvent(line$, 'mouseleave').pipe(operators_1.mapTo(undefined)).subscribe(target);
}
});
};
_exec();
window.addEventListener('navigation', _exec);
});
}
exports.initHintBox = initHintBox;
exports.codeLineHints$ = transport_1.funcTransport(initHintBox);
//# sourceMappingURL=index.js.map