fdb2 1.0.27 → 1.0.31

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.
Files changed (75) hide show
  1. package/bin/fdb2.js +18 -2
  2. package/dist/public/.vite/manifest.json +4 -4
  3. package/dist/public/bootstrap.js +6 -5
  4. package/dist/public/explorer.js +318 -193
  5. package/dist/public/index.css +59 -0
  6. package/dist/public/index.js +486 -259
  7. package/dist/public/layout.js +2 -2
  8. package/dist/public/rolldown-runtime.js +8 -1
  9. package/dist/public/vconsole.min.js +0 -26
  10. package/dist/public/vue.js +5238 -5192
  11. package/dist/server/cli/format.d.ts +6 -0
  12. package/dist/server/cli/format.d.ts.map +1 -0
  13. package/dist/server/cli/format.js +116 -0
  14. package/dist/server/cli/format.js.map +1 -0
  15. package/dist/server/cli/format.ts +104 -0
  16. package/dist/server/cli/main.d.ts +3 -0
  17. package/dist/server/cli/main.d.ts.map +1 -0
  18. package/dist/server/cli/main.js +710 -0
  19. package/dist/server/cli/main.js.map +1 -0
  20. package/dist/server/cli/main.ts +746 -0
  21. package/dist/server/cli/parse.d.ts +18 -0
  22. package/dist/server/cli/parse.d.ts.map +1 -0
  23. package/dist/server/cli/parse.js +150 -0
  24. package/dist/server/cli/parse.js.map +1 -0
  25. package/dist/server/cli/parse.ts +148 -0
  26. package/dist/server/core/column-spec.d.ts +29 -0
  27. package/dist/server/core/column-spec.d.ts.map +1 -0
  28. package/dist/server/core/column-spec.js +148 -0
  29. package/dist/server/core/column-spec.js.map +1 -0
  30. package/dist/server/core/column-spec.ts +147 -0
  31. package/dist/server/core/config.d.ts +34 -0
  32. package/dist/server/core/config.d.ts.map +1 -0
  33. package/dist/server/core/config.js +187 -0
  34. package/dist/server/core/config.js.map +1 -0
  35. package/dist/server/core/config.ts +165 -0
  36. package/dist/server/core/db-api.d.ts +169 -0
  37. package/dist/server/core/db-api.d.ts.map +1 -0
  38. package/dist/server/core/db-api.js +1078 -0
  39. package/dist/server/core/db-api.js.map +1 -0
  40. package/dist/server/core/db-api.ts +1181 -0
  41. package/dist/server/core/dialect.d.ts +44 -0
  42. package/dist/server/core/dialect.d.ts.map +1 -0
  43. package/dist/server/core/dialect.js +260 -0
  44. package/dist/server/core/dialect.js.map +1 -0
  45. package/dist/server/core/dialect.ts +293 -0
  46. package/dist/server/core/errors.d.ts +22 -0
  47. package/dist/server/core/errors.d.ts.map +1 -0
  48. package/dist/server/core/errors.js +61 -0
  49. package/dist/server/core/errors.js.map +1 -0
  50. package/dist/server/core/errors.ts +58 -0
  51. package/dist/server/core/filter-dsl.d.ts +39 -0
  52. package/dist/server/core/filter-dsl.d.ts.map +1 -0
  53. package/dist/server/core/filter-dsl.js +167 -0
  54. package/dist/server/core/filter-dsl.js.map +1 -0
  55. package/dist/server/core/filter-dsl.ts +180 -0
  56. package/dist/server/core/guard.d.ts +54 -0
  57. package/dist/server/core/guard.d.ts.map +1 -0
  58. package/dist/server/core/guard.js +207 -0
  59. package/dist/server/core/guard.js.map +1 -0
  60. package/dist/server/core/guard.ts +205 -0
  61. package/dist/server/core/query-builder.d.ts +72 -0
  62. package/dist/server/core/query-builder.d.ts.map +1 -0
  63. package/dist/server/core/query-builder.js +478 -0
  64. package/dist/server/core/query-builder.js.map +1 -0
  65. package/dist/server/core/query-builder.ts +502 -0
  66. package/dist/server/service/connection.service.d.ts.map +1 -1
  67. package/dist/server/service/connection.service.js +7 -3
  68. package/dist/server/service/connection.service.js.map +1 -1
  69. package/dist/server/service/connection.service.ts +5 -3
  70. package/dist/server/utils/data-dir.d.ts.map +1 -1
  71. package/dist/server/utils/data-dir.js +2 -0
  72. package/dist/server/utils/data-dir.js.map +1 -1
  73. package/dist/server/utils/data-dir.ts +2 -0
  74. package/electron/updater.js +12 -66
  75. package/package.json +22 -22
@@ -1,6 +1,6 @@
1
1
  import { i as __require, n as __esmMin, t as __commonJSMin } from "./rolldown-runtime.js";
2
- import { C as createCommentVNode, D as createTextVNode, E as createStaticVNode, F as onBeforeUnmount, G as withDirectives, I as onMounted, O as createVNode, P as nextTick, R as openBlock, S as createBlock, T as createSlots, U as watch, W as withCtx, _ as vShow, at as normalizeClass, b as computed, c as init_vue_router, d as init_vue_runtime_esm_bundler, et as ref, g as vModelText, h as vModelSelect, k as defineComponent, l as useRoute, m as vModelCheckbox, n as init_vue_i18n, ot as normalizeStyle, r as useI18n, st as toDisplayString, u as useRouter, v as withModifiers, w as createElementBlock, x as createBaseVNode, y as Fragment, z as renderList } from "./vue.js";
3
- import { _ as request, a as dataGrid_default, b as _plugin_vue_export_helper_default, c as modal_default, d as toast, f as init_toast, g as init_base, h as init_i18n, i as showConfirm, l as init_loading, m as getT, n as init_modal$2, o as init_dataGrid, p as toast_default, r as showAlert, s as init_modal$1, t as getModalInstance, u as init_toast$1, v as defineStore, x as init__plugin_vue_export_helper, y as init_pinia } from "./index.js";
2
+ import { C as createCommentVNode, D as createTextVNode, E as createStaticVNode, F as onBeforeUnmount, G as withDirectives, I as onMounted, O as createVNode, P as nextTick, R as openBlock, S as createBlock, T as createSlots, U as watch, W as withCtx, _ as vShow, a as init_vue_router, at as normalizeClass, b as computed, d as init_vue_runtime_esm_bundler, et as ref, g as vModelText, h as vModelSelect, k as defineComponent, l as init_vue_i18n, m as vModelCheckbox, o as useRoute, ot as normalizeStyle, s as useRouter, st as toDisplayString, u as useI18n, v as withModifiers, w as createElementBlock, x as createBaseVNode, y as Fragment, z as renderList } from "./vue.js";
3
+ import { _ as init_i18n, a as dataGrid_default, b as defineStore, c as modal_default, d as toast, f as init_toast, g as getT, h as init__plugin_vue_export_helper, i as showConfirm, l as init_loading, m as _plugin_vue_export_helper_default, n as init_modal$2, o as init_dataGrid, p as toast_default, r as showAlert, s as init_modal$1, t as getModalInstance, u as init_toast$1, v as init_base, x as init_pinia, y as request } from "./index.js";
4
4
  //#region src/service/database.ts
5
5
  var ConnectionService, DatabaseService;
