@saltcorn/workflow-editor 1.6.0-alpha.7 → 1.6.0-alpha.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -34027,11 +34027,11 @@ __webpack_require__.r(__webpack_exports__);
34027
34027
  /* harmony import */ var _xyflow_react_dist_style_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(137);
34028
34028
  /* harmony import */ var _workflow_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(147);
34029
34029
  /* harmony import */ var _WorkflowEdge__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(149);
34030
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
34031
34030
  function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
34032
34031
  function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
34033
34032
  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
34034
34033
  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
34034
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
34035
34035
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
34036
34036
  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."); }
34037
34037
  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 = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
@@ -34712,6 +34712,7 @@ var StepDrawer = function StepDrawer(_ref7) {
34712
34712
  var _data$strings;
34713
34713
  var modal = _ref7.modal,
34714
34714
  innerRef = _ref7.innerRef,
34715
+ outerRef = _ref7.outerRef,
34715
34716
  onClose = _ref7.onClose,
34716
34717
  submitting = _ref7.submitting,
34717
34718
  error = _ref7.error,
@@ -34721,6 +34722,7 @@ var StepDrawer = function StepDrawer(_ref7) {
34721
34722
  onResizeStart = _ref7.onResizeStart;
34722
34723
  var isOpen = !!modal;
34723
34724
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
34725
+ ref: outerRef,
34724
34726
  className: "wf-drawer".concat(isOpen ? " wf-drawer--open" : ""),
34725
34727
  role: "dialog",
34726
34728
  "aria-modal": "false",
@@ -34773,7 +34775,7 @@ var StepDrawer = function StepDrawer(_ref7) {
34773
34775
  }, submitting ? "Saving..." : "Save"))) : null);
34774
34776
  };
34775
34777
  var WorkflowEditor = function WorkflowEditor(_ref8) {
34776
- var _data$config;
34778
+ var _data$config, _data$trigger2, _data$trigger4;
34777
34779
  var data = _ref8.data;
34778
34780
  var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(data.steps || []),
34779
34781
  _useState2 = _slicedToArray(_useState, 2),
@@ -34846,13 +34848,78 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
34846
34848
  drawerWidth = _useState24[0],
34847
34849
  setDrawerWidth = _useState24[1];
34848
34850
  var modalRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
34851
+ var drawerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
34852
+ var shellRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
34849
34853
  var resizingRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);
34850
34854
  var connectSourceRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
34851
34855
  var _useState25 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null),
34852
34856
  _useState26 = _slicedToArray(_useState25, 2),
34853
34857
  selectedEdgeId = _useState26[0],
34854
34858
  setSelectedEdgeId = _useState26[1];
34859
+ var drawerStorageKey = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
34860
+ var _data$trigger;
34861
+ return "wf-drawer:".concat((data === null || data === void 0 || (_data$trigger = data.trigger) === null || _data$trigger === void 0 ? void 0 : _data$trigger.id) || "default");
34862
+ }, [data === null || data === void 0 || (_data$trigger2 = data.trigger) === null || _data$trigger2 === void 0 ? void 0 : _data$trigger2.id]);
34863
+ var viewportStorageKey = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
34864
+ var _data$trigger3;
34865
+ return "wf-viewport:".concat((data === null || data === void 0 || (_data$trigger3 = data.trigger) === null || _data$trigger3 === void 0 ? void 0 : _data$trigger3.id) || "default");
34866
+ }, [data === null || data === void 0 || (_data$trigger4 = data.trigger) === null || _data$trigger4 === void 0 ? void 0 : _data$trigger4.id]);
34855
34867
  var rfInstanceRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
