// Welcome to Surreal 1.1.8 // 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.classAdd = (name) => { return $.classAdd(e, name) } e.class_add = e.add_class = e.addClass = e.classAdd // Aliases e.classRemove = (name) => { return $.classRemove(e, name) } e.class_remove = e.remove_class = e.removeClass = e.classRemove // Aliases e.classToggle = (name) => { return $.classToggle(e, name) } e.class_toggle = e.toggle_class = e.toggleClass = e.classToggle // Aliases 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.off_all = e.offAll e.disable = () => { return $.disable(e) } e.enable = () => { return $.enable(e) } e.send = (name, detail) => { return $.send(e, name, detail) } e.trigger = e.send e.halt = (ev, keepBubbling, keepDefault) => { return $.halt(ev, keepBubbling, keepDefault) } // Attributes. e.attribute = (name, value) => { return $.attribute(e, name, value) } e.attributes = e.attribute e.attr = e.attribute // 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.")