vue-layout-gitcode 1.8.14 → 1.8.15

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.
@@ -1,10 +1,10 @@
1
1
  import { defineComponent, inject, createElementBlock, openBlock, Fragment, createElementVNode, toDisplayString, createVNode, unref, renderList, withDirectives, createBlock, ref, watch, onMounted, createCommentVNode } from "vue";
2
2
  import "vue-devui-lal/icon";
3
3
  import "vue-devui-lal/icon/style.css";
4
- import { h as headRequest, R as REPO_MODULE, a as i18n, G as GIcon, v as vElementExposure, b as REPO_EVENT, _ as _export_sfc, c as REPO_TYPE, e as extractRepoInfoWithURL } from "./index-q-9Kzz6q.js";
4
+ import { h as headRequest, R as REPO_MODULE, a as i18n, G as GIcon, v as vElementExposure, b as REPO_EVENT, _ as _export_sfc, c as REPO_TYPE, e as extractRepoInfoWithURL } from "./index-DPOjnDNY.js";
5
5
  import "lodash/debounce";
6
- import { u as useReportRepo, S as SearchRepoCard, f as formatNameSpace } from "./index-D8Sa-nqE.js";
7
- import "./transWebUrl-DM2u0vwf.js";
6
+ import { u as useReportRepo, S as SearchRepoCard, f as formatNameSpace } from "./index-C2G7nbEf.js";
7
+ import "./transWebUrl-CcebxoyM.js";
8
8
  import "vue-devui-lal/tooltip";
9
9
  import "vue-devui-lal/tooltip/style.css";
10
10
  import "vue-router";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, inject, useSlots, ref, computed, createBlock, openBlock, unref, withCtx, createElementVNode, normalizeClass, createElementBlock, createTextVNode, createCommentVNode, toDisplayString, renderSlot } from "vue";
2
- import { x as useLayoutConfig, y as ThemeType, z as currentTheme, j as LANG_ZH, A as LANG_EN, w as getLocaleLang, G as GIcon, B as emitEvent, C as isHttps, b as REPO_EVENT, _ as _export_sfc } from "./index-q-9Kzz6q.js";
2
+ import { x as useLayoutConfig, y as ThemeType, z as currentTheme, j as LANG_ZH, A as LANG_EN, w as getLocaleLang, G as GIcon, B as emitEvent, C as isHttps, b as REPO_EVENT, _ as _export_sfc } from "./index-DPOjnDNY.js";
3
3
  import { useRouter } from "vue-router";
4
4
  import { Popover } from "vue-devui-lal/popover";
5
5
  import "vue-devui-lal/popover/style.css";
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, inject, ref, reactive, watch, computed, createElementBlock, openBlock, createCommentVNode, createBlock, withDirectives, Fragment, createElementVNode, createVNode, toDisplayString, unref, withModifiers, normalizeClass, withCtx, renderList, createTextVNode, vShow } from "vue";
2
- import { a as i18n, x as useLayoutConfig, G as GIcon, t as transformUrl, D as _sfc_main$1, F as loadAsideData, B as emitEvent, s as setLoginTriggerSource, f as useRequestReport, H as asideRequest, _ as _export_sfc } from "./index-q-9Kzz6q.js";
2
+ import { a as i18n, x as useLayoutConfig, G as GIcon, t as transformUrl, D as _sfc_main$1, F as loadAsideData, B as emitEvent, s as setLoginTriggerSource, f as useRequestReport, H as asideRequest, _ as _export_sfc } from "./index-DPOjnDNY.js";
3
3
  import { useRouter } from "vue-router";
4
- import { t as transWebUrl } from "./transWebUrl-DM2u0vwf.js";
4
+ import { t as transWebUrl } from "./transWebUrl-CcebxoyM.js";
5
5
  import { Select, Option } from "vue-devui-lal/select";
6
6
  import { Input } from "vue-devui-lal/input";
7
7
  import { Skeleton } from "vue-devui-lal/skeleton";
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, inject, ref, reactive, computed, watch, createElementBlock, openBlock, createElementVNode, createVNode, createBlock, createCommentVNode, withDirectives, toDisplayString, unref, withModifiers, normalizeClass, withCtx, Fragment, renderList, createTextVNode, vShow } from "vue";
2
- import { a as i18n, x as useLayoutConfig, G as GIcon, B as emitEvent, s as setLoginTriggerSource, f as useRequestReport, _ as _export_sfc } from "./index-q-9Kzz6q.js";
2
+ import { a as i18n, x as useLayoutConfig, G as GIcon, B as emitEvent, s as setLoginTriggerSource, f as useRequestReport, _ as _export_sfc } from "./index-DPOjnDNY.js";
3
3
  import { useRouter } from "vue-router";
