Convert the bundled backend/internal/plugins/calcomblock package into a standalone reactor-mode wasm plugin, dropping every git.dev.alexdunmow.com/block/cms import (forbidden in standalone plugins): - package calcomblock -> package main; add wasip1 main.go with wasmguest.Serve(Registration). go.mod module git.dev.alexdunmow.com/block/calcomblock, block/core v0.18.2, no replace directives. - Settings persistence: replace the pool-backed poolQuerier (direct SQL against the public-schema `settings` table, which a sandboxed plugin role cannot read) with capabilityQuerier over the SDK settings.Settings / settings.Updater capabilities. GetSiteTimezone now resolves via GetSiteSettings host-side. - Vendor the small CMS-internal helpers the plugin used into internal/helpers (GetRealIP, StartCleanupLoop, MaskSecret, GetStringOr, the PluginSettingsQuerier settings helpers, PluginCrypto for tests) and internal/db (minimal Setting / UpsertSettingParams), each with a provenance header. - Inline the captcha widget: vendor blocks.CaptchaWidget as a local CaptchaWidget templ (captcha_widget.templ) and regenerate templ; drop the block/cms/blocks import from booking.templ. - blockConfig (server-authoritative captcha requirement via a page_block_snapshots scan) has no wasm-ABI capability, so it is left nil: honeypot + per-IP rate limit still apply. Documented as a follow-up. - web: @block-ninja/ui workspace:* -> ^0.1.0 registry version; eslint.config.js repointed at ../../../cms/web/eslint.config.js; rebuild web/dist. - Rewrite CLAUDE.md for the standalone wasm reality; add .gitignore. Full test suite preserved and passing; builds to calcomblock-2.0.0.bnp; check-safety passes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
960 lines
24 KiB
JavaScript
960 lines
24 KiB
JavaScript
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 };
|