import { importShared } from "./__federation_fn_import-hlt2XzeI.js";

function _arrayLikeToArray(r, a) {
	(null == a || a > r.length) && (a = r.length);
	for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
	return n;
}
function _arrayWithHoles(r) {
	if (Array.isArray(r)) return r;
}
function _defineProperty$1(e, r, t) {
	return (
		(r = _toPropertyKey(r)) in e ?
			Object.defineProperty(e, r, {
				value: t,
				enumerable: true,
				configurable: true,
				writable: true,
			})
		:	(e[r] = t),
		e
	);
}
function _iterableToArrayLimit(r, l) {
	var t = null == r ? null : ("undefined" != typeof Symbol && r[Symbol.iterator]) || r["@@iterator"];
	if (null != t) {
		var e,
			n,
			i,
			u,
			a = [],
			f = true,
			o = false;
		try {
			if (((i = (t = t.call(r)).next), 0 === l));
			else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
		} catch (r) {
			((o = true), (n = r));
		} finally {
			try {
				if (!f && null != t.return && ((u = t.return()), Object(u) !== u)) return;
			} finally {
				if (o) throw n;
			}
		}
		return a;
	}
}
function _nonIterableRest() {
	throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function ownKeys$1(e, r) {
	var t = Object.keys(e);
	if (Object.getOwnPropertySymbols) {
		var o = Object.getOwnPropertySymbols(e);
		(r &&
			(o = o.filter(function (r) {
				return Object.getOwnPropertyDescriptor(e, r).enumerable;
			})),
			t.push.apply(t, o));
	}
	return t;
}
function _objectSpread2$1(e) {
	for (var r = 1; r < arguments.length; r++) {
		var t = null != arguments[r] ? arguments[r] : {};
		r % 2 ?
			ownKeys$1(Object(t), true).forEach(function (r) {
				_defineProperty$1(e, r, t[r]);
			})
		: Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))
		: ownKeys$1(Object(t)).forEach(function (r) {
				Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
			});
	}
	return e;
}
function _objectWithoutProperties(e, t) {
	if (null == e) return {};
	var o,
		r,
		i = _objectWithoutPropertiesLoose(e, t);
	if (Object.getOwnPropertySymbols) {
		var n = Object.getOwnPropertySymbols(e);
		for (r = 0; r < n.length; r++) ((o = n[r]), -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]));
	}
	return i;
}
function _objectWithoutPropertiesLoose(r, e) {
	if (null == r) return {};
	var t = {};
	for (var n in r)
		if ({}.hasOwnProperty.call(r, n)) {
			if (-1 !== e.indexOf(n)) continue;
			t[n] = r[n];
		}
	return t;
}
function _slicedToArray(r, e) {
	return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
}
function _toPrimitive(t, r) {
	if ("object" != typeof t || !t) return t;
	var e = t[Symbol.toPrimitive];
	if (void 0 !== e) {
		var i = e.call(t, r);
		if ("object" != typeof i) return i;
		throw new TypeError("@@toPrimitive must return a primitive value.");
	}
	return ("string" === r ? String : Number)(t);
}
function _toPropertyKey(t) {
	var i = _toPrimitive(t, "string");
	return "symbol" == typeof i ? i : i + "";
}
function _unsupportedIterableToArray(r, a) {
	if (r) {
		if ("string" == typeof r) return _arrayLikeToArray(r, a);
		var t = {}.toString.call(r).slice(8, -1);
		return (
			"Object" === t && r.constructor && (t = r.constructor.name),
			"Map" === t || "Set" === t ? Array.from(r)
			: "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a)
			: void 0
		);
	}
}

function _defineProperty(obj, key, value) {
	if (key in obj) {
		Object.defineProperty(obj, key, {
			value: value,
			enumerable: true,
			configurable: true,
			writable: true,
		});
	} else {
		obj[key] = value;
	}

	return obj;
}

function ownKeys(object, enumerableOnly) {
	var keys = Object.keys(object);

	if (Object.getOwnPropertySymbols) {
		var symbols = Object.getOwnPropertySymbols(object);
		if (enumerableOnly)
			symbols = symbols.filter(function (sym) {
				return Object.getOwnPropertyDescriptor(object, sym).enumerable;
			});
		keys.push.apply(keys, symbols);
	}

	return keys;
}

