koishi-plugin-filter-pro 1.0.16 → 1.0.18
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/index.js +1 -1
- package/dist/style.css +1 -469
- package/lib/apply.d.ts +4 -0
- package/lib/evaluator.d.ts +2 -0
- package/lib/index.cjs +891 -1
- package/lib/index.d.ts +28 -89
- package/lib/index.mjs +863 -1
- package/lib/native-filter.d.ts +17 -0
- package/lib/persistence.d.ts +3 -0
- package/lib/provider.d.ts +8 -0
- package/lib/resolver.d.ts +10 -0
- package/lib/rule-utils.d.ts +8 -0
- package/lib/schema.d.ts +3 -0
- package/lib/types.d.ts +62 -0
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{icons as e,message as t,send as n}from"@koishijs/client";import{Fragment as r,Teleport as i,computed as a,createBlock as o,createCommentVNode as s,createElementBlock as c,createElementVNode as l,createTextVNode as u,createVNode as d,defineComponent as f,normalizeClass as p,normalizeStyle as m,onBeforeUnmount as h,onMounted as g,openBlock as _,ref as v,renderList as y,resolveComponent as b,toDisplayString as x,vModelText as S,watch as C,withCtx as w,withDirectives as T,withModifiers as E}from"vue";const D=[`disabled`],O={class:`label`},k=[`onClick`];var A=f({__name:`fp-select`,props:{modelValue:{type:String,required:!0},options:{type:Array,required:!0},placeholder:{type:String,required:!1},disabled:{type:Boolean,required:!1}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,u=t,d=v(null),f=v(!1),b=v({left:0,top:0,width:0}),S=a(()=>n.options.find(e=>e.value===n.modelValue)?.label||``);function w(){n.disabled||(f.value=!f.value,f.value&&A())}function T(e){u(`update:modelValue`,e),f.value=!1}function E(e){let t=e.target;!d.value||!t||d.value.contains(t)||(f.value=!1)}function A(){if(!d.value)return;let e=d.value.getBoundingClientRect(),t=window.innerHeight-e.bottom-6,n=e.top-6,r=t<180&&n>t,i=Math.min(240,r?n:t);b.value={left:e.left,width:e.width,top:r?Math.max(8,e.top-Math.max(120,i)-6):e.bottom+6}}function j(){f.value&&A()}return C(f,e=>{e&&A()}),g(()=>{document.addEventListener(`click`,E),window.addEventListener(`resize`,j),window.addEventListener(`scroll`,j,!0)}),h(()=>{document.removeEventListener(`click`,E),window.removeEventListener(`resize`,j),window.removeEventListener(`scroll`,j,!0)}),(t,n)=>(_(),c(r,null,[l(`div`,{class:`fp-select`,ref_key:`root`,ref:d},[l(`button`,{type:`button`,class:p([`trigger`,{disabled:e.disabled}]),onClick:w,disabled:e.disabled},[l(`span`,O,x(S.value||e.placeholder),1),n[0]||=l(`span`,{class:`arrow`},`▾`,-1)],10,D)],512),(_(),o(i,{to:`body`},[f.value?(_(),c(`div`,{key:0,class:`menu`,style:m({left:`${b.value.left}px`,top:`${b.value.top}px`,width:`${b.value.width}px`})},[(_(!0),c(r,null,y(e.options,t=>(_(),c(`button`,{key:t.value,type:`button`,class:p([`item`,{active:t.value===e.modelValue}]),onClick:e=>T(t.value)},x(t.label),11,k))),128))],4)):s(`v-if`,!0)]))],64))}}),j=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},M=j(A,[[`__scopeId`,`data-v-4a262c3e`]]);const N={class:`cf-editor`},P={class:`rows-section`},F={key:0,class:`conn-and-wrap`},I={class:`cf-row`},L=[`onUpdate:modelValue`],R={key:1,class:`bool-toggle`},z=[`checked`,`onChange`],B={class:`bool-label`},V=[`onUpdate:modelValue`,`onInput`],H={class:`row-btns`},U=[`disabled`,`onClick`],ee={key:0,class:`add-section`},te={class:`preview-section`},ne={class:`preview-code`};var W=j(f({name:`ExprEditor`,__name:`expr-editor`,props:{modelValue:{type:Object,required:!0}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=0,i=()=>String(++n),f=[{value:`guildId`,label:`群组 ID(guildId)`},{value:`channelId`,label:`频道 ID(channelId)`},{value:`userId`,label:`用户 ID(userId)`},{value:`platform`,label:`平台(platform)`},{value:`content`,label:`消息内容(content)`},{value:`isDirect`,label:`私聊(isDirect)`},{value:`type`,label:`消息类型(type)`}],m=[...f,{value:`__custom__`,label:`自定义字段...`}],h=[{value:`eq`,label:`等于`},{value:`ne`,label:`不等于`},{value:`includes`,label:`包含`},{value:`regex`,label:`正则匹配`},{value:`gt`,label:`大于`},{value:`gte`,label:`大于等于`},{value:`lt`,label:`小于`},{value:`lte`,label:`小于等于`},{value:`exists`,label:`存在`}],g=[{value:`eq`,label:`等于`},{value:`ne`,label:`不等于`},{value:`exists`,label:`存在`}],E={eq:`eq`,ne:`ne`,includes:`contains`,regex:`matches`,gt:`gt`,gte:`gte`,lt:`lt`,lte:`lte`,exists:`exists`},D=e,O=t,k=v(G(D.modelValue)),A=JSON.stringify(D.modelValue);C(()=>D.modelValue,e=>{let t=JSON.stringify(e);t!==A&&(A=t,k.value=G(e))},{deep:!0});function j(e,t=`guildId`){let n=t===`isDirect`;return{id:i(),field:t,customField:``,operator:`eq`,valueText:n?`false`:``,value:n?!1:``,connector:e}}function W(e,t){let n=f.some(t=>t.value===e.field),r=n?e.field:`__custom__`,a=r===`isDirect`?!1:``,o=e.value??a;return{id:i(),field:r,customField:n?``:e.field,operator:e.operator,valueText:o==null?``:String(o),value:o,connector:t}}function G(e){if(!e)return[j(null)];if(e.type===`compare`)return[W(e,null)];if(e.type===`group`){if(e.children.every(e=>e.type===`compare`))return e.children.map((t,n)=>W(t,n===0?null:e.operator));if(e.operator===`or`){let t=[],n=!0;for(let r of e.children)r.type===`compare`?(t.push(W(r,n?null:`or`)),n=!1):r.type===`group`&&r.operator===`and`&&r.children.forEach((e,r)=>{e.type===`compare`&&(t.push(W(e,n?null:r===0?`or`:`and`)),n=!1)});if(t.length>0)return t}}return[j(null)]}function K(e){return{type:`compare`,field:e.field===`__custom__`?(e.customField||``).trim()||`guildId`:e.field,operator:e.operator,value:e.operator===`exists`?void 0:e.value}}function q(e){if(e.length===0)return{type:`compare`,field:`guildId`,operator:`eq`,value:``};if(e.length===1)return K(e[0]);let t=[],n=[e[0]];for(let r=1;r<e.length;r++)e[r].connector===`or`?(t.push(n),n=[e[r]]):n.push(e[r]);t.push(n);let r=t.map(e=>e.length===1?K(e[0]):{type:`group`,operator:`and`,children:e.map(K)});return r.length===1?r[0]:{type:`group`,operator:`or`,children:r}}function J(e){if(e.type===`compare`){let t=E[e.operator]||e.operator,n=e.value===void 0?``:JSON.stringify(e.value);return`(${e.field} ${t} ${n})`}if(e.type===`group`){let t=e.operator===`and`?` AND `:` OR `;return e.children.map(J).join(t)}return e.type===`not`?`NOT (${J(e.child)})`:``}let Y=a(()=>J(q(k.value)));function X(){let e=q(k.value);A=JSON.stringify(e),O(`update:modelValue`,e)}function Z(e){k.value.push(j(e??`and`)),X()}function Q(e,t){k.value.splice(e+1,0,j(t)),X()}function re(e){k.value.length<=1||(k.value.splice(e,1),e===0&&(k.value[0].connector=null),X())}function $(e){e<=0||(k.value[e].connector=k.value[e].connector===`or`?`and`:`or`,X())}function ie(e){let t=e.trim();if(!t)return``;if(t===`true`)return!0;if(t===`false`)return!1;if(t===`null`)return null;let n=Number(t);return Number.isFinite(n)?n:e}return(e,t)=>{let n=b(`k-button`);return _(),c(`div`,N,[s(` 条件行 `),l(`div`,P,[(_(!0),c(r,null,y(k.value,(e,i)=>(_(),c(r,{key:e.id},[s(` 连接符(第一行之后显示) `),i>0?(_(),c(`div`,{key:0,class:p([`connector-sep`,`conn-`+e.connector])},[s(` AND:细线 + 按钮 + 细线 `),e.connector===`and`?(_(),c(`div`,F,[t[2]||=l(`div`,{class:`conn-vline`},null,-1),d(n,{title:`点击切换为或(OR)`,onClick:e=>$(i)},{default:w(()=>[...t[1]||=[u(`且(AND)`,-1)]]),_:1},8,[`onClick`]),t[3]||=l(`div`,{class:`conn-vline`},null,-1)])):(_(),c(r,{key:1},[s(` OR:仅按钮 `),d(n,{title:`点击切换为且(AND)`,onClick:e=>$(i)},{default:w(()=>[...t[4]||=[u(`或(OR)`,-1)]]),_:1},8,[`onClick`])],2112))],2)):s(`v-if`,!0),s(` 条件行 `),l(`div`,I,[d(M,{"model-value":e.field,options:m,class:`sel-field`,"onUpdate:modelValue":t=>{let n=e.field===`isDirect`;e.field=t,t===`isDirect`?(e.value=!1,e.valueText=`false`,[`eq`,`ne`,`exists`].includes(e.operator)||(e.operator=`eq`)):n&&(e.value=``,e.valueText=``),X()}},null,8,[`model-value`,`onUpdate:modelValue`]),e.field===`__custom__`?T((_(),c(`input`,{key:0,class:`input custom-input`,"onUpdate:modelValue":t=>e.customField=t,onInput:X,placeholder:`字段路径,如 author.name`},null,40,L)),[[S,e.customField]]):s(`v-if`,!0),d(M,{"model-value":e.operator,options:e.field===`isDirect`?g:h,class:`sel-op`,"onUpdate:modelValue":t=>{e.operator=t,X()}},null,8,[`model-value`,`options`,`onUpdate:modelValue`]),s(` isDirect:开关 `),e.field===`isDirect`&&e.operator!==`exists`?(_(),c(`label`,R,[l(`input`,{type:`checkbox`,checked:e.value===!0,onChange:t=>{e.value=t.target.checked,e.valueText=String(e.value),X()}},null,40,z),l(`span`,B,x(e.value===!0?`是(true)`:`否(false)`),1)])):e.field!==`isDirect`&&e.operator!==`exists`?(_(),c(r,{key:2},[s(` 普通文本输入 `),T(l(`input`,{class:`input val-input`,"onUpdate:modelValue":t=>e.valueText=t,onInput:()=>{e.value=ie(e.valueText),X()},placeholder:`比较值`},null,40,V),[[S,e.valueText]])],2112)):s(`v-if`,!0),l(`div`,H,[d(n,{onClick:e=>Q(i,`and`)},{default:w(()=>[...t[5]||=[u(`且(AND)`,-1)]]),_:1},8,[`onClick`]),i===k.value.length-1?(_(),o(n,{key:0,onClick:e=>Q(i,`or`)},{default:w(()=>[...t[6]||=[u(`或(OR)`,-1)]]),_:1},8,[`onClick`])):s(`v-if`,!0)]),l(`button`,{class:`del-btn`,disabled:k.value.length<=1,onClick:e=>re(i),title:`删除此条件`},` ✕ `,8,U)])],64))),128))]),s(` 添加条件(仅空状态) `),k.value.length===0?(_(),c(`div`,ee,[d(n,{onClick:t[0]||=e=>Z(null)},{default:w(()=>[...t[7]||=[u(`+ 添加条件`,-1)]]),_:1})])):s(`v-if`,!0),s(` 表达式预览 `),l(`div`,te,[t[8]||=l(`div`,{class:`preview-title`},`表达式预览`,-1),l(`code`,ne,x(Y.value||`(空)`),1)])])}}}),[[`__scopeId`,`data-v-40533e84`]]);const G={class:`fp-layout`},K={class:`fp-main`},q={class:`editor-header`},J={class:`rule-list`},Y=[`onClick`],X={class:`top`},Z={class:`name`},Q={class:`meta`},re={class:`editor-header`},$={class:`actions`},ie={class:`editor-body`},ae={class:`editor-grid`},oe={class:`field`},se={class:`field`},ce={key:0,class:`field`},le={class:`field`},ue={class:`field`},de={class:`field switch`},fe={class:`expr-wrap`},pe={class:`footer-actions`},me={class:`confirm-dialog`},he={class:`confirm-actions`};var ge=j(f({__name:`page`,setup(e){let f=n,m={bypass:`放行`,block:`拦截`},h=[{label:`全局`,value:`global`},{label:`插件`,value:`plugin`}],g=[{label:`放行(bypass)`,value:`bypass`},{label:`拦截(block)`,value:`block`}],C=a(()=>[{label:`请选择插件实例`,value:``},...O.value.map(e=>({label:e.label,value:e.key}))]),D=v([]),O=v([]),k=v(``),A=a(()=>[...D.value].sort((e,t)=>e.priority-t.priority||e.id.localeCompare(t.id))),j=a(()=>A.value.find(e=>e.id===k.value));function N(){return{type:`group`,operator:`and`,children:[{type:`compare`,field:`guildId`,operator:`eq`,value:``}]}}async function P(){let[e,n]=await Promise.all([f(`filter-pro/list`),f(`filter-pro/targets`)]);O.value=n,D.value=e,(!k.value||!D.value.some(e=>e.id===k.value))&&(k.value=A.value[0]?.id||``),t.success(`刷新成功`)}async function F(){await f(`filter-pro/create`,{name:`new-rule`,enabled:!0,priority:(A.value.at(-1)?.priority??-1)+1,action:`block`,target:{type:`global`,value:``},condition:N(),response:``}),await P(),k.value=A.value.at(-1)?.id||k.value,t.success(`创建成功`)}function I(e){let t=e.target,n=Number(t.value);(n<1||!Number.isInteger(n))&&(t.value=String(Math.max(1,Math.floor(Math.abs(n))||1)),j.value&&(j.value.priority=Number(t.value)))}async function L(e){e.enabled=!e.enabled,await f(`filter-pro/toggle`,{id:e.id,enabled:e.enabled})}async function R(e){let n=e.target.type===`global`?{type:`global`,value:``}:{type:`plugin`,value:e.target.value||``};await f(`filter-pro/update`,{id:e.id,name:e.name,enabled:e.enabled,priority:e.priority,action:e.action,target:n,condition:e.condition,response:e.response||``}),await P(),t.success(`保存成功`)}let z=v(!1);async function B(){j.value&&(z.value=!0)}async function V(){z.value=!1,j.value&&await H(j.value.id)}async function H(e){await f(`filter-pro/delete`,e),await P(),t.success(`删除成功`)}async function U(e,t){let n=A.value,r=n.findIndex(t=>t.id===e);if(r<0)return;let i=r+t;if(i<0||i>=n.length)return;let a=[...n];[a[r],a[i]]=[a[i],a[r]],await f(`filter-pro/reorder`,a.map(e=>e.id)),await P()}return P(),(e,t)=>{let n=b(`k-button`),a=b(`k-card`),f=b(`k-layout`);return _(),c(r,null,[d(f,null,{default:w(()=>[l(`div`,G,[l(`div`,K,[d(a,{class:`panel list`},{header:w(()=>[l(`div`,q,[t[13]||=l(`div`,{class:`panel-title`},`规则列表`,-1),d(n,{onClick:F},{default:w(()=>[...t[12]||=[u(`新建规则`,-1)]]),_:1})])]),default:w(()=>[l(`div`,J,[(_(!0),c(r,null,y(A.value,e=>(_(),c(`button`,{key:e.id,class:p([`rule-item`,{active:k.value===e.id}]),onClick:t=>k.value=e.id},[l(`div`,X,[l(`span`,Z,x(e.name||`未命名规则`),1),l(`span`,{class:p([`badge`,e.action])},x(m[e.action]),3)]),l(`div`,Q,[l(`span`,null,`#`+x(e.priority),1),l(`span`,null,x(e.target.type===`global`?`全局`:e.target.value||`未指定插件`),1),l(`span`,null,x(e.enabled?`启用`:`停用`),1)])],10,Y))),128))])]),_:1}),j.value?(_(),o(a,{key:0,class:`panel editor`},{header:w(()=>[l(`div`,re,[t[17]||=l(`div`,{class:`panel-title`},`规则编辑`,-1),l(`div`,$,[d(n,{onClick:t[0]||=e=>j.value&&R(j.value),disabled:!j.value},{default:w(()=>[...t[14]||=[u(`保存`,-1)]]),_:1},8,[`disabled`]),d(n,{onClick:B,disabled:!j.value},{default:w(()=>[...t[15]||=[u(`删除`,-1)]]),_:1},8,[`disabled`]),d(n,{onClick:P},{default:w(()=>[...t[16]||=[u(`刷新`,-1)]]),_:1})])])]),default:w(()=>[l(`div`,ie,[l(`div`,ae,[l(`label`,oe,[t[18]||=l(`span`,null,`规则名`,-1),T(l(`input`,{class:`input`,"onUpdate:modelValue":t[1]||=e=>j.value.name=e,placeholder:`输入规则名`},null,512),[[S,j.value.name]])]),l(`label`,se,[t[19]||=l(`span`,null,`目标`,-1),d(M,{modelValue:j.value.target.type,"onUpdate:modelValue":t[2]||=e=>j.value.target.type=e,options:h},null,8,[`modelValue`])]),j.value.target.type===`plugin`?(_(),c(`label`,ce,[t[20]||=l(`span`,null,`插件实例`,-1),d(M,{"model-value":j.value.target.value??``,options:C.value,"onUpdate:modelValue":t[3]||=e=>j.value.target.value=e},null,8,[`model-value`,`options`])])):s(`v-if`,!0),l(`label`,le,[t[21]||=l(`span`,null,`动作`,-1),d(M,{modelValue:j.value.action,"onUpdate:modelValue":t[4]||=e=>j.value.action=e,options:g},null,8,[`modelValue`])]),l(`label`,ue,[t[22]||=l(`span`,null,`优先级`,-1),T(l(`input`,{class:`input`,type:`number`,min:`1`,step:`1`,"onUpdate:modelValue":t[5]||=e=>j.value.priority=e,onInput:I},null,544),[[S,j.value.priority,void 0,{number:!0}]])]),l(`label`,de,[t[24]||=l(`span`,null,`启用状态`,-1),l(`div`,{class:p([`toggle-switch`,{active:j.value.enabled}]),onClick:t[6]||=e=>L(j.value)},[...t[23]||=[l(`div`,{class:`toggle-thumb`},null,-1)]],2)])]),l(`div`,fe,[t[25]||=l(`div`,{class:`panel-title small`},`条件表达式`,-1),d(W,{modelValue:j.value.condition,"onUpdate:modelValue":t[7]||=e=>j.value.condition=e},null,8,[`modelValue`])]),l(`div`,pe,[d(n,{onClick:t[8]||=e=>U(j.value.id,-1)},{default:w(()=>[...t[26]||=[u(`上移`,-1)]]),_:1}),d(n,{onClick:t[9]||=e=>U(j.value.id,1)},{default:w(()=>[...t[27]||=[u(`下移`,-1)]]),_:1})])])]),_:1})):s(`v-if`,!0)])])]),_:1}),s(` 删除确认弹窗 `),(_(),o(i,{to:`body`},[z.value?(_(),c(`div`,{key:0,class:`confirm-overlay`,onClick:t[11]||=E(e=>z.value=!1,[`self`])},[l(`div`,me,[t[29]||=l(`div`,{class:`confirm-title`},`删除规则`,-1),t[30]||=l(`div`,{class:`confirm-body`},`确定要删除这条规则吗?此操作不可撤销。`,-1),l(`div`,he,[d(n,{onClick:t[10]||=e=>z.value=!1},{default:w(()=>[...t[28]||=[u(`取消`,-1)]]),_:1}),l(`button`,{class:`confirm-danger-btn`,onClick:V},`确认删除`)])])])):s(`v-if`,!0)]))],64)}}}),[[`__scopeId`,`data-v-0e916acc`]]);const _e={},ve={class:`k-icon`,viewBox:`0 0 512 512`,xmlns:`http://www.w3.org/2000/svg`};function ye(e,t){return _(),c(`svg`,ve,[s(` 漏斗主体 `),t[0]||=l(`path`,{fill:`none`,stroke:`currentColor`,"stroke-width":`32`,"stroke-linejoin":`round`,d:`M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z`},null,-1)])}var be=j(_e,[[`render`,ye]]),xe=t=>{e.register(`activity:filter-pro`,be),t.page({name:`规则集`,path:`/filter-pro`,icon:`activity:filter-pro`,order:320,component:ge})};export{xe as default};
|
|
1
|
+
import{send as ue,message as te,icons as re}from"@koishijs/client";import{defineComponent as ee,ref as w,computed as F,watch as Z,onMounted as de,onBeforeUnmount as ce,createElementBlock as m,openBlock as u,Fragment as z,createElementVNode as t,createBlock as j,normalizeClass as H,toDisplayString as L,Teleport as ae,createCommentVNode as M,normalizeStyle as ve,renderList as le,withDirectives as G,withModifiers as Y,withKeys as se,vModelText as W,resolveComponent as ne,createVNode as x,withCtx as T,createTextVNode as P}from"vue";const pe=["disabled"],fe={class:"label"},me=["onClick"],ge=ee({__name:"fp-select",props:{modelValue:{},options:{},placeholder:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(y,{emit:$}){const g=y,E=$,k=w(null),p=w(false),d=w({left:0,top:0,width:0}),B=F(()=>{var i;return((i=g.options.find(c=>c.value===g.modelValue))==null?void 0:i.label)||""});function D(){g.disabled||(p.value=!p.value,p.value&&n())}function S(i){E("update:modelValue",i),p.value=false}function N(i){const c=i.target;!k.value||!c||k.value.contains(c)||(p.value=false)}function n(){if(!k.value)return;const i=k.value.getBoundingClientRect(),c=window.innerHeight,A=240,O=6,q=c-i.bottom-O,b=i.top-O,f=q<180&&b>q,r=Math.min(A,f?b:q);d.value={left:i.left,width:i.width,top:f?Math.max(8,i.top-Math.max(120,r)-O):i.bottom+O}}function V(){p.value&&n()}return Z(p,i=>{i&&n()}),de(()=>{document.addEventListener("click",N),window.addEventListener("resize",V),window.addEventListener("scroll",V,true)}),ce(()=>{document.removeEventListener("click",N),window.removeEventListener("resize",V),window.removeEventListener("scroll",V,true)}),(i,c)=>(u(),m(z,null,[t("div",{class:"fp-select",ref_key:"root",ref:k},[t("button",{type:"button",class:H(["trigger",{disabled:y.disabled}]),onClick:D,disabled:y.disabled},[t("span",fe,L(B.value||y.placeholder),1),c[0]||(c[0]=t("span",{class:"arrow"},"▾",-1))],10,pe)],512),(u(),j(ae,{to:"body"},[p.value?(u(),m("div",{key:0,class:"menu",style:ve({left:`${d.value.left}px`,top:`${d.value.top}px`,width:`${d.value.width}px`})},[(u(true),m(z,null,le(y.options,A=>(u(),m("button",{key:A.value,type:"button",class:H(["item",{active:A.value===y.modelValue}]),onClick:O=>S(A.value)},L(A.label),11,me))),128))],4)):M("",true)]))],64))}}),Q=(y,$)=>{const g=y.__vccOpts||y;for(const[E,k]of $)g[E]=k;return g},oe=Q(ge,[["__scopeId","data-v-689c822e"]]),be={class:"chip-text"},ye=["onClick"],ke=["placeholder","onKeydown"],he=ee({name:"TagInput",__name:"tag-input",props:{modelValue:{},placeholder:{}},emits:["update:modelValue"],setup(y,{emit:$}){const g=y,E=$,k=w(null),p=w(""),d=w(false);function B(){var i;(i=k.value)==null||i.focus()}function D(){const i=p.value.trim();i&&(g.modelValue.includes(i)||E("update:modelValue",[...g.modelValue,i]),p.value="")}function S(i){const c=[...g.modelValue];c.splice(i,1),E("update:modelValue",c)}function N(){E("update:modelValue",[]),p.value=""}function n(){p.value===""&&g.modelValue.length>0&&S(g.modelValue.length-1)}function V(){const i=p.value.trim();i&&!g.modelValue.includes(i)&&E("update:modelValue",[...g.modelValue,i]),p.value="",d.value=false}return(i,c)=>(u(),m("div",{class:H(["tag-input-wrap",{"is-focused":d.value}]),onClick:B},[(u(true),m(z,null,le(y.modelValue,(A,O)=>(u(),m("span",{key:O,class:"tag-chip"},[t("span",be,L(A),1),t("button",{class:"chip-del",onClick:Y(q=>S(O),["stop"]),tabindex:"-1",title:"移除"},"×",8,ye)]))),128)),G(t("input",{ref_key:"inputEl",ref:k,class:"tag-text-input","onUpdate:modelValue":c[0]||(c[0]=A=>p.value=A),placeholder:y.modelValue.length===0?y.placeholder??"":"",onKeydown:[se(Y(D,["prevent"]),["enter"]),se(n,["backspace"])],onFocus:c[1]||(c[1]=A=>d.value=true),onBlur:V},null,40,ke),[[W,p.value]]),y.modelValue.length>0?(u(),m("button",{key:0,class:"tag-clear-btn",onClick:Y(N,["stop"]),tabindex:"-1",title:"清空"},"×")):M("",true)],2))}}),_e=Q(he,[["__scopeId","data-v-4638740c"]]),$e={class:"cf-editor"},Ve={class:"rows-section"},Ce={key:0,class:"conn-and-wrap"},xe={class:"cf-row"},Ae=["onUpdate:modelValue"],Ie={key:1,class:"bool-toggle"},Te=["checked","onChange"],De={class:"bool-label"},Se=["onUpdate:modelValue","onInput","placeholder"],Oe={class:"row-btns"},Ue=["disabled","onClick"],Ee={key:0,class:"add-section"},Ne={class:"preview-section"},we={class:"preview-code"},Be=ee({name:"ExprEditor",__name:"expr-editor",props:{modelValue:{}},emits:["update:modelValue"],setup(y,{emit:$}){let g=0;const E=()=>String(++g),k=[{value:"guildId",label:"群组 ID(guildId)"},{value:"channelId",label:"频道 ID(channelId)"},{value:"userId",label:"用户 ID(userId)"},{value:"platform",label:"平台(platform)"},{value:"content",label:"消息内容(content)"},{value:"isDirect",label:"私聊(isDirect)"},{value:"type",label:"消息类型(type)"}],p=[...k,{value:"__custom__",label:"自定义字段..."}],d=[{value:"eq",label:"等于"},{value:"ne",label:"不等于"},{value:"in",label:"等于以下各项"},{value:"nin",label:"不等于以下各项"},{value:"includes",label:"包含以下各项"},{value:"notincludes",label:"不包含以下各项"},{value:"regex",label:"正则匹配"},{value:"gt",label:"大于"},{value:"gte",label:"大于等于"},{value:"lt",label:"小于"},{value:"lte",label:"小于等于"},{value:"exists",label:"存在"}],B=[{value:"eq",label:"等于"},{value:"ne",label:"不等于"},{value:"exists",label:"存在"}],D={eq:"eq",ne:"ne",in:"in",nin:"nin",includes:"contains",notincludes:"not-contains",regex:"matches",gt:"gt",gte:"gte",lt:"lt",lte:"lte",exists:"exists"},S=y,N=$,n=w(A(S.modelValue));let V=JSON.stringify(S.modelValue);Z(()=>S.modelValue,e=>{const s=JSON.stringify(e);s!==V&&(V=s,n.value=A(e))},{deep:true});function i(e,s="guildId"){const v=s==="isDirect";return{id:E(),field:s,customField:"",operator:"eq",valueText:v?"false":"",value:v?false:"",connector:e}}function c(e,s){const v=k.some(K=>K.value===e.field),o=v?e.field:"__custom__",h=I(e.operator),_=o==="isDirect"?false:h?[]:"";let U=e.value??_;return h&&(typeof U=="string"?U=U?U.split(/[,,]/).map(K=>K.trim()).filter(Boolean):[]:Array.isArray(U)||(U=[])),{id:E(),field:o,customField:v?"":e.field,operator:e.operator,valueText:Array.isArray(U)||U==null?"":String(U),value:U,connector:s}}function A(e){if(!e)return[i(null)];if(e.type==="compare")return[c(e,null)];if(e.type==="group"){if(e.children.every(s=>s.type==="compare"))return e.children.map((s,v)=>c(s,v===0?null:e.operator));if(e.operator==="or"){const s=[];let v=true;for(const o of e.children)o.type==="compare"?(s.push(c(o,v?null:"or")),v=false):o.type==="group"&&o.operator==="and"&&o.children.forEach((h,_)=>{h.type==="compare"&&(s.push(c(h,v?null:_===0?"or":"and")),v=false)});if(s.length>0)return s}}return[i(null)]}function O(e){return{type:"compare",field:e.field==="__custom__"?(e.customField||"").trim()||"guildId":e.field,operator:e.operator,value:e.operator==="exists"?void 0:e.value}}function q(e){if(e.length===0)return{type:"compare",field:"guildId",operator:"eq",value:""};if(e.length===1)return O(e[0]);const s=[];let v=[e[0]];for(let h=1;h<e.length;h++)e[h].connector==="or"?(s.push(v),v=[e[h]]):v.push(e[h]);s.push(v);const o=s.map(h=>h.length===1?O(h[0]):{type:"group",operator:"and",children:h.map(O)});return o.length===1?o[0]:{type:"group",operator:"or",children:o}}function b(e){if(e.type==="compare"){const s=D[e.operator]||e.operator;let v;return e.value===void 0?v="":Array.isArray(e.value)?v=`{${e.value.map(o=>JSON.stringify(o)).join(" ")}}`:v=JSON.stringify(e.value),`(${e.field} ${s} ${v})`}if(e.type==="group"){const s=e.operator==="and"?" AND ":" OR ";return e.children.map(b).join(s)}return e.type==="not"?`NOT (${b(e.child)})`:""}const f=F(()=>b(q(n.value)));function r(){const e=q(n.value);V=JSON.stringify(e),N("update:modelValue",e)}function J(e){n.value.push(i("and")),r()}function X(e,s){n.value.splice(e+1,0,i(s)),r()}function a(e){n.value.length<=1||(n.value.splice(e,1),e===0&&(n.value[0].connector=null),r())}function l(e){e<=0||(n.value[e].connector=n.value[e].connector==="or"?"and":"or",r())}function C(e){const s=e.trim();if(!s)return"";if(s==="true")return true;if(s==="false")return false;if(s==="null")return null;const v=Number(s);return Number.isFinite(v)?v:e}function I(e){return["in","nin","includes","notincludes"].includes(e)}function R(e){return I(e)?"输入后按 Enter 添加":"比较值"}return(e,s)=>{const v=ne("k-button");return u(),m("div",$e,[t("div",Ve,[(u(true),m(z,null,le(n.value,(o,h)=>(u(),m(z,{key:o.id},[h>0?(u(),m("div",{key:0,class:H(["connector-sep","conn-"+o.connector])},[o.connector==="and"?(u(),m("div",Ce,[s[2]||(s[2]=t("div",{class:"conn-vline"},null,-1)),x(v,{title:"点击切换为或(OR)",onClick:_=>l(h)},{default:T(()=>[...s[1]||(s[1]=[P("且(AND)",-1)])]),_:1},8,["onClick"]),s[3]||(s[3]=t("div",{class:"conn-vline"},null,-1))])):(u(),j(v,{key:1,title:"点击切换为且(AND)",onClick:_=>l(h)},{default:T(()=>[...s[4]||(s[4]=[P("或(OR)",-1)])]),_:1},8,["onClick"]))],2)):M("",true),t("div",xe,[x(oe,{"model-value":o.field,options:p,class:"sel-field","onUpdate:modelValue":_=>{const U=o.field==="isDirect";o.field=_,_==="isDirect"?(o.value=false,o.valueText="false",["eq","ne","exists"].includes(o.operator)||(o.operator="eq")):U&&(o.value=I(o.operator)?[]:"",o.valueText=""),r()}},null,8,["model-value","onUpdate:modelValue"]),o.field==="__custom__"?G((u(),m("input",{key:0,class:"input custom-input","onUpdate:modelValue":_=>o.customField=_,onInput:r,placeholder:"字段路径,如 author.name"},null,40,Ae)),[[W,o.customField]]):M("",true),x(oe,{"model-value":o.operator,options:o.field==="isDirect"?B:d,class:"sel-op","onUpdate:modelValue":_=>{const U=I(o.operator),K=I(_);o.operator=_,K&&!U?(o.value=[],o.valueText=""):!K&&U&&(o.value="",o.valueText=""),r()}},null,8,["model-value","options","onUpdate:modelValue"]),o.field==="isDirect"&&o.operator!=="exists"?(u(),m("label",Ie,[t("input",{type:"checkbox",checked:o.value===true,onChange:_=>{o.value=_.target.checked,o.valueText=String(o.value),r()}},null,40,Te),t("span",De,L(o.value===true?"是(true)":"否(false)"),1)])):o.field!=="isDirect"&&o.operator!=="exists"&&I(o.operator)?(u(),j(_e,{key:2,"model-value":Array.isArray(o.value)?o.value:[],placeholder:R(o.operator),"onUpdate:modelValue":_=>{o.value=_,r()}},null,8,["model-value","placeholder","onUpdate:modelValue"])):o.field!=="isDirect"&&o.operator!=="exists"?G((u(),m("input",{key:3,class:"input val-input","onUpdate:modelValue":_=>o.valueText=_,onInput:()=>{o.value=C(o.valueText),r()},placeholder:R(o.operator)},null,40,Se)),[[W,o.valueText]]):M("",true),t("div",Oe,[x(v,{onClick:_=>X(h,"and")},{default:T(()=>[...s[5]||(s[5]=[P("且(AND)",-1)])]),_:1},8,["onClick"]),h===n.value.length-1?(u(),j(v,{key:0,onClick:_=>X(h,"or")},{default:T(()=>[...s[6]||(s[6]=[P("或(OR)",-1)])]),_:1},8,["onClick"])):M("",true)]),t("button",{class:"del-btn",disabled:n.value.length<=1,onClick:_=>a(h),title:"删除此条件"}," ✕ ",8,Ue)])],64))),128))]),n.value.length===0?(u(),m("div",Ee,[x(v,{onClick:s[0]||(s[0]=o=>J())},{default:T(()=>[...s[7]||(s[7]=[P("+ 添加条件",-1)])]),_:1})])):M("",true),t("div",Ne,[s[8]||(s[8]=t("div",{class:"preview-title"},"表达式预览",-1)),t("code",we,L(f.value||"(空)"),1)])])}}}),Le=Q(Be,[["__scopeId","data-v-8216ad16"]]),Me={class:"plugin-selector"},Fe={class:"label"},Pe={class:"dialog-header"},qe={class:"dialog-body"},Re={class:"toolbar"},Je={class:"checkbox-item select-all"},ze=["checked"],je=["placeholder"],He={class:"plugin-list"},Ke=["value","checked","onChange"],Ge={key:0,class:"empty-state"},We=ee({__name:"plugin-selector",props:{modelValue:{},options:{},mode:{}},emits:["update:modelValue"],setup(y,{emit:$}){const g=y,E=$,k=w(false),p=w(""),d=w([...g.modelValue]),B=F(()=>g.mode==="command"),D=F(()=>B.value?"选择指令":"选择插件实例"),S=F(()=>B.value?"搜索指令...":"搜索插件..."),N=F(()=>B.value?"没有找到匹配的指令":"没有找到匹配的插件"),n=F(()=>{const b=B.value?"指令":"插件",f=B.value?"请选择指令":"请选择插件实例";if(d.value.length===0)return f;if(d.value.length===1){const r=g.options.find(J=>J.key===d.value[0]);return(r==null?void 0:r.label)||`已选择 1 个${b}`}return`已选择 ${d.value.length} 个${b}`}),V=F(()=>{if(!p.value)return g.options;const b=p.value.toLowerCase();return g.options.filter(f=>f.label.toLowerCase().includes(b))}),i=F(()=>V.value.length>0&&V.value.every(b=>d.value.includes(b.key)));function c(b){const f=d.value.indexOf(b);f>-1?d.value.splice(f,1):d.value.push(b)}function A(b){if(b.target.checked)for(const r of V.value)d.value.includes(r.key)||d.value.push(r.key);else d.value=d.value.filter(r=>!V.value.some(J=>J.key===r))}function O(){E("update:modelValue",[...d.value]),k.value=false}function q(){d.value=[...g.modelValue],k.value=false}return Z(()=>g.modelValue,b=>{d.value=[...b]}),Z(k,b=>{b&&(p.value="")}),(b,f)=>(u(),m("div",Me,[t("button",{type:"button",class:"trigger-btn",onClick:f[0]||(f[0]=r=>k.value=true)},[t("span",Fe,L(n.value),1),f[5]||(f[5]=t("span",{class:"arrow"},"▾",-1))]),(u(),j(ae,{to:"body"},[k.value?(u(),m("div",{key:0,class:"dialog-overlay",onClick:f[4]||(f[4]=r=>k.value=false)},[t("div",{class:"dialog-content",onClick:f[3]||(f[3]=Y(()=>{},["stop"]))},[t("div",Pe,[t("h3",null,L(D.value),1),t("button",{class:"close-btn",onClick:f[1]||(f[1]=r=>k.value=false)},"✕")]),t("div",qe,[t("div",Re,[t("label",Je,[t("input",{type:"checkbox",checked:i.value,onChange:A},null,40,ze),f[6]||(f[6]=t("span",null,"全选",-1))]),G(t("input",{"onUpdate:modelValue":f[2]||(f[2]=r=>p.value=r),class:"search-input",placeholder:S.value},null,8,je),[[W,p.value]])]),t("div",He,[(u(true),m(z,null,le(V.value,r=>(u(),m("label",{key:r.key,class:"checkbox-item"},[t("input",{type:"checkbox",value:r.key,checked:d.value.includes(r.key),onChange:J=>c(r.key)},null,40,Ke),t("span",null,L(r.label),1)]))),128)),V.value.length===0?(u(),m("div",Ge,L(N.value),1)):M("",true)])]),t("div",{class:"dialog-footer"},[t("button",{class:"btn btn-cancel",onClick:q},"取消"),t("button",{class:"btn btn-confirm",onClick:O},"确定")])])])):M("",true)]))]))}}),ie=Q(We,[["__scopeId","data-v-f4ad12a5"]]),Qe={class:"fp-layout"},Xe={class:"fp-main"},Ye={class:"editor-header"},Ze={class:"rule-list"},el=["onClick"],ll={class:"top"},tl={class:"name"},nl={class:"meta"},ol={class:"editor-header"},al={class:"actions"},sl={class:"editor-body"},il={class:"editor-grid"},ul={class:"field"},rl={class:"field"},dl={key:0,class:"field"},cl={key:1,class:"field"},vl={class:"field"},pl={class:"field"},fl={class:"field switch"},ml={class:"expr-wrap"},gl={class:"footer-actions"},bl={class:"confirm-dialog"},yl={class:"confirm-actions"},kl=ee({__name:"page",setup(y){const $=ue,g={bypass:"放行",block:"拦截"},E=[{label:"全局",value:"global"},{label:"插件",value:"plugin"},{label:"指令",value:"command"}],k=[{label:"放行(bypass)",value:"bypass"},{label:"拦截(block)",value:"block"}];F(()=>[{label:"请选择插件实例",value:""},...d.value.map(a=>({label:a.label,value:a.key}))]);const p=w([]),d=w([]),B=w([]),D=w(""),S=w(false),N=F(()=>[...p.value].sort((a,l)=>a.priority-l.priority||a.id.localeCompare(l.id))),n=F(()=>N.value.find(a=>a.id===D.value));function V(a){return a.type==="global"?"全局":a.type==="plugin"?Array.isArray(a.value)?a.value.length>0?`插件 (${a.value.length})`:"未指定插件":a.value||"未指定插件":a.type==="command"?Array.isArray(a.value)?a.value.length>0?`指令 (${a.value.length})`:"未指定指令":a.value||"未指定指令":"未知"}Z(()=>{var a;return(a=n.value)==null?void 0:a.target.type},(a,l)=>{a&&l&&a!==l&&n.value&&(n.value.target.value=a==="global"?"":[])});function i(){return{type:"group",operator:"and",children:[{type:"compare",field:"guildId",operator:"eq",value:""}]}}async function c(){var I;const[a,l,C]=await Promise.all([$("filter-pro/list"),$("filter-pro/targets"),$("filter-pro/commands")]);d.value=l,B.value=C,p.value=a,(!D.value||!p.value.some(R=>R.id===D.value))&&(D.value=((I=N.value[0])==null?void 0:I.id)||""),te.success("刷新成功")}async function A(){var a,l;await $("filter-pro/create",{name:"new-rule",enabled:true,priority:(((a=N.value.at(-1))==null?void 0:a.priority)??-1)+1,action:"block",target:{type:"global",value:""},condition:i(),response:""}),await c(),D.value=((l=N.value.at(-1))==null?void 0:l.id)||D.value,te.success("创建成功")}function O(a){const l=a.target,C=Number(l.value);(C<1||!Number.isInteger(C))&&(l.value=String(Math.max(1,Math.floor(Math.abs(C))||1)),n.value&&(n.value.priority=Number(l.value)))}async function q(a){a.enabled=!a.enabled,await $("filter-pro/toggle",{id:a.id,enabled:a.enabled})}async function b(a){let l;a.target.type==="global"?l={type:"global",value:""}:a.target.type==="plugin"?l={type:"plugin",value:a.target.value||[]}:l={type:"command",value:a.target.value||[]},await $("filter-pro/update",{id:a.id,name:a.name,enabled:a.enabled,priority:a.priority,action:a.action,target:l,condition:a.condition,response:a.response||""}),await c(),te.success("保存成功")}async function f(){n.value&&(S.value=true)}async function r(){S.value=false,n.value&&await J(n.value.id)}async function J(a){await $("filter-pro/delete",a),await c(),te.success("删除成功")}async function X(a,l){const C=N.value,I=C.findIndex(s=>s.id===a);if(I<0)return;const R=I+l;if(R<0||R>=C.length)return;const e=[...C];[e[I],e[R]]=[e[R],e[I]],await $("filter-pro/reorder",e.map(s=>s.id)),await c()}return c(),(a,l)=>{const C=ne("k-button"),I=ne("k-card"),R=ne("k-layout");return u(),m(z,null,[x(R,null,{default:T(()=>[t("div",Qe,[t("div",Xe,[x(I,{class:"panel list"},{header:T(()=>[t("div",Ye,[l[14]||(l[14]=t("div",{class:"panel-title"},"规则列表",-1)),x(C,{onClick:A},{default:T(()=>[...l[13]||(l[13]=[P("新建规则",-1)])]),_:1})])]),default:T(()=>[t("div",Ze,[(u(true),m(z,null,le(N.value,e=>(u(),m("button",{key:e.id,class:H(["rule-item",{active:D.value===e.id}]),onClick:s=>D.value=e.id},[t("div",ll,[t("span",tl,L(e.name||"未命名规则"),1),t("span",{class:H(["badge",e.action])},L(g[e.action]),3)]),t("div",nl,[t("span",null,"#"+L(e.priority),1),t("span",null,L(V(e.target)),1),t("span",null,L(e.enabled?"启用":"停用"),1)])],10,el))),128))])]),_:1}),n.value?(u(),j(I,{key:0,class:"panel editor"},{header:T(()=>[t("div",ol,[l[18]||(l[18]=t("div",{class:"panel-title"},"规则编辑",-1)),t("div",al,[x(C,{onClick:l[0]||(l[0]=e=>n.value&&b(n.value)),disabled:!n.value},{default:T(()=>[...l[15]||(l[15]=[P("保存",-1)])]),_:1},8,["disabled"]),x(C,{onClick:f,disabled:!n.value},{default:T(()=>[...l[16]||(l[16]=[P("删除",-1)])]),_:1},8,["disabled"]),x(C,{onClick:c},{default:T(()=>[...l[17]||(l[17]=[P("刷新",-1)])]),_:1})])])]),default:T(()=>[t("div",sl,[t("div",il,[t("label",ul,[l[19]||(l[19]=t("span",null,"规则名",-1)),G(t("input",{class:"input","onUpdate:modelValue":l[1]||(l[1]=e=>n.value.name=e),placeholder:"输入规则名"},null,512),[[W,n.value.name]])]),t("label",rl,[l[20]||(l[20]=t("span",null,"目标",-1)),x(oe,{modelValue:n.value.target.type,"onUpdate:modelValue":l[2]||(l[2]=e=>n.value.target.type=e),options:E},null,8,["modelValue"])]),n.value.target.type==="plugin"?(u(),m("label",dl,[l[21]||(l[21]=t("span",null,"插件实例",-1)),x(ie,{mode:"plugin","model-value":Array.isArray(n.value.target.value)?n.value.target.value:n.value.target.value?[n.value.target.value]:[],options:d.value,"onUpdate:modelValue":l[3]||(l[3]=e=>n.value.target.value=e)},null,8,["model-value","options"])])):M("",true),n.value.target.type==="command"?(u(),m("label",cl,[l[22]||(l[22]=t("span",null,"作用指令",-1)),x(ie,{mode:"command","model-value":Array.isArray(n.value.target.value)?n.value.target.value:n.value.target.value?[n.value.target.value]:[],options:B.value.map(e=>({key:e.name,name:e.name,ident:"",label:e.label})),"onUpdate:modelValue":l[4]||(l[4]=e=>n.value.target.value=e)},null,8,["model-value","options"])])):M("",true),t("label",vl,[l[23]||(l[23]=t("span",null,"动作",-1)),x(oe,{modelValue:n.value.action,"onUpdate:modelValue":l[5]||(l[5]=e=>n.value.action=e),options:k},null,8,["modelValue"])]),t("label",pl,[l[24]||(l[24]=t("span",null,"优先级",-1)),G(t("input",{class:"input",type:"number",min:"1",step:"1","onUpdate:modelValue":l[6]||(l[6]=e=>n.value.priority=e),onInput:O},null,544),[[W,n.value.priority,void 0,{number:true}]])]),t("label",fl,[l[26]||(l[26]=t("span",null,"启用状态",-1)),t("div",{class:H(["toggle-switch",{active:n.value.enabled}]),onClick:l[7]||(l[7]=e=>q(n.value))},[...l[25]||(l[25]=[t("div",{class:"toggle-thumb"},null,-1)])],2)])]),t("div",ml,[l[27]||(l[27]=t("div",{class:"panel-title small"},"条件表达式",-1)),x(Le,{modelValue:n.value.condition,"onUpdate:modelValue":l[8]||(l[8]=e=>n.value.condition=e)},null,8,["modelValue"])]),t("div",gl,[x(C,{onClick:l[9]||(l[9]=e=>X(n.value.id,-1))},{default:T(()=>[...l[28]||(l[28]=[P("上移",-1)])]),_:1}),x(C,{onClick:l[10]||(l[10]=e=>X(n.value.id,1))},{default:T(()=>[...l[29]||(l[29]=[P("下移",-1)])]),_:1})])])]),_:1})):M("",true)])])]),_:1}),(u(),j(ae,{to:"body"},[S.value?(u(),m("div",{key:0,class:"confirm-overlay",onClick:l[12]||(l[12]=Y(e=>S.value=false,["self"]))},[t("div",bl,[l[31]||(l[31]=t("div",{class:"confirm-title"},"删除规则",-1)),l[32]||(l[32]=t("div",{class:"confirm-body"},"确定要删除这条规则吗?此操作不可撤销。",-1)),t("div",yl,[x(C,{onClick:l[11]||(l[11]=e=>S.value=false)},{default:T(()=>[...l[30]||(l[30]=[P("取消",-1)])]),_:1}),t("button",{class:"confirm-danger-btn",onClick:r},"确认删除")])])])):M("",true)]))],64)}}}),hl=Q(kl,[["__scopeId","data-v-9422f484"]]),_l={},$l={class:"k-icon",viewBox:"0 0 512 512",xmlns:"http://www.w3.org/2000/svg"};function Vl(y,$){return u(),m("svg",$l,[...$[0]||($[0]=[t("path",{fill:"none",stroke:"currentColor","stroke-width":"32","stroke-linejoin":"round",d:"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z"},null,-1)])])}const Cl=Q(_l,[["render",Vl]]),Il=y=>{re.register("activity:filter-pro",Cl),y.page({name:"规则集",path:"/filter-pro",icon:"activity:filter-pro",authority:4,order:320,component:hl})};export{Il as default};
|
package/dist/style.css
CHANGED
|
@@ -1,469 +1 @@
|
|
|
1
|
-
|
|
2
|
-
.fp-select[data-v-4a262c3e] {
|
|
3
|
-
position: relative;
|
|
4
|
-
min-width: 140px;
|
|
5
|
-
}
|
|
6
|
-
.trigger[data-v-4a262c3e] {
|
|
7
|
-
width: 100%;
|
|
8
|
-
height: 35px;
|
|
9
|
-
box-sizing: border-box;
|
|
10
|
-
display: flex;
|
|
11
|
-
align-items: center;
|
|
12
|
-
justify-content: space-between;
|
|
13
|
-
gap: 8px;
|
|
14
|
-
color: var(--k-text-normal, inherit);
|
|
15
|
-
background: var(--k-input-bg, transparent);
|
|
16
|
-
border: 1px solid var(--k-card-border, rgba(127, 127, 127, 0.35));
|
|
17
|
-
border-radius: 6px;
|
|
18
|
-
padding: 6px 10px;
|
|
19
|
-
cursor: pointer;
|
|
20
|
-
}
|
|
21
|
-
.trigger.disabled[data-v-4a262c3e] {
|
|
22
|
-
opacity: 0.6;
|
|
23
|
-
cursor: not-allowed;
|
|
24
|
-
}
|
|
25
|
-
.label[data-v-4a262c3e] {
|
|
26
|
-
overflow: hidden;
|
|
27
|
-
text-overflow: ellipsis;
|
|
28
|
-
white-space: nowrap;
|
|
29
|
-
}
|
|
30
|
-
.menu[data-v-4a262c3e] {
|
|
31
|
-
position: fixed;
|
|
32
|
-
z-index: 9999;
|
|
33
|
-
background: var(--k-card-bg, #1e1e1e);
|
|
34
|
-
border: 1px solid var(--k-card-border, rgba(127, 127, 127, 0.35));
|
|
35
|
-
border-radius: 8px;
|
|
36
|
-
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
|
|
37
|
-
max-height: 240px;
|
|
38
|
-
overflow: auto;
|
|
39
|
-
}
|
|
40
|
-
.item[data-v-4a262c3e] {
|
|
41
|
-
display: block;
|
|
42
|
-
width: 100%;
|
|
43
|
-
border: none;
|
|
44
|
-
background: transparent;
|
|
45
|
-
color: var(--k-text-normal, inherit);
|
|
46
|
-
text-align: left;
|
|
47
|
-
padding: 8px 10px;
|
|
48
|
-
cursor: pointer;
|
|
49
|
-
}
|
|
50
|
-
.item[data-v-4a262c3e]:hover,
|
|
51
|
-
.item.active[data-v-4a262c3e] {
|
|
52
|
-
background: color-mix(in srgb, var(--k-color-primary, #4f7cff) 18%, transparent);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
.cf-editor[data-v-40533e84] {
|
|
57
|
-
display: flex;
|
|
58
|
-
flex-direction: column;
|
|
59
|
-
gap: 10px;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/* ── 连接符 ── */
|
|
63
|
-
.connector-sep[data-v-40533e84] {
|
|
64
|
-
display: flex;
|
|
65
|
-
align-items: center;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/* OR:按钮 + 上下内廝 */
|
|
69
|
-
.connector-sep.conn-or[data-v-40533e84] {
|
|
70
|
-
padding: 16px 0;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/* AND:无额外内廝,由线提供等高间距 */
|
|
74
|
-
.connector-sep.conn-and[data-v-40533e84] {
|
|
75
|
-
padding: 0;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/* AND 内部:线 + 按钮 + 线,列居中 */
|
|
79
|
-
.conn-and-wrap[data-v-40533e84] {
|
|
80
|
-
display: inline-flex;
|
|
81
|
-
flex-direction: column;
|
|
82
|
-
align-items: center;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/* 上下细线,高度与 OR 内廝相同,颜色和边框一致 */
|
|
86
|
-
.conn-vline[data-v-40533e84] {
|
|
87
|
-
width: 1px;
|
|
88
|
-
height: 12px;
|
|
89
|
-
background: var(--k-card-border, rgba(127, 127, 127, 0.35));
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/* ── 条件行 ── */
|
|
93
|
-
.cf-row[data-v-40533e84] {
|
|
94
|
-
display: flex;
|
|
95
|
-
align-items: center;
|
|
96
|
-
gap: 8px;
|
|
97
|
-
flex-wrap: wrap;
|
|
98
|
-
}
|
|
99
|
-
.sel-field[data-v-40533e84] {
|
|
100
|
-
min-width: 168px;
|
|
101
|
-
}
|
|
102
|
-
.sel-op[data-v-40533e84] {
|
|
103
|
-
min-width: 110px;
|
|
104
|
-
}
|
|
105
|
-
.val-input[data-v-40533e84],
|
|
106
|
-
.custom-input[data-v-40533e84] {
|
|
107
|
-
flex: 1;
|
|
108
|
-
min-width: 120px;
|
|
109
|
-
height: 35px;
|
|
110
|
-
box-sizing: border-box;
|
|
111
|
-
color: var(--k-text-normal, inherit);
|
|
112
|
-
background: var(--k-input-bg, transparent);
|
|
113
|
-
border: 1px solid var(--k-card-border, rgba(127, 127, 127, 0.35));
|
|
114
|
-
border-radius: 6px;
|
|
115
|
-
padding: 5px 10px;
|
|
116
|
-
font-size: 14px;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/* ── 布尔开关 ── */
|
|
120
|
-
.bool-toggle[data-v-40533e84] {
|
|
121
|
-
display: flex;
|
|
122
|
-
align-items: center;
|
|
123
|
-
gap: 8px;
|
|
124
|
-
cursor: pointer;
|
|
125
|
-
flex: 1;
|
|
126
|
-
min-width: 120px;
|
|
127
|
-
}
|
|
128
|
-
.bool-toggle input[type="checkbox"][data-v-40533e84] {
|
|
129
|
-
appearance: none;
|
|
130
|
-
-webkit-appearance: none;
|
|
131
|
-
width: 36px;
|
|
132
|
-
height: 20px;
|
|
133
|
-
border-radius: 999px;
|
|
134
|
-
background: var(--k-card-border, rgba(127, 127, 127, 0.4));
|
|
135
|
-
position: relative;
|
|
136
|
-
cursor: pointer;
|
|
137
|
-
transition: background 0.2s;
|
|
138
|
-
flex-shrink: 0;
|
|
139
|
-
}
|
|
140
|
-
.bool-toggle input[type="checkbox"][data-v-40533e84]::after {
|
|
141
|
-
content: "";
|
|
142
|
-
position: absolute;
|
|
143
|
-
width: 14px;
|
|
144
|
-
height: 14px;
|
|
145
|
-
border-radius: 50%;
|
|
146
|
-
background: #fff;
|
|
147
|
-
top: 3px;
|
|
148
|
-
left: 3px;
|
|
149
|
-
transition: left 0.2s;
|
|
150
|
-
}
|
|
151
|
-
.bool-toggle input[type="checkbox"][data-v-40533e84]:checked {
|
|
152
|
-
background: var(--k-color-primary, #4f7cff);
|
|
153
|
-
}
|
|
154
|
-
.bool-toggle input[type="checkbox"][data-v-40533e84]:checked::after {
|
|
155
|
-
left: 19px;
|
|
156
|
-
}
|
|
157
|
-
.bool-label[data-v-40533e84] {
|
|
158
|
-
font-size: 13px;
|
|
159
|
-
color: var(--k-text-normal, inherit);
|
|
160
|
-
user-select: none;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/* ── 行内操作按钮(And / Or) ── */
|
|
164
|
-
.row-btns[data-v-40533e84] {
|
|
165
|
-
display: flex;
|
|
166
|
-
gap: 4px;
|
|
167
|
-
flex-shrink: 0;
|
|
168
|
-
margin-left: auto;
|
|
169
|
-
}
|
|
170
|
-
.del-btn[data-v-40533e84] {
|
|
171
|
-
flex-shrink: 0;
|
|
172
|
-
width: 35px;
|
|
173
|
-
height: 35px;
|
|
174
|
-
box-sizing: border-box;
|
|
175
|
-
display: flex;
|
|
176
|
-
align-items: center;
|
|
177
|
-
justify-content: center;
|
|
178
|
-
border: none;
|
|
179
|
-
border-radius: 6px;
|
|
180
|
-
background: transparent;
|
|
181
|
-
color: var(--k-text-secondary, #888);
|
|
182
|
-
cursor: pointer;
|
|
183
|
-
font-size: 14px;
|
|
184
|
-
transition:
|
|
185
|
-
color 0.15s,
|
|
186
|
-
background 0.15s;
|
|
187
|
-
}
|
|
188
|
-
.del-btn[data-v-40533e84]:hover {
|
|
189
|
-
color: #e74c3c;
|
|
190
|
-
background: color-mix(in srgb, #e74c3c 15%, transparent);
|
|
191
|
-
}
|
|
192
|
-
.del-btn[data-v-40533e84]:disabled {
|
|
193
|
-
opacity: 0.3;
|
|
194
|
-
cursor: default;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/* ── 添加按钮 ── */
|
|
198
|
-
.add-section[data-v-40533e84] {
|
|
199
|
-
display: flex;
|
|
200
|
-
gap: 8px;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/* ── 表达式预览 ── */
|
|
204
|
-
.preview-section[data-v-40533e84] {
|
|
205
|
-
border-top: 1px solid var(--k-card-border, rgba(127, 127, 127, 0.2));
|
|
206
|
-
padding-top: 10px;
|
|
207
|
-
display: flex;
|
|
208
|
-
flex-direction: column;
|
|
209
|
-
gap: 6px;
|
|
210
|
-
}
|
|
211
|
-
.preview-title[data-v-40533e84] {
|
|
212
|
-
font-size: 11px;
|
|
213
|
-
font-weight: 700;
|
|
214
|
-
color: var(--k-text-secondary, #888);
|
|
215
|
-
text-transform: uppercase;
|
|
216
|
-
letter-spacing: 0.06em;
|
|
217
|
-
}
|
|
218
|
-
.preview-code[data-v-40533e84] {
|
|
219
|
-
display: block;
|
|
220
|
-
font-family: "Consolas", "Monaco", "Fira Code", monospace;
|
|
221
|
-
font-size: 13px;
|
|
222
|
-
background: color-mix(in srgb, #000 35%, transparent);
|
|
223
|
-
padding: 10px 14px;
|
|
224
|
-
border-radius: 6px;
|
|
225
|
-
white-space: pre-wrap;
|
|
226
|
-
word-break: break-all;
|
|
227
|
-
color: var(--k-text-normal, inherit);
|
|
228
|
-
line-height: 1.6;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
.fp-layout[data-v-0e916acc] {
|
|
233
|
-
position: absolute;
|
|
234
|
-
top: 0;
|
|
235
|
-
left: 0;
|
|
236
|
-
right: 0;
|
|
237
|
-
bottom: 0;
|
|
238
|
-
display: flex;
|
|
239
|
-
flex-direction: column;
|
|
240
|
-
padding: 12px;
|
|
241
|
-
color: var(--k-text-normal, inherit);
|
|
242
|
-
box-sizing: border-box;
|
|
243
|
-
overflow: hidden;
|
|
244
|
-
}
|
|
245
|
-
.editor-header[data-v-0e916acc] {
|
|
246
|
-
display: flex;
|
|
247
|
-
justify-content: space-between;
|
|
248
|
-
align-items: center;
|
|
249
|
-
gap: 12px;
|
|
250
|
-
}
|
|
251
|
-
.actions[data-v-0e916acc] {
|
|
252
|
-
display: flex;
|
|
253
|
-
gap: 8px;
|
|
254
|
-
}
|
|
255
|
-
.fp-main[data-v-0e916acc] {
|
|
256
|
-
display: grid;
|
|
257
|
-
grid-template-columns: 320px 1fr;
|
|
258
|
-
gap: 12px;
|
|
259
|
-
min-height: 0;
|
|
260
|
-
flex: 1;
|
|
261
|
-
overflow: hidden;
|
|
262
|
-
}
|
|
263
|
-
.list[data-v-0e916acc],
|
|
264
|
-
.editor[data-v-0e916acc] {
|
|
265
|
-
height: 100%;
|
|
266
|
-
min-height: 0;
|
|
267
|
-
display: flex;
|
|
268
|
-
flex-direction: column;
|
|
269
|
-
overflow: hidden;
|
|
270
|
-
}
|
|
271
|
-
.list[data-v-0e916acc] .k-card-body,
|
|
272
|
-
.editor[data-v-0e916acc] .k-card-body {
|
|
273
|
-
display: flex;
|
|
274
|
-
flex-direction: column;
|
|
275
|
-
flex: 1;
|
|
276
|
-
min-height: 0;
|
|
277
|
-
overflow: auto;
|
|
278
|
-
}
|
|
279
|
-
.panel[data-v-0e916acc] {
|
|
280
|
-
background: var(--k-card-bg, transparent);
|
|
281
|
-
border: 1px solid var(--k-card-border, rgba(127, 127, 127, 0.35));
|
|
282
|
-
border-radius: 10px;
|
|
283
|
-
}
|
|
284
|
-
.panel-title[data-v-0e916acc] {
|
|
285
|
-
font-weight: 600;
|
|
286
|
-
}
|
|
287
|
-
.panel-title.small[data-v-0e916acc] {
|
|
288
|
-
margin-bottom: 8px;
|
|
289
|
-
}
|
|
290
|
-
.rule-list[data-v-0e916acc] {
|
|
291
|
-
display: flex;
|
|
292
|
-
flex-direction: column;
|
|
293
|
-
gap: 8px;
|
|
294
|
-
}
|
|
295
|
-
.editor-body[data-v-0e916acc] {
|
|
296
|
-
display: flex;
|
|
297
|
-
flex-direction: column;
|
|
298
|
-
}
|
|
299
|
-
.rule-item[data-v-0e916acc] {
|
|
300
|
-
width: 100%;
|
|
301
|
-
border: 1px solid var(--k-card-border, rgba(127, 127, 127, 0.35));
|
|
302
|
-
background: var(--k-input-bg, transparent);
|
|
303
|
-
color: var(--k-text-normal, inherit);
|
|
304
|
-
border-radius: 8px;
|
|
305
|
-
padding: 8px;
|
|
306
|
-
text-align: left;
|
|
307
|
-
cursor: pointer;
|
|
308
|
-
}
|
|
309
|
-
.rule-item.active[data-v-0e916acc] {
|
|
310
|
-
border-color: var(--k-color-primary, #4f7cff);
|
|
311
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--k-color-primary, #4f7cff) 20%, transparent);
|
|
312
|
-
}
|
|
313
|
-
.rule-item .top[data-v-0e916acc] {
|
|
314
|
-
display: flex;
|
|
315
|
-
align-items: center;
|
|
316
|
-
justify-content: space-between;
|
|
317
|
-
}
|
|
318
|
-
.rule-item .name[data-v-0e916acc] {
|
|
319
|
-
font-weight: 600;
|
|
320
|
-
}
|
|
321
|
-
.rule-item .meta[data-v-0e916acc] {
|
|
322
|
-
margin-top: 4px;
|
|
323
|
-
display: flex;
|
|
324
|
-
gap: 8px;
|
|
325
|
-
flex-wrap: wrap;
|
|
326
|
-
color: var(--k-text-secondary, #888);
|
|
327
|
-
font-size: 12px;
|
|
328
|
-
}
|
|
329
|
-
.badge[data-v-0e916acc] {
|
|
330
|
-
border-radius: 999px;
|
|
331
|
-
padding: 2px 8px;
|
|
332
|
-
font-size: 12px;
|
|
333
|
-
}
|
|
334
|
-
.badge.bypass[data-v-0e916acc] {
|
|
335
|
-
background: color-mix(in srgb, #1abc9c 20%, transparent);
|
|
336
|
-
}
|
|
337
|
-
.badge.block[data-v-0e916acc] {
|
|
338
|
-
background: color-mix(in srgb, #e74c3c 20%, transparent);
|
|
339
|
-
}
|
|
340
|
-
.editor-grid[data-v-0e916acc] {
|
|
341
|
-
display: grid;
|
|
342
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
343
|
-
gap: 10px;
|
|
344
|
-
margin-bottom: 12px;
|
|
345
|
-
}
|
|
346
|
-
.field[data-v-0e916acc] {
|
|
347
|
-
display: flex;
|
|
348
|
-
flex-direction: column;
|
|
349
|
-
gap: 6px;
|
|
350
|
-
}
|
|
351
|
-
.field.switch[data-v-0e916acc] {
|
|
352
|
-
justify-content: flex-end;
|
|
353
|
-
}
|
|
354
|
-
.toggle-switch[data-v-0e916acc] {
|
|
355
|
-
position: relative;
|
|
356
|
-
width: 44px;
|
|
357
|
-
height: 24px;
|
|
358
|
-
border-radius: 12px;
|
|
359
|
-
background: var(--k-card-border, rgba(127, 127, 127, 0.4));
|
|
360
|
-
cursor: pointer;
|
|
361
|
-
transition: background 0.25s;
|
|
362
|
-
flex-shrink: 0;
|
|
363
|
-
}
|
|
364
|
-
.toggle-switch.active[data-v-0e916acc] {
|
|
365
|
-
background: var(--k-color-active, #5865f2);
|
|
366
|
-
}
|
|
367
|
-
.toggle-thumb[data-v-0e916acc] {
|
|
368
|
-
position: absolute;
|
|
369
|
-
top: 3px;
|
|
370
|
-
left: 3px;
|
|
371
|
-
width: 18px;
|
|
372
|
-
height: 18px;
|
|
373
|
-
border-radius: 50%;
|
|
374
|
-
background: #fff;
|
|
375
|
-
transition: transform 0.25s;
|
|
376
|
-
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
|
|
377
|
-
}
|
|
378
|
-
.toggle-switch.active .toggle-thumb[data-v-0e916acc] {
|
|
379
|
-
transform: translateX(20px);
|
|
380
|
-
}
|
|
381
|
-
.input[data-v-0e916acc] {
|
|
382
|
-
width: 100%;
|
|
383
|
-
min-width: 0;
|
|
384
|
-
height: 35px;
|
|
385
|
-
box-sizing: border-box;
|
|
386
|
-
color: var(--k-text-normal, inherit);
|
|
387
|
-
background: var(--k-input-bg, transparent);
|
|
388
|
-
border: 1px solid var(--k-card-border, rgba(127, 127, 127, 0.35));
|
|
389
|
-
border-radius: 6px;
|
|
390
|
-
padding: 6px 10px;
|
|
391
|
-
}
|
|
392
|
-
.expr-wrap[data-v-0e916acc] {
|
|
393
|
-
margin: 8px 0 12px;
|
|
394
|
-
}
|
|
395
|
-
.footer-actions[data-v-0e916acc] {
|
|
396
|
-
display: flex;
|
|
397
|
-
gap: 8px;
|
|
398
|
-
flex-wrap: wrap;
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
/* ── 删除确认框 ── */
|
|
402
|
-
.confirm-overlay[data-v-0e916acc] {
|
|
403
|
-
position: fixed;
|
|
404
|
-
inset: 0;
|
|
405
|
-
z-index: 10000;
|
|
406
|
-
background: rgba(0, 0, 0, 0.55);
|
|
407
|
-
display: flex;
|
|
408
|
-
align-items: center;
|
|
409
|
-
justify-content: center;
|
|
410
|
-
}
|
|
411
|
-
.confirm-dialog[data-v-0e916acc] {
|
|
412
|
-
background: var(--k-card-bg, #1e1e1e);
|
|
413
|
-
border: 1px solid var(--k-card-border, rgba(127, 127, 127, 0.35));
|
|
414
|
-
border-radius: 12px;
|
|
415
|
-
padding: 24px 28px;
|
|
416
|
-
min-width: 320px;
|
|
417
|
-
max-width: 480px;
|
|
418
|
-
display: flex;
|
|
419
|
-
flex-direction: column;
|
|
420
|
-
gap: 12px;
|
|
421
|
-
box-shadow: 0 16px 48px rgba(0, 0, 0, 0.4);
|
|
422
|
-
}
|
|
423
|
-
.confirm-title[data-v-0e916acc] {
|
|
424
|
-
font-size: 16px;
|
|
425
|
-
font-weight: 700;
|
|
426
|
-
color: var(--k-text-normal, inherit);
|
|
427
|
-
}
|
|
428
|
-
.confirm-body[data-v-0e916acc] {
|
|
429
|
-
font-size: 14px;
|
|
430
|
-
color: var(--k-text-secondary, #aaa);
|
|
431
|
-
line-height: 1.6;
|
|
432
|
-
}
|
|
433
|
-
.confirm-actions[data-v-0e916acc] {
|
|
434
|
-
display: flex;
|
|
435
|
-
justify-content: flex-end;
|
|
436
|
-
gap: 8px;
|
|
437
|
-
margin-top: 4px;
|
|
438
|
-
}
|
|
439
|
-
.confirm-danger-btn[data-v-0e916acc] {
|
|
440
|
-
height: 35px;
|
|
441
|
-
box-sizing: border-box;
|
|
442
|
-
padding: 0 16px;
|
|
443
|
-
border-radius: 6px;
|
|
444
|
-
border: none;
|
|
445
|
-
background: #e74c3c;
|
|
446
|
-
color: #fff;
|
|
447
|
-
font-size: 14px;
|
|
448
|
-
font-weight: 600;
|
|
449
|
-
cursor: pointer;
|
|
450
|
-
transition: opacity 0.15s;
|
|
451
|
-
}
|
|
452
|
-
.confirm-danger-btn[data-v-0e916acc]:hover {
|
|
453
|
-
opacity: 0.85;
|
|
454
|
-
}
|
|
455
|
-
@media (max-width: 980px) {
|
|
456
|
-
.fp-main[data-v-0e916acc] {
|
|
457
|
-
grid-template-columns: 1fr;
|
|
458
|
-
}
|
|
459
|
-
.editor-grid[data-v-0e916acc] {
|
|
460
|
-
grid-template-columns: 1fr;
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
.k-button {
|
|
466
|
-
height: 35px !important;
|
|
467
|
-
box-sizing: border-box !important;
|
|
468
|
-
}
|
|
469
|
-
|
|
1
|
+
.fp-select[data-v-689c822e]{position:relative;min-width:140px}.trigger[data-v-689c822e]{width:100%;height:35px;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--k-text-normal, inherit);background:var(--k-input-bg, transparent);border:1px solid var(--k-card-border, rgba(127, 127, 127, .35));border-radius:6px;padding:6px 10px;cursor:pointer}.trigger.disabled[data-v-689c822e]{opacity:.6;cursor:not-allowed}.label[data-v-689c822e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu[data-v-689c822e]{position:fixed;z-index:9999;background:var(--k-card-bg, #1e1e1e);border:1px solid var(--k-card-border, rgba(127, 127, 127, .35));border-radius:8px;box-shadow:0 8px 24px #0003;max-height:240px;overflow:auto}.item[data-v-689c822e]{display:block;width:100%;border:none;background:transparent;color:var(--k-text-normal, inherit);text-align:left;padding:8px 10px;cursor:pointer}.item[data-v-689c822e]:hover,.item.active[data-v-689c822e]{background:color-mix(in srgb,var(--k-color-primary, #4f7cff) 18%,transparent)}.tag-input-wrap[data-v-4638740c]{display:flex;flex-wrap:wrap;align-items:center;gap:4px;flex:1;min-width:160px;min-height:35px;box-sizing:border-box;padding:4px 8px;background:var(--k-input-bg, transparent);border:1px solid var(--k-card-border, rgba(127, 127, 127, .35));border-radius:6px;cursor:text;transition:border-color .15s}.tag-input-wrap.is-focused[data-v-4638740c]{border-color:var(--k-color-primary, #4f7cff)}.tag-chip[data-v-4638740c]{display:inline-flex;align-items:center;gap:2px;background:color-mix(in srgb,var(--k-color-primary, #4f7cff) 15%,transparent);border:1px solid color-mix(in srgb,var(--k-color-primary, #4f7cff) 50%,transparent);border-radius:4px;padding:1px 4px 1px 8px;font-size:13px;color:var(--k-text-normal, inherit);white-space:nowrap;line-height:1.6}.chip-text[data-v-4638740c]{line-height:1.4}.chip-del[data-v-4638740c]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:none;background:none;color:var(--k-text-secondary, #888);cursor:pointer;padding:0;font-size:15px;border-radius:3px;line-height:1;flex-shrink:0}.chip-del[data-v-4638740c]:hover{background:color-mix(in srgb,#e74c3c 20%,transparent);color:#e74c3c}.tag-text-input[data-v-4638740c]{flex:1;min-width:80px;border:none;outline:none;background:transparent;color:var(--k-text-normal, inherit);font-size:14px;padding:0;height:22px}.tag-text-input[data-v-4638740c]::placeholder{color:var(--k-text-secondary, rgba(127, 127, 127, .6))}.tag-clear-btn[data-v-4638740c]{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:none;background:none;color:var(--k-text-secondary, #888);cursor:pointer;padding:0;font-size:16px;border-radius:50%;margin-left:2px;flex-shrink:0}.tag-clear-btn[data-v-4638740c]:hover{background:color-mix(in srgb,currentColor 15%,transparent)}.cf-editor[data-v-8216ad16]{display:flex;flex-direction:column;gap:10px}.connector-sep[data-v-8216ad16]{display:flex;align-items:center}.connector-sep.conn-or[data-v-8216ad16]{padding:16px 0}.connector-sep.conn-and[data-v-8216ad16]{padding:0}.conn-and-wrap[data-v-8216ad16]{display:inline-flex;flex-direction:column;align-items:center}.conn-vline[data-v-8216ad16]{width:1px;height:12px;background:var(--k-card-border, rgba(127, 127, 127, .35))}.cf-row[data-v-8216ad16]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sel-field[data-v-8216ad16]{min-width:168px}.sel-op[data-v-8216ad16]{min-width:110px}.val-input[data-v-8216ad16],.custom-input[data-v-8216ad16]{flex:1;min-width:120px;height:35px;box-sizing:border-box;color:var(--k-text-normal, inherit);background:var(--k-input-bg, transparent);border:1px solid var(--k-card-border, rgba(127, 127, 127, .35));border-radius:6px;padding:5px 10px;font-size:14px}.bool-toggle[data-v-8216ad16]{display:flex;align-items:center;gap:8px;cursor:pointer;flex:1;min-width:120px}.bool-toggle input[type=checkbox][data-v-8216ad16]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:36px;height:20px;border-radius:999px;background:var(--k-card-border, rgba(127, 127, 127, .4));position:relative;cursor:pointer;transition:background .2s;flex-shrink:0}.bool-toggle input[type=checkbox][data-v-8216ad16]:after{content:"";position:absolute;width:14px;height:14px;border-radius:50%;background:#fff;top:3px;left:3px;transition:left .2s}.bool-toggle input[type=checkbox][data-v-8216ad16]:checked{background:var(--k-color-primary, #4f7cff)}.bool-toggle input[type=checkbox][data-v-8216ad16]:checked:after{left:19px}.bool-label[data-v-8216ad16]{font-size:13px;color:var(--k-text-normal, inherit);-webkit-user-select:none;user-select:none}.row-btns[data-v-8216ad16]{display:flex;gap:4px;flex-shrink:0;margin-left:auto}.del-btn[data-v-8216ad16]{flex-shrink:0;width:35px;height:35px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;border:none;border-radius:6px;background:transparent;color:var(--k-text-secondary, #888);cursor:pointer;font-size:14px;transition:color .15s,background .15s}.del-btn[data-v-8216ad16]:hover{color:#e74c3c;background:color-mix(in srgb,#e74c3c 15%,transparent)}.del-btn[data-v-8216ad16]:disabled{opacity:.3;cursor:default}.add-section[data-v-8216ad16]{display:flex;gap:8px}.preview-section[data-v-8216ad16]{border-top:1px solid var(--k-card-border, rgba(127, 127, 127, .2));padding-top:10px;display:flex;flex-direction:column;gap:6px}.preview-title[data-v-8216ad16]{font-size:11px;font-weight:700;color:var(--k-text-secondary, #888);text-transform:uppercase;letter-spacing:.06em}.preview-code[data-v-8216ad16]{display:block;font-family:Consolas,Monaco,Fira Code,monospace;font-size:13px;background:color-mix(in srgb,#000 35%,transparent);padding:10px 14px;border-radius:6px;white-space:pre-wrap;word-break:break-all;color:var(--k-text-normal, inherit);line-height:1.6}.plugin-selector[data-v-f4ad12a5]{position:relative;min-width:140px}.trigger-btn[data-v-f4ad12a5]{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--k-text-normal, inherit);background:var(--k-input-bg, transparent);border:1px solid var(--k-card-border, rgba(127, 127, 127, .35));border-radius:6px;padding:6px 10px;cursor:pointer;transition:border-color .2s}.trigger-btn[data-v-f4ad12a5]:hover{border-color:var(--k-color-primary, #4f7cff)}.label[data-v-f4ad12a5]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;text-align:left}.arrow[data-v-f4ad12a5]{flex-shrink:0}.dialog-overlay[data-v-f4ad12a5]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000}.dialog-content[data-v-f4ad12a5]{background:var(--k-card-bg, #1e1e1e);border:1px solid var(--k-card-border, rgba(127, 127, 127, .35));border-radius:12px;width:90%;max-width:500px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0000004d}.dialog-header[data-v-f4ad12a5]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--k-card-border, rgba(127, 127, 127, .2))}.dialog-header h3[data-v-f4ad12a5]{margin:0;font-size:16px;font-weight:600;color:var(--k-text-normal, inherit)}.close-btn[data-v-f4ad12a5]{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;border-radius:6px;background:transparent;color:var(--k-text-secondary, #888);cursor:pointer;font-size:18px;transition:color .15s,background .15s}.close-btn[data-v-f4ad12a5]:hover{color:var(--k-text-normal, inherit);background:color-mix(in srgb,var(--k-card-border, #888) 20%,transparent)}.dialog-body[data-v-f4ad12a5]{flex:1;min-height:0;display:flex;flex-direction:column;padding:16px 20px;overflow:hidden}.toolbar[data-v-f4ad12a5]{display:flex;align-items:center;gap:12px;margin-bottom:12px}.select-all[data-v-f4ad12a5]{flex-shrink:0;font-weight:600}.search-input[data-v-f4ad12a5]{flex:1;min-width:0;color:var(--k-text-normal, inherit);background:var(--k-input-bg, transparent);border:1px solid var(--k-card-border, rgba(127, 127, 127, .35));border-radius:6px;padding:6px 10px;font-size:14px}.plugin-list[data-v-f4ad12a5]{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.checkbox-item[data-v-f4ad12a5]{display:flex;align-items:center;gap:8px;padding:8px;border-radius:6px;cursor:pointer;transition:background .15s;-webkit-user-select:none;user-select:none}.checkbox-item[data-v-f4ad12a5]:hover{background:color-mix(in srgb,var(--k-card-border, #888) 15%,transparent)}.checkbox-item input[type=checkbox][data-v-f4ad12a5]{width:16px;height:16px;cursor:pointer;flex-shrink:0}.checkbox-item span[data-v-f4ad12a5]{color:var(--k-text-normal, inherit);font-size:14px}.empty-state[data-v-f4ad12a5]{padding:40px 20px;text-align:center;color:var(--k-text-secondary, #888)}.dialog-footer[data-v-f4ad12a5]{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:16px 20px;border-top:1px solid var(--k-card-border, rgba(127, 127, 127, .2))}.btn[data-v-f4ad12a5]{padding:6px 16px;border-radius:6px;border:none;cursor:pointer;font-size:14px;transition:opacity .15s}.btn[data-v-f4ad12a5]:hover{opacity:.85}.btn-cancel[data-v-f4ad12a5]{background:transparent;color:var(--k-text-normal, inherit);border:1px solid var(--k-card-border, rgba(127, 127, 127, .35))}.btn-confirm[data-v-f4ad12a5]{background:var(--k-color-primary, #4f7cff);color:#fff}.fp-layout[data-v-9422f484]{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;padding:12px;color:var(--k-text-normal, inherit);box-sizing:border-box;overflow:hidden}.editor-header[data-v-9422f484]{display:flex;justify-content:space-between;align-items:center;gap:12px}.actions[data-v-9422f484]{display:flex;gap:8px}.fp-main[data-v-9422f484]{display:grid;grid-template-columns:320px 1fr;gap:12px;min-height:0;flex:1;overflow:hidden}.list[data-v-9422f484],.editor[data-v-9422f484]{height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden}.list[data-v-9422f484] .k-card-body,.editor[data-v-9422f484] .k-card-body{display:flex;flex-direction:column;flex:1;min-height:0;overflow:auto}.panel[data-v-9422f484]{background:var(--k-card-bg, transparent);border:1px solid var(--k-card-border, rgba(127, 127, 127, .35));border-radius:10px}.panel-title[data-v-9422f484]{font-weight:600}.panel-title.small[data-v-9422f484]{margin-bottom:8px}.rule-list[data-v-9422f484]{display:flex;flex-direction:column;gap:8px}.editor-body[data-v-9422f484]{display:flex;flex-direction:column}.rule-item[data-v-9422f484]{width:100%;border:1px solid var(--k-card-border, rgba(127, 127, 127, .35));background:var(--k-input-bg, transparent);color:var(--k-text-normal, inherit);border-radius:8px;padding:8px;text-align:left;cursor:pointer}.rule-item.active[data-v-9422f484]{border-color:var(--k-color-primary, #4f7cff);box-shadow:0 0 0 2px color-mix(in srgb,var(--k-color-primary, #4f7cff) 20%,transparent)}.rule-item .top[data-v-9422f484]{display:flex;align-items:center;justify-content:space-between}.rule-item .name[data-v-9422f484]{font-weight:600}.rule-item .meta[data-v-9422f484]{margin-top:4px;display:flex;gap:8px;flex-wrap:wrap;color:var(--k-text-secondary, #888);font-size:12px}.badge[data-v-9422f484]{border-radius:999px;padding:2px 8px;font-size:12px}.badge.bypass[data-v-9422f484]{background:color-mix(in srgb,#1abc9c 20%,transparent)}.badge.block[data-v-9422f484]{background:color-mix(in srgb,#e74c3c 20%,transparent)}.editor-grid[data-v-9422f484]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:12px}.field[data-v-9422f484]{display:flex;flex-direction:column;gap:6px}.field.switch[data-v-9422f484]{justify-content:flex-end}.toggle-switch[data-v-9422f484]{position:relative;width:44px;height:24px;border-radius:12px;background:var(--k-card-border, rgba(127, 127, 127, .4));cursor:pointer;transition:background .25s;flex-shrink:0}.toggle-switch.active[data-v-9422f484]{background:var(--k-color-active, #5865f2)}.toggle-thumb[data-v-9422f484]{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .25s;box-shadow:0 1px 3px #0000004d}.toggle-switch.active .toggle-thumb[data-v-9422f484]{transform:translate(20px)}.input[data-v-9422f484]{width:100%;min-width:0;height:35px;box-sizing:border-box;color:var(--k-text-normal, inherit);background:var(--k-input-bg, transparent);border:1px solid var(--k-card-border, rgba(127, 127, 127, .35));border-radius:6px;padding:6px 10px}.expr-wrap[data-v-9422f484]{margin:8px 0 12px}.footer-actions[data-v-9422f484]{display:flex;gap:8px;flex-wrap:wrap}.confirm-overlay[data-v-9422f484]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;background:#0000008c;display:flex;align-items:center;justify-content:center}.confirm-dialog[data-v-9422f484]{background:var(--k-card-bg, #1e1e1e);border:1px solid var(--k-card-border, rgba(127, 127, 127, .35));border-radius:12px;padding:24px 28px;min-width:320px;max-width:480px;display:flex;flex-direction:column;gap:12px;box-shadow:0 16px 48px #0006}.confirm-title[data-v-9422f484]{font-size:16px;font-weight:700;color:var(--k-text-normal, inherit)}.confirm-body[data-v-9422f484]{font-size:14px;color:var(--k-text-secondary, #aaa);line-height:1.6}.confirm-actions[data-v-9422f484]{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.confirm-danger-btn[data-v-9422f484]{height:35px;box-sizing:border-box;padding:0 16px;border-radius:6px;border:none;background:#e74c3c;color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:opacity .15s}.confirm-danger-btn[data-v-9422f484]:hover{opacity:.85}@media (max-width: 980px){.fp-main[data-v-9422f484],.editor-grid[data-v-9422f484]{grid-template-columns:1fr}}.k-button{height:35px!important;box-sizing:border-box!important}
|
package/lib/apply.d.ts
ADDED