86 lines
2.3 KiB
C#
86 lines
2.3 KiB
C#
using Godot;
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Rokojori
|
|
{
|
|
public class SceneFileHTMLScriptJS
|
|
{
|
|
public static string script =
|
|
@"
|
|
function main()
|
|
{
|
|
let elements = document.querySelectorAll( '.closeable' );
|
|
|
|
for ( let i = 0; i < elements.length; i++ )
|
|
{
|
|
let element = elements[ i ];
|
|
|
|
element.addEventListener( 'click',
|
|
( ev )=>
|
|
{
|
|
|
|
let target = element.getAttribute( 'data-close-target' );
|
|
|
|
let targetElement = element;
|
|
|
|
let parentRegex = /^\.\.\s/;
|
|
|
|
while ( parentRegex.test( target ) )
|
|
{
|
|
target = target.replace( parentRegex, '' );
|
|
targetElement = targetElement.parentElement;
|
|
}
|
|
|
|
let rootRegex = /^\.\.\.\s/;
|
|
|
|
if ( rootRegex.test( target ) )
|
|
{
|
|
target = target.replace( rootRegex, '' );
|
|
targetElement = document.documentElement;
|
|
}
|
|
|
|
let closeTarget = element.parentElement.querySelector( target );
|
|
|
|
console.log( ev, target, closeTarget);
|
|
closeTarget.style.display = closeTarget.style.display === 'none' ? 'block' : 'none';
|
|
|
|
element.setAttribute( 'data-close-state', closeTarget.style.display );
|
|
|
|
ev.preventDefault();
|
|
return false;
|
|
},
|
|
true
|
|
);
|
|
}
|
|
|
|
let references = document.querySelectorAll( 'gd-reference' );
|
|
|
|
for ( let i = 0; i < references.length; i++ )
|
|
{
|
|
let reference = references[ i ];
|
|
|
|
reference.addEventListener( 'click',
|
|
( ev )=>
|
|
{
|
|
let ref = reference.getAttribute( 'reference' );
|
|
let selector = `[id=##${ref}##]`;
|
|
|
|
console.log( 'querying', selector );
|
|
let referenced = document.querySelector( selector );
|
|
|
|
referenced.scrollIntoView( { 'behavior': 'smooth' });
|
|
}
|
|
);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
window.addEventListener( 'load', () => { main(); });
|
|
|
|
|
|
".Replace( "##", "\"");
|
|
}
|
|
} |