master-wiki/.obsidian/plugins/obsidian-advanced-slides/plugin/search/plugin.js
Alexander Navarro 1671c76f23 Update from obsidian - thinkpad
Affected files:
.obsidian/community-plugins.json
.obsidian/plugins/obsidian-advanced-slides/css/layout.css
.obsidian/plugins/obsidian-advanced-slides/css/mattropolis.css
.obsidian/plugins/obsidian-advanced-slides/css/vs2015.css
.obsidian/plugins/obsidian-advanced-slides/data.json
.obsidian/plugins/obsidian-advanced-slides/dist/fontawesome/all.min.js
.obsidian/plugins/obsidian-advanced-slides/dist/reset.css
.obsidian/plugins/obsidian-advanced-slides/dist/reveal.css
.obsidian/plugins/obsidian-advanced-slides/dist/reveal.esm.js
.obsidian/plugins/obsidian-advanced-slides/dist/reveal.esm.js.map
.obsidian/plugins/obsidian-advanced-slides/dist/reveal.js
.obsidian/plugins/obsidian-advanced-slides/dist/reveal.js.map
.obsidian/plugins/obsidian-advanced-slides/dist/theme/beige.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/black.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/blood.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/consult.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/lato/lato.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/league-gothic/league-gothic.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/LICENSE
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff
.obsidian/plugins/obsidian-advanced-slides/dist/theme/fonts/source-sans-pro/source-sans-pro.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/league.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/mattropolis.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/moon.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/night.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/serif.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/simple.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/sky.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/solarized.css
.obsidian/plugins/obsidian-advanced-slides/dist/theme/white.css
.obsidian/plugins/obsidian-advanced-slides/distVersion.json
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/README.md
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/_style.css
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/blackboard.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/boardmarker-black.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/boardmarker-blue.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/boardmarker-green.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/boardmarker-orange.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/boardmarker-purple.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/boardmarker-red.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/boardmarker-yellow.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/chalk-blue.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/chalk-green.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/chalk-orange.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/chalk-purple.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/chalk-red.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/chalk-white.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/chalk-yellow.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/sponge.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/img/whiteboard.png
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/plugin (copy).js
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/plugin.js
.obsidian/plugins/obsidian-advanced-slides/plugin/chalkboard/style.css
.obsidian/plugins/obsidian-advanced-slides/plugin/chart/README.md
.obsidian/plugins/obsidian-advanced-slides/plugin/chart/chart.min.js
.obsidian/plugins/obsidian-advanced-slides/plugin/chart/plugin.js
.obsidian/plugins/obsidian-advanced-slides/plugin/customcontrols/README.md
.obsidian/plugins/obsidian-advanced-slides/plugin/customcontrols/plugin.js
.obsidian/plugins/obsidian-advanced-slides/plugin/customcontrols/style.css
.obsidian/plugins/obsidian-advanced-slides/plugin/elapsed-time-bar/elapsed-time-bar.js
.obsidian/plugins/obsidian-advanced-slides/plugin/highlight/highlight.esm.js
.obsidian/plugins/obsidian-advanced-slides/plugin/highlight/highlight.js
.obsidian/plugins/obsidian-advanced-slides/plugin/highlight/monokai.css
.obsidian/plugins/obsidian-advanced-slides/plugin/highlight/plugin.js
.obsidian/plugins/obsidian-advanced-slides/plugin/highlight/zenburn.css
.obsidian/plugins/obsidian-advanced-slides/plugin/markdown/markdown.esm.js
.obsidian/plugins/obsidian-advanced-slides/plugin/markdown/markdown.js
.obsidian/plugins/obsidian-advanced-slides/plugin/markdown/plugin.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/katex.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/math.esm.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/math.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/a11y/assistive-mml.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/a11y/complexity.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/a11y/explorer.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/a11y/semantic-enrich.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/adaptors/liteDOM.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/core.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/asciimath.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/mml.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/mml/entities.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/mml/extensions/mml3.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/mml/extensions/mml3.sef.json
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex-base.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex-full.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/action.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/all-packages.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/ams.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/amscd.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/autoload.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/bbox.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/boldsymbol.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/braket.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/bussproofs.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/cancel.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/centernot.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/color.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/colortbl.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/colorv2.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/configmacros.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/enclose.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/extpfeil.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/gensymb.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/html.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/mathtools.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/mhchem.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/newcommand.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/noerrors.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/noundefined.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/physics.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/require.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/setoptions.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/tagformat.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/textcomp.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/textmacros.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/unicode.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/upgreek.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/input/tex/extensions/verb.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/latest.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/loader.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/mml-chtml.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/mml-svg.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/node-main.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/tex.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/chtml/fonts/woff-v2/MathJax_Zero.woff
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/svg.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/output/svg/fonts/tex.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/sre/mathmaps/de.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/sre/mathmaps/en.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/sre/mathmaps/es.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/sre/mathmaps/fr.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/sre/mathmaps/hi.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/sre/mathmaps/it.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/sre/mathmaps/nemeth.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/sre/sre-node.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/sre/sre_browser.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/startup.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/tex-chtml-full.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/tex-chtml.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/tex-mml-chtml.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/tex-mml-svg.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/tex-svg-full.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/tex-svg.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/ui/lazy.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/ui/menu.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax/ui/safe.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax2.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/mathjax3.js
.obsidian/plugins/obsidian-advanced-slides/plugin/math/plugin.js
.obsidian/plugins/obsidian-advanced-slides/plugin/menu/CONTRIBUTING.md
.obsidian/plugins/obsidian-advanced-slides/plugin/menu/LICENSE
.obsidian/plugins/obsidian-advanced-slides/plugin/menu/README.md
.obsidian/plugins/obsidian-advanced-slides/plugin/menu/bower.json
.obsidian/plugins/obsidian-advanced-slides/plugin/menu/gulpfile.js
.obsidian/plugins/obsidian-advanced-slides/plugin/menu/menu.css
.obsidian/plugins/obsidian-advanced-slides/plugin/menu/menu.esm.js
.obsidian/plugins/obsidian-advanced-slides/plugin/menu/menu.js
.obsidian/plugins/obsidian-advanced-slides/plugin/menu/package.json
.obsidian/plugins/obsidian-advanced-slides/plugin/menu/plugin.js
.obsidian/plugins/obsidian-advanced-slides/plugin/mermaid/mermaid.esm.js
.obsidian/plugins/obsidian-advanced-slides/plugin/mermaid/mermaid.js
.obsidian/plugins/obsidian-advanced-slides/plugin/mermaid/plugin.js
.obsidian/plugins/obsidian-advanced-slides/plugin/notes/notes.esm.js
.obsidian/plugins/obsidian-advanced-slides/plugin/notes/notes.js
.obsidian/plugins/obsidian-advanced-slides/plugin/notes/plugin.js
.obsidian/plugins/obsidian-advanced-slides/plugin/notes/speaker-view.html
.obsidian/plugins/obsidian-advanced-slides/plugin/reveal-pointer/pointer.css
.obsidian/plugins/obsidian-advanced-slides/plugin/reveal-pointer/pointer.js
.obsidian/plugins/obsidian-advanced-slides/plugin/search/plugin.js
.obsidian/plugins/obsidian-advanced-slides/plugin/search/search.esm.js
.obsidian/plugins/obsidian-advanced-slides/plugin/search/search.js
.obsidian/plugins/obsidian-advanced-slides/plugin/zoom/plugin.js
.obsidian/plugins/obsidian-advanced-slides/plugin/zoom/zoom.esm.js
.obsidian/plugins/obsidian-advanced-slides/plugin/zoom/zoom.js
.obsidian/plugins/obsidian-advanced-slides/template/embed.html
.obsidian/plugins/obsidian-advanced-slides/template/reveal.html
.obsidian/plugins/obsidian-omnivore/data.json
01. Projects/Coding Mentorship/Temas/Pasted image 20240514115320.png
01. Projects/Coding Mentorship/Temas/Programación orientada a objectos.md
01. Projects/Coding Mentorship/Temas/Programación orientada a objetos.md
2024-05-14 12:39:59 -04:00