4
- import { t as transWebUrl } from "./transWebUrl-DM2u0vwf.js";
4
+ import { t as transWebUrl } from "./transWebUrl-CcebxoyM.js";
5
5
  import { Input } from "vue-devui-lal/input";
6
6
  import { Skeleton } from "vue-devui-lal/skeleton";
7
7
  import { MenuItem } from "vue-devui-lal/menu";
@@ -1,5 +1,5 @@
1
1
  import { ref, inject, computed, withDirectives, createElementBlock, openBlock, createElementVNode, toDisplayString, unref, Fragment, renderList, createVNode, vShow } from "vue";
2
- import { a as i18n, h as headRequest, G as GIcon, r as reqCatch } from "./index-q-9Kzz6q.js";
2
+ import { a as i18n, h as headRequest, G as GIcon, r as reqCatch } from "./index-DPOjnDNY.js";
3
3
  import { useRoute, useRouter } from "vue-router";
4
4
  import "vue-devui-lal/icon";
5
5
  import "vue-devui-lal/icon/style.css";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, computed, createElementBlock, openBlock, createCommentVNode, Fragment, renderList, normalizeClass, createElementVNode, createVNode, toDisplayString, withModifiers } from "vue";
2
- import { a as i18n, G as GIcon, _ as _export_sfc } from "./index-q-9Kzz6q.js";
2
+ import { a as i18n, G as GIcon, _ as _export_sfc } from "./index-DPOjnDNY.js";
3
3
  import "vue-devui-lal/icon";
4
4
  import "vue-devui-lal/icon/style.css";
5
5
  const _hoisted_1 = { class: "history-list" };
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, createElementBlock, openBlock, createElementVNode, withDirectives, toDisplayString, withModifiers, createVNode, vShow } from "vue";
2
- import { G as GIcon, _ as _export_sfc } from "./index-q-9Kzz6q.js";
2
+ import { G as GIcon, _ as _export_sfc } from "./index-DPOjnDNY.js";
3
3
  import "vue-devui-lal/icon";
4
4
  import "vue-devui-lal/icon/style.css";
5
5
  const _hoisted_1 = { class: "ellipsis" };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, inject, ref, onMounted, createElementBlock, openBlock, createElementVNode, toDisplayString, unref, Fragment, renderList, renderSlot, createBlock, createVNode, withCtx } from "vue";
2
- import { u as useReportRepo, S as SearchRepoCard } from "./index-D8Sa-nqE.js";
3
- import { a as i18n, h as headRequest, R as REPO_MODULE, b as REPO_EVENT, l as localStorage, _ as _export_sfc } from "./index-q-9Kzz6q.js";
2
+ import { u as useReportRepo, S as SearchRepoCard } from "./index-C2G7nbEf.js";
3
+ import { a as i18n, h as headRequest, R as REPO_MODULE, b as REPO_EVENT, l as localStorage, _ as _export_sfc } from "./index-DPOjnDNY.js";
4
4
  import { Row, Col } from "vue-devui-lal/grid";
5
5
  import { SkeletonItem } from "vue-devui-lal/skeleton";
6
6
  import "vue-devui-lal/grid/style.css";
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, createElementBlock, openBlock, Fragment, renderList, createElementVNode, createVNode, createCommentVNode, toDisplayString, unref } from "vue";
2
- import { a as i18n, G as GIcon, _ as _export_sfc } from "./index-q-9Kzz6q.js";
2
+ import { a as i18n, G as GIcon, _ as _export_sfc } from "./index-DPOjnDNY.js";
3
3
  import "vue-devui-lal/icon";
4
4
  import "vue-devui-lal/icon/style.css";
5
5
  const _hoisted_1 = ["onClick"];
@@ -1,5 +1,5 @@
1
1
  import { inject, ref, watch, withDirectives, createElementBlock, openBlock, createElementVNode, toDisplayString, unref, Fragment, renderList, createVNode, vShow } from "vue";
2
- import { a as i18n, h as headRequest, G as GIcon, t as transformUrl } from "./index-q-9Kzz6q.js";
2
+ import { a as i18n, h as headRequest, G as GIcon, t as transformUrl } from "./index-DPOjnDNY.js";
3
3
  import "vue-devui-lal/icon";
4
4
  import "vue-devui-lal/icon/style.css";
5
5
  const _hoisted_1 = { class: "px-[8px] history-list-project pl-[8px]" };
