// Welcome to Surreal 1.2.1 (slightly modified) // Documentation: https://github.com/gnat/surreal // Locality of Behavior (LoB): https://htmx.org/essays/locality-of-behaviour/ let surreal = (function () { let $ = { // Convenience for internals. $: this, // Convenience for internals. plugins: [], // Table of contents and convenient call chaining sugar. For a familiar "jQuery like" syntax. 🙂 // Check before adding new: https://youmightnotneedjquery.com/ sugar(e) { if (e == null) { console.warn(`Surreal: Cannot use "${e}". Missing a character?`) } if (e.hasOwnProperty('hasSurreal')) return e // Surreal already applied // General e.run = (value) => { return $.run(e, value) } e.remove = () => { return $.remove(e) } // Classes and CSS. e.addClass = (name) => { return $.addClass(e, name) } e.removeClass = (name) => { return $.removeClass(e, name) } e.toggleClass = (name) => { return $.toggleClass(e, name) } e.styles = (value) => { return $.styles(e, value) } // Events. e.on = (name, fn) => { return $.on(e, name, fn) } e.off = (name, fn) => { return $.off(e, name, fn) } e.offAll = (name) => { return $.offAll(e, name) } e.disable = () => { return $.disable(e) } e.enable = () => { return $.enable(e) } e.send = (name, detail) => { return $.send(e, name, detail) } e.trigger = e.send // Alias e.halt = (ev, keepBubbling, keepDefault) => { return $.halt(ev, keepBubbling, keepDefault) } // Attributes. e.attribute = (name, value) => { return $.attribute(e, name, value) } e.attributes = e.attr = e.attribute // Alias // Add all plugins. $.plugins.forEach(function(func) { func(e) }) e.hasSurreal = 1 return e }, // Return single element. Selector not needed if used with inline // me(selector=null, start=document, warning=true) { if (selector == null) return $.sugar(start.currentScript.parentElement) // Just local me() in // Example: const onloadAdd = addOnload = onload_add = add_onload = (f) => { if (typeof window.onload === 'function') { // window.onload already is set, queue functions together (creates a call chain). let onload_old = window.onload window.onload = () => { onload_old() f() } return } window.onload = f // window.onload was not set yet. } console.log("Surreal: Added shortcuts.")