34868
+ var persistDrawerState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (payload) {
34869
+ try {
34870
+ if (typeof window === "undefined") return;
34871
+ window.sessionStorage.setItem(drawerStorageKey, JSON.stringify(payload || {}));
34872
+ } catch (e) {
34873
+ // ignore storage errors
34874
+ }
34875
+ }, [drawerStorageKey]);
34876
+ var clearDrawerState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {
34877
+ try {
34878
+ if (typeof window === "undefined") return;
34879
+ window.sessionStorage.removeItem(drawerStorageKey);
34880
+ } catch (e) {
34881
+ // ignore storage errors
34882
+ }
34883
+ }, [drawerStorageKey]);
34884
+ var loadViewport = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {
34885
+ if (typeof window === "undefined") return null;
34886
+ try {
34887
+ var raw = window.sessionStorage.getItem(viewportStorageKey);
34888
+ if (!raw) return null;
34889
+ var parsed = JSON.parse(raw);
34890
+ if (!parsed || _typeof(parsed) !== "object") return null;
34891
+ var x = parsed.x,
34892
+ y = parsed.y,
34893
+ zoom = parsed.zoom;
34894
+ if (Number.isFinite(Number(x)) && Number.isFinite(Number(y)) && Number.isFinite(Number(zoom))) {
34895
+ return {
34896
+ x: Number(x),
34897
+ y: Number(y),
34898
+ zoom: Number(zoom)
34899
+ };
34900
+ }
34901
+ } catch (e) {
34902
+ // ignore storage errors
34903
+ }
34904
+ return null;
34905
+ }, [viewportStorageKey]);
34906
+ var persistViewport = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (viewport) {
34907
+ if (!viewport) return;
34908
+ var x = viewport.x,
34909
+ y = viewport.y,
34910
+ zoom = viewport.zoom;
34911
+ if (!Number.isFinite(Number(x)) || !Number.isFinite(Number(y)) || !Number.isFinite(Number(zoom))) return;
34912
+ try {
34913
+ if (typeof window === "undefined") return;
34914
+ window.sessionStorage.setItem(viewportStorageKey, JSON.stringify({
34915
+ x: Number(x),
34916
+ y: Number(y),
34917
+ zoom: Number(zoom)
34918
+ }));
34919
+ } catch (e) {
34920
+ // ignore storage errors
34921
+ }
34922
+ }, [viewportStorageKey]);
34856
34923
  var onInit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (instance) {
34857
34924
  rfInstanceRef.current = instance;
34858
34925
  }, []);
@@ -34860,6 +34927,8 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
34860
34927
  _useState28 = _slicedToArray(_useState27, 2),
34861
34928
  selectedNodes = _useState28[0],
34862
34929
  setSelectedNodes = _useState28[1];
34930
+ var pendingViewportRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(loadViewport());
34931
+ var appliedViewportRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);
34863
34932
  var handleSelectionChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (_ref9) {
34864
34933
  var _ref9$nodes = _ref9.nodes,
34865
34934
  nodes = _ref9$nodes === void 0 ? [] : _ref9$nodes,
@@ -34899,6 +34968,15 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
34899
34968
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
34900
34969
  refreshGraph(steps);
34901
34970
  }, [steps, refreshGraph]);
34971
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
34972
+ if (!rfInstanceRef.current) return;
34973
+ if (!pendingViewportRef.current) return;
34974
+ if (appliedViewportRef.current) return;
34975
+ rfInstanceRef.current.setViewport(pendingViewportRef.current, {
34976
+ duration: 0
34977
+ });
34978
+ appliedViewportRef.current = true;
34979
+ }, [nodes]);
34902
34980
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
34903
34981
  window.addEventListener("keydown", handleKeyDelete);
34904
34982
  return function () {
@@ -35025,7 +35103,6 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35025
35103
  while (1) switch (_context2.p = _context2.n) {
35026
35104
  case 0:
35027
35105
  setLoading(true);
35028
- setModal(null);
35029
35106
  setError("");
35030
35107
  _context2.p = 1;
35031
35108
  _context2.n = 2;
@@ -35236,6 +35313,7 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35236
35313
  stepId,
35237
35314
  initial_step,
35238
35315
  after_step,
35316
+ descriptor,
35239
35317
  base,
35240
35318
  url,
35241
35319
  res,
@@ -35247,6 +35325,12 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35247
35325
  _ref13 = _args5.length > 0 && _args5[0] !== undefined ? _args5[0] : {}, stepId = _ref13.stepId, initial_step = _ref13.initial_step, after_step = _ref13.after_step;
35248
35326
  _context5.p = 1;
35249
35327
  setError("");
35328
+ descriptor = {
35329
+ stepId: stepId || null,
35330
+ initial_step: !!initial_step,
35331
+ after_step: after_step || null
35332
+ };
35333
+ persistDrawerState(descriptor);
35250
35334
  base = "".concat(data.urls.stepForm).concat(stepId ? "/".concat(stepId) : "");
35251
35335
  url = new URL(base, window.location.origin);
35252
35336
  url.searchParams.set("render", "dialog");
@@ -35266,12 +35350,13 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35266
35350
  case 3:
35267
35351
  _context5.p = 3;
35268
35352
  _t4 = _context5.v;
35353
+ clearDrawerState();
35269
35354
  setError(_t4.message);
35270
35355
  case 4:
35271
35356
  return _context5.a(2);
35272
35357
  }
35273
35358
  }, _callee5, null, [[1, 3]]);
