vue-layout-gitcode 1.8.13 → 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-HAA3F5Te.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-tbNoovZi.js";
7
- import "./transWebUrl-wQ1yWCFq.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-HAA3F5Te.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-HAA3F5Te.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-wQ1yWCFq.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-HAA3F5Te.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-wQ1yWCFq.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-HAA3F5Te.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-HAA3F5Te.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-HAA3F5Te.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-tbNoovZi.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-HAA3F5Te.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-HAA3F5Te.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-HAA3F5Te.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-HAA3F5Te.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-HAA3F5Te.js";
4
- import { t as transWebUrl } from "./transWebUrl-wQ1yWCFq.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,12 +13661,11 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
13650
13661
  };
13651
13662
  });
13652
13663
  function goPage() {
13653
- let url = transformUrl(tianqiButtonConfig.value.url || layoutConfig2.VITE_HOST_TIANQI + "?utm_source=toolbar");
13654
- if (location.host === "test.atomgit.com") {
13655
- url = "https://test-tianqi.atomgit.com";
13656
- }
13657
- if (location.host === "pre.atomgit.com") {
13658
- url = "https://pre-tianqi.atomgit.com";
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";
13659
13669
  }
13660
13670
  useReport2(REPO_EVENT.CLICK, { module_name: ASIDE_MENU_REPO.CHATBOTCLICK });
13661
13671
  window.open(url);
@@ -15712,7 +15722,7 @@ var encUtf8 = { exports: {} };
15712
15722
  })(encUtf8);
15713
15723
  var encUtf8Exports = encUtf8.exports;
15714
15724
  const Utf8 = /* @__PURE__ */ getDefaultExportFromCjs(encUtf8Exports);
