// 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.")