import { FILENAME, active_effect, active_reaction, define_property, hydrating, queue_micro_task, set_active_effect, set_active_reaction, teardown, without_reactive_context } from "./chunk-IFIY7NGJ.js"; import { event_handler_invalid } from "./chunk-QDDRZFWN.js"; // node_modules/svelte/src/internal/client/dom/elements/events.js var event_symbol = Symbol("events"); var all_registered_events = /* @__PURE__ */ new Set(); var root_event_handles = /* @__PURE__ */ new Set(); function replay_events(dom) { if (!hydrating) return; dom.removeAttribute("onload"); dom.removeAttribute("onerror"); const event2 = dom.__e; if (event2 !== void 0) { dom.__e = void 0; queueMicrotask(() => { if (dom.isConnected) { dom.dispatchEvent(event2); } }); } } function create_event(event_name, dom, handler, options = {}) { function target_handler(event2) { if (!options.capture) { handle_event_propagation.call(dom, event2); } if (!event2.cancelBubble) { return without_reactive_context(() => { return handler == null ? void 0 : handler.call(this, event2); }); } } if (event_name.startsWith("pointer") || event_name.startsWith("touch") || event_name === "wheel") { queue_micro_task(() => { dom.addEventListener(event_name, target_handler, options); }); } else { dom.addEventListener(event_name, target_handler, options); } return target_handler; } function on(element, type, handler, options = {}) { var target_handler = create_event(type, element, handler, options); return () => { element.removeEventListener(type, target_handler, options); }; } function event(event_name, dom, handler, capture, passive) { var options = { capture, passive }; var target_handler = create_event(event_name, dom, handler, options); if (dom === document.body || // @ts-ignore dom === window || // @ts-ignore dom === document || // Firefox has quirky behavior, it can happen that we still get "canplay" events when the element is already removed dom instanceof HTMLMediaElement) { teardown(() => { dom.removeEventListener(event_name, target_handler, options); }); } } function delegated(event_name, element, handler) { (element[event_symbol] ?? (element[event_symbol] = {}))[event_name] = handler; } function delegate(events) { for (var i = 0; i < events.length; i++) { all_registered_events.add(events[i]); } for (var fn of root_event_handles) { fn(events); } } var last_propagated_event = null; function handle_event_propagation(event2) { var _a, _b; var handler_element = this; var owner_document = ( /** @type {Node} */ handler_element.ownerDocument ); var event_name = event2.type; var path = ((_a = event2.composedPath) == null ? void 0 : _a.call(event2)) || []; var current_target = ( /** @type {null | Element} */ path[0] || event2.target ); last_propagated_event = event2; var path_idx = 0; var handled_at = last_propagated_event === event2 && event2[event_symbol]; if (handled_at) { var at_idx = path.indexOf(handled_at); if (at_idx !== -1 && (handler_element === document || handler_element === /** @type {any} */ window)) { event2[event_symbol] = handler_element; return; } var handler_idx = path.indexOf(handler_element); if (handler_idx === -1) { return; } if (at_idx <= handler_idx) { path_idx = at_idx; } } current_target = /** @type {Element} */ path[path_idx] || event2.target; if (current_target === handler_element) return; define_property(event2, "currentTarget", { configurable: true, get() { return current_target || owner_document; } }); var previous_reaction = active_reaction; var previous_effect = active_effect; set_active_reaction(null); set_active_effect(null); try { var throw_error; var other_errors = []; while (current_target !== null) { if (current_target === handler_element) break; try { var delegated2 = (_b = current_target[event_symbol]) == null ? void 0 : _b[event_name]; if (delegated2 != null && (!/** @type {any} */ current_target.disabled || // DOM could've been updated already by the time this is reached, so we check this as well // -> the target could not have been disabled because it emits the event in the first place event2.target === current_target)) { delegated2.call(current_target, event2); } } catch (error) { if (throw_error) { other_errors.push(error); } else { throw_error = error; } } if (event2.cancelBubble) break; path_idx++; current_target = path_idx < path.length ? ( /** @type {Element} */ path[path_idx] ) : null; } if (throw_error) { for (let error of other_errors) { queueMicrotask(() => { throw error; }); } throw throw_error; } } finally { event2[event_symbol] = handler_element; delete event2.currentTarget; set_active_reaction(previous_reaction); set_active_effect(previous_effect); } } function apply(thunk, element, args, component, loc, has_side_effects = false, remove_parens = false) { var _a, _b; let handler; let error; try { handler = thunk(); } catch (e) { error = e; } if (typeof handler !== "function" && (has_side_effects || handler != null || error)) { const filename = component == null ? void 0 : component[FILENAME]; const location = loc ? ` at ${filename}:${loc[0]}:${loc[1]}` : ` in ${filename}`; const phase = ((_a = args[0]) == null ? void 0 : _a.eventPhase) < Event.BUBBLING_PHASE ? "capture" : ""; const event_name = ((_b = args[0]) == null ? void 0 : _b.type) + phase; const description = `\`${event_name}\` handler${location}`; const suggestion = remove_parens ? "remove the trailing `()`" : "add a leading `() =>`"; event_handler_invalid(description, suggestion); if (error) { throw error; } } handler == null ? void 0 : handler.apply(element, args); } export { all_registered_events, root_event_handles, replay_events, create_event, on, event, delegated, delegate, handle_event_propagation, apply }; //# sourceMappingURL=chunk-RK6BZSGT.js.map