fdb2 1.0.35 → 1.0.37

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 (41) hide show
  1. package/README.md +20 -1
  2. package/dist/public/explorer.css +1338 -1122
  3. package/dist/public/explorer.js +990 -665
  4. package/dist/public/index.css +797 -120
  5. package/dist/public/index.js +282 -26
  6. package/dist/public/layout.css +201 -202
  7. package/dist/public/layout.js +14 -14
  8. package/dist/server/index.d.ts.map +1 -1
  9. package/dist/server/index.js.map +1 -1
  10. package/dist/server/index.ts +0 -1
  11. package/dist/server/service/database/clickhouse-connection.d.ts.map +1 -1
  12. package/dist/server/service/database/clickhouse-connection.js +3 -3
  13. package/dist/server/service/database/clickhouse-connection.js.map +1 -1
  14. package/dist/server/service/database/clickhouse-connection.ts +3 -3
  15. package/dist/server/service/database/mssql.service.d.ts.map +1 -1
  16. package/dist/server/service/database/mssql.service.js +14 -45
  17. package/dist/server/service/database/mssql.service.js.map +1 -1
  18. package/dist/server/service/database/mssql.service.ts +21 -49
  19. package/dist/server/service/database/mysql.service.d.ts.map +1 -1
  20. package/dist/server/service/database/mysql.service.js +34 -52
  21. package/dist/server/service/database/mysql.service.js.map +1 -1
  22. package/dist/server/service/database/mysql.service.ts +50 -55
  23. package/dist/server/service/database/oracle.service.d.ts.map +1 -1
  24. package/dist/server/service/database/oracle.service.js +16 -53
  25. package/dist/server/service/database/oracle.service.js.map +1 -1
  26. package/dist/server/service/database/oracle.service.ts +23 -56
  27. package/dist/server/service/database/postgres.service.d.ts.map +1 -1
  28. package/dist/server/service/database/postgres.service.js +15 -53
  29. package/dist/server/service/database/postgres.service.js.map +1 -1
  30. package/dist/server/service/database/postgres.service.ts +22 -57
  31. package/dist/server/service/database/sql-type.helper.d.ts +28 -0
  32. package/dist/server/service/database/sql-type.helper.d.ts.map +1 -0
  33. package/dist/server/service/database/sql-type.helper.js +151 -0
  34. package/dist/server/service/database/sql-type.helper.js.map +1 -0
  35. package/dist/server/service/database/sql-type.helper.ts +157 -0
  36. package/dist/server/service/database/sqlite.service.d.ts.map +1 -1
  37. package/dist/server/service/database/sqlite.service.js +58 -67
  38. package/dist/server/service/database/sqlite.service.js.map +1 -1
  39. package/dist/server/service/database/sqlite.service.ts +72 -72
  40. package/package.json +6 -2
  41. package/public/fdb2.png +0 -0
@@ -4502,12 +4502,255 @@ var init_detect = __esmMin((() => {
4502
4502
  }
4503
4503
  }));
4504
4504
  //#endregion