35274
- })), [data.urls.stepForm, fetchJson]);
35359
+ })), [clearDrawerState, data.urls.stepForm, fetchJson, persistDrawerState]);
35275
35360
  var handleModalSubmit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(/*#__PURE__*/function () {
35276
35361
  var _ref14 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(formEl) {
35277
35362
  var formData, action, method, res, json;
@@ -35311,6 +35396,7 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35311
35396
  throw new Error(json.error);
35312
35397
  case 4:
35313
35398
  setModal(null);
35399
+ clearDrawerState();
35314
35400
  _context6.n = 5;
35315
35401
  return reload();
35316
35402
  case 5:
@@ -35321,7 +35407,7 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35321
35407
  return function (_x2) {
35322
35408
  return _ref14.apply(this, arguments);
35323
35409
  };
35324
- }(), [data.csrfToken, data.urls.stepForm, reload]);
35410
+ }(), [clearDrawerState, data.csrfToken, data.urls.stepForm, reload]);
35325
35411
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
35326
35412
  var _modalRef$current;
35327
35413
  if (!modal) return undefined;
@@ -35376,6 +35462,18 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35376
35462
  if (actionSelect) actionSelect.removeEventListener("change", handleActionChange);
35377
35463
  };
35378
35464
  }, [handleModalSubmit, modal]);
35465
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
35466
+ if (typeof window === "undefined") return undefined;
35467
+ var raw = window.sessionStorage.getItem(drawerStorageKey);
35468
+ if (!raw) return undefined;
35469
+ try {
35470
+ var parsed = JSON.parse(raw);
35471
+ if (parsed && _typeof(parsed) === "object") openStepForm(parsed);
35472
+ } catch (e) {
35473
+ clearDrawerState();
35474
+ }
35475
+ return undefined;
35476
+ }, [clearDrawerState, drawerStorageKey, openStepForm]);
35379
35477
  var updateConnection = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(/*#__PURE__*/function () {
35380
35478
  var _ref16 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8(payload) {
35381
35479
  var body;
@@ -35672,9 +35770,9 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35672
35770
  }(), [reload, updateConnection]);
35673
35771
  var onDelete = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(/*#__PURE__*/function () {
35674
35772
  var _ref23 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee10(id) {
35675
- var formData;
35773
+ var formData, _t6;
35676
35774
  return _regenerator().w(function (_context10) {
35677
- while (1) switch (_context10.n) {
35775
+ while (1) switch (_context10.p = _context10.n) {
35678
35776
  case 0:
35679
35777
  if (window.confirm(strings.confirmDelete)) {
35680
35778
  _context10.n = 1;
@@ -35682,6 +35780,7 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35682
35780
  }
35683
35781
  return _context10.a(2);
35684
35782
  case 1:
35783
+ _context10.p = 1;
35685
35784
  formData = new FormData();
35686
35785
  formData.append("_csrf", data.csrfToken || "");
35687
35786
  _context10.n = 2;
@@ -35690,17 +35789,27 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35690
35789
  body: formData
35691
35790
  });
35692
35791
  case 2:
35792
+ setModal(null);
35793
+ setError("");
35794
+ clearDrawerState();
35693
35795
  _context10.n = 3;
35694
35796
  return reload();
35695
35797
  case 3:
35798
+ _context10.n = 5;
35799
+ break;
35800
+ case 4:
35801
+ _context10.p = 4;
35802
+ _t6 = _context10.v;
35803
+ setError(_t6.message);
35804
+ case 5:
35696
35805
  return _context10.a(2);
35697
35806
  }
35698
- }, _callee10);
35807
+ }, _callee10, null, [[1, 4]]);
35699
35808
  }));
35700
35809
  return function (_x8) {
35701
35810
  return _ref23.apply(this, arguments);
35702
35811
  };
35703
- }(), [data.csrfToken, fetchJson, reload, strings.confirmDelete]);
35812
+ }(), [clearDrawerState, data.csrfToken, fetchJson, reload, strings.confirmDelete]);
35704
35813
  (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
35705
35814
  setNodes(function (nds) {
35706
35815
  return nds.map(function (n) {
@@ -35756,6 +35865,7 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35756
35865
  "--wf-drawer-width": "".concat(drawerWidth, "px")
35757
35866
  };
35758
35867
  var showMiniMap = !modal;
35868
+ var shouldFitView = !pendingViewportRef.current;
35759
35869
  var onEdgeClick = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function (_, edge) {
35760
35870
  setSelectedEdgeId(edge.id);
35761
35871
  }, []);
@@ -35801,9 +35911,46 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35801
35911
  return stopResize();
35802
35912
  };
35803
35913
  }, [stopResize]);
