From aa9b6204eee2b2b46725fbd5d7f9b1ebd64c4fa1 Mon Sep 17 00:00:00 2001 From: Longgererer <2072451919@qq.com> Date: Tue, 11 Jun 2024 21:27:58 +0800 Subject: [PATCH 01/48] =?UTF-8?q?feat:=20console=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E5=AD=97=E7=AC=A6=E4=B8=B2=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/styles/variable.scss | 1 + src/type/console.ts | 4 ++++ src/utils/tools/console-value.ts | 13 +++++++++--- src/utils/tools/index.ts | 15 +++++++++++++ .../console-value/console-value.scss | 4 ++++ .../console-value/console-value.vue | 21 +++++++++++++++++-- tests/console.test.ts | 3 ++- 7 files changed, 55 insertions(+), 6 deletions(-) diff --git a/src/styles/variable.scss b/src/styles/variable.scss index ae828a3..3f4e17a 100644 --- a/src/styles/variable.scss +++ b/src/styles/variable.scss @@ -79,6 +79,7 @@ $dark-colors: ( console-element-name: rgb(192, 153, 255), console-element-suffix: rgb(93, 176, 215), console-attribute-value: rgb(195, 232, 141), + console-link: rgb(192, 153, 255), // console table console-table-header-bg: rgb(28, 28, 28), diff --git a/src/type/console.ts b/src/type/console.ts index 0b4899b..81582cd 100644 --- a/src/type/console.ts +++ b/src/type/console.ts @@ -1,3 +1,5 @@ +import { ILinkPos } from "@utils/tools" + /** 日志类型 */ export const enum LogType { /** 普通日志 */ @@ -82,4 +84,6 @@ export interface IConsoleValue { maxLength?: number /** 是否为链接,字符串类型可用 */ isLink?: boolean + /** 链接开始和结束位置 */ + linkPos?: ILinkPos[] } \ No newline at end of file diff --git a/src/utils/tools/console-value.ts b/src/utils/tools/console-value.ts index 4c57fa1..e410864 100644 --- a/src/utils/tools/console-value.ts +++ b/src/utils/tools/console-value.ts @@ -1,13 +1,20 @@ import { IConsoleValue } from "@type/console" -import { getObjEntries, getType, isBaseData } from "." +import { getObjEntries, getType, isBaseData, parseLink } from "." import { isElement } from "./judge" export const processConsoleValueList = (list: any[]) => { return list.map((value, index) => { const type = getType(value) const result = formatConsoleValue(value) - if (!index && type === "string") { - result.value = value + if (type === "string") { + if (!index) { + result.value = value + } + const linkPos = parseLink(result.value) + if (linkPos.length) { + result.isLink = true + result.linkPos = linkPos + } } return result }) diff --git a/src/utils/tools/index.ts b/src/utils/tools/index.ts index 70900d0..288950b 100644 --- a/src/utils/tools/index.ts +++ b/src/utils/tools/index.ts @@ -190,4 +190,19 @@ export function JSONStringify(data: any): string { /** 获取数组交集 */ export const getArrayIntersection = (arr1: any[], arr2: any[]): any[] => { return arr1.filter((item) => arr2.indexOf(item) > -1) +} + +export interface ILinkPos { + start?: number + end?: number +} + +const linkReg = /(?:[^\s()]+):\/\/[^\s()]+/gi +/** 获取字符串中的链接位置 */ +export const parseLink = (text: string): ILinkPos[] => { + const result = [] + for (const match of text.matchAll(linkReg)) { + result.push({ start: match.index, end: match.index + match[0].length }) + } + return result } \ No newline at end of file diff --git a/src/views/components/console/components/console-value/console-value.scss b/src/views/components/console/components/console-value/console-value.scss index 4e0fa91..0d99b16 100644 --- a/src/views/components/console/components/console-value/console-value.scss +++ b/src/views/components/console/components/console-value/console-value.scss @@ -45,4 +45,8 @@ } .console-element-suffix { color: var(--color-console-element-suffix); +} +.console-link { + text-decoration: underline; + color: var(--color-console-link); } \ No newline at end of file diff --git a/src/views/components/console/components/console-value/console-value.vue b/src/views/components/console/components/console-value/console-value.vue index 2c0d85c..2122a30 100644 --- a/src/views/components/console/components/console-value/console-value.vue +++ b/src/views/components/console/components/console-value/console-value.vue @@ -2,6 +2,17 @@
{{ value }} +
@@ -208,7 +219,7 @@ const foldMapData: IConsoleValueMapData[] = [] /** 展示的键值对数据(展开) */ const unfoldMapData: IConsoleValueMapData[] = [] // eslint-disable-next-line max-lines-per-function -const setData = () => { +const setFoldData = () => { const { type, value, attrs = [], minLength, maxLength, size = 0 } = props switch(type) { case "Array": { @@ -271,9 +282,15 @@ const setData = () => { } break } + default: {} } } -setData() + +const initData = () => { + setFoldData() +} + +initData() \ No newline at end of file diff --git a/tests/console.test.ts b/tests/console.test.ts index 839ead8..7c6397b 100644 --- a/tests/console.test.ts +++ b/tests/console.test.ts @@ -33,4 +33,5 @@ console.warn(123, { a: { b: { c: {} } } }) console.error(123, { a: { b: { c: {} } } }) console.info(123, { a: { b: { c: {} } } }) console.log(window) -console.log(console) \ No newline at end of file +console.log(console) +console.log("Find me at http://www.example.com and also at http://stackoverflow.com") \ No newline at end of file From 8d0fc335361e68c788c77c76f3ff57770d0da99f Mon Sep 17 00:00:00 2001 From: Longgererer <2072451919@qq.com> Date: Tue, 11 Jun 2024 21:51:20 +0800 Subject: [PATCH 02/48] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dconsole=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E6=BA=A2=E5=87=BA=E8=A7=86=E5=8F=A3=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../console/components/console-value/console-value.vue | 8 +++++--- tests/console.test.ts | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/views/components/console/components/console-value/console-value.vue b/src/views/components/console/components/console-value/console-value.vue index 2122a30..3a32df9 100644 --- a/src/views/components/console/components/console-value/console-value.vue +++ b/src/views/components/console/components/console-value/console-value.vue @@ -1,18 +1,20 @@