function _objectSpread2(target) {
	for (var i = 1; i < arguments.length; i++) {
		var source = arguments[i] != null ? arguments[i] : {};

		if (i % 2) {
			ownKeys(Object(source), true).forEach(function (key) {
				_defineProperty(target, key, source[key]);
			});
		} else if (Object.getOwnPropertyDescriptors) {
			Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
		} else {
			ownKeys(Object(source)).forEach(function (key) {
				Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
			});
		}
	}

	return target;
}

function compose$1() {
	for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {
		fns[_key] = arguments[_key];
	}

	return function (x) {
		return fns.reduceRight(function (y, f) {
			return f(y);
		}, x);
	};
}

function curry$1(fn) {
	return function curried() {
		var _this = this;

		for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
			args[_key2] = arguments[_key2];
		}

		return args.length >= fn.length ?
				fn.apply(this, args)
			:	function () {
					for (var _len3 = arguments.length, nextArgs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
						nextArgs[_key3] = arguments[_key3];
					}

					return curried.apply(_this, [].concat(args, nextArgs));
				};
	};
}

function isObject$1(value) {
	return {}.toString.call(value).includes("Object");
}

function isEmpty(obj) {
	return !Object.keys(obj).length;
}

function isFunction(value) {
	return typeof value === "function";
}

function hasOwnProperty(object, property) {
	return Object.prototype.hasOwnProperty.call(object, property);
}

function validateChanges(initial, changes) {
	if (!isObject$1(changes)) errorHandler$1("changeType");
	if (
		Object.keys(changes).some(function (field) {
			return !hasOwnProperty(initial, field);
		})
	)
		errorHandler$1("changeField");
	return changes;
}

function validateSelector(selector) {
	if (!isFunction(selector)) errorHandler$1("selectorType");
}

function validateHandler(handler) {
	if (!(isFunction(handler) || isObject$1(handler))) errorHandler$1("handlerType");
	if (
		isObject$1(handler) &&
		Object.values(handler).some(function (_handler) {
			return !isFunction(_handler);
		})
	)
		errorHandler$1("handlersType");
}

function validateInitial(initial) {
	if (!initial) errorHandler$1("initialIsRequired");
	if (!isObject$1(initial)) errorHandler$1("initialType");
	if (isEmpty(initial)) errorHandler$1("initialContent");
}

function throwError$1(errorMessages, type) {
	throw new Error(errorMessages[type] || errorMessages["default"]);
}

var errorMessages$1 = {
	initialIsRequired: "initial state is required",
	initialType: "initial state should be an object",
	initialContent: "initial state shouldn't be an empty object",
	handlerType: "handler should be an object or a function",
	handlersType: "all handlers should be a functions",
	selectorType: "selector should be a function",
	changeType: "provided value of changes should be an object",
	changeField: 'it seams you want to change a field in the state which is not specified in the "initial" state',
	default: "an unknown error accured in `state-local` package",
};
var errorHandler$1 = curry$1(throwError$1)(errorMessages$1);
var validators$1 = {
	changes: validateChanges,
	selector: validateSelector,
	handler: validateHandler,
	initial: validateInitial,
};

function create(initial) {
	var handler = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
	validators$1.initial(initial);
	validators$1.handler(handler);
	var state = {
		current: initial,
	};
	var didUpdate = curry$1(didStateUpdate)(state, handler);
	var update = curry$1(updateState)(state);
	var validate = curry$1(validators$1.changes)(initial);
	var getChanges = curry$1(extractChanges)(state);

	function getState() {
		var selector =
			arguments.length > 0 && arguments[0] !== undefined ?
				arguments[0]
			:	function (state) {
					return state;
				};
		validators$1.selector(selector);
		return selector(state.current);
	}

	function setState(causedChanges) {
		compose$1(didUpdate, update, validate, getChanges)(causedChanges);
	}

	return [getState, setState];
}

function extractChanges(state, causedChanges) {
	return isFunction(causedChanges) ? causedChanges(state.current) : causedChanges;
}

function updateState(state, changes) {
	state.current = _objectSpread2(_objectSpread2({}, state.current), changes);
	return changes;
}

function didStateUpdate(state, handler, changes) {
	isFunction(handler) ?
		handler(state.current)
	:	Object.keys(changes).forEach(function (field) {
			var _handler$field;

			return (_handler$field = handler[field]) === null || _handler$field === void 0 ? void 0 : _handler$field.call(handler, state.current[field]);
		});
	return changes;
}

