/* generated by Svelte vX.Y.Z */
import { SvelteComponent as SvelteComponent_1, createElement, detachNode, flush, init, insert, noop, run, safe_not_equal } from "svelte/internal";

function create_fragment(component, ctx) {
	var button, foo_action, current;

	return {
		c() {
			button = createElement("button");
			button.textContent = "foo";
		},

		m(target, anchor) {
			insert(target, button, anchor);
			foo_action = foo.call(null, button, ctx.foo_function) || {};
			current = true;
		},

		p: noop,

		i(target, anchor) {
			if (current) return;
			this.m(target, anchor);
		},

		o: run,

		d(detach) {
			if (detach) {
				detachNode(button);
			}

			if (foo_action && typeof foo_action.destroy === 'function') foo_action.destroy();
		}
	};
}

function handleFoo(bar) {
	console.log(bar);
}

function foo(node, callback) {
	// code goes here
}

function instance($$self, $$props) {
	let { bar } = $$props;

	function foo_function() {
		return handleFoo(bar);
	}

	$$self.$$.set = $$props => {
		if ('bar' in $$props) bar = $$props.bar;
	};

	return { bar, foo_function };
}

class SvelteComponent extends SvelteComponent_1 {
	constructor(options) {
		super();
		init(this, options, instance, create_fragment, safe_not_equal);
	}

	get bar() {
		return this.$$.ctx.bar;
	}

	set bar(bar) {
		this.$set({ bar });
		flush();
	}
}

export default SvelteComponent;