15715
- const layoutConfig$1 = useLayoutConfig();
15725
+ const layoutConfig$2 = useLayoutConfig();
15716
15726
  function headRequest(request) {
15717
15727
  return {
15718
15728
  getSearchHot() {
@@ -15952,8 +15962,8 @@ function headRequest(request) {
15952
15962
  },
15953
15963
  // 密码登录
15954
15964
  toLogin(data) {
15955
- const key = Utf8.parse(layoutConfig$1.VITE_SECRET_KEY);
15956
- 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);
15957
15967
  const cryptoCode = AES.encrypt(data.password, key, {
15958
15968
  iv,
15959
15969
  padding: Pkcs7
@@ -16852,13 +16862,13 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
16852
16862
  var _a;
16853
16863
  const layoutConfig2 = useLayoutConfig();
16854
16864
  const { t: $t } = i18n.global;
16855
- const ProjectSearch = defineAsyncComponent(() => import("./ProjectSearch-CISPcBR4.js"));
16856
- const UserSearch = defineAsyncComponent(() => import("./UserSearch-D1O_0E6r.js"));
16857
- const GloabarSearch = defineAsyncComponent(() => import("./GloabarSearch-DOry7z_v.js"));
16858
- const SearchHistoryList = defineAsyncComponent(() => import("./SearchHistoryList-DLoXPObe.js"));
16859
- const SearchScopeList = defineAsyncComponent(() => import("./SearchScopeList-BrP-M0Ot.js"));
16860
- const SearchPrefixTag = defineAsyncComponent(() => import("./SearchPrefixTag-DvPHRrol.js"));
16861
- const SearchRecommed = defineAsyncComponent(() => import("./SearchRecommed-Ch939xlF.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"));
16862
16872
  const props = __props;
16863
16873
  const repoInfo = inject("repoInfo");
16864
16874
  const orgInfo = inject("orgInfo");
@@ -17512,7 +17522,7 @@ const autoAvokeLogin = ({ isLogin, loginFunc, openHarmonyGuide, loginSuccess, lo
17512
17522
  loginFunc({ type: "login", triggerType: "", loginTriggerSource: "router_login_auth", ...loginFuncOpts }, loginSuccess, openHarmonyGuide);
17513
17523
  }
17514
17524
  };
17515
- const NoticeModal = defineAsyncComponent(() => import("./notice-CjlIawkW.js"));
17525
+ const NoticeModal = defineAsyncComponent(() => import("./notice-Ch6dTG8d.js"));
17516
17526
  function clearNotice() {
17517
17527
  if (localStorage$2.getItem("validator_email")) {
17518
17528
  localStorage$2.removeItem("validator_email");
@@ -18078,6 +18088,7 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
18078
18088
  }
18079
18089
  });
18080
18090
  const GitCodeHeader = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-vue-layout-gitcode"]]);
18091
+ const layoutConfig$1 = useLayoutConfig();
18081
18092
  const useConfigSide = (request, sceneValue) => {
18082
18093
  const API = asideRequest(request);
18083
18094
  const route = useRoute();
@@ -18138,9 +18149,17 @@ const useConfigSide = (request, sceneValue) => {
18138
18149
  sideLoading.value = true;
18139
18150
  const res = await API.getAsideConfig();
18140
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
+ }
18141
18160
  return {
18142
18161
  ...item,
18143
- left_menu_url: transformUrl(item.left_menu_url),
18162
+ left_menu_url: processedUrl,
18144
18163
  left_menu_logo: transformUrl(item.left_menu_logo),
18145
18164
  left_menu_logo_black: transformUrl(item.left_menu_logo_black),
18146
18165
  left_menu_logo_hover: transformUrl(item.left_menu_logo_hover),
@@ -18271,9 +18290,9 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
18271
18290
  const layoutConfig2 = useLayoutConfig();
18272
18291
  const { t: t2 } = i18n.global;
18273
18292
  const route = useRoute();
18274
- const MenuItem = defineAsyncComponent(() => import("./MenuItem-CIgzVojf.js"));
18275
- const ProjectMenuListV2 = defineAsyncComponent(() => import("./ProjectMenuListV2-D4Inlf47.js"));
18276
- const ProjectMenuList = defineAsyncComponent(() => import("./ProjectMenuList-NN6EMNRA.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"));
18277
18296
  const props = __props;
18278
18297
  console.log("slotKeys", props.slotKeys);
18279
18298
  console.log("props", props);
@@ -18641,6 +18660,7 @@ const FEEDBACK_CENTER_URL = "https://gitcode.com/Gitcode-offical-team/GitCode-Do
18641
18660
  const _sfc_main$i = /* @__PURE__ */ defineComponent({
18642
18661
  __name: "SubMenuList",
18643
18662
  setup(__props) {
18663
+ const layoutConfig2 = useLayoutConfig();
18644
18664
  const { t: t2 } = i18n.global;
18645
18665
  const isEn = computed(() => {
18646
18666
  return getLocaleLang() === LANG_EN;
@@ -18650,13 +18670,13 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
18650
18670
  {
18651
18671
  name: t2("gitCodeLayout.header.helpDocument"),
18652
18672
  icon: "gt-line-file",
18653
- url: HELP_DOCS_URL,
18673
+ url: transformUrl(HELP_DOCS_URL),
18654
18674
  target: "_blank"
18655
18675
  },
18656
18676
  {
18657
18677
  name: t2("gitCodeLayout.home.feedbackCenter"),
18658
18678
  icon: "gt-line-Checks",
18659
- url: transformUrl(FEEDBACK_CENTER_URL),
18679
+ url: replaceHost({ url: FEEDBACK_CENTER_URL, customHost: layoutConfig2.VITE_HOST }),
18660
18680
  target: "_self"
18661
18681
  }
18662
18682
  ];
@@ -23985,7 +24005,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
23985
24005
  }
23986
24006
  });
23987
24007
  const MFA = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-vue-layout-gitcode"]]);
23988
- const SlidCaptcha = defineAsyncComponent(() => import("./index-BD5XMKew.js"));
24008
+ const SlidCaptcha = defineAsyncComponent(() => import("./index-Dx7Xm0MA.js"));
23989
24009
  const useSlidCaptcha = () => {
23990
24010
  const { mount, unMount } = usePopup("slid-captcha-popup");
23991
24011
  const open = (config) => {
@@ -24004,7 +24024,7 @@ const useSlidCaptcha = () => {
24004
24024
  close: unMount
24005
24025
  };
24006
24026
  };
24007
- const YunpianCaptcha = defineAsyncComponent(() => import("./index-BDXYe6YR.js"));
24027
+ const YunpianCaptcha = defineAsyncComponent(() => import("./index-Btj7WgSR.js"));
24008
24028
  const useYunpianCaptcha = () => {
24009
24029
  const { mount, unMount } = usePopup("yunpian-captcha-popup");
24010
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-HAA3F5Te.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-HAA3F5Te.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-HAA3F5Te.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.13",
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-HAA3F5Te.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;