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

Method install

www/js/_hyperscript-max.js:9147–9305  ·  view source on GitHub ↗
(elt, source, args, runtime2)

Source from the content-addressed store, hash-verified

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

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