243 lines
No EOL
6.3 KiB
JavaScript

/*!
* Handles finding a text string anywhere in the slides and showing the next occurrence to the user
* by navigatating to that slide and highlighting it.
*
* @author Jon Snyder <snyder.jon@gmail.com>, February 2013
*/
const Plugin = () => {
// The reveal.js instance this plugin is attached to
let deck;
let searchElement;
let searchButton;
let searchInput;
let matchedSlides;
let currentMatchedIndex;
let searchboxDirty;
let hilitor;
function render() {
searchElement = document.createElement( 'div' );
searchElement.classList.add( 'searchbox' );
searchElement.style.position = 'absolute';
searchElement.style.top = '10px';
searchElement.style.right = '10px';
searchElement.style.zIndex = 10;
//embedded base64 search icon Designed by Sketchdock - http://www.sketchdock.com/:
searchElement.innerHTML = `<input type="search" class="searchinput" placeholder="Search..." style="vertical-align: top;"/>
</span>`;
searchInput = searchElement.querySelector( '.searchinput' );
searchInput.style.width = '240px';
searchInput.style.fontSize = '14px';
searchInput.style.padding = '4px 6px';
searchInput.style.color = '#000';
searchInput.style.background = '#fff';
searchInput.style.borderRadius = '2px';
searchInput.style.border = '0';
searchInput.style.outline = '0';
searchInput.style.boxShadow = '0 2px 18px rgba(0, 0, 0, 0.2)';
searchInput.style['-webkit-appearance'] = 'none';
deck.getRevealElement().appendChild( searchElement );
// searchButton.addEventListener( 'click', function(event) {
// doSearch();
// }, false );
searchInput.addEventListener( 'keyup', function( event ) {
switch (event.keyCode) {
case 13:
event.preventDefault();
doSearch();
searchboxDirty = false;
break;
default:
searchboxDirty = true;
}
}, false );
closeSearch();
}
function openSearch() {
if( !searchElement ) render();
searchElement.style.display = 'inline';
searchInput.focus();
searchInput.select();
}
function closeSearch() {
if( !searchElement ) render();
searchElement.style.display = 'none';
if(hilitor) hilitor.remove();
}
function toggleSearch() {
if( !searchElement ) render();
if (searchElement.style.display !== 'inline') {
openSearch();
}
else {
closeSearch();
}
}
function doSearch() {
//if there's been a change in the search term, perform a new search:
if (searchboxDirty) {
var searchstring = searchInput.value;
if (searchstring === '') {
if(hilitor) hilitor.remove();
matchedSlides = null;
}
else {
//find the keyword amongst the slides
hilitor = new Hilitor("slidecontent");
matchedSlides = hilitor.apply(searchstring);
currentMatchedIndex = 0;
}
}
if (matchedSlides) {
//navigate to the next slide that has the keyword, wrapping to the first if necessary
if (matchedSlides.length && (matchedSlides.length <= currentMatchedIndex)) {
currentMatchedIndex = 0;
}
if (matchedSlides.length > currentMatchedIndex) {
deck.slide(matchedSlides[currentMatchedIndex].h, matchedSlides[currentMatchedIndex].v);
currentMatchedIndex++;
}
}
}
// Original JavaScript code by Chirp Internet: www.chirp.com.au
// Please acknowledge use of this code by including this header.
// 2/2013 jon: modified regex to display any match, not restricted to word boundaries.
function Hilitor(id, tag) {
var targetNode = document.getElementById(id) || document.body;
var hiliteTag = tag || "EM";
var skipTags = new RegExp("^(?:" + hiliteTag + "|SCRIPT|FORM)$");
var colors = ["#ff6", "#a0ffff", "#9f9", "#f99", "#f6f"];
var wordColor = [];
var colorIdx = 0;
var matchRegex = "";
var matchingSlides = [];
this.setRegex = function(input)
{
input = input.replace(/^[^\w]+|[^\w]+$/g, "").replace(/[^\w'-]+/g, "|");
matchRegex = new RegExp("(" + input + ")","i");
}
this.getRegex = function()
{
return matchRegex.toString().replace(/^\/\\b\(|\)\\b\/i$/g, "").replace(/\|/g, " ");
}
// recursively apply word highlighting
this.hiliteWords = function(node)
{
if(node == undefined || !node) return;
if(!matchRegex) return;
if(skipTags.test(node.nodeName)) return;
if(node.hasChildNodes()) {
for(var i=0; i < node.childNodes.length; i++)
this.hiliteWords(node.childNodes[i]);
}
if(node.nodeType == 3) { // NODE_TEXT
var nv, regs;
if((nv = node.nodeValue) && (regs = matchRegex.exec(nv))) {
//find the slide's section element and save it in our list of matching slides
var secnode = node;
while (secnode != null && secnode.nodeName != 'SECTION') {
secnode = secnode.parentNode;
}
var slideIndex = deck.getIndices(secnode);
var slidelen = matchingSlides.length;
var alreadyAdded = false;
for (var i=0; i < slidelen; i++) {
if ( (matchingSlides[i].h === slideIndex.h) && (matchingSlides[i].v === slideIndex.v) ) {
alreadyAdded = true;
}
}
if (! alreadyAdded) {
matchingSlides.push(slideIndex);
}
if(!wordColor[regs[0].toLowerCase()]) {
wordColor[regs[0].toLowerCase()] = colors[colorIdx++ % colors.length];
}
var match = document.createElement(hiliteTag);
match.appendChild(document.createTextNode(regs[0]));
match.style.backgroundColor = wordColor[regs[0].toLowerCase()];
match.style.fontStyle = "inherit";
match.style.color = "#000";
var after = node.splitText(regs.index);
after.nodeValue = after.nodeValue.substring(regs[0].length);
node.parentNode.insertBefore(match, after);
}
}
};
// remove highlighting
this.remove = function()
{
var arr = document.getElementsByTagName(hiliteTag);
var el;
while(arr.length && (el = arr[0])) {
el.parentNode.replaceChild(el.firstChild, el);
}
};
// start highlighting at target node
this.apply = function(input)
{
if(input == undefined || !input) return;
this.remove();
this.setRegex(input);
this.hiliteWords(targetNode);
return matchingSlides;
};
}
return {
id: 'search',
init: reveal => {
deck = reveal;
deck.registerKeyboardShortcut( 'CTRL + Shift + F', 'Search' );
document.addEventListener( 'keydown', function( event ) {
if( event.key == "F" && (event.ctrlKey || event.metaKey) ) { //Control+Shift+f
event.preventDefault();
toggleSearch();
}
}, false );
},
open: openSearch
}
};
export default Plugin;