6
6
  var init_database = __esmMin((() => {
@@ -655,7 +655,8 @@ var init_index_vue_vue_type_script_setup_true_lang = __esmMin((() => {
655
655
  }
656
656
  async function loadDatabaseTypes() {
657
657
  try {
658
- databaseTypes.value = (await new ConnectionService().getDatabaseTypes())?.data || [];
658
+ const response = await new ConnectionService().getDatabaseTypes();
659
+ databaseTypes.value = response?.data || [];
659
660
  } catch (error) {
660
661
  console.error("加载数据库类型失败:", error);
661
662
  }
@@ -1130,7 +1131,7 @@ var init_connection = __esmMin((() => {
1130
1131
  });
1131
1132
  }));
1132
1133
  //#endregion
1133
- //#region node_modules/.pnpm/@marijn+find-cluster-break@1.0.2/node_modules/@marijn/find-cluster-break/src/index.js
1134
+ //#region node_modules/.pnpm/@marijn+find-cluster-break@1.0.3/node_modules/@marijn/find-cluster-break/src/index.js
1134
1135
  function isExtendingChar(code) {
1135
1136
  if (code < 768) return false;
1136
1137
  for (let from = 0, to = rangeFrom.length;;) {
@@ -1170,7 +1171,7 @@ function nextClusterBreak(str, pos, includeExtending) {
1170
1171
  return pos;
1171
1172
  }
1172
1173
  function prevClusterBreak(str, pos, includeExtending) {
1173
- while (pos > 0) {
1174
+ while (pos > 1) {
1174
1175
  let found = nextClusterBreak(str, pos - 2, includeExtending);
1175
1176
  if (found < pos) return found;
1176
1177
  pos--;
@@ -1195,7 +1196,8 @@ function codePointSize$1(code) {
1195
1196
  }
1196
1197
  var rangeFrom, rangeTo, ZWJ;
1197
1198
  var init_src = __esmMin((() => {
1198
- rangeFrom = [], rangeTo = [];
1199
+ rangeFrom = [];
1200
+ rangeTo = [];
1199
1201
  (() => {
1200
1202
  let numbers = "lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map((s) => s ? parseInt(s, 36) : 1);
1201
1203
  for (let i = 0, n = 0; i < numbers.length; i++) (i % 2 ? rangeTo : rangeFrom).push(n = n + numbers[i]);
@@ -1203,7 +1205,7 @@ var init_src = __esmMin((() => {
1203
1205
  ZWJ = 8205;
1204
1206
  }));
1205
1207
  //#endregion
1206
- //#region node_modules/.pnpm/@codemirror+state@6.6.0/node_modules/@codemirror/state/dist/index.js
1208
+ //#region node_modules/.pnpm/@codemirror+state@6.7.1/node_modules/@codemirror/state/dist/index.js
1207
1209
  function textLength(text) {
1208
1210
  let length = -1;
1209
1211
  for (let line of text) length += line.length + 1;
@@ -1476,7 +1478,8 @@ function flatten(extension, compartments, newCompartments) {
1476
1478
  if (ext.facet.extensions) inner(ext.facet.extensions, Prec_.default);
1477
1479
  } else {
1478
1480
  let content = ext.extension;
1479
- if (!content) throw new Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);
1481
+ if (!content) throw new Error(`Unrecognized extension value in extension set (${ext}).`);
1482
+ if (content == ext) throw new Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);
1480
1483
  inner(content, prec);
1481
1484
  }
1482
1485
  }
@@ -2632,10 +2635,11 @@ var init_dist$11 = __esmMin((() => {
2632
2635
  }
2633
2636
  };
2634
2637
  SelectionRange = class SelectionRange {
2635
- constructor(from, to, flags) {
2638
+ constructor(from, to, flags, goalColumn) {
2636
2639
  this.from = from;
2637
2640
  this.to = to;
2638
2641
  this.flags = flags;
2642
+ this.goalColumn = goalColumn;
2639
2643
  }
2640
2644
  /**
2641
2645
  The anchor of the range—the side that doesn't move when you
@@ -2667,6 +2671,16 @@ var init_dist$11 = __esmMin((() => {
2667
2671
  return this.flags & 8 ? -1 : this.flags & 16 ? 1 : 0;
2668
2672
  }
2669
2673
  /**
2674
+ A flag that, when set, makes some selection-extending commands
2675
+ treat the range's head and anchor as exchangeable, so that for
2676
+ example Shift-ArrowUp will make the lower side of the selection
2677
+ the anchor, even if that was the head before. Used to implement
2678
+ MacOS-style undirectional selections.
2679
+ */
2680
+ get undirectional() {
2681
+ return (this.flags & 64) > 0;
2682
+ }
2683
+ /**
2670
2684
  The bidirectional text level associated with this cursor, if
2671
2685
  any.
2672
2686
  */
@@ -2675,16 +2689,6 @@ var init_dist$11 = __esmMin((() => {
2675
2689
  return level == 7 ? null : level;
2676
2690
  }
2677
2691
  /**
2678
- The goal column (stored vertical offset) associated with a
2679
- cursor. This is used to preserve the vertical position when
2680
- [moving](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) across
2681
- lines of different length.
2682
- */
2683
- get goalColumn() {
2684
- let value = this.flags >> 6;
2685
- return value == 16777215 ? void 0 : value;
2686
- }
2687
- /**
2688
2692
  Map this range through a change, producing a valid range in the
2689
2693
  updated document.
2690
2694
  */
@@ -2695,7 +2699,7 @@ var init_dist$11 = __esmMin((() => {
2695
2699
  from = change.mapPos(this.from, 1);
2696
2700
  to = change.mapPos(this.to, -1);
2697
2701
  }
2698
- return from == this.from && to == this.to ? this : new SelectionRange(from, to, this.flags);
2702
+ return from == this.from && to == this.to ? this : new SelectionRange(from, to, this.flags, this.goalColumn);
2699
2703
  }
2700
2704
  /**
2701
2705
  Extend this range to cover at least `from` to `to`.
@@ -2731,8 +2735,8 @@ var init_dist$11 = __esmMin((() => {
2731
2735
  /**
2732
2736
  @internal
2733
2737
  */
2734
- static create(from, to, flags) {
2735
- return new SelectionRange(from, to, flags);
2738
+ static create(from, to, flags, goalColumn) {
2739
+ return new SelectionRange(from, to, flags, goalColumn);
2736
2740
  }
2737
2741
  };
2738
2742
  EditorSelection = class EditorSelection {
@@ -2830,15 +2834,23 @@ var init_dist$11 = __esmMin((() => {
2830
2834
  safely ignore the optional arguments in most situations.
2831
2835
  */
2832
2836
  static cursor(pos, assoc = 0, bidiLevel, goalColumn) {
2833
- return SelectionRange.create(pos, pos, (assoc == 0 ? 0 : assoc < 0 ? 8 : 16) | (bidiLevel == null ? 7 : Math.min(6, bidiLevel)) | (goalColumn !== null && goalColumn !== void 0 ? goalColumn : 16777215) << 6);
2837
+ return SelectionRange.create(pos, pos, (assoc == 0 ? 0 : assoc < 0 ? 8 : 16) | (bidiLevel == null ? 7 : Math.min(6, bidiLevel)), goalColumn);
2834
2838
  }
2835
2839
  /**
2836
2840
  Create a selection range.
2837
2841
  */
2838
2842
  static range(anchor, head, goalColumn, bidiLevel, assoc) {
2839
- let flags = (goalColumn !== null && goalColumn !== void 0 ? goalColumn : 16777215) << 6 | (bidiLevel == null ? 7 : Math.min(6, bidiLevel));
2843
+ let flags = bidiLevel == null ? 7 : Math.min(6, bidiLevel);
2840
2844
  if (!assoc && anchor != head) assoc = head < anchor ? 1 : -1;
2841
- return head < anchor ? SelectionRange.create(head, anchor, 48 | flags) : SelectionRange.create(anchor, head, (!assoc ? 0 : assoc < 0 ? 8 : 16) | flags);
2845
+ if (assoc) flags |= assoc < 0 ? 8 : 16;
2846
+ return head < anchor ? SelectionRange.create(head, anchor, flags | 32, goalColumn) : SelectionRange.create(anchor, head, flags, goalColumn);
2847
+ }
2848
+ /**
2849
+ Create an [undirectional](https://codemirror.net/6/docs/ref/#state.SelectionRange.undirectional)
2850
+ selection range.
2851
+ */
2852
+ static undirectionalRange(from, to) {
2853
+ return SelectionRange.create(from, to, 64, void 0);
2842
2854
  }
2843
2855
  /**
2844
2856
  @internal
@@ -2965,6 +2977,9 @@ var init_dist$11 = __esmMin((() => {
2965
2977
  }
2966
2978
  };
2967
2979
  }
2980
+ get extension() {
2981
+ return this;
2982
+ }
2968
2983
  };
2969
2984
  initField = /*@__PURE__*/ Facet.define({ static: true });
2970
2985
  StateField = class StateField {
@@ -3081,6 +3096,9 @@ var init_dist$11 = __esmMin((() => {
3081
3096
  this.inner = inner;
3082
3097
  this.prec = prec;
3083
3098
  }
3099
+ get extension() {
3100
+ return this;
3101
+ }
3084
3102
  };
3085
3103
  Compartment = class Compartment {
3086
3104
  /**
@@ -3113,6 +3131,9 @@ var init_dist$11 = __esmMin((() => {
3113
3131
  this.compartment = compartment;
3114
3132
  this.inner = inner;
3115
3133
  }
3134
+ get extension() {
3135
+ return this;
3136
+ }
3116
3137
  };
3117
3138
  Configuration = class Configuration {
3118
3139
  constructor(base, compartments, dynamicSlots, address, staticValues, facets) {
@@ -3165,7 +3186,8 @@ var init_dist$11 = __esmMin((() => {
3165
3186
  dynamicSlots.push((a) => dynamicFacetSlot(a, facet, providers));
3166
3187
  }
3167
3188
  }
3168
- return new Configuration(base, newCompartments, dynamicSlots.map((f) => f(address)), address, staticValues, facets);
3189
+ let dynamic = dynamicSlots.map((f) => f(address));
3190
+ return new Configuration(base, newCompartments, dynamic, address, staticValues, facets);
3169
3191
  }
3170
3192
  };
3171
3193
  languageData = /*@__PURE__*/ Facet.define();
@@ -4627,7 +4649,7 @@ var init_w3c_keyname = __esmMin((() => {
4627
4649
  for (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code];
4628
4650
  }));
4629
4651
  //#endregion
4630
- //#region node_modules/.pnpm/@codemirror+view@6.43.1/node_modules/@codemirror/view/dist/index.js
4652
+ //#region node_modules/.pnpm/@codemirror+view@6.43.6/node_modules/@codemirror/view/dist/index.js
4631
4653
  function combineAttrs(source, target) {
4632
4654
  for (let name in source) if (name == "class" && target.class) target.class += " " + source.class;
4633
4655
  else if (name == "style" && target.style) target.style += ";" + source.style;
@@ -4750,8 +4772,10 @@ function scanFor(node, off, targetNode, targetOff, dir) {
4750
4772
  function maxOffset(node) {
4751
4773
  return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;
4752
4774
  }
4753
- function flattenRect(rect, left) {
4754
- let x = left ? rect.left : rect.right;
4775
+ function flattenRect(rect, toLeft) {
4776
+ let { left, right } = rect;
4777
+ if (left == right) return rect;
4778
+ let x = toLeft ? left : right;
4755
4779
  return {
4756
4780
  left: x,
4757
4781
  right: x,
@@ -5405,7 +5429,7 @@ function groupAt(state, pos, bias = 1) {
5405
5429
  if (categorize(line.text.slice(to, next)) != cat) break;
5406
5430
  to = next;
5407
5431
  }
5408
- return EditorSelection.range(from + line.from, to + line.from);
5432
+ return EditorSelection.undirectionalRange(from + line.from, to + line.from);
5409
5433
  }
5410
5434
  function posAtCoordsImprecise(view, contentRect, block, x, y) {
5411
5435
  let into = Math.round((x - contentRect.left) * view.defaultCharacterWidth);
@@ -5524,7 +5548,8 @@ function skipAtomsForSelection(atoms, sel) {
5524
5548
  } else {
5525
5549
  let from = skipAtomicRanges(atoms, range.from, -1);
5526
5550
  let to = skipAtomicRanges(atoms, range.to, 1);
5527
- if (from != range.from || to != range.to) updated = EditorSelection.range(range.from == range.anchor ? from : to, range.from == range.head ? from : to);
5551
+ if (from != range.from || to != range.to) if (range.undirectional) updated = EditorSelection.undirectionalRange(range.from, range.to);
5552
+ else updated = EditorSelection.range(range.from == range.anchor ? from : to, range.from == range.head ? from : to);
5528
5553
  }
5529
5554
  if (updated) {
5530
5555
  if (!ranges) ranges = sel.ranges.slice();
@@ -5807,6 +5832,10 @@ function selectionFromPoints(points, base) {
5807
5832
  function sameSelPos(selection, range) {
5808
5833
  return range.head == selection.main.head && range.anchor == selection.main.anchor;
5809
5834
  }
5835
+ function iosVirtualKeyboardOpen(win) {
5836
+ if (!win.visualViewport) return false;
5837
+ return win.visualViewport.height * win.visualViewport.scale / win.document.documentElement.clientHeight < .85;
5838
+ }
5810
5839
  function bindHandler(plugin, handler) {
5811
5840
  return (view, event) => {
5812
5841
  try {
@@ -5930,7 +5959,7 @@ function rangeForClick(view, pos, bias, type) {
5930
5959
  let visual = view.docView.lineAt(pos, bias), line = view.state.doc.lineAt(visual ? visual.posAtEnd : pos);
5931
5960
  let from = visual ? visual.posAtStart : line.from, to = visual ? visual.posAtEnd : line.to;
5932
5961
  if (to < view.state.doc.length && to == line.to) to++;
5933
- return EditorSelection.range(from, to);
5962
+ return EditorSelection.undirectionalRange(from, to);
5934
5963
  }
5935
5964
  }
5936
5965
  function getClickType(event) {
@@ -6950,10 +6979,12 @@ var init_dist$10 = __esmMin((() => {
6950
6979
  Direction[Direction["RTL"] = 1] = "RTL";
6951
6980
  return Direction;
6952
6981
  })(Direction || (Direction = {}));
6953
- LTR = Direction.LTR, RTL = Direction.RTL;
6982
+ LTR = Direction.LTR;
6983
+ RTL = Direction.RTL;
6954
6984
  LowTypes = /*@__PURE__*/ dec("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008");
6955
6985
  ArabicTypes = /*@__PURE__*/ dec("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333");
6956
- Brackets = /*@__PURE__*/ Object.create(null), BracketStack = [];
6986
+ Brackets = /*@__PURE__*/ Object.create(null);
6987
+ BracketStack = [];
6957
6988
  for (let p of [
6958
6989
  "()",
6959
6990
  "[]",
@@ -7345,7 +7376,7 @@ var init_dist$10 = __esmMin((() => {
7345
7376
  covers(side) {
7346
7377
  return true;
7347
7378
  }
7348
- coordsIn(pos, side) {
7379
+ coordsIn(pos, side, rtl) {
7349
7380
  return null;
7350
7381
  }
7351
7382
  domPosFor(off, side) {
@@ -7521,7 +7552,7 @@ var init_dist$10 = __esmMin((() => {
7521
7552
  let child = tile.children[i], end = off + child.length;
7522
7553
  if (end >= pos) {
7523
7554
  if (child.isComposite()) scan(child, pos - off);
7524
- else if ((!after || after.isHidden && (side > 0 || forCoords && onSameLine(after, child))) && (end > pos || child.flags & 32)) {
7555
+ else if ((!after || after.isHidden && (side > 0 && !(after.flags & 32) || forCoords && onSameLine(after, child))) && (end > pos || child.flags & 32)) {
7525
7556
  after = child;
7526
7557
  afterOff = pos - off;
7527
7558
  } else if (off < pos || child.flags & 16 && !child.isHidden) {
@@ -7539,10 +7570,10 @@ var init_dist$10 = __esmMin((() => {
7539
7570
  offset: target == before ? beforeOff : afterOff
7540
7571
  } : null;
7541
7572
  }
7542
- coordsIn(pos, side) {
7573
+ coordsIn(pos, side, rtl) {
7543
7574
  let found = this.resolveInline(pos, side, true);
7544
7575
  if (!found) return fallbackRect(this);
7545
- return found.tile.coordsIn(Math.max(0, found.offset), side);
7576
+ return found.tile.coordsIn(Math.max(0, found.offset), side, rtl);
7546
7577
  }
7547
7578
  domIn(pos, side) {
7548
7579
  let found = this.resolveInline(pos, side);
@@ -7594,7 +7625,7 @@ var init_dist$10 = __esmMin((() => {
7594
7625
  toString() {
7595
7626
  return JSON.stringify(this.text);
7596
7627
  }
7597
- coordsIn(pos, side) {
7628
+ coordsIn(pos, side, rtl) {
7598
7629
  let length = this.dom.nodeValue.length;
7599
7630
  if (pos > length) pos = length;
7600
7631
  let from = pos, to = pos, flatten = 0;
@@ -7614,7 +7645,7 @@ var init_dist$10 = __esmMin((() => {
7614
7645
  if (!rects.length) return null;
7615
7646
  let rect = rects[(flatten ? flatten < 0 : side >= 0) ? 0 : rects.length - 1];
7616
7647
  if (browser.safari && !flatten && rect.width == 0) rect = Array.prototype.find.call(rects, (r) => r.width) || rect;
7617
- return flatten ? flattenRect(rect, flatten < 0) : rect || null;
7648
+ return rtl == null ? rect : flattenRect(rect, (flatten ? flatten > 0 : side < 0) == rtl);
7618
7649
  }
7619
7650
  static of(text, dom) {
7620
7651
  let tile = new TextTile(dom || document.createTextNode(text), text);
@@ -7687,8 +7718,9 @@ var init_dist$10 = __esmMin((() => {
7687
7718
  get overrideDOMText() {
7688
7719
  return Text.empty;
7689
7720
  }
7690
- coordsIn(pos) {
7691
- return this.dom.getBoundingClientRect();
7721
+ coordsIn(pos, side, rtl) {
7722
+ let rect = this.dom.getBoundingClientRect();
7723
+ return rtl == null ? rect : flattenRect(rect, side > 0 == rtl);
7692
7724
  }
7693
7725
  };
7694
7726
  TilePointer = class {
@@ -7986,7 +8018,7 @@ var init_dist$10 = __esmMin((() => {
7986
8018
  find(cls, test, type = 2) {
7987
8019
  let i = cls.bucket;
7988
8020
  let bucket = this.buckets[i], off = this.index[i];
7989
- for (let j = bucket.length - 1; j >= 0; j--) {
8021
+ for (let j = 0; j < bucket.length; j++) {
7990
8022
  let index = (j + off) % bucket.length, tile = bucket[index];
7991
8023
  if ((!test || test(tile)) && !this.reused.has(tile)) {
7992
8024
  bucket.splice(index, 1);
@@ -8147,7 +8179,7 @@ var init_dist$10 = __esmMin((() => {
8147
8179
  }
8148
8180
  emit(from, to) {
8149
8181
  let pendingLineAttrs = null;
8150
- let b = this.builder, markCount = 0;
8182
+ let b = this.builder, markCount = -1;
8151
8183
  let openEnd = RangeSet.spans(this.decorations, from, to, {
8152
8184
  point: (from, to, deco, active, openStart, index) => {
8153
8185
  if (deco instanceof PointDecoration) {
@@ -8187,10 +8219,11 @@ var init_dist$10 = __esmMin((() => {
8187
8219
  }
8188
8220
  pendingLineAttrs = null;
8189
8221
  }
8222
+ markCount = active.length;
8190
8223
  }
8191
8224
  });
8192
- b.addLineStartIfNotCovered(pendingLineAttrs);
8193
- this.openWidget = openEnd > markCount;
8225
+ if (markCount > -1) this.openWidget = openEnd > markCount;
8226
+ if (!this.openWidget) b.addLineStartIfNotCovered(pendingLineAttrs);
8194
8227
  this.openMarks = openEnd;
8195
8228
  }
8196
8229
  forward(from, to, side = 1) {
@@ -8460,7 +8493,7 @@ var init_dist$10 = __esmMin((() => {
8460
8493
  }
8461
8494
  domAtPos(pos, side) {
8462
8495
  let { tile, offset } = this.tile.resolveBlock(pos, side);
8463
- if (tile.isWidget()) return tile.domPosFor(pos, side);
8496
+ if (tile.isWidget()) return tile.domPosFor(offset, side);
8464
8497
  return tile.domIn(offset, side);
8465
8498
  }
8466
8499
  inlineDOMNearPos(pos, side) {
@@ -8490,13 +8523,13 @@ var init_dist$10 = __esmMin((() => {
8490
8523
  else if (afterBad && before) after = null;
8491
8524
  return before && side < 0 || !after ? before.domIn(beforeOff, side) : after.domIn(afterOff, side);
8492
8525
  }
8493
- coordsAt(pos, side) {
8526
+ coordsAt(pos, side, rtl) {
8494
8527
  let { tile, offset } = this.tile.resolveBlock(pos, side);
8495
8528
  if (tile.isWidget()) {
8496
8529
  if (tile.widget instanceof BlockGapWidget) return null;
8497
8530
  return tile.coordsInWidget(offset, side, true);
8498
8531
  }
8499
- return tile.coordsIn(offset, side);
8532
+ return tile.coordsIn(offset, side, rtl);
8500
8533
  }
8501
8534
  lineAt(pos, side) {
8502
8535
  let { tile } = this.tile.resolveBlock(pos, side);
@@ -8652,7 +8685,6 @@ var init_dist$10 = __esmMin((() => {
8652
8685
  this.blockWrappers = this.view.state.facet(blockWrappers).map((v) => typeof v == "function" ? v(this.view) : v);
8653
8686
  }
8654
8687
  scrollIntoView(target) {
8655
- var _a;
8656
8688
  if (target.isSnapshot) {
8657
8689
  let ref = this.view.viewState.lineBlockAt(target.range.head);
8658
8690
  this.view.scrollDOM.scrollTop = ref.top - target.yMargin;
@@ -8665,7 +8697,7 @@ var init_dist$10 = __esmMin((() => {
8665
8697
  logException(this.view.state, e, "scroll handler");
8666
8698
  }
8667
8699
  let { range } = target;
8668
- let rect = this.coordsAt(range.head, (_a = range.assoc) !== null && _a !== void 0 ? _a : range.empty ? 0 : range.head > range.anchor ? -1 : 1), other;
8700
+ let rect = this.coordsAt(range.head, range.assoc || (range.head > range.anchor ? -1 : 1)), other;
8669
8701
  if (!rect) return;
8670
8702
  if (!range.empty && (other = this.coordsAt(range.anchor, range.anchor > range.head ? -1 : 1))) rect = {
8671
8703
  left: Math.min(rect.left, other.left),
@@ -8982,7 +9014,7 @@ var init_dist$10 = __esmMin((() => {
8982
9014
  let head = iHead && iHead.node == domSel.focusNode && iHead.offset == domSel.focusOffset || !contains(view.contentDOM, domSel.focusNode) ? curSel.main.head : view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset);
8983
9015
  let anchor = iAnchor && iAnchor.node == domSel.anchorNode && iAnchor.offset == domSel.anchorOffset || !contains(view.contentDOM, domSel.anchorNode) ? curSel.main.anchor : view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset);
8984
9016
  let vp = view.viewport;
8985
- if ((browser.ios || browser.chrome) && curSel.main.empty && head != anchor && (vp.from > 0 || vp.to < view.state.doc.length)) {
9017
+ if ((browser.ios || browser.chrome) && head != anchor && Math.min(head, anchor) <= curSel.main.from && Math.max(head, anchor) >= curSel.main.to && (vp.from > 0 || vp.to < view.state.doc.length)) {
8986
9018
  let from = Math.min(head, anchor), to = Math.max(head, anchor);
8987
9019
  let offFrom = vp.from - from, offTo = vp.to - to;
8988
9020
  if ((offFrom == 0 || offFrom == 1 || from == 0) && (offTo == 0 || offTo == -1 || to == view.state.doc.length)) {
@@ -9008,6 +9040,7 @@ var init_dist$10 = __esmMin((() => {
9008
9040
  this.view = view;
9009
9041
  this.lastKeyCode = 0;
9010
9042
  this.lastKeyTime = 0;
9043
+ this.touchActive = false;
9011
9044
  this.lastTouchTime = 0;
9012
9045
  this.lastTouchX = 0;
9013
9046
  this.lastTouchY = 0;
@@ -9016,13 +9049,7 @@ var init_dist$10 = __esmMin((() => {
9016
9049
  this.lastScrollLeft = 0;
9017
9050
  this.lastWheelEvent = 0;
9018
9051
  this.pendingIOSKey = void 0;
9019
- /**
9020
- When enabled (>-1), tab presses are not given to key handlers,
9021
- leaving the browser's default behavior. If >0, the mode expires
9022
- at that timestamp, and any other keypress clears it.
9023
- Esc enables temporary tab focus mode for two seconds when not
9024
- otherwise handled.
9025
- */
9052
+ this.lastIOSMomentumScroll = 0;
9026
9053
  this.tabFocusMode = -1;
9027
9054
  this.lastSelectionOrigin = null;
9028
9055
  this.lastSelectionTime = 0;
@@ -9085,9 +9112,19 @@ var init_dist$10 = __esmMin((() => {
9085
9112
  this.view.observer.delayAndroidKey(event.key, event.keyCode);
9086
9113
  return true;
9087
9114
  }
9088
- let pending;
9089
- if (browser.ios && !event.synthetic && !event.altKey && !event.metaKey && !event.shiftKey && ((pending = PendingKeys.find((key) => key.keyCode == event.keyCode)) && !event.ctrlKey || EmacsyPendingKeys.indexOf(event.key) > -1 && event.ctrlKey)) {
9090
- this.pendingIOSKey = pending || event;
9115
+ if (browser.ios && !event.synthetic && !event.altKey && !event.metaKey && (PendingKeys.some((key) => key.keyCode == event.keyCode) && !event.ctrlKey || EmacsyPendingKeys.indexOf(event.key) > -1 && event.ctrlKey)) {
9116
+ let mods = {
9117
+ ctrlKey: event.ctrlKey,
9118
+ altKey: event.altKey,
9119
+ metaKey: event.metaKey,
9120
+ shiftKey: event.shiftKey
9121
+ };
9122
+ if (mods.shiftKey && browser.ios && !/^(off|none)$/.test(this.view.contentDOM.autocapitalize) && iosVirtualKeyboardOpen(this.view.win)) mods.shiftKey = false;
9123
+ this.pendingIOSKey = {
9124
+ key: event.key,
9125
+ keyCode: event.keyCode,
9126
+ mods
9127
+ };
9091
9128
  setTimeout(() => this.flushIOSKey(), 250);
9092
9129
  return true;
9093
9130
  }
@@ -9099,7 +9136,7 @@ var init_dist$10 = __esmMin((() => {
9099
9136
  if (!key) return false;
9100
9137
  if (key.key == "Enter" && change && change.from < change.to && /^\S+$/.test(change.insert.toString())) return false;
9101
9138
  this.pendingIOSKey = void 0;
9102
- return dispatchKey(this.view.contentDOM, key.key, key.keyCode, key instanceof KeyboardEvent ? key : void 0);
9139
+ return dispatchKey(this.view.contentDOM, key.key, key.keyCode, key.mods);
9103
9140
  }
9104
9141
  ignoreDuringComposition(event) {
9105
9142
  if (!/^key/.test(event.type) || event.synthetic) return false;
@@ -9251,8 +9288,10 @@ var init_dist$10 = __esmMin((() => {
9251
9288
  observers = /*@__PURE__*/ Object.create(null);
9252
9289
  brokenClipboardAPI = browser.ie && browser.ie_version < 15 || browser.ios && browser.webkit_version < 604;
9253
9290
  observers.scroll = (view) => {
9254
- view.inputState.lastScrollTop = view.scrollDOM.scrollTop;
9255
- view.inputState.lastScrollLeft = view.scrollDOM.scrollLeft;
9291
+ let iState = view.inputState;
9292
+ iState.lastScrollTop = view.scrollDOM.scrollTop;
9293
+ iState.lastScrollLeft = view.scrollDOM.scrollLeft;
9294
+ if (browser.ios && !iState.touchActive) iState.lastIOSMomentumScroll = Date.now();
9256
9295
  };
9257
9296
  observers.wheel = observers.mousewheel = (view) => {
9258
9297
  view.inputState.lastWheelEvent = Date.now();
@@ -9264,6 +9303,7 @@ var init_dist$10 = __esmMin((() => {
9264
9303
  };
9265
9304
  observers.touchstart = (view, e) => {
9266
9305
  let iState = view.inputState, touch = e.targetTouches[0];
9306
+ iState.touchActive = true;
9267
9307
  iState.lastTouchTime = Date.now();
9268
9308
  if (touch) {
9269
9309
  iState.lastTouchX = touch.clientX;
@@ -9274,6 +9314,9 @@ var init_dist$10 = __esmMin((() => {
9274
9314
  observers.touchmove = (view) => {
9275
9315
  view.inputState.setSelectionOrigin("select.pointer");
9276
9316
  };
9317
+ observers.touchend = (view, e) => {
9318
+ view.inputState.touchActive = false;
9319
+ };
9277
9320
  handlers.mousedown = (view, event) => {
9278
9321
  view.observer.flush();
9279
9322
  if (view.inputState.lastTouchTime > Date.now() - 2e3) return false;
@@ -9300,14 +9343,16 @@ var init_dist$10 = __esmMin((() => {
9300
9343
  return false;
9301
9344
  };
9302
9345
  BadMouseDetail = browser.ie && browser.ie_version <= 11;
9303
- lastMouseDown = null, lastMouseDownCount = 0, lastMouseDownTime = 0;
9346
+ lastMouseDown = null;
9347
+ lastMouseDownCount = 0;
9348
+ lastMouseDownTime = 0;
9304
9349
  handlers.dragstart = (view, event) => {
9305
9350
  let { selection: { main: range } } = view.state;
9306
9351
  if (event.target.draggable) {
9307
9352
  let tile = view.docView.tile.nearest(event.target);
9308
9353
  if (tile && tile.isWidget()) {
9309
9354
  let from = tile.posAtStart, to = from + tile.length;
9310
- if (from >= range.to || to <= range.from) range = EditorSelection.range(from, to);
9355
+ if (from >= range.to || to <= range.from) range = EditorSelection.undirectionalRange(from, to);
9311
9356
  }
9312
9357
  }
9313
9358
  let { inputState } = view;
@@ -10533,7 +10578,9 @@ var init_dist$10 = __esmMin((() => {
10533
10578
  };
10534
10579
  theme = /*@__PURE__*/ Facet.define({ combine: (strs) => strs.join(" ") });
10535
10580
  darkTheme = /*@__PURE__*/ Facet.define({ combine: (values) => values.indexOf(true) > -1 });
10536
- baseThemeID = /*@__PURE__*/ StyleModule.newName(), baseLightID = /*@__PURE__*/ StyleModule.newName(), baseDarkID = /*@__PURE__*/ StyleModule.newName();
10581
+ baseThemeID = /*@__PURE__*/ StyleModule.newName();
10582
+ baseLightID = /*@__PURE__*/ StyleModule.newName();
10583
+ baseDarkID = /*@__PURE__*/ StyleModule.newName();
10537
10584
  lightDarkIDs = {
10538
10585
  "&light": "." + baseLightID,
10539
10586
  "&dark": "." + baseDarkID
@@ -11201,7 +11248,6 @@ var init_dist$10 = __esmMin((() => {
11201
11248
  };
11202
11249
  for (let event in this.handlers) context.addEventListener(event, this.handlers[event]);
11203
11250
  this.measureReq = { read: (view) => {
11204
- this.editContext.updateControlBounds(view.contentDOM.getBoundingClientRect());
11205
11251
  let sel = getSelection(view.root);
11206
11252
  if (sel && sel.rangeCount) this.editContext.updateSelectionBounds(sel.getRangeAt(0).getBoundingClientRect());
11207
11253
  } };
@@ -11627,7 +11673,7 @@ var init_dist$10 = __esmMin((() => {
11627
11673
  continue;
11628
11674
  } else {
11629
11675
  let diff = ((scrollAnchorPos < 0 ? this.viewState.heightMap.height : this.viewState.lineBlockAt(scrollAnchorPos).top) - scrollAnchorHeight) / this.scaleY;
11630
- if ((diff > 1 || diff < -1) && (scroll == this.scrollDOM || this.hasFocus || Math.max(this.inputState.lastWheelEvent, this.inputState.lastTouchTime) > Date.now() - 100)) {
11676
+ if ((diff > 1 || diff < -1) && !(browser.ios && this.inputState.lastIOSMomentumScroll > Date.now() - 100) && (scroll == this.scrollDOM || this.hasFocus || Math.max(this.inputState.lastWheelEvent, this.inputState.lastTouchTime) > Date.now() - 100)) {
11631
11677
  scrollOffset = scrollOffset + diff;
11632
11678
  if (scroll) scroll.scrollTop += diff;
11633
11679
  else this.win.scrollBy(0, diff);
@@ -11904,11 +11950,9 @@ var init_dist$10 = __esmMin((() => {
11904
11950
  */
11905
11951
  coordsAtPos(pos, side = 1) {
11906
11952
  this.readMeasured();
11907
- let rect = this.docView.coordsAt(pos, side);
11908
- if (!rect || rect.left == rect.right) return rect;
11909
11953
  let line = this.state.doc.lineAt(pos), order = this.bidiSpans(line);
11910
11954
  let span = order[BidiSpan.find(order, pos - line.from, -1, side)];
11911
- return flattenRect(rect, span.dir == Direction.LTR == side > 0);
11955
+ return this.docView.coordsAt(pos, side, span.dir == Direction.RTL);
11912
11956
  }
11913
11957
  /**
11914
11958
  Return the rectangle around a given character. If `pos` does not
@@ -13511,7 +13555,8 @@ var init_dist$9 = __esmMin((() => {
13511
13555
  return new NodeSet(newTypes);
13512
13556
  }
13513
13557
  };
13514
- CachedNode = /* @__PURE__ */ new WeakMap(), CachedInnerNode = /* @__PURE__ */ new WeakMap();
13558
+ CachedNode = /* @__PURE__ */ new WeakMap();
13559
+ CachedInnerNode = /* @__PURE__ */ new WeakMap();
13515
13560
  (function(IterMode) {
13516
13561
  /**
13517
13562
  When enabled, iteration will only visit [`Tree`](#common.Tree)
@@ -13594,7 +13639,8 @@ var init_dist$9 = __esmMin((() => {
13594
13639
  [`moveTo`](#common.TreeCursor.moveTo).
13595
13640
  */
13596
13641
  cursorAt(pos, side = 0, mode = 0) {
13597
- let cursor = new TreeCursor(CachedNode.get(this) || this.topNode);
13642
+ let scope = CachedNode.get(this) || this.topNode;
13643
+ let cursor = new TreeCursor(scope);
13598
13644
  cursor.moveTo(pos, side);
13599
13645
  CachedNode.set(this, cursor._tree);
13600
13646
  return cursor;
@@ -14747,7 +14793,20 @@ var init_dist$8 = __esmMin((() => {
14747
14793
  }
14748
14794
  };
14749
14795
  t = Tag.define;
14750
- comment = t(), name = t(), typeName = t(name), propertyName = t(name), literal = t(), string = t(literal), number = t(literal), content = t(), heading = t(content), keyword = t(), operator = t(), punctuation = t(), bracket = t(punctuation), meta = t();
14796
+ comment = t();
14797
+ name = t();
14798
+ typeName = t(name);
14799
+ propertyName = t(name);
14800
+ literal = t();
14801
+ string = t(literal);
14802
+ number = t(literal);
14803
+ content = t();
14804
+ heading = t(content);
14805
+ keyword = t();
14806
+ operator = t();
14807
+ punctuation = t();
14808
+ bracket = t(punctuation);
14809
+ meta = t();
14751
14810
  tags = {
14752
14811
  /**
14753
14812
  A comment.
@@ -15246,7 +15305,7 @@ var init_dist$8 = __esmMin((() => {
15246
15305
  ]);
15247
15306
  }));
15248
15307
  //#endregion
15249
- //#region node_modules/.pnpm/@codemirror+language@6.12.3/node_modules/@codemirror/language/dist/index.js
15308
+ //#region node_modules/.pnpm/@codemirror+language@6.12.4/node_modules/@codemirror/language/dist/index.js
15250
15309
  /**
15251
15310
  Helper function to define a facet (to be added to the top syntax
15252
15311
  node(s) for a language via
@@ -16246,7 +16305,7 @@ var init_dist$7 = __esmMin((() => {
16246
16305
  or array of tags in their `tag` property, and either a single
16247
16306
  `class` property providing a static CSS class (for highlighter
16248
16307
  that rely on external styling), or a
16249
- [`style-mod`](https://github.com/marijnh/style-mod#documentation)-style
16308
+ [`style-mod`](https://code.haverbeke.berlin/marijn/style-mod#documentation)-style
16250
16309
  set of CSS properties (which define the styling for those tags).
16251
16310
 
16252
16311
  The CSS rules created for a highlighter will be emitted in the
@@ -16382,7 +16441,8 @@ var init_dist$7 = __esmMin((() => {
16382
16441
  color: "#f00"
16383
16442
  }
16384
16443
  ]);
16385
- DefaultScanDist = 1e4, DefaultBrackets = "()[]{}";
16444
+ DefaultScanDist = 1e4;
16445
+ DefaultBrackets = "()[]{}";
16386
16446
  bracketMatchingHandle = /*@__PURE__*/ new NodeProp();
16387
16447
  noTokens = /*@__PURE__*/ Object.create(null);
16388
16448
  typeArray = [NodeType.none];
@@ -16406,7 +16466,7 @@ var init_dist$7 = __esmMin((() => {
16406
16466
  Direction.RTL, Direction.LTR;
16407
16467
  }));
16408
16468
  //#endregion
16409
- //#region node_modules/.pnpm/@codemirror+commands@6.10.3/node_modules/@codemirror/commands/dist/index.js
16469
+ //#region node_modules/.pnpm/@codemirror+commands@6.10.4/node_modules/@codemirror/commands/dist/index.js
16410
16470
  function command(f, option) {
16411
16471
  return ({ state, dispatch }) => {
16412
16472
  if (state.readOnly) return false;
@@ -16737,8 +16797,9 @@ function toMatchingBracket(state, dispatch, extend) {
16737
16797
  dispatch(setSel(state, selection));
16738
16798
  return true;
16739
16799
  }
16740
- function extendSel(target, how) {
16800
+ function extendSel(target, forward, how) {
16741
16801
  let selection = updateSel(target.state.selection, (range) => {
16802
+ if (range.undirectional && range.head >= range.anchor != forward) range = EditorSelection.range(range.head, range.anchor);
16742
16803
  let head = how(range);
16743
16804
  return EditorSelection.range(range.anchor, head.head, head.goalColumn, head.bidiLevel || void 0, head.assoc);
16744
16805
  });
@@ -16747,16 +16808,16 @@ function extendSel(target, how) {
16747
16808
  return true;
16748
16809
  }
16749
16810
  function selectByChar(view, forward) {
16750
- return extendSel(view, (range) => view.moveByChar(range, forward));
16811
+ return extendSel(view, forward, (range) => view.moveByChar(range, forward));
16751
16812
  }
16752
16813
  function selectByGroup(view, forward) {
16753
- return extendSel(view, (range) => view.moveByGroup(range, forward));
16814
+ return extendSel(view, forward, (range) => view.moveByGroup(range, forward));
16754
16815
  }
16755
16816
  function selectByLine(view, forward) {
16756
- return extendSel(view, (range) => view.moveVertically(range, forward));
16817
+ return extendSel(view, forward, (range) => view.moveVertically(range, forward));
16757
16818
  }
16758
16819
  function selectByPage(view, forward) {
16759
- return extendSel(view, (range) => view.moveVertically(range, forward, pageInfo(view).height));
16820
+ return extendSel(view, forward, (range) => view.moveVertically(range, forward, pageInfo(view).height));
16760
16821
  }
16761
16822
  function addCursorVertically(view, forward) {
16762
16823
  let { state } = view, sel = state.selection, ranges = state.selection.ranges.slice();
@@ -17093,18 +17154,30 @@ var init_dist$6 = __esmMin((() => {
17093
17154
  selectCharRight = (view) => selectByChar(view, ltrAtCursor(view));
17094
17155
  selectGroupLeft = (view) => selectByGroup(view, !ltrAtCursor(view));
17095
17156
  selectGroupRight = (view) => selectByGroup(view, ltrAtCursor(view));
17096
- selectSyntaxLeft = (view) => extendSel(view, (range) => moveBySyntax(view.state, range, !ltrAtCursor(view)));
17097
- selectSyntaxRight = (view) => extendSel(view, (range) => moveBySyntax(view.state, range, ltrAtCursor(view)));
17157
+ selectSyntaxLeft = (view) => {
17158
+ let forward = !ltrAtCursor(view);
17159
+ return extendSel(view, forward, (range) => moveBySyntax(view.state, range, forward));
17160
+ };
17161
+ selectSyntaxRight = (view) => {
17162
+ let forward = ltrAtCursor(view);
17163
+ return extendSel(view, forward, (range) => moveBySyntax(view.state, range, forward));
17164
+ };
17098
17165
  selectLineUp = (view) => selectByLine(view, false);
17099
17166
  selectLineDown = (view) => selectByLine(view, true);
17100
17167
  selectPageUp = (view) => selectByPage(view, false);
17101
17168
  selectPageDown = (view) => selectByPage(view, true);
17102
- selectLineBoundaryForward = (view) => extendSel(view, (range) => moveByLineBoundary(view, range, true));
17103
- selectLineBoundaryBackward = (view) => extendSel(view, (range) => moveByLineBoundary(view, range, false));
17104
- selectLineBoundaryLeft = (view) => extendSel(view, (range) => moveByLineBoundary(view, range, !ltrAtCursor(view)));
17105
- selectLineBoundaryRight = (view) => extendSel(view, (range) => moveByLineBoundary(view, range, ltrAtCursor(view)));
17106
- selectLineStart = (view) => extendSel(view, (range) => EditorSelection.cursor(view.lineBlockAt(range.head).from));
17107
- selectLineEnd = (view) => extendSel(view, (range) => EditorSelection.cursor(view.lineBlockAt(range.head).to));
17169
+ selectLineBoundaryForward = (view) => extendSel(view, true, (range) => moveByLineBoundary(view, range, true));
17170
+ selectLineBoundaryBackward = (view) => extendSel(view, false, (range) => moveByLineBoundary(view, range, false));
17171
+ selectLineBoundaryLeft = (view) => {
17172
+ let forward = !ltrAtCursor(view);
17173
+ return extendSel(view, forward, (range) => moveByLineBoundary(view, range, forward));
17174
+ };
17175
+ selectLineBoundaryRight = (view) => {
17176
+ let forward = ltrAtCursor(view);
17177
+ return extendSel(view, forward, (range) => moveByLineBoundary(view, range, forward));
17178
+ };
17179
+ selectLineStart = (view) => extendSel(view, false, (range) => EditorSelection.cursor(view.lineBlockAt(range.head).from));
17180
+ selectLineEnd = (view) => extendSel(view, true, (range) => EditorSelection.cursor(view.lineBlockAt(range.head).to));
17108
17181
  cursorDocStart = ({ state, dispatch }) => {
17109
17182
  dispatch(setSel(state, { anchor: 0 }));
17110
17183
  return true;
@@ -19453,7 +19526,8 @@ function getClosingQuote(openingQuote) {
19453
19526
  }
19454
19527
  function completeFromSchema(schema, tables, schemas, defaultTableName, defaultSchemaName, dialect) {
19455
19528
  var _a;
19456
- let top = new CompletionLevel(((_a = dialect === null || dialect === void 0 ? void 0 : dialect.spec.identifierQuotes) === null || _a === void 0 ? void 0 : _a[0]) || "\"", !!(dialect === null || dialect === void 0 ? void 0 : dialect.spec.caseInsensitiveIdentifiers));
19529
+ let idQuote = ((_a = dialect === null || dialect === void 0 ? void 0 : dialect.spec.identifierQuotes) === null || _a === void 0 ? void 0 : _a[0]) || "\"";
19530
+ let top = new CompletionLevel(idQuote, !!(dialect === null || dialect === void 0 ? void 0 : dialect.spec.caseInsensitiveIdentifiers));
19457
19531
  let defaultSchema = defaultSchemaName ? top.child(defaultSchemaName) : null;
19458
19532
  top.addNamespace(schema);
19459
19533
  if (tables) (defaultSchema || top).addCompletions(tables);
@@ -19545,7 +19619,31 @@ var init_dist$3 = __esmMin((() => {
19545
19619
  init_dist$8();
19546
19620
  init_dist$5();
19547
19621
  init_dist$4();
19548
- whitespace = 36, LineComment = 1, BlockComment = 2, String$1 = 3, Number$1 = 4, Bool = 5, Null = 6, ParenL = 7, ParenR = 8, BraceL = 9, BraceR = 10, BracketL = 11, BracketR = 12, Semi = 13, Dot = 14, Operator = 15, Punctuation = 16, SpecialVar = 17, Identifier = 18, QuotedIdentifier = 19, Keyword = 20, Type = 21, Bits = 22, Bytes = 23, Builtin = 24;
19622
+ whitespace = 36;
19623
+ LineComment = 1;
19624
+ BlockComment = 2;
19625
+ String$1 = 3;
19626
+ Number$1 = 4;
19627
+ Bool = 5;
19628
+ Null = 6;
19629
+ ParenL = 7;
19630
+ ParenR = 8;
19631
+ BraceL = 9;
19632
+ BraceR = 10;
19633
+ BracketL = 11;
19634
+ BracketR = 12;
19635
+ Semi = 13;
19636
+ Dot = 14;
19637
+ Operator = 15;
19638
+ Punctuation = 16;
19639
+ SpecialVar = 17;
19640
+ Identifier = 18;
19641
+ QuotedIdentifier = 19;
19642
+ Keyword = 20;
19643
+ Type = 21;
19644
+ Bits = 22;
19645
+ Bytes = 23;
19646
+ Builtin = 24;
19549
19647
  Space = " \r\n";
19550
19648
  defaults = {
19551
19649
  backslashEscapes: false,
@@ -19593,7 +19691,8 @@ var init_dist$3 = __esmMin((() => {
19593
19691
  tokenPrec: 0
19594
19692
  });
19595
19693
  EndFrom = /*@__PURE__*/ new Set(/*@__PURE__*/ "where group having order union intersect except all distinct limit offset fetch for".split(" "));
19596
- Span = /^\w*$/, QuotedSpan = /^[`'"\[]?\w*[`'"\]]?$/;
19694
+ Span = /^\w*$/;
19695
+ QuotedSpan = /^[`'"\[]?\w*[`'"\]]?$/;
19597
19696
  CompletionLevel = class CompletionLevel {
19598
19697
  constructor(idQuote, idCaseInsensitive) {
19599
19698
  this.idQuote = idQuote;
@@ -19703,7 +19802,7 @@ var init_dist$3 = __esmMin((() => {
19703
19802
  */
19704
19803
  static define(spec) {
19705
19804
  let d = dialect(spec, spec.keywords, spec.types, spec.builtin);
19706
- return new SQLDialect(d, LRLanguage.define({
19805
+ let language = LRLanguage.define({
19707
19806
  name: "sql",
19708
19807
  parser: parser$2.configure({ tokenizers: [{
19709
19808
  from: tokens,
@@ -19726,7 +19825,8 @@ var init_dist$3 = __esmMin((() => {
19726
19825
  "`"
19727
19826
  ] }
19728
19827
  }
19729
- }), spec);
19828
+ });
19829
+ return new SQLDialect(d, language, spec);
19730
19830
  }
19731
19831
  };
19732
19832
  StandardSQL = /*@__PURE__*/ SQLDialect.define({});
@@ -19821,7 +19921,22 @@ var init_dist = __esmMin((() => {
19821
19921
  init_dist$10();
19822
19922
  init_dist$7();
19823
19923
  init_dist$8();
19824
- chalky = "#e5c07b", coral = "#e06c75", cyan = "#56b6c2", invalid = "#ffffff", ivory = "#abb2bf", stone = "#7d8799", malibu = "#61afef", sage = "#98c379", whiskey = "#d19a66", violet = "#c678dd", darkBackground = "#21252b", highlightBackground = "#2c313a", background = "#282c34", tooltipBackground = "#353a42", selection = "#3E4451", cursor = "#528bff";
19924
+ chalky = "#e5c07b";
19925
+ coral = "#e06c75";
19926
+ cyan = "#56b6c2";
19927
+ invalid = "#ffffff";
19928
+ ivory = "#abb2bf";
19929
+ stone = "#7d8799";
19930
+ malibu = "#61afef";
19931
+ sage = "#98c379";
19932
+ whiskey = "#d19a66";
19933
+ violet = "#c678dd";
19934
+ darkBackground = "#21252b";
19935
+ highlightBackground = "#2c313a";
19936
+ background = "#282c34";
19937
+ tooltipBackground = "#353a42";
19938
+ selection = "#3E4451";
19939
+ cursor = "#528bff";
19825
19940
  oneDarkTheme = /*@__PURE__*/ EditorView.theme({
19826
19941
  "&": {
19827
19942
  color: ivory,
@@ -22062,12 +22177,12 @@ var require_exceljs_min = /* @__PURE__ */ __commonJSMin(((exports, module) => {
22062
22177
  addWorksheet(e, t) {
22063
22178
  const r = this.nextId;
22064
22179
  t && ("string" == typeof t ? (console.trace("tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: \"rbg value\" } }"), t = { properties: { tabColor: { argb: t } } }) : (t.argb || t.theme || t.indexed) && (console.trace("tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }"), t = { properties: { tabColor: t } }));
22065
- const i = this._worksheets.reduce((e, t) => (t && t.orderNo) > e ? t.orderNo : e, 0), o = new n(Object.assign({}, t, {
22180
+ const i = this._worksheets.reduce((e, t) => (t && t.orderNo) > e ? t.orderNo : e, 0), s = Object.assign({}, t, {
22066
22181
  id: r,
22067
22182
  name: e,
22068
22183
  orderNo: i + 1,
22069
22184
  workbook: this
22070
- }));
22185
+ }), o = new n(s);
22071
22186
  return this._worksheets[r] = o, o;
22072
22187
  }
22073
22188
  removeWorksheetEx(e) {
@@ -31774,7 +31889,8 @@ var require_exceljs_min = /* @__PURE__ */ __commonJSMin(((exports, module) => {
31774
31889
  const t = e.readUInt8();
31775
31890
  return e.isError(t) ? t : 0 !== t;
31776
31891
  }, c.prototype._decodeInt = function(e, t) {
31777
- let n = new i(e.raw());
31892
+ const r = e.raw();
31893
+ let n = new i(r);
31778
31894
  return t && (n = t[n.toString(10)] || n), n;
31779
31895
  }, c.prototype._use = function(e, t) {
31780
31896
  return "function" == typeof e && (e = e(t)), e._getDecoder("der").tree;
@@ -35616,7 +35732,7 @@ var require_exceljs_min = /* @__PURE__ */ __commonJSMin(((exports, module) => {
35616
35732
  }
35617
35733
  r.kMaxLength = 2147483647, s.TYPED_ARRAY_SUPPORT = function() {
35618
35734
  try {
35619
- var e = new Uint8Array(1);
35735
+ var e = /* @__PURE__ */ new Uint8Array(1);
35620
35736
  return e.__proto__ = {
35621
35737
  __proto__: Uint8Array.prototype,
35622
35738
  foo: function() {
@@ -43922,7 +44038,7 @@ var require_exceljs_min = /* @__PURE__ */ __commonJSMin(((exports, module) => {
43922
44038
  n.call(this, e);
43923
44039
  }
43924
44040
  e("../utils").inherits(i, n), i.prototype.readData = function(e) {
43925
- if (this.checkOffset(e), 0 === e) return new Uint8Array(0);
44041
+ if (this.checkOffset(e), 0 === e) return /* @__PURE__ */ new Uint8Array(0);
43926
44042
  var t = this.data.subarray(this.zero + this.index, this.zero + this.index + e);
43927
44043
  return this.index += e, t;
43928
44044
  }, t.exports = i;
@@ -44312,7 +44428,7 @@ var require_exceljs_min = /* @__PURE__ */ __commonJSMin(((exports, module) => {
44312
44428
  applyCanBeUsed: {
44313
44429
  uint8array: function() {
44314
44430
  try {
44315
- return n.uint8array && 1 === String.fromCharCode.apply(null, new Uint8Array(1)).length;
44431
+ return n.uint8array && 1 === String.fromCharCode.apply(null, /* @__PURE__ */ new Uint8Array(1)).length;
44316
44432
  } catch (e) {
44317
44433
  return !1;
44318
44434
  }
@@ -44987,7 +45103,7 @@ var require_exceljs_min = /* @__PURE__ */ __commonJSMin(((exports, module) => {
44987
45103
  i = !1;
44988
45104
  }
44989
45105
  try {
44990
- String.fromCharCode.apply(null, new Uint8Array(1));
45106
+ String.fromCharCode.apply(null, /* @__PURE__ */ new Uint8Array(1));
44991
45107
  } catch (e) {
44992
45108
  s = !1;
44993
45109
  }
@@ -52584,7 +52700,7 @@ while (n === a[++i] && n === a[++i] && n === a[++i] && n === a[++i] && n === a[+
52584
52700
  var s = function(e) {
52585
52701
  if (!(0, i.default)(e)) throw TypeError("Invalid UUID");
52586
52702
  let t;
52587
- const r = new Uint8Array(16);
52703
+ const r = /* @__PURE__ */ new Uint8Array(16);
52588
52704
  return r[0] = (t = parseInt(e.slice(0, 8), 16)) >>> 24, r[1] = t >>> 16 & 255, r[2] = t >>> 8 & 255, r[3] = 255 & t, r[4] = (t = parseInt(e.slice(9, 13), 16)) >>> 8, r[5] = 255 & t, r[6] = (t = parseInt(e.slice(14, 18), 16)) >>> 8, r[7] = 255 & t, r[8] = (t = parseInt(e.slice(19, 23), 16)) >>> 8, r[9] = 255 & t, r[10] = (t = parseInt(e.slice(24, 36), 16)) / 1099511627776 & 255, r[11] = t / 4294967296 & 255, r[12] = t >>> 24 & 255, r[13] = t >>> 16 & 255, r[14] = t >>> 8 & 255, r[15] = 255 & t, r;
52589
52705
  };
52590
52706
  r.default = s;
@@ -52601,7 +52717,7 @@ while (n === a[++i] && n === a[++i] && n === a[++i] && n === a[++i] && n === a[+
52601
52717
  if (!n && (n = "undefined" != typeof crypto && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || "undefined" != typeof msCrypto && "function" == typeof msCrypto.getRandomValues && msCrypto.getRandomValues.bind(msCrypto), !n)) throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
52602
52718
  return n(i);
52603
52719
  };
52604
- const i = new Uint8Array(16);
52720
+ const i = /* @__PURE__ */ new Uint8Array(16);
52605
52721
  }, {}],
52606
52722
  534: [function(e, t, r) {
52607
52723
  "use strict";
@@ -52638,13 +52754,13 @@ while (n === a[++i] && n === a[++i] && n === a[++i] && n === a[++i] && n === a[+
52638
52754
  e.push(128);
52639
52755
  const s = e.length / 4 + 2, o = Math.ceil(s / 16), a = new Array(o);
52640
52756
  for (let t = 0; t < o; ++t) {
52641
- const r = new Uint32Array(16);
52757
+ const r = /* @__PURE__ */ new Uint32Array(16);
52642
52758
  for (let n = 0; n < 16; ++n) r[n] = e[64 * t + 4 * n] << 24 | e[64 * t + 4 * n + 1] << 16 | e[64 * t + 4 * n + 2] << 8 | e[64 * t + 4 * n + 3];
52643
52759
  a[t] = r;
52644
52760
  }
52645
52761
  a[o - 1][14] = 8 * (e.length - 1) / Math.pow(2, 32), a[o - 1][14] = Math.floor(a[o - 1][14]), a[o - 1][15] = 8 * (e.length - 1) & 4294967295;
52646
52762
  for (let e = 0; e < o; ++e) {
52647
- const s = new Uint32Array(80);
52763
+ const s = /* @__PURE__ */ new Uint32Array(80);
52648
52764
  for (let t = 0; t < 16; ++t) s[t] = a[e][t];
52649
52765
  for (let e = 16; e < 80; ++e) s[e] = i(s[e - 3] ^ s[e - 8] ^ s[e - 14] ^ s[e - 16], 1);
52650
52766
  let o = r[0], l = r[1], c = r[2], u = r[3], h = r[4];
@@ -53015,7 +53131,8 @@ var init_sql_executor_vue_vue_type_script_setup_true_lang = __esmMin((() => {
53015
53131
  const startEditorHeight = container.querySelector(".sql-editor")?.clientHeight || 0;
53016
53132
  function onMouseMove(e) {
53017
53133
  if (!isResizing.value || !container) return;
53018
- const newEditorRatio = (startEditorHeight + (e.clientY - startY)) / containerHeight;
53134
+ const deltaY = e.clientY - startY;
53135
+ const newEditorRatio = (startEditorHeight + deltaY) / containerHeight;
53019
53136
  if (newEditorRatio > .2 && newEditorRatio < .8) {
53020
53137
  const sqlEditor = container.querySelector(".sql-editor");
53021
53138
  if (sqlEditor) sqlEditor.style.flex = `0 0 ${newEditorRatio * 100}%`;
@@ -53065,7 +53182,8 @@ var init_sql_executor_vue_vue_type_script_setup_true_lang = __esmMin((() => {
53065
53182
  }
53066
53183
  }
53067
53184
  function formatSql() {
53068
- sqlQuery.value = sqlQuery.value.replace(/\bSELECT\b/gi, "\nSELECT ").replace(/\bFROM\b/gi, "\nFROM ").replace(/\bWHERE\b/gi, "\nWHERE ").replace(/\bJOIN\b/gi, "\nJOIN ").replace(/\bAND\b/gi, "\n AND ").replace(/\bOR\b/gi, "\n OR ").replace(/\bGROUP BY\b/gi, "\nGROUP BY ").replace(/\bORDER BY\b/gi, "\nORDER BY ").trim();
53185
+ let formatted = sqlQuery.value.replace(/\bSELECT\b/gi, "\nSELECT ").replace(/\bFROM\b/gi, "\nFROM ").replace(/\bWHERE\b/gi, "\nWHERE ").replace(/\bJOIN\b/gi, "\nJOIN ").replace(/\bAND\b/gi, "\n AND ").replace(/\bOR\b/gi, "\n OR ").replace(/\bGROUP BY\b/gi, "\nGROUP BY ").replace(/\bORDER BY\b/gi, "\nORDER BY ");
53186
+ sqlQuery.value = formatted.trim();
53069
53187
  if (editor.value) editor.value.dispatch({ changes: {
53070
53188
  from: 0,
53071
53189
  to: editor.value.state.doc.length,
@@ -53118,89 +53236,91 @@ var init_sql_executor_vue_vue_type_script_setup_true_lang = __esmMin((() => {
53118
53236
  }
53119
53237
  function initEditor() {
53120
53238
  if (!editorRef.value) return;
53239
+ const state = EditorState.create({
53240
+ doc: sqlQuery.value,
53241
+ extensions: [
53242
+ lineNumbers(),
53243
+ highlightActiveLineGutter(),
53244
+ highlightActiveLine(),
53245
+ drawSelection(),
53246
+ placeholder(t("sqlExecutor.inputSQLPlaceholder")),
53247
+ sql(),
53248
+ oneDark,
53249
+ keymap.of(defaultKeymap),
53250
+ EditorView.updateListener.of((update) => {
53251
+ if (update.docChanged) sqlQuery.value = update.state.doc.toString();
53252
+ }),
53253
+ EditorView.lineWrapping,
53254
+ EditorView.theme({
53255
+ "&": {
53256
+ height: "100%",
53257
+ fontSize: "14px",
53258
+ fontFamily: "Monaco, Menlo, Consolas, \"Courier New\", monospace"
53259
+ },
53260
+ ".cm-content": {
53261
+ padding: "10px",
53262
+ minHeight: "100%"
53263
+ },
53264
+ ".cm-gutters": {
53265
+ backgroundColor: "#282c34",
53266
+ color: "#abb2bf",
53267
+ border: "none"
53268
+ },
53269
+ ".cm-activeLineGutter": { backgroundColor: "#282c34" },
53270
+ ".cm-activeLine": { backgroundColor: "rgba(255, 255, 255, 0.1)" }
53271
+ })
53272
+ ]
53273
+ });
53121
53274
  editor.value = new EditorView({
53122
- state: EditorState.create({
53123
- doc: sqlQuery.value,
53124
- extensions: [
53125
- lineNumbers(),
53126
- highlightActiveLineGutter(),
53127
- highlightActiveLine(),
53128
- drawSelection(),
53129
- placeholder(t("sqlExecutor.inputSQLPlaceholder")),
53130
- sql(),
53131
- oneDark,
53132
- keymap.of(defaultKeymap),
53133
- EditorView.updateListener.of((update) => {
53134
- if (update.docChanged) sqlQuery.value = update.state.doc.toString();
53135
- }),
53136
- EditorView.lineWrapping,
53137
- EditorView.theme({
53138
- "&": {
53139
- height: "100%",
53140
- fontSize: "14px",
53141
- fontFamily: "Monaco, Menlo, Consolas, \"Courier New\", monospace"
53142
- },
53143
- ".cm-content": {
53144
- padding: "10px",
53145
- minHeight: "100%"
53146
- },
53147
- ".cm-gutters": {
53148
- backgroundColor: "#282c34",
53149
- color: "#abb2bf",
53150
- border: "none"
53151
- },
53152
- ".cm-activeLineGutter": { backgroundColor: "#282c34" },
53153
- ".cm-activeLine": { backgroundColor: "rgba(255, 255, 255, 0.1)" }
53154
- })
53155
- ]
53156
- }),
53275
+ state,
53157
53276
  parent: editorRef.value
53158
53277
  });
53159
53278
  }
53160
53279
  function initResultEditor() {
53161
53280
  if (!resultEditorRef.value) return;
53281
+ const state = EditorState.create({
53282
+ doc: "",
53283
+ extensions: [
53284
+ lineNumbers(),
53285
+ highlightActiveLineGutter(),
53286
+ highlightActiveLine(),
53287
+ drawSelection(),
53288
+ placeholder(t("sqlExecutor.resultPlaceholder")),
53289
+ json(),
53290
+ syntaxHighlighting(defaultHighlightStyle),
53291
+ keymap.of(defaultKeymap),
53292
+ EditorView.lineWrapping,
53293
+ EditorState.readOnly.of(true),
53294
+ EditorView.theme({
53295
+ "&": {
53296
+ height: "100%",
53297
+ fontSize: "14px",
53298
+ fontFamily: "Monaco, Menlo, Consolas, \"Courier New\", monospace",
53299
+ backgroundColor: "#f8f9fa",
53300
+ color: "#212529"
53301
+ },
53302
+ ".cm-content": {
53303
+ padding: "10px",
53304
+ minHeight: "100%",
53305
+ backgroundColor: "#ffffff",
53306
+ color: "#212529",
53307
+ border: "1px solid #dee2e6"
53308
+ },
53309
+ ".cm-gutters": {
53310
+ backgroundColor: "#f8f9fa",
53311
+ color: "#6c757d",
53312
+ border: "1px solid #dee2e6",
53313
+ borderRight: "none"
53314
+ },
53315
+ ".cm-activeLineGutter": { backgroundColor: "#e9ecef" },
53316
+ ".cm-activeLine": { backgroundColor: "#e9ecef" },
53317
+ ".cm-selectionBackground": { backgroundColor: "#cce7ff" },
53318
+ ".cm-line": { color: "#212529" }
53319
+ })
53320
+ ]
53321
+ });
53162
53322
  resultEditor.value = new EditorView({
53163
- state: EditorState.create({
53164
- doc: "",
53165
- extensions: [
53166
- lineNumbers(),
53167
- highlightActiveLineGutter(),
53168
- highlightActiveLine(),
53169
- drawSelection(),
53170
- placeholder(t("sqlExecutor.resultPlaceholder")),
53171
- json(),
53172
- syntaxHighlighting(defaultHighlightStyle),
53173
- keymap.of(defaultKeymap),
53174
- EditorView.lineWrapping,
53175
- EditorState.readOnly.of(true),
53176
- EditorView.theme({
53177
- "&": {
53178
- height: "100%",
53179
- fontSize: "14px",
53180
- fontFamily: "Monaco, Menlo, Consolas, \"Courier New\", monospace",
53181
- backgroundColor: "#f8f9fa",
53182
- color: "#212529"
53183
- },
53184
- ".cm-content": {
53185
- padding: "10px",
53186
- minHeight: "100%",
53187
- backgroundColor: "#ffffff",
53188
- color: "#212529",
53189
- border: "1px solid #dee2e6"
53190
- },
53191
- ".cm-gutters": {
53192
- backgroundColor: "#f8f9fa",
53193
- color: "#6c757d",
53194
- border: "1px solid #dee2e6",
53195
- borderRight: "none"
53196
- },
53197
- ".cm-activeLineGutter": { backgroundColor: "#e9ecef" },
53198
- ".cm-activeLine": { backgroundColor: "#e9ecef" },
53199
- ".cm-selectionBackground": { backgroundColor: "#cce7ff" },
53200
- ".cm-line": { color: "#212529" }
53201
- })
53202
- ]
53203
- }),
53323
+ state,
53204
53324
  parent: resultEditorRef.value
53205
53325
  });
53206
53326
  }
@@ -53562,7 +53682,8 @@ var init_connection_detail_vue_vue_type_script_setup_true_lang = __esmMin((() =>
53562
53682
  if (!props.connection) return;
53563
53683
  connectionStatus.value = "testing";
53564
53684
  try {
53565
- connectionStatus.value = await connectionStore.testConnection(props.connection) ? "connected" : "disconnected";
53685
+ const isConnected = await connectionStore.testConnection(props.connection);
53686
+ connectionStatus.value = isConnected ? "connected" : "disconnected";
53566
53687
  } catch (error) {
53567
53688
  console.error("连接测试失败:", error);
53568
53689
  connectionStatus.value = "disconnected";
@@ -56873,7 +56994,8 @@ var init_database_detail_vue_vue_type_script_setup_true_lang = __esmMin((() => {
56873
56994
  async function loadViews() {
56874
56995
  if (!props.connection?.id) return;
56875
56996
  try {
56876
- views.value = (await databaseService.getViews(props.connection.id, props.database)).data || [];
56997
+ const result = await databaseService.getViews(props.connection.id, props.database);
56998
+ views.value = result.data || [];
56877
56999
  } catch (error) {
56878
57000
  console.error("加载视图失败:", error);
56879
57001
  views.value = [];
@@ -56940,7 +57062,8 @@ var init_database_detail_vue_vue_type_script_setup_true_lang = __esmMin((() => {
56940
57062
  async function loadProcedures() {
56941
57063
  if (!props.connection?.id) return;
56942
57064
  try {
56943
- procedures.value = (await databaseService.getProcedures(props.connection.id, props.database)).data || [];
57065
+ const result = await databaseService.getProcedures(props.connection.id, props.database);
57066
+ procedures.value = result.data || [];
56944
57067
  } catch (error) {
56945
57068
  console.error("加载存储过程失败:", error);
56946
57069
  procedures.value = [];
@@ -58202,7 +58325,8 @@ var init_table_detail_vue_vue_type_script_setup_true_lang = __esmMin((() => {
58202
58325
  await modal.error(t("tableDetail.noInsertField"));
58203
58326
  return;
58204
58327
  }
58205
- emit("execute-sql", `INSERT INTO ${props.table?.name} (${columns.join(", ")}) VALUES (${values.join(", ")})`);
58328
+ const sql = `INSERT INTO ${props.table?.name} (${columns.join(", ")}) VALUES (${values.join(", ")})`;
58329
+ emit("execute-sql", sql);
58206
58330
  } catch (error) {
58207
58331
  console.error("插入数据失败:", error);
58208
58332
  modal.error(t("tableDetail.insertFailed") + ": " + error.message);
@@ -58961,7 +59085,8 @@ var init_explorer_vue_vue_type_script_setup_true_lang = __esmMin((() => {
58961
59085
  }, { deep: true });
58962
59086
  async function loadConnections() {
58963
59087
  try {
58964
- connections.value = (await connectionService.getAllConnections())?.data || [];
59088
+ const response = await connectionService.getAllConnections();
59089
+ connections.value = response?.data || [];
58965
59090
  } catch (error) {
58966
59091
  console.error("加载连接失败:", error);
58967
59092
  modal.error(error.msg || error.message || "加载连接失败", {