aboutsummaryrefslogtreecommitdiff
path: root/docs/dev/pkgdown.js
diff options
context:
space:
mode:
Diffstat (limited to 'docs/dev/pkgdown.js')
-rw-r--r--docs/dev/pkgdown.js162
1 files changed, 162 insertions, 0 deletions
diff --git a/docs/dev/pkgdown.js b/docs/dev/pkgdown.js
new file mode 100644
index 00000000..1a99c65f
--- /dev/null
+++ b/docs/dev/pkgdown.js
@@ -0,0 +1,162 @@
+/* http://gregfranko.com/blog/jquery-best-practices/ */
+(function($) {
+ $(function() {
+
+ $('nav.navbar').headroom();
+
+ Toc.init({
+ $nav: $("#toc"),
+ $scope: $("main h2, main h3, main h4, main h5, main h6")
+ });
+
+ if ($('#toc').length) {
+ $('body').scrollspy({
+ target: '#toc',
+ offset: $("nav.navbar").outerHeight() + 1
+ });
+ }
+
+ // Activate popovers
+ $('[data-bs-toggle="popover"]').popover({
+ container: 'body',
+ html: true,
+ trigger: 'focus',
+ placement: "top",
+ sanitize: false,
+ });
+
+ $('[data-bs-toggle="tooltip"]').tooltip();
+
+ /* Clipboard --------------------------*/
+
+ function changeTooltipMessage(element, msg) {
+ var tooltipOriginalTitle=element.getAttribute('data-bs-original-title');
+ element.setAttribute('data-bs-original-title', msg);
+ $(element).tooltip('show');
+ element.setAttribute('data-bs-original-title', tooltipOriginalTitle);
+ }
+
+ if(ClipboardJS.isSupported()) {
+ $(document).ready(function() {
+ var copyButton = "<button type='button' class='btn btn-primary btn-copy-ex' title='Copy to clipboard' aria-label='Copy to clipboard' data-toggle='tooltip' data-placement='left' data-trigger='hover' data-clipboard-copy><i class='fa fa-copy'></i></button>";
+
+ $("div.sourceCode").addClass("hasCopyButton");
+
+ // Insert copy buttons:
+ $(copyButton).prependTo(".hasCopyButton");
+
+ // Initialize tooltips:
+ $('.btn-copy-ex').tooltip({container: 'body'});
+
+ // Initialize clipboard:
+ var clipboard = new ClipboardJS('[data-clipboard-copy]', {
+ text: function(trigger) {
+ return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, "");
+ }
+ });
+
+ clipboard.on('success', function(e) {
+ changeTooltipMessage(e.trigger, 'Copied!');
+ e.clearSelection();
+ });
+
+ clipboard.on('error', function(e) {
+ changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy');
+ });
+
+ });
+ }
+
+ /* Search marking --------------------------*/
+ var url = new URL(window.location.href);
+ var toMark = url.searchParams.get("q");
+ var mark = new Mark("main#main");
+ if (toMark) {
+ mark.mark(toMark, {
+ accuracy: {
+ value: "complementary",
+ limiters: [",", ".", ":", "/"],
+ }
+ });
+ }
+
+ /* Search --------------------------*/
+ /* Adapted from https://github.com/rstudio/bookdown/blob/2d692ba4b61f1e466c92e78fd712b0ab08c11d31/inst/resources/bs4_book/bs4_book.js#L25 */
+ // Initialise search index on focus
+ var fuse;
+ $("#search-input").focus(async function(e) {
+ if (fuse) {
+ return;
+ }
+
+ $(e.target).addClass("loading");
+ var response = await fetch($("#search-input").data("search-index"));
+ var data = await response.json();
+
+ var options = {
+ keys: ["what", "text", "code"],
+ ignoreLocation: true,
+ threshold: 0.1,
+ includeMatches: true,
+ includeScore: true,
+ };
+ fuse = new Fuse(data, options);
+
+ $(e.target).removeClass("loading");
+ });
+
+ // Use algolia autocomplete
+ var options = {
+ autoselect: true,
+ debug: true,
+ hint: false,
+ minLength: 2,
+ };
+ var q;
+async function searchFuse(query, callback) {
+ await fuse;
+
+ var items;
+ if (!fuse) {
+ items = [];
+ } else {
+ q = query;
+ var results = fuse.search(query, { limit: 20 });
+ items = results
+ .filter((x) => x.score <= 0.75)
+ .map((x) => x.item);
+ if (items.length === 0) {
+ items = [{dir:"Sorry 😿",previous_headings:"",title:"No results found.",what:"No results found.",path:window.location.href}];
+ }
+ }
+ callback(items);
+}
+ $("#search-input").autocomplete(options, [
+ {
+ name: "content",
+ source: searchFuse,
+ templates: {
+ suggestion: (s) => {
+ if (s.title == s.what) {
+ return `${s.dir} > <div class="search-details"> ${s.title}</div>`;
+ } else if (s.previous_headings == "") {
+ return `${s.dir} > <div class="search-details"> ${s.title}</div> > ${s.what}`;
+ } else {
+ return `${s.dir} > <div class="search-details"> ${s.title}</div> > ${s.previous_headings} > ${s.what}`;
+ }
+ },
+ },
+ },
+ ]).on('autocomplete:selected', function(event, s) {
+ window.location.href = s.path + "?q=" + q + "#" + s.id;
+ });
+ });
+})(window.jQuery || window.$)
+
+document.addEventListener('keydown', function(event) {
+ // Check if the pressed key is '/'
+ if (event.key === '/') {
+ event.preventDefault(); // Prevent any default action associated with the '/' key
+ document.getElementById('search-input').focus(); // Set focus to the search input
+ }
+});

Contact - Imprint