35914
+ var closeModal = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function () {
35915
+ setModal(null);
35916
+ setError("");
35917
+ clearDrawerState();
35918
+ }, [clearDrawerState]);
35919
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(function () {
35920
+ var shellEl = shellRef.current;
35921
+ var drawerEl = drawerRef.current;
35922
+ if (!shellEl) return undefined;
35923
+ var hasResizeObserver = typeof ResizeObserver !== "undefined";
35924
+ var computePadding = function computePadding() {
35925
+ if (!drawerEl || !modal) {
35926
+ shellEl.style.removeProperty("--wf-shell-padding-right");
35927
+ return;
35928
+ }
35929
+ var shellRect = shellEl.getBoundingClientRect();
35930
+ var drawerRect = drawerEl.getBoundingClientRect();
35931
+ // Space already available to the right of the shell (e.g. due to sidebars)
35932
+ var naturalGap = Math.max(0, window.innerWidth - shellRect.right);
35933
+ var needed = Math.max(0, drawerRect.width - naturalGap) + 4;
35934
+ shellEl.style.setProperty("--wf-shell-padding-right", "".concat(needed, "px"));
35935
+ };
35936
+ computePadding();
35937
+ var resizeObserver = hasResizeObserver ? new ResizeObserver(function () {
35938
+ return computePadding();
35939
+ }) : null;
35940
+ if (resizeObserver) {
35941
+ resizeObserver.observe(shellEl);
35942
+ if (drawerEl) resizeObserver.observe(drawerEl);
35943
+ }
35944
+ window.addEventListener("resize", computePadding);
35945
+ return function () {
35946
+ if (resizeObserver) resizeObserver.disconnect();
35947
+ window.removeEventListener("resize", computePadding);
35948
+ };
35949
+ }, [drawerWidth, modal]);
35804
35950
  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
35805
35951
  className: shellClass,
35806
- style: shellStyle
35952
+ style: shellStyle,
35953
+ ref: shellRef
35807
35954
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
35808
35955
  className: "wf-toolbar"
35809
35956
  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
@@ -35848,14 +35995,18 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35848
35995
  nodeTypes: nodeTypes,
35849
35996
  edgeTypes: edgeTypes,
35850
35997
  onInit: onInit,
35851
- fitView: true,
35998
+ defaultViewport: pendingViewportRef.current || undefined,
35999
+ fitView: shouldFitView,
35852
36000
  proOptions: {
35853
36001
  hideAttribution: true
35854
36002
  },
35855
36003
  defaultEdgeOptions: {
35856
36004
  animated: true
35857
36005
  },