@@ -8,7 +8,7 @@ import { Message } from "vue-devui-lal/message";
8
8
  import "vue-devui-lal/message/style.css";
9
9
  import { FixedOverlay } from "vue-devui-lal/overlay";
10
10
  import "vue-devui-lal/overlay/style.css";
11
- import { a as i18n, k as usePageResize, w as getLocaleLang, j as LANG_ZH, _ as _export_sfc } from "./index-q-9Kzz6q.js";
11
+ import { a as i18n, k as usePageResize, w as getLocaleLang, j as LANG_ZH, _ as _export_sfc } from "./index-DPOjnDNY.js";
12
12
  const _YunpianCaptchaManager = class _YunpianCaptchaManager {
13
13
  constructor() {
14
14
  __publicField(this, "ypRiddlerInstance", null);
@@ -1,7 +1,7 @@
1
1
  import { ref, watchEffect, defineComponent, toDisplayString, unref, mergeModels, useModel, watch, createElementBlock, openBlock, createVNode, withDirectives, normalizeClass, createElementVNode, vShow, inject, withModifiers, createBlock, Fragment, computed, createCommentVNode, normalizeStyle, createTextVNode, onMounted, onUnmounted, renderList, withCtx, reactive } from "vue";
2
2
  import debounce from "lodash/debounce";
3
- import { d as transferNumber, G as GIcon, _ as _export_sfc, s as setLoginTriggerSource, f as useRequestReport, r as reqCatch, h as headRequest, a as i18n, T as TOPIC_TYPE, g as useTimeFormat, L as LANG_KEY, j as LANG_ZH, k as usePageResize, m as isGstarRepo, n as _sfc_main$b, o as isIncubationRepo, p as highlightWords, t as transformUrl, q as _frEventTrack, E as EVENT_NAME, c as REPO_TYPE, e as extractRepoInfoWithURL } from "./index-q-9Kzz6q.js";
4
- import { t as transWebUrl } from "./transWebUrl-DM2u0vwf.js";
3
+ import { d as transferNumber, G as GIcon, _ as _export_sfc, s as setLoginTriggerSource, f as useRequestReport, r as reqCatch, h as headRequest, a as i18n, T as TOPIC_TYPE, g as useTimeFormat, L as LANG_KEY, j as LANG_ZH, k as usePageResize, m as isGstarRepo, n as _sfc_main$b, o as isIncubationRepo, p as highlightWords, t as transformUrl, q as _frEventTrack, E as EVENT_NAME, c as REPO_TYPE, e as extractRepoInfoWithURL } from "./index-DPOjnDNY.js";
4
+ import { t as transWebUrl } from "./transWebUrl-CcebxoyM.js";
5
5
  import { useRouter } from "vue-router";
6
6
  import { Row, Col } from "vue-devui-lal/grid";
7
7
  import { Skeleton, SkeletonItem } from "vue-devui-lal/skeleton";
@@ -105,51 +105,6 @@ const _export_sfc = (sfc, props) => {
105
105
  return target;
106
106
  };
107
107
  const GIcon = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["__scopeId", "data-v-vue-layout-gitcode"]]);
