@gkd-kit/inspect 0.0.1740478645328 → 0.0.1740486474436
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.
- package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-D6uGSuV_.js → ActionCard.vue_vue_type_script_setup_true_lang-BzK0x15m.js} +6 -6
- package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-D6uGSuV_.js.map → ActionCard.vue_vue_type_script_setup_true_lang-BzK0x15m.js.map} +1 -1
- package/dist/assets/DevicePage-DZMb5juC.js +49 -0
- package/dist/assets/{DevicePage-22pCriWH.js.map → DevicePage-DZMb5juC.js.map} +1 -1
- package/dist/assets/{HomePage-BXuOF8zt.js → HomePage-NwNoTWmK.js} +5 -5
- package/dist/assets/{HomePage-BXuOF8zt.js.map → HomePage-NwNoTWmK.js.map} +1 -1
- package/dist/assets/ImportPage-CbBELc2P.js +2 -0
- package/dist/assets/{ImportPage-BdtL0i84.js.map → ImportPage-CbBELc2P.js.map} +1 -1
- package/dist/assets/{Input-BFF_YDmk.js → Input-B1fDFfN9.js} +2 -2
- package/dist/assets/{Input-BFF_YDmk.js.map → Input-B1fDFfN9.js.map} +1 -1
- package/dist/assets/SelectorPage-BUFenaYX.js +2 -0
- package/dist/assets/SelectorPage-BUFenaYX.js.map +1 -0
- package/dist/assets/SelectorPage-C2PG7H3U.css +1 -0
- package/dist/assets/SnapshotPage-CB1YuBLk.js +272 -0
- package/dist/assets/SnapshotPage-CB1YuBLk.js.map +1 -0
- package/dist/assets/{SvgPage-T42iMi2a.js → SvgPage-Bcc4rOCY.js} +2 -2
- package/dist/assets/{SvgPage-T42iMi2a.js.map → SvgPage-Bcc4rOCY.js.map} +1 -1
- package/dist/assets/{_404Page-Bfy8LBhL.js → _404Page-53227Ist.js} +2 -2
- package/dist/assets/{_404Page-Bfy8LBhL.js.map → _404Page-53227Ist.js.map} +1 -1
- package/dist/assets/chunk-BNhzPf1-.js +3 -0
- package/dist/assets/{chunk-B1uHQf23.js.map → chunk-BNhzPf1-.js.map} +1 -1
- package/dist/assets/dayjs.min-DzGttBrd.js +246 -0
- package/dist/assets/dayjs.min-DzGttBrd.js.map +1 -0
- package/dist/assets/{error-BhW4B-ex.js → error-B57kog5Y.js} +5 -5
- package/dist/assets/{error-BhW4B-ex.js.map → error-B57kog5Y.js.map} +1 -1
- package/dist/assets/{import-DF6hDg2o.js → import-D6HnySIG.js} +2 -2
- package/dist/assets/{import-DF6hDg2o.js.map → import-D6HnySIG.js.map} +1 -1
- package/dist/assets/index-BThNbXTQ.js +10 -0
- package/dist/assets/index-BThNbXTQ.js.map +1 -0
- package/dist/assets/index-Dn1zZRgt.css +1 -0
- package/dist/assets/{index-HykT01V7.js → index-_pE9wOT-.js} +7 -7
- package/dist/assets/{index-HykT01V7.js.map → index-_pE9wOT-.js.map} +1 -1
- package/dist/assets/{jszip.min-PFERbZEF.js → jszip.min-Dsygmbpc.js} +2 -2
- package/dist/assets/{jszip.min-PFERbZEF.js.map → jszip.min-Dsygmbpc.js.map} +1 -1
- package/dist/assets/node-Cx9dqtVk.js +127 -0
- package/dist/assets/node-Cx9dqtVk.js.map +1 -0
- package/dist/assets/{snapshot-7V6viKJH.js → snapshot-qZz1Omk-.js} +3 -3
- package/dist/assets/{snapshot-7V6viKJH.js.map → snapshot-qZz1Omk-.js.map} +1 -1
- package/dist/assets/{table-CJEMQCSa.js → table-BRs8kPaR.js} +9 -9
- package/dist/assets/{table-CJEMQCSa.js.map → table-BRs8kPaR.js.map} +1 -1
- package/dist/index.html +3 -3
- package/package.json +1 -1
- package/dist/assets/DevicePage-22pCriWH.js +0 -49
- package/dist/assets/ImportPage-BdtL0i84.js +0 -2
- package/dist/assets/SelectorPage-BLZCmKya.css +0 -1
- package/dist/assets/SelectorPage-uMb66kF4.js +0 -2
- package/dist/assets/SelectorPage-uMb66kF4.js.map +0 -1
- package/dist/assets/SnapshotPage-Cx8Bc7Xj.js +0 -274
- package/dist/assets/SnapshotPage-Cx8Bc7Xj.js.map +0 -1
- package/dist/assets/chunk-B1uHQf23.js +0 -3
- package/dist/assets/dayjs.min-BjBrwguZ.js +0 -371
- package/dist/assets/dayjs.min-BjBrwguZ.js.map +0 -1
- package/dist/assets/index-CO6qK6ey.css +0 -1
- package/dist/assets/index-Cjc782aG.js +0 -8
- package/dist/assets/index-Cjc782aG.js.map +0 -1
package/dist/index.html
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!doctype html>
|
|
2
2
|
<html lang="zh">
|
|
3
3
|
<head>
|
|
4
|
-
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
4
|
+
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1740486474436/files/dist/assets/polyfills-VJCO8far.js"></script>
|
|
5
5
|
|
|
6
6
|
<meta charset="UTF-8" />
|
|
7
7
|
<link
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
13
13
|
<meta name="referrer" content="no-referrer" />
|
|
14
14
|
<title>GKD</title>
|
|
15
|
-
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
16
|
-
<link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
15
|
+
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1740486474436/files/dist/assets/index-_pE9wOT-.js"></script>
|
|
16
|
+
<link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1740486474436/files/dist/assets/index-Dn1zZRgt.css">
|
|
17
17
|
</head>
|
|
18
18
|
|
|
19
19
|
<body>
|
package/package.json
CHANGED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import{A as b,aQ as u,h as le,aB as re,aT as pe,B as ue,aS as ce,Y as de,D as me,C as E,G as fe,H as J,I as K,J as M,F as a,K as w,L as r,O as s,U as j,_ as ge,V as ve,S as h,M as ke,Q as $,P as we,R as Q,T as ye}from"./index-HykT01V7.js";import{e as he,a as V,b as B,p as Se}from"./snapshot-7V6viKJH.js";import{a as H,l as _e}from"./error-BhW4B-ex.js";import{u as be,a as Ce,_ as xe}from"./table-CJEMQCSa.js";import{u as T,z as Ie,b as W,_ as Ne}from"./dayjs.min-BjBrwguZ.js";import{_ as Re}from"./Input-BFF_YDmk.js";const Pe=G=>{const C=b(G),o=async(n,g={})=>{var U;if(!C.value)throw new Error("origin must exist");const I=new URL("/api/"+n,C.value);Object.entries(g.query||{}).forEach(([v,S])=>{S!==void 0&&I.searchParams.set(v,String(S))});const d=await he(I,g.init).catch(v=>{throw u.error("网络错误:/"+n),v});if(!d.ok)throw u.error("接口错误:/"+n+":"+d.status),d;if((U=d.headers.get("Content-Type"))!=null&&U.includes("application/json")){const v=await d.clone().json();if(v.__error)throw u.error(v.message),d}return d},m=async(...n)=>await(await o(...n)).json(),c=async(...n)=>await(await o(...n)).blob(),f=async(...n)=>await(await o(...n)).arrayBuffer();return{origin:C,api:{device:async()=>m("device"),snapshot:async n=>m("snapshot",{query:n}),screenshot:async n=>f("screenshot",{query:n}),captureSnapshot:async()=>m("captureSnapshot"),snapshots:async()=>m("snapshots"),updateSubsApps:async n=>c("updateSubsApps",{init:{method:"POST",body:JSON.stringify(n),headers:{"Content-Type":"application/json"}}}),updateSubscription:async n=>c("updateSubscription",{init:{method:"POST",body:JSON.stringify({...n,id:-1,name:"内存订阅",version:0}),headers:{"Content-Type":"application/json"}}}),execSelector:async n=>m("execSelector",{init:{method:"POST",body:JSON.stringify({...n,value:n.selector}),headers:{"Content-Type":"application/json"}}})}}},Be={flex:"","gap-10px":"","flex-items-center":""},Te={flex:"","flex-col":"","p-10px":"","gap-10px":"","h-full":""},Ue={flex:"","items-center":"","gap-24px":""},ze={"whitespace-nowrap":""},qe=le({__name:"DevicePage",setup(G){const C=re(),{api:o,origin:m}=Pe(),c=pe("device_link",""),f=b(),x=T(async()=>{c.value&&(m.value=H(()=>new URL(c.value.trim()),()=>"非法设备地址").origin,c.value=m.value,f.value=await o.device())});ue(async()=>{await ce(500),de(c.value)&&x.invoke()});const n=b([]);me(async()=>{if(!f.value)return;document.title="已连接 "+f.value.manufacturer;const e=await o.snapshots();e.sort((t,p)=>p.id-t.id),n.value=e,R.value=""});const g=T(async()=>{const e=await o.captureSnapshot(),t=await o.screenshot({id:e.id});await V.setItem(e.id,e),await B.setItem(e.id,t),u.success("保存快照成功");const p=await o.snapshots();p.sort((y,P)=>P.id-y.id),n.value=p}),I=T(async()=>{const e=(await o.snapshots()).map(l=>l.id),t=new Set((await B.keys()).map(l=>parseInt(l))),p=e.filter(l=>!t.has(l));if(p.length==0){u.success("没有新记录可导入");return}let y=0;const P=Se(3);await Promise.all(p.map(l=>P(async()=>{const[O,q]=await Promise.all([o.snapshot({id:l}),o.screenshot({id:l})]);O.nodes&&(await Promise.all([V.setItem(l,O),B.setItem(l,q)]),y++)}))),u.success(`导入${y}条新记录`)}),{activityIdCol:d,appIdCol:U,appNameCol:v,ctimeCol:S,appVersionCodeCol:X,appVersionNameCol:Y,resetColWidth:Z}=be(),ee=e=>{e.columnKey==S.key&&(S.sortOrder=e.order)},D=Ie(async e=>{if(await V.hasItem(e.id)||await V.setItem(e.id,await o.snapshot({id:e.id})),!await B.hasItem(e.id)){const t=await o.screenshot({id:e.id});await B.setItem(e.id,t)}window.open(C.resolve({name:"snapshot",params:{snapshotId:e.id}}).href)},e=>e.id),te=[S,v,U,X,Y,d,{key:"actions",title:"操作",fixed:"right",width:"120px",render(e){return a(W,{size:"small"},{default:()=>[a($,{size:"small",loading:D.loading[e.id],onClick:()=>D.invoke(e)},{default:()=>[h("查看")]})]})}}],N=E({page:1,pageSize:50,showSizePicker:!0,pageSizes:[50,100],onChange:e=>{N.page=e},onUpdatePageSize:e=>{N.pageSize=e,N.page=1}});fe(N,Z);const z=b(!1),R=b(""),F=T(async()=>{const e=H(()=>_e.parse(R.value.trim()));if(e){if(e.categories||e.globalGroups||e.apps)await o.updateSubscription(e);else if(typeof e.id=="string")await o.updateSubscription({apps:[e]});else if(Array.isArray(e)&&typeof e[0].id=="string")await o.updateSubscription({apps:e});else if(typeof e.key=="number")await o.updateSubscription({globalGroups:[e]});else if(Array.isArray(e)&&typeof e[0].key=="number")await o.updateSubscription({globalGroups:e});else{u.error("无法识别的订阅文本");return}u.success("修改成功")}}),A=b(!1),se=[{label:"仅查询",value:void 0},{value:"click",label:"click"},{value:"clickNode",label:"clickNode"},{value:"clickCenter",label:"clickCenter"},{value:"back",label:"back"},{value:"longClick",label:"longClick"},{value:"longClickNode",label:"longClickNode"},{value:"longClickCenter",label:"longClickCenter"}],k=E({selector:"",action:"click",quickFind:!1}),L=T(async()=>{const e=await o.execSelector({...k,fastQuery:k.quickFind});if(e.message){u.success("操作成功:"+e.message);return}e.action?u.success((e.result?"操作成功:":"操作失败")+e.action):!e.action&&e.result&&u.success("查询成功")}),ne=`
|
|
2
|
-
请输入订阅文本(JSON5语法):
|
|
3
|
-
示例1-更新单个应用的规则:
|
|
4
|
-
{
|
|
5
|
-
id: 'appId',
|
|
6
|
-
groups: []
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
示例2-更新多个应用的规则:
|
|
10
|
-
[
|
|
11
|
-
{
|
|
12
|
-
id: 'appId1',
|
|
13
|
-
groups: []
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
id: 'appId2',
|
|
17
|
-
groups: []
|
|
18
|
-
}
|
|
19
|
-
]
|
|
20
|
-
|
|
21
|
-
示例3-更新全局规则(1.7.0):
|
|
22
|
-
{
|
|
23
|
-
name: '全局规则-1',
|
|
24
|
-
key: 0,
|
|
25
|
-
rules: []
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
示例3-更新多个全局规则(1.7.0):
|
|
29
|
-
[
|
|
30
|
-
{
|
|
31
|
-
name: '全局规则-1',
|
|
32
|
-
key: 0,
|
|
33
|
-
rules: []
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
name: '全局规则-2',
|
|
37
|
-
key: 1,
|
|
38
|
-
rules: []
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
|
|
42
|
-
示例4-更新整个订阅(1.7.0):
|
|
43
|
-
{
|
|
44
|
-
apps: [],
|
|
45
|
-
globalGroups: [],
|
|
46
|
-
categories: [],
|
|
47
|
-
}
|
|
48
|
-
`.trim();return(e,t)=>{const p=Re,y=ge,P=ve,l=W,O=Ce,q=J("SvgIcon"),_=$,oe=J("RouterLink"),ae=Ne,ie=xe;return M(),K(Q,null,[a(y,{show:s(z),"onUpdate:show":t[1]||(t[1]=i=>j(z)?z.value=i:null),preset:"dialog",style:{width:"800px"},title:"修改内存订阅","positive-text":"确认",positiveButtonProps:{loading:s(F).loading,onClick(){s(F).invoke()}}},{default:r(()=>[a(p,{value:s(R),"onUpdate:value":t[0]||(t[0]=i=>j(R)?R.value=i:null),disabled:s(F).loading,type:"textarea",class:"gkd_code",autosize:{minRows:20,maxRows:25},placeholder:s(ne)},null,8,["value","disabled","placeholder"])]),_:1},8,["show","positiveButtonProps"]),a(y,{show:s(A),"onUpdate:show":t[5]||(t[5]=i=>j(A)?A.value=i:null),preset:"dialog",style:{width:"800px"},title:"执行选择器","positive-text":"确认",positiveButtonProps:{loading:s(L).loading,onClick(){s(L).invoke()}}},{default:r(()=>[a(p,{value:s(k).selector,"onUpdate:value":t[2]||(t[2]=i=>s(k).selector=i),disabled:s(L).loading,type:"textarea",class:"gkd_code",autosize:{minRows:4,maxRows:10},placeholder:"请输入合法的选择器"},null,8,["value","disabled"]),t[12]||(t[12]=w("div",{"h-15px":""},null,-1)),a(l,null,{default:r(()=>[a(P,{checked:s(k).quickFind,"onUpdate:checked":t[3]||(t[3]=i=>s(k).quickFind=i)},{default:r(()=>t[9]||(t[9]=[h(" 快速查找 ")])),_:1},8,["checked"]),t[10]||(t[10]=w("a",{href:"https://gkd.li/api/interfaces/RawCommonProps.html#quickfind",target:"_blank",rel:"noopener noreferrer"}," 查找说明 ",-1))]),_:1}),t[13]||(t[13]=w("div",{"h-10px":""},null,-1)),w("div",Be,[a(O,{value:s(k).action,"onUpdate:value":t[4]||(t[4]=i=>s(k).action=i),options:se,class:"w-150px"},null,8,["value"]),t[11]||(t[11]=w("a",{href:"https://gkd.li/api/interfaces/RawRuleProps#action",target:"_blank",rel:"noopener noreferrer"}," 操作说明 ",-1))])]),_:1},8,["show","positiveButtonProps"]),w("div",Te,[w("div",Ue,[a(oe,{to:"/",flex:"","ml-12px":"",title:"首页"},{default:r(()=>[a(_,{text:"",style:{"--n-icon-size":"24px"}},{icon:r(()=>[a(q,{name:"home"})]),_:1})]),_:1}),a(ae,null,{default:r(()=>[a(p,{value:s(c),"onUpdate:value":t[6]||(t[6]=i=>j(c)?c.value=i:null),placeholder:"请输入设备地址",style:{width:"200px"},onKeyup:we(s(x).invoke,["enter"])},null,8,["value","onKeyup"]),a(_,{onClick:s(x).invoke,loading:s(x).loading},{default:r(()=>t[14]||(t[14]=[h(" 刷新连接 ")])),_:1},8,["onClick","loading"])]),_:1}),s(f)?(M(),K(Q,{key:0},[w("div",ze,ye(`已连接 ${s(f).manufacturer} Android ${s(f).release}`),1),a(_,{onClick:s(g).invoke,loading:s(g).loading},{default:r(()=>t[15]||(t[15]=[h(" 快照 ")])),_:1},8,["onClick","loading"]),a(_,{onClick:s(I).invoke,loading:s(I).loading},{default:r(()=>t[16]||(t[16]=[h(" 下载设备所有快照 ")])),_:1},8,["onClick","loading"]),a(_,{onClick:t[7]||(t[7]=i=>z.value=!0)},{default:r(()=>t[17]||(t[17]=[h(" 修改内存订阅 ")])),_:1}),a(_,{onClick:t[8]||(t[8]=i=>A.value=!0)},{default:r(()=>t[18]||(t[18]=[h(" 执行选择器 ")])),_:1})],64)):ke("",!0)]),a(ie,{striped:"",flexHeight:"",data:s(n),columns:te,pagination:s(N),"onUpdate:sorter":ee,size:"small",class:"flex-1",scrollX:1200},null,8,["data","pagination"])])],64)}}});export{qe as default};
|
|
49
|
-
//# sourceMappingURL=DevicePage-22pCriWH.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{h as k,aA as y,aB as S,A as f,b1 as v,B as b,b2 as B,aQ as N,aS as h,aC as R,aU as i,b3 as U,I as g,J as w,M as V,a5 as q,O as l,S as I,K as x,a6 as C,T,b4 as A}from"./index-HykT01V7.js";import{a as D,g as F}from"./snapshot-7V6viKJH.js";import{a as M}from"./import-DF6hDg2o.js";import"./chunk-B1uHQf23.js";const O={class:"h-[calc(100%-10px)]",flex:"","gap-5px":"","pt-40px":"","flex-col":"","flex-items-center":""},Q={key:0,"mb-20px":""},j=k({__name:"ImportPage",setup(E){const p=y(),c=S(),u=f(!0),r=f("加载中..."),m=async s=>{c.replace({name:"snapshot",params:{snapshotId:s},query:A(p.query,["str","gkd"])})},n=String(p.query.url||""),e=v(n);return b(async()=>{var d;if(!B(n)){N.error("非法URL参数"),await h(1e3),c.replace({path:"/"});return}const{importSnapshotId:s,snapshotImportId:o,waitInit:_}=R();if(await _(),e){const t=s[e];if(t)if(await D.getItem(t)){m(t);return}else delete s[e]}i.start();try{const[t]=(d=await M(e?U(e):n))!=null?d:[];if(t.status=="fulfilled"){i.finish();const a=t.value;a!=null&&a.id?(e&&(s[e]=a.id,o[a.id]=e),u.value=!1,await h(500),m(a.id)):r.value="获取资源失败"}else throw t.reason}catch{i.error(),r.value="加载资源失败"}}),(s,o)=>(w(),g("div",O,[l(F)()?V("",!0):(w(),g("div",Q,o[0]||(o[0]=[I(" 建议安装并启用 "),x("a",{href:"https://github.com/gkd-kit/network-extension",target:"_blank",rel:"noopener noreferrer"}," 油猴脚本 ",-1),I(" 获取更快加载速度 ")]))),q(x("div",null,T(l(r)),513),[[C,l(u)]])]))}});export{j as default};
|
|
2
|
-
//# sourceMappingURL=ImportPage-BdtL0i84.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
[data-name~=Unknown]{background-color:red}[data-name~=PropertySegment]{color:#8a2be2}[data-name~=ConnectOperator]{color:green}[data-name~=ConnectExpression]{color:#5f9ea0}[data-name~=ValueExpression]{color:green}[data-name~=CompareOperator]{color:#0000cd}[data-name~=LogicalOperator],[data-name~=SelectorLogicalOperator]{color:#006400}[data-name~=Bracket],[data-name~=Comma],[data-name~=Point]{color:#b392f0}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{A as S,S as A,e as O,d as b}from"./index-Cjc782aG.js";import{h as B,q as i,I as u,J as o,O as r,R as v,aH as P,S as j,T as p,au as R,cj as E,ck as q,aA as $,aB as I,A as V,aM as z,G as F,H,F as C,K as y,M as m,U as L,ax as M}from"./index-HykT01V7.js";import{_ as U}from"./Input-BFF_YDmk.js";const D=["data-name","data-range","data-value"],W=["data-name","data-range"],w=B({__name:"SelectorText",props:{text:{},node:{}},setup(T){const s=T,g=i(()=>s.text.substring(s.node.start,s.node.end)),h=n=>s.text.substring(n.start,n.end),f=n=>{var a;const t=[n.name];let e=Object.getPrototypeOf(Object.getPrototypeOf(n.value));for(;(a=e==null?void 0:e.constructor)!=null&&a.name&&e.constructor!==Object;)t.push(e.constructor.name),e=Object.getPrototypeOf(e);return t.join(" ")},d=n=>{const t=s.text.substring(n.start,n.end).trim();return t?t==="("?"Bracket LeftParenthesis":t===")"?"Bracket RightParenthesis":t===","?"Comma":t=="["?"Bracket LeftSquareBracket":t=="]"?"Bracket RightSquareBracket":t==="."?"Point":t==="+"||t==="-"||t==="n"?"":"Unknown":"Whitespace"},_=n=>n instanceof S,c=n=>`${n.start}-${n.end}`,l=i(()=>{const n=[],t=s.node.outChildren[0];t.start!==s.node.start&&n.push({start:s.node.start,end:t.start}),s.node.outChildren.forEach((a,k)=>{n.push(a);const x=s.node.outChildren[k+1];x&&a.end!==x.start&&n.push({start:a.end,end:x.start})});const e=s.node.outChildren[s.node.outChildren.length-1];return e.end!==s.node.end&&n.push({start:e.end,end:s.node.end}),n});return(n,t)=>(o(),u("span",{"whitespace-pre-wrap":"","data-name":f(n.node),"data-range":c(n.node),"data-value":r(g)},[n.node.outChildren.length?(o(!0),u(v,{key:0},P(r(l),e=>(o(),u(v,{key:e.start},[_(e)?(o(),R(w,{key:0,text:n.text,node:e},null,8,["text","node"])):(o(),u("span",{key:1,"data-name":d(e),"data-range":c(e)},p(h(e)),9,W))],64))),128)):(o(),u(v,{key:1},[j(p(r(g)),1)],64))],8,D))}}),G={flex:"","flex-col":"","items-center":"","p-8px":"",text:"40px/52px"},J={key:1,"whitespace-pre-wrap":""},K={key:0},Q={"bg-red":"",relative:""},X={key:0},Y={key:1,"pl-20px":""},Z={absolute:"","left-0":"","right-0":"","top--14px":"",flex:"","flex-col":"","items-center":""},ee={key:1},te={key:0,"p-4px":"","bg-red-300":"",gkd_code:""},ae=B({__name:"SelectorPage",setup(T){E(),q();const s=$(),g=I(),h=()=>{const e=String(s.query.gkd||"");if(!e)return e;try{return b.decode(e)}catch{return f(""),""}},f=e=>{g.replace({query:{gkd:e?b.encode(e):void 0}})},d=V(h()),_=z(d,500),c=i(()=>(d.value&&_.value).trim());F(c,()=>{f(c.value)});const l=i(()=>{if(c.value)try{return A.Companion.parseAst(c.value)}catch(e){return e}}),n=i(()=>{if(l.value instanceof S)return l.value}),t=i(()=>{const e=l.value,a=c.value;if(e instanceof O)return{headText:a.substring(0,e.index),errorText:a.substring(e.index,e.index+1),tailText:a.substring(e.index+1),message:e.outMessage}});return(e,a)=>{const k=U,x=H("SvgIcon");return o(),u("div",G,[C(k,{value:r(d),"onUpdate:value":a[0]||(a[0]=N=>L(d)?d.value=N:null),type:"textarea",placeholder:"请输入选择器",class:"gkd_code py-4px",style:{"--n-font-size":"20px","--n-line-height-textarea":"28px"}},null,8,["value"]),y("div",{"mt-20px":"","mb-8px":"","py-4px":"","px-8px":"",gkd_code:"","transition-colors":"",class:M(r(t)?"bg-red-200":"bg-light-600")},[r(n)?(o(),R(w,{key:0,text:r(c),node:r(n)},null,8,["text","node"])):r(t)?(o(),u("span",J,[r(t).headText?(o(),u("span",K,p(r(t).headText),1)):m("",!0),y("span",Q,[r(t).errorText?(o(),u("span",X,p(r(t).errorText),1)):(o(),u("span",Y)),y("div",Z,[C(x,{name:"arrow",class:"text-16px color-dark"})])]),r(t).tailText?(o(),u("span",ee,p(r(t).tailText),1)):m("",!0)])):m("",!0)],2),r(t)?(o(),u("div",te,p(r(t).message),1)):m("",!0)])}}});export{ae as default};
|
|
2
|
-
//# sourceMappingURL=SelectorPage-uMb66kF4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectorPage-uMb66kF4.js","sources":["../../src/components/SelectorText.vue","../../src/views/SelectorPage.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AstNode } from '@gkd-kit/selector';\nimport SelectorText from './SelectorText.vue';\n\nconst props = defineProps<{\n text: string;\n node: AstNode<any>;\n}>();\n\nconst subText = computed(() => {\n return props.text.substring(props.node.start, props.node.end);\n});\n\ninterface ExtraNode {\n start: number;\n end: number;\n}\n\nconst getExtraText = (child: ExtraNode) => {\n return props.text.substring(child.start, child.end);\n};\n\nconst getName = (node: AstNode<any>) => {\n const list = [node.name];\n let t = Object.getPrototypeOf(Object.getPrototypeOf(node.value));\n while (t?.constructor?.name && t.constructor !== Object) {\n list.push(t.constructor.name);\n t = Object.getPrototypeOf(t);\n }\n return list.join(' ');\n};\n\nconst getExtraName = (child: ExtraNode) => {\n const t = props.text.substring(child.start, child.end).trim();\n if (!t) {\n return 'Whitespace';\n }\n if (t === '(') {\n return 'Bracket LeftParenthesis';\n }\n if (t === ')') {\n return 'Bracket RightParenthesis';\n }\n if (t === ',') {\n return 'Comma';\n }\n if (t == '[') {\n return 'Bracket LeftSquareBracket';\n }\n if (t == ']') {\n return 'Bracket RightSquareBracket';\n }\n if (t === '.') {\n return 'Point';\n }\n if (t === '+') {\n return '';\n }\n if (t === '-') {\n return '';\n }\n if (t === 'n') {\n return '';\n }\n return 'Unknown';\n};\n\nconst isAstNode = (node: unknown): node is AstNode<any> => {\n return node instanceof AstNode;\n};\n\nconst getRange = (child: AstNode<any> | ExtraNode) => {\n return `${child.start}-${child.end}`;\n};\n\nconst children = computed(() => {\n const list: (AstNode<any> | ExtraNode)[] = [];\n const firstChild = props.node.outChildren[0];\n if (firstChild.start !== props.node.start) {\n list.push({\n start: props.node.start,\n end: firstChild.start,\n });\n }\n props.node.outChildren.forEach((child, i) => {\n list.push(child);\n const nextChild = props.node.outChildren[i + 1];\n if (nextChild && child.end !== nextChild.start) {\n list.push({\n start: child.end,\n end: nextChild.start,\n });\n }\n });\n const lastChild = props.node.outChildren[props.node.outChildren.length - 1];\n if (lastChild.end !== props.node.end) {\n list.push({\n start: lastChild.end,\n end: props.node.end,\n });\n }\n return list;\n});\n</script>\n<template>\n <span\n whitespace-pre-wrap\n :data-name=\"getName(node)\"\n :data-range=\"getRange(node)\"\n :data-value=\"subText\"\n >\n <template v-if=\"node.outChildren.length\">\n <template v-for=\"child in children\" :key=\"child.start\">\n <SelectorText v-if=\"isAstNode(child)\" :text=\"text\" :node=\"child\" />\n <span\n v-else\n :data-name=\"getExtraName(child)\"\n :data-range=\"getRange(child)\"\n >\n {{ getExtraText(child) }}\n </span>\n </template>\n </template>\n <template v-else>\n {{ subText }}\n </template>\n </span>\n</template>\n<style>\n[data-name~='Unknown'] {\n background-color: red;\n}\n[data-name~='PropertySegment'] {\n color: blueviolet;\n}\n[data-name~='ConnectOperator'] {\n color: green;\n}\n[data-name~='ConnectExpression'] {\n color: cadetblue;\n}\n[data-name~='ValueExpression'] {\n color: green;\n}\n[data-name~='CompareOperator'] {\n color: mediumblue;\n}\n[data-name~='LogicalOperator'] {\n color: darkgreen;\n}\n[data-name~='SelectorLogicalOperator'] {\n color: darkgreen;\n}\n[data-name~='Bracket'] {\n color: #b392f0;\n}\n[data-name~='Comma'] {\n color: #b392f0;\n}\n[data-name~='Point'] {\n color: #b392f0;\n}\n</style>\n","<script setup lang=\"ts\">\nimport SelectorText from '@/components/SelectorText.vue';\nimport { useAutoHeight, useAutoWidth } from '@/utils/others';\nimport {\n AstNode,\n Selector,\n GkdException,\n SyntaxException,\n} from '@gkd-kit/selector';\nimport * as base64url from 'universal-base64url';\n\nuseAutoHeight();\nuseAutoWidth();\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst getTextFromRoute = () => {\n const t = String(route.query.gkd || '');\n if (!t) return t;\n try {\n return base64url.decode(t);\n } catch (e) {\n setTextToRoute('');\n return '';\n }\n};\nconst setTextToRoute = (t: string) => {\n router.replace({ query: { gkd: t ? base64url.encode(t) : undefined } });\n};\n\nconst inputText = shallowRef(getTextFromRoute());\nconst lazyText = useDebounce(inputText, 500);\nconst text = computed(() => {\n return (inputText.value && lazyText.value).trim();\n});\nwatch(text, () => {\n setTextToRoute(text.value);\n});\nconst result = computed(() => {\n if (!text.value) return;\n try {\n return Selector.Companion.parseAst(text.value);\n } catch (e) {\n return e as GkdException;\n }\n});\n\nconst ast = computed(() => {\n if (result.value instanceof AstNode) {\n return result.value;\n }\n return undefined;\n});\n\nconst error = computed(() => {\n const e = result.value;\n const t = text.value;\n if (e instanceof SyntaxException) {\n return {\n headText: t.substring(0, e.index),\n errorText: t.substring(e.index, e.index + 1),\n tailText: t.substring(e.index + 1),\n message: e.outMessage,\n };\n }\n return undefined;\n});\n</script>\n<template>\n <div flex flex-col items-center p-8px text=\"40px/52px\">\n <NInput\n v-model:value=\"inputText\"\n type=\"textarea\"\n placeholder=\"请输入选择器\"\n class=\"gkd_code py-4px\"\n style=\"--n-font-size: 20px; --n-line-height-textarea: 28px\"\n />\n <div\n mt-20px\n mb-8px\n py-4px\n px-8px\n gkd_code\n transition-colors\n :class=\"error ? `bg-red-200` : `bg-light-600`\"\n >\n <SelectorText v-if=\"ast\" :text=\"text\" :node=\"ast\" />\n <span v-else-if=\"error\" whitespace-pre-wrap>\n <span v-if=\"error.headText\">{{ error.headText }}</span>\n <span bg-red relative>\n <span v-if=\"error.errorText\">{{ error.errorText }}</span>\n <span v-else pl-20px></span>\n <div absolute left-0 right-0 top--14px flex flex-col items-center>\n <SvgIcon name=\"arrow\" class=\"text-16px color-dark\" />\n </div>\n </span>\n <span v-if=\"error.tailText\">{{ error.tailText }}</span>\n </span>\n </div>\n <div v-if=\"error\" p-4px bg-red-300 gkd_code>\n {{ error.message }}\n </div>\n </div>\n</template>\n"],"names":["props","__props","subText","computed","getExtraText","child","getName","node","list","t","_a","getExtraName","isAstNode","AstNode","getRange","children","firstChild","i","nextChild","lastChild","useAutoHeight","useAutoWidth","route","useRoute","router","useRouter","getTextFromRoute","base64url.decode","setTextToRoute","base64url.encode","inputText","shallowRef","lazyText","useDebounce","text","watch","result","Selector","ast","error","SyntaxException"],"mappings":"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"}
|