35858
- colorMode: window._sc_lightmode || "light"
36006
+ colorMode: window._sc_lightmode || "light",
36007
+ onMoveEnd: function onMoveEnd(_, viewport) {
36008
+ return persistViewport(viewport);
36009
+ }
35859
36010
  }, showMiniMap && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_xyflow_react__WEBPACK_IMPORTED_MODULE_5__.MiniMap, {
35860
36011
  pannable: true,
35861
36012
  zoomable: true
@@ -35864,10 +36015,8 @@ var WorkflowEditor = function WorkflowEditor(_ref8) {
35864
36015
  }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(StepDrawer, {
35865
36016
  modal: modal,
35866
36017
  innerRef: modalRef,
35867
- onClose: function onClose() {
35868
- setModal(null);
35869
- setError("");
35870
- },
36018
+ outerRef: drawerRef,
36019
+ onClose: closeModal,
35871
36020
  submitting: savingModal,
35872
36021
  error: error && modal ? error : "",
35873
36022
  data: data,
@@ -52884,6 +53033,7 @@ var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBP
52884
53033
  // Module
52885
53034
  ___CSS_LOADER_EXPORT___.push([module.id, `.wf-shell {
52886
53035
  padding: 0;
53036
+ padding-right: var(--wf-shell-padding-right, 0px);
52887
53037
  height: 100%;
52888
53038
  min-height: 0;
52889
53039
  display: flex;
@@ -52898,10 +53048,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `.wf-shell {
52898
53048
  --wf-handle-bg: #fff;
52899
53049
  --wf-handle-source-bg: #5a5a5a;
52900
53050
  --wf-drawer-width: 50vw;
52901
- }
52902
-
52903
- .wf-shell--drawer-open {
52904
- padding-right: calc(var(--wf-drawer-width) - 44px);
53051
+ --wf-drawer-offset: -4px;
52905
53052
  }
52906
53053
 
52907
53054
  .wf-toolbar {
@@ -52933,6 +53080,10 @@ ___CSS_LOADER_EXPORT___.push([module.id, `.wf-shell {
52933
53080
  .wf-shell .react-flow__edge-labels {
52934
53081
  z-index: 2;
52935
53082
  }
53083
+ .react-flow .react-flow__edges svg {
53084
+ overflow: visible !important;
53085
+ z-index: 1040;
53086
+ }
52936
53087
 
52937
53088
  .wf-empty {
52938
53089
  padding: 12px;
@@ -53140,7 +53291,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `.wf-shell {
53140
53291
 
53141
53292
  @media (max-width: 768px) {
53142
53293
  .wf-shell--drawer-open {
53143
- padding-right: 0;
53294
+ padding-right: var(--wf-shell-padding-right, 0px);
53144
53295
  }
53145
53296
 
53146
53297
  .wf-drawer {
@@ -53235,7 +53386,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `.wf-shell {
53235
53386
  --bs-body-color: #fff;
53236
53387
  --bs-card-border-color: #44484e;
53237
53388
  }
53238
- `, "",{"version":3,"sources":["webpack://./src/workflow.css"],"names":[],"mappings":"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","sourcesContent":[".wf-shell {\n padding: 0;\n height: 100%;\n min-height: 0;\n display: flex;\n flex-direction: column;\n position: relative;\n transition: padding-right 0.25s ease;\n --wf-edge: #6c757d;\n --wf-edge-adder: #0d6efd;\n --wf-edge-loop: #f59f00;\n --wf-edge-label: #495057;\n --wf-handle-border: #3f3f3f;\n --wf-handle-bg: #fff;\n --wf-handle-source-bg: #5a5a5a;\n --wf-drawer-width: 50vw;\n}\n\n.wf-shell--drawer-open {\n padding-right: calc(var(--wf-drawer-width) - 44px);\n}\n\n.wf-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 12px;\n border-bottom: 1px solid #e2e6ea;\n background: transparent;\n}\n\n.wf-toolbar__actions button,\n.wf-toolbar__actions a {\n margin-left: 8px;\n}\n\n.wf-canvas {\n height: 100%;\n flex: 1;\n min-height: 0;\n background: #fafbfc;\n}\n\n/* Ensure nodes visually sit above edge labels/buttons */\n.wf-shell .react-flow__node {\n z-index: 5;\n}\n\n.wf-shell .react-flow__edge-labels {\n z-index: 2;\n}\n\n.wf-empty {\n padding: 12px;\n color: #6c757d;\n}\n\n.wf-node {\n background: var(--xy-node-background-color-default, #fff);\n /* border: var(--xy-node-border-default); */\n border: 1px solid #777777;\n border-radius: 10px;\n padding: 10px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);\n min-width: 200px;\n cursor: pointer;\n max-width: 240px;\n}\n\n.wf-modal .card-body {\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n}\n.wf-node__header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 4px;\n}\n\n.wf-node__title-row {\n display: flex;\n gap: 8px;\n align-items: baseline;\n flex-wrap: wrap;\n}\n\n.wf-node__title {\n font-weight: 700;\n font-size: 14px;\n}\n\n.wf-node__action {\n font-weight: 600;\n color: #0d6efd;\n font-size: 12px;\n}\n\n.wf-node__desc {\n font-size: 12px;\n color: #495057;\n margin-bottom: 4px;\n}\n\n.wf-node__summary {\n font-size: 12px;\n color: var(--xy-node-color-default, #495057);\n margin: 4px 0 6px;\n padding-left: 16px;\n}\n\n.wf-node__summary li {\n margin-bottom: 2px;\n}\n\n.wf-node__meta {\n font-size: 12px;\n color: #6c757d;\n}\n\n.wf-label {\n font-weight: 600;\n}\n\n.wf-node__footer {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\n}\n\n.wf-start-node {\n padding: 10px;\n border-radius: 10px;\n background: linear-gradient(135deg, #0d6efd, #5ab2ff);\n color: #fff;\n box-shadow: 0 4px 12px rgba(13, 110, 253, 0.2);\n min-width: 100px;\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n.wf-start-title {\n font-weight: 700;\n}\n\n.wf-start-actions button {\n color: #0d6efd;\n background: #fff;\n border-color: #fff;\n}\n\n.wf-add-node {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--xy-node-background-color-default, #fff);\n border: 1px dashed var(--xy-node-border-default, #adb5bd);\n color: #0d6efd;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);\n cursor: pointer;\n}\n\n.wf-add-node:focus {\n outline: 2px solid #0d6efd;\n outline-offset: 2px;\n}\n\n.wf-drawer {\n position: fixed;\n top: 0;\n right: 0;\n height: 100%;\n width: min(95vw, max(var(--wf-drawer-width), 600px));\n background: var(--bs-body-bg, #fff);\n color: var(--bs-body-color, #212529);\n border-left: 1px solid var(--bs-card-border-color, #e2e6ea);\n display: flex;\n flex-direction: column;\n z-index: 1050;\n box-shadow: -10px 0 30px rgba(0, 0, 0, 0.12);\n transform: translateX(100%);\n transition: transform 0.25s ease;\n overflow: visible;\n}\n\n.wf-drawer--open {\n transform: translateX(0);\n}\n\n.wf-drawer__resize {\n position: absolute;\n left: -6px;\n top: 0;\n width: 10px;\n height: 100%;\n cursor: ew-resize;\n z-index: 1;\n background: linear-gradient(\n 90deg,\n rgba(0, 0, 0, 0) 0%,\n rgba(0, 0, 0, 0.08) 50%,\n rgba(0, 0, 0, 0) 100%\n );\n}\n\n.wf-drawer__header {\n padding: 16px 18px 12px;\n border-bottom: 1px solid var(--bs-card-border-color, #e2e6ea);\n}\n\n.wf-drawer__body {\n padding: 16px 18px;\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n}\n\n.wf-drawer__footer {\n padding: 12px 18px;\n border-top: 1px solid var(--bs-card-border-color, #e2e6ea);\n}\n\n.wf-modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.45);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1050;\n}\n\n.wf-modal {\n /* background: var(--bs-body-bg, #fff); */\n /* color: var(--bs-body-color, #212529); */\n border-radius: 10px;\n /* border: 1px solid var(--bs-card-border-color, #e2e6ea); */\n width: min(900px, 90vw);\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n /* box-shadow: 0 10px 40px rgba(0, 0, 0, 0.25); */\n}\n\n@media (max-width: 768px) {\n .wf-shell--drawer-open {\n padding-right: 0;\n }\n\n .wf-drawer {\n width: min(480px, 100vw);\n }\n}\n\n.wf-shell .react-flow__edge-path {\n stroke: var(--wf-edge);\n fill: none;\n stroke-width: 1.5px;\n}\n\n.wf-shell .wf-edge-selected .react-flow__edge-path {\n stroke: var(--wf-edge-selected, #0d6efd) !important;\n stroke-width: 2.4px;\n filter: drop-shadow(0 0 4px rgba(13, 110, 253, 0.35));\n}\n\n.wf-shell .react-flow__connection-path {\n stroke-width: 1.5px;\n}\n\n.wf-shell .react-flow__edge-text {\n fill: var(--wf-edge-label);\n}\n\n.wf-shell .react-flow__handle {\n background: var(--wf-handle-bg);\n border-color: var(--wf-handle-border);\n}\n\n.wf-shell .react-flow__handle.wf-handle-source {\n background: var(--wf-handle-source-bg) !important;\n border-color: var(--wf-handle-source-bg) !important;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.12);\n}\n.wf-shell .react-flow__handle.wf-handle-source-loop {\n background: var(--wf-edge-loop) !important;\n border-color: var(--wf-edge-loop) !important;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.12);\n}\n.wf-shell .react-flow__handle.wf-handle-target-loop {\n border-color: var(--wf-edge-loop) !important;\n}\n\n.wf-edge-add-button {\n width: 18px;\n height: 18px;\n border-radius: 50%;\n border: 1px solid #adb5bd;\n background: #ffffff;\n color: #6c757d;\n font-size: 12px;\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n padding: 0;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);\n}\n\n.wf-edge-add-button:hover {\n background: #f1f3f5;\n color: #495057;\n}\n\n.wf-edge-add-button:focus {\n outline: 2px solid #adb5bd;\n outline-offset: 2px;\n}\n\n[data-bs-theme=\"dark\"] .wf-shell {\n --wf-edge: #aeb3bd;\n --wf-edge-adder: #6ea8fe;\n --wf-edge-loop: #f0ad4e;\n --wf-edge-label: #c0c4cf;\n --wf-handle-border: #c0c4cf;\n --wf-handle-bg: #2f3139;\n --wf-handle-source-bg: #8a8a8a;\n}\n\n/* Temporary vars fallbacks */\n.wf-drawer {\n --bs-body-bg: #fff;\n --bs-body-color: #212529;\n --bs-card-border-color: #e2e6ea;\n}\n[data-bs-theme=\"dark\"] .wf-drawer {\n --bs-body-bg: #303030;\n --bs-body-color: #fff;\n --bs-card-border-color: #44484e;\n}\n"],"sourceRoot":""}]);
53389
+ `, "",{"version":3,"sources":["webpack://./src/workflow.css"],"names":[],"mappings":"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","sourcesContent":[".wf-shell {\n padding: 0;\n padding-right: var(--wf-shell-padding-right, 0px);\n height: 100%;\n min-height: 0;\n display: flex;\n flex-direction: column;\n position: relative;\n transition: padding-right 0.25s ease;\n --wf-edge: #6c757d;\n --wf-edge-adder: #0d6efd;\n --wf-edge-loop: #f59f00;\n --wf-edge-label: #495057;\n --wf-handle-border: #3f3f3f;\n --wf-handle-bg: #fff;\n --wf-handle-source-bg: #5a5a5a;\n --wf-drawer-width: 50vw;\n --wf-drawer-offset: -4px;\n}\n\n.wf-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 10px 12px;\n border-bottom: 1px solid #e2e6ea;\n background: transparent;\n}\n\n.wf-toolbar__actions button,\n.wf-toolbar__actions a {\n margin-left: 8px;\n}\n\n.wf-canvas {\n height: 100%;\n flex: 1;\n min-height: 0;\n background: #fafbfc;\n}\n\n/* Ensure nodes visually sit above edge labels/buttons */\n.wf-shell .react-flow__node {\n z-index: 5;\n}\n\n.wf-shell .react-flow__edge-labels {\n z-index: 2;\n}\n.react-flow .react-flow__edges svg {\n overflow: visible !important;\n z-index: 1040;\n}\n\n.wf-empty {\n padding: 12px;\n color: #6c757d;\n}\n\n.wf-node {\n background: var(--xy-node-background-color-default, #fff);\n /* border: var(--xy-node-border-default); */\n border: 1px solid #777777;\n border-radius: 10px;\n padding: 10px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);\n min-width: 200px;\n cursor: pointer;\n max-width: 240px;\n}\n\n.wf-modal .card-body {\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n}\n.wf-node__header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 4px;\n}\n\n.wf-node__title-row {\n display: flex;\n gap: 8px;\n align-items: baseline;\n flex-wrap: wrap;\n}\n\n.wf-node__title {\n font-weight: 700;\n font-size: 14px;\n}\n\n.wf-node__action {\n font-weight: 600;\n color: #0d6efd;\n font-size: 12px;\n}\n\n.wf-node__desc {\n font-size: 12px;\n color: #495057;\n margin-bottom: 4px;\n}\n\n.wf-node__summary {\n font-size: 12px;\n color: var(--xy-node-color-default, #495057);\n margin: 4px 0 6px;\n padding-left: 16px;\n}\n\n.wf-node__summary li {\n margin-bottom: 2px;\n}\n\n.wf-node__meta {\n font-size: 12px;\n color: #6c757d;\n}\n\n.wf-label {\n font-weight: 600;\n}\n\n.wf-node__footer {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\n}\n\n.wf-start-node {\n padding: 10px;\n border-radius: 10px;\n background: linear-gradient(135deg, #0d6efd, #5ab2ff);\n color: #fff;\n box-shadow: 0 4px 12px rgba(13, 110, 253, 0.2);\n min-width: 100px;\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n}\n\n.wf-start-title {\n font-weight: 700;\n}\n\n.wf-start-actions button {\n color: #0d6efd;\n background: #fff;\n border-color: #fff;\n}\n\n.wf-add-node {\n width: 32px;\n height: 32px;\n border-radius: 50%;\n background: var(--xy-node-background-color-default, #fff);\n border: 1px dashed var(--xy-node-border-default, #adb5bd);\n color: #0d6efd;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);\n cursor: pointer;\n}\n\n.wf-add-node:focus {\n outline: 2px solid #0d6efd;\n outline-offset: 2px;\n}\n\n.wf-drawer {\n position: fixed;\n top: 0;\n right: 0;\n height: 100%;\n width: min(95vw, max(var(--wf-drawer-width), 600px));\n background: var(--bs-body-bg, #fff);\n color: var(--bs-body-color, #212529);\n border-left: 1px solid var(--bs-card-border-color, #e2e6ea);\n display: flex;\n flex-direction: column;\n z-index: 1050;\n box-shadow: -10px 0 30px rgba(0, 0, 0, 0.12);\n transform: translateX(100%);\n transition: transform 0.25s ease;\n overflow: visible;\n}\n\n.wf-drawer--open {\n transform: translateX(0);\n}\n\n.wf-drawer__resize {\n position: absolute;\n left: -6px;\n top: 0;\n width: 10px;\n height: 100%;\n cursor: ew-resize;\n z-index: 1;\n background: linear-gradient(\n 90deg,\n rgba(0, 0, 0, 0) 0%,\n rgba(0, 0, 0, 0.08) 50%,\n rgba(0, 0, 0, 0) 100%\n );\n}\n\n.wf-drawer__header {\n padding: 16px 18px 12px;\n border-bottom: 1px solid var(--bs-card-border-color, #e2e6ea);\n}\n\n.wf-drawer__body {\n padding: 16px 18px;\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n}\n\n.wf-drawer__footer {\n padding: 12px 18px;\n border-top: 1px solid var(--bs-card-border-color, #e2e6ea);\n}\n\n.wf-modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.45);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1050;\n}\n\n.wf-modal {\n /* background: var(--bs-body-bg, #fff); */\n /* color: var(--bs-body-color, #212529); */\n border-radius: 10px;\n /* border: 1px solid var(--bs-card-border-color, #e2e6ea); */\n width: min(900px, 90vw);\n max-height: 90vh;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n /* box-shadow: 0 10px 40px rgba(0, 0, 0, 0.25); */\n}\n\n@media (max-width: 768px) {\n .wf-shell--drawer-open {\n padding-right: var(--wf-shell-padding-right, 0px);\n }\n\n .wf-drawer {\n width: min(480px, 100vw);\n }\n}\n\n.wf-shell .react-flow__edge-path {\n stroke: var(--wf-edge);\n fill: none;\n stroke-width: 1.5px;\n}\n\n.wf-shell .wf-edge-selected .react-flow__edge-path {\n stroke: var(--wf-edge-selected, #0d6efd) !important;\n stroke-width: 2.4px;\n filter: drop-shadow(0 0 4px rgba(13, 110, 253, 0.35));\n}\n\n.wf-shell .react-flow__connection-path {\n stroke-width: 1.5px;\n}\n\n.wf-shell .react-flow__edge-text {\n fill: var(--wf-edge-label);\n}\n\n.wf-shell .react-flow__handle {\n background: var(--wf-handle-bg);\n border-color: var(--wf-handle-border);\n}\n\n.wf-shell .react-flow__handle.wf-handle-source {\n background: var(--wf-handle-source-bg) !important;\n border-color: var(--wf-handle-source-bg) !important;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.12);\n}\n.wf-shell .react-flow__handle.wf-handle-source-loop {\n background: var(--wf-edge-loop) !important;\n border-color: var(--wf-edge-loop) !important;\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.12);\n}\n.wf-shell .react-flow__handle.wf-handle-target-loop {\n border-color: var(--wf-edge-loop) !important;\n}\n\n.wf-edge-add-button {\n width: 18px;\n height: 18px;\n border-radius: 50%;\n border: 1px solid #adb5bd;\n background: #ffffff;\n color: #6c757d;\n font-size: 12px;\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n padding: 0;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);\n}\n\n.wf-edge-add-button:hover {\n background: #f1f3f5;\n color: #495057;\n}\n\n.wf-edge-add-button:focus {\n outline: 2px solid #adb5bd;\n outline-offset: 2px;\n}\n\n[data-bs-theme=\"dark\"] .wf-shell {\n --wf-edge: #aeb3bd;\n --wf-edge-adder: #6ea8fe;\n --wf-edge-loop: #f0ad4e;\n --wf-edge-label: #c0c4cf;\n --wf-handle-border: #c0c4cf;\n --wf-handle-bg: #2f3139;\n --wf-handle-source-bg: #8a8a8a;\n}\n\n/* Temporary vars fallbacks */\n.wf-drawer {\n --bs-body-bg: #fff;\n --bs-body-color: #212529;\n --bs-card-border-color: #e2e6ea;\n}\n[data-bs-theme=\"dark\"] .wf-drawer {\n --bs-body-bg: #303030;\n --bs-body-color: #fff;\n --bs-card-border-color: #44484e;\n}\n"],"sourceRoot":""}]);
53239
53390
  // Exports
53240
53391
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
53241
53392
 
@@ -0,0 +1,61 @@
1
+ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
2
+
3
+ /**
4
+ * @license React
5
+ * react-dom.production.min.js
6
+ *
7
+ * Copyright (c) Facebook, Inc. and its affiliates.
8
+ *
9
+ * This source code is licensed under the MIT license found in the
10
+ * LICENSE file in the root directory of this source tree.
11
+ */
12
+
13
+ /**
14
+ * @license React
15
+ * react-jsx-runtime.production.min.js
16
+ *
17
+ * Copyright (c) Facebook, Inc. and its affiliates.
18
+ *
19
+ * This source code is licensed under the MIT license found in the
20
+ * LICENSE file in the root directory of this source tree.
21
+ */
22
+
23
+ /**
24
+ * @license React
25
+ * react.production.min.js
26
+ *
27
+ * Copyright (c) Facebook, Inc. and its affiliates.
28
+ *
29
+ * This source code is licensed under the MIT license found in the
30
+ * LICENSE file in the root directory of this source tree.
31
+ */
32
+
33
+ /**
34
+ * @license React
35
+ * scheduler.production.min.js
36
+ *
37
+ * Copyright (c) Facebook, Inc. and its affiliates.
38
+ *
39
+ * This source code is licensed under the MIT license found in the
40
+ * LICENSE file in the root directory of this source tree.
41
+ */
42
+
43
+ /**
44
+ * @license React
45
+ * use-sync-external-store-shim.production.js
46
+ *
47
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
48
+ *
49
+ * This source code is licensed under the MIT license found in the
50
+ * LICENSE file in the root directory of this source tree.
51
+ */
52
+
53
+ /**
54
+ * @license React
55
+ * use-sync-external-store-shim/with-selector.production.js
56
+ *
57
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
58
+ *
59
+ * This source code is licensed under the MIT license found in the
60
+ * LICENSE file in the root directory of this source tree.
61
+ */