var index = {
	create: create,
};

var config$1 = {
	paths: {
		vs: "https://cdn.jsdelivr.net/npm/monaco-editor@0.55.1/min/vs",
	},
};

function curry(fn) {
	return function curried() {
		var _this = this;
		for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
			args[_key] = arguments[_key];
		}
		return args.length >= fn.length ?
				fn.apply(this, args)
			:	function () {
					for (var _len2 = arguments.length, nextArgs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
						nextArgs[_key2] = arguments[_key2];
					}
					return curried.apply(_this, [].concat(args, nextArgs));
				};
	};
}

function isObject(value) {
	return {}.toString.call(value).includes("Object");
}

/**
 * validates the configuration object and informs about deprecation
 * @param {Object} config - the configuration object
 * @return {Object} config - the validated configuration object
 */
function validateConfig(config) {
	if (!config) errorHandler("configIsRequired");
	if (!isObject(config)) errorHandler("configType");
	if (config.urls) {
		informAboutDeprecation();
		return {
			paths: {
				vs: config.urls.monacoBase,
			},
		};
	}
	return config;
}

/**
 * logs deprecation message
 */
function informAboutDeprecation() {
	console.warn(errorMessages.deprecation);
}
function throwError(errorMessages, type) {
	throw new Error(errorMessages[type] || errorMessages["default"]);
}
var errorMessages = {
	configIsRequired: "the configuration object is required",
	configType: "the configuration object should be an object",
	default: "an unknown error accured in `@monaco-editor/loader` package",
	deprecation:
		"Deprecation warning!\n    You are using deprecated way of configuration.\n\n    Instead of using\n      monaco.config({ urls: { monacoBase: '...' } })\n    use\n      monaco.config({ paths: { vs: '...' } })\n\n    For more please check the link https://github.com/suren-atoyan/monaco-loader#config\n  ",
};
var errorHandler = curry(throwError)(errorMessages);
var validators = {
	config: validateConfig,
};

var compose = function compose() {
	for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {
		fns[_key] = arguments[_key];
	}
	return function (x) {
		return fns.reduceRight(function (y, f) {
			return f(y);
		}, x);
	};
};

function merge(target, source) {
	Object.keys(source).forEach(function (key) {
		if (source[key] instanceof Object) {
			if (target[key]) {
				Object.assign(source[key], merge(target[key], source[key]));
			}
		}
	});
	return _objectSpread2$1(_objectSpread2$1({}, target), source);
}

// The source (has been changed) is https://github.com/facebook/react/issues/5465#issuecomment-157888325

var CANCELATION_MESSAGE = {
	type: "cancelation",
	msg: "operation is manually canceled",
};
function makeCancelable(promise) {
	var hasCanceled_ = false;
	var wrappedPromise = new Promise(function (resolve, reject) {
		promise.then(function (val) {
			return hasCanceled_ ? reject(CANCELATION_MESSAGE) : resolve(val);
		});
		promise["catch"](reject);
	});
	return (
		(wrappedPromise.cancel = function () {
			return (hasCanceled_ = true);
		}),
		wrappedPromise
	);
}

var _excluded = ["monaco"];

/** the local state of the module */
var _state$create = index.create({
		config: config$1,
		isInitialized: false,
		resolve: null,
		reject: null,
		monaco: null,
	}),
	_state$create2 = _slicedToArray(_state$create, 2),
	getState = _state$create2[0],
	setState = _state$create2[1];

/**
 * set the loader configuration
 * @param {Object} config - the configuration object
 */
function config(globalConfig) {
	var _validators$config = validators.config(globalConfig),
		monaco = _validators$config.monaco,
		config = _objectWithoutProperties(_validators$config, _excluded);
	setState(function (state) {
		return {
			config: merge(state.config, config),
			monaco: monaco,
		};
	});
}

/**
 * handles the initialization of the monaco-editor
 * @return {Promise} - returns an instance of monaco (with a cancelable promise)
 */