4505
+ //#region src/platform/vscode/bridge.ts
4506
+ /**
4507
+ * 获取 VSCode 桥接实例
4508
+ */
4509
+ function getVSCodeBridge() {
4510
+ if (!bridgeInstance) bridgeInstance = new VSCodeBridge();
4511
+ return bridgeInstance;
4512
+ }
4513
+ var VSCodeBridge, bridgeInstance;
4514
+ var init_bridge = __esmMin((() => {
4515
+ VSCodeBridge = class {
4516
+ vscode = null;
4517
+ constructor() {
4518
+ if (typeof window !== "undefined" && typeof acquireVsCodeApi === "function") this.vscode = acquireVsCodeApi();
4519
+ }
4520
+ /**
4521
+ * 判断是否在 VSCode 环境中
4522
+ */
4523
+ isVSCodeEnvironment() {
4524
+ return this.vscode !== null;
4525
+ }
4526
+ /**
4527
+ * 发送消息到 VSCode 扩展
4528
+ */
4529
+ postMessage(message) {
4530
+ if (!this.vscode) {
4531
+ console.warn("Not in VSCode environment");
4532
+ return;
4533
+ }
4534
+ this.vscode.postMessage(message);
4535
+ }
4536
+ /**
4537
+ * 监听来自 VSCode 扩展的消息
4538
+ */
4539
+ onMessage(callback) {
4540
+ window.addEventListener("message", (event) => {
4541
+ if (event.origin) return;
4542
+ callback(event.data);
4543
+ });
4544
+ }
4545
+ /**
4546
+ * 获取状态
4547
+ */
4548
+ getState() {
4549
+ if (!this.vscode) return {};
4550
+ return this.vscode.getState();
4551
+ }
4552
+ /**
4553
+ * 保存状态
4554
+ */
4555
+ setState(state) {
4556
+ if (!this.vscode) return;
4557
+ this.vscode.setState(state);
4558
+ }
4559
+ /**
4560
+ * 初始化桥接
4561
+ */
4562
+ init(messageHandler) {
4563
+ if (this.isVSCodeEnvironment()) {
4564
+ if (messageHandler) this.onMessage(messageHandler);
4565
+ const savedState = this.getState();
4566
+ if (savedState) this.postMessage({
4567
+ command: "restoreState",
4568
+ data: savedState
4569
+ });
4570
+ }
4571
+ }
4572
+ };
4573
+ bridgeInstance = null;
4574
+ }));
4575
+ //#endregion
4576
+ //#region src/platform/vscode/rpc.ts
4577
+ /**
4578
+ * 是否运行在 VSCode webview 构建中。
4579
+ * 注意:不能用 base/detect 的 isVSCode——桌面端若从 VSCode 终端启动会带上 VSCODE_PID 而误判。
4580
+ */
4581
+ function isVscodeWebview() {
4582
+ return typeof __VS_CODE_ENV__ !== "undefined" && !!__VS_CODE_ENV__;
4583
+ }
4584
+ function installListener() {
4585
+ if (installed || typeof window === "undefined") return;
4586
+ installed = true;
4587
+ window.addEventListener("message", (event) => {
4588
+ const m = event.data;
4589
+ if (!m || m.command !== "apiResponse" || typeof m.id !== "number") return;
4590
+ const p = pending.get(m.id);
4591
+ if (!p) return;
4592
+ pending.delete(m.id);
4593
+ p.resolve(m.body);
4594
+ });
4595
+ }
4596
+ /**
4597
+ * 发送 API 请求到扩展宿主,resolve 为 { ret, msg, data } 包装体(与桌面端 HTTP 响应体一致)。
4598
+ */
4599
+ function vscodeApiRequest(path, data) {
4600
+ installListener();
4601
+ const id = ++seq;
4602
+ return new Promise((resolve, reject) => {
4603
+ pending.set(id, {
4604
+ resolve,
4605
+ reject: (e) => {
4606
+ resolve(void 0);
4607
+ }
4608
+ });
4609
+ const plain = data != null ? JSON.parse(JSON.stringify(data)) : {};
4610
+ getVSCodeBridge().postMessage({
4611
+ command: "apiRequest",
4612
+ id,
4613
+ path,
4614
+ data: plain
4615
+ });
4616
+ setTimeout(() => {
4617
+ if (pending.has(id)) {
4618
+ pending.delete(id);
4619
+ resolve({
4620
+ ret: 504,
4621
+ msg: "请求超时: " + path
4622
+ });
4623
+ }
4624
+ }, 6e4);
4625
+ });
4626
+ }
4627
+ function installSaveFileListener() {
4628
+ if (saveFileInstalled || typeof window === "undefined") return;
4629
+ saveFileInstalled = true;
4630
+ window.addEventListener("message", (event) => {
4631
+ const m = event.data;
4632
+ if (!m || m.command !== "saveFileResult" || typeof m.id !== "number") return;
4633
+ const p = saveFilePending.get(m.id);
4634
+ if (!p) return;
4635
+ saveFilePending.delete(m.id);
4636
+ p.resolve(m.data?.path ?? null);
4637
+ });
4638
+ }
4639
+ /** 弹出保存对话框并由宿主写文件,返回最终路径;用户取消或失败返回 null。 */
4640
+ function vscodeSaveFile(opts) {
4641
+ installSaveFileListener();
4642
+ const bridge = getVSCodeBridge();
4643
+ if (!bridge.isVSCodeEnvironment()) return Promise.resolve(null);
4644
+ const id = ++saveFileSeq;
4645
+ return new Promise((resolve) => {
4646
+ saveFilePending.set(id, { resolve });
4647
+ bridge.postMessage({
4648
+ command: "saveFile",
4649
+ id,
4650
+ data: opts
4651
+ });
4652
+ setTimeout(() => {
4653
+ if (saveFilePending.has(id)) {
4654
+ saveFilePending.delete(id);
4655
+ resolve(null);
4656
+ }
4657
+ }, 3e5);
4658
+ });
4659
+ }
4660
+ /** 通知宿主"导出完成",由宿主弹出带「打开 / 在资源管理器中显示」的提示 */
4661
+ function vscodeNotifyExported(path) {
4662
+ if (!path) return;
4663
+ getVSCodeBridge().postMessage({
4664
+ command: "showExportedFile",
4665
+ data: { path }
4666
+ });
4667
+ }
4668
+ /** Blob -> base64(二进制导出需要) */
4669
+ function blobToBase64(blob) {
4670
+ return new Promise((resolve, reject) => {
4671
+ const reader = new FileReader();
4672
+ reader.onload = () => {
4673
+ const result = String(reader.result || "");
4674
+ resolve(result.slice(result.indexOf(",") + 1));
4675
+ };
4676
+ reader.onerror = () => reject(reader.error || /* @__PURE__ */ new Error("read blob failed"));
4677
+ reader.readAsDataURL(blob);
4678
+ });
4679
+ }
4680
+ function installSaveFolderListener() {
4681
+ if (saveFolderInstalled || typeof window === "undefined") return;
4682
+ saveFolderInstalled = true;
4683
+ window.addEventListener("message", (event) => {
4684
+ const m = event.data;
4685
+ if (!m || m.command !== "pickSaveFolderResult" || typeof m.id !== "number") return;
4686
+ const p = saveFolderPending.get(m.id);
4687
+ if (!p) return;
4688
+ saveFolderPending.delete(m.id);
4689
+ p.resolve(m.data?.path ?? null);
4690
+ });
4691
+ }
4692
+ /**
4693
+ * 在 VSCode 环境中弹出系统文件夹选择器,返回用户选中的目录路径(绝对路径)。
4694
+ * 非 VSCode 环境直接 resolve(null),调用方据此跳过(沿用后端默认目录)。
4695
+ * 用户取消选择也返回 null。
4696
+ */
4697
+ function vscodePickSaveFolder(defaultUri) {
4698
+ installSaveFolderListener();
4699
+ const bridge = getVSCodeBridge();
4700
+ if (!bridge.isVSCodeEnvironment()) return Promise.resolve(null);
4701
+ const id = ++saveFolderSeq;
4702
+ return new Promise((resolve) => {
4703
+ saveFolderPending.set(id, { resolve });
4704
+ bridge.postMessage({
4705
+ command: "pickSaveFolder",
4706
+ id,
4707
+ data: defaultUri ? { defaultUri } : {}
4708
+ });
4709
+ setTimeout(() => {
4710
+ if (saveFolderPending.has(id)) {
4711
+ saveFolderPending.delete(id);
4712
+ resolve(null);
4713
+ }
4714
+ }, 12e4);
4715
+ });
4716
+ }
4717
+ var seq, pending, installed, saveFileSeq, saveFilePending, saveFileInstalled, saveFolderSeq, saveFolderPending, saveFolderInstalled;
4718
+ var init_rpc = __esmMin((() => {
4719
+ init_bridge();
4720
+ seq = 0;
4721
+ pending = /* @__PURE__ */ new Map();
4722
+ installed = false;
4723
+ saveFileSeq = 0;
4724
+ saveFilePending = /* @__PURE__ */ new Map();
4725
+ saveFileInstalled = false;
4726
+ saveFolderSeq = 0;
4727
+ saveFolderPending = /* @__PURE__ */ new Map();
4728
+ saveFolderInstalled = false;
4729
+ }));
4730
+ //#endregion
4505
4731
  //#region src/service/base.ts
