MCPcopy Create free account
hub / github.com/bigskysoftware/_hyperscript / install

Method install

www/js/_hyperscript.esm.js:9146–9304  ·  view source on GitHub ↗
(elt, source, args, runtime2)

Source from the content-addressed store, hash-verified

9144 start.execute(ctx);
9145 }
9146 install(elt, source, args, runtime2) {
9147 const onFeature = this;
9148 const displayName = this.displayName;
9149 const errorHandler = this.errorHandler;
9150 const errorSymbol = this.errorSymbol;
9151 const finallyHandler = this.finallyHandler;
9152 for (const eventSpec of onFeature.events) {
9153 var targets;
9154 if (eventSpec.elsewhere) {
9155 targets = [document];
9156 } else if (eventSpec.from) {
9157 targets = eventSpec.from.evaluate(runtime2.makeContext(elt, onFeature, elt, null));
9158 } else {
9159 targets = [elt];
9160 }
9161 var internalData = runtime2.getInternalData(elt);
9162 if (!internalData.eventState) internalData.eventState = /* @__PURE__ */ new Map();
9163 if (!internalData.eventState.has(eventSpec)) {
9164 internalData.eventState.set(eventSpec, { execCount: 0, debounced: void 0, lastExec: void 0 });
9165 }
9166 var eventState = internalData.eventState.get(eventSpec);
9167 runtime2.implicitLoop(targets, function(target) {
9168 var eventName = eventSpec.on;
9169 if (target == null) {
9170 console.warn("'%s' feature ignored because target does not exists:", displayName, elt);
9171 return;
9172 }
9173 var eltData = runtime2.getInternalData(elt);
9174 if (!eltData.listeners) eltData.listeners = [];
9175 if (!eltData.observers) eltData.observers = [];
9176 if (eventSpec.mutationSpec) {
9177 eventName = "hyperscript:mutation";
9178 const observer = new MutationObserver(function(mutationList, observer2) {
9179 if (!onFeature.executing) {
9180 runtime2.triggerEvent(target, eventName, {
9181 mutationList,
9182 observer: observer2
9183 });
9184 }
9185 });
9186 observer.observe(target, eventSpec.mutationSpec);
9187 eltData.observers.push(observer);
9188 }
9189 if (eventSpec.intersectionSpec) {
9190 eventName = "hyperscript:intersection";
9191 const observer = new IntersectionObserver(function(entries) {
9192 for (const entry of entries) {
9193 var detail = {
9194 observer
9195 };
9196 detail = Object.assign(detail, entry);
9197 detail["intersecting"] = entry.isIntersecting;
9198 runtime2.triggerEvent(target, eventName, detail);
9199 }
9200 }, eventSpec.intersectionSpec);
9201 observer.observe(target);
9202 eltData.observers.push(observer);
9203 }

Callers

nothing calls this directly

Calls 11

clearTimeoutFunction · 0.50
setTimeoutFunction · 0.50
evaluateMethod · 0.45
makeContextMethod · 0.45
getInternalDataMethod · 0.45
setMethod · 0.45
getMethod · 0.45
implicitLoopMethod · 0.45
triggerEventMethod · 0.45
containsMethod · 0.45
executeMethod · 0.45

Tested by

no test coverage detected