function init() {
	var state = getState(function (_ref) {
		var monaco = _ref.monaco,
			isInitialized = _ref.isInitialized,
			resolve = _ref.resolve;
		return {
			monaco: monaco,
			isInitialized: isInitialized,
			resolve: resolve,
		};
	});
	if (!state.isInitialized) {
		setState({
			isInitialized: true,
		});
		if (state.monaco) {
			state.resolve(state.monaco);
			return makeCancelable(wrapperPromise);
		}
		if (window.monaco && window.monaco.editor) {
			storeMonacoInstance(window.monaco);
			state.resolve(window.monaco);
			return makeCancelable(wrapperPromise);
		}
		compose(injectScripts, getMonacoLoaderScript)(configureLoader);
	}
	return makeCancelable(wrapperPromise);
}

/**
 * injects provided scripts into the document.body
 * @param {Object} script - an HTML script element
 * @return {Object} - the injected HTML script element
 */
function injectScripts(script) {
	return document.body.appendChild(script);
}

/**
 * creates an HTML script element with/without provided src
 * @param {string} [src] - the source path of the script
 * @return {Object} - the created HTML script element
 */
function createScript(src) {
	var script = document.createElement("script");
	return (src && (script.src = src), script);
}

/**
 * creates an HTML script element with the monaco loader src
 * @return {Object} - the created HTML script element
 */
function getMonacoLoaderScript(configureLoader) {
	var state = getState(function (_ref2) {
		var config = _ref2.config,
			reject = _ref2.reject;
		return {
			config: config,
			reject: reject,
		};
	});
	var loaderScript = createScript("".concat(state.config.paths.vs, "/loader.js"));
	loaderScript.onload = function () {
		return configureLoader();
	};
	loaderScript.onerror = state.reject;
	return loaderScript;
}

/**
 * configures the monaco loader
 */
function configureLoader() {
	var state = getState(function (_ref3) {
		var config = _ref3.config,
			resolve = _ref3.resolve,
			reject = _ref3.reject;
		return {
			config: config,
			resolve: resolve,
			reject: reject,
		};
	});
	var require = window.require;
	require.config(state.config);
	require(["vs/editor/editor.main"], function (loaded) {
		var monaco = loaded.m /* for 0.53 & 0.54 */ || loaded; /* for other versions */
		storeMonacoInstance(monaco);
		state.resolve(monaco);
	}, function (error) {
		state.reject(error);
	});
}

/**
 * store monaco instance in local state
 */
function storeMonacoInstance(monaco) {
	if (!getState().monaco) {
		setState({
			monaco: monaco,
		});
	}
}

/**
 * internal helper function
 * extracts stored monaco instance
 * @return {Object|null} - the monaco instance
 */
function __getMonacoInstance() {
	return getState(function (_ref4) {
		var monaco = _ref4.monaco;
		return monaco;
	});
}
var wrapperPromise = new Promise(function (resolve, reject) {
	return setState({
		resolve: resolve,
		reject: reject,
	});
});
var loader = {
	config: config,
	init: init,
	__getMonacoInstance: __getMonacoInstance,
};

const { memo: Te } = await importShared("react");
const ke = await importShared("react");
const { useState: re, useRef: S, useCallback: oe, useEffect: ne } = ke;
const { memo: ye } = await importShared("react");
const K = await importShared("react");
var le = { wrapper: { display: "flex", position: "relative", textAlign: "initial" }, fullWidth: { width: "100%" }, hide: { display: "none" } },
	v = le;
const me = await importShared("react");
var ae = { container: { display: "flex", height: "100%", width: "100%", justifyContent: "center", alignItems: "center" } },
	Y = ae;