4506
4732
  function getRequestUrl(api) {
4507
4733
  if (/^(http(s)?:)?\/\//.test(api)) return api;
4508
4734
  return `${(config_default.apiUrl || `${location.protocol}//${location.hostname}${[80, 443].includes(Number(location.port)) ? "" : ":" + location.port}`).trim()}${config_default.prefix}${api}`;
4509
4735
  }
4510
4736
  async function requestServer(url, data, option) {
4737
+ if (typeof __VS_CODE_ENV__ !== "undefined" && __VS_CODE_ENV__) try {
4738
+ return {
4739
+ status: 200,
4740
+ statusText: "OK",
4741
+ data: await vscodeApiRequest(url.replace(/^(http(s)?:)?\/\//, "").replace(/.*?\/api\//, "/api/"), data)
4742
+ };
4743
+ } catch (error) {
4744
+ console.error("VSCode 消息桥调用失败:", error);
4745
+ return {
4746
+ status: 500,
4747
+ statusText: "Internal Server Error",
4748
+ data: {
4749
+ ret: 500,
4750
+ msg: error?.message || "执行失败"
4751
+ }
4752
+ };
4753
+ }
4511
4754
  const electronAPI = window.electronAPI;
4512
4755
  if (isElectron && electronAPI?.api && electronAPI?.isPackaged) try {
4513
4756
  const apiPath = url.replace(/^(http(s)?:)?\/\//, "").replace(/.*?\/api\//, "/api/");
@@ -4554,6 +4797,7 @@ var init_base = __esmMin((() => {
4554
4797
  init_eventBus();
4555
4798
  init_config();
4556
4799
  init_detect();
4800
+ init_rpc();
4557
4801
  }));
4558
4802
  //#endregion
4559
4803
  //#region node_modules/.pnpm/js-cookie@3.0.8/node_modules/js-cookie/dist/js.cookie.mjs
@@ -4926,6 +5170,7 @@ var init_zh_CN = __esmMin((() => {
4926
5170
  },
4927
5171
  databaseDetail: {
4928
5172
  tables: "数据表",
5173
+ backToConnection: "返回连接概览",
4929
5174
  views: "视图",
4930
5175
  procedures: "存储过程",
4931
5176
  functions: "函数",
@@ -4975,11 +5220,14 @@ var init_zh_CN = __esmMin((() => {
4975
5220
  tableModifySuccess: "表结构修改成功",
4976
5221
  tableCreateFailed: "创建表失败",
4977
5222
  tableModifyFailed: "表结构修改失败",
5223
+ getTableInfoFailed: "获取表结构失败",
4978
5224
  size: "大小"
4979
5225
  },
4980
5226
  tableDetail: {
4981
5227
  rowData: "行数据",
4982
5228
  refreshData: "刷新数据",
5229
+ backToConnection: "返回连接概览",
5230
+ backToDatabase: "返回数据库视图",
4983
5231
  modifyStructure: "修改表结构",
4984
5232
  insertData: "插入数据",
4985
5233
  exportMenu: "导出",
@@ -5092,6 +5340,8 @@ var init_zh_CN = __esmMin((() => {
5092
5340
  operationsHeader: "操作",
5093
5341
  columnNamePlaceholder: "字段名",
5094
5342
  selectType: "选择类型",
5343
+ customType: "自定义类型",
5344
+ customTypePlaceholder: "如 ENUM('a','b')、DECIMAL(10,2)",
5095
5345
  lengthPlaceholder: "长度",
5096
5346
  precisionPlaceholder: "精度",
5097
5347
  scalePlaceholder: "小数",
@@ -5725,6 +5975,7 @@ var init_en_US = __esmMin((() => {
5725
5975
  tableModifySuccess: "Table structure modified successfully",
5726
5976
  tableCreateFailed: "Failed to create table",
5727
5977
  tableModifyFailed: "Failed to modify table structure",
5978
+ getTableInfoFailed: "Failed to get table structure",
5728
5979
  size: "Size"
5729
5980
  },
5730
5981
  tableDetail: {
@@ -5842,6 +6093,8 @@ var init_en_US = __esmMin((() => {
5842
6093
  operationsHeader: "Actions",
5843
6094
  columnNamePlaceholder: "Column name",
5844
6095
  selectType: "Select type",
6096
+ customType: "Custom type",
6097
+ customTypePlaceholder: "e.g. ENUM('a','b'), DECIMAL(10,2)",
5845
6098
  lengthPlaceholder: "Length",
5846
6099
  precisionPlaceholder: "Precision",
5847
6100
  scalePlaceholder: "Scale",
@@ -7069,17 +7322,17 @@ var init_index_vue_vue_type_script_setup_true_lang$1 = __esmMin((() => {
7069
7322
  });
7070
7323
  }));
7071
7324
  //#endregion
7072
- //#region src/components/modal/index.vue?vue&type=style&index=0&scoped=323d35a9&lang.css
7073
- var init_index_vue_vue_type_style_index_0_scoped_323d35a9_lang = __esmMin((() => {}));
7325
+ //#region src/components/modal/index.vue?vue&type=style&index=0&scoped=aa6b0e1f&lang.css
7326
+ var init_index_vue_vue_type_style_index_0_scoped_aa6b0e1f_lang = __esmMin((() => {}));
7074
7327
  //#endregion
7075
7328
  //#region src/components/modal/index.vue
7076
7329
  var modal_default$1;
7077
7330
  var init_modal$1 = __esmMin((() => {
7078
7331
  init_index_vue_vue_type_script_setup_true_lang$1();
7079
7332
  init_index_vue_vue_type_script_setup_true_lang$1();
7080
- init_index_vue_vue_type_style_index_0_scoped_323d35a9_lang();
7333
+ init_index_vue_vue_type_style_index_0_scoped_aa6b0e1f_lang();
7081
7334
  init__plugin_vue_export_helper();
7082
- modal_default$1 = /*#__PURE__*/ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default$1, [["__scopeId", "data-v-323d35a9"]]);
7335
+ modal_default$1 = /*#__PURE__*/ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default$1, [["__scopeId", "data-v-aa6b0e1f"]]);
7083
7336
  }));
7084
7337
  //#endregion
7085
7338
  //#region src/components/dataGrid/pagination.vue?vue&type=script&setup=true&lang.ts
@@ -7185,7 +7438,7 @@ var init_pagination = __esmMin((() => {
7185
7438
  }));
7186
7439
  //#endregion
7187
7440
  //#region src/components/dataGrid/index.vue?vue&type=script&setup=true&lang.ts
7188
- var _hoisted_1, _hoisted_2, _hoisted_3, _hoisted_4, _hoisted_5, _hoisted_6, _hoisted_7, _hoisted_8, _hoisted_9, _hoisted_10, _hoisted_11, _hoisted_12, _hoisted_13, index_vue_vue_type_script_setup_true_lang_default;
7441
+ var _hoisted_1, _hoisted_2, _hoisted_3, _hoisted_4, _hoisted_5, _hoisted_6, _hoisted_7, _hoisted_8, _hoisted_9, _hoisted_10, _hoisted_11, _hoisted_12, index_vue_vue_type_script_setup_true_lang_default;
7189
7442
  var init_index_vue_vue_type_script_setup_true_lang = __esmMin((() => {
7190
7443
  init_vue_runtime_esm_bundler();
7191
7444
  init_vue_i18n();
@@ -7193,29 +7446,28 @@ var init_index_vue_vue_type_script_setup_true_lang = __esmMin((() => {
7193
7446
  init_pagination();
7194
7447
  _hoisted_1 = { class: "datagrid-container" };
7195
7448
  _hoisted_2 = { class: "datagrid-inner" };
7196
- _hoisted_3 = { class: "table table-light table-striped table-hover" };
7197
- _hoisted_4 = { class: "table-light" };
7198
- _hoisted_5 = ["onClick"];
7199
- _hoisted_6 = { class: "header-content" };
7200
- _hoisted_7 = {
7449
+ _hoisted_3 = { class: "table table-striped table-hover" };
7450
+ _hoisted_4 = ["onClick"];
7451
+ _hoisted_5 = { class: "header-content" };
7452
+ _hoisted_6 = {
7201
7453
  key: 0,
7202
7454
  class: "sort-icon"
7203
7455
  };
7204
- _hoisted_8 = {
7456
+ _hoisted_7 = {
7205
7457
  key: 0,
7206
7458
  class: "bi bi-caret-up-fill"
7207
7459
  };
7208
- _hoisted_9 = {
7460
+ _hoisted_8 = {
7209
7461
  key: 1,
7210
7462
  class: "bi bi-caret-down-fill"
7211
7463
  };
7212
- _hoisted_10 = {
7464
+ _hoisted_9 = {
7213
7465
  key: 2,
7214
7466
  class: "bi bi-caret-up text-muted opacity-50"
7215
7467
  };
7216
- _hoisted_11 = { class: "table-group-divider" };
7217
- _hoisted_12 = ["onClick"];
7218
- _hoisted_13 = { key: 1 };
7468
+ _hoisted_10 = { class: "table-group-divider" };
7469
+ _hoisted_11 = ["onClick"];
7470
+ _hoisted_12 = { key: 1 };
7219
7471
  index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
7220
7472
  __name: "index",
7221
7473
  props: {
@@ -7286,16 +7538,16 @@ var init_index_vue_vue_type_script_setup_true_lang = __esmMin((() => {
7286
7538
  }
7287
7539
  return (_ctx, _cache) => {
7288
7540
  return openBlock(), createElementBlock("div", _hoisted_1, [createBaseVNode("div", _hoisted_2, [createBaseVNode("table", _hoisted_3, [
7289
- createBaseVNode("thead", _hoisted_4, [createBaseVNode("tr", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(props.columns, (column) => {
7541
+ createBaseVNode("thead", null, [createBaseVNode("tr", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(props.columns, (column) => {
7290
7542
  return openBlock(), createElementBlock("th", {
7291
7543
  key: column.name,
7292
7544
  scope: "col",
7293
7545
  class: normalizeClass(["datagrid-th", { "sortable": column.sortable !== false }]),
7294
7546
  style: normalizeStyle(column.headerStyle || ""),
7295
7547
  onClick: ($event) => column.sortable !== false && handleSort(column.name)
7296
- }, [renderSlot(_ctx.$slots, column.name + "_header", { column }, () => [createBaseVNode("div", _hoisted_6, [createBaseVNode("span", null, toDisplayString(column.text || column.name || ""), 1), column.sortable !== false ? (openBlock(), createElementBlock("span", _hoisted_7, [props.sortField === column.name && props.sortOrder === "ASC" ? (openBlock(), createElementBlock("i", _hoisted_8)) : props.sortField === column.name && props.sortOrder === "DESC" ? (openBlock(), createElementBlock("i", _hoisted_9)) : (openBlock(), createElementBlock("i", _hoisted_10))])) : createCommentVNode("", true)])], true)], 14, _hoisted_5);
7548
+ }, [renderSlot(_ctx.$slots, column.name + "_header", { column }, () => [createBaseVNode("div", _hoisted_5, [createBaseVNode("span", null, toDisplayString(column.text || column.name || ""), 1), column.sortable !== false ? (openBlock(), createElementBlock("span", _hoisted_6, [props.sortField === column.name && props.sortOrder === "ASC" ? (openBlock(), createElementBlock("i", _hoisted_7)) : props.sortField === column.name && props.sortOrder === "DESC" ? (openBlock(), createElementBlock("i", _hoisted_8)) : (openBlock(), createElementBlock("i", _hoisted_9))])) : createCommentVNode("", true)])], true)], 14, _hoisted_4);
7297
7549
  }), 128))])]),
7298
- createBaseVNode("tbody", _hoisted_11, [(openBlock(true), createElementBlock(Fragment, null, renderList(props.data, (row, index) => {
7550
+ createBaseVNode("tbody", _hoisted_10, [(openBlock(true), createElementBlock(Fragment, null, renderList(props.data, (row, index) => {
7299
7551
  return openBlock(), createElementBlock("tr", {
7300
7552
  key: index,
7301
7553
  onClick: ($event) => emits("rowClicked", row, index),
@@ -7304,8 +7556,8 @@ var init_index_vue_vue_type_script_setup_true_lang = __esmMin((() => {
7304
7556
  return openBlock(), createElementBlock("td", { key: column.name }, [renderSlot(_ctx.$slots, column.name || column, {
7305
7557
  row,
7306
7558
  column
7307
- }, () => [column.component ? (openBlock(), createBlock(resolveDynamicComponent(column.component), { key: 0 })) : (openBlock(), createElementBlock("span", _hoisted_13, toDisplayString(renderDataItem(row, column)), 1))], true)]);
7308
- }), 128))], 8, _hoisted_12);
7559
+ }, () => [column.component ? (openBlock(), createBlock(resolveDynamicComponent(column.component), { key: 0 })) : (openBlock(), createElementBlock("span", _hoisted_12, toDisplayString(renderDataItem(row, column)), 1))], true)]);
7560
+ }), 128))], 8, _hoisted_11);
7309
7561
  }), 128))]),
7310
7562
  createBaseVNode("tfoot", null, [renderSlot(_ctx.$slots, "footer", { columns: props.columns }, void 0, true)])
7311
7563
  ]), createVNode(loading_default, {
@@ -7322,17 +7574,17 @@ var init_index_vue_vue_type_script_setup_true_lang = __esmMin((() => {
7322
7574
  });
7323
7575
  }));
7324
7576
  //#endregion
7325
- //#region src/components/dataGrid/index.vue?vue&type=style&index=0&scoped=f249eac8&lang.css
7326
- var init_index_vue_vue_type_style_index_0_scoped_f249eac8_lang = __esmMin((() => {}));
7577
+ //#region src/components/dataGrid/index.vue?vue&type=style&index=0&scoped=6e7b7e09&lang.css
7578
+ var init_index_vue_vue_type_style_index_0_scoped_6e7b7e09_lang = __esmMin((() => {}));
7327
7579
  //#endregion
7328
7580
  //#region src/components/dataGrid/index.vue
7329
7581
  var dataGrid_default;
7330
7582
  var init_dataGrid = __esmMin((() => {
7331
7583
  init_index_vue_vue_type_script_setup_true_lang();
7332
7584
  init_index_vue_vue_type_script_setup_true_lang();
7333
- init_index_vue_vue_type_style_index_0_scoped_f249eac8_lang();
7585
+ init_index_vue_vue_type_style_index_0_scoped_6e7b7e09_lang();
7334
7586
  init__plugin_vue_export_helper();
7335
- dataGrid_default = /*#__PURE__*/ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-f249eac8"]]);
7587
+ dataGrid_default = /*#__PURE__*/ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-6e7b7e09"]]);
7336
7588
  }));
7337
7589
  //#endregion
7338
7590
  //#region src/components/modal/index.ts
@@ -7507,6 +7759,10 @@ var init_modal = __esmMin((() => {
7507
7759
  if (window.__INITIAL_STATE__?.dev) __vitePreload(() => import("./vconsole.min.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1)).then((VConsole) => {
7508
7760
  new VConsole.default();
7509
7761
  }), __vite__mapDeps([6,1]), import.meta.url);
7762
+ if (typeof document !== "undefined") {
7763
+ document.body.classList.add("platform-desktop");
7764
+ document.documentElement.setAttribute("data-bs-theme", "dark");
7765
+ }
7510
7766
  var app = createApp(App_default);
7511
7767
  var pinia = createPinia();
7512
7768
  pinia.use(src_default);
@@ -7520,4 +7776,4 @@ var init_modal = __esmMin((() => {
7520
7776
  app.mount("#app");
7521
7777
  })))();
7522
7778
  //#endregion
7523
- export { init_i18n as _, dataGrid_default as a, defineStore as b, modal_default$1 as c, toast as d, init_toast$2 as f, getT as g, init__plugin_vue_export_helper as h, showConfirm as i, init_loading as l, _plugin_vue_export_helper_default as m, init_modal as n, init_dataGrid as o, toast_default$1 as p, showAlert as r, init_modal$1 as s, getModalInstance as t, init_toast$1 as u, init_base as v, init_pinia as x, request as y };
7779
+ export { defineStore as A, init_rpc as C, vscodeSaveFile as D, vscodePickSaveFolder as E, init_detect as O, blobToBase64 as S, vscodeNotifyExported as T, init__plugin_vue_export_helper as _, dataGrid_default as a, init_base as b, pagination_default as c, init_loading as d, init_toast$1 as f, _plugin_vue_export_helper_default as g, toast_default$1 as h, showConfirm as i, init_pinia as j, isVSCode as k, init_modal$1 as l, init_toast$2 as m, init_modal as n, init_dataGrid as o, toast as p, showAlert as r, init_pagination as s, getModalInstance as t, modal_default$1 as u, getT as v, isVscodeWebview as w, request as x, init_i18n as y };