@codedoc/core
Version:
Create beautiful modern documentation websites.
45 lines • 2.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.copyHeadings$ = exports.copyHeadings = void 0;
var transport_1 = require("@connectv/sdh/transport");
var rxjs_1 = require("rxjs");
var operators_1 = require("rxjs/operators");
var renderer_1 = require("../../transport/renderer");
var clipboard_1 = require("../../transport/clipboard");
var toast_1 = require("../util/toast");
var heading_link_1 = require("./heading-link");
function copyHeadings() {
var renderer = renderer_1.getRenderer();
transport_1.onReady(function () {
var sub;
var _exec = function () {
if (sub)
sub.unsubscribe();
sub = new rxjs_1.Subscription();
document.querySelectorAll('h1[id], h2[id], h3[id], h4[id], h5[id], h6[id]').forEach(function (heading$) {
var link = heading_link_1.headingLink(heading$);
if (link) {
var click$ = rxjs_1.fromEvent(heading$, 'mousedown').pipe(operators_1.filter(function (event) { return event.button === 0; }), operators_1.concatMap(function (start) {
return rxjs_1.fromEvent(heading$, 'mouseup').pipe(operators_1.take(1), operators_1.map(function (end) { return [start, end]; }));
}));
sub.add(click$.pipe(operators_1.buffer(click$.pipe(operators_1.debounceTime(200))), operators_1.filter(function (buffer) { return buffer.length === 1; }), operators_1.map(function (buffer) { return buffer[0]; }))
.subscribe(function (_a) {
var start = _a[0], end = _a[1];
var _b = [start, end], ms = _b[0], me = _b[1];
var dx = ms.clientX - me.clientX;
var dy = ms.clientY - me.clientY;
if (Math.sqrt(dx * dx + dy * dy) < 10) {
clipboard_1.copyToClipboard(link, function () { return renderer.render(renderer.create(toast_1.Toast, null, "Link Copied to Clipboard!")).on(document.body); });
}
;
}));
}
});
};
_exec();
window.addEventListener('navigation', _exec);
});
}
exports.copyHeadings = copyHeadings;
exports.copyHeadings$ = transport_1.funcTransport(copyHeadings);
//# sourceMappingURL=copy-headings.js.map