rj-action-library/Runtime/Godot/Scenes/Exporters/HTML/SceneFIleHTMLScriptJS.cs

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( "##", "\"");
}
}