MCPcopy Create free account
hub / github.com/bigskysoftware/_hyperscript / #initElement

Method #initElement

www/js/_hyperscript.js:2784–2839  ·  view source on GitHub ↗
(elt, target)

Source from the content-addressed store, hash-verified

2782 delete elt._hyperscript;
2783 }
2784 #initElement(elt, target) {
2785 if (elt.closest && elt.closest(config.disableSelector)) {
2786 return;
2787 }
2788 var internalData = this.getInternalData(elt);
2789 var src = this.#getScript(elt);
2790 if (!src) return;
2791 var hash = this.#hashScript(src);
2792 if (internalData.initialized) {
2793 if (internalData.scriptHash === hash) {
2794 this.#resolveTemplateScopes(elt);
2795 return;
2796 }
2797 this.cleanup(elt);
2798 internalData = this.getInternalData(elt);
2799 }
2800 if (!this.triggerEvent(elt, "hyperscript:before:init")) return;
2801 internalData.initialized = true;
2802 internalData.scriptHash = hash;
2803 try {
2804 var tokens = this.#tokenizer.tokenize(src);
2805 var hyperScript = this.#kernel.parseHyperScript(tokens);
2806 if (!hyperScript) return;
2807 if (hyperScript.errors?.length) {
2808 this.triggerEvent(elt, "hyperscript:parse-error", {
2809 errors: hyperScript.errors
2810 });
2811 console.error(
2812 "hyperscript: " + hyperScript.errors.length + " parse error(s) on:",
2813 elt,
2814 "\n\n" + Parser.formatErrors(hyperScript.errors)
2815 );
2816 return;
2817 }
2818 this.#resolveTemplateScopes(elt);
2819 hyperScript.apply(target || elt, elt, null, this);
2820 elt.setAttribute("data-hyperscript-powered", "true");
2821 this.triggerEvent(elt, "hyperscript:after:init");
2822 setTimeout(() => {
2823 this.triggerEvent(target || elt, "load", {
2824 hyperscript: true
2825 });
2826 }, 1);
2827 } catch (e) {
2828 this.triggerEvent(elt, "exception", {
2829 error: e
2830 });
2831 console.error(
2832 "hyperscript errors were found on the following element:",
2833 elt,
2834 "\n\n",
2835 e.message,
2836 e.stack
2837 );
2838 }
2839 }
2840 #resolveTemplateScopes(elt) {
2841 var root = elt.closest('[data-live-template], [dom-scope="isolated"]');

Callers 1

processNodeMethod · 0.95

Calls 11

getInternalDataMethod · 0.95
#getScriptMethod · 0.95
#hashScriptMethod · 0.95
cleanupMethod · 0.95
triggerEventMethod · 0.95
setTimeoutFunction · 0.50
tokenizeMethod · 0.45
parseHyperScriptMethod · 0.45
formatErrorsMethod · 0.45
applyMethod · 0.45

Tested by

no test coverage detected