108
- const transformUrl = (url) => {
109
- if (!url || typeof url !== "string") {
110
- return url;
111
- }
112
- if (url.startsWith("/") && !url.startsWith("//") || url.startsWith("./") || url.startsWith("../")) {
113
- return url;
114
- }
115
- if (url.startsWith("https://cdn-") || url.startsWith("http://cdn-") || url.startsWith("//cdn-")) {
116
- return url;
117
- }
118
- if (typeof window === "undefined" || typeof location === "undefined") {
119
- return url;
120
- }
121
- const targetHost = location.host;
122
- if (!targetHost) {
123
- return url;
124
- }
125
- try {
126
- const urlObj = new URL(url);
127
- const originalHostname = urlObj.hostname;
128
- const parseHostname = (hostname, isLocationHost = false) => {
129
- const parts = hostname.split(".");
130
- const baseDomain = parts.length >= 2 ? parts.slice(-2).join(".") : hostname;
131
- let subdomainPrefix = parts.length > 2 ? parts[0] : "";
132
- if (isLocationHost && subdomainPrefix && subdomainPrefix.includes("-")) {
133
- subdomainPrefix = subdomainPrefix.split("-")[0];
134
- }
135
- return { baseDomain, subdomainPrefix };
136
- };
137
- const { subdomainPrefix: urlSubdomain } = parseHostname(originalHostname, false);
138
- const { baseDomain: targetBaseDomain, subdomainPrefix: targetEnvPrefix } = parseHostname(targetHost, true);
139
- let finalHostname = targetBaseDomain;
140
- if (targetEnvPrefix) {
141
- finalHostname = `${targetEnvPrefix}.${finalHostname}`;
142
- }
143
- if (urlSubdomain && urlSubdomain !== targetEnvPrefix) {
144
- finalHostname = `${urlSubdomain}.${finalHostname}`;
145
- }
146
- const transformed = url.replace(originalHostname, finalHostname);
147
- return transformed;
148
- } catch (error) {
149
- console.warn("URL解析失败:", url, error);
150
- return url;
151
- }
152
- };
153
108
  const defaultConfig = {
154
109
  VITE_ENV: "production",
155
110
  VITE_HOST: "https://gitcode.com",
@@ -165,12 +120,12 @@ const defaultConfig = {
165
120
  VITE_SECRET_KEY: "SA!nUNPZ5o!OSV&B",
166
121
  VITE_SECRET_IV: "SA!nwwwZ5o!OSV&B"
167
122
  };
168
- const layoutConfig$5 = reactive({ ...defaultConfig, VITE_HOST_TIANQI: transformUrl(defaultConfig.VITE_HOST_TIANQI) });
123
+ const layoutConfig$7 = reactive({ ...defaultConfig });
169
124
  function setLayoutConfig(customConfig) {
170
- Object.assign(layoutConfig$5, customConfig);
125
+ Object.assign(layoutConfig$7, customConfig);
171
126
  }
172
127
  function useLayoutConfig() {
173
- return readonly(layoutConfig$5);
128
+ return readonly(layoutConfig$7);
174
129
  }
175
130
  async function reqCatch(req, params) {
176
131
  try {
@@ -8270,7 +8225,7 @@ const $i18n = setupI18n({
8270
8225
  }
8271
8226
  });
8272
8227
  const i18n = $i18n;
8273
- const layoutConfig$4 = useLayoutConfig();
8228
+ const layoutConfig$6 = useLayoutConfig();
8274
8229
  function scrollToTop() {
8275
8230
  if (typeof window !== "undefined" && window.pageYOffset) {
8276
8231
  const c = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
@@ -8299,7 +8254,7 @@ function extractRepoInfoWithURL(repoUrl) {
8299
8254
  return parts.join("/");
8300
8255
  }
8301
8256
  const isGstarRepo = (topics) => {
8302
- const gstarTopicIds = layoutConfig$4.VITE_GSTAR_TOPIC.split(",");
8257
+ const gstarTopicIds = layoutConfig$6.VITE_GSTAR_TOPIC.split(",");
8303
8258
  let isGstar = false;
8304
8259
  topics && topics.forEach((item) => {
8305
8260
  if (gstarTopicIds.includes(item.topic_id || item.id)) {
@@ -8309,7 +8264,7 @@ const isGstarRepo = (topics) => {
8309
8264
  return isGstar;
8310
8265
  };
8311
8266
  const isTrustedRepo = (topics) => {
8312
- const trustedTopicIds = layoutConfig$4.VITE_TRUSTED_TOPIC.split(",");
8267
+ const trustedTopicIds = layoutConfig$6.VITE_TRUSTED_TOPIC.split(",");
8313
8268
  let isTrusted = false;
8314
8269
  topics && topics.forEach((item) => {
8315
8270
  if (trustedTopicIds.includes(item.topic_id || item.id)) {
@@ -8318,7 +8273,7 @@ const isTrustedRepo = (topics) => {
8318
8273
  });
8319
8274
  return isTrusted;
8320
8275
  };
8321
- const INCUBATION_TOPICS = layoutConfig$4.VITE_INCUBATION_TOPIC || "";
8276
+ const INCUBATION_TOPICS = layoutConfig$6.VITE_INCUBATION_TOPIC || "";
8322
8277
  const isIncubationRepo = (topics = []) => {
8323
8278
  if (!topics) return false;
8324
8279
  const incubationIds = INCUBATION_TOPICS.split(",");
@@ -8361,7 +8316,7 @@ const getLastTimeRepoId = () => {
8361
8316
  };
8362
8317
  const setUtmSourceSign = (utm_source) => {
8363
8318
  const time = new Date((/* @__PURE__ */ new Date()).getTime() + 60 * 60 * 1e3);
8364
- return api.set("utm_source_sign", utm_source, { expires: time, domain: layoutConfig$4.VITE_COOKIE_DOMAIN });
8319
+ return api.set("utm_source_sign", utm_source, { expires: time, domain: layoutConfig$6.VITE_COOKIE_DOMAIN });
8365
8320
  };
8366
8321
  const getUtmSourceSign = () => {
8367
8322
  return api.get("utm_source_sign") || "";
@@ -10921,7 +10876,7 @@ const getCommonHeadInfo = (isAiHub) => {
10921
10876
  "X-Device-ID": "unknown"
10922
10877
  };
10923
10878
  };
10924
- const layoutConfig$3 = useLayoutConfig();
10879
+ const layoutConfig$5 = useLayoutConfig();
10925
10880
  const setPassportPrefix = (url, method) => {
10926
10881
  const prefix = "/uc";
10927
10882
  {
@@ -10945,7 +10900,7 @@ const setPassportPrefix = (url, method) => {
10945
10900
  };
10946
10901
  const proxyService = (params, customConfigs) => {
10947
10902
  const service = axios.create({
10948
- baseURL: layoutConfig$3.VITE_API_HOST,
10903
+ baseURL: layoutConfig$5.VITE_API_HOST,
10949
10904
  timeout: (customConfigs == null ? void 0 : customConfigs.customTimeout) || 3e4,
10950
10905
  withCredentials: true
10951
10906
  });
@@ -11649,7 +11604,7 @@ var REPO_TYPE = /* @__PURE__ */ ((REPO_TYPE2) => {
11649
11604
  REPO_TYPE2[REPO_TYPE2["HUGGINGFACE_MIRRORS"] = 2] = "HUGGINGFACE_MIRRORS";
11650
11605
  return REPO_TYPE2;
11651
11606
  })(REPO_TYPE || {});
11652
- const layoutConfig$2 = useLayoutConfig();
11607
+ const layoutConfig$4 = useLayoutConfig();
11653
11608
  const registerLoginMethodMap = {
11654
11609
  [LoginMethodEnum.PHONE]: "短信",
11655
11610
  [LoginMethodEnum.PASSWORD]: "密码",
@@ -11683,7 +11638,7 @@ const collectRegisterLoginEvent = ({ isRegister, registerLoginMethod, success, e
11683
11638
  userid_fast_application: searchParams["uuid_tt_dd"] || "",
11684
11639
  gitcode_utm_source: searchParams["utm_source"] || "",
11685
11640
  page_url: location.href || "",
11686
- env: layoutConfig$2.VITE_ENV,
11641
+ env: layoutConfig$4.VITE_ENV,
11687
11642
  namespace: extraData.namespace || "",
11688
11643
  ...extraData,
11689
11644
  ...searchParams
@@ -12277,6 +12232,62 @@ if (isBrowser) {
12277
12232
  }
12278
12233
  const sessionStorage$1 = sessionStorage;
12279
12234
  const _imports_0 = "data:image/png;base64,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";
12235
+ const layoutConfig$3 = useLayoutConfig();
12236
+ const transformUrl = (url) => {
12237
+ var _a;
12238
+ if (!url) return url;
12239
+ if (typeof window !== "undefined" && typeof location !== "undefined") {
12240
+ if (url == null ? void 0 : url.startsWith("https://cdn-")) {
12241
+ return url;
12242
+ }
12243
+ if (url == null ? void 0 : url.includes("myhuaweicloud.com")) {
12244
+ return url;
12245
+ }
12246
+ const host = (_a = location.host) == null ? void 0 : _a.replace(/^ai\./, "");
12247
+ if (host.includes("gitcode.host")) {
12248
+ return url == null ? void 0 : url.replace(/gitcode\.com/g, host);
12249
+ }
12250
+ if (url == null ? void 0 : url.includes("test.gitcode.net")) {
12251
+ return url == null ? void 0 : url.replace(/test\.gitcode\.net/g, host);
12252
+ }
12253
+ return transformUrlWithSpecialPrefix({ url, host });
12254
+ }
12255
+ return url;
12256
+ };
12257
+ const transformUrlWithSpecialPrefix = ({ url, host }) => {
12258
+ const testEnv = ["development", "test", "loc"];
12259
+ const preEnv = ["pre", "loc-pre"];
12260
+ const specialPrefix = ["-tianqi", "-ai", "-news", "-link", "-competition"];
12261
+ if (layoutConfig$3.VITE_ENV === "production") {
12262
+ return url == null ? void 0 : url.replace(/gitcode\.com/g, host);
12263
+ }
12264
+ if (specialPrefix.some((prefix) => url == null ? void 0 : url.includes(prefix)) && (testEnv.includes(layoutConfig$3.VITE_ENV) || preEnv.includes(layoutConfig$3.VITE_ENV))) {
12265
+ try {
12266
+ const urlObj = new URL(url);
12267
+ const urlHost = urlObj.host;
12268
+ const specialPrefixMatch = specialPrefix.find((prefix) => urlHost.includes(prefix));
12269
+ if (specialPrefixMatch) {
12270
+ const prefixPart = urlHost.split(".gitcode.")[0];
12271
+ const mainDomain = host.replace(/^(test|pre|loc|loc-pre)\./, "");
12272
+ urlObj.host = `${prefixPart}.${mainDomain}`;
12273
+ return urlObj.toString();
12274
+ }
12275
+ } catch (error) {
12276
+ return url == null ? void 0 : url.replace(/gitcode\.net/g, host);
12277
+ }
12278
+ }
12279
+ return url;
12280
+ };
12281
+ const replaceHost = ({ url, customHost }) => {
12282
+ if (!url || !customHost) return url;
12283
+ try {
12284
+ const urlObj = new URL(url);
12285
+ urlObj.host = customHost;
12286
+ return urlObj.toString();
12287
+ } catch (error) {
12288
+ return url;
12289
+ }
12290
+ };
12280
12291
  const _sfc_main$z = /* @__PURE__ */ defineComponent({
12281
12292
  ...{
12282
12293
  name: "GAvatar"
@@ -13650,7 +13661,12 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
13650
13661
  };
13651
13662
  });
13652
13663
  function goPage() {
13653
- const url = transformUrl(tianqiButtonConfig.value.url || layoutConfig2.VITE_HOST_TIANQI + "?utm_source=toolbar");
13664
+ let url = "";
13665
+ if (!tianqiButtonConfig.value.url) {
13666
+ url = layoutConfig2.VITE_HOST_TIANQI + "?utm_source=toolbar";
13667
+ } else {
13668
+ url = transformUrl(tianqiButtonConfig.value.url) + "?utm_source=toolbar";
13669
+ }
13654
13670
  useReport2(REPO_EVENT.CLICK, { module_name: ASIDE_MENU_REPO.CHATBOTCLICK });
13655
13671
  window.open(url);
13656
13672
  }
@@ -15706,7 +15722,7 @@ var encUtf8 = { exports: {} };
15706
15722
  })(encUtf8);
15707
15723
  var encUtf8Exports = encUtf8.exports;
15708
15724
  const Utf8 = /* @__PURE__ */ getDefaultExportFromCjs(encUtf8Exports);
15709
- const layoutConfig$1 = useLayoutConfig();
15725
+ const layoutConfig$2 = useLayoutConfig();
15710
15726
  function headRequest(request) {
15711
15727
  return {
15712
15728
  getSearchHot() {
@@ -15946,8 +15962,8 @@ function headRequest(request) {
15946
15962
  },
15947
15963
  // 密码登录
15948
15964
  toLogin(data) {
15949
- const key = Utf8.parse(layoutConfig$1.VITE_SECRET_KEY);
15950
- const iv = Utf8.parse(layoutConfig$1.VITE_SECRET_IV);
15965
+ const key = Utf8.parse(layoutConfig$2.VITE_SECRET_KEY);
15966
+ const iv = Utf8.parse(layoutConfig$2.VITE_SECRET_IV);
15951
15967
  const cryptoCode = AES.encrypt(data.password, key, {
15952
15968
  iv,
15953
15969
  padding: Pkcs7
@@ -16846,13 +16862,13 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
16846
16862
  var _a;
16847
16863
  const layoutConfig2 = useLayoutConfig();
16848
16864
  const { t: $t } = i18n.global;
16849
- const ProjectSearch = defineAsyncComponent(() => import("./ProjectSearch-B7pxc4qP.js"));
16850
- const UserSearch = defineAsyncComponent(() => import("./UserSearch-D4cQjX3p.js"));
16851
- const GloabarSearch = defineAsyncComponent(() => import("./GloabarSearch-BqWjxPvE.js"));
16852
- const SearchHistoryList = defineAsyncComponent(() => import("./SearchHistoryList-CybBEjmV.js"));
16853
- const SearchScopeList = defineAsyncComponent(() => import("./SearchScopeList-Bg1x_3XP.js"));
16854
- const SearchPrefixTag = defineAsyncComponent(() => import("./SearchPrefixTag-BulAtSfT.js"));
16855
- const SearchRecommed = defineAsyncComponent(() => import("./SearchRecommed-RE5DrekR.js"));
16865
+ const ProjectSearch = defineAsyncComponent(() => import("./ProjectSearch-CpCOtL4V.js"));
16866
+ const UserSearch = defineAsyncComponent(() => import("./UserSearch-DukNoXsJ.js"));
16867
+ const GloabarSearch = defineAsyncComponent(() => import("./GloabarSearch-CxScZrZQ.js"));
16868
+ const SearchHistoryList = defineAsyncComponent(() => import("./SearchHistoryList-BAvkX64s.js"));
16869
+ const SearchScopeList = defineAsyncComponent(() => import("./SearchScopeList-Cqk5DRNL.js"));
16870
+ const SearchPrefixTag = defineAsyncComponent(() => import("./SearchPrefixTag-y9-TbkOG.js"));
16871
+ const SearchRecommed = defineAsyncComponent(() => import("./SearchRecommed-Ch_LjURo.js"));
16856
16872
  const props = __props;
16857
16873
  const repoInfo = inject("repoInfo");
16858
16874
  const orgInfo = inject("orgInfo");
@@ -17506,7 +17522,7 @@ const autoAvokeLogin = ({ isLogin, loginFunc, openHarmonyGuide, loginSuccess, lo
17506
17522
  loginFunc({ type: "login", triggerType: "", loginTriggerSource: "router_login_auth", ...loginFuncOpts }, loginSuccess, openHarmonyGuide);
17507
17523
  }
17508
17524
  };
17509
- const NoticeModal = defineAsyncComponent(() => import("./notice-BXL1Z7zj.js"));
17525
+ const NoticeModal = defineAsyncComponent(() => import("./notice-Ch6dTG8d.js"));
17510
17526
  function clearNotice() {
17511
17527
  if (localStorage$2.getItem("validator_email")) {
17512
17528
  localStorage$2.removeItem("validator_email");
@@ -18072,6 +18088,7 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
18072
18088
  }
18073
18089
  });
18074
18090
  const GitCodeHeader = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-vue-layout-gitcode"]]);
18091
+ const layoutConfig$1 = useLayoutConfig();
18075
18092
  const useConfigSide = (request, sceneValue) => {
18076
18093
  const API = asideRequest(request);
18077
18094
  const route = useRoute();
@@ -18132,9 +18149,17 @@ const useConfigSide = (request, sceneValue) => {
18132
18149
  sideLoading.value = true;
18133
18150
  const res = await API.getAsideConfig();
18134
18151
  let asideList = (((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.data) || []).map((item) => {
18152
+ let processedUrl = item.left_menu_url;
18153
+ if (processedUrl == null ? void 0 : processedUrl.startsWith("https://competition.")) {
18154
+ processedUrl = replaceHost({ url: processedUrl, customHost: transformUrl(layoutConfig$1.VITE_COMPETITION_HOST) });
18155
+ } else if (processedUrl == null ? void 0 : processedUrl.startsWith("https://ai.")) {
18156
+ processedUrl = replaceHost({ url: processedUrl, customHost: transformUrl(layoutConfig$1.VITE_AI_HOST) });
18157
+ } else {
18158
+ processedUrl = transformUrl(processedUrl);
18159
+ }
18135
18160
  return {
18136
18161
  ...item,
18137
- left_menu_url: transformUrl(item.left_menu_url),
18162
+ left_menu_url: processedUrl,
18138
18163
  left_menu_logo: transformUrl(item.left_menu_logo),
18139
18164
  left_menu_logo_black: transformUrl(item.left_menu_logo_black),
18140
18165
  left_menu_logo_hover: transformUrl(item.left_menu_logo_hover),
@@ -18265,9 +18290,9 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
18265
18290
  const layoutConfig2 = useLayoutConfig();
18266
18291
  const { t: t2 } = i18n.global;
18267
18292
  const route = useRoute();
18268
- const MenuItem = defineAsyncComponent(() => import("./MenuItem-DXirKqa1.js"));
18269
- const ProjectMenuListV2 = defineAsyncComponent(() => import("./ProjectMenuListV2-DiBj1Iy8.js"));
18270
- const ProjectMenuList = defineAsyncComponent(() => import("./ProjectMenuList-DvkoGbdP.js"));
18293
+ const MenuItem = defineAsyncComponent(() => import("./MenuItem-CENzFBxI.js"));
18294
+ const ProjectMenuListV2 = defineAsyncComponent(() => import("./ProjectMenuListV2-B0fQkRZP.js"));
18295
+ const ProjectMenuList = defineAsyncComponent(() => import("./ProjectMenuList-Cq6cMciT.js"));
18271
18296
  const props = __props;
18272
18297
  console.log("slotKeys", props.slotKeys);
18273
18298
  console.log("props", props);
@@ -18635,6 +18660,7 @@ const FEEDBACK_CENTER_URL = "https://gitcode.com/Gitcode-offical-team/GitCode-Do
18635
18660
  const _sfc_main$i = /* @__PURE__ */ defineComponent({
18636
18661
  __name: "SubMenuList",
18637
18662
  setup(__props) {
18663
+ const layoutConfig2 = useLayoutConfig();
18638
18664
  const { t: t2 } = i18n.global;
18639
18665
  const isEn = computed(() => {
18640
18666
  return getLocaleLang() === LANG_EN;
@@ -18644,13 +18670,13 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
18644
18670
  {
18645
18671
  name: t2("gitCodeLayout.header.helpDocument"),
18646
18672
  icon: "gt-line-file",
18647
- url: HELP_DOCS_URL,
18673
+ url: transformUrl(HELP_DOCS_URL),
18648
18674
  target: "_blank"
18649
18675
  },
18650
18676
  {
18651
18677
  name: t2("gitCodeLayout.home.feedbackCenter"),
18652
18678
  icon: "gt-line-Checks",
18653
- url: transformUrl(FEEDBACK_CENTER_URL),
18679
+ url: replaceHost({ url: FEEDBACK_CENTER_URL, customHost: layoutConfig2.VITE_HOST }),
18654
18680
  target: "_self"
18655
18681
  }
18656
18682
  ];
@@ -23979,7 +24005,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
23979
24005
  }
23980
24006
  });
23981
24007
  const MFA = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-vue-layout-gitcode"]]);
23982
- const SlidCaptcha = defineAsyncComponent(() => import("./index-MXMcsrP8.js"));
24008
+ const SlidCaptcha = defineAsyncComponent(() => import("./index-Dx7Xm0MA.js"));
23983
24009
  const useSlidCaptcha = () => {
23984
24010
  const { mount, unMount } = usePopup("slid-captcha-popup");
23985
24011
  const open = (config) => {
@@ -23998,7 +24024,7 @@ const useSlidCaptcha = () => {
23998
24024
  close: unMount
23999
24025
  };
24000
24026
  };
24001
- const YunpianCaptcha = defineAsyncComponent(() => import("./index-CdUPr9DX.js"));
24027
+ const YunpianCaptcha = defineAsyncComponent(() => import("./index-Btj7WgSR.js"));
24002
24028
  const useYunpianCaptcha = () => {
24003
24029
  const { mount, unMount } = usePopup("yunpian-captcha-popup");
24004
24030
  const open = (config) => {
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, onMounted, onUnmounted, createBlock, openBlock, unref, withCtx, createElementVNode } from "vue";
2
- import { w as getLocaleLang, j as LANG_ZH, x as useLayoutConfig, _ as _export_sfc } from "./index-q-9Kzz6q.js";
2
+ import { w as getLocaleLang, j as LANG_ZH, x as useLayoutConfig, _ as _export_sfc } from "./index-DPOjnDNY.js";
3
3
  import { FixedOverlay } from "vue-devui-lal/overlay";
4
4
  import "vue-devui-lal/overlay/style.css";
5
5
  const TARGET_TEXT = "Click in order:";
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { K, M, P, J, S, I, z, U, O, Q, N } from "./index-q-9Kzz6q.js";
1
+ import { K, M, P, J, S, I, z, U, O, Q, N } from "./index-DPOjnDNY.js";
2
2
  export {
3
3
  K as GitCodeAside,
4
4
  M as GitCodeHeader,
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, computed, createBlock, openBlock, unref, isRef, withCtx, createElementVNode, normalizeClass, createVNode, createTextVNode } from "vue";
2
- import { i as isPhone, u as useModel } from "./index-q-9Kzz6q.js";
2
+ import { i as isPhone, u as useModel } from "./index-DPOjnDNY.js";
3
3
  import { Notification } from "vue-devui-lal/notification";
4
4
  import { Button } from "vue-devui-lal/button";
5
5
  import "vue-devui-lal/notification/style.css";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue-layout-gitcode",
3
- "version": "1.8.14",
3
+ "version": "1.8.15",
4
4
  "description": "用于 gitcode 站点生产环境使用",
5
5
  "main": "index.js",
6
6
  "types": "./index.d.ts",
@@ -1,4 +1,4 @@
1
- import { x as useLayoutConfig } from "./index-q-9Kzz6q.js";
1
+ import { x as useLayoutConfig } from "./index-DPOjnDNY.js";
2
2
  const layoutConfig = useLayoutConfig();
3
3
  const transWebUrl = (url, params) => {
4
4
  if (!url) return url;