function Me({ children: e }) {
	return me.createElement("div", { style: Y.container }, e);
}
var Z = Me;
var $ = Z;
function Ee({ width: e, height: r, isEditorReady: n, loading: t, _ref: a, className: m, wrapperProps: E }) {
	return K.createElement(
		"section",
		{ style: { ...v.wrapper, width: e, height: r }, ...E },
		!n && K.createElement($, null, t),
		K.createElement("div", { ref: a, style: { ...v.fullWidth, ...(!n && v.hide) }, className: m }),
	);
}
var ee = Ee;
var H = ye(ee);
const { useEffect: xe } = await importShared("react");
function Ce(e) {
	xe(e, []);
}
var k = Ce;
const { useEffect: ge, useRef: Re } = await importShared("react");
function he(e, r, n = true) {
	let t = Re(true);
	ge(
		t.current || !n ?
			() => {
				t.current = false;
			}
		:	e,
		r,
	);
}
var l = he;
function D() {}
function h(e, r, n, t) {
	return De(e, t) || be(e, r, n, t);
}
function De(e, r) {
	return e.editor.getModel(te(e, r));
}
function be(e, r, n, t) {
	return e.editor.createModel(r, n, t ? te(e, t) : void 0);
}
function te(e, r) {
	return e.Uri.parse(r);
}
function Oe({
	original: e,
	modified: r,
	language: n,
	originalLanguage: t,
	modifiedLanguage: a,
	originalModelPath: m,
	modifiedModelPath: E,
	keepCurrentOriginalModel: g = false,
	keepCurrentModifiedModel: N = false,
	theme: x = "light",
	loading: P = "Loading...",
	options: y = {},
	height: V = "100%",
	width: z = "100%",
	className: F,
	wrapperProps: j = {},
	beforeMount: A = D,
	onMount: q = D,
}) {
	let [M, O] = re(false),
		[T, s] = re(true),
		u = S(null),
		c = S(null),
		w = S(null),
		d = S(q),
		o = S(A),
		b = S(false);
	(k(() => {
		let i = loader.init();
		return (i.then((f) => (c.current = f) && s(false)).catch((f) => f?.type !== "cancelation" && console.error("Monaco initialization: error:", f)), () => (u.current ? I() : i.cancel()));
	}),
		l(
			() => {
				if (u.current && c.current) {
					let i = u.current.getOriginalEditor(),
						f = h(c.current, e || "", t || n || "text", m || "");
					f !== i.getModel() && i.setModel(f);
				}
			},
			[m],
			M,
		),
		l(
			() => {
				if (u.current && c.current) {
					let i = u.current.getModifiedEditor(),
						f = h(c.current, r || "", a || n || "text", E || "");
					f !== i.getModel() && i.setModel(f);
				}
			},
			[E],
			M,
		),
		l(
			() => {
				let i = u.current.getModifiedEditor();
				i.getOption(c.current.editor.EditorOption.readOnly) ?
					i.setValue(r || "")
				:	r !== i.getValue() && (i.executeEdits("", [{ range: i.getModel().getFullModelRange(), text: r || "", forceMoveMarkers: true }]), i.pushUndoStop());
			},
			[r],
			M,
		),
		l(
			() => {
				u.current?.getModel()?.original.setValue(e || "");
			},
			[e],
			M,
		),
		l(
			() => {
				let { original: i, modified: f } = u.current.getModel();
				(c.current.editor.setModelLanguage(i, t || n || "text"), c.current.editor.setModelLanguage(f, a || n || "text"));
			},
			[n, t, a],
			M,
		),
		l(
			() => {
				c.current?.editor.setTheme(x);
			},
			[x],
			M,
		),
		l(
			() => {
				u.current?.updateOptions(y);
			},
			[y],
			M,
		));
	let L = oe(() => {
			if (!c.current) return;
			o.current(c.current);
			let i = h(c.current, e || "", t || n || "text", m || ""),
				f = h(c.current, r || "", a || n || "text", E || "");
			u.current?.setModel({ original: i, modified: f });
		}, [n, r, a, e, t, m, E]),
		U = oe(() => {
			!b.current && w.current && ((u.current = c.current.editor.createDiffEditor(w.current, { automaticLayout: true, ...y })), L(), c.current?.editor.setTheme(x), O(true), (b.current = true));
		}, [y, x, L]);
	(ne(() => {
		M && d.current(u.current, c.current);
	}, [M]),
		ne(() => {
			!T && !M && U();
		}, [T, M, U]));
	function I() {
		let i = u.current?.getModel();
		(g || i?.original?.dispose(), N || i?.modified?.dispose(), u.current?.dispose());
	}
	return ke.createElement(H, { width: z, height: V, isEditorReady: M, loading: P, _ref: w, className: F, wrapperProps: j });
}
var ie = Oe;
var we = Te(ie);
const { useState: Ie } = await importShared("react");
function Pe() {
	let [e, r] = Ie(loader.__getMonacoInstance());
	return (
		k(() => {
			let n;
			return (
				e ||
					((n = loader.init()),
					n.then((t) => {
						r(t);
					})),
				() => n?.cancel()
			);
		}),
		e
	);
}
var Le = Pe;
const { memo: ze } = await importShared("react");
const We = await importShared("react");
const { useState: ue, useEffect: W, useRef: C, useCallback: _e } = We;
const { useEffect: Ue, useRef: ve } = await importShared("react");
function He(e) {
	let r = ve();
	return (
		Ue(() => {
			r.current = e;
		}, [e]),
		r.current
	);
}
var se = He;
var _ = new Map();
function Ve({
	defaultValue: e,
	defaultLanguage: r,
	defaultPath: n,
	value: t,
	language: a,
	path: m,
	theme: E = "light",
	line: g,
	loading: N = "Loading...",
	options: x = {},
	overrideServices: P = {},
	saveViewState: y = true,
	keepCurrentModel: V = false,
	width: z = "100%",
	height: F = "100%",
	className: j,
	wrapperProps: A = {},
	beforeMount: q = D,
	onMount: M = D,
	onChange: O,
	onValidate: T = D,
}) {
	let [s, u] = ue(false),
		[c, w] = ue(true),
		d = C(null),
		o = C(null),
		b = C(null),
		L = C(M),
		U = C(q),
		I = C(),
		i = C(t),
		f = se(m),
		Q = C(false),
		B = C(false);
	(k(() => {
		let p = loader.init();
		return (p.then((R) => (d.current = R) && w(false)).catch((R) => R?.type !== "cancelation" && console.error("Monaco initialization: error:", R)), () => (o.current ? pe() : p.cancel()));
	}),
		l(
			() => {
				let p = h(d.current, e || t || "", r || a || "", m || n || "");
				p !== o.current?.getModel() && (y && _.set(f, o.current?.saveViewState()), o.current?.setModel(p), y && o.current?.restoreViewState(_.get(m)));
			},
			[m],
			s,
		),
		l(
			() => {
				o.current?.updateOptions(x);
			},
			[x],
			s,
		),
		l(
			() => {
				!o.current ||
					t === void 0 ||
					(o.current.getOption(d.current.editor.EditorOption.readOnly) ?
						o.current.setValue(t)
					:	t !== o.current.getValue() &&
						((B.current = true),
						o.current.executeEdits("", [{ range: o.current.getModel().getFullModelRange(), text: t, forceMoveMarkers: true }]),
						o.current.pushUndoStop(),
						(B.current = false)));
			},
			[t],
			s,
		),
		l(
			() => {
				let p = o.current?.getModel();
				p && a && d.current?.editor.setModelLanguage(p, a);
			},
			[a],
			s,
		),
		l(
			() => {
				g !== void 0 && o.current?.revealLine(g);
			},
			[g],
			s,
		),
		l(
			() => {
				d.current?.editor.setTheme(E);
			},
			[E],
			s,
		));
	let X = _e(() => {
		if (!(!b.current || !d.current) && !Q.current) {
			U.current(d.current);
			let p = m || n,
				R = h(d.current, t || e || "", r || a || "", p || "");
			((o.current = d.current?.editor.create(b.current, { model: R, automaticLayout: true, ...x }, P)),
				y && o.current.restoreViewState(_.get(p)),
				d.current.editor.setTheme(E),
				g !== void 0 && o.current.revealLine(g),
				u(true),
				(Q.current = true));
		}
	}, [e, r, n, t, a, m, x, P, y, E, g]);
	(W(() => {
		s && L.current(o.current, d.current);
	}, [s]),
		W(() => {
			!c && !s && X();
		}, [c, s, X]),
		(i.current = t),
		W(() => {
			s &&
				O &&
				(I.current?.dispose(),
				(I.current = o.current?.onDidChangeModelContent((p) => {
					B.current || O(o.current.getValue(), p);
				})));
		}, [s, O]),
		W(() => {
			if (s) {
				let p = d.current.editor.onDidChangeMarkers((R) => {
					let G = o.current.getModel()?.uri;
					if (G && R.find((J) => J.path === G.path)) {
						let J = d.current.editor.getModelMarkers({ resource: G });
						T?.(J);
					}
				});
				return () => {
					p?.dispose();
				};
			}
			return () => {};
		}, [s, T]));
	function pe() {
		(I.current?.dispose(), V ? y && _.set(m, o.current.saveViewState()) : o.current.getModel()?.dispose(), o.current.dispose());
	}
	return We.createElement(H, { width: z, height: F, isEditorReady: s, loading: N, _ref: b, className: j, wrapperProps: A });
}
var fe = Ve;
var de = ze(fe);
var Ft = de;

export { we as DiffEditor, de as Editor, Ft as default, loader, Le as useMonaco };
