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

Method install

www/js/_hyperscript.js:9148–9306  ·  view source on GitHub ↗
(elt, source, args, runtime2)

Source from the content-addressed store, hash-verified

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

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