diff --git a/.gitignore b/.gitignore index 6c609c7..752b4c4 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ .wnf-lang-status *.swp *.egg-info -dist/ + # Redis 数据文件 dump.rdb *.rdb @@ -13,7 +13,6 @@ redis.conf.bak # Jingrow 前端 node_modules -frontend/dist/ frontend/node_modules/ frontend/.env.local frontend/.env.test diff --git a/apps/jingrow/frontend/dist/assets/AIAgentFlowBuilder-2f1ee482.css b/apps/jingrow/frontend/dist/assets/AIAgentFlowBuilder-2f1ee482.css new file mode 100644 index 0000000..b35a757 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AIAgentFlowBuilder-2f1ee482.css @@ -0,0 +1 @@ +.ai-agent-flow-builder[data-v-d7ab6be8]{display:flex;flex-direction:column;height:100%;background:#f8fafc}.ai-agent-flow-builder.fullscreen[data-v-d7ab6be8]{position:fixed!important;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;z-index:99999;background:#f8fafc;box-shadow:none}.toolbar[data-v-d7ab6be8]{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:white;border-bottom:1px solid #e5e7eb;flex-shrink:0}.toolbar-left[data-v-d7ab6be8]{display:flex;align-items:center;gap:16px}.toolbar-left h4[data-v-d7ab6be8]{margin:0;font-size:1.125rem;font-weight:600;color:#1f2937}.node-count[data-v-d7ab6be8]{font-size:.875rem;color:#6b7280}.toolbar-right[data-v-d7ab6be8]{display:flex;gap:8px}.ni-toolbar .ni-btn{padding:4px 12px;border-radius:8px;min-height:28px;line-height:1.1}.ni-toolbar{row-gap:6px}.ni-btn i{margin-right:6px;line-height:1}.ni-btn.n-button--default-type:hover{background:#475569;color:#fff!important}.ni-btn.n-button--primary-type:hover{background:#3b82f6;color:#fff!important}.ni-btn.n-button--info-type:hover{background:#0ea5e9;color:#fff!important}.ni-btn.n-button--success-type:hover{background:#22c55e;color:#fff!important}.ni-btn.n-button--error-type:hover{background:#ef4444;color:#fff!important}.ni-btn .n-button__content,.ni-btn .n-button__icon,.ni-btn .n-button__label{color:inherit}.ni-btn:hover{border-radius:8px}.ni-btn-neutral{color:#111827}.ni-btn-neutral i{color:inherit}.ni-btn-neutral:hover{background:#111827;color:#fff!important}.main-content[data-v-d7ab6be8]{display:flex;flex:1;overflow:hidden}.execution-results-container[data-v-d7ab6be8]{flex:1;display:flex;flex-direction:column;overflow:hidden}[data-v-d7ab6be8] .vue-flow__handle{width:14px!important;height:14px!important;background:#fff!important;border:2.5px solid #6366f1!important;box-shadow:0 2px 8px #6366f126!important;border-radius:50%!important;cursor:crosshair!important;z-index:10!important;pointer-events:auto!important;transition:box-shadow .2s,border-color .2s}[data-v-d7ab6be8] .vue-flow__handle:hover{box-shadow:0 0 0 4px #6366f133!important;border-color:#4338ca!important}[data-v-d7ab6be8] .vue-flow__handle.connecting,[data-v-d7ab6be8] .vue-flow__handle.connectingfrom{animation:handle-pulse-d7ab6be8 1s infinite!important;cursor:crosshair!important}[data-v-d7ab6be8] .vue-flow__handle.connectingto{animation:handle-connecting-d7ab6be8 .5s ease-out!important;cursor:crosshair!important}@keyframes handle-pulse-d7ab6be8{0%{transform:scale(1);opacity:1}50%{transform:scale(1.3);opacity:.8}to{transform:scale(1);opacity:1}}@keyframes handle-connecting-d7ab6be8{0%{transform:scale(1)}50%{transform:scale(1.4)}to{transform:scale(1.2)}}[data-v-d7ab6be8] .vue-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw-d7ab6be8 .5s linear infinite}[data-v-d7ab6be8] .vue-flow__edge.selected path{stroke-width:3}[data-v-d7ab6be8] .vue-flow__edge:hover path{stroke-width:3}@keyframes dashdraw-d7ab6be8{to{stroke-dashoffset:-10}}[data-v-d7ab6be8] .vue-flow__connectionline{stroke:#94a3b8!important;stroke-width:2!important;stroke-dasharray:5,5!important}[data-v-d7ab6be8] .vue-flow__background{background-color:#fafafa}[data-v-d7ab6be8] .vue-flow__background .react-flow__background-pattern{color:#e2e8f0}[data-v-d7ab6be8] .vue-flow__node{font-size:14px!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif!important}[data-v-d7ab6be8] .vue-flow__node .title{font-size:14px!important;font-weight:600!important;letter-spacing:.3px!important}[data-v-d7ab6be8] .vue-flow__node .form-group label{font-size:11px!important;font-weight:600!important}[data-v-d7ab6be8] .vue-flow__node .value{font-size:13px!important;font-weight:500!important}.flow-container[data-v-d7ab6be8]{flex:1;position:relative}.vue-flow-container[data-v-d7ab6be8]{height:100%;background:#f8fafc}.sidebar[data-v-d7ab6be8]{width:360px;display:flex;flex-direction:column;flex-shrink:0}.sidebar-tabs[data-v-d7ab6be8]{display:flex;border-bottom:1px solid #e5e7eb}.tab-button[data-v-d7ab6be8]{flex:1;padding:12px;border:none;background:transparent;cursor:pointer;font-size:.875rem;color:#6b7280;transition:all .2s}.tab-button.active[data-v-d7ab6be8]{color:#3b82f6;border-bottom:2px solid #3b82f6;background:#f8fafc}.tab-button[data-v-d7ab6be8]:hover{background:#f3f4f6}.sidebar-content[data-v-d7ab6be8]{flex:1;overflow-y:auto;padding:16px}.status-panel[data-v-d7ab6be8]{background:white;border-radius:6px;padding:8px 12px;box-shadow:0 2px 4px #0000001a;font-size:.875rem}.unsaved-indicator[data-v-d7ab6be8]{color:#f59e0b;display:flex;align-items:center;gap:4px}.saved-indicator[data-v-d7ab6be8]{color:#22c55e;display:flex;align-items:center;gap:4px}.edge-properties .form-group[data-v-d7ab6be8]{margin-bottom:16px}.edge-properties .form-group label[data-v-d7ab6be8]{display:block;margin-bottom:4px;font-weight:500;color:#374151}.edge-properties .form-control[data-v-d7ab6be8]{width:100%;padding:8px;border:1px solid #d1d5db;border-radius:4px;font-size:.875rem}[data-v-d7ab6be8] .vue-flow__node{font-family:inherit}[data-v-d7ab6be8] .vue-flow__edge{cursor:pointer}[data-v-d7ab6be8] .vue-flow__edge:hover{stroke-width:3}[data-v-d7ab6be8] .vue-flow__controls{button {& {border: 1px solid #d1d5db; background: white; color: #374151;} &:hover {background: #f3f4f6;}}}[data-v-d7ab6be8] .vue-flow__minimap{border:1px solid #d1d5db;border-radius:4px}.template-data-modal[data-v-d7ab6be8]{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;display:flex;align-items:center;justify-content:center}.template-data-content[data-v-d7ab6be8]{background:white;border-radius:8px;box-shadow:0 4px 32px #0000002e;padding:0;min-width:420px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.template-data-header[data-v-d7ab6be8]{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #e5e7eb;font-weight:600;font-size:15px}.close-btn[data-v-d7ab6be8]{background:none;border:none;font-size:22px;cursor:pointer;color:#888;margin-left:12px}.template-data-content pre[data-v-d7ab6be8]{margin:0;padding:18px 20px;background:#f3f4f6;border-radius:0 0 8px 8px;font-size:12px;color:#222;flex:1}.template-data-mask[data-v-d7ab6be8]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.18);z-index:-1}.status-indicator-fixed[data-v-d7ab6be8]{position:absolute;top:18px;right:28px;z-index:20;background:white;border-radius:6px;padding:8px 14px;box-shadow:0 2px 8px #0000001a;font-size:.95rem;min-width:120px;display:flex;align-items:center;justify-content:center;pointer-events:none;text-align:center}.copy-btn[data-v-d7ab6be8]{background:none;border:none;color:#6b7280;font-size:18px;cursor:pointer;padding:2px 6px;border-radius:5px;transition:background .15s}.copy-btn[data-v-d7ab6be8]:hover{background:#f3f3f3;color:#1fc76f}.copy-tip[data-v-d7ab6be8]{position:absolute;top:18px;right:60px;background:#fff;color:#222;padding:8px 20px;border-radius:5px;font-size:13px;opacity:.92;z-index:10001;pointer-events:none;box-shadow:0 2px 8px #0000001a;transition:opacity .2s}.fade-enter-active[data-v-d7ab6be8],.fade-leave-active[data-v-d7ab6be8]{transition:opacity .2s}.fade-enter-from[data-v-d7ab6be8],.fade-leave-to[data-v-d7ab6be8]{opacity:0}.add-node-btn[data-v-d7ab6be8]{color:#1a1a1a;background:#fff;transition:background .2s,color .2s}.add-node-btn[data-v-d7ab6be8]:hover,.add-node-btn[data-v-d7ab6be8]:focus{background:#1fc76f;color:#fff;border-color:#1fc76f}.bubble-tip-global[data-v-d7ab6be8]{position:absolute;top:18px;right:28px;z-index:100000;background:#fff;color:#6b7280;font-size:.95rem;border-radius:6px;box-shadow:0 2px 8px #0000001a;padding:8px 14px;min-width:120px;display:flex;align-items:center;justify-content:center;pointer-events:none;text-align:center;font-weight:500;transition:opacity .18s}.bubble-tip-global.warn[data-v-d7ab6be8]{color:#f59e0b}.bubble-tip-global.error[data-v-d7ab6be8]{color:#ef4444}.bubble-tip-global.success[data-v-d7ab6be8]{color:#22c55e}.ai-agent-flow-builder.fullscreen .bubble-tip-global[data-v-d7ab6be8]{z-index:100000}.loading-container[data-v-d7ab6be8]{display:flex;align-items:center;justify-content:center;height:100%;min-height:400px}.loading-spinner[data-v-d7ab6be8]{text-align:center;color:#6b7280}.loading-spinner i[data-v-d7ab6be8]{font-size:24px;margin-bottom:12px;display:block}.loading-spinner p[data-v-d7ab6be8]{margin:0;font-size:14px} diff --git a/apps/jingrow/frontend/dist/assets/AIAgentFlowBuilder-596ef83f.js b/apps/jingrow/frontend/dist/assets/AIAgentFlowBuilder-596ef83f.js new file mode 100644 index 0000000..73a37d0 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AIAgentFlowBuilder-596ef83f.js @@ -0,0 +1,15 @@ +import{d as ae,aB as _t,l as C,D as tt,w as O,aC as j,e as R,F as le,h as Y,a9 as St,j as $,y as U,f as S,aD as Zn,aE as un,r as V,aF as Jn,c as et,aG as Qn,g as q,C as jn,a1 as cn,Y as Vt,aH as ti,aI as ei,aJ as Ve,A as hn,u as ni,o as Oe,a7 as ii,J as we,K as oi,M as qe,t as D,p as st,n as mt,I as ri,T as Le}from"./index-d271a6a3.js";import{P as si,u as ue,_ as fn,g as ai,a as li,w as ui,i as ci,b as Dt,c as hi}from"./vue-flow-core-1091fce6.js";import{g as dn,u as fi,p as di,a as gi}from"./nodeMetadata-adf4e793.js";import pi from"./NodePalette-16ab1bc1.js";import mi from"./ExecutionResults-0e4a1fda.js";import{_ as vi}from"./_plugin-vue_export-helper-c27b6911.js";import"./NodePropertyModal-edd68bd5.js";import"./SchemaFormRenderer-15cfd619.js";import"./nodes-4a3329bf.js";const yi={name:"ControlButton",compatConfig:{MODE:3}},wi=(t,e)=>{const n=t.__vccOpts||t;for(const[i,o]of e)n[i]=o;return n},_i={type:"button",class:"vue-flow__controls-button"};function ki(t,e,n,i,o,s){return C(),R("button",_i,[j(t.$slots,"default")])}const It=wi(yi,[["render",ki]]),xi={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},bi=S("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"},null,-1),$i=[bi];function Ci(t,e){return C(),R("svg",xi,$i)}const Ei={render:Ci},Ni={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},Si=S("path",{d:"M0 0h32v4.2H0z"},null,-1),Mi=[Si];function zi(t,e){return C(),R("svg",Ni,Mi)}const Ti={render:zi},Ri={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},Ai=S("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0 0 27.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94a.919.919 0 0 1-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"},null,-1),Di=[Ai];function Fi(t,e){return C(),R("svg",Ri,Di)}const Bi={render:Fi},Ii={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},Hi=S("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"},null,-1),Pi=[Hi];function Vi(t,e){return C(),R("svg",Ii,Pi)}const Oi={render:Vi},qi={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},Li=S("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 0 0 0 13.714v15.238A3.056 3.056 0 0 0 3.048 32h18.285a3.056 3.056 0 0 0 3.048-3.048V13.714a3.056 3.056 0 0 0-3.048-3.047zM12.19 24.533a3.056 3.056 0 0 1-3.047-3.047 3.056 3.056 0 0 1 3.047-3.048 3.056 3.056 0 0 1 3.048 3.048 3.056 3.056 0 0 1-3.048 3.047z"},null,-1),Xi=[Li];function Yi(t,e){return C(),R("svg",qi,Xi)}const Ui={render:Yi},Gi={name:"Controls",compatConfig:{MODE:3}},Wi=ae({...Gi,props:{showZoom:{type:Boolean,default:!0},showFitView:{type:Boolean,default:!0},showInteractive:{type:Boolean,default:!0},fitViewParams:{},position:{default:()=>si.BottomLeft}},emits:["zoomIn","zoomOut","fitView","interactionChange"],setup(t,{emit:e}){const{nodesDraggable:n,nodesConnectable:i,elementsSelectable:o,setInteractive:s,zoomIn:r,zoomOut:a,fitView:l,viewport:u,minZoom:h,maxZoom:f}=ue(),g=_t(()=>n.value||i.value||o.value),v=_t(()=>u.value.zoom<=h.value),M=_t(()=>u.value.zoom>=f.value);function z(){r(),e("zoomIn")}function T(){a(),e("zoomOut")}function b(){l(t.fitViewParams),e("fitView")}function P(){s(!g.value),e("interactionChange",!g.value)}return(E,L)=>(C(),tt($(fn),{class:"vue-flow__controls",position:E.position},{default:O(()=>[j(E.$slots,"top"),E.showZoom?(C(),R(le,{key:0},[j(E.$slots,"control-zoom-in",{},()=>[Y(It,{class:"vue-flow__controls-zoomin",disabled:M.value,onClick:z},{default:O(()=>[j(E.$slots,"icon-zoom-in",{},()=>[(C(),tt(St($(Ei))))])]),_:3},8,["disabled"])]),j(E.$slots,"control-zoom-out",{},()=>[Y(It,{class:"vue-flow__controls-zoomout",disabled:v.value,onClick:T},{default:O(()=>[j(E.$slots,"icon-zoom-out",{},()=>[(C(),tt(St($(Ti))))])]),_:3},8,["disabled"])])],64)):U("",!0),E.showFitView?j(E.$slots,"control-fit-view",{key:1},()=>[Y(It,{class:"vue-flow__controls-fitview",onClick:b},{default:O(()=>[j(E.$slots,"icon-fit-view",{},()=>[(C(),tt(St($(Bi))))])]),_:3})]):U("",!0),E.showInteractive?j(E.$slots,"control-interactive",{key:2},()=>[E.showInteractive?(C(),tt(It,{key:0,class:"vue-flow__controls-interactive",onClick:P},{default:O(()=>[g.value?j(E.$slots,"icon-unlock",{key:0},()=>[(C(),tt(St($(Ui))))]):U("",!0),g.value?U("",!0):j(E.$slots,"icon-lock",{key:1},()=>[(C(),tt(St($(Oi))))])]),_:3})):U("",!0)]):U("",!0),j(E.$slots,"default")]),_:3},8,["position"]))}});var Ki={value:()=>{}};function Re(){for(var t=0,e=arguments.length,n={},i;t=0&&(i=n.slice(o+1),n=n.slice(0,o)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:i}})}Jt.prototype=Re.prototype={constructor:Jt,on:function(t,e){var n=this._,i=Zi(t+"",n),o,s=-1,r=i.length;if(arguments.length<2){for(;++s0)for(var n=new Array(o),i=0,o,s;i=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),Ye.hasOwnProperty(e)?{space:Ye[e],local:t}:t}function Qi(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===be&&e.documentElement.namespaceURI===be?e.createElement(t):e.createElementNS(n,t)}}function ji(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function gn(t){var e=ce(t);return(e.local?ji:Qi)(e)}function to(){}function Ae(t){return t==null?to:function(){return this.querySelector(t)}}function eo(t){typeof t!="function"&&(t=Ae(t));for(var e=this._groups,n=e.length,i=new Array(n),o=0;o=E&&(E=P+1);!(Z=T[E])&&++E=0;)(r=i[o])&&(s&&r.compareDocumentPosition(s)^4&&s.parentNode.insertBefore(r,s),s=r);return this}function No(t){t||(t=So);function e(f,g){return f&&g?t(f.__data__,g.__data__):!f-!g}for(var n=this._groups,i=n.length,o=new Array(i),s=0;se?1:t>=e?0:NaN}function Mo(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function zo(){return Array.from(this)}function To(){for(var t=this._groups,e=0,n=t.length;e1?this.each((e==null?qo:typeof e=="function"?Xo:Lo)(t,e,n??"")):zt(this.node(),t)}function zt(t,e){return t.style.getPropertyValue(e)||wn(t).getComputedStyle(t,null).getPropertyValue(e)}function Uo(t){return function(){delete this[t]}}function Go(t,e){return function(){this[t]=e}}function Wo(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Ko(t,e){return arguments.length>1?this.each((e==null?Uo:typeof e=="function"?Wo:Go)(t,e)):this.node()[t]}function _n(t){return t.trim().split(/^|\s+/)}function De(t){return t.classList||new kn(t)}function kn(t){this._node=t,this._names=_n(t.getAttribute("class")||"")}kn.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function xn(t,e){for(var n=De(t),i=-1,o=e.length;++i=0&&(n=e.slice(i+1),e=e.slice(0,i)),{type:e,name:n}})}function br(t){return function(){var e=this.__on;if(e){for(var n=0,i=-1,o=e.length,s;n>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?Gt(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?Gt(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=Fr.exec(t))?new nt(e[1],e[2],e[3],1):(e=Br.exec(t))?new nt(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Ir.exec(t))?Gt(e[1],e[2],e[3],e[4]):(e=Hr.exec(t))?Gt(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Pr.exec(t))?Qe(e[1],e[2]/100,e[3]/100,1):(e=Vr.exec(t))?Qe(e[1],e[2]/100,e[3]/100,e[4]):Ue.hasOwnProperty(t)?Ke(Ue[t]):t==="transparent"?new nt(NaN,NaN,NaN,0):null}function Ke(t){return new nt(t>>16&255,t>>8&255,t&255,1)}function Gt(t,e,n,i){return i<=0&&(t=e=n=NaN),new nt(t,e,n,i)}function Lr(t){return t instanceof Ut||(t=Lt(t)),t?(t=t.rgb(),new nt(t.r,t.g,t.b,t.opacity)):new nt}function Ee(t,e,n,i){return arguments.length===1?Lr(t):new nt(t,e,n,i??1)}function nt(t,e,n,i){this.r=+t,this.g=+e,this.b=+n,this.opacity=+i}Fe(nt,Ee,En(Ut,{brighter(t){return t=t==null?ne:Math.pow(ne,t),new nt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Ot:Math.pow(Ot,t),new nt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new nt($t(this.r),$t(this.g),$t(this.b),ie(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ze,formatHex:Ze,formatHex8:Xr,formatRgb:Je,toString:Je}));function Ze(){return`#${bt(this.r)}${bt(this.g)}${bt(this.b)}`}function Xr(){return`#${bt(this.r)}${bt(this.g)}${bt(this.b)}${bt((isNaN(this.opacity)?1:this.opacity)*255)}`}function Je(){const t=ie(this.opacity);return`${t===1?"rgb(":"rgba("}${$t(this.r)}, ${$t(this.g)}, ${$t(this.b)}${t===1?")":`, ${t})`}`}function ie(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function $t(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function bt(t){return t=$t(t),(t<16?"0":"")+t.toString(16)}function Qe(t,e,n,i){return i<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new at(t,e,n,i)}function Nn(t){if(t instanceof at)return new at(t.h,t.s,t.l,t.opacity);if(t instanceof Ut||(t=Lt(t)),!t)return new at;if(t instanceof at)return t;t=t.rgb();var e=t.r/255,n=t.g/255,i=t.b/255,o=Math.min(e,n,i),s=Math.max(e,n,i),r=NaN,a=s-o,l=(s+o)/2;return a?(e===s?r=(n-i)/a+(n0&&l<1?0:r,new at(r,a,l,t.opacity)}function Yr(t,e,n,i){return arguments.length===1?Nn(t):new at(t,e,n,i??1)}function at(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}Fe(at,Yr,En(Ut,{brighter(t){return t=t==null?ne:Math.pow(ne,t),new at(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Ot:Math.pow(Ot,t),new at(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*e,o=2*n-i;return new nt(_e(t>=240?t-240:t+120,o,i),_e(t,o,i),_e(t<120?t+240:t-120,o,i),this.opacity)},clamp(){return new at(je(this.h),Wt(this.s),Wt(this.l),ie(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=ie(this.opacity);return`${t===1?"hsl(":"hsla("}${je(this.h)}, ${Wt(this.s)*100}%, ${Wt(this.l)*100}%${t===1?")":`, ${t})`}`}}));function je(t){return t=(t||0)%360,t<0?t+360:t}function Wt(t){return Math.max(0,Math.min(1,t||0))}function _e(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Sn=t=>()=>t;function Ur(t,e){return function(n){return t+n*e}}function Gr(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(i){return Math.pow(t+i*e,n)}}function Wr(t){return(t=+t)==1?Mn:function(e,n){return n-e?Gr(e,n,t):Sn(isNaN(e)?n:e)}}function Mn(t,e){var n=e-t;return n?Ur(t,n):Sn(isNaN(t)?e:t)}const tn=function t(e){var n=Wr(e);function i(o,s){var r=n((o=Ee(o)).r,(s=Ee(s)).r),a=n(o.g,s.g),l=n(o.b,s.b),u=Mn(o.opacity,s.opacity);return function(h){return o.r=r(h),o.g=a(h),o.b=l(h),o.opacity=u(h),o+""}}return i.gamma=t,i}(1);function yt(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var Ne=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,ke=new RegExp(Ne.source,"g");function Kr(t){return function(){return t}}function Zr(t){return function(e){return t(e)+""}}function Jr(t,e){var n=Ne.lastIndex=ke.lastIndex=0,i,o,s,r=-1,a=[],l=[];for(t=t+"",e=e+"";(i=Ne.exec(t))&&(o=ke.exec(e));)(s=o.index)>n&&(s=e.slice(n,s),a[r]?a[r]+=s:a[++r]=s),(i=i[0])===(o=o[0])?a[r]?a[r]+=o:a[++r]=o:(a[++r]=null,l.push({i:r,x:yt(i,o)})),n=ke.lastIndex;return n180?h+=360:h-u>180&&(u+=360),g.push({i:f.push(o(f)+"rotate(",null,i)-2,x:yt(u,h)})):h&&f.push(o(f)+"rotate("+h+i)}function a(u,h,f,g){u!==h?g.push({i:f.push(o(f)+"skewX(",null,i)-2,x:yt(u,h)}):h&&f.push(o(f)+"skewX("+h+i)}function l(u,h,f,g,v,M){if(u!==f||h!==g){var z=v.push(o(v)+"scale(",null,",",null,")");M.push({i:z-4,x:yt(u,f)},{i:z-2,x:yt(h,g)})}else(f!==1||g!==1)&&v.push(o(v)+"scale("+f+","+g+")")}return function(u,h){var f=[],g=[];return u=t(u),h=t(h),s(u.translateX,u.translateY,h.translateX,h.translateY,f,g),r(u.rotate,h.rotate,f,g),a(u.skewX,h.skewX,f,g),l(u.scaleX,u.scaleY,h.scaleX,h.scaleY,f,g),u=h=null,function(v){for(var M=-1,z=g.length,T;++M=0&&t._call.call(void 0,e),t=t._next;--Tt}function on(){Ct=(re=Xt.now())+he,Tt=Ht=0;try{as()}finally{Tt=0,us(),Ct=0}}function ls(){var t=Xt.now(),e=t-re;e>Rn&&(he-=e,re=t)}function us(){for(var t,e=oe,n,i=1/0;e;)e._call?(i>e._time&&(i=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:oe=n);Pt=t,Me(i)}function Me(t){if(!Tt){Ht&&(Ht=clearTimeout(Ht));var e=t-Ct;e>24?(t<1/0&&(Ht=setTimeout(on,t-Xt.now()-he)),Ft&&(Ft=clearInterval(Ft))):(Ft||(re=Xt.now(),Ft=setInterval(ls,Rn)),Tt=1,An(on))}}function rn(t,e,n){var i=new se;return e=e==null?0:+e,i.restart(o=>{i.stop(),t(o+e)},e,n),i}var cs=Re("start","end","cancel","interrupt"),hs=[],Fn=0,sn=1,ze=2,Qt=3,an=4,Te=5,jt=6;function fe(t,e,n,i,o,s){var r=t.__transition;if(!r)t.__transition={};else if(n in r)return;fs(t,n,{name:e,index:i,group:o,on:cs,tween:hs,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:Fn})}function Ie(t,e){var n=lt(t,e);if(n.state>Fn)throw new Error("too late; already scheduled");return n}function ct(t,e){var n=lt(t,e);if(n.state>Qt)throw new Error("too late; already running");return n}function lt(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function fs(t,e,n){var i=t.__transition,o;i[e]=n,n.timer=Dn(s,0,n.time);function s(u){n.state=sn,n.timer.restart(r,n.delay,n.time),n.delay<=u&&r(u-n.delay)}function r(u){var h,f,g,v;if(n.state!==sn)return l();for(h in i)if(v=i[h],v.name===n.name){if(v.state===Qt)return rn(r);v.state===an?(v.state=jt,v.timer.stop(),v.on.call("interrupt",t,t.__data__,v.index,v.group),delete i[h]):+hze&&i.state=0&&(e=e.slice(0,n)),!e||e==="start"})}function qs(t,e,n){var i,o,s=Os(e)?Ie:ct;return function(){var r=s(this,t),a=r.on;a!==i&&(o=(i=a).copy()).on(e,n),r.on=o}}function Ls(t,e){var n=this._id;return arguments.length<2?lt(this.node(),n).on.on(t):this.each(qs(n,t,e))}function Xs(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function Ys(){return this.on("end.remove",Xs(this._id))}function Us(t){var e=this._name,n=this._id;typeof t!="function"&&(t=Ae(t));for(var i=this._groups,o=i.length,s=new Array(o),r=0;r()=>t;function va(t,{sourceEvent:e,target:n,transform:i,dispatch:o}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:i,enumerable:!0,configurable:!0},_:{value:o}})}function dt(t,e,n){this.k=t,this.x=e,this.y=n}dt.prototype={constructor:dt,scale:function(t){return t===1?this:new dt(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new dt(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Pe=new dt(1,0,0);dt.prototype;function xe(t){t.stopImmediatePropagation()}function Bt(t){t.preventDefault(),t.stopImmediatePropagation()}function ya(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function wa(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function ln(){return this.__zoom||Pe}function _a(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function ka(){return navigator.maxTouchPoints||"ontouchstart"in this}function xa(t,e,n){var i=t.invertX(e[0][0])-n[0][0],o=t.invertX(e[1][0])-n[1][0],s=t.invertY(e[0][1])-n[0][1],r=t.invertY(e[1][1])-n[1][1];return t.translate(o>i?(i+o)/2:Math.min(0,i)||Math.max(0,o),r>s?(s+r)/2:Math.min(0,s)||Math.max(0,r))}function ba(){var t=ya,e=wa,n=xa,i=_a,o=ka,s=[0,1/0],r=[[-1/0,-1/0],[1/0,1/0]],a=250,l=rs,u=Re("start","zoom","end"),h,f,g,v=500,M=150,z=0,T=10;function b(c){c.property("__zoom",ln).on("wheel.zoom",G,{passive:!1}).on("mousedown.zoom",W).on("dblclick.zoom",F).filter(o).on("touchstart.zoom",Rt).on("touchmove.zoom",Et).on("touchend.zoom touchcancel.zoom",kt).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}b.transform=function(c,k,d,x){var p=c.selection?c.selection():c;p.property("__zoom",ln),c!==p?Z(c,k,d,x):p.interrupt().each(function(){J(this,arguments).event(x).start().zoom(null,typeof k=="function"?k.apply(this,arguments):k).end()})},b.scaleBy=function(c,k,d,x){b.scaleTo(c,function(){var p=this.__zoom.k,_=typeof k=="function"?k.apply(this,arguments):k;return p*_},d,x)},b.scaleTo=function(c,k,d,x){b.transform(c,function(){var p=e.apply(this,arguments),_=this.__zoom,m=d==null?L(p):typeof d=="function"?d.apply(this,arguments):d,N=_.invert(m),B=typeof k=="function"?k.apply(this,arguments):k;return n(E(P(_,B),m,N),p,r)},d,x)},b.translateBy=function(c,k,d,x){b.transform(c,function(){return n(this.__zoom.translate(typeof k=="function"?k.apply(this,arguments):k,typeof d=="function"?d.apply(this,arguments):d),e.apply(this,arguments),r)},null,x)},b.translateTo=function(c,k,d,x,p){b.transform(c,function(){var _=e.apply(this,arguments),m=this.__zoom,N=x==null?L(_):typeof x=="function"?x.apply(this,arguments):x;return n(Pe.translate(N[0],N[1]).scale(m.k).translate(typeof k=="function"?-k.apply(this,arguments):-k,typeof d=="function"?-d.apply(this,arguments):-d),_,r)},x,p)};function P(c,k){return k=Math.max(s[0],Math.min(s[1],k)),k===c.k?c:new dt(k,c.x,c.y)}function E(c,k,d){var x=k[0]-d[0]*c.k,p=k[1]-d[1]*c.k;return x===c.x&&p===c.y?c:new dt(c.k,x,p)}function L(c){return[(+c[0][0]+ +c[1][0])/2,(+c[0][1]+ +c[1][1])/2]}function Z(c,k,d,x){c.on("start.zoom",function(){J(this,arguments).event(x).start()}).on("interrupt.zoom end.zoom",function(){J(this,arguments).event(x).end()}).tween("zoom",function(){var p=this,_=arguments,m=J(p,_).event(x),N=e.apply(p,_),B=d==null?L(N):typeof d=="function"?d.apply(p,_):d,I=Math.max(N[1][0]-N[0][0],N[1][1]-N[0][1]),H=p.__zoom,X=typeof k=="function"?k.apply(p,_):k,K=l(H.invert(B).concat(I/H.k),X.invert(B).concat(I/X.k));return function(Q){if(Q===1)Q=X;else{var it=K(Q),At=I/it[2];Q=new dt(At,B[0]-it[0]*At,B[1]-it[1]*At)}m.zoom(null,Q)}})}function J(c,k,d){return!d&&c.__zooming||new A(c,k)}function A(c,k){this.that=c,this.args=k,this.active=0,this.sourceEvent=null,this.extent=e.apply(c,k),this.taps=0}A.prototype={event:function(c){return c&&(this.sourceEvent=c),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(c,k){return this.mouse&&c!=="mouse"&&(this.mouse[1]=k.invert(this.mouse[0])),this.touch0&&c!=="touch"&&(this.touch0[1]=k.invert(this.touch0[0])),this.touch1&&c!=="touch"&&(this.touch1[1]=k.invert(this.touch1[0])),this.that.__zoom=k,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(c){var k=wt(this.that).datum();u.call(c,this.that,new va(c,{sourceEvent:this.sourceEvent,target:b,type:c,transform:this.that.__zoom,dispatch:u}),k)}};function G(c,...k){if(!t.apply(this,arguments))return;var d=J(this,k).event(c),x=this.__zoom,p=Math.max(s[0],Math.min(s[1],x.k*Math.pow(2,i.apply(this,arguments)))),_=vt(c);if(d.wheel)(d.mouse[0][0]!==_[0]||d.mouse[0][1]!==_[1])&&(d.mouse[1]=x.invert(d.mouse[0]=_)),clearTimeout(d.wheel);else{if(x.k===p)return;d.mouse=[_,x.invert(_)],te(this),d.start()}Bt(c),d.wheel=setTimeout(m,M),d.zoom("mouse",n(E(P(x,p),d.mouse[0],d.mouse[1]),d.extent,r));function m(){d.wheel=null,d.end()}}function W(c,...k){if(g||!t.apply(this,arguments))return;var d=c.currentTarget,x=J(this,k,!0).event(c),p=wt(c.view).on("mousemove.zoom",B,!0).on("mouseup.zoom",I,!0),_=vt(c,d),m=c.clientX,N=c.clientY;Rr(c.view),xe(c),x.mouse=[_,this.__zoom.invert(_)],te(this),x.start();function B(H){if(Bt(H),!x.moved){var X=H.clientX-m,K=H.clientY-N;x.moved=X*X+K*K>z}x.event(H).zoom("mouse",n(E(x.that.__zoom,x.mouse[0]=vt(H,d),x.mouse[1]),x.extent,r))}function I(H){p.on("mousemove.zoom mouseup.zoom",null),Ar(H.view,x.moved),Bt(H),x.event(H).end()}}function F(c,...k){if(t.apply(this,arguments)){var d=this.__zoom,x=vt(c.changedTouches?c.changedTouches[0]:c,this),p=d.invert(x),_=d.k*(c.shiftKey?.5:2),m=n(E(P(d,_),x,p),e.apply(this,k),r);Bt(c),a>0?wt(this).transition().duration(a).call(Z,m,x,c):wt(this).call(b.transform,m,x,c)}}function Rt(c,...k){if(t.apply(this,arguments)){var d=c.touches,x=d.length,p=J(this,k,c.changedTouches.length===x).event(c),_,m,N,B;for(xe(c),m=0;mo.style??{});function r(f){e("click",f)}function a(f){e("dblclick",f)}function l(f){e("mouseenter",f)}function u(f){e("mousemove",f)}function h(f){e("mouseleave",f)}return(f,g)=>!f.hidden&&f.dimensions.width!==0&&f.dimensions.height!==0?(C(),R(le,{key:0},[$(i)[`node-${n.type}`]?(C(),tt(St($(i)[`node-${n.type}`]),ei(Ve({key:0},{...n,...f.$attrs})),null,16)):(C(),R("rect",Ve({key:1,id:f.id},f.$attrs,{class:["vue-flow__minimap-node",{selected:f.selected,dragging:f.dragging}],x:f.position.x,y:f.position.y,rx:f.borderRadius,ry:f.borderRadius,width:f.dimensions.width,height:f.dimensions.height,fill:f.color||s.value.background||s.value.backgroundColor,stroke:f.strokeColor,"stroke-width":f.strokeWidth,"shape-rendering":f.shapeRendering,onClick:r,onDblclick:a,onMouseenter:l,onMousemove:u,onMouseleave:h}),null,16,$a))],64)):U("",!0)}}),Na=["width","height","viewBox","aria-labelledby"],Sa=["id"],Ma=["d","fill","stroke","stroke-width"],za={name:"MiniMap",compatConfig:{MODE:3}},Ta=ae({...za,props:{nodeColor:{type:[String,Function],default:"#e2e2e2"},nodeStrokeColor:{type:[String,Function],default:"transparent"},nodeClassName:{type:[String,Function]},nodeBorderRadius:{default:5},nodeStrokeWidth:{default:2},maskColor:{default:"rgb(240, 240, 240, 0.6)"},maskStrokeColor:{default:"none"},maskStrokeWidth:{default:1},position:{default:"bottom-right"},pannable:{type:Boolean,default:!1},zoomable:{type:Boolean,default:!1},width:{},height:{},ariaLabel:{default:"Vue Flow mini map"},inversePan:{type:Boolean,default:!1},zoomStep:{default:1},offsetScale:{default:5},maskBorderRadius:{default:0}},emits:["click","nodeClick","nodeDblclick","nodeMouseenter","nodeMousemove","nodeMouseleave"],setup(t,{emit:e}){const n=Zn(),i=un(),o=200,s=150,{id:r,edges:a,viewport:l,translateExtent:u,dimensions:h,emits:f,d3Selection:g,d3Zoom:v,getNodesInitialized:M}=ue(),z=V();Jn(Pn,n);const T=_t(()=>{var p;return t.width??((p=i.style)==null?void 0:p.width)??o}),b=_t(()=>{var p;return t.height??((p=i.style)==null?void 0:p.height)??s}),P=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision",E=et(()=>typeof t.nodeColor=="string"?()=>t.nodeColor:t.nodeColor),L=et(()=>typeof t.nodeStrokeColor=="string"?()=>t.nodeStrokeColor:t.nodeStrokeColor),Z=et(()=>typeof t.nodeClassName=="string"?()=>t.nodeClassName:typeof t.nodeClassName=="function"?t.nodeClassName:()=>""),J=et(()=>ai(M.value.filter(p=>!p.hidden))),A=et(()=>({x:-l.value.x/l.value.zoom,y:-l.value.y/l.value.zoom,width:h.value.width/l.value.zoom,height:h.value.height/l.value.zoom})),G=et(()=>M.value&&M.value.length?li(J.value,A.value):A.value),W=et(()=>{const p=G.value.width/T.value,_=G.value.height/b.value;return Math.max(p,_)}),F=et(()=>{const p=W.value*T.value,_=W.value*b.value,m=t.offsetScale*W.value;return{offset:m,x:G.value.x-(p-G.value.width)/2-m,y:G.value.y-(_-G.value.height)/2-m,width:p+m*2,height:_+m*2}}),Rt=et(()=>!F.value.x||!F.value.y?"":` + M${F.value.x-F.value.offset},${F.value.y-F.value.offset} + h${F.value.width+F.value.offset*2} + v${F.value.height+F.value.offset*2} + h${-F.value.width-F.value.offset*2}z + M${A.value.x+t.maskBorderRadius},${A.value.y} + h${A.value.width-2*t.maskBorderRadius} + a${t.maskBorderRadius},${t.maskBorderRadius} 0 0 1 ${t.maskBorderRadius},${t.maskBorderRadius} + v${A.value.height-2*t.maskBorderRadius} + a${t.maskBorderRadius},${t.maskBorderRadius} 0 0 1 -${t.maskBorderRadius},${t.maskBorderRadius} + h${-(A.value.width-2*t.maskBorderRadius)} + a${t.maskBorderRadius},${t.maskBorderRadius} 0 0 1 -${t.maskBorderRadius},-${t.maskBorderRadius} + v${-(A.value.height-2*t.maskBorderRadius)} + a${t.maskBorderRadius},${t.maskBorderRadius} 0 0 1 ${t.maskBorderRadius},-${t.maskBorderRadius}z`);Qn(p=>{if(z.value){const _=wt(z.value),m=I=>{if(I.sourceEvent.type!=="wheel"||!g.value||!v.value)return;const H=I.sourceEvent.ctrlKey&&ci()?10:1,X=-I.sourceEvent.deltaY*(I.sourceEvent.deltaMode===1?.05:I.sourceEvent.deltaMode?1:.002)*t.zoomStep,K=l.value.zoom*2**(X*H);v.value.scaleTo(g.value,K)},N=I=>{if(I.sourceEvent.type!=="mousemove"||!g.value||!v.value)return;const H=W.value*Math.max(1,l.value.zoom)*(t.inversePan?-1:1),X={x:l.value.x-I.sourceEvent.movementX*H,y:l.value.y-I.sourceEvent.movementY*H},K=[[0,0],[h.value.width,h.value.height]],Q=Pe.translate(X.x,X.y).scale(l.value.zoom),it=v.value.constrain()(Q,K,u.value);v.value.transform(g.value,it)},B=ba().wheelDelta(I=>ui(I)*(t.zoomStep/10)).on("zoom",t.pannable?N:()=>{}).on("zoom.wheel",t.zoomable?m:()=>{});_.call(B),p(()=>{_.on("zoom",null)})}},{flush:"post"});function Et(p){const[_,m]=vt(p);e("click",{event:p,position:{x:_,y:m}})}function kt(p,_){const m={event:p,node:_,connectedEdges:Dt([_],a.value)};f.miniMapNodeClick(m),e("nodeClick",m)}function c(p,_){const m={event:p,node:_,connectedEdges:Dt([_],a.value)};f.miniMapNodeDoubleClick(m),e("nodeDblclick",m)}function k(p,_){const m={event:p,node:_,connectedEdges:Dt([_],a.value)};f.miniMapNodeMouseEnter(m),e("nodeMouseenter",m)}function d(p,_){const m={event:p,node:_,connectedEdges:Dt([_],a.value)};f.miniMapNodeMouseMove(m),e("nodeMousemove",m)}function x(p,_){const m={event:p,node:_,connectedEdges:Dt([_],a.value)};f.miniMapNodeMouseLeave(m),e("nodeMouseleave",m)}return(p,_)=>(C(),tt($(fn),{position:p.position,class:Vt(["vue-flow__minimap",{pannable:p.pannable,zoomable:p.zoomable}])},{default:O(()=>[(C(),R("svg",{ref_key:"el",ref:z,width:T.value,height:b.value,viewBox:[F.value.x,F.value.y,F.value.width,F.value.height].join(" "),role:"img","aria-labelledby":`vue-flow__minimap-${$(r)}`,onClick:Et},[p.ariaLabel?(C(),R("title",{key:0,id:`vue-flow__minimap-${$(r)}`},q(p.ariaLabel),9,Sa)):U("",!0),(C(!0),R(le,null,jn($(M),m=>(C(),tt(Ea,{id:m.id,key:m.id,f:"",position:m.computedPosition,dimensions:m.dimensions,selected:m.selected,dragging:m.dragging,style:cn(m.style),class:Vt(Z.value(m)),color:E.value(m),"border-radius":p.nodeBorderRadius,"stroke-color":L.value(m),"stroke-width":p.nodeStrokeWidth,"shape-rendering":$(P),type:m.type,hidden:m.hidden,onClick:N=>kt(N,m),onDblclick:N=>c(N,m),onMouseenter:N=>k(N,m),onMousemove:N=>d(N,m),onMouseleave:N=>x(N,m)},null,8,["id","position","dimensions","selected","dragging","style","class","color","border-radius","stroke-color","stroke-width","shape-rendering","type","hidden","onClick","onDblclick","onMouseenter","onMousemove","onMouseleave"]))),128)),S("path",{class:"vue-flow__minimap-mask",d:Rt.value,fill:p.maskColor,stroke:p.maskStrokeColor,"stroke-width":p.maskStrokeWidth,"fill-rule":"evenodd"},null,8,Ma)],8,Na))]),_:1},8,["position","class"]))}});var gt=(t=>(t.Lines="lines",t.Dots="dots",t))(gt||{});const Vn=function({dimensions:t,size:e,color:n}){return hn("path",{stroke:n,"stroke-width":e,d:`M${t[0]/2} 0 V${t[1]} M0 ${t[1]/2} H${t[0]}`})},On=function({radius:t,color:e}){return hn("circle",{cx:t,cy:t,r:t,fill:e})};gt.Lines+"",gt.Dots+"";const Ra={[gt.Dots]:"#81818a",[gt.Lines]:"#eee"},Aa=["id","x","y","width","height","patternTransform"],Da={key:2,height:"100",width:"100"},Fa=["fill"],Ba=["x","y","fill"],Ia={name:"Background",compatConfig:{MODE:3}},Ha=ae({...Ia,props:{id:{},variant:{default:()=>gt.Dots},gap:{default:20},size:{default:1},lineWidth:{default:1},patternColor:{},color:{},bgColor:{},height:{default:100},width:{default:100},x:{default:0},y:{default:0},offset:{default:0}},setup(t){const{id:e,viewport:n}=ue(),i=et(()=>{const r=n.value.zoom,[a,l]=Array.isArray(t.gap)?t.gap:[t.gap,t.gap],u=[a*r||1,l*r||1],h=t.size*r,[f,g]=Array.isArray(t.offset)?t.offset:[t.offset,t.offset],v=[f*r||1+u[0]/2,g*r||1+u[1]/2];return{scaledGap:u,offset:v,size:h}}),o=_t(()=>`pattern-${e}${t.id?`-${t.id}`:""}`),s=_t(()=>t.color||t.patternColor||Ra[t.variant||gt.Dots]);return(r,a)=>(C(),R("svg",{class:"vue-flow__background vue-flow__container",style:cn({height:`${r.height>100?100:r.height}%`,width:`${r.width>100?100:r.width}%`})},[j(r.$slots,"pattern-container",{id:o.value},()=>[S("pattern",{id:o.value,x:$(n).x%i.value.scaledGap[0],y:$(n).y%i.value.scaledGap[1],width:i.value.scaledGap[0],height:i.value.scaledGap[1],patternTransform:`translate(-${i.value.offset[0]},-${i.value.offset[1]})`,patternUnits:"userSpaceOnUse"},[j(r.$slots,"pattern",{},()=>[r.variant===$(gt).Lines?(C(),tt($(Vn),{key:0,size:r.lineWidth,color:s.value,dimensions:i.value.scaledGap},null,8,["size","color","dimensions"])):r.variant===$(gt).Dots?(C(),tt($(On),{key:1,color:s.value,radius:i.value.size/2},null,8,["color","radius"])):U("",!0),r.bgColor?(C(),R("svg",Da,[S("rect",{width:"100%",height:"100%",fill:r.bgColor},null,8,Fa)])):U("",!0)])],8,Aa)]),S("rect",{x:r.x,y:r.y,width:"100%",height:"100%",fill:`url(#${o.value})`},null,8,Ba),j(r.$slots,"default",{id:o.value})],4))}});class Pa{constructor(){this.executionContext={},this.executionHistory=[],this.isExecuting=!1,this.executionPaths=new Map,this.conditionNodes=new Map}async executeFlow(e,n,i={}){if(this.isExecuting)throw new Error("流程正在执行中,请等待完成");this.isExecuting=!0,this.executionContext={...i},this.executionHistory=[];try{const o=JSON.parse(JSON.stringify(e)),s=JSON.parse(JSON.stringify(n));return this.buildExecutionGraph(o,s),{success:!0,result:await this.executeGraph(),history:this.executionHistory,context:this.executionContext}}catch(o){return{success:!1,error:o.message,history:this.executionHistory,context:this.executionContext}}finally{this.isExecuting=!1}}buildExecutionGraph(e,n){this.nodes=new Map(e.map(i=>[i.id,i])),this.edges=n,this.conditionNodes.clear(),this.executionPaths.clear();for(const i of n){const o=this.nodes.get(i.source);if(this.nodes.get(i.target),(o==null?void 0:o.type)==="condition_check"){this.conditionNodes.has(i.source)||this.conditionNodes.set(i.source,{truePath:new Set,falsePath:new Set,mainPath:new Set});const s=this.conditionNodes.get(i.source);i.sourceHandle==="true_output"?s.truePath.add(i.target):i.sourceHandle==="false_output"?s.falsePath.add(i.target):i.sourceHandle==="output"&&s.mainPath.add(i.target)}}this.executionOrder=this.topologicalSort()}topologicalSort(){const e=new Map,n=new Map;for(const s of this.nodes.keys())e.set(s,[]),n.set(s,0);for(const s of this.edges){const r=s.source,a=s.target;e.has(a)&&(e.get(a).push(r),n.set(a,n.get(a)+1))}const i=[],o=[];for(const[s,r]of n)r===0&&i.push(s);for(;i.length>0;){const s=i.shift();o.push(s);for(const[r,a]of e)if(a.includes(s)){const l=n.get(r)-1;n.set(r,l),l===0&&i.push(r)}}if(o.length!==this.nodes.size)throw new Error("流程中存在循环依赖");return o}async executeGraph(){const e={node_results:{},flow_id:this.executionContext.agent_name},n={},i=new Set;for(const o of this.executionOrder){const s=this.nodes.get(o);if(!this.shouldExecuteNode(s,e,i))continue;const r=await this.executeNode(s,e);n[o]=r,e.node_results[o]=r,i.add(o),this.recordExecutionHistory(s,r)}return n}shouldExecuteNode(e,n,i){if(i.has(e.id))return!1;for(const[o,s]of this.conditionNodes)if(s.truePath.has(e.id)||s.falsePath.has(e.id)||s.mainPath.has(e.id)){const r=n.node_results[o];if(s.mainPath.has(e.id))return!0;if((r==null?void 0:r.condition_met)!==void 0&&!(s.truePath.has(e.id)?r.condition_met:!r.condition_met))return!1}return!0}async executeNode(e,n){e.status="executing",this.updateNodeStatus(e.id,"executing");try{const i=this.buildNodeInputs(e,n),o=this.buildNodeConfig(e);n.current_node_id=e.id,n.flow_data={nodes:Array.from(this.nodes.values()),edges:this.edges};const r=await(await fetch(`/jingrow/nodes/${e.type}/execute`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({context:n,inputs:i,config:o})})).json();if(!r.success)throw new Error(r.error||"节点执行失败");return e.status="success",e.result=r,this.updateNodeStatus(e.id,"success"),r}catch(i){throw e.status="failed",e.error=i.message,this.updateNodeStatus(e.id,"failed",i.message),i}}buildNodeInputs(e,n){var o,s;const i={};if((o=e.data)!=null&&o.inputs)for(const[r,a]of Object.entries(e.data.inputs))i[r]=(s=n.node_results[a.from])==null?void 0:s[a.field];return i}buildNodeConfig(e){const{inputs:n,config:i={},...o}=e.data||{};return{...i,...o}}recordExecutionHistory(e,n){var o;let i=(o=e.data)==null?void 0:o.label;if(!i){const s=dn(e.type);i=s?s.label:e.type}this.executionHistory.push({nodeId:e.id,nodeType:e.type,nodeLabel:i,status:"success",result:n,timestamp:new Date().toISOString()})}buildNodeContext(e,n,i){const o={...this.executionContext};return(n.dependencies[e]||[]).forEach(r=>{const a=i[r];if(a&&a.success){const l=n.nodes[r];o[l.type]=a.data}}),o}updateNodeStatus(e,n,i=null){const o=new CustomEvent("nodeStatusUpdate",{detail:{nodeId:e,status:n,error:i}});window.dispatchEvent(o)}getExecutionHistory(){return this.executionHistory}getExecutionContext(){return this.executionContext}reset(){this.executionContext={},this.executionHistory=[],this.isExecuting=!1}}const Va=new Pa;const Oa={class:"toolbar"},qa={class:"toolbar-left"},La={class:"node-count"},Xa={class:"toolbar-right"},Ya={class:"main-content"},Ua={key:0,class:"execution-results-container"},Ga={class:"flow-container"},Wa={key:0,class:"status-indicator-fixed"},Ka={key:0,class:"unsaved-indicator"},Za={key:1,class:"saved-indicator"},Ja={key:0,class:"fa fa-exclamation-circle",style:{"margin-right":"6px"}},Qa={key:1,class:"fa fa-exclamation-triangle",style:{"margin-right":"6px"}},ja={key:2,class:"fa fa-check-circle",style:{"margin-right":"6px"}},tl={key:2,class:"loading-container"},el={key:0,class:"template-data-modal"},nl={class:"template-data-content"},il={class:"template-data-header"},ol={style:{display:"flex","align-items":"center",gap:"8px"}},rl=["title"],sl={style:{"max-height":"60vh",overflow:"auto",background:"#f3f4f6",color:"#222","font-size":"12px"}},al={key:0,class:"copy-tip"},ll={key:1,class:"sidebar"},ul={class:"sidebar-content"},cl={__name:"AIAgentFlowBuilder",props:{initialValue:{type:Object,default:()=>({})},agentId:{type:String,default:""}},setup(t,{expose:e}){const n=t,i=fi(),o=ni(),s=V(null),r=V(null),a=V(null),l=V(!0);V(null);const u=V(!1),h=()=>{u.value=!0},f=()=>{u.value=!1},g=V(!1),v=V(null),M=async()=>{if(g.value){g.value=!1,await we();try{v.value?W==null||W(v.value):i.nodes.length>0&&G({padding:.7})}catch{}}else{try{const y=F==null?void 0:F();y&&y.viewport&&(v.value={...y.viewport})}catch{}g.value=!0}},z=async()=>{g.value=!1,await we();try{v.value?W==null||W(v.value):i.nodes.length>0&&G({padding:.7})}catch{}},T=V(!1),b=V(null),P=V([]),E=V(!1),L=V(null),Z=et(()=>E.value&&L.value?L.value:"body"),J=()=>{const y=L.value;y&&(E.value?document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen():y.requestFullscreen?y.requestFullscreen():y.webkitRequestFullscreen?y.webkitRequestFullscreen():y.mozRequestFullScreen?y.mozRequestFullScreen():y.msRequestFullscreen&&y.msRequestFullscreen())},A=()=>{E.value=!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)},{fitView:G,setViewport:W,toObject:F}=ue(),Rt=()=>{i.nodes.length>0&&G({padding:.7})},Et=V({}),kt=V(!1);Oe(async()=>{try{await di();const y=gi();Et.value=ii(y),kt.value=!0,await we(),Un(),i.saveToHistory()}catch(y){console.error("节点元数据加载失败:",y),kt.value=!0}});const c=y=>{const w=dn(y);return w?w.color:"#6b7280"},k=et(()=>i.nodes),d=et(()=>i.edges),x=et(()=>r.value||a.value),p=y=>{r.value=y.node,a.value=null};function _(y){}const m=y=>{a.value=y.edge,r.value=null},N=()=>{r.value=null,a.value=null},B=y=>{if(!y.source||!y.target)return;const w=y.sourceHandle||"output",ht=y.targetHandle||"input";if(w==="output"&&ht==="output"){ve(D("Output cannot connect to output"),"error");return}if(i.hasConnection(y.source,y.target,w,ht)){ve(D("Connection already exists, please do not repeat"),"error");return}if(y.source===y.target){ve(D("A node cannot connect to itself"),"error");return}const Nt={id:`edge-${Date.now()}`,source:y.source,target:y.target,sourceHandle:w,targetHandle:ht,type:"smoothstep",animated:!0,style:{stroke:"#6366f1",strokeWidth:2.5,filter:"drop-shadow(0 2px 8px #6366f133)"},markerEnd:{type:"arrowclosed",color:"#6366f1"}};i.addEdge(Nt),i.markDirty()},I=y=>{},H=y=>{},X=y=>{i.updateNodePosition(y.node.id,y.node.position),i.markDirty()},K=()=>{r.value&&(i.removeNode(r.value.id),r.value=null),a.value&&(i.removeEdge(a.value.id),a.value=null),i.markDirty()},Q=y=>{y.preventDefault(),y.dataTransfer.dropEffect="move"},it=y=>{y.preventDefault();const w=y.dataTransfer.getData("application/vueflow");if(!w)return;const ht=document.querySelector(".vue-flow-container");let Nt={x:100,y:100};if(ht&&s.value&&typeof s.value.project=="function"){const xt=ht.getBoundingClientRect(),ye=y.clientX-xt.left,Kn=y.clientY-xt.top;Nt=s.value.project({x:ye,y:Kn}),Nt.x+=Math.random()*20-10,Nt.y+=Math.random()*20-10}const Wn={id:`${w}-${Date.now()}`,type:w,position:Nt,data:{...At()}};i.addNode(Wn),i.markDirty();try{let xt=JSON.parse(localStorage.getItem("ai-agent-node-recent")||"[]");xt=[w,...xt.filter(ye=>ye!==w)].slice(0,12),localStorage.setItem("ai-agent-node-recent",JSON.stringify(xt)),window.dispatchEvent(new Event("recent-node-updated"))}catch{}},At=y=>({inputs:{},config:{}});Oe(()=>{window.nodePropertyTeleportTarget={get value(){return Z.value}};const y=w=>{(w.target.tagName==="INPUT"||w.target.tagName==="TEXTAREA"||w.target.isContentEditable||w.target.closest(".form-control")||w.target.closest("input")||w.target.closest("textarea"))&&(w.key==="Delete"||w.key==="Backspace")||(w.ctrlKey&&w.key==="z"&&!w.shiftKey?(w.preventDefault(),i.undo()):w.ctrlKey&&w.key==="y"||w.ctrlKey&&w.shiftKey&&w.key==="Z"?(w.preventDefault(),i.redo()):(w.key==="Delete"||w.key==="Backspace")&&K())};document.addEventListener("keydown",y),document.addEventListener("fullscreenchange",A),document.addEventListener("webkitfullscreenchange",A),document.addEventListener("mozfullscreenchange",A),document.addEventListener("MSFullscreenChange",A),oi(()=>{document.removeEventListener("keydown",y),document.removeEventListener("fullscreenchange",A),document.removeEventListener("webkitfullscreenchange",A),document.removeEventListener("mozfullscreenchange",A),document.removeEventListener("MSFullscreenChange",A)}),i.loadFromStorage(),window.vueFlowInstance=s.value}),qe(()=>[i.nodes,i.edges],()=>{i.saveToStorage()},{deep:!0});const qn=async()=>{if(T.value){o.warning(D("Flow is executing, please wait"));return}try{T.value=!0,b.value=null,P.value=[];const y=n.agentId.trim(),w=await Va.executeFlow(i.nodes,i.edges,{agent_name:y});b.value=w,P.value=w.history||[],w.success}catch(y){o.error(D("Execution error")+`: ${y.message}`)}finally{T.value=!1,b.value&&(g.value=!0)}},Ln=()=>{i.saveToHistory(),i.resetFlow(),r.value=null,a.value=null},Xn=()=>{l.value=!l.value},Yn=()=>i.getFlowData(),Un=()=>{if(n.initialValue!==void 0){i.loadFlowData(n.initialValue);return}i.loadFromStorage()};e({getFlowData:Yn});const de=V(!1),ge=V("");let pe=null;qe(()=>i.hasUnsavedChanges,(y,w)=>{w!==void 0&&(de.value=!0,ge.value=y?D("Unsaved"):D("Saved"),pe&&clearTimeout(pe),pe=setTimeout(()=>{de.value=!1},3e3))});const me=V(!1),Gn=async()=>{try{const y=JSON.stringify({nodes:k.value,edges:d.value},null,2);await navigator.clipboard.writeText(y),me.value=!0,setTimeout(()=>{me.value=!1},2e3)}catch{o.error(D("Copy failed, please copy manually"))}},ot=V({show:!1,text:"",timeout:null,type:""}),ve=(y,w="")=>{ot.value.text=y,ot.value.type=w,ot.value.show=!0,ot.value.timeout&&clearTimeout(ot.value.timeout),ot.value.timeout=setTimeout(()=>{ot.value.show=!1,ot.value.type=""},2e3)};return(y,w)=>(C(),R("div",{class:Vt(["ai-agent-flow-builder",{fullscreen:E.value}]),ref_key:"flowBuilderRoot",ref:L},[S("div",Oa,[S("div",qa,[S("span",La,q($(D)("Nodes"))+": "+q(k.value.length)+" "+q($(D)("Edges"))+": "+q(d.value.length),1)]),S("div",Xa,[Y($(ri),{size:6,align:"center",class:"ni-toolbar",wrap:""},{default:O(()=>[$(i).canUndo?(C(),tt($(mt),{key:0,quaternary:"",size:"small",type:"default",class:"ni-btn",title:$(D)("Undo"),onClick:$(i).undo},{default:O(()=>[w[0]||(w[0]=S("i",{class:"fa fa-undo"},null,-1)),st(" "+q($(D)("Undo")),1)]),_:1},8,["title","onClick"])):U("",!0),Y($(mt),{quaternary:"",size:"small",type:"error",class:"ni-btn",onClick:Ln},{default:O(()=>[w[1]||(w[1]=S("i",{class:"fa fa-refresh"},null,-1)),st(" "+q($(D)("Reset")),1)]),_:1}),Y($(mt),{quaternary:"",size:"small",type:"info",class:"ni-btn",onClick:h},{default:O(()=>[w[2]||(w[2]=S("i",{class:"fa fa-code"},null,-1)),st(" "+q($(D)("View Data")),1)]),_:1}),Y($(mt),{quaternary:"",size:"small",type:"info",class:"ni-btn",onClick:M},{default:O(()=>[w[3]||(w[3]=S("i",{class:"fa fa-list-alt"},null,-1)),st(" "+q(g.value?$(D)("Back to Flow"):$(D)("Execution Results")),1)]),_:1}),Y($(mt),{quaternary:"",size:"small",type:"success",class:"ni-btn",disabled:T.value,onClick:qn},{default:O(()=>[w[4]||(w[4]=S("i",{class:"fa fa-play"},null,-1)),st(" "+q(T.value?$(D)("Executing..."):$(D)("Execute")),1)]),_:1},8,["disabled"]),Y($(mt),{quaternary:"",size:"small",type:"default",class:"ni-btn ni-btn-neutral",onClick:$(G)},{default:O(()=>[w[5]||(w[5]=S("i",{class:"fa fa-expand"},null,-1)),st(" "+q($(D)("Fit View")),1)]),_:1},8,["onClick"]),Y($(mt),{quaternary:"",size:"small",type:"success",class:"ni-btn",onClick:Xn},{default:O(()=>[w[6]||(w[6]=S("i",{class:"fa fa-plus"},null,-1)),st(" "+q($(D)("Add Node")),1)]),_:1}),Y($(mt),{quaternary:"",size:"small",type:"default",class:"ni-btn ni-btn-neutral",onClick:J},{default:O(()=>[S("i",{class:Vt(E.value?"fa fa-compress":"fa fa-arrows-alt")},null,2),st(" "+q(E.value?$(D)("Exit Fullscreen"):$(D)("Fullscreen")),1)]),_:1})]),_:1})])]),S("div",Ya,[g.value?(C(),R("div",Ua,[Y(mi,{executionResult:b.value,executionHistory:P.value,onClose:z},null,8,["executionResult","executionHistory"])])):(C(),R(le,{key:1},[S("div",Ga,[de.value?(C(),R("div",Wa,[$(i).hasUnsavedChanges?(C(),R("div",Ka,[w[7]||(w[7]=S("i",{class:"fa fa-circle text-warning"},null,-1)),st(" "+q(ge.value),1)])):(C(),R("div",Za,[w[8]||(w[8]=S("i",{class:"fa fa-check-circle text-success"},null,-1)),st(" "+q(ge.value),1)]))])):U("",!0),Y(Le,{name:"fade"},{default:O(()=>[ot.value.show?(C(),R("div",{key:0,class:Vt(["bubble-tip-global",ot.value.type])},[ot.value.type==="error"?(C(),R("i",Ja)):ot.value.type==="warn"?(C(),R("i",Qa)):(C(),R("i",ja)),st(" "+q(ot.value.text),1)],2)):U("",!0)]),_:1}),kt.value?(C(),tt($(hi),{key:1,ref_key:"vueFlowInstance",ref:s,nodes:k.value,edges:d.value,"node-types":Et.value,class:"vue-flow-container",onNodeClick:p,onEdgeClick:m,onPaneClick:N,onConnect:B,onConnectStart:I,onConnectEnd:H,onNodeDragStop:X,onDrop:it,onDragover:Q,onEditNode:_,"min-zoom":.2,"max-zoom":4,"nodes-connectable":"","nodes-draggable":"","edges-updatable":"","delete-key-code":"Delete","default-edge-options":{type:"smoothstep",animated:!0,style:{stroke:"#6366f1",strokeWidth:2.5,filter:"drop-shadow(0 2px 8px #6366f133)"},markerEnd:{type:"arrowclosed",color:"#6366f1"}},"connection-line-type":"smoothstep","connection-line-style":{stroke:"#94a3b8",strokeWidth:2,strokeDasharray:"5,5"},onPaneReady:Rt},{default:O(()=>[Y($(Ha),{pattern:"dots",gap:20}),Y($(Wi),null,{default:O(()=>[x.value?(C(),tt($(It),{key:0,onClick:K,title:$(D)("Delete Selected")},{default:O(()=>[...w[9]||(w[9]=[S("i",{class:"fa fa-trash"},null,-1)])]),_:1},8,["title"])):U("",!0)]),_:1}),Y($(Ta),{"node-stroke-width":3,"node-color":ht=>c(ht.type)},null,8,["node-color"])]),_:1},8,["nodes","edges","node-types"])):(C(),R("div",tl,[...w[10]||(w[10]=[S("div",{class:"loading-spinner"},[S("i",{class:"fa fa-spinner fa-spin"}),S("p",null,"正在加载节点类型...")],-1)])]))]),u.value?(C(),R("div",el,[S("div",nl,[S("div",il,[S("span",null,q($(D)("Flow Data")),1),S("div",ol,[S("button",{class:"copy-btn",onClick:Gn,title:$(D)("Copy")},[...w[11]||(w[11]=[S("i",{class:"fa fa-copy"},null,-1)])],8,rl),S("button",{class:"close-btn",onClick:f},"×")])]),S("pre",sl,""+q(JSON.stringify({nodes:k.value,edges:d.value},null,2))+` + `,1),Y(Le,{name:"fade"},{default:O(()=>[me.value?(C(),R("div",al,q($(D)("Copied")),1)):U("",!0)]),_:1})]),S("div",{class:"template-data-mask",onClick:f})])):U("",!0),l.value?(C(),R("div",ll,[S("div",ul,[Y(pi,{class:"node-palette"})])])):U("",!0)],64))])],2))}},_l=vi(cl,[["__scopeId","data-v-d7ab6be8"]]);export{_l as default}; diff --git a/apps/jingrow/frontend/dist/assets/AgentDetail-42660026.js b/apps/jingrow/frontend/dist/assets/AgentDetail-42660026.js new file mode 100644 index 0000000..88db5c9 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AgentDetail-42660026.js @@ -0,0 +1 @@ +import{d as q,u as J,X,r as _,c as $,o as Y,e as d,f as a,g as i,j as s,h as c,w as g,a1 as G,y as f,v as K,k as Q,a0 as I,t,a2 as W,l as u,$ as b,p as T,n as z,as as Z,aA as ee}from"./index-d271a6a3.js";import{I as m}from"./iconify-242f8a3c.js";import{I as te}from"./InstallProgressModal-2b90d319.js";import{_ as ae}from"./_plugin-vue_export-helper-c27b6911.js";const se={class:"agent-detail"},ne={class:"page-header"},oe={class:"header-content"},le={class:"header-text"},ie={class:"header-actions"},re={key:0,class:"loading-container"},ce={key:1,class:"error-container"},de={key:2,class:"agent-content"},ue={class:"agent-card"},ge={class:"agent-info-section"},_e={class:"agent-content-layout"},ve={class:"agent-image-section"},fe={class:"agent-image"},pe={key:0,class:"agent-icon-container"},he={key:1,class:"placeholder-image"},me={class:"agent-info-content"},ye={class:"agent-header"},we={class:"agent-title"},ke={key:0,class:"agent-subtitle"},Ae={class:"info-list"},Ie={key:0,class:"info-item"},be={class:"label"},Ce={class:"value"},xe={key:1,class:"info-item"},Ne={class:"label"},De={class:"value"},Se={key:2,class:"info-item"},Te={class:"label"},Me={class:"value"},Le={key:3,class:"info-item"},Ve={class:"label"},je={class:"value"},Be={key:4,class:"info-item"},$e={class:"label"},ze={class:"value"},Ee={key:0,class:"description-section"},Pe=["innerHTML"],Fe=q({__name:"AgentDetail",setup(Re){const M=K(),C=Q(),x=J(),E=X(),N=_(!0),y=_(""),e=_(null),w=_(!1),k=_(0),p=_(""),A=_("info"),h=_(!1),L=_(new Set),P=$(()=>M.params.name),D=$(()=>e.value?H(e.value.agent_name||e.value.name||""):!1);async function F(){var n,l;N.value=!0,y.value="";try{const o=await I.get(`/jingrow/agent-marketplace/${P.value}`);e.value=o.data}catch(o){console.error("Failed to load agent detail:",o),y.value=((l=(n=o.response)==null?void 0:n.data)==null?void 0:l.detail)||t("Failed to load agent details")}finally{N.value=!1}}function V(n){if(!n)return"";const l=new Date(n),o=l.getFullYear(),v=String(l.getMonth()+1).padStart(2,"0"),r=String(l.getDate()).padStart(2,"0");return`${o}-${v}-${r}`}function R(){const n=M.query.returnTo;if(n){C.push(n);return}window.history.length>1?C.back():C.push("/agent-marketplace")}async function U(){var n,l;if(!((n=e.value)!=null&&n.agent_flow)&&!((l=e.value)!=null&&l.agent_name)){x.error(t("Agent flow data or name is missing"));return}try{const o=e.value.agent_name||e.value.name;if(o&&(await I.get(`/jingrow/check-agent/${o}`)).data.exists){E.warning({title:t("Agent already exists"),content:t('Agent "{0}" is already installed, do you want to overwrite?').replace("{0}",o),positiveText:t("Confirm Overwrite"),negativeText:t("Cancel"),onPositiveClick:()=>{j()}});return}}catch(o){console.error("Check agent exists error:",o)}j()}async function j(){var n,l,o,v;try{w.value=!0,k.value=0,p.value=t("Preparing installation..."),A.value="info",h.value=!0;let r=e.value.agent_flow,O=e.value.agent_name||e.value.name;if(!r)throw new Error(t("Agent flow data is missing"));if(k.value=30,p.value=t("Installing agent..."),typeof r=="string")try{r=JSON.parse(r)}catch{}const B=await I.post("/jingrow/install-agent",{agent_name:O,agent_flow:r},{headers:{...W(),"Content-Type":"application/json"}});if(k.value=100,B.data.success)w.value=!1,A.value="success",p.value=t("Agent installed successfully!"),x.success(t("Agent installed successfully")),S(),setTimeout(()=>{h.value=!1},2e3);else throw new Error(B.data.error||t("安装失败"))}catch(r){console.error("Install agent error:",r),w.value=!1,A.value="error",p.value=((l=(n=r.response)==null?void 0:n.data)==null?void 0:l.detail)||r.message||t("Installation failed"),x.error(((v=(o=r.response)==null?void 0:o.data)==null?void 0:v.detail)||t("Installation failed")),setTimeout(()=>{h.value=!1},3e3)}}async function S(){try{const n=await I.get("/jingrow/installed-agent-names");if(n.data.success){const l=n.data.agents||[];L.value=new Set(l.map(o=>o.toLowerCase()))}}catch(n){console.error("Load installed agents error:",n)}}function H(n){return n?L.value.has(n.toLowerCase()):!1}return Y(()=>{F(),S(),window.addEventListener("installedAgentsUpdated",()=>{S()})}),(n,l)=>{var o,v;return u(),d("div",se,[a("div",ne,[a("div",oe,[a("div",le,[a("h1",null,i(((o=e.value)==null?void 0:o.title)||((v=e.value)==null?void 0:v.agent_name)||s(t)("Agent Details")),1)]),a("div",ie,[c(s(z),{onClick:R,size:"medium"},{icon:g(()=>[c(s(b),null,{default:g(()=>[c(s(m),{icon:"tabler:arrow-left"})]),_:1})]),default:g(()=>[T(" "+i(s(t)("Back")),1)]),_:1}),c(s(z),{type:D.value?"warning":"primary",onClick:U,size:"medium"},{icon:g(()=>[c(s(b),null,{default:g(()=>[c(s(m),{icon:D.value?"tabler:check":"tabler:download"},null,8,["icon"])]),_:1})]),default:g(()=>[T(" "+i(D.value?s(t)("Installed"):s(t)("Install")),1)]),_:1},8,["type"])])])]),N.value?(u(),d("div",re,[c(s(Z),{size:"large"},{description:g(()=>[T(i(s(t)("Loading agent details...")),1)]),_:1})])):y.value?(u(),d("div",ce,[c(s(ee),{description:y.value},{icon:g(()=>[c(s(b),null,{default:g(()=>[c(s(m),{icon:"tabler:alert-circle"})]),_:1})]),_:1},8,["description"])])):e.value?(u(),d("div",de,[a("div",ue,[a("div",ge,[a("div",_e,[a("div",ve,[a("div",fe,[e.value.icon?(u(),d("div",pe,[c(s(m),{icon:e.value.icon,width:120,height:120,style:G({color:e.value.color||"#6b7280"})},null,8,["icon","style"])])):(u(),d("div",he,[c(s(b),{size:"80"},{default:g(()=>[c(s(m),{icon:"hugeicons:robotic"})]),_:1})]))])]),a("div",me,[a("div",ye,[a("h2",we,i(e.value.title||e.value.agent_name||s(t)("Untitled Agent")),1),e.value.subtitle?(u(),d("div",ke,i(e.value.subtitle),1)):f("",!0)]),a("div",Ae,[e.value.agent_name?(u(),d("div",Ie,[a("span",be,i(s(t)("Agent Name"))+":",1),a("span",Ce,i(e.value.agent_name),1)])):f("",!0),e.value.status?(u(),d("div",xe,[a("span",Ne,i(s(t)("Status"))+":",1),a("span",De,i(e.value.status),1)])):f("",!0),e.value.trigger_mode?(u(),d("div",Se,[a("span",Te,i(s(t)("Trigger Mode"))+":",1),a("span",Me,i(e.value.trigger_mode),1)])):f("",!0),e.value.creation?(u(),d("div",Le,[a("span",Ve,i(s(t)("Created"))+":",1),a("span",je,i(V(e.value.creation)),1)])):f("",!0),e.value.modified?(u(),d("div",Be,[a("span",$e,i(s(t)("Last Updated"))+":",1),a("span",ze,i(V(e.value.modified)),1)])):f("",!0)])])])]),e.value.description?(u(),d("div",Ee,[a("h3",null,i(s(t)("Description")),1),a("div",{class:"description-content",innerHTML:e.value.description},null,8,Pe)])):f("",!0)])])):f("",!0),c(te,{modelValue:h.value,"onUpdate:modelValue":l[0]||(l[0]=r=>h.value=r),progress:k.value,message:p.value,status:A.value,installing:w.value,title:s(t)("Installing Agent")},null,8,["modelValue","progress","message","status","installing","title"])])}}});const Xe=ae(Fe,[["__scopeId","data-v-e1f6ec28"]]);export{Xe as default}; diff --git a/apps/jingrow/frontend/dist/assets/AgentDetail-9d54c98a.css b/apps/jingrow/frontend/dist/assets/AgentDetail-9d54c98a.css new file mode 100644 index 0000000..fad32a9 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AgentDetail-9d54c98a.css @@ -0,0 +1 @@ +.agent-detail[data-v-e1f6ec28]{padding:24px}.page-header[data-v-e1f6ec28]{margin-bottom:32px}.header-content[data-v-e1f6ec28]{display:flex;justify-content:space-between;align-items:center}.header-actions[data-v-e1f6ec28]{display:flex;align-items:center;gap:30px}.header-text h1[data-v-e1f6ec28]{margin:0 0 8px;font-size:28px;font-weight:700;color:#1a1a1a}.header-text p[data-v-e1f6ec28]{margin:0;color:#666;font-size:16px}.loading-container[data-v-e1f6ec28],.error-container[data-v-e1f6ec28]{display:flex;justify-content:center;align-items:center;min-height:400px}.agent-content[data-v-e1f6ec28]{display:flex;flex-direction:column;gap:32px}.agent-card[data-v-e1f6ec28]{background:white;border-radius:8px;padding:24px;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column;gap:24px}.agent-content-layout[data-v-e1f6ec28]{display:grid;grid-template-columns:1fr 2fr;gap:50px;align-items:start}.agent-image-section[data-v-e1f6ec28]{display:flex;justify-content:center;align-items:center}.agent-image[data-v-e1f6ec28]{width:100%;min-height:300px;border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center}.agent-icon-container[data-v-e1f6ec28]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:20px}.placeholder-image[data-v-e1f6ec28]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#9ca3af}.agent-header[data-v-e1f6ec28]{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid #e5e7eb}.agent-title[data-v-e1f6ec28]{margin:0;font-size:22px;font-weight:600;color:#1a1a1a}.agent-subtitle[data-v-e1f6ec28]{margin:8px 0 0;font-size:14px;color:#6b7280}.info-list[data-v-e1f6ec28]{display:flex;flex-direction:column;gap:12px}.info-item[data-v-e1f6ec28]{display:flex;align-items:center;gap:12px}.info-item .label[data-v-e1f6ec28]{font-weight:500;color:#374151;font-size:14px;min-width:80px}.info-item .value[data-v-e1f6ec28]{color:#6b7280;font-size:14px}.link[data-v-e1f6ec28]{color:#2563eb;text-decoration:none}.link[data-v-e1f6ec28]:hover{text-decoration:underline}.text-muted[data-v-e1f6ec28]{color:#9ca3af;font-style:italic}.description-section[data-v-e1f6ec28]{padding-top:24px;border-top:1px solid #e5e7eb}.description-section h3[data-v-e1f6ec28]{margin:0 0 20px;font-size:20px;font-weight:600;color:#1f2937}.description-content[data-v-e1f6ec28]{color:#374151;line-height:1.6}.description-content[data-v-e1f6ec28] h1,.description-content[data-v-e1f6ec28] h2,.description-content[data-v-e1f6ec28] h3,.description-content[data-v-e1f6ec28] h4,.description-content[data-v-e1f6ec28] h5,.description-content[data-v-e1f6ec28] h6{margin:16px 0 8px;color:#1f2937}.description-content[data-v-e1f6ec28] p{margin:8px 0}.description-content[data-v-e1f6ec28] ul,.description-content[data-v-e1f6ec28] ol{margin:8px 0;padding-left:20px}.description-content[data-v-e1f6ec28] li{margin:4px 0}.description-content[data-v-e1f6ec28] code{background:#f3f4f6;padding:2px 6px;border-radius:4px;font-family:Courier New,monospace;font-size:14px}.description-content[data-v-e1f6ec28] pre{background:#f3f4f6;padding:16px;border-radius:8px;overflow-x:auto;margin:16px 0}.description-content[data-v-e1f6ec28] blockquote{border-left:4px solid #e5e7eb;padding-left:16px;margin:16px 0;color:#6b7280;font-style:italic}@media (max-width: 768px){.agent-card[data-v-e1f6ec28]{padding:20px}.agent-content-layout[data-v-e1f6ec28]{grid-template-columns:1fr;gap:30px}.agent-image-section[data-v-e1f6ec28]{order:2;justify-content:center}.agent-image[data-v-e1f6ec28]{max-width:150px}.agent-title[data-v-e1f6ec28]{font-size:20px}.info-item[data-v-e1f6ec28]{flex-direction:column;align-items:flex-start;gap:4px}.info-item .label[data-v-e1f6ec28]{min-width:auto}.header-content[data-v-e1f6ec28]{flex-direction:column;gap:16px}} diff --git a/apps/jingrow/frontend/dist/assets/AgentMarketplace-14ffcebd.js b/apps/jingrow/frontend/dist/assets/AgentMarketplace-14ffcebd.js new file mode 100644 index 0000000..503f5f3 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AgentMarketplace-14ffcebd.js @@ -0,0 +1 @@ +import{d as ee,u as ae,X as te,r as i,c as K,o as se,M as L,e as v,f as l,g as d,j as s,h as o,w as c,i as ne,F as le,C as oe,y as C,k as ie,a0 as I,t,l as u,$ as z,m as re,p as A,n as $,Z as ce,D as U,a1 as ue,_ as de,as as ge,aA as ve,a2 as pe}from"./index-d271a6a3.js";import{I as S}from"./iconify-242f8a3c.js";import{I as _e}from"./InstallProgressModal-2b90d319.js";import{_ as me}from"./_plugin-vue_export-helper-c27b6911.js";const he={class:"agent-marketplace"},fe={class:"page-header"},ye={class:"header-content"},we={class:"header-text"},ke={class:"content"},Ce={class:"search-container"},Ie={class:"search-bar"},Ae={key:0,class:"agents-section"},Se={class:"agents-header"},be={class:"sort-controls"},Ne={class:"agents-grid"},Me=["onClick"],Pe={key:1,class:"agent-icon-placeholder"},xe={class:"agent-content"},ze={class:"agent-header"},$e={class:"agent-title-section"},Te=["onClick"],je={key:0,class:"agent-name"},Be={key:0,class:"agent-description"},Fe={class:"agent-actions"},Le={class:"pagination-container"},Ue={key:1,class:"loading"},Ve={key:2,class:"empty"},Ee=ee({__name:"AgentMarketplace",setup(Re){const b=ae(),q=te(),Q=ie(),T=i(""),f=i(!1),p=i([]),N=i(0),_=i(1),y=i(parseInt(localStorage.getItem("itemsPerPage")||"20")),M=i("creation desc"),P=i(!1),w=i(0),h=i(""),x=i("info"),k=i(!1),V=i(new Set),X=K(()=>[{label:t("Latest"),value:"creation desc"},{label:t("Oldest"),value:"creation asc"},{label:t("Name A-Z"),value:"agent_name asc"},{label:t("Name Z-A"),value:"agent_name desc"},{label:t("Most Popular"),value:"modified desc"}]),G=K(()=>Math.max(1,Math.ceil(N.value/y.value)));async function g(){f.value=!0;try{const e=new URLSearchParams({page:_.value.toString(),page_size:y.value.toString(),search:T.value,sort_by:M.value}),a=(await I.get(`/jingrow/agent-marketplace?${e}`)).data;a.items?(p.value=a.items,N.value=a.total||0):(p.value=a||[],N.value=p.value.length)}catch(e){console.error("Failed to load agents:",e),b.error(t("Failed to load agents")),p.value=[],N.value=0}finally{f.value=!1}}function H(e){y.value=e,_.value=1,localStorage.setItem("itemsPerPage",e.toString()),g()}function j(e){Q.push({path:`/agent-marketplace/${e.name}`,query:{returnTo:"/agent-marketplace"}})}async function E(e){if(!e.agent_flow&&!e.agent_name){b.error(t("Agent flow data or name is missing"));return}try{const n=e.agent_name||e.name;if(n&&(await I.get(`/jingrow/check-agent/${n}`)).data.exists){q.warning({title:t("Agent already exists"),content:t('Agent "{0}" is already installed, do you want to overwrite?').replace("{0}",n),positiveText:t("Confirm Overwrite"),negativeText:t("Cancel"),onPositiveClick:()=>{R(e)}});return}}catch(n){console.error("Check agent exists error:",n)}R(e)}async function R(e){var n,a,m,D;try{P.value=!0,w.value=0,h.value=t("Preparing installation..."),x.value="info",k.value=!0;let r=e.agent_flow,F=e.agent_name||e.name;if(!r){h.value=t("Fetching agent details..."),w.value=20;try{const J=(await I.get(`/jingrow/agent-marketplace/${e.name}`)).data;r=J.agent_flow,F=J.agent_name||F}catch{throw new Error(t("Failed to fetch agent details"))}}if(!r)throw new Error(t("Agent flow data is missing"));if(w.value=40,h.value=t("Installing agent..."),typeof r=="string")try{r=JSON.parse(r)}catch{}const O=await I.post("/jingrow/install-agent",{agent_name:F,agent_flow:r},{headers:{...pe(),"Content-Type":"application/json"}});if(w.value=100,O.data.success)P.value=!1,x.value="success",h.value=t("Agent installed successfully!"),b.success(t("Agent installed successfully")),B(),setTimeout(()=>{k.value=!1},2e3);else throw new Error(O.data.error||t("Installation failed"))}catch(r){console.error("Install agent error:",r),P.value=!1,x.value="error",h.value=((a=(n=r.response)==null?void 0:n.data)==null?void 0:a.detail)||r.message||t("Installation failed"),b.error(((D=(m=r.response)==null?void 0:m.data)==null?void 0:D.detail)||t("Installation failed")),setTimeout(()=>{k.value=!1},3e3)}}function W(e,n){return e?e.length<=n?e:e.substring(0,n)+"...":""}async function B(){try{const e=await I.get("/jingrow/installed-agent-names");if(e.data.success){const n=e.data.agents||[];V.value=new Set(n.map(a=>a.toLowerCase()))}}catch(e){console.error("Load installed agents error:",e)}}function Y(e){return e?V.value.has(e.toLowerCase()):!1}return se(()=>{g(),B(),window.addEventListener("installedAgentsUpdated",()=>{B()})}),L([M],()=>{_.value=1,g()},{deep:!0}),L([_],()=>{g()}),L(()=>localStorage.getItem("itemsPerPage"),e=>{e&&(y.value=parseInt(e),_.value=1,g())}),(e,n)=>(u(),v("div",he,[l("div",fe,[l("div",ye,[l("div",we,[l("h1",null,d(s(t)("Agent Marketplace")),1),l("p",null,d(s(t)("Browse and install agents from Jingrow Agent Marketplace")),1)])])]),l("div",ke,[l("div",Ce,[l("div",Ie,[o(s(re),{value:T.value,"onUpdate:value":n[0]||(n[0]=a=>T.value=a),placeholder:s(t)("Search agents..."),clearable:"",size:"large",onKeyup:ne(g,["enter"]),class:"search-input"},{prefix:c(()=>[o(s(z),null,{default:c(()=>[o(s(S),{icon:"tabler:search"})]),_:1})]),_:1},8,["value","placeholder"]),o(s($),{type:"primary",size:"large",onClick:g,class:"search-button"},{icon:c(()=>[o(s(z),null,{default:c(()=>[o(s(S),{icon:"tabler:search"})]),_:1})]),default:c(()=>[A(" "+d(s(t)("Search")),1)]),_:1})])]),!f.value&&p.value.length>0?(u(),v("div",Ae,[l("div",Se,[n[4]||(n[4]=l("div",{class:"agents-title"},null,-1)),l("div",be,[o(s(ce),{value:M.value,"onUpdate:value":[n[1]||(n[1]=a=>M.value=a),g],options:X.value,placeholder:s(t)("Sort by"),style:{width:"150px"}},null,8,["value","options","placeholder"])])]),l("div",Ne,[(u(!0),v(le,null,oe(p.value,a=>(u(),v("div",{key:a.name,class:"agent-card"},[l("div",{class:"agent-icon",onClick:m=>j(a)},[a.icon?(u(),U(s(S),{key:0,icon:a.icon,width:48,height:48,style:ue({color:a.color||"#6b7280"})},null,8,["icon","style"])):(u(),v("div",Pe,[o(s(z),{size:"48"},{default:c(()=>[o(s(S),{icon:"hugeicons:robotic"})]),_:1})]))],8,Me),l("div",xe,[l("div",ze,[l("div",$e,[l("h3",{onClick:m=>j(a),class:"clickable-title"},d(a.title||a.agent_name||a.name),9,Te),a.agent_name?(u(),v("div",je,d(a.agent_name),1)):C("",!0)])]),a.description?(u(),v("div",Be,d(W(a.description,80)),1)):C("",!0)]),l("div",Fe,[o(s($),{type:"default",onClick:m=>j(a)},{default:c(()=>[A(d(s(t)("View Details")),1)]),_:1},8,["onClick"]),Y(a.agent_name||a.name)?(u(),U(s($),{key:0,type:"warning",onClick:m=>E(a)},{default:c(()=>[A(d(s(t)("Installed")),1)]),_:1},8,["onClick"])):(u(),U(s($),{key:1,type:"primary",onClick:m=>E(a)},{default:c(()=>[A(d(s(t)("Install")),1)]),_:1},8,["onClick"]))])]))),128))]),l("div",Le,[o(s(de),{page:_.value,"onUpdate:page":[n[2]||(n[2]=a=>_.value=a),g],"page-count":G.value,size:"large","show-size-picker":"","page-sizes":[20,50,100],"page-size":y.value,"onUpdate:pageSize":H},null,8,["page","page-count","page-size"])])])):C("",!0),f.value?(u(),v("div",Ue,[o(s(ge),{size:"large"},{description:c(()=>[A(d(s(t)("Loading agents...")),1)]),_:1})])):C("",!0),!f.value&&p.value.length===0?(u(),v("div",Ve,[o(s(ve),{description:s(t)("No agents found")},{icon:c(()=>[o(s(z),null,{default:c(()=>[o(s(S),{icon:"hugeicons:robotic"})]),_:1})]),_:1},8,["description"])])):C("",!0)]),o(_e,{modelValue:k.value,"onUpdate:modelValue":n[3]||(n[3]=a=>k.value=a),progress:w.value,message:h.value,status:x.value,installing:P.value,title:s(t)("Installing Agent")},null,8,["modelValue","progress","message","status","installing","title"])]))}});const Ke=me(Ee,[["__scopeId","data-v-4a3804b2"]]);export{Ke as default}; diff --git a/apps/jingrow/frontend/dist/assets/AgentMarketplace-457daa26.css b/apps/jingrow/frontend/dist/assets/AgentMarketplace-457daa26.css new file mode 100644 index 0000000..dc36a6a --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AgentMarketplace-457daa26.css @@ -0,0 +1 @@ +.agent-marketplace[data-v-4a3804b2]{padding:24px}.page-header[data-v-4a3804b2]{margin-bottom:32px}.header-content[data-v-4a3804b2]{display:flex;justify-content:space-between;align-items:flex-start}.header-text h1[data-v-4a3804b2]{margin:0 0 8px;font-size:28px;font-weight:700;color:#1a1a1a}.header-text p[data-v-4a3804b2]{margin:0;color:#666;font-size:16px}.search-container[data-v-4a3804b2]{display:flex;justify-content:center;margin-bottom:32px}.agents-section[data-v-4a3804b2]{margin-bottom:32px}.agents-header[data-v-4a3804b2]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.sort-controls[data-v-4a3804b2]{display:flex;align-items:center;gap:12px}.pagination-container[data-v-4a3804b2]{display:flex;justify-content:center;margin-top:32px;padding:20px 0}.search-bar[data-v-4a3804b2]{display:flex;gap:16px;align-items:center;max-width:600px;width:100%;padding:20px;background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);border-radius:20px;border:1px solid #e2e8f0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.search-input[data-v-4a3804b2]{flex:1;min-width:0}.search-input .n-input[data-v-4a3804b2]{border-radius:12px;border:1px solid #d1d5db;transition:all .2s ease}.search-input .n-input[data-v-4a3804b2]:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.search-button[data-v-4a3804b2]{border-radius:12px;font-weight:600;padding:0 24px;transition:all .2s ease}.search-button[data-v-4a3804b2]:hover{transform:translateY(-1px);box-shadow:0 4px 12px #3b82f64d}.agents-grid[data-v-4a3804b2]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.agent-card[data-v-4a3804b2]{border:1px solid #e5e7eb;border-radius:16px;background:white;overflow:hidden;transition:all .3s ease;box-shadow:0 1px 3px #0000001a}.agent-card[data-v-4a3804b2]:hover{transform:translateY(-4px);box-shadow:0 8px 25px #00000026;border-color:#d1d5db}.agent-icon[data-v-4a3804b2]{display:flex;align-items:center;justify-content:center;width:100%;height:120px;background:linear-gradient(135deg,#f3f4f6 0%,#e5e7eb 100%);cursor:pointer;padding:20px}.agent-icon-placeholder[data-v-4a3804b2]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#9ca3af}.agent-content[data-v-4a3804b2]{padding:20px}.agent-header[data-v-4a3804b2]{margin-bottom:12px}.agent-title-section[data-v-4a3804b2]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.agent-title-section h3[data-v-4a3804b2]{margin:0;font-size:18px;font-weight:600;color:#1f2937;line-height:1.2;flex:1;min-width:0}.clickable-title[data-v-4a3804b2]{cursor:pointer;transition:color .2s ease}.clickable-title[data-v-4a3804b2]:hover{color:#10b981}.agent-name[data-v-4a3804b2]{color:#6b7280;font-size:11px;font-weight:500;font-family:SF Mono,Monaco,Menlo,Ubuntu Mono,monospace;background:#f3f4f6;border:1px solid #d1d5db;border-radius:8px;padding:4px 10px;display:inline-block;white-space:nowrap}.agent-description[data-v-4a3804b2]{color:#6b7280;font-size:14px;line-height:1.5;margin-bottom:12px}.agent-actions[data-v-4a3804b2]{padding:0 20px 20px;display:flex;gap:12px}.agent-actions .n-button[data-v-4a3804b2]{flex:1}.loading[data-v-4a3804b2],.empty[data-v-4a3804b2]{display:flex;justify-content:center;align-items:center;min-height:300px}@media (max-width: 768px){.agents-grid[data-v-4a3804b2]{grid-template-columns:1fr;gap:16px}} diff --git a/apps/jingrow/frontend/dist/assets/AppDetail-3ee11a13.js b/apps/jingrow/frontend/dist/assets/AppDetail-3ee11a13.js new file mode 100644 index 0000000..feaba57 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AppDetail-3ee11a13.js @@ -0,0 +1 @@ +import{d as Y,u as G,X as J,r as _,c as j,o as K,e as r,f as t,g as n,j as l,h as u,w as d,y as v,v as O,k as Q,a0 as y,t as s,a2 as E,l as c,$ as I,p as N,n as V,as as Z,aA as ee}from"./index-d271a6a3.js";import{I as x}from"./iconify-242f8a3c.js";import{I as ae}from"./InstallProgressModal-2b90d319.js";import{_ as se}from"./_plugin-vue_export-helper-c27b6911.js";const te={class:"app-detail"},le={class:"page-header"},oe={class:"header-content"},ne={class:"header-text"},ie={class:"header-actions"},re={key:0,class:"loading-container"},ce={key:1,class:"error-container"},ue={key:2,class:"app-content"},pe={class:"app-card"},de={class:"app-info-section"},_e={class:"app-content-layout"},ve={class:"app-image-section"},he={class:"app-image"},fe=["src","alt"],me={key:1,class:"placeholder-image"},ge={class:"app-info-content"},ye={class:"app-header"},we={class:"app-title"},ke={key:0,class:"app-subtitle"},be={class:"info-list"},Ie={key:0,class:"info-item"},xe={class:"label"},Ae={class:"value"},Ce={key:1,class:"info-item"},Le={class:"label"},Te={class:"value"},De={key:2,class:"info-item"},Ne={class:"label"},Re=["href"],Se={key:3,class:"info-item"},Ue={class:"label"},Me=["href"],je={key:4,class:"info-item"},Ee={class:"label"},Ve={class:"value"},$e={key:5,class:"info-item"},Be={class:"label"},Pe={class:"value"},ze={key:0,class:"description-section"},Fe=["innerHTML"],He=Y({__name:"AppDetail",setup(qe){const R=O(),A=Q(),C=G(),$=J(),L=_(!0),w=_(""),e=_(null),k=_(!1),f=_(0),h=_(""),b=_("info"),g=_(!1),S=_(new Set),B=j(()=>R.params.name),T=j(()=>e.value?W(e.value.app_name||e.value.name||""):!1);async function P(){var a,o;L.value=!0,w.value="";try{const i=await y.get(`/jingrow/app-marketplace/${B.value}`);e.value=i.data}catch(i){console.error("Failed to load app detail:",i),w.value=((o=(a=i.response)==null?void 0:a.data)==null?void 0:o.detail)||s("Failed to load application details")}finally{L.value=!1}}function U(a){if(!a)return"";const o=new Date(a),i=o.getFullYear(),m=String(o.getMonth()+1).padStart(2,"0"),p=String(o.getDate()).padStart(2,"0");return`${i}-${m}-${p}`}function z(a){return a?a.startsWith("http")?a:`https://cloud.jingrow.com${a}`:""}function F(a){const o=a.target;o.style.display="none"}function H(){const a=R.query.returnTo;if(a){A.push(a);return}window.history.length>1?A.back():A.push("/app-marketplace")}async function q(){var a,o;if(!((a=e.value)!=null&&a.file_url)&&!((o=e.value)!=null&&o.repository_url)){C.error(s("应用文件URL或仓库地址不存在"));return}try{const i=e.value.app_name||e.value.name;if(i&&(await y.get(`/jingrow/check-app/${i}`)).data.exists){$.warning({title:s("应用已存在"),content:s('应用 "{0}" 已安装,是否覆盖安装?').replace("{0}",i),positiveText:s("确认覆盖"),negativeText:s("取消"),onPositiveClick:()=>{M()}});return}}catch(i){console.error("Check app exists error:",i)}M()}async function M(){var a,o,i,m;try{k.value=!0,f.value=0,h.value=s("正在准备安装..."),b.value="info",g.value=!0;let p;if(e.value.file_url)h.value=s("正在下载应用包..."),f.value=20,h.value=s("正在安装应用..."),f.value=30,p=await y.post("/jingrow/install-from-url",new URLSearchParams({url:e.value.file_url}),{headers:{...E(),"Content-Type":"application/x-www-form-urlencoded"}});else if(e.value.repository_url){h.value=s("正在克隆仓库..."),f.value=20,h.value=s("正在安装应用..."),f.value=30;const X=new URLSearchParams({repo_url:e.value.repository_url});p=await y.post("/jingrow/install-from-git",X,{headers:{...E(),"Content-Type":"application/x-www-form-urlencoded"}})}if(!p)throw new Error(s("无法确定安装方式"));if(f.value=100,p.data.success)k.value=!1,b.value="success",h.value=s("应用安装成功!"),C.success(s("应用安装成功")),D(),setTimeout(()=>{g.value=!1},2e3);else throw new Error(p.data.error||s("安装失败"))}catch(p){console.error("Install app error:",p),k.value=!1,b.value="error",h.value=((o=(a=p.response)==null?void 0:a.data)==null?void 0:o.detail)||p.message||s("安装失败"),C.error(((m=(i=p.response)==null?void 0:i.data)==null?void 0:m.detail)||s("安装失败")),setTimeout(()=>{g.value=!1},3e3)}}async function D(){try{const a=await y.get("/jingrow/installed-app-names");if(a.data.success){const o=a.data.apps||[];S.value=new Set(o)}}catch(a){console.error("Load installed apps error:",a)}}function W(a){return a?S.value.has(a.toLowerCase()):!1}return K(()=>{P(),D(),window.addEventListener("installedAppsUpdated",()=>{D()})}),(a,o)=>{var i;return c(),r("div",te,[t("div",le,[t("div",oe,[t("div",ne,[t("h1",null,n(((i=e.value)==null?void 0:i.title)||l(s)("App Details")),1)]),t("div",ie,[u(l(V),{onClick:H,size:"medium"},{icon:d(()=>[u(l(I),null,{default:d(()=>[u(l(x),{icon:"tabler:arrow-left"})]),_:1})]),default:d(()=>[N(" "+n(l(s)("Back")),1)]),_:1}),u(l(V),{type:T.value?"warning":"primary",onClick:q,size:"medium"},{icon:d(()=>[u(l(I),null,{default:d(()=>[u(l(x),{icon:T.value?"tabler:check":"tabler:download"},null,8,["icon"])]),_:1})]),default:d(()=>[N(" "+n(T.value?l(s)("Installed"):l(s)("Install")),1)]),_:1},8,["type"])])])]),L.value?(c(),r("div",re,[u(l(Z),{size:"large"},{description:d(()=>[N(n(l(s)("Loading application details...")),1)]),_:1})])):w.value?(c(),r("div",ce,[u(l(ee),{description:w.value},{icon:d(()=>[u(l(I),null,{default:d(()=>[u(l(x),{icon:"tabler:alert-circle"})]),_:1})]),_:1},8,["description"])])):e.value?(c(),r("div",ue,[t("div",pe,[t("div",de,[t("div",_e,[t("div",ve,[t("div",he,[e.value.app_image?(c(),r("img",{key:0,src:z(e.value.app_image),alt:e.value.title,onError:F},null,40,fe)):(c(),r("div",me,[u(l(I),{size:"80"},{default:d(()=>[u(l(x),{icon:"tabler:apps"})]),_:1})]))])]),t("div",ge,[t("div",ye,[t("h2",we,n(e.value.title||l(s)("Untitled App")),1),e.value.subtitle?(c(),r("div",ke,n(e.value.subtitle),1)):v("",!0)]),t("div",be,[e.value.app_name?(c(),r("div",Ie,[t("span",xe,n(l(s)("App Name"))+":",1),t("span",Ae,n(e.value.app_name),1)])):v("",!0),e.value.team?(c(),r("div",Ce,[t("span",Le,n(l(s)("Team"))+":",1),t("span",Te,n(e.value.team),1)])):v("",!0),e.value.repository_url?(c(),r("div",De,[t("span",Ne,n(l(s)("Repository URL"))+":",1),t("a",{href:e.value.repository_url,target:"_blank",class:"link"},n(e.value.repository_url),9,Re)])):v("",!0),e.value.file_url?(c(),r("div",Se,[t("span",Ue,n(l(s)("File URL"))+":",1),t("a",{href:e.value.file_url,target:"_blank",class:"link"},n(e.value.file_url),9,Me)])):v("",!0),e.value.creation?(c(),r("div",je,[t("span",Ee,n(l(s)("Created"))+":",1),t("span",Ve,n(U(e.value.creation)),1)])):v("",!0),e.value.modified?(c(),r("div",$e,[t("span",Be,n(l(s)("Last Updated"))+":",1),t("span",Pe,n(U(e.value.modified)),1)])):v("",!0)])])])]),e.value.description?(c(),r("div",ze,[t("h3",null,n(l(s)("Description")),1),t("div",{class:"description-content",innerHTML:e.value.description},null,8,Fe)])):v("",!0)])])):v("",!0),u(ae,{modelValue:g.value,"onUpdate:modelValue":o[0]||(o[0]=m=>g.value=m),progress:f.value,message:h.value,status:b.value,installing:k.value},null,8,["modelValue","progress","message","status","installing"])])}}});const Je=se(He,[["__scopeId","data-v-1ea6ae46"]]);export{Je as default}; diff --git a/apps/jingrow/frontend/dist/assets/AppDetail-45c6bdaa.css b/apps/jingrow/frontend/dist/assets/AppDetail-45c6bdaa.css new file mode 100644 index 0000000..9963538 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AppDetail-45c6bdaa.css @@ -0,0 +1 @@ +.app-detail[data-v-1ea6ae46]{padding:24px}.page-header[data-v-1ea6ae46]{margin-bottom:32px}.header-content[data-v-1ea6ae46]{display:flex;justify-content:space-between;align-items:center}.header-actions[data-v-1ea6ae46]{display:flex;align-items:center;gap:30px}.header-text h1[data-v-1ea6ae46]{margin:0 0 8px;font-size:28px;font-weight:700;color:#1a1a1a}.header-text p[data-v-1ea6ae46]{margin:0;color:#666;font-size:16px}.loading-container[data-v-1ea6ae46],.error-container[data-v-1ea6ae46]{display:flex;justify-content:center;align-items:center;min-height:400px}.app-content[data-v-1ea6ae46]{display:flex;flex-direction:column;gap:32px}.app-card[data-v-1ea6ae46]{background:white;border-radius:8px;padding:24px;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column;gap:24px}.app-content-layout[data-v-1ea6ae46]{display:grid;grid-template-columns:1fr 2fr;gap:50px;align-items:start}.app-image-section[data-v-1ea6ae46]{display:flex;justify-content:center;align-items:center}.app-image[data-v-1ea6ae46]{width:100%;min-height:300px;border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center}.app-image img[data-v-1ea6ae46]{width:100%;height:auto;object-fit:contain}.placeholder-image[data-v-1ea6ae46]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#9ca3af}.app-header[data-v-1ea6ae46]{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid #e5e7eb}.app-title[data-v-1ea6ae46]{margin:0;font-size:22px;font-weight:600;color:#1a1a1a}.app-subtitle[data-v-1ea6ae46]{margin:8px 0 0;font-size:14px;color:#6b7280}.info-list[data-v-1ea6ae46]{display:flex;flex-direction:column;gap:12px}.info-item[data-v-1ea6ae46]{display:flex;align-items:center;gap:12px}.info-item .label[data-v-1ea6ae46]{font-weight:500;color:#374151;font-size:14px;min-width:80px}.info-item .value[data-v-1ea6ae46]{color:#6b7280;font-size:14px}.link[data-v-1ea6ae46]{color:#2563eb;text-decoration:none}.link[data-v-1ea6ae46]:hover{text-decoration:underline}.text-muted[data-v-1ea6ae46]{color:#9ca3af;font-style:italic}.description-section[data-v-1ea6ae46]{padding-top:24px;border-top:1px solid #e5e7eb}.description-section h3[data-v-1ea6ae46]{margin:0 0 20px;font-size:20px;font-weight:600;color:#1f2937}.description-content[data-v-1ea6ae46]{color:#374151;line-height:1.6}.description-content[data-v-1ea6ae46] h1,.description-content[data-v-1ea6ae46] h2,.description-content[data-v-1ea6ae46] h3,.description-content[data-v-1ea6ae46] h4,.description-content[data-v-1ea6ae46] h5,.description-content[data-v-1ea6ae46] h6{margin:16px 0 8px;color:#1f2937}.description-content[data-v-1ea6ae46] p{margin:8px 0}.description-content[data-v-1ea6ae46] ul,.description-content[data-v-1ea6ae46] ol{margin:8px 0;padding-left:20px}.description-content[data-v-1ea6ae46] li{margin:4px 0}.description-content[data-v-1ea6ae46] code{background:#f3f4f6;padding:2px 6px;border-radius:4px;font-family:Courier New,monospace;font-size:14px}.description-content[data-v-1ea6ae46] pre{background:#f3f4f6;padding:16px;border-radius:8px;overflow-x:auto;margin:16px 0}.description-content[data-v-1ea6ae46] blockquote{border-left:4px solid #e5e7eb;padding-left:16px;margin:16px 0;color:#6b7280;font-style:italic}@media (max-width: 768px){.app-card[data-v-1ea6ae46]{padding:20px}.app-content-layout[data-v-1ea6ae46]{grid-template-columns:1fr;gap:30px}.app-image-section[data-v-1ea6ae46]{order:2;justify-content:center}.app-image[data-v-1ea6ae46]{max-width:150px}.app-title[data-v-1ea6ae46]{font-size:20px}.info-item[data-v-1ea6ae46]{flex-direction:column;align-items:flex-start;gap:4px}.info-item .label[data-v-1ea6ae46]{min-width:auto}.header-content[data-v-1ea6ae46]{flex-direction:column;gap:16px}} diff --git a/apps/jingrow/frontend/dist/assets/AppInstaller-a07cfb5d.js b/apps/jingrow/frontend/dist/assets/AppInstaller-a07cfb5d.js new file mode 100644 index 0000000..95007bb --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AppInstaller-a07cfb5d.js @@ -0,0 +1 @@ +import{I as A}from"./iconify-242f8a3c.js";import{d as Q,r as p,u as X,t as a,A as Y,o as ee,e as b,f as d,h as l,w as t,j as e,p as f,g as r,y as I,k as ae,n as C,a0 as B,a2 as T,l as m,$ as N,aw as le,ax as te,s as U,ay as se,ak as oe,I as S,D as ne,U as E,ac as ie,az as re,af as de}from"./index-d271a6a3.js";import{_ as ce}from"./_plugin-vue_export-helper-c27b6911.js";const ue={class:"app-installer-page"},pe={class:"page-header"},fe={class:"header-content"},_e={class:"page-title"},ge={class:"page-description"},ve={class:"header-actions"},he={class:"upload-section"},me={key:0,class:"upload-content"},ye={key:0,class:"file-info-card"},ke={class:"file-info-header"},we={key:1,class:"upload-actions"},Ae={key:0,class:"local-apps-section"},be={class:"progress-content"},Ie=Q({__name:"AppInstaller",setup(Ce){const c=p([]),_=p(!1),z=p(!1),g=p(0),y=p(""),P=p("info"),x=p(!1),L=p([]),F=p(!1),u=X(),D=p(),Z=ae(),$=()=>{Z.push("/app-marketplace")},j=[{title:a("App Name"),key:"name",width:150},{title:a("Title"),key:"title",width:200},{title:a("Publisher"),key:"publisher",width:150},{title:a("Description"),key:"description",ellipsis:!0},{title:a("Actions"),key:"actions",width:120,render:s=>Y(C,{type:"primary",size:"small",onClick:()=>K(s.name)},{default:()=>a("Install")})}],G=s=>{const i=s.file.file;if(!i)return!1;const o=i.name.toLowerCase();return[".zip",".tar.gz",".tgz",".gz"].some(M=>o.endsWith(M))?!0:(u.error(a("Only ZIP and TAR.GZ files are supported")),!1)},O=s=>{c.value=s.fileList},q=async s=>Promise.resolve(),H=async()=>{var o,n,v,M;if(c.value.length===0){u.error(a("Please select a file first"));return}const s=c.value[0].file;if(!s){u.error(a("File not found"));return}const i="/jingrow/install/upload";try{_.value=!0,z.value=!0,x.value=!0,g.value=0,y.value=a("Preparing upload..."),P.value="info";const h=new FormData;h.append("file",s),g.value=30,y.value=a("Uploading file...");const k=await B.post(i,h,{headers:{...T(),"Content-Type":"multipart/form-data"},onUploadProgress:w=>{if(w.total){const W=Math.round(w.loaded*70/w.total)+30;g.value=Math.min(W,100)}}});if(g.value=100,y.value=a("Installation completed!"),P.value="success",k.data.success){V();const w=k.data.app_name;u.success(a("Package '{0}' installed successfully").replace("{0}",w))}else throw new Error(k.data.error||a("Installation failed"))}catch(h){g.value=100,y.value=a("Installation failed!"),P.value="error";const k=((n=(o=h.response)==null?void 0:o.data)==null?void 0:n.detail)||((M=(v=h.response)==null?void 0:v.data)==null?void 0:M.message)||h.message||a("Upload failed");u.error(k)}finally{_.value=!1,z.value=!1}},V=()=>{var s;c.value=[],(s=D.value)==null||s.clear()},J=s=>{if(s===0)return"0 B";const i=1024,o=["B","KB","MB","GB"],n=Math.floor(Math.log(s)/Math.log(i));return Math.round(s/Math.pow(i,n)*100)/100+" "+o[n]},R=async()=>{var s,i;F.value=!0;try{const o={}.VITE_LOCAL_API_URL||"",n=await B.get(`${o}/jingrow/local-apps`,{headers:T(),withCredentials:!0});n.data.success?L.value=n.data.data.apps:u.error(n.data.detail||a("Failed to load local apps"))}catch(o){u.error(((i=(s=o==null?void 0:o.response)==null?void 0:s.data)==null?void 0:i.detail)||(o==null?void 0:o.message)||a("Failed to load local apps"))}finally{F.value=!1}},K=async s=>{var i,o;try{const n={}.VITE_LOCAL_API_URL||"",v=await B.post(`${n}/jingrow/install-local/${s}`,{},{headers:T(),withCredentials:!0});v.data.success?(u.success(a("App '{0}' installed successfully").replace("{0}",s)),await R()):u.error(v.data.detail||a("Failed to install app"))}catch(n){u.error(((o=(i=n==null?void 0:n.response)==null?void 0:i.data)==null?void 0:o.detail)||(n==null?void 0:n.message)||a("Failed to install app"))}};return ee(()=>{R()}),(s,i)=>(m(),b("div",ue,[d("div",pe,[d("div",fe,[d("h1",_e,[l(e(N),null,{default:t(()=>[l(e(A),{icon:"tabler:upload"})]),_:1}),f(" "+r(e(a)("App Installer")),1)]),d("p",ge,r(e(a)("Upload and install applications to your local Jingrow environment")),1)]),d("div",ve,[l(e(C),{type:"primary",onClick:$,"theme-overrides":{colorHover:"#3b82f6",colorPressed:"#2563eb"}},{icon:t(()=>[l(e(N),null,{default:t(()=>[l(e(A),{icon:"tabler:shopping-cart"})]),_:1})]),default:t(()=>[f(" "+r(e(a)("App Marketplace")),1)]),_:1})])]),d("div",he,[l(e(E),{title:e(a)("Upload App Package"),class:"upload-card"},{default:t(()=>[l(e(le),{ref_key:"uploadRef",ref:D,"file-list":c.value,max:1,accept:".zip,.tar.gz,.tgz,.gz","on-before-upload":G,"on-change":O,"custom-request":q,disabled:_.value},{default:t(()=>[l(e(te),null,{default:t(()=>[c.value.length===0?(m(),b("div",me,[l(e(N),{size:"48",depth:3},{default:t(()=>[l(e(A),{icon:"tabler:cloud-upload"})]),_:1}),l(e(U),{style:{"font-size":"16px"}},{default:t(()=>[f(r(_.value?e(a)("Uploading..."):e(a)("Click or drag package file to this area to upload")),1)]),_:1}),l(e(se),{depth:"3",style:{margin:"8px 0 0 0"}},{default:t(()=>[f(r(e(a)("Support for ZIP, TAR.GZ, and GZ format")),1)]),_:1})])):I("",!0)]),_:1})]),_:1},8,["file-list","disabled"]),c.value.length>0?(m(),b("div",ye,[l(e(oe),{type:"info",bordered:!1},{header:t(()=>[d("div",ke,[l(e(N),{size:"20",color:"#2080f0"},{default:t(()=>[l(e(A),{icon:"tabler:file-zip"})]),_:1}),d("strong",null,r(e(a)("Selected Package")),1)])]),default:t(()=>[l(e(S),{vertical:""},{default:t(()=>[l(e(U),null,{default:t(()=>[d("strong",null,r(e(a)("File Name"))+":",1),f(" "+r(c.value[0].name),1)]),_:1}),c.value[0].file?(m(),ne(e(U),{key:0,depth:"3"},{default:t(()=>[d("strong",null,r(e(a)("Size"))+":",1),f(" "+r(J(c.value[0].file.size)),1)]),_:1})):I("",!0)]),_:1})]),_:1})])):I("",!0),c.value.length>0?(m(),b("div",we,[l(e(S),null,{default:t(()=>[l(e(C),{onClick:V,disabled:_.value},{default:t(()=>[f(r(e(a)("Clear")),1)]),_:1},8,["disabled"]),l(e(C),{type:"primary",onClick:H,loading:_.value,disabled:_.value},{icon:t(()=>[l(e(N),null,{default:t(()=>[l(e(A),{icon:"tabler:upload"})]),_:1})]),default:t(()=>[f(" "+r(e(a)("Install App")),1)]),_:1},8,["loading","disabled"])]),_:1})])):I("",!0)]),_:1},8,["title"])]),L.value.length>0?(m(),b("div",Ae,[l(e(E),{title:e(a)("Local Apps Available"),class:"local-apps-card"},{default:t(()=>[l(e(ie),{columns:j,data:L.value,loading:F.value,pagination:!1,bordered:!1},null,8,["data","loading"])]),_:1},8,["title"])])):I("",!0),l(e(de),{show:x.value,"onUpdate:show":i[1]||(i[1]=o=>x.value=o),preset:"card",style:{width:"500px"}},{header:t(()=>[d("h3",null,r(e(a)("Installing App")),1)]),action:t(()=>[l(e(C),{onClick:i[0]||(i[0]=o=>x.value=!1),disabled:z.value},{default:t(()=>[f(r(z.value?e(a)("Installing..."):e(a)("Close")),1)]),_:1},8,["disabled"])]),default:t(()=>[d("div",be,[l(e(re),{percentage:g.value,status:P.value,"show-indicator":!0},null,8,["percentage","status"]),l(e(U),{class:"progress-text"},{default:t(()=>[f(r(y.value),1)]),_:1})])]),_:1},8,["show"])]))}});const xe=ce(Ie,[["__scopeId","data-v-e6073096"]]);export{xe as default}; diff --git a/apps/jingrow/frontend/dist/assets/AppInstaller-b0cf2827.css b/apps/jingrow/frontend/dist/assets/AppInstaller-b0cf2827.css new file mode 100644 index 0000000..1eaff69 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AppInstaller-b0cf2827.css @@ -0,0 +1 @@ +.app-installer-page[data-v-e6073096]{padding:16px 24px;width:100%;margin:0;min-height:100vh}.page-header[data-v-e6073096]{margin-bottom:32px;display:flex;align-items:center;justify-content:space-between;gap:24px}.header-content[data-v-e6073096]{flex:1;text-align:center}.header-actions[data-v-e6073096]{flex-shrink:0}.page-title[data-v-e6073096]{display:flex;align-items:center;justify-content:center;gap:12px;margin:0 0 8px;font-size:28px;font-weight:600;color:#1f2937}.page-description[data-v-e6073096]{margin:0;color:#6b7280;font-size:16px}.upload-section[data-v-e6073096]{margin-bottom:32px}.upload-card[data-v-e6073096]{border:2px dashed #d1d5db;transition:all .2s ease}.upload-card[data-v-e6073096]:hover{border-color:#3b82f6}.file-info-card[data-v-e6073096]{margin-top:16px}.file-info-header[data-v-e6073096]{display:flex;align-items:center;gap:8px}.upload-content[data-v-e6073096]{padding:40px 20px;text-align:center}.upload-actions[data-v-e6073096]{margin-top:20px;padding-top:20px;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end}.progress-content[data-v-e6073096]{padding:20px 0}.progress-text[data-v-e6073096]{display:block;text-align:center;margin-top:12px;font-size:14px}.local-apps-section[data-v-e6073096]{margin-top:32px}.local-apps-card[data-v-e6073096]{border:1px solid #e5e7eb}@media (max-width: 1200px){.app-installer-page[data-v-e6073096]{padding:12px 16px}}@media (max-width: 768px){.app-installer-page[data-v-e6073096]{padding:8px 12px}.page-header[data-v-e6073096]{margin-bottom:16px;flex-direction:column;align-items:stretch}.header-content[data-v-e6073096]{margin-bottom:16px}.header-actions[data-v-e6073096]{align-self:center}.upload-section[data-v-e6073096]{margin-bottom:16px}.local-apps-section[data-v-e6073096]{margin-top:16px}} diff --git a/apps/jingrow/frontend/dist/assets/AppLayout-252ca9a0.css b/apps/jingrow/frontend/dist/assets/AppLayout-252ca9a0.css new file mode 100644 index 0000000..064bbe9 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AppLayout-252ca9a0.css @@ -0,0 +1 @@ +.app-sidebar[data-v-b09c3830]{height:100%;display:flex;flex-direction:column;overflow:hidden}.sidebar-header[data-v-b09c3830]{padding:16px;border-bottom:1px solid var(--border-color);flex-shrink:0}.menu-container[data-v-b09c3830]{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.logo[data-v-b09c3830]{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:700;color:#1f2937}.logo-link[data-v-b09c3830]{display:inline-flex;align-items:center;gap:12px;color:inherit;text-decoration:none}.logo-text[data-v-b09c3830]{white-space:nowrap}[data-v-b09c3830] .n-menu-item-content{transition:all .2s ease}[data-v-b09c3830] .n-menu-item-content:hover{background-color:#18a0581a}[data-v-b09c3830] .n-menu-item-content.n-menu-item-content--selected{background-color:#18a05826}[data-v-b09c3830] .n-menu-item-content.n-menu-item-content--selected .n-icon{color:#18a058!important}[data-v-b09c3830] .n-menu-item-content:hover .n-icon{color:#18a058!important;transform:scale(1.1)}.app-header[data-v-85ad4a00]{height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;background:white}.header-left[data-v-85ad4a00]{display:flex;align-items:center;gap:16px;min-width:0}.header-right[data-v-85ad4a00]{display:flex;align-items:center;min-width:0}.username[data-v-85ad4a00]{margin-left:8px;font-weight:500}.search-input[data-v-85ad4a00]{width:280px}.breadcrumb[data-v-85ad4a00]{min-width:0}@media (max-width: 1024px){.app-header[data-v-85ad4a00]{padding:0 16px}.search-input[data-v-85ad4a00]{width:200px}.header-left[data-v-85ad4a00]{gap:12px}}@media (max-width: 768px){.app-header[data-v-85ad4a00]{padding:0 12px}.header-left[data-v-85ad4a00]{gap:8px}.breadcrumb[data-v-85ad4a00],.search-input[data-v-85ad4a00],.username[data-v-85ad4a00]{display:none}.header-right[data-v-85ad4a00] .n-space{gap:4px}}@media (max-width: 480px){.app-header[data-v-85ad4a00]{padding:0 8px}.header-left[data-v-85ad4a00]{gap:4px}.header-right[data-v-85ad4a00] .n-space{gap:2px}}.back-to-top-btn[data-v-1b4f2300]{position:fixed;right:32px;bottom:24px;z-index:1000;width:48px;height:48px;background:white;border:1px solid #e5e7eb;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000014;transition:all .3s cubic-bezier(.4,0,.2,1)}.back-to-top-btn[data-v-1b4f2300]:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001f}.back-to-top-btn[data-v-1b4f2300]:focus{outline:2px solid #22c55e;outline-offset:2px}.back-to-top-btn[data-v-1b4f2300]:focus:not(:focus-visible){outline:none}.progress-ring[data-v-1b4f2300]{position:absolute;top:0;left:0;width:100%;height:100%;transform:rotate(-90deg);pointer-events:none}.progress-ring-progress[data-v-1b4f2300]{transition:stroke-dashoffset .1s linear}.arrow-icon[data-v-1b4f2300]{position:relative;z-index:1;color:#22c55e;transition:color .3s ease}@media (max-width: 768px){.back-to-top-btn[data-v-1b4f2300]{right:20px;bottom:16px;width:48px;height:48px}.arrow-icon[data-v-1b4f2300]{width:18px;height:18px}}.back-to-top-fade-enter-active[data-v-1b4f2300],.back-to-top-fade-leave-active[data-v-1b4f2300]{transition:opacity .3s ease,transform .3s ease}.back-to-top-fade-enter-from[data-v-1b4f2300],.back-to-top-fade-leave-to[data-v-1b4f2300]{opacity:0;transform:scale(.8) translateY(10px)}.back-to-top-fade-enter-to[data-v-1b4f2300],.back-to-top-fade-leave-from[data-v-1b4f2300]{opacity:1;transform:scale(1) translateY(0)}.app-layout[data-v-7c9a0753]{height:100vh}.content-wrapper[data-v-7c9a0753]{padding:20px;min-height:calc(100vh - 64px);overflow-y:auto}[data-v-7c9a0753] .n-layout-header{position:sticky;top:0;z-index:1000}.mobile-overlay[data-v-7c9a0753]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;z-index:999}@media (max-width: 767px){[data-v-7c9a0753] .n-layout-sider{position:fixed!important;top:0;left:0;height:100vh;z-index:1000;width:280px!important;max-width:80vw;transform:translate(-100%);transition:transform .3s ease}[data-v-7c9a0753] .n-layout-sider:not(.n-layout-sider--collapsed){transform:translate(0)!important}[data-v-7c9a0753] .n-layout{margin-left:0!important}}@media (min-width: 768px){[data-v-7c9a0753] .n-layout-sider{position:relative!important;transform:none!important}} diff --git a/apps/jingrow/frontend/dist/assets/AppLayout-846579c2.js b/apps/jingrow/frontend/dist/assets/AppLayout-846579c2.js new file mode 100644 index 0000000..bbf106a --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AppLayout-846579c2.js @@ -0,0 +1 @@ +import{_ as j}from"./logo-a60c622a.js";import{d as C,k as W,v as V,c as w,x as O,l as m,e as L,f as S,h as s,w as u,g as E,y as M,j as o,z as G,t as c,A as J,u as X,a as Z,r as I,n as $,B as D,p as A,F as U,C as ee,D as x,E as te,i as R,m as oe,G as se,H as ae,I as le,o as Y,J as ne,K as Q,L as re,T as ce,M as ie,O as ue,P as de,Q as pe,R as z}from"./index-d271a6a3.js";import{u as _e}from"./menu-1e1b8738.js";import{p as F}from"./slug-9937a98a.js";import{_ as he}from"./DynamicIcon.vue_vue_type_script_setup_true_lang-6d1ac17e.js";import{_ as H}from"./_plugin-vue_export-helper-c27b6911.js";import{I as T}from"./iconify-242f8a3c.js";const me={class:"app-sidebar"},fe={class:"sidebar-header"},ve={class:"logo"},ge=["alt"],be={key:0,class:"logo-text"},ye={class:"menu-container"},we=C({__name:"AppSidebar",props:{collapsed:{type:Boolean}},emits:["menu-select"],setup(B,{emit:i}){const d=i,p=W(),f=V(),v=w(()=>f.name),k=_e(),b=w(()=>localStorage.getItem("appName")||"Jingrow"),y=r=>{const e={};r.forEach(l=>e[l.id]={...l,children:[]});const t=[];return r.forEach(l=>{const _=l.parentId;_&&e[_]?e[_].children.push(e[l.id]):t.push(e[l.id])}),t},h=(r,e=24)=>r?()=>J(he,{name:r,size:e,color:"#64748b",iconLibrary:"tabler"}):void 0,g=r=>r.map(e=>({label:c(e.label),key:e.id,icon:h(e.icon,24),children:e.children&&e.children.length?e.children.map(t=>{var l;return{label:c(t.label),key:t.id,icon:h(t.icon,20),children:(l=t.children)!=null&&l.length?g(t.children):void 0}}):void 0})),n=w(()=>{const r=y(k.visibleItems);return g(r)}),a=r=>{const e=k.items.find(t=>t.id===r);if(e)if(d("menu-select"),e.type==="pagetype"&&e.pagetype){const t=F(e.pagetype);p.push({name:"PageTypeList",params:{entity:t}})}else if(e.type==="route"&&e.routeName)p.push({name:e.routeName});else if(e.type==="url"&&e.url)e.url.startsWith("http://")||e.url.startsWith("https://")?window.open(e.url,"_blank"):p.push(e.url);else{if(e.type==="workspace"&&e.workspaceName){const t=F(e.workspaceName);p.push(`/workspace/${t}`);return}e.url?e.url.startsWith("http://")||e.url.startsWith("https://")?window.open(e.url,"_blank"):p.push(e.url):e.routeName&&p.push({name:e.routeName})}};return(r,e)=>{const t=O("router-link");return m(),L("div",me,[S("div",fe,[S("div",ve,[s(t,{to:"/",class:"logo-link"},{default:u(()=>[S("img",{src:j,alt:b.value,width:"32",height:"32"},null,8,ge),r.collapsed?M("",!0):(m(),L("span",be,E(b.value),1))]),_:1})])]),S("div",ye,[s(o(G),{collapsed:r.collapsed,"collapsed-width":64,"collapsed-icon-size":24,options:n.value,value:v.value,"onUpdate:value":a},null,8,["collapsed","options","value"])])])}}});const Se=H(we,[["__scopeId","data-v-b09c3830"]]),ke={class:"app-header"},Le={class:"header-left"},Ne={class:"header-right"},Te={class:"username"},Ee=C({__name:"AppHeader",setup(B){const i=W(),d=V(),p=X(),f=Z(),v=I(""),k=w(()=>localStorage.getItem("appName")||"Jingrow"),b=w(()=>f.user),y=w(()=>{var e;return((e=f.user)==null?void 0:e.user_type)==="System User"}),h=w(()=>{const e=[];if(d.name==="PageTypeList"){const t=d.params.entity;t&&e.push({label:t,href:`/app/${t}`})}else if(d.name==="PageTypeDetail"){const t=d.params.entity,l=d.params.id;t&&e.push({label:t,href:`/app/${t}`}),l&&l!=="new"&&e.push({label:l==="new"?c("Create"):l})}else{const l={Dashboard:c("Dashboard"),AgentList:c("Agents"),AgentDetail:c("Agent Detail"),NodeList:c("Node Management"),NodeDetail:c("Node Detail"),LocalJobList:c("Local Jobs"),LocalJobDetail:c("Local Job Detail"),FlowBuilder:c("Flow Builder"),ScheduledJobList:c("Scheduled Jobs"),ScheduledJobDetail:c("Scheduled Job Detail"),MenuManager:c("Menu Manager"),Settings:c("Settings"),SearchResults:c("Search Results")}[d.name];l&&e.push({label:l})}return e}),g=w(()=>[{label:c("Profile"),key:"profile",icon:()=>J(T,{icon:"tabler:user"})},{label:c("Logout"),key:"logout",icon:()=>J(T,{icon:"tabler:logout"})}]),n=async e=>{e==="logout"?(await f.logout(),p.success(c("Logged out")),i.push("/login")):e==="profile"&&i.push("/profile")},a=()=>{v.value.trim()&&i.push({name:"SearchResults",query:{q:v.value.trim()}})},r=()=>{v.value=""};return(e,t)=>{const l=O("router-link");return m(),L("div",ke,[S("div",Le,[s(o($),{quaternary:"",circle:"",onClick:t[0]||(t[0]=_=>e.$emit("toggle-sidebar")),class:"sidebar-toggle"},{icon:u(()=>[s(o(T),{icon:"tabler:menu-2"})]),_:1}),s(o(te),{class:"breadcrumb"},{default:u(()=>[s(o(D),null,{default:u(()=>[s(l,{to:"/"},{default:u(()=>[A(E(k.value),1)]),_:1})]),_:1}),(m(!0),L(U,null,ee(h.value,(_,N)=>(m(),L(U,{key:N},[_.href?(m(),x(o(D),{key:0},{default:u(()=>[s(l,{to:_.href},{default:u(()=>[A(E(_.label),1)]),_:2},1032,["to"])]),_:2},1024)):(m(),x(o(D),{key:1},{default:u(()=>[A(E(_.label),1)]),_:2},1024))],64))),128))]),_:1})]),S("div",Ne,[s(o(le),null,{default:u(()=>[y.value?(m(),x(o(oe),{key:0,value:v.value,"onUpdate:value":t[1]||(t[1]=_=>v.value=_),placeholder:o(c)("Search..."),clearable:"",class:"search-input",onKeyup:R(a,["enter"]),onClear:r},{prefix:u(()=>[s(o(T),{icon:"tabler:search"})]),_:1},8,["value","placeholder"])):M("",!0),s(o($),{quaternary:"",circle:""},{icon:u(()=>[s(o(T),{icon:"tabler:bell"})]),_:1}),s(o(se),{trigger:"click",options:g.value,onSelect:n},{default:u(()=>[s(o($),{quaternary:""},{default:u(()=>{var _,N;return[s(o(ae),{round:"",size:"small",src:(_=b.value)==null?void 0:_.avatar},{default:u(()=>{var P,q;return[A(E((q=(P=b.value)==null?void 0:P.username)==null?void 0:q.charAt(0).toUpperCase()),1)]}),_:1},8,["src"]),S("span",Te,E((N=b.value)==null?void 0:N.username),1),s(o(T),{icon:"tabler:chevron-down"})]}),_:1})]),_:1},8,["options"])]),_:1})])])}}});const Ie=H(Ee,[["__scopeId","data-v-85ad4a00"]]),xe=["aria-label","title","onKeydown"],Ae={class:"progress-ring",viewBox:"0 0 48 48"},Ce=["stroke-dasharray","stroke-dashoffset"],Me=300,He=23,Be=C({__name:"BackToTop",setup(B){const i=I(!1),d=I(0),p=I([]),f=w(()=>2*Math.PI*He),v=w(()=>f.value*(1-d.value)),k=()=>{const n=[window],a=document.querySelector(".content-wrapper");return a&&n.push(a),document.querySelectorAll('[class*="scroll"], [class*="content"], [class*="wrapper"]').forEach(e=>{const t=window.getComputedStyle(e);(t.overflowY==="auto"||t.overflowY==="scroll"||t.overflow==="auto"||t.overflow==="scroll")&&(n.includes(e)||n.push(e))}),n},b=n=>{if(n===window)return{scrollTop:window.pageYOffset||document.documentElement.scrollTop||0,scrollHeight:document.documentElement.scrollHeight||document.body.scrollHeight||0,clientHeight:window.innerHeight||document.documentElement.clientHeight||0};{const a=n;return{scrollTop:a.scrollTop||0,scrollHeight:a.scrollHeight||0,clientHeight:a.clientHeight||0}}},y=()=>{p.value.forEach(a=>{a===window?window.scrollTo({top:0,behavior:"smooth"}):a.scrollTo({top:0,behavior:"smooth"})})};let h=null;const g=()=>{h===null&&(h=requestAnimationFrame(()=>{const n=p.value;if(n.length===0){h=null;return}let a=0,r=0;n.forEach(e=>{const t=b(e),l=t.scrollTop,_=t.scrollHeight-t.clientHeight;if(l>a&&(a=l),_>0){const N=Math.min(l/_,1);N>r&&(r=N)}}),d.value=r,i.value=a>Me,h=null}))};return Y(()=>{ne(()=>{const n=k();p.value=n,n.forEach(a=>{a.addEventListener("scroll",g,{passive:!0})}),g()})}),Q(()=>{p.value.forEach(n=>{n.removeEventListener("scroll",g)}),p.value=[],h!==null&&(cancelAnimationFrame(h),h=null)}),(n,a)=>(m(),x(ce,{name:"back-to-top-fade"},{default:u(()=>[i.value?(m(),L("div",{key:0,class:"back-to-top-btn",role:"button",tabindex:"0","aria-label":o(c)("Back to top"),title:o(c)("Back to top"),onClick:y,onKeydown:[R(y,["enter"]),R(re(y,["prevent"]),["space"])]},[(m(),L("svg",Ae,[a[0]||(a[0]=S("circle",{class:"progress-ring-bg",cx:"24",cy:"24",r:"23",fill:"none",stroke:"#d1d5db","stroke-width":"2"},null,-1)),S("circle",{class:"progress-ring-progress",cx:"24",cy:"24",r:"23",fill:"none",stroke:"#22c55e","stroke-width":"2","stroke-linecap":"round","stroke-dasharray":f.value,"stroke-dashoffset":v.value},null,8,Ce)])),s(o(T),{icon:"tabler:arrow-up",width:20,height:20,class:"arrow-icon"})],40,xe)):M("",!0)]),_:1}))}});const $e=H(Be,[["__scopeId","data-v-1b4f2300"]]),De={class:"content-wrapper"},K="app.sidebar.collapsed",Je=C({__name:"AppLayout",setup(B){const i=I(localStorage.getItem(K)==="true"),d=I(!1),p=()=>{d.value=window.innerWidth<768,d.value&&(i.value=!0)},f=()=>{i.value=!i.value},v=()=>{i.value=!0},k=()=>{i.value=!1},b=()=>{d.value&&(i.value=!0)},y=()=>{p()};return Y(()=>{p(),window.addEventListener("resize",y)}),Q(()=>{window.removeEventListener("resize",y)}),ie(i,h=>{localStorage.setItem(K,String(h))}),(h,g)=>{const n=O("router-view");return m(),x(o(z),{"has-sider":"",class:"app-layout"},{default:u(()=>[s(o(ue),{bordered:"","collapse-mode":"width","collapsed-width":64,width:240,collapsed:i.value,"onUpdate:collapsed":g[0]||(g[0]=a=>i.value=a),"show-trigger":!d.value,responsive:!0,breakpoint:768,onCollapse:v,onExpand:k},{default:u(()=>[s(Se,{collapsed:i.value,onMenuSelect:b},null,8,["collapsed"])]),_:1},8,["collapsed","show-trigger"]),s(o(z),null,{default:u(()=>[s(o(de),{bordered:""},{default:u(()=>[s(Ie,{onToggleSidebar:f})]),_:1}),s(o(pe),null,{default:u(()=>[S("div",De,[s(n)])]),_:1})]),_:1}),d.value&&!i.value?(m(),L("div",{key:0,class:"mobile-overlay",onClick:f})):M("",!0),s($e)]),_:1})}}});const Ke=H(Je,[["__scopeId","data-v-7c9a0753"]]);export{Ke as default}; diff --git a/apps/jingrow/frontend/dist/assets/AppMarketplace-7991bde9.css b/apps/jingrow/frontend/dist/assets/AppMarketplace-7991bde9.css new file mode 100644 index 0000000..98e9767 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AppMarketplace-7991bde9.css @@ -0,0 +1 @@ +.app-marketplace[data-v-5a0ca7e4]{padding:24px}.page-header[data-v-5a0ca7e4]{margin-bottom:32px}.header-content[data-v-5a0ca7e4]{display:flex;justify-content:space-between;align-items:flex-start}.header-text h1[data-v-5a0ca7e4]{margin:0 0 8px;font-size:28px;font-weight:700;color:#1a1a1a}.header-text p[data-v-5a0ca7e4]{margin:0;color:#666;font-size:16px}.search-container[data-v-5a0ca7e4]{display:flex;justify-content:center;margin-bottom:32px}.apps-section[data-v-5a0ca7e4]{margin-bottom:32px}.apps-header[data-v-5a0ca7e4]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.apps-title h2[data-v-5a0ca7e4]{margin:0;font-size:20px;font-weight:600;color:#1f2937}.sort-controls[data-v-5a0ca7e4]{display:flex;align-items:center;gap:12px}.pagination-container[data-v-5a0ca7e4]{display:flex;justify-content:center;margin-top:32px;padding:20px 0}.search-bar[data-v-5a0ca7e4]{display:flex;gap:16px;align-items:center;max-width:600px;width:100%;padding:20px;background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);border-radius:20px;border:1px solid #e2e8f0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.search-input[data-v-5a0ca7e4]{flex:1;min-width:0}.search-input .n-input[data-v-5a0ca7e4]{border-radius:12px;border:1px solid #d1d5db;transition:all .2s ease}.search-input .n-input[data-v-5a0ca7e4]:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.search-button[data-v-5a0ca7e4]{border-radius:12px;font-weight:600;padding:0 24px;transition:all .2s ease}.search-button[data-v-5a0ca7e4]:hover{transform:translateY(-1px);box-shadow:0 4px 12px #3b82f64d}.apps-grid[data-v-5a0ca7e4]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.app-card[data-v-5a0ca7e4]{border:1px solid #e5e7eb;border-radius:16px;background:white;overflow:hidden;transition:all .3s ease;box-shadow:0 1px 3px #0000001a}.app-card[data-v-5a0ca7e4]:hover{transform:translateY(-4px);box-shadow:0 8px 25px #00000026;border-color:#d1d5db}.app-image[data-v-5a0ca7e4]{position:relative;width:100%;height:200px;overflow:hidden;background:linear-gradient(135deg,#f3f4f6 0%,#e5e7eb 100%);cursor:pointer;transition:opacity .2s ease}.app-image[data-v-5a0ca7e4]:hover{opacity:.9}.app-image img[data-v-5a0ca7e4]{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.app-card:hover .app-image img[data-v-5a0ca7e4]{transform:scale(1.05)}.app-image-placeholder[data-v-5a0ca7e4]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#9ca3af;background:linear-gradient(135deg,#f9fafb 0%,#f3f4f6 100%)}.app-image-placeholder.show[data-v-5a0ca7e4]{display:flex}.app-content[data-v-5a0ca7e4]{padding:20px}.app-header[data-v-5a0ca7e4]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.app-title-section[data-v-5a0ca7e4]{flex:1;margin-right:12px}.app-title-section h3[data-v-5a0ca7e4]{margin:0 0 4px;font-size:18px;font-weight:600;color:#1f2937;line-height:1.2}.clickable-title[data-v-5a0ca7e4]{cursor:pointer;transition:color .2s ease}.clickable-title[data-v-5a0ca7e4]:hover{color:#10b981}.app-team[data-v-5a0ca7e4]{display:flex;align-items:center;gap:4px;font-size:12px;color:#6b7280;font-weight:500}.app-team .n-icon[data-v-5a0ca7e4]{color:#9ca3af;font-size:14px}.app-name[data-v-5a0ca7e4]{color:#6b7280;font-size:11px;font-weight:500;font-family:SF Mono,Monaco,Menlo,Ubuntu Mono,monospace;background:transparent;border:1px solid #d1d5db;border-radius:12px;padding:4px 10px;text-align:center;min-width:70px;letter-spacing:.3px;text-transform:uppercase;font-size:10px;transition:all .2s ease}.app-name[data-v-5a0ca7e4]:hover{border-color:#9ca3af;color:#374151;transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.app-subtitle[data-v-5a0ca7e4]{color:#6b7280;font-size:14px;line-height:1.5;margin-bottom:16px}.app-actions[data-v-5a0ca7e4]{padding:0 20px 20px;display:flex;gap:12px}.app-actions .n-button[data-v-5a0ca7e4]{flex:1}.loading[data-v-5a0ca7e4],.empty[data-v-5a0ca7e4]{display:flex;justify-content:center;align-items:center;min-height:300px}@media (max-width: 768px){.header-content[data-v-5a0ca7e4]{flex-direction:column;gap:16px;align-items:stretch}.search-container[data-v-5a0ca7e4]{margin-bottom:24px}.search-bar[data-v-5a0ca7e4]{flex-direction:column;gap:12px;padding:16px;max-width:100%}.search-input[data-v-5a0ca7e4],.search-button[data-v-5a0ca7e4]{width:100%}.apps-grid[data-v-5a0ca7e4]{grid-template-columns:1fr;gap:16px}.app-card[data-v-5a0ca7e4]{border-radius:12px}.app-image[data-v-5a0ca7e4]{height:180px}} diff --git a/apps/jingrow/frontend/dist/assets/AppMarketplace-cd5d5e12.js b/apps/jingrow/frontend/dist/assets/AppMarketplace-cd5d5e12.js new file mode 100644 index 0000000..0fb3b66 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AppMarketplace-cd5d5e12.js @@ -0,0 +1 @@ +import{d as ae,u as se,X as te,r as i,c as F,o as le,M as E,e as p,f as n,g as u,j as s,h as o,w as r,i as oe,F as ne,C as re,y,k as ie,a0 as A,t,l as c,$ as k,p as w,n as P,m as ce,Z as ue,D as Z,_ as pe,as as de,aA as ve,a2 as q}from"./index-d271a6a3.js";import{I as b}from"./iconify-242f8a3c.js";import{I as _e}from"./InstallProgressModal-2b90d319.js";import{_ as ge}from"./_plugin-vue_export-helper-c27b6911.js";const he={class:"app-marketplace"},me={class:"page-header"},fe={class:"header-content"},ye={class:"header-text"},ke={class:"content"},we={class:"search-container"},be={class:"search-bar"},Ce={key:0,class:"apps-section"},Se={class:"apps-header"},Ie={class:"sort-controls"},Ae={class:"apps-grid"},Pe=["onClick"],Ne=["src","alt"],xe={key:1,class:"app-image-placeholder"},Me={class:"app-content"},ze={class:"app-header"},$e={class:"app-title-section"},Le=["onClick"],Te={key:0,class:"app-team"},Ue={key:0,class:"app-name"},Ee={key:0,class:"app-subtitle"},je={class:"app-actions"},Be={class:"pagination-container"},Re={key:1,class:"loading"},Ve={key:2,class:"empty"},De=ae({__name:"AppMarketplace",setup(Fe){const N=se(),K=te(),j=ie(),L=i(""),C=i(!1),h=i([]),x=i(0),m=i(1),S=i(parseInt(localStorage.getItem("itemsPerPage")||"20")),M=i("creation desc"),z=i(!1),f=i(0),g=i(""),$=i("info"),I=i(!1),B=i(new Set),O=F(()=>[{label:t("Latest"),value:"creation desc"},{label:t("Oldest"),value:"creation asc"},{label:t("Name A-Z"),value:"app_name asc"},{label:t("Name Z-A"),value:"app_name desc"},{label:t("Most Popular"),value:"modified desc"}]),W=F(()=>Math.max(1,Math.ceil(x.value/S.value)));async function _(){C.value=!0;try{const e=new URLSearchParams({page:m.value.toString(),page_size:S.value.toString(),search:L.value,sort_by:M.value}),a=(await A.get(`/jingrow/app-marketplace?${e}`)).data;a.items?(h.value=a.items,x.value=a.total||0):(h.value=a||[],x.value=h.value.length)}catch(e){console.error("Failed to load apps:",e),N.error(t("Failed to load applications")),h.value=[],x.value=0}finally{C.value=!1}}function J(){j.push("/publish-app")}function Q(e){S.value=e,m.value=1,localStorage.setItem("itemsPerPage",e.toString()),_()}function T(e){j.push({path:`/app-marketplace/${e.name}`,query:{returnTo:"/app-marketplace"}})}async function R(e){if(!e.file_url&&!e.repository_url){N.error(t("应用文件URL或仓库地址不存在"));return}try{const l=e.app_name||e.name;if(l&&(await A.get(`/jingrow/check-app/${l}`)).data.exists){K.warning({title:t("应用已存在"),content:t('应用 "{0}" 已安装,是否覆盖安装?').replace("{0}",l),positiveText:t("确认覆盖"),negativeText:t("取消"),onPositiveClick:()=>{V(e)}});return}}catch(l){console.error("Check app exists error:",l)}V(e)}async function V(e){var l,a,d,D;try{z.value=!0,f.value=0,g.value=t("正在准备安装..."),$.value="info",I.value=!0;let v;if(e.file_url)g.value=t("正在下载应用包..."),f.value=20,g.value=t("正在安装应用..."),f.value=30,v=await A.post("/jingrow/install-from-url",new URLSearchParams({url:e.file_url}),{headers:{...q(),"Content-Type":"application/x-www-form-urlencoded"}});else if(e.repository_url){g.value=t("正在克隆仓库..."),f.value=20,g.value=t("正在安装应用..."),f.value=30;const ee=new URLSearchParams({repo_url:e.repository_url});v=await A.post("/jingrow/install-from-git",ee,{headers:{...q(),"Content-Type":"application/x-www-form-urlencoded"}})}if(!v)throw new Error(t("无法确定安装方式"));if(f.value=100,v.data.success)z.value=!1,$.value="success",g.value=t("应用安装成功!"),N.success(t("应用安装成功")),U(),setTimeout(()=>{I.value=!1},2e3);else throw new Error(v.data.error||t("安装失败"))}catch(v){console.error("Install app error:",v),z.value=!1,$.value="error",g.value=((a=(l=v.response)==null?void 0:l.data)==null?void 0:a.detail)||v.message||t("安装失败"),N.error(((D=(d=v.response)==null?void 0:d.data)==null?void 0:D.detail)||t("安装失败")),setTimeout(()=>{I.value=!1},3e3)}}function X(e){return e?e.startsWith("http")?e:`https://cloud.jingrow.com${e.startsWith("/")?"":"/"}${e}`:""}function G(e){var a,d;const l=e.target;l.style.display="none",(d=(a=l.parentElement)==null?void 0:a.querySelector(".app-image-placeholder"))==null||d.classList.add("show")}function H(e,l){return e?e.length<=l?e:e.substring(0,l)+"...":""}async function U(){try{const e=await A.get("/jingrow/installed-app-names");if(e.data.success){const l=e.data.apps||[];B.value=new Set(l)}}catch(e){console.error("Load installed apps error:",e)}}function Y(e){return e?B.value.has(e.toLowerCase()):!1}return le(()=>{_(),U(),window.addEventListener("installedAppsUpdated",()=>{U()})}),E([M],()=>{m.value=1,_()},{deep:!0}),E([m],()=>{_()}),E(()=>localStorage.getItem("itemsPerPage"),e=>{e&&(S.value=parseInt(e),m.value=1,_())}),(e,l)=>(c(),p("div",he,[n("div",me,[n("div",fe,[n("div",ye,[n("h1",null,u(s(t)("App Marketplace")),1),n("p",null,u(s(t)("Browse and install applications from Jingrow App Marketplace")),1)]),o(s(P),{type:"primary",onClick:J},{icon:r(()=>[o(s(k),null,{default:r(()=>[o(s(b),{icon:"tabler:plus"})]),_:1})]),default:r(()=>[w(" "+u(s(t)("Publish App")),1)]),_:1})])]),n("div",ke,[n("div",we,[n("div",be,[o(s(ce),{value:L.value,"onUpdate:value":l[0]||(l[0]=a=>L.value=a),placeholder:s(t)("Search applications..."),clearable:"",size:"large",onKeyup:oe(_,["enter"]),class:"search-input"},{prefix:r(()=>[o(s(k),null,{default:r(()=>[o(s(b),{icon:"tabler:search"})]),_:1})]),_:1},8,["value","placeholder"]),o(s(P),{type:"primary",size:"large",onClick:_,class:"search-button"},{icon:r(()=>[o(s(k),null,{default:r(()=>[o(s(b),{icon:"tabler:search"})]),_:1})]),default:r(()=>[w(" "+u(s(t)("Search")),1)]),_:1})])]),!C.value&&h.value.length>0?(c(),p("div",Ce,[n("div",Se,[l[4]||(l[4]=n("div",{class:"apps-title"},null,-1)),n("div",Ie,[o(s(ue),{value:M.value,"onUpdate:value":[l[1]||(l[1]=a=>M.value=a),_],options:O.value,placeholder:s(t)("Sort by"),style:{width:"150px"}},null,8,["value","options","placeholder"])])]),n("div",Ae,[(c(!0),p(ne,null,re(h.value,a=>(c(),p("div",{key:a.name,class:"app-card"},[n("div",{class:"app-image",onClick:d=>T(a)},[a.app_image?(c(),p("img",{key:0,src:X(a.app_image),alt:a.title||a.name,onError:G},null,40,Ne)):(c(),p("div",xe,[o(s(k),{size:"48"},{default:r(()=>[o(s(b),{icon:"tabler:apps"})]),_:1})]))],8,Pe),n("div",Me,[n("div",ze,[n("div",$e,[n("h3",{onClick:d=>T(a),class:"clickable-title"},u(a.title||a.name),9,Le),a.team?(c(),p("div",Te,[o(s(k),null,{default:r(()=>[o(s(b),{icon:"tabler:users"})]),_:1}),n("span",null,u(a.team),1)])):y("",!0)]),a.app_name?(c(),p("div",Ue,u(a.app_name),1)):y("",!0)]),a.subtitle?(c(),p("div",Ee,u(H(a.subtitle,60)),1)):y("",!0)]),n("div",je,[o(s(P),{type:"default",onClick:d=>T(a)},{default:r(()=>[w(u(s(t)("View Details")),1)]),_:1},8,["onClick"]),Y(a.app_name||a.name)?(c(),Z(s(P),{key:0,type:"warning",onClick:d=>R(a)},{default:r(()=>[w(u(s(t)("Installed")),1)]),_:1},8,["onClick"])):(c(),Z(s(P),{key:1,type:"primary",onClick:d=>R(a)},{default:r(()=>[w(u(s(t)("Install")),1)]),_:1},8,["onClick"]))])]))),128))]),n("div",Be,[o(s(pe),{page:m.value,"onUpdate:page":[l[2]||(l[2]=a=>m.value=a),_],"page-count":W.value,size:"large","show-size-picker":"","page-sizes":[20,50,100],"page-size":S.value,"onUpdate:pageSize":Q},null,8,["page","page-count","page-size"])])])):y("",!0),C.value?(c(),p("div",Re,[o(s(de),{size:"large"},{description:r(()=>[w(u(s(t)("Loading applications...")),1)]),_:1})])):y("",!0),!C.value&&h.value.length===0?(c(),p("div",Ve,[o(s(ve),{description:s(t)("No applications found")},{icon:r(()=>[o(s(k),null,{default:r(()=>[o(s(b),{icon:"tabler:apps"})]),_:1})]),_:1},8,["description"])])):y("",!0)]),o(_e,{modelValue:I.value,"onUpdate:modelValue":l[3]||(l[3]=a=>I.value=a),progress:f.value,message:g.value,status:$.value,installing:z.value},null,8,["modelValue","progress","message","status","installing"])]))}});const We=ge(De,[["__scopeId","data-v-5a0ca7e4"]]);export{We as default}; diff --git a/apps/jingrow/frontend/dist/assets/Attach-c8ad1cd3.css b/apps/jingrow/frontend/dist/assets/Attach-c8ad1cd3.css new file mode 100644 index 0000000..84c781a --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Attach-c8ad1cd3.css @@ -0,0 +1 @@ +.field-wrapper[data-v-0249c198] .attach-container{flex:1}.attach-container[data-v-0249c198]{position:relative;width:100%}.attach-line[data-v-0249c198]{display:flex;align-items:center;gap:8px;position:relative;width:100%}.link-icon[data-v-0249c198]{opacity:.6;color:inherit;display:inline-flex;align-items:center}.file-link-wrap[data-v-0249c198]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-link[data-v-0249c198]{color:inherit;text-decoration:none;display:inline-block}.file-link[data-v-0249c198]:hover{text-decoration:underline}.actions[data-v-0249c198]{margin-left:auto;display:inline-flex;gap:12px}.actions-left[data-v-0249c198]{margin-left:0}.action[data-v-0249c198]{background:transparent;border:1px solid #e5e7eb;padding:4px 10px;color:inherit;cursor:pointer;font-size:13px;border-radius:6px;line-height:1.4}.action[data-v-0249c198]:hover{background:#f6f7f9} diff --git a/apps/jingrow/frontend/dist/assets/Attach-d60cbf5b.js b/apps/jingrow/frontend/dist/assets/Attach-d60cbf5b.js new file mode 100644 index 0000000..8a790e5 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Attach-d60cbf5b.js @@ -0,0 +1 @@ +import{uploadFileToJingrow as F}from"./common-c89c6552.js";import{d as M,r as U,c as f,e as l,f as o,p as T,g as d,y as I,F as $,Y as j,l as s}from"./index-d271a6a3.js";import{_ as q}from"./_plugin-vue_export-helper-c27b6911.js";const z={class:"field-label"},L={key:0,class:"required"},D={class:"attach-container"},J={class:"file-link-wrap"},P=["title","href"],Y={key:0,class:"actions"},G={key:0,class:"actions actions-left"},H={key:1,class:"field-value"},K=M({__name:"Attach",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(R){const t=R,u=U(null),p=U(!1),i=f(()=>{var e;return String(((e=t.record)==null?void 0:e[t.df.fieldname])||"")}),B=f(()=>t.df.label_layout||"vertical"),N=f(()=>{const e=i.value;if(!e)return"";try{const n=new URL(e,window.location.origin).pathname,c=n.substring(n.lastIndexOf("/")+1);return decodeURIComponent(c||e)}catch{const n=e.lastIndexOf("/");return n>=0?decodeURIComponent(e.substring(n+1)):e}});function O(){var e;t.canEdit&&((e=u.value)==null||e.click())}async function S(e){var c,_,y,v,m,g,h,b,k,x,C;const a=e.target,n=(c=a.files)==null?void 0:c[0];if(n)try{const w=((_=t.ctx)==null?void 0:_.entity)&&(((y=t.ctx)==null?void 0:y.entity.value)??((v=t.ctx)==null?void 0:v.entity))||((m=t.record)==null?void 0:m.pagetype)||"",A=((g=t.ctx)==null?void 0:g.id)&&(((h=t.ctx)==null?void 0:h.id.value)??((b=t.ctx)==null?void 0:b.id))||((k=t.record)==null?void 0:k.name)||"",E=(x=t.df)==null?void 0:x.fieldname,r=await F(n,w,A,E);if(r.success){if(r.file_url){t.record[E]=r.file_url;try{typeof((C=t.ctx)==null?void 0:C.save)=="function"&&await t.ctx.save()}catch{}}}else alert(r.error||"上传失败")}catch{alert("上传失败")}finally{a&&(a.value="")}}function V(){t.canEdit&&(t.record[t.df.fieldname]="")}return(e,a)=>(s(),l("div",{class:j(["field-wrapper",`layout-${B.value}`])},[o("label",z,[T(d(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(s(),l("span",L,"*")):I("",!0)]),o("div",D,[i.value?(s(),l("div",{key:0,class:"attach-line",onMouseenter:a[0]||(a[0]=n=>p.value=!0),onMouseleave:a[1]||(a[1]=n=>p.value=!1)},[a[2]||(a[2]=o("span",{class:"link-icon"},[o("i",{class:"fa-regular fa-file"})],-1)),o("span",J,[o("a",{class:"file-link",title:i.value,href:i.value,target:"_blank",rel:"noopener"},d(N.value||i.value),9,P)]),e.canEdit?(s(),l("div",Y,[o("button",{class:"action",type:"button",onClick:V},d(e.ctx.t?e.ctx.t("Clear"):"Clear"),1)])):I("",!0)],32)):(s(),l($,{key:1},[e.canEdit?(s(),l("div",G,[o("button",{class:"action",type:"button",onClick:O},d(e.ctx.t?e.ctx.t("Upload"):"Upload"),1)])):(s(),l("span",H,"—"))],64)),o("input",{ref_key:"inputRef",ref:u,type:"file",style:{display:"none"},onChange:S},null,544)])],2))}});const Q=q(K,[["__scopeId","data-v-0249c198"]]),te=Object.freeze(Object.defineProperty({__proto__:null,default:Q},Symbol.toStringTag,{value:"Module"}));export{te as _}; diff --git a/apps/jingrow/frontend/dist/assets/AttachImage-2dbfd5c7.js b/apps/jingrow/frontend/dist/assets/AttachImage-2dbfd5c7.js new file mode 100644 index 0000000..40df094 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AttachImage-2dbfd5c7.js @@ -0,0 +1 @@ +import{uploadFileToJingrow as $}from"./common-c89c6552.js";import{d as q,r as V,c as B,e as s,f as o,p as z,g as u,y as p,F as O,Y as R,l as n}from"./index-d271a6a3.js";import{_ as D}from"./_plugin-vue_export-helper-c27b6911.js";const J={class:"field-label"},L={key:0,class:"required"},P={class:"attach-image-container"},Y={key:0,class:"attach-line"},G={class:"file-link-wrap"},H=["title"],K={key:0,class:"actions"},Q={key:1,class:"preview-popover"},W=["src"],X={key:0,class:"actions actions-left"},Z={key:1,class:"field-value"},ee=q({__name:"AttachImage",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(S){const e=S,_=V(null),f=V(!1),r=B(()=>{var t;return String(((t=e.record)==null?void 0:t[e.df.fieldname])||"")}),j=B(()=>e.df.label_layout||"vertical");function F(){var t;e.canEdit&&((t=_.value)==null||t.click())}async function M(t){var m,v,g,y,h,b,k,I,A,w,x,C;const a=t.target,c=(m=a.files)==null?void 0:m[0];if(c)try{const d=((v=e.ctx)==null?void 0:v.entity)&&(((g=e.ctx)==null?void 0:g.entity.value)??((y=e.ctx)==null?void 0:y.entity))||((h=e.record)==null?void 0:h.pagetype)||"",E=((b=e.ctx)==null?void 0:b.id)&&(((k=e.ctx)==null?void 0:k.id.value)??((I=e.ctx)==null?void 0:I.id))||((A=e.record)==null?void 0:A.name)||"",i=(w=e.df)==null?void 0:w.fieldname,T=(x=e.record)==null?void 0:x[i];console.debug("[AttachImage] upload params",{pagetype:d,docname:E,fieldname:i,file:c.name,oldValue:T});const l=await $(c,d,E,i);if(console.debug("[AttachImage] upload result",l),l.success){if(console.debug("[AttachImage] server returned",{file_url:l.file_url,file_name:l.file_name,local_path:l.local_path}),l.file_url){e.record[i]=l.file_url,console.debug("[AttachImage] set field value locally",{fieldname:i,value:l.file_url});try{typeof((C=e.ctx)==null?void 0:C.save)=="function"&&(await e.ctx.save(),console.debug("[AttachImage] auto save triggered"))}catch(U){console.warn("[AttachImage] auto save failed",U)}}}else alert(l.error||"上传失败"),console.warn("[AttachImage] upload failed",l)}catch(d){alert("上传失败"),console.error("[AttachImage] upload error",d)}finally{a&&(a.value="")}}function N(){e.canEdit&&(e.record[e.df.fieldname]="")}return(t,a)=>(n(),s("div",{class:R(["field-wrapper",`layout-${j.value}`])},[o("label",J,[z(u(t.ctx.t(t.df.label||t.df.fieldname))+" ",1),t.df.reqd?(n(),s("span",L,"*")):p("",!0)]),o("div",P,[r.value?(n(),s("div",Y,[a[2]||(a[2]=o("span",{class:"link-icon"},[o("i",{class:"fa-solid fa-link"})],-1)),o("span",G,[o("a",{class:"file-link",title:r.value,href:"javascript:void(0)",onMouseenter:a[0]||(a[0]=c=>f.value=!0),onMouseleave:a[1]||(a[1]=c=>f.value=!1)},u(r.value),41,H)]),t.canEdit?(n(),s("div",K,[o("button",{class:"action",type:"button",onClick:N},u(t.ctx.t?t.ctx.t("Clear"):"Clear"),1)])):p("",!0),f.value?(n(),s("div",Q,[o("img",{src:r.value,alt:"preview"},null,8,W)])):p("",!0)])):(n(),s(O,{key:1},[t.canEdit?(n(),s("div",X,[o("button",{class:"action",type:"button",onClick:F},u(t.ctx.t?t.ctx.t("Upload"):"Upload"),1)])):(n(),s("span",Z,"—"))],64)),o("input",{ref_key:"inputRef",ref:_,type:"file",accept:"image/*",style:{display:"none"},onChange:M},null,544)])],2))}});const te=D(ee,[["__scopeId","data-v-468818cf"]]),se=Object.freeze(Object.defineProperty({__proto__:null,default:te},Symbol.toStringTag,{value:"Module"}));export{se as _}; diff --git a/apps/jingrow/frontend/dist/assets/AttachImage-7d44c0de.css b/apps/jingrow/frontend/dist/assets/AttachImage-7d44c0de.css new file mode 100644 index 0000000..ab39940 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AttachImage-7d44c0de.css @@ -0,0 +1 @@ +.field-wrapper[data-v-468818cf] .attach-image-container{flex:1}.attach-image-container[data-v-468818cf]{position:relative;width:100%}.attach-line[data-v-468818cf]{display:flex;align-items:center;gap:8px;position:relative;width:100%}.link-icon[data-v-468818cf]{opacity:.5;color:inherit;display:inline-flex;align-items:center}.file-link-wrap[data-v-468818cf]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-link[data-v-468818cf]{color:inherit;text-decoration:none;display:inline-block}.file-link[data-v-468818cf]:hover{text-decoration:underline}.actions[data-v-468818cf]{margin-left:auto;display:inline-flex;gap:12px}.actions-left[data-v-468818cf]{margin-left:0}.action[data-v-468818cf]{background:transparent;border:none;padding:2px 6px;color:inherit;cursor:pointer;font-size:13px;border-radius:6px;line-height:1.4}.action[data-v-468818cf]:hover{text-decoration:underline;background:#f2f3f5}.preview-popover[data-v-468818cf]{position:absolute;bottom:calc(100% + 8px);left:0;background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:8px;box-shadow:0 8px 24px #0000001f;z-index:20}.preview-popover img[data-v-468818cf]{width:160px;height:160px;object-fit:contain;border-radius:8px;display:block} diff --git a/apps/jingrow/frontend/dist/assets/AttachmentSection-89347148.js b/apps/jingrow/frontend/dist/assets/AttachmentSection-89347148.js new file mode 100644 index 0000000..ae3ef90 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AttachmentSection-89347148.js @@ -0,0 +1 @@ +import{d as Z,c as n,r as I,e as u,f as o,h as l,w as c,D as ee,j as a,y as d,F as G,C as V,x as te,l as r,g as _,t as f,$ as w,n as F,L as k,p as A}from"./index-d271a6a3.js";import{I as p}from"./iconify-242f8a3c.js";import ae from"./ImageGallery-57bbaf56.js";import{_ as le}from"./_plugin-vue_export-helper-c27b6911.js";const ne={key:0,class:"media-section"},se={class:"section-header"},oe={key:0,class:"image-attachment-list"},ie={class:"image-attachment"},ce={class:"image-container"},re=["src","alt","onClick"],ue={class:"image-overlay"},me=["onClick","title"],de={class:"image-filename"},_e={key:1,class:"file-attachment-list"},fe={class:"file-attachment"},pe={class:"attachment-icon"},he={class:"attachment-info"},ve={class:"file-name-container"},ge=["onClick","title"],ye={key:2,class:"load-more-container"},ke={key:3,class:"add-attachment-placeholder"},Ae=8,be=20,xe=Z({__name:"AttachmentSection",props:{metaFields:{},record:{},canEdit:{type:Boolean}},emits:["add-attachment","delete-attachment"],setup(j,{emit:P}){const M=j,$=P,h=n(()=>{const e=M.record.attachments||[];return e.length===0?[]:e.map(t=>({file_name:t.file_name||t.name,file_url:t.file_url||t.url,name:t.name,is_private:t.is_private||!1}))}),v=I(8),g=I(20),b=n(()=>h.value.filter(e=>y(e))),x=n(()=>h.value.filter(e=>!y(e))),z=n(()=>b.value.slice(0,v.value)),D=n(()=>x.value.slice(0,g.value)),R=n(()=>b.value.length>v.value),T=n(()=>x.value.length>g.value),U=n(()=>R.value||T.value),q=n(()=>z.value.length>0),H=n(()=>D.value.length>0),J=n(()=>{const e=Math.max(0,b.value.length-v.value),t=Math.max(0,x.value.length-g.value);return e+t}),K=()=>{v.value+=Ae,g.value+=be},E=n(()=>h.value.length>0),C=n(()=>M.canEdit!==!1),N=I(),O=n(()=>h.value.filter(e=>y(e)).map(e=>e.file_url)),y=e=>{const t=e.file_url||"",i=e.file_name||"";return[".jpg",".jpeg",".png",".gif",".webp",".bmp",".svg"].some(m=>t.toLowerCase().includes(m)||i.toLowerCase().includes(m))},Q=e=>{var i;switch((i=e.split(".").pop())==null?void 0:i.toLowerCase()){case"pdf":return"tabler:file-type-pdf";case"doc":case"docx":return"tabler:file-type-doc";case"xls":case"xlsx":return"tabler:file-type-xls";case"ppt":case"pptx":return"tabler:file-type-ppt";case"zip":case"rar":return"tabler:file-zip";case"txt":return"tabler:file-text";default:return"tabler:file"}},W=e=>{var i;const t=h.value.slice(0,e+1).filter(s=>y(s)).length-1;(i=N.value)==null||i.open(t)},X=()=>{},B=()=>{$("add-attachment")},L=e=>{$("delete-attachment",e)},Y=e=>{const t=e.target;t.src&&!t.src.includes("?retry=")&&setTimeout(()=>{t.src=t.src.split("?")[0]+"?retry="+Date.now()},1e3)};return(e,t)=>{const i=te("router-link");return E.value||C.value?(r(),u("div",ne,[o("div",se,[l(i,{to:"/app/file",class:"section-title-link",target:"_blank"},{default:c(()=>[o("h4",null,_(a(f)("Attachments")),1)]),_:1}),C.value?(r(),ee(a(F),{key:0,type:"default",size:"small",text:"",onClick:B,title:a(f)("Add Attachment"),class:"add-attachment-btn"},{icon:c(()=>[l(a(w),null,{default:c(()=>[l(a(p),{icon:"tabler:plus"})]),_:1})]),_:1},8,["title"])):d("",!0)]),q.value?(r(),u("div",oe,[(r(!0),u(G,null,V(z.value,(s,m)=>(r(),u("div",{key:`image-${m}`,class:"image-attachment-item"},[o("div",ie,[o("div",ce,[o("img",{src:s.file_url,alt:s.file_name,loading:"lazy",onClick:S=>W(m),onError:Y},null,40,re),o("div",ue,[o("button",{onClick:k(S=>L(s),["stop"]),title:a(f)("Delete Attachment"),class:"delete-btn"},[l(a(p),{icon:"tabler:x"})],8,me)])]),o("div",de,[l(i,{to:`/app/file/${s.name}`,class:"file-name-link",target:"_blank",onClick:t[0]||(t[0]=k(()=>{},["stop"]))},{default:c(()=>[A(_(s.file_name),1)]),_:2},1032,["to"])])])]))),128))])):d("",!0),H.value?(r(),u("div",_e,[(r(!0),u(G,null,V(D.value,(s,m)=>(r(),u("div",{key:`file-${m}`,class:"file-attachment-item"},[o("div",fe,[o("div",pe,[l(a(p),{icon:Q(s.file_url)},null,8,["icon"])]),o("div",he,[o("div",ve,[l(i,{to:`/app/file/${s.name}`,class:"file-name-link",target:"_blank",onClick:t[1]||(t[1]=k(()=>{},["stop"]))},{default:c(()=>[A(_(s.file_name),1)]),_:2},1032,["to"]),o("button",{onClick:k(S=>L(s),["stop"]),title:a(f)("Delete Attachment"),class:"delete-btn-inline"},[l(a(p),{icon:"tabler:x"})],8,ge)])])])]))),128))])):d("",!0),U.value?(r(),u("div",ye,[l(a(F),{type:"default",size:"small",text:"",onClick:K,class:"load-more-btn"},{icon:c(()=>[l(a(w),null,{default:c(()=>[l(a(p),{icon:"tabler:chevron-down"})]),_:1})]),default:c(()=>[A(" "+_(a(f)("Load More"))+" ("+_(J.value)+") ",1)]),_:1})])):d("",!0),!E.value&&C.value?(r(),u("div",ke,[l(a(F),{type:"default",onClick:B,class:"add-button"},{icon:c(()=>[l(a(w),null,{default:c(()=>[l(a(p),{icon:"tabler:plus"})]),_:1})]),default:c(()=>[A(" "+_(a(f)("Add Attachment")),1)]),_:1})])):d("",!0),l(ae,{ref_key:"imageGalleryRef",ref:N,images:O.value,onClose:X},null,8,["images"])])):d("",!0)}}});const Me=le(xe,[["__scopeId","data-v-9eb80c1e"]]);export{Me as default}; diff --git a/apps/jingrow/frontend/dist/assets/AttachmentSection-bfdd2271.css b/apps/jingrow/frontend/dist/assets/AttachmentSection-bfdd2271.css new file mode 100644 index 0000000..11c0f9f --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/AttachmentSection-bfdd2271.css @@ -0,0 +1 @@ +.media-section[data-v-9eb80c1e]{margin-bottom:24px}.media-section[data-v-9eb80c1e]:last-child{margin-bottom:0}.section-header[data-v-9eb80c1e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.section-header h4[data-v-9eb80c1e]{margin:0;font-size:14px;font-weight:600;color:#374151}.section-title-link[data-v-9eb80c1e]{text-decoration:none;color:inherit}.section-title-link:hover h4[data-v-9eb80c1e]{text-decoration:underline}.add-attachment-btn[data-v-9eb80c1e]{color:#6b7280;transition:color .2s ease}.add-attachment-btn[data-v-9eb80c1e]:hover{color:#374151}.image-attachment-list[data-v-9eb80c1e]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:100%;margin-bottom:12px}.image-attachment-item[data-v-9eb80c1e]{width:100%;min-height:0}.file-attachment-list[data-v-9eb80c1e]{display:flex;flex-direction:column;gap:0;width:100%}.file-attachment-item[data-v-9eb80c1e]{width:100%;min-height:0}.image-attachment img[data-v-9eb80c1e]{width:100%;height:auto;border-radius:8px;object-fit:contain;cursor:pointer;transition:transform .2s ease;overflow:hidden!important}.image-container[data-v-9eb80c1e]{position:relative;border-radius:12px}.image-attachment img[data-v-9eb80c1e]:hover{transform:scale(1.02)}.image-overlay[data-v-9eb80c1e]{position:absolute;top:4px;right:4px;opacity:0;transition:opacity .2s ease;z-index:10}.image-container img:hover+.image-overlay[data-v-9eb80c1e],.image-container .image-overlay[data-v-9eb80c1e]:hover{opacity:1}.delete-btn[data-v-9eb80c1e]{width:20px;height:20px;border:none;border-radius:50%;background:rgba(239,68,68,.9);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;font-size:12px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);box-shadow:0 2px 8px #ef44444d}.delete-btn[data-v-9eb80c1e]:hover{background:rgba(220,38,38,.95);transform:scale(1.1);box-shadow:0 4px 12px #ef444466}.image-filename[data-v-9eb80c1e]{text-align:center}.image-filename .file-name[data-v-9eb80c1e]{font-size:11px;color:#374151;overflow:hidden;text-overflow:ellipsis;word-break:break-all;display:block;width:100%}.file-name-link[data-v-9eb80c1e]{font-size:11px;color:#374151;text-decoration:none;overflow:hidden;text-overflow:ellipsis;word-break:break-all;display:block;width:100%;transition:color .2s ease}.file-name-link[data-v-9eb80c1e]:hover{color:#374151;text-decoration:underline}.file-attachment[data-v-9eb80c1e]{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #e5e7eb}.attachment-icon[data-v-9eb80c1e]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:#e5e7eb;border-radius:4px;color:#6b7280;flex-shrink:0}.attachment-info[data-v-9eb80c1e]{flex:1;min-width:0}.file-name-container[data-v-9eb80c1e]{position:relative;display:flex;align-items:center;width:100%}.file-name-link[data-v-9eb80c1e]{font-size:12px;font-weight:500;color:#1f2937;text-decoration:none;overflow:hidden;text-overflow:ellipsis;word-break:break-all;flex:1;transition:color .2s ease}.file-name-link[data-v-9eb80c1e]:hover{color:#1f2937;text-decoration:underline}.delete-btn-inline[data-v-9eb80c1e]{width:16px;height:16px;border:none;border-radius:50%;background:rgba(239,68,68,.9);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;font-size:10px;margin-left:8px;opacity:0;transform:scale(.8);flex-shrink:0}.file-name-container:hover .delete-btn-inline[data-v-9eb80c1e]{opacity:1;transform:scale(1)}.delete-btn-inline[data-v-9eb80c1e]:hover{background:rgba(220,38,38,.95);transform:scale(1.1)}.add-attachment-placeholder[data-v-9eb80c1e]{display:flex;justify-content:center;padding:20px}.add-button[data-v-9eb80c1e]{width:100%}.load-more-container[data-v-9eb80c1e]{display:flex;justify-content:center;padding:12px 0;margin-top:8px}.load-more-btn[data-v-9eb80c1e]{color:#6b7280;font-size:12px;transition:color .2s ease}.load-more-btn[data-v-9eb80c1e]:hover{color:#374151}@media (max-width: 768px){.image-attachment-list[data-v-9eb80c1e]{grid-template-columns:1fr}.file-attachment-list[data-v-9eb80c1e]{display:flex;flex-direction:column}} diff --git a/apps/jingrow/frontend/dist/assets/Autocomplete-516339c6.css b/apps/jingrow/frontend/dist/assets/Autocomplete-516339c6.css new file mode 100644 index 0000000..b1d9f39 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Autocomplete-516339c6.css @@ -0,0 +1 @@ +.field-wrapper[data-v-11679784] .n-auto-complete{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Autocomplete-eef51ef0.js b/apps/jingrow/frontend/dist/assets/Autocomplete-eef51ef0.js new file mode 100644 index 0000000..08a33f0 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Autocomplete-eef51ef0.js @@ -0,0 +1 @@ +import{d as r,c as p,e as a,f as i,p as c,g as f,y as u,h as m,j as _,Y as b,l as t,aq as v}from"./index-d271a6a3.js";import{_ as y}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},N={key:0,class:"required"},S=r({__name:"Autocomplete",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(l){const s=l,d=p(()=>s.df.label_layout||"vertical");return(e,o)=>(t(),a("div",{class:b(["field-wrapper",`layout-${d.value}`])},[i("label",g,[c(f(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(t(),a("span",N,"*")):u("",!0)]),m(_(v),{value:e.record[e.df.fieldname],"onUpdate:value":o[0]||(o[0]=n=>e.record[e.df.fieldname]=n),options:e.ctx.getSelectOptions?e.ctx.getSelectOptions(e.df):[],placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","options","placeholder","disabled"])],2))}});const h=y(S,[["__scopeId","data-v-11679784"]]),C=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{C as _}; diff --git a/apps/jingrow/frontend/dist/assets/Barcode-38d1adf5.css b/apps/jingrow/frontend/dist/assets/Barcode-38d1adf5.css new file mode 100644 index 0000000..26eda38 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Barcode-38d1adf5.css @@ -0,0 +1 @@ +.field-wrapper[data-v-51a81c93] .n-input{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Barcode-81215231.js b/apps/jingrow/frontend/dist/assets/Barcode-81215231.js new file mode 100644 index 0000000..2f3711b --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Barcode-81215231.js @@ -0,0 +1 @@ +import{d as n,c,e as o,f as p,p as i,g as f,y as u,h as _,j as m,Y as y,l,m as b}from"./index-d271a6a3.js";import{_ as v}from"./_plugin-vue_export-helper-c27b6911.js";const B={class:"field-label"},g={key:0,class:"required"},N=n({__name:"Barcode",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(d){const t=d,s=c(()=>t.df.label_layout||"vertical");return(e,a)=>(l(),o("div",{class:y(["field-wrapper",`layout-${s.value}`])},[p("label",B,[i(f(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(l(),o("span",g,"*")):u("",!0)]),_(m(b),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=r=>e.record[e.df.fieldname]=r),type:"text",placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const h=v(N,[["__scopeId","data-v-51a81c93"]]),k=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{k as _}; diff --git a/apps/jingrow/frontend/dist/assets/BaseModal-260919ba.js b/apps/jingrow/frontend/dist/assets/BaseModal-260919ba.js new file mode 100644 index 0000000..bae28f1 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/BaseModal-260919ba.js @@ -0,0 +1 @@ +import{e as n,f as e,g as c,aC as a,L as i,y as r,l as _}from"./index-d271a6a3.js";import{_ as m}from"./_plugin-vue_export-helper-c27b6911.js";const u={class:"modal-wrapper"},p={class:"modal-container"},f={class:"modal-header"},h={class:"modal-body"},v={class:"modal-footer"},y={__name:"BaseModal",props:{modelValue:Boolean,title:{type:String,default:""}},emits:["update:modelValue"],setup(s,{emit:l}){const d=l;function o(){d("update:modelValue",!1)}return(t,k)=>s.modelValue?(_(),n("div",{key:0,class:"modal-mask",onClick:i(o,["self"])},[e("div",u,[e("div",p,[e("div",f,[e("h4",null,c(s.title),1),e("button",{class:"modal-close",onClick:o},"×")]),e("div",h,[a(t.$slots,"default",{},void 0,!0)]),e("div",v,[a(t.$slots,"footer",{},()=>[e("button",{class:"btn btn-primary",onClick:o},"确定")],!0)])])])])):r("",!0)}},V=m(y,[["__scopeId","data-v-9d206155"]]);export{V as default}; diff --git a/apps/jingrow/frontend/dist/assets/BaseModal-74cfab9f.css b/apps/jingrow/frontend/dist/assets/BaseModal-74cfab9f.css new file mode 100644 index 0000000..108cd0a --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/BaseModal-74cfab9f.css @@ -0,0 +1 @@ +.modal-mask[data-v-9d206155]{position:fixed;z-index:9999;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.18);display:flex;align-items:center;justify-content:center}.modal-wrapper[data-v-9d206155]{width:400px;max-width:98vw;max-height:90vh;background:white;border-radius:10px;box-shadow:0 8px 32px #0000002e;display:flex;flex-direction:column}.modal-container[data-v-9d206155]{display:flex;flex-direction:column;height:100%}.modal-header[data-v-9d206155]{display:flex;align-items:center;justify-content:space-between;padding:18px 24px 12px;border-bottom:1px solid #e5e7eb}.modal-header h4[data-v-9d206155]{margin:0;font-size:18px;font-weight:600}.modal-close[data-v-9d206155]{background:none;border:none;font-size:28px;color:#888;cursor:pointer}.modal-body[data-v-9d206155]{flex:1;overflow-y:auto;padding:24px;max-height:60vh;min-height:80px}.modal-footer[data-v-9d206155]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #e5e7eb}.btn[data-v-9d206155]{padding:6px 18px;border-radius:4px;font-size:14px;font-weight:500;border:none;cursor:pointer}.btn-primary[data-v-9d206155]{background:#222;color:#fff} diff --git a/apps/jingrow/frontend/dist/assets/Button-32075d9a.js b/apps/jingrow/frontend/dist/assets/Button-32075d9a.js new file mode 100644 index 0000000..e483683 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Button-32075d9a.js @@ -0,0 +1 @@ +import{d as c,c as i,e as a,f,p as o,g as l,y as u,h as p,w as _,j as m,Y as b,l as s,n as y}from"./index-d271a6a3.js";import{_ as B}from"./_plugin-vue_export-helper-c27b6911.js";const v={class:"field-label"},C={key:0,class:"required"},g=c({__name:"Button",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(n){const d=n,r=i(()=>d.df.label_layout||"vertical");return(e,t)=>(s(),a("div",{class:b(["field-wrapper",`layout-${r.value}`])},[f("label",v,[o(l(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(s(),a("span",C,"*")):u("",!0)]),p(m(y),{disabled:!e.canEdit,onClick:t[0]||(t[0]=h=>e.ctx.handleButtonClick?e.ctx.handleButtonClick(e.df):null)},{default:_(()=>[o(l(e.ctx.t(e.df.label||e.df.fieldname)),1)]),_:1},8,["disabled"])],2))}});const k=B(g,[["__scopeId","data-v-55efe31c"]]),j=Object.freeze(Object.defineProperty({__proto__:null,default:k},Symbol.toStringTag,{value:"Module"}));export{j as _}; diff --git a/apps/jingrow/frontend/dist/assets/Button-56079bd3.css b/apps/jingrow/frontend/dist/assets/Button-56079bd3.css new file mode 100644 index 0000000..bef5601 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Button-56079bd3.css @@ -0,0 +1 @@ +.field-wrapper[data-v-55efe31c] .n-button{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Check-3f46cacd.js b/apps/jingrow/frontend/dist/assets/Check-3f46cacd.js new file mode 100644 index 0000000..1e343f0 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Check-3f46cacd.js @@ -0,0 +1 @@ +import{d as h,c as i,e as a,F as r,f as d,p as f,g as p,y as u,Y as _,l as o}from"./index-d271a6a3.js";import{_ as k}from"./_plugin-vue_export-helper-c27b6911.js";const m={class:"field-label"},v={key:0,class:"required"},y={class:"checkbox-container"},g=["id","checked","disabled"],C={class:"checkbox-container"},q=["id","checked","disabled"],B={class:"field-label"},E={key:0,class:"required"},S=h({__name:"Check",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(b){const l=b,n=i(()=>l.df.label_layout||"vertical"),c=i(()=>`checkbox-${l.df.fieldname}-${Math.random().toString(36).substr(2,9)}`);return(e,s)=>(o(),a("div",{class:_(["field-wrapper",`layout-${n.value}`])},[n.value==="vertical"?(o(),a(r,{key:0},[d("div",m,[f(p(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(o(),a("span",v,"*")):u("",!0)]),d("div",y,[d("input",{id:c.value,type:"checkbox",checked:!!e.record[e.df.fieldname],onChange:s[0]||(s[0]=t=>{e.record[e.df.fieldname]=t.target.checked?1:0}),disabled:!e.canEdit,class:"native-checkbox"},null,40,g)])],64)):(o(),a(r,{key:1},[d("div",C,[d("input",{id:c.value,type:"checkbox",checked:!!e.record[e.df.fieldname],onChange:s[1]||(s[1]=t=>{e.record[e.df.fieldname]=t.target.checked?1:0}),disabled:!e.canEdit,class:"native-checkbox"},null,40,q)]),d("div",B,[f(p(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(o(),a("span",E,"*")):u("",!0)])],64))],2))}});const N=k(S,[["__scopeId","data-v-08df56b7"]]),j=Object.freeze(Object.defineProperty({__proto__:null,default:N},Symbol.toStringTag,{value:"Module"}));export{j as _}; diff --git a/apps/jingrow/frontend/dist/assets/Check-fde95c17.css b/apps/jingrow/frontend/dist/assets/Check-fde95c17.css new file mode 100644 index 0000000..049d0a2 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Check-fde95c17.css @@ -0,0 +1 @@ +.checkbox-container[data-v-08df56b7]{display:flex;align-items:center;pointer-events:none}.native-checkbox[data-v-08df56b7]{width:16px;height:16px;cursor:pointer;pointer-events:auto;accent-color:#18a058}.native-checkbox[data-v-08df56b7]:disabled{cursor:not-allowed;opacity:.6} diff --git a/apps/jingrow/frontend/dist/assets/Code-40ef4836.css b/apps/jingrow/frontend/dist/assets/Code-40ef4836.css new file mode 100644 index 0000000..3516a97 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Code-40ef4836.css @@ -0,0 +1 @@ +.field-wrapper[data-v-928e00fb] .code-editor{flex:1}.code-editor[data-v-928e00fb]{width:100%;display:grid;grid-template-rows:1fr auto;gap:6px}.code-editor__footer[data-v-928e00fb]{display:flex;justify-content:flex-start}.code-editor__monaco-wrap[data-v-928e00fb]{position:relative;width:100%;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;background:#ffffff}.code-editor__monaco-wrap.collapsed[data-v-928e00fb]{height:auto}.code-editor__monaco-wrap[data-v-928e00fb]:not(.collapsed){height:auto}.code-editor__monaco-wrap.readonly[data-v-928e00fb]{background:#f8fafc;border-color:#e2e8f0}.code-editor__monaco-host[data-v-928e00fb]{width:100%;height:100%}.code-editor__preview[data-v-928e00fb]{width:100%;height:100%;padding:12px;overflow:auto}.code-editor__preview pre[data-v-928e00fb]{margin:0;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:14px;line-height:1.5;color:#334155;white-space:pre-wrap;word-wrap:break-word}.code-editor__copy-btn[data-v-928e00fb]{position:absolute;top:8px;right:8px;width:24px;height:24px;display:grid;place-items:center;border:none;border-radius:4px;background:rgba(255,255,255,.9);color:#64748b;cursor:pointer;box-shadow:0 1px 3px #0000001a;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:all .15s ease;opacity:.7}.code-editor__copy-btn[data-v-928e00fb]:hover{background:rgba(255,255,255,.95);color:#334155;opacity:1;transform:translateY(-1px);box-shadow:0 2px 6px #00000026}.code-editor__copy-btn[data-v-928e00fb]:active{transform:translateY(0);box-shadow:0 1px 2px #0000001a}[data-v-928e00fb] .monaco-editor .minimap{display:none}[data-v-928e00fb] .monaco-scrollable-element>.scrollbar{background:transparent!important;opacity:.6}[data-v-928e00fb] .monaco-scrollable-element>.scrollbar:hover{opacity:.9}[data-v-928e00fb] .monaco-scrollable-element>.scrollbar.vertical{width:6px!important}[data-v-928e00fb] .monaco-scrollable-element>.scrollbar.vertical .slider{width:6px!important;background:#cbd5e1!important;border-radius:4px!important}[data-v-928e00fb] .monaco-scrollable-element>.scrollbar.horizontal{height:6px!important}[data-v-928e00fb] .monaco-scrollable-element>.scrollbar.horizontal .slider{height:6px!important;background:#cbd5e1!important;border-radius:4px!important}.no-scroll-y[data-v-928e00fb] .monaco-scrollable-element>.scrollbar.vertical{display:none!important}.no-scroll-x[data-v-928e00fb] .monaco-scrollable-element>.scrollbar.horizontal{display:none!important} diff --git a/apps/jingrow/frontend/dist/assets/Code-5f5e5edb.js b/apps/jingrow/frontend/dist/assets/Code-5f5e5edb.js new file mode 100644 index 0000000..54639cf --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Code-5f5e5edb.js @@ -0,0 +1 @@ +import{l as z}from"./index-2d2e8bf3.js";import{d as E,r as m,u as j,c as h,M as T,o as D,J as p,aU as N,e as u,f as n,p as _,g,y as v,Y as C,D as J,w as O,j as P,l as r,n as W}from"./index-d271a6a3.js";import{_ as q}from"./_plugin-vue_export-helper-c27b6911.js";const Z={class:"field-label"},G={key:0,class:"required"},I={class:"code-editor"},U={key:0,class:"code-editor__preview"},A=["aria-label"],R={class:"code-editor__footer"},Y=E({__name:"Code",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(b){const a=b,s=m(null);let f=null,e=null;const i=m(!1),c=j(),w=h(()=>a.df.label_layout||"vertical"),d=h(()=>!a.canEdit),S=()=>({Javascript:"javascript",JS:"javascript",Python:"python",Py:"python",PythonExpression:"python",HTML:"html",CSS:"css",Markdown:"markdown",SCSS:"scss",JSON:"json",Golang:"go",Go:"go",Jinja:"html"})[a.df.options]||"text";async function x(){if(!s.value||d.value||(f||(f=await z.init()),e))return;const o=S(),t=String(a.record[a.df.fieldname]||"");e=f.editor.create(s.value,{value:t,language:o,automaticLayout:!0,folding:!0,minimap:{enabled:!1},readOnly:!1,wordWrap:a.df.wrap?"on":"off",wordWrapColumn:120,wrappingStrategy:"advanced",scrollBeyondLastLine:!1,scrollBeyondLastColumn:0,scrollbar:{horizontal:"auto",vertical:"auto",horizontalScrollbarSize:6,verticalScrollbarSize:6,alwaysConsumeMouseWheel:!1},theme:"vs",showPrintMargin:!1,fontSize:14,lineNumbers:"on",renderWhitespace:"selection",tabSize:2,insertSpaces:!0});const l=()=>{if(!e||!s.value)return;const y=e.getLayoutInfo(),B=e.getScrollHeight()>y.height+1,L=e.getScrollWidth()>y.width+1;s.value.classList.toggle("no-scroll-y",!B),s.value.classList.toggle("no-scroll-x",!L)};l(),e.onDidContentSizeChange(()=>l()),e.onDidScrollChange(()=>l()),e.onDidLayoutChange(()=>l()),e.onDidChangeModelContent(()=>{e&&(a.record[a.df.fieldname]=e.getValue(),l())})}function V(){try{e==null||e.dispose()}catch{}e=null}function k(){i.value=!i.value,p(()=>e==null?void 0:e.layout())}function M(){const o=e?e.getValue():String(a.record[a.df.fieldname]||"");o?navigator.clipboard.writeText(o).then(()=>{c.success("代码已复制到剪贴板")}).catch(t=>{console.error("复制失败:",t),H(o)}):c.warning("没有内容可复制")}function H(o){const t=document.createElement("textarea");t.value=o,t.style.position="fixed",t.style.left="-999999px",t.style.top="-999999px",document.body.appendChild(t),t.focus(),t.select();try{document.execCommand("copy"),c.success("代码已复制到剪贴板")}catch(l){console.error("复制失败:",l),c.error("复制失败,请手动复制")}document.body.removeChild(t)}return T(()=>a.record[a.df.fieldname],o=>{e&&o!==e.getValue()&&e.setValue(String(o||""))}),D(async()=>{await p(),await x(),p(()=>e==null?void 0:e.layout())}),N(V),(o,t)=>(r(),u("div",{class:C(["field-wrapper",`layout-${w.value}`])},[n("label",Z,[_(g(o.ctx.t(o.df.label||o.df.fieldname))+" ",1),o.df.reqd?(r(),u("span",G,"*")):v("",!0)]),n("div",I,[n("div",{class:C(["code-editor__monaco-wrap",{collapsed:!i.value,readonly:d.value}])},[d.value?(r(),u("div",U,[n("pre",null,[n("code",null,g(o.record[o.df.fieldname]||""),1)])])):(r(),u("div",{key:1,ref_key:"editorHost",ref:s,class:"code-editor__monaco-host"},null,512)),n("button",{class:"code-editor__copy-btn",type:"button",onClick:M,"aria-label":o.ctx.t("Copy")},[...t[0]||(t[0]=[n("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},[n("path",{d:"M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z",fill:"currentColor"})],-1)])],8,A)],2),n("div",R,[d.value?v("",!0):(r(),J(P(W),{key:0,size:"tiny",quaternary:"",onClick:k},{default:O(()=>[_(g(i.value?o.ctx.t("Collapse"):o.ctx.t("Expand")),1)]),_:1}))])])],2))}});const $=q(Y,[["__scopeId","data-v-928e00fb"]]),X=Object.freeze(Object.defineProperty({__proto__:null,default:$},Symbol.toStringTag,{value:"Module"}));export{X as _}; diff --git a/apps/jingrow/frontend/dist/assets/Color-04c31e29.js b/apps/jingrow/frontend/dist/assets/Color-04c31e29.js new file mode 100644 index 0000000..0f8ef02 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Color-04c31e29.js @@ -0,0 +1 @@ +import{d as n,c as i,e as o,f as c,p,g as _,y as f,h as u,j as m,Y as b,l,ap as v}from"./index-d271a6a3.js";import{_ as y}from"./_plugin-vue_export-helper-c27b6911.js";const C={class:"field-label"},g={key:0,class:"required"},N=n({__name:"Color",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(s){const t=s,r=i(()=>t.df.label_layout||"vertical");return(e,a)=>(l(),o("div",{class:b(["field-wrapper",`layout-${r.value}`])},[c("label",C,[p(_(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(l(),o("span",g,"*")):f("",!0)]),u(m(v),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=d=>e.record[e.df.fieldname]=d),disabled:!e.canEdit,size:"medium"},null,8,["value","disabled"])],2))}});const k=y(N,[["__scopeId","data-v-896505ba"]]),j=Object.freeze(Object.defineProperty({__proto__:null,default:k},Symbol.toStringTag,{value:"Module"}));export{j as _}; diff --git a/apps/jingrow/frontend/dist/assets/Color-bd04798e.css b/apps/jingrow/frontend/dist/assets/Color-bd04798e.css new file mode 100644 index 0000000..3056d50 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Color-bd04798e.css @@ -0,0 +1 @@ +.field-wrapper[data-v-896505ba] .n-color-picker{flex:1}.field-wrapper[data-v-896505ba] .n-color-picker .n-color-picker-trigger{height:40px;box-sizing:border-box} diff --git a/apps/jingrow/frontend/dist/assets/Comment-0f3aab98.css b/apps/jingrow/frontend/dist/assets/Comment-0f3aab98.css new file mode 100644 index 0000000..59597b8 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Comment-0f3aab98.css @@ -0,0 +1 @@ +.field-wrapper[data-v-e124a6f5] .n-input{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Comment-bdde071c.js b/apps/jingrow/frontend/dist/assets/Comment-bdde071c.js new file mode 100644 index 0000000..98b0304 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Comment-bdde071c.js @@ -0,0 +1 @@ +import{d as n,c as p,e as o,f,p as i,g as c,y as m,h as u,j as _,Y as y,l,m as b}from"./index-d271a6a3.js";import{_ as v}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},C={key:0,class:"required"},N=n({__name:"Comment",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(t){const s=t,d=p(()=>s.df.label_layout||"vertical");return(e,a)=>(l(),o("div",{class:y(["field-wrapper",`layout-${d.value}`])},[f("label",g,[i(c(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(l(),o("span",C,"*")):m("",!0)]),u(_(b),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=r=>e.record[e.df.fieldname]=r),type:"textarea",rows:6,placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const h=v(N,[["__scopeId","data-v-e124a6f5"]]),j=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{j as _}; diff --git a/apps/jingrow/frontend/dist/assets/CreateAppTemplate-8c1f3201.css b/apps/jingrow/frontend/dist/assets/CreateAppTemplate-8c1f3201.css new file mode 100644 index 0000000..390e7a2 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/CreateAppTemplate-8c1f3201.css @@ -0,0 +1 @@ +.create-app-template[data-v-17fe66dc]{padding:16px 24px;width:100%;margin:0;min-height:100vh}.page-header[data-v-17fe66dc]{margin-bottom:24px}.header-content[data-v-17fe66dc]{display:flex;align-items:center;justify-content:space-between}.header-text h1[data-v-17fe66dc]{font-size:24px;font-weight:600;margin:0 0 8px;color:var(--text-color)}.description[data-v-17fe66dc]{color:var(--text-color-2);margin:0}.content[data-v-17fe66dc]{margin-top:24px;width:100%}.form-actions[data-v-17fe66dc]{margin-top:32px;padding-top:24px;border-top:1px solid var(--border-color)}.ml-2[data-v-17fe66dc]{margin-left:8px}.mt-4[data-v-17fe66dc]{margin-top:16px}.mt-6[data-v-17fe66dc]{margin-top:24px}.flex[data-v-17fe66dc]{display:flex}.items-center[data-v-17fe66dc]{align-items:center}.gap-2[data-v-17fe66dc]{gap:8px}.gap-24[data-v-17fe66dc]{gap:24px}.space-y-2[data-v-17fe66dc]>*+*{margin-top:8px}.list-decimal[data-v-17fe66dc]{list-style-type:decimal}.list-inside[data-v-17fe66dc]{list-style-position:inside}@media (max-width: 1200px){.create-app-template[data-v-17fe66dc]{padding:12px 16px}}@media (max-width: 768px){.create-app-template[data-v-17fe66dc]{padding:8px 12px}.page-header[data-v-17fe66dc]{margin-bottom:16px}.content[data-v-17fe66dc]{margin-top:16px}} diff --git a/apps/jingrow/frontend/dist/assets/CreateAppTemplate-d88ac0ad.js b/apps/jingrow/frontend/dist/assets/CreateAppTemplate-d88ac0ad.js new file mode 100644 index 0000000..b10b3ea --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/CreateAppTemplate-d88ac0ad.js @@ -0,0 +1 @@ +import{I as x}from"./iconify-242f8a3c.js";import{d as S,u as M,r as b,t as a,e as F,f as u,g as i,j as t,h as e,w as l,D as G,y as V,x as o,l as P,p as v,a0 as j}from"./index-d271a6a3.js";import{_ as R}from"./_plugin-vue_export-helper-c27b6911.js";const Y={class:"create-app-template"},O={class:"page-header"},$={class:"header-content"},H={class:"header-text"},J={class:"description"},K={class:"content"},Q={class:"form-actions"},W={class:"flex items-center gap-2"},X=S({__name:"CreateAppTemplate",setup(Z){const h=M(),A=b(),g=b(!1),d=b(null),p=b({appName:"",appTitle:"",publisher:"Your Company",description:"",email:"support@yourcompany.com",license:"MIT"}),w=[{label:"MIT",value:"MIT"},{label:"Apache 2.0",value:"Apache 2.0"},{label:"GPL v3",value:"GPL v3"},{label:"AGPL v3",value:"AGPL v3"},{label:"BSD 3-Clause",value:"BSD 3-Clause"}],k={appName:[{required:!0,message:a("App name is required")},{pattern:/^[a-z][a-z0-9_]*$/,message:a("App name must start with lowercase letter and contain only lowercase letters, numbers, and underscores")}],appTitle:[{required:!0,message:a("App title is required")}],publisher:[{required:!0,message:a("Publisher is required")}],description:[{required:!0,message:a("Description is required")}],email:[{required:!0,message:a("Email is required")},{type:"email",message:a("Please enter a valid email")}]},q=()=>{p.value.appName?(p.value.appName=p.value.appName.toLowerCase().replace(/\s+/g,"_").replace(/[^a-z0-9_]/g,""),p.value.appTitle=p.value.appName.split("_").map(m=>m.charAt(0).toUpperCase()+m.slice(1)).join(" ")):p.value.appTitle=""},I=()=>{p.value={appName:"",appTitle:"",publisher:"Your Company",description:"",email:"support@yourcompany.com",license:"MIT"},d.value=null},B=async()=>{var m,n,c;try{await((m=A.value)==null?void 0:m.validate()),g.value=!0;const s=await j.post("/jingrow/dev/create-app-template",p.value);s.data.success?(d.value=s.data,h.success(a("App template created successfully"))):h.error(s.data.error||a("Failed to create app template"))}catch(s){console.error("Create app template error:",s),h.error(((c=(n=s.response)==null?void 0:n.data)==null?void 0:c.detail)||s.message||a("Failed to create app template"))}finally{g.value=!1}};return(m,n)=>{const c=o("n-input"),s=o("n-form-item"),_=o("n-form-item-grid-item"),E=o("n-select"),U=o("n-grid"),T=o("n-button"),C=o("n-icon"),z=o("n-space"),D=o("n-form"),N=o("n-card"),f=o("n-descriptions-item"),y=o("n-text"),L=o("n-descriptions");return P(),F("div",Y,[u("div",O,[u("div",$,[u("div",H,[u("h1",null,i(t(a)("Create App Template")),1),u("p",J,i(t(a)("Create a modern, efficient template app")),1)])])]),u("div",K,[e(N,null,{default:l(()=>[e(D,{ref_key:"formRef",ref:A,model:p.value,rules:k,"label-placement":"left","label-width":"140px",size:"large"},{default:l(()=>[e(U,{cols:3,"x-gap":24,responsive:"screen"},{default:l(()=>[e(_,null,{default:l(()=>[e(s,{label:t(a)("App Name"),path:"appName"},{default:l(()=>[e(c,{value:p.value.appName,"onUpdate:value":n[0]||(n[0]=r=>p.value.appName=r),placeholder:t(a)("Enter app name (spaces auto-converted to underscores)"),onInput:q},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),e(_,null,{default:l(()=>[e(s,{label:t(a)("App Title"),path:"appTitle"},{default:l(()=>[e(c,{value:p.value.appTitle,"onUpdate:value":n[1]||(n[1]=r=>p.value.appTitle=r),placeholder:t(a)("App title (auto-generated from app name)")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),e(_,null,{default:l(()=>[e(s,{label:t(a)("Publisher"),path:"publisher"},{default:l(()=>[e(c,{value:p.value.publisher,"onUpdate:value":n[2]||(n[2]=r=>p.value.publisher=r),placeholder:t(a)("Enter publisher name")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),e(_,null,{default:l(()=>[e(s,{label:t(a)("Description"),path:"description"},{default:l(()=>[e(c,{value:p.value.description,"onUpdate:value":n[3]||(n[3]=r=>p.value.description=r),placeholder:t(a)("Enter app description")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),e(_,null,{default:l(()=>[e(s,{label:t(a)("Email"),path:"email"},{default:l(()=>[e(c,{value:p.value.email,"onUpdate:value":n[4]||(n[4]=r=>p.value.email=r),placeholder:t(a)("Enter support email")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1}),e(_,null,{default:l(()=>[e(s,{label:t(a)("License"),path:"license"},{default:l(()=>[e(E,{value:p.value.license,"onUpdate:value":n[5]||(n[5]=r=>p.value.license=r),options:w,placeholder:t(a)("Select license")},null,8,["value","placeholder"])]),_:1},8,["label"])]),_:1})]),_:1}),u("div",Q,[e(z,null,{default:l(()=>[e(T,{onClick:I,size:"large"},{default:l(()=>[v(i(t(a)("Reset")),1)]),_:1}),e(T,{type:"primary",size:"large",loading:g.value,onClick:B},{icon:l(()=>[e(C,null,{default:l(()=>[e(t(x),{icon:"tabler:app-window"})]),_:1})]),default:l(()=>[v(" "+i(t(a)("Create App Template")),1)]),_:1},8,["loading"])]),_:1})])]),_:1},8,["model"])]),_:1}),d.value?(P(),G(N,{key:0,class:"mt-6"},{header:l(()=>[u("div",W,[e(C,{color:"#18a058"},{default:l(()=>[e(t(x),{icon:"tabler:check"})]),_:1}),u("span",null,i(t(a)("App Template Created Successfully")),1)])]),default:l(()=>[e(L,{column:2,bordered:""},{default:l(()=>[e(f,{label:t(a)("App Name")},{default:l(()=>[v(i(d.value.appName),1)]),_:1},8,["label"]),e(f,{label:t(a)("App Path")},{default:l(()=>[e(y,{code:""},{default:l(()=>[v(i(d.value.appPath),1)]),_:1})]),_:1},8,["label"]),e(f,{label:t(a)("Backend Path")},{default:l(()=>[e(y,{code:""},{default:l(()=>[v(i(d.value.backendPath),1)]),_:1})]),_:1},8,["label"]),e(f,{label:t(a)("Frontend Path")},{default:l(()=>[e(y,{code:""},{default:l(()=>[v(i(d.value.frontendPath),1)]),_:1})]),_:1},8,["label"])]),_:1})]),_:1})):V("",!0)])])}}});const te=R(X,[["__scopeId","data-v-17fe66dc"]]);export{te as default}; diff --git a/apps/jingrow/frontend/dist/assets/CreatePagetypeTemplate-a3b3fcba.css b/apps/jingrow/frontend/dist/assets/CreatePagetypeTemplate-a3b3fcba.css new file mode 100644 index 0000000..102b36e --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/CreatePagetypeTemplate-a3b3fcba.css @@ -0,0 +1 @@ +.page-dev-create-template[data-v-28bb922d]{padding:16px}.result[data-v-28bb922d]{margin-top:16px;font-size:13px;color:#374151}.path-preview[data-v-28bb922d]{margin:4px 0 0;padding:8px;background:#f5f5f5;border-radius:4px;font-family:monospace;font-size:12px;white-space:pre-wrap;word-break:break-all}.field-types-row[data-v-28bb922d]{display:flex;align-items:center;gap:8px} diff --git a/apps/jingrow/frontend/dist/assets/CreatePagetypeTemplate-c14c817c.js b/apps/jingrow/frontend/dist/assets/CreatePagetypeTemplate-c14c817c.js new file mode 100644 index 0000000..1a4d51b --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/CreatePagetypeTemplate-c14c817c.js @@ -0,0 +1,2 @@ +import{_ as z}from"./Attach-d60cbf5b.js";import{_ as K}from"./AttachImage-2dbfd5c7.js";import{_ as Q}from"./Autocomplete-eef51ef0.js";import{_ as X}from"./Barcode-81215231.js";import{_ as Y}from"./Button-32075d9a.js";import{_ as ee}from"./Check-3f46cacd.js";import{_ as te}from"./Code-5f5e5edb.js";import{_ as oe}from"./Color-04c31e29.js";import{_ as ae}from"./Comment-bdde071c.js";import{_ as re}from"./CronEditor-e085d892.js";import{_ as le}from"./Currency-99139623.js";import{_ as se}from"./Data-9959cbbc.js";import{_ as _e}from"./Date-bd4fc77b.js";import{_ as pe}from"./DateRange-a73dfd43.js";import{_ as ne}from"./Datetime-5dba39f3.js";import{_ as ie}from"./Duration-885d187a.js";import{_ as ce}from"./DynamicLink-289bb599.js";import{_ as ue}from"./Float-e9152ed7.js";import{_ as ve}from"./Geolocation-a5601209.js";import{_ as me}from"./HTML-11e652e4.js";import{_ as de}from"./HTMLEditor-30b7305c.js";import{_ as fe}from"./Heading-386158fe.js";import{_ as ge}from"./Icon-920b687f.js";import{_ as ye}from"./Image-ce5f4a8b.js";import{_ as be}from"./Int-0b4607af.js";import{_ as he}from"./JSON-31a4c94d.js";import{_ as Te}from"./Jeditor-03001e44.js";import{_ as ke}from"./Link-d4fb39b6.js";import{_ as Ce}from"./LongText-dd777872.js";import{_ as we}from"./MarkdownEditor-ff757a25.js";import{_ as Ne}from"./MultiCheck-73d11ae9.js";import{_ as Se}from"./MultiSelect-cae41242.js";import{_ as Fe}from"./MultiSelectList-32f65cef.js";import{_ as Pe}from"./MultiSelectPills-109d7a64.js";import{_ as Oe}from"./Password-e94e21d3.js";import{_ as xe}from"./Percent-1a180e8c.js";import{_ as $e}from"./Phone-533abb29.js";import{_ as Be}from"./Rating-d1ae3ba1.js";import{_ as Me}from"./Select-baf6cac3.js";import{_ as De}from"./Signature-8297d6b5.js";import{_ as Le}from"./SmallText-fe49861b.js";import{_ as Ie}from"./Table-308bc8b7.js";import{_ as Ee}from"./TableMultiSelect-36ba6426.js";import{_ as je}from"./Text-5be01379.js";import{_ as Ue}from"./TextEditor-3ec2aa60.js";import{_ as Ae}from"./Time-b3fd5cde.js";import{d as He,u as Re,r as m,c as x,t as l,e as g,h as s,w as u,j as o,l as v,q as Je,N as h,Z as j,ae as U,D as $,av as Ve,I as Ge,a3 as w,f as b,y,n as qe,p as We,g as d,U as Ze,a0 as B,a2 as M}from"./index-d271a6a3.js";import{_ as ze}from"./_plugin-vue_export-helper-c27b6911.js";import"./common-c89c6552.js";import"./index-2d2e8bf3.js";import"./iconify-242f8a3c.js";import"./IconPicker-661ac603.js";import"./index-362e01cb.js";import"./Jeditor.vue_vue_type_style_index_0_lang-fa0f1963.js";import"./slug-9937a98a.js";import"./FieldRenderer.vue_vue_type_script_setup_true_lang-88778177.js";import"./_commonjsHelpers-de833af9.js";const Ke={class:"page-dev-create-template"},Qe={class:"field-types-row"},Xe={class:"preview"},Ye={key:0},et={class:"path-preview"},tt={key:1},ot={key:0,class:"result"},at={key:0},rt={key:0},lt={key:1},st={key:1},_t={style:{color:"#ef4444"}},pt=He({__name:"CreatePagetypeTemplate",setup(nt){const C=Re(),N=m(!1),S=m(!1),f=m(null),D=m(null),e=m({pagetype:"",createFrontend:!1,createBackend:!0,frontendOptions:["toolbar"],fieldTypeNames:[]}),F=m([]),P=m([]),p=m(""),T=m("");(()=>{try{const r=Object.keys(Object.assign({"/src/core/pagetype/form/controls/Attach.vue":z,"/src/core/pagetype/form/controls/AttachImage.vue":K,"/src/core/pagetype/form/controls/Autocomplete.vue":Q,"/src/core/pagetype/form/controls/Barcode.vue":X,"/src/core/pagetype/form/controls/Button.vue":Y,"/src/core/pagetype/form/controls/Check.vue":ee,"/src/core/pagetype/form/controls/Code.vue":te,"/src/core/pagetype/form/controls/Color.vue":oe,"/src/core/pagetype/form/controls/Comment.vue":ae,"/src/core/pagetype/form/controls/CronEditor.vue":re,"/src/core/pagetype/form/controls/Currency.vue":le,"/src/core/pagetype/form/controls/Data.vue":se,"/src/core/pagetype/form/controls/Date.vue":_e,"/src/core/pagetype/form/controls/DateRange.vue":pe,"/src/core/pagetype/form/controls/Datetime.vue":ne,"/src/core/pagetype/form/controls/Duration.vue":ie,"/src/core/pagetype/form/controls/DynamicLink.vue":ce,"/src/core/pagetype/form/controls/Float.vue":ue,"/src/core/pagetype/form/controls/Geolocation.vue":ve,"/src/core/pagetype/form/controls/HTML.vue":me,"/src/core/pagetype/form/controls/HTMLEditor.vue":de,"/src/core/pagetype/form/controls/Heading.vue":fe,"/src/core/pagetype/form/controls/Icon.vue":ge,"/src/core/pagetype/form/controls/Image.vue":ye,"/src/core/pagetype/form/controls/Int.vue":be,"/src/core/pagetype/form/controls/JSON.vue":he,"/src/core/pagetype/form/controls/Jeditor.vue":Te,"/src/core/pagetype/form/controls/Link.vue":ke,"/src/core/pagetype/form/controls/LongText.vue":Ce,"/src/core/pagetype/form/controls/MarkdownEditor.vue":we,"/src/core/pagetype/form/controls/MultiCheck.vue":Ne,"/src/core/pagetype/form/controls/MultiSelect.vue":Se,"/src/core/pagetype/form/controls/MultiSelectList.vue":Fe,"/src/core/pagetype/form/controls/MultiSelectPills.vue":Pe,"/src/core/pagetype/form/controls/Password.vue":Oe,"/src/core/pagetype/form/controls/Percent.vue":xe,"/src/core/pagetype/form/controls/Phone.vue":$e,"/src/core/pagetype/form/controls/Rating.vue":Be,"/src/core/pagetype/form/controls/Select.vue":Me,"/src/core/pagetype/form/controls/Signature.vue":De,"/src/core/pagetype/form/controls/SmallText.vue":Le,"/src/core/pagetype/form/controls/Table.vue":Ie,"/src/core/pagetype/form/controls/TableMultiSelect.vue":Ee,"/src/core/pagetype/form/controls/Text.vue":je,"/src/core/pagetype/form/controls/TextEditor.vue":Ue,"/src/core/pagetype/form/controls/Time.vue":Ae})).map(t=>{var n;return((n=t.split("/").pop())==null?void 0:n.replace(".vue",""))||""}).filter(t=>t&&!t.startsWith("_"));P.value=r.map(t=>({label:t,value:t})).sort((t,n)=>t.label.localeCompare(n.label))}catch(a){console.warn("Failed to load field type options from filesystem:",a),P.value=["Attach","AttachImage","Autocomplete","Barcode","Button","Check","Code","Color","Comment","CronEditor","Currency","Data","Date","DateRange","Datetime","Duration","DynamicLink","Float","Geolocation","Heading","HTML","HTMLEditor","Icon","Image","Int","Jeditor","JSON","Link","LongText","MarkdownEditor","MultiCheck","MultiSelect","MultiSelectList","MultiSelectPills","Password","Percent","Phone","Rating","Select","Signature","SmallText","Table","TableMultiSelect","Text","TextEditor","Time"].map(r=>({label:r,value:r}))}})();const c=x(()=>J(e.value.pagetype||""));function A(a){return a?a.split(".").join("/").toLowerCase():""}const L=x(()=>{var r,t,n,i;if(!p.value||c.value==="")return"";const a=[];return(r=e.value.frontendOptions)!=null&&r.includes("toolbar")&&a.push(`apps/${p.value}/frontend/src/views/pagetype/${c.value}/${c.value}_toolbar.vue`),(t=e.value.frontendOptions)!=null&&t.includes("sidebar")&&a.push(`apps/${p.value}/frontend/src/views/pagetype/${c.value}/${c.value}_sidebar.vue`),(n=e.value.frontendOptions)!=null&&n.includes("page")&&a.push(`apps/${p.value}/frontend/src/views/pagetype/${c.value}/${c.value}.vue`),(i=e.value.frontendOptions)!=null&&i.includes("field_types")&&(e.value.fieldTypeNames&&e.value.fieldTypeNames.length>0?e.value.fieldTypeNames.forEach(_=>{a.push(`apps/${p.value}/frontend/src/views/pagetype/${c.value}/form/controls/${_}.vue`)}):a.push(`apps/${p.value}/frontend/src/views/pagetype/${c.value}/form/controls/`)),a.join(` +`)}),I=x(()=>p.value&&c.value!==""?`apps/${p.value}/${p.value}/${A(T.value)}/pagetype/${c.value}/${c.value}.py`:""),H={pagetype:[{required:!0,message:l("Please select PageType")}]};async function R(a){var r,t,n;if(!(!a||F.value.length)){N.value=!0;try{const _=((r=(await B.get("/api/data/PageType",{params:{order_by:"modified desc",limit_page_length:1e3},headers:M(),withCredentials:!0})).data)==null?void 0:r.data)||[];F.value=_.map(k=>({label:k.name,value:k.name}))}catch(i){C.error(((n=(t=i==null?void 0:i.response)==null?void 0:t.data)==null?void 0:n.message)||(i==null?void 0:i.message)||"Failed to load")}finally{N.value=!1}}}function J(a){return a.replace(/\s+/g,"_").replace(/-+/g,"_").toLowerCase()}function V(a){var r;a&&!((r=e.value.frontendOptions)!=null&&r.length)?e.value.frontendOptions=["toolbar"]:a||(e.value.frontendOptions=[],e.value.fieldTypeNames=[])}function G(){}function q(a){a.includes("field_types")||(e.value.fieldTypeNames=[])}async function W(){var a;if(p.value="",T.value="",!!e.value.pagetype)try{const t=((a=(await B.get("/jingrow/get-module-app",{params:{pagetype:e.value.pagetype},headers:M(),withCredentials:!0})).data)==null?void 0:a.message)||{};t!=null&&t.success&&(p.value=t.app||"",T.value=t.module||"")}catch{}}async function Z(){var a;(a=D.value)==null||a.validate(async r=>{var t,n,i;if(!r){S.value=!0;try{const _=await B.post("/jingrow/dev/create-pagetype-template",{pagetype:e.value.pagetype,app:p.value,module:T.value,create_frontend:e.value.createFrontend,create_backend:e.value.createBackend,frontend_options:e.value.frontendOptions||[],field_type_names:e.value.fieldTypeNames||[]},{headers:M(),withCredentials:!0});if(f.value=_.data,(t=_.data)!=null&&t.success){const{frontend_exists:k,backend_exists:E}=_.data;if(k||E){const O=[];k&&O.push("前端文件"),E&&O.push("后端文件"),C.warning(`${O.join("、")}已存在`)}else C.success(l("Created successfully"))}}catch(_){C.error(((i=(n=_==null?void 0:_.response)==null?void 0:n.data)==null?void 0:i.detail)||(_==null?void 0:_.message)||"Failed")}finally{S.value=!1}}})}return(a,r)=>(v(),g("div",Ke,[s(o(Ze),{title:o(l)("Create PageType Template Files")},{default:u(()=>[s(o(Je),{model:e.value,rules:H,ref_key:"formRef",ref:D,"label-width":"120"},{default:u(()=>[s(o(h),{label:o(l)("PageType"),path:"pagetype"},{default:u(()=>[s(o(j),{value:e.value.pagetype,"onUpdate:value":[r[0]||(r[0]=t=>e.value.pagetype=t),W],options:F.value,filterable:"",clearable:"",loading:N.value,placeholder:o(l)("Select PageType"),"onUpdate:show":R},null,8,["value","options","loading","placeholder"])]),_:1},8,["label"]),s(o(h),{label:o(l)("Create Frontend")},{default:u(()=>[s(o(U),{value:e.value.createFrontend,"onUpdate:value":[r[1]||(r[1]=t=>e.value.createFrontend=t),V]},null,8,["value"])]),_:1},8,["label"]),e.value.createFrontend?(v(),$(o(h),{key:0,label:"",style:{"margin-top":"0"}},{default:u(()=>[s(o(Ve),{value:e.value.frontendOptions,"onUpdate:value":[r[3]||(r[3]=t=>e.value.frontendOptions=t),q]},{default:u(()=>[s(o(Ge),{vertical:""},{default:u(()=>[s(o(w),{value:"toolbar",label:o(l)("Toolbar")},null,8,["label"]),s(o(w),{value:"sidebar",label:o(l)("Sidebar")},null,8,["label"]),b("div",Qe,[s(o(w),{value:"field_types",label:o(l)("Field Types")},null,8,["label"]),e.value.frontendOptions.includes("field_types")?(v(),$(o(j),{key:0,value:e.value.fieldTypeNames,"onUpdate:value":[r[2]||(r[2]=t=>e.value.fieldTypeNames=t),G],options:P.value,multiple:"",filterable:"",placeholder:o(l)("Select Field Types"),style:{width:"200px","margin-left":"16px"}},null,8,["value","options","placeholder"])):y("",!0)]),s(o(w),{value:"page",label:o(l)("Page")},null,8,["label"])]),_:1})]),_:1},8,["value"])]),_:1})):y("",!0),s(o(h),{label:o(l)("Create Backend")},{default:u(()=>[s(o(U),{value:e.value.createBackend,"onUpdate:value":r[4]||(r[4]=t=>e.value.createBackend=t)},null,8,["value"])]),_:1},8,["label"]),s(o(h),null,{default:u(()=>[s(o(qe),{type:"primary",loading:S.value,onClick:Z},{default:u(()=>[We(d(o(l)("Create")),1)]),_:1},8,["loading"])]),_:1}),p.value||T.value?(v(),$(o(h),{key:1,label:o(l)("Preview")},{default:u(()=>[b("div",Xe,[e.value.createFrontend&&L.value?(v(),g("div",Ye,[b("div",null,[b("strong",null,d(o(l)("Frontend"))+":",1)]),b("pre",et,d(L.value),1)])):y("",!0),e.value.createBackend&&I.value?(v(),g("div",tt,d(o(l)("Backend"))+": "+d(I.value),1)):y("",!0)])]),_:1},8,["label"])):y("",!0)]),_:1},8,["model"]),f.value?(v(),g("div",ot,[f.value.success?(v(),g("div",at,[b("p",null,d(o(l)("Created successfully")),1),f.value.frontend_path?(v(),g("p",rt,"Frontend: "+d(f.value.frontend_path),1)):y("",!0),f.value.backend_path?(v(),g("p",lt,"Backend: "+d(f.value.backend_path),1)):y("",!0)])):(v(),g("div",st,[b("p",_t,d(f.value.message),1)]))])):y("",!0)]),_:1},8,["title"])]))}});const mo=ze(pt,[["__scopeId","data-v-28bb922d"]]);export{mo as default}; diff --git a/apps/jingrow/frontend/dist/assets/CronEditor-3a75aedb.css b/apps/jingrow/frontend/dist/assets/CronEditor-3a75aedb.css new file mode 100644 index 0000000..38e4ddf --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/CronEditor-3a75aedb.css @@ -0,0 +1 @@ +.field-wrapper[data-v-ae94164e] .cron-editor-modern{flex:1}.cron-editor-modern[data-v-ae94164e]{border:1px solid #e1e5e9;border-radius:12px;padding:20px;background:#fff;box-shadow:0 2px 8px #00000014;max-width:480px;margin:0 auto}.cron-type-container[data-v-ae94164e]{margin-bottom:16px}.cron-type[data-v-ae94164e]{width:100%;padding:10px 40px 10px 14px;border:1.5px solid #1fc76f;border-radius:8px;font-size:15px;background:#f3f3f3 url('data:image/svg+xml;utf8,') no-repeat right 16px center/18px 18px;outline:none;transition:border-color .2s;appearance:none;-webkit-appearance:none;-moz-appearance:none}.cron-type[data-v-ae94164e]:focus{border-color:#1fc76f}.cron-params[data-v-ae94164e]{margin-bottom:16px;padding:14px;background:#f3f3f3;border-radius:8px;border:1.5px solid #e3e7ed}.param-group[data-v-ae94164e]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.param-input[data-v-ae94164e]{width:60px;padding:6px 8px;border:1.5px solid #bfc8d6;border-radius:4px;font-size:14px;text-align:center;outline:none;transition:border-color .2s;background:#fff}.param-input[data-v-ae94164e]:focus{border-color:#1fc76f}.param-select[data-v-ae94164e]{padding:6px 8px;border:1px solid #d1d5db;border-radius:4px;font-size:14px;outline:none;transition:border-color .2s}.param-select[data-v-ae94164e]:focus{border-color:#1fc76f}.cron-preview[data-v-ae94164e]{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#f3f3f3;border-radius:6px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:14px;color:#333;margin-bottom:16px;border-left:4px solid #1fc76f;flex-wrap:wrap}.cron-text[data-v-ae94164e]{color:#888;margin-left:10px}.copy-btn[data-v-ae94164e]{background:#e3e7ed;color:#1fc76f;border:none;padding:4px 10px;border-radius:4px;font-size:13px;cursor:pointer;margin-left:8px;transition:background .2s}.copy-btn[data-v-ae94164e]:hover{background:#d1d5db}.copy-btn[data-v-ae94164e]:disabled{background:#1fc76f;color:#fff}.cron-toggle-container[data-v-ae94164e]{margin-bottom:16px}.cron-toggle-mode[data-v-ae94164e]{background:#1fc76f;color:#fff;border:none;padding:10px 20px;border-radius:8px;font-size:15px;cursor:pointer;transition:background-color .2s;outline:none}.cron-toggle-mode[data-v-ae94164e]:hover{background:#1ab85a}.cron-advanced[data-v-ae94164e]{margin-bottom:16px}.cron-input[data-v-ae94164e]{width:100%;padding:10px 14px;border:1.5px solid #bfc8d6;border-radius:8px;font-size:15px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;outline:none;transition:border-color .2s;background:#f3f3f3}.cron-input[data-v-ae94164e]:focus{border-color:#1fc76f}.cron-input.error[data-v-ae94164e]{border-color:#e74c3c;background:#fff6f6} diff --git a/apps/jingrow/frontend/dist/assets/CronEditor-e085d892.js b/apps/jingrow/frontend/dist/assets/CronEditor-e085d892.js new file mode 100644 index 0000000..3560f2c --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/CronEditor-e085d892.js @@ -0,0 +1 @@ +import{d as D,c as M,r as g,M as O,o as L,e as v,p as u,g as V,y as c,f as o,a4 as p,b1 as T,b2 as x,a5 as _,Y as E,l as m}from"./index-d271a6a3.js";import{_ as Y}from"./_plugin-vue_export-helper-c27b6911.js";const F={key:0,class:"field-label"},G={key:0,class:"required"},J={class:"cron-editor-modern"},K={class:"cron-type-container"},Q={key:0,class:"cron-params"},R={key:0,class:"param-group"},W={key:1,class:"param-group"},X={key:2,class:"param-group"},Z={key:3,class:"param-group"},ee={key:4,class:"param-group"},te={key:1,class:"cron-preview"},ae={key:0,class:"cron-text"},ne=["disabled"],oe={class:"cron-toggle-container"},ue={key:2,class:"cron-advanced"},le=["name","value"],se=D({__name:"CronEditor",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{},modelValue:{default:"* * * * *"},name:{default:"trigger_time"}},emits:["update:modelValue"],setup(H,{emit:N}){const r=H,S=M(()=>{var t;return((t=r.df)==null?void 0:t.label_layout)||"vertical"}),C=N,l=g(""),I=g(!1),k=g(!1),$=g(!1),w=g(!1),a=g({nMinute:5,nHour:1,hour:0,minute:0,weekday:0,day:1}),s=g(r.modelValue||"* * * * *"),U=M(()=>A(s.value)),B=M(()=>/^\s*([0-9\*\/\-,]+\s+){4,6}[0-9\*\/\-,]+\s*$/.test(s.value)),A=t=>{var e,b;if(t==="* * * * *")return"每分钟";if(/^\*\/(\d+) \* \* \* \*$/.test(t))return`每${(e=t.match(/^\*\/(\d+)/))==null?void 0:e[1]}分钟`;if(t==="0 * * * *")return"每小时";if(/^0 \*\/(\d+) \* \* \*$/.test(t))return`每${(b=t.match(/^0 \*\/(\d+)/))==null?void 0:b[1]}小时`;if(/^\d+ \d+ \* \* \*$/.test(t)){const[d,i]=t.split(" ");return`每天 ${i}时${d}分`}if(/^\d+ \d+ \* \* \d+$/.test(t)){const[d,i,,,f]=t.split(" ");return`每${["周日","周一","周二","周三","周四","周五","周六"][parseInt(f)||0]} ${i}时${d}分`}if(/^\d+ \d+ \d+ \* \*$/.test(t)){const[d,i,f]=t.split(" ");return`每月${f}日 ${i}时${d}分`}return""},y=()=>{let t="";switch(l.value){case"every_minute":t="* * * * *";break;case"every_n_minute":t=`*/${a.value.nMinute} * * * *`;break;case"every_hour":t="0 * * * *";break;case"every_n_hour":t=`0 */${a.value.nHour} * * *`;break;case"every_day":t=`${a.value.minute} ${a.value.hour} * * *`;break;case"every_week":t=`${a.value.minute} ${a.value.hour} * * ${a.value.weekday}`;break;case"every_month":t=`${a.value.minute} ${a.value.hour} ${a.value.day} * *`;break;default:t="* * * * *"}s.value=t,C("update:modelValue",t)},P=()=>{l.value?(I.value=!0,k.value=!0,$.value=!1,y()):(I.value=!1,s.value&&s.value,k.value=!0)},j=()=>{$.value=!$.value,$.value?I.value=!1:I.value=!0},q=()=>{C("update:modelValue",s.value)},z=async()=>{try{await navigator.clipboard.writeText(s.value),w.value=!0,setTimeout(()=>{w.value=!1},1200)}catch(t){console.error("复制失败:",t)}},h=t=>{if(!t||t==="* * * * *")return;const e=t.match(/^\*\/(\d+) \* \* \* \*$/);if(e){l.value="every_n_minute",a.value.nMinute=parseInt(e[1]);return}const b=t.match(/^0 \*\/(\d+) \* \* \*$/);if(b){l.value="every_n_hour",a.value.nHour=parseInt(b[1]);return}const d=t.match(/^(\d+) (\d+) \* \* \*$/);if(d){l.value="every_day",a.value.minute=parseInt(d[1]),a.value.hour=parseInt(d[2]);return}const i=t.match(/^(\d+) (\d+) \* \* (\d+)$/);if(i){l.value="every_week",a.value.minute=parseInt(i[1]),a.value.hour=parseInt(i[2]),a.value.weekday=parseInt(i[3]);return}const f=t.match(/^(\d+) (\d+) (\d+) \* \*$/);if(f){l.value="every_month",a.value.minute=parseInt(f[1]),a.value.hour=parseInt(f[2]),a.value.day=parseInt(f[3]);return}$.value=!0};return O(()=>r.modelValue,t=>{t&&t!==s.value&&(s.value=t,h(t),t&&t!=="* * * * *"&&(k.value=!0))}),L(()=>{s.value=r.modelValue||"* * * * *",r.modelValue&&r.modelValue!=="* * * * *"&&h(r.modelValue),k.value=!0}),(t,e)=>{var b,d,i,f;return m(),v("div",{class:E(["field-wrapper",`layout-${S.value}`])},[r.df?(m(),v("label",F,[u(V((i=r.ctx)==null?void 0:i.t(((b=r.df)==null?void 0:b.label)||((d=r.df)==null?void 0:d.fieldname)))+" ",1),(f=r.df)!=null&&f.reqd?(m(),v("span",G,"*")):c("",!0)])):c("",!0),o("div",J,[o("div",K,[p(o("select",{"onUpdate:modelValue":e[0]||(e[0]=n=>l.value=n),class:"cron-type",onChange:P},[...e[12]||(e[12]=[x('',8)])],544),[[T,l.value]])]),I.value?(m(),v("div",Q,[l.value==="every_n_minute"?(m(),v("div",R,[e[13]||(e[13]=u(" 每 ",-1)),p(o("input",{type:"number","onUpdate:modelValue":e[1]||(e[1]=n=>a.value.nMinute=n),min:"1",max:"59",class:"param-input",onInput:y},null,544),[[_,a.value.nMinute]]),e[14]||(e[14]=u(" 分钟 ",-1))])):c("",!0),l.value==="every_n_hour"?(m(),v("div",W,[e[15]||(e[15]=u(" 每 ",-1)),p(o("input",{type:"number","onUpdate:modelValue":e[2]||(e[2]=n=>a.value.nHour=n),min:"1",max:"23",class:"param-input",onInput:y},null,544),[[_,a.value.nHour]]),e[16]||(e[16]=u(" 小时 ",-1))])):c("",!0),l.value==="every_day"?(m(),v("div",X,[e[17]||(e[17]=u(" 每天 ",-1)),p(o("input",{type:"number","onUpdate:modelValue":e[3]||(e[3]=n=>a.value.hour=n),min:"0",max:"23",class:"param-input",onInput:y},null,544),[[_,a.value.hour]]),e[18]||(e[18]=u(" 时 ",-1)),p(o("input",{type:"number","onUpdate:modelValue":e[4]||(e[4]=n=>a.value.minute=n),min:"0",max:"59",class:"param-input",onInput:y},null,544),[[_,a.value.minute]]),e[19]||(e[19]=u(" 分 ",-1))])):c("",!0),l.value==="every_week"?(m(),v("div",Z,[e[21]||(e[21]=u(" 每周 ",-1)),p(o("select",{"onUpdate:modelValue":e[5]||(e[5]=n=>a.value.weekday=n),class:"param-select",onChange:y},[...e[20]||(e[20]=[x('',7)])],544),[[T,a.value.weekday]]),p(o("input",{type:"number","onUpdate:modelValue":e[6]||(e[6]=n=>a.value.hour=n),min:"0",max:"23",class:"param-input",onInput:y},null,544),[[_,a.value.hour]]),e[22]||(e[22]=u(" 时 ",-1)),p(o("input",{type:"number","onUpdate:modelValue":e[7]||(e[7]=n=>a.value.minute=n),min:"0",max:"59",class:"param-input",onInput:y},null,544),[[_,a.value.minute]]),e[23]||(e[23]=u(" 分 ",-1))])):c("",!0),l.value==="every_month"?(m(),v("div",ee,[e[24]||(e[24]=u(" 每月 ",-1)),p(o("input",{type:"number","onUpdate:modelValue":e[8]||(e[8]=n=>a.value.day=n),min:"1",max:"31",class:"param-input",onInput:y},null,544),[[_,a.value.day]]),e[25]||(e[25]=u(" 日 ",-1)),p(o("input",{type:"number","onUpdate:modelValue":e[9]||(e[9]=n=>a.value.hour=n),min:"0",max:"23",class:"param-input",onInput:y},null,544),[[_,a.value.hour]]),e[26]||(e[26]=u(" 时 ",-1)),p(o("input",{type:"number","onUpdate:modelValue":e[10]||(e[10]=n=>a.value.minute=n),min:"0",max:"59",class:"param-input",onInput:y},null,544),[[_,a.value.minute]]),e[27]||(e[27]=u(" 分 ",-1))])):c("",!0)])):c("",!0),k.value?(m(),v("div",te,[e[28]||(e[28]=o("strong",null,"Cron 表达式:",-1)),o("code",null,V(s.value),1),U.value?(m(),v("span",ae,"("+V(U.value)+")",1)):c("",!0),o("button",{type:"button",class:"copy-btn",onClick:z,disabled:w.value},V(w.value?"已复制!":"复制"),9,ne)])):c("",!0),o("div",oe,[o("button",{type:"button",class:"cron-toggle-mode",onClick:j},V($.value?"可视化设置":"Cron表达式"),1)]),$.value?(m(),v("div",ue,[p(o("input",{type:"text","onUpdate:modelValue":e[11]||(e[11]=n=>s.value=n),class:E(["cron-input",{error:!B.value}]),placeholder:"如:*/5 * * * *",onInput:q},null,34),[[_,s.value]])])):c("",!0),o("input",{type:"hidden",name:r.name,value:s.value},null,8,le)])],2)}}});const re=Y(se,[["__scopeId","data-v-ae94164e"]]),ve=Object.freeze(Object.defineProperty({__proto__:null,default:re},Symbol.toStringTag,{value:"Module"}));export{ve as _}; diff --git a/apps/jingrow/frontend/dist/assets/Currency-58bf1f16.css b/apps/jingrow/frontend/dist/assets/Currency-58bf1f16.css new file mode 100644 index 0000000..6981154 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Currency-58bf1f16.css @@ -0,0 +1 @@ +.field-wrapper[data-v-b63fa7ef] .n-input-number{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Currency-99139623.js b/apps/jingrow/frontend/dist/assets/Currency-99139623.js new file mode 100644 index 0000000..ea049d0 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Currency-99139623.js @@ -0,0 +1 @@ +import{d as n,c,e as o,f,p as i,g as p,y as u,h as _,j as m,Y as b,l,ad as y}from"./index-d271a6a3.js";import{_ as v}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},C={key:0,class:"required"},N=n({__name:"Currency",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(r){const d=r,s=c(()=>d.df.label_layout||"vertical");return(e,a)=>(l(),o("div",{class:b(["field-wrapper",`layout-${s.value}`])},[f("label",g,[i(p(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(l(),o("span",C,"*")):u("",!0)]),_(m(y),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=t=>e.record[e.df.fieldname]=t),precision:2,placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const h=v(N,[["__scopeId","data-v-b63fa7ef"]]),j=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{j as _}; diff --git a/apps/jingrow/frontend/dist/assets/CustomEdge-259b5163.js b/apps/jingrow/frontend/dist/assets/CustomEdge-259b5163.js new file mode 100644 index 0000000..61a2232 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/CustomEdge-259b5163.js @@ -0,0 +1 @@ +import{u as i,f as l,h as d,j as p}from"./vue-flow-core-1091fce6.js";import{c,e as m,h as s,j as t,w as _,F as f,l as g,f as u,a1 as y}from"./index-d271a6a3.js";const b={inheritAttrs:!1},E=Object.assign(b,{__name:"CustomEdge",props:{id:{type:String,required:!0},sourceX:{type:Number,required:!0},sourceY:{type:Number,required:!0},targetX:{type:Number,required:!0},targetY:{type:Number,required:!0},sourcePosition:{type:String,required:!0},targetPosition:{type:String,required:!0},data:{type:Object,required:!1},markerEnd:{type:String,required:!1},style:{type:Object,required:!1}},setup(r){const n=r,{removeEdges:o}=i(),e=c(()=>p(n));return(q,a)=>(g(),m(f,null,[s(t(l),{path:e.value[0]},null,8,["path"]),s(t(d),null,{default:_(()=>[u("div",{style:y({pointerEvents:"all",position:"absolute",transform:`translate(-50%, -50%) translate(${e.value[1]}px,${e.value[2]}px)`}),class:"nodrag nopan"},[u("button",{class:"edgebutton",onClick:a[0]||(a[0]=v=>t(o)(r.id))},"×")],4)]),_:1})],64))}});export{E as default}; diff --git a/apps/jingrow/frontend/dist/assets/CustomEdge-76174fa4.css b/apps/jingrow/frontend/dist/assets/CustomEdge-76174fa4.css new file mode 100644 index 0000000..88de19c --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/CustomEdge-76174fa4.css @@ -0,0 +1 @@ +.edgebutton{border-radius:999px;cursor:pointer}.edgebutton:hover{box-shadow:0 0 0 2px pink,0 0 0 4px #f05f75} diff --git a/apps/jingrow/frontend/dist/assets/Dashboard-2d7bef25.css b/apps/jingrow/frontend/dist/assets/Dashboard-2d7bef25.css new file mode 100644 index 0000000..84417a0 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Dashboard-2d7bef25.css @@ -0,0 +1 @@ +.dashboard-page[data-v-d1f0aa95]{width:100%;padding:0 16px}.page-header[data-v-d1f0aa95]{margin-bottom:24px}.page-title[data-v-d1f0aa95]{font-size:28px;font-weight:700;color:#1f2937;margin:0 0 8px}.page-description[data-v-d1f0aa95]{font-size:16px;color:#6b7280;margin:0}.stats-grid[data-v-d1f0aa95]{margin-bottom:24px}@media (max-width: 1200px){.stats-grid[data-v-d1f0aa95]{--n-grid-cols: 3}}@media (max-width: 768px){.dashboard-page[data-v-d1f0aa95]{padding:0 12px}.stats-grid[data-v-d1f0aa95]{margin-bottom:16px;--n-grid-cols: 2}}@media (max-width: 480px){.dashboard-page[data-v-d1f0aa95]{padding:0 8px}.page-title[data-v-d1f0aa95]{font-size:24px}.stats-grid[data-v-d1f0aa95]{--n-grid-cols: 1}} diff --git a/apps/jingrow/frontend/dist/assets/Dashboard-882c7bef.js b/apps/jingrow/frontend/dist/assets/Dashboard-882c7bef.js new file mode 100644 index 0000000..42ff2ee --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Dashboard-882c7bef.js @@ -0,0 +1 @@ +import{d as k,b as m,o as N,e as T,f as h,g as B,j as e,h as l,w as a,l as R,t,S as u,U as o,V as n,W as D}from"./index-d271a6a3.js";import{getCount as c,getLocalJobCount as x}from"./common-c89c6552.js";import{_ as y}from"./_plugin-vue_export-helper-c27b6911.js";const S={class:"dashboard-page"},C={class:"page-header"},Q={class:"page-title"},A=k({__name:"Dashboard",setup(L){const s=m({agents:0,nodes:0,taskQueue:0,scheduledTasks:0,knowledgeBase:0,note:0,event:0,todo:0,file:0}),w=async()=>{try{const d=await c("Local Ai Agent");d.success&&(s.agents=d.count||0);const i=await c("Local Ai Node");i.success&&(s.nodes=i.count||0);const _=await x();_.success&&(s.taskQueue=_.count||0);const f=await c("Local Scheduled Job");f.success&&(s.scheduledTasks=f.count||0);const r=await c("Knowledge Base");r.success&&(s.knowledgeBase=r.count||0);const v=await c("Note");v.success&&(s.note=v.count||0);const b=await c("Event");b.success&&(s.event=b.count||0);const g=await c("ToDo");g.success&&(s.todo=g.count||0);const p=await c("File");p.success&&(s.file=p.count||0)}catch(d){console.error("加载统计数据失败:",d)}};return N(()=>{w()}),(d,i)=>(R(),T("div",S,[h("div",C,[h("h1",Q,B(e(t)("Dashboard")),1)]),l(e(D),{cols:4,"x-gap":16,"y-gap":16,responsive:"screen","item-responsive":!0,class:"stats-grid"},{default:a(()=>[l(e(u),null,{default:a(()=>[l(e(o),null,{default:a(()=>[l(e(n),{label:e(t)("Total Agents"),value:s.agents},null,8,["label","value"])]),_:1})]),_:1}),l(e(u),null,{default:a(()=>[l(e(o),null,{default:a(()=>[l(e(n),{label:e(t)("Total Nodes"),value:s.nodes},null,8,["label","value"])]),_:1})]),_:1}),l(e(u),null,{default:a(()=>[l(e(o),null,{default:a(()=>[l(e(n),{label:e(t)("Task Queue"),value:s.taskQueue},null,8,["label","value"])]),_:1})]),_:1}),l(e(u),null,{default:a(()=>[l(e(o),null,{default:a(()=>[l(e(n),{label:e(t)("Scheduled Tasks"),value:s.scheduledTasks},null,8,["label","value"])]),_:1})]),_:1}),l(e(u),null,{default:a(()=>[l(e(o),null,{default:a(()=>[l(e(n),{label:e(t)("Knowledge Base"),value:s.knowledgeBase},null,8,["label","value"])]),_:1})]),_:1}),l(e(u),null,{default:a(()=>[l(e(o),null,{default:a(()=>[l(e(n),{label:e(t)("Note"),value:s.note},null,8,["label","value"])]),_:1})]),_:1}),l(e(u),null,{default:a(()=>[l(e(o),null,{default:a(()=>[l(e(n),{label:e(t)("Event"),value:s.event},null,8,["label","value"])]),_:1})]),_:1}),l(e(u),null,{default:a(()=>[l(e(o),null,{default:a(()=>[l(e(n),{label:e(t)("ToDo"),value:s.todo},null,8,["label","value"])]),_:1})]),_:1}),l(e(u),null,{default:a(()=>[l(e(o),null,{default:a(()=>[l(e(n),{label:e(t)("File"),value:s.file},null,8,["label","value"])]),_:1})]),_:1})]),_:1})]))}});const G=y(A,[["__scopeId","data-v-d1f0aa95"]]);export{G as default}; diff --git a/apps/jingrow/frontend/dist/assets/Data-8493e7ad.css b/apps/jingrow/frontend/dist/assets/Data-8493e7ad.css new file mode 100644 index 0000000..e0d9679 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Data-8493e7ad.css @@ -0,0 +1 @@ +.field-wrapper[data-v-5f049c90] .n-input{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Data-9959cbbc.js b/apps/jingrow/frontend/dist/assets/Data-9959cbbc.js new file mode 100644 index 0000000..68fa9a2 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Data-9959cbbc.js @@ -0,0 +1 @@ +import{d as n,c as p,e as l,f as c,p as f,g as i,y as u,h as _,j as m,Y as y,l as o,m as b}from"./index-d271a6a3.js";import{_ as v}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},N={key:0,class:"required"},h=n({__name:"Data",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(t){const d=t,s=p(()=>d.df.label_layout||"vertical");return(e,a)=>(o(),l("div",{class:y(["field-wrapper",`layout-${s.value}`])},[c("label",g,[f(i(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(o(),l("span",N,"*")):u("",!0)]),_(m(b),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=r=>e.record[e.df.fieldname]=r),type:"text",placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const B=v(h,[["__scopeId","data-v-5f049c90"]]),j=Object.freeze(Object.defineProperty({__proto__:null,default:B},Symbol.toStringTag,{value:"Module"}));export{j as _}; diff --git a/apps/jingrow/frontend/dist/assets/Date-6e2aaf45.css b/apps/jingrow/frontend/dist/assets/Date-6e2aaf45.css new file mode 100644 index 0000000..d5f7b14 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Date-6e2aaf45.css @@ -0,0 +1 @@ +.field-wrapper[data-v-7d0f5693] .n-date-picker{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Date-bd4fc77b.js b/apps/jingrow/frontend/dist/assets/Date-bd4fc77b.js new file mode 100644 index 0000000..11e9504 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Date-bd4fc77b.js @@ -0,0 +1 @@ +import{d as n,c as p,e as t,f as u,p as i,g as c,y as f,h as _,j as m,Y as y,l,aY as b}from"./index-d271a6a3.js";import{_ as v}from"./_plugin-vue_export-helper-c27b6911.js";const D={class:"field-label"},V={key:0,class:"required"},g=n({__name:"Date",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(o){const d=o,s=p(()=>d.df.label_layout||"vertical");return(e,a)=>(l(),t("div",{class:y(["field-wrapper",`layout-${s.value}`])},[u("label",D,[i(c(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(l(),t("span",V,"*")):f("",!0)]),_(m(b),{value:e.ctx.toDateValue?e.ctx.toDateValue(e.record[e.df.fieldname]):null,"onUpdate:value":a[0]||(a[0]=r=>e.ctx.updateDateValue&&e.ctx.updateDateValue(e.df.fieldname,r)),type:"date",placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const N=v(g,[["__scopeId","data-v-7d0f5693"]]),B=Object.freeze(Object.defineProperty({__proto__:null,default:N},Symbol.toStringTag,{value:"Module"}));export{B as _}; diff --git a/apps/jingrow/frontend/dist/assets/DateRange-93ce54f7.css b/apps/jingrow/frontend/dist/assets/DateRange-93ce54f7.css new file mode 100644 index 0000000..87fb13f --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/DateRange-93ce54f7.css @@ -0,0 +1 @@ +.field-wrapper[data-v-83e2c9a1] .n-date-picker{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/DateRange-a73dfd43.js b/apps/jingrow/frontend/dist/assets/DateRange-a73dfd43.js new file mode 100644 index 0000000..e4d55c1 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/DateRange-a73dfd43.js @@ -0,0 +1 @@ +import{d as n,c,e as l,f as i,p,g as f,y as _,h as u,j as m,Y as y,l as o,aY as b}from"./index-d271a6a3.js";import{_ as v}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},D={key:0,class:"required"},N=n({__name:"DateRange",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(t){const d=t,s=c(()=>d.df.label_layout||"vertical");return(e,a)=>(o(),l("div",{class:y(["field-wrapper",`layout-${s.value}`])},[i("label",g,[p(f(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(o(),l("span",D,"*")):_("",!0)]),u(m(b),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=r=>e.record[e.df.fieldname]=r),type:"daterange",placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const h=v(N,[["__scopeId","data-v-83e2c9a1"]]),V=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{V as _}; diff --git a/apps/jingrow/frontend/dist/assets/Datetime-5dba39f3.js b/apps/jingrow/frontend/dist/assets/Datetime-5dba39f3.js new file mode 100644 index 0000000..2458955 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Datetime-5dba39f3.js @@ -0,0 +1 @@ +import{d as n,c as i,e as t,f as c,p,g as f,y as _,h as m,j as u,Y as y,l,aY as b}from"./index-d271a6a3.js";import{_ as v}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},D={key:0,class:"required"},N=n({__name:"Datetime",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(o){const d=o,s=i(()=>d.df.label_layout||"vertical");return(e,a)=>(l(),t("div",{class:y(["field-wrapper",`layout-${s.value}`])},[c("label",g,[p(f(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(l(),t("span",D,"*")):_("",!0)]),m(u(b),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=r=>e.record[e.df.fieldname]=r),type:"datetime",placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const h=v(N,[["__scopeId","data-v-eeece6ed"]]),V=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{V as _}; diff --git a/apps/jingrow/frontend/dist/assets/Datetime-9f05aa87.css b/apps/jingrow/frontend/dist/assets/Datetime-9f05aa87.css new file mode 100644 index 0000000..2408d1e --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Datetime-9f05aa87.css @@ -0,0 +1 @@ +.field-wrapper[data-v-eeece6ed] .n-date-picker{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Duration-800eb9ee.css b/apps/jingrow/frontend/dist/assets/Duration-800eb9ee.css new file mode 100644 index 0000000..c8807d3 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Duration-800eb9ee.css @@ -0,0 +1 @@ +.field-wrapper[data-v-9f30209e] .n-input{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Duration-885d187a.js b/apps/jingrow/frontend/dist/assets/Duration-885d187a.js new file mode 100644 index 0000000..c684759 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Duration-885d187a.js @@ -0,0 +1 @@ +import{d as n,c as i,e as o,f as p,p as f,g as c,y as u,h as _,j as m,Y as b,l,m as v}from"./index-d271a6a3.js";import{_ as y}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},N={key:0,class:"required"},h=n({__name:"Duration",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(t){const d=t,s=i(()=>d.df.label_layout||"vertical");return(e,a)=>(l(),o("div",{class:b(["field-wrapper",`layout-${s.value}`])},[p("label",g,[f(c(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(l(),o("span",N,"*")):u("",!0)]),_(m(v),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=r=>e.record[e.df.fieldname]=r),placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const B=y(h,[["__scopeId","data-v-9f30209e"]]),j=Object.freeze(Object.defineProperty({__proto__:null,default:B},Symbol.toStringTag,{value:"Module"}));export{j as _}; diff --git a/apps/jingrow/frontend/dist/assets/DynamicIcon-1095da3b.js b/apps/jingrow/frontend/dist/assets/DynamicIcon-1095da3b.js new file mode 100644 index 0000000..c2080c1 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/DynamicIcon-1095da3b.js @@ -0,0 +1 @@ +import{_ as o}from"./DynamicIcon.vue_vue_type_script_setup_true_lang-6d1ac17e.js";import"./iconify-242f8a3c.js";import"./index-d271a6a3.js";export{o as default}; diff --git a/apps/jingrow/frontend/dist/assets/DynamicIcon.vue_vue_type_script_setup_true_lang-6d1ac17e.js b/apps/jingrow/frontend/dist/assets/DynamicIcon.vue_vue_type_script_setup_true_lang-6d1ac17e.js new file mode 100644 index 0000000..2ca9be3 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/DynamicIcon.vue_vue_type_script_setup_true_lang-6d1ac17e.js @@ -0,0 +1 @@ +import{I as a}from"./iconify-242f8a3c.js";import{d as c,c as i,D as t,j as s,l}from"./index-d271a6a3.js";const d=c({__name:"DynamicIcon",props:{name:{},size:{default:32},color:{default:"currentColor"},iconLibrary:{default:"tabler"}},setup(n){const e=n,r=i(()=>e.name.includes(":")?e.name:`${e.iconLibrary}:${e.name}`);return(o,m)=>(l(),t(s(a),{icon:r.value,width:o.size,height:o.size,color:o.color},null,8,["icon","width","height","color"]))}});export{d as _}; diff --git a/apps/jingrow/frontend/dist/assets/DynamicLink-289bb599.js b/apps/jingrow/frontend/dist/assets/DynamicLink-289bb599.js new file mode 100644 index 0000000..1b9191c --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/DynamicLink-289bb599.js @@ -0,0 +1 @@ +import{d as r,c as i,e as l,f as c,p as f,g as p,y as u,h as _,j as m,Y as y,l as o,m as b}from"./index-d271a6a3.js";import{_ as v}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},k={key:0,class:"required"},N=r({__name:"DynamicLink",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(d){const s=d,t=i(()=>s.df.label_layout||"vertical");return(e,a)=>(o(),l("div",{class:y(["field-wrapper",`layout-${t.value}`])},[c("label",g,[f(p(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(o(),l("span",k,"*")):u("",!0)]),_(m(b),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=n=>e.record[e.df.fieldname]=n),placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const h=v(N,[["__scopeId","data-v-382cf9fd"]]),L=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{L as _}; diff --git a/apps/jingrow/frontend/dist/assets/DynamicLink-cf70976f.css b/apps/jingrow/frontend/dist/assets/DynamicLink-cf70976f.css new file mode 100644 index 0000000..34b5628 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/DynamicLink-cf70976f.css @@ -0,0 +1 @@ +.field-wrapper[data-v-382cf9fd] .n-input{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/EditableInput-1063ff78.js b/apps/jingrow/frontend/dist/assets/EditableInput-1063ff78.js new file mode 100644 index 0000000..b44fd51 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/EditableInput-1063ff78.js @@ -0,0 +1 @@ +import{r as u,c as x,e as c,g as b,a4 as g,a5 as E,i as s,Y as k,L as h,l as p,J as w}from"./index-d271a6a3.js";import{_ as I}from"./_plugin-vue_export-helper-c27b6911.js";const L={key:0,class:"editable-text"},S={__name:"EditableInput",props:{text:{type:String,default:""},placeholder:{type:String,default:""},emptyLabel:{type:String,default:""}},emits:["update:modelValue"],setup(d,{emit:f}){const e=d,_=f,t=u(!1),a=u(""),n=u(null),m=x(()=>e.text?e.text:e.emptyLabel?e.emptyLabel:e.placeholder||"点击编辑");async function v(){var o,l;t.value=!0,a.value=e.text,await w(),(o=n.value)==null||o.focus(),(l=n.value)==null||l.select()}function i(){t.value&&(_("update:modelValue",a.value),t.value=!1)}function r(){a.value=e.text,t.value=!1}return(o,l)=>(p(),c("span",{class:k(["editable-input",{"is-editing":t.value}]),onDblclick:h(v,["stop"]),onKeydown:[s(i,["enter"]),s(r,["escape"])],tabindex:"0"},[t.value?g((p(),c("input",{key:1,ref_key:"inputRef",ref:n,type:"text",class:"form-control","onUpdate:modelValue":l[0]||(l[0]=y=>a.value=y),onBlur:i,onKeydown:[s(i,["enter"]),s(r,["escape"])]},null,544)),[[E,a.value]]):(p(),c("span",L,b(m.value),1))],34))}},D=I(S,[["__scopeId","data-v-c7790eb2"]]);export{D as default}; diff --git a/apps/jingrow/frontend/dist/assets/EditableInput-6d1e741c.css b/apps/jingrow/frontend/dist/assets/EditableInput-6d1e741c.css new file mode 100644 index 0000000..f169300 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/EditableInput-6d1e741c.css @@ -0,0 +1 @@ +.editable-input[data-v-c7790eb2]{display:inline-block;cursor:pointer}.editable-input[data-v-c7790eb2]:hover{background-color:var(--bg-light-gray);border-radius:var(--border-radius-sm);padding:.2rem .4rem;margin:-.2rem -.4rem}.editable-input.is-editing .form-control[data-v-c7790eb2]{border:1px solid var(--border-primary);outline:none;background-color:var(--fg-color)}.editable-input .editable-text[data-v-c7790eb2]{display:inline-block;min-width:1rem;min-height:1.2rem} diff --git a/apps/jingrow/frontend/dist/assets/ExecutionResults-024669bf.css b/apps/jingrow/frontend/dist/assets/ExecutionResults-024669bf.css new file mode 100644 index 0000000..163d34b --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/ExecutionResults-024669bf.css @@ -0,0 +1 @@ +.execution-results[data-v-5b99f9ea]{display:flex;flex-direction:column;height:100%;background:white}.overview-card-header[data-v-5b99f9ea]{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:6px;background:#f9fafb;margin-bottom:8px}.overview-card-header i[data-v-5b99f9ea]{font-size:16px}.overview-info-header h5[data-v-5b99f9ea]{margin:0 0 2px;font-size:14px;font-weight:600}.overview-info-header p[data-v-5b99f9ea]{margin:0;color:#6b7280;font-size:12px}.execution-results-body[data-v-5b99f9ea]{flex:1;display:flex;flex-direction:column;overflow:hidden}.execution-details[data-v-5b99f9ea]{flex:1;display:flex;overflow:hidden}.details-left[data-v-5b99f9ea]{width:300px;border-right:1px solid #e5e7eb;display:flex;flex-direction:column}.history-list[data-v-5b99f9ea]{flex:1;overflow-y:auto;padding:8px}.history-item[data-v-5b99f9ea]{padding:8px;margin-bottom:6px;border-radius:4px;background:white;border:1px solid #e5e7eb;cursor:pointer;transition:all .2s}.history-item[data-v-5b99f9ea]:hover{border-color:#3b82f6;box-shadow:0 2px 4px #3b82f61a}.history-item.active[data-v-5b99f9ea]{border-color:#3b82f6;background:#eff6ff;box-shadow:0 2px 8px #3b82f626}.history-item-header[data-v-5b99f9ea]{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.history-node-name[data-v-5b99f9ea]{font-weight:600;color:#374151;font-size:12px}.history-status-badge[data-v-5b99f9ea]{padding:1px 6px;border-radius:10px;font-size:10px;font-weight:600}.history-item.success .history-status-badge[data-v-5b99f9ea]{background:#dcfce7;color:#166534}.history-item.failed .history-status-badge[data-v-5b99f9ea]{background:#fee2e2;color:#991b1b}.history-item-meta[data-v-5b99f9ea]{font-size:10px;color:#6b7280}.no-history[data-v-5b99f9ea]{display:flex;align-items:center;justify-content:center;height:200px}.no-history-content[data-v-5b99f9ea]{text-align:center;color:#6b7280}.no-history-content i[data-v-5b99f9ea]{font-size:32px;margin-bottom:12px;opacity:.5}.no-history-content p[data-v-5b99f9ea]{margin:0;font-size:14px}.details-right[data-v-5b99f9ea]{flex:1;display:flex;flex-direction:column;background:white}.details-right.empty[data-v-5b99f9ea]{align-items:center;justify-content:center}.empty-state[data-v-5b99f9ea]{text-align:center;color:#6b7280}.empty-state i[data-v-5b99f9ea]{font-size:48px;margin-bottom:16px;opacity:.5}.empty-state p[data-v-5b99f9ea]{margin:0;font-size:16px}.node-detail-header[data-v-5b99f9ea]{display:flex;align-items:center;justify-content:space-between;padding:0 20px}.node-detail-header h6[data-v-5b99f9ea]{margin:0;font-size:16px;font-weight:600;color:#374151}.detail-tabs[data-v-5b99f9ea]{display:flex;gap:0;margin-top:8px}.tab-btn[data-v-5b99f9ea]{background:none;border:none;color:#6b7280;font-size:14px;cursor:pointer;padding:8px 16px;border-bottom:2px solid transparent;transition:all .2s;position:relative}.tab-btn[data-v-5b99f9ea]:hover{color:#374151;background:#f9fafb}.tab-btn.active[data-v-5b99f9ea]{color:#3b82f6;border-bottom-color:#3b82f6;background:white}.node-detail-content[data-v-5b99f9ea]{flex:1;overflow:hidden;border-top:1px solid #e5e7eb}.detail-panel[data-v-5b99f9ea]{height:100%;overflow:auto;position:relative}.copy-btn-floating[data-v-5b99f9ea]{position:absolute;top:8px;right:8px;background:none;border:none;color:#6b7280;font-size:18px;cursor:pointer;padding:2px 6px;border-radius:5px;transition:background .15s;z-index:10}.copy-btn-floating[data-v-5b99f9ea]:hover{background:#f3f3f3;color:#1fc76f}.json-viewer[data-v-5b99f9ea]{flex:1;margin:0;padding:12px;background:white;color:#374151;font-size:12px;line-height:1.5;overflow:auto;white-space:pre-wrap;word-break:break-word}.copy-tip[data-v-5b99f9ea]{position:absolute;top:18px;right:60px;background:#fff;color:#222;padding:4px 8px;border-radius:4px;box-shadow:0 2px 8px #00000026;font-size:12px;z-index:1000}.fade-enter-active[data-v-5b99f9ea],.fade-leave-active[data-v-5b99f9ea]{transition:opacity .3s}.fade-enter-from[data-v-5b99f9ea],.fade-leave-to[data-v-5b99f9ea]{opacity:0} diff --git a/apps/jingrow/frontend/dist/assets/ExecutionResults-0e4a1fda.js b/apps/jingrow/frontend/dist/assets/ExecutionResults-0e4a1fda.js new file mode 100644 index 0000000..886155b --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/ExecutionResults-0e4a1fda.js @@ -0,0 +1 @@ +import{u as C,r as p,l as o,e as i,f as e,g as u,F as T,C as N,Y as v,j as f,t as R,y as d,h as j,w as O,T as S}from"./index-d271a6a3.js";import{g as b}from"./nodeMetadata-adf4e793.js";import{_ as D}from"./_plugin-vue_export-helper-c27b6911.js";import"./vue-flow-core-1091fce6.js";import"./NodePropertyModal-edd68bd5.js";import"./SchemaFormRenderer-15cfd619.js";import"./nodes-4a3329bf.js";const H={class:"execution-results"},$={class:"execution-results-body"},B={class:"execution-details"},E={class:"details-left"},J={class:"history-list"},L={key:0,class:"success-overview-card"},I={class:"overview-card-header"},V={class:"overview-info-header"},F={key:1,class:"error-overview-card"},M={class:"overview-card-header"},z={class:"overview-info-header"},A={key:2,class:"no-execution-overview-card"},W={key:3},Y=["onClick"],q={class:"history-item-header"},G={class:"history-node-name"},K={class:"history-item-meta"},P={class:"history-time"},Q={key:4,class:"no-history"},U={key:0,class:"details-right"},X={class:"node-detail-header"},Z={class:"detail-tabs"},ee={class:"node-detail-content"},te={key:0,class:"detail-panel"},se={class:"json-viewer"},oe={key:1,class:"detail-panel"},ie={class:"json-viewer"},le={key:1,class:"details-right empty"},ae={key:0,class:"copy-tip"},ne={__name:"ExecutionResults",props:{executionResult:Object,executionHistory:Array},emits:["close"],setup(a,{emit:ue}){const k=C(),l=p(null),r=p("output"),y=p(!1),g=n=>{l.value=n,r.value="output"},h=async n=>{try{const t=JSON.stringify(n,null,2);await navigator.clipboard.writeText(t),y.value=!0,setTimeout(()=>{y.value=!1},2e3)}catch{k.error("复制失败,请手动复制")}},_=n=>{if(typeof n!="object"||n===null)return n;const t={};for(const[c,s]of Object.entries(n))if(typeof s=="string"&&s.trim().startsWith("{"))try{t[c]=JSON.parse(s)}catch{t[c]=s}else t[c]=s;return t};return(n,t)=>{var c;return o(),i("div",H,[e("div",$,[e("div",B,[e("div",E,[e("div",J,[a.executionResult&&a.executionResult.success?(o(),i("div",L,[e("div",I,[t[5]||(t[5]=e("i",{class:"fa fa-check-circle text-success"},null,-1)),e("div",V,[t[4]||(t[4]=e("h5",null,"执行成功",-1)),e("p",null,"执行了 "+u(a.executionHistory.length)+" 个节点",1)])])])):a.executionResult&&!a.executionResult.success?(o(),i("div",F,[e("div",M,[t[7]||(t[7]=e("i",{class:"fa fa-exclamation-circle text-danger"},null,-1)),e("div",z,[t[6]||(t[6]=e("h5",null,"执行失败",-1)),e("p",null,u(a.executionResult.error),1)])])])):(o(),i("div",A,[...t[8]||(t[8]=[e("div",{class:"overview-card-header"},[e("i",{class:"fa fa-info-circle text-info"}),e("div",{class:"overview-info-header"},[e("h5",null,"无执行历史"),e("p",null,"请先执行流程查看结果")])],-1)])])),a.executionHistory&&a.executionHistory.length>0?(o(),i("div",W,[(o(!0),i(T,null,N(a.executionHistory,(s,w)=>{var m,x;return o(),i("div",{key:w,class:v(["history-item",[s.status,{active:((m=l.value)==null?void 0:m.nodeId)===s.nodeId}]]),onClick:re=>g(s)},[e("div",q,[e("span",G,u(s.nodeLabel||((x=f(b)(s.nodeType))==null?void 0:x.label)||s.nodeType),1),e("span",{class:v(["history-status-badge",s.status])},u(f(R)(s.status)),3)]),e("div",K,[e("span",P,u(new Date(s.timestamp).toLocaleTimeString()),1)])],10,Y)}),128))])):(o(),i("div",Q,[...t[9]||(t[9]=[e("div",{class:"no-history-content"},[e("i",{class:"fa fa-history"}),e("p",null,"暂无执行历史")],-1)])]))])]),l.value?(o(),i("div",U,[e("div",X,[e("h6",null,u(l.value.nodeLabel||((c=f(b)(l.value.nodeType))==null?void 0:c.label)||l.value.nodeType),1),e("div",Z,[e("button",{class:v(["tab-btn",{active:r.value==="input"}]),onClick:t[0]||(t[0]=s=>r.value="input")}," 输入 ",2),e("button",{class:v(["tab-btn",{active:r.value==="output"}]),onClick:t[1]||(t[1]=s=>r.value="output")}," 输出 ",2)])]),e("div",ee,[r.value==="input"?(o(),i("div",te,[l.value.inputs&&Object.keys(l.value.inputs).length>0?(o(),i("button",{key:0,class:"copy-btn-floating",onClick:t[2]||(t[2]=s=>h(l.value.inputs)),title:"复制"},[...t[10]||(t[10]=[e("i",{class:"fa fa-copy"},null,-1)])])):d("",!0),e("pre",se,u(JSON.stringify(_(l.value.inputs||{}),null,2)),1)])):d("",!0),r.value==="output"?(o(),i("div",oe,[l.value.result&&Object.keys(l.value.result).length>0?(o(),i("button",{key:0,class:"copy-btn-floating",onClick:t[3]||(t[3]=s=>h(l.value.result)),title:"复制"},[...t[11]||(t[11]=[e("i",{class:"fa fa-copy"},null,-1)])])):d("",!0),e("pre",ie,u(JSON.stringify(_(l.value.result||{}),null,2)),1)])):d("",!0)])])):(o(),i("div",le,[...t[12]||(t[12]=[e("div",{class:"empty-state"},[e("i",{class:"fa fa-mouse-pointer"}),e("p",null,"点击左侧节点查看详情")],-1)])]))])]),j(S,{name:"fade"},{default:O(()=>[y.value?(o(),i("div",ae,"已复制")):d("",!0)]),_:1})])}}},_e=D(ne,[["__scopeId","data-v-5b99f9ea"]]);export{_e as default}; diff --git a/apps/jingrow/frontend/dist/assets/FieldRenderer-7f4f8b33.js b/apps/jingrow/frontend/dist/assets/FieldRenderer-7f4f8b33.js new file mode 100644 index 0000000..2d11960 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/FieldRenderer-7f4f8b33.js @@ -0,0 +1 @@ +import{_ as m}from"./FieldRenderer.vue_vue_type_script_setup_true_lang-88778177.js";import"./index-d271a6a3.js";export{m as default}; diff --git a/apps/jingrow/frontend/dist/assets/FieldRenderer.vue_vue_type_script_setup_true_lang-88778177.js b/apps/jingrow/frontend/dist/assets/FieldRenderer.vue_vue_type_script_setup_true_lang-88778177.js new file mode 100644 index 0000000..eb248ec --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/FieldRenderer.vue_vue_type_script_setup_true_lang-88778177.js @@ -0,0 +1 @@ +import{a8 as _,d as A,c as E,D,a9 as L,e as O,g as d,l as p,ab as a}from"./index-d271a6a3.js";const m=(u,o)=>{const r=u[o];return r?typeof r=="function"?r():Promise.resolve(r):new Promise((i,l)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(l.bind(null,new Error("Unknown variable dynamic import: "+o)))})},I=Object.assign({"/src/views/pagetype/file/form/controls/HTML.vue":()=>_(()=>import("./HTML-1255acc8.js"),["assets/HTML-1255acc8.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/HTML-97e0e518.css"])}),R=Object.assign({"/src/views/pagetype/file/form/controls/HTML.vue":()=>_(()=>import("./HTML-1255acc8.js"),["assets/HTML-1255acc8.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/HTML-97e0e518.css"])}),P=[];function V(){return Array.isArray([])&&[].length>0?[]:["jingrow"]}function h(u){const r=V().indexOf(u);return r>=0?r:-1}function f(u){const o=u.replace(/\\/g,"/").replace(/^\/@fs\//,"/");if(o.startsWith("/src/"))return"jingrow";const r=/(?:^|\/)apps\/([^/]+)\/frontend\//,i=/(?:^|\/)@apps\/([^/]+)\/frontend\//,l=o.match(r);if(l&&l[1])return l[1];const n=o.match(i);if(n&&n[1])return n[1];const s=/(?:^|\/)\.\.\/([^/]+)\/frontend\/src\//,c=o.match(s);if(c&&c[1]&&c[1]!=="jingrow")return c[1];const t=o.split("/").filter(Boolean);let e=t.indexOf("apps");return e<0&&(e=t.indexOf("@apps")),e>=0&&e+1=o.length||i+1>=o.length)return null;const l=o[r+1],s=o[i+1].replace(/\.vue$/i,"");return{entity:l,fieldtype:s}}function T(u){for(const[o,r]of Object.entries(u)){const i=g(o);i&&P.push({loader:r,appName:f(o),fullPath:o,entity:i.entity,fieldtype:i.fieldtype})}}T(I);T(R);const v={};for(const u of P){const o=`${u.entity}:${u.fieldtype}`;v[o]||(v[o]=[]),v[o].push(u)}for(const u of Object.keys(v))v[u].sort((o,r)=>{const i=h(o.appName),l=h(r.appName);if(i!==l)return l-i;const n=o.fullPath.includes("/apps/")||o.fullPath.includes("@apps/"),s=r.fullPath.includes("/apps/")||r.fullPath.includes("@apps/");return n!==s?n?-1:1:o.fullPath.length!==r.fullPath.length?o.fullPath.length-r.fullPath.length:o.fullPath.localeCompare(r.fullPath)});async function y(u,o){if(!u||!o)return null;const r=`${u.toLowerCase().replace(/-/g,"_")}:${String(o).replace(/\s+/g,"")}`;let i=v[r];if((!i||i.length===0)&&(i=v[`_global:${String(o).replace(/\s+/g,"")}`]),!i||i.length===0)return null;try{const l=await i[0].loader();return(l==null?void 0:l.default)??l}catch{return null}}const k={key:1,class:"field-value"},M=A({__name:"FieldRenderer",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(u){const o=u,r=E(()=>!(!o.canEdit||o.df.read_only===1));function i(n){return n.replace(/\s+/g,"")}const l=E(()=>{var c;const n=i(String(o.df.fieldtype||""));if(!n)return null;const s=(c=o.ctx)==null?void 0:c.entity;if(s)try{return a(async()=>{const t=await y(s,n);return t||m(Object.assign({"./controls/Attach.vue":()=>_(()=>import("./Attach-d60cbf5b.js").then(e=>e._),["assets/Attach-d60cbf5b.js","assets/common-c89c6552.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Attach-c8ad1cd3.css"]),"./controls/AttachImage.vue":()=>_(()=>import("./AttachImage-2dbfd5c7.js").then(e=>e._),["assets/AttachImage-2dbfd5c7.js","assets/common-c89c6552.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/AttachImage-7d44c0de.css"]),"./controls/Autocomplete.vue":()=>_(()=>import("./Autocomplete-eef51ef0.js").then(e=>e._),["assets/Autocomplete-eef51ef0.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Autocomplete-516339c6.css"]),"./controls/Barcode.vue":()=>_(()=>import("./Barcode-81215231.js").then(e=>e._),["assets/Barcode-81215231.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Barcode-38d1adf5.css"]),"./controls/Button.vue":()=>_(()=>import("./Button-32075d9a.js").then(e=>e._),["assets/Button-32075d9a.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Button-56079bd3.css"]),"./controls/Check.vue":()=>_(()=>import("./Check-3f46cacd.js").then(e=>e._),["assets/Check-3f46cacd.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Check-fde95c17.css"]),"./controls/Code.vue":()=>_(()=>import("./Code-5f5e5edb.js").then(e=>e._),["assets/Code-5f5e5edb.js","assets/index-2d2e8bf3.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Code-40ef4836.css"]),"./controls/Color.vue":()=>_(()=>import("./Color-04c31e29.js").then(e=>e._),["assets/Color-04c31e29.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Color-bd04798e.css"]),"./controls/Comment.vue":()=>_(()=>import("./Comment-bdde071c.js").then(e=>e._),["assets/Comment-bdde071c.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Comment-0f3aab98.css"]),"./controls/CronEditor.vue":()=>_(()=>import("./CronEditor-e085d892.js").then(e=>e._),["assets/CronEditor-e085d892.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/CronEditor-3a75aedb.css"]),"./controls/Currency.vue":()=>_(()=>import("./Currency-99139623.js").then(e=>e._),["assets/Currency-99139623.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Currency-58bf1f16.css"]),"./controls/Data.vue":()=>_(()=>import("./Data-9959cbbc.js").then(e=>e._),["assets/Data-9959cbbc.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Data-8493e7ad.css"]),"./controls/Date.vue":()=>_(()=>import("./Date-bd4fc77b.js").then(e=>e._),["assets/Date-bd4fc77b.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Date-6e2aaf45.css"]),"./controls/DateRange.vue":()=>_(()=>import("./DateRange-a73dfd43.js").then(e=>e._),["assets/DateRange-a73dfd43.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/DateRange-93ce54f7.css"]),"./controls/Datetime.vue":()=>_(()=>import("./Datetime-5dba39f3.js").then(e=>e._),["assets/Datetime-5dba39f3.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Datetime-9f05aa87.css"]),"./controls/Duration.vue":()=>_(()=>import("./Duration-885d187a.js").then(e=>e._),["assets/Duration-885d187a.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Duration-800eb9ee.css"]),"./controls/DynamicLink.vue":()=>_(()=>import("./DynamicLink-289bb599.js").then(e=>e._),["assets/DynamicLink-289bb599.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/DynamicLink-cf70976f.css"]),"./controls/Float.vue":()=>_(()=>import("./Float-e9152ed7.js").then(e=>e._),["assets/Float-e9152ed7.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Float-e9034d6f.css"]),"./controls/Geolocation.vue":()=>_(()=>import("./Geolocation-a5601209.js").then(e=>e._),["assets/Geolocation-a5601209.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Geolocation-53613cdc.css"]),"./controls/HTML.vue":()=>_(()=>import("./HTML-11e652e4.js").then(e=>e._),["assets/HTML-11e652e4.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/HTML-001056b5.css"]),"./controls/HTMLEditor.vue":()=>_(()=>import("./HTMLEditor-30b7305c.js").then(e=>e._),["assets/HTMLEditor-30b7305c.js","assets/index-2d2e8bf3.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/HTMLEditor-da363245.css"]),"./controls/Heading.vue":()=>_(()=>import("./Heading-386158fe.js").then(e=>e._),["assets/Heading-386158fe.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Heading-96be6be6.css"]),"./controls/Icon.vue":()=>_(()=>import("./Icon-920b687f.js").then(e=>e._),["assets/Icon-920b687f.js","assets/iconify-242f8a3c.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/IconPicker-661ac603.js","assets/index-362e01cb.js","assets/_plugin-vue_export-helper-c27b6911.js","assets/IconPicker-1d3392a9.css","assets/Icon-175ab1a3.css"]),"./controls/Image.vue":()=>_(()=>import("./Image-ce5f4a8b.js").then(e=>e._),["assets/Image-ce5f4a8b.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Image-99476d84.css"]),"./controls/Int.vue":()=>_(()=>import("./Int-0b4607af.js").then(e=>e._),["assets/Int-0b4607af.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Int-659d1204.css"]),"./controls/JSON.vue":()=>_(()=>import("./JSON-31a4c94d.js").then(e=>e._),["assets/JSON-31a4c94d.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/JSON-e50cb536.css"]),"./controls/Jeditor.vue":()=>_(()=>import("./Jeditor-03001e44.js").then(e=>e._),["assets/Jeditor-03001e44.js","assets/Jeditor.vue_vue_type_style_index_0_lang-fa0f1963.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/common-c89c6552.js","assets/Jeditor-c552a82f.css"]),"./controls/Link.vue":()=>_(()=>import("./Link-d4fb39b6.js").then(e=>e._),["assets/Link-d4fb39b6.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/iconify-242f8a3c.js","assets/common-c89c6552.js","assets/slug-9937a98a.js","assets/_plugin-vue_export-helper-c27b6911.js","assets/Link-36f94aa6.css"]),"./controls/LongText.vue":()=>_(()=>import("./LongText-dd777872.js").then(e=>e._),["assets/LongText-dd777872.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/LongText-08a19895.css"]),"./controls/MarkdownEditor.vue":()=>_(()=>import("./MarkdownEditor-ff757a25.js").then(e=>e._),["assets/MarkdownEditor-ff757a25.js","assets/index-2d2e8bf3.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/MarkdownEditor-89419c24.css"]),"./controls/MultiCheck.vue":()=>_(()=>import("./MultiCheck-73d11ae9.js").then(e=>e._),["assets/MultiCheck-73d11ae9.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/MultiCheck-dcdd6a2f.css"]),"./controls/MultiSelect.vue":()=>_(()=>import("./MultiSelect-cae41242.js").then(e=>e._),["assets/MultiSelect-cae41242.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/MultiSelect-533500c8.css"]),"./controls/MultiSelectList.vue":()=>_(()=>import("./MultiSelectList-32f65cef.js").then(e=>e._),["assets/MultiSelectList-32f65cef.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/MultiSelectList-d72c9fa6.css"]),"./controls/MultiSelectPills.vue":()=>_(()=>import("./MultiSelectPills-109d7a64.js").then(e=>e._),["assets/MultiSelectPills-109d7a64.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/MultiSelectPills-75741655.css"]),"./controls/Password.vue":()=>_(()=>import("./Password-e94e21d3.js").then(e=>e._),["assets/Password-e94e21d3.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Password-6c897bb6.css"]),"./controls/Percent.vue":()=>_(()=>import("./Percent-1a180e8c.js").then(e=>e._),["assets/Percent-1a180e8c.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Percent-5230862a.css"]),"./controls/Phone.vue":()=>_(()=>import("./Phone-533abb29.js").then(e=>e._),["assets/Phone-533abb29.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Phone-6f74dbad.css"]),"./controls/Rating.vue":()=>_(()=>import("./Rating-d1ae3ba1.js").then(e=>e._),["assets/Rating-d1ae3ba1.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Rating-0f221503.css"]),"./controls/Select.vue":()=>_(()=>import("./Select-baf6cac3.js").then(e=>e._),["assets/Select-baf6cac3.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Select-78e47719.css"]),"./controls/Signature.vue":()=>_(()=>import("./Signature-8297d6b5.js").then(e=>e._),["assets/Signature-8297d6b5.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Signature-39609589.css"]),"./controls/SmallText.vue":()=>_(()=>import("./SmallText-fe49861b.js").then(e=>e._),["assets/SmallText-fe49861b.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/SmallText-28cc6705.css"]),"./controls/Table.vue":()=>_(()=>import("./Table-308bc8b7.js").then(e=>e._),["assets/Table-308bc8b7.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/iconify-242f8a3c.js","assets/_plugin-vue_export-helper-c27b6911.js","assets/Table-72749cdd.css"]),"./controls/TableMultiSelect.vue":()=>_(()=>import("./TableMultiSelect-36ba6426.js").then(e=>e._),["assets/TableMultiSelect-36ba6426.js","assets/index-d271a6a3.js","assets/index-3d86671b.css"]),"./controls/Text.vue":()=>_(()=>import("./Text-5be01379.js").then(e=>e._),["assets/Text-5be01379.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Text-68de82ad.css"]),"./controls/TextEditor.vue":()=>_(()=>import("./TextEditor-3ec2aa60.js").then(e=>e._),["assets/TextEditor-3ec2aa60.js","assets/_commonjsHelpers-de833af9.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/TextEditor-48efdb66.css"]),"./controls/Time.vue":()=>_(()=>import("./Time-b3fd5cde.js").then(e=>e._),["assets/Time-b3fd5cde.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Time-fc75c02c.css"])}),`./controls/${n}.vue`)})}catch{}try{return a(()=>m(Object.assign({"./controls/Attach.vue":()=>_(()=>import("./Attach-d60cbf5b.js").then(t=>t._),["assets/Attach-d60cbf5b.js","assets/common-c89c6552.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Attach-c8ad1cd3.css"]),"./controls/AttachImage.vue":()=>_(()=>import("./AttachImage-2dbfd5c7.js").then(t=>t._),["assets/AttachImage-2dbfd5c7.js","assets/common-c89c6552.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/AttachImage-7d44c0de.css"]),"./controls/Autocomplete.vue":()=>_(()=>import("./Autocomplete-eef51ef0.js").then(t=>t._),["assets/Autocomplete-eef51ef0.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Autocomplete-516339c6.css"]),"./controls/Barcode.vue":()=>_(()=>import("./Barcode-81215231.js").then(t=>t._),["assets/Barcode-81215231.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Barcode-38d1adf5.css"]),"./controls/Button.vue":()=>_(()=>import("./Button-32075d9a.js").then(t=>t._),["assets/Button-32075d9a.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Button-56079bd3.css"]),"./controls/Check.vue":()=>_(()=>import("./Check-3f46cacd.js").then(t=>t._),["assets/Check-3f46cacd.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Check-fde95c17.css"]),"./controls/Code.vue":()=>_(()=>import("./Code-5f5e5edb.js").then(t=>t._),["assets/Code-5f5e5edb.js","assets/index-2d2e8bf3.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Code-40ef4836.css"]),"./controls/Color.vue":()=>_(()=>import("./Color-04c31e29.js").then(t=>t._),["assets/Color-04c31e29.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Color-bd04798e.css"]),"./controls/Comment.vue":()=>_(()=>import("./Comment-bdde071c.js").then(t=>t._),["assets/Comment-bdde071c.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Comment-0f3aab98.css"]),"./controls/CronEditor.vue":()=>_(()=>import("./CronEditor-e085d892.js").then(t=>t._),["assets/CronEditor-e085d892.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/CronEditor-3a75aedb.css"]),"./controls/Currency.vue":()=>_(()=>import("./Currency-99139623.js").then(t=>t._),["assets/Currency-99139623.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Currency-58bf1f16.css"]),"./controls/Data.vue":()=>_(()=>import("./Data-9959cbbc.js").then(t=>t._),["assets/Data-9959cbbc.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Data-8493e7ad.css"]),"./controls/Date.vue":()=>_(()=>import("./Date-bd4fc77b.js").then(t=>t._),["assets/Date-bd4fc77b.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Date-6e2aaf45.css"]),"./controls/DateRange.vue":()=>_(()=>import("./DateRange-a73dfd43.js").then(t=>t._),["assets/DateRange-a73dfd43.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/DateRange-93ce54f7.css"]),"./controls/Datetime.vue":()=>_(()=>import("./Datetime-5dba39f3.js").then(t=>t._),["assets/Datetime-5dba39f3.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Datetime-9f05aa87.css"]),"./controls/Duration.vue":()=>_(()=>import("./Duration-885d187a.js").then(t=>t._),["assets/Duration-885d187a.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Duration-800eb9ee.css"]),"./controls/DynamicLink.vue":()=>_(()=>import("./DynamicLink-289bb599.js").then(t=>t._),["assets/DynamicLink-289bb599.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/DynamicLink-cf70976f.css"]),"./controls/Float.vue":()=>_(()=>import("./Float-e9152ed7.js").then(t=>t._),["assets/Float-e9152ed7.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Float-e9034d6f.css"]),"./controls/Geolocation.vue":()=>_(()=>import("./Geolocation-a5601209.js").then(t=>t._),["assets/Geolocation-a5601209.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Geolocation-53613cdc.css"]),"./controls/HTML.vue":()=>_(()=>import("./HTML-11e652e4.js").then(t=>t._),["assets/HTML-11e652e4.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/HTML-001056b5.css"]),"./controls/HTMLEditor.vue":()=>_(()=>import("./HTMLEditor-30b7305c.js").then(t=>t._),["assets/HTMLEditor-30b7305c.js","assets/index-2d2e8bf3.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/HTMLEditor-da363245.css"]),"./controls/Heading.vue":()=>_(()=>import("./Heading-386158fe.js").then(t=>t._),["assets/Heading-386158fe.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Heading-96be6be6.css"]),"./controls/Icon.vue":()=>_(()=>import("./Icon-920b687f.js").then(t=>t._),["assets/Icon-920b687f.js","assets/iconify-242f8a3c.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/IconPicker-661ac603.js","assets/index-362e01cb.js","assets/_plugin-vue_export-helper-c27b6911.js","assets/IconPicker-1d3392a9.css","assets/Icon-175ab1a3.css"]),"./controls/Image.vue":()=>_(()=>import("./Image-ce5f4a8b.js").then(t=>t._),["assets/Image-ce5f4a8b.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Image-99476d84.css"]),"./controls/Int.vue":()=>_(()=>import("./Int-0b4607af.js").then(t=>t._),["assets/Int-0b4607af.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Int-659d1204.css"]),"./controls/JSON.vue":()=>_(()=>import("./JSON-31a4c94d.js").then(t=>t._),["assets/JSON-31a4c94d.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/JSON-e50cb536.css"]),"./controls/Jeditor.vue":()=>_(()=>import("./Jeditor-03001e44.js").then(t=>t._),["assets/Jeditor-03001e44.js","assets/Jeditor.vue_vue_type_style_index_0_lang-fa0f1963.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/common-c89c6552.js","assets/Jeditor-c552a82f.css"]),"./controls/Link.vue":()=>_(()=>import("./Link-d4fb39b6.js").then(t=>t._),["assets/Link-d4fb39b6.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/iconify-242f8a3c.js","assets/common-c89c6552.js","assets/slug-9937a98a.js","assets/_plugin-vue_export-helper-c27b6911.js","assets/Link-36f94aa6.css"]),"./controls/LongText.vue":()=>_(()=>import("./LongText-dd777872.js").then(t=>t._),["assets/LongText-dd777872.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/LongText-08a19895.css"]),"./controls/MarkdownEditor.vue":()=>_(()=>import("./MarkdownEditor-ff757a25.js").then(t=>t._),["assets/MarkdownEditor-ff757a25.js","assets/index-2d2e8bf3.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/MarkdownEditor-89419c24.css"]),"./controls/MultiCheck.vue":()=>_(()=>import("./MultiCheck-73d11ae9.js").then(t=>t._),["assets/MultiCheck-73d11ae9.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/MultiCheck-dcdd6a2f.css"]),"./controls/MultiSelect.vue":()=>_(()=>import("./MultiSelect-cae41242.js").then(t=>t._),["assets/MultiSelect-cae41242.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/MultiSelect-533500c8.css"]),"./controls/MultiSelectList.vue":()=>_(()=>import("./MultiSelectList-32f65cef.js").then(t=>t._),["assets/MultiSelectList-32f65cef.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/MultiSelectList-d72c9fa6.css"]),"./controls/MultiSelectPills.vue":()=>_(()=>import("./MultiSelectPills-109d7a64.js").then(t=>t._),["assets/MultiSelectPills-109d7a64.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/MultiSelectPills-75741655.css"]),"./controls/Password.vue":()=>_(()=>import("./Password-e94e21d3.js").then(t=>t._),["assets/Password-e94e21d3.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Password-6c897bb6.css"]),"./controls/Percent.vue":()=>_(()=>import("./Percent-1a180e8c.js").then(t=>t._),["assets/Percent-1a180e8c.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Percent-5230862a.css"]),"./controls/Phone.vue":()=>_(()=>import("./Phone-533abb29.js").then(t=>t._),["assets/Phone-533abb29.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Phone-6f74dbad.css"]),"./controls/Rating.vue":()=>_(()=>import("./Rating-d1ae3ba1.js").then(t=>t._),["assets/Rating-d1ae3ba1.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Rating-0f221503.css"]),"./controls/Select.vue":()=>_(()=>import("./Select-baf6cac3.js").then(t=>t._),["assets/Select-baf6cac3.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Select-78e47719.css"]),"./controls/Signature.vue":()=>_(()=>import("./Signature-8297d6b5.js").then(t=>t._),["assets/Signature-8297d6b5.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Signature-39609589.css"]),"./controls/SmallText.vue":()=>_(()=>import("./SmallText-fe49861b.js").then(t=>t._),["assets/SmallText-fe49861b.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/SmallText-28cc6705.css"]),"./controls/Table.vue":()=>_(()=>import("./Table-308bc8b7.js").then(t=>t._),["assets/Table-308bc8b7.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/iconify-242f8a3c.js","assets/_plugin-vue_export-helper-c27b6911.js","assets/Table-72749cdd.css"]),"./controls/TableMultiSelect.vue":()=>_(()=>import("./TableMultiSelect-36ba6426.js").then(t=>t._),["assets/TableMultiSelect-36ba6426.js","assets/index-d271a6a3.js","assets/index-3d86671b.css"]),"./controls/Text.vue":()=>_(()=>import("./Text-5be01379.js").then(t=>t._),["assets/Text-5be01379.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Text-68de82ad.css"]),"./controls/TextEditor.vue":()=>_(()=>import("./TextEditor-3ec2aa60.js").then(t=>t._),["assets/TextEditor-3ec2aa60.js","assets/_commonjsHelpers-de833af9.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/TextEditor-48efdb66.css"]),"./controls/Time.vue":()=>_(()=>import("./Time-b3fd5cde.js").then(t=>t._),["assets/Time-b3fd5cde.js","assets/index-d271a6a3.js","assets/index-3d86671b.css","assets/_plugin-vue_export-helper-c27b6911.js","assets/Time-fc75c02c.css"])}),`./controls/${n}.vue`))}catch{return null}});return(n,s)=>l.value?(p(),D(L(l.value),{key:0,df:n.df,record:n.record,"can-edit":r.value,ctx:n.ctx,modelValue:n.record[n.df.fieldname],"onUpdate:modelValue":s[0]||(s[0]=c=>n.record[n.df.fieldname]=c),disabled:!r.value},null,8,["df","record","can-edit","ctx","modelValue","disabled"])):(p(),O("span",k,d(n.ctx.t("Unsupported field type"))+": "+d(n.df.fieldtype),1))}});export{M as _}; diff --git a/apps/jingrow/frontend/dist/assets/FilterBar-39a97e43.css b/apps/jingrow/frontend/dist/assets/FilterBar-39a97e43.css new file mode 100644 index 0000000..65ae5a5 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/FilterBar-39a97e43.css @@ -0,0 +1 @@ +.elegant-filter-bar[data-v-305db73a]{background:white;border:1px solid #e5e7eb;border-radius:6px;margin-bottom:12px;box-shadow:0 1px 2px #0000000d}.filter-content[data-v-305db73a]{padding:8px 16px}.empty-state[data-v-305db73a]{display:flex;align-items:center;gap:8px;color:#6b7280;font-size:13px;padding:8px 0}.empty-state i[data-v-305db73a]{color:#9ca3af}.filter-row[data-v-305db73a]{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.filter-item[data-v-305db73a]{display:flex;align-items:center;padding:3px 8px;border-radius:4px;transition:all .2s ease;min-width:0}.filter-item.has-value[data-v-305db73a]{background:#f0f9ff}.filter-item[data-v-305db73a]:hover{background:#f3f4f6}.filter-input[data-v-305db73a]{min-width:120px;max-width:200px}.filter-input[data-v-305db73a] .n-input,.filter-input[data-v-305db73a] .n-select,.filter-input[data-v-305db73a] .n-date-picker,.filter-input[data-v-305db73a] .n-input-number{border:none;background:transparent;box-shadow:none}.filter-input[data-v-305db73a] .n-input:focus,.filter-input[data-v-305db73a] .n-select:focus,.filter-input[data-v-305db73a] .n-date-picker:focus,.filter-input[data-v-305db73a] .n-input-number:focus{border:none;box-shadow:none}.filter-actions[data-v-305db73a]{display:flex;gap:4px;margin-left:auto}.action-btn[data-v-305db73a]{width:24px;height:24px;border:1px solid #d1d5db;border-radius:4px;background:white;color:#6b7280;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:10px;transition:all .2s ease}.action-btn[data-v-305db73a]:hover{background:#f3f4f6;border-color:#9ca3af}.clear-btn[data-v-305db73a]:hover{background:#fef2f2;border-color:#fca5a5;color:#dc2626}@media (max-width: 768px){.filter-row[data-v-305db73a]{flex-direction:column;align-items:stretch}.filter-item[data-v-305db73a]{width:100%;justify-content:center}.filter-input[data-v-305db73a]{min-width:150px;max-width:none}.filter-actions[data-v-305db73a]{margin-left:0;justify-content:flex-end;margin-top:8px}}.filter-input[data-v-305db73a] .n-input,.filter-input[data-v-305db73a] .n-select,.filter-input[data-v-305db73a] .n-date-picker,.filter-input[data-v-305db73a] .n-input-number{width:100%}.link-filter-input[data-v-305db73a]{position:relative}.link-filter-container[data-v-305db73a]{position:relative;width:100%}.link-dropdown-menu[data-v-305db73a]{position:absolute;top:100%;left:0;right:0;z-index:1000;margin-top:4px}.link-dropdown-content[data-v-305db73a]{background:white;border:1px solid #e0e0e6;border-radius:6px;box-shadow:0 4px 12px #0000001a;max-height:200px;overflow-y:auto}.link-dropdown-item[data-v-305db73a]{padding:8px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;border-bottom:1px solid #f0f0f0}.link-dropdown-item[data-v-305db73a]:last-child{border-bottom:none}.link-dropdown-item[data-v-305db73a]:hover{background-color:#f5f5f5}.link-dropdown-item.create-item[data-v-305db73a]{color:#18a058;font-weight:500}.create-icon[data-v-305db73a]{color:#18a058}.item-label[data-v-305db73a]{flex:1}.link-empty-state[data-v-305db73a],.link-loading-state[data-v-305db73a]{padding:12px;text-align:center;color:#999;font-size:14px} diff --git a/apps/jingrow/frontend/dist/assets/FilterBar-c22cf47c.js b/apps/jingrow/frontend/dist/assets/FilterBar-c22cf47c.js new file mode 100644 index 0000000..fb59817 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/FilterBar-c22cf47c.js @@ -0,0 +1,2 @@ +import{d as oe,r as V,c as L,o as ie,K as re,M,e as r,f,F as P,C as $,j as d,y as g,l as u,Y as K,h,i as U,m as N,Z as D,t as k,ad as ue,aY as ce,g as S,a0 as j,a2 as A}from"./index-d271a6a3.js";import{getRecords as de}from"./common-c89c6552.js";import{_ as pe}from"./_plugin-vue_export-helper-c27b6911.js";const ve={key:0,class:"elegant-filter-bar"},me={class:"filter-content"},fe={class:"filter-row"},he={key:0,class:"filter-input"},ye={key:1,class:"filter-input"},_e={key:2,class:"filter-input"},ke={key:3,class:"filter-input"},ge={key:4,class:"filter-input"},Ce={key:5,class:"filter-input"},be={key:6,class:"filter-input link-filter-input"},Fe={key:0,class:"link-dropdown-menu"},we={class:"link-dropdown-content"},Ve=["onClick"],Le={key:0,class:"create-icon"},Ue={class:"item-label"},Ne={key:0,class:"link-empty-state"},De={key:1,class:"link-loading-state"},Se={key:7,class:"filter-input"},Be={class:"filter-actions"},Te=["title"],Ie=oe({__name:"FilterBar",props:{fields:{},modelValue:{}},emits:["update:modelValue","filter-change"],setup(Y,{emit:Z}){const C=Y,B=Z,s=V({...C.modelValue}),t=V({}),T=V({}),F=L(()=>{const l=i=>!["Section Break","Column Break","Tab Break"].includes(i.fieldtype);return C.fields.filter(l).filter(i=>i.in_standard_filter).slice(0,8)}),G=L(()=>Object.values(s.value).filter(l=>l!=null&&l!==""&&!(Array.isArray(l)&&l.length===0)).length),H=L(()=>G.value>0);function J(l){return["Data","Text","Long Text","Comment"].includes(l)}function W(l){return["MultiSelect","MultiSelect Pills","MultiSelect List"].includes(l)}function X(l){return["Int","Float","Currency","Percent"].includes(l)}function q(l){return["Date","Datetime"].includes(l)}function v(l){const a=l.label||l.fieldname;return k(a)}function I(l){return l.options?l.options.split(` +`).filter(e=>e.trim()!=="").map(e=>({label:k(e),value:e})):[]}function o(){B("update:modelValue",{...s.value}),B("filter-change",{...s.value})}function w(l){(l==null||l==="")&&o()}function ee(){s.value={},o()}function p(l){t.value[l]||(t.value[l]={show:!1,options:[],loading:!1,searchQuery:"",displayValue:"",pageTypeConfig:{}})}function ae(l,a){a&&(T.value[l]=a)}function le(l){const a=l.fieldname;p(a);const e=s.value[a];return e?t.value[a].displayValue&&t.value[a].displayValue!==e?t.value[a].displayValue:e:t.value[a].searchQuery||""}async function z(l){var i;const a=l.fieldname;p(a);const e=s.value[a];if(!(!e||!l.options)&&!(t.value[a].displayValue&&t.value[a].displayValue!==e))try{const m=(await x(l.options)).title_field||"name";if(m==="name"){t.value[a].displayValue=e;return}const n=(((i=(await j.get(`/api/data/${encodeURIComponent(l.options)}/${encodeURIComponent(e)}`,{headers:A(),withCredentials:!0})).data)==null?void 0:i.data)||{})[m]||e;t.value[a].displayValue=n}catch(c){console.warn("加载Link字段显示值失败:",c)}}async function x(l){var e;const a=`_config_${l}`;if(t.value[a]||(t.value[a]={show:!1,options:[],loading:!1,searchQuery:"",displayValue:"",pageTypeConfig:{}}),Object.keys(t.value[a].pageTypeConfig).length>0)return t.value[a].pageTypeConfig;try{const c=((e=(await j.get(`/api/data/PageType/${encodeURIComponent(l)}`,{headers:A(),withCredentials:!0})).data)==null?void 0:e.data)||{};return t.value[a].pageTypeConfig=c,c}catch(i){return console.error("获取页面类型配置失败:",i),{}}}async function Q(l,a=""){const e=l.fieldname;if(p(e),!!l.options){t.value[e].loading=!0;try{const c=(await x(l.options)).title_field||"name",m=["name"];c!=="name"&&m.push(c);const y=[];a.trim()&&(c!=="name"?y.push([c,"like",`%${a}%`]):y.push(["name","like",`%${a}%`]));const _=await de(l.options,y,m,"modified desc",0,20);if(_.success&&_.data){const n=_.data.map(b=>{const R=c==="name"?b.name:b[c]||b.name;return{label:R,value:b.name,title:R}});t.value[e].options=n}else t.value[e].options=[]}catch(i){console.error("搜索Link选项失败:",i),t.value[e].options=[]}finally{t.value[e].loading=!1}}}function te(l,a){const e=l.fieldname;p(e),t.value[e].searchQuery=a||"",t.value[e].show&&Q(l,a),a||(s.value[e]="",o())}async function E(l){const a=l.fieldname;p(a),!t.value[a].show&&(await Q(l,t.value[a].searchQuery),t.value[a].show=!0)}function ne(l,a){const e=l.fieldname;if(p(e),a.type==="create"){t.value[e].show=!1;return}s.value[e]=a.value,t.value[e].displayValue=a.title||a.label,t.value[e].searchQuery="",t.value[e].show=!1,o()}function se(l){const a=l.fieldname;p(a),s.value[a]="",t.value[a].displayValue="",t.value[a].searchQuery="",t.value[a].show=!1,o()}function O(l){const a=l.target;Object.keys(t.value).forEach(e=>{const i=T.value[e];i&&!i.contains(a)&&(t.value[e].show=!1)})}return ie(()=>{document.addEventListener("click",O),C.fields.forEach(l=>{l.fieldtype==="Link"&&l.options&&p(l.fieldname)})}),re(()=>{document.removeEventListener("click",O)}),M(()=>C.modelValue,l=>{s.value={...l},C.fields.forEach(a=>{a.fieldtype==="Link"&&a.options&&l[a.fieldname]?(p(a.fieldname),t.value[a.fieldname].displayValue="",z(a)):a.fieldtype==="Link"&&a.options&&!l[a.fieldname]&&(p(a.fieldname),t.value[a.fieldname].displayValue="",t.value[a.fieldname].searchQuery="")})},{deep:!0}),M(()=>F.value,l=>{l.forEach(a=>{a.fieldtype==="Link"&&a.options&&s.value[a.fieldname]&&z(a)})},{immediate:!0}),(l,a)=>F.value.length>0?(u(),r("div",ve,[f("div",me,[f("div",fe,[(u(!0),r(P,null,$(F.value,e=>{var i,c,m,y,_;return u(),r("div",{key:e.fieldname,class:K(["filter-item",{"has-value":s.value[e.fieldname]}])},[J(e.fieldtype)?(u(),r("div",he,[h(d(N),{value:s.value[e.fieldname],"onUpdate:value":[n=>s.value[e.fieldname]=n,w],placeholder:v(e),clearable:"",size:"small",onBlur:o,onKeyup:U(o,["enter"])},null,8,["value","onUpdate:value","placeholder"])])):e.fieldtype==="Select"?(u(),r("div",ye,[h(d(D),{value:s.value[e.fieldname],"onUpdate:value":[n=>s.value[e.fieldname]=n,o],options:I(e),placeholder:v(e),clearable:"",size:"small",onClear:o},null,8,["value","onUpdate:value","options","placeholder"])])):W(e.fieldtype)?(u(),r("div",_e,[h(d(D),{value:s.value[e.fieldname],"onUpdate:value":[n=>s.value[e.fieldname]=n,o],options:I(e),multiple:"",placeholder:v(e),clearable:"",size:"small",onClear:o},null,8,["value","onUpdate:value","options","placeholder"])])):e.fieldtype==="Check"?(u(),r("div",ke,[h(d(D),{value:s.value[e.fieldname],"onUpdate:value":[n=>s.value[e.fieldname]=n,o],options:[{label:d(k)("是"),value:1},{label:d(k)("否"),value:0}],placeholder:v(e),clearable:"",size:"small",onClear:o},null,8,["value","onUpdate:value","options","placeholder"])])):X(e.fieldtype)?(u(),r("div",ge,[h(d(ue),{value:s.value[e.fieldname],"onUpdate:value":[n=>s.value[e.fieldname]=n,w],placeholder:v(e),clearable:"",size:"small",onBlur:o,onKeyup:U(o,["enter"])},null,8,["value","onUpdate:value","placeholder"])])):q(e.fieldtype)?(u(),r("div",Ce,[h(d(ce),{value:s.value[e.fieldname],"onUpdate:value":[n=>s.value[e.fieldname]=n,o],placeholder:v(e),clearable:"",size:"small",onClear:o},null,8,["value","onUpdate:value","placeholder"])])):e.fieldtype==="Link"&&e.options?(u(),r("div",be,[f("div",{class:"link-filter-container",ref_for:!0,ref:n=>ae(e.fieldname,n)},[h(d(N),{value:le(e),placeholder:v(e),clearable:"",size:"small","onUpdate:value":n=>te(e,n),onClick:()=>E(e),onFocus:()=>E(e),onClear:()=>se(e)},null,8,["value","placeholder","onUpdate:value","onClick","onFocus","onClear"]),(i=t.value[e.fieldname])!=null&&i.show?(u(),r("div",Fe,[f("div",we,[(u(!0),r(P,null,$(((c=t.value[e.fieldname])==null?void 0:c.options)||[],n=>(u(),r("div",{key:n.value,class:K(["link-dropdown-item",{"create-item":n.type==="create"}]),onClick:()=>ne(e,n)},[n.type==="create"?(u(),r("span",Le,[...a[0]||(a[0]=[f("i",{class:"fa fa-plus"},null,-1)])])):g("",!0),f("span",Ue,S(n.label),1)],10,Ve))),128)),(((m=t.value[e.fieldname])==null?void 0:m.options)||[]).length===0&&!((y=t.value[e.fieldname])!=null&&y.loading)?(u(),r("div",Ne,S(d(k)("No Data")),1)):g("",!0),(_=t.value[e.fieldname])!=null&&_.loading?(u(),r("div",De,S(d(k)("Loading")),1)):g("",!0)])])):g("",!0)],512)])):(u(),r("div",Se,[h(d(N),{value:s.value[e.fieldname],"onUpdate:value":[n=>s.value[e.fieldname]=n,w],placeholder:v(e),clearable:"",size:"small",onBlur:o,onKeyup:U(o,["enter"])},null,8,["value","onUpdate:value","placeholder"])]))],2)}),128)),f("div",Be,[H.value?(u(),r("button",{key:0,class:"action-btn clear-btn",onClick:ee,title:d(k)("清除所有过滤条件")},[...a[1]||(a[1]=[f("i",{class:"fa fa-times"},null,-1)])],8,Te)):g("",!0)])])])])):g("",!0)}});const Ee=pe(Ie,[["__scopeId","data-v-305db73a"]]);export{Ee as default}; diff --git a/apps/jingrow/frontend/dist/assets/Float-e9034d6f.css b/apps/jingrow/frontend/dist/assets/Float-e9034d6f.css new file mode 100644 index 0000000..bcaeb73 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Float-e9034d6f.css @@ -0,0 +1 @@ +.field-wrapper[data-v-72b5c9f6] .n-input-number{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Float-e9152ed7.js b/apps/jingrow/frontend/dist/assets/Float-e9152ed7.js new file mode 100644 index 0000000..eb5fbb3 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Float-e9152ed7.js @@ -0,0 +1 @@ +import{d as n,c,e as o,f as i,p,g as f,y as u,h as _,j as m,Y as b,l,ad as v}from"./index-d271a6a3.js";import{_ as y}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},N={key:0,class:"required"},h=n({__name:"Float",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(t){const d=t,s=c(()=>d.df.label_layout||"vertical");return(e,a)=>(l(),o("div",{class:b(["field-wrapper",`layout-${s.value}`])},[i("label",g,[p(f(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(l(),o("span",N,"*")):u("",!0)]),_(m(v),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=r=>e.record[e.df.fieldname]=r),precision:2,placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const B=y(h,[["__scopeId","data-v-72b5c9f6"]]),k=Object.freeze(Object.defineProperty({__proto__:null,default:B},Symbol.toStringTag,{value:"Module"}));export{k as _}; diff --git a/apps/jingrow/frontend/dist/assets/FlowBuilder-130b20cb.js b/apps/jingrow/frontend/dist/assets/FlowBuilder-130b20cb.js new file mode 100644 index 0000000..2b638de --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/FlowBuilder-130b20cb.js @@ -0,0 +1 @@ +import{d as y,u as h,c as g,o as B,e as _,f as i,g as u,j as a,h as F,w as A,D as S,k as I,v as k,t as s,l as d,p as x,n as D}from"./index-d271a6a3.js";import{u as N,F as V}from"./FlowBuilderContainer-f7b9aede.js";import{useFlowBuilderStore as C}from"./flowBuilder-75ade94d.js";import{_ as q}from"./_plugin-vue_export-helper-c27b6911.js";import"./iconify-242f8a3c.js";import"./AIAgentFlowBuilder-596ef83f.js";import"./vue-flow-core-1091fce6.js";import"./nodeMetadata-adf4e793.js";import"./NodePropertyModal-edd68bd5.js";import"./SchemaFormRenderer-15cfd619.js";import"./nodes-4a3329bf.js";import"./NodePalette-16ab1bc1.js";import"./ExecutionResults-0e4a1fda.js";import"./common-c89c6552.js";const M={class:"flow-builder-page"},P={key:0,class:"empty-state"},R={class:"empty-content"},T=y({__name:"FlowBuilder",setup(b){const f=I(),p=k(),l=h(),c=N(),t=C(),n=g(()=>t.getAgentId()||p.query.agentId),m=g(()=>n.value||t.hasFlowData());B(async()=>{const o=p.query.agentId;if(o&&!t.getAgentId())try{t.setAgentId(o),await c.fetchAgent(o);const e=c.currentAgent;if(e!=null&&e.agent_flow){let r=e.agent_flow;typeof r=="string"&&(r=JSON.parse(r)),t.setFlowData(r)}}catch(e){console.error("恢复智能体数据失败:",e)}});const w=async o=>{try{n.value?(await c.updateAgent(n.value,{agent_flow:o}),l.success(s("Agent flow saved successfully")),t.deactivateFlowBuilder()):(console.log("保存流程数据:",o),l.success(s("Flow saved successfully")))}catch(e){l.error(s("Save failed")+": "+((e==null?void 0:e.message)||""))}},v=()=>{f.push("/agents")};return(o,e)=>(d(),_("div",M,[m.value?(d(),S(V,{key:1,"initial-value":a(t).getFlowData(),"agent-id":n.value,onSave:w},null,8,["initial-value","agent-id"])):(d(),_("div",P,[i("div",R,[i("h3",null,u(a(s)("Flow Builder")),1),i("p",null,u(a(s)("Please enter from Agents page to open Flow Builder")),1),F(a(D),{type:"primary",onClick:v},{default:A(()=>[x(u(a(s)("View Agents")),1)]),_:1})])]))]))}});const Z=q(T,[["__scopeId","data-v-2089ffe8"]]);export{Z as default}; diff --git a/apps/jingrow/frontend/dist/assets/FlowBuilder-f76ecf89.css b/apps/jingrow/frontend/dist/assets/FlowBuilder-f76ecf89.css new file mode 100644 index 0000000..2be6ee9 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/FlowBuilder-f76ecf89.css @@ -0,0 +1 @@ +.flow-builder-page[data-v-2089ffe8]{width:100%;margin:0}.page-header[data-v-2089ffe8]{margin-bottom:24px}.page-title[data-v-2089ffe8]{font-size:28px;font-weight:700;color:#1f2937;margin:0 0 8px}.page-description[data-v-2089ffe8]{font-size:16px;color:#6b7280;margin:0}.flow-builder-container[data-v-2089ffe8]{height:600px;display:flex;align-items:center;justify-content:center}.empty-state[data-v-2089ffe8]{height:100vh;display:flex;align-items:center;justify-content:center;background:#f8fafc}.empty-content[data-v-2089ffe8]{text-align:center;padding:40px}.empty-content h3[data-v-2089ffe8]{margin:0 0 16px;font-size:24px;color:#1f2937}.empty-content p[data-v-2089ffe8]{margin:0 0 24px;font-size:16px;color:#6b7280} diff --git a/apps/jingrow/frontend/dist/assets/FlowBuilderContainer-41731e0c.css b/apps/jingrow/frontend/dist/assets/FlowBuilderContainer-41731e0c.css new file mode 100644 index 0000000..f236c97 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/FlowBuilderContainer-41731e0c.css @@ -0,0 +1 @@ +.flow-builder[data-v-c0f6c106]{height:88vh;display:flex;flex-direction:column}.flow-builder-header[data-v-c0f6c106]{display:flex;justify-content:space-between;align-items:center;padding:6px 16px;border-bottom:1px solid #e5e7eb;background:white;min-height:40px}.header-left .title[data-v-c0f6c106]{margin:0;font-size:18px;font-weight:600;color:#1f2937}.flow-builder-content[data-v-c0f6c106]{flex:1;overflow:hidden}.save-btn-brand[data-v-c0f6c106]{background:#e6f8f0!important;border:1px solid #1fc76f!important;color:#0d684b!important}.save-btn-brand[data-v-c0f6c106] .n-button__border,.save-btn-brand[data-v-c0f6c106] .n-button__state-border{border:none!important;border-color:transparent!important}.save-btn-brand[data-v-c0f6c106]:hover{background:#dcfce7!important;border-color:#1fc76f!important;border:1px solid #1fc76f!important;color:#166534!important;box-shadow:0 2px 8px #1fc76f26!important}.save-btn-brand[data-v-c0f6c106]:hover .n-button__border,.save-btn-brand[data-v-c0f6c106]:hover .n-button__state-border{border:none!important;border-color:transparent!important}.save-btn-brand[data-v-c0f6c106]:focus{background:#dcfce7!important;border-color:#1fc76f!important;border:1px solid #1fc76f!important;color:#166534!important;box-shadow:0 0 0 2px #1fc76f33!important}.save-btn-brand[data-v-c0f6c106]:focus .n-button__border,.save-btn-brand[data-v-c0f6c106]:focus .n-button__state-border{border:none!important;border-color:transparent!important}.save-btn-brand[data-v-c0f6c106]:active{background:#1fc76f!important;border-color:#1fc76f!important;border:1px solid #1fc76f!important;color:#fff!important;box-shadow:0 1px 4px #1fc76f33!important}.save-btn-brand[data-v-c0f6c106]:active .n-button__border,.save-btn-brand[data-v-c0f6c106]:active .n-button__state-border{border:none!important;border-color:transparent!important}.save-btn-brand[data-v-c0f6c106]:disabled{background:#f1f5f9!important;border:1px solid #e2e8f0!important;border-color:#e2e8f0!important;color:#94a3b8!important;opacity:.6!important;cursor:not-allowed!important}.save-btn-brand[data-v-c0f6c106]:disabled .n-button__border,.save-btn-brand[data-v-c0f6c106]:disabled .n-button__state-border{border:none!important;border-color:transparent!important} diff --git a/apps/jingrow/frontend/dist/assets/FlowBuilderContainer-f7b9aede.js b/apps/jingrow/frontend/dist/assets/FlowBuilderContainer-f7b9aede.js new file mode 100644 index 0000000..460b03e --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/FlowBuilderContainer-f7b9aede.js @@ -0,0 +1 @@ +import{ag as N,r as A,d as x,u as E,c as p,M as j,e as R,f as g,g as h,h as s,w as i,j as o,k as z,l as O,n as B,$ as I,p as F,t as l,I as M}from"./index-d271a6a3.js";import{I as b}from"./iconify-242f8a3c.js";import T from"./AIAgentFlowBuilder-596ef83f.js";import{useFlowBuilderStore as $}from"./flowBuilder-75ade94d.js";import{getRecord as L,updateRecord as P}from"./common-c89c6552.js";import{_ as q}from"./_plugin-vue_export-helper-c27b6911.js";const G=async e=>{try{const r=await L("Local Ai Agent",e);if(!r.success)throw new Error(r.message||"获取AI Agent详情失败");return r.data}catch(r){throw new Error(r.message||"获取AI Agent详情失败")}},H=async(e,r)=>{try{const t=await P("Local Ai Agent",e,r);if(!t.success)throw new Error(t.message||"更新AI Agent失败");return t.data}catch(t){throw console.error("Error in updateAgentApi:",t),new Error(t.message||"更新AI Agent失败")}},J=N("agent",()=>{const e=A(null);return{currentAgent:e,fetchAgent:async u=>{try{const n=await G(u);e.value=n}catch(n){throw console.error("获取AI Agent详情失败:",n),n}},updateAgent:async(u,n)=>{try{return await H(u,n),e.value&&e.value.name===u&&(e.value={...e.value,...n}),{success:!0}}catch(c){throw console.error("更新AI Agent失败:",c),c}}}}),K={class:"flow-builder"},Q={class:"flow-builder-header"},U={class:"header-left"},W={class:"title"},X={class:"header-right"},Y={class:"flow-builder-content"},Z=x({__name:"FlowBuilderContainer",props:{initialValue:{},agentId:{}},emits:["save"],setup(e,{emit:r}){const t=e,u=r,n=z(),c=E(),f=J(),w=$(),d=A(""),k=p(()=>{if(t.initialValue&&Object.keys(t.initialValue).length>0)return t.initialValue;const a=w.getFlowData();return a&&Object.keys(a).length>0?a:{}}),v=A(),_=p(()=>t.agentId||w.getAgentId()),S=p(()=>d.value?`${d.value}`:l("Flow Builder"));j(_,async a=>{var m,y;if(a)try{await f.fetchAgent(a),d.value=((m=f.currentAgent)==null?void 0:m.agent_name)||((y=f.currentAgent)==null?void 0:y.name)||""}catch(D){console.error("获取智能体信息失败:",D),d.value=""}else d.value=""},{immediate:!0});const C=async()=>{try{if(!v.value){c.error(l("Flow Builder is not initialized"));return}const a=v.value.getFlowData();_.value?(await f.updateAgent(_.value,{agent_flow:a}),c.success(l("Flow saved successfully"))):(u("save",a),c.success(l("Flow saved successfully")))}catch(a){c.error(l("Save failed")+": "+(a.message||l("An error occurred during save")))}},V=()=>{w.deactivateFlowBuilder(),n.back()};return(a,m)=>(O(),R("div",K,[g("div",Q,[g("div",U,[g("h2",W,h(S.value),1)]),g("div",X,[s(o(M),null,{default:i(()=>[s(o(B),{size:"small",onClick:V},{icon:i(()=>[s(o(I),null,{default:i(()=>[s(o(b),{icon:"tabler:arrow-left"})]),_:1})]),default:i(()=>[F(" "+h(o(l)("Back")),1)]),_:1}),s(o(B),{size:"small",type:"primary",onClick:C,class:"save-btn-brand"},{icon:i(()=>[s(o(I),null,{default:i(()=>[s(o(b),{icon:"tabler:check"})]),_:1})]),default:i(()=>[F(" "+h(o(l)("Save")),1)]),_:1})]),_:1})])]),g("div",Y,[s(T,{ref_key:"flowBuilderRef",ref:v,"initial-value":k.value,"agent-id":_.value},null,8,["initial-value","agent-id"])])]))}});const ee=q(Z,[["__scopeId","data-v-c0f6c106"]]),le=Object.freeze(Object.defineProperty({__proto__:null,default:ee},Symbol.toStringTag,{value:"Module"}));export{ee as F,le as a,J as u}; diff --git a/apps/jingrow/frontend/dist/assets/FormPanel-58c5df5f.css b/apps/jingrow/frontend/dist/assets/FormPanel-58c5df5f.css new file mode 100644 index 0000000..9da5792 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/FormPanel-58c5df5f.css @@ -0,0 +1 @@ +.sidebar-content[data-v-84fe9c98]{padding:32px}@media (max-width: 768px){.media-sidebar[data-v-84fe9c98]{position:fixed;top:80px;left:20px;right:20px;z-index:1000;max-height:50vh;width:auto}} diff --git a/apps/jingrow/frontend/dist/assets/FormPanel-c1a2a510.js b/apps/jingrow/frontend/dist/assets/FormPanel-c1a2a510.js new file mode 100644 index 0000000..f3c56cf --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/FormPanel-c1a2a510.js @@ -0,0 +1 @@ +import{d as o,e as s,f as t,aC as a,y as n,l}from"./index-d271a6a3.js";import{_ as r}from"./_plugin-vue_export-helper-c27b6911.js";const _={key:0,class:"media-sidebar"},c={class:"sidebar-content"},d=o({__name:"FormPanel",props:{position:{},collapsed:{type:Boolean},hasContent:{type:Boolean}},emits:["toggle-collapse"],setup(p){return(e,i)=>e.collapsed?n("",!0):(l(),s("div",_,[t("div",c,[a(e.$slots,"default",{},void 0,!0)])]))}});const u=r(d,[["__scopeId","data-v-84fe9c98"]]);export{u as default}; diff --git a/apps/jingrow/frontend/dist/assets/Geolocation-53613cdc.css b/apps/jingrow/frontend/dist/assets/Geolocation-53613cdc.css new file mode 100644 index 0000000..089f676 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Geolocation-53613cdc.css @@ -0,0 +1 @@ +.field-wrapper[data-v-ad896992] .n-input{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Geolocation-a5601209.js b/apps/jingrow/frontend/dist/assets/Geolocation-a5601209.js new file mode 100644 index 0000000..f887514 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Geolocation-a5601209.js @@ -0,0 +1 @@ +import{d as r,c as i,e as o,f as c,p,g as f,y as u,h as _,j as m,Y as b,l,m as v}from"./index-d271a6a3.js";import{_ as y}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},N={key:0,class:"required"},h=r({__name:"Geolocation",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(t){const d=t,s=i(()=>d.df.label_layout||"vertical");return(e,a)=>(l(),o("div",{class:b(["field-wrapper",`layout-${s.value}`])},[c("label",g,[p(f(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(l(),o("span",N,"*")):u("",!0)]),_(m(v),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=n=>e.record[e.df.fieldname]=n),placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const B=y(h,[["__scopeId","data-v-ad896992"]]),k=Object.freeze(Object.defineProperty({__proto__:null,default:B},Symbol.toStringTag,{value:"Module"}));export{k as _}; diff --git a/apps/jingrow/frontend/dist/assets/HTML-001056b5.css b/apps/jingrow/frontend/dist/assets/HTML-001056b5.css new file mode 100644 index 0000000..761699d --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/HTML-001056b5.css @@ -0,0 +1 @@ +.field-wrapper[data-v-f31e7adf] .html-content{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/HTML-11e652e4.js b/apps/jingrow/frontend/dist/assets/HTML-11e652e4.js new file mode 100644 index 0000000..24f9bd1 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/HTML-11e652e4.js @@ -0,0 +1 @@ +import{d as r,c as d,e as a,f as o,p as c,g as _,y as i,Y as f,l as t}from"./index-d271a6a3.js";import{_ as p}from"./_plugin-vue_export-helper-c27b6911.js";const u={class:"field-label"},m={key:0,class:"required"},y=["innerHTML"],b=r({__name:"HTML",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(s){const l=s,n=d(()=>l.df.label_layout||"vertical");return(e,T)=>(t(),a("div",{class:f(["field-wrapper",`layout-${n.value}`])},[o("label",u,[c(_(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(t(),a("span",m,"*")):i("",!0)]),o("div",{class:"html-content",innerHTML:e.record[e.df.fieldname]},null,8,y)],2))}});const v=p(b,[["__scopeId","data-v-f31e7adf"]]),M=Object.freeze(Object.defineProperty({__proto__:null,default:v},Symbol.toStringTag,{value:"Module"}));export{M as _}; diff --git a/apps/jingrow/frontend/dist/assets/HTML-1255acc8.js b/apps/jingrow/frontend/dist/assets/HTML-1255acc8.js new file mode 100644 index 0000000..4967026 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/HTML-1255acc8.js @@ -0,0 +1,26 @@ +import{d as y,c as b,r as x,M as d,e as l,f as p,p as T,g as L,y as $,Y as C,l as u}from"./index-d271a6a3.js";import{_ as E}from"./_plugin-vue_export-helper-c27b6911.js";const H={class:"field-label"},M={key:0,class:"required"},j=["innerHTML"],k=y({__name:"HTML",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(m,{expose:f}){const t=m,v=b(()=>t.df.label_layout||"vertical"),n=x(""),i=()=>{if(t.df.fieldname==="preview_html")return _();let e=t.df.options||"";e=t.ctx.t?t.ctx.t(e):e;try{return t.ctx.render?t.ctx.render(e,t):e}catch(o){return console.warn("HTML模板渲染失败:",o),e}},_=()=>{var c;const e=t.record,o=e.file_url,a=(c=e.file_type)==null?void 0:c.toLowerCase();return o?g(o)?`
+ +
`:w(o)?`
+ +
`:a==="pdf"?`
+ + + +
`:a==="mp3"?`
+ +
`:"":""},g=e=>/\.(gif|jpg|jpeg|tiff|png|webp|bmp|svg)$/i.test(e),w=e=>/\.(mp4|avi|mov|wmv|flv|webm|mkv)$/i.test(e),s=e=>{const o=document.createElement("div");return o.textContent=e,o.innerHTML},r=()=>{n.value=i()},h=e=>{e&&typeof e=="object"&&e.appendTo?(console.warn("jQuery对象在Vue中需要特殊处理"),t.df.options=e.toString()):t.df.options=e,r()};return d(()=>t.df.options,()=>{r()},{immediate:!0}),d(()=>t.record,()=>{r()},{deep:!0,immediate:!0}),f({setValue:h,refreshContent:r,getContent:i}),(e,o)=>(u(),l("div",{class:C(["field-wrapper",`layout-${v.value}`])},[p("label",H,[T(L(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(u(),l("span",M,"*")):$("",!0)]),p("div",{class:"html-content",innerHTML:n.value},null,8,j)],2))}});const B=E(k,[["__scopeId","data-v-de6666a8"]]);export{B as default}; diff --git a/apps/jingrow/frontend/dist/assets/HTML-97e0e518.css b/apps/jingrow/frontend/dist/assets/HTML-97e0e518.css new file mode 100644 index 0000000..47003e1 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/HTML-97e0e518.css @@ -0,0 +1 @@ +.field-wrapper[data-v-de6666a8] .html-content{flex:1}.field-wrapper[data-v-de6666a8] .img_preview{width:100%;text-align:center;margin:8px 0}.field-wrapper[data-v-de6666a8] .img_preview img{max-width:100%;height:auto}.field-wrapper[data-v-de6666a8] .img_preview video{max-width:100%;height:auto;border-radius:6px}.field-wrapper[data-v-de6666a8] .img_preview audio{width:100%;margin:8px 0}.field-wrapper[data-v-de6666a8] .img_preview object{border-radius:6px;box-shadow:0 2px 8px #0000001a} diff --git a/apps/jingrow/frontend/dist/assets/HTMLEditor-30b7305c.js b/apps/jingrow/frontend/dist/assets/HTMLEditor-30b7305c.js new file mode 100644 index 0000000..3b3218a --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/HTMLEditor-30b7305c.js @@ -0,0 +1 @@ +import{l as x}from"./index-2d2e8bf3.js";import{d as H,c as C,r as _,M as y,o as T,aU as V,e as i,f as d,p as c,g as u,y as D,D as S,w as m,j as v,Y as b,h as q,J as g,l as n,n as h}from"./index-d271a6a3.js";import{_ as N}from"./_plugin-vue_export-helper-c27b6911.js";const O={class:"field-label"},W={key:0,class:"required"},j={class:"html-editor"},P={class:"html-editor__toolbar"},$=["innerHTML"],I={class:"html-editor__actions"},U=H({__name:"HTMLEditor",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(L){const a=L,k=C(()=>a.df.label_layout||"vertical"),l=_(null);let f=null,e=null;const r=_(!1),s=_("preview"),E=C(()=>String(a.record[a.df.fieldname]||""));async function z(){if(!l.value||(f||(f=await x.init()),e))return;e=f.editor.create(l.value,{value:String(a.record[a.df.fieldname]||""),language:"html",automaticLayout:!0,folding:!0,minimap:{enabled:!1},readOnly:!a.canEdit,wordWrap:"on",wordWrapColumn:120,wrappingStrategy:"advanced",scrollBeyondLastLine:!1,scrollBeyondLastColumn:0,scrollbar:{horizontal:"hidden",vertical:"auto",horizontalScrollbarSize:6,verticalScrollbarSize:6,alwaysConsumeMouseWheel:!1}});const t=()=>{if(!e||!l.value)return;const o=e.getLayoutInfo(),p=e.getScrollHeight()>o.height+1,M=e.getScrollWidth()>o.width+1;l.value.classList.toggle("no-scroll-y",!p),l.value.classList.toggle("no-scroll-x",!M)};t(),e.onDidContentSizeChange(()=>t()),e.onDidScrollChange(()=>t()),e.onDidLayoutChange(()=>t()),e.onDidChangeModelContent(()=>{e&&(a.record[a.df.fieldname]=e.getValue(),t())})}function w(){try{e==null||e.dispose()}catch{}e=null}function B(){r.value=!r.value,g(()=>e==null?void 0:e.layout())}return y(()=>a.canEdit,t=>{e==null||e.updateOptions({readOnly:!t})}),y(()=>a.record[a.df.fieldname],t=>{e&&t!==e.getValue()&&e.setValue(String(t||""))}),T(async()=>{}),y(s,async t=>{t==="edit"?(await g(),await z(),g(()=>e==null?void 0:e.layout())):w()}),V(w),(t,o)=>(n(),i("div",{class:b(["field-wrapper",`layout-${k.value}`])},[d("label",O,[c(u(t.ctx.t(t.df.label||t.df.fieldname))+" ",1),t.df.reqd?(n(),i("span",W,"*")):D("",!0)]),d("div",j,[d("div",P,[s.value==="edit"?(n(),S(v(h),{key:0,size:"tiny",quaternary:"",type:"default",onClick:o[0]||(o[0]=p=>s.value="preview")},{default:m(()=>[c(u(t.ctx.t("Preview")),1)]),_:1})):(n(),S(v(h),{key:1,size:"tiny",quaternary:"",type:"default",onClick:o[1]||(o[1]=p=>s.value="edit")},{default:m(()=>[c(u(t.ctx.t("Edit")),1)]),_:1}))]),s.value==="preview"?(n(),i("div",{key:0,class:"html-editor__preview",innerHTML:E.value},null,8,$)):(n(),i("div",{key:1,ref_key:"editorHost",ref:l,class:b(["html-editor__monaco",{collapsed:!r.value}])},null,2)),d("div",I,[q(v(h),{size:"tiny",quaternary:"",onClick:B},{default:m(()=>[c(u(r.value?t.ctx.t("Collapse"):t.ctx.t("Expand")),1)]),_:1})])])],2))}});const J=N(U,[["__scopeId","data-v-4ffe6731"]]),G=Object.freeze(Object.defineProperty({__proto__:null,default:J},Symbol.toStringTag,{value:"Module"}));export{G as _}; diff --git a/apps/jingrow/frontend/dist/assets/HTMLEditor-da363245.css b/apps/jingrow/frontend/dist/assets/HTMLEditor-da363245.css new file mode 100644 index 0000000..a2dfb22 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/HTMLEditor-da363245.css @@ -0,0 +1 @@ +.html-editor[data-v-4ffe6731]{width:100%;display:grid;grid-template-rows:auto 1fr;gap:6px}.html-editor__toolbar[data-v-4ffe6731]{display:flex}.html-editor__preview[data-v-4ffe6731]{background:#ffffff;border:1px solid #e2e8f0;border-radius:6px;padding:12px}.html-editor__monaco[data-v-4ffe6731]{width:100%;height:500px;border:1px solid #e2e8f0;border-radius:6px}.html-editor__monaco.collapsed[data-v-4ffe6731]{height:500px}.html-editor__monaco[data-v-4ffe6731]:not(.collapsed){height:800px}[data-v-4ffe6731] .monaco-editor .minimap{display:none}[data-v-4ffe6731] .monaco-scrollable-element>.scrollbar{background:transparent!important;opacity:.6}[data-v-4ffe6731] .monaco-scrollable-element>.scrollbar:hover{opacity:.9}[data-v-4ffe6731] .monaco-scrollable-element>.scrollbar.vertical{width:6px!important}[data-v-4ffe6731] .monaco-scrollable-element>.scrollbar.vertical .slider{width:6px!important;background:#cbd5e1!important;border-radius:4px!important}[data-v-4ffe6731] .monaco-scrollable-element>.scrollbar.horizontal{height:6px!important}[data-v-4ffe6731] .monaco-scrollable-element>.scrollbar.horizontal .slider{height:6px!important;background:#cbd5e1!important;border-radius:4px!important}.no-scroll-y[data-v-4ffe6731] .monaco-scrollable-element>.scrollbar.vertical{display:none!important}.no-scroll-x[data-v-4ffe6731] .monaco-scrollable-element>.scrollbar.horizontal{display:none!important} diff --git a/apps/jingrow/frontend/dist/assets/Heading-386158fe.js b/apps/jingrow/frontend/dist/assets/Heading-386158fe.js new file mode 100644 index 0000000..88c0427 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Heading-386158fe.js @@ -0,0 +1 @@ +import{d as r,c,e as a,f as o,p as _,g as t,y as i,Y as p,l as s}from"./index-d271a6a3.js";import{_ as f}from"./_plugin-vue_export-helper-c27b6911.js";const u={class:"field-label"},m={key:0,class:"required"},y={class:"field-heading"},b=r({__name:"Heading",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(l){const d=l,n=c(()=>d.df.label_layout||"vertical");return(e,v)=>(s(),a("div",{class:p(["field-wrapper",`layout-${n.value}`])},[o("label",u,[_(t(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(s(),a("span",m,"*")):i("",!0)]),o("h3",y,t(e.ctx.t(e.df.label||e.df.fieldname)),1)],2))}});const g=f(b,[["__scopeId","data-v-3988dedc"]]),k=Object.freeze(Object.defineProperty({__proto__:null,default:g},Symbol.toStringTag,{value:"Module"}));export{k as _}; diff --git a/apps/jingrow/frontend/dist/assets/Heading-96be6be6.css b/apps/jingrow/frontend/dist/assets/Heading-96be6be6.css new file mode 100644 index 0000000..01544b6 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Heading-96be6be6.css @@ -0,0 +1 @@ +.field-wrapper[data-v-3988dedc] .field-heading{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Icon-175ab1a3.css b/apps/jingrow/frontend/dist/assets/Icon-175ab1a3.css new file mode 100644 index 0000000..a610e83 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Icon-175ab1a3.css @@ -0,0 +1 @@ +.field-wrapper[data-v-5f2b6189] .n-input{flex:1}.icon-field-content[data-v-5f2b6189]{display:flex;align-items:center;gap:12px;flex:1}.icon-display[data-v-5f2b6189]{display:flex;align-items:center;justify-content:center;min-width:36px;width:36px;height:36px;flex-shrink:0;border-radius:6px;transition:all .2s ease}.icon-display.clickable[data-v-5f2b6189]{cursor:pointer;background-color:#f9fafb;border:1px solid #e5e7eb}.icon-display.clickable[data-v-5f2b6189]:hover{background-color:#f3f4f6;border-color:#d1d5db;transform:scale(1.05)}.icon-display.clickable[data-v-5f2b6189]:active{transform:scale(.98)}.icon-gray[data-v-5f2b6189]{color:#9ca3af}.icon-placeholder[data-v-5f2b6189]{color:#9ca3af;font-size:14px}.icon-value-display[data-v-5f2b6189]{flex:1;min-width:0}.field-value-text[data-v-5f2b6189]{color:#111827;font-size:14px;min-height:32px;display:flex;align-items:center}.icon-input[data-v-5f2b6189]{flex:1;min-width:0}.icon-preview[data-v-5f2b6189]{transition:all .2s ease}.icon-placeholder-icon[data-v-5f2b6189]{opacity:.5} diff --git a/apps/jingrow/frontend/dist/assets/Icon-920b687f.js b/apps/jingrow/frontend/dist/assets/Icon-920b687f.js new file mode 100644 index 0000000..749f363 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Icon-920b687f.js @@ -0,0 +1 @@ +import{I as d}from"./iconify-242f8a3c.js";import k from"./IconPicker-661ac603.js";import{d as h,c as p,r as b,e as a,f as r,p as g,g as _,y as f,D as t,j as s,Y as I,l as o,m as E}from"./index-d271a6a3.js";import{_ as w}from"./_plugin-vue_export-helper-c27b6911.js";const B={class:"field-label"},C={key:0,class:"required"},P={class:"icon-field-content"},V=["title"],N={key:1,class:"icon-display"},j={key:1,class:"icon-placeholder"},S={class:"icon-value-display"},q={key:0,class:"field-value-text"},z=h({__name:"Icon",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(v){const n=v,y=p(()=>n.df.label_layout||"vertical"),l=p({get:()=>n.record[n.df.fieldname]||"",set:e=>{n.record[n.df.fieldname]=e}}),u=b(null);function m(){var e;(e=u.value)==null||e.open()}return(e,c)=>(o(),a("div",{class:I(["field-wrapper",`layout-${y.value}`])},[r("label",B,[g(_(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(o(),a("span",C,"*")):f("",!0)]),r("div",P,[e.canEdit?(o(),a("div",{key:0,class:"icon-display clickable",onClick:m,title:e.ctx.t("Click to select icon")},[l.value?(o(),t(s(d),{key:0,icon:l.value,width:24,height:24,class:"icon-gray icon-preview"},null,8,["icon"])):(o(),t(s(d),{key:1,icon:"tabler:apps",width:24,height:24,class:"icon-gray icon-placeholder-icon"}))],8,V)):(o(),a("div",N,[l.value?(o(),t(s(d),{key:0,icon:l.value,width:24,height:24,class:"icon-gray"},null,8,["icon"])):(o(),a("span",j,"—"))])),r("div",S,[e.canEdit?(o(),t(s(E),{key:1,value:l.value,"onUpdate:value":c[0]||(c[0]=i=>l.value=i),placeholder:e.ctx.t("Enter icon name or click icon to select"),class:"icon-input",clearable:""},null,8,["value","placeholder"])):(o(),a("span",q,_(l.value||"—"),1))])]),e.canEdit?(o(),t(k,{key:0,ref_key:"iconPickerRef",ref:u,"model-value":l.value,"onUpdate:modelValue":c[1]||(c[1]=i=>l.value=i),style:{display:"none"}},null,8,["model-value"])):f("",!0)],2))}});const D=w(z,[["__scopeId","data-v-5f2b6189"]]),$=Object.freeze(Object.defineProperty({__proto__:null,default:D},Symbol.toStringTag,{value:"Module"}));export{$ as _}; diff --git a/apps/jingrow/frontend/dist/assets/IconPicker-1d3392a9.css b/apps/jingrow/frontend/dist/assets/IconPicker-1d3392a9.css new file mode 100644 index 0000000..3757aae --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/IconPicker-1d3392a9.css @@ -0,0 +1 @@ +.icon-picker[data-v-4c234e6a]{width:100%}.icon-trigger[data-v-4c234e6a]{width:100%;display:flex;align-items:center;justify-content:flex-start}.icon-picker-content[data-v-4c234e6a]{height:100%;display:flex;flex-direction:column;overflow:hidden}.drawer-footer[data-v-4c234e6a]{display:flex;justify-content:flex-end;gap:12px;padding-top:16px}.search-section[data-v-4c234e6a]{margin-bottom:20px;display:flex;flex-direction:column;gap:12px;flex-shrink:0}.search-controls[data-v-4c234e6a]{display:flex;align-items:center;gap:12px}.icon-count[data-v-4c234e6a]{font-size:14px;color:#666;white-space:nowrap}.loading-text[data-v-4c234e6a]{color:#18a058;margin-left:8px}.icon-grid[data-v-4c234e6a]{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:15px;padding:10px}.icon-item[data-v-4c234e6a]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px 12px;border:1px solid #eee;border-radius:8px;cursor:pointer;transition:all .2s ease;text-align:center;background-color:#fff;height:100px;min-height:100px;position:relative}.icon-item[data-v-4c234e6a]:hover{border-color:#18a058;box-shadow:0 2px 8px #18a0581a;transform:translateY(-2px)}.icon-item.active[data-v-4c234e6a]{border-color:#18a058;background-color:#e6f7ed;box-shadow:0 0 0 2px #18a05833}.icon-wrapper[data-v-4c234e6a]{margin-bottom:8px;color:#333;flex-shrink:0}.icon-wrapper svg[data-v-4c234e6a]{width:32px!important;height:32px!important}.icon-name[data-v-4c234e6a]{font-size:12px;color:#666;word-break:break-all;line-height:1.2;max-height:2.4em;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}.copy-button[data-v-4c234e6a]{position:absolute;top:4px;right:4px;padding:2px 6px;font-size:11px;font-weight:500;background:rgba(255,255,255,.95);border:1px solid #ddd;border-radius:3px;cursor:pointer;opacity:0;transition:all .2s ease;z-index:10}.copy-button[data-v-4c234e6a]:hover{background:#18a058;border-color:#18a058;color:#fff;opacity:1!important}.icon-item:hover .copy-button[data-v-4c234e6a]{opacity:.8}.load-more[data-v-4c234e6a],.loading-more[data-v-4c234e6a]{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;border:2px dashed #ddd;border-radius:8px;cursor:pointer;transition:all .2s ease;background-color:#fafafa}.load-more[data-v-4c234e6a]:hover{border-color:#18a058;background-color:#f0f9f4}.load-more span[data-v-4c234e6a],.loading-more span[data-v-4c234e6a]{margin-top:8px;font-size:14px;color:#666}.loading-more[data-v-4c234e6a]{cursor:default;border-style:solid}.spinning[data-v-4c234e6a]{animation:spin-4c234e6a 1s linear infinite}@keyframes spin-4c234e6a{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (min-width: 768px){.icon-grid[data-v-4c234e6a]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.icon-item[data-v-4c234e6a]{height:110px;min-height:110px}.icon-name[data-v-4c234e6a]{font-size:14px}}@media (min-width: 1200px){.icon-grid[data-v-4c234e6a]{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.icon-item[data-v-4c234e6a]{height:120px;min-height:120px}} diff --git a/apps/jingrow/frontend/dist/assets/IconPicker-661ac603.js b/apps/jingrow/frontend/dist/assets/IconPicker-661ac603.js new file mode 100644 index 0000000..4968537 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/IconPicker-661ac603.js @@ -0,0 +1 @@ +import{d as fe,u as me,r as d,c as S,M as q,e as y,h as c,w as b,j as a,l as g,F as E,p as j,g as r,t,n as P,a$ as he,f as u,m as ve,Z as ye,y as z,C as ge,Y as xe,L as Ie,b0 as be,J as Ne}from"./index-d271a6a3.js";import{I as w}from"./iconify-242f8a3c.js";import{u as Ue}from"./index-362e01cb.js";import{_ as ke}from"./_plugin-vue_export-helper-c27b6911.js";const Z={all:{name:"all",prefix:"all",displayName:"All Icons",description:"显示所有图标库的图标,支持全局搜索",apiUrl:"https://api.iconify.design/collections"},tabler:{name:"tabler",prefix:"tabler",displayName:"Tabler Icons",description:"现代、简洁的SVG图标库 (5,963个图标)",apiUrl:"https://api.iconify.design/collection?prefix=tabler"},heroicons:{name:"heroicons",prefix:"heroicons",displayName:"Heroicons",description:"由Tailwind CSS团队制作的精美图标 (1,288个图标)",apiUrl:"https://api.iconify.design/collection?prefix=heroicons"},lucide:{name:"lucide",prefix:"lucide",displayName:"Lucide",description:"Feather图标的社区延续",apiUrl:"https://api.iconify.design/collection?prefix=lucide"},material:{name:"material",prefix:"material-symbols",displayName:"Material Symbols",description:"Google Material Design图标",apiUrl:"https://api.iconify.design/collection?prefix=material-symbols"},carbon:{name:"carbon",prefix:"carbon",displayName:"Carbon Icons",description:"IBM Carbon Design System图标 (2,392个图标)",apiUrl:"https://api.iconify.design/collection?prefix=carbon"},feather:{name:"feather",prefix:"feather",displayName:"Feather Icons",description:"简洁美观的线性图标 (286个图标)",apiUrl:"https://api.iconify.design/collection?prefix=feather"},fluent:{name:"fluent",prefix:"fluent",displayName:"Fluent UI System Icons",description:"Microsoft官方风格,企业级项目首选 (18,519个图标)",apiUrl:"https://api.iconify.design/collection?prefix=fluent"},phosphor:{name:"phosphor",prefix:"ph",displayName:"Phosphor",description:"多风格可选,设计现代 (9,072个图标)",apiUrl:"https://api.iconify.design/collection?prefix=ph"},hugeicons:{name:"hugeicons",prefix:"hugeicons",displayName:"Huge Icons",description:"图标数量大,种类丰富 (4,556个图标)",apiUrl:"https://api.iconify.design/collection?prefix=hugeicons"},"fluent-emoji-flat":{name:"fluent-emoji-flat",prefix:"fluent-emoji-flat",displayName:"Fluent Emoji Flat",description:"Emoji图标集,平面风格 (3,145个图标)",apiUrl:"https://api.iconify.design/collection?prefix=fluent-emoji-flat"},mynaui:{name:"mynaui",prefix:"mynaui",displayName:"Myna UI Icons",description:"UI设计友好,企业级项目 (2,544个图标)",apiUrl:"https://api.iconify.design/collection?prefix=mynaui"},tdesign:{name:"tdesign",prefix:"tdesign",displayName:"TDesign Icons",description:"腾讯设计团队,企业级项目首选 (2,130个图标)",apiUrl:"https://api.iconify.design/collection?prefix=tdesign"},"token-branded":{name:"token-branded",prefix:"token-branded",displayName:"Web3 Icons Branded",description:"Web3相关品牌图标,区块链项目 (2,000个图标)",apiUrl:"https://api.iconify.design/collection?prefix=token-branded"},token:{name:"token",prefix:"token",displayName:"Web3 Icons",description:"Web3主题图标,适合加密/区块链界面 (1,746个图标)",apiUrl:"https://api.iconify.design/collection?prefix=token"},"fluent-emoji-high-contrast":{name:"fluent-emoji-high-contrast",prefix:"fluent-emoji-high-contrast",displayName:"Fluent Emoji High Contrast",description:"高对比度Emoji,适合无障碍设计 (1,595个图标)",apiUrl:"https://api.iconify.design/collection?prefix=fluent-emoji-high-contrast"},iconoir:{name:"iconoir",prefix:"iconoir",displayName:"Iconoir",description:"风格现代、简洁,适合Web和移动端 (1,671个图标)",apiUrl:"https://api.iconify.design/collection?prefix=iconoir"},ion:{name:"ion",prefix:"ion",displayName:"IonIcons",description:"Ionic团队,移动端和Web项目通用 (1,357个图标)",apiUrl:"https://api.iconify.design/collection?prefix=ion"},"vscode-icons":{name:"vscode-icons",prefix:"vscode-icons",displayName:"VSCode Icons",description:"编程相关图标,适合开发工具 (1,397个图标)",apiUrl:"https://api.iconify.design/collection?prefix=vscode-icons"},"siemens-industrial":{name:"siemens-industrial",prefix:"ix",displayName:"Siemens Industrial Icons",description:"工业风格图标,适合工业/硬件UI (1,407个图标)",apiUrl:"https://api.iconify.design/collection?prefix=ix"},framework7:{name:"framework7",prefix:"f7",displayName:"Framework7 Icons",description:"移动端Web项目图标,兼容性好 (1,253个图标)",apiUrl:"https://api.iconify.design/collection?prefix=f7"},teenyicons:{name:"teenyicons",prefix:"teenyicons",displayName:"Teenyicons",description:"极小图标集,适合微小界面元素 (1,200个图标)",apiUrl:"https://api.iconify.design/collection?prefix=teenyicons"},dinkie:{name:"dinkie",prefix:"dinkie-icons",displayName:"Dinkie Icons",description:"小型图标集,设计简洁 (1,198个图标)",apiUrl:"https://api.iconify.design/collection?prefix=dinkie-icons"},"material-icon-theme":{name:"material-icon-theme",prefix:"material-icon-theme",displayName:"Material Icon Theme",description:"Material Design官方图标,UI项目首选 (1,106个图标)",apiUrl:"https://api.iconify.design/collection?prefix=material-icon-theme"},clarity:{name:"clarity",prefix:"clarity",displayName:"Clarity",description:"VMware提供,企业级UI项目 (1,103个图标)",apiUrl:"https://api.iconify.design/collection?prefix=clarity"},devicon:{name:"devicon",prefix:"devicon",displayName:"Devicon",description:"编程和开发工具图标,适合技术相关页面 (957个图标)",apiUrl:"https://api.iconify.design/collection?prefix=devicon"},jam:{name:"jam",prefix:"jam",displayName:"Jam Icons",description:"UI设计友好,风格多样 (940个图标)",apiUrl:"https://api.iconify.design/collection?prefix=jam"},"devicon-plain":{name:"devicon-plain",prefix:"devicon-plain",displayName:"Devicon Plain",description:"Devicon的简化版,更轻量 (700个图标)",apiUrl:"https://api.iconify.design/collection?prefix=devicon-plain"},gg:{name:"gg",prefix:"gg",displayName:"css.gg",description:"小而美的UI图标,设计现代 (704个图标)",apiUrl:"https://api.iconify.design/collection?prefix=gg"},lineicons:{name:"lineicons",prefix:"lineicons",displayName:"Lineicons",description:"流行线性图标集,UI项目适用 (606个图标)",apiUrl:"https://api.iconify.design/collection?prefix=lineicons"},fontisto:{name:"fontisto",prefix:"fontisto",displayName:"Fontisto",description:"社交媒体和常用图标集合 (615个图标)",apiUrl:"https://api.iconify.design/collection?prefix=fontisto"},healthicons:{name:"healthicons",prefix:"healthicons",displayName:"Health Icons",description:"医疗和健康相关图标,专业项目 (2,024个图标)",apiUrl:"https://api.iconify.design/collection?prefix=healthicons"},stash:{name:"stash",prefix:"stash",displayName:"Stash Icons",description:"通用UI图标集,适合快速集成 (982个图标)",apiUrl:"https://api.iconify.design/collection?prefix=stash"},si:{name:"si",prefix:"si",displayName:"Sargam Icons",description:"多用途图标集,风格现代 (1,227个图标)",apiUrl:"https://api.iconify.design/collection?prefix=si"},"ant-design":{name:"ant-design",prefix:"ant-design",displayName:"Ant Design Icons",description:"Ant Design官方图标,企业级UI项目 (830个图标)",apiUrl:"https://api.iconify.design/collection?prefix=ant-design"}};function W(N){return Z[N]||null}function Q(){const N=Object.values(Z),$=N.find(f=>f.name==="all"),C=N.filter(f=>f.name!=="all");return C.sort((f,D)=>f.displayName.localeCompare(D.displayName)),$?[$,...C]:C}const B="all",_e={class:"icon-picker"},we={class:"icon-picker-content"},Ce={class:"search-section"},Le={class:"search-controls"},Se={class:"icon-count"},je={key:0,class:"loading-text"},$e=["onClick","title"],Fe=["onClick","title"],De={class:"icon-wrapper"},Me={class:"icon-name"},Ae={key:1,class:"loading-more"},Te={class:"drawer-footer"},Ve=fe({__name:"IconPicker",props:{modelValue:{},iconLibrary:{default:B}},emits:["update:modelValue"],setup(N,{expose:$,emit:C}){const f=N,D=C,K=me(),U=d(!1),h=d(""),l=d(f.modelValue||""),p=d(""),m=d([]),k=d(f.iconLibrary||B),x=d(!1),I=d(1),X=d(200),F=d(!0),H=d(null),o=S(()=>W(k.value)||W(B)),ee=S(()=>Q().map(e=>({label:e.displayName,value:e.name,description:e.description}))),M=S(()=>{if(!h.value)return m.value;const e=h.value.toLowerCase();return m.value.filter(n=>n.toLowerCase().includes(e))}),O=S(()=>{const e=M.value,n=0,i=I.value*X.value;return e.slice(n,i)}),A=S(()=>O.value.length{Array.isArray(s)&&v.push(...s)}),m.value=v.sort()}else m.value=T(e.prefix);I.value=1,F.value=!0}}catch(e){console.warn(`Failed to load icons from ${o.value.displayName} API, using fallback list:`,e),m.value=T(o.value.prefix),I.value=1,F.value=!0}finally{x.value=!1}}async function ie(){try{const n=Q().filter(s=>s.name!=="all").map(async s=>{try{const _=await(await fetch(s.apiUrl)).json();let V=[];return _&&_.uncategorized?V=_.uncategorized:_&&_.categories&&Object.values(_.categories).forEach(L=>{Array.isArray(L)&&V.push(...L)}),V.map(L=>({name:L,library:s.prefix,fullName:`${s.prefix}:${L}`}))}catch(Y){return console.warn(`Failed to load icons from ${s.displayName}:`,Y),[]}}),v=(await Promise.all(n)).flat();m.value=v.map(s=>s.fullName).sort(),I.value=1,F.value=!0}catch(e){console.error("Failed to load all icons:",e),m.value=T(),I.value=1,F.value=!0}}function G(){A.value&&!x.value&&I.value++}function T(e){return["home","settings","user","menu","search","file","folder","dashboard","users","lock","key","shield","crown","trophy","gift","heart","star","download","upload","printer","file-text","chart-bar","chart-pie","chart-line","table","database","cloud","api","tool","bug","code","flask","bulb","camera","photo","video","music","volume","arrow-up","arrow-down","arrow-left","arrow-right","edit","trash","plus","minus","check","x","mail","phone","message","bell","shopping-cart","currency-dollar","credit-card","book","school","info-circle","alert-circle","robot","clock","calendar","map","globe","wifi","bluetooth","battery"].sort()}function ae(e){p.value=e}async function J(){if(U.value=!0,l.value&&l.value.includes(":")){const[e,n]=l.value.split(":"),i=W(e);i?(k.value=i.name,p.value=n,h.value=n):(o.value.name!=="all"&&(k.value="all"),p.value=l.value,h.value=l.value)}else l.value?(p.value=l.value,h.value=l.value):(p.value="",h.value="")}function ne(){let e;o.value.name==="all"?e=p.value:e=`${o.value.prefix}:${p.value}`,l.value=e,D("update:modelValue",e),U.value=!1}function oe(){p.value="",U.value=!1}function le(e){const n=e.target,{scrollTop:i,scrollHeight:v,clientHeight:s}=n;v-i-s<100&&A.value&&!x.value&&G()}const te=Ue(()=>{I.value=1},300);function se(){te()}async function ce(e){k.value=e,await R(),p.value=""}function re(e){return e&&e.includes(":")?e.split(":")[1]:e}function pe(e){console.warn("Icon failed to load:",e)}async function de(e){const n=o.value.name==="all"?e:`${o.value.prefix}:${e}`;await navigator.clipboard.writeText(n),K.success(`${t("Icon name copied to clipboard")}: ${n}`)}q(()=>f.modelValue,e=>{e!==l.value&&(l.value=e||"")},{immediate:!0}),q(U,async e=>{e&&(m.value.length===0&&await R(),await Ne(),setTimeout(()=>{var n;(n=H.value)==null||n.focus()},150))});function ue(){J()}return $({open:ue}),(e,n)=>(g(),y("div",_e,[c(a(P),{onClick:J,type:l.value?"default":"dashed",class:"icon-trigger",block:""},{default:b(()=>[l.value?(g(),y(E,{key:0},[c(a(w),{icon:l.value,width:20,height:20,style:{"margin-right":"8px"}},null,8,["icon"]),j(" "+r(re(l.value)),1)],64)):(g(),y(E,{key:1},[c(a(w),{icon:`${o.value.prefix}:menu`,width:20,height:20,style:{"margin-right":"8px"}},null,8,["icon"]),j(" "+r(a(t)("Select Icon")),1)],64))]),_:1},8,["type"]),c(a(be),{show:U.value,"onUpdate:show":n[2]||(n[2]=i=>U.value=i),width:900,placement:"right","trap-focus":!0,"close-on-esc":!0},{default:b(()=>[c(a(he),{title:a(t)("Select Icon"),closable:!0},{default:b(()=>[u("div",we,[u("div",Ce,[u("div",Le,[c(a(ve),{ref_key:"searchInputRef",ref:H,value:h.value,"onUpdate:value":[n[0]||(n[0]=i=>h.value=i),se],placeholder:a(t)("Search icon name..."),clearable:"",size:"large",style:{flex:"1"}},{prefix:b(()=>[c(a(w),{icon:`${o.value.prefix}:search`},null,8,["icon"])]),_:1},8,["value","placeholder"]),c(a(ye),{value:k.value,"onUpdate:value":[n[1]||(n[1]=i=>k.value=i),ce],options:ee.value,placeholder:a(t)("Icon Library"),size:"large",style:{width:"200px","margin-left":"12px"}},null,8,["value","options","placeholder"])]),u("div",Se,[j(r(a(t)("Total"))+" "+r(M.value.length)+" "+r(a(t)("icons"))+" ("+r(o.value.displayName)+") ",1),x.value?(g(),y("span",je,r(a(t)("Loading...")),1)):z("",!0)])]),u("div",{class:"icon-grid",onScroll:le},[(g(!0),y(E,null,ge(O.value,i=>(g(),y("div",{key:i,class:xe(["icon-item",{active:p.value===i}]),onClick:v=>ae(i),title:i},[u("button",{class:"copy-button",onClick:Ie(v=>de(i),["stop"]),title:a(t)("Copy icon name")},r(a(t)("Copy")),9,Fe),u("div",De,[c(a(w),{icon:o.value.name==="all"?i:`${o.value.prefix}:${i}`,width:32,height:32,onError:pe},null,8,["icon"])]),u("div",Me,r(o.value.name==="all"&&i.split(":")[1]||i),1)],10,$e))),128)),A.value&&!x.value?(g(),y("div",{key:0,class:"load-more",onClick:G},[c(a(w),{icon:`${o.value.prefix}:plus`,width:24,height:24},null,8,["icon"]),u("span",null,r(a(t)("Load More")),1)])):z("",!0),x.value?(g(),y("div",Ae,[c(a(w),{icon:`${o.value.prefix}:loader`,width:24,height:24,class:"spinning"},null,8,["icon"]),u("span",null,r(a(t)("Loading...")),1)])):z("",!0)],32)])]),footer:b(()=>[u("div",Te,[c(a(P),{onClick:oe},{default:b(()=>[j(r(a(t)("Cancel")),1)]),_:1}),c(a(P),{type:"primary",onClick:ne,disabled:!p.value},{default:b(()=>[j(r(a(t)("Confirm")),1)]),_:1},8,["disabled"])])]),_:1},8,["title"])]),_:1},8,["show"])]))}});const Be=ke(Ve,[["__scopeId","data-v-4c234e6a"]]);export{Be as default}; diff --git a/apps/jingrow/frontend/dist/assets/Image-99476d84.css b/apps/jingrow/frontend/dist/assets/Image-99476d84.css new file mode 100644 index 0000000..97180e9 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Image-99476d84.css @@ -0,0 +1 @@ +.form-field[data-v-921bd1a3]{display:flex;flex-direction:column;gap:8px}.field-content[data-v-921bd1a3]{min-height:32px;display:flex;align-items:flex-start;flex-direction:column;width:100%}.image-container[data-v-921bd1a3]{margin:0}.image-body[data-v-921bd1a3]{margin-bottom:10px}.img-responsive[data-v-921bd1a3]{max-width:100%;height:auto;display:block}.image-error[data-v-921bd1a3]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;color:#dc3545;border:2px dashed #dc3545;border-radius:8px;background-color:#f8d7da}.error-text[data-v-921bd1a3]{margin-top:8px;font-size:14px;font-weight:500}.error-url[data-v-921bd1a3]{margin-top:4px;font-size:12px;color:#6c757d;word-break:break-all;text-align:center;max-width:100%}.icon[data-v-921bd1a3]{width:1em;height:1em;fill:currentColor}.icon-md[data-v-921bd1a3]{font-size:1.5rem}.clearfix[data-v-921bd1a3]:after{content:"";display:table;clear:both} diff --git a/apps/jingrow/frontend/dist/assets/Image-ce5f4a8b.js b/apps/jingrow/frontend/dist/assets/Image-ce5f4a8b.js new file mode 100644 index 0000000..0459f10 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Image-ce5f4a8b.js @@ -0,0 +1 @@ +import{d as v,r as p,c as n,o as f,e as l,f as t,g as y,y as c,l as i}from"./index-d271a6a3.js";import{_ as I}from"./_plugin-vue_export-helper-c27b6911.js";const b={key:0,class:"form-field"},h={class:"field-content"},x={class:"image-container"},k={class:"image-body",style:{"margin-bottom":"10px"}},B=["src"],E={key:1,class:"image-error"},L={class:"error-url"},S=v({__name:"Image",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(u){const r=u,s=p(!1),a=n(()=>{const e=r.record;return e&&r.df.options&&e[r.df.options]?e[r.df.options]:""}),d=n(()=>{const e=a.value;return!!(e&&e.trim())}),_=n(()=>d.value||s.value);f(()=>{});function m(e){const o=e.target;s.value=!0,console.error("[Image] Failed to load image:",o.src)}function g(){s.value=!1}return(e,o)=>_.value?(i(),l("div",b,[t("div",h,[t("div",x,[t("div",k,[d.value&&!s.value?(i(),l("img",{key:0,src:a.value,class:"img-responsive",alt:"Image",onError:m,onLoad:g},null,40,B)):s.value?(i(),l("div",E,[o[0]||(o[0]=t("svg",{class:"icon icon-md","aria-hidden":"true"},[t("use",{href:"#icon-restriction"})],-1)),o[1]||(o[1]=t("div",{class:"error-text"},"图片加载失败",-1)),t("div",L,y(a.value),1)])):c("",!0)]),o[2]||(o[2]=t("div",{class:"clearfix"},null,-1))])])])):c("",!0)}});const j=I(S,[["__scopeId","data-v-921bd1a3"]]),N=Object.freeze(Object.defineProperty({__proto__:null,default:j},Symbol.toStringTag,{value:"Module"}));export{N as _}; diff --git a/apps/jingrow/frontend/dist/assets/ImageGallery-57bbaf56.js b/apps/jingrow/frontend/dist/assets/ImageGallery-57bbaf56.js new file mode 100644 index 0000000..4c359b6 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/ImageGallery-57bbaf56.js @@ -0,0 +1 @@ +import{d as K,r as f,c as U,M as j,o as O,K as P,D as $,e as d,f as g,h as p,j as k,L,y as m,g as x,aN as q,l as i}from"./index-d271a6a3.js";import{I as _}from"./iconify-242f8a3c.js";import{_ as z}from"./_plugin-vue_export-helper-c27b6911.js";const F={class:"image-wrapper"},H=["src","alt"],J={key:0,class:"image-index"},Q=K({__name:"ImageGallery",props:{images:{},initialIndex:{}},emits:["close"],setup(E,{expose:M,emit:T}){const n=E,B=T,s=f(!1),t=f(0),r=f(!1),X=U(()=>n.images[t.value]||""),N=(e=0)=>{t.value=Math.max(0,Math.min(e,n.images.length-1)),s.value=!0,r.value=!1},o=()=>{s.value=!1,B("close")},c=()=>{n.images.length<=1||(t.value=t.value>0?t.value-1:n.images.length-1,r.value=!1)},l=()=>{n.images.length<=1||(t.value=t.value{e.target===e.currentTarget&&o()},G=e=>{const a=e.target;if(!(a.tagName==="BUTTON"||a.closest("button"))&&!(a.classList.contains("image-index")||a.closest(".image-index"))){if(a.classList.contains("gallery-image")){const u=a.getBoundingClientRect(),v=e.clientX-u.left,D=u.width;v{e.stopPropagation();const h=e.currentTarget.getBoundingClientRect(),u=e.clientX-h.left,v=h.width;u{r.value=!0},y=e=>{if(s.value)switch(e.key){case"Escape":o();break;case"ArrowLeft":c();break;case"ArrowRight":l();break}};let b=0,C=0;const w=e=>{e.touches.length===1&&(b=e.touches[0].clientX)},I=e=>{e.changedTouches.length===1&&(C=e.changedTouches[0].clientX,A())},A=()=>{const e=C-b,a=50;Math.abs(e)>a&&(e<0?l():c())};return j(()=>n.initialIndex,e=>{e!==void 0&&s.value&&(t.value=Math.max(0,Math.min(e,n.images.length-1)))}),O(()=>{document.addEventListener("keydown",y),document.addEventListener("touchstart",w,{passive:!0}),document.addEventListener("touchend",I,{passive:!0})}),P(()=>{document.removeEventListener("keydown",y),document.removeEventListener("touchstart",w),document.removeEventListener("touchend",I)}),M({open:N,close:o}),(e,a)=>(i(),$(q,{to:"body"},[s.value?(i(),d("div",{key:0,class:"image-gallery-modal",onClick:S},[g("div",{class:"image-gallery-container",onClick:G},[g("button",{class:"close-btn",onClick:o},[p(k(_),{icon:"tabler:x"})]),g("div",F,[g("img",{src:X.value,alt:`图片 ${t.value+1}`,class:"gallery-image",onLoad:V,onClick:R},null,40,H),e.images.length>1?(i(),d("button",{key:0,class:"nav-btn nav-left",onClick:L(c,["stop"])},[p(k(_),{icon:"tabler:chevron-left"})])):m("",!0),e.images.length>1?(i(),d("button",{key:1,class:"nav-btn nav-right",onClick:L(l,["stop"])},[p(k(_),{icon:"tabler:chevron-right"})])):m("",!0)]),e.images.length>1?(i(),d("div",J,x(t.value+1)+" / "+x(e.images.length),1)):m("",!0)])])):m("",!0)]))}});const ee=z(Q,[["__scopeId","data-v-5cebea08"]]);export{ee as default}; diff --git a/apps/jingrow/frontend/dist/assets/ImageGallery-b6915eb9.css b/apps/jingrow/frontend/dist/assets/ImageGallery-b6915eb9.css new file mode 100644 index 0000000..e9ed9bc --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/ImageGallery-b6915eb9.css @@ -0,0 +1 @@ +.image-gallery-modal[data-v-5cebea08]{position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;z-index:10000;-webkit-user-select:none;user-select:none;overflow:auto;transition:background .2s ease}.image-gallery-container[data-v-5cebea08]{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100vw;height:100vh;max-width:100vw;max-height:100vh}.image-wrapper[data-v-5cebea08]{position:relative;display:inline-block;max-width:90vw;max-height:80vh;cursor:pointer}.gallery-image[data-v-5cebea08]{max-width:100%;max-height:100%;border:5px solid #fff;border-radius:10px;box-shadow:0 2px 4px #0000001a;transition:opacity .2s ease;opacity:1;background:#fff;object-fit:contain;display:block}.close-btn[data-v-5cebea08]{position:absolute;top:20px;right:20px;width:40px;height:40px;background:rgba(0,0,0,.5);border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;z-index:10001;font-size:20px}.close-btn[data-v-5cebea08]:hover{background:rgba(0,0,0,.7);transform:scale(1.1)}.nav-btn[data-v-5cebea08]{position:absolute;top:50%;transform:translateY(-50%);width:50px;height:50px;background:rgba(0,0,0,.5);border:none;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;z-index:10001;font-size:24px}.nav-btn[data-v-5cebea08]:hover{background:rgba(0,0,0,.7);transform:translateY(-50%) scale(1.1)}.nav-left[data-v-5cebea08]{left:-25px}.nav-right[data-v-5cebea08]{right:-25px}.image-index[data-v-5cebea08]{position:absolute;bottom:20px;left:50%;transform:translate(-50%);background:rgba(0,0,0,.5);color:#fff;padding:8px 16px;border-radius:20px;font-size:14px;font-weight:500;z-index:10001}@media (max-width: 768px){.nav-btn[data-v-5cebea08]{width:40px;height:40px;font-size:20px}.nav-left[data-v-5cebea08]{left:-20px}.nav-right[data-v-5cebea08]{right:-20px}.close-btn[data-v-5cebea08]{top:15px;right:15px;width:35px;height:35px;font-size:18px}.image-index[data-v-5cebea08]{bottom:15px;padding:6px 12px;font-size:12px}} diff --git a/apps/jingrow/frontend/dist/assets/ImageSection-3ef889dd.css b/apps/jingrow/frontend/dist/assets/ImageSection-3ef889dd.css new file mode 100644 index 0000000..81f2b8b --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/ImageSection-3ef889dd.css @@ -0,0 +1 @@ +.media-section[data-v-626f5180]{margin-bottom:24px}.media-section[data-v-626f5180]:last-child{margin-bottom:0}.media-section h4[data-v-626f5180]{margin:0 0 12px;font-size:14px;font-weight:600;color:#374151}.image-grid[data-v-626f5180]{display:flex;flex-direction:column;gap:12px}.image-card[data-v-626f5180]{cursor:pointer;border-radius:6px;overflow:hidden;transition:transform .2s ease;width:100%}.image-card[data-v-626f5180]:hover{transform:scale(1.02)}.image-card img[data-v-626f5180]{width:100%;height:auto;border-radius:8px;object-fit:contain;display:block;overflow:hidden!important}.preview-image[data-v-626f5180]{width:100%;height:auto;max-height:80vh;object-fit:contain;border-radius:12px}.image-modal-container[data-v-626f5180]{position:relative;max-width:90vw;max-height:90vh;background:white;border-radius:16px;padding:5px;box-shadow:0 20px 40px #00000026}.close-btn[data-v-626f5180]{position:absolute;top:12px;right:12px;width:32px;height:32px;background:rgba(0,0,0,.1);border:none;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#666;transition:all .2s ease;z-index:10}.close-btn[data-v-626f5180]:hover{background:rgba(0,0,0,.2);color:#333;transform:scale(1.1)} diff --git a/apps/jingrow/frontend/dist/assets/ImageSection-4c52aaee.js b/apps/jingrow/frontend/dist/assets/ImageSection-4c52aaee.js new file mode 100644 index 0000000..462d1a8 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/ImageSection-4c52aaee.js @@ -0,0 +1 @@ +import{d as v,r as u,c as _,e as r,f as a,F as h,C as k,h as w,w as C,j as I,y as M,l as i,af as x}from"./index-d271a6a3.js";import{_ as F}from"./_plugin-vue_export-helper-c27b6911.js";const b={key:0,class:"media-section"},y={class:"image-grid"},N=["onClick"],B=["src","alt"],V={class:"image-modal-container"},L=["src"],S=v({__name:"ImageSection",props:{metaFields:{},record:{},pageMeta:{}},setup(f){const n=f,o=u(!1),d=u(""),c=_(()=>{var l;const t=(l=n.pageMeta)==null?void 0:l.image_field;if(!t||!t.trim())return[];const s=n.metaFields.find(m=>m.fieldname===t);if(!s)return[];const e=n.record[t];return!e||!e.trim()?[]:[{fieldname:t,url:e,label:s.label||t}]}),p=_(()=>c.value.length>0),g=t=>{d.value=t,o.value=!0};return(t,s)=>p.value?(i(),r("div",b,[a("div",y,[(i(!0),r(h,null,k(c.value,(e,l)=>(i(),r("div",{key:l,class:"image-card",onClick:m=>g(e.url)},[a("img",{src:e.url,alt:e.fieldname},null,8,B)],8,N))),128))]),w(I(x),{show:o.value,"onUpdate:show":s[1]||(s[1]=e=>o.value=e),"mask-closable":!0},{default:C(()=>[a("div",V,[a("button",{class:"close-btn",onClick:s[0]||(s[0]=e=>o.value=!1)},[...s[2]||(s[2]=[a("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none"},[a("path",{d:"M18 6L6 18M6 6L18 18",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)])]),a("img",{src:d.value,class:"preview-image"},null,8,L)])]),_:1},8,["show"])])):M("",!0)}});const j=F(S,[["__scopeId","data-v-626f5180"]]);export{j as default}; diff --git a/apps/jingrow/frontend/dist/assets/InstallProgressModal-2b90d319.js b/apps/jingrow/frontend/dist/assets/InstallProgressModal-2b90d319.js new file mode 100644 index 0000000..629d345 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/InstallProgressModal-2b90d319.js @@ -0,0 +1 @@ +import{d as h,r as w,M as i,D as v,w as t,j as s,l as V,f as p,g as o,t as n,h as r,p as c,n as I,az as N,s as y,af as B}from"./index-d271a6a3.js";import{_ as C}from"./_plugin-vue_export-helper-c27b6911.js";const M={class:"progress-content"},x=h({__name:"InstallProgressModal",props:{modelValue:{type:Boolean},progress:{},message:{},status:{},installing:{type:Boolean},title:{}},emits:["update:modelValue"],setup(u,{emit:g}){const l=u,_=g,a=w(l.modelValue);i(()=>l.modelValue,e=>{a.value=e}),i(a,e=>{_("update:modelValue",e)});function f(){l.installing||(a.value=!1)}return(e,d)=>(V(),v(s(B),{show:a.value,"onUpdate:show":d[0]||(d[0]=m=>a.value=m),preset:"card",style:{width:"500px"}},{header:t(()=>[p("h3",null,o(e.title||s(n)("Installing App")),1)]),action:t(()=>[r(s(I),{onClick:f,disabled:e.installing},{default:t(()=>[c(o(e.installing?s(n)("Installing..."):s(n)("Close")),1)]),_:1},8,["disabled"])]),default:t(()=>[p("div",M,[r(s(N),{percentage:e.progress,"show-indicator":!0,color:"#10b981"},null,8,["percentage"]),r(s(y),{class:"progress-text"},{default:t(()=>[c(o(e.message),1)]),_:1})])]),_:1},8,["show"]))}});const k=C(x,[["__scopeId","data-v-fee9acec"]]);export{k as I}; diff --git a/apps/jingrow/frontend/dist/assets/InstallProgressModal-bbd80b63.css b/apps/jingrow/frontend/dist/assets/InstallProgressModal-bbd80b63.css new file mode 100644 index 0000000..472fb63 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/InstallProgressModal-bbd80b63.css @@ -0,0 +1 @@ +.progress-content[data-v-fee9acec]{display:flex;flex-direction:column;gap:16px;padding:20px 0}.progress-text[data-v-fee9acec]{text-align:center;color:#666} diff --git a/apps/jingrow/frontend/dist/assets/InstalledApps-4519b87b.js b/apps/jingrow/frontend/dist/assets/InstalledApps-4519b87b.js new file mode 100644 index 0000000..cb63330 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/InstalledApps-4519b87b.js @@ -0,0 +1 @@ +import{I as A}from"./iconify-242f8a3c.js";import{d as U,r as d,u as B,X as T,t as e,A as _,n as g,a0 as m,a2 as h,o as S,e as V,f as c,h as r,w as i,j as l,p as b,g as y,l as $,$ as k,ac as D,U as E}from"./index-d271a6a3.js";import{_ as M}from"./_plugin-vue_export-helper-c27b6911.js";const z={class:"installed-apps-page"},P={class:"page-header"},G={class:"header-content"},L={class:"page-title"},R={class:"page-description"},X={class:"apps-section"},q=U({__name:"InstalledApps",setup(H){const v=d([]),p=d(!1),x=d(!1),u=d(null),n=B(),w=T(),I=[{title:e("App Name"),key:"name",width:200},{title:e("Version"),key:"version",width:100,render:a=>a.version||"1.0.0"},{title:e("Git Branch"),key:"git_branch",width:120,render:a=>a.git_branch||"main"},{title:e("Actions"),key:"actions",width:280,render:a=>_("div",{class:"action-buttons"},[_(g,{size:"small",type:"default",loading:u.value===a.name,disabled:a.name==="jingrow",onClick:()=>N(a)},{default:()=>e("Export Package")}),_(g,{size:"small",type:"error",style:"margin-left: 8px;",disabled:!a.uninstallable,onClick:()=>j(a)},{default:()=>a.uninstallable?e("Uninstall"):e("System App")})])}],f=async()=>{var a,o;try{p.value=!0;const t=await m.get("/jingrow/installed-apps",{headers:h()});t.data.success?v.value=t.data.data.apps||[]:n.error(t.data.error||e("Failed to load apps"))}catch(t){console.error("Load apps error:",t),n.error(((o=(a=t.response)==null?void 0:a.data)==null?void 0:o.error)||e("Failed to load apps"))}finally{p.value=!1}},C=()=>{f()},N=async a=>{var o,t;if(a.name==="jingrow"){n.warning(e("System App")+" "+e("cannot be exported"));return}try{u.value=a.name;const s=await m.post(`/jingrow/export-app-package/${a.name}`,{},{headers:h()});if(s.data.success){if(n.success(e("App package exported successfully: {0}").replace("{0}",s.data.filename||a.name)),s.data.filename){const F=`/files/${s.data.filename}`;window.open(F,"_blank")}}else n.error(s.data.error||e("Failed to export app package"))}catch(s){console.error("Export app error:",s),n.error(((t=(o=s.response)==null?void 0:o.data)==null?void 0:t.error)||e("Failed to export app package"))}finally{u.value=null}},j=async a=>{if(!a.uninstallable){n.warning(e("System App")+" "+e("cannot be uninstalled"));return}w.warning({title:e("Uninstall App"),content:e("Are you sure you want to uninstall '{0}'? This action cannot be undone.").replace("{0}",a.name),positiveText:e("Uninstall"),negativeText:e("Cancel"),onPositiveClick:async()=>{var o,t;try{x.value=!0;const s=await m.post(`/jingrow/uninstall/${a.name}`,{},{headers:h()});s.data.success?(n.success(e("App '{0}' uninstalled successfully").replace("{0}",a.name)),await f()):n.error(s.data.error||e("Failed to uninstall app"))}catch(s){console.error("Uninstall app error:",s),n.error(((t=(o=s.response)==null?void 0:o.data)==null?void 0:t.error)||e("Failed to uninstall app"))}finally{x.value=!1}}})};return S(()=>{f()}),(a,o)=>($(),V("div",z,[c("div",P,[c("div",G,[c("h1",L,[r(l(k),null,{default:i(()=>[r(l(A),{icon:"tabler:apps"})]),_:1}),b(" "+y(l(e)("Installed Apps")),1)]),c("p",R,y(l(e)("Manage your locally installed applications")),1)])]),c("div",X,[r(l(E),{class:"apps-card"},{"header-extra":i(()=>[r(l(g),{onClick:C,loading:p.value},{icon:i(()=>[r(l(k),null,{default:i(()=>[r(l(A),{icon:"tabler:refresh"})]),_:1})]),default:i(()=>[b(" "+y(l(e)("Refresh")),1)]),_:1},8,["loading"])]),default:i(()=>[r(l(D),{columns:I,data:v.value,loading:p.value,pagination:!1},null,8,["data","loading"])]),_:1})])]))}});const Q=M(q,[["__scopeId","data-v-fb9ef3d0"]]);export{Q as default}; diff --git a/apps/jingrow/frontend/dist/assets/InstalledApps-cc0e0b95.css b/apps/jingrow/frontend/dist/assets/InstalledApps-cc0e0b95.css new file mode 100644 index 0000000..f42911f --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/InstalledApps-cc0e0b95.css @@ -0,0 +1 @@ +.installed-apps-page[data-v-fb9ef3d0]{padding:16px 24px;width:100%;margin:0;min-height:100vh}.page-header[data-v-fb9ef3d0]{margin-bottom:32px}.header-content[data-v-fb9ef3d0]{text-align:center}.page-title[data-v-fb9ef3d0]{display:flex;align-items:center;justify-content:center;gap:12px;margin:0 0 8px;font-size:28px;font-weight:600;color:#1f2937}.page-description[data-v-fb9ef3d0]{margin:0;color:#6b7280;font-size:16px}.apps-section[data-v-fb9ef3d0]{margin-bottom:32px}.apps-card[data-v-fb9ef3d0]{background:white;border-radius:8px;border:1px solid #e2e8f0;overflow:hidden}.action-buttons[data-v-fb9ef3d0]{display:flex;gap:8px}.app-detail[data-v-fb9ef3d0]{padding:16px 0}@media (max-width: 1200px){.installed-apps-page[data-v-fb9ef3d0]{padding:12px 16px}}@media (max-width: 768px){.installed-apps-page[data-v-fb9ef3d0]{padding:8px 12px}.page-header[data-v-fb9ef3d0]{margin-bottom:16px}.apps-section[data-v-fb9ef3d0]{margin-top:16px}} diff --git a/apps/jingrow/frontend/dist/assets/Int-0b4607af.js b/apps/jingrow/frontend/dist/assets/Int-0b4607af.js new file mode 100644 index 0000000..0bf754a --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Int-0b4607af.js @@ -0,0 +1 @@ +import{d as n,c,e as o,f as i,p,g as f,y as u,h as _,j as m,Y as b,l,ad as v}from"./index-d271a6a3.js";import{_ as y}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},N={key:0,class:"required"},I=n({__name:"Int",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(d){const t=d,s=c(()=>t.df.label_layout||"vertical");return(e,a)=>(l(),o("div",{class:b(["field-wrapper",`layout-${s.value}`])},[i("label",g,[p(f(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(l(),o("span",N,"*")):u("",!0)]),_(m(v),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=r=>e.record[e.df.fieldname]=r),precision:0,placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const h=y(I,[["__scopeId","data-v-2ca541d3"]]),j=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{j as _}; diff --git a/apps/jingrow/frontend/dist/assets/Int-659d1204.css b/apps/jingrow/frontend/dist/assets/Int-659d1204.css new file mode 100644 index 0000000..499b0c5 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Int-659d1204.css @@ -0,0 +1 @@ +.field-wrapper[data-v-2ca541d3] .n-input-number{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/JSON-31a4c94d.js b/apps/jingrow/frontend/dist/assets/JSON-31a4c94d.js new file mode 100644 index 0000000..0c74e5b --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/JSON-31a4c94d.js @@ -0,0 +1 @@ +import{d as i,c as p,e as l,f as o,p as c,g as u,y as f,h as m,j as _,Y as y,l as s,m as b}from"./index-d271a6a3.js";import{_ as v}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},N={key:0,class:"required"},V={class:"json-field-container"},J=i({__name:"JSON",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(t){const d=t,n=p(()=>d.df.label_layout||"vertical");return(e,a)=>(s(),l("div",{class:y(["field-wrapper",`layout-${n.value}`])},[o("label",g,[c(u(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(s(),l("span",N,"*")):f("",!0)]),o("div",V,[m(_(b),{value:e.ctx.getJsonDisplayValue?e.ctx.getJsonDisplayValue(e.record[e.df.fieldname]):e.record[e.df.fieldname]??"","onUpdate:value":a[0]||(a[0]=r=>e.ctx.updateJsonValue&&e.ctx.updateJsonValue(e.df.fieldname,r)),type:"textarea",rows:12,placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit,class:"json-textarea"},null,8,["value","placeholder","disabled"])])],2))}});const S=v(J,[["__scopeId","data-v-b51c2816"]]),O=Object.freeze(Object.defineProperty({__proto__:null,default:S},Symbol.toStringTag,{value:"Module"}));export{O as _}; diff --git a/apps/jingrow/frontend/dist/assets/JSON-e50cb536.css b/apps/jingrow/frontend/dist/assets/JSON-e50cb536.css new file mode 100644 index 0000000..819d3d8 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/JSON-e50cb536.css @@ -0,0 +1 @@ +.field-wrapper[data-v-b51c2816] .json-field-container{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Jeditor-03001e44.js b/apps/jingrow/frontend/dist/assets/Jeditor-03001e44.js new file mode 100644 index 0000000..2f649c4 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Jeditor-03001e44.js @@ -0,0 +1 @@ +import{_ as e}from"./Jeditor.vue_vue_type_style_index_0_lang-fa0f1963.js";const o=Object.freeze(Object.defineProperty({__proto__:null,default:e},Symbol.toStringTag,{value:"Module"}));export{o as _}; diff --git a/apps/jingrow/frontend/dist/assets/Jeditor-c552a82f.css b/apps/jingrow/frontend/dist/assets/Jeditor-c552a82f.css new file mode 100644 index 0000000..a58115d --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Jeditor-c552a82f.css @@ -0,0 +1 @@ +.jeditor-control :deep(.tiptap-toolbar){margin-bottom:8px}.jeditor-control :deep(.jeditor){min-height:300px}.jeditor-control,.jeditor-control>div{width:100%}.required{color:#ef4444;font-weight:700}.tiptap-toolbar{display:flex;flex-wrap:wrap;background:#fff;border-bottom:1px solid #eee;padding:6px 8px;margin-bottom:4px;border-radius:4px 4px 0 0;box-shadow:0 1px 2px #00000008;align-items:center;gap:2px;position:relative}.tiptap-toolbar-btn{border:none;background:none;border-radius:6px;padding:0 6px;height:32px;min-width:32px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:#444;transition:all .15s cubic-bezier(.2,0,.2,1)}.tiptap-toolbar-btn:hover{background:#f0f2f5;color:#1fc76f;transform:translateY(-1px);box-shadow:0 2px 4px #00000014}.tiptap-toolbar-btn.active{background:rgba(31,199,111,.1);color:#1fc76f;box-shadow:none}.tiptap-toolbar-divider{display:inline-block;width:1px;height:20px;background:linear-gradient(to bottom,transparent,#e5e6eb,transparent);margin:0 6px;align-self:center}.tiptap-toolbar-dropdown{position:relative;display:inline-block}.tiptap-toolbar-dropdown-menu{display:none;position:absolute;top:100%;left:0;min-width:160px;background:#fff;border:1px solid #eee;border-radius:6px;box-shadow:0 4px 12px #00000014;z-index:20;padding:6px 0}.tiptap-toolbar-dropdown-item{padding:6px 12px;cursor:pointer;white-space:nowrap}.tiptap-toolbar-dropdown-item:hover{background:#f5f7fa}.jeditor{border:1px solid #e5e7eb;border-radius:8px;padding:12px;min-height:300px;width:100%;box-sizing:border-box;background:#fff;transition:all .2s ease;position:relative}.jeditor:focus,.jeditor:focus-within,.jeditor[contenteditable=true]:focus{border:1.5px solid #1fc76f;box-shadow:0 0 0 2px #1fc76f22;outline:none}.jeditor[contenteditable=true],.jeditor *:focus,.jeditor *:focus-visible,.jeditor *:active{outline:none;border:none;box-shadow:none}.tiptap-toolbar-caret{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid currentColor;display:inline-block;margin-left:4px;opacity:.8}.tiptap-toolbar .material-symbols-outlined{font-size:18px!important;line-height:18px!important;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center}.jeditor-source-textarea{width:100%!important;box-sizing:border-box;display:block;background:#fafbfc!important;color:#24292e!important;font-family:SF Mono,Monaco,Inconsolata,Roboto Mono,Source Code Pro,monospace!important;font-size:13px!important;line-height:1.6!important;padding:16px!important;border:none!important;border-radius:8px!important;outline:none!important;box-shadow:inset 0 1px 3px #0000001a!important;transition:all .2s ease!important;resize:vertical!important}.jeditor-source-textarea:focus{background:#ffffff!important;box-shadow:inset 0 1px 3px #0000001a,0 0 0 3px #3b82f61a!important}.jeditor pre{background:#f6f8fa;border-radius:8px;padding:14px 16px;font-family:JetBrains Mono,Fira Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:15px;line-height:1.7;color:#222;overflow-x:auto;margin:8px 0;box-shadow:0 1px 4px #0000000a;border:1px solid #e5e6eb;position:relative}.jeditor pre code{background:none;padding:0;border:none;font-family:inherit;font-size:inherit;color:inherit}.jeditor code{background:#f6f8fa;color:#d6336c;font-family:JetBrains Mono,Fira Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.97em;border-radius:4px;padding:2px 6px;margin:0 2px;border:none;word-break:break-all}.jeditor blockquote{border-left:4px solid #1fc76f;background:#f8fefb;margin:8px 0;padding:10px 18px;color:#444;font-size:1.05em;border-radius:4px;position:relative}.jeditor img{max-width:100%;height:auto;display:block;margin:8px 0;border-radius:4px;box-shadow:0 1px 4px #0000001a}[data-type=imageResizable]{box-shadow:0 0 0 1px #1fc76f33;transition:box-shadow .2s;position:relative}[data-type=imageResizable]:hover,[data-type=imageResizable].ProseMirror-selectednode{box-shadow:0 0 0 2px #1fc76f}[data-type=imageResizable]:hover .image-drag-handle,[data-type=imageResizable].ProseMirror-selectednode .image-drag-handle{background:rgba(31,199,111,.1);border:1px dashed #1fc76f}[data-type=imageResizable]:hover .image-resize-handle,[data-type=imageResizable].ProseMirror-selectednode .image-resize-handle{transform:scale(1.1);box-shadow:0 0 4px #1fc76f}.image-resize-handle{opacity:0;transition:opacity .2s ease,transform .2s ease}[data-type=imageResizable]:hover .image-resize-handle,[data-type=imageResizable].ProseMirror-selectednode .image-resize-handle{opacity:1}.image-drag-handle{transition:all .2s ease;background:transparent;border:1px dashed transparent}.image-drag-handle:hover{background:rgba(31,199,111,.15)!important;border:1px dashed #1fc76f!important}.image-resize-handle{transition:all .2s ease}.image-resize-handle:hover{transform:scale(1.2)!important;box-shadow:0 0 6px #1fc76f!important}[data-type=imageResizable]{max-width:100%;margin:8px 0}[data-type=imageResizable][data-text-align=left]{margin-left:0;margin-right:auto}[data-type=imageResizable][data-text-align=center]{margin-left:auto;margin-right:auto}[data-type=imageResizable][data-text-align=right]{margin-left:auto;margin-right:0}.jeditor .ProseMirror [data-type=imageResizable]{max-width:100%!important;width:auto!important}.jeditor table{border-collapse:collapse;margin:8px 0;width:100%;border:1px solid #e5e6eb}.jeditor table td,.jeditor table th{border:1px solid #e5e6eb;padding:8px 12px}.jeditor table th{background-color:#f6f8fa} diff --git a/apps/jingrow/frontend/dist/assets/Jeditor.vue_vue_type_style_index_0_lang-fa0f1963.js b/apps/jingrow/frontend/dist/assets/Jeditor.vue_vue_type_style_index_0_lang-fa0f1963.js new file mode 100644 index 0000000..3f78b64 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Jeditor.vue_vue_type_style_index_0_lang-fa0f1963.js @@ -0,0 +1,99 @@ +import{d as Lc,c as Pc,r as zc,o as Bc,aU as Hc,M as Yi,e as Xi,f as ls,p as Fc,g as $c,y as Vc,Y as Wc,l as Qi,a8 as Zi}from"./index-d271a6a3.js";import{uploadFileToJingrow as jc}from"./common-c89c6552.js";function ae(n){this.content=n}ae.prototype={constructor:ae,find:function(n){for(var e=0;e>1}};ae.from=function(n){if(n instanceof ae)return n;var e=[];if(n)for(var t in n)e.push(t,n[t]);return new ae(e)};function Ll(n,e,t){for(let r=0;;r++){if(r==n.childCount||r==e.childCount)return n.childCount==e.childCount?null:t;let s=n.child(r),i=e.child(r);if(s==i){t+=s.nodeSize;continue}if(!s.sameMarkup(i))return t;if(s.isText&&s.text!=i.text){for(let o=0;s.text[o]==i.text[o];o++)t++;return t}if(s.content.size||i.content.size){let o=Ll(s.content,i.content,t+1);if(o!=null)return o}t+=s.nodeSize}}function Pl(n,e,t,r){for(let s=n.childCount,i=e.childCount;;){if(s==0||i==0)return s==i?null:{a:t,b:r};let o=n.child(--s),l=e.child(--i),a=o.nodeSize;if(o==l){t-=a,r-=a;continue}if(!o.sameMarkup(l))return{a:t,b:r};if(o.isText&&o.text!=l.text){let c=0,d=Math.min(o.text.length,l.text.length);for(;ce&&r(a,s+l,i||null,o)!==!1&&a.content.size){let d=l+1;a.nodesBetween(Math.max(0,e-d),Math.min(a.content.size,t-d),r,s+d)}l=c}}descendants(e){this.nodesBetween(0,this.size,e)}textBetween(e,t,r,s){let i="",o=!0;return this.nodesBetween(e,t,(l,a)=>{let c=l.isText?l.text.slice(Math.max(e,a)-a,t-a):l.isLeaf?s?typeof s=="function"?s(l):s:l.type.spec.leafText?l.type.spec.leafText(l):"":"";l.isBlock&&(l.isLeaf&&c||l.isTextblock)&&r&&(o?o=!1:i+=r),i+=c},0),i}append(e){if(!e.size)return this;if(!this.size)return e;let t=this.lastChild,r=e.firstChild,s=this.content.slice(),i=0;for(t.isText&&t.sameMarkup(r)&&(s[s.length-1]=t.withText(t.text+r.text),i=1);ie)for(let i=0,o=0;oe&&((ot)&&(l.isText?l=l.cut(Math.max(0,e-o),Math.min(l.text.length,t-o)):l=l.cut(Math.max(0,e-o-1),Math.min(l.content.size,t-o-1))),r.push(l),s+=l.nodeSize),o=a}return new k(r,s)}cutByIndex(e,t){return e==t?k.empty:e==0&&t==this.content.length?this:new k(this.content.slice(e,t))}replaceChild(e,t){let r=this.content[e];if(r==t)return this;let s=this.content.slice(),i=this.size+t.nodeSize-r.nodeSize;return s[e]=t,new k(s,i)}addToStart(e){return new k([e].concat(this.content),this.size+e.nodeSize)}addToEnd(e){return new k(this.content.concat(e),this.size+e.nodeSize)}eq(e){if(this.content.length!=e.content.length)return!1;for(let t=0;tthis.size||e<0)throw new RangeError(`Position ${e} outside of fragment (${this})`);for(let t=0,r=0;;t++){let s=this.child(t),i=r+s.nodeSize;if(i>=e)return i==e?zn(t+1,i):zn(t,r);r=i}}toString(){return"<"+this.toStringInner()+">"}toStringInner(){return this.content.join(", ")}toJSON(){return this.content.length?this.content.map(e=>e.toJSON()):null}static fromJSON(e,t){if(!t)return k.empty;if(!Array.isArray(t))throw new RangeError("Invalid input for Fragment.fromJSON");return new k(t.map(e.nodeFromJSON))}static fromArray(e){if(!e.length)return k.empty;let t,r=0;for(let s=0;sthis.type.rank&&(t||(t=e.slice(0,s)),t.push(this),r=!0),t&&t.push(i)}}return t||(t=e.slice()),r||t.push(this),t}removeFromSet(e){for(let t=0;tr.type.rank-s.type.rank),t}};j.none=[];class ir extends Error{}class T{constructor(e,t,r){this.content=e,this.openStart=t,this.openEnd=r}get size(){return this.content.size-this.openStart-this.openEnd}insertAt(e,t){let r=Bl(this.content,e+this.openStart,t);return r&&new T(r,this.openStart,this.openEnd)}removeBetween(e,t){return new T(zl(this.content,e+this.openStart,t+this.openStart),this.openStart,this.openEnd)}eq(e){return this.content.eq(e.content)&&this.openStart==e.openStart&&this.openEnd==e.openEnd}toString(){return this.content+"("+this.openStart+","+this.openEnd+")"}toJSON(){if(!this.content.size)return null;let e={content:this.content.toJSON()};return this.openStart>0&&(e.openStart=this.openStart),this.openEnd>0&&(e.openEnd=this.openEnd),e}static fromJSON(e,t){if(!t)return T.empty;let r=t.openStart||0,s=t.openEnd||0;if(typeof r!="number"||typeof s!="number")throw new RangeError("Invalid input for Slice.fromJSON");return new T(k.fromJSON(e,t.content),r,s)}static maxOpen(e,t=!0){let r=0,s=0;for(let i=e.firstChild;i&&!i.isLeaf&&(t||!i.type.spec.isolating);i=i.firstChild)r++;for(let i=e.lastChild;i&&!i.isLeaf&&(t||!i.type.spec.isolating);i=i.lastChild)s++;return new T(e,r,s)}}T.empty=new T(k.empty,0,0);function zl(n,e,t){let{index:r,offset:s}=n.findIndex(e),i=n.maybeChild(r),{index:o,offset:l}=n.findIndex(t);if(s==e||i.isText){if(l!=t&&!n.child(o).isText)throw new RangeError("Removing non-flat range");return n.cut(0,e).append(n.cut(t))}if(r!=o)throw new RangeError("Removing non-flat range");return n.replaceChild(r,i.copy(zl(i.content,e-s-1,t-s-1)))}function Bl(n,e,t,r){let{index:s,offset:i}=n.findIndex(e),o=n.maybeChild(s);if(i==e||o.isText)return r&&!r.canReplace(s,s,t)?null:n.cut(0,e).append(t).append(n.cut(e));let l=Bl(o.content,e-i-1,t,o);return l&&n.replaceChild(s,o.copy(l))}function _c(n,e,t){if(t.openStart>n.depth)throw new ir("Inserted content deeper than insertion position");if(n.depth-t.openStart!=e.depth-t.openEnd)throw new ir("Inconsistent open depths");return Hl(n,e,t,0)}function Hl(n,e,t,r){let s=n.index(r),i=n.node(r);if(s==e.index(r)&&r=0&&n.isText&&n.sameMarkup(e[t])?e[t]=n.withText(e[t].text+n.text):e.push(n)}function dn(n,e,t,r){let s=(e||n).node(t),i=0,o=e?e.index(t):s.childCount;n&&(i=n.index(t),n.depth>t?i++:n.textOffset&&(Tt(n.nodeAfter,r),i++));for(let l=i;ls&&zs(n,e,s+1),o=r.depth>s&&zs(t,r,s+1),l=[];return dn(null,n,s,l),i&&o&&e.index(s)==t.index(s)?(Fl(i,o),Tt(Et(i,$l(n,e,t,r,s+1)),l)):(i&&Tt(Et(i,or(n,e,s+1)),l),dn(e,t,s,l),o&&Tt(Et(o,or(t,r,s+1)),l)),dn(r,null,s,l),new k(l)}function or(n,e,t){let r=[];if(dn(null,n,t,r),n.depth>t){let s=zs(n,e,t+1);Tt(Et(s,or(n,e,t+1)),r)}return dn(e,null,t,r),new k(r)}function Kc(n,e){let t=e.depth-n.openStart,s=e.node(t).copy(n.content);for(let i=t-1;i>=0;i--)s=e.node(i).copy(k.from(s));return{start:s.resolveNoCache(n.openStart+t),end:s.resolveNoCache(s.content.size-n.openEnd-t)}}class Cn{constructor(e,t,r){this.pos=e,this.path=t,this.parentOffset=r,this.depth=t.length/3-1}resolveDepth(e){return e==null?this.depth:e<0?this.depth+e:e}get parent(){return this.node(this.depth)}get doc(){return this.node(0)}node(e){return this.path[this.resolveDepth(e)*3]}index(e){return this.path[this.resolveDepth(e)*3+1]}indexAfter(e){return e=this.resolveDepth(e),this.index(e)+(e==this.depth&&!this.textOffset?0:1)}start(e){return e=this.resolveDepth(e),e==0?0:this.path[e*3-1]+1}end(e){return e=this.resolveDepth(e),this.start(e)+this.node(e).content.size}before(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position before the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]}after(e){if(e=this.resolveDepth(e),!e)throw new RangeError("There is no position after the top-level node");return e==this.depth+1?this.pos:this.path[e*3-1]+this.path[e*3].nodeSize}get textOffset(){return this.pos-this.path[this.path.length-1]}get nodeAfter(){let e=this.parent,t=this.index(this.depth);if(t==e.childCount)return null;let r=this.pos-this.path[this.path.length-1],s=e.child(t);return r?e.child(t).cut(r):s}get nodeBefore(){let e=this.index(this.depth),t=this.pos-this.path[this.path.length-1];return t?this.parent.child(e).cut(0,t):e==0?null:this.parent.child(e-1)}posAtIndex(e,t){t=this.resolveDepth(t);let r=this.path[t*3],s=t==0?0:this.path[t*3-1]+1;for(let i=0;i0;t--)if(this.start(t)<=e&&this.end(t)>=e)return t;return 0}blockRange(e=this,t){if(e.pos=0;r--)if(e.pos<=this.end(r)&&(!t||t(this.node(r))))return new lr(this,e,r);return null}sameParent(e){return this.pos-this.parentOffset==e.pos-e.parentOffset}max(e){return e.pos>this.pos?e:this}min(e){return e.pos=0&&t<=e.content.size))throw new RangeError("Position "+t+" out of range");let r=[],s=0,i=t;for(let o=e;;){let{index:l,offset:a}=o.content.findIndex(i),c=i-a;if(r.push(o,l,s+a),!c||(o=o.child(l),o.isText))break;i=c-1,s+=a+1}return new Cn(t,r,i)}static resolveCached(e,t){let r=eo.get(e);if(r)for(let i=0;ie&&this.nodesBetween(e,t,i=>(r.isInSet(i.marks)&&(s=!0),!s)),s}get isBlock(){return this.type.isBlock}get isTextblock(){return this.type.isTextblock}get inlineContent(){return this.type.inlineContent}get isInline(){return this.type.isInline}get isText(){return this.type.isText}get isLeaf(){return this.type.isLeaf}get isAtom(){return this.type.isAtom}toString(){if(this.type.spec.toDebugString)return this.type.spec.toDebugString(this);let e=this.type.name;return this.content.size&&(e+="("+this.content.toStringInner()+")"),Vl(this.marks,e)}contentMatchAt(e){let t=this.type.contentMatch.matchFragment(this.content,0,e);if(!t)throw new Error("Called contentMatchAt on a node with invalid content");return t}canReplace(e,t,r=k.empty,s=0,i=r.childCount){let o=this.contentMatchAt(e).matchFragment(r,s,i),l=o&&o.matchFragment(this.content,t);if(!l||!l.validEnd)return!1;for(let a=s;at.type.name)}`);this.content.forEach(t=>t.check())}toJSON(){let e={type:this.type.name};for(let t in this.attrs){e.attrs=this.attrs;break}return this.content.size&&(e.content=this.content.toJSON()),this.marks.length&&(e.marks=this.marks.map(t=>t.toJSON())),e}static fromJSON(e,t){if(!t)throw new RangeError("Invalid input for Node.fromJSON");let r;if(t.marks){if(!Array.isArray(t.marks))throw new RangeError("Invalid mark data for Node.fromJSON");r=t.marks.map(e.markFromJSON)}if(t.type=="text"){if(typeof t.text!="string")throw new RangeError("Invalid text node in JSON");return e.text(t.text,r)}let s=k.fromJSON(e,t.content),i=e.nodeType(t.type).create(t.attrs,s,r);return i.type.checkAttrs(i.attrs),i}};lt.prototype.text=void 0;class ar extends lt{constructor(e,t,r,s){if(super(e,t,null,s),!r)throw new RangeError("Empty text nodes are not allowed");this.text=r}toString(){return this.type.spec.toDebugString?this.type.spec.toDebugString(this):Vl(this.marks,JSON.stringify(this.text))}get textContent(){return this.text}textBetween(e,t){return this.text.slice(e,t)}get nodeSize(){return this.text.length}mark(e){return e==this.marks?this:new ar(this.type,this.attrs,this.text,e)}withText(e){return e==this.text?this:new ar(this.type,this.attrs,e,this.marks)}cut(e=0,t=this.text.length){return e==0&&t==this.text.length?this:this.withText(this.text.slice(e,t))}eq(e){return this.sameMarkup(e)&&this.text==e.text}toJSON(){let e=super.toJSON();return e.text=this.text,e}}function Vl(n,e){for(let t=n.length-1;t>=0;t--)e=n[t].type.name+"("+e+")";return e}class vt{constructor(e){this.validEnd=e,this.next=[],this.wrapCache=[]}static parse(e,t){let r=new Gc(e,t);if(r.next==null)return vt.empty;let s=Wl(r);r.next&&r.err("Unexpected trailing text");let i=nd(td(s));return rd(i,r),i}matchType(e){for(let t=0;tc.createAndFill()));for(let c=0;c=this.next.length)throw new RangeError(`There's no ${e}th edge in this content match`);return this.next[e]}toString(){let e=[];function t(r){e.push(r);for(let s=0;s{let i=s+(r.validEnd?"*":" ")+" ";for(let o=0;o"+e.indexOf(r.next[o].next);return i}).join(` +`)}}vt.empty=new vt(!0);class Gc{constructor(e,t){this.string=e,this.nodeTypes=t,this.inline=null,this.pos=0,this.tokens=e.split(/\s*(?=\b|\W|$)/),this.tokens[this.tokens.length-1]==""&&this.tokens.pop(),this.tokens[0]==""&&this.tokens.shift()}get next(){return this.tokens[this.pos]}eat(e){return this.next==e&&(this.pos++||!0)}err(e){throw new SyntaxError(e+" (in content expression '"+this.string+"')")}}function Wl(n){let e=[];do e.push(Yc(n));while(n.eat("|"));return e.length==1?e[0]:{type:"choice",exprs:e}}function Yc(n){let e=[];do e.push(Xc(n));while(n.next&&n.next!=")"&&n.next!="|");return e.length==1?e[0]:{type:"seq",exprs:e}}function Xc(n){let e=ed(n);for(;;)if(n.eat("+"))e={type:"plus",expr:e};else if(n.eat("*"))e={type:"star",expr:e};else if(n.eat("?"))e={type:"opt",expr:e};else if(n.eat("{"))e=Qc(n,e);else break;return e}function to(n){/\D/.test(n.next)&&n.err("Expected number, got '"+n.next+"'");let e=Number(n.next);return n.pos++,e}function Qc(n,e){let t=to(n),r=t;return n.eat(",")&&(n.next!="}"?r=to(n):r=-1),n.eat("}")||n.err("Unclosed braced range"),{type:"range",min:t,max:r,expr:e}}function Zc(n,e){let t=n.nodeTypes,r=t[e];if(r)return[r];let s=[];for(let i in t){let o=t[i];o.isInGroup(e)&&s.push(o)}return s.length==0&&n.err("No node type or group '"+e+"' found"),s}function ed(n){if(n.eat("(")){let e=Wl(n);return n.eat(")")||n.err("Missing closing paren"),e}else if(/\W/.test(n.next))n.err("Unexpected token '"+n.next+"'");else{let e=Zc(n,n.next).map(t=>(n.inline==null?n.inline=t.isInline:n.inline!=t.isInline&&n.err("Mixing inline and block content"),{type:"name",value:t}));return n.pos++,e.length==1?e[0]:{type:"choice",exprs:e}}}function td(n){let e=[[]];return s(i(n,0),t()),e;function t(){return e.push([])-1}function r(o,l,a){let c={term:a,to:l};return e[o].push(c),c}function s(o,l){o.forEach(a=>a.to=l)}function i(o,l){if(o.type=="choice")return o.exprs.reduce((a,c)=>a.concat(i(c,l)),[]);if(o.type=="seq")for(let a=0;;a++){let c=i(o.exprs[a],l);if(a==o.exprs.length-1)return c;s(c,l=t())}else if(o.type=="star"){let a=t();return r(l,a),s(i(o.expr,a),a),[r(a)]}else if(o.type=="plus"){let a=t();return s(i(o.expr,l),a),s(i(o.expr,a),a),[r(a)]}else{if(o.type=="opt")return[r(l)].concat(i(o.expr,l));if(o.type=="range"){let a=l;for(let c=0;c{n[o].forEach(({term:l,to:a})=>{if(!l)return;let c;for(let d=0;d{c||s.push([l,c=[]]),c.indexOf(d)==-1&&c.push(d)})})});let i=e[r.join(",")]=new vt(r.indexOf(n.length-1)>-1);for(let o=0;o-1}get whitespace(){return this.spec.whitespace||(this.spec.code?"pre":"normal")}hasRequiredAttrs(){for(let e in this.attrs)if(this.attrs[e].isRequired)return!0;return!1}compatibleContent(e){return this==e||this.contentMatch.compatible(e.contentMatch)}computeAttrs(e){return!e&&this.defaultAttrs?this.defaultAttrs:Kl(this.attrs,e)}create(e=null,t,r){if(this.isText)throw new Error("NodeType.create can't construct text nodes");return new lt(this,this.computeAttrs(e),k.from(t),j.setFrom(r))}createChecked(e=null,t,r){return t=k.from(t),this.checkContent(t),new lt(this,this.computeAttrs(e),t,j.setFrom(r))}createAndFill(e=null,t,r){if(e=this.computeAttrs(e),t=k.from(t),t.size){let o=this.contentMatch.fillBefore(t);if(!o)return null;t=o.append(t)}let s=this.contentMatch.matchFragment(t),i=s&&s.fillBefore(k.empty,!0);return i?new lt(this,e,t.append(i),j.setFrom(r)):null}validContent(e){let t=this.contentMatch.matchFragment(e);if(!t||!t.validEnd)return!1;for(let r=0;r-1}allowsMarks(e){if(this.markSet==null)return!0;for(let t=0;tr[i]=new Jl(i,t,o));let s=t.spec.topNode||"doc";if(!r[s])throw new RangeError("Schema is missing its top node type ('"+s+"')");if(!r.text)throw new RangeError("Every schema needs a 'text' type");for(let i in r.text.attrs)throw new RangeError("The text node type should not have attributes");return r}};function sd(n,e,t){let r=t.split("|");return s=>{let i=s===null?"null":typeof s;if(r.indexOf(i)<0)throw new RangeError(`Expected value of type ${r} for attribute ${e} on type ${n}, got ${i}`)}}class id{constructor(e,t,r){this.hasDefault=Object.prototype.hasOwnProperty.call(r,"default"),this.default=r.default,this.validate=typeof r.validate=="string"?sd(e,t,r.validate):r.validate}get isRequired(){return!this.hasDefault}}class _r{constructor(e,t,r,s){this.name=e,this.rank=t,this.schema=r,this.spec=s,this.attrs=ql(e,s.attrs),this.excluded=null;let i=_l(this.attrs);this.instance=i?new j(this,i):null}create(e=null){return!e&&this.instance?this.instance:new j(this,Kl(this.attrs,e))}static compile(e,t){let r=Object.create(null),s=0;return e.forEach((i,o)=>r[i]=new _r(i,s++,t,o)),r}removeFromSet(e){for(var t=0;t-1}}class Gl{constructor(e){this.linebreakReplacement=null,this.cached=Object.create(null);let t=this.spec={};for(let s in e)t[s]=e[s];t.nodes=ae.from(e.nodes),t.marks=ae.from(e.marks||{}),this.nodes=ro.compile(this.spec.nodes,this),this.marks=_r.compile(this.spec.marks,this);let r=Object.create(null);for(let s in this.nodes){if(s in this.marks)throw new RangeError(s+" can not be both a node and a mark");let i=this.nodes[s],o=i.spec.content||"",l=i.spec.marks;if(i.contentMatch=r[o]||(r[o]=vt.parse(o,this.nodes)),i.inlineContent=i.contentMatch.inlineContent,i.spec.linebreakReplacement){if(this.linebreakReplacement)throw new RangeError("Multiple linebreak nodes defined");if(!i.isInline||!i.isLeaf)throw new RangeError("Linebreak replacement nodes must be inline leaf nodes");this.linebreakReplacement=i}i.markSet=l=="_"?null:l?so(this,l.split(" ")):l==""||!i.inlineContent?[]:null}for(let s in this.marks){let i=this.marks[s],o=i.spec.excludes;i.excluded=o==null?[i]:o==""?[]:so(this,o.split(" "))}this.nodeFromJSON=s=>lt.fromJSON(this,s),this.markFromJSON=s=>j.fromJSON(this,s),this.topNodeType=this.nodes[this.spec.topNode||"doc"],this.cached.wrappings=Object.create(null)}node(e,t=null,r,s){if(typeof e=="string")e=this.nodeType(e);else if(e instanceof ro){if(e.schema!=this)throw new RangeError("Node type from different schema used ("+e.name+")")}else throw new RangeError("Invalid node type: "+e);return e.createChecked(t,r,s)}text(e,t){let r=this.nodes.text;return new ar(r,r.defaultAttrs,e,j.setFrom(t))}mark(e,t){return typeof e=="string"&&(e=this.marks[e]),e.create(t)}nodeType(e){let t=this.nodes[e];if(!t)throw new RangeError("Unknown node type: "+e);return t}}function so(n,e){let t=[];for(let r=0;r-1)&&t.push(o=a)}if(!o)throw new SyntaxError("Unknown mark type: '"+e[r]+"'")}return t}function od(n){return n.tag!=null}function ld(n){return n.style!=null}class at{constructor(e,t){this.schema=e,this.rules=t,this.tags=[],this.styles=[];let r=this.matchedStyles=[];t.forEach(s=>{if(od(s))this.tags.push(s);else if(ld(s)){let i=/[^=]*/.exec(s.style)[0];r.indexOf(i)<0&&r.push(i),this.styles.push(s)}}),this.normalizeLists=!this.tags.some(s=>{if(!/^(ul|ol)\b/.test(s.tag)||!s.node)return!1;let i=e.nodes[s.node];return i.contentMatch.matchType(i)})}parse(e,t={}){let r=new oo(this,t,!1);return r.addAll(e,j.none,t.from,t.to),r.finish()}parseSlice(e,t={}){let r=new oo(this,t,!0);return r.addAll(e,j.none,t.from,t.to),T.maxOpen(r.finish())}matchTag(e,t,r){for(let s=r?this.tags.indexOf(r)+1:0;se.length&&(l.charCodeAt(e.length)!=61||l.slice(e.length+1)!=t))){if(o.getAttrs){let a=o.getAttrs(t);if(a===!1)continue;o.attrs=a||void 0}return o}}}static schemaRules(e){let t=[];function r(s){let i=s.priority==null?50:s.priority,o=0;for(;o{r(o=lo(o)),o.mark||o.ignore||o.clearMark||(o.mark=s)})}for(let s in e.nodes){let i=e.nodes[s].spec.parseDOM;i&&i.forEach(o=>{r(o=lo(o)),o.node||o.ignore||o.mark||(o.node=s)})}return t}static fromSchema(e){return e.cached.domParser||(e.cached.domParser=new at(e,at.schemaRules(e)))}}const Yl={address:!0,article:!0,aside:!0,blockquote:!0,canvas:!0,dd:!0,div:!0,dl:!0,fieldset:!0,figcaption:!0,figure:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,li:!0,noscript:!0,ol:!0,output:!0,p:!0,pre:!0,section:!0,table:!0,tfoot:!0,ul:!0},ad={head:!0,noscript:!0,object:!0,script:!0,style:!0,title:!0},Xl={ol:!0,ul:!0},xn=1,Hs=2,un=4;function io(n,e,t){return e!=null?(e?xn:0)|(e==="full"?Hs:0):n&&n.whitespace=="pre"?xn|Hs:t&~un}class Bn{constructor(e,t,r,s,i,o){this.type=e,this.attrs=t,this.marks=r,this.solid=s,this.options=o,this.content=[],this.activeMarks=j.none,this.match=i||(o&un?null:e.contentMatch)}findWrapping(e){if(!this.match){if(!this.type)return[];let t=this.type.contentMatch.fillBefore(k.from(e));if(t)this.match=this.type.contentMatch.matchFragment(t);else{let r=this.type.contentMatch,s;return(s=r.findWrapping(e.type))?(this.match=r,s):null}}return this.match.findWrapping(e.type)}finish(e){if(!(this.options&xn)){let r=this.content[this.content.length-1],s;if(r&&r.isText&&(s=/[ \t\r\n\u000c]+$/.exec(r.text))){let i=r;r.text.length==s[0].length?this.content.pop():this.content[this.content.length-1]=i.withText(i.text.slice(0,i.text.length-s[0].length))}}let t=k.from(this.content);return!e&&this.match&&(t=t.append(this.match.fillBefore(k.empty,!0))),this.type?this.type.create(this.attrs,t,this.marks):t}inlineContext(e){return this.type?this.type.inlineContent:this.content.length?this.content[0].isInline:e.parentNode&&!Yl.hasOwnProperty(e.parentNode.nodeName.toLowerCase())}}class oo{constructor(e,t,r){this.parser=e,this.options=t,this.isOpen=r,this.open=0,this.localPreserveWS=!1;let s=t.topNode,i,o=io(null,t.preserveWhitespace,0)|(r?un:0);s?i=new Bn(s.type,s.attrs,j.none,!0,t.topMatch||s.type.contentMatch,o):r?i=new Bn(null,null,j.none,!0,null,o):i=new Bn(e.schema.topNodeType,null,j.none,!0,null,o),this.nodes=[i],this.find=t.findPositions,this.needsBlock=!1}get top(){return this.nodes[this.open]}addDOM(e,t){e.nodeType==3?this.addTextNode(e,t):e.nodeType==1&&this.addElement(e,t)}addTextNode(e,t){let r=e.nodeValue,s=this.top,i=s.options&Hs?"full":this.localPreserveWS||(s.options&xn)>0;if(i==="full"||s.inlineContext(e)||/[^ \t\r\n\u000c]/.test(r)){if(i)i!=="full"?r=r.replace(/\r?\n|\r/g," "):r=r.replace(/\r\n?/g,` +`);else if(r=r.replace(/[ \t\r\n\u000c]+/g," "),/^[ \t\r\n\u000c]/.test(r)&&this.open==this.nodes.length-1){let o=s.content[s.content.length-1],l=e.previousSibling;(!o||l&&l.nodeName=="BR"||o.isText&&/[ \t\r\n\u000c]$/.test(o.text))&&(r=r.slice(1))}r&&this.insertNode(this.parser.schema.text(r),t,!/\S/.test(r)),this.findInText(e)}else this.findInside(e)}addElement(e,t,r){let s=this.localPreserveWS,i=this.top;(e.tagName=="PRE"||/pre/.test(e.style&&e.style.whiteSpace))&&(this.localPreserveWS=!0);let o=e.nodeName.toLowerCase(),l;Xl.hasOwnProperty(o)&&this.parser.normalizeLists&&cd(e);let a=this.options.ruleFromNode&&this.options.ruleFromNode(e)||(l=this.parser.matchTag(e,this,r));e:if(a?a.ignore:ad.hasOwnProperty(o))this.findInside(e),this.ignoreFallback(e,t);else if(!a||a.skip||a.closeParent){a&&a.closeParent?this.open=Math.max(0,this.open-1):a&&a.skip.nodeType&&(e=a.skip);let c,d=this.needsBlock;if(Yl.hasOwnProperty(o))i.content.length&&i.content[0].isInline&&this.open&&(this.open--,i=this.top),c=!0,i.type||(this.needsBlock=!0);else if(!e.firstChild){this.leafFallback(e,t);break e}let u=a&&a.skip?t:this.readStyles(e,t);u&&this.addAll(e,u),c&&this.sync(i),this.needsBlock=d}else{let c=this.readStyles(e,t);c&&this.addElementByRule(e,a,c,a.consuming===!1?l:void 0)}this.localPreserveWS=s}leafFallback(e,t){e.nodeName=="BR"&&this.top.type&&this.top.type.inlineContent&&this.addTextNode(e.ownerDocument.createTextNode(` +`),t)}ignoreFallback(e,t){e.nodeName=="BR"&&(!this.top.type||!this.top.type.inlineContent)&&this.findPlace(this.parser.schema.text("-"),t,!0)}readStyles(e,t){let r=e.style;if(r&&r.length)for(let s=0;s!a.clearMark(c)):t=t.concat(this.parser.schema.marks[a.mark].create(a.attrs)),a.consuming===!1)l=a;else break}}return t}addElementByRule(e,t,r,s){let i,o;if(t.node)if(o=this.parser.schema.nodes[t.node],o.isLeaf)this.insertNode(o.create(t.attrs),r,e.nodeName=="BR")||this.leafFallback(e,r);else{let a=this.enter(o,t.attrs||null,r,t.preserveWhitespace);a&&(i=!0,r=a)}else{let a=this.parser.schema.marks[t.mark];r=r.concat(a.create(t.attrs))}let l=this.top;if(o&&o.isLeaf)this.findInside(e);else if(s)this.addElement(e,r,s);else if(t.getContent)this.findInside(e),t.getContent(e,this.parser.schema).forEach(a=>this.insertNode(a,r,!1));else{let a=e;typeof t.contentElement=="string"?a=e.querySelector(t.contentElement):typeof t.contentElement=="function"?a=t.contentElement(e):t.contentElement&&(a=t.contentElement),this.findAround(e,a,!0),this.addAll(a,r),this.findAround(e,a,!1)}i&&this.sync(l)&&this.open--}addAll(e,t,r,s){let i=r||0;for(let o=r?e.childNodes[r]:e.firstChild,l=s==null?null:e.childNodes[s];o!=l;o=o.nextSibling,++i)this.findAtPoint(e,i),this.addDOM(o,t);this.findAtPoint(e,i)}findPlace(e,t,r){let s,i;for(let o=this.open,l=0;o>=0;o--){let a=this.nodes[o],c=a.findWrapping(e);if(c&&(!s||s.length>c.length+l)&&(s=c,i=a,!c.length))break;if(a.solid){if(r)break;l+=2}}if(!s)return null;this.sync(i);for(let o=0;o(o.type?o.type.allowsMarkType(c.type):ao(c.type,e))?(a=c.addToSet(a),!1):!0),this.nodes.push(new Bn(e,t,a,s,null,l)),this.open++,r}closeExtra(e=!1){let t=this.nodes.length-1;if(t>this.open){for(;t>this.open;t--)this.nodes[t-1].content.push(this.nodes[t].finish(e));this.nodes.length=this.open+1}}finish(){return this.open=0,this.closeExtra(this.isOpen),this.nodes[0].finish(!!(this.isOpen||this.options.topOpen))}sync(e){for(let t=this.open;t>=0;t--){if(this.nodes[t]==e)return this.open=t,!0;this.localPreserveWS&&(this.nodes[t].options|=xn)}return!1}get currentPos(){this.closeExtra();let e=0;for(let t=this.open;t>=0;t--){let r=this.nodes[t].content;for(let s=r.length-1;s>=0;s--)e+=r[s].nodeSize;t&&e++}return e}findAtPoint(e,t){if(this.find)for(let r=0;r-1)return e.split(/\s*\|\s*/).some(this.matchesContext,this);let t=e.split("/"),r=this.options.context,s=!this.isOpen&&(!r||r.parent.type==this.nodes[0].type),i=-(r?r.depth+1:0)+(s?0:1),o=(l,a)=>{for(;l>=0;l--){let c=t[l];if(c==""){if(l==t.length-1||l==0)continue;for(;a>=i;a--)if(o(l-1,a))return!0;return!1}else{let d=a>0||a==0&&s?this.nodes[a].type:r&&a>=i?r.node(a-i).type:null;if(!d||d.name!=c&&!d.isInGroup(c))return!1;a--}}return!0};return o(t.length-1,this.open)}textblockFromContext(){let e=this.options.context;if(e)for(let t=e.depth;t>=0;t--){let r=e.node(t).contentMatchAt(e.indexAfter(t)).defaultType;if(r&&r.isTextblock&&r.defaultAttrs)return r}for(let t in this.parser.schema.nodes){let r=this.parser.schema.nodes[t];if(r.isTextblock&&r.defaultAttrs)return r}}}function cd(n){for(let e=n.firstChild,t=null;e;e=e.nextSibling){let r=e.nodeType==1?e.nodeName.toLowerCase():null;r&&Xl.hasOwnProperty(r)&&t?(t.appendChild(e),e=t):r=="li"?t=e:r&&(t=null)}}function dd(n,e){return(n.matches||n.msMatchesSelector||n.webkitMatchesSelector||n.mozMatchesSelector).call(n,e)}function lo(n){let e={};for(let t in n)e[t]=n[t];return e}function ao(n,e){let t=e.schema.nodes;for(let r in t){let s=t[r];if(!s.allowsMarkType(n))continue;let i=[],o=l=>{i.push(l);for(let a=0;a{if(i.length||o.marks.length){let l=0,a=0;for(;l=0;s--){let i=this.serializeMark(e.marks[s],e.isInline,t);i&&((i.contentDOM||i.dom).appendChild(r),r=i.dom)}return r}serializeMark(e,t,r={}){let s=this.marks[e.type.name];return s&&Xn(cs(r),s(e,t),null,e.attrs)}static renderSpec(e,t,r=null,s){return Xn(e,t,r,s)}static fromSchema(e){return e.cached.domSerializer||(e.cached.domSerializer=new zt(this.nodesFromSchema(e),this.marksFromSchema(e)))}static nodesFromSchema(e){let t=co(e.nodes);return t.text||(t.text=r=>r.text),t}static marksFromSchema(e){return co(e.marks)}}function co(n){let e={};for(let t in n){let r=n[t].spec.toDOM;r&&(e[t]=r)}return e}function cs(n){return n.document||window.document}const uo=new WeakMap;function ud(n){let e=uo.get(n);return e===void 0&&uo.set(n,e=fd(n)),e}function fd(n){let e=null;function t(r){if(r&&typeof r=="object")if(Array.isArray(r))if(typeof r[0]=="string")e||(e=[]),e.push(r);else for(let s=0;s-1)throw new RangeError("Using an array from an attribute object as a DOM spec. This may be an attempted cross site scripting attack.");let o=s.indexOf(" ");o>0&&(t=s.slice(0,o),s=s.slice(o+1));let l,a=t?n.createElementNS(t,s):n.createElement(s),c=e[1],d=1;if(c&&typeof c=="object"&&c.nodeType==null&&!Array.isArray(c)){d=2;for(let u in c)if(c[u]!=null){let f=u.indexOf(" ");f>0?a.setAttributeNS(u.slice(0,f),u.slice(f+1),c[u]):u=="style"&&a.style?a.style.cssText=c[u]:a.setAttribute(u,c[u])}}for(let u=d;ud)throw new RangeError("Content hole must be the only child of its parent node");return{dom:a,contentDOM:a}}else{let{dom:h,contentDOM:p}=Xn(n,f,t,r);if(a.appendChild(h),p){if(l)throw new RangeError("Multiple content holes");l=p}}}return{dom:a,contentDOM:l}}const Ql=65535,Zl=Math.pow(2,16);function hd(n,e){return n+e*Zl}function fo(n){return n&Ql}function pd(n){return(n-(n&Ql))/Zl}const ea=1,ta=2,Qn=4,na=8;class Fs{constructor(e,t,r){this.pos=e,this.delInfo=t,this.recover=r}get deleted(){return(this.delInfo&na)>0}get deletedBefore(){return(this.delInfo&(ea|Qn))>0}get deletedAfter(){return(this.delInfo&(ta|Qn))>0}get deletedAcross(){return(this.delInfo&Qn)>0}}class Se{constructor(e,t=!1){if(this.ranges=e,this.inverted=t,!e.length&&Se.empty)return Se.empty}recover(e){let t=0,r=fo(e);if(!this.inverted)for(let s=0;se)break;let c=this.ranges[l+i],d=this.ranges[l+o],u=a+c;if(e<=u){let f=c?e==a?-1:e==u?1:t:t,h=a+s+(f<0?0:d);if(r)return h;let p=e==(t<0?a:u)?null:hd(l/3,e-a),m=e==a?ta:e==u?ea:Qn;return(t<0?e!=a:e!=u)&&(m|=na),new Fs(h,m,p)}s+=d-c}return r?e+s:new Fs(e+s,0,null)}touches(e,t){let r=0,s=fo(t),i=this.inverted?2:1,o=this.inverted?1:2;for(let l=0;le)break;let c=this.ranges[l+i],d=a+c;if(e<=d&&l==s*3)return!0;r+=this.ranges[l+o]-c}return!1}forEach(e){let t=this.inverted?2:1,r=this.inverted?1:2;for(let s=0,i=0;s=0;t--){let s=e.getMirror(t);this.appendMap(e._maps[t].invert(),s!=null&&s>t?r-s-1:void 0)}}invert(){let e=new Sn;return e.appendMappingInverted(this),e}map(e,t=1){if(this.mirror)return this._map(e,t,!0);for(let r=this.from;ri&&a!o.isAtom||!l.type.allowsMarkType(this.mark.type)?o:o.mark(this.mark.addToSet(o.marks)),s),t.openStart,t.openEnd);return te.fromReplace(e,this.from,this.to,i)}invert(){return new Be(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),r=e.mapResult(this.to,-1);return t.deleted&&r.deleted||t.pos>=r.pos?null:new st(t.pos,r.pos,this.mark)}merge(e){return e instanceof st&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new st(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"addMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if(typeof t.from!="number"||typeof t.to!="number")throw new RangeError("Invalid input for AddMarkStep.fromJSON");return new st(t.from,t.to,e.markFromJSON(t.mark))}}me.jsonID("addMark",st);class Be extends me{constructor(e,t,r){super(),this.from=e,this.to=t,this.mark=r}apply(e){let t=e.slice(this.from,this.to),r=new T(mi(t.content,s=>s.mark(this.mark.removeFromSet(s.marks)),e),t.openStart,t.openEnd);return te.fromReplace(e,this.from,this.to,r)}invert(){return new st(this.from,this.to,this.mark)}map(e){let t=e.mapResult(this.from,1),r=e.mapResult(this.to,-1);return t.deleted&&r.deleted||t.pos>=r.pos?null:new Be(t.pos,r.pos,this.mark)}merge(e){return e instanceof Be&&e.mark.eq(this.mark)&&this.from<=e.to&&this.to>=e.from?new Be(Math.min(this.from,e.from),Math.max(this.to,e.to),this.mark):null}toJSON(){return{stepType:"removeMark",mark:this.mark.toJSON(),from:this.from,to:this.to}}static fromJSON(e,t){if(typeof t.from!="number"||typeof t.to!="number")throw new RangeError("Invalid input for RemoveMarkStep.fromJSON");return new Be(t.from,t.to,e.markFromJSON(t.mark))}}me.jsonID("removeMark",Be);class it extends me{constructor(e,t){super(),this.pos=e,this.mark=t}apply(e){let t=e.nodeAt(this.pos);if(!t)return te.fail("No node at mark step's position");let r=t.type.create(t.attrs,null,this.mark.addToSet(t.marks));return te.fromReplace(e,this.pos,this.pos+1,new T(k.from(r),0,t.isLeaf?0:1))}invert(e){let t=e.nodeAt(this.pos);if(t){let r=this.mark.addToSet(t.marks);if(r.length==t.marks.length){for(let s=0;sr.pos?null:new se(t.pos,r.pos,s,i,this.slice,this.insert,this.structure)}toJSON(){let e={stepType:"replaceAround",from:this.from,to:this.to,gapFrom:this.gapFrom,gapTo:this.gapTo,insert:this.insert};return this.slice.size&&(e.slice=this.slice.toJSON()),this.structure&&(e.structure=!0),e}static fromJSON(e,t){if(typeof t.from!="number"||typeof t.to!="number"||typeof t.gapFrom!="number"||typeof t.gapTo!="number"||typeof t.insert!="number")throw new RangeError("Invalid input for ReplaceAroundStep.fromJSON");return new se(t.from,t.to,t.gapFrom,t.gapTo,T.fromJSON(e,t.slice),t.insert,!!t.structure)}}me.jsonID("replaceAround",se);function $s(n,e,t){let r=n.resolve(e),s=t-e,i=r.depth;for(;s>0&&i>0&&r.indexAfter(i)==r.node(i).childCount;)i--,s--;if(s>0){let o=r.node(i).maybeChild(r.indexAfter(i));for(;s>0;){if(!o||o.isLeaf)return!0;o=o.firstChild,s--}}return!1}function md(n,e,t,r){let s=[],i=[],o,l;n.doc.nodesBetween(e,t,(a,c,d)=>{if(!a.isInline)return;let u=a.marks;if(!r.isInSet(u)&&d.type.allowsMarkType(r.type)){let f=Math.max(c,e),h=Math.min(c+a.nodeSize,t),p=r.addToSet(u);for(let m=0;mn.step(a)),i.forEach(a=>n.step(a))}function gd(n,e,t,r){let s=[],i=0;n.doc.nodesBetween(e,t,(o,l)=>{if(!o.isInline)return;i++;let a=null;if(r instanceof _r){let c=o.marks,d;for(;d=r.isInSet(c);)(a||(a=[])).push(d),c=d.removeFromSet(c)}else r?r.isInSet(o.marks)&&(a=[r]):a=o.marks;if(a&&a.length){let c=Math.min(l+o.nodeSize,t);for(let d=0;dn.step(new Be(o.from,o.to,o.style)))}function gi(n,e,t,r=t.contentMatch,s=!0){let i=n.doc.nodeAt(e),o=[],l=e+1;for(let a=0;a=0;a--)n.step(o[a])}function yd(n,e,t){return(e==0||n.canReplace(e,n.childCount))&&(t==n.childCount||n.canReplace(0,t))}function Zt(n){let t=n.parent.content.cutByIndex(n.startIndex,n.endIndex);for(let r=n.depth;;--r){let s=n.$from.node(r),i=n.$from.index(r),o=n.$to.indexAfter(r);if(rt;p--)m||r.index(p)>0?(m=!0,d=k.from(r.node(p).copy(d)),u++):a--;let f=k.empty,h=0;for(let p=i,m=!1;p>t;p--)m||s.after(p+1)=0;o--){if(r.size){let l=t[o].type.contentMatch.matchFragment(r);if(!l||!l.validEnd)throw new RangeError("Wrapper type given to Transform.wrap does not form valid content of its parent wrapper")}r=k.from(t[o].type.create(t[o].attrs,r))}let s=e.start,i=e.end;n.step(new se(s,i,s,i,new T(r,0,0),t.length,!0))}function Sd(n,e,t,r,s){if(!r.isTextblock)throw new RangeError("Type given to setBlockType should be a textblock");let i=n.steps.length;n.doc.nodesBetween(e,t,(o,l)=>{let a=typeof s=="function"?s(o):s;if(o.isTextblock&&!o.hasMarkup(r,a)&&wd(n.doc,n.mapping.slice(i).map(l),r)){let c=null;if(r.schema.linebreakReplacement){let h=r.whitespace=="pre",p=!!r.contentMatch.matchType(r.schema.linebreakReplacement);h&&!p?c=!1:!h&&p&&(c=!0)}c===!1&&sa(n,o,l,i),gi(n,n.mapping.slice(i).map(l,1),r,void 0,c===null);let d=n.mapping.slice(i),u=d.map(l,1),f=d.map(l+o.nodeSize,1);return n.step(new se(u,f,u+1,f-1,new T(k.from(r.create(a,null,o.marks)),0,0),1,!0)),c===!0&&ra(n,o,l,i),!1}})}function ra(n,e,t,r){e.forEach((s,i)=>{if(s.isText){let o,l=/\r?\n|\r/g;for(;o=l.exec(s.text);){let a=n.mapping.slice(r).map(t+1+i+o.index);n.replaceWith(a,a+1,e.type.schema.linebreakReplacement.create())}}})}function sa(n,e,t,r){e.forEach((s,i)=>{if(s.type==s.type.schema.linebreakReplacement){let o=n.mapping.slice(r).map(t+1+i);n.replaceWith(o,o+1,e.type.schema.text(` +`))}})}function wd(n,e,t){let r=n.resolve(e),s=r.index();return r.parent.canReplaceWith(s,s+1,t)}function Md(n,e,t,r,s){let i=n.doc.nodeAt(e);if(!i)throw new RangeError("No node at given position");t||(t=i.type);let o=t.create(r,null,s||i.marks);if(i.isLeaf)return n.replaceWith(e,e+i.nodeSize,o);if(!t.validContent(i.content))throw new RangeError("Invalid content for node type "+t.name);n.step(new se(e,e+i.nodeSize,e+1,e+i.nodeSize-1,new T(k.from(o),0,0),1,!0))}function Kt(n,e,t=1,r){let s=n.resolve(e),i=s.depth-t,o=r&&r[r.length-1]||s.parent;if(i<0||s.parent.type.spec.isolating||!s.parent.canReplace(s.index(),s.parent.childCount)||!o.type.validContent(s.parent.content.cutByIndex(s.index(),s.parent.childCount)))return!1;for(let c=s.depth-1,d=t-2;c>i;c--,d--){let u=s.node(c),f=s.index(c);if(u.type.spec.isolating)return!1;let h=u.content.cutByIndex(f,u.childCount),p=r&&r[d+1];p&&(h=h.replaceChild(0,p.type.create(p.attrs)));let m=r&&r[d]||u;if(!u.canReplace(f+1,u.childCount)||!m.type.validContent(h))return!1}let l=s.indexAfter(i),a=r&&r[0];return s.node(i).canReplaceWith(l,l,a?a.type:s.node(i+1).type)}function Td(n,e,t=1,r){let s=n.doc.resolve(e),i=k.empty,o=k.empty;for(let l=s.depth,a=s.depth-t,c=t-1;l>a;l--,c--){i=k.from(s.node(l).copy(i));let d=r&&r[c];o=k.from(d?d.type.create(d.attrs,o):s.node(l).copy(o))}n.step(new re(e,e,new T(i.append(o),t,t),!0))}function pt(n,e){let t=n.resolve(e),r=t.index();return ia(t.nodeBefore,t.nodeAfter)&&t.parent.canReplace(r,r+1)}function Ed(n,e){e.content.size||n.type.compatibleContent(e.type);let t=n.contentMatchAt(n.childCount),{linebreakReplacement:r}=n.type.schema;for(let s=0;s0?(i=r.node(s+1),l++,o=r.node(s).maybeChild(l)):(i=r.node(s).maybeChild(l-1),o=r.node(s+1)),i&&!i.isTextblock&&ia(i,o)&&r.node(s).canReplace(l,l+1))return e;if(s==0)break;e=t<0?r.before(s):r.after(s)}}function Ad(n,e,t){let r=null,{linebreakReplacement:s}=n.doc.type.schema,i=n.doc.resolve(e-t),o=i.node().type;if(s&&o.inlineContent){let d=o.whitespace=="pre",u=!!o.contentMatch.matchType(s);d&&!u?r=!1:!d&&u&&(r=!0)}let l=n.steps.length;if(r===!1){let d=n.doc.resolve(e+t);sa(n,d.node(),d.before(),l)}o.inlineContent&&gi(n,e+t-1,o,i.node().contentMatchAt(i.index()),r==null);let a=n.mapping.slice(l),c=a.map(e-t);if(n.step(new re(c,a.map(e+t,-1),T.empty,!0)),r===!0){let d=n.doc.resolve(c);ra(n,d.node(),d.before(),n.steps.length)}return n}function Od(n,e,t){let r=n.resolve(e);if(r.parent.canReplaceWith(r.index(),r.index(),t))return e;if(r.parentOffset==0)for(let s=r.depth-1;s>=0;s--){let i=r.index(s);if(r.node(s).canReplaceWith(i,i,t))return r.before(s+1);if(i>0)return null}if(r.parentOffset==r.parent.content.size)for(let s=r.depth-1;s>=0;s--){let i=r.indexAfter(s);if(r.node(s).canReplaceWith(i,i,t))return r.after(s+1);if(i=0;o--){let l=o==r.depth?0:r.pos<=(r.start(o+1)+r.end(o+1))/2?-1:1,a=r.index(o)+(l>0?1:0),c=r.node(o),d=!1;if(i==1)d=c.canReplace(a,a,s);else{let u=c.contentMatchAt(a).findWrapping(s.firstChild.type);d=u&&c.canReplaceWith(a,a,u[0])}if(d)return l==0?r.pos:l<0?r.before(o+1):r.after(o+1)}return null}function Ur(n,e,t=e,r=T.empty){if(e==t&&!r.size)return null;let s=n.resolve(e),i=n.resolve(t);return la(s,i,r)?new re(e,t,r):new Nd(s,i,r).fit()}function la(n,e,t){return!t.openStart&&!t.openEnd&&n.start()==e.start()&&n.parent.canReplace(n.index(),e.index(),t.content)}class Nd{constructor(e,t,r){this.$from=e,this.$to=t,this.unplaced=r,this.frontier=[],this.placed=k.empty;for(let s=0;s<=e.depth;s++){let i=e.node(s);this.frontier.push({type:i.type,match:i.contentMatchAt(e.indexAfter(s))})}for(let s=e.depth;s>0;s--)this.placed=k.from(e.node(s).copy(this.placed))}get depth(){return this.frontier.length-1}fit(){for(;this.unplaced.size;){let c=this.findFittable();c?this.placeNodes(c):this.openMore()||this.dropNode()}let e=this.mustMoveInline(),t=this.placed.size-this.depth-this.$from.depth,r=this.$from,s=this.close(e<0?this.$to:r.doc.resolve(e));if(!s)return null;let i=this.placed,o=r.depth,l=s.depth;for(;o&&l&&i.childCount==1;)i=i.firstChild.content,o--,l--;let a=new T(i,o,l);return e>-1?new se(r.pos,e,this.$to.pos,this.$to.end(),a,t):a.size||r.pos!=this.$to.pos?new re(r.pos,s.pos,a):null}findFittable(){let e=this.unplaced.openStart;for(let t=this.unplaced.content,r=0,s=this.unplaced.openEnd;r1&&(s=0),i.type.spec.isolating&&s<=r){e=r;break}t=i.content}for(let t=1;t<=2;t++)for(let r=t==1?e:this.unplaced.openStart;r>=0;r--){let s,i=null;r?(i=us(this.unplaced.content,r-1).firstChild,s=i.content):s=this.unplaced.content;let o=s.firstChild;for(let l=this.depth;l>=0;l--){let{type:a,match:c}=this.frontier[l],d,u=null;if(t==1&&(o?c.matchType(o.type)||(u=c.fillBefore(k.from(o),!1)):i&&a.compatibleContent(i.type)))return{sliceDepth:r,frontierDepth:l,parent:i,inject:u};if(t==2&&o&&(d=c.findWrapping(o.type)))return{sliceDepth:r,frontierDepth:l,parent:i,wrap:d};if(i&&c.matchType(i.type))break}}}openMore(){let{content:e,openStart:t,openEnd:r}=this.unplaced,s=us(e,t);return!s.childCount||s.firstChild.isLeaf?!1:(this.unplaced=new T(e,t+1,Math.max(r,s.size+t>=e.size-r?t+1:0)),!0)}dropNode(){let{content:e,openStart:t,openEnd:r}=this.unplaced,s=us(e,t);if(s.childCount<=1&&t>0){let i=e.size-t<=t+s.size;this.unplaced=new T(on(e,t-1,1),t-1,i?t-1:r)}else this.unplaced=new T(on(e,t,1),t,r)}placeNodes({sliceDepth:e,frontierDepth:t,parent:r,inject:s,wrap:i}){for(;this.depth>t;)this.closeFrontierNode();if(i)for(let m=0;m1||a==0||m.content.size)&&(u=g,d.push(aa(m.mark(f.allowedMarks(m.marks)),c==1?a:0,c==l.childCount?h:-1)))}let p=c==l.childCount;p||(h=-1),this.placed=ln(this.placed,t,k.from(d)),this.frontier[t].match=u,p&&h<0&&r&&r.type==this.frontier[this.depth].type&&this.frontier.length>1&&this.closeFrontierNode();for(let m=0,g=l;m1&&s==this.$to.end(--r);)++s;return s}findCloseLevel(e){e:for(let t=Math.min(this.depth,e.depth);t>=0;t--){let{match:r,type:s}=this.frontier[t],i=t=0;l--){let{match:a,type:c}=this.frontier[l],d=fs(e,l,c,a,!0);if(!d||d.childCount)continue e}return{depth:t,fit:o,move:i?e.doc.resolve(e.after(t+1)):e}}}}close(e){let t=this.findCloseLevel(e);if(!t)return null;for(;this.depth>t.depth;)this.closeFrontierNode();t.fit.childCount&&(this.placed=ln(this.placed,t.depth,t.fit)),e=t.move;for(let r=t.depth+1;r<=e.depth;r++){let s=e.node(r),i=s.type.contentMatch.fillBefore(s.content,!0,e.index(r));this.openFrontierNode(s.type,s.attrs,i)}return e}openFrontierNode(e,t=null,r){let s=this.frontier[this.depth];s.match=s.match.matchType(e),this.placed=ln(this.placed,this.depth,k.from(e.create(t,r))),this.frontier.push({type:e,match:e.contentMatch})}closeFrontierNode(){let t=this.frontier.pop().match.fillBefore(k.empty,!0);t.childCount&&(this.placed=ln(this.placed,this.frontier.length,t))}}function on(n,e,t){return e==0?n.cutByIndex(t,n.childCount):n.replaceChild(0,n.firstChild.copy(on(n.firstChild.content,e-1,t)))}function ln(n,e,t){return e==0?n.append(t):n.replaceChild(n.childCount-1,n.lastChild.copy(ln(n.lastChild.content,e-1,t)))}function us(n,e){for(let t=0;t1&&(r=r.replaceChild(0,aa(r.firstChild,e-1,r.childCount==1?t-1:0))),e>0&&(r=n.type.contentMatch.fillBefore(r).append(r),t<=0&&(r=r.append(n.type.contentMatch.matchFragment(r).fillBefore(k.empty,!0)))),n.copy(r)}function fs(n,e,t,r,s){let i=n.node(e),o=s?n.indexAfter(e):n.index(e);if(o==i.childCount&&!t.compatibleContent(i.type))return null;let l=r.fillBefore(i.content,!0,o);return l&&!vd(t,i.content,o)?l:null}function vd(n,e,t){for(let r=t;r0;f--,h--){let p=s.node(f).type.spec;if(p.defining||p.definingAsContext||p.isolating)break;o.indexOf(f)>-1?l=f:s.before(f)==h&&o.splice(1,0,-f)}let a=o.indexOf(l),c=[],d=r.openStart;for(let f=r.content,h=0;;h++){let p=f.firstChild;if(c.push(p),h==r.openStart)break;f=p.content}for(let f=d-1;f>=0;f--){let h=c[f],p=Rd(h.type);if(p&&!h.sameMarkup(s.node(Math.abs(l)-1)))d=f;else if(p||!h.type.isTextblock)break}for(let f=r.openStart;f>=0;f--){let h=(f+d+1)%(r.openStart+1),p=c[h];if(p)for(let m=0;m=0&&(n.replace(e,t,r),!(n.steps.length>u));f--){let h=o[f];h<0||(e=s.before(h),t=i.after(h))}}function ca(n,e,t,r,s){if(er){let i=s.contentMatchAt(0),o=i.fillBefore(n).append(n);n=o.append(i.matchFragment(o).fillBefore(k.empty,!0))}return n}function Id(n,e,t,r){if(!r.isInline&&e==t&&n.doc.resolve(e).parent.content.size){let s=Od(n.doc,e,r.type);s!=null&&(e=t=s)}n.replaceRange(e,t,new T(k.from(r),0,0))}function Ld(n,e,t){let r=n.doc.resolve(e),s=n.doc.resolve(t),i=da(r,s);for(let o=0;o0&&(a||r.node(l-1).canReplace(r.index(l-1),s.indexAfter(l-1))))return n.delete(r.before(l),s.after(l))}for(let o=1;o<=r.depth&&o<=s.depth;o++)if(e-r.start(o)==r.depth-o&&t>r.end(o)&&s.end(o)-t!=s.depth-o&&r.start(o-1)==s.start(o-1)&&r.node(o-1).canReplace(r.index(o-1),s.index(o-1)))return n.delete(r.before(o),t);n.delete(e,t)}function da(n,e){let t=[],r=Math.min(n.depth,e.depth);for(let s=r;s>=0;s--){let i=n.start(s);if(ie.pos+(e.depth-s)||n.node(s).type.spec.isolating||e.node(s).type.spec.isolating)break;(i==e.start(s)||s==n.depth&&s==e.depth&&n.parent.inlineContent&&e.parent.inlineContent&&s&&e.start(s-1)==i-1)&&t.push(s)}return t}class Ut extends me{constructor(e,t,r){super(),this.pos=e,this.attr=t,this.value=r}apply(e){let t=e.nodeAt(this.pos);if(!t)return te.fail("No node at attribute step's position");let r=Object.create(null);for(let i in t.attrs)r[i]=t.attrs[i];r[this.attr]=this.value;let s=t.type.create(r,null,t.marks);return te.fromReplace(e,this.pos,this.pos+1,new T(k.from(s),0,t.isLeaf?0:1))}getMap(){return Se.empty}invert(e){return new Ut(this.pos,this.attr,e.nodeAt(this.pos).attrs[this.attr])}map(e){let t=e.mapResult(this.pos,1);return t.deletedAfter?null:new Ut(t.pos,this.attr,this.value)}toJSON(){return{stepType:"attr",pos:this.pos,attr:this.attr,value:this.value}}static fromJSON(e,t){if(typeof t.pos!="number"||typeof t.attr!="string")throw new RangeError("Invalid input for AttrStep.fromJSON");return new Ut(t.pos,t.attr,t.value)}}me.jsonID("attr",Ut);class wn extends me{constructor(e,t){super(),this.attr=e,this.value=t}apply(e){let t=Object.create(null);for(let s in e.attrs)t[s]=e.attrs[s];t[this.attr]=this.value;let r=e.type.create(t,e.content,e.marks);return te.ok(r)}getMap(){return Se.empty}invert(e){return new wn(this.attr,e.attrs[this.attr])}map(e){return this}toJSON(){return{stepType:"docAttr",attr:this.attr,value:this.value}}static fromJSON(e,t){if(typeof t.attr!="string")throw new RangeError("Invalid input for DocAttrStep.fromJSON");return new wn(t.attr,t.value)}}me.jsonID("docAttr",wn);let Jt=class extends Error{};Jt=function n(e){let t=Error.call(this,e);return t.__proto__=n.prototype,t};Jt.prototype=Object.create(Error.prototype);Jt.prototype.constructor=Jt;Jt.prototype.name="TransformError";class bi{constructor(e){this.doc=e,this.steps=[],this.docs=[],this.mapping=new Sn}get before(){return this.docs.length?this.docs[0]:this.doc}step(e){let t=this.maybeStep(e);if(t.failed)throw new Jt(t.failed);return this}maybeStep(e){let t=e.apply(this.doc);return t.failed||this.addStep(e,t.doc),t}get docChanged(){return this.steps.length>0}addStep(e,t){this.docs.push(this.doc),this.steps.push(e),this.mapping.appendMap(e.getMap()),this.doc=t}replace(e,t=e,r=T.empty){let s=Ur(this.doc,e,t,r);return s&&this.step(s),this}replaceWith(e,t,r){return this.replace(e,t,new T(k.from(r),0,0))}delete(e,t){return this.replace(e,t,T.empty)}insert(e,t){return this.replaceWith(e,e,t)}replaceRange(e,t,r){return Dd(this,e,t,r),this}replaceRangeWith(e,t,r){return Id(this,e,t,r),this}deleteRange(e,t){return Ld(this,e,t),this}lift(e,t){return bd(this,e,t),this}join(e,t=1){return Ad(this,e,t),this}wrap(e,t){return xd(this,e,t),this}setBlockType(e,t=e,r,s=null){return Sd(this,e,t,r,s),this}setNodeMarkup(e,t,r=null,s){return Md(this,e,t,r,s),this}setNodeAttribute(e,t,r){return this.step(new Ut(e,t,r)),this}setDocAttribute(e,t){return this.step(new wn(e,t)),this}addNodeMark(e,t){return this.step(new it(e,t)),this}removeNodeMark(e,t){let r=this.doc.nodeAt(e);if(!r)throw new RangeError("No node at position "+e);if(t instanceof j)t.isInSet(r.marks)&&this.step(new Rt(e,t));else{let s=r.marks,i,o=[];for(;i=t.isInSet(s);)o.push(new Rt(e,i)),s=i.removeFromSet(s);for(let l=o.length-1;l>=0;l--)this.step(o[l])}return this}split(e,t=1,r){return Td(this,e,t,r),this}addMark(e,t,r){return md(this,e,t,r),this}removeMark(e,t,r){return gd(this,e,t,r),this}clearIncompatible(e,t,r){return gi(this,e,t,r),this}}const hs=Object.create(null);class I{constructor(e,t,r){this.$anchor=e,this.$head=t,this.ranges=r||[new ua(e.min(t),e.max(t))]}get anchor(){return this.$anchor.pos}get head(){return this.$head.pos}get from(){return this.$from.pos}get to(){return this.$to.pos}get $from(){return this.ranges[0].$from}get $to(){return this.ranges[0].$to}get empty(){let e=this.ranges;for(let t=0;t=0;i--){let o=t<0?$t(e.node(0),e.node(i),e.before(i+1),e.index(i),t,r):$t(e.node(0),e.node(i),e.after(i+1),e.index(i)+1,t,r);if(o)return o}return null}static near(e,t=1){return this.findFrom(e,t)||this.findFrom(e,-t)||new Ne(e.node(0))}static atStart(e){return $t(e,e,0,0,1)||new Ne(e)}static atEnd(e){return $t(e,e,e.content.size,e.childCount,-1)||new Ne(e)}static fromJSON(e,t){if(!t||!t.type)throw new RangeError("Invalid input for Selection.fromJSON");let r=hs[t.type];if(!r)throw new RangeError(`No selection type ${t.type} defined`);return r.fromJSON(e,t)}static jsonID(e,t){if(e in hs)throw new RangeError("Duplicate use of selection JSON ID "+e);return hs[e]=t,t.prototype.jsonID=e,t}getBookmark(){return D.between(this.$anchor,this.$head).getBookmark()}}I.prototype.visible=!0;class ua{constructor(e,t){this.$from=e,this.$to=t}}let po=!1;function mo(n){!po&&!n.parent.inlineContent&&(po=!0,console.warn("TextSelection endpoint not pointing into a node with inline content ("+n.parent.type.name+")"))}class D extends I{constructor(e,t=e){mo(e),mo(t),super(e,t)}get $cursor(){return this.$anchor.pos==this.$head.pos?this.$head:null}map(e,t){let r=e.resolve(t.map(this.head));if(!r.parent.inlineContent)return I.near(r);let s=e.resolve(t.map(this.anchor));return new D(s.parent.inlineContent?s:r,r)}replace(e,t=T.empty){if(super.replace(e,t),t==T.empty){let r=this.$from.marksAcross(this.$to);r&&e.ensureMarks(r)}}eq(e){return e instanceof D&&e.anchor==this.anchor&&e.head==this.head}getBookmark(){return new qr(this.anchor,this.head)}toJSON(){return{type:"text",anchor:this.anchor,head:this.head}}static fromJSON(e,t){if(typeof t.anchor!="number"||typeof t.head!="number")throw new RangeError("Invalid input for TextSelection.fromJSON");return new D(e.resolve(t.anchor),e.resolve(t.head))}static create(e,t,r=t){let s=e.resolve(t);return new this(s,r==t?s:e.resolve(r))}static between(e,t,r){let s=e.pos-t.pos;if((!r||s)&&(r=s>=0?1:-1),!t.parent.inlineContent){let i=I.findFrom(t,r,!0)||I.findFrom(t,-r,!0);if(i)t=i.$head;else return I.near(t,r)}return e.parent.inlineContent||(s==0?e=t:(e=(I.findFrom(e,-r,!0)||I.findFrom(e,r,!0)).$anchor,e.pos0?0:1);s>0?o=0;o+=s){let l=e.child(o);if(l.isAtom){if(!i&&R.isSelectable(l))return R.create(n,t-(s<0?l.nodeSize:0))}else{let a=$t(n,l,t+s,s<0?l.childCount:0,s,i);if(a)return a}t+=l.nodeSize*s}return null}function go(n,e,t){let r=n.steps.length-1;if(r{o==null&&(o=d)}),n.setSelection(I.near(n.doc.resolve(o),t))}const yo=1,Hn=2,bo=4;class zd extends bi{constructor(e){super(e.doc),this.curSelectionFor=0,this.updated=0,this.meta=Object.create(null),this.time=Date.now(),this.curSelection=e.selection,this.storedMarks=e.storedMarks}get selection(){return this.curSelectionFor0}setStoredMarks(e){return this.storedMarks=e,this.updated|=Hn,this}ensureMarks(e){return j.sameSet(this.storedMarks||this.selection.$from.marks(),e)||this.setStoredMarks(e),this}addStoredMark(e){return this.ensureMarks(e.addToSet(this.storedMarks||this.selection.$head.marks()))}removeStoredMark(e){return this.ensureMarks(e.removeFromSet(this.storedMarks||this.selection.$head.marks()))}get storedMarksSet(){return(this.updated&Hn)>0}addStep(e,t){super.addStep(e,t),this.updated=this.updated&~Hn,this.storedMarks=null}setTime(e){return this.time=e,this}replaceSelection(e){return this.selection.replace(this,e),this}replaceSelectionWith(e,t=!0){let r=this.selection;return t&&(e=e.mark(this.storedMarks||(r.empty?r.$from.marks():r.$from.marksAcross(r.$to)||j.none))),r.replaceWith(this,e),this}deleteSelection(){return this.selection.replace(this),this}insertText(e,t,r){let s=this.doc.type.schema;if(t==null)return e?this.replaceSelectionWith(s.text(e),!0):this.deleteSelection();{if(r==null&&(r=t),r=r??t,!e)return this.deleteRange(t,r);let i=this.storedMarks;if(!i){let o=this.doc.resolve(t);i=r==t?o.marks():o.marksAcross(this.doc.resolve(r))}return this.replaceRangeWith(t,r,s.text(e,i)),this.selection.empty||this.setSelection(I.near(this.selection.$to)),this}}setMeta(e,t){return this.meta[typeof e=="string"?e:e.key]=t,this}getMeta(e){return this.meta[typeof e=="string"?e:e.key]}get isGeneric(){for(let e in this.meta)return!1;return!0}scrollIntoView(){return this.updated|=bo,this}get scrolledIntoView(){return(this.updated&bo)>0}}function ko(n,e){return!e||!n?n:n.bind(e)}class an{constructor(e,t,r){this.name=e,this.init=ko(t.init,r),this.apply=ko(t.apply,r)}}const Bd=[new an("doc",{init(n){return n.doc||n.schema.topNodeType.createAndFill()},apply(n){return n.doc}}),new an("selection",{init(n,e){return n.selection||I.atStart(e.doc)},apply(n){return n.selection}}),new an("storedMarks",{init(n){return n.storedMarks||null},apply(n,e,t,r){return r.selection.$cursor?n.storedMarks:null}}),new an("scrollToSelection",{init(){return 0},apply(n,e){return n.scrolledIntoView?e+1:e}})];class ps{constructor(e,t){this.schema=e,this.plugins=[],this.pluginsByKey=Object.create(null),this.fields=Bd.slice(),t&&t.forEach(r=>{if(this.pluginsByKey[r.key])throw new RangeError("Adding different instances of a keyed plugin ("+r.key+")");this.plugins.push(r),this.pluginsByKey[r.key]=r,r.spec.state&&this.fields.push(new an(r.key,r.spec.state,r))})}}class jt{constructor(e){this.config=e}get schema(){return this.config.schema}get plugins(){return this.config.plugins}apply(e){return this.applyTransaction(e).state}filterTransaction(e,t=-1){for(let r=0;rr.toJSON())),e&&typeof e=="object")for(let r in e){if(r=="doc"||r=="selection")throw new RangeError("The JSON fields `doc` and `selection` are reserved");let s=e[r],i=s.spec.state;i&&i.toJSON&&(t[r]=i.toJSON.call(s,this[s.key]))}return t}static fromJSON(e,t,r){if(!t)throw new RangeError("Invalid input for EditorState.fromJSON");if(!e.schema)throw new RangeError("Required config field 'schema' missing");let s=new ps(e.schema,e.plugins),i=new jt(s);return s.fields.forEach(o=>{if(o.name=="doc")i.doc=lt.fromJSON(e.schema,t.doc);else if(o.name=="selection")i.selection=I.fromJSON(i.doc,t.selection);else if(o.name=="storedMarks")t.storedMarks&&(i.storedMarks=t.storedMarks.map(e.schema.markFromJSON));else{if(r)for(let l in r){let a=r[l],c=a.spec.state;if(a.key==o.name&&c&&c.fromJSON&&Object.prototype.hasOwnProperty.call(t,l)){i[o.name]=c.fromJSON.call(a,e,t[l],i);return}}i[o.name]=o.init(e,i)}}),i}}function fa(n,e,t){for(let r in n){let s=n[r];s instanceof Function?s=s.bind(e):r=="handleDOMEvents"&&(s=fa(s,e,{})),t[r]=s}return t}class Z{constructor(e){this.spec=e,this.props={},e.props&&fa(e.props,this,this.props),this.key=e.key?e.key.key:ha("plugin")}getState(e){return e[this.key]}}const ms=Object.create(null);function ha(n){return n in ms?n+"$"+ ++ms[n]:(ms[n]=0,n+"$")}class le{constructor(e="key"){this.key=ha(e)}get(e){return e.config.pluginsByKey[this.key]}getState(e){return e[this.key]}}const ce=function(n){for(var e=0;;e++)if(n=n.previousSibling,!n)return e},Gt=function(n){let e=n.assignedSlot||n.parentNode;return e&&e.nodeType==11?e.host:e};let Vs=null;const qe=function(n,e,t){let r=Vs||(Vs=document.createRange());return r.setEnd(n,t??n.nodeValue.length),r.setStart(n,e||0),r},Hd=function(){Vs=null},Dt=function(n,e,t,r){return t&&(Co(n,e,t,r,-1)||Co(n,e,t,r,1))},Fd=/^(img|br|input|textarea|hr)$/i;function Co(n,e,t,r,s){for(var i;;){if(n==t&&e==r)return!0;if(e==(s<0?0:Oe(n))){let o=n.parentNode;if(!o||o.nodeType!=1||Dn(n)||Fd.test(n.nodeName)||n.contentEditable=="false")return!1;e=ce(n)+(s<0?0:1),n=o}else if(n.nodeType==1){let o=n.childNodes[e+(s<0?-1:0)];if(o.nodeType==1&&o.contentEditable=="false")if(!((i=o.pmViewDesc)===null||i===void 0)&&i.ignoreForSelection)e+=s;else return!1;else n=o,e=s<0?Oe(n):0}else return!1}}function Oe(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function $d(n,e){for(;;){if(n.nodeType==3&&e)return n;if(n.nodeType==1&&e>0){if(n.contentEditable=="false")return null;n=n.childNodes[e-1],e=Oe(n)}else if(n.parentNode&&!Dn(n))e=ce(n),n=n.parentNode;else return null}}function Vd(n,e){for(;;){if(n.nodeType==3&&e2),Ae=Yt||(He?/Mac/.test(He.platform):!1),Kd=He?/Win/.test(He.platform):!1,Je=/Android \d/.test(mt),In=!!xo&&"webkitFontSmoothing"in xo.documentElement.style,Ud=In?+(/\bAppleWebKit\/(\d+)/.exec(navigator.userAgent)||[0,0])[1]:0;function qd(n){let e=n.defaultView&&n.defaultView.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:n.documentElement.clientWidth,top:0,bottom:n.documentElement.clientHeight}}function We(n,e){return typeof n=="number"?n:n[e]}function Jd(n){let e=n.getBoundingClientRect(),t=e.width/n.offsetWidth||1,r=e.height/n.offsetHeight||1;return{left:e.left,right:e.left+n.clientWidth*t,top:e.top,bottom:e.top+n.clientHeight*r}}function So(n,e,t){let r=n.someProp("scrollThreshold")||0,s=n.someProp("scrollMargin")||5,i=n.dom.ownerDocument;for(let o=t||n.dom;o;){if(o.nodeType!=1){o=Gt(o);continue}let l=o,a=l==i.body,c=a?qd(i):Jd(l),d=0,u=0;if(e.topc.bottom-We(r,"bottom")&&(u=e.bottom-e.top>c.bottom-c.top?e.top+We(s,"top")-c.top:e.bottom-c.bottom+We(s,"bottom")),e.leftc.right-We(r,"right")&&(d=e.right-c.right+We(s,"right")),d||u)if(a)i.defaultView.scrollBy(d,u);else{let h=l.scrollLeft,p=l.scrollTop;u&&(l.scrollTop+=u),d&&(l.scrollLeft+=d);let m=l.scrollLeft-h,g=l.scrollTop-p;e={left:e.left-m,top:e.top-g,right:e.right-m,bottom:e.bottom-g}}let f=a?"fixed":getComputedStyle(o).position;if(/^(fixed|sticky)$/.test(f))break;o=f=="absolute"?o.offsetParent:Gt(o)}}function Gd(n){let e=n.dom.getBoundingClientRect(),t=Math.max(0,e.top),r,s;for(let i=(e.left+e.right)/2,o=t+1;o=t-20){r=l,s=a.top;break}}return{refDOM:r,refTop:s,stack:ga(n.dom)}}function ga(n){let e=[],t=n.ownerDocument;for(let r=n;r&&(e.push({dom:r,top:r.scrollTop,left:r.scrollLeft}),n!=t);r=Gt(r));return e}function Yd({refDOM:n,refTop:e,stack:t}){let r=n?n.getBoundingClientRect().top:0;ya(t,r==0?0:r-e)}function ya(n,e){for(let t=0;t=l){o=Math.max(p.bottom,o),l=Math.min(p.top,l);let m=p.left>e.left?p.left-e.left:p.right=(p.left+p.right)/2?1:0));continue}}else p.top>e.top&&!a&&p.left<=e.left&&p.right>=e.left&&(a=d,c={left:Math.max(p.left,Math.min(p.right,e.left)),top:p.top});!t&&(e.left>=p.right&&e.top>=p.top||e.left>=p.left&&e.top>=p.bottom)&&(i=u+1)}}return!t&&a&&(t=a,s=c,r=0),t&&t.nodeType==3?Qd(t,s):!t||r&&t.nodeType==1?{node:n,offset:i}:ba(t,s)}function Qd(n,e){let t=n.nodeValue.length,r=document.createRange();for(let s=0;s=(i.left+i.right)/2?1:0)}}return{node:n,offset:0}}function Ci(n,e){return n.left>=e.left-1&&n.left<=e.right+1&&n.top>=e.top-1&&n.top<=e.bottom+1}function Zd(n,e){let t=n.parentNode;return t&&/^li$/i.test(t.nodeName)&&e.left(o.left+o.right)/2?1:-1}return n.docView.posFromDOM(r,s,i)}function tu(n,e,t,r){let s=-1;for(let i=e,o=!1;i!=n.dom;){let l=n.docView.nearestDesc(i,!0),a;if(!l)return null;if(l.dom.nodeType==1&&(l.node.isBlock&&l.parent||!l.contentDOM)&&((a=l.dom.getBoundingClientRect()).width||a.height)&&(l.node.isBlock&&l.parent&&!/^T(R|BODY|HEAD|FOOT)$/.test(l.dom.nodeName)&&(!o&&a.left>r.left||a.top>r.top?s=l.posBefore:(!o&&a.right-1?s:n.docView.posFromDOM(e,t,-1)}function ka(n,e,t){let r=n.childNodes.length;if(r&&t.tope.top&&s++}let c;In&&s&&r.nodeType==1&&(c=r.childNodes[s-1]).nodeType==1&&c.contentEditable=="false"&&c.getBoundingClientRect().top>=e.top&&s--,r==n.dom&&s==r.childNodes.length-1&&r.lastChild.nodeType==1&&e.top>r.lastChild.getBoundingClientRect().bottom?l=n.state.doc.content.size:(s==0||r.nodeType!=1||r.childNodes[s-1].nodeName!="BR")&&(l=tu(n,r,s,e))}l==null&&(l=eu(n,o,e));let a=n.docView.nearestDesc(o,!0);return{pos:l,inside:a?a.posAtStart-a.border:-1}}function wo(n){return n.top=0&&s==r.nodeValue.length?(a--,d=1):t<0?a--:c++,rn(Xe(qe(r,a,c),d),d<0)}if(!n.state.doc.resolve(e-(i||0)).parent.inlineContent){if(i==null&&s&&(t<0||s==Oe(r))){let a=r.childNodes[s-1];if(a.nodeType==1)return gs(a.getBoundingClientRect(),!1)}if(i==null&&s=0)}if(i==null&&s&&(t<0||s==Oe(r))){let a=r.childNodes[s-1],c=a.nodeType==3?qe(a,Oe(a)-(o?0:1)):a.nodeType==1&&(a.nodeName!="BR"||!a.nextSibling)?a:null;if(c)return rn(Xe(c,1),!1)}if(i==null&&s=0)}function rn(n,e){if(n.width==0)return n;let t=e?n.left:n.right;return{top:n.top,bottom:n.bottom,left:t,right:t}}function gs(n,e){if(n.height==0)return n;let t=e?n.top:n.bottom;return{top:t,bottom:t,left:n.left,right:n.right}}function xa(n,e,t){let r=n.state,s=n.root.activeElement;r!=e&&n.updateState(e),s!=n.dom&&n.focus();try{return t()}finally{r!=e&&n.updateState(r),s!=n.dom&&s&&s.focus()}}function su(n,e,t){let r=e.selection,s=t=="up"?r.$from:r.$to;return xa(n,e,()=>{let{node:i}=n.docView.domFromPos(s.pos,t=="up"?-1:1);for(;;){let l=n.docView.nearestDesc(i,!0);if(!l)break;if(l.node.isBlock){i=l.contentDOM||l.dom;break}i=l.dom.parentNode}let o=Ca(n,s.pos,1);for(let l=i.firstChild;l;l=l.nextSibling){let a;if(l.nodeType==1)a=l.getClientRects();else if(l.nodeType==3)a=qe(l,0,l.nodeValue.length).getClientRects();else continue;for(let c=0;cd.top+1&&(t=="up"?o.top-d.top>(d.bottom-o.top)*2:d.bottom-o.bottom>(o.bottom-d.top)*2))return!1}}return!0})}const iu=/[\u0590-\u08ac]/;function ou(n,e,t){let{$head:r}=e.selection;if(!r.parent.isTextblock)return!1;let s=r.parentOffset,i=!s,o=s==r.parent.content.size,l=n.domSelection();return l?!iu.test(r.parent.textContent)||!l.modify?t=="left"||t=="backward"?i:o:xa(n,e,()=>{let{focusNode:a,focusOffset:c,anchorNode:d,anchorOffset:u}=n.domSelectionRange(),f=l.caretBidiLevel;l.modify("move",t,"character");let h=r.depth?n.docView.domAfterPos(r.before()):n.dom,{focusNode:p,focusOffset:m}=n.domSelectionRange(),g=p&&!h.contains(p.nodeType==1?p:p.parentNode)||a==p&&c==m;try{l.collapse(d,u),a&&(a!=d||c!=u)&&l.extend&&l.extend(a,c)}catch{}return f!=null&&(l.caretBidiLevel=f),g}):r.pos==r.start()||r.pos==r.end()}let Mo=null,To=null,Eo=!1;function lu(n,e,t){return Mo==e&&To==t?Eo:(Mo=e,To=t,Eo=t=="up"||t=="down"?su(n,e,t):ou(n,e,t))}const Re=0,Ao=1,xt=2,Fe=3;class Ln{constructor(e,t,r,s){this.parent=e,this.children=t,this.dom=r,this.contentDOM=s,this.dirty=Re,r.pmViewDesc=this}matchesWidget(e){return!1}matchesMark(e){return!1}matchesNode(e,t,r){return!1}matchesHack(e){return!1}parseRule(){return null}stopEvent(e){return!1}get size(){let e=0;for(let t=0;tce(this.contentDOM);else if(this.contentDOM&&this.contentDOM!=this.dom&&this.dom.contains(this.contentDOM))s=e.compareDocumentPosition(this.contentDOM)&2;else if(this.dom.firstChild){if(t==0)for(let i=e;;i=i.parentNode){if(i==this.dom){s=!1;break}if(i.previousSibling)break}if(s==null&&t==e.childNodes.length)for(let i=e;;i=i.parentNode){if(i==this.dom){s=!0;break}if(i.nextSibling)break}}return s??r>0?this.posAtEnd:this.posAtStart}nearestDesc(e,t=!1){for(let r=!0,s=e;s;s=s.parentNode){let i=this.getDesc(s),o;if(i&&(!t||i.node))if(r&&(o=i.nodeDOM)&&!(o.nodeType==1?o.contains(e.nodeType==1?e:e.parentNode):o==e))r=!1;else return i}}getDesc(e){let t=e.pmViewDesc;for(let r=t;r;r=r.parent)if(r==this)return t}posFromDOM(e,t,r){for(let s=e;s;s=s.parentNode){let i=this.getDesc(s);if(i)return i.localPosFromDOM(e,t,r)}return-1}descAt(e){for(let t=0,r=0;te||o instanceof wa){s=e-i;break}i=l}if(s)return this.children[r].domFromPos(s-this.children[r].border,t);for(let i;r&&!(i=this.children[r-1]).size&&i instanceof Sa&&i.side>=0;r--);if(t<=0){let i,o=!0;for(;i=r?this.children[r-1]:null,!(!i||i.dom.parentNode==this.contentDOM);r--,o=!1);return i&&t&&o&&!i.border&&!i.domAtom?i.domFromPos(i.size,t):{node:this.contentDOM,offset:i?ce(i.dom)+1:0}}else{let i,o=!0;for(;i=r=d&&t<=c-a.border&&a.node&&a.contentDOM&&this.contentDOM.contains(a.contentDOM))return a.parseRange(e,t,d);e=o;for(let u=l;u>0;u--){let f=this.children[u-1];if(f.size&&f.dom.parentNode==this.contentDOM&&!f.emptyChildAt(1)){s=ce(f.dom)+1;break}e-=f.size}s==-1&&(s=0)}if(s>-1&&(c>t||l==this.children.length-1)){t=c;for(let d=l+1;dp&&ot){let p=l;l=a,a=p}let h=document.createRange();h.setEnd(a.node,a.offset),h.setStart(l.node,l.offset),c.removeAllRanges(),c.addRange(h)}}ignoreMutation(e){return!this.contentDOM&&e.type!="selection"}get contentLost(){return this.contentDOM&&this.contentDOM!=this.dom&&!this.dom.contains(this.contentDOM)}markDirty(e,t){for(let r=0,s=0;s=r:er){let l=r+i.border,a=o-i.border;if(e>=l&&t<=a){this.dirty=e==r||t==o?xt:Ao,e==l&&t==a&&(i.contentLost||i.dom.parentNode!=this.contentDOM)?i.dirty=Fe:i.markDirty(e-l,t-l);return}else i.dirty=i.dom==i.contentDOM&&i.dom.parentNode==this.contentDOM&&!i.children.length?xt:Fe}r=o}this.dirty=xt}markParentsDirty(){let e=1;for(let t=this.parent;t;t=t.parent,e++){let r=e==1?xt:Ao;t.dirty{if(!i)return s;if(i.parent)return i.parent.posBeforeChild(i)})),!t.type.spec.raw){if(o.nodeType!=1){let l=document.createElement("span");l.appendChild(o),o=l}o.contentEditable="false",o.classList.add("ProseMirror-widget")}super(e,[],o,null),this.widget=t,this.widget=t,i=this}matchesWidget(e){return this.dirty==Re&&e.type.eq(this.widget.type)}parseRule(){return{ignore:!0}}stopEvent(e){let t=this.widget.spec.stopEvent;return t?t(e):!1}ignoreMutation(e){return e.type!="selection"||this.widget.spec.ignoreSelection}destroy(){this.widget.type.destroy(this.dom),super.destroy()}get domAtom(){return!0}get ignoreForSelection(){return!!this.widget.type.spec.relaxedSide}get side(){return this.widget.type.side}}class au extends Ln{constructor(e,t,r,s){super(e,[],t,null),this.textDOM=r,this.text=s}get size(){return this.text.length}localPosFromDOM(e,t){return e!=this.textDOM?this.posAtStart+(t?this.size:0):this.posAtStart+t}domFromPos(e){return{node:this.textDOM,offset:e}}ignoreMutation(e){return e.type==="characterData"&&e.target.nodeValue==e.oldValue}}class It extends Ln{constructor(e,t,r,s,i){super(e,[],r,s),this.mark=t,this.spec=i}static create(e,t,r,s){let i=s.nodeViews[t.type.name],o=i&&i(t,s,r);return(!o||!o.dom)&&(o=zt.renderSpec(document,t.type.spec.toDOM(t,r),null,t.attrs)),new It(e,t,o.dom,o.contentDOM||o.dom,o)}parseRule(){return this.dirty&Fe||this.mark.type.spec.reparseInView?null:{mark:this.mark.type.name,attrs:this.mark.attrs,contentElement:this.contentDOM}}matchesMark(e){return this.dirty!=Fe&&this.mark.eq(e)}markDirty(e,t){if(super.markDirty(e,t),this.dirty!=Re){let r=this.parent;for(;!r.node;)r=r.parent;r.dirty0&&(i=Us(i,0,e,r));for(let l=0;l{if(!a)return o;if(a.parent)return a.parent.posBeforeChild(a)},r,s),d=c&&c.dom,u=c&&c.contentDOM;if(t.isText){if(!d)d=document.createTextNode(t.text);else if(d.nodeType!=3)throw new RangeError("Text must be rendered as a DOM text node")}else d||({dom:d,contentDOM:u}=zt.renderSpec(document,t.type.spec.toDOM(t),null,t.attrs));!u&&!t.isText&&d.nodeName!="BR"&&(d.hasAttribute("contenteditable")||(d.contentEditable="false"),t.type.spec.draggable&&(d.draggable=!0));let f=d;return d=Ea(d,r,t),c?a=new cu(e,t,r,s,d,u||null,f,c,i,o+1):t.isText?new Gr(e,t,r,s,d,f,i):new dt(e,t,r,s,d,u||null,f,i,o+1)}parseRule(){if(this.node.type.spec.reparseInView)return null;let e={node:this.node.type.name,attrs:this.node.attrs};if(this.node.type.whitespace=="pre"&&(e.preserveWhitespace="full"),!this.contentDOM)e.getContent=()=>this.node.content;else if(!this.contentLost)e.contentElement=this.contentDOM;else{for(let t=this.children.length-1;t>=0;t--){let r=this.children[t];if(this.dom.contains(r.dom.parentNode)){e.contentElement=r.dom.parentNode;break}}e.contentElement||(e.getContent=()=>k.empty)}return e}matchesNode(e,t,r){return this.dirty==Re&&e.eq(this.node)&&cr(t,this.outerDeco)&&r.eq(this.innerDeco)}get size(){return this.node.nodeSize}get border(){return this.node.isLeaf?0:1}updateChildren(e,t){let r=this.node.inlineContent,s=t,i=e.composing?this.localCompositionInfo(e,t):null,o=i&&i.pos>-1?i:null,l=i&&i.pos<0,a=new uu(this,o&&o.node,e);pu(this.node,this.innerDeco,(c,d,u)=>{c.spec.marks?a.syncToMarks(c.spec.marks,r,e):c.type.side>=0&&!u&&a.syncToMarks(d==this.node.childCount?j.none:this.node.child(d).marks,r,e),a.placeWidget(c,e,s)},(c,d,u,f)=>{a.syncToMarks(c.marks,r,e);let h;a.findNodeMatch(c,d,u,f)||l&&e.state.selection.from>s&&e.state.selection.to-1&&a.updateNodeAt(c,d,u,h,e)||a.updateNextNode(c,d,u,e,f,s)||a.addNode(c,d,u,e,s),s+=c.nodeSize}),a.syncToMarks([],r,e),this.node.isTextblock&&a.addTextblockHacks(),a.destroyRest(),(a.changed||this.dirty==xt)&&(o&&this.protectLocalComposition(e,o),Ma(this.contentDOM,this.children,e),Yt&&mu(this.dom))}localCompositionInfo(e,t){let{from:r,to:s}=e.state.selection;if(!(e.state.selection instanceof D)||rt+this.node.content.size)return null;let i=e.input.compositionNode;if(!i||!this.dom.contains(i.parentNode))return null;if(this.node.inlineContent){let o=i.nodeValue,l=gu(this.node.content,o,r-t,s-t);return l<0?null:{node:i,pos:l,text:o}}else return{node:i,pos:-1,text:""}}protectLocalComposition(e,{node:t,pos:r,text:s}){if(this.getDesc(t))return;let i=t;for(;i.parentNode!=this.contentDOM;i=i.parentNode){for(;i.previousSibling;)i.parentNode.removeChild(i.previousSibling);for(;i.nextSibling;)i.parentNode.removeChild(i.nextSibling);i.pmViewDesc&&(i.pmViewDesc=void 0)}let o=new au(this,i,t,s);e.input.compositionNodes.push(o),this.children=Us(this.children,r,r+s.length,e,o)}update(e,t,r,s){return this.dirty==Fe||!e.sameMarkup(this.node)?!1:(this.updateInner(e,t,r,s),!0)}updateInner(e,t,r,s){this.updateOuterDeco(t),this.node=e,this.innerDeco=r,this.contentDOM&&this.updateChildren(s,this.posAtStart),this.dirty=Re}updateOuterDeco(e){if(cr(e,this.outerDeco))return;let t=this.nodeDOM.nodeType!=1,r=this.dom;this.dom=Ta(this.dom,this.nodeDOM,Ks(this.outerDeco,this.node,t),Ks(e,this.node,t)),this.dom!=r&&(r.pmViewDesc=void 0,this.dom.pmViewDesc=this),this.outerDeco=e}selectNode(){this.nodeDOM.nodeType==1&&(this.nodeDOM.classList.add("ProseMirror-selectednode"),(this.contentDOM||!this.node.type.spec.draggable)&&(this.nodeDOM.draggable=!0))}deselectNode(){this.nodeDOM.nodeType==1&&(this.nodeDOM.classList.remove("ProseMirror-selectednode"),(this.contentDOM||!this.node.type.spec.draggable)&&this.nodeDOM.removeAttribute("draggable"))}get domAtom(){return this.node.isAtom}}function Oo(n,e,t,r,s){Ea(r,e,n);let i=new dt(void 0,n,e,t,r,r,r,s,0);return i.contentDOM&&i.updateChildren(s,0),i}class Gr extends dt{constructor(e,t,r,s,i,o,l){super(e,t,r,s,i,null,o,l,0)}parseRule(){let e=this.nodeDOM.parentNode;for(;e&&e!=this.dom&&!e.pmIsDeco;)e=e.parentNode;return{skip:e||!0}}update(e,t,r,s){return this.dirty==Fe||this.dirty!=Re&&!this.inParent()||!e.sameMarkup(this.node)?!1:(this.updateOuterDeco(t),(this.dirty!=Re||e.text!=this.node.text)&&e.text!=this.nodeDOM.nodeValue&&(this.nodeDOM.nodeValue=e.text,s.trackWrites==this.nodeDOM&&(s.trackWrites=null)),this.node=e,this.dirty=Re,!0)}inParent(){let e=this.parent.contentDOM;for(let t=this.nodeDOM;t;t=t.parentNode)if(t==e)return!0;return!1}domFromPos(e){return{node:this.nodeDOM,offset:e}}localPosFromDOM(e,t,r){return e==this.nodeDOM?this.posAtStart+Math.min(t,this.node.text.length):super.localPosFromDOM(e,t,r)}ignoreMutation(e){return e.type!="characterData"&&e.type!="selection"}slice(e,t,r){let s=this.node.cut(e,t),i=document.createTextNode(s.text);return new Gr(this.parent,s,this.outerDeco,this.innerDeco,i,i,r)}markDirty(e,t){super.markDirty(e,t),this.dom!=this.nodeDOM&&(e==0||t==this.nodeDOM.nodeValue.length)&&(this.dirty=Fe)}get domAtom(){return!1}isText(e){return this.node.text==e}}class wa extends Ln{parseRule(){return{ignore:!0}}matchesHack(e){return this.dirty==Re&&this.dom.nodeName==e}get domAtom(){return!0}get ignoreForCoords(){return this.dom.nodeName=="IMG"}}class cu extends dt{constructor(e,t,r,s,i,o,l,a,c,d){super(e,t,r,s,i,o,l,c,d),this.spec=a}update(e,t,r,s){if(this.dirty==Fe)return!1;if(this.spec.update&&(this.node.type==e.type||this.spec.multiType)){let i=this.spec.update(e,t,r);return i&&this.updateInner(e,t,r,s),i}else return!this.contentDOM&&!e.isLeaf?!1:super.update(e,t,r,s)}selectNode(){this.spec.selectNode?this.spec.selectNode():super.selectNode()}deselectNode(){this.spec.deselectNode?this.spec.deselectNode():super.deselectNode()}setSelection(e,t,r,s){this.spec.setSelection?this.spec.setSelection(e,t,r.root):super.setSelection(e,t,r,s)}destroy(){this.spec.destroy&&this.spec.destroy(),super.destroy()}stopEvent(e){return this.spec.stopEvent?this.spec.stopEvent(e):!1}ignoreMutation(e){return this.spec.ignoreMutation?this.spec.ignoreMutation(e):super.ignoreMutation(e)}}function Ma(n,e,t){let r=n.firstChild,s=!1;for(let i=0;i>1,o=Math.min(i,e.length);for(;s-1)l>this.index&&(this.changed=!0,this.destroyBetween(this.index,l)),this.top=this.top.children[this.index];else{let a=It.create(this.top,e[i],t,r);this.top.children.splice(this.index,0,a),this.top=a,this.changed=!0}this.index=0,i++}}findNodeMatch(e,t,r,s){let i=-1,o;if(s>=this.preMatch.index&&(o=this.preMatch.matches[s-this.preMatch.index]).parent==this.top&&o.matchesNode(e,t,r))i=this.top.children.indexOf(o,this.index);else for(let l=this.index,a=Math.min(this.top.children.length,l+5);l0;){let l;for(;;)if(r){let c=t.children[r-1];if(c instanceof It)t=c,r=c.children.length;else{l=c,r--;break}}else{if(t==e)break e;r=t.parent.children.indexOf(t),t=t.parent}let a=l.node;if(a){if(a!=n.child(s-1))break;--s,i.set(l,s),o.push(l)}}return{index:s,matched:i,matches:o.reverse()}}function hu(n,e){return n.type.side-e.type.side}function pu(n,e,t,r){let s=e.locals(n),i=0;if(s.length==0){for(let c=0;ci;)l.push(s[o++]);let p=i+f.nodeSize;if(f.isText){let g=p;o!g.inline):l.slice();r(f,m,e.forChild(i,f),h),i=p}}function mu(n){if(n.nodeName=="UL"||n.nodeName=="OL"){let e=n.style.cssText;n.style.cssText=e+"; list-style: square !important",window.getComputedStyle(n).listStyle,n.style.cssText=e}}function gu(n,e,t,r){for(let s=0,i=0;s=t){if(i>=r&&a.slice(r-e.length-l,r-l)==e)return r-e.length;let c=l=0&&c+e.length+l>=t)return l+c;if(t==r&&a.length>=r+e.length-l&&a.slice(r-l,r-l+e.length)==e)return r}}return-1}function Us(n,e,t,r,s){let i=[];for(let o=0,l=0;o=t||d<=e?i.push(a):(ct&&i.push(a.slice(t-c,a.size,r)))}return i}function xi(n,e=null){let t=n.domSelectionRange(),r=n.state.doc;if(!t.focusNode)return null;let s=n.docView.nearestDesc(t.focusNode),i=s&&s.size==0,o=n.docView.posFromDOM(t.focusNode,t.focusOffset,1);if(o<0)return null;let l=r.resolve(o),a,c;if(Jr(t)){for(a=o;s&&!s.node;)s=s.parent;let u=s.node;if(s&&u.isAtom&&R.isSelectable(u)&&s.parent&&!(u.isInline&&Wd(t.focusNode,t.focusOffset,s.dom))){let f=s.posBefore;c=new R(o==f?l:r.resolve(f))}}else{if(t instanceof n.dom.ownerDocument.defaultView.Selection&&t.rangeCount>1){let u=o,f=o;for(let h=0;h{(t.anchorNode!=r||t.anchorOffset!=s)&&(e.removeEventListener("selectionchange",n.input.hideSelectionGuard),setTimeout(()=>{(!Aa(n)||n.state.selection.visible)&&n.dom.classList.remove("ProseMirror-hideselection")},20))})}function bu(n){let e=n.domSelection();if(!e)return;let t=n.cursorWrapper.dom,r=t.nodeName=="IMG";r?e.collapse(t.parentNode,ce(t)+1):e.collapse(t,0),!r&&!n.state.selection.visible&&Ce&&ct<=11&&(t.disabled=!0,t.disabled=!1)}function Oa(n,e){if(e instanceof R){let t=n.docView.descAt(e.from);t!=n.lastSelectedViewDesc&&(Io(n),t&&t.selectNode(),n.lastSelectedViewDesc=t)}else Io(n)}function Io(n){n.lastSelectedViewDesc&&(n.lastSelectedViewDesc.parent&&n.lastSelectedViewDesc.deselectNode(),n.lastSelectedViewDesc=void 0)}function Si(n,e,t,r){return n.someProp("createSelectionBetween",s=>s(n,e,t))||D.between(e,t,r)}function Lo(n){return n.editable&&!n.hasFocus()?!1:Na(n)}function Na(n){let e=n.domSelectionRange();if(!e.anchorNode)return!1;try{return n.dom.contains(e.anchorNode.nodeType==3?e.anchorNode.parentNode:e.anchorNode)&&(n.editable||n.dom.contains(e.focusNode.nodeType==3?e.focusNode.parentNode:e.focusNode))}catch{return!1}}function ku(n){let e=n.docView.domFromPos(n.state.selection.anchor,0),t=n.domSelectionRange();return Dt(e.node,e.offset,t.anchorNode,t.anchorOffset)}function qs(n,e){let{$anchor:t,$head:r}=n.selection,s=e>0?t.max(r):t.min(r),i=s.parent.inlineContent?s.depth?n.doc.resolve(e>0?s.after():s.before()):null:s;return i&&I.findFrom(i,e)}function Qe(n,e){return n.dispatch(n.state.tr.setSelection(e).scrollIntoView()),!0}function Po(n,e,t){let r=n.state.selection;if(r instanceof D)if(t.indexOf("s")>-1){let{$head:s}=r,i=s.textOffset?null:e<0?s.nodeBefore:s.nodeAfter;if(!i||i.isText||!i.isLeaf)return!1;let o=n.state.doc.resolve(s.pos+i.nodeSize*(e<0?-1:1));return Qe(n,new D(r.$anchor,o))}else if(r.empty){if(n.endOfTextblock(e>0?"forward":"backward")){let s=qs(n.state,e);return s&&s instanceof R?Qe(n,s):!1}else if(!(Ae&&t.indexOf("m")>-1)){let s=r.$head,i=s.textOffset?null:e<0?s.nodeBefore:s.nodeAfter,o;if(!i||i.isText)return!1;let l=e<0?s.pos-i.nodeSize:s.pos;return i.isAtom||(o=n.docView.descAt(l))&&!o.contentDOM?R.isSelectable(i)?Qe(n,new R(e<0?n.state.doc.resolve(s.pos-i.nodeSize):s)):In?Qe(n,new D(n.state.doc.resolve(e<0?l:l+i.nodeSize))):!1:!1}}else return!1;else{if(r instanceof R&&r.node.isInline)return Qe(n,new D(e>0?r.$to:r.$from));{let s=qs(n.state,e);return s?Qe(n,s):!1}}}function dr(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function hn(n,e){let t=n.pmViewDesc;return t&&t.size==0&&(e<0||n.nextSibling||n.nodeName!="BR")}function Ft(n,e){return e<0?Cu(n):xu(n)}function Cu(n){let e=n.domSelectionRange(),t=e.focusNode,r=e.focusOffset;if(!t)return;let s,i,o=!1;for(ve&&t.nodeType==1&&r0){if(t.nodeType!=1)break;{let l=t.childNodes[r-1];if(hn(l,-1))s=t,i=--r;else if(l.nodeType==3)t=l,r=t.nodeValue.length;else break}}else{if(va(t))break;{let l=t.previousSibling;for(;l&&hn(l,-1);)s=t.parentNode,i=ce(l),l=l.previousSibling;if(l)t=l,r=dr(t);else{if(t=t.parentNode,t==n.dom)break;r=0}}}o?Js(n,t,r):s&&Js(n,s,i)}function xu(n){let e=n.domSelectionRange(),t=e.focusNode,r=e.focusOffset;if(!t)return;let s=dr(t),i,o;for(;;)if(r{n.state==s&&Ge(n)},50)}function zo(n,e){let t=n.state.doc.resolve(e);if(!(fe||Kd)&&t.parent.inlineContent){let s=n.coordsAtPos(e);if(e>t.start()){let i=n.coordsAtPos(e-1),o=(i.top+i.bottom)/2;if(o>s.top&&o1)return i.lefts.top&&o1)return i.left>s.left?"ltr":"rtl"}}return getComputedStyle(n.dom).direction=="rtl"?"rtl":"ltr"}function Bo(n,e,t){let r=n.state.selection;if(r instanceof D&&!r.empty||t.indexOf("s")>-1||Ae&&t.indexOf("m")>-1)return!1;let{$from:s,$to:i}=r;if(!s.parent.inlineContent||n.endOfTextblock(e<0?"up":"down")){let o=qs(n.state,e);if(o&&o instanceof R)return Qe(n,o)}if(!s.parent.inlineContent){let o=e<0?s:i,l=r instanceof Ne?I.near(o,e):I.findFrom(o,e);return l?Qe(n,l):!1}return!1}function Ho(n,e){if(!(n.state.selection instanceof D))return!0;let{$head:t,$anchor:r,empty:s}=n.state.selection;if(!t.sameParent(r))return!0;if(!s)return!1;if(n.endOfTextblock(e>0?"forward":"backward"))return!0;let i=!t.textOffset&&(e<0?t.nodeBefore:t.nodeAfter);if(i&&!i.isText){let o=n.state.tr;return e<0?o.delete(t.pos-i.nodeSize,t.pos):o.delete(t.pos,t.pos+i.nodeSize),n.dispatch(o),!0}return!1}function Fo(n,e,t){n.domObserver.stop(),e.contentEditable=t,n.domObserver.start()}function Mu(n){if(!ge||n.state.selection.$head.parentOffset>0)return!1;let{focusNode:e,focusOffset:t}=n.domSelectionRange();if(e&&e.nodeType==1&&t==0&&e.firstChild&&e.firstChild.contentEditable=="false"){let r=e.firstChild;Fo(n,r,"true"),setTimeout(()=>Fo(n,r,"false"),20)}return!1}function Tu(n){let e="";return n.ctrlKey&&(e+="c"),n.metaKey&&(e+="m"),n.altKey&&(e+="a"),n.shiftKey&&(e+="s"),e}function Eu(n,e){let t=e.keyCode,r=Tu(e);if(t==8||Ae&&t==72&&r=="c")return Ho(n,-1)||Ft(n,-1);if(t==46&&!e.shiftKey||Ae&&t==68&&r=="c")return Ho(n,1)||Ft(n,1);if(t==13||t==27)return!0;if(t==37||Ae&&t==66&&r=="c"){let s=t==37?zo(n,n.state.selection.from)=="ltr"?-1:1:-1;return Po(n,s,r)||Ft(n,s)}else if(t==39||Ae&&t==70&&r=="c"){let s=t==39?zo(n,n.state.selection.from)=="ltr"?1:-1:1;return Po(n,s,r)||Ft(n,s)}else{if(t==38||Ae&&t==80&&r=="c")return Bo(n,-1,r)||Ft(n,-1);if(t==40||Ae&&t==78&&r=="c")return Mu(n)||Bo(n,1,r)||Ft(n,1);if(r==(Ae?"m":"c")&&(t==66||t==73||t==89||t==90))return!0}return!1}function wi(n,e){n.someProp("transformCopied",h=>{e=h(e,n)});let t=[],{content:r,openStart:s,openEnd:i}=e;for(;s>1&&i>1&&r.childCount==1&&r.firstChild.childCount==1;){s--,i--;let h=r.firstChild;t.push(h.type.name,h.attrs!=h.type.defaultAttrs?h.attrs:null),r=h.content}let o=n.someProp("clipboardSerializer")||zt.fromSchema(n.state.schema),l=za(),a=l.createElement("div");a.appendChild(o.serializeFragment(r,{document:l}));let c=a.firstChild,d,u=0;for(;c&&c.nodeType==1&&(d=Pa[c.nodeName.toLowerCase()]);){for(let h=d.length-1;h>=0;h--){let p=l.createElement(d[h]);for(;a.firstChild;)p.appendChild(a.firstChild);a.appendChild(p),u++}c=a.firstChild}c&&c.nodeType==1&&c.setAttribute("data-pm-slice",`${s} ${i}${u?` -${u}`:""} ${JSON.stringify(t)}`);let f=n.someProp("clipboardTextSerializer",h=>h(e,n))||e.content.textBetween(0,e.content.size,` + +`);return{dom:a,text:f,slice:e}}function Ra(n,e,t,r,s){let i=s.parent.type.spec.code,o,l;if(!t&&!e)return null;let a=!!e&&(r||i||!t);if(a){if(n.someProp("transformPastedText",f=>{e=f(e,i||r,n)}),i)return l=new T(k.from(n.state.schema.text(e.replace(/\r\n?/g,` +`))),0,0),n.someProp("transformPasted",f=>{l=f(l,n,!0)}),l;let u=n.someProp("clipboardTextParser",f=>f(e,s,r,n));if(u)l=u;else{let f=s.marks(),{schema:h}=n.state,p=zt.fromSchema(h);o=document.createElement("div"),e.split(/(?:\r\n?|\n)+/).forEach(m=>{let g=o.appendChild(document.createElement("p"));m&&g.appendChild(p.serializeNode(h.text(m,f)))})}}else n.someProp("transformPastedHTML",u=>{t=u(t,n)}),o=vu(t),In&&Ru(o);let c=o&&o.querySelector("[data-pm-slice]"),d=c&&/^(\d+) (\d+)(?: -(\d+))? (.*)/.exec(c.getAttribute("data-pm-slice")||"");if(d&&d[3])for(let u=+d[3];u>0;u--){let f=o.firstChild;for(;f&&f.nodeType!=1;)f=f.nextSibling;if(!f)break;o=f}if(l||(l=(n.someProp("clipboardParser")||n.someProp("domParser")||at.fromSchema(n.state.schema)).parseSlice(o,{preserveWhitespace:!!(a||d),context:s,ruleFromNode(f){return f.nodeName=="BR"&&!f.nextSibling&&f.parentNode&&!Au.test(f.parentNode.nodeName)?{ignore:!0}:null}})),d)l=Du($o(l,+d[1],+d[2]),d[4]);else if(l=T.maxOpen(Ou(l.content,s),!0),l.openStart||l.openEnd){let u=0,f=0;for(let h=l.content.firstChild;u{l=u(l,n,a)}),l}const Au=/^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;function Ou(n,e){if(n.childCount<2)return n;for(let t=e.depth;t>=0;t--){let s=e.node(t).contentMatchAt(e.index(t)),i,o=[];if(n.forEach(l=>{if(!o)return;let a=s.findWrapping(l.type),c;if(!a)return o=null;if(c=o.length&&i.length&&Ia(a,i,l,o[o.length-1],0))o[o.length-1]=c;else{o.length&&(o[o.length-1]=La(o[o.length-1],i.length));let d=Da(l,a);o.push(d),s=s.matchType(d.type),i=a}}),o)return k.from(o)}return n}function Da(n,e,t=0){for(let r=e.length-1;r>=t;r--)n=e[r].create(null,k.from(n));return n}function Ia(n,e,t,r,s){if(s1&&(i=0),s=t&&(l=e<0?o.contentMatchAt(0).fillBefore(l,i<=s).append(l):l.append(o.contentMatchAt(o.childCount).fillBefore(k.empty,!0))),n.replaceChild(e<0?0:n.childCount-1,o.copy(l))}function $o(n,e,t){return et})),bs.createHTML(n)):n}function vu(n){let e=/^(\s*]*>)*/.exec(n);e&&(n=n.slice(e[0].length));let t=za().createElement("div"),r=/<([a-z][^>\s]+)/i.exec(n),s;if((s=r&&Pa[r[1].toLowerCase()])&&(n=s.map(i=>"<"+i+">").join("")+n+s.map(i=>"").reverse().join("")),t.innerHTML=Nu(n),s)for(let i=0;i=0;l-=2){let a=t.nodes[r[l]];if(!a||a.hasRequiredAttrs())break;s=k.from(a.create(r[l+1],s)),i++,o++}return new T(s,i,o)}const ye={},be={},Iu={touchstart:!0,touchmove:!0};class Lu{constructor(){this.shiftKey=!1,this.mouseDown=null,this.lastKeyCode=null,this.lastKeyCodeTime=0,this.lastClick={time:0,x:0,y:0,type:"",button:0},this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastIOSEnter=0,this.lastIOSEnterFallbackTimeout=-1,this.lastFocus=0,this.lastTouch=0,this.lastChromeDelete=0,this.composing=!1,this.compositionNode=null,this.composingTimeout=-1,this.compositionNodes=[],this.compositionEndedAt=-2e8,this.compositionID=1,this.compositionPendingChanges=0,this.domChangeCount=0,this.eventHandlers=Object.create(null),this.hideSelectionGuard=null}}function Pu(n){for(let e in ye){let t=ye[e];n.dom.addEventListener(e,n.input.eventHandlers[e]=r=>{Bu(n,r)&&!Mi(n,r)&&(n.editable||!(r.type in be))&&t(n,r)},Iu[e]?{passive:!0}:void 0)}ge&&n.dom.addEventListener("input",()=>null),Ys(n)}function ot(n,e){n.input.lastSelectionOrigin=e,n.input.lastSelectionTime=Date.now()}function zu(n){n.domObserver.stop();for(let e in n.input.eventHandlers)n.dom.removeEventListener(e,n.input.eventHandlers[e]);clearTimeout(n.input.composingTimeout),clearTimeout(n.input.lastIOSEnterFallbackTimeout)}function Ys(n){n.someProp("handleDOMEvents",e=>{for(let t in e)n.input.eventHandlers[t]||n.dom.addEventListener(t,n.input.eventHandlers[t]=r=>Mi(n,r))})}function Mi(n,e){return n.someProp("handleDOMEvents",t=>{let r=t[e.type];return r?r(n,e)||e.defaultPrevented:!1})}function Bu(n,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target;t!=n.dom;t=t.parentNode)if(!t||t.nodeType==11||t.pmViewDesc&&t.pmViewDesc.stopEvent(e))return!1;return!0}function Hu(n,e){!Mi(n,e)&&ye[e.type]&&(n.editable||!(e.type in be))&&ye[e.type](n,e)}be.keydown=(n,e)=>{let t=e;if(n.input.shiftKey=t.keyCode==16||t.shiftKey,!Ha(n,t)&&(n.input.lastKeyCode=t.keyCode,n.input.lastKeyCodeTime=Date.now(),!(Je&&fe&&t.keyCode==13)))if(t.keyCode!=229&&n.domObserver.forceFlush(),Yt&&t.keyCode==13&&!t.ctrlKey&&!t.altKey&&!t.metaKey){let r=Date.now();n.input.lastIOSEnter=r,n.input.lastIOSEnterFallbackTimeout=setTimeout(()=>{n.input.lastIOSEnter==r&&(n.someProp("handleKeyDown",s=>s(n,kt(13,"Enter"))),n.input.lastIOSEnter=0)},200)}else n.someProp("handleKeyDown",r=>r(n,t))||Eu(n,t)?t.preventDefault():ot(n,"key")};be.keyup=(n,e)=>{e.keyCode==16&&(n.input.shiftKey=!1)};be.keypress=(n,e)=>{let t=e;if(Ha(n,t)||!t.charCode||t.ctrlKey&&!t.altKey||Ae&&t.metaKey)return;if(n.someProp("handleKeyPress",s=>s(n,t))){t.preventDefault();return}let r=n.state.selection;if(!(r instanceof D)||!r.$from.sameParent(r.$to)){let s=String.fromCharCode(t.charCode),i=()=>n.state.tr.insertText(s).scrollIntoView();!/[\r\n]/.test(s)&&!n.someProp("handleTextInput",o=>o(n,r.$from.pos,r.$to.pos,s,i))&&n.dispatch(i()),t.preventDefault()}};function Yr(n){return{left:n.clientX,top:n.clientY}}function Fu(n,e){let t=e.x-n.clientX,r=e.y-n.clientY;return t*t+r*r<100}function Ti(n,e,t,r,s){if(r==-1)return!1;let i=n.state.doc.resolve(r);for(let o=i.depth+1;o>0;o--)if(n.someProp(e,l=>o>i.depth?l(n,t,i.nodeAfter,i.before(o),s,!0):l(n,t,i.node(o),i.before(o),s,!1)))return!0;return!1}function qt(n,e,t){if(n.focused||n.focus(),n.state.selection.eq(e))return;let r=n.state.tr.setSelection(e);t=="pointer"&&r.setMeta("pointer",!0),n.dispatch(r)}function $u(n,e){if(e==-1)return!1;let t=n.state.doc.resolve(e),r=t.nodeAfter;return r&&r.isAtom&&R.isSelectable(r)?(qt(n,new R(t),"pointer"),!0):!1}function Vu(n,e){if(e==-1)return!1;let t=n.state.selection,r,s;t instanceof R&&(r=t.node);let i=n.state.doc.resolve(e);for(let o=i.depth+1;o>0;o--){let l=o>i.depth?i.nodeAfter:i.node(o);if(R.isSelectable(l)){r&&t.$from.depth>0&&o>=t.$from.depth&&i.before(t.$from.depth+1)==t.$from.pos?s=i.before(t.$from.depth):s=i.before(o);break}}return s!=null?(qt(n,R.create(n.state.doc,s),"pointer"),!0):!1}function Wu(n,e,t,r,s){return Ti(n,"handleClickOn",e,t,r)||n.someProp("handleClick",i=>i(n,e,r))||(s?Vu(n,t):$u(n,t))}function ju(n,e,t,r){return Ti(n,"handleDoubleClickOn",e,t,r)||n.someProp("handleDoubleClick",s=>s(n,e,r))}function _u(n,e,t,r){return Ti(n,"handleTripleClickOn",e,t,r)||n.someProp("handleTripleClick",s=>s(n,e,r))||Ku(n,t,r)}function Ku(n,e,t){if(t.button!=0)return!1;let r=n.state.doc;if(e==-1)return r.inlineContent?(qt(n,D.create(r,0,r.content.size),"pointer"),!0):!1;let s=r.resolve(e);for(let i=s.depth+1;i>0;i--){let o=i>s.depth?s.nodeAfter:s.node(i),l=s.before(i);if(o.inlineContent)qt(n,D.create(r,l+1,l+1+o.content.size),"pointer");else if(R.isSelectable(o))qt(n,R.create(r,l),"pointer");else continue;return!0}}function Ei(n){return ur(n)}const Ba=Ae?"metaKey":"ctrlKey";ye.mousedown=(n,e)=>{let t=e;n.input.shiftKey=t.shiftKey;let r=Ei(n),s=Date.now(),i="singleClick";s-n.input.lastClick.time<500&&Fu(t,n.input.lastClick)&&!t[Ba]&&n.input.lastClick.button==t.button&&(n.input.lastClick.type=="singleClick"?i="doubleClick":n.input.lastClick.type=="doubleClick"&&(i="tripleClick")),n.input.lastClick={time:s,x:t.clientX,y:t.clientY,type:i,button:t.button};let o=n.posAtCoords(Yr(t));o&&(i=="singleClick"?(n.input.mouseDown&&n.input.mouseDown.done(),n.input.mouseDown=new Uu(n,o,t,!!r)):(i=="doubleClick"?ju:_u)(n,o.pos,o.inside,t)?t.preventDefault():ot(n,"pointer"))};class Uu{constructor(e,t,r,s){this.view=e,this.pos=t,this.event=r,this.flushed=s,this.delayedSelectionSync=!1,this.mightDrag=null,this.startDoc=e.state.doc,this.selectNode=!!r[Ba],this.allowDefault=r.shiftKey;let i,o;if(t.inside>-1)i=e.state.doc.nodeAt(t.inside),o=t.inside;else{let d=e.state.doc.resolve(t.pos);i=d.parent,o=d.depth?d.before():0}const l=s?null:r.target,a=l?e.docView.nearestDesc(l,!0):null;this.target=a&&a.nodeDOM.nodeType==1?a.nodeDOM:null;let{selection:c}=e.state;(r.button==0&&i.type.spec.draggable&&i.type.spec.selectable!==!1||c instanceof R&&c.from<=o&&c.to>o)&&(this.mightDrag={node:i,pos:o,addAttr:!!(this.target&&!this.target.draggable),setUneditable:!!(this.target&&ve&&!this.target.hasAttribute("contentEditable"))}),this.target&&this.mightDrag&&(this.mightDrag.addAttr||this.mightDrag.setUneditable)&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&(this.target.draggable=!0),this.mightDrag.setUneditable&&setTimeout(()=>{this.view.input.mouseDown==this&&this.target.setAttribute("contentEditable","false")},20),this.view.domObserver.start()),e.root.addEventListener("mouseup",this.up=this.up.bind(this)),e.root.addEventListener("mousemove",this.move=this.move.bind(this)),ot(e,"pointer")}done(){this.view.root.removeEventListener("mouseup",this.up),this.view.root.removeEventListener("mousemove",this.move),this.mightDrag&&this.target&&(this.view.domObserver.stop(),this.mightDrag.addAttr&&this.target.removeAttribute("draggable"),this.mightDrag.setUneditable&&this.target.removeAttribute("contentEditable"),this.view.domObserver.start()),this.delayedSelectionSync&&setTimeout(()=>Ge(this.view)),this.view.input.mouseDown=null}up(e){if(this.done(),!this.view.dom.contains(e.target))return;let t=this.pos;this.view.state.doc!=this.startDoc&&(t=this.view.posAtCoords(Yr(e))),this.updateAllowDefault(e),this.allowDefault||!t?ot(this.view,"pointer"):Wu(this.view,t.pos,t.inside,e,this.selectNode)?e.preventDefault():e.button==0&&(this.flushed||ge&&this.mightDrag&&!this.mightDrag.node.isAtom||fe&&!this.view.state.selection.visible&&Math.min(Math.abs(t.pos-this.view.state.selection.from),Math.abs(t.pos-this.view.state.selection.to))<=2)?(qt(this.view,I.near(this.view.state.doc.resolve(t.pos)),"pointer"),e.preventDefault()):ot(this.view,"pointer")}move(e){this.updateAllowDefault(e),ot(this.view,"pointer"),e.buttons==0&&this.done()}updateAllowDefault(e){!this.allowDefault&&(Math.abs(this.event.x-e.clientX)>4||Math.abs(this.event.y-e.clientY)>4)&&(this.allowDefault=!0)}}ye.touchstart=n=>{n.input.lastTouch=Date.now(),Ei(n),ot(n,"pointer")};ye.touchmove=n=>{n.input.lastTouch=Date.now(),ot(n,"pointer")};ye.contextmenu=n=>Ei(n);function Ha(n,e){return n.composing?!0:ge&&Math.abs(e.timeStamp-n.input.compositionEndedAt)<500?(n.input.compositionEndedAt=-2e8,!0):!1}const qu=Je?5e3:-1;be.compositionstart=be.compositionupdate=n=>{if(!n.composing){n.domObserver.flush();let{state:e}=n,t=e.selection.$to;if(e.selection instanceof D&&(e.storedMarks||!t.textOffset&&t.parentOffset&&t.nodeBefore.marks.some(r=>r.type.spec.inclusive===!1)))n.markCursor=n.state.storedMarks||t.marks(),ur(n,!0),n.markCursor=null;else if(ur(n,!e.selection.empty),ve&&e.selection.empty&&t.parentOffset&&!t.textOffset&&t.nodeBefore.marks.length){let r=n.domSelectionRange();for(let s=r.focusNode,i=r.focusOffset;s&&s.nodeType==1&&i!=0;){let o=i<0?s.lastChild:s.childNodes[i-1];if(!o)break;if(o.nodeType==3){let l=n.domSelection();l&&l.collapse(o,o.nodeValue.length);break}else s=o,i=-1}}n.input.composing=!0}Fa(n,qu)};be.compositionend=(n,e)=>{n.composing&&(n.input.composing=!1,n.input.compositionEndedAt=e.timeStamp,n.input.compositionPendingChanges=n.domObserver.pendingRecords().length?n.input.compositionID:0,n.input.compositionNode=null,n.input.compositionPendingChanges&&Promise.resolve().then(()=>n.domObserver.flush()),n.input.compositionID++,Fa(n,20))};function Fa(n,e){clearTimeout(n.input.composingTimeout),e>-1&&(n.input.composingTimeout=setTimeout(()=>ur(n),e))}function $a(n){for(n.composing&&(n.input.composing=!1,n.input.compositionEndedAt=Gu());n.input.compositionNodes.length>0;)n.input.compositionNodes.pop().markParentsDirty()}function Ju(n){let e=n.domSelectionRange();if(!e.focusNode)return null;let t=$d(e.focusNode,e.focusOffset),r=Vd(e.focusNode,e.focusOffset);if(t&&r&&t!=r){let s=r.pmViewDesc,i=n.domObserver.lastChangedTextNode;if(t==i||r==i)return i;if(!s||!s.isText(r.nodeValue))return r;if(n.input.compositionNode==r){let o=t.pmViewDesc;if(!(!o||!o.isText(t.nodeValue)))return r}}return t||r}function Gu(){let n=document.createEvent("Event");return n.initEvent("event",!0,!0),n.timeStamp}function ur(n,e=!1){if(!(Je&&n.domObserver.flushingSoon>=0)){if(n.domObserver.forceFlush(),$a(n),e||n.docView&&n.docView.dirty){let t=xi(n),r=n.state.selection;return t&&!t.eq(r)?n.dispatch(n.state.tr.setSelection(t)):(n.markCursor||e)&&!r.$from.node(r.$from.sharedDepth(r.to)).inlineContent?n.dispatch(n.state.tr.deleteSelection()):n.updateState(n.state),!0}return!1}}function Yu(n,e){if(!n.dom.parentNode)return;let t=n.dom.parentNode.appendChild(document.createElement("div"));t.appendChild(e),t.style.cssText="position: fixed; left: -10000px; top: 10px";let r=getSelection(),s=document.createRange();s.selectNodeContents(e),n.dom.blur(),r.removeAllRanges(),r.addRange(s),setTimeout(()=>{t.parentNode&&t.parentNode.removeChild(t),n.focus()},50)}const Mn=Ce&&ct<15||Yt&&Ud<604;ye.copy=be.cut=(n,e)=>{let t=e,r=n.state.selection,s=t.type=="cut";if(r.empty)return;let i=Mn?null:t.clipboardData,o=r.content(),{dom:l,text:a}=wi(n,o);i?(t.preventDefault(),i.clearData(),i.setData("text/html",l.innerHTML),i.setData("text/plain",a)):Yu(n,l),s&&n.dispatch(n.state.tr.deleteSelection().scrollIntoView().setMeta("uiEvent","cut"))};function Xu(n){return n.openStart==0&&n.openEnd==0&&n.content.childCount==1?n.content.firstChild:null}function Qu(n,e){if(!n.dom.parentNode)return;let t=n.input.shiftKey||n.state.selection.$from.parent.type.spec.code,r=n.dom.parentNode.appendChild(document.createElement(t?"textarea":"div"));t||(r.contentEditable="true"),r.style.cssText="position: fixed; left: -10000px; top: 10px",r.focus();let s=n.input.shiftKey&&n.input.lastKeyCode!=45;setTimeout(()=>{n.focus(),r.parentNode&&r.parentNode.removeChild(r),t?Tn(n,r.value,null,s,e):Tn(n,r.textContent,r.innerHTML,s,e)},50)}function Tn(n,e,t,r,s){let i=Ra(n,e,t,r,n.state.selection.$from);if(n.someProp("handlePaste",a=>a(n,s,i||T.empty)))return!0;if(!i)return!1;let o=Xu(i),l=o?n.state.tr.replaceSelectionWith(o,r):n.state.tr.replaceSelection(i);return n.dispatch(l.scrollIntoView().setMeta("paste",!0).setMeta("uiEvent","paste")),!0}function Va(n){let e=n.getData("text/plain")||n.getData("Text");if(e)return e;let t=n.getData("text/uri-list");return t?t.replace(/\r?\n/g," "):""}be.paste=(n,e)=>{let t=e;if(n.composing&&!Je)return;let r=Mn?null:t.clipboardData,s=n.input.shiftKey&&n.input.lastKeyCode!=45;r&&Tn(n,Va(r),r.getData("text/html"),s,t)?t.preventDefault():Qu(n,t)};class Wa{constructor(e,t,r){this.slice=e,this.move=t,this.node=r}}const Zu=Ae?"altKey":"ctrlKey";function ja(n,e){let t=n.someProp("dragCopies",r=>!r(e));return t??!e[Zu]}ye.dragstart=(n,e)=>{let t=e,r=n.input.mouseDown;if(r&&r.done(),!t.dataTransfer)return;let s=n.state.selection,i=s.empty?null:n.posAtCoords(Yr(t)),o;if(!(i&&i.pos>=s.from&&i.pos<=(s instanceof R?s.to-1:s.to))){if(r&&r.mightDrag)o=R.create(n.state.doc,r.mightDrag.pos);else if(t.target&&t.target.nodeType==1){let u=n.docView.nearestDesc(t.target,!0);u&&u.node.type.spec.draggable&&u!=n.docView&&(o=R.create(n.state.doc,u.posBefore))}}let l=(o||n.state.selection).content(),{dom:a,text:c,slice:d}=wi(n,l);(!t.dataTransfer.files.length||!fe||ma>120)&&t.dataTransfer.clearData(),t.dataTransfer.setData(Mn?"Text":"text/html",a.innerHTML),t.dataTransfer.effectAllowed="copyMove",Mn||t.dataTransfer.setData("text/plain",c),n.dragging=new Wa(d,ja(n,t),o)};ye.dragend=n=>{let e=n.dragging;window.setTimeout(()=>{n.dragging==e&&(n.dragging=null)},50)};be.dragover=be.dragenter=(n,e)=>e.preventDefault();be.drop=(n,e)=>{let t=e,r=n.dragging;if(n.dragging=null,!t.dataTransfer)return;let s=n.posAtCoords(Yr(t));if(!s)return;let i=n.state.doc.resolve(s.pos),o=r&&r.slice;o?n.someProp("transformPasted",p=>{o=p(o,n,!1)}):o=Ra(n,Va(t.dataTransfer),Mn?null:t.dataTransfer.getData("text/html"),!1,i);let l=!!(r&&ja(n,t));if(n.someProp("handleDrop",p=>p(n,t,o||T.empty,l))){t.preventDefault();return}if(!o)return;t.preventDefault();let a=o?oa(n.state.doc,i.pos,o):i.pos;a==null&&(a=i.pos);let c=n.state.tr;if(l){let{node:p}=r;p?p.replace(c):c.deleteSelection()}let d=c.mapping.map(a),u=o.openStart==0&&o.openEnd==0&&o.content.childCount==1,f=c.doc;if(u?c.replaceRangeWith(d,d,o.content.firstChild):c.replaceRange(d,d,o),c.doc.eq(f))return;let h=c.doc.resolve(d);if(u&&R.isSelectable(o.content.firstChild)&&h.nodeAfter&&h.nodeAfter.sameMarkup(o.content.firstChild))c.setSelection(new R(h));else{let p=c.mapping.map(a);c.mapping.maps[c.mapping.maps.length-1].forEach((m,g,y,M)=>p=M),c.setSelection(Si(n,h,c.doc.resolve(p)))}n.focus(),n.dispatch(c.setMeta("uiEvent","drop"))};ye.focus=n=>{n.input.lastFocus=Date.now(),n.focused||(n.domObserver.stop(),n.dom.classList.add("ProseMirror-focused"),n.domObserver.start(),n.focused=!0,setTimeout(()=>{n.docView&&n.hasFocus()&&!n.domObserver.currentSelection.eq(n.domSelectionRange())&&Ge(n)},20))};ye.blur=(n,e)=>{let t=e;n.focused&&(n.domObserver.stop(),n.dom.classList.remove("ProseMirror-focused"),n.domObserver.start(),t.relatedTarget&&n.dom.contains(t.relatedTarget)&&n.domObserver.currentSelection.clear(),n.focused=!1)};ye.beforeinput=(n,e)=>{if(fe&&Je&&e.inputType=="deleteContentBackward"){n.domObserver.flushSoon();let{domChangeCount:r}=n.input;setTimeout(()=>{if(n.input.domChangeCount!=r||(n.dom.blur(),n.focus(),n.someProp("handleKeyDown",i=>i(n,kt(8,"Backspace")))))return;let{$cursor:s}=n.state.selection;s&&s.pos>0&&n.dispatch(n.state.tr.delete(s.pos-1,s.pos).scrollIntoView())},50)}};for(let n in be)ye[n]=be[n];function En(n,e){if(n==e)return!0;for(let t in n)if(n[t]!==e[t])return!1;for(let t in e)if(!(t in n))return!1;return!0}class fr{constructor(e,t){this.toDOM=e,this.spec=t||At,this.side=this.spec.side||0}map(e,t,r,s){let{pos:i,deleted:o}=e.mapResult(t.from+s,this.side<0?-1:1);return o?null:new he(i-r,i-r,this)}valid(){return!0}eq(e){return this==e||e instanceof fr&&(this.spec.key&&this.spec.key==e.spec.key||this.toDOM==e.toDOM&&En(this.spec,e.spec))}destroy(e){this.spec.destroy&&this.spec.destroy(e)}}class ut{constructor(e,t){this.attrs=e,this.spec=t||At}map(e,t,r,s){let i=e.map(t.from+s,this.spec.inclusiveStart?-1:1)-r,o=e.map(t.to+s,this.spec.inclusiveEnd?1:-1)-r;return i>=o?null:new he(i,o,this)}valid(e,t){return t.from=e&&(!i||i(l.spec))&&r.push(l.copy(l.from+s,l.to+s))}for(let o=0;oe){let l=this.children[o]+1;this.children[o+2].findInner(e-l,t-l,r,s+l,i)}}map(e,t,r){return this==ue||e.maps.length==0?this:this.mapInner(e,t,0,0,r||At)}mapInner(e,t,r,s,i){let o;for(let l=0;l{let c=a+r,d;if(d=Ka(t,l,c)){for(s||(s=this.children.slice());il&&u.to=e){this.children[l]==e&&(r=this.children[l+2]);break}let i=e+1,o=i+t.content.size;for(let l=0;li&&a.type instanceof ut){let c=Math.max(i,a.from)-i,d=Math.min(o,a.to)-i;cs.map(e,t,At));return tt.from(r)}forChild(e,t){if(t.isLeaf)return U.empty;let r=[];for(let s=0;st instanceof U)?e:e.reduce((t,r)=>t.concat(r instanceof U?r:r.members),[]))}}forEachSet(e){for(let t=0;t{let g=m-p-(h-f);for(let y=0;yM+d-u)continue;let A=l[y]+d-u;h>=A?l[y+1]=f<=A?-2:-1:f>=d&&g&&(l[y]+=g,l[y+1]+=g)}u+=g}),d=t.maps[c].map(d,-1)}let a=!1;for(let c=0;c=r.content.size){a=!0;continue}let f=t.map(n[c+1]+i,-1),h=f-s,{index:p,offset:m}=r.content.findIndex(u),g=r.maybeChild(p);if(g&&m==u&&m+g.nodeSize==h){let y=l[c+2].mapInner(t,g,d+1,n[c]+i+1,o);y!=ue?(l[c]=u,l[c+1]=h,l[c+2]=y):(l[c+1]=-2,a=!0)}else a=!0}if(a){let c=tf(l,n,e,t,s,i,o),d=hr(c,r,0,o);e=d.local;for(let u=0;ut&&o.to{let c=Ka(n,l,a+t);if(c){i=!0;let d=hr(c,l,t+a+1,r);d!=ue&&s.push(a,a+l.nodeSize,d)}});let o=_a(i?Ua(n):n,-t).sort(Ot);for(let l=0;l0;)e++;n.splice(e,0,t)}function ks(n){let e=[];return n.someProp("decorations",t=>{let r=t(n.state);r&&r!=ue&&e.push(r)}),n.cursorWrapper&&e.push(U.create(n.state.doc,[n.cursorWrapper.deco])),tt.from(e)}const nf={childList:!0,characterData:!0,characterDataOldValue:!0,attributes:!0,attributeOldValue:!0,subtree:!0},rf=Ce&&ct<=11;class sf{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}set(e){this.anchorNode=e.anchorNode,this.anchorOffset=e.anchorOffset,this.focusNode=e.focusNode,this.focusOffset=e.focusOffset}clear(){this.anchorNode=this.focusNode=null}eq(e){return e.anchorNode==this.anchorNode&&e.anchorOffset==this.anchorOffset&&e.focusNode==this.focusNode&&e.focusOffset==this.focusOffset}}class of{constructor(e,t){this.view=e,this.handleDOMChange=t,this.queue=[],this.flushingSoon=-1,this.observer=null,this.currentSelection=new sf,this.onCharData=null,this.suppressingSelectionUpdates=!1,this.lastChangedTextNode=null,this.observer=window.MutationObserver&&new window.MutationObserver(r=>{for(let s=0;ss.type=="childList"&&s.removedNodes.length||s.type=="characterData"&&s.oldValue.length>s.target.nodeValue.length)?this.flushSoon():this.flush()}),rf&&(this.onCharData=r=>{this.queue.push({target:r.target,type:"characterData",oldValue:r.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this)}flushSoon(){this.flushingSoon<0&&(this.flushingSoon=window.setTimeout(()=>{this.flushingSoon=-1,this.flush()},20))}forceFlush(){this.flushingSoon>-1&&(window.clearTimeout(this.flushingSoon),this.flushingSoon=-1,this.flush())}start(){this.observer&&(this.observer.takeRecords(),this.observer.observe(this.view.dom,nf)),this.onCharData&&this.view.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.connectSelection()}stop(){if(this.observer){let e=this.observer.takeRecords();if(e.length){for(let t=0;tthis.flush(),20)}this.observer.disconnect()}this.onCharData&&this.view.dom.removeEventListener("DOMCharacterDataModified",this.onCharData),this.disconnectSelection()}connectSelection(){this.view.dom.ownerDocument.addEventListener("selectionchange",this.onSelectionChange)}disconnectSelection(){this.view.dom.ownerDocument.removeEventListener("selectionchange",this.onSelectionChange)}suppressSelectionUpdates(){this.suppressingSelectionUpdates=!0,setTimeout(()=>this.suppressingSelectionUpdates=!1,50)}onSelectionChange(){if(Lo(this.view)){if(this.suppressingSelectionUpdates)return Ge(this.view);if(Ce&&ct<=11&&!this.view.state.selection.empty){let e=this.view.domSelectionRange();if(e.focusNode&&Dt(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset))return this.flushSoon()}this.flush()}}setCurSelection(){this.currentSelection.set(this.view.domSelectionRange())}ignoreSelectionChange(e){if(!e.focusNode)return!0;let t=new Set,r;for(let i=e.focusNode;i;i=Gt(i))t.add(i);for(let i=e.anchorNode;i;i=Gt(i))if(t.has(i)){r=i;break}let s=r&&this.view.docView.nearestDesc(r);if(s&&s.ignoreMutation({type:"selection",target:r.nodeType==3?r.parentNode:r}))return this.setCurSelection(),!0}pendingRecords(){if(this.observer)for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}flush(){let{view:e}=this;if(!e.docView||this.flushingSoon>-1)return;let t=this.pendingRecords();t.length&&(this.queue=[]);let r=e.domSelectionRange(),s=!this.suppressingSelectionUpdates&&!this.currentSelection.eq(r)&&Lo(e)&&!this.ignoreSelectionChange(r),i=-1,o=-1,l=!1,a=[];if(e.editable)for(let d=0;du.nodeName=="BR");if(d.length==2){let[u,f]=d;u.parentNode&&u.parentNode.parentNode==f.parentNode?f.remove():u.remove()}else{let{focusNode:u}=this.currentSelection;for(let f of d){let h=f.parentNode;h&&h.nodeName=="LI"&&(!u||cf(e,u)!=h)&&f.remove()}}}let c=null;i<0&&s&&e.input.lastFocus>Date.now()-200&&Math.max(e.input.lastTouch,e.input.lastClick.time)-1||s)&&(i>-1&&(e.docView.markDirty(i,o),lf(e)),this.handleDOMChange(i,o,l,a),e.docView&&e.docView.dirty?e.updateState(e.state):this.currentSelection.eq(r)||Ge(e),this.currentSelection.set(r))}registerMutation(e,t){if(t.indexOf(e.target)>-1)return null;let r=this.view.docView.nearestDesc(e.target);if(e.type=="attributes"&&(r==this.view.docView||e.attributeName=="contenteditable"||e.attributeName=="style"&&!e.oldValue&&!e.target.getAttribute("style"))||!r||r.ignoreMutation(e))return null;if(e.type=="childList"){for(let d=0;ds;g--){let y=r.childNodes[g-1],M=y.pmViewDesc;if(y.nodeName=="BR"&&!M){i=g;break}if(!M||M.size)break}let u=n.state.doc,f=n.someProp("domParser")||at.fromSchema(n.state.schema),h=u.resolve(o),p=null,m=f.parse(r,{topNode:h.parent,topMatch:h.parent.contentMatchAt(h.index()),topOpen:!0,from:s,to:i,preserveWhitespace:h.parent.type.whitespace=="pre"?"full":!0,findPositions:c,ruleFromNode:uf,context:h});if(c&&c[0].pos!=null){let g=c[0].pos,y=c[1]&&c[1].pos;y==null&&(y=g),p={anchor:g+o,head:y+o}}return{doc:m,sel:p,from:o,to:l}}function uf(n){let e=n.pmViewDesc;if(e)return e.parseRule();if(n.nodeName=="BR"&&n.parentNode){if(ge&&/^(ul|ol)$/i.test(n.parentNode.nodeName)){let t=document.createElement("div");return t.appendChild(document.createElement("li")),{skip:t}}else if(n.parentNode.lastChild==n||ge&&/^(tr|table)$/i.test(n.parentNode.nodeName))return{ignore:!0}}else if(n.nodeName=="IMG"&&n.getAttribute("mark-placeholder"))return{ignore:!0};return null}const ff=/^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|img|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;function hf(n,e,t,r,s){let i=n.input.compositionPendingChanges||(n.composing?n.input.compositionID:0);if(n.input.compositionPendingChanges=0,e<0){let N=n.input.lastSelectionTime>Date.now()-50?n.input.lastSelectionOrigin:null,H=xi(n,N);if(H&&!n.state.selection.eq(H)){if(fe&&Je&&n.input.lastKeyCode===13&&Date.now()-100yt(n,kt(13,"Enter"))))return;let ee=n.state.tr.setSelection(H);N=="pointer"?ee.setMeta("pointer",!0):N=="key"&&ee.scrollIntoView(),i&&ee.setMeta("composition",i),n.dispatch(ee)}return}let o=n.state.doc.resolve(e),l=o.sharedDepth(t);e=o.before(l+1),t=n.state.doc.resolve(t).after(l+1);let a=n.state.selection,c=df(n,e,t),d=n.state.doc,u=d.slice(c.from,c.to),f,h;n.input.lastKeyCode===8&&Date.now()-100Date.now()-225||Je)&&s.some(N=>N.nodeType==1&&!ff.test(N.nodeName))&&(!p||p.endA>=p.endB)&&n.someProp("handleKeyDown",N=>N(n,kt(13,"Enter")))){n.input.lastIOSEnter=0;return}if(!p)if(r&&a instanceof D&&!a.empty&&a.$head.sameParent(a.$anchor)&&!n.composing&&!(c.sel&&c.sel.anchor!=c.sel.head))p={start:a.from,endA:a.to,endB:a.to};else{if(c.sel){let N=Uo(n,n.state.doc,c.sel);if(N&&!N.eq(n.state.selection)){let H=n.state.tr.setSelection(N);i&&H.setMeta("composition",i),n.dispatch(H)}}return}n.state.selection.fromn.state.selection.from&&p.start<=n.state.selection.from+2&&n.state.selection.from>=c.from?p.start=n.state.selection.from:p.endA=n.state.selection.to-2&&n.state.selection.to<=c.to&&(p.endB+=n.state.selection.to-p.endA,p.endA=n.state.selection.to)),Ce&&ct<=11&&p.endB==p.start+1&&p.endA==p.start&&p.start>c.from&&c.doc.textBetween(p.start-c.from-1,p.start-c.from+1)=="  "&&(p.start--,p.endA--,p.endB--);let m=c.doc.resolveNoCache(p.start-c.from),g=c.doc.resolveNoCache(p.endB-c.from),y=d.resolve(p.start),M=m.sameParent(g)&&m.parent.inlineContent&&y.end()>=p.endA;if((Yt&&n.input.lastIOSEnter>Date.now()-225&&(!M||s.some(N=>N.nodeName=="DIV"||N.nodeName=="P"))||!M&&m.posN(n,kt(13,"Enter")))){n.input.lastIOSEnter=0;return}if(n.state.selection.anchor>p.start&&mf(d,p.start,p.endA,m,g)&&n.someProp("handleKeyDown",N=>N(n,kt(8,"Backspace")))){Je&&fe&&n.domObserver.suppressSelectionUpdates();return}fe&&p.endB==p.start&&(n.input.lastChromeDelete=Date.now()),Je&&!M&&m.start()!=g.start()&&g.parentOffset==0&&m.depth==g.depth&&c.sel&&c.sel.anchor==c.sel.head&&c.sel.head==p.endA&&(p.endB-=2,g=c.doc.resolveNoCache(p.endB-c.from),setTimeout(()=>{n.someProp("handleKeyDown",function(N){return N(n,kt(13,"Enter"))})},20));let A=p.start,L=p.endA,O=N=>{let H=N||n.state.tr.replace(A,L,c.doc.slice(p.start-c.from,p.endB-c.from));if(c.sel){let ee=Uo(n,H.doc,c.sel);ee&&!(fe&&n.composing&&ee.empty&&(p.start!=p.endB||n.input.lastChromeDeleteGe(n),20));let N=O(n.state.tr.delete(A,L)),H=d.resolve(p.start).marksAcross(d.resolve(p.endA));H&&N.ensureMarks(H),n.dispatch(N)}else if(p.endA==p.endB&&(B=pf(m.parent.content.cut(m.parentOffset,g.parentOffset),y.parent.content.cut(y.parentOffset,p.endA-y.start())))){let N=O(n.state.tr);B.type=="add"?N.addMark(A,L,B.mark):N.removeMark(A,L,B.mark),n.dispatch(N)}else if(m.parent.child(m.index()).isText&&m.index()==g.index()-(g.textOffset?0:1)){let N=m.parent.textBetween(m.parentOffset,g.parentOffset),H=()=>O(n.state.tr.insertText(N,A,L));n.someProp("handleTextInput",ee=>ee(n,A,L,N,H))||n.dispatch(H())}else n.dispatch(O());else n.dispatch(O())}function Uo(n,e,t){return Math.max(t.anchor,t.head)>e.content.size?null:Si(n,e.resolve(t.anchor),e.resolve(t.head))}function pf(n,e){let t=n.firstChild.marks,r=e.firstChild.marks,s=t,i=r,o,l,a;for(let d=0;dd.mark(l.addToSet(d.marks));else if(s.length==0&&i.length==1)l=i[0],o="remove",a=d=>d.mark(l.removeFromSet(d.marks));else return null;let c=[];for(let d=0;dt||Cs(o,!0,!1)0&&(e||n.indexAfter(r)==n.node(r).childCount);)r--,s++,e=!1;if(t){let i=n.node(r).maybeChild(n.indexAfter(r));for(;i&&!i.isLeaf;)i=i.firstChild,s++}return s}function gf(n,e,t,r,s){let i=n.findDiffStart(e,t);if(i==null)return null;let{a:o,b:l}=n.findDiffEnd(e,t+n.size,t+e.size);if(s=="end"){let a=Math.max(0,i-Math.min(o,l));r-=o+a-i}if(o=o?i-r:0;i-=a,i&&i=l?i-r:0;i-=a,i&&i=56320&&e<=57343&&t>=55296&&t<=56319}class qa{constructor(e,t){this._root=null,this.focused=!1,this.trackWrites=null,this.mounted=!1,this.markCursor=null,this.cursorWrapper=null,this.lastSelectedViewDesc=void 0,this.input=new Lu,this.prevDirectPlugins=[],this.pluginViews=[],this.requiresGeckoHackNode=!1,this.dragging=null,this._props=t,this.state=t.state,this.directPlugins=t.plugins||[],this.directPlugins.forEach(Qo),this.dispatch=this.dispatch.bind(this),this.dom=e&&e.mount||document.createElement("div"),e&&(e.appendChild?e.appendChild(this.dom):typeof e=="function"?e(this.dom):e.mount&&(this.mounted=!0)),this.editable=Yo(this),Go(this),this.nodeViews=Xo(this),this.docView=Oo(this.state.doc,Jo(this),ks(this),this.dom,this),this.domObserver=new of(this,(r,s,i,o)=>hf(this,r,s,i,o)),this.domObserver.start(),Pu(this),this.updatePluginViews()}get composing(){return this.input.composing}get props(){if(this._props.state!=this.state){let e=this._props;this._props={};for(let t in e)this._props[t]=e[t];this._props.state=this.state}return this._props}update(e){e.handleDOMEvents!=this._props.handleDOMEvents&&Ys(this);let t=this._props;this._props=e,e.plugins&&(e.plugins.forEach(Qo),this.directPlugins=e.plugins),this.updateStateInner(e.state,t)}setProps(e){let t={};for(let r in this._props)t[r]=this._props[r];t.state=this.state;for(let r in e)t[r]=e[r];this.update(t)}updateState(e){this.updateStateInner(e,this._props)}updateStateInner(e,t){var r;let s=this.state,i=!1,o=!1;e.storedMarks&&this.composing&&($a(this),o=!0),this.state=e;let l=s.plugins!=e.plugins||this._props.plugins!=t.plugins;if(l||this._props.plugins!=t.plugins||this._props.nodeViews!=t.nodeViews){let h=Xo(this);bf(h,this.nodeViews)&&(this.nodeViews=h,i=!0)}(l||t.handleDOMEvents!=this._props.handleDOMEvents)&&Ys(this),this.editable=Yo(this),Go(this);let a=ks(this),c=Jo(this),d=s.plugins!=e.plugins&&!s.doc.eq(e.doc)?"reset":e.scrollToSelection>s.scrollToSelection?"to selection":"preserve",u=i||!this.docView.matchesNode(e.doc,c,a);(u||!e.selection.eq(s.selection))&&(o=!0);let f=d=="preserve"&&o&&this.dom.style.overflowAnchor==null&&Gd(this);if(o){this.domObserver.stop();let h=u&&(Ce||fe)&&!this.composing&&!s.selection.empty&&!e.selection.empty&&yf(s.selection,e.selection);if(u){let p=fe?this.trackWrites=this.domSelectionRange().focusNode:null;this.composing&&(this.input.compositionNode=Ju(this)),(i||!this.docView.update(e.doc,c,a,this))&&(this.docView.updateOuterDeco(c),this.docView.destroy(),this.docView=Oo(e.doc,c,a,this.dom,this)),p&&!this.trackWrites&&(h=!0)}h||!(this.input.mouseDown&&this.domObserver.currentSelection.eq(this.domSelectionRange())&&ku(this))?Ge(this,h):(Oa(this,e.selection),this.domObserver.setCurSelection()),this.domObserver.start()}this.updatePluginViews(s),!((r=this.dragging)===null||r===void 0)&&r.node&&!s.doc.eq(e.doc)&&this.updateDraggedNode(this.dragging,s),d=="reset"?this.dom.scrollTop=0:d=="to selection"?this.scrollToSelection():f&&Yd(f)}scrollToSelection(){let e=this.domSelectionRange().focusNode;if(!(!e||!this.dom.contains(e.nodeType==1?e:e.parentNode))){if(!this.someProp("handleScrollToSelection",t=>t(this)))if(this.state.selection instanceof R){let t=this.docView.domAfterPos(this.state.selection.from);t.nodeType==1&&So(this,t.getBoundingClientRect(),e)}else So(this,this.coordsAtPos(this.state.selection.head,1),e)}}destroyPluginViews(){let e;for(;e=this.pluginViews.pop();)e.destroy&&e.destroy()}updatePluginViews(e){if(!e||e.plugins!=this.state.plugins||this.directPlugins!=this.prevDirectPlugins){this.prevDirectPlugins=this.directPlugins,this.destroyPluginViews();for(let t=0;t0&&this.state.doc.nodeAt(i))==r.node&&(s=i)}this.dragging=new Wa(e.slice,e.move,s<0?void 0:R.create(this.state.doc,s))}someProp(e,t){let r=this._props&&this._props[e],s;if(r!=null&&(s=t?t(r):r))return s;for(let o=0;ot.ownerDocument.getSelection()),this._root=t}return e||document}updateRoot(){this._root=null}posAtCoords(e){return nu(this,e)}coordsAtPos(e,t=1){return Ca(this,e,t)}domAtPos(e,t=0){return this.docView.domFromPos(e,t)}nodeDOM(e){let t=this.docView.descAt(e);return t?t.nodeDOM:null}posAtDOM(e,t,r=-1){let s=this.docView.posFromDOM(e,t,r);if(s==null)throw new RangeError("DOM position not inside the editor");return s}endOfTextblock(e,t){return lu(this,t||this.state,e)}pasteHTML(e,t){return Tn(this,"",e,!1,t||new ClipboardEvent("paste"))}pasteText(e,t){return Tn(this,e,null,!0,t||new ClipboardEvent("paste"))}serializeForClipboard(e){return wi(this,e)}destroy(){this.docView&&(zu(this),this.destroyPluginViews(),this.mounted?(this.docView.update(this.state.doc,[],ks(this),this),this.dom.textContent=""):this.dom.parentNode&&this.dom.parentNode.removeChild(this.dom),this.docView.destroy(),this.docView=null,Hd())}get isDestroyed(){return this.docView==null}dispatchEvent(e){return Hu(this,e)}domSelectionRange(){let e=this.domSelection();return e?ge&&this.root.nodeType===11&&jd(this.dom.ownerDocument)==this.dom&&af(this,e)||e:{focusNode:null,focusOffset:0,anchorNode:null,anchorOffset:0}}domSelection(){return this.root.getSelection()}}qa.prototype.dispatch=function(n){let e=this._props.dispatchTransaction;e?e.call(this,n):this.updateState(this.state.apply(n))};function Jo(n){let e=Object.create(null);return e.class="ProseMirror",e.contenteditable=String(n.editable),n.someProp("attributes",t=>{if(typeof t=="function"&&(t=t(n.state)),t)for(let r in t)r=="class"?e.class+=" "+t[r]:r=="style"?e.style=(e.style?e.style+";":"")+t[r]:!e[r]&&r!="contenteditable"&&r!="nodeName"&&(e[r]=String(t[r]))}),e.translate||(e.translate="no"),[he.node(0,n.state.doc.content.size,e)]}function Go(n){if(n.markCursor){let e=document.createElement("img");e.className="ProseMirror-separator",e.setAttribute("mark-placeholder","true"),e.setAttribute("alt",""),n.cursorWrapper={dom:e,deco:he.widget(n.state.selection.from,e,{raw:!0,marks:n.markCursor})}}else n.cursorWrapper=null}function Yo(n){return!n.someProp("editable",e=>e(n.state)===!1)}function yf(n,e){let t=Math.min(n.$anchor.sharedDepth(n.head),e.$anchor.sharedDepth(e.head));return n.$anchor.start(t)!=e.$anchor.start(t)}function Xo(n){let e=Object.create(null);function t(r){for(let s in r)Object.prototype.hasOwnProperty.call(e,s)||(e[s]=r[s])}return n.someProp("nodeViews",t),n.someProp("markViews",t),e}function bf(n,e){let t=0,r=0;for(let s in n){if(n[s]!=e[s])return!0;t++}for(let s in e)r++;return t!=r}function Qo(n){if(n.spec.state||n.spec.filterTransaction||n.spec.appendTransaction)throw new RangeError("Plugins passed directly to the view must not have a state component")}var ft={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},pr={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},kf=typeof navigator<"u"&&/Mac/.test(navigator.platform),Cf=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var de=0;de<10;de++)ft[48+de]=ft[96+de]=String(de);for(var de=1;de<=24;de++)ft[de+111]="F"+de;for(var de=65;de<=90;de++)ft[de]=String.fromCharCode(de+32),pr[de]=String.fromCharCode(de);for(var xs in ft)pr.hasOwnProperty(xs)||(pr[xs]=ft[xs]);function xf(n){var e=kf&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||Cf&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",t=!e&&n.key||(n.shiftKey?pr:ft)[n.keyCode]||n.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}const Sf=typeof navigator<"u"&&/Mac|iP(hone|[oa]d)/.test(navigator.platform),wf=typeof navigator<"u"&&/Win/.test(navigator.platform);function Mf(n){let e=n.split(/-(?!$)/),t=e[e.length-1];t=="Space"&&(t=" ");let r,s,i,o;for(let l=0;ln.selection.empty?!1:(e&&e(n.tr.deleteSelection().scrollIntoView()),!0);function Ja(n,e){let{$cursor:t}=n.selection;return!t||(e?!e.endOfTextblock("backward",n):t.parentOffset>0)?null:t}const Of=(n,e,t)=>{let r=Ja(n,t);if(!r)return!1;let s=vi(r);if(!s){let o=r.blockRange(),l=o&&Zt(o);return l==null?!1:(e&&e(n.tr.lift(o,l).scrollIntoView()),!0)}let i=s.nodeBefore;if(Qa(n,s,e,-1))return!0;if(r.parent.content.size==0&&(Xt(i,"end")||R.isSelectable(i)))for(let o=r.depth;;o--){let l=Ur(n.doc,r.before(o),r.after(o),T.empty);if(l&&l.slice.size1)break}return i.isAtom&&s.depth==r.depth-1?(e&&e(n.tr.delete(s.pos-i.nodeSize,s.pos).scrollIntoView()),!0):!1},Nf=(n,e,t)=>{let r=Ja(n,t);if(!r)return!1;let s=vi(r);return s?Ga(n,s,e):!1},vf=(n,e,t)=>{let r=Ya(n,t);if(!r)return!1;let s=Ri(r);return s?Ga(n,s,e):!1};function Ga(n,e,t){let r=e.nodeBefore,s=r,i=e.pos-1;for(;!s.isTextblock;i--){if(s.type.spec.isolating)return!1;let d=s.lastChild;if(!d)return!1;s=d}let o=e.nodeAfter,l=o,a=e.pos+1;for(;!l.isTextblock;a++){if(l.type.spec.isolating)return!1;let d=l.firstChild;if(!d)return!1;l=d}let c=Ur(n.doc,i,a,T.empty);if(!c||c.from!=i||c instanceof re&&c.slice.size>=a-i)return!1;if(t){let d=n.tr.step(c);d.setSelection(D.create(d.doc,i)),t(d.scrollIntoView())}return!0}function Xt(n,e,t=!1){for(let r=n;r;r=e=="start"?r.firstChild:r.lastChild){if(r.isTextblock)return!0;if(t&&r.childCount!=1)return!1}return!1}const Rf=(n,e,t)=>{let{$head:r,empty:s}=n.selection,i=r;if(!s)return!1;if(r.parent.isTextblock){if(t?!t.endOfTextblock("backward",n):r.parentOffset>0)return!1;i=vi(r)}let o=i&&i.nodeBefore;return!o||!R.isSelectable(o)?!1:(e&&e(n.tr.setSelection(R.create(n.doc,i.pos-o.nodeSize)).scrollIntoView()),!0)};function vi(n){if(!n.parent.type.spec.isolating)for(let e=n.depth-1;e>=0;e--){if(n.index(e)>0)return n.doc.resolve(n.before(e+1));if(n.node(e).type.spec.isolating)break}return null}function Ya(n,e){let{$cursor:t}=n.selection;return!t||(e?!e.endOfTextblock("forward",n):t.parentOffset{let r=Ya(n,t);if(!r)return!1;let s=Ri(r);if(!s)return!1;let i=s.nodeAfter;if(Qa(n,s,e,1))return!0;if(r.parent.content.size==0&&(Xt(i,"start")||R.isSelectable(i))){let o=Ur(n.doc,r.before(),r.after(),T.empty);if(o&&o.slice.size{let{$head:r,empty:s}=n.selection,i=r;if(!s)return!1;if(r.parent.isTextblock){if(t?!t.endOfTextblock("forward",n):r.parentOffset=0;e--){let t=n.node(e);if(n.index(e)+1{let t=n.selection,r=t instanceof R,s;if(r){if(t.node.isTextblock||!pt(n.doc,t.from))return!1;s=t.from}else if(s=Kr(n.doc,t.from,-1),s==null)return!1;if(e){let i=n.tr.join(s);r&&i.setSelection(R.create(i.doc,s-n.doc.resolve(s).nodeBefore.nodeSize)),e(i.scrollIntoView())}return!0},Pf=(n,e)=>{let t=n.selection,r;if(t instanceof R){if(t.node.isTextblock||!pt(n.doc,t.to))return!1;r=t.to}else if(r=Kr(n.doc,t.to,1),r==null)return!1;return e&&e(n.tr.join(r).scrollIntoView()),!0},zf=(n,e)=>{let{$from:t,$to:r}=n.selection,s=t.blockRange(r),i=s&&Zt(s);return i==null?!1:(e&&e(n.tr.lift(s,i).scrollIntoView()),!0)},Bf=(n,e)=>{let{$head:t,$anchor:r}=n.selection;return!t.parent.type.spec.code||!t.sameParent(r)?!1:(e&&e(n.tr.insertText(` +`).scrollIntoView()),!0)};function Xa(n){for(let e=0;e{let{$head:t,$anchor:r}=n.selection;if(!t.parent.type.spec.code||!t.sameParent(r))return!1;let s=t.node(-1),i=t.indexAfter(-1),o=Xa(s.contentMatchAt(i));if(!o||!s.canReplaceWith(i,i,o))return!1;if(e){let l=t.after(),a=n.tr.replaceWith(l,l,o.createAndFill());a.setSelection(I.near(a.doc.resolve(l),1)),e(a.scrollIntoView())}return!0},Ff=(n,e)=>{let t=n.selection,{$from:r,$to:s}=t;if(t instanceof Ne||r.parent.inlineContent||s.parent.inlineContent)return!1;let i=Xa(s.parent.contentMatchAt(s.indexAfter()));if(!i||!i.isTextblock)return!1;if(e){let o=(!r.parentOffset&&s.index(){let{$cursor:t}=n.selection;if(!t||t.parent.content.size)return!1;if(t.depth>1&&t.after()!=t.end(-1)){let i=t.before();if(Kt(n.doc,i))return e&&e(n.tr.split(i).scrollIntoView()),!0}let r=t.blockRange(),s=r&&Zt(r);return s==null?!1:(e&&e(n.tr.lift(r,s).scrollIntoView()),!0)},Vf=(n,e)=>{let{$from:t,to:r}=n.selection,s,i=t.sharedDepth(r);return i==0?!1:(s=t.before(i),e&&e(n.tr.setSelection(R.create(n.doc,s))),!0)};function Wf(n,e,t){let r=e.nodeBefore,s=e.nodeAfter,i=e.index();return!r||!s||!r.type.compatibleContent(s.type)?!1:!r.content.size&&e.parent.canReplace(i-1,i)?(t&&t(n.tr.delete(e.pos-r.nodeSize,e.pos).scrollIntoView()),!0):!e.parent.canReplace(i,i+1)||!(s.isTextblock||pt(n.doc,e.pos))?!1:(t&&t(n.tr.join(e.pos).scrollIntoView()),!0)}function Qa(n,e,t,r){let s=e.nodeBefore,i=e.nodeAfter,o,l,a=s.type.spec.isolating||i.type.spec.isolating;if(!a&&Wf(n,e,t))return!0;let c=!a&&e.parent.canReplace(e.index(),e.index()+1);if(c&&(o=(l=s.contentMatchAt(s.childCount)).findWrapping(i.type))&&l.matchType(o[0]||i.type).validEnd){if(t){let h=e.pos+i.nodeSize,p=k.empty;for(let y=o.length-1;y>=0;y--)p=k.from(o[y].create(null,p));p=k.from(s.copy(p));let m=n.tr.step(new se(e.pos-1,h,e.pos,h,new T(p,1,0),o.length,!0)),g=m.doc.resolve(h+2*o.length);g.nodeAfter&&g.nodeAfter.type==s.type&&pt(m.doc,g.pos)&&m.join(g.pos),t(m.scrollIntoView())}return!0}let d=i.type.spec.isolating||r>0&&a?null:I.findFrom(e,1),u=d&&d.$from.blockRange(d.$to),f=u&&Zt(u);if(f!=null&&f>=e.depth)return t&&t(n.tr.lift(u,f).scrollIntoView()),!0;if(c&&Xt(i,"start",!0)&&Xt(s,"end")){let h=s,p=[];for(;p.push(h),!h.isTextblock;)h=h.lastChild;let m=i,g=1;for(;!m.isTextblock;m=m.firstChild)g++;if(h.canReplace(h.childCount,h.childCount,m.content)){if(t){let y=k.empty;for(let A=p.length-1;A>=0;A--)y=k.from(p[A].copy(y));let M=n.tr.step(new se(e.pos-p.length,e.pos+i.nodeSize,e.pos+g,e.pos+i.nodeSize-g,new T(y,p.length,0),0,!0));t(M.scrollIntoView())}return!0}}return!1}function Za(n){return function(e,t){let r=e.selection,s=n<0?r.$from:r.$to,i=s.depth;for(;s.node(i).isInline;){if(!i)return!1;i--}return s.node(i).isTextblock?(t&&t(e.tr.setSelection(D.create(e.doc,n<0?s.start(i):s.end(i)))),!0):!1}}const jf=Za(-1),_f=Za(1);function Kf(n,e=null){return function(t,r){let{$from:s,$to:i}=t.selection,o=s.blockRange(i),l=o&&yi(o,n,e);return l?(r&&r(t.tr.wrap(o,l).scrollIntoView()),!0):!1}}function Zo(n,e=null){return function(t,r){let s=!1;for(let i=0;i{if(s)return!1;if(!(!a.isTextblock||a.hasMarkup(n,e)))if(a.type==n)s=!0;else{let d=t.doc.resolve(c),u=d.index();s=d.parent.canReplaceWith(u,u+1,n)}})}if(!s)return!1;if(r){let i=t.tr;for(let o=0;o=2&&e.$from.node(e.depth-1).type.compatibleContent(t)&&e.startIndex==0){if(e.$from.index(e.depth-1)==0)return!1;let a=o.resolve(e.start-2);i=new lr(a,a,e.depth),e.endIndex=0;d--)i=k.from(t[d].type.create(t[d].attrs,i));n.step(new se(e.start-(r?2:0),e.end,e.start,e.end,new T(i,0,0),t.length,!0));let o=0;for(let d=0;do.childCount>0&&o.firstChild.type==n);return i?t?r.node(i.depth-1).type==n?Yf(e,t,n,i):Xf(e,t,i):!0:!1}}function Yf(n,e,t,r){let s=n.tr,i=r.end,o=r.$to.end(r.depth);im;p--)h-=s.child(p).nodeSize,r.delete(h-1,h+1);let i=r.doc.resolve(t.start),o=i.nodeAfter;if(r.mapping.map(t.end)!=t.start+i.nodeAfter.nodeSize)return!1;let l=t.startIndex==0,a=t.endIndex==s.childCount,c=i.node(-1),d=i.index(-1);if(!c.canReplace(d+(l?0:1),d+1,o.content.append(a?k.empty:k.from(s))))return!1;let u=i.pos,f=u+o.nodeSize;return r.step(new se(u-(l?1:0),f+(a?1:0),u+1,f-1,new T((l?k.empty:k.from(s.copy(k.empty))).append(a?k.empty:k.from(s.copy(k.empty))),l?0:1,a?0:1),l?0:1)),e(r.scrollIntoView()),!0}function Qf(n){return function(e,t){let{$from:r,$to:s}=e.selection,i=r.blockRange(s,c=>c.childCount>0&&c.firstChild.type==n);if(!i)return!1;let o=i.startIndex;if(o==0)return!1;let l=i.parent,a=l.child(o-1);if(a.type!=n)return!1;if(t){let c=a.lastChild&&a.lastChild.type==l.type,d=k.from(c?n.create():null),u=new T(k.from(n.create(null,k.from(l.type.create(null,d)))),c?3:1,0),f=i.start,h=i.end;t(e.tr.step(new se(f-(c?3:1),h,f,h,u,1,!0)).scrollIntoView())}return!0}}function Xr(n){const{state:e,transaction:t}=n;let{selection:r}=t,{doc:s}=t,{storedMarks:i}=t;return{...e,apply:e.apply.bind(e),applyTransaction:e.applyTransaction.bind(e),plugins:e.plugins,schema:e.schema,reconfigure:e.reconfigure.bind(e),toJSON:e.toJSON.bind(e),get storedMarks(){return i},get selection(){return r},get doc(){return s},get tr(){return r=t.selection,s=t.doc,i=t.storedMarks,t}}}class Qr{constructor(e){this.editor=e.editor,this.rawCommands=this.editor.extensionManager.commands,this.customState=e.state}get hasCustomState(){return!!this.customState}get state(){return this.customState||this.editor.state}get commands(){const{rawCommands:e,editor:t,state:r}=this,{view:s}=t,{tr:i}=r,o=this.buildProps(i);return Object.fromEntries(Object.entries(e).map(([l,a])=>[l,(...d)=>{const u=a(...d)(o);return!i.getMeta("preventDispatch")&&!this.hasCustomState&&s.dispatch(i),u}]))}get chain(){return()=>this.createChain()}get can(){return()=>this.createCan()}createChain(e,t=!0){const{rawCommands:r,editor:s,state:i}=this,{view:o}=s,l=[],a=!!e,c=e||i.tr,d=()=>(!a&&t&&!c.getMeta("preventDispatch")&&!this.hasCustomState&&o.dispatch(c),l.every(f=>f===!0)),u={...Object.fromEntries(Object.entries(r).map(([f,h])=>[f,(...m)=>{const g=this.buildProps(c,t),y=h(...m)(g);return l.push(y),u}])),run:d};return u}createCan(e){const{rawCommands:t,state:r}=this,s=!1,i=e||r.tr,o=this.buildProps(i,s);return{...Object.fromEntries(Object.entries(t).map(([a,c])=>[a,(...d)=>c(...d)({...o,dispatch:void 0})])),chain:()=>this.createChain(i,s)}}buildProps(e,t=!0){const{rawCommands:r,editor:s,state:i}=this,{view:o}=s,l={tr:e,editor:s,view:o,state:Xr({state:i,transaction:e}),dispatch:t?()=>{}:void 0,chain:()=>this.createChain(e,t),can:()=>this.createCan(e),get commands(){return Object.fromEntries(Object.entries(r).map(([a,c])=>[a,(...d)=>c(...d)(l)]))}};return l}}class Zf{constructor(){this.callbacks={}}on(e,t){return this.callbacks[e]||(this.callbacks[e]=[]),this.callbacks[e].push(t),this}emit(e,...t){const r=this.callbacks[e];return r&&r.forEach(s=>s.apply(this,t)),this}off(e,t){const r=this.callbacks[e];return r&&(t?this.callbacks[e]=r.filter(s=>s!==t):delete this.callbacks[e]),this}once(e,t){const r=(...s)=>{this.off(e,r),t.apply(this,s)};return this.on(e,r)}removeAllListeners(){this.callbacks={}}}function E(n,e,t){return n.config[e]===void 0&&n.parent?E(n.parent,e,t):typeof n.config[e]=="function"?n.config[e].bind({...t,parent:n.parent?E(n.parent,e,t):null}):n.config[e]}function Zr(n){const e=n.filter(s=>s.type==="extension"),t=n.filter(s=>s.type==="node"),r=n.filter(s=>s.type==="mark");return{baseExtensions:e,nodeExtensions:t,markExtensions:r}}function ec(n){const e=[],{nodeExtensions:t,markExtensions:r}=Zr(n),s=[...t,...r],i={default:null,rendered:!0,renderHTML:null,parseHTML:null,keepOnSplit:!0,isRequired:!1};return n.forEach(o=>{const l={name:o.name,options:o.options,storage:o.storage,extensions:s},a=E(o,"addGlobalAttributes",l);if(!a)return;a().forEach(d=>{d.types.forEach(u=>{Object.entries(d.attributes).forEach(([f,h])=>{e.push({type:u,name:f,attribute:{...i,...h}})})})})}),s.forEach(o=>{const l={name:o.name,options:o.options,storage:o.storage},a=E(o,"addAttributes",l);if(!a)return;const c=a();Object.entries(c).forEach(([d,u])=>{const f={...i,...u};typeof(f==null?void 0:f.default)=="function"&&(f.default=f.default()),f!=null&&f.isRequired&&(f==null?void 0:f.default)===void 0&&delete f.default,e.push({type:o.name,name:d,attribute:f})})}),e}function oe(n,e){if(typeof n=="string"){if(!e.nodes[n])throw Error(`There is no node type named '${n}'. Maybe you forgot to add the extension?`);return e.nodes[n]}return n}function W(...n){return n.filter(e=>!!e).reduce((e,t)=>{const r={...e};return Object.entries(t).forEach(([s,i])=>{if(!r[s]){r[s]=i;return}if(s==="class"){const l=i?String(i).split(" "):[],a=r[s]?r[s].split(" "):[],c=l.filter(d=>!a.includes(d));r[s]=[...a,...c].join(" ")}else if(s==="style"){const l=i?i.split(";").map(d=>d.trim()).filter(Boolean):[],a=r[s]?r[s].split(";").map(d=>d.trim()).filter(Boolean):[],c=new Map;a.forEach(d=>{const[u,f]=d.split(":").map(h=>h.trim());c.set(u,f)}),l.forEach(d=>{const[u,f]=d.split(":").map(h=>h.trim());c.set(u,f)}),r[s]=Array.from(c.entries()).map(([d,u])=>`${d}: ${u}`).join("; ")}else r[s]=i}),r},{})}function Xs(n,e){return e.filter(t=>t.type===n.type.name).filter(t=>t.attribute.rendered).map(t=>t.attribute.renderHTML?t.attribute.renderHTML(n.attrs)||{}:{[t.name]:n.attrs[t.name]}).reduce((t,r)=>W(t,r),{})}function tc(n){return typeof n=="function"}function z(n,e=void 0,...t){return tc(n)?e?n.bind(e)(...t):n(...t):n}function eh(n={}){return Object.keys(n).length===0&&n.constructor===Object}function th(n){return typeof n!="string"?n:n.match(/^[+-]?(?:\d*\.)?\d+$/)?Number(n):n==="true"?!0:n==="false"?!1:n}function el(n,e){return"style"in n?n:{...n,getAttrs:t=>{const r=n.getAttrs?n.getAttrs(t):n.attrs;if(r===!1)return!1;const s=e.reduce((i,o)=>{const l=o.attribute.parseHTML?o.attribute.parseHTML(t):th(t.getAttribute(o.name));return l==null?i:{...i,[o.name]:l}},{});return{...r,...s}}}}function tl(n){return Object.fromEntries(Object.entries(n).filter(([e,t])=>e==="attrs"&&eh(t)?!1:t!=null))}function nh(n,e){var t;const r=ec(n),{nodeExtensions:s,markExtensions:i}=Zr(n),o=(t=s.find(c=>E(c,"topNode")))===null||t===void 0?void 0:t.name,l=Object.fromEntries(s.map(c=>{const d=r.filter(y=>y.type===c.name),u={name:c.name,options:c.options,storage:c.storage,editor:e},f=n.reduce((y,M)=>{const A=E(M,"extendNodeSchema",u);return{...y,...A?A(c):{}}},{}),h=tl({...f,content:z(E(c,"content",u)),marks:z(E(c,"marks",u)),group:z(E(c,"group",u)),inline:z(E(c,"inline",u)),atom:z(E(c,"atom",u)),selectable:z(E(c,"selectable",u)),draggable:z(E(c,"draggable",u)),code:z(E(c,"code",u)),whitespace:z(E(c,"whitespace",u)),linebreakReplacement:z(E(c,"linebreakReplacement",u)),defining:z(E(c,"defining",u)),isolating:z(E(c,"isolating",u)),attrs:Object.fromEntries(d.map(y=>{var M;return[y.name,{default:(M=y==null?void 0:y.attribute)===null||M===void 0?void 0:M.default}]}))}),p=z(E(c,"parseHTML",u));p&&(h.parseDOM=p.map(y=>el(y,d)));const m=E(c,"renderHTML",u);m&&(h.toDOM=y=>m({node:y,HTMLAttributes:Xs(y,d)}));const g=E(c,"renderText",u);return g&&(h.toText=g),[c.name,h]})),a=Object.fromEntries(i.map(c=>{const d=r.filter(g=>g.type===c.name),u={name:c.name,options:c.options,storage:c.storage,editor:e},f=n.reduce((g,y)=>{const M=E(y,"extendMarkSchema",u);return{...g,...M?M(c):{}}},{}),h=tl({...f,inclusive:z(E(c,"inclusive",u)),excludes:z(E(c,"excludes",u)),group:z(E(c,"group",u)),spanning:z(E(c,"spanning",u)),code:z(E(c,"code",u)),attrs:Object.fromEntries(d.map(g=>{var y;return[g.name,{default:(y=g==null?void 0:g.attribute)===null||y===void 0?void 0:y.default}]}))}),p=z(E(c,"parseHTML",u));p&&(h.parseDOM=p.map(g=>el(g,d)));const m=E(c,"renderHTML",u);return m&&(h.toDOM=g=>m({mark:g,HTMLAttributes:Xs(g,d)})),[c.name,h]}));return new Gl({topNode:o,nodes:l,marks:a})}function ws(n,e){return e.nodes[n]||e.marks[n]||null}function nl(n,e){return Array.isArray(e)?e.some(t=>(typeof t=="string"?t:t.name)===n.name):e}function Di(n,e){const t=zt.fromSchema(e).serializeFragment(n),s=document.implementation.createHTMLDocument().createElement("div");return s.appendChild(t),s.innerHTML}const rh=(n,e=500)=>{let t="";const r=n.parentOffset;return n.parent.nodesBetween(Math.max(0,r-e),r,(s,i,o,l)=>{var a,c;const d=((c=(a=s.type.spec).toText)===null||c===void 0?void 0:c.call(a,{node:s,pos:i,parent:o,index:l}))||s.textContent||"%leaf%";t+=s.isAtom&&!s.isText?d:d.slice(0,Math.max(0,r-i))}),t};function Ii(n){return Object.prototype.toString.call(n)==="[object RegExp]"}class es{constructor(e){this.find=e.find,this.handler=e.handler}}const sh=(n,e)=>{if(Ii(e))return e.exec(n);const t=e(n);if(!t)return null;const r=[t.text];return r.index=t.index,r.input=n,r.data=t.data,t.replaceWith&&(t.text.includes(t.replaceWith)||console.warn('[tiptap warn]: "inputRuleMatch.replaceWith" must be part of "inputRuleMatch.text".'),r.push(t.replaceWith)),r};function Fn(n){var e;const{editor:t,from:r,to:s,text:i,rules:o,plugin:l}=n,{view:a}=t;if(a.composing)return!1;const c=a.state.doc.resolve(r);if(c.parent.type.spec.code||!((e=c.nodeBefore||c.nodeAfter)===null||e===void 0)&&e.marks.find(f=>f.type.spec.code))return!1;let d=!1;const u=rh(c)+i;return o.forEach(f=>{if(d)return;const h=sh(u,f.find);if(!h)return;const p=a.state.tr,m=Xr({state:a.state,transaction:p}),g={from:r-(h[0].length-i.length),to:s},{commands:y,chain:M,can:A}=new Qr({editor:t,state:m});f.handler({state:m,range:g,match:h,commands:y,chain:M,can:A})===null||!p.steps.length||(p.setMeta(l,{transform:p,from:r,to:s,text:i}),a.dispatch(p),d=!0)}),d}function ih(n){const{editor:e,rules:t}=n,r=new Z({state:{init(){return null},apply(s,i,o){const l=s.getMeta(r);if(l)return l;const a=s.getMeta("applyInputRules");return!!a&&setTimeout(()=>{let{text:d}=a;typeof d=="string"?d=d:d=Di(k.from(d),o.schema);const{from:u}=a,f=u+d.length;Fn({editor:e,from:u,to:f,text:d,rules:t,plugin:r})}),s.selectionSet||s.docChanged?null:i}},props:{handleTextInput(s,i,o,l){return Fn({editor:e,from:i,to:o,text:l,rules:t,plugin:r})},handleDOMEvents:{compositionend:s=>(setTimeout(()=>{const{$cursor:i}=s.state.selection;i&&Fn({editor:e,from:i.pos,to:i.pos,text:"",rules:t,plugin:r})}),!1)},handleKeyDown(s,i){if(i.key!=="Enter")return!1;const{$cursor:o}=s.state.selection;return o?Fn({editor:e,from:o.pos,to:o.pos,text:` +`,rules:t,plugin:r}):!1}},isInputRules:!0});return r}function oh(n){return Object.prototype.toString.call(n).slice(8,-1)}function $n(n){return oh(n)!=="Object"?!1:n.constructor===Object&&Object.getPrototypeOf(n)===Object.prototype}function ts(n,e){const t={...n};return $n(n)&&$n(e)&&Object.keys(e).forEach(r=>{$n(e[r])&&$n(n[r])?t[r]=ts(n[r],e[r]):t[r]=e[r]}),t}class xe{constructor(e={}){this.type="mark",this.name="mark",this.parent=null,this.child=null,this.config={name:this.name,defaultOptions:{}},this.config={...this.config,...e},this.name=this.config.name,e.defaultOptions&&Object.keys(e.defaultOptions).length>0&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${this.name}".`),this.options=this.config.defaultOptions,this.config.addOptions&&(this.options=z(E(this,"addOptions",{name:this.name}))),this.storage=z(E(this,"addStorage",{name:this.name,options:this.options}))||{}}static create(e={}){return new xe(e)}configure(e={}){const t=this.extend({...this.config,addOptions:()=>ts(this.options,e)});return t.name=this.name,t.parent=this.parent,t}extend(e={}){const t=new xe(e);return t.parent=this,this.child=t,t.name=e.name?e.name:t.parent.name,e.defaultOptions&&Object.keys(e.defaultOptions).length>0&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${t.name}".`),t.options=z(E(t,"addOptions",{name:t.name})),t.storage=z(E(t,"addStorage",{name:t.name,options:t.options})),t}static handleExit({editor:e,mark:t}){const{tr:r}=e.state,s=e.state.selection.$from;if(s.pos===s.end()){const o=s.marks();if(!!!o.find(c=>(c==null?void 0:c.type.name)===t.name))return!1;const a=o.find(c=>(c==null?void 0:c.type.name)===t.name);return a&&r.removeStoredMark(a),r.insertText(" ",s.pos),e.view.dispatch(r),!0}return!1}}function lh(n){return typeof n=="number"}class ah{constructor(e){this.find=e.find,this.handler=e.handler}}const ch=(n,e,t)=>{if(Ii(e))return[...n.matchAll(e)];const r=e(n,t);return r?r.map(s=>{const i=[s.text];return i.index=s.index,i.input=n,i.data=s.data,s.replaceWith&&(s.text.includes(s.replaceWith)||console.warn('[tiptap warn]: "pasteRuleMatch.replaceWith" must be part of "pasteRuleMatch.text".'),i.push(s.replaceWith)),i}):[]};function dh(n){const{editor:e,state:t,from:r,to:s,rule:i,pasteEvent:o,dropEvent:l}=n,{commands:a,chain:c,can:d}=new Qr({editor:e,state:t}),u=[];return t.doc.nodesBetween(r,s,(h,p)=>{if(!h.isTextblock||h.type.spec.code)return;const m=Math.max(r,p),g=Math.min(s,p+h.content.size),y=h.textBetween(m-p,g-p,void 0,"");ch(y,i.find,o).forEach(A=>{if(A.index===void 0)return;const L=m+A.index+1,O=L+A[0].length,B={from:t.tr.mapping.map(L),to:t.tr.mapping.map(O)},N=i.handler({state:t,range:B,match:A,commands:a,chain:c,can:d,pasteEvent:o,dropEvent:l});u.push(N)})}),u.every(h=>h!==null)}let Vn=null;const uh=n=>{var e;const t=new ClipboardEvent("paste",{clipboardData:new DataTransfer});return(e=t.clipboardData)===null||e===void 0||e.setData("text/html",n),t};function fh(n){const{editor:e,rules:t}=n;let r=null,s=!1,i=!1,o=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,l;try{l=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{l=null}const a=({state:d,from:u,to:f,rule:h,pasteEvt:p})=>{const m=d.tr,g=Xr({state:d,transaction:m});if(!(!dh({editor:e,state:g,from:Math.max(u-1,0),to:f.b-1,rule:h,pasteEvent:p,dropEvent:l})||!m.steps.length)){try{l=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{l=null}return o=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,m}};return t.map(d=>new Z({view(u){const f=p=>{var m;r=!((m=u.dom.parentElement)===null||m===void 0)&&m.contains(p.target)?u.dom.parentElement:null,r&&(Vn=e)},h=()=>{Vn&&(Vn=null)};return window.addEventListener("dragstart",f),window.addEventListener("dragend",h),{destroy(){window.removeEventListener("dragstart",f),window.removeEventListener("dragend",h)}}},props:{handleDOMEvents:{drop:(u,f)=>{if(i=r===u.dom.parentElement,l=f,!i){const h=Vn;h!=null&&h.isEditable&&setTimeout(()=>{const p=h.state.selection;p&&h.commands.deleteRange({from:p.from,to:p.to})},10)}return!1},paste:(u,f)=>{var h;const p=(h=f.clipboardData)===null||h===void 0?void 0:h.getData("text/html");return o=f,s=!!(p!=null&&p.includes("data-pm-slice")),!1}}},appendTransaction:(u,f,h)=>{const p=u[0],m=p.getMeta("uiEvent")==="paste"&&!s,g=p.getMeta("uiEvent")==="drop"&&!i,y=p.getMeta("applyPasteRules"),M=!!y;if(!m&&!g&&!M)return;if(M){let{text:O}=y;typeof O=="string"?O=O:O=Di(k.from(O),h.schema);const{from:B}=y,N=B+O.length,H=uh(O);return a({rule:d,state:h,from:B,to:{b:N},pasteEvt:H})}const A=f.doc.content.findDiffStart(h.doc.content),L=f.doc.content.findDiffEnd(h.doc.content);if(!(!lh(A)||!L||A===L.b))return a({rule:d,state:h,from:A,to:L,pasteEvt:o})}}))}function hh(n){const e=n.filter((t,r)=>n.indexOf(t)!==r);return Array.from(new Set(e))}class _t{constructor(e,t){this.splittableMarks=[],this.editor=t,this.extensions=_t.resolve(e),this.schema=nh(this.extensions,t),this.setupExtensions()}static resolve(e){const t=_t.sort(_t.flatten(e)),r=hh(t.map(s=>s.name));return r.length&&console.warn(`[tiptap warn]: Duplicate extension names found: [${r.map(s=>`'${s}'`).join(", ")}]. This can lead to issues.`),t}static flatten(e){return e.map(t=>{const r={name:t.name,options:t.options,storage:t.storage},s=E(t,"addExtensions",r);return s?[t,...this.flatten(s())]:t}).flat(10)}static sort(e){return e.sort((r,s)=>{const i=E(r,"priority")||100,o=E(s,"priority")||100;return i>o?-1:i{const r={name:t.name,options:t.options,storage:t.storage,editor:this.editor,type:ws(t.name,this.schema)},s=E(t,"addCommands",r);return s?{...e,...s()}:e},{})}get plugins(){const{editor:e}=this,t=_t.sort([...this.extensions].reverse()),r=[],s=[],i=t.map(o=>{const l={name:o.name,options:o.options,storage:o.storage,editor:e,type:ws(o.name,this.schema)},a=[],c=E(o,"addKeyboardShortcuts",l);let d={};if(o.type==="mark"&&E(o,"exitable",l)&&(d.ArrowRight=()=>xe.handleExit({editor:e,mark:o})),c){const m=Object.fromEntries(Object.entries(c()).map(([g,y])=>[g,()=>y({editor:e})]));d={...d,...m}}const u=Ef(d);a.push(u);const f=E(o,"addInputRules",l);nl(o,e.options.enableInputRules)&&f&&r.push(...f());const h=E(o,"addPasteRules",l);nl(o,e.options.enablePasteRules)&&h&&s.push(...h());const p=E(o,"addProseMirrorPlugins",l);if(p){const m=p();a.push(...m)}return a}).flat();return[ih({editor:e,rules:r}),...fh({editor:e,rules:s}),...i]}get attributes(){return ec(this.extensions)}get nodeViews(){const{editor:e}=this,{nodeExtensions:t}=Zr(this.extensions);return Object.fromEntries(t.filter(r=>!!E(r,"addNodeView")).map(r=>{const s=this.attributes.filter(a=>a.type===r.name),i={name:r.name,options:r.options,storage:r.storage,editor:e,type:oe(r.name,this.schema)},o=E(r,"addNodeView",i);if(!o)return[];const l=(a,c,d,u,f)=>{const h=Xs(a,s);return o()({node:a,view:c,getPos:d,decorations:u,innerDecorations:f,editor:e,extension:r,HTMLAttributes:h})};return[r.name,l]}))}setupExtensions(){this.extensions.forEach(e=>{var t;this.editor.extensionStorage[e.name]=e.storage;const r={name:e.name,options:e.options,storage:e.storage,editor:this.editor,type:ws(e.name,this.schema)};e.type==="mark"&&(!((t=z(E(e,"keepOnSplit",r)))!==null&&t!==void 0)||t)&&this.splittableMarks.push(e.name);const s=E(e,"onBeforeCreate",r),i=E(e,"onCreate",r),o=E(e,"onUpdate",r),l=E(e,"onSelectionUpdate",r),a=E(e,"onTransaction",r),c=E(e,"onFocus",r),d=E(e,"onBlur",r),u=E(e,"onDestroy",r);s&&this.editor.on("beforeCreate",s),i&&this.editor.on("create",i),o&&this.editor.on("update",o),l&&this.editor.on("selectionUpdate",l),a&&this.editor.on("transaction",a),c&&this.editor.on("focus",c),d&&this.editor.on("blur",d),u&&this.editor.on("destroy",u)})}}class ne{constructor(e={}){this.type="extension",this.name="extension",this.parent=null,this.child=null,this.config={name:this.name,defaultOptions:{}},this.config={...this.config,...e},this.name=this.config.name,e.defaultOptions&&Object.keys(e.defaultOptions).length>0&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${this.name}".`),this.options=this.config.defaultOptions,this.config.addOptions&&(this.options=z(E(this,"addOptions",{name:this.name}))),this.storage=z(E(this,"addStorage",{name:this.name,options:this.options}))||{}}static create(e={}){return new ne(e)}configure(e={}){const t=this.extend({...this.config,addOptions:()=>ts(this.options,e)});return t.name=this.name,t.parent=this.parent,t}extend(e={}){const t=new ne({...this.config,...e});return t.parent=this,this.child=t,t.name=e.name?e.name:t.parent.name,e.defaultOptions&&Object.keys(e.defaultOptions).length>0&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${t.name}".`),t.options=z(E(t,"addOptions",{name:t.name})),t.storage=z(E(t,"addStorage",{name:t.name,options:t.options})),t}}function nc(n,e,t){const{from:r,to:s}=e,{blockSeparator:i=` + +`,textSerializers:o={}}=t||{};let l="";return n.nodesBetween(r,s,(a,c,d,u)=>{var f;a.isBlock&&c>r&&(l+=i);const h=o==null?void 0:o[a.type.name];if(h)return d&&(l+=h({node:a,pos:c,parent:d,index:u,range:e})),!1;a.isText&&(l+=(f=a==null?void 0:a.text)===null||f===void 0?void 0:f.slice(Math.max(r,c)-c,s-c))}),l}function rc(n){return Object.fromEntries(Object.entries(n.nodes).filter(([,e])=>e.spec.toText).map(([e,t])=>[e,t.spec.toText]))}const ph=ne.create({name:"clipboardTextSerializer",addOptions(){return{blockSeparator:void 0}},addProseMirrorPlugins(){return[new Z({key:new le("clipboardTextSerializer"),props:{clipboardTextSerializer:()=>{const{editor:n}=this,{state:e,schema:t}=n,{doc:r,selection:s}=e,{ranges:i}=s,o=Math.min(...i.map(d=>d.$from.pos)),l=Math.max(...i.map(d=>d.$to.pos)),a=rc(t);return nc(r,{from:o,to:l},{...this.options.blockSeparator!==void 0?{blockSeparator:this.options.blockSeparator}:{},textSerializers:a})}}})]}}),mh=()=>({editor:n,view:e})=>(requestAnimationFrame(()=>{var t;n.isDestroyed||(e.dom.blur(),(t=window==null?void 0:window.getSelection())===null||t===void 0||t.removeAllRanges())}),!0),gh=(n=!1)=>({commands:e})=>e.setContent("",n),yh=()=>({state:n,tr:e,dispatch:t})=>{const{selection:r}=e,{ranges:s}=r;return t&&s.forEach(({$from:i,$to:o})=>{n.doc.nodesBetween(i.pos,o.pos,(l,a)=>{if(l.type.isText)return;const{doc:c,mapping:d}=e,u=c.resolve(d.map(a)),f=c.resolve(d.map(a+l.nodeSize)),h=u.blockRange(f);if(!h)return;const p=Zt(h);if(l.type.isTextblock){const{defaultType:m}=u.parent.contentMatchAt(u.index());e.setNodeMarkup(h.start,m)}(p||p===0)&&e.lift(h,p)})}),!0},bh=n=>e=>n(e),kh=()=>({state:n,dispatch:e})=>Ff(n,e),Ch=(n,e)=>({editor:t,tr:r})=>{const{state:s}=t,i=s.doc.slice(n.from,n.to);r.deleteRange(n.from,n.to);const o=r.mapping.map(e);return r.insert(o,i.content),r.setSelection(new D(r.doc.resolve(Math.max(o-1,0)))),!0},xh=()=>({tr:n,dispatch:e})=>{const{selection:t}=n,r=t.$anchor.node();if(r.content.size>0)return!1;const s=n.selection.$anchor;for(let i=s.depth;i>0;i-=1)if(s.node(i).type===r.type){if(e){const l=s.before(i),a=s.after(i);n.delete(l,a).scrollIntoView()}return!0}return!1},Sh=n=>({tr:e,state:t,dispatch:r})=>{const s=oe(n,t.schema),i=e.selection.$anchor;for(let o=i.depth;o>0;o-=1)if(i.node(o).type===s){if(r){const a=i.before(o),c=i.after(o);e.delete(a,c).scrollIntoView()}return!0}return!1},wh=n=>({tr:e,dispatch:t})=>{const{from:r,to:s}=n;return t&&e.delete(r,s),!0},Mh=()=>({state:n,dispatch:e})=>Af(n,e),Th=()=>({commands:n})=>n.keyboardShortcut("Enter"),Eh=()=>({state:n,dispatch:e})=>Hf(n,e);function mr(n,e,t={strict:!0}){const r=Object.keys(e);return r.length?r.every(s=>t.strict?e[s]===n[s]:Ii(e[s])?e[s].test(n[s]):e[s]===n[s]):!0}function sc(n,e,t={}){return n.find(r=>r.type===e&&mr(Object.fromEntries(Object.keys(t).map(s=>[s,r.attrs[s]])),t))}function rl(n,e,t={}){return!!sc(n,e,t)}function Li(n,e,t){var r;if(!n||!e)return;let s=n.parent.childAfter(n.parentOffset);if((!s.node||!s.node.marks.some(d=>d.type===e))&&(s=n.parent.childBefore(n.parentOffset)),!s.node||!s.node.marks.some(d=>d.type===e)||(t=t||((r=s.node.marks[0])===null||r===void 0?void 0:r.attrs),!sc([...s.node.marks],e,t)))return;let o=s.index,l=n.start()+s.offset,a=o+1,c=l+s.node.nodeSize;for(;o>0&&rl([...n.parent.child(o-1).marks],e,t);)o-=1,l-=n.parent.child(o).nodeSize;for(;a({tr:t,state:r,dispatch:s})=>{const i=gt(n,r.schema),{doc:o,selection:l}=t,{$from:a,from:c,to:d}=l;if(s){const u=Li(a,i,e);if(u&&u.from<=c&&u.to>=d){const f=D.create(o,u.from,u.to);t.setSelection(f)}}return!0},Oh=n=>e=>{const t=typeof n=="function"?n(e):n;for(let r=0;r({editor:t,view:r,tr:s,dispatch:i})=>{e={scrollIntoView:!0,...e};const o=()=>{(Pi()||Nh())&&r.dom.focus(),requestAnimationFrame(()=>{t.isDestroyed||(r.focus(),e!=null&&e.scrollIntoView&&t.commands.scrollIntoView())})};if(r.hasFocus()&&n===null||n===!1)return!0;if(i&&n===null&&!ic(t.state.selection))return o(),!0;const l=oc(s.doc,n)||t.state.selection,a=t.state.selection.eq(l);return i&&(a||s.setSelection(l),a&&s.storedMarks&&s.setStoredMarks(s.storedMarks),o()),!0},Rh=(n,e)=>t=>n.every((r,s)=>e(r,{...t,index:s})),Dh=(n,e)=>({tr:t,commands:r})=>r.insertContentAt({from:t.selection.from,to:t.selection.to},n,e),lc=n=>{const e=n.childNodes;for(let t=e.length-1;t>=0;t-=1){const r=e[t];r.nodeType===3&&r.nodeValue&&/^(\n\s\s|\n)$/.test(r.nodeValue)?n.removeChild(r):r.nodeType===1&&lc(r)}return n};function Wn(n){const e=`${n}`,t=new window.DOMParser().parseFromString(e,"text/html").body;return lc(t)}function An(n,e,t){if(n instanceof lt||n instanceof k)return n;t={slice:!0,parseOptions:{},...t};const r=typeof n=="object"&&n!==null,s=typeof n=="string";if(r)try{if(Array.isArray(n)&&n.length>0)return k.fromArray(n.map(l=>e.nodeFromJSON(l)));const o=e.nodeFromJSON(n);return t.errorOnInvalidContent&&o.check(),o}catch(i){if(t.errorOnInvalidContent)throw new Error("[tiptap error]: Invalid JSON content",{cause:i});return console.warn("[tiptap warn]: Invalid content.","Passed value:",n,"Error:",i),An("",e,t)}if(s){if(t.errorOnInvalidContent){let o=!1,l="";const a=new Gl({topNode:e.spec.topNode,marks:e.spec.marks,nodes:e.spec.nodes.append({__tiptap__private__unknown__catch__all__node:{content:"inline*",group:"block",parseDOM:[{tag:"*",getAttrs:c=>(o=!0,l=typeof c=="string"?c:c.outerHTML,null)}]}})});if(t.slice?at.fromSchema(a).parseSlice(Wn(n),t.parseOptions):at.fromSchema(a).parse(Wn(n),t.parseOptions),t.errorOnInvalidContent&&o)throw new Error("[tiptap error]: Invalid HTML content",{cause:new Error(`Invalid element found: ${l}`)})}const i=at.fromSchema(e);return t.slice?i.parseSlice(Wn(n),t.parseOptions).content:i.parse(Wn(n),t.parseOptions)}return An("",e,t)}function Ih(n,e,t){const r=n.steps.length-1;if(r{o===0&&(o=d)}),n.setSelection(I.near(n.doc.resolve(o),t))}const Lh=n=>!("type"in n),Ph=(n,e,t)=>({tr:r,dispatch:s,editor:i})=>{var o;if(s){t={parseOptions:i.options.parseOptions,updateSelection:!0,applyInputRules:!1,applyPasteRules:!1,...t};let l;const a=g=>{i.emit("contentError",{editor:i,error:g,disableCollaboration:()=>{i.storage.collaboration&&(i.storage.collaboration.isDisabled=!0)}})},c={preserveWhitespace:"full",...t.parseOptions};if(!t.errorOnInvalidContent&&!i.options.enableContentCheck&&i.options.emitContentError)try{An(e,i.schema,{parseOptions:c,errorOnInvalidContent:!0})}catch(g){a(g)}try{l=An(e,i.schema,{parseOptions:c,errorOnInvalidContent:(o=t.errorOnInvalidContent)!==null&&o!==void 0?o:i.options.enableContentCheck})}catch(g){return a(g),!1}let{from:d,to:u}=typeof n=="number"?{from:n,to:n}:{from:n.from,to:n.to},f=!0,h=!0;if((Lh(l)?l:[l]).forEach(g=>{g.check(),f=f?g.isText&&g.marks.length===0:!1,h=h?g.isBlock:!1}),d===u&&h){const{parent:g}=r.doc.resolve(d);g.isTextblock&&!g.type.spec.code&&!g.childCount&&(d-=1,u+=1)}let m;if(f){if(Array.isArray(e))m=e.map(g=>g.text||"").join("");else if(e instanceof k){let g="";e.forEach(y=>{y.text&&(g+=y.text)}),m=g}else typeof e=="object"&&e&&e.text?m=e.text:m=e;r.insertText(m,d,u)}else m=l,r.replaceWith(d,u,m);t.updateSelection&&Ih(r,r.steps.length-1,-1),t.applyInputRules&&r.setMeta("applyInputRules",{from:d,text:m}),t.applyPasteRules&&r.setMeta("applyPasteRules",{from:d,text:m})}return!0},zh=()=>({state:n,dispatch:e})=>Lf(n,e),Bh=()=>({state:n,dispatch:e})=>Pf(n,e),Hh=()=>({state:n,dispatch:e})=>Of(n,e),Fh=()=>({state:n,dispatch:e})=>Df(n,e),$h=()=>({state:n,dispatch:e,tr:t})=>{try{const r=Kr(n.doc,n.selection.$from.pos,-1);return r==null?!1:(t.join(r,2),e&&e(t),!0)}catch{return!1}},Vh=()=>({state:n,dispatch:e,tr:t})=>{try{const r=Kr(n.doc,n.selection.$from.pos,1);return r==null?!1:(t.join(r,2),e&&e(t),!0)}catch{return!1}},Wh=()=>({state:n,dispatch:e})=>Nf(n,e),jh=()=>({state:n,dispatch:e})=>vf(n,e);function ac(){return typeof navigator<"u"?/Mac/.test(navigator.platform):!1}function _h(n){const e=n.split(/-(?!$)/);let t=e[e.length-1];t==="Space"&&(t=" ");let r,s,i,o;for(let l=0;l({editor:e,view:t,tr:r,dispatch:s})=>{const i=_h(n).split(/-(?!$)/),o=i.find(c=>!["Alt","Ctrl","Meta","Shift"].includes(c)),l=new KeyboardEvent("keydown",{key:o==="Space"?" ":o,altKey:i.includes("Alt"),ctrlKey:i.includes("Ctrl"),metaKey:i.includes("Meta"),shiftKey:i.includes("Shift"),bubbles:!0,cancelable:!0}),a=e.captureTransaction(()=>{t.someProp("handleKeyDown",c=>c(t,l))});return a==null||a.steps.forEach(c=>{const d=c.map(r.mapping);d&&s&&r.maybeStep(d)}),!0};function On(n,e,t={}){const{from:r,to:s,empty:i}=n.selection,o=e?oe(e,n.schema):null,l=[];n.doc.nodesBetween(r,s,(u,f)=>{if(u.isText)return;const h=Math.max(r,f),p=Math.min(s,f+u.nodeSize);l.push({node:u,from:h,to:p})});const a=s-r,c=l.filter(u=>o?o.name===u.node.type.name:!0).filter(u=>mr(u.node.attrs,t,{strict:!1}));return i?!!c.length:c.reduce((u,f)=>u+f.to-f.from,0)>=a}const Uh=(n,e={})=>({state:t,dispatch:r})=>{const s=oe(n,t.schema);return On(t,s,e)?zf(t,r):!1},qh=()=>({state:n,dispatch:e})=>$f(n,e),Jh=n=>({state:e,dispatch:t})=>{const r=oe(n,e.schema);return Gf(r)(e,t)},Gh=()=>({state:n,dispatch:e})=>Bf(n,e);function ns(n,e){return e.nodes[n]?"node":e.marks[n]?"mark":null}function sl(n,e){const t=typeof e=="string"?[e]:e;return Object.keys(n).reduce((r,s)=>(t.includes(s)||(r[s]=n[s]),r),{})}const Yh=(n,e)=>({tr:t,state:r,dispatch:s})=>{let i=null,o=null;const l=ns(typeof n=="string"?n:n.name,r.schema);return l?(l==="node"&&(i=oe(n,r.schema)),l==="mark"&&(o=gt(n,r.schema)),s&&t.selection.ranges.forEach(a=>{r.doc.nodesBetween(a.$from.pos,a.$to.pos,(c,d)=>{i&&i===c.type&&t.setNodeMarkup(d,void 0,sl(c.attrs,e)),o&&c.marks.length&&c.marks.forEach(u=>{o===u.type&&t.addMark(d,d+c.nodeSize,o.create(sl(u.attrs,e)))})})}),!0):!1},Xh=()=>({tr:n,dispatch:e})=>(e&&n.scrollIntoView(),!0),Qh=()=>({tr:n,dispatch:e})=>{if(e){const t=new Ne(n.doc);n.setSelection(t)}return!0},Zh=()=>({state:n,dispatch:e})=>Rf(n,e),ep=()=>({state:n,dispatch:e})=>If(n,e),tp=()=>({state:n,dispatch:e})=>Vf(n,e),np=()=>({state:n,dispatch:e})=>_f(n,e),rp=()=>({state:n,dispatch:e})=>jf(n,e);function Qs(n,e,t={},r={}){return An(n,e,{slice:!1,parseOptions:t,errorOnInvalidContent:r.errorOnInvalidContent})}const sp=(n,e=!1,t={},r={})=>({editor:s,tr:i,dispatch:o,commands:l})=>{var a,c;const{doc:d}=i;if(t.preserveWhitespace!=="full"){const u=Qs(n,s.schema,t,{errorOnInvalidContent:(a=r.errorOnInvalidContent)!==null&&a!==void 0?a:s.options.enableContentCheck});return o&&i.replaceWith(0,d.content.size,u).setMeta("preventUpdate",!e),!0}return o&&i.setMeta("preventUpdate",!e),l.insertContentAt({from:0,to:d.content.size},n,{parseOptions:t,errorOnInvalidContent:(c=r.errorOnInvalidContent)!==null&&c!==void 0?c:s.options.enableContentCheck})};function cc(n,e){const t=gt(e,n.schema),{from:r,to:s,empty:i}=n.selection,o=[];i?(n.storedMarks&&o.push(...n.storedMarks),o.push(...n.selection.$head.marks())):n.doc.nodesBetween(r,s,a=>{o.push(...a.marks)});const l=o.find(a=>a.type.name===t.name);return l?{...l.attrs}:{}}function ip(n,e){const t=new bi(n);return e.forEach(r=>{r.steps.forEach(s=>{t.step(s)})}),t}function op(n){for(let e=0;e{t(s)&&r.push({node:s,pos:i})}),r}function dc(n,e){for(let t=n.depth;t>0;t-=1){const r=n.node(t);if(e(r))return{pos:t>0?n.before(t):0,start:n.start(t),depth:t,node:r}}}function zi(n){return e=>dc(e.$from,n)}function ap(n,e){const t={from:0,to:n.content.size};return nc(n,t,e)}function cp(n,e){const t=oe(e,n.schema),{from:r,to:s}=n.selection,i=[];n.doc.nodesBetween(r,s,l=>{i.push(l)});const o=i.reverse().find(l=>l.type.name===t.name);return o?{...o.attrs}:{}}function uc(n,e){const t=ns(typeof e=="string"?e:e.name,n.schema);return t==="node"?cp(n,e):t==="mark"?cc(n,e):{}}function dp(n,e=JSON.stringify){const t={};return n.filter(r=>{const s=e(r);return Object.prototype.hasOwnProperty.call(t,s)?!1:t[s]=!0})}function up(n){const e=dp(n);return e.length===1?e:e.filter((t,r)=>!e.filter((i,o)=>o!==r).some(i=>t.oldRange.from>=i.oldRange.from&&t.oldRange.to<=i.oldRange.to&&t.newRange.from>=i.newRange.from&&t.newRange.to<=i.newRange.to))}function fp(n){const{mapping:e,steps:t}=n,r=[];return e.maps.forEach((s,i)=>{const o=[];if(s.ranges.length)s.forEach((l,a)=>{o.push({from:l,to:a})});else{const{from:l,to:a}=t[i];if(l===void 0||a===void 0)return;o.push({from:l,to:a})}o.forEach(({from:l,to:a})=>{const c=e.slice(i).map(l,-1),d=e.slice(i).map(a),u=e.invert().map(c,-1),f=e.invert().map(d);r.push({oldRange:{from:u,to:f},newRange:{from:c,to:d}})})}),up(r)}function Bi(n,e,t){const r=[];return n===e?t.resolve(n).marks().forEach(s=>{const i=t.resolve(n),o=Li(i,s.type);o&&r.push({mark:s,...o})}):t.nodesBetween(n,e,(s,i)=>{!s||(s==null?void 0:s.nodeSize)===void 0||r.push(...s.marks.map(o=>({from:i,to:i+s.nodeSize,mark:o})))}),r}function Zn(n,e,t){return Object.fromEntries(Object.entries(t).filter(([r])=>{const s=n.find(i=>i.type===e&&i.name===r);return s?s.attribute.keepOnSplit:!1}))}function Zs(n,e,t={}){const{empty:r,ranges:s}=n.selection,i=e?gt(e,n.schema):null;if(r)return!!(n.storedMarks||n.selection.$from.marks()).filter(u=>i?i.name===u.type.name:!0).find(u=>mr(u.attrs,t,{strict:!1}));let o=0;const l=[];if(s.forEach(({$from:u,$to:f})=>{const h=u.pos,p=f.pos;n.doc.nodesBetween(h,p,(m,g)=>{if(!m.isText&&!m.marks.length)return;const y=Math.max(h,g),M=Math.min(p,g+m.nodeSize),A=M-y;o+=A,l.push(...m.marks.map(L=>({mark:L,from:y,to:M})))})}),o===0)return!1;const a=l.filter(u=>i?i.name===u.mark.type.name:!0).filter(u=>mr(u.mark.attrs,t,{strict:!1})).reduce((u,f)=>u+f.to-f.from,0),c=l.filter(u=>i?u.mark.type!==i&&u.mark.type.excludes(i):!0).reduce((u,f)=>u+f.to-f.from,0);return(a>0?a+c:a)>=o}function hp(n,e,t={}){if(!e)return On(n,null,t)||Zs(n,null,t);const r=ns(e,n.schema);return r==="node"?On(n,e,t):r==="mark"?Zs(n,e,t):!1}function il(n,e){const{nodeExtensions:t}=Zr(e),r=t.find(o=>o.name===n);if(!r)return!1;const s={name:r.name,options:r.options,storage:r.storage},i=z(E(r,"group",s));return typeof i!="string"?!1:i.split(" ").includes("list")}function rs(n,{checkChildren:e=!0,ignoreWhitespace:t=!1}={}){var r;if(t){if(n.type.name==="hardBreak")return!0;if(n.isText)return/^\s*$/m.test((r=n.text)!==null&&r!==void 0?r:"")}if(n.isText)return!n.text;if(n.isAtom||n.isLeaf)return!1;if(n.content.childCount===0)return!0;if(e){let s=!0;return n.content.forEach(i=>{s!==!1&&(rs(i,{ignoreWhitespace:t,checkChildren:e})||(s=!1))}),s}return!1}function pp(n){return n instanceof R}function mp(n,e,t){var r;const{selection:s}=e;let i=null;if(ic(s)&&(i=s.$cursor),i){const l=(r=n.storedMarks)!==null&&r!==void 0?r:i.marks();return!!t.isInSet(l)||!l.some(a=>a.type.excludes(t))}const{ranges:o}=s;return o.some(({$from:l,$to:a})=>{let c=l.depth===0?n.doc.inlineContent&&n.doc.type.allowsMarkType(t):!1;return n.doc.nodesBetween(l.pos,a.pos,(d,u,f)=>{if(c)return!1;if(d.isInline){const h=!f||f.type.allowsMarkType(t),p=!!t.isInSet(d.marks)||!d.marks.some(m=>m.type.excludes(t));c=h&&p}return!c}),c})}const gp=(n,e={})=>({tr:t,state:r,dispatch:s})=>{const{selection:i}=t,{empty:o,ranges:l}=i,a=gt(n,r.schema);if(s)if(o){const c=cc(r,a);t.addStoredMark(a.create({...c,...e}))}else l.forEach(c=>{const d=c.$from.pos,u=c.$to.pos;r.doc.nodesBetween(d,u,(f,h)=>{const p=Math.max(h,d),m=Math.min(h+f.nodeSize,u);f.marks.find(y=>y.type===a)?f.marks.forEach(y=>{a===y.type&&t.addMark(p,m,a.create({...y.attrs,...e}))}):t.addMark(p,m,a.create(e))})});return mp(r,t,a)},yp=(n,e)=>({tr:t})=>(t.setMeta(n,e),!0),bp=(n,e={})=>({state:t,dispatch:r,chain:s})=>{const i=oe(n,t.schema);let o;return t.selection.$anchor.sameParent(t.selection.$head)&&(o=t.selection.$anchor.parent.attrs),i.isTextblock?s().command(({commands:l})=>Zo(i,{...o,...e})(t)?!0:l.clearNodes()).command(({state:l})=>Zo(i,{...o,...e})(l,r)).run():(console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.'),!1)},kp=n=>({tr:e,dispatch:t})=>{if(t){const{doc:r}=e,s=wt(n,0,r.content.size),i=R.create(r,s);e.setSelection(i)}return!0},Cp=n=>({tr:e,dispatch:t})=>{if(t){const{doc:r}=e,{from:s,to:i}=typeof n=="number"?{from:n,to:n}:n,o=D.atStart(r).from,l=D.atEnd(r).to,a=wt(s,o,l),c=wt(i,o,l),d=D.create(r,a,c);e.setSelection(d)}return!0},xp=n=>({state:e,dispatch:t})=>{const r=oe(n,e.schema);return Qf(r)(e,t)};function ol(n,e){const t=n.storedMarks||n.selection.$to.parentOffset&&n.selection.$from.marks();if(t){const r=t.filter(s=>e==null?void 0:e.includes(s.type.name));n.tr.ensureMarks(r)}}const Sp=({keepMarks:n=!0}={})=>({tr:e,state:t,dispatch:r,editor:s})=>{const{selection:i,doc:o}=e,{$from:l,$to:a}=i,c=s.extensionManager.attributes,d=Zn(c,l.node().type.name,l.node().attrs);if(i instanceof R&&i.node.isBlock)return!l.parentOffset||!Kt(o,l.pos)?!1:(r&&(n&&ol(t,s.extensionManager.splittableMarks),e.split(l.pos).scrollIntoView()),!0);if(!l.parent.isBlock)return!1;const u=a.parentOffset===a.parent.content.size,f=l.depth===0?void 0:op(l.node(-1).contentMatchAt(l.indexAfter(-1)));let h=u&&f?[{type:f,attrs:d}]:void 0,p=Kt(e.doc,e.mapping.map(l.pos),1,h);if(!h&&!p&&Kt(e.doc,e.mapping.map(l.pos),1,f?[{type:f}]:void 0)&&(p=!0,h=f?[{type:f,attrs:d}]:void 0),r){if(p&&(i instanceof D&&e.deleteSelection(),e.split(e.mapping.map(l.pos),1,h),f&&!u&&!l.parentOffset&&l.parent.type!==f)){const m=e.mapping.map(l.before()),g=e.doc.resolve(m);l.node(-1).canReplaceWith(g.index(),g.index()+1,f)&&e.setNodeMarkup(e.mapping.map(l.before()),f)}n&&ol(t,s.extensionManager.splittableMarks),e.scrollIntoView()}return p},wp=(n,e={})=>({tr:t,state:r,dispatch:s,editor:i})=>{var o;const l=oe(n,r.schema),{$from:a,$to:c}=r.selection,d=r.selection.node;if(d&&d.isBlock||a.depth<2||!a.sameParent(c))return!1;const u=a.node(-1);if(u.type!==l)return!1;const f=i.extensionManager.attributes;if(a.parent.content.size===0&&a.node(-1).childCount===a.indexAfter(-1)){if(a.depth===2||a.node(-3).type!==l||a.index(-2)!==a.node(-2).childCount-1)return!1;if(s){let y=k.empty;const M=a.index(-1)?1:a.index(-2)?2:3;for(let H=a.depth-M;H>=a.depth-3;H-=1)y=k.from(a.node(H).copy(y));const A=a.indexAfter(-1){if(N>-1)return!1;H.isTextblock&&H.content.size===0&&(N=ee+1)}),N>-1&&t.setSelection(D.near(t.doc.resolve(N))),t.scrollIntoView()}return!0}const h=c.pos===a.end()?u.contentMatchAt(0).defaultType:null,p={...Zn(f,u.type.name,u.attrs),...e},m={...Zn(f,a.node().type.name,a.node().attrs),...e};t.delete(a.pos,c.pos);const g=h?[{type:l,attrs:p},{type:h,attrs:m}]:[{type:l,attrs:p}];if(!Kt(t.doc,a.pos,2))return!1;if(s){const{selection:y,storedMarks:M}=r,{splittableMarks:A}=i.extensionManager,L=M||y.$to.parentOffset&&y.$from.marks();if(t.split(a.pos,2,g).scrollIntoView(),!L||!s)return!0;const O=L.filter(B=>A.includes(B.type.name));t.ensureMarks(O)}return!0},Ms=(n,e)=>{const t=zi(o=>o.type===e)(n.selection);if(!t)return!0;const r=n.doc.resolve(Math.max(0,t.pos-1)).before(t.depth);if(r===void 0)return!0;const s=n.doc.nodeAt(r);return t.node.type===(s==null?void 0:s.type)&&pt(n.doc,t.pos)&&n.join(t.pos),!0},Ts=(n,e)=>{const t=zi(o=>o.type===e)(n.selection);if(!t)return!0;const r=n.doc.resolve(t.start).after(t.depth);if(r===void 0)return!0;const s=n.doc.nodeAt(r);return t.node.type===(s==null?void 0:s.type)&&pt(n.doc,r)&&n.join(r),!0},Mp=(n,e,t,r={})=>({editor:s,tr:i,state:o,dispatch:l,chain:a,commands:c,can:d})=>{const{extensions:u,splittableMarks:f}=s.extensionManager,h=oe(n,o.schema),p=oe(e,o.schema),{selection:m,storedMarks:g}=o,{$from:y,$to:M}=m,A=y.blockRange(M),L=g||m.$to.parentOffset&&m.$from.marks();if(!A)return!1;const O=zi(B=>il(B.type.name,u))(m);if(A.depth>=1&&O&&A.depth-O.depth<=1){if(O.node.type===h)return c.liftListItem(p);if(il(O.node.type.name,u)&&h.validContent(O.node.content)&&l)return a().command(()=>(i.setNodeMarkup(O.pos,h),!0)).command(()=>Ms(i,h)).command(()=>Ts(i,h)).run()}return!t||!L||!l?a().command(()=>d().wrapInList(h,r)?!0:c.clearNodes()).wrapInList(h,r).command(()=>Ms(i,h)).command(()=>Ts(i,h)).run():a().command(()=>{const B=d().wrapInList(h,r),N=L.filter(H=>f.includes(H.type.name));return i.ensureMarks(N),B?!0:c.clearNodes()}).wrapInList(h,r).command(()=>Ms(i,h)).command(()=>Ts(i,h)).run()},Tp=(n,e={},t={})=>({state:r,commands:s})=>{const{extendEmptyMarkRange:i=!1}=t,o=gt(n,r.schema);return Zs(r,o,e)?s.unsetMark(o,{extendEmptyMarkRange:i}):s.setMark(o,e)},Ep=(n,e,t={})=>({state:r,commands:s})=>{const i=oe(n,r.schema),o=oe(e,r.schema),l=On(r,i,t);let a;return r.selection.$anchor.sameParent(r.selection.$head)&&(a=r.selection.$anchor.parent.attrs),l?s.setNode(o,a):s.setNode(i,{...a,...t})},Ap=(n,e={})=>({state:t,commands:r})=>{const s=oe(n,t.schema);return On(t,s,e)?r.lift(s):r.wrapIn(s,e)},Op=()=>({state:n,dispatch:e})=>{const t=n.plugins;for(let r=0;r=0;a-=1)o.step(l.steps[a].invert(l.docs[a]));if(i.text){const a=o.doc.resolve(i.from).marks();o.replaceWith(i.from,i.to,n.schema.text(i.text,a))}else o.delete(i.from,i.to)}return!0}}return!1},Np=()=>({tr:n,dispatch:e})=>{const{selection:t}=n,{empty:r,ranges:s}=t;return r||e&&s.forEach(i=>{n.removeMark(i.$from.pos,i.$to.pos)}),!0},vp=(n,e={})=>({tr:t,state:r,dispatch:s})=>{var i;const{extendEmptyMarkRange:o=!1}=e,{selection:l}=t,a=gt(n,r.schema),{$from:c,empty:d,ranges:u}=l;if(!s)return!0;if(d&&o){let{from:f,to:h}=l;const p=(i=c.marks().find(g=>g.type===a))===null||i===void 0?void 0:i.attrs,m=Li(c,a,p);m&&(f=m.from,h=m.to),t.removeMark(f,h,a)}else u.forEach(f=>{t.removeMark(f.$from.pos,f.$to.pos,a)});return t.removeStoredMark(a),!0},Rp=(n,e={})=>({tr:t,state:r,dispatch:s})=>{let i=null,o=null;const l=ns(typeof n=="string"?n:n.name,r.schema);return l?(l==="node"&&(i=oe(n,r.schema)),l==="mark"&&(o=gt(n,r.schema)),s&&t.selection.ranges.forEach(a=>{const c=a.$from.pos,d=a.$to.pos;let u,f,h,p;t.selection.empty?r.doc.nodesBetween(c,d,(m,g)=>{i&&i===m.type&&(h=Math.max(g,c),p=Math.min(g+m.nodeSize,d),u=g,f=m)}):r.doc.nodesBetween(c,d,(m,g)=>{g=c&&g<=d&&(i&&i===m.type&&t.setNodeMarkup(g,void 0,{...m.attrs,...e}),o&&m.marks.length&&m.marks.forEach(y=>{if(o===y.type){const M=Math.max(g,c),A=Math.min(g+m.nodeSize,d);t.addMark(M,A,o.create({...y.attrs,...e}))}}))}),f&&(u!==void 0&&t.setNodeMarkup(u,void 0,{...f.attrs,...e}),o&&f.marks.length&&f.marks.forEach(m=>{o===m.type&&t.addMark(h,p,o.create({...m.attrs,...e}))}))}),!0):!1},Dp=(n,e={})=>({state:t,dispatch:r})=>{const s=oe(n,t.schema);return Kf(s,e)(t,r)},Ip=(n,e={})=>({state:t,dispatch:r})=>{const s=oe(n,t.schema);return Uf(s,e)(t,r)};var Lp=Object.freeze({__proto__:null,blur:mh,clearContent:gh,clearNodes:yh,command:bh,createParagraphNear:kh,cut:Ch,deleteCurrentNode:xh,deleteNode:Sh,deleteRange:wh,deleteSelection:Mh,enter:Th,exitCode:Eh,extendMarkRange:Ah,first:Oh,focus:vh,forEach:Rh,insertContent:Dh,insertContentAt:Ph,joinBackward:Hh,joinDown:Bh,joinForward:Fh,joinItemBackward:$h,joinItemForward:Vh,joinTextblockBackward:Wh,joinTextblockForward:jh,joinUp:zh,keyboardShortcut:Kh,lift:Uh,liftEmptyBlock:qh,liftListItem:Jh,newlineInCode:Gh,resetAttributes:Yh,scrollIntoView:Xh,selectAll:Qh,selectNodeBackward:Zh,selectNodeForward:ep,selectParentNode:tp,selectTextblockEnd:np,selectTextblockStart:rp,setContent:sp,setMark:gp,setMeta:yp,setNode:bp,setNodeSelection:kp,setTextSelection:Cp,sinkListItem:xp,splitBlock:Sp,splitListItem:wp,toggleList:Mp,toggleMark:Tp,toggleNode:Ep,toggleWrap:Ap,undoInputRule:Op,unsetAllMarks:Np,unsetMark:vp,updateAttributes:Rp,wrapIn:Dp,wrapInList:Ip});const Pp=ne.create({name:"commands",addCommands(){return{...Lp}}}),zp=ne.create({name:"drop",addProseMirrorPlugins(){return[new Z({key:new le("tiptapDrop"),props:{handleDrop:(n,e,t,r)=>{this.editor.emit("drop",{editor:this.editor,event:e,slice:t,moved:r})}}})]}}),Bp=ne.create({name:"editable",addProseMirrorPlugins(){return[new Z({key:new le("editable"),props:{editable:()=>this.editor.options.editable}})]}}),Hp=new le("focusEvents"),Fp=ne.create({name:"focusEvents",addProseMirrorPlugins(){const{editor:n}=this;return[new Z({key:Hp,props:{handleDOMEvents:{focus:(e,t)=>{n.isFocused=!0;const r=n.state.tr.setMeta("focus",{event:t}).setMeta("addToHistory",!1);return e.dispatch(r),!1},blur:(e,t)=>{n.isFocused=!1;const r=n.state.tr.setMeta("blur",{event:t}).setMeta("addToHistory",!1);return e.dispatch(r),!1}}}})]}}),$p=ne.create({name:"keymap",addKeyboardShortcuts(){const n=()=>this.editor.commands.first(({commands:o})=>[()=>o.undoInputRule(),()=>o.command(({tr:l})=>{const{selection:a,doc:c}=l,{empty:d,$anchor:u}=a,{pos:f,parent:h}=u,p=u.parent.isTextblock&&f>0?l.doc.resolve(f-1):u,m=p.parent.type.spec.isolating,g=u.pos-u.parentOffset,y=m&&p.parent.childCount===1?g===u.pos:I.atStart(c).from===f;return!d||!h.type.isTextblock||h.textContent.length||!y||y&&u.parent.type.name==="paragraph"?!1:o.clearNodes()}),()=>o.deleteSelection(),()=>o.joinBackward(),()=>o.selectNodeBackward()]),e=()=>this.editor.commands.first(({commands:o})=>[()=>o.deleteSelection(),()=>o.deleteCurrentNode(),()=>o.joinForward(),()=>o.selectNodeForward()]),r={Enter:()=>this.editor.commands.first(({commands:o})=>[()=>o.newlineInCode(),()=>o.createParagraphNear(),()=>o.liftEmptyBlock(),()=>o.splitBlock()]),"Mod-Enter":()=>this.editor.commands.exitCode(),Backspace:n,"Mod-Backspace":n,"Shift-Backspace":n,Delete:e,"Mod-Delete":e,"Mod-a":()=>this.editor.commands.selectAll()},s={...r},i={...r,"Ctrl-h":n,"Alt-Backspace":n,"Ctrl-d":e,"Ctrl-Alt-Backspace":e,"Alt-Delete":e,"Alt-d":e,"Ctrl-a":()=>this.editor.commands.selectTextblockStart(),"Ctrl-e":()=>this.editor.commands.selectTextblockEnd()};return Pi()||ac()?i:s},addProseMirrorPlugins(){return[new Z({key:new le("clearDocument"),appendTransaction:(n,e,t)=>{if(n.some(m=>m.getMeta("composition")))return;const r=n.some(m=>m.docChanged)&&!e.doc.eq(t.doc),s=n.some(m=>m.getMeta("preventClearDocument"));if(!r||s)return;const{empty:i,from:o,to:l}=e.selection,a=I.atStart(e.doc).from,c=I.atEnd(e.doc).to;if(i||!(o===a&&l===c)||!rs(t.doc))return;const f=t.tr,h=Xr({state:t,transaction:f}),{commands:p}=new Qr({editor:this.editor,state:h});if(p.clearNodes(),!!f.steps.length)return f}})]}}),Vp=ne.create({name:"paste",addProseMirrorPlugins(){return[new Z({key:new le("tiptapPaste"),props:{handlePaste:(n,e,t)=>{this.editor.emit("paste",{editor:this.editor,event:e,slice:t})}}})]}}),Wp=ne.create({name:"tabindex",addProseMirrorPlugins(){return[new Z({key:new le("tabindex"),props:{attributes:()=>this.editor.isEditable?{tabindex:"0"}:{}}})]}});class Ct{get name(){return this.node.type.name}constructor(e,t,r=!1,s=null){this.currentNode=null,this.actualDepth=null,this.isBlock=r,this.resolvedPos=e,this.editor=t,this.currentNode=s}get node(){return this.currentNode||this.resolvedPos.node()}get element(){return this.editor.view.domAtPos(this.pos).node}get depth(){var e;return(e=this.actualDepth)!==null&&e!==void 0?e:this.resolvedPos.depth}get pos(){return this.resolvedPos.pos}get content(){return this.node.content}set content(e){let t=this.from,r=this.to;if(this.isBlock){if(this.content.size===0){console.error(`You can’t set content on a block node. Tried to set content on ${this.name} at ${this.pos}`);return}t=this.from+1,r=this.to-1}this.editor.commands.insertContentAt({from:t,to:r},e)}get attributes(){return this.node.attrs}get textContent(){return this.node.textContent}get size(){return this.node.nodeSize}get from(){return this.isBlock?this.pos:this.resolvedPos.start(this.resolvedPos.depth)}get range(){return{from:this.from,to:this.to}}get to(){return this.isBlock?this.pos+this.size:this.resolvedPos.end(this.resolvedPos.depth)+(this.node.isText?0:1)}get parent(){if(this.depth===0)return null;const e=this.resolvedPos.start(this.resolvedPos.depth-1),t=this.resolvedPos.doc.resolve(e);return new Ct(t,this.editor)}get before(){let e=this.resolvedPos.doc.resolve(this.from-(this.isBlock?1:2));return e.depth!==this.depth&&(e=this.resolvedPos.doc.resolve(this.from-3)),new Ct(e,this.editor)}get after(){let e=this.resolvedPos.doc.resolve(this.to+(this.isBlock?2:1));return e.depth!==this.depth&&(e=this.resolvedPos.doc.resolve(this.to+3)),new Ct(e,this.editor)}get children(){const e=[];return this.node.content.forEach((t,r)=>{const s=t.isBlock&&!t.isTextblock,i=t.isAtom&&!t.isText,o=this.pos+r+(i?0:1);if(o<0||o>this.resolvedPos.doc.nodeSize-2)return;const l=this.resolvedPos.doc.resolve(o);if(!s&&l.depth<=this.depth)return;const a=new Ct(l,this.editor,s,s?t:null);s&&(a.actualDepth=this.depth+1),e.push(new Ct(l,this.editor,s,s?t:null))}),e}get firstChild(){return this.children[0]||null}get lastChild(){const e=this.children;return e[e.length-1]||null}closest(e,t={}){let r=null,s=this.parent;for(;s&&!r;){if(s.node.type.name===e)if(Object.keys(t).length>0){const i=s.node.attrs,o=Object.keys(t);for(let l=0;l{r&&s.length>0||(o.node.type.name===e&&i.every(a=>t[a]===o.node.attrs[a])&&s.push(o),!(r&&s.length>0)&&(s=s.concat(o.querySelectorAll(e,t,r))))}),s}setAttribute(e){const{tr:t}=this.editor.state;t.setNodeMarkup(this.from,void 0,{...this.node.attrs,...e}),this.editor.view.dispatch(t)}}const jp=`.ProseMirror { + position: relative; +} + +.ProseMirror { + word-wrap: break-word; + white-space: pre-wrap; + white-space: break-spaces; + -webkit-font-variant-ligatures: none; + font-variant-ligatures: none; + font-feature-settings: "liga" 0; /* the above doesn't seem to work in Edge */ +} + +.ProseMirror [contenteditable="false"] { + white-space: normal; +} + +.ProseMirror [contenteditable="false"] [contenteditable="true"] { + white-space: pre-wrap; +} + +.ProseMirror pre { + white-space: pre-wrap; +} + +img.ProseMirror-separator { + display: inline !important; + border: none !important; + margin: 0 !important; + width: 0 !important; + height: 0 !important; +} + +.ProseMirror-gapcursor { + display: none; + pointer-events: none; + position: absolute; + margin: 0; +} + +.ProseMirror-gapcursor:after { + content: ""; + display: block; + position: absolute; + top: -2px; + width: 20px; + border-top: 1px solid black; + animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite; +} + +@keyframes ProseMirror-cursor-blink { + to { + visibility: hidden; + } +} + +.ProseMirror-hideselection *::selection { + background: transparent; +} + +.ProseMirror-hideselection *::-moz-selection { + background: transparent; +} + +.ProseMirror-hideselection * { + caret-color: transparent; +} + +.ProseMirror-focused .ProseMirror-gapcursor { + display: block; +} + +.tippy-box[data-animation=fade][data-state=hidden] { + opacity: 0 +}`;function _p(n,e,t){const r=document.querySelector(`style[data-tiptap-style${t?`-${t}`:""}]`);if(r!==null)return r;const s=document.createElement("style");return e&&s.setAttribute("nonce",e),s.setAttribute(`data-tiptap-style${t?`-${t}`:""}`,""),s.innerHTML=n,document.getElementsByTagName("head")[0].appendChild(s),s}class Kp extends Zf{constructor(e={}){super(),this.isFocused=!1,this.isInitialized=!1,this.extensionStorage={},this.options={element:document.createElement("div"),content:"",injectCSS:!0,injectNonce:void 0,extensions:[],autofocus:!1,editable:!0,editorProps:{},parseOptions:{},coreExtensionOptions:{},enableInputRules:!0,enablePasteRules:!0,enableCoreExtensions:!0,enableContentCheck:!1,emitContentError:!1,onBeforeCreate:()=>null,onCreate:()=>null,onUpdate:()=>null,onSelectionUpdate:()=>null,onTransaction:()=>null,onFocus:()=>null,onBlur:()=>null,onDestroy:()=>null,onContentError:({error:t})=>{throw t},onPaste:()=>null,onDrop:()=>null},this.isCapturingTransaction=!1,this.capturedTransaction=null,this.setOptions(e),this.createExtensionManager(),this.createCommandManager(),this.createSchema(),this.on("beforeCreate",this.options.onBeforeCreate),this.emit("beforeCreate",{editor:this}),this.on("contentError",this.options.onContentError),this.createView(),this.injectCSS(),this.on("create",this.options.onCreate),this.on("update",this.options.onUpdate),this.on("selectionUpdate",this.options.onSelectionUpdate),this.on("transaction",this.options.onTransaction),this.on("focus",this.options.onFocus),this.on("blur",this.options.onBlur),this.on("destroy",this.options.onDestroy),this.on("drop",({event:t,slice:r,moved:s})=>this.options.onDrop(t,r,s)),this.on("paste",({event:t,slice:r})=>this.options.onPaste(t,r)),window.setTimeout(()=>{this.isDestroyed||(this.commands.focus(this.options.autofocus),this.emit("create",{editor:this}),this.isInitialized=!0)},0)}get storage(){return this.extensionStorage}get commands(){return this.commandManager.commands}chain(){return this.commandManager.chain()}can(){return this.commandManager.can()}injectCSS(){this.options.injectCSS&&document&&(this.css=_p(jp,this.options.injectNonce))}setOptions(e={}){this.options={...this.options,...e},!(!this.view||!this.state||this.isDestroyed)&&(this.options.editorProps&&this.view.setProps(this.options.editorProps),this.view.updateState(this.state))}setEditable(e,t=!0){this.setOptions({editable:e}),t&&this.emit("update",{editor:this,transaction:this.state.tr})}get isEditable(){return this.options.editable&&this.view&&this.view.editable}get state(){return this.view.state}registerPlugin(e,t){const r=tc(t)?t(e,[...this.state.plugins]):[...this.state.plugins,e],s=this.state.reconfigure({plugins:r});return this.view.updateState(s),s}unregisterPlugin(e){if(this.isDestroyed)return;const t=this.state.plugins;let r=t;if([].concat(e).forEach(i=>{const o=typeof i=="string"?`${i}$`:i.key;r=r.filter(l=>!l.key.startsWith(o))}),t.length===r.length)return;const s=this.state.reconfigure({plugins:r});return this.view.updateState(s),s}createExtensionManager(){var e,t;const s=[...this.options.enableCoreExtensions?[Bp,ph.configure({blockSeparator:(t=(e=this.options.coreExtensionOptions)===null||e===void 0?void 0:e.clipboardTextSerializer)===null||t===void 0?void 0:t.blockSeparator}),Pp,Fp,$p,Wp,zp,Vp].filter(i=>typeof this.options.enableCoreExtensions=="object"?this.options.enableCoreExtensions[i.name]!==!1:!0):[],...this.options.extensions].filter(i=>["extension","node","mark"].includes(i==null?void 0:i.type));this.extensionManager=new _t(s,this)}createCommandManager(){this.commandManager=new Qr({editor:this})}createSchema(){this.schema=this.extensionManager.schema}createView(){var e;let t;try{t=Qs(this.options.content,this.schema,this.options.parseOptions,{errorOnInvalidContent:this.options.enableContentCheck})}catch(o){if(!(o instanceof Error)||!["[tiptap error]: Invalid JSON content","[tiptap error]: Invalid HTML content"].includes(o.message))throw o;this.emit("contentError",{editor:this,error:o,disableCollaboration:()=>{this.storage.collaboration&&(this.storage.collaboration.isDisabled=!0),this.options.extensions=this.options.extensions.filter(l=>l.name!=="collaboration"),this.createExtensionManager()}}),t=Qs(this.options.content,this.schema,this.options.parseOptions,{errorOnInvalidContent:!1})}const r=oc(t,this.options.autofocus);this.view=new qa(this.options.element,{...this.options.editorProps,attributes:{role:"textbox",...(e=this.options.editorProps)===null||e===void 0?void 0:e.attributes},dispatchTransaction:this.dispatchTransaction.bind(this),state:jt.create({doc:t,selection:r||void 0})});const s=this.state.reconfigure({plugins:this.extensionManager.plugins});this.view.updateState(s),this.createNodeViews(),this.prependClass();const i=this.view.dom;i.editor=this}createNodeViews(){this.view.isDestroyed||this.view.setProps({nodeViews:this.extensionManager.nodeViews})}prependClass(){this.view.dom.className=`tiptap ${this.view.dom.className}`}captureTransaction(e){this.isCapturingTransaction=!0,e(),this.isCapturingTransaction=!1;const t=this.capturedTransaction;return this.capturedTransaction=null,t}dispatchTransaction(e){if(this.view.isDestroyed)return;if(this.isCapturingTransaction){if(!this.capturedTransaction){this.capturedTransaction=e;return}e.steps.forEach(o=>{var l;return(l=this.capturedTransaction)===null||l===void 0?void 0:l.step(o)});return}const t=this.state.apply(e),r=!this.state.selection.eq(t.selection);this.emit("beforeTransaction",{editor:this,transaction:e,nextState:t}),this.view.updateState(t),this.emit("transaction",{editor:this,transaction:e}),r&&this.emit("selectionUpdate",{editor:this,transaction:e});const s=e.getMeta("focus"),i=e.getMeta("blur");s&&this.emit("focus",{editor:this,event:s.event,transaction:e}),i&&this.emit("blur",{editor:this,event:i.event,transaction:e}),!(!e.docChanged||e.getMeta("preventUpdate"))&&this.emit("update",{editor:this,transaction:e})}getAttributes(e){return uc(this.state,e)}isActive(e,t){const r=typeof e=="string"?e:null,s=typeof e=="string"?t:e;return hp(this.state,r,s)}getJSON(){return this.state.doc.toJSON()}getHTML(){return Di(this.state.doc.content,this.schema)}getText(e){const{blockSeparator:t=` + +`,textSerializers:r={}}=e||{};return ap(this.state.doc,{blockSeparator:t,textSerializers:{...rc(this.schema),...r}})}get isEmpty(){return rs(this.state.doc)}getCharacterCount(){return console.warn('[tiptap warn]: "editor.getCharacterCount()" is deprecated. Please use "editor.storage.characterCount.characters()" instead.'),this.state.doc.content.size-2}destroy(){if(this.emit("destroy"),this.view){const e=this.view.dom;e&&e.editor&&delete e.editor,this.view.destroy()}this.removeAllListeners()}get isDestroyed(){var e;return!(!((e=this.view)===null||e===void 0)&&e.docView)}$node(e,t){var r;return((r=this.$doc)===null||r===void 0?void 0:r.querySelector(e,t))||null}$nodes(e,t){var r;return((r=this.$doc)===null||r===void 0?void 0:r.querySelectorAll(e,t))||null}$pos(e){const t=this.state.doc.resolve(e);return new Ct(t,this)}get $doc(){return this.$pos(0)}}function Lt(n){return new es({find:n.find,handler:({state:e,range:t,match:r})=>{const s=z(n.getAttributes,void 0,r);if(s===!1||s===null)return null;const{tr:i}=e,o=r[r.length-1],l=r[0];if(o){const a=l.search(/\S/),c=t.from+l.indexOf(o),d=c+o.length;if(Bi(t.from,t.to,e.doc).filter(h=>h.mark.type.excluded.find(m=>m===n.type&&m!==h.mark.type)).filter(h=>h.to>c).length)return null;dt.from&&i.delete(t.from+a,c);const f=t.from+a+o.length;i.addMark(t.from+a,f,n.type.create(s||{})),i.removeStoredMark(n.type)}}})}function Up(n){return new es({find:n.find,handler:({state:e,range:t,match:r})=>{const s=z(n.getAttributes,void 0,r)||{},{tr:i}=e,o=t.from;let l=t.to;const a=n.type.create(s);if(r[1]){const c=r[0].lastIndexOf(r[1]);let d=o+c;d>l?d=l:l=d+r[1].length;const u=r[0][r[0].length-1];i.insertText(u,o+r[0].length-1),i.replaceWith(d,l,a)}else if(r[0]){const c=n.type.isInline?o:o-1;i.insert(c,n.type.create(s)).delete(i.mapping.map(o),i.mapping.map(l))}i.scrollIntoView()}})}function ei(n){return new es({find:n.find,handler:({state:e,range:t,match:r})=>{const s=e.doc.resolve(t.from),i=z(n.getAttributes,void 0,r)||{};if(!s.node(-1).canReplaceWith(s.index(-1),s.indexAfter(-1),n.type))return null;e.tr.delete(t.from,t.to).setBlockType(t.from,t.from,n.type,i)}})}function Qt(n){return new es({find:n.find,handler:({state:e,range:t,match:r,chain:s})=>{const i=z(n.getAttributes,void 0,r)||{},o=e.tr.delete(t.from,t.to),a=o.doc.resolve(t.from).blockRange(),c=a&&yi(a,n.type,i);if(!c)return null;if(o.wrap(a,c),n.keepMarks&&n.editor){const{selection:u,storedMarks:f}=e,{splittableMarks:h}=n.editor.extensionManager,p=f||u.$to.parentOffset&&u.$from.marks();if(p){const m=p.filter(g=>h.includes(g.type.name));o.ensureMarks(m)}}if(n.keepAttributes){const u=n.type.name==="bulletList"||n.type.name==="orderedList"?"listItem":"taskList";s().updateAttributes(u,i).run()}const d=o.doc.resolve(t.from-1).nodeBefore;d&&d.type===n.type&&pt(o.doc,t.from-1)&&(!n.joinPredicate||n.joinPredicate(r,d))&&o.join(t.from-1)}})}class Q{constructor(e={}){this.type="node",this.name="node",this.parent=null,this.child=null,this.config={name:this.name,defaultOptions:{}},this.config={...this.config,...e},this.name=this.config.name,e.defaultOptions&&Object.keys(e.defaultOptions).length>0&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${this.name}".`),this.options=this.config.defaultOptions,this.config.addOptions&&(this.options=z(E(this,"addOptions",{name:this.name}))),this.storage=z(E(this,"addStorage",{name:this.name,options:this.options}))||{}}static create(e={}){return new Q(e)}configure(e={}){const t=this.extend({...this.config,addOptions:()=>ts(this.options,e)});return t.name=this.name,t.parent=this.parent,t}extend(e={}){const t=new Q(e);return t.parent=this,this.child=t,t.name=e.name?e.name:t.parent.name,e.defaultOptions&&Object.keys(e.defaultOptions).length>0&&console.warn(`[tiptap warn]: BREAKING CHANGE: "defaultOptions" is deprecated. Please use "addOptions" instead. Found in extension: "${t.name}".`),t.options=z(E(t,"addOptions",{name:t.name})),t.storage=z(E(t,"addStorage",{name:t.name,options:t.options})),t}}function ht(n){return new ah({find:n.find,handler:({state:e,range:t,match:r,pasteEvent:s})=>{const i=z(n.getAttributes,void 0,r,s);if(i===!1||i===null)return null;const{tr:o}=e,l=r[r.length-1],a=r[0];let c=t.to;if(l){const d=a.search(/\S/),u=t.from+a.indexOf(l),f=u+l.length;if(Bi(t.from,t.to,e.doc).filter(p=>p.mark.type.excluded.find(g=>g===n.type&&g!==p.mark.type)).filter(p=>p.to>u).length)return null;ft.from&&o.delete(t.from+d,u),c=t.from+d+l.length,o.addMark(t.from+d,c,n.type.create(i||{})),o.removeStoredMark(n.type)}}})}function qp(n,e){const{selection:t}=n,{$from:r}=t;if(t instanceof R){const i=r.index();return r.parent.canReplaceWith(i,i+1,e)}let s=r.depth;for(;s>=0;){const i=r.index(s);if(r.node(s).contentMatchAt(i).matchType(e))return!0;s-=1}return!1}const Jp=Q.create({name:"doc",topNode:!0,content:"block+"}),Gp=Q.create({name:"paragraph",priority:1e3,addOptions(){return{HTMLAttributes:{}}},group:"block",content:"inline*",parseHTML(){return[{tag:"p"}]},renderHTML({HTMLAttributes:n}){return["p",W(this.options.HTMLAttributes,n),0]},addCommands(){return{setParagraph:()=>({commands:n})=>n.setNode(this.name)}},addKeyboardShortcuts(){return{"Mod-Alt-0":()=>this.editor.commands.setParagraph()}}}),Yp=Q.create({name:"text",group:"inline"}),Xp=/(?:^|\s)(\*\*(?!\s+\*\*)((?:[^*]+))\*\*(?!\s+\*\*))$/,Qp=/(?:^|\s)(\*\*(?!\s+\*\*)((?:[^*]+))\*\*(?!\s+\*\*))/g,Zp=/(?:^|\s)(__(?!\s+__)((?:[^_]+))__(?!\s+__))$/,em=/(?:^|\s)(__(?!\s+__)((?:[^_]+))__(?!\s+__))/g,tm=xe.create({name:"bold",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"strong"},{tag:"b",getAttrs:n=>n.style.fontWeight!=="normal"&&null},{style:"font-weight=400",clearMark:n=>n.type.name===this.name},{style:"font-weight",getAttrs:n=>/^(bold(er)?|[5-9]\d{2,})$/.test(n)&&null}]},renderHTML({HTMLAttributes:n}){return["strong",W(this.options.HTMLAttributes,n),0]},addCommands(){return{setBold:()=>({commands:n})=>n.setMark(this.name),toggleBold:()=>({commands:n})=>n.toggleMark(this.name),unsetBold:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-b":()=>this.editor.commands.toggleBold(),"Mod-B":()=>this.editor.commands.toggleBold()}},addInputRules(){return[Lt({find:Xp,type:this.type}),Lt({find:Zp,type:this.type})]},addPasteRules(){return[ht({find:Qp,type:this.type}),ht({find:em,type:this.type})]}}),nm=/(?:^|\s)(\*(?!\s+\*)((?:[^*]+))\*(?!\s+\*))$/,rm=/(?:^|\s)(\*(?!\s+\*)((?:[^*]+))\*(?!\s+\*))/g,sm=/(?:^|\s)(_(?!\s+_)((?:[^_]+))_(?!\s+_))$/,im=/(?:^|\s)(_(?!\s+_)((?:[^_]+))_(?!\s+_))/g,om=xe.create({name:"italic",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"em"},{tag:"i",getAttrs:n=>n.style.fontStyle!=="normal"&&null},{style:"font-style=normal",clearMark:n=>n.type.name===this.name},{style:"font-style=italic"}]},renderHTML({HTMLAttributes:n}){return["em",W(this.options.HTMLAttributes,n),0]},addCommands(){return{setItalic:()=>({commands:n})=>n.setMark(this.name),toggleItalic:()=>({commands:n})=>n.toggleMark(this.name),unsetItalic:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-i":()=>this.editor.commands.toggleItalic(),"Mod-I":()=>this.editor.commands.toggleItalic()}},addInputRules(){return[Lt({find:nm,type:this.type}),Lt({find:sm,type:this.type})]},addPasteRules(){return[ht({find:rm,type:this.type}),ht({find:im,type:this.type})]}}),lm=xe.create({name:"underline",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"u"},{style:"text-decoration",consuming:!1,getAttrs:n=>n.includes("underline")?{}:!1}]},renderHTML({HTMLAttributes:n}){return["u",W(this.options.HTMLAttributes,n),0]},addCommands(){return{setUnderline:()=>({commands:n})=>n.setMark(this.name),toggleUnderline:()=>({commands:n})=>n.toggleMark(this.name),unsetUnderline:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-u":()=>this.editor.commands.toggleUnderline(),"Mod-U":()=>this.editor.commands.toggleUnderline()}}}),am=/(?:^|\s)(~~(?!\s+~~)((?:[^~]+))~~(?!\s+~~))$/,cm=/(?:^|\s)(~~(?!\s+~~)((?:[^~]+))~~(?!\s+~~))/g,dm=xe.create({name:"strike",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"s"},{tag:"del"},{tag:"strike"},{style:"text-decoration",consuming:!1,getAttrs:n=>n.includes("line-through")?{}:!1}]},renderHTML({HTMLAttributes:n}){return["s",W(this.options.HTMLAttributes,n),0]},addCommands(){return{setStrike:()=>({commands:n})=>n.setMark(this.name),toggleStrike:()=>({commands:n})=>n.toggleMark(this.name),unsetStrike:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-Shift-s":()=>this.editor.commands.toggleStrike()}},addInputRules(){return[Lt({find:am,type:this.type})]},addPasteRules(){return[ht({find:cm,type:this.type})]}}),um=Q.create({name:"heading",addOptions(){return{levels:[1,2,3,4,5,6],HTMLAttributes:{}}},content:"inline*",group:"block",defining:!0,addAttributes(){return{level:{default:1,rendered:!1}}},parseHTML(){return this.options.levels.map(n=>({tag:`h${n}`,attrs:{level:n}}))},renderHTML({node:n,HTMLAttributes:e}){return[`h${this.options.levels.includes(n.attrs.level)?n.attrs.level:this.options.levels[0]}`,W(this.options.HTMLAttributes,e),0]},addCommands(){return{setHeading:n=>({commands:e})=>this.options.levels.includes(n.level)?e.setNode(this.name,n):!1,toggleHeading:n=>({commands:e})=>this.options.levels.includes(n.level)?e.toggleNode(this.name,"paragraph",n):!1}},addKeyboardShortcuts(){return this.options.levels.reduce((n,e)=>({...n,[`Mod-Alt-${e}`]:()=>this.editor.commands.toggleHeading({level:e})}),{})},addInputRules(){return this.options.levels.map(n=>ei({find:new RegExp(`^(#{${Math.min(...this.options.levels)},${n}})\\s$`),type:this.type,getAttributes:{level:n}}))}}),fm=/(^|[^`])`([^`]+)`(?!`)/,hm=/(^|[^`])`([^`]+)`(?!`)/g,pm=xe.create({name:"code",addOptions(){return{HTMLAttributes:{}}},excludes:"_",code:!0,exitable:!0,parseHTML(){return[{tag:"code"}]},renderHTML({HTMLAttributes:n}){return["code",W(this.options.HTMLAttributes,n),0]},addCommands(){return{setCode:()=>({commands:n})=>n.setMark(this.name),toggleCode:()=>({commands:n})=>n.toggleMark(this.name),unsetCode:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-e":()=>this.editor.commands.toggleCode()}},addInputRules(){return[Lt({find:fm,type:this.type})]},addPasteRules(){return[ht({find:hm,type:this.type})]}}),mm=/^```([a-z]+)?[\s\n]$/,gm=/^~~~([a-z]+)?[\s\n]$/,ym=Q.create({name:"codeBlock",addOptions(){return{languageClassPrefix:"language-",exitOnTripleEnter:!0,exitOnArrowDown:!0,defaultLanguage:null,HTMLAttributes:{}}},content:"text*",marks:"",group:"block",code:!0,defining:!0,addAttributes(){return{language:{default:this.options.defaultLanguage,parseHTML:n=>{var e;const{languageClassPrefix:t}=this.options,i=[...((e=n.firstElementChild)===null||e===void 0?void 0:e.classList)||[]].filter(o=>o.startsWith(t)).map(o=>o.replace(t,""))[0];return i||null},rendered:!1}}},parseHTML(){return[{tag:"pre",preserveWhitespace:"full"}]},renderHTML({node:n,HTMLAttributes:e}){return["pre",W(this.options.HTMLAttributes,e),["code",{class:n.attrs.language?this.options.languageClassPrefix+n.attrs.language:null},0]]},addCommands(){return{setCodeBlock:n=>({commands:e})=>e.setNode(this.name,n),toggleCodeBlock:n=>({commands:e})=>e.toggleNode(this.name,"paragraph",n)}},addKeyboardShortcuts(){return{"Mod-Alt-c":()=>this.editor.commands.toggleCodeBlock(),Backspace:()=>{const{empty:n,$anchor:e}=this.editor.state.selection,t=e.pos===1;return!n||e.parent.type.name!==this.name?!1:t||!e.parent.textContent.length?this.editor.commands.clearNodes():!1},Enter:({editor:n})=>{if(!this.options.exitOnTripleEnter)return!1;const{state:e}=n,{selection:t}=e,{$from:r,empty:s}=t;if(!s||r.parent.type!==this.type)return!1;const i=r.parentOffset===r.parent.nodeSize-2,o=r.parent.textContent.endsWith(` + +`);return!i||!o?!1:n.chain().command(({tr:l})=>(l.delete(r.pos-2,r.pos),!0)).exitCode().run()},ArrowDown:({editor:n})=>{if(!this.options.exitOnArrowDown)return!1;const{state:e}=n,{selection:t,doc:r}=e,{$from:s,empty:i}=t;if(!i||s.parent.type!==this.type||!(s.parentOffset===s.parent.nodeSize-2))return!1;const l=s.after();return l===void 0?!1:r.nodeAt(l)?n.commands.command(({tr:c})=>(c.setSelection(I.near(r.resolve(l))),!0)):n.commands.exitCode()}}},addInputRules(){return[ei({find:mm,type:this.type,getAttributes:n=>({language:n[1]})}),ei({find:gm,type:this.type,getAttributes:n=>({language:n[1]})})]},addProseMirrorPlugins(){return[new Z({key:new le("codeBlockVSCodeHandler"),props:{handlePaste:(n,e)=>{if(!e.clipboardData||this.editor.isActive(this.type.name))return!1;const t=e.clipboardData.getData("text/plain"),r=e.clipboardData.getData("vscode-editor-data"),s=r?JSON.parse(r):void 0,i=s==null?void 0:s.mode;if(!t||!i)return!1;const{tr:o,schema:l}=n.state,a=l.text(t.replace(/\r\n?/g,` +`));return o.replaceSelectionWith(this.type.create({language:i},a)),o.selection.$from.parent.type!==this.type&&o.setSelection(D.near(o.doc.resolve(Math.max(0,o.selection.from-2)))),o.setMeta("paste",!0),n.dispatch(o),!0}}})]}}),bm="listItem",ll="textStyle",al=/^\s*([-+*])\s$/,km=Q.create({name:"bulletList",addOptions(){return{itemTypeName:"listItem",HTMLAttributes:{},keepMarks:!1,keepAttributes:!1}},group:"block list",content(){return`${this.options.itemTypeName}+`},parseHTML(){return[{tag:"ul"}]},renderHTML({HTMLAttributes:n}){return["ul",W(this.options.HTMLAttributes,n),0]},addCommands(){return{toggleBulletList:()=>({commands:n,chain:e})=>this.options.keepAttributes?e().toggleList(this.name,this.options.itemTypeName,this.options.keepMarks).updateAttributes(bm,this.editor.getAttributes(ll)).run():n.toggleList(this.name,this.options.itemTypeName,this.options.keepMarks)}},addKeyboardShortcuts(){return{"Mod-Shift-8":()=>this.editor.commands.toggleBulletList()}},addInputRules(){let n=Qt({find:al,type:this.type});return(this.options.keepMarks||this.options.keepAttributes)&&(n=Qt({find:al,type:this.type,keepMarks:this.options.keepMarks,keepAttributes:this.options.keepAttributes,getAttributes:()=>this.editor.getAttributes(ll),editor:this.editor})),[n]}}),Cm="listItem",cl="textStyle",dl=/^(\d+)\.\s$/,xm=Q.create({name:"orderedList",addOptions(){return{itemTypeName:"listItem",HTMLAttributes:{},keepMarks:!1,keepAttributes:!1}},group:"block list",content(){return`${this.options.itemTypeName}+`},addAttributes(){return{start:{default:1,parseHTML:n=>n.hasAttribute("start")?parseInt(n.getAttribute("start")||"",10):1},type:{default:null,parseHTML:n=>n.getAttribute("type")}}},parseHTML(){return[{tag:"ol"}]},renderHTML({HTMLAttributes:n}){const{start:e,...t}=n;return e===1?["ol",W(this.options.HTMLAttributes,t),0]:["ol",W(this.options.HTMLAttributes,n),0]},addCommands(){return{toggleOrderedList:()=>({commands:n,chain:e})=>this.options.keepAttributes?e().toggleList(this.name,this.options.itemTypeName,this.options.keepMarks).updateAttributes(Cm,this.editor.getAttributes(cl)).run():n.toggleList(this.name,this.options.itemTypeName,this.options.keepMarks)}},addKeyboardShortcuts(){return{"Mod-Shift-7":()=>this.editor.commands.toggleOrderedList()}},addInputRules(){let n=Qt({find:dl,type:this.type,getAttributes:e=>({start:+e[1]}),joinPredicate:(e,t)=>t.childCount+t.attrs.start===+e[1]});return(this.options.keepMarks||this.options.keepAttributes)&&(n=Qt({find:dl,type:this.type,keepMarks:this.options.keepMarks,keepAttributes:this.options.keepAttributes,getAttributes:e=>({start:+e[1],...this.editor.getAttributes(cl)}),joinPredicate:(e,t)=>t.childCount+t.attrs.start===+e[1],editor:this.editor})),[n]}}),Sm=Q.create({name:"listItem",addOptions(){return{HTMLAttributes:{},bulletListTypeName:"bulletList",orderedListTypeName:"orderedList"}},content:"paragraph block*",defining:!0,parseHTML(){return[{tag:"li"}]},renderHTML({HTMLAttributes:n}){return["li",W(this.options.HTMLAttributes,n),0]},addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.splitListItem(this.name),Tab:()=>this.editor.commands.sinkListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)}}}),wm=/^\s*>\s$/,Mm=Q.create({name:"blockquote",addOptions(){return{HTMLAttributes:{}}},content:"block+",group:"block",defining:!0,parseHTML(){return[{tag:"blockquote"}]},renderHTML({HTMLAttributes:n}){return["blockquote",W(this.options.HTMLAttributes,n),0]},addCommands(){return{setBlockquote:()=>({commands:n})=>n.wrapIn(this.name),toggleBlockquote:()=>({commands:n})=>n.toggleWrap(this.name),unsetBlockquote:()=>({commands:n})=>n.lift(this.name)}},addKeyboardShortcuts(){return{"Mod-Shift-b":()=>this.editor.commands.toggleBlockquote()}},addInputRules(){return[Qt({find:wm,type:this.type})]}}),Tm="aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2",Em="ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2",ti="numeric",ni="ascii",ri="alpha",pn="asciinumeric",cn="alphanumeric",si="domain",fc="emoji",Am="scheme",Om="slashscheme",Es="whitespace";function Nm(n,e){return n in e||(e[n]=[]),e[n]}function Mt(n,e,t){e[ti]&&(e[pn]=!0,e[cn]=!0),e[ni]&&(e[pn]=!0,e[ri]=!0),e[pn]&&(e[cn]=!0),e[ri]&&(e[cn]=!0),e[cn]&&(e[si]=!0),e[fc]&&(e[si]=!0);for(const r in e){const s=Nm(r,t);s.indexOf(n)<0&&s.push(n)}}function vm(n,e){const t={};for(const r in e)e[r].indexOf(n)>=0&&(t[r]=!0);return t}function ke(n=null){this.j={},this.jr=[],this.jd=null,this.t=n}ke.groups={};ke.prototype={accepts(){return!!this.t},go(n){const e=this,t=e.j[n];if(t)return t;for(let r=0;rn.ta(e,t,r,s),J=(n,e,t,r,s)=>n.tr(e,t,r,s),ul=(n,e,t,r,s)=>n.ts(e,t,r,s),C=(n,e,t,r,s)=>n.tt(e,t,r,s),Ke="WORD",ii="UWORD",hc="ASCIINUMERICAL",pc="ALPHANUMERICAL",Nn="LOCALHOST",oi="TLD",li="UTLD",er="SCHEME",Wt="SLASH_SCHEME",Hi="NUM",ai="WS",Fi="NL",mn="OPENBRACE",gn="CLOSEBRACE",gr="OPENBRACKET",yr="CLOSEBRACKET",br="OPENPAREN",kr="CLOSEPAREN",Cr="OPENANGLEBRACKET",xr="CLOSEANGLEBRACKET",Sr="FULLWIDTHLEFTPAREN",wr="FULLWIDTHRIGHTPAREN",Mr="LEFTCORNERBRACKET",Tr="RIGHTCORNERBRACKET",Er="LEFTWHITECORNERBRACKET",Ar="RIGHTWHITECORNERBRACKET",Or="FULLWIDTHLESSTHAN",Nr="FULLWIDTHGREATERTHAN",vr="AMPERSAND",Rr="APOSTROPHE",Dr="ASTERISK",Ze="AT",Ir="BACKSLASH",Lr="BACKTICK",Pr="CARET",nt="COLON",$i="COMMA",zr="DOLLAR",Le="DOT",Br="EQUALS",Vi="EXCLAMATION",Ee="HYPHEN",yn="PERCENT",Hr="PIPE",Fr="PLUS",$r="POUND",bn="QUERY",Wi="QUOTE",mc="FULLWIDTHMIDDLEDOT",ji="SEMI",Pe="SLASH",kn="TILDE",Vr="UNDERSCORE",gc="EMOJI",Wr="SYM";var yc=Object.freeze({__proto__:null,ALPHANUMERICAL:pc,AMPERSAND:vr,APOSTROPHE:Rr,ASCIINUMERICAL:hc,ASTERISK:Dr,AT:Ze,BACKSLASH:Ir,BACKTICK:Lr,CARET:Pr,CLOSEANGLEBRACKET:xr,CLOSEBRACE:gn,CLOSEBRACKET:yr,CLOSEPAREN:kr,COLON:nt,COMMA:$i,DOLLAR:zr,DOT:Le,EMOJI:gc,EQUALS:Br,EXCLAMATION:Vi,FULLWIDTHGREATERTHAN:Nr,FULLWIDTHLEFTPAREN:Sr,FULLWIDTHLESSTHAN:Or,FULLWIDTHMIDDLEDOT:mc,FULLWIDTHRIGHTPAREN:wr,HYPHEN:Ee,LEFTCORNERBRACKET:Mr,LEFTWHITECORNERBRACKET:Er,LOCALHOST:Nn,NL:Fi,NUM:Hi,OPENANGLEBRACKET:Cr,OPENBRACE:mn,OPENBRACKET:gr,OPENPAREN:br,PERCENT:yn,PIPE:Hr,PLUS:Fr,POUND:$r,QUERY:bn,QUOTE:Wi,RIGHTCORNERBRACKET:Tr,RIGHTWHITECORNERBRACKET:Ar,SCHEME:er,SEMI:ji,SLASH:Pe,SLASH_SCHEME:Wt,SYM:Wr,TILDE:kn,TLD:oi,UNDERSCORE:Vr,UTLD:li,UWORD:ii,WORD:Ke,WS:ai});const je=/[a-z]/,sn=/\p{L}/u,As=/\p{Emoji}/u,_e=/\d/,Os=/\s/,fl="\r",Ns=` +`,Rm="️",Dm="‍",vs="";let jn=null,_n=null;function Im(n=[]){const e={};ke.groups=e;const t=new ke;jn==null&&(jn=hl(Tm)),_n==null&&(_n=hl(Em)),C(t,"'",Rr),C(t,"{",mn),C(t,"}",gn),C(t,"[",gr),C(t,"]",yr),C(t,"(",br),C(t,")",kr),C(t,"<",Cr),C(t,">",xr),C(t,"(",Sr),C(t,")",wr),C(t,"「",Mr),C(t,"」",Tr),C(t,"『",Er),C(t,"』",Ar),C(t,"<",Or),C(t,">",Nr),C(t,"&",vr),C(t,"*",Dr),C(t,"@",Ze),C(t,"`",Lr),C(t,"^",Pr),C(t,":",nt),C(t,",",$i),C(t,"$",zr),C(t,".",Le),C(t,"=",Br),C(t,"!",Vi),C(t,"-",Ee),C(t,"%",yn),C(t,"|",Hr),C(t,"+",Fr),C(t,"#",$r),C(t,"?",bn),C(t,'"',Wi),C(t,"/",Pe),C(t,";",ji),C(t,"~",kn),C(t,"_",Vr),C(t,"\\",Ir),C(t,"・",mc);const r=J(t,_e,Hi,{[ti]:!0});J(r,_e,r);const s=J(r,je,hc,{[pn]:!0}),i=J(r,sn,pc,{[cn]:!0}),o=J(t,je,Ke,{[ni]:!0});J(o,_e,s),J(o,je,o),J(s,_e,s),J(s,je,s);const l=J(t,sn,ii,{[ri]:!0});J(l,je),J(l,_e,i),J(l,sn,l),J(i,_e,i),J(i,je),J(i,sn,i);const a=C(t,Ns,Fi,{[Es]:!0}),c=C(t,fl,ai,{[Es]:!0}),d=J(t,Os,ai,{[Es]:!0});C(t,vs,d),C(c,Ns,a),C(c,vs,d),J(c,Os,d),C(d,fl),C(d,Ns),J(d,Os,d),C(d,vs,d);const u=J(t,As,gc,{[fc]:!0});C(u,"#"),J(u,As,u),C(u,Rm,u);const f=C(u,Dm);C(f,"#"),J(f,As,u);const h=[[je,o],[_e,s]],p=[[je,null],[sn,l],[_e,i]];for(let m=0;mm[0]>g[0]?1:-1);for(let m=0;m=0?M[si]=!0:je.test(g)?_e.test(g)?M[pn]=!0:M[ni]=!0:M[ti]=!0,ul(t,g,g,M)}return ul(t,"localhost",Nn,{ascii:!0}),t.jd=new ke(Wr),{start:t,tokens:Object.assign({groups:e},yc)}}function bc(n,e){const t=Lm(e.replace(/[A-Z]/g,l=>l.toLowerCase())),r=t.length,s=[];let i=0,o=0;for(;o=0&&(u+=t[o].length,f++),c+=t[o].length,i+=t[o].length,o++;i-=u,o-=f,c-=u,s.push({t:d.t,v:e.slice(i-c,i),s:i-c,e:i})}return s}function Lm(n){const e=[],t=n.length;let r=0;for(;r56319||r+1===t||(i=n.charCodeAt(r+1))<56320||i>57343?n[r]:n.slice(r,r+2);e.push(o),r+=o.length}return e}function Ye(n,e,t,r,s){let i;const o=e.length;for(let l=0;l=0;)i++;if(i>0){e.push(t.join(""));for(let o=parseInt(n.substring(r,r+i),10);o>0;o--)t.pop();r+=i}else t.push(n[r]),r++}return e}const vn={defaultProtocol:"http",events:null,format:pl,formatHref:pl,nl2br:!1,tagName:"a",target:null,rel:null,validate:!0,truncate:1/0,className:null,attributes:null,ignoreTags:[],render:null};function _i(n,e=null){let t=Object.assign({},vn);n&&(t=Object.assign(t,n instanceof _i?n.o:n));const r=t.ignoreTags,s=[];for(let i=0;it?r.substring(0,t)+"…":r},toFormattedHref(n){return n.get("formatHref",this.toHref(n.get("defaultProtocol")),this)},startIndex(){return this.tk[0].s},endIndex(){return this.tk[this.tk.length-1].e},toObject(n=vn.defaultProtocol){return{type:this.t,value:this.toString(),isLink:this.isLink,href:this.toHref(n),start:this.startIndex(),end:this.endIndex()}},toFormattedObject(n){return{type:this.t,value:this.toFormattedString(n),isLink:this.isLink,href:this.toFormattedHref(n),start:this.startIndex(),end:this.endIndex()}},validate(n){return n.get("validate",this.toString(),this)},render(n){const e=this,t=this.toHref(n.get("defaultProtocol")),r=n.get("formatHref",t,this),s=n.get("tagName",t,e),i=this.toFormattedString(n),o={},l=n.get("className",t,e),a=n.get("target",t,e),c=n.get("rel",t,e),d=n.getObj("attributes",t,e),u=n.getObj("events",t,e);return o.href=r,l&&(o.class=l),a&&(o.target=a),c&&(o.rel=c),d&&Object.assign(o,d),{tagName:s,attributes:o,content:i,eventListeners:u}}};function ss(n,e){class t extends kc{constructor(s,i){super(s,i),this.t=n}}for(const r in e)t.prototype[r]=e[r];return t.t=n,t}const ml=ss("email",{isLink:!0,toHref(){return"mailto:"+this.toString()}}),gl=ss("text"),Pm=ss("nl"),Kn=ss("url",{isLink:!0,toHref(n=vn.defaultProtocol){return this.hasProtocol()?this.v:`${n}://${this.v}`},hasProtocol(){const n=this.tk;return n.length>=2&&n[0].t!==Nn&&n[1].t===nt}}),Te=n=>new ke(n);function zm({groups:n}){const e=n.domain.concat([vr,Dr,Ze,Ir,Lr,Pr,zr,Br,Ee,Hi,yn,Hr,Fr,$r,Pe,Wr,kn,Vr]),t=[Rr,nt,$i,Le,Vi,yn,bn,Wi,ji,Cr,xr,mn,gn,yr,gr,br,kr,Sr,wr,Mr,Tr,Er,Ar,Or,Nr],r=[vr,Rr,Dr,Ir,Lr,Pr,zr,Br,Ee,mn,gn,yn,Hr,Fr,$r,bn,Pe,Wr,kn,Vr],s=Te(),i=C(s,kn);P(i,r,i),P(i,n.domain,i);const o=Te(),l=Te(),a=Te();P(s,n.domain,o),P(s,n.scheme,l),P(s,n.slashscheme,a),P(o,r,i),P(o,n.domain,o);const c=C(o,Ze);C(i,Ze,c),C(l,Ze,c),C(a,Ze,c);const d=C(i,Le);P(d,r,i),P(d,n.domain,i);const u=Te();P(c,n.domain,u),P(u,n.domain,u);const f=C(u,Le);P(f,n.domain,u);const h=Te(ml);P(f,n.tld,h),P(f,n.utld,h),C(c,Nn,h);const p=C(u,Ee);C(p,Ee,p),P(p,n.domain,u),P(h,n.domain,u),C(h,Le,f),C(h,Ee,p);const m=C(h,nt);P(m,n.numeric,ml);const g=C(o,Ee),y=C(o,Le);C(g,Ee,g),P(g,n.domain,o),P(y,r,i),P(y,n.domain,o);const M=Te(Kn);P(y,n.tld,M),P(y,n.utld,M),P(M,n.domain,o),P(M,r,i),C(M,Le,y),C(M,Ee,g),C(M,Ze,c);const A=C(M,nt),L=Te(Kn);P(A,n.numeric,L);const O=Te(Kn),B=Te();P(O,e,O),P(O,t,B),P(B,e,O),P(B,t,B),C(M,Pe,O),C(L,Pe,O);const N=C(l,nt),H=C(a,nt),ee=C(H,Pe),yt=C(ee,Pe);P(l,n.domain,o),C(l,Le,y),C(l,Ee,g),P(a,n.domain,o),C(a,Le,y),C(a,Ee,g),P(N,n.domain,O),C(N,Pe,O),C(N,bn,O),P(yt,n.domain,O),P(yt,e,O),C(yt,Pe,O);const Pn=[[mn,gn],[gr,yr],[br,kr],[Cr,xr],[Sr,wr],[Mr,Tr],[Er,Ar],[Or,Nr]];for(let tn=0;tn=0&&f++,s++,d++;if(f<0)s-=d,s0&&(i.push(Rs(gl,e,o)),o=[]),s-=f,d-=f;const h=u.t,p=t.slice(s-d,s);i.push(Rs(h,e,p))}}return o.length>0&&i.push(Rs(gl,e,o)),i}function Rs(n,e,t){const r=t[0].s,s=t[t.length-1].e,i=e.slice(r,s);return new n(i,t)}const Hm=typeof console<"u"&&console&&console.warn||(()=>{}),Fm="until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.",K={scanner:null,parser:null,tokenQueue:[],pluginQueue:[],customSchemes:[],initialized:!1};function $m(){return ke.groups={},K.scanner=null,K.parser=null,K.tokenQueue=[],K.pluginQueue=[],K.customSchemes=[],K.initialized=!1,K}function yl(n,e=!1){if(K.initialized&&Hm(`linkifyjs: already initialized - will not register custom scheme "${n}" ${Fm}`),!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(n))throw new Error(`linkifyjs: incorrect scheme format. +1. Must only contain digits, lowercase ASCII letters or "-" +2. Cannot start or end with "-" +3. "-" cannot repeat`);K.customSchemes.push([n,e])}function Vm(){K.scanner=Im(K.customSchemes);for(let n=0;n{const s=e.some(c=>c.docChanged)&&!t.doc.eq(r.doc),i=e.some(c=>c.getMeta("preventAutolink"));if(!s||i)return;const{tr:o}=r,l=ip(t.doc,[...e]);if(fp(l).forEach(({newRange:c})=>{const d=lp(r.doc,c,h=>h.isTextblock);let u,f;if(d.length>1)u=d[0],f=r.doc.textBetween(u.pos,u.pos+u.node.nodeSize,void 0," ");else if(d.length){const h=r.doc.textBetween(c.from,c.to," "," ");if(!jm.test(h))return;u=d[0],f=r.doc.textBetween(u.pos,c.to,void 0," ")}if(u&&f){const h=f.split(Wm).filter(Boolean);if(h.length<=0)return!1;const p=h[h.length-1],m=u.pos+f.lastIndexOf(p);if(!p)return!1;const g=Ki(p).map(y=>y.toObject(n.defaultProtocol));if(!Km(g))return!1;g.filter(y=>y.isLink).map(y=>({...y,from:m+y.start+1,to:m+y.end+1})).filter(y=>r.schema.marks.code?!r.doc.rangeHasMark(y.from,y.to,r.schema.marks.code):!0).filter(y=>n.validate(y.value)).filter(y=>n.shouldAutoLink(y.value)).forEach(y=>{Bi(y.from,y.to,r.doc).some(M=>M.mark.type===n.type)||o.addMark(y.from,y.to,n.type.create({href:y.href}))})}}),!!o.steps.length)return o}})}function qm(n){return new Z({key:new le("handleClickLink"),props:{handleClick:(e,t,r)=>{var s,i;if(r.button!==0||!e.editable)return!1;let o=r.target;const l=[];for(;o.nodeName!=="DIV";)l.push(o),o=o.parentNode;if(!l.find(f=>f.nodeName==="A"))return!1;const a=uc(e.state,n.type.name),c=r.target,d=(s=c==null?void 0:c.href)!==null&&s!==void 0?s:a.href,u=(i=c==null?void 0:c.target)!==null&&i!==void 0?i:a.target;return c&&d?(window.open(d,u),!0):!1}}})}function Jm(n){return new Z({key:new le("handlePasteLink"),props:{handlePaste:(e,t,r)=>{const{state:s}=e,{selection:i}=s,{empty:o}=i;if(o)return!1;let l="";r.content.forEach(c=>{l+=c.textContent});const a=Cc(l,{defaultProtocol:n.defaultProtocol}).find(c=>c.isLink&&c.value===l);return!l||!a?!1:n.editor.commands.setMark(n.type,{href:a.href})}}})}function bt(n,e){const t=["http","https","ftp","ftps","mailto","tel","callto","sms","cid","xmpp"];return e&&e.forEach(r=>{const s=typeof r=="string"?r:r.scheme;s&&t.push(s)}),!n||n.replace(_m,"").match(new RegExp(`^(?:(?:${t.join("|")}):|[^a-z]|[a-z0-9+.-]+(?:[^a-z+.-:]|$))`,"i"))}const Gm=xe.create({name:"link",priority:1e3,keepOnSplit:!1,exitable:!0,onCreate(){this.options.validate&&!this.options.shouldAutoLink&&(this.options.shouldAutoLink=this.options.validate,console.warn("The `validate` option is deprecated. Rename to the `shouldAutoLink` option instead.")),this.options.protocols.forEach(n=>{if(typeof n=="string"){yl(n);return}yl(n.scheme,n.optionalSlashes)})},onDestroy(){$m()},inclusive(){return this.options.autolink},addOptions(){return{openOnClick:!0,linkOnPaste:!0,autolink:!0,protocols:[],defaultProtocol:"http",HTMLAttributes:{target:"_blank",rel:"noopener noreferrer nofollow",class:null},isAllowedUri:(n,e)=>!!bt(n,e.protocols),validate:n=>!!n,shouldAutoLink:n=>!!n}},addAttributes(){return{href:{default:null,parseHTML(n){return n.getAttribute("href")}},target:{default:this.options.HTMLAttributes.target},rel:{default:this.options.HTMLAttributes.rel},class:{default:this.options.HTMLAttributes.class}}},parseHTML(){return[{tag:"a[href]",getAttrs:n=>{const e=n.getAttribute("href");return!e||!this.options.isAllowedUri(e,{defaultValidate:t=>!!bt(t,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?!1:null}}]},renderHTML({HTMLAttributes:n}){return this.options.isAllowedUri(n.href,{defaultValidate:e=>!!bt(e,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?["a",W(this.options.HTMLAttributes,n),0]:["a",W(this.options.HTMLAttributes,{...n,href:""}),0]},addCommands(){return{setLink:n=>({chain:e})=>{const{href:t}=n;return this.options.isAllowedUri(t,{defaultValidate:r=>!!bt(r,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?e().setMark(this.name,n).setMeta("preventAutolink",!0).run():!1},toggleLink:n=>({chain:e})=>{const{href:t}=n;return this.options.isAllowedUri(t,{defaultValidate:r=>!!bt(r,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?e().toggleMark(this.name,n,{extendEmptyMarkRange:!0}).setMeta("preventAutolink",!0).run():!1},unsetLink:()=>({chain:n})=>n().unsetMark(this.name,{extendEmptyMarkRange:!0}).setMeta("preventAutolink",!0).run()}},addPasteRules(){return[ht({find:n=>{const e=[];if(n){const{protocols:t,defaultProtocol:r}=this.options,s=Cc(n).filter(i=>i.isLink&&this.options.isAllowedUri(i.value,{defaultValidate:o=>!!bt(o,t),protocols:t,defaultProtocol:r}));s.length&&s.forEach(i=>e.push({text:i.value,data:{href:i.href},index:i.start}))}return e},type:this.type,getAttributes:n=>{var e;return{href:(e=n.data)===null||e===void 0?void 0:e.href}}})]},addProseMirrorPlugins(){const n=[],{protocols:e,defaultProtocol:t}=this.options;return this.options.autolink&&n.push(Um({type:this.type,defaultProtocol:this.options.defaultProtocol,validate:r=>this.options.isAllowedUri(r,{defaultValidate:s=>!!bt(s,e),protocols:e,defaultProtocol:t}),shouldAutoLink:this.options.shouldAutoLink})),this.options.openOnClick===!0&&n.push(qm({type:this.type})),this.options.linkOnPaste&&n.push(Jm({editor:this.editor,defaultProtocol:this.options.defaultProtocol,type:this.type})),n}}),Ym=Q.create({name:"horizontalRule",addOptions(){return{HTMLAttributes:{}}},group:"block",parseHTML(){return[{tag:"hr"}]},renderHTML({HTMLAttributes:n}){return["hr",W(this.options.HTMLAttributes,n)]},addCommands(){return{setHorizontalRule:()=>({chain:n,state:e})=>{if(!qp(e,e.schema.nodes[this.name]))return!1;const{selection:t}=e,{$from:r,$to:s}=t,i=n();return r.parentOffset===0?i.insertContentAt({from:Math.max(r.pos-1,0),to:s.pos},{type:this.name}):pp(t)?i.insertContentAt(s.pos,{type:this.name}):i.insertContent({type:this.name}),i.command(({tr:o,dispatch:l})=>{var a;if(l){const{$to:c}=o.selection,d=c.end();if(c.nodeAfter)c.nodeAfter.isTextblock?o.setSelection(D.create(o.doc,c.pos+1)):c.nodeAfter.isBlock?o.setSelection(R.create(o.doc,c.pos)):o.setSelection(D.create(o.doc,c.pos));else{const u=(a=c.parent.type.contentMatch.defaultType)===null||a===void 0?void 0:a.create();u&&(o.insert(d,u),o.setSelection(D.create(o.doc,d+1)))}o.scrollIntoView()}return!0}).run()}}},addInputRules(){return[Up({find:/^(?:---|—-|___\s|\*\*\*\s)$/,type:this.type})]}});function Xm(n={}){return new Z({view(e){return new Qm(e,n)}})}class Qm{constructor(e,t){var r;this.editorView=e,this.cursorPos=null,this.element=null,this.timeout=-1,this.width=(r=t.width)!==null&&r!==void 0?r:1,this.color=t.color===!1?void 0:t.color||"black",this.class=t.class,this.handlers=["dragover","dragend","drop","dragleave"].map(s=>{let i=o=>{this[s](o)};return e.dom.addEventListener(s,i),{name:s,handler:i}})}destroy(){this.handlers.forEach(({name:e,handler:t})=>this.editorView.dom.removeEventListener(e,t))}update(e,t){this.cursorPos!=null&&t.doc!=e.state.doc&&(this.cursorPos>e.state.doc.content.size?this.setCursor(null):this.updateOverlay())}setCursor(e){e!=this.cursorPos&&(this.cursorPos=e,e==null?(this.element.parentNode.removeChild(this.element),this.element=null):this.updateOverlay())}updateOverlay(){let e=this.editorView.state.doc.resolve(this.cursorPos),t=!e.parent.inlineContent,r,s=this.editorView.dom,i=s.getBoundingClientRect(),o=i.width/s.offsetWidth,l=i.height/s.offsetHeight;if(t){let u=e.nodeBefore,f=e.nodeAfter;if(u||f){let h=this.editorView.nodeDOM(this.cursorPos-(u?u.nodeSize:0));if(h){let p=h.getBoundingClientRect(),m=u?p.bottom:p.top;u&&f&&(m=(m+this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top)/2);let g=this.width/2*l;r={left:p.left,right:p.right,top:m-g,bottom:m+g}}}}if(!r){let u=this.editorView.coordsAtPos(this.cursorPos),f=this.width/2*o;r={left:u.left-f,right:u.left+f,top:u.top,bottom:u.bottom}}let a=this.editorView.dom.offsetParent;this.element||(this.element=a.appendChild(document.createElement("div")),this.class&&(this.element.className=this.class),this.element.style.cssText="position: absolute; z-index: 50; pointer-events: none;",this.color&&(this.element.style.backgroundColor=this.color)),this.element.classList.toggle("prosemirror-dropcursor-block",t),this.element.classList.toggle("prosemirror-dropcursor-inline",!t);let c,d;if(!a||a==document.body&&getComputedStyle(a).position=="static")c=-pageXOffset,d=-pageYOffset;else{let u=a.getBoundingClientRect(),f=u.width/a.offsetWidth,h=u.height/a.offsetHeight;c=u.left-a.scrollLeft*f,d=u.top-a.scrollTop*h}this.element.style.left=(r.left-c)/o+"px",this.element.style.top=(r.top-d)/l+"px",this.element.style.width=(r.right-r.left)/o+"px",this.element.style.height=(r.bottom-r.top)/l+"px"}scheduleRemoval(e){clearTimeout(this.timeout),this.timeout=setTimeout(()=>this.setCursor(null),e)}dragover(e){if(!this.editorView.editable)return;let t=this.editorView.posAtCoords({left:e.clientX,top:e.clientY}),r=t&&t.inside>=0&&this.editorView.state.doc.nodeAt(t.inside),s=r&&r.type.spec.disableDropCursor,i=typeof s=="function"?s(this.editorView,t,e):s;if(t&&!i){let o=t.pos;if(this.editorView.dragging&&this.editorView.dragging.slice){let l=oa(this.editorView.state.doc,o,this.editorView.dragging.slice);l!=null&&(o=l)}this.setCursor(o),this.scheduleRemoval(5e3)}}dragend(){this.scheduleRemoval(20)}drop(){this.scheduleRemoval(20)}dragleave(e){this.editorView.dom.contains(e.relatedTarget)||this.setCursor(null)}}const Zm=ne.create({name:"dropCursor",addOptions(){return{color:"currentColor",width:1,class:void 0}},addProseMirrorPlugins(){return[Xm(this.options)]}});class G extends I{constructor(e){super(e,e)}map(e,t){let r=e.resolve(t.map(this.head));return G.valid(r)?new G(r):I.near(r)}content(){return T.empty}eq(e){return e instanceof G&&e.head==this.head}toJSON(){return{type:"gapcursor",pos:this.head}}static fromJSON(e,t){if(typeof t.pos!="number")throw new RangeError("Invalid input for GapCursor.fromJSON");return new G(e.resolve(t.pos))}getBookmark(){return new qi(this.anchor)}static valid(e){let t=e.parent;if(t.isTextblock||!eg(e)||!tg(e))return!1;let r=t.type.spec.allowGapCursor;if(r!=null)return r;let s=t.contentMatchAt(e.index()).defaultType;return s&&s.isTextblock}static findGapCursorFrom(e,t,r=!1){e:for(;;){if(!r&&G.valid(e))return e;let s=e.pos,i=null;for(let o=e.depth;;o--){let l=e.node(o);if(t>0?e.indexAfter(o)0){i=l.child(t>0?e.indexAfter(o):e.index(o)-1);break}else if(o==0)return null;s+=t;let a=e.doc.resolve(s);if(G.valid(a))return a}for(;;){let o=t>0?i.firstChild:i.lastChild;if(!o){if(i.isAtom&&!i.isText&&!R.isSelectable(i)){e=e.doc.resolve(s+i.nodeSize*t),r=!1;continue e}break}i=o,s+=t;let l=e.doc.resolve(s);if(G.valid(l))return l}return null}}}G.prototype.visible=!1;G.findFrom=G.findGapCursorFrom;I.jsonID("gapcursor",G);class qi{constructor(e){this.pos=e}map(e){return new qi(e.map(this.pos))}resolve(e){let t=e.resolve(this.pos);return G.valid(t)?new G(t):I.near(t)}}function eg(n){for(let e=n.depth;e>=0;e--){let t=n.index(e),r=n.node(e);if(t==0){if(r.type.spec.isolating)return!0;continue}for(let s=r.child(t-1);;s=s.lastChild){if(s.childCount==0&&!s.inlineContent||s.isAtom||s.type.spec.isolating)return!0;if(s.inlineContent)return!1}}return!0}function tg(n){for(let e=n.depth;e>=0;e--){let t=n.indexAfter(e),r=n.node(e);if(t==r.childCount){if(r.type.spec.isolating)return!0;continue}for(let s=r.child(t);;s=s.firstChild){if(s.childCount==0&&!s.inlineContent||s.isAtom||s.type.spec.isolating)return!0;if(s.inlineContent)return!1}}return!0}function ng(){return new Z({props:{decorations:og,createSelectionBetween(n,e,t){return e.pos==t.pos&&G.valid(t)?new G(t):null},handleClick:sg,handleKeyDown:rg,handleDOMEvents:{beforeinput:ig}}})}const rg=Ni({ArrowLeft:Un("horiz",-1),ArrowRight:Un("horiz",1),ArrowUp:Un("vert",-1),ArrowDown:Un("vert",1)});function Un(n,e){const t=n=="vert"?e>0?"down":"up":e>0?"right":"left";return function(r,s,i){let o=r.selection,l=e>0?o.$to:o.$from,a=o.empty;if(o instanceof D){if(!i.endOfTextblock(t)||l.depth==0)return!1;a=!1,l=r.doc.resolve(e>0?l.after():l.before())}let c=G.findGapCursorFrom(l,e,a);return c?(s&&s(r.tr.setSelection(new G(c))),!0):!1}}function sg(n,e,t){if(!n||!n.editable)return!1;let r=n.state.doc.resolve(e);if(!G.valid(r))return!1;let s=n.posAtCoords({left:t.clientX,top:t.clientY});return s&&s.inside>-1&&R.isSelectable(n.state.doc.nodeAt(s.inside))?!1:(n.dispatch(n.state.tr.setSelection(new G(r))),!0)}function ig(n,e){if(e.inputType!="insertCompositionText"||!(n.state.selection instanceof G))return!1;let{$from:t}=n.state.selection,r=t.parent.contentMatchAt(t.index()).findWrapping(n.state.schema.nodes.text);if(!r)return!1;let s=k.empty;for(let o=r.length-1;o>=0;o--)s=k.from(r[o].createAndFill(null,s));let i=n.state.tr.replace(t.pos,t.pos,new T(s,0,0));return i.setSelection(D.near(i.doc.resolve(t.pos+1))),n.dispatch(i),!1}function og(n){if(!(n.selection instanceof G))return null;let e=document.createElement("div");return e.className="ProseMirror-gapcursor",U.create(n.doc,[he.widget(n.selection.head,e,{key:"gapcursor"})])}const lg=ne.create({name:"gapCursor",addProseMirrorPlugins(){return[ng()]},extendNodeSchema(n){var e;const t={name:n.name,options:n.options,storage:n.storage};return{allowGapCursor:(e=z(E(n,"allowGapCursor",t)))!==null&&e!==void 0?e:null}}});var jr=200,ie=function(){};ie.prototype.append=function(e){return e.length?(e=ie.from(e),!this.length&&e||e.length=t?ie.empty:this.sliceInner(Math.max(0,e),Math.min(this.length,t))};ie.prototype.get=function(e){if(!(e<0||e>=this.length))return this.getInner(e)};ie.prototype.forEach=function(e,t,r){t===void 0&&(t=0),r===void 0&&(r=this.length),t<=r?this.forEachInner(e,t,r,0):this.forEachInvertedInner(e,t,r,0)};ie.prototype.map=function(e,t,r){t===void 0&&(t=0),r===void 0&&(r=this.length);var s=[];return this.forEach(function(i,o){return s.push(e(i,o))},t,r),s};ie.from=function(e){return e instanceof ie?e:e&&e.length?new xc(e):ie.empty};var xc=function(n){function e(r){n.call(this),this.values=r}n&&(e.__proto__=n),e.prototype=Object.create(n&&n.prototype),e.prototype.constructor=e;var t={length:{configurable:!0},depth:{configurable:!0}};return e.prototype.flatten=function(){return this.values},e.prototype.sliceInner=function(s,i){return s==0&&i==this.length?this:new e(this.values.slice(s,i))},e.prototype.getInner=function(s){return this.values[s]},e.prototype.forEachInner=function(s,i,o,l){for(var a=i;a=o;a--)if(s(this.values[a],l+a)===!1)return!1},e.prototype.leafAppend=function(s){if(this.length+s.length<=jr)return new e(this.values.concat(s.flatten()))},e.prototype.leafPrepend=function(s){if(this.length+s.length<=jr)return new e(s.flatten().concat(this.values))},t.length.get=function(){return this.values.length},t.depth.get=function(){return 0},Object.defineProperties(e.prototype,t),e}(ie);ie.empty=new xc([]);var ag=function(n){function e(t,r){n.call(this),this.left=t,this.right=r,this.length=t.length+r.length,this.depth=Math.max(t.depth,r.depth)+1}return n&&(e.__proto__=n),e.prototype=Object.create(n&&n.prototype),e.prototype.constructor=e,e.prototype.flatten=function(){return this.left.flatten().concat(this.right.flatten())},e.prototype.getInner=function(r){return rl&&this.right.forEachInner(r,Math.max(s-l,0),Math.min(this.length,i)-l,o+l)===!1)return!1},e.prototype.forEachInvertedInner=function(r,s,i,o){var l=this.left.length;if(s>l&&this.right.forEachInvertedInner(r,s-l,Math.max(i,l)-l,o+l)===!1||i=i?this.right.slice(r-i,s-i):this.left.slice(r,i).append(this.right.slice(0,s-i))},e.prototype.leafAppend=function(r){var s=this.right.leafAppend(r);if(s)return new e(this.left,s)},e.prototype.leafPrepend=function(r){var s=this.left.leafPrepend(r);if(s)return new e(s,this.right)},e.prototype.appendInner=function(r){return this.left.depth>=Math.max(this.right.depth,r.depth)+1?new e(this.left,new e(this.right,r)):new e(this,r)},e}(ie);const cg=500;class De{constructor(e,t){this.items=e,this.eventCount=t}popEvent(e,t){if(this.eventCount==0)return null;let r=this.items.length;for(;;r--)if(this.items.get(r-1).selection){--r;break}let s,i;t&&(s=this.remapping(r,this.items.length),i=s.maps.length);let o=e.tr,l,a,c=[],d=[];return this.items.forEach((u,f)=>{if(!u.step){s||(s=this.remapping(r,f+1),i=s.maps.length),i--,d.push(u);return}if(s){d.push(new ze(u.map));let h=u.step.map(s.slice(i)),p;h&&o.maybeStep(h).doc&&(p=o.mapping.maps[o.mapping.maps.length-1],c.push(new ze(p,void 0,void 0,c.length+d.length))),i--,p&&s.appendMap(p,i)}else o.maybeStep(u.step);if(u.selection)return l=s?u.selection.map(s.slice(i)):u.selection,a=new De(this.items.slice(0,r).append(d.reverse().concat(c)),this.eventCount-1),!1},this.items.length,0),{remaining:a,transform:o,selection:l}}addTransform(e,t,r,s){let i=[],o=this.eventCount,l=this.items,a=!s&&l.length?l.get(l.length-1):null;for(let d=0;dug&&(l=dg(l,c),o-=c),new De(l.append(i),o)}remapping(e,t){let r=new Sn;return this.items.forEach((s,i)=>{let o=s.mirrorOffset!=null&&i-s.mirrorOffset>=e?r.maps.length-s.mirrorOffset:void 0;r.appendMap(s.map,o)},e,t),r}addMaps(e){return this.eventCount==0?this:new De(this.items.append(e.map(t=>new ze(t))),this.eventCount)}rebased(e,t){if(!this.eventCount)return this;let r=[],s=Math.max(0,this.items.length-t),i=e.mapping,o=e.steps.length,l=this.eventCount;this.items.forEach(f=>{f.selection&&l--},s);let a=t;this.items.forEach(f=>{let h=i.getMirror(--a);if(h==null)return;o=Math.min(o,h);let p=i.maps[h];if(f.step){let m=e.steps[h].invert(e.docs[h]),g=f.selection&&f.selection.map(i.slice(a+1,h));g&&l++,r.push(new ze(p,m,g))}else r.push(new ze(p))},s);let c=[];for(let f=t;fcg&&(u=u.compress(this.items.length-r.length)),u}emptyItemCount(){let e=0;return this.items.forEach(t=>{t.step||e++}),e}compress(e=this.items.length){let t=this.remapping(0,e),r=t.maps.length,s=[],i=0;return this.items.forEach((o,l)=>{if(l>=e)s.push(o),o.selection&&i++;else if(o.step){let a=o.step.map(t.slice(r)),c=a&&a.getMap();if(r--,c&&t.appendMap(c,r),a){let d=o.selection&&o.selection.map(t.slice(r));d&&i++;let u=new ze(c.invert(),a,d),f,h=s.length-1;(f=s.length&&s[h].merge(u))?s[h]=f:s.push(u)}}else o.map&&r--},this.items.length,0),new De(ie.from(s.reverse()),i)}}De.empty=new De(ie.empty,0);function dg(n,e){let t;return n.forEach((r,s)=>{if(r.selection&&e--==0)return t=s,!1}),n.slice(t)}class ze{constructor(e,t,r,s){this.map=e,this.step=t,this.selection=r,this.mirrorOffset=s}merge(e){if(this.step&&e.step&&!e.selection){let t=e.step.merge(this.step);if(t)return new ze(t.getMap().invert(),t,this.selection)}}}class et{constructor(e,t,r,s,i){this.done=e,this.undone=t,this.prevRanges=r,this.prevTime=s,this.prevComposition=i}}const ug=20;function fg(n,e,t,r){let s=t.getMeta(Nt),i;if(s)return s.historyState;t.getMeta(mg)&&(n=new et(n.done,n.undone,null,0,-1));let o=t.getMeta("appendedTransaction");if(t.steps.length==0)return n;if(o&&o.getMeta(Nt))return o.getMeta(Nt).redo?new et(n.done.addTransform(t,void 0,r,tr(e)),n.undone,bl(t.mapping.maps),n.prevTime,n.prevComposition):new et(n.done,n.undone.addTransform(t,void 0,r,tr(e)),null,n.prevTime,n.prevComposition);if(t.getMeta("addToHistory")!==!1&&!(o&&o.getMeta("addToHistory")===!1)){let l=t.getMeta("composition"),a=n.prevTime==0||!o&&n.prevComposition!=l&&(n.prevTime<(t.time||0)-r.newGroupDelay||!hg(t,n.prevRanges)),c=o?Ds(n.prevRanges,t.mapping):bl(t.mapping.maps);return new et(n.done.addTransform(t,a?e.selection.getBookmark():void 0,r,tr(e)),De.empty,c,t.time,l??n.prevComposition)}else return(i=t.getMeta("rebased"))?new et(n.done.rebased(t,i),n.undone.rebased(t,i),Ds(n.prevRanges,t.mapping),n.prevTime,n.prevComposition):new et(n.done.addMaps(t.mapping.maps),n.undone.addMaps(t.mapping.maps),Ds(n.prevRanges,t.mapping),n.prevTime,n.prevComposition)}function hg(n,e){if(!e)return!1;if(!n.docChanged)return!0;let t=!1;return n.mapping.maps[0].forEach((r,s)=>{for(let i=0;i=e[i]&&(t=!0)}),t}function bl(n){let e=[];for(let t=n.length-1;t>=0&&e.length==0;t--)n[t].forEach((r,s,i,o)=>e.push(i,o));return e}function Ds(n,e){if(!n)return null;let t=[];for(let r=0;r{let s=Nt.getState(t);if(!s||(n?s.undone:s.done).eventCount==0)return!1;if(r){let i=pg(s,t,n);i&&r(e?i.scrollIntoView():i)}return!0}}const wc=Sc(!1,!0),Mc=Sc(!0,!0),yg=ne.create({name:"history",addOptions(){return{depth:100,newGroupDelay:500}},addCommands(){return{undo:()=>({state:n,dispatch:e})=>wc(n,e),redo:()=>({state:n,dispatch:e})=>Mc(n,e)}},addProseMirrorPlugins(){return[gg(this.options)]},addKeyboardShortcuts(){return{"Mod-z":()=>this.editor.commands.undo(),"Shift-Mod-z":()=>this.editor.commands.redo(),"Mod-y":()=>this.editor.commands.redo(),"Mod-я":()=>this.editor.commands.undo(),"Shift-Mod-я":()=>this.editor.commands.redo()}}}),bg=ne.create({name:"placeholder",addOptions(){return{emptyEditorClass:"is-editor-empty",emptyNodeClass:"is-empty",placeholder:"Write something …",showOnlyWhenEditable:!0,showOnlyCurrent:!0,includeChildren:!1}},addProseMirrorPlugins(){return[new Z({key:new le("placeholder"),props:{decorations:({doc:n,selection:e})=>{const t=this.editor.isEditable||!this.options.showOnlyWhenEditable,{anchor:r}=e,s=[];if(!t)return null;const i=this.editor.isEmpty;return n.descendants((o,l)=>{const a=r>=l&&r<=l+o.nodeSize,c=!o.isLeaf&&rs(o);if((a||!this.options.showOnlyCurrent)&&c){const d=[this.options.emptyNodeClass];i&&d.push(this.options.emptyEditorClass);const u=he.node(l,l+o.nodeSize,{class:d.join(" "),"data-placeholder":typeof this.options.placeholder=="function"?this.options.placeholder({editor:this.editor,node:o,pos:l,hasAnchor:a}):this.options.placeholder});s.push(u)}return this.options.includeChildren}),U.create(n,s)}}})]}}),kg=ne.create({name:"textAlign",addOptions(){return{types:[],alignments:["left","center","right","justify"],defaultAlignment:null}},addGlobalAttributes(){return[{types:this.options.types,attributes:{textAlign:{default:this.options.defaultAlignment,parseHTML:n=>{const e=n.style.textAlign;return this.options.alignments.includes(e)?e:this.options.defaultAlignment},renderHTML:n=>n.textAlign?{style:`text-align: ${n.textAlign}`}:{}}}}]},addCommands(){return{setTextAlign:n=>({commands:e})=>this.options.alignments.includes(n)?this.options.types.map(t=>e.updateAttributes(t,{textAlign:n})).every(t=>t):!1,unsetTextAlign:()=>({commands:n})=>this.options.types.map(e=>n.resetAttributes(e,"textAlign")).every(e=>e),toggleTextAlign:n=>({editor:e,commands:t})=>this.options.alignments.includes(n)?e.isActive({textAlign:n})?t.unsetTextAlign():t.setTextAlign(n):!1}},addKeyboardShortcuts(){return{"Mod-Shift-l":()=>this.editor.commands.setTextAlign("left"),"Mod-Shift-e":()=>this.editor.commands.setTextAlign("center"),"Mod-Shift-r":()=>this.editor.commands.setTextAlign("right"),"Mod-Shift-j":()=>this.editor.commands.setTextAlign("justify")}}}),Cg=/(?:^|\s)(==(?!\s+==)((?:[^=]+))==(?!\s+==))$/,xg=/(?:^|\s)(==(?!\s+==)((?:[^=]+))==(?!\s+==))/g,Sg=xe.create({name:"highlight",addOptions(){return{multicolor:!1,HTMLAttributes:{}}},addAttributes(){return this.options.multicolor?{color:{default:null,parseHTML:n=>n.getAttribute("data-color")||n.style.backgroundColor,renderHTML:n=>n.color?{"data-color":n.color,style:`background-color: ${n.color}; color: inherit`}:{}}}:{}},parseHTML(){return[{tag:"mark"}]},renderHTML({HTMLAttributes:n}){return["mark",W(this.options.HTMLAttributes,n),0]},addCommands(){return{setHighlight:n=>({commands:e})=>e.setMark(this.name,n),toggleHighlight:n=>({commands:e})=>e.toggleMark(this.name,n),unsetHighlight:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-Shift-h":()=>this.editor.commands.toggleHighlight()}},addInputRules(){return[Lt({find:Cg,type:this.type})]},addPasteRules(){return[ht({find:xg,type:this.type})]}}),wg=n=>{if(!n.children.length)return;const e=n.querySelectorAll("span");e&&e.forEach(t=>{var r,s;const i=t.getAttribute("style"),o=(s=(r=t.parentElement)===null||r===void 0?void 0:r.closest("span"))===null||s===void 0?void 0:s.getAttribute("style");t.setAttribute("style",`${o};${i}`)})},Mg=xe.create({name:"textStyle",priority:101,addOptions(){return{HTMLAttributes:{},mergeNestedSpanStyles:!1}},parseHTML(){return[{tag:"span",getAttrs:n=>n.hasAttribute("style")?(this.options.mergeNestedSpanStyles&&wg(n),{}):!1}]},renderHTML({HTMLAttributes:n}){return["span",W(this.options.HTMLAttributes,n),0]},addCommands(){return{removeEmptyTextStyle:()=>({tr:n})=>{const{selection:e}=n;return n.doc.nodesBetween(e.from,e.to,(t,r)=>{if(t.isTextblock)return!0;t.marks.filter(s=>s.type===this.type).some(s=>Object.values(s.attrs).some(i=>!!i))||n.removeMark(r,r+t.nodeSize,this.type)}),!0}}}}),Tg=ne.create({name:"color",addOptions(){return{types:["textStyle"]}},addGlobalAttributes(){return[{types:this.options.types,attributes:{color:{default:null,parseHTML:n=>{var e;return(e=n.style.color)===null||e===void 0?void 0:e.replace(/['"]+/g,"")},renderHTML:n=>n.color?{style:`color: ${n.color}`}:{}}}}]},addCommands(){return{setColor:n=>({chain:e})=>e().setMark("textStyle",{color:n}).run(),unsetColor:()=>({chain:n})=>n().setMark("textStyle",{color:null}).removeEmptyTextStyle().run()}}}),Eg=Q.create({name:"taskList",addOptions(){return{itemTypeName:"taskItem",HTMLAttributes:{}}},group:"block list",content(){return`${this.options.itemTypeName}+`},parseHTML(){return[{tag:`ul[data-type="${this.name}"]`,priority:51}]},renderHTML({HTMLAttributes:n}){return["ul",W(this.options.HTMLAttributes,n,{"data-type":this.name}),0]},addCommands(){return{toggleTaskList:()=>({commands:n})=>n.toggleList(this.name,this.options.itemTypeName)}},addKeyboardShortcuts(){return{"Mod-Shift-9":()=>this.editor.commands.toggleTaskList()}}}),Ag=/^\s*(\[([( |x])?\])\s$/,Og=Q.create({name:"taskItem",addOptions(){return{nested:!1,HTMLAttributes:{},taskListTypeName:"taskList",a11y:void 0}},content(){return this.options.nested?"paragraph block*":"paragraph+"},defining:!0,addAttributes(){return{checked:{default:!1,keepOnSplit:!1,parseHTML:n=>{const e=n.getAttribute("data-checked");return e===""||e==="true"},renderHTML:n=>({"data-checked":n.checked})}}},parseHTML(){return[{tag:`li[data-type="${this.name}"]`,priority:51}]},renderHTML({node:n,HTMLAttributes:e}){return["li",W(this.options.HTMLAttributes,e,{"data-type":this.name}),["label",["input",{type:"checkbox",checked:n.attrs.checked?"checked":null}],["span"]],["div",0]]},addKeyboardShortcuts(){const n={Enter:()=>this.editor.commands.splitListItem(this.name),"Shift-Tab":()=>this.editor.commands.liftListItem(this.name)};return this.options.nested?{...n,Tab:()=>this.editor.commands.sinkListItem(this.name)}:n},addNodeView(){return({node:n,HTMLAttributes:e,getPos:t,editor:r})=>{const s=document.createElement("li"),i=document.createElement("label"),o=document.createElement("span"),l=document.createElement("input"),a=document.createElement("div"),c=()=>{var d,u;l.ariaLabel=((u=(d=this.options.a11y)===null||d===void 0?void 0:d.checkboxLabel)===null||u===void 0?void 0:u.call(d,n,l.checked))||`Task item checkbox for ${n.textContent||"empty task item"}`};return c(),i.contentEditable="false",l.type="checkbox",l.addEventListener("mousedown",d=>d.preventDefault()),l.addEventListener("change",d=>{if(!r.isEditable&&!this.options.onReadOnlyChecked){l.checked=!l.checked;return}const{checked:u}=d.target;r.isEditable&&typeof t=="function"&&r.chain().focus(void 0,{scrollIntoView:!1}).command(({tr:f})=>{const h=t();if(typeof h!="number")return!1;const p=f.doc.nodeAt(h);return f.setNodeMarkup(h,void 0,{...p==null?void 0:p.attrs,checked:u}),!0}).run(),!r.isEditable&&this.options.onReadOnlyChecked&&(this.options.onReadOnlyChecked(n,u)||(l.checked=!l.checked))}),Object.entries(this.options.HTMLAttributes).forEach(([d,u])=>{s.setAttribute(d,u)}),s.dataset.checked=n.attrs.checked,l.checked=n.attrs.checked,i.append(l,o),s.append(i,a),Object.entries(e).forEach(([d,u])=>{s.setAttribute(d,u)}),{dom:s,contentDOM:a,update:d=>d.type!==this.type?!1:(s.dataset.checked=d.attrs.checked,l.checked=d.attrs.checked,c(),!0)}}},addInputRules(){return[Qt({find:Ag,type:this.type,getAttributes:n=>({checked:n[n.length-1]==="x"})})]}});var ci,di;if(typeof WeakMap<"u"){let n=new WeakMap;ci=e=>n.get(e),di=(e,t)=>(n.set(e,t),t)}else{const n=[];let t=0;ci=r=>{for(let s=0;s(t==10&&(t=0),n[t++]=r,n[t++]=s)}var Y=class{constructor(n,e,t,r){this.width=n,this.height=e,this.map=t,this.problems=r}findCell(n){for(let e=0;e=t){(i||(i=[])).push({type:"overlong_rowspan",pos:d,n:y-A});break}const L=s+A*e;for(let O=0;Or&&(i+=c.attrs.colspan)}}for(let o=0;o1&&(t=!0)}e==-1?e=i:e!=i&&(e=Math.max(e,i))}return e}function Rg(n,e,t){n.problems||(n.problems=[]);const r={};for(let s=0;s0;e--)if(n.node(e).type.spec.tableRole=="row")return n.node(0).resolve(n.before(e+1));return null}function Ig(n){for(let e=n.depth;e>0;e--){const t=n.node(e).type.spec.tableRole;if(t==="cell"||t==="header_cell")return n.node(e)}return null}function Ie(n){const e=n.selection.$head;for(let t=e.depth;t>0;t--)if(e.node(t).type.spec.tableRole=="row")return!0;return!1}function is(n){const e=n.selection;if("$anchorCell"in e&&e.$anchorCell)return e.$anchorCell.pos>e.$headCell.pos?e.$anchorCell:e.$headCell;if("node"in e&&e.node&&e.node.type.spec.tableRole=="cell")return e.$anchor;const t=en(e.$head)||Lg(e.$head);if(t)return t;throw new RangeError(`No cell found around position ${e.head}`)}function Lg(n){for(let e=n.nodeAfter,t=n.pos;e;e=e.firstChild,t++){const r=e.type.spec.tableRole;if(r=="cell"||r=="header_cell")return n.doc.resolve(t)}for(let e=n.nodeBefore,t=n.pos;e;e=e.lastChild,t--){const r=e.type.spec.tableRole;if(r=="cell"||r=="header_cell")return n.doc.resolve(t-e.nodeSize)}}function ui(n){return n.parent.type.spec.tableRole=="row"&&!!n.nodeAfter}function Pg(n){return n.node(0).resolve(n.pos+n.nodeAfter.nodeSize)}function Ji(n,e){return n.depth==e.depth&&n.pos>=e.start(-1)&&n.pos<=e.end(-1)}function Tc(n,e,t){const r=n.node(-1),s=Y.get(r),i=n.start(-1),o=s.nextCell(n.pos-i,e,t);return o==null?null:n.node(0).resolve(i+o)}function Pt(n,e,t=1){const r={...n,colspan:n.colspan-t};return r.colwidth&&(r.colwidth=r.colwidth.slice(),r.colwidth.splice(e,t),r.colwidth.some(s=>s>0)||(r.colwidth=null)),r}function Ec(n,e,t=1){const r={...n,colspan:n.colspan+t};if(r.colwidth){r.colwidth=r.colwidth.slice();for(let s=0;sd!=t.pos-i);a.unshift(t.pos-i);const c=a.map(d=>{const u=r.nodeAt(d);if(!u)throw RangeError(`No cell with offset ${d} found`);const f=i+d+1;return new ua(l.resolve(f),l.resolve(f+u.content.size))});super(c[0].$from,c[0].$to,c),this.$anchorCell=e,this.$headCell=t}map(e,t){const r=e.resolve(t.map(this.$anchorCell.pos)),s=e.resolve(t.map(this.$headCell.pos));if(ui(r)&&ui(s)&&Ji(r,s)){const i=this.$anchorCell.node(-1)!=r.node(-1);return i&&this.isRowSelection()?Ue.rowSelection(r,s):i&&this.isColSelection()?Ue.colSelection(r,s):new Ue(r,s)}return D.between(r,s)}content(){const e=this.$anchorCell.node(-1),t=Y.get(e),r=this.$anchorCell.start(-1),s=t.rectBetween(this.$anchorCell.pos-r,this.$headCell.pos-r),i={},o=[];for(let a=s.top;a0||g>0){let y=p.attrs;if(m>0&&(y=Pt(y,0,m)),g>0&&(y=Pt(y,y.colspan-g,g)),h.lefts.bottom){const y={...p.attrs,rowspan:Math.min(h.bottom,s.bottom)-Math.max(h.top,s.top)};h.top0)return!1;const r=e+this.$anchorCell.nodeAfter.attrs.rowspan,s=t+this.$headCell.nodeAfter.attrs.rowspan;return Math.max(r,s)==this.$headCell.node(-1).childCount}static colSelection(e,t=e){const r=e.node(-1),s=Y.get(r),i=e.start(-1),o=s.findCell(e.pos-i),l=s.findCell(t.pos-i),a=e.node(0);return o.top<=l.top?(o.top>0&&(e=a.resolve(i+s.map[o.left])),l.bottom0&&(t=a.resolve(i+s.map[l.left])),o.bottom0)return!1;const o=s+this.$anchorCell.nodeAfter.attrs.colspan,l=i+this.$headCell.nodeAfter.attrs.colspan;return Math.max(o,l)==t.width}eq(e){return e instanceof Ue&&e.$anchorCell.pos==this.$anchorCell.pos&&e.$headCell.pos==this.$headCell.pos}static rowSelection(e,t=e){const r=e.node(-1),s=Y.get(r),i=e.start(-1),o=s.findCell(e.pos-i),l=s.findCell(t.pos-i),a=e.node(0);return o.left<=l.left?(o.left>0&&(e=a.resolve(i+s.map[o.top*s.width])),l.right0&&(t=a.resolve(i+s.map[l.top*s.width])),o.right{e.push(he.node(r,r+t.nodeSize,{class:"selectedCell"}))}),U.create(n.doc,e)}function Fg({$from:n,$to:e}){if(n.pos==e.pos||n.pos=0&&!(n.after(s+1)=0&&!(e.before(i+1)>e.start(i));i--,r--);return t==r&&/row|table/.test(n.node(s).type.spec.tableRole)}function $g({$from:n,$to:e}){let t,r;for(let s=n.depth;s>0;s--){const i=n.node(s);if(i.type.spec.tableRole==="cell"||i.type.spec.tableRole==="header_cell"){t=i;break}}for(let s=e.depth;s>0;s--){const i=e.node(s);if(i.type.spec.tableRole==="cell"||i.type.spec.tableRole==="header_cell"){r=i;break}}return t!==r&&e.parentOffset===0}function Vg(n,e,t){const r=(e||n).selection,s=(e||n).doc;let i,o;if(r instanceof R&&(o=r.node.type.spec.tableRole)){if(o=="cell"||o=="header_cell")i=_.create(s,r.from);else if(o=="row"){const l=s.resolve(r.from+1);i=_.rowSelection(l,l)}else if(!t){const l=Y.get(r.node),a=r.from+1,c=a+l.map[l.width*l.height-1];i=_.create(s,a+1,c)}}else r instanceof D&&Fg(r)?i=D.create(s,r.from):r instanceof D&&$g(r)&&(i=D.create(s,r.$from.start(),r.$from.end()));return i&&(e||(e=n.tr)).setSelection(i),e}var Wg=new le("fix-tables");function Oc(n,e,t,r){const s=n.childCount,i=e.childCount;e:for(let o=0,l=0;o{s.type.spec.tableRole=="table"&&(t=jg(n,s,i,t))};return e?e.doc!=n.doc&&Oc(e.doc,n.doc,0,r):n.doc.descendants(r),t}function jg(n,e,t,r){const s=Y.get(e);if(!s.problems)return r;r||(r=n.tr);const i=[];for(let a=0;a0){let h="cell";d.firstChild&&(h=d.firstChild.type.spec.tableRole);const p=[];for(let g=0;g0?-1:0;zg(e,r,s+i)&&(i=s==0||s==e.width?null:0);for(let o=0;o0&&s0&&e.map[l-1]==a||s0?-1:0;Jg(e,r,s+a)&&(a=s==0||s==e.height?null:0);for(let c=0,d=e.width*s;c0&&s0&&u==e.map[d-e.width]){const f=t.nodeAt(u).attrs;n.setNodeMarkup(n.mapping.slice(l).map(u+r),null,{...f,rowspan:f.rowspan-1}),c+=f.colspan-1}else if(s0&&t[i]==t[i-1]||r.right0&&t[s]==t[s-n]||r.bottomt[r.type.spec.tableRole])(n,e)}function ey(n){return(e,t)=>{var r;const s=e.selection;let i,o;if(s instanceof _){if(s.$anchorCell.pos!=s.$headCell.pos)return!1;i=s.$anchorCell.nodeAfter,o=s.$anchorCell.pos}else{if(i=Ig(s.$from),!i)return!1;o=(r=en(s.$from))==null?void 0:r.pos}if(i==null||o==null||i.attrs.colspan==1&&i.attrs.rowspan==1)return!1;if(t){let l=i.attrs;const a=[],c=l.colwidth;l.rowspan>1&&(l={...l,rowspan:1}),l.colspan>1&&(l={...l,colspan:1});const d=$e(e),u=e.tr;for(let h=0;h{o.attrs[n]!==e&&i.setNodeMarkup(l,null,{...o.attrs,[n]:e})}):i.setNodeMarkup(s.pos,null,{...s.nodeAfter.attrs,[n]:e}),r(i)}return!0}}function ny(n){return function(e,t){if(!Ie(e))return!1;if(t){const r=pe(e.schema),s=$e(e),i=e.tr,o=s.map.cellsInRect(n=="column"?{left:s.left,top:0,right:s.right,bottom:s.map.height}:n=="row"?{left:0,top:s.top,right:s.map.width,bottom:s.bottom}:s),l=o.map(a=>s.table.nodeAt(a));for(let a=0;a{const p=h+i.tableStart,m=o.doc.nodeAt(p);m&&o.setNodeMarkup(p,f,m.attrs)}),r(o)}return!0}}Rn("row",{useDeprecatedLogic:!0});Rn("column",{useDeprecatedLogic:!0});var ry=Rn("cell",{useDeprecatedLogic:!0});function sy(n,e){if(e<0){const t=n.nodeBefore;if(t)return n.pos-t.nodeSize;for(let r=n.index(-1)-1,s=n.before();r>=0;r--){const i=n.node(-1).child(r),o=i.lastChild;if(o)return s-1-o.nodeSize;s-=i.nodeSize}}else{if(n.index()0;r--)if(t.node(r).type.spec.tableRole=="table")return e&&e(n.tr.delete(t.before(r),t.after(r)).scrollIntoView()),!0;return!1}function qn(n,e){const t=n.selection;if(!(t instanceof _))return!1;if(e){const r=n.tr,s=pe(n.schema).cell.createAndFill().content;t.forEachCell((i,o)=>{i.content.eq(s)||r.replace(r.mapping.map(o+1),r.mapping.map(o+i.nodeSize-1),new T(s,0,0))}),r.docChanged&&e(r)}return!0}function oy(n){if(!n.size)return null;let{content:e,openStart:t,openEnd:r}=n;for(;e.childCount==1&&(t>0&&r>0||e.child(0).type.spec.tableRole=="table");)t--,r--,e=e.child(0).content;const s=e.child(0),i=s.type.spec.tableRole,o=s.type.schema,l=[];if(i=="row")for(let a=0;a=0;o--){const{rowspan:l,colspan:a}=i.child(o).attrs;for(let c=s;c=e.length&&e.push(k.empty),t[s]r&&(f=f.type.createChecked(Pt(f.attrs,f.attrs.colspan,d+f.attrs.colspan-r),f.content)),c.push(f),d+=f.attrs.colspan;for(let h=1;hs&&(u=u.type.create({...u.attrs,rowspan:Math.max(1,s-u.attrs.rowspan)},u.content)),a.push(u)}i.push(k.from(a))}t=i,e=s}return{width:n,height:e,rows:t}}function cy(n,e,t,r,s,i,o){const l=n.doc.type.schema,a=pe(l);let c,d;if(s>e.width)for(let u=0,f=0;ue.height){const u=[];for(let p=0,m=(e.height-1)*e.width;p=e.width?!1:t.nodeAt(e.map[m+p]).type==a.header_cell;u.push(g?d||(d=a.header_cell.createAndFill()):c||(c=a.cell.createAndFill()))}const f=a.row.create(null,k.from(u)),h=[];for(let p=e.height;p{if(!s)return!1;const i=t.selection;if(i instanceof _)return nr(t,r,I.near(i.$headCell,e));if(n!="horiz"&&!i.empty)return!1;const o=Dc(s,n,e);if(o==null)return!1;if(n=="horiz")return nr(t,r,I.near(t.doc.resolve(i.head+e),e));{const l=t.doc.resolve(o),a=Tc(l,n,e);let c;return a?c=I.near(a,1):e<0?c=I.near(t.doc.resolve(l.before(-1)),-1):c=I.near(t.doc.resolve(l.after(-1)),1),nr(t,r,c)}}}function Gn(n,e){return(t,r,s)=>{if(!s)return!1;const i=t.selection;let o;if(i instanceof _)o=i;else{const a=Dc(s,n,e);if(a==null)return!1;o=new _(t.doc.resolve(a))}const l=Tc(o.$headCell,n,e);return l?nr(t,r,new _(o.$anchorCell,l)):!1}}function uy(n,e){const t=n.state.doc,r=en(t.resolve(e));return r?(n.dispatch(n.state.tr.setSelection(new _(r))),!0):!1}function fy(n,e,t){if(!Ie(n.state))return!1;let r=oy(t);const s=n.state.selection;if(s instanceof _){r||(r={width:1,height:1,rows:[k.from(fi(pe(n.state.schema).cell,t))]});const i=s.$anchorCell.node(-1),o=s.$anchorCell.start(-1),l=Y.get(i).rectBetween(s.$anchorCell.pos-o,s.$headCell.pos-o);return r=ay(r,l.right-l.left,l.bottom-l.top),Al(n.state,n.dispatch,o,l,r),!0}else if(r){const i=is(n.state),o=i.start(-1);return Al(n.state,n.dispatch,o,Y.get(i.node(-1)).findCell(i.pos-o),r),!0}else return!1}function hy(n,e){var t;if(e.ctrlKey||e.metaKey)return;const r=Ol(n,e.target);let s;if(e.shiftKey&&n.state.selection instanceof _)i(n.state.selection.$anchorCell,e),e.preventDefault();else if(e.shiftKey&&r&&(s=en(n.state.selection.$anchor))!=null&&((t=Ls(n,e))==null?void 0:t.pos)!=s.pos)i(s,e),e.preventDefault();else if(!r)return;function i(a,c){let d=Ls(n,c);const u=rt.getState(n.state)==null;if(!d||!Ji(a,d))if(u)d=a;else return;const f=new _(a,d);if(u||!n.state.selection.eq(f)){const h=n.state.tr.setSelection(f);u&&h.setMeta(rt,a.pos),n.dispatch(h)}}function o(){n.root.removeEventListener("mouseup",o),n.root.removeEventListener("dragstart",o),n.root.removeEventListener("mousemove",l),rt.getState(n.state)!=null&&n.dispatch(n.state.tr.setMeta(rt,-1))}function l(a){const c=a,d=rt.getState(n.state);let u;if(d!=null)u=n.state.doc.resolve(d);else if(Ol(n,c.target)!=r&&(u=Ls(n,e),!u))return o();u&&i(u,c)}n.root.addEventListener("mouseup",o),n.root.addEventListener("dragstart",o),n.root.addEventListener("mousemove",l)}function Dc(n,e,t){if(!(n.state.selection instanceof D))return null;const{$head:r}=n.state.selection;for(let s=r.depth-1;s>=0;s--){const i=r.node(s);if((t<0?r.index(s):r.indexAfter(s))!=(t<0?0:i.childCount))return null;if(i.type.spec.tableRole=="cell"||i.type.spec.tableRole=="header_cell"){const l=r.before(s),a=e=="vert"?t>0?"down":"up":t>0?"right":"left";return n.endOfTextblock(a)?l:null}}return null}function Ol(n,e){for(;e&&e!=n.dom;e=e.parentNode)if(e.nodeName=="TD"||e.nodeName=="TH")return e;return null}function Ls(n,e){const t=n.posAtCoords({left:e.clientX,top:e.clientY});return t&&t?en(n.state.doc.resolve(t.pos)):null}var py=class{constructor(e,t){this.node=e,this.defaultCellMinWidth=t,this.dom=document.createElement("div"),this.dom.className="tableWrapper",this.table=this.dom.appendChild(document.createElement("table")),this.table.style.setProperty("--default-cell-min-width",`${t}px`),this.colgroup=this.table.appendChild(document.createElement("colgroup")),hi(e,this.colgroup,this.table,t),this.contentDOM=this.table.appendChild(document.createElement("tbody"))}update(e){return e.type!=this.node.type?!1:(this.node=e,hi(e,this.colgroup,this.table,this.defaultCellMinWidth),!0)}ignoreMutation(e){return e.type=="attributes"&&(e.target==this.table||this.colgroup.contains(e.target))}};function hi(n,e,t,r,s,i){var o;let l=0,a=!0,c=e.firstChild;const d=n.firstChild;if(d){for(let u=0,f=0;unew r(f,t,h)),new gy(-1,!1)},apply(o,l){return l.apply(o)}},props:{attributes:o=>{const l=we.getState(o);return l&&l.activeHandle>-1?{class:"resize-cursor"}:{}},handleDOMEvents:{mousemove:(o,l)=>{yy(o,l,n,s)},mouseleave:o=>{by(o)},mousedown:(o,l)=>{ky(o,l,e,t)}},decorations:o=>{const l=we.getState(o);if(l&&l.activeHandle>-1)return My(o,l.activeHandle)},nodeViews:{}}});return i}var gy=class rr{constructor(e,t){this.activeHandle=e,this.dragging=t}apply(e){const t=this,r=e.getMeta(we);if(r&&r.setHandle!=null)return new rr(r.setHandle,!1);if(r&&r.setDragging!==void 0)return new rr(t.activeHandle,r.setDragging);if(t.activeHandle>-1&&e.docChanged){let s=e.mapping.map(t.activeHandle,-1);return ui(e.doc.resolve(s))||(s=-1),new rr(s,t.dragging)}return t}};function yy(n,e,t,r){if(!n.editable)return;const s=we.getState(n.state);if(s&&!s.dragging){const i=xy(e.target);let o=-1;if(i){const{left:l,right:a}=i.getBoundingClientRect();e.clientX-l<=t?o=Nl(n,e,"left",t):a-e.clientX<=t&&(o=Nl(n,e,"right",t))}if(o!=s.activeHandle){if(!r&&o!==-1){const l=n.state.doc.resolve(o),a=l.node(-1),c=Y.get(a),d=l.start(-1);if(c.colCount(l.pos-d)+l.nodeAfter.attrs.colspan-1==c.width-1)return}Ic(n,o)}}}function by(n){if(!n.editable)return;const e=we.getState(n.state);e&&e.activeHandle>-1&&!e.dragging&&Ic(n,-1)}function ky(n,e,t,r){var s;if(!n.editable)return!1;const i=(s=n.dom.ownerDocument.defaultView)!=null?s:window,o=we.getState(n.state);if(!o||o.activeHandle==-1||o.dragging)return!1;const l=n.state.doc.nodeAt(o.activeHandle),a=Cy(n,o.activeHandle,l.attrs);n.dispatch(n.state.tr.setMeta(we,{setDragging:{startX:e.clientX,startWidth:a}}));function c(u){i.removeEventListener("mouseup",c),i.removeEventListener("mousemove",d);const f=we.getState(n.state);f!=null&&f.dragging&&(Sy(n,f.activeHandle,vl(f.dragging,u,t)),n.dispatch(n.state.tr.setMeta(we,{setDragging:null})))}function d(u){if(!u.which)return c(u);const f=we.getState(n.state);if(f&&f.dragging){const h=vl(f.dragging,u,t);Rl(n,f.activeHandle,h,r)}}return Rl(n,o.activeHandle,a,r),i.addEventListener("mouseup",c),i.addEventListener("mousemove",d),e.preventDefault(),!0}function Cy(n,e,{colspan:t,colwidth:r}){const s=r&&r[r.length-1];if(s)return s;const i=n.domAtPos(e);let l=i.node.childNodes[i.offset].offsetWidth,a=t;if(r)for(let c=0;c{const r=n.nodes[t];r.spec.tableRole&&(e[r.spec.tableRole]=r)}),n.cached.tableNodeTypes=e,e}function Ny(n,e,t,r,s){const i=Oy(n),o=[],l=[];for(let c=0;c{const{selection:e}=n.state;if(!vy(e))return!1;let t=0;const r=dc(e.ranges[0].$from,i=>i.type.name==="table");return r==null||r.node.descendants(i=>{if(i.type.name==="table")return!1;["tableCell","tableHeader"].includes(i.type.name)&&(t+=1)}),t===e.ranges.length?(n.commands.deleteTable(),!0):!1},Ry=Q.create({name:"table",addOptions(){return{HTMLAttributes:{},resizable:!1,handleWidth:5,cellMinWidth:25,View:Ey,lastColumnResizable:!0,allowTableNodeSelection:!1}},content:"tableRow+",tableRole:"table",isolating:!0,group:"block",parseHTML(){return[{tag:"table"}]},renderHTML({node:n,HTMLAttributes:e}){const{colgroup:t,tableWidth:r,tableMinWidth:s}=Ay(n,this.options.cellMinWidth);return["table",W(this.options.HTMLAttributes,e,{style:r?`width: ${r}`:`min-width: ${s}`}),t,["tbody",0]]},addCommands(){return{insertTable:({rows:n=3,cols:e=3,withHeaderRow:t=!0}={})=>({tr:r,dispatch:s,editor:i})=>{const o=Ny(i.schema,n,e,t);if(s){const l=r.selection.from+1;r.replaceSelectionWith(o).scrollIntoView().setSelection(D.near(r.doc.resolve(l)))}return!0},addColumnBefore:()=>({state:n,dispatch:e})=>_g(n,e),addColumnAfter:()=>({state:n,dispatch:e})=>Kg(n,e),deleteColumn:()=>({state:n,dispatch:e})=>qg(n,e),addRowBefore:()=>({state:n,dispatch:e})=>Gg(n,e),addRowAfter:()=>({state:n,dispatch:e})=>Yg(n,e),deleteRow:()=>({state:n,dispatch:e})=>Qg(n,e),deleteTable:()=>({state:n,dispatch:e})=>iy(n,e),mergeCells:()=>({state:n,dispatch:e})=>xl(n,e),splitCell:()=>({state:n,dispatch:e})=>Sl(n,e),toggleHeaderColumn:()=>({state:n,dispatch:e})=>Rn("column")(n,e),toggleHeaderRow:()=>({state:n,dispatch:e})=>Rn("row")(n,e),toggleHeaderCell:()=>({state:n,dispatch:e})=>ry(n,e),mergeOrSplit:()=>({state:n,dispatch:e})=>xl(n,e)?!0:Sl(n,e),setCellAttribute:(n,e)=>({state:t,dispatch:r})=>ty(n,e)(t,r),goToNextCell:()=>({state:n,dispatch:e})=>Ml(1)(n,e),goToPreviousCell:()=>({state:n,dispatch:e})=>Ml(-1)(n,e),fixTables:()=>({state:n,dispatch:e})=>(e&&Nc(n),!0),setCellSelection:n=>({tr:e,dispatch:t})=>{if(t){const r=_.create(e.doc,n.anchorCell,n.headCell);e.setSelection(r)}return!0}}},addKeyboardShortcuts(){return{Tab:()=>this.editor.commands.goToNextCell()?!0:this.editor.can().addRowAfter()?this.editor.chain().addRowAfter().goToNextCell().run():!1,"Shift-Tab":()=>this.editor.commands.goToPreviousCell(),Backspace:Yn,"Mod-Backspace":Yn,Delete:Yn,"Mod-Delete":Yn}},addProseMirrorPlugins(){return[...this.options.resizable&&this.editor.isEditable?[my({handleWidth:this.options.handleWidth,cellMinWidth:this.options.cellMinWidth,defaultCellMinWidth:this.options.cellMinWidth,View:this.options.View,lastColumnResizable:this.options.lastColumnResizable})]:[],Ty({allowTableNodeSelection:this.options.allowTableNodeSelection})]},extendNodeSchema(n){const e={name:n.name,options:n.options,storage:n.storage};return{tableRole:z(E(n,"tableRole",e))}}}),Dy=Q.create({name:"tableRow",addOptions(){return{HTMLAttributes:{}}},content:"(tableCell | tableHeader)*",tableRole:"row",parseHTML(){return[{tag:"tr"}]},renderHTML({HTMLAttributes:n}){return["tr",W(this.options.HTMLAttributes,n),0]}}),Iy=Q.create({name:"tableCell",addOptions(){return{HTMLAttributes:{}}},content:"block+",addAttributes(){return{colspan:{default:1},rowspan:{default:1},colwidth:{default:null,parseHTML:n=>{const e=n.getAttribute("colwidth");return e?e.split(",").map(r=>parseInt(r,10)):null}}}},tableRole:"cell",isolating:!0,parseHTML(){return[{tag:"td"}]},renderHTML({HTMLAttributes:n}){return["td",W(this.options.HTMLAttributes,n),0]}}),Ly=Q.create({name:"tableHeader",addOptions(){return{HTMLAttributes:{}}},content:"block+",addAttributes(){return{colspan:{default:1},rowspan:{default:1},colwidth:{default:null,parseHTML:n=>{const e=n.getAttribute("colwidth");return e?e.split(",").map(r=>parseInt(r,10)):null}}}},tableRole:"header_cell",isolating:!0,parseHTML(){return[{tag:"th"}]},renderHTML({HTMLAttributes:n}){return["th",W(this.options.HTMLAttributes,n),0]}}),Py=ne.create({name:"characterCount",addOptions(){return{limit:null,mode:"textSize",textCounter:n=>n.length,wordCounter:n=>n.split(" ").filter(e=>e!=="").length}},addStorage(){return{characters:()=>0,words:()=>0}},onBeforeCreate(){this.storage.characters=n=>{const e=(n==null?void 0:n.node)||this.editor.state.doc;if(((n==null?void 0:n.mode)||this.options.mode)==="textSize"){const r=e.textBetween(0,e.content.size,void 0," ");return this.options.textCounter(r)}return e.nodeSize},this.storage.words=n=>{const e=(n==null?void 0:n.node)||this.editor.state.doc,t=e.textBetween(0,e.content.size," "," ");return this.options.wordCounter(t)}},addProseMirrorPlugins(){let n=!1;return[new Z({key:new le("characterCount"),appendTransaction:(e,t,r)=>{if(n)return;const s=this.options.limit;if(s==null||s===0){n=!0;return}const i=this.storage.characters({node:r.doc});if(i>s){const o=i-s,l=0,a=o;console.warn(`[CharacterCount] Initial content exceeded limit of ${s} characters. Content was automatically trimmed.`);const c=r.tr.deleteRange(l,a);return n=!0,c}n=!0},filterTransaction:(e,t)=>{const r=this.options.limit;if(!e.docChanged||r===0||r===null||r===void 0)return!0;const s=this.storage.characters({node:t.doc}),i=this.storage.characters({node:e.doc});if(i<=r||s>r&&i>r&&i<=s)return!0;if(s>r&&i>r&&i>s||!e.getMeta("paste"))return!1;const l=e.selection.$head.pos,a=i-r,c=l-a,d=l;return e.deleteRange(c,d),!(this.storage.characters({node:e.doc})>r)}})]}}),zy=xe.create({name:"subscript",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"sub"},{style:"vertical-align",getAttrs(n){return n!=="sub"?!1:null}}]},renderHTML({HTMLAttributes:n}){return["sub",W(this.options.HTMLAttributes,n),0]},addCommands(){return{setSubscript:()=>({commands:n})=>n.setMark(this.name),toggleSubscript:()=>({commands:n})=>n.toggleMark(this.name),unsetSubscript:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-,":()=>this.editor.commands.toggleSubscript()}}}),By=xe.create({name:"superscript",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"sup"},{style:"vertical-align",getAttrs(n){return n!=="super"?!1:null}}]},renderHTML({HTMLAttributes:n}){return["sup",W(this.options.HTMLAttributes,n),0]},addCommands(){return{setSuperscript:()=>({commands:n})=>n.setMark(this.name),toggleSuperscript:()=>({commands:n})=>n.toggleMark(this.name),unsetSuperscript:()=>({commands:n})=>n.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-.":()=>this.editor.commands.toggleSuperscript()}}}),Hy=Q.create({name:"imageResizable",group:"block",draggable:!0,selectable:!0,addAttributes(){return{src:{default:null},alt:{default:null},title:{default:null},width:{default:300},height:{default:200},textAlign:{default:"left"}}},parseHTML(){return[{tag:'div[data-type="imageResizable"]'}]},renderHTML({HTMLAttributes:n}){const e=n.textAlign==="center"?"margin:0 auto;":n.textAlign==="right"?"margin-left:auto;":"";return["div",W(n,{"data-type":"imageResizable","data-text-align":n.textAlign||"left",style:`display:block;position:relative;width:${n.width}px;height:${n.height}px;${e}`}),["img",{src:n.src,alt:n.alt,title:n.title,style:"width:100%;height:100%;display:block;object-fit:contain;"}]]},addNodeView(){return({node:n,getPos:e,editor:t})=>{const r=document.createElement("div");r.setAttribute("data-type","imageResizable"),r.setAttribute("data-text-align",n.attrs.textAlign||"left"),r.style.position="relative",r.style.display="block",r.style.width=(n.attrs.width||300)+"px",r.style.height=(n.attrs.height||200)+"px",r.style.userSelect="none",n.attrs.textAlign==="center"?r.style.margin="0 auto":n.attrs.textAlign==="right"?r.style.marginLeft="auto":(r.style.marginLeft="0",r.style.marginRight="auto");const s=document.createElement("img");s.src=n.attrs.src,s.alt=n.attrs.alt||"",s.title=n.attrs.title||"",s.style.width="100%",s.style.height="100%",s.style.display="block",s.style.objectFit="contain",s.style.pointerEvents="none",r.appendChild(s);const i=document.createElement("div");i.style.position="absolute",i.style.right="0",i.style.bottom="0",i.style.width="20px",i.style.height="20px",i.style.background="#1fc76f",i.style.cursor="se-resize",i.style.borderRadius="50%",i.style.boxShadow="0 0 2px #1fc76f",i.style.zIndex="2",i.style.touchAction="none",i.className="image-resize-handle",r.appendChild(i);let o=!1,l=0,a=0,c=0,d=0;const u=p=>{p.type&&String(p.type).startsWith("touch")||p.preventDefault(),p.stopPropagation(),o=!0;const g=p.clientX||(p.touches&&p.touches[0]?p.touches[0].clientX:0),y=p.clientY||(p.touches&&p.touches[0]?p.touches[0].clientY:0);l=g,a=y,c=parseInt(r.style.width)||n.attrs.width||300,d=parseInt(r.style.height)||n.attrs.height||200,t.view.focus(),document.addEventListener("mousemove",f),document.addEventListener("mouseup",h),document.addEventListener("touchmove",f,{passive:!0}),document.addEventListener("touchend",h,{passive:!0})},f=p=>{if(!o)return;p.type&&String(p.type).startsWith("touch")||p.preventDefault(),p.stopPropagation();const g=p.clientX||(p.touches&&p.touches[0]?p.touches[0].clientX:0),y=p.clientY||(p.touches&&p.touches[0]?p.touches[0].clientY:0),M=g-l,A=y-a,L=Math.max(c+M,50),O=Math.max(d+A,30);r.style.width=L+"px",r.style.height=O+"px",t.commands.command(({tr:B})=>(B.setNodeMarkup(e(),void 0,{...n.attrs,width:L,height:O}),!0))},h=p=>{p.type&&String(p.type).startsWith("touch")||p.preventDefault(),p.stopPropagation(),o=!1,document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",h),document.removeEventListener("touchmove",f),document.removeEventListener("touchend",h)};return i.addEventListener("mousedown",p=>{p.stopPropagation(),u(p)}),i.addEventListener("touchstart",p=>{p.stopPropagation(),u(p)},{passive:!0}),{dom:r,contentDOM:null,update:p=>p.type.name!=="imageResizable"?!1:(s.src=p.attrs.src,r.style.width=(p.attrs.width||300)+"px",r.style.height=(p.attrs.height||200)+"px",r.setAttribute("data-text-align",p.attrs.textAlign||"left"),p.attrs.textAlign==="center"?(r.style.margin="0 auto",r.style.marginLeft="auto",r.style.marginRight="auto"):p.attrs.textAlign==="right"?(r.style.margin="0",r.style.marginLeft="auto",r.style.marginRight="0"):(r.style.margin="0",r.style.marginLeft="0",r.style.marginRight="auto"),!0),destroy:()=>{document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",h),document.removeEventListener("touchmove",f),document.removeEventListener("touchend",h)}}}}}),Fy={class:"field-label"},$y={key:0,class:"required"},Vy={class:"jeditor-control"},Ky=Lc({__name:"Jeditor",props:{df:{},modelValue:{},disabled:{type:Boolean},record:{},canEdit:{type:Boolean},ctx:{}},emits:["update:modelValue","onSave"],setup(n,{emit:e}){const t=n,r=Pc(()=>t.df.label_layout||"vertical"),s=e,i=zc(null);let o=null,l=!1,a=null;const c=Q.create({name:"customDiv",group:"block",content:"block*",addAttributes(){return{class:{default:null,parseHTML:S=>S.getAttribute("class"),renderHTML:S=>S.class?{class:S.class}:{}},style:{default:null,parseHTML:S=>S.getAttribute("style"),renderHTML:S=>S.style?{style:S.style}:{}},id:{default:null,parseHTML:S=>S.getAttribute("id"),renderHTML:S=>S.id?{id:S.id}:{}}}},parseHTML(){return[{tag:"div"}]},renderHTML({HTMLAttributes:S}){return["div",S,0]}}),d=ne.create({name:"fontSize",addGlobalAttributes(){return[{types:["textStyle"],attributes:{fontSize:{default:null,parseHTML:S=>S.style.fontSize||null,renderHTML:S=>S.fontSize?{style:`font-size: ${S.fontSize}`}:{}}}}]}});if(!document.getElementById("material-symbols-font")){const S=document.createElement("link");S.id="material-symbols-font",S.rel="stylesheet",S.href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined",document.head.appendChild(S)}function u(S){const x=document.createElement("span");return x.className="material-symbols-outlined",x.textContent=S,x}function f(){const S=document.createElement("span");return S.className="tiptap-toolbar-divider",S}function h(S,x,w){const b=document.createElement("button");return b.type="button",b.className="tiptap-toolbar-btn",b.title=S,b.appendChild(u(x)),b.addEventListener("mousedown",v=>{v.preventDefault(),w()}),b}function p(S,x,w){const b=document.createElement("div");b.className="tiptap-toolbar-dropdown";const v=document.createElement("button");v.type="button",v.className="tiptap-toolbar-btn",v.title=S,v.appendChild(u(x));const F=document.createElement("span");F.className="tiptap-toolbar-caret",F.textContent="",b.appendChild(v);const q=document.createElement("div");return q.className="tiptap-toolbar-dropdown-menu",w.forEach(V=>{const $=document.createElement("div");$.className="tiptap-toolbar-dropdown-item",$.textContent=V.label,$.onmousedown=Me=>{Me.preventDefault(),V.onClick(),q.style.display="none"},q.appendChild($)}),v.onmousedown=V=>{V.preventDefault(),q.style.display=q.style.display==="block"?"none":"block"},document.addEventListener("mousedown",V=>{b.contains(V.target)||(q.style.display="none")}),v.appendChild(F),b.appendChild(q),b}function m(){document.querySelectorAll(".tiptap-link-panel, .tiptap-image-panel, .tiptap-color-panel, .tiptap-highlight-panel").forEach(S=>S.remove())}function g(S,x,w){m();const b=document.createElement("div");b.className="tiptap-link-panel",b.style.position="absolute",b.style.zIndex="20",b.style.background="#fff",b.style.border="1px solid #eee",b.style.borderRadius="8px",b.style.boxShadow="0 2px 8px rgba(0,0,0,0.08)",b.style.padding="8px",b.style.display="flex",b.style.gap="6px";const v=document.createElement("input");v.type="text",v.placeholder="https://...",v.style.width="240px";const F=document.createElement("button");F.textContent="应用",F.className="tiptap-toolbar-btn",F.onmousedown=Me=>{Me.preventDefault();const X=v.value.trim();X&&w.chain().focus().setLink({href:X}).run(),b.remove()},b.appendChild(v),b.appendChild(F);const V=x.currentTarget.getBoundingClientRect(),$=S.getBoundingClientRect();b.style.left=`${V.left-$.left}px`,b.style.top=`${V.bottom-$.top+4}px`,S.appendChild(b)}function y(S,x,w){m();const b=document.createElement("div");b.className="tiptap-image-panel",b.style.position="absolute",b.style.zIndex="20",b.style.background="#fff",b.style.border="1px solid #eee",b.style.borderRadius="8px",b.style.boxShadow="0 2px 8px rgba(0,0,0,0.08)",b.style.padding="8px",b.style.display="flex",b.style.gap="6px",b.style.alignItems="center";const v=document.createElement("button");v.innerHTML='cloud_upload',v.className="tiptap-toolbar-btn",v.title="上传图片",v.style.padding="6px";const F=document.createElement("input");F.type="file",F.accept="image/*",F.style.display="none",v.onmousedown=Ve=>{Ve.preventDefault(),F.click()},F.onchange=async Ve=>{var Gi;const nn=(Gi=Ve.target.files)==null?void 0:Gi[0];if(nn)try{v.innerHTML='hourglass_empty',v.disabled=!0;const Bt=await jc(nn);Bt.success&&Bt.file_url?(w.chain().focus().insertContent({type:"imageResizable",attrs:{src:Bt.file_url}}).run(),b.remove(),s("update:modelValue",w.getHTML()),s("onSave")):(alert(Bt.error||"上传失败"),v.innerHTML='cloud_upload',v.disabled=!1)}catch(Bt){console.error("Upload error:",Bt),alert("上传失败"),v.innerHTML='cloud_upload',v.disabled=!1}};const q=document.createElement("input");q.type="text",q.placeholder="图片地址 https://...",q.style.width="200px",q.style.flex="1";const V=document.createElement("button");V.textContent="插入",V.className="tiptap-toolbar-btn",V.onmousedown=Ve=>{Ve.preventDefault();const nn=q.value.trim();nn&&(w.chain().focus().insertContent({type:"imageResizable",attrs:{src:nn}}).run(),b.remove(),s("update:modelValue",w.getHTML()),s("onSave"))},b.appendChild(v),b.appendChild(F),b.appendChild(q),b.appendChild(V);const Me=x.currentTarget.getBoundingClientRect(),X=S.getBoundingClientRect();b.style.left=`${Me.left-X.left}px`,b.style.top=`${Me.bottom-X.top+4}px`,S.appendChild(b)}function M(S,x,w){m();const b=document.createElement("div");b.className="tiptap-color-panel",b.style.position="absolute",b.style.zIndex="20",b.style.background="#fff",b.style.border="1px solid #eee",b.style.borderRadius="8px",b.style.boxShadow="0 2px 8px rgba(0,0,0,0.08)",b.style.padding="8px";const v=["#000000","#262626","#595959","#8c8c8c","#bfbfbf","#d9d9d9","#f0f0f0","#ffffff","#f5222d","#fa8c16","#fadb14","#52c41a","#13c2c2","#1890ff","#722ed1","#eb2f96"],F=document.createElement("div");F.style.display="flex",F.style.flexWrap="wrap",F.style.gap="4px",v.forEach(Me=>{const X=document.createElement("div");X.style.width="20px",X.style.height="20px",X.style.border="1px solid #eee",X.style.borderRadius="4px",X.style.background=Me,X.onmousedown=Ve=>{Ve.preventDefault(),w.chain().focus().setColor(Me).run(),b.remove()},F.appendChild(X)}),b.appendChild(F);const V=x.currentTarget.getBoundingClientRect(),$=S.getBoundingClientRect();b.style.left=`${V.left-$.left}px`,b.style.top=`${V.bottom-$.top+4}px`,S.appendChild(b)}function A(S,x,w){m();const b=document.createElement("div");b.className="tiptap-highlight-panel",b.style.position="absolute",b.style.zIndex="20",b.style.background="#fff",b.style.border="1px solid #eee",b.style.borderRadius="8px",b.style.boxShadow="0 2px 8px rgba(0,0,0,0.08)",b.style.padding="8px";const v=["#fffbe6","#ffe7ba","#ffd591","#ffc069","#ffbb96","#ff9c6e","#ff7875","#eaff8f","#b7eb8f","#87e8de","#91d5ff"],F=document.createElement("div");F.style.display="flex",F.style.flexWrap="wrap",F.style.gap="4px",v.forEach(Me=>{const X=document.createElement("div");X.style.width="20px",X.style.height="20px",X.style.border="1px solid #eee",X.style.borderRadius="4px",X.style.background=Me,X.onmousedown=Ve=>{Ve.preventDefault(),w.chain().focus().setHighlight({color:Me}).run(),b.remove()},F.appendChild(X)}),b.appendChild(F);const V=x.currentTarget.getBoundingClientRect(),$=S.getBoundingClientRect();b.style.left=`${V.left-$.left}px`,b.style.top=`${V.bottom-$.top+4}px`,S.appendChild(b)}let L=!1;function O(S){L||(L=!0,document.addEventListener("mousedown",x=>{const w=x.target,b=!!w.closest(".tiptap-link-panel, .tiptap-image-panel, .tiptap-color-panel, .tiptap-highlight-panel"),v=!!w.closest(".tiptap-toolbar-btn");!b&&!v&&m()}),document.addEventListener("keydown",x=>{x.key==="Escape"&&m()}))}function B(S,x,w,b){const v=document.querySelector(`.tiptap-${b}-panel`);if(v){v.remove();return}switch(b){case"link":g(S,x,w);break;case"image":y(S,x,w);break;case"color":M(S,x,w);break;case"highlight":A(S,x,w);break}}function N(S,x){var v,F,q,V;const w=document.createElement("div");w.className="tiptap-toolbar",w.appendChild(p("标题","format_paragraph",[{label:"标题1",onClick:()=>x.chain().focus().toggleHeading({level:1}).run()},{label:"标题2",onClick:()=>x.chain().focus().toggleHeading({level:2}).run()},{label:"标题3",onClick:()=>x.chain().focus().toggleHeading({level:3}).run()},{label:"标题4",onClick:()=>x.chain().focus().toggleHeading({level:4}).run()},{label:"标题5",onClick:()=>x.chain().focus().toggleHeading({level:5}).run()},{label:"标题6",onClick:()=>x.chain().focus().toggleHeading({level:6}).run()},{label:"正文",onClick:()=>x.chain().focus().setParagraph().run()}])),w.appendChild(p("字号","format_size",[...[8,10,12,14,16,18,20,24,28,32,36,48,64].map($=>({label:`${$}px`,onClick:()=>x.chain().focus().setMark("textStyle",{fontSize:`${$}px`}).run()})),{label:"重置",onClick:()=>x.chain().focus().unsetMark("textStyle",{extendEmptyMarkRange:!0}).run()}])),w.appendChild(f()),w.appendChild(p("表格","table",[{label:"插入表格",onClick:()=>x.chain().focus().insertTable({rows:3,cols:3,withHeaderRow:!0}).run()},{label:"删除表格",onClick:()=>x.chain().focus().deleteTable().run()},{label:"插入行(下)",onClick:()=>x.chain().focus().addRowAfter().run()},{label:"插入列(右)",onClick:()=>x.chain().focus().addColumnAfter().run()},{label:"删除行",onClick:()=>x.chain().focus().deleteRow().run()},{label:"删除列",onClick:()=>x.chain().focus().deleteColumn().run()}])),w.appendChild(p("对齐","format_align_left",[{label:"左对齐",onClick:()=>x.chain().focus().setTextAlign("left").run()},{label:"居中",onClick:()=>x.chain().focus().setTextAlign("center").run()},{label:"右对齐",onClick:()=>x.chain().focus().setTextAlign("right").run()}])),w.appendChild(f()),w.appendChild(h("加粗","format_bold",()=>x.chain().focus().toggleBold().run())),w.appendChild(h("斜体","format_italic",()=>x.chain().focus().toggleItalic().run())),w.appendChild(h("下划线","format_underlined",()=>x.chain().focus().toggleUnderline().run())),w.appendChild(h("删除线","strikethrough_s",()=>x.chain().focus().toggleStrike().run())),w.appendChild(h("行内代码","code",()=>x.chain().focus().toggleCode().run())),w.appendChild(f()),w.appendChild(h("代码块","data_object",()=>x.chain().focus().toggleCodeBlock().run())),w.appendChild(h("引用","format_quote",()=>x.chain().focus().toggleBlockquote().run())),w.appendChild(h("下标","subscript",()=>x.chain().focus().toggleSubscript().run())),w.appendChild(h("上标","superscript",()=>x.chain().focus().toggleSuperscript().run())),w.appendChild(f()),w.appendChild(h("无序列表","format_list_bulleted",()=>x.chain().focus().toggleBulletList().run())),w.appendChild(h("有序列表","format_list_numbered",()=>x.chain().focus().toggleOrderedList().run())),w.appendChild(h("任务列表","checklist",()=>x.chain().focus().toggleTaskList().run())),w.appendChild(f()),w.appendChild(h("链接","link",()=>{})),(v=w.lastElementChild)==null||v.addEventListener("mousedown",$=>{$.preventDefault(),B(w,$,x,"link")}),w.appendChild(h("图片","image",()=>{})),(F=w.lastElementChild)==null||F.addEventListener("mousedown",$=>{$.preventDefault(),B(w,$,x,"image")}),w.appendChild(h("分割线","horizontal_rule",()=>x.chain().focus().setHorizontalRule().run())),w.appendChild(f()),w.appendChild(h("文字颜色","format_color_text",()=>{})),(q=w.lastElementChild)==null||q.addEventListener("mousedown",$=>{$.preventDefault(),B(w,$,x,"color")}),w.appendChild(h("背景色","format_color_fill",()=>{})),(V=w.lastElementChild)==null||V.addEventListener("mousedown",$=>{$.preventDefault(),B(w,$,x,"highlight")}),w.appendChild(f()),w.appendChild(h("撤销","undo",()=>x.chain().focus().undo().run())),w.appendChild(h("重做","redo",()=>x.chain().focus().redo().run())),w.appendChild(f());const b=h("显示源代码","code_blocks",()=>{H()});w.appendChild(b),S.appendChild(w)}function H(){if(o)if(l){const S=(a==null?void 0:a.value)||"";o.commands.setContent(S);const x=i.value.querySelector(".jeditor");a&&(a.remove(),a=null),x&&(x.style.display=""),l=!1}else{const S=o.getHTML(),x=i.value.querySelector(".jeditor");if(x){const w=x.offsetHeight,b=document.createElement("textarea");b.className="jeditor-source-textarea",b.style.width="100%",b.style.height=`${w}px`,b.style.fontFamily='"SF Mono", "Monaco", "Inconsolata", "Roboto Mono", "Source Code Pro", monospace',b.style.fontSize="13px",b.style.lineHeight="1.6",b.style.padding="16px",b.style.border="none",b.style.borderRadius="8px",b.style.backgroundColor="#fafbfc",b.style.color="#24292e",b.style.whiteSpace="pre-wrap",b.style.wordWrap="break-word",b.style.resize="none",b.style.outline="none",b.style.boxShadow="inset 0 1px 3px rgba(0,0,0,0.1)",b.style.transition="all 0.2s ease",b.style.boxSizing="border-box",ee(S).then(v=>{b.value=v}),x.style.display="none",x.insertAdjacentElement("afterend",b),a=b,l=!0}}}async function ee(S){if(!S)return"";try{const x=await Zi(()=>import("./standalone-1395808e.js"),[]),w=await Zi(()=>import("./html-5c473a5b.js").then(v=>v.h),["assets/html-5c473a5b.js","assets/_commonjsHelpers-de833af9.js"]);return await x.format(S,{parser:"html",plugins:[w],printWidth:120,tabWidth:2,useTabs:!1,htmlWhitespaceSensitivity:"ignore",bracketSameLine:!1,singleAttributePerLine:!1})}catch(x){return console.warn("Prettier formatting failed, using simple formatting:",x),yt(S)}}function yt(S){if(!S)return"";const w=S.replace(/> +<`).split(` +`);let b=0;const v=2;return w.map(q=>{const V=q.trim();if(!V)return"";V.match(/^<\/[^>]+>$/)&&(b=Math.max(0,b-1));const $=" ".repeat(b*v)+V;return V.match(/^<[^/][^>]*[^/]>$/)&&!V.match(/^<[^>]*\/>$/)&&b++,$}).join(` +`)}function Pn(){var w,b;if(!i.value)return;i.value.innerHTML="";const S=document.createElement("div"),x=document.createElement("div");x.className="jeditor",i.value.appendChild(S),i.value.appendChild(x),o=new Kp({element:x,content:t.modelValue||"",editable:!t.disabled,extensions:[Jp.extend({content:"(paragraph | heading | blockquote | codeBlock | horizontalRule | customDiv | table | bulletList | orderedList | taskList)+"}),c,Gp,Yp,tm,om,lm,dm,um,pm,ym,km,xm,Sm,Mm,Gm.configure({openOnClick:!1}),Hy,Ym,Zm,lg,yg,bg.configure({placeholder:((w=t.df)==null?void 0:w.label)||((b=t.df)==null?void 0:b.fieldname)||"请输入内容..."}),kg.configure({types:["heading","paragraph","imageResizable"]}),Tg,Mg,d,Sg.configure({multicolor:!0}),Eg,Og,Ry.configure({resizable:!0}),Dy,Ly,Iy,Py,zy,By],onUpdate:({editor:v})=>{s("update:modelValue",v.getHTML())}}),N(S,o),O()}function tn(){try{o&&o.destroy()}catch{}o=null}return Bc(()=>{Pn()}),Hc(()=>{tn()}),Yi(()=>t.modelValue,S=>{if(!o)return;const x=S||"";x!==o.getHTML()&&o.commands.setContent(x,!1)}),Yi(()=>t.disabled,S=>{o&&o.setEditable(!S)}),(S,x)=>{var w;return Qi(),Xi("div",{class:Wc(["field-wrapper",`layout-${r.value}`])},[ls("label",Fy,[Fc($c((w=S.ctx)!=null&&w.t?S.ctx.t(S.df.label||S.df.fieldname):S.df.label||S.df.fieldname)+" ",1),S.df.reqd?(Qi(),Xi("span",$y,"*")):Vc("",!0)]),ls("div",Vy,[ls("div",{ref_key:"mountEl",ref:i},null,512)])],2)}}});export{Ky as _}; diff --git a/apps/jingrow/frontend/dist/assets/Link-36f94aa6.css b/apps/jingrow/frontend/dist/assets/Link-36f94aa6.css new file mode 100644 index 0000000..47ef3eb --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Link-36f94aa6.css @@ -0,0 +1 @@ +.field-wrapper[data-v-1284a7de] .link-field-container{flex:1;position:relative}.link-field-container[data-v-1284a7de]{position:relative}.input-wrapper[data-v-1284a7de]{position:relative;display:flex;align-items:center}.link-input[data-v-1284a7de]{flex:1}.link-buttons[data-v-1284a7de]{position:absolute;right:8px;top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:4px;background:white;padding:2px;border-radius:4px}.action-btn[data-v-1284a7de]{width:24px;height:24px;min-width:24px;padding:0}.dropdown-menu[data-v-1284a7de]{position:absolute;top:100%;left:0;right:0;z-index:1000;margin-top:4px}.dropdown-content[data-v-1284a7de]{background:white;border:1px solid #e0e0e6;border-radius:6px;box-shadow:0 4px 12px #0000001a;max-height:200px;overflow-y:auto!important}.dropdown-item[data-v-1284a7de]{padding:8px 12px;cursor:pointer;display:flex;align-items:center;gap:8px;border-bottom:1px solid #f0f0f0}.dropdown-item[data-v-1284a7de]:last-child{border-bottom:none}.dropdown-item[data-v-1284a7de]:hover{background-color:#f5f5f5}.create-item[data-v-1284a7de]{color:#18a058;font-weight:500}.create-icon[data-v-1284a7de]{color:#18a058}.item-label[data-v-1284a7de]{flex:1}.empty-state[data-v-1284a7de],.loading-state[data-v-1284a7de]{padding:12px;text-align:center;color:#999;font-size:14px}.field-wrapper[data-v-1284a7de] .n-input{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Link-d4fb39b6.js b/apps/jingrow/frontend/dist/assets/Link-d4fb39b6.js new file mode 100644 index 0000000..7ca2aaa --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Link-d4fb39b6.js @@ -0,0 +1 @@ +import{d as ne,c as $,r as c,M as z,o as le,K as se,e as r,f as C,p as oe,g as L,y as v,h as p,j as n,D as ie,w as I,L as j,F as ce,C as re,Y as P,l as o,m as ue,$ as q,t as m,n as K,a0 as N,a2 as Q}from"./index-d271a6a3.js";import{I as F}from"./iconify-242f8a3c.js";import{getRecords as de}from"./common-c89c6552.js";import{p as Y}from"./slug-9937a98a.js";import{_ as fe}from"./_plugin-vue_export-helper-c27b6911.js";const ve={class:"field-label"},pe={key:0,class:"required"},_e={class:"input-wrapper"},me={key:0,class:"link-buttons"},he={key:0,class:"dropdown-menu"},ke={class:"dropdown-content"},ye=["onClick"],ge={key:0,class:"create-icon"},we={class:"item-label"},Ce={key:0,class:"empty-state"},be={key:1,class:"loading-state"},$e=ne({__name:"Link",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(A){const s=A,G=$(()=>s.df.label_layout||"vertical"),u=c(""),h=c(""),k=c(""),B=c(!1),d=c(!1),y=c([]),b=c(!1),O=c({}),g=c({}),i=$(()=>s.df.options||""),S=$(()=>!!u.value),H=$(()=>s.df.max_options||20);z(()=>s.record[s.df.fieldname],async e=>{e!==u.value&&(u.value=e||"",e&&i.value?h.value=await J(i.value,e):h.value="")},{immediate:!0}),z(u,e=>{s.record[s.df.fieldname]!==e&&(s.record[s.df.fieldname]=e)});async function M(e){var t;if(!e)return{};if(O.value[e])return O.value[e];try{const l=((t=(await N.get(`/api/data/PageType/${encodeURIComponent(e)}`,{headers:Q(),withCredentials:!0})).data)==null?void 0:t.data)||{};return O.value[e]=l,l}catch(a){return console.error("获取页面类型配置失败:",a),{}}}async function J(e,t){var l;if(!e||!t)return t;const a=`${e}_${t}`;if(g.value[a])return g.value[a];try{const f=await M(e),_=f.title_field||"name",D=f.show_title_field_in_link||!1;if(_==="name"||!D)return g.value[a]=t,t;const x=(((l=(await N.get(`/api/data/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{headers:Q(),withCredentials:!0})).data)==null?void 0:l.data)||{})[_]||t;return g.value[a]=x,x}catch(f){return console.error("获取记录标题失败:",f),t}}function T(){return{label:`${m("Create")}${m(i.value)}`,value:"create_new",type:"create"}}async function R(e=""){if(i.value){b.value=!0;try{const a=(await M(i.value)).title_field||"name",l=["name"];a!=="name"&&l.push(a);const f=[];e.trim()&&(a!=="name"?f.push([a,"like",`%${e}%`]):f.push(["name","like",`%${e}%`]));const _=await de(i.value,f,l,"modified desc",0,H.value);if(_.success&&_.data){const D=_.data.map(w=>{const E=a==="name"?w.name:w[a]||w.name;return{label:E,value:w.name,title:E}});y.value=[...D,T()]}else y.value=[T()]}catch(t){console.error("搜索选项失败:",t),y.value=[T()]}finally{b.value=!1}}}function W(e){k.value=e,d.value&&R(e)}async function U(){s.canEdit&&(d.value||(await R(k.value),d.value=!0))}async function X(e){if(e.type==="create"){const t=Y(i.value),a=Math.random().toString(36).substring(2,12),l=`new-${t}-${a}`;window.open(`/app/${t}/${l}`,"_blank"),d.value=!1;return}u.value=e.value,h.value=e.title||e.label,k.value="",d.value=!1}function Z(){u.value="",h.value="",k.value="",d.value=!1}function ee(){if(!u.value||!i.value)return;const e=Y(i.value);window.open(`/app/${e}/${u.value}`,"_blank")}function ae(){B.value=S.value}function te(){B.value=!1}function V(e){e.target.closest(".link-field-container")||(d.value=!1)}return le(()=>{document.addEventListener("click",V)}),se(()=>{document.removeEventListener("click",V)}),(e,t)=>(o(),r("div",{class:P(["field-wrapper",`layout-${G.value}`])},[C("label",ve,[oe(L(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(o(),r("span",pe,"*")):v("",!0)]),C("div",{class:"link-field-container",onMouseenter:ae,onMouseleave:te},[C("div",_e,[p(n(ue),{value:S.value?h.value:k.value,placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit,"onUpdate:value":W,onClick:U,onFocus:U,class:"link-input"},null,8,["value","placeholder","disabled"]),B.value&&S.value?(o(),r("div",me,[e.canEdit?(o(),ie(n(K),{key:0,size:"small",quaternary:"",onClick:j(Z,["stop"]),title:n(m)("Clear"),class:"action-btn"},{icon:I(()=>[p(n(q),null,{default:I(()=>[p(n(F),{icon:"mdi:close"})]),_:1})]),_:1},8,["title"])):v("",!0),p(n(K),{size:"small",quaternary:"",onClick:j(ee,["stop"]),title:n(m)("Open Detail"),class:"action-btn"},{icon:I(()=>[p(n(q),null,{default:I(()=>[p(n(F),{icon:"mdi:arrow-right"})]),_:1})]),_:1},8,["title"])])):v("",!0)]),d.value?(o(),r("div",he,[C("div",ke,[(o(!0),r(ce,null,re(y.value,a=>(o(),r("div",{key:a.value,class:P(["dropdown-item",{"create-item":a.type==="create"}]),onClick:l=>X(a)},[a.type==="create"?(o(),r("span",ge,[p(n(F),{icon:"mdi:plus"})])):v("",!0),C("span",we,L(a.label),1)],10,ye))),128)),y.value.length===0&&!b.value?(o(),r("div",Ce,L(n(m)("No Data")),1)):v("",!0),b.value?(o(),r("div",be,L(n(m)("Loading")),1)):v("",!0)])])):v("",!0)],32)],2))}});const Le=fe($e,[["__scopeId","data-v-1284a7de"]]),De=Object.freeze(Object.defineProperty({__proto__:null,default:Le},Symbol.toStringTag,{value:"Module"}));export{De as _}; diff --git a/apps/jingrow/frontend/dist/assets/LocalJobDetail-00b32437.css b/apps/jingrow/frontend/dist/assets/LocalJobDetail-00b32437.css new file mode 100644 index 0000000..1531471 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/LocalJobDetail-00b32437.css @@ -0,0 +1 @@ +.page[data-v-0f561628]{padding:16px;width:100%;min-height:100vh}.page-header[data-v-0f561628]{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid #e5e7eb}.page-title[data-v-0f561628]{font-size:24px;font-weight:700;color:#1f2937;margin:0 0 4px}.page-description[data-v-0f561628]{font-size:14px;color:#6b7280;margin:0}.header-action-btn[data-v-0f561628]{display:inline-flex;align-items:center;justify-content:center}.header-action-btn.delete-btn[data-v-0f561628]:hover:not(:disabled){background:#ef4444!important;border-color:#ef4444!important;color:#fff!important}.header-action-btn.delete-btn[data-v-0f561628]:hover:not(:disabled) .n-button__border,.header-action-btn.delete-btn[data-v-0f561628]:hover:not(:disabled) .n-button__state-border{border-color:#ef4444!important}.main-layout[data-v-0f561628],.main-content[data-v-0f561628]{width:100%}.content-grid[data-v-0f561628]{display:grid;grid-template-columns:1fr 1fr;gap:24px;width:100%}.info-card[data-v-0f561628],.time-card[data-v-0f561628],.arguments-card[data-v-0f561628],.exception-card[data-v-0f561628]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:20px;box-shadow:0 1px 3px #0000001a}.info-card h4[data-v-0f561628],.time-card h4[data-v-0f561628],.arguments-card h4[data-v-0f561628],.exception-card h4[data-v-0f561628]{margin:0 0 16px;font-size:18px;font-weight:600;color:#111827}.info-grid[data-v-0f561628],.time-grid[data-v-0f561628]{display:grid;grid-template-columns:1fr 1fr;gap:16px}.info-item[data-v-0f561628],.time-item[data-v-0f561628]{display:flex;flex-direction:column;gap:4px}.info-item label[data-v-0f561628],.time-item label[data-v-0f561628]{font-size:12px;font-weight:500;color:#6b7280;text-transform:uppercase;letter-spacing:.05em}.info-item .value[data-v-0f561628],.time-item .value[data-v-0f561628]{font-size:14px;color:#111827;font-weight:500}.status-badge[data-v-0f561628]{padding:4px 8px;border-radius:6px;font-size:11px;font-weight:500;display:inline-block}.status-badge.queued[data-v-0f561628]{background:#fef3c7;color:#92400e}.status-badge.started[data-v-0f561628]{background:#dbeafe;color:#1e40af}.status-badge.finished[data-v-0f561628]{background:#dcfce7;color:#166534}.status-badge.failed[data-v-0f561628]{background:#fee2e2;color:#991b1b}.status-badge.deferred[data-v-0f561628]{background:#f3e8ff;color:#7c3aed}.status-badge.scheduled[data-v-0f561628]{background:#e0f2fe;color:#0369a1}.status-badge.canceled[data-v-0f561628]{background:#f1f5f9;color:#475569}.queue-badge[data-v-0f561628]{background:#eef2ff;color:#334155;padding:4px 8px;border-radius:6px;font-size:11px;font-weight:500;display:inline-block}.arguments-container[data-v-0f561628],.exception-container[data-v-0f561628]{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:16px;max-height:300px;overflow-y:auto}.arguments-container pre[data-v-0f561628],.exception-container pre[data-v-0f561628]{margin:0;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;line-height:1.5;color:#374151;white-space:pre-wrap;word-break:break-word}.no-data[data-v-0f561628]{color:#6b7280;font-style:italic;text-align:center;padding:20px}.loading[data-v-0f561628],.error[data-v-0f561628]{display:flex;align-items:center;justify-content:center;gap:8px;padding:40px;color:#6b7280;font-size:16px}.error[data-v-0f561628]{color:#ef4444}@media (max-width: 768px){.content-grid[data-v-0f561628],.info-grid[data-v-0f561628],.time-grid[data-v-0f561628]{grid-template-columns:1fr}} diff --git a/apps/jingrow/frontend/dist/assets/LocalJobDetail-66f454d4.js b/apps/jingrow/frontend/dist/assets/LocalJobDetail-66f454d4.js new file mode 100644 index 0000000..f840bba --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/LocalJobDetail-66f454d4.js @@ -0,0 +1 @@ +import{d as I,X as T,u as B,r as m,o as A,e as d,f as e,h as i,w as c,j as t,p as h,g as s,Y as F,y as z,v as E,k as M,t as a,l as u,I as k,n as b,$ as p}from"./index-d271a6a3.js";import{I as g}from"./iconify-242f8a3c.js";import{a as S,d as V}from"./localJobs-7ba88b7f.js";import{_ as O}from"./_plugin-vue_export-helper-c27b6911.js";const R={class:"page"},q={class:"page-header"},$={class:"page-title"},P={class:"main-layout"},Q={class:"main-content"},X={key:0,class:"loading"},Y={key:1,class:"error"},G={key:2,class:"content-grid"},H={class:"info-card"},K={class:"info-grid"},U={class:"info-item"},W={class:"value"},Z={class:"info-item"},ee={class:"value"},te={class:"info-item"},se={class:"value"},ae={class:"queue-badge"},le={class:"info-item"},oe={class:"value"},ie={class:"info-item"},ne={class:"value"},ce={class:"info-item"},de={class:"value"},ue={class:"info-item"},re={class:"value"},_e={class:"info-item"},ve={class:"value"},fe={class:"time-card"},me={class:"time-grid"},he={class:"time-item"},be={class:"value"},pe={class:"time-item"},ge={class:"value"},ye={class:"time-item"},Je={class:"value"},ke={class:"time-item"},De={class:"value"},je={class:"arguments-card"},xe={class:"arguments-container"},Ce={key:0},Ne={key:1,class:"no-data"},we={key:0,class:"exception-card"},Le={class:"exception-container"},Ie=I({__name:"LocalJobDetail",setup(Te){const D=E(),j=M(),x=T(),_=B(),r=m(!0),f=m(!1),l=m(null);async function y(){r.value=!0;try{const o=D.params.id,n=await S(o);n.success?l.value=n.data:(l.value=null,_.error(a("Failed to load job detail")))}catch(o){console.error("Fetch job detail error:",o),l.value=null,_.error(a("Failed to load job detail"))}finally{r.value=!1}}async function C(){l.value&&x.error({title:a("Confirm Delete"),content:a("Are you sure you want to delete this job?"),positiveText:a("Delete"),negativeText:a("Cancel"),onPositiveClick:async()=>{f.value=!0;try{(await V(l.value.job_id)).success?(_.success(a("Job deleted successfully")),J()):_.error(a("Failed to delete job"))}catch(o){console.error("Delete error:",o),_.error(a("Failed to delete job"))}finally{f.value=!1}}})}function N(){y()}function J(){j.push({name:"LocalJobList"})}function v(o){if(!o)return"—";try{return new Date(o).toLocaleString()}catch{return o}}function w(o){return o?typeof o=="number"?`${o}s`:o:"—"}function L(o){try{const n=JSON.parse(o);return JSON.stringify(n,null,2)}catch{return o}}return A(()=>{y()}),(o,n)=>(u(),d("div",R,[e("div",q,[i(t(k),{justify:"space-between",align:"center"},{default:c(()=>[e("div",null,[e("h1",$,s(l.value?l.value.job_name||l.value.job_id:t(a)("Job Details")),1)]),i(t(k),{align:"center"},{default:c(()=>[i(t(b),{type:"default",size:"medium",onClick:N,disabled:r.value||!l.value,title:t(a)("Refresh"),class:"header-action-btn"},{icon:c(()=>[i(t(p),null,{default:c(()=>[i(t(g),{icon:"tabler:refresh"})]),_:1})]),_:1},8,["disabled","title"]),i(t(b),{type:"default",size:"medium",onClick:C,disabled:r.value||!l.value||f.value,title:t(a)("Delete"),class:"header-action-btn delete-btn"},{icon:c(()=>[i(t(p),null,{default:c(()=>[i(t(g),{icon:"tabler:trash"})]),_:1})]),_:1},8,["disabled","title"]),i(t(b),{type:"default",size:"medium",onClick:J,disabled:r.value},{icon:c(()=>[i(t(p),null,{default:c(()=>[i(t(g),{icon:"tabler:arrow-left"})]),_:1})]),default:c(()=>[h(" "+s(t(a)("Back")),1)]),_:1},8,["disabled"])]),_:1})]),_:1})]),e("div",P,[e("div",Q,[r.value?(u(),d("div",X,[n[0]||(n[0]=e("i",{class:"fa fa-spinner fa-spin"},null,-1)),h(" "+s(t(a)("Loading...")),1)])):l.value?(u(),d("div",G,[e("div",H,[e("h4",null,s(t(a)("Job Details")),1),e("div",K,[e("div",U,[e("label",null,s(t(a)("Job ID")),1),e("div",W,s(l.value.job_id),1)]),e("div",Z,[e("label",null,s(t(a)("Job Name")),1),e("div",ee,s(l.value.job_name||"—"),1)]),e("div",te,[e("label",null,s(t(a)("Queue")),1),e("div",se,[e("span",ae,s(t(a)(l.value.queue)),1)])]),e("div",le,[e("label",null,s(t(a)("Job Status")),1),e("div",oe,[e("span",{class:F(["status-badge",l.value.status])},s(t(a)(l.value.status)),3)])]),e("div",ie,[e("label",null,s(t(a)("Creation")),1),e("div",ne,s(v(l.value.creation)),1)]),e("div",ce,[e("label",null,s(t(a)("Modified")),1),e("div",de,s(v(l.value.modified)),1)]),e("div",ue,[e("label",null,s(t(a)("Owner")),1),e("div",re,s(l.value.owner||"—"),1)]),e("div",_e,[e("label",null,s(t(a)("Modified By")),1),e("div",ve,s(l.value.modified_by||"—"),1)])])]),e("div",fe,[e("h4",null,s(t(a)("Execution Time")),1),e("div",me,[e("div",he,[e("label",null,s(t(a)("Started At")),1),e("div",be,s(v(l.value.started_at)),1)]),e("div",pe,[e("label",null,s(t(a)("Ended At")),1),e("div",ge,s(v(l.value.ended_at)),1)]),e("div",ye,[e("label",null,s(t(a)("Time Taken")),1),e("div",Je,s(w(l.value.time_taken)),1)]),e("div",ke,[e("label",null,s(t(a)("Timeout")),1),e("div",De,s(l.value.timeout||"—"),1)])])]),e("div",je,[e("h4",null,s(t(a)("Job Arguments")),1),e("div",xe,[l.value.arguments?(u(),d("pre",Ce,s(L(l.value.arguments)),1)):(u(),d("div",Ne,s(t(a)("No arguments")),1))])]),l.value.exc_info?(u(),d("div",we,[e("h4",null,s(t(a)("Exception Info")),1),e("div",Le,[e("pre",null,s(l.value.exc_info),1)])])):z("",!0)])):(u(),d("div",Y,[n[1]||(n[1]=e("i",{class:"fa fa-exclamation-triangle"},null,-1)),h(" "+s(t(a)("Job not found")),1)]))])])]))}});const Ee=O(Ie,[["__scopeId","data-v-0f561628"]]);export{Ee as default}; diff --git a/apps/jingrow/frontend/dist/assets/LocalJobList-b532d874.css b/apps/jingrow/frontend/dist/assets/LocalJobList-b532d874.css new file mode 100644 index 0000000..3dec958 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/LocalJobList-b532d874.css @@ -0,0 +1 @@ +.page[data-v-120643f1]{padding:16px;width:100%;min-height:100vh}.page-header[data-v-120643f1]{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px}.header-left h2[data-v-120643f1]{font-size:28px;font-weight:700;color:#1f2937;margin:0 0 8px}.page-description[data-v-120643f1]{font-size:16px;color:#6b7280;margin:0}.header-right[data-v-120643f1]{display:flex;align-items:center;gap:12px}.filters[data-v-120643f1]{display:flex;gap:8px;align-items:center}.refresh-btn[data-v-120643f1]{width:36px;height:36px;border:none;border-radius:8px;background:#f8fafc;color:#64748b;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .2s cubic-bezier(.4,0,.2,1)}.refresh-btn[data-v-120643f1]:hover{background:#e2e8f0;color:#475569;transform:translateY(-1px);box-shadow:0 4px 12px #0000001a}.refresh-btn[data-v-120643f1]:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.delete-btn[data-v-120643f1]{background:#ef4444;color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;display:flex;align-items:center;gap:6px;transition:all .2s cubic-bezier(.4,0,.2,1)}.delete-btn[data-v-120643f1]:hover{background:#dc2626;transform:translateY(-1px);box-shadow:0 4px 12px #ef44444d}.delete-btn[data-v-120643f1]:disabled{opacity:.5;cursor:not-allowed}.job-list[data-v-120643f1]{background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;box-shadow:0 1px 3px #0000001a;width:100%}.list-header[data-v-120643f1]{display:grid;grid-template-columns:40px 100px 2fr 100px 150px 150px 100px 120px;gap:16px;padding:16px 20px;background:#f9fafb;border-bottom:1px solid #e5e7eb;font-size:14px;font-weight:600;color:#374151;align-items:center}.list-header>div[data-v-120643f1]{color:#374151}.list-body[data-v-120643f1]{max-height:600px;overflow-y:auto}.list-pagination[data-v-120643f1]{display:flex;align-items:center;gap:8px;padding:12px 16px;border-top:1px solid #f3f4f6}.job-list-item[data-v-120643f1]{display:grid;grid-template-columns:40px 100px 2fr 100px 150px 150px 100px 120px;gap:16px;padding:16px 20px;border-bottom:1px solid #f3f4f6;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);align-items:center}.job-list-item[data-v-120643f1]:hover{background:#f8fafc}.job-list-item[data-v-120643f1]:last-child{border-bottom:none}.col-job-name[data-v-120643f1]{display:flex;flex-direction:column;justify-content:center;min-width:0}.job-name[data-v-120643f1]{font-weight:600;color:#111827;font-size:14px;margin-bottom:2px}.job-id[data-v-120643f1]{color:#6b7280;font-size:12px;font-family:monospace}.col-status[data-v-120643f1],.col-queue[data-v-120643f1]{display:flex;align-items:center}.col-started[data-v-120643f1],.col-ended[data-v-120643f1],.col-duration[data-v-120643f1]{display:flex;align-items:center;color:#6b7280;font-size:13px}.status-badge[data-v-120643f1]{padding:4px 8px;border-radius:6px;font-size:11px;font-weight:500}.status-badge.queued[data-v-120643f1]{background:#fef3c7;color:#92400e}.status-badge.started[data-v-120643f1]{background:#dbeafe;color:#1e40af}.status-badge.finished[data-v-120643f1]{background:#dcfce7;color:#166534}.status-badge.failed[data-v-120643f1]{background:#fee2e2;color:#991b1b}.status-badge.deferred[data-v-120643f1]{background:#f3e8ff;color:#7c3aed}.status-badge.scheduled[data-v-120643f1]{background:#e0f2fe;color:#0369a1}.status-badge.canceled[data-v-120643f1]{background:#f1f5f9;color:#475569}.queue-badge[data-v-120643f1]{background:#eef2ff;color:#334155;padding:4px 8px;border-radius:6px;font-size:11px;font-weight:500}.col-actions[data-v-120643f1]{display:flex;align-items:center;justify-content:center;gap:4px}.action-btn[data-v-120643f1]{width:28px;height:28px;border:none;background:#f3f4f6;color:#6b7280;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;transition:all .2s cubic-bezier(.4,0,.2,1)}.action-btn[data-v-120643f1]:hover{background:#3b82f6;color:#fff}.action-btn.stop-btn[data-v-120643f1]:hover{background:#f59e0b}.action-btn.delete-btn[data-v-120643f1]:hover{background:#ef4444}.col-checkbox[data-v-120643f1]{display:flex;align-items:center;justify-content:center;width:40px}.job-list-item.selected[data-v-120643f1]{background:#f0f9ff;border-color:#3b82f6} diff --git a/apps/jingrow/frontend/dist/assets/LocalJobList-f1847ba9.js b/apps/jingrow/frontend/dist/assets/LocalJobList-f1847ba9.js new file mode 100644 index 0000000..c191909 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/LocalJobList-f1847ba9.js @@ -0,0 +1 @@ +import{d as R,X,u as Y,r as u,c as q,M as w,o as Z,e as f,f as s,g as n,j as a,h as x,Y as S,p as A,y as N,F as G,C as H,k as K,t as e,l as h,m as W,Z as ee,L as _,_ as te}from"./index-d271a6a3.js";import{g as se,b as le,d as oe,s as ae}from"./localJobs-7ba88b7f.js";import{_ as ne}from"./_plugin-vue_export-helper-c27b6911.js";const ie={class:"page"},ce={class:"page-header"},de={class:"header-left"},ue={class:"header-right"},re={class:"filters"},ve=["disabled"],_e=["disabled"],pe={class:"page-content"},fe={key:0,class:"loading"},he={key:1},be={class:"job-list"},ge={class:"list-header"},me={class:"col-checkbox"},ke=["checked","indeterminate"],Ce={class:"col-status"},ye={class:"col-job-name"},Je={class:"col-queue"},De={class:"col-started"},Le={class:"col-ended"},we={class:"col-duration"},xe={class:"col-actions"},Se={class:"list-body"},$e=["onClick"],je={class:"col-checkbox"},Fe=["checked","onClick"],Te=["onClick"],qe=["onClick"],Ae={class:"job-name"},Ne={class:"job-id"},Pe=["onClick"],Me={class:"queue-badge"},Ie=["onClick"],Ve=["onClick"],ze=["onClick"],Be=["onClick","title"],Ee=["onClick","title"],Oe=["onClick","title"],Qe={class:"list-pagination"},Ue=R({__name:"LocalJobList",setup(Re){const P=K(),C=X(),d=Y(),b=u(!0),y=u(!1),r=u([]),J=u([]),D=u(0),i=u([]),m=u(""),k=u("all"),g=u(1),L=u(parseInt(localStorage.getItem("itemsPerPage")||"20")),M=q(()=>[{label:e("All"),value:"all"},{label:e("Queued"),value:"queued"},{label:e("Started"),value:"started"},{label:e("Finished"),value:"finished"},{label:e("Failed"),value:"failed"},{label:e("Deferred"),value:"deferred"},{label:e("Scheduled"),value:"scheduled"},{label:e("Canceled"),value:"canceled"}]),I=q(()=>Math.max(1,Math.ceil(D.value/L.value)));async function p(){b.value=!0;try{const t=await se(g.value,L.value);J.value=t.items||[],$(),D.value=t.total||0}catch(t){console.error("Fetch jobs error:",t),r.value=[],J.value=[],D.value=0,d.error(e("Failed to load jobs"))}finally{b.value=!1}}function $(){let t=[...J.value];if(m.value){const l=m.value.toLowerCase();t=t.filter(o=>{var c,F,T;return((c=o.job_name)==null?void 0:c.toLowerCase().includes(l))||((F=o.job_id)==null?void 0:F.toLowerCase().includes(l))||((T=o.queue)==null?void 0:T.toLowerCase().includes(l))})}k.value!=="all"&&(t=t.filter(l=>l.status===k.value)),r.value=t}function V(){p()}function z(t){const l=i.value.indexOf(t);l>-1?i.value.splice(l,1):i.value.push(t)}function B(){i.value.length===r.value.length?i.value=[]:i.value=r.value.map(t=>t.job_id)}async function E(){i.value.length!==0&&C.error({title:e("Confirm Delete"),content:e("Are you sure you want to delete the selected jobs? This action cannot be undone."),positiveText:e("Delete"),negativeText:e("Cancel"),onPositiveClick:async()=>{y.value=!0;try{const t=await le(i.value);if(t.success){let l=e(t.message);t.message_params&&Object.entries(t.message_params).forEach(([o,c])=>{l=l.replace(`{${o}}`,String(c))}),d.success(l),i.value=[],await p()}else d.error(e("Delete failed"))}catch(t){console.error("Delete error:",t),d.error(e("Delete failed"))}finally{y.value=!1}}})}async function O(t){C.error({title:e("Confirm Delete"),content:e("Are you sure you want to delete this job?"),positiveText:e("Delete"),negativeText:e("Cancel"),onPositiveClick:async()=>{try{(await oe(t)).success?(d.success(e("Job deleted successfully")),await p()):d.error(e("Failed to delete job"))}catch(l){console.error("Delete error:",l),d.error(e("Failed to delete job"))}}})}async function Q(t){C.warning({title:e("Confirm Stop"),content:e("Are you sure you want to stop this job?"),positiveText:e("Stop"),negativeText:e("Cancel"),onPositiveClick:async()=>{try{(await ae(t)).success?(d.success(e("Job stopped successfully")),await p()):d.error(e("Failed to stop job"))}catch(l){console.error("Stop error:",l),d.error(e("Failed to stop job"))}}})}function j(t){if(!t)return"—";try{return new Date(t).toLocaleString()}catch{return t}}function U(t){return t?typeof t=="number"?`${t}s`:t:"—"}w([m,k],()=>{g.value=1,$()},{deep:!0}),w([g],()=>{p()}),w(()=>localStorage.getItem("itemsPerPage"),t=>{t&&(L.value=parseInt(t),g.value=1,p())});function v(t){P.push({name:"LocalJobDetail",params:{id:t}})}return Z(()=>{p()}),(t,l)=>(h(),f("div",ie,[s("div",ce,[s("div",de,[s("h2",null,n(a(e)("Local Jobs")),1)]),s("div",ue,[s("div",re,[x(a(W),{value:m.value,"onUpdate:value":l[0]||(l[0]=o=>m.value=o),placeholder:a(e)("Search"),clearable:"",style:{width:"220px"}},null,8,["value","placeholder"]),x(a(ee),{value:k.value,"onUpdate:value":l[1]||(l[1]=o=>k.value=o),options:M.value,style:{width:"160px"}},null,8,["value","options"])]),s("button",{class:"refresh-btn",onClick:V,disabled:b.value},[s("i",{class:S(b.value?"fa fa-spinner fa-spin":"fa fa-refresh")},null,2)],8,ve),i.value.length>0?(h(),f("button",{key:0,class:"delete-btn",onClick:E,disabled:y.value||b.value},[l[4]||(l[4]=s("i",{class:"fa fa-trash"},null,-1)),A(" "+n(a(e)("Delete Selected Jobs"))+" ("+n(i.value.length)+") ",1)],8,_e)):N("",!0)])]),s("div",pe,[b.value?(h(),f("div",fe,[l[5]||(l[5]=s("i",{class:"fa fa-spinner fa-spin"},null,-1)),A(" "+n(a(e)("Loading...")),1)])):(h(),f("div",he,[s("div",be,[s("div",ge,[s("div",me,[s("input",{type:"checkbox",checked:i.value.length===r.value.length&&r.value.length>0,indeterminate:i.value.length>0&&i.value.length(h(),f("div",{key:o.job_id,class:S(["job-list-item",{selected:i.value.includes(o.job_id)}]),onClick:c=>v(o.job_id)},[s("div",je,[s("input",{type:"checkbox",checked:i.value.includes(o.job_id),onClick:_(c=>z(o.job_id),["stop"])},null,8,Fe)]),s("div",{class:"col-status",onClick:_(c=>v(o.job_id),["stop"])},[s("span",{class:S(["status-badge",o.status])},n(a(e)(o.status)),3)],8,Te),s("div",{class:"col-job-name",onClick:_(c=>v(o.job_id),["stop"])},[s("div",Ae,n(o.job_name||o.job_id),1),s("div",Ne,n(o.job_id),1)],8,qe),s("div",{class:"col-queue",onClick:_(c=>v(o.job_id),["stop"])},[s("span",Me,n(a(e)(o.queue)),1)],8,Pe),s("div",{class:"col-started",onClick:_(c=>v(o.job_id),["stop"])},n(j(o.started_at)),9,Ie),s("div",{class:"col-ended",onClick:_(c=>v(o.job_id),["stop"])},n(j(o.ended_at)),9,Ve),s("div",{class:"col-duration",onClick:_(c=>v(o.job_id),["stop"])},n(U(o.time_taken)),9,ze),s("div",{class:"col-actions",onClick:l[2]||(l[2]=_(()=>{},["stop"]))},[o.status==="started"||o.status==="queued"?(h(),f("button",{key:0,class:"action-btn stop-btn",onClick:c=>Q(o.job_id),title:a(e)("Stop Job")},[...l[6]||(l[6]=[s("i",{class:"fa fa-stop"},null,-1)])],8,Be)):N("",!0),s("button",{class:"action-btn",onClick:c=>v(o.job_id),title:a(e)("View Details")},[...l[7]||(l[7]=[s("i",{class:"fa fa-eye"},null,-1)])],8,Ee),s("button",{class:"action-btn delete-btn",onClick:c=>O(o.job_id),title:a(e)("Delete Job")},[...l[8]||(l[8]=[s("i",{class:"fa fa-trash"},null,-1)])],8,Oe)])],10,$e))),128))]),s("div",Qe,[x(a(te),{page:g.value,"onUpdate:page":l[3]||(l[3]=o=>g.value=o),"page-count":I.value,size:"small"},null,8,["page","page-count"])])])]))])]))}});const Ge=ne(Ue,[["__scopeId","data-v-120643f1"]]);export{Ge as default}; diff --git a/apps/jingrow/frontend/dist/assets/Login-15b76d60.js b/apps/jingrow/frontend/dist/assets/Login-15b76d60.js new file mode 100644 index 0000000..752ba0b --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Login-15b76d60.js @@ -0,0 +1 @@ +import{d as L,u as k,a as x,r as h,b,t as o,c as I,o as B,e as P,f as n,g as v,h as s,w as t,i as S,j as e,k as q,l as C,N as p,m as w,n as R,p as U,q as V,s as z}from"./index-d271a6a3.js";import{_ as A}from"./logo-a60c622a.js";import{I as y}from"./iconify-242f8a3c.js";import{_ as D}from"./_plugin-vue_export-helper-c27b6911.js";const F={class:"login-container"},K={class:"login-card"},M={class:"login-header"},T={class:"logo"},j=["alt"],E={class:"title"},J={class:"login-footer"},G=L({__name:"Login",setup(H){const m=q(),l=k(),i=x(),_=h(),u=h(!1),r=b({username:"",password:""}),N={username:[{required:!0,message:o("Please enter username"),trigger:"blur"}],password:[{required:!0,message:o("Please enter password"),trigger:"blur"},{min:6,message:o("Password must be at least 6 characters"),trigger:"blur"}]},g=async()=>{var c;try{await((c=_.value)==null?void 0:c.validate()),u.value=!0;const a=await i.login(r.username,r.password);a.success?(l.success(o("Login successful")),m.push("/")):l.error(a.error||o("Login failed"))}catch(a){console.error("Login error:",a),l.error(o("Login failed, please check username and password"))}finally{u.value=!1}},f=I(()=>localStorage.getItem("appName")||"Jingrow");return B(async()=>{await i.initAuth(),i.isLoggedIn&&m.push("/")}),(c,a)=>(C(),P("div",F,[n("div",K,[n("div",M,[n("div",T,[n("img",{src:A,alt:f.value,width:"48",height:"48"},null,8,j)]),n("h1",E,v(f.value),1)]),s(e(V),{ref_key:"formRef",ref:_,model:r,rules:N,size:"large",onKeyup:S(g,["enter"])},{default:t(()=>[s(e(p),{path:"username"},{default:t(()=>[s(e(w),{value:r.username,"onUpdate:value":a[0]||(a[0]=d=>r.username=d),placeholder:e(o)("Username"),"input-props":{autocomplete:"username"}},{prefix:t(()=>[s(e(y),{icon:"tabler:user"})]),_:1},8,["value","placeholder"])]),_:1}),s(e(p),{path:"password"},{default:t(()=>[s(e(w),{value:r.password,"onUpdate:value":a[1]||(a[1]=d=>r.password=d),type:"password",placeholder:e(o)("Password"),"input-props":{autocomplete:"current-password"},"show-password-on":"click"},{prefix:t(()=>[s(e(y),{icon:"tabler:lock"})]),_:1},8,["value","placeholder"])]),_:1}),s(e(p),null,{default:t(()=>[s(e(R),{type:"primary",size:"large",block:"",loading:u.value,onClick:g},{default:t(()=>[U(v(e(o)("Login")),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),n("div",J,[s(e(z),{depth:"3"})])])]))}});const Y=D(G,[["__scopeId","data-v-eaaa6792"]]);export{Y as default}; diff --git a/apps/jingrow/frontend/dist/assets/Login-46025a8c.css b/apps/jingrow/frontend/dist/assets/Login-46025a8c.css new file mode 100644 index 0000000..f4f5f8c --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Login-46025a8c.css @@ -0,0 +1 @@ +.login-container[data-v-eaaa6792]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f5f5f5;padding:20px}.login-card[data-v-eaaa6792]{width:100%;max-width:400px;background:white;border-radius:16px;padding:40px;box-shadow:0 20px 40px #0000001a}.login-header[data-v-eaaa6792]{text-align:center;margin-bottom:32px}.logo[data-v-eaaa6792]{margin-bottom:16px}.title[data-v-eaaa6792]{font-size:32px;font-weight:700;color:#1f2937;margin:0 0 8px}.subtitle[data-v-eaaa6792]{font-size:16px;color:#6b7280;margin:0}.login-footer[data-v-eaaa6792]{text-align:center;margin-top:24px} diff --git a/apps/jingrow/frontend/dist/assets/LongText-08a19895.css b/apps/jingrow/frontend/dist/assets/LongText-08a19895.css new file mode 100644 index 0000000..6db59a0 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/LongText-08a19895.css @@ -0,0 +1 @@ +.field-wrapper[data-v-322d4a53] .n-input{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/LongText-dd777872.js b/apps/jingrow/frontend/dist/assets/LongText-dd777872.js new file mode 100644 index 0000000..5b52015 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/LongText-dd777872.js @@ -0,0 +1 @@ +import{d as n,c as p,e as o,f as i,p as c,g as f,y as u,h as _,j as m,Y as y,l,m as b}from"./index-d271a6a3.js";import{_ as v}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},N={key:0,class:"required"},T=n({__name:"LongText",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(t){const d=t,s=p(()=>d.df.label_layout||"vertical");return(e,a)=>(l(),o("div",{class:y(["field-wrapper",`layout-${s.value}`])},[i("label",g,[c(f(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(l(),o("span",N,"*")):u("",!0)]),_(m(b),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=r=>e.record[e.df.fieldname]=r),type:"textarea",rows:6,placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const h=v(T,[["__scopeId","data-v-322d4a53"]]),V=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{V as _}; diff --git a/apps/jingrow/frontend/dist/assets/MarkdownEditor-89419c24.css b/apps/jingrow/frontend/dist/assets/MarkdownEditor-89419c24.css new file mode 100644 index 0000000..00a443e --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MarkdownEditor-89419c24.css @@ -0,0 +1 @@ +.md-editor[data-v-e1c042e1]{width:100%;display:grid;grid-template-rows:auto 1fr;gap:6px}.md-editor__toolbar[data-v-e1c042e1]{display:flex}.md-editor__preview[data-v-e1c042e1]{background:#ffffff;border:1px solid #e2e8f0;border-radius:6px;padding:12px}.md-editor__monaco[data-v-e1c042e1]{width:100%;height:500px;border:1px solid #e2e8f0;border-radius:6px}.md-editor__monaco.collapsed[data-v-e1c042e1]{height:500px}.md-editor__monaco[data-v-e1c042e1]:not(.collapsed){height:800px}[data-v-e1c042e1] .monaco-editor .minimap{display:none}[data-v-e1c042e1] .monaco-scrollable-element>.scrollbar{background:transparent!important;opacity:.6}[data-v-e1c042e1] .monaco-scrollable-element>.scrollbar:hover{opacity:.9}[data-v-e1c042e1] .monaco-scrollable-element>.scrollbar.vertical{width:6px!important}[data-v-e1c042e1] .monaco-scrollable-element>.scrollbar.vertical .slider{width:6px!important;background:#cbd5e1!important;border-radius:4px!important}[data-v-e1c042e1] .monaco-scrollable-element>.scrollbar.horizontal{height:6px!important}[data-v-e1c042e1] .monaco-scrollable-element>.scrollbar.horizontal .slider{height:6px!important;background:#cbd5e1!important;border-radius:4px!important}.no-scroll-y[data-v-e1c042e1] .monaco-scrollable-element>.scrollbar.vertical{display:none!important}.no-scroll-x[data-v-e1c042e1] .monaco-scrollable-element>.scrollbar.horizontal{display:none!important} diff --git a/apps/jingrow/frontend/dist/assets/MarkdownEditor-ff757a25.js b/apps/jingrow/frontend/dist/assets/MarkdownEditor-ff757a25.js new file mode 100644 index 0000000..7526d24 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MarkdownEditor-ff757a25.js @@ -0,0 +1,56 @@ +var _e=Object.defineProperty;var ze=(c,e,t)=>e in c?_e(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var x=(c,e,t)=>(ze(c,typeof e!="symbol"?e+"":e,t),t);import{l as Te}from"./index-2d2e8bf3.js";import{d as Re,c as ie,r as Q,M as H,o as Se,aU as ve,e as S,f as N,p as B,g as q,y as re,D as le,w as V,Y as oe,h as Ee,J as U,x as Ie,l as _}from"./index-d271a6a3.js";import{_ as Ae}from"./_plugin-vue_export-helper-c27b6911.js";function F(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}let T=F();function fe(c){T=c}const ge=/[&<>"']/,Ce=new RegExp(ge.source,"g"),de=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,Le=new RegExp(de.source,"g"),Be={"&":"&","<":"<",">":">",'"':""","'":"'"},ae=c=>Be[c];function w(c,e){if(e){if(ge.test(c))return c.replace(Ce,ae)}else if(de.test(c))return c.replace(Le,ae);return c}const qe=/(^|[^\[])\^/g;function k(c,e){let t=typeof c=="string"?c:c.source;e=e||"";const n={replace:(s,i)=>{let r=typeof i=="string"?i:i.source;return r=r.replace(qe,"$1"),t=t.replace(s,r),n},getRegex:()=>new RegExp(t,e)};return n}function ce(c){try{c=encodeURI(c).replace(/%25/g,"%")}catch{return null}return c}const I={exec:()=>null};function he(c,e){const t=c.replace(/\|/g,(i,r,l)=>{let o=!1,a=r;for(;--a>=0&&l[a]==="\\";)o=!o;return o?"|":" |"}),n=t.split(/ \|/);let s=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length{const i=s.match(/^\s+/);if(i===null)return s;const[r]=i;return r.length>=n.length?s.slice(n.length):s}).join(` +`)}class P{constructor(e){x(this,"options");x(this,"rules");x(this,"lexer");this.options=e||T}space(e){const t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){const t=this.rules.block.code.exec(e);if(t){const n=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:v(n,` +`)}}}fences(e){const t=this.rules.block.fences.exec(e);if(t){const n=t[0],s=Pe(n,t[3]||"");return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:s}}}heading(e){const t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(/#$/.test(n)){const s=v(n,"#");(this.options.pedantic||!s||/ $/.test(s))&&(n=s.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){const t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:v(t[0],` +`)}}blockquote(e){const t=this.rules.block.blockquote.exec(e);if(t){let n=v(t[0],` +`).split(` +`),s="",i="";const r=[];for(;n.length>0;){let l=!1;const o=[];let a;for(a=0;a/.test(n[a]))o.push(n[a]),l=!0;else if(!l)o.push(n[a]);else break;n=n.slice(a);const h=o.join(` +`),u=h.replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,` + $1`).replace(/^ {0,3}>[ \t]?/gm,"");s=s?`${s} +${h}`:h,i=i?`${i} +${u}`:u;const p=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(u,r,!0),this.lexer.state.top=p,n.length===0)break;const f=r[r.length-1];if((f==null?void 0:f.type)==="code")break;if((f==null?void 0:f.type)==="blockquote"){const g=f,m=g.raw+` +`+n.join(` +`),b=this.blockquote(m);r[r.length-1]=b,s=s.substring(0,s.length-g.raw.length)+b.raw,i=i.substring(0,i.length-g.text.length)+b.text;break}else if((f==null?void 0:f.type)==="list"){const g=f,m=g.raw+` +`+n.join(` +`),b=this.list(m);r[r.length-1]=b,s=s.substring(0,s.length-f.raw.length)+b.raw,i=i.substring(0,i.length-g.raw.length)+b.raw,n=m.substring(r[r.length-1].raw.length).split(` +`);continue}}return{type:"blockquote",raw:s,tokens:r,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim();const s=n.length>1,i={type:"list",raw:"",ordered:s,start:s?+n.slice(0,-1):"",loose:!1,items:[]};n=s?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=s?n:"[*+-]");const r=new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`);let l=!1;for(;e;){let o=!1,a="",h="";if(!(t=r.exec(e))||this.rules.block.hr.test(e))break;a=t[0],e=e.substring(a.length);let u=t[2].split(` +`,1)[0].replace(/^\t+/,R=>" ".repeat(3*R.length)),p=e.split(` +`,1)[0],f=!u.trim(),g=0;if(this.options.pedantic?(g=2,h=u.trimStart()):f?g=t[1].length+1:(g=t[2].search(/[^ ]/),g=g>4?1:g,h=u.slice(g),g+=t[1].length),f&&/^ *$/.test(p)&&(a+=p+` +`,e=e.substring(p.length+1),o=!0),!o){const R=new RegExp(`^ {0,${Math.min(3,g-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),te=new RegExp(`^ {0,${Math.min(3,g-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),ne=new RegExp(`^ {0,${Math.min(3,g-1)}}(?:\`\`\`|~~~)`),se=new RegExp(`^ {0,${Math.min(3,g-1)}}#`);for(;e;){const j=e.split(` +`,1)[0];if(p=j,this.options.pedantic&&(p=p.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),ne.test(p)||se.test(p)||R.test(p)||te.test(e))break;if(p.search(/[^ ]/)>=g||!p.trim())h+=` +`+p.slice(g);else{if(f||u.search(/[^ ]/)>=4||ne.test(u)||se.test(u)||te.test(u))break;h+=` +`+p}!f&&!p.trim()&&(f=!0),a+=j+` +`,e=e.substring(j.length+1),u=p.slice(g)}}i.loose||(l?i.loose=!0:/\n *\n *$/.test(a)&&(l=!0));let m=null,b;this.options.gfm&&(m=/^\[[ xX]\] /.exec(h),m&&(b=m[0]!=="[ ] ",h=h.replace(/^\[[ xX]\] +/,""))),i.items.push({type:"list_item",raw:a,task:!!m,checked:b,loose:!1,text:h,tokens:[]}),i.raw+=a}i.items[i.items.length-1].raw=i.items[i.items.length-1].raw.trimEnd(),i.items[i.items.length-1].text=i.items[i.items.length-1].text.trimEnd(),i.raw=i.raw.trimEnd();for(let o=0;ou.type==="space"),h=a.length>0&&a.some(u=>/\n.*\n/.test(u.raw));i.loose=h}if(i.loose)for(let o=0;o$/,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:s,title:i}}}table(e){const t=this.rules.block.table.exec(e);if(!t||!/[:|]/.test(t[2]))return;const n=he(t[1]),s=t[2].replace(/^\||\| *$/g,"").split("|"),i=t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split(` +`):[],r={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===s.length){for(const l of s)/^ *-+: *$/.test(l)?r.align.push("right"):/^ *:-+: *$/.test(l)?r.align.push("center"):/^ *:-+ *$/.test(l)?r.align.push("left"):r.align.push(null);for(let l=0;l({text:o,tokens:this.lexer.inline(o),header:!1,align:r.align[a]})));return r}}lheading(e){const t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){const t=this.rules.block.paragraph.exec(e);if(t){const n=t[1].charAt(t[1].length-1)===` +`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){const t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){const t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:w(t[1])}}tag(e){const t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&/^/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){const t=this.rules.inline.link.exec(e);if(t){const n=t[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;const r=v(n.slice(0,-1),"\\");if((n.length-r.length)%2===0)return}else{const r=Me(t[2],"()");if(r>-1){const o=(t[0].indexOf("!")===0?5:4)+t[1].length+r;t[2]=t[2].substring(0,r),t[0]=t[0].substring(0,o).trim(),t[3]=""}}let s=t[2],i="";if(this.options.pedantic){const r=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(s);r&&(s=r[1],i=r[3])}else i=t[3]?t[3].slice(1,-1):"";return s=s.trim(),/^$/.test(n)?s=s.slice(1):s=s.slice(1,-1)),pe(t,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){const s=(n[2]||n[1]).replace(/\s+/g," "),i=t[s.toLowerCase()];if(!i){const r=n[0].charAt(0);return{type:"text",raw:r,text:r}}return pe(n,i,n[0],this.lexer)}}emStrong(e,t,n=""){let s=this.rules.inline.emStrongLDelim.exec(e);if(!s||s[3]&&n.match(/[\p{L}\p{N}]/u))return;if(!(s[1]||s[2]||"")||!n||this.rules.inline.punctuation.exec(n)){const r=[...s[0]].length-1;let l,o,a=r,h=0;const u=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,t=t.slice(-1*e.length+r);(s=u.exec(t))!=null;){if(l=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!l)continue;if(o=[...l].length,s[3]||s[4]){a+=o;continue}else if((s[5]||s[6])&&r%3&&!((r+o)%3)){h+=o;continue}if(a-=o,a>0)continue;o=Math.min(o,o+a+h);const p=[...s[0]][0].length,f=e.slice(0,r+s.index+p+o);if(Math.min(r,o)%2){const m=f.slice(1,-1);return{type:"em",raw:f,text:m,tokens:this.lexer.inlineTokens(m)}}const g=f.slice(2,-2);return{type:"strong",raw:f,text:g,tokens:this.lexer.inlineTokens(g)}}}}codespan(e){const t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(/\n/g," ");const s=/[^ ]/.test(n),i=/^ /.test(n)&&/ $/.test(n);return s&&i&&(n=n.substring(1,n.length-1)),n=w(n,!0),{type:"codespan",raw:t[0],text:n}}}br(e){const t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){const t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){const t=this.rules.inline.autolink.exec(e);if(t){let n,s;return t[2]==="@"?(n=w(t[1]),s="mailto:"+n):(n=w(t[1]),s=n),{type:"link",raw:t[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}url(e){var n;let t;if(t=this.rules.inline.url.exec(e)){let s,i;if(t[2]==="@")s=w(t[0]),i="mailto:"+s;else{let r;do r=t[0],t[0]=((n=this.rules.inline._backpedal.exec(t[0]))==null?void 0:n[0])??"";while(r!==t[0]);s=w(t[0]),t[1]==="www."?i="http://"+t[0]:i=t[0]}return{type:"link",raw:t[0],text:s,href:i,tokens:[{type:"text",raw:s,text:s}]}}}inlineText(e){const t=this.rules.inline.text.exec(e);if(t){let n;return this.lexer.state.inRawBlock?n=t[0]:n=w(t[0]),{type:"text",raw:t[0],text:n}}}}const Ze=/^(?: *(?:\n|$))+/,De=/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,Oe=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,C=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,je=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,ke=/(?:[*+-]|\d{1,9}[.)])/,xe=k(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g,ke).replace(/blockCode/g,/ {4}/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).getRegex(),X=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Qe=/^[^\n]+/,G=/(?!\s*\])(?:\\.|[^\[\]\\])+/,He=k(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/).replace("label",G).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Ne=k(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,ke).getRegex(),O="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",J=/|$))/,Ve=k("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))","i").replace("comment",J).replace("tag",O).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),be=k(X).replace("hr",C).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O).getRegex(),Ue=k(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",be).getRegex(),Y={blockquote:Ue,code:De,def:He,fences:Oe,heading:je,hr:C,html:Ve,lheading:xe,list:Ne,newline:Ze,paragraph:be,table:I,text:Qe},ue=k("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",C).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O).getRegex(),We={...Y,table:ue,paragraph:k(X).replace("hr",C).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",ue).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",O).getRegex()},Fe={...Y,html:k(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",J).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:I,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:k(X).replace("hr",C).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",xe).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},me=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Xe=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,we=/^( {2,}|\\)\n(?!\s*$)/,Ge=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,Ke=k(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,"u").replace(/punct/g,L).getRegex(),et=k("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])","gu").replace(/punct/g,L).getRegex(),tt=k("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])","gu").replace(/punct/g,L).getRegex(),nt=k(/\\([punct])/,"gu").replace(/punct/g,L).getRegex(),st=k(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),it=k(J).replace("(?:-->|$)","-->").getRegex(),rt=k("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",it).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Z=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,lt=k(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",Z).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ye=k(/^!?\[(label)\]\[(ref)\]/).replace("label",Z).replace("ref",G).getRegex(),$e=k(/^!?\[(ref)\](?:\[\])?/).replace("ref",G).getRegex(),ot=k("reflink|nolink(?!\\()","g").replace("reflink",ye).replace("nolink",$e).getRegex(),K={_backpedal:I,anyPunctuation:nt,autolink:st,blockSkip:Ye,br:we,code:Xe,del:I,emStrongLDelim:Ke,emStrongRDelimAst:et,emStrongRDelimUnd:tt,escape:me,link:lt,nolink:$e,punctuation:Je,reflink:ye,reflinkSearch:ot,tag:rt,text:Ge,url:I},at={...K,link:k(/^!?\[(label)\]\((.*?)\)/).replace("label",Z).getRegex(),reflink:k(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Z).getRegex()},W={...K,escape:k(me).replace("])","~|])").getRegex(),url:k(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\o+" ".repeat(a.length));let s,i,r;for(;e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(l=>(s=l.call({lexer:this},e,t))?(e=e.substring(s.raw.length),t.push(s),!0):!1))){if(s=this.tokenizer.space(e)){e=e.substring(s.raw.length),s.raw.length===1&&t.length>0?t[t.length-1].raw+=` +`:t.push(s);continue}if(s=this.tokenizer.code(e)){e=e.substring(s.raw.length),i=t[t.length-1],i&&(i.type==="paragraph"||i.type==="text")?(i.raw+=` +`+s.raw,i.text+=` +`+s.text,this.inlineQueue[this.inlineQueue.length-1].src=i.text):t.push(s);continue}if(s=this.tokenizer.fences(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.heading(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.hr(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.blockquote(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.list(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.html(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.def(e)){e=e.substring(s.raw.length),i=t[t.length-1],i&&(i.type==="paragraph"||i.type==="text")?(i.raw+=` +`+s.raw,i.text+=` +`+s.raw,this.inlineQueue[this.inlineQueue.length-1].src=i.text):this.tokens.links[s.tag]||(this.tokens.links[s.tag]={href:s.href,title:s.title});continue}if(s=this.tokenizer.table(e)){e=e.substring(s.raw.length),t.push(s);continue}if(s=this.tokenizer.lheading(e)){e=e.substring(s.raw.length),t.push(s);continue}if(r=e,this.options.extensions&&this.options.extensions.startBlock){let l=1/0;const o=e.slice(1);let a;this.options.extensions.startBlock.forEach(h=>{a=h.call({lexer:this},o),typeof a=="number"&&a>=0&&(l=Math.min(l,a))}),l<1/0&&l>=0&&(r=e.substring(0,l+1))}if(this.state.top&&(s=this.tokenizer.paragraph(r))){i=t[t.length-1],n&&(i==null?void 0:i.type)==="paragraph"?(i.raw+=` +`+s.raw,i.text+=` +`+s.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=i.text):t.push(s),n=r.length!==e.length,e=e.substring(s.raw.length);continue}if(s=this.tokenizer.text(e)){e=e.substring(s.raw.length),i=t[t.length-1],i&&i.type==="text"?(i.raw+=` +`+s.raw,i.text+=` +`+s.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=i.text):t.push(s);continue}if(e){const l="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(l);break}else throw new Error(l)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n,s,i,r=e,l,o,a;if(this.tokens.links){const h=Object.keys(this.tokens.links);if(h.length>0)for(;(l=this.tokenizer.rules.inline.reflinkSearch.exec(r))!=null;)h.includes(l[0].slice(l[0].lastIndexOf("[")+1,-1))&&(r=r.slice(0,l.index)+"["+"a".repeat(l[0].length-2)+"]"+r.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(l=this.tokenizer.rules.inline.blockSkip.exec(r))!=null;)r=r.slice(0,l.index)+"["+"a".repeat(l[0].length-2)+"]"+r.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(l=this.tokenizer.rules.inline.anyPunctuation.exec(r))!=null;)r=r.slice(0,l.index)+"++"+r.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;e;)if(o||(a=""),o=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(h=>(n=h.call({lexer:this},e,t))?(e=e.substring(n.raw.length),t.push(n),!0):!1))){if(n=this.tokenizer.escape(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.tag(e)){e=e.substring(n.raw.length),s=t[t.length-1],s&&n.type==="text"&&s.type==="text"?(s.raw+=n.raw,s.text+=n.text):t.push(n);continue}if(n=this.tokenizer.link(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(n.raw.length),s=t[t.length-1],s&&n.type==="text"&&s.type==="text"?(s.raw+=n.raw,s.text+=n.text):t.push(n);continue}if(n=this.tokenizer.emStrong(e,r,a)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.codespan(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.br(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.del(e)){e=e.substring(n.raw.length),t.push(n);continue}if(n=this.tokenizer.autolink(e)){e=e.substring(n.raw.length),t.push(n);continue}if(!this.state.inLink&&(n=this.tokenizer.url(e))){e=e.substring(n.raw.length),t.push(n);continue}if(i=e,this.options.extensions&&this.options.extensions.startInline){let h=1/0;const u=e.slice(1);let p;this.options.extensions.startInline.forEach(f=>{p=f.call({lexer:this},u),typeof p=="number"&&p>=0&&(h=Math.min(h,p))}),h<1/0&&h>=0&&(i=e.substring(0,h+1))}if(n=this.tokenizer.inlineText(i)){e=e.substring(n.raw.length),n.raw.slice(-1)!=="_"&&(a=n.raw.slice(-1)),o=!0,s=t[t.length-1],s&&s.type==="text"?(s.raw+=n.raw,s.text+=n.text):t.push(n);continue}if(e){const h="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return t}}class D{constructor(e){x(this,"options");x(this,"parser");this.options=e||T}space(e){return""}code({text:e,lang:t,escaped:n}){var r;const s=(r=(t||"").match(/^\S*/))==null?void 0:r[0],i=e.replace(/\n$/,"")+` +`;return s?'
'+(n?i:w(i,!0))+`
+`:"
"+(n?i:w(i,!0))+`
+`}blockquote({tokens:e}){return`
+${this.parser.parse(e)}
+`}html({text:e}){return e}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)} +`}hr(e){return`
+`}list(e){const t=e.ordered,n=e.start;let s="";for(let l=0;l +`+s+" +`}listitem(e){let t="";if(e.task){const n=this.checkbox({checked:!!e.checked});e.loose?e.tokens.length>0&&e.tokens[0].type==="paragraph"?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text"&&(e.tokens[0].tokens[0].text=n+" "+e.tokens[0].tokens[0].text)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" "}):t+=n+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`
  • ${t}
  • +`}checkbox({checked:e}){return"'}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    +`}table(e){let t="",n="";for(let i=0;i${s}`),` + +`+t+` +`+s+`
    +`}tablerow({text:e}){return` +${e} +`}tablecell(e){const t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+` +`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${e}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){const s=this.parser.parseInline(n),i=ce(e);if(i===null)return s;e=i;let r='
    ",r}image({href:e,title:t,text:n}){const s=ce(e);if(s===null)return n;e=s;let i=`${n}{const a=l[o].flat(1/0);n=n.concat(this.walkTokens(a,t))}):l.tokens&&(n=n.concat(this.walkTokens(l.tokens,t)))}}return n}use(...e){const t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{const s={...n};if(s.async=this.defaults.async||s.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error("extension name required");if("renderer"in i){const r=t.renderers[i.name];r?t.renderers[i.name]=function(...l){let o=i.renderer.apply(this,l);return o===!1&&(o=r.apply(this,l)),o}:t.renderers[i.name]=i.renderer}if("tokenizer"in i){if(!i.level||i.level!=="block"&&i.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");const r=t[i.level];r?r.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level==="block"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level==="inline"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}"childTokens"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),s.extensions=t),n.renderer){const i=this.defaults.renderer||new D(this.defaults);for(const r in n.renderer){if(!(r in i))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;const l=r,o=n.renderer[l],a=i[l];i[l]=(...h)=>{let u=o.apply(i,h);return u===!1&&(u=a.apply(i,h)),u||""}}s.renderer=i}if(n.tokenizer){const i=this.defaults.tokenizer||new P(this.defaults);for(const r in n.tokenizer){if(!(r in i))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;const l=r,o=n.tokenizer[l],a=i[l];i[l]=(...h)=>{let u=o.apply(i,h);return u===!1&&(u=a.apply(i,h)),u}}s.tokenizer=i}if(n.hooks){const i=this.defaults.hooks||new A;for(const r in n.hooks){if(!(r in i))throw new Error(`hook '${r}' does not exist`);if(r==="options")continue;const l=r,o=n.hooks[l],a=i[l];A.passThroughHooks.has(r)?i[l]=h=>{if(this.defaults.async)return Promise.resolve(o.call(i,h)).then(p=>a.call(i,p));const u=o.call(i,h);return a.call(i,u)}:i[l]=(...h)=>{let u=o.apply(i,h);return u===!1&&(u=a.apply(i,h)),u}}s.hooks=i}if(n.walkTokens){const i=this.defaults.walkTokens,r=n.walkTokens;s.walkTokens=function(l){let o=[];return o.push(r.call(this,l)),i&&(o=o.concat(i.call(this,l))),o}}this.defaults={...this.defaults,...s}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return y.lex(e,t??this.defaults)}parser(e,t){return $.parse(e,t??this.defaults)}parseMarkdown(e,t){return(s,i)=>{const r={...i},l={...this.defaults,...r},o=this.onError(!!l.silent,!!l.async);if(this.defaults.async===!0&&r.async===!1)return o(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof s>"u"||s===null)return o(new Error("marked(): input parameter is undefined or null"));if(typeof s!="string")return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(s)+", string expected"));if(l.hooks&&(l.hooks.options=l),l.async)return Promise.resolve(l.hooks?l.hooks.preprocess(s):s).then(a=>e(a,l)).then(a=>l.hooks?l.hooks.processAllTokens(a):a).then(a=>l.walkTokens?Promise.all(this.walkTokens(a,l.walkTokens)).then(()=>a):a).then(a=>t(a,l)).then(a=>l.hooks?l.hooks.postprocess(a):a).catch(o);try{l.hooks&&(s=l.hooks.preprocess(s));let a=e(s,l);l.hooks&&(a=l.hooks.processAllTokens(a)),l.walkTokens&&this.walkTokens(a,l.walkTokens);let h=t(a,l);return l.hooks&&(h=l.hooks.postprocess(h)),h}catch(a){return o(a)}}}onError(e,t){return n=>{if(n.message+=` +Please report this to https://github.com/markedjs/marked.`,e){const s="

    An error occurred:

    "+w(n.message+"",!0)+"
    ";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}}const z=new ht;function d(c,e){return z.parse(c,e)}d.options=d.setOptions=function(c){return z.setOptions(c),d.defaults=z.defaults,fe(d.defaults),d};d.getDefaults=F;d.defaults=T;d.use=function(...c){return z.use(...c),d.defaults=z.defaults,fe(d.defaults),d};d.walkTokens=function(c,e){return z.walkTokens(c,e)};d.parseInline=z.parseInline;d.Parser=$;d.parser=$.parse;d.Renderer=D;d.TextRenderer=ee;d.Lexer=y;d.lexer=y.lex;d.Tokenizer=P;d.Hooks=A;d.parse=d;d.options;d.setOptions;d.use;d.walkTokens;d.parseInline;$.parse;y.lex;const pt={class:"field-label"},ut={key:0,class:"required"},ft={class:"md-editor"},gt={class:"md-editor__toolbar"},dt=["innerHTML"],kt={key:2,class:"md-editor__actions"},xt=Re({__name:"MarkdownEditor",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(c){const e=c,t=ie(()=>e.df.label_layout||"vertical"),n=Q(null);let s=null,i=null;const r=Q(!1),l=Q("preview"),o=ie(()=>{try{return d.parse(String(e.record[e.df.fieldname]||""))}catch{return String(e.record[e.df.fieldname]||"")}});async function a(){if(!n.value||(s||(s=await Te.init()),i))return;i=s.editor.create(n.value,{value:String(e.record[e.df.fieldname]||""),language:"markdown",automaticLayout:!0,folding:!0,minimap:{enabled:!1},readOnly:!e.canEdit,wordWrap:"on",wordWrapColumn:120,wrappingStrategy:"advanced",scrollBeyondLastLine:!1,scrollBeyondLastColumn:0,scrollbar:{horizontal:"hidden",vertical:"auto",horizontalScrollbarSize:6,verticalScrollbarSize:6,alwaysConsumeMouseWheel:!1}});const p=()=>{if(!i||!n.value)return;const f=i.getLayoutInfo(),g=i.getScrollHeight()>f.height+1,m=i.getScrollWidth()>f.width+1;n.value.classList.toggle("no-scroll-y",!g),n.value.classList.toggle("no-scroll-x",!m)};p(),i.onDidContentSizeChange(()=>p()),i.onDidScrollChange(()=>p()),i.onDidLayoutChange(()=>p()),i.onDidChangeModelContent(()=>{i&&(e.record[e.df.fieldname]=i.getValue(),p())})}function h(){try{i==null||i.dispose()}catch{}i=null}function u(){r.value=!r.value,U(()=>i==null?void 0:i.layout())}return H(()=>e.canEdit,p=>{i==null||i.updateOptions({readOnly:!p})}),H(()=>e.record[e.df.fieldname],p=>{i&&p!==i.getValue()&&i.setValue(String(p||""))}),Se(()=>{}),H(l,async p=>{p==="edit"?(await U(),await a(),U(()=>i==null?void 0:i.layout())):h()}),ve(h),(p,f)=>{var m;const g=Ie("n-button");return _(),S("div",{class:oe(["field-wrapper",`layout-${t.value}`])},[N("label",pt,[B(q((m=p.ctx)!=null&&m.t?p.ctx.t(p.df.label||p.df.fieldname):p.df.label||p.df.fieldname)+" ",1),p.df.reqd?(_(),S("span",ut,"*")):re("",!0)]),N("div",ft,[N("div",gt,[l.value==="edit"?(_(),le(g,{key:0,size:"tiny",quaternary:"",type:"default",onClick:f[0]||(f[0]=b=>l.value="preview")},{default:V(()=>{var b;return[B(q((b=e.ctx)!=null&&b.t?e.ctx.t("Preview"):"Preview"),1)]}),_:1})):(_(),le(g,{key:1,size:"tiny",quaternary:"",type:"default",onClick:f[1]||(f[1]=b=>l.value="edit")},{default:V(()=>{var b;return[B(q((b=e.ctx)!=null&&b.t?e.ctx.t("Edit"):"Edit"),1)]}),_:1}))]),l.value==="preview"?(_(),S("div",{key:0,class:"md-editor__preview",innerHTML:o.value},null,8,dt)):(_(),S("div",{key:1,ref_key:"editorHost",ref:n,class:oe(["md-editor__monaco",{collapsed:!r.value}])},null,2)),l.value==="edit"?(_(),S("div",kt,[Ee(g,{size:"tiny",quaternary:"",onClick:u},{default:V(()=>{var b,R;return[B(q(r.value?(b=e.ctx)!=null&&b.t?e.ctx.t("Collapse"):"Collapse":(R=e.ctx)!=null&&R.t?e.ctx.t("Expand"):"Expand"),1)]}),_:1})])):re("",!0)])],2)}}});const bt=Ae(xt,[["__scopeId","data-v-e1c042e1"]]),_t=Object.freeze(Object.defineProperty({__proto__:null,default:bt},Symbol.toStringTag,{value:"Module"}));export{_t as _}; diff --git a/apps/jingrow/frontend/dist/assets/MenuManager-51464072.js b/apps/jingrow/frontend/dist/assets/MenuManager-51464072.js new file mode 100644 index 0000000..0493415 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MenuManager-51464072.js @@ -0,0 +1 @@ +import{u as ue}from"./menu-1e1b8738.js";import{d as ne,a as re,c as w,X as oe,t as a,A as R,r as k,e as se,f as y,g as f,j as l,p as g,h as o,w as p,n as D,I as P,l as T,ac as pe,q as de,N as m,m as M,Z as B,D as x,s as E,y as S,ad as ie,ae as ve,af as ce}from"./index-d271a6a3.js";import{p as _}from"./slug-9937a98a.js";import ye from"./IconPicker-661ac603.js";import{_ as fe}from"./_plugin-vue_export-helper-c27b6911.js";import"./iconify-242f8a3c.js";import"./index-362e01cb.js";const me={class:"page-menu-manager"},ge={class:"page-header"},ke={class:"header-left"},be={class:"page-description"},he={class:"header-right"},we={class:"page-content"},Ne=ne({__name:"MenuManager",setup(Ie){const i=ue(),U=re();function V(e){const t={};e.forEach(r=>t[r.id]={...r,children:[]});const u=[];e.forEach(r=>{const d=r.parentId;d&&t[d]?t[d].children.push(t[r.id]):u.push(t[r.id])});const s=r=>{r.forEach(d=>{d.children&&d.children.length?s(d.children):delete d.children})};return s(u),u}const A=w(()=>{var u;const t=((u=U.user)==null?void 0:u.user_type)==="System User";return i.items.filter(s=>{if(s.hidden)return!1;if(!t){if(s.type==="pagetype"||s.type==="workspace")return!1;const r=["tools","dev-group","menuManager","settings"];if(!s.parentId&&!r.includes(s.id)||s.parentId==="dev-group"&&!["app-marketplace","node-marketplace","agent-marketplace","tool-marketplace"].includes(s.id))return!1}return!0})}),z=w(()=>c.value?h.value:A.value),L=w(()=>V(z.value)),C=oe(),K=[{title:a("Display Name"),key:"label"},{title:a("Type"),key:"type",render:e=>({pagetype:a("PageType"),route:a("Route"),url:a("URL"),workspace:a("Workspace"),group:a("Group")})[e.type]||e.type},{title:a("Parent Menu"),key:"parentId",render:e=>{if(!e.parentId)return a("None");const t=i.items.find(u=>u.id===e.parentId);return t?t.label:a("None")}},{title:a("PageType"),key:"pagetype"},{title:a("Workspace"),key:"workspaceName"},{title:a("Route Name"),key:"routeName"},{title:a("URL Path"),key:"url"},{title:a("Icon"),key:"icon"},{title:a("Order"),key:"order"},{title:a("Hidden"),key:"hidden",render:e=>e.hidden?a("Yes"):a("No")},{title:a("Actions"),key:"actions",render:e=>R(P,{},{default:()=>[R(D,{size:"small",onClick:()=>H(e)},{default:()=>a("Edit")}),R(D,{size:"small",type:"error",onClick:()=>J(e)},{default:()=>a("Delete")})]})}],b=k(!1),N=k(null),n=k({id:"",key:"",label:"",icon:"MenuOutlined",type:"pagetype",pagetype:"",routeName:"",url:"",order:0,hidden:!1}),O=k(null),W={label:[{required:!0,message:a("Please enter display name")}],type:[{required:!0,message:a("Please select menu type")}]},q=w(()=>{var s;const t=((s=U.user)==null?void 0:s.user_type)==="System User",u=[{label:a("PageType"),value:"pagetype"},{label:a("Route"),value:"route"},{label:a("URL"),value:"url"},{label:a("Workspace"),value:"workspace"},{label:a("Group"),value:"group"}];return t?u:u.filter(r=>r.value!=="pagetype"&&r.value!=="workspace")}),j=w(()=>{const e=A.value.map(t=>({label:t.label,value:t.id}));return[{label:a("None"),value:null}].concat(e)}),F=w(()=>n.value.type==="pagetype"&&n.value.pagetype?`/app/${_(n.value.pagetype)}`:"");function G(){var u;N.value=null;const t=((u=U.user)==null?void 0:u.user_type)==="System User";n.value={id:"",key:"",label:"",icon:"",type:t?"pagetype":"route",pagetype:"",routeName:"",url:"",order:0,hidden:!1,parentId:null},b.value=!0}function H(e){N.value=e,n.value={...e},b.value=!0}function X(){n.value.pagetype="",n.value.routeName="",n.value.url="",n.value.workspaceName=""}function Y(){if(n.value.type==="pagetype"&&n.value.pagetype){const e=_(n.value.pagetype);n.value.url=`/app/${e}`}}function Z(){var s,r;const e={...n.value};if(!(((s=U.user)==null?void 0:s.user_type)==="System User")&&(e.type==="pagetype"||e.type==="workspace")){C.error({title:a("Permission Denied"),content:a("Non-System User cannot create or edit pagetype and workspace menu items"),positiveText:a("OK")});return}e.type==="pagetype"&&e.pagetype?(e.key=_(e.pagetype),e.url=`/app/${e.key}`):e.type==="workspace"&&e.workspaceName?(e.key=_(e.workspaceName),e.url=`/workspace/${e.key}`):e.type==="route"&&e.routeName?e.key=e.routeName:e.type==="url"&&e.url?e.key=e.url:e.type==="group"&&(e.key=e.key||`group_${Date.now()}`),(r=O.value)==null||r.validate(d=>{d||(N.value?i.updateMenu(N.value.id,e):(e.id="",i.addMenu(e)),b.value=!1)})}function J(e){C.warning({title:a("Confirm Delete"),content:`${a("Are you sure you want to delete menu")}"${e.label}"?`,positiveText:a("Delete"),negativeText:a("Cancel"),onPositiveClick:()=>i.removeMenu(e.id)})}function Q(){C.warning({title:a("Reset to Default"),content:a("Are you sure to reset menus to default? This will overwrite current settings."),positiveText:a("Confirm"),negativeText:a("Cancel"),onPositiveClick:()=>i.resetDefault()})}const c=k(null),v=k(-1),h=k([]);function ee(e,t){var s;const u=i.items.findIndex(r=>r.id===e.id);return{draggable:!0,class:{"draggable-row":!0,"drag-over":v.value===u,dragging:((s=c.value)==null?void 0:s.id)===e.id},onDragstart:r=>{c.value=e,h.value=[...i.items],r.dataTransfer.effectAllowed="move"},onDragover:r=>{r.preventDefault(),c.value&&v.value!==u&&(v.value=u,ae())},onDragleave:()=>{setTimeout(()=>{c.value||(v.value=-1,h.value=[...i.items])},50)},onDrop:r=>{r.preventDefault(),c.value&&v.value!==-1&&te(),$()},onDragend:$}}function ae(){if(!c.value||v.value===-1)return;const e=[...i.items],t=e.findIndex(s=>s.id===c.value.id);if(t===-1||t===v.value)return;e.splice(t,1);const u=v.value>t?v.value-1:v.value;e.splice(u,0,c.value),h.value=e}function te(){if(!c.value||v.value===-1)return;const e=[...h.value],t=e.filter(r=>!r.parentId),u=e.filter(r=>r.parentId);t.forEach((r,d)=>{r.order=d+1});const s=u.reduce((r,d)=>{const I=d.parentId;return r[I]||(r[I]=[]),r[I].push(d),r},{});Object.values(s).forEach(r=>{r.forEach((d,I)=>{d.order=I+1})}),i.items=e,i.persist()}function $(){c.value=null,v.value=-1,h.value=[...i.items]}function le(e){console.log("Selected rows:",e)}return(e,t)=>(T(),se("div",me,[y("div",ge,[y("div",ke,[y("h2",null,f(l(a)("Menu Management")),1),y("p",be,f(l(a)("Manage navigation menu items")),1)]),y("div",he,[y("button",{class:"reset-btn",onClick:Q},[t[12]||(t[12]=y("i",{class:"fa fa-undo"},null,-1)),g(" "+f(l(a)("Reset to Default")),1)]),y("button",{class:"create-btn",onClick:G},[t[13]||(t[13]=y("i",{class:"fa fa-plus"},null,-1)),g(" "+f(l(a)("Add Menu")),1)])])]),y("div",we,[o(l(P),{vertical:"",size:16},{default:p(()=>[o(l(pe),{columns:K,data:L.value,bordered:!1,"row-key":u=>u.id,"row-props":(u,s)=>ee(u,s),"onUpdate:checkedRowKeys":le},null,8,["data","row-key","row-props"])]),_:1})]),o(l(ce),{show:b.value,"onUpdate:show":t[11]||(t[11]=u=>b.value=u),preset:"dialog",title:N.value?l(a)("Edit Menu"):l(a)("Add Menu")},{action:p(()=>[o(l(P),null,{default:p(()=>[o(l(D),{onClick:t[10]||(t[10]=u=>b.value=!1)},{default:p(()=>[g(f(l(a)("Cancel")),1)]),_:1}),o(l(D),{type:"primary",onClick:Z},{default:p(()=>[g(f(l(a)("Save")),1)]),_:1})]),_:1})]),default:p(()=>[o(l(de),{model:n.value,rules:W,"label-width":"100",ref_key:"formRef",ref:O},{default:p(()=>[o(l(m),{label:l(a)("Display Name")},{default:p(()=>[o(l(M),{value:n.value.label,"onUpdate:value":t[0]||(t[0]=u=>n.value.label=u)},null,8,["value"])]),_:1},8,["label"]),o(l(m),{label:l(a)("Menu Type")},{default:p(()=>[o(l(B),{value:n.value.type,"onUpdate:value":[t[1]||(t[1]=u=>n.value.type=u),X],options:q.value,placeholder:l(a)("Select Menu Type")},null,8,["value","options","placeholder"])]),_:1},8,["label"]),o(l(m),{label:l(a)("Parent Menu"),path:"parentId"},{default:p(()=>[o(l(B),{value:n.value.parentId,"onUpdate:value":t[2]||(t[2]=u=>n.value.parentId=u),options:j.value,placeholder:l(a)("No parent (top-level)"),clearable:""},null,8,["value","options","placeholder"])]),_:1},8,["label"]),n.value.type==="pagetype"?(T(),x(l(m),{key:0,label:l(a)("PageType Name")},{feedback:p(()=>[o(l(E),{depth:"3",style:{"font-size":"12px"}},{default:p(()=>[g(f(l(a)("Enter PageType name, system will auto-generate friendly URL"))+":"+f(F.value),1)]),_:1})]),default:p(()=>[o(l(M),{value:n.value.pagetype,"onUpdate:value":t[3]||(t[3]=u=>n.value.pagetype=u),placeholder:l(a)("Enter PageType name, e.g.: Knowledge Base"),onInput:Y},null,8,["value","placeholder"])]),_:1},8,["label"])):S("",!0),n.value.type==="route"?(T(),x(l(m),{key:1,label:l(a)("Route Name")},{default:p(()=>[o(l(M),{value:n.value.routeName,"onUpdate:value":t[4]||(t[4]=u=>n.value.routeName=u),placeholder:l(a)("Enter route name, e.g.: Dashboard")},null,8,["value","placeholder"])]),_:1},8,["label"])):S("",!0),n.value.type==="url"?(T(),x(l(m),{key:2,label:l(a)("URL Path")},{feedback:p(()=>[o(l(E),{depth:"3",style:{"font-size":"12px"}},{default:p(()=>[g(f(l(a)("Internal path: /app/knowledge-base"))+" ",1),t[14]||(t[14]=y("br",null,null,-1)),g(" "+f(l(a)("External link: starts with http:// or https://")),1)]),_:1})]),default:p(()=>[o(l(M),{value:n.value.url,"onUpdate:value":t[5]||(t[5]=u=>n.value.url=u),placeholder:l(a)("Enter complete URL path")},null,8,["value","placeholder"])]),_:1},8,["label"])):S("",!0),n.value.type==="workspace"?(T(),x(l(m),{key:3,label:l(a)("Workspace Name")},{feedback:p(()=>[o(l(E),{depth:"3",style:{"font-size":"12px"}},{default:p(()=>[g(" 打开路径:/workspace/"+f(l(_)(n.value.workspaceName||"")),1)]),_:1})]),default:p(()=>[o(l(M),{value:n.value.workspaceName,"onUpdate:value":t[6]||(t[6]=u=>n.value.workspaceName=u),placeholder:l(a)("e.g. Build or custom workspace name")},null,8,["value","placeholder"])]),_:1},8,["label"])):S("",!0),o(l(m),{label:l(a)("Icon")},{default:p(()=>[o(ye,{modelValue:n.value.icon,"onUpdate:modelValue":t[7]||(t[7]=u=>n.value.icon=u)},null,8,["modelValue"])]),_:1},8,["label"]),o(l(m),{label:l(a)("Order")},{default:p(()=>[o(l(ie),{value:n.value.order,"onUpdate:value":t[8]||(t[8]=u=>n.value.order=u),min:0},null,8,["value"])]),_:1},8,["label"]),o(l(m),{label:l(a)("Hidden")},{default:p(()=>[o(l(ve),{value:n.value.hidden,"onUpdate:value":t[9]||(t[9]=u=>n.value.hidden=u)},null,8,["value"])]),_:1},8,["label"])]),_:1},8,["model"])]),_:1},8,["show","title"])]))}});const Ce=fe(Ne,[["__scopeId","data-v-d5cdce81"]]);export{Ce as default}; diff --git a/apps/jingrow/frontend/dist/assets/MenuManager-e782a899.css b/apps/jingrow/frontend/dist/assets/MenuManager-e782a899.css new file mode 100644 index 0000000..2c1cc8a --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MenuManager-e782a899.css @@ -0,0 +1 @@ +.page-menu-manager[data-v-d5cdce81]{width:100%;padding:16px}.page-header[data-v-d5cdce81]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid #e5e7eb}.header-left h2[data-v-d5cdce81]{font-size:24px;font-weight:700;color:#1f2937;margin:0 0 4px}.page-description[data-v-d5cdce81]{font-size:14px;color:#6b7280;margin:0}.header-right[data-v-d5cdce81]{display:flex;align-items:center;gap:12px}.reset-btn[data-v-d5cdce81]{height:36px;padding:0 16px;border:1px solid #d1d5db;border-radius:8px;background:#ffffff;color:#6b7280;cursor:pointer;display:flex;align-items:center;gap:6px;font-size:14px;font-weight:500;transition:all .2s cubic-bezier(.4,0,.2,1)}.reset-btn[data-v-d5cdce81]:hover{background:#f9fafb;color:#374151;border-color:#9ca3af;transform:translateY(-1px);box-shadow:0 4px 12px #0000001a}.reset-btn[data-v-d5cdce81]:active{transform:translateY(0);box-shadow:0 2px 6px #0000001a}.reset-btn i[data-v-d5cdce81]{font-size:12px}.create-btn[data-v-d5cdce81]{height:36px;padding:0 16px;border:1px solid #1fc76f;border-radius:8px;background:#e6f8f0;color:#0d684b;cursor:pointer;display:flex;align-items:center;gap:6px;font-size:14px;font-weight:500;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.create-btn[data-v-d5cdce81]:hover{background:#dcfce7;border-color:#1fc76f;color:#166534;transform:translateY(-1px);box-shadow:0 2px 8px #1fc76f26}.create-btn[data-v-d5cdce81]:active{background:#1fc76f;border-color:#1fc76f;color:#fff;transform:translateY(0);box-shadow:0 1px 4px #1fc76f33}.create-btn[data-v-d5cdce81]:disabled{background:#f1f5f9;border-color:#e2e8f0;color:#94a3b8;opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.create-btn[data-v-d5cdce81]:disabled:hover{background:#f1f5f9;border-color:#e2e8f0;color:#94a3b8;transform:none;box-shadow:none}.create-btn i[data-v-d5cdce81]{font-size:12px}.page-content[data-v-d5cdce81]{margin-top:16px}@media (max-width: 768px){.page-menu-manager[data-v-d5cdce81]{padding:12px}.page-header[data-v-d5cdce81]{flex-direction:column;align-items:flex-start;gap:16px}.header-right[data-v-d5cdce81]{width:100%;justify-content:flex-end}.header-left h2[data-v-d5cdce81]{font-size:20px}}@media (max-width: 480px){.page-menu-manager[data-v-d5cdce81]{padding:8px}.header-right[data-v-d5cdce81]{flex-direction:column;width:100%;gap:8px}.reset-btn[data-v-d5cdce81],.create-btn[data-v-d5cdce81]{width:100%;justify-content:center}.header-left h2[data-v-d5cdce81]{font-size:18px}}[data-v-d5cdce81] .draggable-row{cursor:grab;transition:opacity .2s ease}[data-v-d5cdce81] .draggable-row:hover{background-color:#f8fafc}[data-v-d5cdce81] .draggable-row:active{cursor:grabbing}[data-v-d5cdce81] .draggable-row.dragging{opacity:.7;background-color:#f0f9ff;border:1px dashed #3b82f6}[data-v-d5cdce81] .draggable-row.drag-over{border-top:2px solid #3b82f6}[data-v-d5cdce81] .n-data-table{border-radius:8px}[data-v-d5cdce81] .draggable-row *{-webkit-user-select:none;user-select:none}[data-v-d5cdce81] .n-data-table-tbody tr{transition:all .2s ease} diff --git a/apps/jingrow/frontend/dist/assets/MultiCheck-73d11ae9.js b/apps/jingrow/frontend/dist/assets/MultiCheck-73d11ae9.js new file mode 100644 index 0000000..0d32640 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MultiCheck-73d11ae9.js @@ -0,0 +1 @@ +import{d as y,c as h,e as r,f as o,p as n,g as i,y as k,F as b,C as v,Y as g,l,D as C,w as B,j as O,a3 as S}from"./index-d271a6a3.js";import{_ as A}from"./_plugin-vue_export-helper-c27b6911.js";const M={class:"field-label"},N={key:0,class:"required"},j={class:"multicheck-container"},w=y({__name:"MultiCheck",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(f){const u=f,_=h(()=>u.df.label_layout||"vertical");function p(e,t){const a=e[t];return Array.isArray(a)?a:[]}function m(e,t,a,c){Array.isArray(e[t])||(e[t]=[]);const s=e[t];if(c)s.includes(a)||s.push(a);else{const d=s.indexOf(a);d>-1&&s.splice(d,1)}}return(e,t)=>(l(),r("div",{class:g(["field-wrapper",`layout-${_.value}`])},[o("label",M,[n(i(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(l(),r("span",N,"*")):k("",!0)]),o("div",j,[(l(!0),r(b,null,v(e.ctx.getSelectOptions?e.ctx.getSelectOptions(e.df):[],a=>(l(),C(O(S),{key:a.value,checked:p(e.record,e.df.fieldname).includes(a.value),"onUpdate:checked":c=>m(e.record,e.df.fieldname,a.value,c),disabled:!e.canEdit},{default:B(()=>[n(i(a.label),1)]),_:2},1032,["checked","onUpdate:checked","disabled"]))),128))])],2))}});const E=A(w,[["__scopeId","data-v-4f5f405e"]]),D=Object.freeze(Object.defineProperty({__proto__:null,default:E},Symbol.toStringTag,{value:"Module"}));export{D as _}; diff --git a/apps/jingrow/frontend/dist/assets/MultiCheck-dcdd6a2f.css b/apps/jingrow/frontend/dist/assets/MultiCheck-dcdd6a2f.css new file mode 100644 index 0000000..bca6dd3 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MultiCheck-dcdd6a2f.css @@ -0,0 +1 @@ +.field-wrapper[data-v-4f5f405e] .multicheck-container{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/MultiSelect-533500c8.css b/apps/jingrow/frontend/dist/assets/MultiSelect-533500c8.css new file mode 100644 index 0000000..8250687 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MultiSelect-533500c8.css @@ -0,0 +1 @@ +.field-wrapper[data-v-89f34463] .n-select{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/MultiSelect-cae41242.js b/apps/jingrow/frontend/dist/assets/MultiSelect-cae41242.js new file mode 100644 index 0000000..9826ab1 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MultiSelect-cae41242.js @@ -0,0 +1 @@ +import{d as r,c as i,e as a,f as p,p as c,g as f,y as u,h as _,j as m,Y as b,l as t,Z as v}from"./index-d271a6a3.js";import{_ as y}from"./_plugin-vue_export-helper-c27b6911.js";const S={class:"field-label"},g={key:0,class:"required"},N=r({__name:"MultiSelect",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(o){const s=o,d=i(()=>s.df.label_layout||"vertical");return(e,l)=>(t(),a("div",{class:b(["field-wrapper",`layout-${d.value}`])},[p("label",S,[c(f(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(t(),a("span",g,"*")):u("",!0)]),_(m(v),{value:e.record[e.df.fieldname],"onUpdate:value":l[0]||(l[0]=n=>e.record[e.df.fieldname]=n),options:e.ctx.getSelectOptions?e.ctx.getSelectOptions(e.df):[],multiple:"",placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","options","placeholder","disabled"])],2))}});const h=y(N,[["__scopeId","data-v-89f34463"]]),O=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{O as _}; diff --git a/apps/jingrow/frontend/dist/assets/MultiSelectList-32f65cef.js b/apps/jingrow/frontend/dist/assets/MultiSelectList-32f65cef.js new file mode 100644 index 0000000..9cd9cdd --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MultiSelectList-32f65cef.js @@ -0,0 +1 @@ +import{d as r,c as i,e as t,f as p,p as c,g as f,y as u,h as _,j as m,Y as b,l as a,Z as v}from"./index-d271a6a3.js";import{_ as y}from"./_plugin-vue_export-helper-c27b6911.js";const S={class:"field-label"},g={key:0,class:"required"},N=r({__name:"MultiSelectList",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(o){const s=o,d=i(()=>s.df.label_layout||"vertical");return(e,l)=>(a(),t("div",{class:b(["field-wrapper",`layout-${d.value}`])},[p("label",S,[c(f(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(a(),t("span",g,"*")):u("",!0)]),_(m(v),{value:e.record[e.df.fieldname],"onUpdate:value":l[0]||(l[0]=n=>e.record[e.df.fieldname]=n),options:e.ctx.getSelectOptions?e.ctx.getSelectOptions(e.df):[],multiple:"",placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","options","placeholder","disabled"])],2))}});const h=y(N,[["__scopeId","data-v-d603d379"]]),M=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{M as _}; diff --git a/apps/jingrow/frontend/dist/assets/MultiSelectList-d72c9fa6.css b/apps/jingrow/frontend/dist/assets/MultiSelectList-d72c9fa6.css new file mode 100644 index 0000000..26dd67e --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MultiSelectList-d72c9fa6.css @@ -0,0 +1 @@ +.field-wrapper[data-v-d603d379] .n-select{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/MultiSelectPills-109d7a64.js b/apps/jingrow/frontend/dist/assets/MultiSelectPills-109d7a64.js new file mode 100644 index 0000000..fc0cd42 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MultiSelectPills-109d7a64.js @@ -0,0 +1 @@ +import{d as r,c as i,e as a,f as p,p as c,g as f,y as u,h as _,j as m,Y as b,l as t,Z as v}from"./index-d271a6a3.js";import{_ as y}from"./_plugin-vue_export-helper-c27b6911.js";const S={class:"field-label"},g={key:0,class:"required"},N=r({__name:"MultiSelectPills",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(o){const s=o,d=i(()=>s.df.label_layout||"vertical");return(e,l)=>(t(),a("div",{class:b(["field-wrapper",`layout-${d.value}`])},[p("label",S,[c(f(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(t(),a("span",g,"*")):u("",!0)]),_(m(v),{value:e.record[e.df.fieldname],"onUpdate:value":l[0]||(l[0]=n=>e.record[e.df.fieldname]=n),options:e.ctx.getSelectOptions?e.ctx.getSelectOptions(e.df):[],multiple:"",placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","options","placeholder","disabled"])],2))}});const h=y(N,[["__scopeId","data-v-b4b95f53"]]),O=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{O as _}; diff --git a/apps/jingrow/frontend/dist/assets/MultiSelectPills-75741655.css b/apps/jingrow/frontend/dist/assets/MultiSelectPills-75741655.css new file mode 100644 index 0000000..df0c097 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MultiSelectPills-75741655.css @@ -0,0 +1 @@ +.field-wrapper[data-v-b4b95f53] .n-select{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/MyPublishedAgents-f28234cd.js b/apps/jingrow/frontend/dist/assets/MyPublishedAgents-f28234cd.js new file mode 100644 index 0000000..2a3878d --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MyPublishedAgents-f28234cd.js @@ -0,0 +1 @@ +import{d as R,u as q,X as Q,r as _,c as $,o as X,M,e as c,f as o,g as d,j as t,h as l,w as i,i as Y,F as G,C as H,y as h,k as J,a0 as B,t as a,l as r,$ as C,m as W,p as z,n as D,Z as ee,D as te,a1 as se,Y as ae,_ as oe,as as ne,aA as le}from"./index-d271a6a3.js";import{I as y}from"./iconify-242f8a3c.js";import{_ as ie}from"./_plugin-vue_export-helper-c27b6911.js";const re={class:"my-published-agents"},ce={class:"page-header"},de={class:"header-content"},ue={class:"header-text"},pe={class:"content"},ge={class:"search-container"},ve={class:"search-bar"},_e={key:0,class:"agents-section"},he={class:"agents-header"},me={class:"sort-controls"},ye={class:"agents-grid"},fe=["onClick"],be={key:1,class:"agent-icon-placeholder"},ke={class:"agent-content"},Ce={class:"agent-header"},we={class:"agent-title-section"},Se=["onClick"],Ne={class:"agent-meta"},ze={key:0,class:"agent-team"},Pe={key:0,class:"agent-name"},Ae={key:0,class:"agent-description"},Me={class:"agent-actions"},De={class:"pagination-container"},xe={key:1,class:"loading"},Ie={key:2,class:"empty"},Te=R({__name:"MyPublishedAgents",setup($e){const f=q(),U=Q(),F=J(),w=_(""),b=_(!1),g=_([]),S=_(0),v=_(1),k=_(parseInt(localStorage.getItem("itemsPerPage")||"20")),N=_("creation desc"),L=$(()=>[{label:a("Latest"),value:"creation desc"},{label:a("Oldest"),value:"creation asc"},{label:a("Name A-Z"),value:"name asc"},{label:a("Name Z-A"),value:"name desc"},{label:a("Most Popular"),value:"modified desc"}]),V=$(()=>Math.max(1,Math.ceil(S.value/k.value)));async function u(){b.value=!0;try{const s=new URLSearchParams({page:v.value.toString(),page_size:k.value.toString(),search:w.value,sort_by:N.value}),e=(await B.get(`/jingrow/my-published-agents?${s}`)).data;e.items?(g.value=e.items,S.value=e.total||0):(g.value=e||[],S.value=g.value.length)}catch(s){console.error("Failed to load agents:",s),f.error(a("Failed to load agents")),g.value=[],S.value=0}finally{b.value=!1}}function j(s){k.value=s,v.value=1,localStorage.setItem("itemsPerPage",s.toString()),u()}function P(s){F.push({path:`/agent-marketplace/${s.name}`,query:{returnTo:"/my-published-agents"}})}function Z(s,n){return s?s.length<=n?s:s.substring(0,n)+"...":""}function E(s){return s?s.toLowerCase().replace(/\s+/g,"-"):""}async function K(s){const n=s.name;if(!n){f.error(a("Agent name does not exist"));return}const e=s.title||s.agent_name||n;U.warning({title:a("Confirm Delete"),content:a('Are you sure you want to delete agent "{0}"? This action cannot be undone.').replace("{0}",e),positiveText:a("Confirm Delete"),negativeText:a("Cancel"),onPositiveClick:async()=>{await O(n)}})}async function O(s){var n,e,m,x,I,T;try{const p=await B.post("/jingrow/delete-published-agent",{name:s},{withCredentials:!0});if(p.data&&p.data.success)f.success(p.data.message||a("Agent deleted successfully")),u();else{const A=((n=p.data)==null?void 0:n.message)||((e=p.data)==null?void 0:e.error)||a("Delete failed");f.error(A)}}catch(p){console.error("Delete agent error:",p);const A=((x=(m=p.response)==null?void 0:m.data)==null?void 0:x.detail)||((T=(I=p.response)==null?void 0:I.data)==null?void 0:T.message)||p.message||a("Delete failed");f.error(A)}}return X(()=>{u()}),M([w,N],()=>{v.value=1,u()},{deep:!0}),M([v],()=>{u()}),M(()=>localStorage.getItem("itemsPerPage"),s=>{s&&(k.value=parseInt(s),v.value=1,u())}),(s,n)=>(r(),c("div",re,[o("div",ce,[o("div",de,[o("div",ue,[o("h1",null,d(t(a)("My Published Agents")),1),o("p",null,d(t(a)("Manage your published agents in the marketplace")),1)])])]),o("div",pe,[o("div",ge,[o("div",ve,[l(t(W),{value:w.value,"onUpdate:value":n[0]||(n[0]=e=>w.value=e),placeholder:t(a)("Search agents..."),clearable:"",size:"large",onKeyup:Y(u,["enter"]),class:"search-input"},{prefix:i(()=>[l(t(C),null,{default:i(()=>[l(t(y),{icon:"tabler:search"})]),_:1})]),_:1},8,["value","placeholder"]),l(t(D),{type:"primary",size:"large",onClick:u,class:"search-button"},{icon:i(()=>[l(t(C),null,{default:i(()=>[l(t(y),{icon:"tabler:search"})]),_:1})]),default:i(()=>[z(" "+d(t(a)("Search")),1)]),_:1})])]),!b.value&&g.value.length>0?(r(),c("div",_e,[o("div",he,[n[3]||(n[3]=o("div",{class:"agents-title"},null,-1)),o("div",me,[l(t(ee),{value:N.value,"onUpdate:value":[n[1]||(n[1]=e=>N.value=e),u],options:L.value,placeholder:t(a)("Sort by"),style:{width:"150px"}},null,8,["value","options","placeholder"])])]),o("div",ye,[(r(!0),c(G,null,H(g.value,e=>(r(),c("div",{key:e.name,class:"agent-card"},[o("div",{class:"agent-icon",onClick:m=>P(e)},[e.icon?(r(),te(t(y),{key:0,icon:e.icon,width:64,height:64,style:se({color:e.color||"#6b7280"})},null,8,["icon","style"])):(r(),c("div",be,[l(t(C),{size:"64"},{default:i(()=>[l(t(y),{icon:"hugeicons:robotic"})]),_:1})]))],8,fe),o("div",ke,[o("div",Ce,[o("div",we,[o("h3",{onClick:m=>P(e),class:"clickable-title"},d(e.title||e.agent_name||e.name),9,Se),o("div",Ne,[e.team?(r(),c("div",ze,[l(t(C),null,{default:i(()=>[l(t(y),{icon:"tabler:users"})]),_:1}),o("span",null,d(e.team),1)])):h("",!0),e.status?(r(),c("span",{key:1,class:ae(["status-badge",E(e.status)])},d(t(a)(e.status)),3)):h("",!0)])]),e.agent_name?(r(),c("div",Pe,d(e.agent_name),1)):h("",!0)]),e.description?(r(),c("div",Ae,d(Z(e.description,80)),1)):h("",!0)]),o("div",Me,[l(t(D),{type:"default",onClick:m=>P(e)},{default:i(()=>[z(d(t(a)("View Details")),1)]),_:1},8,["onClick"]),l(t(D),{type:"error",onClick:m=>K(e)},{default:i(()=>[z(d(t(a)("Delete")),1)]),_:1},8,["onClick"])])]))),128))]),o("div",De,[l(t(oe),{page:v.value,"onUpdate:page":[n[2]||(n[2]=e=>v.value=e),u],"page-count":V.value,size:"large","show-size-picker":"","page-sizes":[20,50,100],"page-size":k.value,"onUpdate:pageSize":j},null,8,["page","page-count","page-size"])])])):h("",!0),b.value?(r(),c("div",xe,[l(t(ne),{size:"large"},{description:i(()=>[z(d(t(a)("Loading agents...")),1)]),_:1})])):h("",!0),!b.value&&g.value.length===0?(r(),c("div",Ie,[l(t(le),{description:t(a)("No agents found")},{icon:i(()=>[l(t(C),null,{default:i(()=>[l(t(y),{icon:"hugeicons:robotic"})]),_:1})]),_:1},8,["description"])])):h("",!0)])]))}});const Le=ie(Te,[["__scopeId","data-v-79414a75"]]);export{Le as default}; diff --git a/apps/jingrow/frontend/dist/assets/MyPublishedAgents-f9d65540.css b/apps/jingrow/frontend/dist/assets/MyPublishedAgents-f9d65540.css new file mode 100644 index 0000000..0aa1c4b --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MyPublishedAgents-f9d65540.css @@ -0,0 +1 @@ +.my-published-agents[data-v-79414a75]{padding:24px}.page-header[data-v-79414a75]{margin-bottom:32px}.header-content[data-v-79414a75]{display:flex;justify-content:space-between;align-items:flex-start}.header-text h1[data-v-79414a75]{margin:0 0 8px;font-size:28px;font-weight:700;color:#1a1a1a}.header-text p[data-v-79414a75]{margin:0;color:#666;font-size:16px}.search-container[data-v-79414a75]{display:flex;justify-content:center;margin-bottom:32px}.agents-section[data-v-79414a75]{margin-bottom:32px}.agents-header[data-v-79414a75]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.agents-title h2[data-v-79414a75]{margin:0;font-size:20px;font-weight:600;color:#1f2937}.sort-controls[data-v-79414a75]{display:flex;align-items:center;gap:12px}.pagination-container[data-v-79414a75]{display:flex;justify-content:center;margin-top:32px;padding:20px 0}.search-bar[data-v-79414a75]{display:flex;gap:16px;align-items:center;max-width:600px;width:100%;padding:20px;background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);border-radius:20px;border:1px solid #e2e8f0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.search-input[data-v-79414a75]{flex:1;min-width:0}.search-input .n-input[data-v-79414a75]{border-radius:12px;border:1px solid #d1d5db;transition:all .2s ease}.search-input .n-input[data-v-79414a75]:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.search-button[data-v-79414a75]{border-radius:12px;font-weight:600;padding:0 24px;transition:all .2s ease}.search-button[data-v-79414a75]:hover{transform:translateY(-1px);box-shadow:0 4px 12px #3b82f64d}.agents-grid[data-v-79414a75]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.agent-card[data-v-79414a75]{border:1px solid #e5e7eb;border-radius:16px;background:white;overflow:hidden;transition:all .3s ease;box-shadow:0 1px 3px #0000001a}.agent-card[data-v-79414a75]:hover{transform:translateY(-4px);box-shadow:0 8px 25px #00000026;border-color:#d1d5db}.agent-icon[data-v-79414a75]{position:relative;width:100%;height:200px;overflow:hidden;background:linear-gradient(135deg,#f3f4f6 0%,#e5e7eb 100%);cursor:pointer;transition:opacity .2s ease;display:flex;align-items:center;justify-content:center}.agent-icon[data-v-79414a75]:hover{opacity:.9}.agent-icon-placeholder[data-v-79414a75]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#9ca3af;background:linear-gradient(135deg,#f9fafb 0%,#f3f4f6 100%)}.agent-content[data-v-79414a75]{padding:20px}.agent-header[data-v-79414a75]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.agent-title-section[data-v-79414a75]{flex:1;margin-right:12px}.agent-title-section h3[data-v-79414a75]{margin:0 0 4px;font-size:18px;font-weight:600;color:#1f2937;line-height:1.2}.clickable-title[data-v-79414a75]{cursor:pointer;transition:color .2s ease}.clickable-title[data-v-79414a75]:hover{color:#10b981}.agent-meta[data-v-79414a75]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px}.agent-team[data-v-79414a75]{display:flex;align-items:center;gap:4px;font-size:12px;color:#6b7280;font-weight:500}.agent-team .n-icon[data-v-79414a75]{color:#9ca3af;font-size:14px}.status-badge[data-v-79414a75]{padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;letter-spacing:.3px}.status-badge.published[data-v-79414a75]{background:#d1fae5;color:#065f46}.status-badge.unpublished[data-v-79414a75]{background:#fee2e2;color:#991b1b}.status-badge.draft[data-v-79414a75]{background:#fef3c7;color:#92400e}.status-badge.active[data-v-79414a75]{background:#dbeafe;color:#1e40af}.status-badge.inactive[data-v-79414a75]{background:#f3f4f6;color:#6b7280}.status-badge.pending[data-v-79414a75],.status-badge.pending-review[data-v-79414a75]{background:#dbeafe;color:#1e40af}.agent-name[data-v-79414a75]{color:#6b7280;font-size:11px;font-weight:500;font-family:SF Mono,Monaco,Menlo,Ubuntu Mono,monospace;background:transparent;border:1px solid #d1d5db;border-radius:12px;padding:4px 10px;text-align:center;min-width:70px;letter-spacing:.3px;text-transform:uppercase;font-size:10px;transition:all .2s ease}.agent-name[data-v-79414a75]:hover{border-color:#9ca3af;color:#374151;transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.agent-description[data-v-79414a75]{color:#6b7280;font-size:14px;line-height:1.5;margin-bottom:16px}.agent-actions[data-v-79414a75]{padding:0 20px 20px;display:flex;gap:12px}.agent-actions .n-button[data-v-79414a75]{flex:1}.loading[data-v-79414a75],.empty[data-v-79414a75]{display:flex;justify-content:center;align-items:center;min-height:300px}@media (max-width: 768px){.header-content[data-v-79414a75]{flex-direction:column;gap:16px;align-items:stretch}.search-container[data-v-79414a75]{margin-bottom:24px}.search-bar[data-v-79414a75]{flex-direction:column;gap:12px;padding:16px;max-width:100%}.search-input[data-v-79414a75],.search-button[data-v-79414a75]{width:100%}.agents-grid[data-v-79414a75]{grid-template-columns:1fr;gap:16px}.agent-card[data-v-79414a75]{border-radius:12px}.agent-icon[data-v-79414a75]{height:180px}} diff --git a/apps/jingrow/frontend/dist/assets/MyPublishedApps-157b117e.css b/apps/jingrow/frontend/dist/assets/MyPublishedApps-157b117e.css new file mode 100644 index 0000000..e8da894 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MyPublishedApps-157b117e.css @@ -0,0 +1 @@ +.my-published-apps[data-v-76ccce52]{padding:24px}.page-header[data-v-76ccce52]{margin-bottom:32px}.header-content[data-v-76ccce52]{display:flex;justify-content:space-between;align-items:flex-start}.header-text h1[data-v-76ccce52]{margin:0 0 8px;font-size:28px;font-weight:700;color:#1a1a1a}.header-text p[data-v-76ccce52]{margin:0;color:#666;font-size:16px}.search-container[data-v-76ccce52]{display:flex;justify-content:center;margin-bottom:32px}.apps-section[data-v-76ccce52]{margin-bottom:32px}.apps-header[data-v-76ccce52]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.apps-title h2[data-v-76ccce52]{margin:0;font-size:20px;font-weight:600;color:#1f2937}.sort-controls[data-v-76ccce52]{display:flex;align-items:center;gap:12px}.pagination-container[data-v-76ccce52]{display:flex;justify-content:center;margin-top:32px;padding:20px 0}.search-bar[data-v-76ccce52]{display:flex;gap:16px;align-items:center;max-width:600px;width:100%;padding:20px;background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);border-radius:20px;border:1px solid #e2e8f0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.search-input[data-v-76ccce52]{flex:1;min-width:0}.search-input .n-input[data-v-76ccce52]{border-radius:12px;border:1px solid #d1d5db;transition:all .2s ease}.search-input .n-input[data-v-76ccce52]:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.search-button[data-v-76ccce52]{border-radius:12px;font-weight:600;padding:0 24px;transition:all .2s ease}.search-button[data-v-76ccce52]:hover{transform:translateY(-1px);box-shadow:0 4px 12px #3b82f64d}.apps-grid[data-v-76ccce52]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.app-card[data-v-76ccce52]{border:1px solid #e5e7eb;border-radius:16px;background:white;overflow:hidden;transition:all .3s ease;box-shadow:0 1px 3px #0000001a}.app-card[data-v-76ccce52]:hover{transform:translateY(-4px);box-shadow:0 8px 25px #00000026;border-color:#d1d5db}.app-image[data-v-76ccce52]{position:relative;width:100%;height:200px;overflow:hidden;background:linear-gradient(135deg,#f3f4f6 0%,#e5e7eb 100%);cursor:pointer;transition:opacity .2s ease}.app-image[data-v-76ccce52]:hover{opacity:.9}.app-image img[data-v-76ccce52]{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.app-card:hover .app-image img[data-v-76ccce52]{transform:scale(1.05)}.app-image-placeholder[data-v-76ccce52]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#9ca3af;background:linear-gradient(135deg,#f9fafb 0%,#f3f4f6 100%)}.app-image-placeholder.show[data-v-76ccce52]{display:flex}.app-content[data-v-76ccce52]{padding:20px}.app-header[data-v-76ccce52]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.app-title-section[data-v-76ccce52]{flex:1;margin-right:12px}.app-title-section h3[data-v-76ccce52]{margin:0 0 4px;font-size:18px;font-weight:600;color:#1f2937;line-height:1.2}.clickable-title[data-v-76ccce52]{cursor:pointer;transition:color .2s ease}.clickable-title[data-v-76ccce52]:hover{color:#10b981}.app-meta[data-v-76ccce52]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px}.app-team[data-v-76ccce52]{display:flex;align-items:center;gap:4px;font-size:12px;color:#6b7280;font-weight:500}.app-team .n-icon[data-v-76ccce52]{color:#9ca3af;font-size:14px}.status-badge[data-v-76ccce52]{padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;letter-spacing:.3px}.status-badge.published[data-v-76ccce52]{background:#d1fae5;color:#065f46}.status-badge.unpublished[data-v-76ccce52]{background:#fee2e2;color:#991b1b}.status-badge.draft[data-v-76ccce52]{background:#fef3c7;color:#92400e}.status-badge.active[data-v-76ccce52]{background:#dbeafe;color:#1e40af}.status-badge.inactive[data-v-76ccce52]{background:#f3f4f6;color:#6b7280}.status-badge.pending[data-v-76ccce52],.status-badge.pending-review[data-v-76ccce52]{background:#dbeafe;color:#1e40af}.app-name[data-v-76ccce52]{color:#6b7280;font-size:11px;font-weight:500;font-family:SF Mono,Monaco,Menlo,Ubuntu Mono,monospace;background:transparent;border:1px solid #d1d5db;border-radius:12px;padding:4px 10px;text-align:center;min-width:70px;letter-spacing:.3px;text-transform:uppercase;font-size:10px;transition:all .2s ease}.app-name[data-v-76ccce52]:hover{border-color:#9ca3af;color:#374151;transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.app-subtitle[data-v-76ccce52]{color:#6b7280;font-size:14px;line-height:1.5;margin-bottom:16px}.app-actions[data-v-76ccce52]{padding:0 20px 20px;display:flex;gap:12px}.app-actions .n-button[data-v-76ccce52]{flex:1}.loading[data-v-76ccce52],.empty[data-v-76ccce52]{display:flex;justify-content:center;align-items:center;min-height:300px}@media (max-width: 768px){.header-content[data-v-76ccce52]{flex-direction:column;gap:16px;align-items:stretch}.search-container[data-v-76ccce52]{margin-bottom:24px}.search-bar[data-v-76ccce52]{flex-direction:column;gap:12px;padding:16px;max-width:100%}.search-input[data-v-76ccce52],.search-button[data-v-76ccce52]{width:100%}.apps-grid[data-v-76ccce52]{grid-template-columns:1fr;gap:16px}.app-card[data-v-76ccce52]{border-radius:12px}.app-image[data-v-76ccce52]{height:180px}} diff --git a/apps/jingrow/frontend/dist/assets/MyPublishedApps-4a49c0f0.js b/apps/jingrow/frontend/dist/assets/MyPublishedApps-4a49c0f0.js new file mode 100644 index 0000000..42e09a0 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MyPublishedApps-4a49c0f0.js @@ -0,0 +1 @@ +import{d as Y,u as Q,X,r as g,c as E,o as G,M as I,e as c,f as n,g as r,j as s,h as l,w as i,i as H,F as J,C as ee,y as m,k as ae,a0 as F,t,l as u,$ as y,p as f,n as S,m as se,Z as te,Y as oe,_ as le,as as ne,aA as ie}from"./index-d271a6a3.js";import{I as b}from"./iconify-242f8a3c.js";import{_ as re}from"./_plugin-vue_export-helper-c27b6911.js";const ce={class:"my-published-apps"},ue={class:"page-header"},pe={class:"header-content"},de={class:"header-text"},_e={class:"content"},ve={class:"search-container"},he={class:"search-bar"},ge={key:0,class:"apps-section"},me={class:"apps-header"},ye={class:"sort-controls"},fe={class:"apps-grid"},be=["onClick"],ke=["src","alt"],Ce={key:1,class:"app-image-placeholder"},we={class:"app-content"},Se={class:"app-header"},Pe={class:"app-title-section"},Ne=["onClick"],ze={class:"app-meta"},Ae={key:0,class:"app-team"},Me={key:0,class:"app-name"},Ie={key:0,class:"app-subtitle"},xe={class:"app-actions"},$e={class:"pagination-container"},De={key:1,class:"loading"},Te={key:2,class:"empty"},Be=Y({__name:"MyPublishedApps",setup(Ee){const k=Q(),L=X(),x=ae(),P=g(""),C=g(!1),v=g([]),N=g(0),h=g(1),w=g(parseInt(localStorage.getItem("itemsPerPage")||"20")),z=g("creation desc"),j=E(()=>[{label:t("Latest"),value:"creation desc"},{label:t("Oldest"),value:"creation asc"},{label:t("Name A-Z"),value:"app_name asc"},{label:t("Name Z-A"),value:"app_name desc"},{label:t("Most Popular"),value:"modified desc"}]),U=E(()=>Math.max(1,Math.ceil(N.value/w.value)));async function p(){C.value=!0;try{const a=new URLSearchParams({page:h.value.toString(),page_size:w.value.toString(),search:P.value,sort_by:z.value}),e=(await F.get(`/jingrow/my-published-apps?${a}`)).data;e.items?(v.value=e.items,N.value=e.total||0):(v.value=e||[],N.value=v.value.length)}catch(a){console.error("Failed to load apps:",a),k.error(t("Failed to load applications")),v.value=[],N.value=0}finally{C.value=!1}}function $(){x.push("/publish-app")}function V(a){w.value=a,h.value=1,localStorage.setItem("itemsPerPage",a.toString()),p()}function A(a){x.push({path:`/app-marketplace/${a.name}`,query:{returnTo:"/my-published-apps"}})}function Z(a){return a?a.startsWith("http")?a:`https://cloud.jingrow.com${a.startsWith("/")?"":"/"}${a}`:""}function q(a){var e,_;const o=a.target;o.style.display="none",(_=(e=o.parentElement)==null?void 0:e.querySelector(".app-image-placeholder"))==null||_.classList.add("show")}function K(a,o){return a?a.length<=o?a:a.substring(0,o)+"...":""}function O(a){return a?a.toLowerCase().replace(/\s+/g,"-"):""}async function R(a){const o=a.name;if(!o){k.error(t("应用名称不存在"));return}const e=a.title||a.app_name||o;L.warning({title:t("确认删除"),content:t('确定要删除应用 "{0}" 吗?此操作不可恢复。').replace("{0}",e),positiveText:t("确认删除"),negativeText:t("取消"),onPositiveClick:async()=>{await W(o)}})}async function W(a){var o,e,_,D,T,B;try{const d=await F.post("/jingrow/delete-published-app",{name:a},{withCredentials:!0});if(d.data&&d.data.success)k.success(d.data.message||t("应用删除成功")),p();else{const M=((o=d.data)==null?void 0:o.message)||((e=d.data)==null?void 0:e.error)||t("删除失败");k.error(M)}}catch(d){console.error("Delete app error:",d);const M=((D=(_=d.response)==null?void 0:_.data)==null?void 0:D.detail)||((B=(T=d.response)==null?void 0:T.data)==null?void 0:B.message)||d.message||t("删除失败");k.error(M)}}return G(()=>{p()}),I([P,z],()=>{h.value=1,p()},{deep:!0}),I([h],()=>{p()}),I(()=>localStorage.getItem("itemsPerPage"),a=>{a&&(w.value=parseInt(a),h.value=1,p())}),(a,o)=>(u(),c("div",ce,[n("div",ue,[n("div",pe,[n("div",de,[n("h1",null,r(s(t)("My Published Apps")),1),n("p",null,r(s(t)("Manage your published applications in the marketplace")),1)]),l(s(S),{type:"primary",onClick:$},{icon:i(()=>[l(s(y),null,{default:i(()=>[l(s(b),{icon:"tabler:plus"})]),_:1})]),default:i(()=>[f(" "+r(s(t)("Publish App")),1)]),_:1})])]),n("div",_e,[n("div",ve,[n("div",he,[l(s(se),{value:P.value,"onUpdate:value":o[0]||(o[0]=e=>P.value=e),placeholder:s(t)("Search applications..."),clearable:"",size:"large",onKeyup:H(p,["enter"]),class:"search-input"},{prefix:i(()=>[l(s(y),null,{default:i(()=>[l(s(b),{icon:"tabler:search"})]),_:1})]),_:1},8,["value","placeholder"]),l(s(S),{type:"primary",size:"large",onClick:p,class:"search-button"},{icon:i(()=>[l(s(y),null,{default:i(()=>[l(s(b),{icon:"tabler:search"})]),_:1})]),default:i(()=>[f(" "+r(s(t)("Search")),1)]),_:1})])]),!C.value&&v.value.length>0?(u(),c("div",ge,[n("div",me,[o[3]||(o[3]=n("div",{class:"apps-title"},null,-1)),n("div",ye,[l(s(te),{value:z.value,"onUpdate:value":[o[1]||(o[1]=e=>z.value=e),p],options:j.value,placeholder:s(t)("Sort by"),style:{width:"150px"}},null,8,["value","options","placeholder"])])]),n("div",fe,[(u(!0),c(J,null,ee(v.value,e=>(u(),c("div",{key:e.name,class:"app-card"},[n("div",{class:"app-image",onClick:_=>A(e)},[e.app_image?(u(),c("img",{key:0,src:Z(e.app_image),alt:e.title||e.name,onError:q},null,40,ke)):(u(),c("div",Ce,[l(s(y),{size:"48"},{default:i(()=>[l(s(b),{icon:"tabler:apps"})]),_:1})]))],8,be),n("div",we,[n("div",Se,[n("div",Pe,[n("h3",{onClick:_=>A(e),class:"clickable-title"},r(e.title||e.name),9,Ne),n("div",ze,[e.team?(u(),c("div",Ae,[l(s(y),null,{default:i(()=>[l(s(b),{icon:"tabler:users"})]),_:1}),n("span",null,r(e.team),1)])):m("",!0),e.status?(u(),c("span",{key:1,class:oe(["status-badge",O(e.status)])},r(s(t)(e.status)),3)):m("",!0)])]),e.app_name?(u(),c("div",Me,r(e.app_name),1)):m("",!0)]),e.subtitle?(u(),c("div",Ie,r(K(e.subtitle,60)),1)):m("",!0)]),n("div",xe,[l(s(S),{type:"default",onClick:_=>A(e)},{default:i(()=>[f(r(s(t)("View Details")),1)]),_:1},8,["onClick"]),l(s(S),{type:"error",onClick:_=>R(e)},{default:i(()=>[f(r(s(t)("Delete")),1)]),_:1},8,["onClick"])])]))),128))]),n("div",$e,[l(s(le),{page:h.value,"onUpdate:page":[o[2]||(o[2]=e=>h.value=e),p],"page-count":U.value,size:"large","show-size-picker":"","page-sizes":[20,50,100],"page-size":w.value,"onUpdate:pageSize":V},null,8,["page","page-count","page-size"])])])):m("",!0),C.value?(u(),c("div",De,[l(s(ne),{size:"large"},{description:i(()=>[f(r(s(t)("Loading applications...")),1)]),_:1})])):m("",!0),!C.value&&v.value.length===0?(u(),c("div",Te,[l(s(ie),{description:s(t)("No applications found")},{icon:i(()=>[l(s(y),null,{default:i(()=>[l(s(b),{icon:"tabler:apps"})]),_:1})]),extra:i(()=>[l(s(S),{type:"primary",onClick:$},{default:i(()=>[f(r(s(t)("Publish Your First App")),1)]),_:1})]),_:1},8,["description"])])):m("",!0)])]))}});const Ue=re(Be,[["__scopeId","data-v-76ccce52"]]);export{Ue as default}; diff --git a/apps/jingrow/frontend/dist/assets/MyPublishedNodes-c9e0f6db.js b/apps/jingrow/frontend/dist/assets/MyPublishedNodes-c9e0f6db.js new file mode 100644 index 0000000..14da6a4 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MyPublishedNodes-c9e0f6db.js @@ -0,0 +1 @@ +import{d as R,u as q,X as Q,r as g,c as B,o as X,M as D,e as r,f as o,g as c,j as s,h as l,w as d,i as Y,F as G,C as H,y as v,k as J,a0 as U,t,l as i,$ as N,m as W,p as z,n as x,Z as ee,D as se,a1 as ae,Y as te,_ as oe,as as ne,aA as le}from"./index-d271a6a3.js";import{I as y}from"./iconify-242f8a3c.js";import{_ as ie}from"./_plugin-vue_export-helper-c27b6911.js";const re={class:"my-published-nodes"},ce={class:"page-header"},de={class:"header-content"},ue={class:"header-text"},pe={class:"content"},ve={class:"search-container"},_e={class:"search-bar"},he={key:0,class:"nodes-section"},ge={class:"nodes-header"},me={class:"sort-controls"},ye={class:"nodes-grid"},fe=["onClick"],be={key:1,class:"node-icon-placeholder"},ke={class:"node-content"},Ne={class:"node-header"},Ce={class:"node-title-section"},we=["onClick"],Se={class:"node-meta"},ze={key:0,class:"node-type"},Pe={key:0,class:"node-name"},Me={key:0,class:"node-description"},De={key:1,class:"node-meta-info"},xe={class:"node-actions"},Ie={class:"pagination-container"},Te={key:1,class:"loading"},$e={key:2,class:"empty"},Be=R({__name:"MyPublishedNodes",setup(Ue){const f=q(),A=Q(),F=J(),C=g(""),b=g(!1),_=g([]),w=g(0),h=g(1),k=g(parseInt(localStorage.getItem("itemsPerPage")||"20")),S=g("creation desc"),L=B(()=>[{label:t("Latest"),value:"creation desc"},{label:t("Oldest"),value:"creation asc"},{label:t("Name A-Z"),value:"name asc"},{label:t("Name Z-A"),value:"name desc"},{label:t("Most Popular"),value:"modified desc"}]),V=B(()=>Math.max(1,Math.ceil(w.value/k.value)));async function u(){b.value=!0;try{const a=new URLSearchParams({page:h.value.toString(),page_size:k.value.toString(),search:C.value,sort_by:S.value}),e=(await U.get(`/jingrow/my-published-nodes?${a}`)).data;e.items?(_.value=e.items,w.value=e.total||0):(_.value=e||[],w.value=_.value.length)}catch(a){console.error("Failed to load nodes:",a),f.error(t("Failed to load nodes")),_.value=[],w.value=0}finally{b.value=!1}}function j(a){k.value=a,h.value=1,localStorage.setItem("itemsPerPage",a.toString()),u()}function P(a){F.push({path:`/node-marketplace/${a.name}`,query:{returnTo:"/my-published-nodes"}})}function Z(a,n){return a?a.length<=n?a:a.substring(0,n)+"...":""}function E(a){return a?a.toLowerCase().replace(/\s+/g,"-"):""}async function K(a){const n=a.name;if(!n){f.error(t("Node name does not exist"));return}const e=a.title||a.node_type||n;A.warning({title:t("Confirm Delete"),content:t('Are you sure you want to delete node "{0}"? This action cannot be undone.').replace("{0}",e),positiveText:t("Confirm Delete"),negativeText:t("Cancel"),onPositiveClick:async()=>{await O(n)}})}async function O(a){var n,e,m,I,T,$;try{const p=await U.post("/jingrow/delete-published-node",{name:a},{withCredentials:!0});if(p.data&&p.data.success)f.success(p.data.message||t("Node deleted successfully")),u();else{const M=((n=p.data)==null?void 0:n.message)||((e=p.data)==null?void 0:e.error)||t("Delete failed");f.error(M)}}catch(p){console.error("Delete node error:",p);const M=((I=(m=p.response)==null?void 0:m.data)==null?void 0:I.detail)||(($=(T=p.response)==null?void 0:T.data)==null?void 0:$.message)||p.message||t("Delete failed");f.error(M)}}return X(()=>{u()}),D([C,S],()=>{h.value=1,u()},{deep:!0}),D([h],()=>{u()}),D(()=>localStorage.getItem("itemsPerPage"),a=>{a&&(k.value=parseInt(a),h.value=1,u())}),(a,n)=>(i(),r("div",re,[o("div",ce,[o("div",de,[o("div",ue,[o("h1",null,c(s(t)("My Published Nodes")),1),o("p",null,c(s(t)("Manage your published nodes in the marketplace")),1)])])]),o("div",pe,[o("div",ve,[o("div",_e,[l(s(W),{value:C.value,"onUpdate:value":n[0]||(n[0]=e=>C.value=e),placeholder:s(t)("Search nodes..."),clearable:"",size:"large",onKeyup:Y(u,["enter"]),class:"search-input"},{prefix:d(()=>[l(s(N),null,{default:d(()=>[l(s(y),{icon:"tabler:search"})]),_:1})]),_:1},8,["value","placeholder"]),l(s(x),{type:"primary",size:"large",onClick:u,class:"search-button"},{icon:d(()=>[l(s(N),null,{default:d(()=>[l(s(y),{icon:"tabler:search"})]),_:1})]),default:d(()=>[z(" "+c(s(t)("Search")),1)]),_:1})])]),!b.value&&_.value.length>0?(i(),r("div",he,[o("div",ge,[n[3]||(n[3]=o("div",{class:"nodes-title"},null,-1)),o("div",me,[l(s(ee),{value:S.value,"onUpdate:value":[n[1]||(n[1]=e=>S.value=e),u],options:L.value,placeholder:s(t)("Sort by"),style:{width:"150px"}},null,8,["value","options","placeholder"])])]),o("div",ye,[(i(!0),r(G,null,H(_.value,e=>(i(),r("div",{key:e.name,class:"node-card"},[o("div",{class:"node-icon",onClick:m=>P(e)},[e.icon?(i(),se(s(y),{key:0,icon:e.icon,width:64,height:64,style:ae({color:e.color||"#6b7280"})},null,8,["icon","style"])):(i(),r("div",be,[l(s(N),{size:"64"},{default:d(()=>[l(s(y),{icon:"carbon:add-child-node"})]),_:1})]))],8,fe),o("div",ke,[o("div",Ne,[o("div",Ce,[o("h3",{onClick:m=>P(e),class:"clickable-title"},c(e.title||e.name),9,we),o("div",Se,[e.node_type?(i(),r("div",ze,c(e.node_type),1)):v("",!0),e.status?(i(),r("span",{key:1,class:te(["status-badge",E(e.status)])},c(s(t)(e.status)),3)):v("",!0)])]),e.name?(i(),r("div",Pe,c(e.name),1)):v("",!0)]),e.description?(i(),r("div",Me,c(Z(e.description,80)),1)):v("",!0),e.group?(i(),r("div",De,[l(s(N),null,{default:d(()=>[l(s(y),{icon:"tabler:category"})]),_:1}),o("span",null,c(e.group),1)])):v("",!0)]),o("div",xe,[l(s(x),{type:"default",onClick:m=>P(e)},{default:d(()=>[z(c(s(t)("View Details")),1)]),_:1},8,["onClick"]),l(s(x),{type:"error",onClick:m=>K(e)},{default:d(()=>[z(c(s(t)("Delete")),1)]),_:1},8,["onClick"])])]))),128))]),o("div",Ie,[l(s(oe),{page:h.value,"onUpdate:page":[n[2]||(n[2]=e=>h.value=e),u],"page-count":V.value,size:"large","show-size-picker":"","page-sizes":[20,50,100],"page-size":k.value,"onUpdate:pageSize":j},null,8,["page","page-count","page-size"])])])):v("",!0),b.value?(i(),r("div",Te,[l(s(ne),{size:"large"},{description:d(()=>[z(c(s(t)("Loading nodes...")),1)]),_:1})])):v("",!0),!b.value&&_.value.length===0?(i(),r("div",$e,[l(s(le),{description:s(t)("No nodes found")},{icon:d(()=>[l(s(N),null,{default:d(()=>[l(s(y),{icon:"carbon:add-child-node"})]),_:1})]),_:1},8,["description"])])):v("",!0)])]))}});const Ve=ie(Be,[["__scopeId","data-v-229066e3"]]);export{Ve as default}; diff --git a/apps/jingrow/frontend/dist/assets/MyPublishedNodes-d478f3c3.css b/apps/jingrow/frontend/dist/assets/MyPublishedNodes-d478f3c3.css new file mode 100644 index 0000000..b90d617 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MyPublishedNodes-d478f3c3.css @@ -0,0 +1 @@ +.my-published-nodes[data-v-229066e3]{padding:24px}.page-header[data-v-229066e3]{margin-bottom:32px}.header-content[data-v-229066e3]{display:flex;justify-content:space-between;align-items:flex-start}.header-text h1[data-v-229066e3]{margin:0 0 8px;font-size:28px;font-weight:700;color:#1a1a1a}.header-text p[data-v-229066e3]{margin:0;color:#666;font-size:16px}.search-container[data-v-229066e3]{display:flex;justify-content:center;margin-bottom:32px}.nodes-section[data-v-229066e3]{margin-bottom:32px}.nodes-header[data-v-229066e3]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.nodes-title h2[data-v-229066e3]{margin:0;font-size:20px;font-weight:600;color:#1f2937}.sort-controls[data-v-229066e3]{display:flex;align-items:center;gap:12px}.pagination-container[data-v-229066e3]{display:flex;justify-content:center;margin-top:32px;padding:20px 0}.search-bar[data-v-229066e3]{display:flex;gap:16px;align-items:center;max-width:600px;width:100%;padding:20px;background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);border-radius:20px;border:1px solid #e2e8f0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.search-input[data-v-229066e3]{flex:1;min-width:0}.search-input .n-input[data-v-229066e3]{border-radius:12px;border:1px solid #d1d5db;transition:all .2s ease}.search-input .n-input[data-v-229066e3]:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.search-button[data-v-229066e3]{border-radius:12px;font-weight:600;padding:0 24px;transition:all .2s ease}.search-button[data-v-229066e3]:hover{transform:translateY(-1px);box-shadow:0 4px 12px #3b82f64d}.nodes-grid[data-v-229066e3]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.node-card[data-v-229066e3]{border:1px solid #e5e7eb;border-radius:16px;background:white;overflow:hidden;transition:all .3s ease;box-shadow:0 1px 3px #0000001a}.node-card[data-v-229066e3]:hover{transform:translateY(-4px);box-shadow:0 8px 25px #00000026;border-color:#d1d5db}.node-icon[data-v-229066e3]{position:relative;width:100%;height:200px;overflow:hidden;background:linear-gradient(135deg,#f3f4f6 0%,#e5e7eb 100%);cursor:pointer;transition:opacity .2s ease;display:flex;align-items:center;justify-content:center}.node-icon[data-v-229066e3]:hover{opacity:.9}.node-icon-placeholder[data-v-229066e3]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#9ca3af;background:linear-gradient(135deg,#f9fafb 0%,#f3f4f6 100%)}.node-content[data-v-229066e3]{padding:20px}.node-header[data-v-229066e3]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.node-title-section[data-v-229066e3]{flex:1;margin-right:12px}.node-title-section h3[data-v-229066e3]{margin:0 0 4px;font-size:18px;font-weight:600;color:#1f2937;line-height:1.2}.clickable-title[data-v-229066e3]{cursor:pointer;transition:color .2s ease}.clickable-title[data-v-229066e3]:hover{color:#10b981}.node-meta[data-v-229066e3]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px}.node-type[data-v-229066e3]{color:#6b7280;font-size:12px;font-weight:500}.status-badge[data-v-229066e3]{padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;letter-spacing:.3px}.status-badge.published[data-v-229066e3]{background:#d1fae5;color:#065f46}.status-badge.unpublished[data-v-229066e3]{background:#fee2e2;color:#991b1b}.status-badge.draft[data-v-229066e3]{background:#fef3c7;color:#92400e}.status-badge.active[data-v-229066e3]{background:#dbeafe;color:#1e40af}.status-badge.inactive[data-v-229066e3]{background:#f3f4f6;color:#6b7280}.status-badge.pending[data-v-229066e3],.status-badge.pending-review[data-v-229066e3]{background:#dbeafe;color:#1e40af}.node-name[data-v-229066e3]{color:#6b7280;font-size:11px;font-weight:500;font-family:SF Mono,Monaco,Menlo,Ubuntu Mono,monospace;background:transparent;border:1px solid #d1d5db;border-radius:12px;padding:4px 10px;text-align:center;min-width:70px;letter-spacing:.3px;text-transform:uppercase;font-size:10px;transition:all .2s ease}.node-name[data-v-229066e3]:hover{border-color:#9ca3af;color:#374151;transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.node-description[data-v-229066e3]{color:#6b7280;font-size:14px;line-height:1.5;margin-bottom:12px}.node-meta-info[data-v-229066e3]{display:flex;align-items:center;gap:4px;font-size:12px;color:#6b7280;font-weight:500}.node-meta-info .n-icon[data-v-229066e3]{color:#9ca3af;font-size:14px}.node-actions[data-v-229066e3]{padding:0 20px 20px;display:flex;gap:12px}.node-actions .n-button[data-v-229066e3]{flex:1}.loading[data-v-229066e3],.empty[data-v-229066e3]{display:flex;justify-content:center;align-items:center;min-height:300px}@media (max-width: 768px){.header-content[data-v-229066e3]{flex-direction:column;gap:16px;align-items:stretch}.search-container[data-v-229066e3]{margin-bottom:24px}.search-bar[data-v-229066e3]{flex-direction:column;gap:12px;padding:16px;max-width:100%}.search-input[data-v-229066e3],.search-button[data-v-229066e3]{width:100%}.nodes-grid[data-v-229066e3]{grid-template-columns:1fr;gap:16px}.node-card[data-v-229066e3]{border-radius:12px}.node-icon[data-v-229066e3]{height:180px}} diff --git a/apps/jingrow/frontend/dist/assets/MyPublishedTools-2b1424b4.js b/apps/jingrow/frontend/dist/assets/MyPublishedTools-2b1424b4.js new file mode 100644 index 0000000..1e1acdc --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MyPublishedTools-2b1424b4.js @@ -0,0 +1 @@ +import{d as Y,u as Q,X,r as g,c as F,o as G,M as x,e as c,f as n,g as r,j as s,h as l,w as i,i as H,F as J,C as ee,y as m,k as te,a0 as L,t as a,l as u,$ as y,p as f,n as w,m as se,Z as ae,Y as oe,_ as le,as as ne,aA as ie}from"./index-d271a6a3.js";import{I as b}from"./iconify-242f8a3c.js";import{_ as re}from"./_plugin-vue_export-helper-c27b6911.js";const ce={class:"my-published-tools"},ue={class:"page-header"},de={class:"header-content"},pe={class:"header-text"},_e={class:"content"},he={class:"search-container"},ve={class:"search-bar"},ge={key:0,class:"tools-section"},me={class:"tools-header"},ye={class:"sort-controls"},fe={class:"tools-grid"},be=["onClick"],ke=["src","alt"],Ce={key:1,class:"tool-image-placeholder"},Te={class:"tool-content"},we={class:"tool-header"},Se={class:"tool-title-section"},Pe=["onClick"],Ne={class:"tool-meta"},ze={key:0,class:"tool-team"},Me={key:0,class:"tool-name"},xe={key:0,class:"tool-subtitle"},Ie={class:"tool-actions"},$e={class:"pagination-container"},De={key:1,class:"loading"},Be={key:2,class:"empty"},Ee=Y({__name:"MyPublishedTools",setup(Fe){const k=Q(),j=X(),I=te(),S=g(""),C=g(!1),h=g([]),P=g(0),v=g(1),T=g(parseInt(localStorage.getItem("itemsPerPage")||"20")),N=g("creation desc"),A=F(()=>[{label:a("Latest"),value:"creation desc"},{label:a("Oldest"),value:"creation asc"},{label:a("Name A-Z"),value:"tool_name asc"},{label:a("Name Z-A"),value:"tool_name desc"},{label:a("Most Popular"),value:"modified desc"}]),U=F(()=>Math.max(1,Math.ceil(P.value/T.value)));async function d(){C.value=!0;try{const t=new URLSearchParams({page:v.value.toString(),page_size:T.value.toString(),search:S.value,sort_by:N.value}),e=(await L.get(`/jingrow/my-published-tools?${t}`)).data;e.items?(h.value=e.items,P.value=e.total||0):(h.value=e||[],P.value=h.value.length)}catch(t){console.error("Failed to load tools:",t),k.error(a("Failed to load tools")),h.value=[],P.value=0}finally{C.value=!1}}function $(){I.push("/publish-tool")}function V(t){T.value=t,v.value=1,localStorage.setItem("itemsPerPage",t.toString()),d()}function z(t){I.push({path:`/tool-marketplace/${t.name}`,query:{returnTo:"/my-published-tools"}})}function Z(t){return t?t.startsWith("http")?t:`https://cloud.jingrow.com${t.startsWith("/")?"":"/"}${t}`:""}function q(t){var e,_;const o=t.target;o.style.display="none",(_=(e=o.parentElement)==null?void 0:e.querySelector(".tool-image-placeholder"))==null||_.classList.add("show")}function K(t,o){return t?t.length<=o?t:t.substring(0,o)+"...":""}function O(t){return t?t.toLowerCase().replace(/\s+/g,"-"):""}async function R(t){const o=t.name;if(!o){k.error(a("Tool name does not exist"));return}const e=t.title||t.tool_name||o;j.warning({title:a("确认删除"),content:a('Are you sure you want to delete tool "{0}"? This action cannot be undone.').replace("{0}",e),positiveText:a("确认删除"),negativeText:a("取消"),onPositiveClick:async()=>{await W(o)}})}async function W(t){var o,e,_,D,B,E;try{const p=await L.post("/jingrow/delete-published-tool",{name:t},{withCredentials:!0});if(p.data&&p.data.success)k.success(p.data.message||a("Tool deleted successfully")),d();else{const M=((o=p.data)==null?void 0:o.message)||((e=p.data)==null?void 0:e.error)||a("删除失败");k.error(M)}}catch(p){console.error("Delete tool error:",p);const M=((D=(_=p.response)==null?void 0:_.data)==null?void 0:D.detail)||((E=(B=p.response)==null?void 0:B.data)==null?void 0:E.message)||p.message||a("删除失败");k.error(M)}}return G(()=>{d()}),x([S,N],()=>{v.value=1,d()},{deep:!0}),x([v],()=>{d()}),x(()=>localStorage.getItem("itemsPerPage"),t=>{t&&(T.value=parseInt(t),v.value=1,d())}),(t,o)=>(u(),c("div",ce,[n("div",ue,[n("div",de,[n("div",pe,[n("h1",null,r(s(a)("My Published Tools")),1),n("p",null,r(s(a)("Manage your published tools in the marketplace")),1)]),l(s(w),{type:"primary",onClick:$},{icon:i(()=>[l(s(y),null,{default:i(()=>[l(s(b),{icon:"tabler:plus"})]),_:1})]),default:i(()=>[f(" "+r(s(a)("Publish Tool")),1)]),_:1})])]),n("div",_e,[n("div",he,[n("div",ve,[l(s(se),{value:S.value,"onUpdate:value":o[0]||(o[0]=e=>S.value=e),placeholder:s(a)("Search tools..."),clearable:"",size:"large",onKeyup:H(d,["enter"]),class:"search-input"},{prefix:i(()=>[l(s(y),null,{default:i(()=>[l(s(b),{icon:"tabler:search"})]),_:1})]),_:1},8,["value","placeholder"]),l(s(w),{type:"primary",size:"large",onClick:d,class:"search-button"},{icon:i(()=>[l(s(y),null,{default:i(()=>[l(s(b),{icon:"tabler:search"})]),_:1})]),default:i(()=>[f(" "+r(s(a)("Search")),1)]),_:1})])]),!C.value&&h.value.length>0?(u(),c("div",ge,[n("div",me,[o[3]||(o[3]=n("div",{class:"tools-title"},null,-1)),n("div",ye,[l(s(ae),{value:N.value,"onUpdate:value":[o[1]||(o[1]=e=>N.value=e),d],options:A.value,placeholder:s(a)("Sort by"),style:{width:"150px"}},null,8,["value","options","placeholder"])])]),n("div",fe,[(u(!0),c(J,null,ee(h.value,e=>(u(),c("div",{key:e.name,class:"tool-card"},[n("div",{class:"tool-image",onClick:_=>z(e)},[e.tool_image?(u(),c("img",{key:0,src:Z(e.tool_image),alt:e.title||e.name,onError:q},null,40,ke)):(u(),c("div",Ce,[l(s(y),{size:"48"},{default:i(()=>[l(s(b),{icon:"tabler:tool"})]),_:1})]))],8,be),n("div",Te,[n("div",we,[n("div",Se,[n("h3",{onClick:_=>z(e),class:"clickable-title"},r(e.title||e.name),9,Pe),n("div",Ne,[e.team?(u(),c("div",ze,[l(s(y),null,{default:i(()=>[l(s(b),{icon:"tabler:users"})]),_:1}),n("span",null,r(e.team),1)])):m("",!0),e.status?(u(),c("span",{key:1,class:oe(["status-badge",O(e.status)])},r(s(a)(e.status)),3)):m("",!0)])]),e.tool_name?(u(),c("div",Me,r(e.tool_name),1)):m("",!0)]),e.subtitle?(u(),c("div",xe,r(K(e.subtitle,60)),1)):m("",!0)]),n("div",Ie,[l(s(w),{type:"default",onClick:_=>z(e)},{default:i(()=>[f(r(s(a)("View Details")),1)]),_:1},8,["onClick"]),l(s(w),{type:"error",onClick:_=>R(e)},{default:i(()=>[f(r(s(a)("Delete")),1)]),_:1},8,["onClick"])])]))),128))]),n("div",$e,[l(s(le),{page:v.value,"onUpdate:page":[o[2]||(o[2]=e=>v.value=e),d],"page-count":U.value,size:"large","show-size-picker":"","page-sizes":[20,50,100],"page-size":T.value,"onUpdate:pageSize":V},null,8,["page","page-count","page-size"])])])):m("",!0),C.value?(u(),c("div",De,[l(s(ne),{size:"large"},{description:i(()=>[f(r(s(a)("Loading tools...")),1)]),_:1})])):m("",!0),!C.value&&h.value.length===0?(u(),c("div",Be,[l(s(ie),{description:s(a)("No tools found")},{icon:i(()=>[l(s(y),null,{default:i(()=>[l(s(b),{icon:"tabler:tool"})]),_:1})]),extra:i(()=>[l(s(w),{type:"primary",onClick:$},{default:i(()=>[f(r(s(a)("Publish Your First Tool")),1)]),_:1})]),_:1},8,["description"])])):m("",!0)])]))}});const Ue=re(Ee,[["__scopeId","data-v-9dc5b1f9"]]);export{Ue as default}; diff --git a/apps/jingrow/frontend/dist/assets/MyPublishedTools-8a6cc822.css b/apps/jingrow/frontend/dist/assets/MyPublishedTools-8a6cc822.css new file mode 100644 index 0000000..feb5e95 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/MyPublishedTools-8a6cc822.css @@ -0,0 +1 @@ +.my-published-tools[data-v-9dc5b1f9]{padding:24px}.page-header[data-v-9dc5b1f9]{margin-bottom:32px}.header-content[data-v-9dc5b1f9]{display:flex;justify-content:space-between;align-items:flex-start}.header-text h1[data-v-9dc5b1f9]{margin:0 0 8px;font-size:28px;font-weight:700;color:#1a1a1a}.header-text p[data-v-9dc5b1f9]{margin:0;color:#666;font-size:16px}.search-container[data-v-9dc5b1f9]{display:flex;justify-content:center;margin-bottom:32px}.tools-section[data-v-9dc5b1f9]{margin-bottom:32px}.tools-header[data-v-9dc5b1f9]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.tools-title h2[data-v-9dc5b1f9]{margin:0;font-size:20px;font-weight:600;color:#1f2937}.sort-controls[data-v-9dc5b1f9]{display:flex;align-items:center;gap:12px}.pagination-container[data-v-9dc5b1f9]{display:flex;justify-content:center;margin-top:32px;padding:20px 0}.search-bar[data-v-9dc5b1f9]{display:flex;gap:16px;align-items:center;max-width:600px;width:100%;padding:20px;background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);border-radius:20px;border:1px solid #e2e8f0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.search-input[data-v-9dc5b1f9]{flex:1;min-width:0}.search-input .n-input[data-v-9dc5b1f9]{border-radius:12px;border:1px solid #d1d5db;transition:all .2s ease}.search-input .n-input[data-v-9dc5b1f9]:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.search-button[data-v-9dc5b1f9]{border-radius:12px;font-weight:600;padding:0 24px;transition:all .2s ease}.search-button[data-v-9dc5b1f9]:hover{transform:translateY(-1px);box-shadow:0 4px 12px #3b82f64d}.tools-grid[data-v-9dc5b1f9]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.tool-card[data-v-9dc5b1f9]{border:1px solid #e5e7eb;border-radius:16px;background:white;overflow:hidden;transition:all .3s ease;box-shadow:0 1px 3px #0000001a}.tool-card[data-v-9dc5b1f9]:hover{transform:translateY(-4px);box-shadow:0 8px 25px #00000026;border-color:#d1d5db}.tool-image[data-v-9dc5b1f9]{position:relative;width:100%;height:200px;overflow:hidden;background:linear-gradient(135deg,#f3f4f6 0%,#e5e7eb 100%);cursor:pointer;transition:opacity .2s ease}.tool-image[data-v-9dc5b1f9]:hover{opacity:.9}.tool-image img[data-v-9dc5b1f9]{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.tool-card:hover .tool-image img[data-v-9dc5b1f9]{transform:scale(1.05)}.tool-image-placeholder[data-v-9dc5b1f9]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#9ca3af;background:linear-gradient(135deg,#f9fafb 0%,#f3f4f6 100%)}.tool-image-placeholder.show[data-v-9dc5b1f9]{display:flex}.tool-content[data-v-9dc5b1f9]{padding:20px}.tool-header[data-v-9dc5b1f9]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.tool-title-section[data-v-9dc5b1f9]{flex:1;margin-right:12px}.tool-title-section h3[data-v-9dc5b1f9]{margin:0 0 4px;font-size:18px;font-weight:600;color:#1f2937;line-height:1.2}.clickable-title[data-v-9dc5b1f9]{cursor:pointer;transition:color .2s ease}.clickable-title[data-v-9dc5b1f9]:hover{color:#10b981}.tool-meta[data-v-9dc5b1f9]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:4px}.tool-team[data-v-9dc5b1f9]{display:flex;align-items:center;gap:4px;font-size:12px;color:#6b7280;font-weight:500}.tool-team .n-icon[data-v-9dc5b1f9]{color:#9ca3af;font-size:14px}.status-badge[data-v-9dc5b1f9]{padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;letter-spacing:.3px}.status-badge.published[data-v-9dc5b1f9]{background:#d1fae5;color:#065f46}.status-badge.unpublished[data-v-9dc5b1f9]{background:#fee2e2;color:#991b1b}.status-badge.draft[data-v-9dc5b1f9]{background:#fef3c7;color:#92400e}.status-badge.active[data-v-9dc5b1f9]{background:#dbeafe;color:#1e40af}.status-badge.inactive[data-v-9dc5b1f9]{background:#f3f4f6;color:#6b7280}.status-badge.pending[data-v-9dc5b1f9],.status-badge.pending-review[data-v-9dc5b1f9]{background:#dbeafe;color:#1e40af}.tool-name[data-v-9dc5b1f9]{color:#6b7280;font-size:11px;font-weight:500;font-family:SF Mono,Monaco,Menlo,Ubuntu Mono,monospace;background:transparent;border:1px solid #d1d5db;border-radius:12px;padding:4px 10px;text-align:center;min-width:70px;letter-spacing:.3px;font-size:10px;transition:all .2s ease}.tool-name[data-v-9dc5b1f9]:hover{border-color:#9ca3af;color:#374151;transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.tool-subtitle[data-v-9dc5b1f9]{color:#6b7280;font-size:14px;line-height:1.5;margin-bottom:16px}.tool-actions[data-v-9dc5b1f9]{padding:0 20px 20px;display:flex;gap:12px}.tool-actions .n-button[data-v-9dc5b1f9]{flex:1}.loading[data-v-9dc5b1f9],.empty[data-v-9dc5b1f9]{display:flex;justify-content:center;align-items:center;min-height:300px}@media (max-width: 768px){.header-content[data-v-9dc5b1f9]{flex-direction:column;gap:16px;align-items:stretch}.search-container[data-v-9dc5b1f9]{margin-bottom:24px}.search-bar[data-v-9dc5b1f9]{flex-direction:column;gap:12px;padding:16px;max-width:100%}.search-input[data-v-9dc5b1f9],.search-button[data-v-9dc5b1f9]{width:100%}.tools-grid[data-v-9dc5b1f9]{grid-template-columns:1fr;gap:16px}.tool-card[data-v-9dc5b1f9]{border-radius:12px}.tool-image[data-v-9dc5b1f9]{height:180px}} diff --git a/apps/jingrow/frontend/dist/assets/NodeDetail-8cca90b5.js b/apps/jingrow/frontend/dist/assets/NodeDetail-8cca90b5.js new file mode 100644 index 0000000..f36a95a --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/NodeDetail-8cca90b5.js @@ -0,0 +1 @@ +import{d as G,u as O,X,r as v,c as P,o as Y,e as d,f as t,g as l,j as a,h as c,w as _,a1 as J,y as p,v as K,k as Q,a0 as g,t as s,a2 as V,l as u,$ as I,p as S,n as j,as as W,aA as Z}from"./index-d271a6a3.js";import{I as w}from"./iconify-242f8a3c.js";import{I as ee}from"./InstallProgressModal-2b90d319.js";import{_ as se}from"./_plugin-vue_export-helper-c27b6911.js";const te={class:"node-detail"},ae={class:"page-header"},oe={class:"header-content"},ne={class:"header-text"},le={class:"header-actions"},ie={key:0,class:"loading-container"},re={key:1,class:"error-container"},de={key:2,class:"node-content"},ce={class:"node-card"},ue={class:"node-info-section"},_e={class:"node-content-layout"},ve={class:"node-image-section"},pe={class:"node-image"},fe={key:0,class:"node-icon-container"},he={key:1,class:"placeholder-image"},ye={class:"node-info-content"},me={class:"node-header"},ge={class:"node-title"},we={key:0,class:"node-subtitle"},ke={class:"info-list"},Ne={key:0,class:"info-item"},be={class:"label"},Ie={class:"value"},xe={key:1,class:"info-item"},Ce={class:"label"},Te={class:"value"},Le={key:2,class:"info-item"},De={class:"label"},Se=["href"],Ue={key:3,class:"info-item"},Re={class:"label"},Me=["href"],Ee={key:4,class:"info-item"},Pe={class:"label"},Ve={class:"value"},je={key:5,class:"info-item"},Be={class:"label"},$e={class:"value"},ze={key:0,class:"description-section"},Fe=["innerHTML"],He=G({__name:"NodeDetail",setup(qe){const U=K(),x=Q(),C=O(),B=X(),T=v(!0),k=v(""),e=v(null),N=v(!1),y=v(0),f=v(""),b=v("info"),m=v(!1),R=v(new Set),$=P(()=>U.params.name),L=P(()=>e.value?q(e.value.node_type||e.value.name||""):!1);async function z(){var o,i;T.value=!0,k.value="";try{const n=await g.get(`/jingrow/node-marketplace/${$.value}`);e.value=n.data}catch(n){console.error("Failed to load node detail:",n),k.value=((i=(o=n.response)==null?void 0:o.data)==null?void 0:i.detail)||s("Failed to load node details")}finally{T.value=!1}}function M(o){if(!o)return"";const i=new Date(o),n=i.getFullYear(),h=String(i.getMonth()+1).padStart(2,"0"),r=String(i.getDate()).padStart(2,"0");return`${n}-${h}-${r}`}function F(){const o=U.query.returnTo;if(o){x.push(o);return}window.history.length>1?x.back():x.push("/node-marketplace")}async function H(){var o,i;if(!((o=e.value)!=null&&o.file_url)&&!((i=e.value)!=null&&i.repository_url)){C.error(s("Node file URL or repository address does not exist"));return}try{const n=e.value.node_type||e.value.name;if(n&&(await g.get(`/jingrow/check-node/${n}`)).data.exists){B.warning({title:s("Node already exists"),content:s('Node "{0}" is already installed, do you want to overwrite?').replace("{0}",n),positiveText:s("Confirm Overwrite"),negativeText:s("Cancel"),onPositiveClick:()=>{E()}});return}}catch(n){console.error("Check node exists error:",n)}E()}async function E(){var o,i,n,h;try{N.value=!0,y.value=0,f.value=s("Preparing installation..."),b.value="info",m.value=!0;let r;if(e.value.file_url)f.value=s("Downloading node package..."),y.value=20,f.value=s("Installing node..."),y.value=30,r=await g.post("/jingrow/install-node-from-url",new URLSearchParams({url:e.value.file_url}),{headers:{...V(),"Content-Type":"application/x-www-form-urlencoded"}});else if(e.value.repository_url){f.value=s("Cloning repository..."),y.value=20,f.value=s("Installing node..."),y.value=30;const A=new URLSearchParams({repo_url:e.value.repository_url});r=await g.post("/jingrow/install-node-from-git",A,{headers:{...V(),"Content-Type":"application/x-www-form-urlencoded"}})}if(!r)throw new Error(s("Unable to determine installation method"));if(y.value=100,r.data.success)N.value=!1,b.value="success",f.value=s("Node installed successfully!"),C.success(s("Node installed successfully")),D(),typeof window<"u"&&window.dispatchEvent(new Event("nodeMetadataUpdated")),setTimeout(()=>{m.value=!1},2e3);else throw new Error(r.data.error||s("Installation failed"))}catch(r){console.error("Install node error:",r),N.value=!1,b.value="error",f.value=((i=(o=r.response)==null?void 0:o.data)==null?void 0:i.detail)||r.message||s("Installation failed"),C.error(((h=(n=r.response)==null?void 0:n.data)==null?void 0:h.detail)||s("Installation failed")),setTimeout(()=>{m.value=!1},3e3)}}async function D(){try{const o=await g.get("/jingrow/installed-node-types");if(o.data.success){const i=o.data.node_types||[];R.value=new Set(i.map(n=>n.toLowerCase()))}}catch(o){console.error("Load installed nodes error:",o)}}function q(o){return o?R.value.has(o.toLowerCase()):!1}return Y(()=>{z(),D(),window.addEventListener("installedNodesUpdated",()=>{D()})}),(o,i)=>{var n,h;return u(),d("div",te,[t("div",ae,[t("div",oe,[t("div",ne,[t("h1",null,l(((n=e.value)==null?void 0:n.title)||((h=e.value)==null?void 0:h.node_type)||a(s)("Node Details")),1)]),t("div",le,[c(a(j),{onClick:F,size:"medium"},{icon:_(()=>[c(a(I),null,{default:_(()=>[c(a(w),{icon:"tabler:arrow-left"})]),_:1})]),default:_(()=>[S(" "+l(a(s)("Back")),1)]),_:1}),c(a(j),{type:L.value?"warning":"primary",onClick:H,size:"medium"},{icon:_(()=>[c(a(I),null,{default:_(()=>[c(a(w),{icon:L.value?"tabler:check":"tabler:download"},null,8,["icon"])]),_:1})]),default:_(()=>[S(" "+l(L.value?a(s)("Installed"):a(s)("Install")),1)]),_:1},8,["type"])])])]),T.value?(u(),d("div",ie,[c(a(W),{size:"large"},{description:_(()=>[S(l(a(s)("Loading node details...")),1)]),_:1})])):k.value?(u(),d("div",re,[c(a(Z),{description:k.value},{icon:_(()=>[c(a(I),null,{default:_(()=>[c(a(w),{icon:"tabler:alert-circle"})]),_:1})]),_:1},8,["description"])])):e.value?(u(),d("div",de,[t("div",ce,[t("div",ue,[t("div",_e,[t("div",ve,[t("div",pe,[e.value.icon||e.value.node_icon?(u(),d("div",fe,[c(a(w),{icon:e.value.icon||e.value.node_icon,width:120,height:120,style:J({color:e.value.color||e.value.node_color||"#6b7280"})},null,8,["icon","style"])])):(u(),d("div",he,[c(a(I),{size:"80"},{default:_(()=>[c(a(w),{icon:"tabler:cube"})]),_:1})]))])]),t("div",ye,[t("div",me,[t("h2",ge,l(e.value.title||e.value.node_type||a(s)("Untitled Node")),1),e.value.subtitle?(u(),d("div",we,l(e.value.subtitle),1)):p("",!0)]),t("div",ke,[e.value.node_type?(u(),d("div",Ne,[t("span",be,l(a(s)("Node Type"))+":",1),t("span",Ie,l(e.value.node_type),1)])):p("",!0),e.value.group||e.value.node_group?(u(),d("div",xe,[t("span",Ce,l(a(s)("Group"))+":",1),t("span",Te,l(e.value.group||e.value.node_group),1)])):p("",!0),e.value.repository_url?(u(),d("div",Le,[t("span",De,l(a(s)("Repository URL"))+":",1),t("a",{href:e.value.repository_url,target:"_blank",class:"link"},l(e.value.repository_url),9,Se)])):p("",!0),e.value.file_url?(u(),d("div",Ue,[t("span",Re,l(a(s)("File URL"))+":",1),t("a",{href:e.value.file_url,target:"_blank",class:"link"},l(e.value.file_url),9,Me)])):p("",!0),e.value.creation?(u(),d("div",Ee,[t("span",Pe,l(a(s)("Created"))+":",1),t("span",Ve,l(M(e.value.creation)),1)])):p("",!0),e.value.modified?(u(),d("div",je,[t("span",Be,l(a(s)("Last Updated"))+":",1),t("span",$e,l(M(e.value.modified)),1)])):p("",!0)])])])]),e.value.description||e.value.node_description?(u(),d("div",ze,[t("h3",null,l(a(s)("Description")),1),t("div",{class:"description-content",innerHTML:e.value.description||e.value.node_description},null,8,Fe)])):p("",!0)])])):p("",!0),c(ee,{modelValue:m.value,"onUpdate:modelValue":i[0]||(i[0]=r=>m.value=r),progress:y.value,message:f.value,status:b.value,installing:N.value,title:a(s)("Installing Node")},null,8,["modelValue","progress","message","status","installing","title"])])}}});const Ye=se(He,[["__scopeId","data-v-f0d29b4a"]]);export{Ye as default}; diff --git a/apps/jingrow/frontend/dist/assets/NodeDetail-d3ae3989.css b/apps/jingrow/frontend/dist/assets/NodeDetail-d3ae3989.css new file mode 100644 index 0000000..fa7fce6 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/NodeDetail-d3ae3989.css @@ -0,0 +1 @@ +.node-detail[data-v-f0d29b4a]{padding:24px}.page-header[data-v-f0d29b4a]{margin-bottom:32px}.header-content[data-v-f0d29b4a]{display:flex;justify-content:space-between;align-items:center}.header-actions[data-v-f0d29b4a]{display:flex;align-items:center;gap:30px}.header-text h1[data-v-f0d29b4a]{margin:0 0 8px;font-size:28px;font-weight:700;color:#1a1a1a}.header-text p[data-v-f0d29b4a]{margin:0;color:#666;font-size:16px}.loading-container[data-v-f0d29b4a],.error-container[data-v-f0d29b4a]{display:flex;justify-content:center;align-items:center;min-height:400px}.node-content[data-v-f0d29b4a]{display:flex;flex-direction:column;gap:32px}.node-card[data-v-f0d29b4a]{background:white;border-radius:8px;padding:24px;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column;gap:24px}.node-content-layout[data-v-f0d29b4a]{display:grid;grid-template-columns:1fr 2fr;gap:50px;align-items:start}.node-image-section[data-v-f0d29b4a]{display:flex;justify-content:center;align-items:center}.node-image[data-v-f0d29b4a]{width:100%;min-height:300px;border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center}.node-icon-container[data-v-f0d29b4a]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:20px}.placeholder-image[data-v-f0d29b4a]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#9ca3af}.node-header[data-v-f0d29b4a]{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid #e5e7eb}.node-title[data-v-f0d29b4a]{margin:0;font-size:22px;font-weight:600;color:#1a1a1a}.node-subtitle[data-v-f0d29b4a]{margin:8px 0 0;font-size:14px;color:#6b7280}.info-list[data-v-f0d29b4a]{display:flex;flex-direction:column;gap:12px}.info-item[data-v-f0d29b4a]{display:flex;align-items:center;gap:12px}.info-item .label[data-v-f0d29b4a]{font-weight:500;color:#374151;font-size:14px;min-width:80px}.info-item .value[data-v-f0d29b4a]{color:#6b7280;font-size:14px}.link[data-v-f0d29b4a]{color:#2563eb;text-decoration:none}.link[data-v-f0d29b4a]:hover{text-decoration:underline}.text-muted[data-v-f0d29b4a]{color:#9ca3af;font-style:italic}.description-section[data-v-f0d29b4a]{padding-top:24px;border-top:1px solid #e5e7eb}.description-section h3[data-v-f0d29b4a]{margin:0 0 20px;font-size:20px;font-weight:600;color:#1f2937}.description-content[data-v-f0d29b4a]{color:#374151;line-height:1.6}.description-content[data-v-f0d29b4a] h1,.description-content[data-v-f0d29b4a] h2,.description-content[data-v-f0d29b4a] h3,.description-content[data-v-f0d29b4a] h4,.description-content[data-v-f0d29b4a] h5,.description-content[data-v-f0d29b4a] h6{margin:16px 0 8px;color:#1f2937}.description-content[data-v-f0d29b4a] p{margin:8px 0}.description-content[data-v-f0d29b4a] ul,.description-content[data-v-f0d29b4a] ol{margin:8px 0;padding-left:20px}.description-content[data-v-f0d29b4a] li{margin:4px 0}.description-content[data-v-f0d29b4a] code{background:#f3f4f6;padding:2px 6px;border-radius:4px;font-family:Courier New,monospace;font-size:14px}.description-content[data-v-f0d29b4a] pre{background:#f3f4f6;padding:16px;border-radius:8px;overflow-x:auto;margin:16px 0}.description-content[data-v-f0d29b4a] blockquote{border-left:4px solid #e5e7eb;padding-left:16px;margin:16px 0;color:#6b7280;font-style:italic}@media (max-width: 768px){.node-card[data-v-f0d29b4a]{padding:20px}.node-content-layout[data-v-f0d29b4a]{grid-template-columns:1fr;gap:30px}.node-image-section[data-v-f0d29b4a]{order:2;justify-content:center}.node-image[data-v-f0d29b4a]{max-width:150px}.node-title[data-v-f0d29b4a]{font-size:20px}.info-item[data-v-f0d29b4a]{flex-direction:column;align-items:flex-start;gap:4px}.info-item .label[data-v-f0d29b4a]{min-width:auto}.header-content[data-v-f0d29b4a]{flex-direction:column;gap:16px}} diff --git a/apps/jingrow/frontend/dist/assets/NodeMarketplace-d789e8c1.js b/apps/jingrow/frontend/dist/assets/NodeMarketplace-d789e8c1.js new file mode 100644 index 0000000..1068cef --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/NodeMarketplace-d789e8c1.js @@ -0,0 +1 @@ +import{d as W,u as Y,X as ee,r,c as A,o as ae,M as E,e as p,f as l,g as d,j as s,h as n,w as i,i as te,F as se,C as oe,y as m,k as le,a0 as I,t,l as c,$ as b,m as ne,p as S,n as T,Z as re,D as R,a1 as ie,_ as ce,as as de,aA as ue,a2 as O}from"./index-d271a6a3.js";import{I as w}from"./iconify-242f8a3c.js";import{I as pe}from"./InstallProgressModal-2b90d319.js";import{_ as ve}from"./_plugin-vue_export-helper-c27b6911.js";const _e={class:"node-marketplace"},ge={class:"page-header"},fe={class:"header-content"},he={class:"header-text"},ye={class:"content"},me={class:"search-container"},we={class:"search-bar"},ke={key:0,class:"nodes-section"},Ne={class:"nodes-header"},Ce={class:"sort-controls"},Ie={class:"nodes-grid"},be=["onClick"],Se={key:1,class:"node-icon-placeholder"},xe={class:"node-content"},Pe={class:"node-header"},Me={class:"node-title-section"},ze=["onClick"],Ue={key:0,class:"node-type"},Te={key:0,class:"node-description"},Le={key:1,class:"node-meta"},$e={class:"node-actions"},Be={class:"pagination-container"},Ee={key:1,class:"loading"},Re={key:2,class:"empty"},Ve=W({__name:"NodeMarketplace",setup(je){const x=Y(),Z=ee(),K=le(),L=r(""),k=r(!1),g=r([]),P=r(0),f=r(1),N=r(parseInt(localStorage.getItem("itemsPerPage")||"20")),M=r("creation desc"),z=r(!1),h=r(0),_=r(""),U=r("info"),C=r(!1),V=r(new Set),q=A(()=>[{label:t("Latest"),value:"creation desc"},{label:t("Oldest"),value:"creation asc"},{label:t("Name A-Z"),value:"node_type asc"},{label:t("Name Z-A"),value:"node_type desc"},{label:t("Most Popular"),value:"modified desc"}]),J=A(()=>Math.max(1,Math.ceil(P.value/N.value)));async function v(){k.value=!0;try{const a=new URLSearchParams({page:f.value.toString(),page_size:N.value.toString(),search:L.value,sort_by:M.value}),e=(await I.get(`/jingrow/node-marketplace?${a}`)).data;e.items?(g.value=e.items,P.value=e.total||0):(g.value=e||[],P.value=g.value.length)}catch(a){console.error("Failed to load nodes:",a),x.error(t("Failed to load nodes")),g.value=[],P.value=0}finally{k.value=!1}}function Q(a){N.value=a,f.value=1,localStorage.setItem("itemsPerPage",a.toString()),v()}function $(a){K.push({path:`/node-marketplace/${a.name}`,query:{returnTo:"/node-marketplace"}})}async function j(a){if(!a.file_url&&!a.repository_url){x.error(t("Node file URL or repository address does not exist"));return}try{const o=a.node_type||a.name;if(o&&(await I.get(`/jingrow/check-node/${o}`)).data.exists){Z.warning({title:t("Node already exists"),content:t('Node "{0}" is already installed, do you want to overwrite?').replace("{0}",o),positiveText:t("Confirm Overwrite"),negativeText:t("Cancel"),onPositiveClick:()=>{D(a)}});return}}catch(o){console.error("Check node exists error:",o)}D(a)}async function D(a){var o,e,y,F;try{z.value=!0,h.value=0,_.value=t("Preparing installation..."),U.value="info",C.value=!0;let u;if(a.file_url)_.value=t("Downloading node package..."),h.value=20,_.value=t("Installing node..."),h.value=30,u=await I.post("/jingrow/install-node-from-url",new URLSearchParams({url:a.file_url}),{headers:{...O(),"Content-Type":"application/x-www-form-urlencoded"}});else if(a.repository_url){_.value=t("Cloning repository..."),h.value=20,_.value=t("Installing node..."),h.value=30;const H=new URLSearchParams({repo_url:a.repository_url});u=await I.post("/jingrow/install-node-from-git",H,{headers:{...O(),"Content-Type":"application/x-www-form-urlencoded"}})}if(!u)throw new Error(t("Unable to determine installation method"));if(h.value=100,u.data.success)z.value=!1,U.value="success",_.value=t("Node installed successfully!"),x.success(t("Node installed successfully")),B(),typeof window<"u"&&window.dispatchEvent(new Event("nodeMetadataUpdated")),setTimeout(()=>{C.value=!1},2e3);else throw new Error(u.data.error||t("Installation failed"))}catch(u){console.error("Install node error:",u),z.value=!1,U.value="error",_.value=((e=(o=u.response)==null?void 0:o.data)==null?void 0:e.detail)||u.message||t("Installation failed"),x.error(((F=(y=u.response)==null?void 0:y.data)==null?void 0:F.detail)||t("Installation failed")),setTimeout(()=>{C.value=!1},3e3)}}function X(a,o){return a?a.length<=o?a:a.substring(0,o)+"...":""}async function B(){try{const a=await I.get("/jingrow/installed-node-types");if(a.data.success){const o=a.data.node_types||[];V.value=new Set(o.map(e=>e.toLowerCase()))}}catch(a){console.error("Load installed nodes error:",a)}}function G(a){return a?V.value.has(a.toLowerCase()):!1}return ae(()=>{v(),B(),window.addEventListener("installedNodesUpdated",()=>{B()})}),E([M],()=>{f.value=1,v()},{deep:!0}),E([f],()=>{v()}),E(()=>localStorage.getItem("itemsPerPage"),a=>{a&&(N.value=parseInt(a),f.value=1,v())}),(a,o)=>(c(),p("div",_e,[l("div",ge,[l("div",fe,[l("div",he,[l("h1",null,d(s(t)("Node Marketplace")),1),l("p",null,d(s(t)("Browse and install nodes from Jingrow Node Marketplace")),1)])])]),l("div",ye,[l("div",me,[l("div",we,[n(s(ne),{value:L.value,"onUpdate:value":o[0]||(o[0]=e=>L.value=e),placeholder:s(t)("Search nodes..."),clearable:"",size:"large",onKeyup:te(v,["enter"]),class:"search-input"},{prefix:i(()=>[n(s(b),null,{default:i(()=>[n(s(w),{icon:"tabler:search"})]),_:1})]),_:1},8,["value","placeholder"]),n(s(T),{type:"primary",size:"large",onClick:v,class:"search-button"},{icon:i(()=>[n(s(b),null,{default:i(()=>[n(s(w),{icon:"tabler:search"})]),_:1})]),default:i(()=>[S(" "+d(s(t)("Search")),1)]),_:1})])]),!k.value&&g.value.length>0?(c(),p("div",ke,[l("div",Ne,[o[4]||(o[4]=l("div",{class:"nodes-title"},null,-1)),l("div",Ce,[n(s(re),{value:M.value,"onUpdate:value":[o[1]||(o[1]=e=>M.value=e),v],options:q.value,placeholder:s(t)("Sort by"),style:{width:"150px"}},null,8,["value","options","placeholder"])])]),l("div",Ie,[(c(!0),p(se,null,oe(g.value,e=>(c(),p("div",{key:e.name,class:"node-card"},[l("div",{class:"node-icon",onClick:y=>$(e)},[e.icon?(c(),R(s(w),{key:0,icon:e.icon,width:48,height:48,style:ie({color:e.color||"#6b7280"})},null,8,["icon","style"])):(c(),p("div",Se,[n(s(b),{size:"48"},{default:i(()=>[n(s(w),{icon:"tabler:cube"})]),_:1})]))],8,be),l("div",xe,[l("div",Pe,[l("div",Me,[l("h3",{onClick:y=>$(e),class:"clickable-title"},d(e.title||e.name),9,ze),e.node_type?(c(),p("div",Ue,d(e.node_type),1)):m("",!0)])]),e.description?(c(),p("div",Te,d(X(e.description,80)),1)):m("",!0),e.group?(c(),p("div",Le,[n(s(b),null,{default:i(()=>[n(s(w),{icon:"tabler:category"})]),_:1}),l("span",null,d(e.group),1)])):m("",!0)]),l("div",$e,[n(s(T),{type:"default",onClick:y=>$(e)},{default:i(()=>[S(d(s(t)("View Details")),1)]),_:1},8,["onClick"]),G(e.node_type||e.name)?(c(),R(s(T),{key:0,type:"warning",onClick:y=>j(e)},{default:i(()=>[S(d(s(t)("Installed")),1)]),_:1},8,["onClick"])):(c(),R(s(T),{key:1,type:"primary",onClick:y=>j(e)},{default:i(()=>[S(d(s(t)("Install")),1)]),_:1},8,["onClick"]))])]))),128))]),l("div",Be,[n(s(ce),{page:f.value,"onUpdate:page":[o[2]||(o[2]=e=>f.value=e),v],"page-count":J.value,size:"large","show-size-picker":"","page-sizes":[20,50,100],"page-size":N.value,"onUpdate:pageSize":Q},null,8,["page","page-count","page-size"])])])):m("",!0),k.value?(c(),p("div",Ee,[n(s(de),{size:"large"},{description:i(()=>[S(d(s(t)("Loading nodes...")),1)]),_:1})])):m("",!0),!k.value&&g.value.length===0?(c(),p("div",Re,[n(s(ue),{description:s(t)("No nodes found")},{icon:i(()=>[n(s(b),null,{default:i(()=>[n(s(w),{icon:"tabler:cube"})]),_:1})]),_:1},8,["description"])])):m("",!0)]),n(pe,{modelValue:C.value,"onUpdate:modelValue":o[3]||(o[3]=e=>C.value=e),progress:h.value,message:_.value,status:U.value,installing:z.value,title:s(t)("Installing Node")},null,8,["modelValue","progress","message","status","installing","title"])]))}});const Ze=ve(Ve,[["__scopeId","data-v-34ff93b1"]]);export{Ze as default}; diff --git a/apps/jingrow/frontend/dist/assets/NodeMarketplace-fe982eb3.css b/apps/jingrow/frontend/dist/assets/NodeMarketplace-fe982eb3.css new file mode 100644 index 0000000..e62ef21 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/NodeMarketplace-fe982eb3.css @@ -0,0 +1 @@ +.node-marketplace[data-v-34ff93b1]{padding:24px}.page-header[data-v-34ff93b1]{margin-bottom:32px}.header-content[data-v-34ff93b1]{display:flex;justify-content:space-between;align-items:flex-start}.header-text h1[data-v-34ff93b1]{margin:0 0 8px;font-size:28px;font-weight:700;color:#1a1a1a}.header-text p[data-v-34ff93b1]{margin:0;color:#666;font-size:16px}.search-container[data-v-34ff93b1]{display:flex;justify-content:center;margin-bottom:32px}.nodes-section[data-v-34ff93b1]{margin-bottom:32px}.nodes-header[data-v-34ff93b1]{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.sort-controls[data-v-34ff93b1]{display:flex;align-items:center;gap:12px}.pagination-container[data-v-34ff93b1]{display:flex;justify-content:center;margin-top:32px;padding:20px 0}.search-bar[data-v-34ff93b1]{display:flex;gap:16px;align-items:center;max-width:600px;width:100%;padding:20px;background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);border-radius:20px;border:1px solid #e2e8f0;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.search-input[data-v-34ff93b1]{flex:1;min-width:0}.search-button[data-v-34ff93b1]{border-radius:12px;font-weight:600;padding:0 24px}.nodes-grid[data-v-34ff93b1]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.node-card[data-v-34ff93b1]{border:1px solid #e5e7eb;border-radius:16px;background:white;overflow:hidden;transition:all .3s ease;box-shadow:0 1px 3px #0000001a}.node-card[data-v-34ff93b1]:hover{transform:translateY(-4px);box-shadow:0 8px 25px #00000026;border-color:#d1d5db}.node-icon[data-v-34ff93b1]{display:flex;align-items:center;justify-content:center;width:100%;height:120px;background:linear-gradient(135deg,#f3f4f6 0%,#e5e7eb 100%);cursor:pointer;padding:20px}.node-icon-placeholder[data-v-34ff93b1]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:#9ca3af}.node-content[data-v-34ff93b1]{padding:20px}.node-header[data-v-34ff93b1]{margin-bottom:12px}.node-title-section[data-v-34ff93b1]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.node-title-section h3[data-v-34ff93b1]{margin:0;font-size:18px;font-weight:600;color:#1f2937;line-height:1.2;flex:1;min-width:0}.clickable-title[data-v-34ff93b1]{cursor:pointer;transition:color .2s ease}.clickable-title[data-v-34ff93b1]:hover{color:#10b981}.node-type[data-v-34ff93b1]{color:#6b7280;font-size:11px;font-weight:500;font-family:SF Mono,Monaco,Menlo,Ubuntu Mono,monospace;background:#f3f4f6;border:1px solid #d1d5db;border-radius:8px;padding:4px 10px;display:inline-block;white-space:nowrap}.node-description[data-v-34ff93b1]{color:#6b7280;font-size:14px;line-height:1.5;margin-bottom:12px}.node-meta[data-v-34ff93b1]{display:flex;align-items:center;gap:4px;font-size:12px;color:#6b7280}.node-actions[data-v-34ff93b1]{padding:0 20px 20px;display:flex;gap:12px}.node-actions .n-button[data-v-34ff93b1]{flex:1}.loading[data-v-34ff93b1],.empty[data-v-34ff93b1]{display:flex;justify-content:center;align-items:center;min-height:300px}@media (max-width: 768px){.nodes-grid[data-v-34ff93b1]{grid-template-columns:1fr;gap:16px}} diff --git a/apps/jingrow/frontend/dist/assets/NodePalette-16ab1bc1.js b/apps/jingrow/frontend/dist/assets/NodePalette-16ab1bc1.js new file mode 100644 index 0000000..a60ea06 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/NodePalette-16ab1bc1.js @@ -0,0 +1 @@ +import{r as m,o as ee,K as te,c as k,l as n,e as s,f as l,Y as g,g as u,j as v,t as c,a4 as oe,a5 as ae,F as h,C as S,L as A,a1 as $,p as j,y as w,h as le,w as ne,T as se}from"./index-d271a6a3.js";import{u as ie,p as re,b as ue,N as q}from"./nodeMetadata-adf4e793.js";import{_ as ce}from"./_plugin-vue_export-helper-c27b6911.js";import"./vue-flow-core-1091fce6.js";import"./NodePropertyModal-edd68bd5.js";import"./SchemaFormRenderer-15cfd619.js";import"./nodes-4a3329bf.js";const de={class:"palette-header"},ve={class:"palette-tabs"},pe=["placeholder"],fe={class:"palette-content"},ge={class:"group-label"},me={class:"node-types-grid"},he=["onDragstart","onDblclick","onContextmenu","onMouseenter"],we={class:"node-type-label"},ye={key:0,class:"node-count"},_e={key:1,class:"fa fa-star favorite-icon",style:{color:"#f59e0b","margin-left":"2px","font-size":"13px"}},be={key:0,class:"empty-tip"},xe={class:"group-label"},Ne={class:"node-types-grid"},ke=["onDragstart","onDblclick","onContextmenu","onMouseenter"],Se={class:"node-type-label"},Ce={key:0,class:"node-count"},De={key:1,class:"fa fa-star favorite-icon",style:{color:"#f59e0b","margin-left":"2px","font-size":"13px"}},Le={key:0,class:"empty-tip"},Ee={class:"palette-tips"},Fe={class:"tip-item"},Me={class:"tip-item"},Oe={class:"tip-item"},$e={__name:"NodePalette",props:{class:{type:String,default:""}},setup(H){const W=H,C=m([]),D=ie(),x=m(null),y=m(""),f=m("all"),p=m(JSON.parse(localStorage.getItem("ai-agent-node-favorites")||"[]")),_=m(JSON.parse(localStorage.getItem("ai-agent-node-recent")||"[]")),d=m({show:!1,text:"",x:0,y:0,width:200,direction:"left"}),G=m(!1);let L=null;async function E(){await re(),C.value=ue()}ee(async()=>{await E(),typeof window<"u"&&window.addEventListener("nodeMetadataUpdated",E)}),te(()=>{typeof window<"u"&&window.removeEventListener("nodeMetadataUpdated",E)}),typeof window<"u"&&(window.addEventListener("recent-node-updated",()=>{_.value=JSON.parse(localStorage.getItem("ai-agent-node-recent")||"[]")}),window.addEventListener("fullscreenchange",()=>{G.value=!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)}));const I=(t,e)=>{x.value=e,t.dataTransfer.effectAllowed="move",t.dataTransfer.setData("application/vueflow",e.type),t.dataTransfer.setData("text/plain",e.type)},R=()=>{x.value=null};function K(){const t=document.querySelector(".vue-flow-container");if(!t)return{x:200,y:200};const e=t.getBoundingClientRect(),o=e.width/2+t.scrollLeft,a=e.height/2+t.scrollTop;if(window.vueFlowInstance&&typeof window.vueFlowInstance.project=="function"){const r=window.vueFlowInstance.project({x:o,y:a});return r.x+=Math.random()*20-10,r.y+=Math.random()*20-10,r}return{x:o,y:a}}const B=t=>{const e=K(),o={id:`${t.type}-${Date.now()}`,type:t.type,position:e,data:{}};D.addNode(o),D.selectNode(o.id),Z(t.type)};function X(t){p.value.includes(t)||(p.value.push(t),localStorage.setItem("ai-agent-node-favorites",JSON.stringify(p.value)))}function Q(t){p.value=p.value.filter(e=>e!==t),localStorage.setItem("ai-agent-node-favorites",JSON.stringify(p.value))}function J(t){p.value.includes(t)?Q(t):X(t)}function Z(t){_.value=[t,..._.value.filter(e=>e!==t)].slice(0,12),localStorage.setItem("ai-agent-node-recent",JSON.stringify(_.value))}const N=k(()=>{const t={};return D.nodes.forEach(e=>{t[e.type]=(t[e.type]||0)+1}),t});k(()=>{let t=C.value;if(y.value.trim()){const e=y.value.trim().toLowerCase();t=t.filter(o=>o.label.toLowerCase().includes(e)||o.type.toLowerCase().includes(e))}return t});const F=k(()=>{let t=C.value;if(y.value.trim()){const e=y.value.trim().toLowerCase();t=t.filter(o=>o.label.toLowerCase().includes(e)||o.type.toLowerCase().includes(e))}return f.value==="favorite"?t=t.filter(e=>p.value.includes(e.type)):f.value==="recent"&&(t=_.value.map(e=>t.find(o=>o.type===e)).filter(Boolean)),t}),M=k(()=>{const t=[];q.forEach(o=>{const a=F.value.filter(r=>r.group===o.group||!r.group&&o.group==="Other");a.length&&t.push({...o,nodes:a})});const e=F.value.filter(o=>!o.group||!q.some(a=>a.group===o.group));return e.length&&!t.some(o=>o.group==="Other")&&t.push({group:"Other",label:c("Other"),nodes:e}),t});function T(t,e){d.value.show=!0,d.value.text=e;const o=t.target.getBoundingClientRect(),a=200,r=38,i=8;let O=o.left-a-i,b=o.top+o.height/2-r/2,U="left";O<8&&(O=o.right+i,U="right");const V=8,Y=window.innerHeight-r-8;bY&&(b=Y),d.value.x=O,d.value.y=b,d.value.width=a,d.value.direction=U}function z(t,e){clearTimeout(L),L=setTimeout(()=>T(t,e),200)}function P(){clearTimeout(L),d.value.show=!1}return(t,e)=>(n(),s(h,null,[l("div",{class:g(["node-palette",W.class])},[l("div",de,[l("div",ve,[l("button",{class:g(["tab-btn",{active:f.value==="all"}]),onClick:e[0]||(e[0]=o=>f.value="all")},u(v(c)("All")),3),l("button",{class:g(["tab-btn",{active:f.value==="recent"}]),onClick:e[1]||(e[1]=o=>f.value="recent")},u(v(c)("Recent")),3),l("button",{class:g(["tab-btn",{active:f.value==="favorite"}]),onClick:e[2]||(e[2]=o=>f.value="favorite")},u(v(c)("Favorites")),3)]),oe(l("input",{"onUpdate:modelValue":e[3]||(e[3]=o=>y.value=o),class:"palette-search",placeholder:v(c)("Search node type/name...")},null,8,pe),[[ae,y.value]])]),l("div",fe,[f.value==="all"?(n(),s(h,{key:0},[(n(!0),s(h,null,S(M.value,o=>(n(),s("div",{key:o.group,class:"node-group"},[l("div",ge,u(v(c)(o.label)),1),l("div",me,[(n(!0),s(h,null,S(o.nodes,a=>{var r;return n(),s("div",{key:a.type,class:g(["node-type-item",{dragging:((r=x.value)==null?void 0:r.type)===a.type,"is-favorite":p.value.includes(a.type)}]),draggable:"true",onDragstart:i=>I(i,a),onDragend:R,onDblclick:i=>B(a),onContextmenu:A(i=>J(a.type),["right","prevent"]),onMouseenter:i=>z(i,a.description),onMouseleave:e[4]||(e[4]=i=>P())},[l("div",{class:"node-type-icon",style:$({color:a.color})},[l("i",{class:g(`fa ${a.icon}`)},null,2)],4),l("div",we,[j(u(v(c)(a.label))+" ",1),N.value[a.type]?(n(),s("span",ye,"("+u(N.value[a.type])+")",1)):w("",!0),p.value.includes(a.type)?(n(),s("i",_e)):w("",!0)])],42,he)}),128))])]))),128)),M.value.length===0?(n(),s("div",be,u(v(c)("No matching nodes")),1)):w("",!0)],64)):(n(),s(h,{key:1},[(n(!0),s(h,null,S(M.value,o=>(n(),s("div",{key:o.group,class:"node-group"},[l("div",xe,u(v(c)(o.label)),1),l("div",Ne,[(n(!0),s(h,null,S(o.nodes,a=>{var r;return n(),s("div",{key:a.type,class:g(["node-type-item",{dragging:((r=x.value)==null?void 0:r.type)===a.type,"is-favorite":p.value.includes(a.type)}]),draggable:"true",onDragstart:i=>I(i,a),onDragend:R,onDblclick:i=>B(a),onContextmenu:A(i=>J(a.type),["right","prevent"]),onMouseenter:i=>z(i,a.description),onMouseleave:e[5]||(e[5]=i=>P())},[l("div",{class:"node-type-icon",style:$({color:a.color})},[l("i",{class:g(`fa ${a.icon}`)},null,2)],4),l("div",Se,[j(u(v(c)(a.label))+" ",1),N.value[a.type]?(n(),s("span",Ce,"("+u(N.value[a.type])+")",1)):w("",!0),p.value.includes(a.type)?(n(),s("i",De)):w("",!0)])],42,ke)}),128))])]))),128)),F.value.length===0?(n(),s("div",Le,u(v(c)("No matching nodes")),1)):w("",!0)],64)),l("div",Ee,[l("div",Fe,[e[6]||(e[6]=l("i",{class:"fa fa-info-circle"},null,-1)),l("span",null,u(v(c)("Drag nodes to canvas to add")),1)]),l("div",Me,[e[7]||(e[7]=l("i",{class:"fa fa-mouse-pointer"},null,-1)),l("span",null,u(v(c)("Double click node to add quickly")),1)]),l("div",Oe,[e[8]||(e[8]=l("i",{class:"fa fa-star"},null,-1)),l("span",null,u(v(c)("Right click node to favorite/unfavorite")),1)])])])],2),le(se,{name:"fade"},{default:ne(()=>[d.value.show?(n(),s("div",{key:0,class:g(["custom-tooltip",d.value.direction]),style:$({left:d.value.x+"px",top:d.value.y+"px",width:d.value.width+"px"})},u(d.value.text),7)):w("",!0)]),_:1})],64))}},Ve=ce($e,[["__scopeId","data-v-0b159d3d"]]);export{Ve as default}; diff --git a/apps/jingrow/frontend/dist/assets/NodePalette-fb23ec47.css b/apps/jingrow/frontend/dist/assets/NodePalette-fb23ec47.css new file mode 100644 index 0000000..0553c93 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/NodePalette-fb23ec47.css @@ -0,0 +1 @@ +.node-palette[data-v-0b159d3d]{background:white;border-radius:8px;box-shadow:0 2px 10px #0000001a;overflow:hidden;height:100%;display:flex;flex-direction:column}.palette-header[data-v-0b159d3d]{background:linear-gradient(135deg,#f8fafc 0%,#e2e8f0 100%);padding:12px 12px 8px;border-bottom:1px solid #e2e8f0;display:flex;flex-direction:column;gap:8px}.palette-tabs[data-v-0b159d3d]{display:flex;gap:8px;margin-bottom:2px}.tab-btn[data-v-0b159d3d]{background:none;border:none;font-size:14px;color:#6b7280;padding:4px 12px;border-radius:6px 6px 0 0;cursor:pointer;font-weight:500;transition:color .2s,background .2s}.tab-btn.active[data-v-0b159d3d]{color:#3b82f6;background:none;border-bottom:2px solid #3b82f6}.palette-search[data-v-0b159d3d]{width:100%;padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:13px;outline:none;transition:border .2s}.palette-search[data-v-0b159d3d]:focus{border-color:#6366f1}.palette-content[data-v-0b159d3d]{flex:1;padding:12px 12px 0;overflow-y:auto;display:flex;flex-direction:column;gap:18px}.node-group[data-v-0b159d3d]{margin-bottom:8px}.group-label[data-v-0b159d3d]{font-size:13px;color:#64748b;font-weight:600;margin-bottom:4px;margin-left:2px}.node-types-grid[data-v-0b159d3d]{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 6px}.node-type-item[data-v-0b159d3d]{display:flex;align-items:center;gap:3px;padding:2px;border:2px solid transparent;border-radius:8px;background:#f9fafb;cursor:grab;transition:all .2s ease;-webkit-user-select:none;user-select:none;position:relative}.node-type-item[data-v-0b159d3d]:hover{background:#f3f4f6;border-color:#d1d5db;box-shadow:0 2px 8px #00000014}.node-type-item[data-v-0b159d3d]:active{cursor:grabbing}.node-type-item.dragging[data-v-0b159d3d]{opacity:.5;transform:rotate(5deg)}.node-type-icon[data-v-0b159d3d]{font-size:20px;width:24px;text-align:center;flex-shrink:0}.node-type-label[data-v-0b159d3d]{font-size:13px;font-weight:600;color:#1f2937;display:flex;align-items:center;gap:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-count[data-v-0b159d3d]{font-size:11px;background:#e5e7eb;color:#6b7280;padding:2px 6px;border-radius:10px;font-weight:500;margin-left:2px}.favorite-icon[data-v-0b159d3d]{margin-left:2px}.empty-tip[data-v-0b159d3d]{color:#b91c1c;text-align:center;font-size:13px;margin:18px 0 0}.palette-tips[data-v-0b159d3d]{padding-top:10px;border-top:1px solid #e5e7eb;margin-top:10px}.tip-item[data-v-0b159d3d]{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:12px;color:#6b7280}.tip-item i[data-v-0b159d3d]{color:#9ca3af;width:14px;text-align:center}.custom-tooltip[data-v-0b159d3d]{position:fixed;z-index:9999999;min-width:120px;max-width:260px;background:rgba(255,255,255,.98);color:#222;font-size:13px;border-radius:8px;box-shadow:0 2px 8px #0000001a;border:1px solid #e5e7eb;padding:10px 16px;pointer-events:none;white-space:pre-line;line-height:1.5;opacity:.98;transition:opacity .13s;text-align:left}.custom-tooltip.top .tooltip-arrow[data-v-0b159d3d]{top:100%;border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #fff;border-bottom:none;filter:drop-shadow(0 1px 2px rgba(0,0,0,.08))}.custom-tooltip.bottom .tooltip-arrow[data-v-0b159d3d]{bottom:100%;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #fff;border-top:none;filter:drop-shadow(0 -1px 2px rgba(0,0,0,.08))}.custom-tooltip.left .tooltip-arrow[data-v-0b159d3d]{position:absolute;right:-7px;top:50%;transform:translateY(-50%);width:0;height:0;pointer-events:none}.custom-tooltip.left .tooltip-arrow[data-v-0b159d3d]:after{content:"";position:absolute;left:0;top:0;width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;border-left:8px solid #fff;margin-right:-1px;box-shadow:-1px 0 2px #00000014;border-radius:2px 0 0 2px;border-left:1px solid #e5e7eb}.custom-tooltip.left[data-v-0b159d3d]{border-right:1px solid #e5e7eb}.custom-tooltip.right .tooltip-arrow[data-v-0b159d3d]{position:absolute;left:-7px;top:50%;transform:translateY(-50%);width:0;height:0;pointer-events:none}.custom-tooltip.right .tooltip-arrow[data-v-0b159d3d]:after{content:"";position:absolute;right:0;top:0;width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;border-right:8px solid #fff;margin-left:-1px;box-shadow:1px 0 2px #00000014;border-radius:0 2px 2px 0;border-right:1px solid #e5e7eb}.custom-tooltip.right[data-v-0b159d3d]{border-left:1px solid #e5e7eb}.ai-agent-flow-builder.fullscreen .custom-tooltip[data-v-0b159d3d]{background:rgba(255,255,255,.95);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(229,231,235,.8);box-shadow:0 8px 32px #0003}.fade-enter-active[data-v-0b159d3d],.fade-leave-active[data-v-0b159d3d]{transition:opacity .13s}.fade-enter-from[data-v-0b159d3d],.fade-leave-to[data-v-0b159d3d]{opacity:0} diff --git a/apps/jingrow/frontend/dist/assets/NodePropertyModal-775c980e.css b/apps/jingrow/frontend/dist/assets/NodePropertyModal-775c980e.css new file mode 100644 index 0000000..a383ece --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/NodePropertyModal-775c980e.css @@ -0,0 +1 @@ +.node-property-modal-mask[data-v-6c76d832]{position:fixed;z-index:99999;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.18);display:flex;align-items:center;justify-content:center}.node-property-modal-content[data-v-6c76d832]{min-width:420px;max-width:98vw;max-height:90vh;background:white;border-radius:10px;box-shadow:0 8px 32px #0000002e;display:flex;flex-direction:column}.node-property-modal-header[data-v-6c76d832]{display:flex;align-items:center;justify-content:space-between;padding:12px 24px 8px;border-bottom:1px solid #e5e7eb}.node-property-modal-header h4[data-v-6c76d832]{margin:0;font-size:16px;font-weight:600}.modal-close[data-v-6c76d832]{background:none;border:none;font-size:24px;color:#888;cursor:pointer}.node-property-modal-body[data-v-6c76d832]{flex:1;overflow-y:auto;padding:0 24px;max-height:60vh;min-height:120px}.node-property-modal-footer[data-v-6c76d832]{display:flex;justify-content:flex-end;gap:12px;padding:16px 24px;border-top:1px solid #e5e7eb}.btn[data-v-6c76d832]{padding:4px 12px;border-radius:4px;font-size:14px;font-weight:500;border:none;cursor:pointer}.btn-primary[data-v-6c76d832]{background:#222;color:#fff}.btn-secondary[data-v-6c76d832]{background:#f3f4f6;color:#222}.node-property-modal-content .property-section[data-v-6c76d832]{margin-bottom:24px}.node-property-modal-content .property-section h5[data-v-6c76d832]{margin:0 0 12px;font-size:16px;font-weight:600;color:#374151;border-bottom:1px solid #e5e7eb;padding-bottom:8px}.node-property-modal-content .form-group[data-v-6c76d832]{margin-bottom:0}.node-property-modal-content .form-group label[data-v-6c76d832]{display:block;margin-bottom:6px;font-weight:500;color:#374151;font-size:14px}.node-property-modal-content .form-control[data-v-6c76d832]{width:100%;padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}.node-property-modal-content .form-control[data-v-6c76d832]:focus{outline:none;border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a}.node-property-modal-content .form-control[data-v-6c76d832]::placeholder{color:#9ca3af}.node-property-modal-content textarea.form-control[data-v-6c76d832]{resize:vertical;min-height:60px}.node-property-modal-content select.form-control[data-v-6c76d832]{width:100%;min-width:0;max-width:100%;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");background-position:right 8px center;background-repeat:no-repeat;background-size:16px 12px;padding-right:32px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.node-property-modal-content .form-control-sm[data-v-6c76d832]{padding:4px 8px;font-size:12px}.node-property-modal-content .table[data-v-6c76d832]{width:100%;border-collapse:collapse;margin-bottom:16px}.node-property-modal-content .table th[data-v-6c76d832],.node-property-modal-content .table td[data-v-6c76d832]{padding:8px;border:1px solid #e5e7eb;text-align:left}.node-property-modal-content .table th[data-v-6c76d832]{background-color:#f9fafb;font-weight:600;font-size:12px}.node-property-modal-content .table td[data-v-6c76d832]{font-size:12px}.node-property-modal-content .btn-danger[data-v-6c76d832]{background:#ef4444;color:#fff}.node-property-modal-content .btn-danger[data-v-6c76d832]:hover{background:#dc2626}.node-property-modal-content .form-text[data-v-6c76d832]{font-size:12px;color:#6b7280;margin-top:4px} diff --git a/apps/jingrow/frontend/dist/assets/NodePropertyModal-edd68bd5.js b/apps/jingrow/frontend/dist/assets/NodePropertyModal-edd68bd5.js new file mode 100644 index 0000000..23410c7 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/NodePropertyModal-edd68bd5.js @@ -0,0 +1 @@ +import{c as l,l as u,D as h,e as g,f as t,aC as d,g as n,j as c,t as a,a1 as v,L as _,y as w,aN as x}from"./index-d271a6a3.js";import{_ as S}from"./_plugin-vue_export-helper-c27b6911.js";const T={class:"node-property-modal-header"},k={class:"node-property-modal-body"},N={class:"node-property-modal-footer"},C={__name:"NodePropertyModal",props:{modelValue:Boolean,title:{type:String,default:""},nodeLabel:{type:String,default:""},width:{type:[String,Number],default:900},maxHeight:{type:[String,Number],default:"90vh"},teleportTo:{type:[String,Object],default:null}},emits:["update:modelValue","close","save"],setup(s,{emit:m}){const e=s,i=m,y=l(()=>e.title?e.title:`${a("Node Properties")}-${e.nodeLabel||a("Node")}`),f=l(()=>e.teleportTo?e.teleportTo:window.nodePropertyTeleportTarget?window.nodePropertyTeleportTarget.value:"#ai-agent-flow-builder-container"),r=()=>{i("update:modelValue",!1),i("close")},b=l(()=>({width:typeof e.width=="number"?e.width+"px":e.width,maxWidth:"98vw",maxHeight:typeof e.maxHeight=="number"?e.maxHeight+"px":e.maxHeight,background:"white",borderRadius:"10px",boxShadow:"0 8px 32px rgba(0,0,0,0.18)",display:"flex",flexDirection:"column"}));return(o,p)=>(u(),h(x,{to:f.value},[s.modelValue?(u(),g("div",{key:0,class:"node-property-modal-mask",onClick:_(r,["self"])},[t("div",{class:"node-property-modal-content",style:v(b.value)},[t("div",T,[d(o.$slots,"header",{},()=>[t("h4",null,n(y.value),1)],!0),t("button",{class:"modal-close",onClick:r},"×")]),t("div",k,[d(o.$slots,"default",{},void 0,!0)]),t("div",N,[d(o.$slots,"footer",{},()=>[t("button",{class:"btn btn-secondary",onClick:r},n(c(a)("Cancel")),1),t("button",{class:"btn btn-primary",onClick:p[0]||(p[0]=$=>o.$emit("save"))},n(c(a)("Save")),1)],!0)])],4)])):w("",!0)],8,["to"]))}},B=S(C,[["__scopeId","data-v-6c76d832"]]);export{B as default}; diff --git a/apps/jingrow/frontend/dist/assets/Password-6c897bb6.css b/apps/jingrow/frontend/dist/assets/Password-6c897bb6.css new file mode 100644 index 0000000..811c283 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Password-6c897bb6.css @@ -0,0 +1 @@ +.field-wrapper[data-v-f8b62ec1] .n-input{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Password-e94e21d3.js b/apps/jingrow/frontend/dist/assets/Password-e94e21d3.js new file mode 100644 index 0000000..caf9739 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Password-e94e21d3.js @@ -0,0 +1 @@ +import{d as n,c as p,e as o,f as c,p as f,g as i,y as u,h as _,j as m,Y as b,l as s,m as y}from"./index-d271a6a3.js";import{_ as v}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},w={key:0,class:"required"},N=n({__name:"Password",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(l){const d=l,t=p(()=>d.df.label_layout||"vertical");return(e,a)=>(s(),o("div",{class:b(["field-wrapper",`layout-${t.value}`])},[c("label",g,[f(i(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(s(),o("span",w,"*")):u("",!0)]),_(m(y),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=r=>e.record[e.df.fieldname]=r),type:"password",placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const h=v(N,[["__scopeId","data-v-f8b62ec1"]]),V=Object.freeze(Object.defineProperty({__proto__:null,default:h},Symbol.toStringTag,{value:"Module"}));export{V as _}; diff --git a/apps/jingrow/frontend/dist/assets/Percent-1a180e8c.js b/apps/jingrow/frontend/dist/assets/Percent-1a180e8c.js new file mode 100644 index 0000000..3e4ffb9 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Percent-1a180e8c.js @@ -0,0 +1 @@ +import{d as l,c as n,e as a,f as c,p as d,g as _,y as p,h as i,j as f,Y as u,l as t,az as m}from"./index-d271a6a3.js";import{_ as y}from"./_plugin-vue_export-helper-c27b6911.js";const b={class:"field-label"},g={key:0,class:"required"},v=l({__name:"Percent",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(o){const r=o,s=n(()=>r.df.label_layout||"vertical");return(e,h)=>(t(),a("div",{class:u(["field-wrapper",`layout-${s.value}`])},[c("label",b,[d(_(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(t(),a("span",g,"*")):p("",!0)]),i(f(m),{type:"line",percentage:Number(e.record[e.df.fieldname])||0,"show-indicator":!0},null,8,["percentage"])],2))}});const N=y(v,[["__scopeId","data-v-90ae1ce6"]]),V=Object.freeze(Object.defineProperty({__proto__:null,default:N},Symbol.toStringTag,{value:"Module"}));export{V as _}; diff --git a/apps/jingrow/frontend/dist/assets/Percent-5230862a.css b/apps/jingrow/frontend/dist/assets/Percent-5230862a.css new file mode 100644 index 0000000..95624de --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Percent-5230862a.css @@ -0,0 +1 @@ +.field-wrapper[data-v-90ae1ce6] .n-progress{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Phone-533abb29.js b/apps/jingrow/frontend/dist/assets/Phone-533abb29.js new file mode 100644 index 0000000..ed01800 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Phone-533abb29.js @@ -0,0 +1 @@ +import{d as r,c as p,e as o,f as c,p as i,g as f,y as u,h as _,j as m,Y as b,l,m as y}from"./index-d271a6a3.js";import{_ as v}from"./_plugin-vue_export-helper-c27b6911.js";const h={class:"field-label"},g={key:0,class:"required"},N=r({__name:"Phone",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(t){const d=t,s=p(()=>d.df.label_layout||"vertical");return(e,a)=>(l(),o("div",{class:b(["field-wrapper",`layout-${s.value}`])},[c("label",h,[i(f(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(l(),o("span",g,"*")):u("",!0)]),_(m(y),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=n=>e.record[e.df.fieldname]=n),type:"text",placeholder:e.ctx.t(e.df.fieldname),disabled:!e.canEdit},null,8,["value","placeholder","disabled"])],2))}});const B=v(N,[["__scopeId","data-v-78ca8db2"]]),j=Object.freeze(Object.defineProperty({__proto__:null,default:B},Symbol.toStringTag,{value:"Module"}));export{j as _}; diff --git a/apps/jingrow/frontend/dist/assets/Phone-6f74dbad.css b/apps/jingrow/frontend/dist/assets/Phone-6f74dbad.css new file mode 100644 index 0000000..4b67d98 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Phone-6f74dbad.css @@ -0,0 +1 @@ +.field-wrapper[data-v-78ca8db2] .n-input{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/PublishApp-82449107.css b/apps/jingrow/frontend/dist/assets/PublishApp-82449107.css new file mode 100644 index 0000000..f55d1cb --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/PublishApp-82449107.css @@ -0,0 +1 @@ +.app-detail[data-v-819d5383]{padding:24px}.page-header[data-v-819d5383]{margin-bottom:32px}.header-content[data-v-819d5383]{display:flex;justify-content:space-between;align-items:flex-start}.header-actions[data-v-819d5383]{display:flex;align-items:center;gap:30px}.header-text h1[data-v-819d5383]{margin:0 0 8px;font-size:28px;font-weight:700;color:#1a1a1a}.header-text p[data-v-819d5383]{margin:0;color:#666;font-size:16px}.app-content[data-v-819d5383]{display:flex;flex-direction:column;gap:32px}.app-card[data-v-819d5383]{background:white;border-radius:8px;padding:24px;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column;gap:24px}.app-content-layout[data-v-819d5383]{display:grid;grid-template-columns:1fr 2fr;gap:24px}.app-image-section[data-v-819d5383]{display:flex;justify-content:center;align-items:center}.app-image[data-v-819d5383]{width:100%;min-width:300px;min-height:300px;border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center;position:relative;border:2px dashed #d1d5db;transition:all .3s ease;cursor:pointer}.app-image[data-v-819d5383]:hover{border-color:#3b82f6;background-color:#f8fafc}.app-image.drag-over[data-v-819d5383]{border-color:#10b981;background-color:#f0fdf4;border-style:solid}.drag-overlay[data-v-819d5383]{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(16,185,129,.1);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#10b981;font-weight:500;z-index:10}.drag-overlay p[data-v-819d5383]{margin:8px 0 0;font-size:14px}.app-image img[data-v-819d5383]{width:100%;height:auto;object-fit:contain}.placeholder-image[data-v-819d5383]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#9ca3af}.upload-hint[data-v-819d5383]{margin:12px 0 0;font-size:14px;color:#6b7280;text-align:center}.image-actions[data-v-819d5383]{position:absolute;top:8px;right:8px;z-index:10}.remove-btn[data-v-819d5383]{width:24px;height:24px;box-shadow:0 2px 8px #00000026;background:rgba(239,68,68,.9);border:none;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.remove-btn[data-v-819d5383]:hover{background:#ef4444;box-shadow:0 4px 12px #ef44444d}.remove-btn .n-icon[data-v-819d5383]{font-size:14px}.image-upload-overlay[data-v-819d5383]{position:absolute;bottom:8px;left:50%;transform:translate(-50%);opacity:.8;transition:opacity .3s ease}.app-image:hover .image-upload-overlay[data-v-819d5383]{opacity:1}.app-info-content[data-v-819d5383]{display:flex;flex-direction:column;gap:16px}.app-header[data-v-819d5383]{margin-bottom:8px}.app-title[data-v-819d5383]{margin:0;font-size:24px;font-weight:600;color:#1f2937}.info-list[data-v-819d5383]{display:flex;flex-direction:column;gap:12px}.info-item[data-v-819d5383]{display:flex;align-items:center;gap:12px}.info-item .label[data-v-819d5383]{font-weight:500;color:#374151;min-width:100px;flex-shrink:0}.info-item .value[data-v-819d5383]{color:#6b7280}.info-item .n-input[data-v-819d5383]{flex:1}.required[data-v-819d5383]{color:#ef4444;font-weight:700;margin-left:2px}.app-description-section[data-v-819d5383]{border-top:1px solid #e5e7eb;padding-top:24px}.app-description-section h3[data-v-819d5383]{margin:0 0 16px;font-size:18px;font-weight:600;color:#374151}.app-subtitle[data-v-819d5383]{margin:8px 0 0}.description-content[data-v-819d5383]{color:#6b7280;line-height:1.6}.description-content .field-wrapper[data-v-819d5383]{margin:0}.description-content .field-label[data-v-819d5383]{display:none}.description-content .jeditor-control[data-v-819d5383]{margin-top:0}.form-grid[data-v-819d5383]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.form-item[data-v-819d5383]{display:flex;flex-direction:column;gap:8px}.form-item label[data-v-819d5383]{font-weight:500;color:#374151;font-size:14px}@media (max-width: 768px){.app-detail[data-v-819d5383]{padding:16px}.header-content[data-v-819d5383]{flex-direction:column;gap:16px}.header-actions[data-v-819d5383]{width:100%;justify-content:flex-end}.app-content-layout[data-v-819d5383],.form-grid[data-v-819d5383]{grid-template-columns:1fr}} diff --git a/apps/jingrow/frontend/dist/assets/PublishApp-be616077.js b/apps/jingrow/frontend/dist/assets/PublishApp-be616077.js new file mode 100644 index 0000000..9242585 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/PublishApp-be616077.js @@ -0,0 +1 @@ +import{d as Y,u as G,r as v,e as g,f as s,g as c,j as e,h as o,w as d,Y as H,L as y,y as T,p as x,k as K,a0 as V,l as b,t as i,$ as D,n as C,m as k}from"./index-d271a6a3.js";import{I as w}from"./iconify-242f8a3c.js";import{_ as Q}from"./Jeditor.vue_vue_type_style_index_0_lang-fa0f1963.js";import{_ as X}from"./_plugin-vue_export-helper-c27b6911.js";import"./common-c89c6552.js";const Z={class:"app-detail"},ee={class:"page-header"},ae={class:"header-content"},se={class:"header-text"},le={class:"header-actions"},te={class:"app-content"},oe={class:"app-card"},ie={class:"app-info-section"},ne={class:"app-content-layout"},re={class:"app-image-section"},ce=["src"],de={key:1,class:"image-actions"},pe={key:2,class:"placeholder-image"},ue={class:"upload-hint"},fe={key:3,class:"drag-overlay"},ve={class:"app-info-content"},_e={class:"info-list"},me={class:"info-item"},he={class:"label"},ge={class:"info-item"},ye={class:"label"},be={class:"info-item"},De={class:"label"},ke={class:"info-item"},we={class:"label"},Fe={class:"info-item"},Ee={class:"label"},Ue={class:"app-description-section"},xe={class:"description-content"},Ie=Y({__name:"PublishApp",setup(Ce){const A=K(),u=G(),I=v(!1),_=v(""),F=v(""),m=v(!1),E=v(null),n=v({title:"",app_name:"",subtitle:"",repository_url:"",file_url:"",description:""}),z=()=>{A.push("/app-marketplace")},j=async l=>{var t;m.value=!1;const a=(t=l.dataTransfer)==null?void 0:t.files;if(a&&a.length>0){const r=a[0];r.type.startsWith("image/")?await L({file:{file:r}}):u.error("请选择图片文件")}},M=l=>{l.preventDefault()},O=l=>{l.preventDefault(),m.value=!0},S=l=>{l.preventDefault();const a=l.currentTarget,t=l.relatedTarget;a.contains(t)||(m.value=!1)},q=()=>{var l;(l=E.value)==null||l.click()},$=async l=>{var r;const t=(r=l.target.files)==null?void 0:r[0];t&&await L({file:{file:t}})},J=()=>{_.value="",F.value="",E.value&&(E.value.value="")},L=async l=>{var h,R,N,B;const{file:a,onFinish:t,onError:r}=(h=l.file)!=null&&h.file?{file:l.file.file,onFinish:l.onFinish,onError:l.onError}:(R=l.fileList)!=null&&R.length?{file:l.fileList[0].file,onFinish:l.onFinish,onError:l.onError}:l instanceof File?{file:l,onFinish:null,onError:null}:{file:null,onFinish:null,onError:null};if(!a||!(a instanceof File)){r&&r(new Error("无效的文件"));return}const U=new FileReader;U.onload=f=>{var p;_.value=(p=f.target)==null?void 0:p.result},U.readAsDataURL(a);try{const f=new FormData;f.append("file",a);const p=await V.post("/jingrow/upload-image",f,{timeout:3e4});if(p.data.success)F.value=p.data.url,u.success("图片上传成功"),t&&t();else{const P=p.data.error||"图片上传失败";u.error(P),r&&r(new Error(P))}}catch(f){const p=((B=(N=f.response)==null?void 0:N.data)==null?void 0:B.detail)||f.message||"图片上传失败";u.error("图片上传失败: "+p),r&&r(new Error(p))}},W=async()=>{var l,a;if(!n.value.title||!n.value.app_name){u.error("请填写应用标题和应用名称");return}I.value=!0;try{const t=new FormData;Object.entries(n.value).forEach(([U,h])=>{h&&t.append(U,h)}),F.value&&t.append("app_image",F.value),(await V.post("/jingrow/create-app",t)).data.success?(u.success("应用发布成功"),A.push("/app-marketplace")):u.error("应用发布失败")}catch(t){u.error(((a=(l=t.response)==null?void 0:l.data)==null?void 0:a.detail)||"应用发布失败")}finally{I.value=!1}};return(l,a)=>(b(),g("div",Z,[s("div",ee,[s("div",ae,[s("div",se,[s("h1",null,c(e(i)("Publish App")),1)]),s("div",le,[o(e(C),{onClick:z,size:"medium"},{icon:d(()=>[o(e(D),null,{default:d(()=>[o(e(w),{icon:"tabler:arrow-left"})]),_:1})]),default:d(()=>[x(" "+c(e(i)("Back")),1)]),_:1}),o(e(C),{type:"primary",onClick:W,loading:I.value,size:"medium"},{icon:d(()=>[o(e(D),null,{default:d(()=>[o(e(w),{icon:"tabler:upload"})]),_:1})]),default:d(()=>[x(" "+c(e(i)("Publish")),1)]),_:1},8,["loading"])])])]),s("div",te,[s("div",oe,[s("div",ie,[s("div",ne,[s("div",re,[s("div",{class:H(["app-image",{"drag-over":m.value}]),onDragover:y(M,["prevent"]),onDragenter:y(O,["prevent"]),onDragleave:y(S,["prevent"]),onDrop:y(j,["prevent"]),onClick:q},[_.value?(b(),g("img",{key:0,src:_.value,alt:"应用图片预览"},null,8,ce)):T("",!0),_.value?(b(),g("div",de,[o(e(C),{type:"error",size:"small",circle:"",onClick:y(J,["stop"]),class:"remove-btn"},{icon:d(()=>[o(e(D),null,{default:d(()=>[o(e(w),{icon:"tabler:x"})]),_:1})]),_:1})])):(b(),g("div",pe,[o(e(D),{size:"80"},{default:d(()=>[o(e(w),{icon:"tabler:apps"})]),_:1}),s("p",ue,c(e(i)("Click or drag to upload")),1)])),m.value?(b(),g("div",fe,[o(e(D),{size:"60"},{default:d(()=>[o(e(w),{icon:"tabler:upload"})]),_:1}),s("p",null,c(e(i)("Drop image here")),1)])):T("",!0)],34),s("input",{ref_key:"fileInput",ref:E,type:"file",accept:"image/*",style:{display:"none"},onChange:$},null,544)]),s("div",ve,[a[8]||(a[8]=s("div",{class:"app-header"},null,-1)),s("div",_e,[s("div",me,[s("span",he,[x(c(e(i)("App Title"))+":",1),a[6]||(a[6]=s("span",{class:"required"},"*",-1))]),o(e(k),{value:n.value.title,"onUpdate:value":a[0]||(a[0]=t=>n.value.title=t),placeholder:e(i)("App title")},null,8,["value","placeholder"])]),s("div",ge,[s("span",ye,[x(c(e(i)("App Name"))+":",1),a[7]||(a[7]=s("span",{class:"required"},"*",-1))]),o(e(k),{value:n.value.app_name,"onUpdate:value":a[1]||(a[1]=t=>n.value.app_name=t),placeholder:e(i)("App name")},null,8,["value","placeholder"])]),s("div",be,[s("span",De,c(e(i)("Subtitle"))+":",1),o(e(k),{value:n.value.subtitle,"onUpdate:value":a[2]||(a[2]=t=>n.value.subtitle=t),type:"textarea",placeholder:e(i)("Brief description"),rows:3},null,8,["value","placeholder"])]),s("div",ke,[s("span",we,c(e(i)("Repository URL"))+":",1),o(e(k),{value:n.value.repository_url,"onUpdate:value":a[3]||(a[3]=t=>n.value.repository_url=t),placeholder:e(i)("Repository URL")},null,8,["value","placeholder"])]),s("div",Fe,[s("span",Ee,c(e(i)("File URL"))+":",1),o(e(k),{value:n.value.file_url,"onUpdate:value":a[4]||(a[4]=t=>n.value.file_url=t),placeholder:e(i)("File URL")},null,8,["value","placeholder"])])])])])]),s("div",Ue,[s("div",xe,[o(Q,{df:{fieldname:"description",label:e(i)("Description"),fieldtype:"Jeditor"},modelValue:n.value.description,"onUpdate:modelValue":a[5]||(a[5]=t=>n.value.description=t),ctx:{t:e(i)}},null,8,["df","modelValue","ctx"])])])])])]))}});const Pe=X(Ie,[["__scopeId","data-v-819d5383"]]);export{Pe as default}; diff --git a/apps/jingrow/frontend/dist/assets/PublishProgressModal-1eae2cb9.js b/apps/jingrow/frontend/dist/assets/PublishProgressModal-1eae2cb9.js new file mode 100644 index 0000000..f193db4 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/PublishProgressModal-1eae2cb9.js @@ -0,0 +1 @@ +import{I as i}from"./iconify-242f8a3c.js";import{d as B,r as M,M as g,D as r,w as o,j as e,l as a,f as c,$ as n,h as u,y as _,g as d,n as h,p as k,t as v,e as m,C as P,Y as I,F as D,af as F}from"./index-d271a6a3.js";import{_ as R}from"./_plugin-vue_export-helper-c27b6911.js";const j={style:{display:"flex","align-items":"center",gap:"8px"}},x={style:{margin:"0"}},E={class:"progress-content"},L={class:"steps-container"},S={class:"step-icon"},T={class:"step-content"},U={class:"step-title"},Y={key:0,class:"step-message"},$={key:1,class:"step-error-message"},q={class:"dialog-actions"},A=B({__name:"PublishProgressModal",props:{modelValue:{type:Boolean},title:{},steps:{},status:{}},emits:["update:modelValue","retry"],setup(b,{emit:z}){const p=b,f=z,l=M(p.modelValue);g(()=>p.modelValue,s=>{l.value=s}),g(l,s=>{f("update:modelValue",s)});function C(){p.status!=="processing"&&(l.value=!1)}function V(s){!s&&p.status!=="processing"?l.value=!1:!s&&p.status==="processing"?l.value=!0:l.value=s}function w(){f("retry")}return(s,y)=>(a(),r(e(F),{show:l.value,"onUpdate:show":[y[0]||(y[0]=t=>l.value=t),V],preset:"card",style:{width:"600px"},"mask-closable":s.status!=="processing","close-on-esc":s.status!=="processing"},{header:o(()=>[c("div",j,[s.status==="processing"?(a(),r(e(n),{key:0,size:20},{default:o(()=>[u(e(i),{icon:"tabler:hourglass"})]),_:1})):s.status==="success"?(a(),r(e(n),{key:1,size:20,color:"#10b981"},{default:o(()=>[u(e(i),{icon:"tabler:check-circle"})]),_:1})):s.status==="error"?(a(),r(e(n),{key:2,size:20,color:"#ef4444"},{default:o(()=>[u(e(i),{icon:"tabler:x-circle"})]),_:1})):_("",!0),c("h3",x,d(s.title),1)])]),action:o(()=>[c("div",q,[s.status==="error"||s.status==="success"?(a(),r(e(h),{key:0,type:"default",size:"medium",onClick:C,class:"action-btn-close"},{default:o(()=>[k(d(e(v)("Close")),1)]),_:1})):_("",!0),s.status==="error"?(a(),r(e(h),{key:1,type:"primary",size:"medium",onClick:w,class:"action-btn-retry"},{default:o(()=>[k(d(e(v)("Retry")),1)]),_:1})):_("",!0)])]),default:o(()=>[c("div",E,[c("div",L,[(a(!0),m(D,null,P(s.steps,(t,N)=>(a(),m("div",{key:N,class:I(["step-item",{"step-active":t.status==="processing","step-success":t.status==="success","step-error":t.status==="error","step-pending":t.status==="pending"}])},[c("div",S,[t.status==="processing"?(a(),r(e(n),{key:0,size:20},{default:o(()=>[u(e(i),{icon:"tabler:loader-2",class:"rotating"})]),_:1})):t.status==="success"?(a(),r(e(n),{key:1,size:20,color:"#10b981"},{default:o(()=>[u(e(i),{icon:"tabler:check"})]),_:1})):t.status==="error"?(a(),r(e(n),{key:2,size:20,color:"#ef4444"},{default:o(()=>[u(e(i),{icon:"tabler:x"})]),_:1})):(a(),r(e(n),{key:3,size:20,color:"#94a3b8"},{default:o(()=>[u(e(i),{icon:"tabler:circle"})]),_:1}))]),c("div",T,[c("div",U,d(t.title),1),t.message?(a(),m("div",Y,d(t.message),1)):_("",!0),t.error?(a(),m("div",$,d(t.error),1)):_("",!0)])],2))),128))])])]),_:1},8,["show","mask-closable","close-on-esc"]))}});const K=R(A,[["__scopeId","data-v-c97c0883"]]);export{K as default}; diff --git a/apps/jingrow/frontend/dist/assets/PublishProgressModal-fe153f75.css b/apps/jingrow/frontend/dist/assets/PublishProgressModal-fe153f75.css new file mode 100644 index 0000000..ed9c8c9 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/PublishProgressModal-fe153f75.css @@ -0,0 +1 @@ +.progress-content[data-v-c97c0883]{padding:20px 0}.steps-container[data-v-c97c0883]{display:flex;flex-direction:column;gap:16px}.step-item[data-v-c97c0883]{display:flex;gap:12px;padding:12px;border-radius:8px;transition:all .2s}.step-pending[data-v-c97c0883]{opacity:.5}.step-active[data-v-c97c0883]{background:#eff6ff;border:1px solid #3b82f6}.step-success[data-v-c97c0883]{background:#f0fdf4;border:1px solid #10b981}.step-error[data-v-c97c0883]{background:#fef2f2;border:1px solid #ef4444}.step-icon[data-v-c97c0883]{display:flex;align-items:center;flex-shrink:0}.step-content[data-v-c97c0883]{flex:1;display:flex;flex-direction:column;gap:4px}.step-title[data-v-c97c0883]{font-weight:500;color:#1f2937}.step-message[data-v-c97c0883]{font-size:13px;color:#6b7280}.step-error-message[data-v-c97c0883]{font-size:13px;color:#ef4444;margin-top:4px}.rotating[data-v-c97c0883]{animation:rotate-c97c0883 1s linear infinite}@keyframes rotate-c97c0883{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.dialog-actions[data-v-c97c0883]{display:flex;justify-content:flex-end;gap:12px;width:100%}.action-btn-close[data-v-c97c0883]{background:#f3f4f6!important;color:#374151!important;border:1px solid rgba(0,0,0,.08)!important;transition:all .2s cubic-bezier(.4,0,.2,1)}.action-btn-close[data-v-c97c0883] .n-button__border,.action-btn-close[data-v-c97c0883] .n-button__state-border{border:none!important;border-color:transparent!important}.action-btn-close[data-v-c97c0883]:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 2px 8px #00000014}.action-btn-close[data-v-c97c0883]:hover:not(:disabled) .n-button__border,.action-btn-close[data-v-c97c0883]:hover:not(:disabled) .n-button__state-border{border:none!important;border-color:transparent!important}.action-btn-retry[data-v-c97c0883]{background:#e6f8f0!important;border:1px solid #1fc76f!important;color:#0d684b!important}.action-btn-retry[data-v-c97c0883] .n-button__border,.action-btn-retry[data-v-c97c0883] .n-button__state-border{border:none!important;border-color:transparent!important}.action-btn-retry[data-v-c97c0883]:hover{background:#dcfce7!important;border-color:#1fc76f!important;border:1px solid #1fc76f!important;color:#166534!important;box-shadow:0 2px 8px #1fc76f26!important}.action-btn-retry[data-v-c97c0883]:hover .n-button__border,.action-btn-retry[data-v-c97c0883]:hover .n-button__state-border{border:none!important;border-color:transparent!important}.action-btn-retry[data-v-c97c0883]:focus{background:#dcfce7!important;border-color:#1fc76f!important;border:1px solid #1fc76f!important;color:#166534!important;box-shadow:0 0 0 2px #1fc76f33!important}.action-btn-retry[data-v-c97c0883]:focus .n-button__border,.action-btn-retry[data-v-c97c0883]:focus .n-button__state-border{border:none!important;border-color:transparent!important}.action-btn-retry[data-v-c97c0883]:active{background:#1fc76f!important;border-color:#1fc76f!important;border:1px solid #1fc76f!important;color:#fff!important;box-shadow:0 1px 4px #1fc76f33!important}.action-btn-retry[data-v-c97c0883]:active .n-button__border,.action-btn-retry[data-v-c97c0883]:active .n-button__state-border{border:none!important;border-color:transparent!important}.action-btn-retry[data-v-c97c0883]:disabled{background:#f1f5f9!important;border:1px solid #e2e8f0!important;border-color:#e2e8f0!important;color:#94a3b8!important;opacity:.6!important;cursor:not-allowed!important}.action-btn-retry[data-v-c97c0883]:disabled .n-button__border,.action-btn-retry[data-v-c97c0883]:disabled .n-button__state-border{border:none!important;border-color:transparent!important} diff --git a/apps/jingrow/frontend/dist/assets/PublishTool-47778a38.css b/apps/jingrow/frontend/dist/assets/PublishTool-47778a38.css new file mode 100644 index 0000000..cca9c7e --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/PublishTool-47778a38.css @@ -0,0 +1 @@ +.tool-detail[data-v-5333a9e5]{padding:24px}.page-header[data-v-5333a9e5]{margin-bottom:32px}.header-content[data-v-5333a9e5]{display:flex;justify-content:space-between;align-items:flex-start}.header-actions[data-v-5333a9e5]{display:flex;align-items:center;gap:30px}.header-text h1[data-v-5333a9e5]{margin:0 0 8px;font-size:28px;font-weight:700;color:#1a1a1a}.header-text p[data-v-5333a9e5]{margin:0;color:#666;font-size:16px}.tool-content[data-v-5333a9e5]{display:flex;flex-direction:column;gap:32px}.tool-card[data-v-5333a9e5]{background:white;border-radius:8px;padding:24px;box-shadow:0 1px 3px #0000001a;display:flex;flex-direction:column;gap:24px}.tool-content-layout[data-v-5333a9e5]{display:grid;grid-template-columns:1fr 2fr;gap:24px}.tool-image-section[data-v-5333a9e5]{display:flex;justify-content:center;align-items:center}.tool-image[data-v-5333a9e5]{width:100%;min-width:300px;min-height:300px;border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center;position:relative;border:2px dashed #d1d5db;transition:all .3s ease;cursor:pointer}.tool-image[data-v-5333a9e5]:hover{border-color:#3b82f6;background-color:#f8fafc}.tool-image.drag-over[data-v-5333a9e5]{border-color:#10b981;background-color:#f0fdf4;border-style:solid}.drag-overlay[data-v-5333a9e5]{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(16,185,129,.1);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#10b981;font-weight:500;z-index:10}.drag-overlay p[data-v-5333a9e5]{margin:8px 0 0;font-size:14px}.tool-image img[data-v-5333a9e5]{width:100%;height:auto;object-fit:contain}.placeholder-image[data-v-5333a9e5]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#9ca3af}.upload-hint[data-v-5333a9e5]{margin:12px 0 0;font-size:14px;color:#6b7280;text-align:center}.image-actions[data-v-5333a9e5]{position:absolute;top:8px;right:8px;z-index:10}.remove-btn[data-v-5333a9e5]{width:24px;height:24px;box-shadow:0 2px 8px #00000026;background:rgba(239,68,68,.9);border:none;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.remove-btn[data-v-5333a9e5]:hover{background:#ef4444;box-shadow:0 4px 12px #ef44444d}.remove-btn .n-icon[data-v-5333a9e5]{font-size:14px}.tool-info-content[data-v-5333a9e5]{display:flex;flex-direction:column;gap:16px}.tool-header[data-v-5333a9e5]{margin-bottom:8px}.info-list[data-v-5333a9e5]{display:flex;flex-direction:column;gap:12px}.info-item[data-v-5333a9e5]{display:flex;align-items:center;gap:12px}.info-item .label[data-v-5333a9e5]{font-weight:500;color:#374151;min-width:100px;flex-shrink:0}.info-item .value[data-v-5333a9e5]{color:#6b7280}.info-item .n-input[data-v-5333a9e5]{flex:1}.required[data-v-5333a9e5]{color:#ef4444;font-weight:700;margin-left:2px}.tool-description-section[data-v-5333a9e5]{border-top:1px solid #e5e7eb;padding-top:24px}.description-content[data-v-5333a9e5]{color:#6b7280;line-height:1.6}.description-content .field-wrapper[data-v-5333a9e5]{margin:0}.description-content .field-label[data-v-5333a9e5]{display:none}.description-content .jeditor-control[data-v-5333a9e5]{margin-top:0}@media (max-width: 768px){.tool-detail[data-v-5333a9e5]{padding:16px}.header-content[data-v-5333a9e5]{flex-direction:column;gap:16px}.header-actions[data-v-5333a9e5]{width:100%;justify-content:flex-end}.tool-content-layout[data-v-5333a9e5]{grid-template-columns:1fr}} diff --git a/apps/jingrow/frontend/dist/assets/PublishTool-e5abc3aa.js b/apps/jingrow/frontend/dist/assets/PublishTool-e5abc3aa.js new file mode 100644 index 0000000..2cebc02 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/PublishTool-e5abc3aa.js @@ -0,0 +1 @@ +import{d as Y,u as G,r as v,e as g,f as o,g as c,j as l,h as s,w as d,Y as H,L as y,y as z,p as I,k as K,a0 as R,l as b,t as i,$ as k,n as x,m as C,ap as Q}from"./index-d271a6a3.js";import{I as D}from"./iconify-242f8a3c.js";import{_ as X}from"./Jeditor.vue_vue_type_style_index_0_lang-fa0f1963.js";import Z from"./IconPicker-661ac603.js";import{_ as ee}from"./_plugin-vue_export-helper-c27b6911.js";import"./common-c89c6552.js";import"./index-362e01cb.js";const le={class:"tool-detail"},oe={class:"page-header"},ae={class:"header-content"},te={class:"header-text"},se={class:"header-actions"},ne={class:"tool-content"},ie={class:"tool-card"},re={class:"tool-info-section"},ce={class:"tool-content-layout"},de={class:"tool-image-section"},ue=["src"],pe={key:1,class:"image-actions"},fe={key:2,class:"placeholder-image"},ve={class:"upload-hint"},_e={key:3,class:"drag-overlay"},me={class:"tool-info-content"},he={class:"info-list"},ge={class:"info-item"},ye={class:"label"},be={class:"info-item"},ke={class:"label"},De={class:"info-item"},we={class:"label"},Fe={class:"info-item"},Te={class:"label"},Ie={class:"info-item"},Ce={class:"label"},Ee={class:"info-item"},xe={class:"label"},Ue={class:"tool-description-section"},Ve={class:"description-content"},Ne=Y({__name:"PublishTool",setup(Pe){const U=K(),p=G(),E=v(!1),_=v(""),w=v(""),m=v(!1),F=v(null),n=v({title:"",tool_name:"",subtitle:"",file_url:"",description:"",icon:"",color:""}),j=()=>{U.push("/tool-marketplace")},M=async t=>{var a;m.value=!1;const e=(a=t.dataTransfer)==null?void 0:a.files;if(e&&e.length>0){const r=e[0];r.type.startsWith("image/")?await V({file:{file:r}}):p.error("请选择图片文件")}},O=t=>{t.preventDefault()},S=t=>{t.preventDefault(),m.value=!0},q=t=>{t.preventDefault();const e=t.currentTarget,a=t.relatedTarget;e.contains(a)||(m.value=!1)},$=()=>{var t;(t=F.value)==null||t.click()},A=async t=>{var r;const a=(r=t.target.files)==null?void 0:r[0];a&&await V({file:{file:a}})},J=()=>{_.value="",w.value="",F.value&&(F.value.value="")},V=async t=>{var h,N,P,B;const{file:e,onFinish:a,onError:r}=(h=t.file)!=null&&h.file?{file:t.file.file,onFinish:t.onFinish,onError:t.onError}:(N=t.fileList)!=null&&N.length?{file:t.fileList[0].file,onFinish:t.onFinish,onError:t.onError}:t instanceof File?{file:t,onFinish:null,onError:null}:{file:null,onFinish:null,onError:null};if(!e||!(e instanceof File)){r&&r(new Error("无效的文件"));return}const T=new FileReader;T.onload=f=>{var u;_.value=(u=f.target)==null?void 0:u.result},T.readAsDataURL(e);try{const f=new FormData;f.append("file",e);const u=await R.post("/jingrow/upload-image",f,{timeout:3e4});if(u.data.success)w.value=u.data.url,p.success("图片上传成功"),a&&a();else{const L=u.data.error||"图片上传失败";p.error(L),r&&r(new Error(L))}}catch(f){const u=((B=(P=f.response)==null?void 0:P.data)==null?void 0:B.detail)||f.message||"图片上传失败";p.error("图片上传失败: "+u),r&&r(new Error(u))}},W=async()=>{var t,e;if(!n.value.title||!n.value.tool_name){p.error("请填写工具标题和工具名称");return}E.value=!0;try{const a=new FormData;Object.entries(n.value).forEach(([T,h])=>{h&&a.append(T,h)}),w.value&&a.append("tool_image",w.value),(await R.post("/jingrow/tool/publish",a)).data.success?(p.success("工具发布成功"),U.push("/tool-marketplace")):p.error("工具发布失败")}catch(a){p.error(((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.detail)||"工具发布失败")}finally{E.value=!1}};return(t,e)=>(b(),g("div",le,[o("div",oe,[o("div",ae,[o("div",te,[o("h1",null,c(l(i)("Publish Tool")),1)]),o("div",se,[s(l(x),{onClick:j,size:"medium"},{icon:d(()=>[s(l(k),null,{default:d(()=>[s(l(D),{icon:"tabler:arrow-left"})]),_:1})]),default:d(()=>[I(" "+c(l(i)("Back")),1)]),_:1}),s(l(x),{type:"primary",onClick:W,loading:E.value,size:"medium"},{icon:d(()=>[s(l(k),null,{default:d(()=>[s(l(D),{icon:"tabler:upload"})]),_:1})]),default:d(()=>[I(" "+c(l(i)("Publish")),1)]),_:1},8,["loading"])])])]),o("div",ne,[o("div",ie,[o("div",re,[o("div",ce,[o("div",de,[o("div",{class:H(["tool-image",{"drag-over":m.value}]),onDragover:y(O,["prevent"]),onDragenter:y(S,["prevent"]),onDragleave:y(q,["prevent"]),onDrop:y(M,["prevent"]),onClick:$},[_.value?(b(),g("img",{key:0,src:_.value,alt:"工具图片预览"},null,8,ue)):z("",!0),_.value?(b(),g("div",pe,[s(l(x),{type:"error",size:"small",circle:"",onClick:y(J,["stop"]),class:"remove-btn"},{icon:d(()=>[s(l(k),null,{default:d(()=>[s(l(D),{icon:"tabler:x"})]),_:1})]),_:1})])):(b(),g("div",fe,[s(l(k),{size:"80"},{default:d(()=>[s(l(D),{icon:"tabler:tool"})]),_:1}),o("p",ve,c(l(i)("Click or drag to upload")),1)])),m.value?(b(),g("div",_e,[s(l(k),{size:"60"},{default:d(()=>[s(l(D),{icon:"tabler:upload"})]),_:1}),o("p",null,c(l(i)("Drop image here")),1)])):z("",!0)],34),o("input",{ref_key:"fileInput",ref:F,type:"file",accept:"image/*",style:{display:"none"},onChange:A},null,544)]),o("div",me,[e[9]||(e[9]=o("div",{class:"tool-header"},null,-1)),o("div",he,[o("div",ge,[o("span",ye,[I(c(l(i)("Title"))+":",1),e[7]||(e[7]=o("span",{class:"required"},"*",-1))]),s(l(C),{value:n.value.title,"onUpdate:value":e[0]||(e[0]=a=>n.value.title=a),placeholder:l(i)("Title")},null,8,["value","placeholder"])]),o("div",be,[o("span",ke,[I(c(l(i)("Tool Name"))+":",1),e[8]||(e[8]=o("span",{class:"required"},"*",-1))]),s(l(C),{value:n.value.tool_name,"onUpdate:value":e[1]||(e[1]=a=>n.value.tool_name=a),placeholder:l(i)("Tool name")},null,8,["value","placeholder"])]),o("div",De,[o("span",we,c(l(i)("Subtitle"))+":",1),s(l(C),{value:n.value.subtitle,"onUpdate:value":e[2]||(e[2]=a=>n.value.subtitle=a),type:"textarea",placeholder:l(i)("Brief description"),rows:3},null,8,["value","placeholder"])]),o("div",Fe,[o("span",Te,c(l(i)("File URL"))+":",1),s(l(C),{value:n.value.file_url,"onUpdate:value":e[3]||(e[3]=a=>n.value.file_url=a),placeholder:l(i)("File URL")},null,8,["value","placeholder"])]),o("div",Ie,[o("span",Ce,c(l(i)("Icon"))+":",1),s(Z,{modelValue:n.value.icon,"onUpdate:modelValue":e[4]||(e[4]=a=>n.value.icon=a)},null,8,["modelValue"])]),o("div",Ee,[o("span",xe,c(l(i)("Color"))+":",1),s(l(Q),{value:n.value.color,"onUpdate:value":e[5]||(e[5]=a=>n.value.color=a)},null,8,["value"])])])])])]),o("div",Ue,[o("div",Ve,[s(X,{df:{fieldname:"description",label:l(i)("Description"),fieldtype:"Jeditor"},modelValue:n.value.description,"onUpdate:modelValue":e[6]||(e[6]=a=>n.value.description=a),ctx:{t:l(i)}},null,8,["df","modelValue","ctx"])])])])])]))}});const Se=ee(Ne,[["__scopeId","data-v-5333a9e5"]]);export{Se as default}; diff --git a/apps/jingrow/frontend/dist/assets/Rating-0f221503.css b/apps/jingrow/frontend/dist/assets/Rating-0f221503.css new file mode 100644 index 0000000..bd62a12 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Rating-0f221503.css @@ -0,0 +1 @@ +.field-wrapper[data-v-22f5fa71] .n-rate{flex:1} diff --git a/apps/jingrow/frontend/dist/assets/Rating-d1ae3ba1.js b/apps/jingrow/frontend/dist/assets/Rating-d1ae3ba1.js new file mode 100644 index 0000000..ded96b8 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/Rating-d1ae3ba1.js @@ -0,0 +1 @@ +import{d as r,c as i,e as o,f,p as _,g as c,y as p,h as u,j as m,Y as b,l as t,a_ as v}from"./index-d271a6a3.js";import{_ as y}from"./_plugin-vue_export-helper-c27b6911.js";const g={class:"field-label"},N={key:0,class:"required"},B=r({__name:"Rating",props:{df:{},record:{},canEdit:{type:Boolean},ctx:{}},setup(l){const s=l,d=i(()=>s.df.label_layout||"vertical");return(e,a)=>(t(),o("div",{class:b(["field-wrapper",`layout-${d.value}`])},[f("label",g,[_(c(e.ctx.t(e.df.label||e.df.fieldname))+" ",1),e.df.reqd?(t(),o("span",N,"*")):p("",!0)]),u(m(v),{value:e.record[e.df.fieldname],"onUpdate:value":a[0]||(a[0]=n=>e.record[e.df.fieldname]=n),disabled:!e.canEdit},null,8,["value","disabled"])],2))}});const R=y(B,[["__scopeId","data-v-22f5fa71"]]),k=Object.freeze(Object.defineProperty({__proto__:null,default:R},Symbol.toStringTag,{value:"Module"}));export{k as _}; diff --git a/apps/jingrow/frontend/dist/assets/ScheduledJobDetail-441251e3.js b/apps/jingrow/frontend/dist/assets/ScheduledJobDetail-441251e3.js new file mode 100644 index 0000000..58d5209 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/ScheduledJobDetail-441251e3.js @@ -0,0 +1,13 @@ +import{d as L,u as T,r as x,c as q,o as z,e as i,f as e,h as c,w as r,j as t,p as f,g as l,D as h,y as J,v as M,k as A,t as o,l as u,I as j,$ as C,Y as D,n as N,a4 as _,a5 as v,a3 as R,U as g}from"./index-d271a6a3.js";import{I as k}from"./iconify-242f8a3c.js";import{a as H,t as w}from"./scheduledJobs-fd54b72b.js";import{_ as Y}from"./_plugin-vue_export-helper-c27b6911.js";import"./common-c89c6552.js";const $={class:"job-detail-page"},G={class:"page-header"},K={class:"page-title"},O={key:0,class:"loading"},P={key:1,class:"job-content"},Q={class:"properties-grid"},W={class:"property-group"},X={class:"property-item"},Z={class:"property-item"},ee={class:"property-item"},te={class:"status-display"},se={class:"property-item"},oe={class:"status-display"},ae={key:0,class:"status-badge enabled"},le={key:1,class:"status-badge disabled"},ne={class:"property-group"},de={class:"property-item"},ue={class:"property-item"},ie={class:"property-item"},re={class:"property-item"},ce={class:"cron-section"},pe={class:"cron-display"},_e={class:"cron-code"},ve={class:"cron-description"},ye={class:"execution-section"},me={class:"execution-item"},be={class:"execution-value"},fe={key:0,class:"datetime-text"},he={key:1,class:"text-muted"},xe={class:"execution-item"},ge={class:"execution-value"},ke={key:0,class:"datetime-text next-execution"},Se={key:1,class:"text-muted"},Je={key:2,class:"text-muted"},je={key:2,class:"error"},Ce=`* * * * * +┬ ┬ ┬ ┬ ┬ +│ │ │ │ │ +│ │ │ │ └ day of week (0 - 6) (0 is Sunday) +│ │ │ └───── month (1 - 12) +│ │ └────────── day of month (1 - 31) +│ └─────────────── hour (0 - 23) +└──────────────────── minute (0 - 59) + +--- + +* - Any value +/ - Step values`,De=L({__name:"ScheduledJobDetail",setup(Ne){const U=M(),V=A(),p=T(),s=x(null),y=x(!1),m=q(()=>U.params.id),b=x(null),B=async()=>{if(m.value){y.value=!0;try{const n=await H(m.value);n.stopped=!!n.stopped,s.value=n,!n.stopped&&n.next_execution?b.value=n.next_execution:b.value=null}catch(n){console.error("获取任务详情失败:",n),p.error(o("Failed to load job detail")),s.value=null}finally{y.value=!1}}},F=async n=>{if(s.value)try{const a=await w(m.value);a.success?p.success(a.message||o("Job status updated successfully")):(p.error(a.message||o("Failed to update job status")),s.value.stopped=!n)}catch(a){console.error("Toggle job status error:",a),p.error(o("Failed to update job status")),s.value.stopped=!n}},E=async()=>{if(s.value)try{const n=await w(m.value);n.success?(p.success(n.message||o("Job status updated successfully")),s.value.stopped=!s.value.stopped):p.error(n.message||o("Failed to update job status"))}catch(n){console.error("Toggle job status error:",n),p.error(o("Failed to update job status"))}},I=()=>{V.push({name:"ScheduledJobList"})},S=n=>{if(!n)return"—";try{return new Date(n).toLocaleString()}catch{return n}};return z(()=>{B()}),(n,a)=>(u(),i("div",$,[e("div",G,[c(t(j),{justify:"space-between",align:"center"},{default:r(()=>{var d;return[e("div",null,[e("h1",K,l(((d=s.value)==null?void 0:d.method)||t(o)("Scheduled Job Detail")),1)]),c(t(j),{size:8},{default:r(()=>[s.value?(u(),h(t(N),{key:0,type:"default",size:"medium",disabled:y.value,onClick:E,class:D(["toolbar-btn",s.value.stopped?"execute-btn":"stop-btn"])},{icon:r(()=>[c(t(C),null,{default:r(()=>[s.value.stopped?(u(),h(t(k),{key:0,icon:"tabler:play"})):(u(),h(t(k),{key:1,icon:"tabler:pause"}))]),_:1})]),default:r(()=>[f(" "+l(s.value.stopped?t(o)("Start Job"):t(o)("Stop Job")),1)]),_:1},8,["disabled","class"])):J("",!0),c(t(N),{type:"default",size:"medium",onClick:I},{icon:r(()=>[c(t(C),null,{default:r(()=>[c(t(k),{icon:"tabler:arrow-left"})]),_:1})]),default:r(()=>[f(" "+l(t(o)("Back")),1)]),_:1})]),_:1})]}),_:1})]),y.value?(u(),i("div",O,[a[7]||(a[7]=e("i",{class:"fa fa-spinner fa-spin"},null,-1)),f(" "+l(t(o)("Loading...")),1)])):s.value?(u(),i("div",P,[c(t(g),{title:t(o)("Basic Information")},{default:r(()=>[e("div",Q,[e("div",W,[e("div",X,[e("label",null,l(t(o)("Method")),1),_(e("input",{type:"text","onUpdate:modelValue":a[0]||(a[0]=d=>s.value.method=d),readonly:""},null,512),[[v,s.value.method]])]),e("div",Z,[e("label",null,l(t(o)("Frequency")),1),_(e("input",{type:"text","onUpdate:modelValue":a[1]||(a[1]=d=>s.value.frequency=d),readonly:""},null,512),[[v,s.value.frequency]])]),e("div",ee,[e("label",null,l(t(o)("Status")),1),e("div",te,[c(t(R),{checked:s.value.stopped,"onUpdate:checked":[a[2]||(a[2]=d=>s.value.stopped=d),F]},null,8,["checked"]),e("span",{class:D(["status-badge",s.value.stopped?"stopped":"running"])},l(s.value.stopped?t(o)("Stopped"):t(o)("Running")),3)])]),e("div",se,[e("label",null,l(t(o)("Create Log")),1),e("div",oe,[s.value.create_log?(u(),i("span",ae,l(t(o)("Enabled")),1)):(u(),i("span",le,l(t(o)("Disabled")),1))])])]),e("div",ne,[e("div",de,[e("label",null,l(t(o)("Server Script")),1),_(e("input",{type:"text","onUpdate:modelValue":a[3]||(a[3]=d=>s.value.server_script=d),readonly:""},null,512),[[v,s.value.server_script]])]),e("div",ue,[e("label",null,l(t(o)("Scheduler Event")),1),_(e("input",{type:"text","onUpdate:modelValue":a[4]||(a[4]=d=>s.value.scheduler_event=d),readonly:""},null,512),[[v,s.value.scheduler_event]])]),e("div",ie,[e("label",null,l(t(o)("Created At")),1),_(e("input",{type:"text","onUpdate:modelValue":a[5]||(a[5]=d=>s.value.creation=d),readonly:""},null,512),[[v,s.value.creation]])]),e("div",re,[e("label",null,l(t(o)("Updated At")),1),_(e("input",{type:"text","onUpdate:modelValue":a[6]||(a[6]=d=>s.value.modified=d),readonly:""},null,512),[[v,s.value.modified]])])])])]),_:1},8,["title"]),s.value.frequency==="Cron"&&s.value.cron_format?(u(),h(t(g),{key:0,title:t(o)("Cron Format")},{default:r(()=>[e("div",ce,[e("div",pe,[e("code",_e,l(s.value.cron_format),1)]),e("div",ve,[e("h4",null,l(t(o)("Cron Format Description")),1),e("pre",{class:"cron-help"},l(Ce))])])]),_:1},8,["title"])):J("",!0),c(t(g),{title:t(o)("Execution History")},{default:r(()=>[e("div",ye,[e("div",me,[e("label",null,l(t(o)("Last Execution")),1),e("div",be,[s.value.last_execution?(u(),i("span",fe,l(S(s.value.last_execution)),1)):(u(),i("span",he,l(t(o)("Never executed")),1))])]),e("div",xe,[e("label",null,l(t(o)("Next Execution")),1),e("div",ge,[b.value?(u(),i("span",ke,l(S(b.value)),1)):s.value.stopped?(u(),i("span",Se,l(t(o)("Job is stopped")),1)):(u(),i("span",Je,l(t(o)("Unable to calculate")),1))])])])]),_:1},8,["title"])])):(u(),i("div",je,[a[8]||(a[8]=e("i",{class:"fa fa-exclamation-triangle"},null,-1)),f(" "+l(t(o)("Job not found")),1)]))]))}});const Ee=Y(De,[["__scopeId","data-v-9cef9d64"]]);export{Ee as default}; diff --git a/apps/jingrow/frontend/dist/assets/ScheduledJobDetail-60fde854.css b/apps/jingrow/frontend/dist/assets/ScheduledJobDetail-60fde854.css new file mode 100644 index 0000000..75c27b2 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/ScheduledJobDetail-60fde854.css @@ -0,0 +1 @@ +.job-detail-page[data-v-9cef9d64]{width:100%;padding:16px}.page-header[data-v-9cef9d64]{margin-bottom:24px}.page-title[data-v-9cef9d64]{font-size:28px;font-weight:700;color:#1f2937;margin:0 0 8px}.loading[data-v-9cef9d64]{display:flex;align-items:center;justify-content:center;padding:60px 20px;color:#6b7280;font-size:16px}.loading i[data-v-9cef9d64]{margin-right:8px}.error[data-v-9cef9d64]{display:flex;align-items:center;justify-content:center;padding:60px 20px;color:#dc2626;font-size:16px}.error i[data-v-9cef9d64]{margin-right:8px}.job-content[data-v-9cef9d64]{display:flex;flex-direction:column;gap:24px}.properties-grid[data-v-9cef9d64]{display:grid;grid-template-columns:1fr 1fr;gap:24px}.property-group[data-v-9cef9d64]{display:flex;flex-direction:column;gap:16px}.property-item[data-v-9cef9d64]{display:flex;flex-direction:column;gap:8px}.property-item label[data-v-9cef9d64]{font-weight:500;color:#374151;font-size:14px}.property-item input[data-v-9cef9d64]{padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;background-color:#f9fafb;color:#6b7280}.status-display[data-v-9cef9d64]{padding:8px 0;display:flex;align-items:center;gap:8px}.status-display[data-v-9cef9d64] .n-checkbox--checked .n-checkbox-box{background-color:#ef4444!important;border-color:#ef4444!important}.status-display[data-v-9cef9d64] .n-checkbox--checked .n-checkbox-box:hover{background-color:#dc2626!important;border-color:#dc2626!important}.status-display[data-v-9cef9d64] .n-checkbox--checked .n-checkbox-box__border{border-color:#ef4444!important}.status-badge[data-v-9cef9d64]{padding:4px 10px;border-radius:6px;font-size:12px;font-weight:500;display:inline-block;white-space:nowrap}.status-badge.running[data-v-9cef9d64]{background:#dcfce7;color:#166534;border:1px solid rgba(34,197,94,.2)}.status-badge.stopped[data-v-9cef9d64]{background:#fee2e2;color:#dc2626;border:1px solid rgba(239,68,68,.2)}.status-badge.enabled[data-v-9cef9d64]{background:#d1fae5;color:#065f46}.status-badge.disabled[data-v-9cef9d64]{background:#fee2e2;color:#dc2626}.cron-section[data-v-9cef9d64]{display:flex;flex-direction:column;gap:16px}.cron-display[data-v-9cef9d64]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:16px}.cron-code[data-v-9cef9d64]{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:16px;font-weight:600;color:#2563eb;background:white;padding:8px 12px;border-radius:4px;border:1px solid #e5e7eb;display:inline-block}.cron-description h4[data-v-9cef9d64]{margin:0 0 12px;font-size:14px;font-weight:600;color:#374151}.cron-help[data-v-9cef9d64]{font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px;line-height:1.5;color:#6b7280;background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:12px;margin:0;white-space:pre-wrap}.execution-section[data-v-9cef9d64]{display:flex;flex-direction:column;gap:16px}.execution-item[data-v-9cef9d64]{display:flex;flex-direction:column;gap:8px}.execution-item label[data-v-9cef9d64]{font-weight:500;color:#374151;font-size:14px}.execution-value[data-v-9cef9d64]{padding:8px 0}.datetime-text[data-v-9cef9d64]{color:#374151;font-size:14px}.next-execution[data-v-9cef9d64]{color:#dc2626;font-weight:600;font-size:16px}.text-muted[data-v-9cef9d64]{color:#9ca3af;font-size:14px}.toolbar-btn[data-v-9cef9d64]{background:#f3f4f6!important;color:#374151!important;border:1px solid rgba(0,0,0,.08)!important;transition:all .2s cubic-bezier(.4,0,.2,1)}.toolbar-btn[data-v-9cef9d64] .n-button__border,.toolbar-btn[data-v-9cef9d64] .n-button__state-border{border:none!important;border-color:transparent!important}.toolbar-btn[data-v-9cef9d64]:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 2px 8px #00000014}.toolbar-btn[data-v-9cef9d64]:hover:not(:disabled) .n-button__border,.toolbar-btn[data-v-9cef9d64]:hover:not(:disabled) .n-button__state-border{border:none!important;border-color:transparent!important}.execute-btn[data-v-9cef9d64]{background:#dcfce7!important;color:#166534!important;border-color:#22c55e33!important}.execute-btn[data-v-9cef9d64]:hover:not(:disabled){background:#bbf7d0!important;color:#15803d!important;border-color:#22c55e4d!important;box-shadow:0 2px 8px #22c55e26}.toolbar-btn.stop-btn[data-v-9cef9d64]{background:#fee2e2!important;color:#dc2626!important;border-color:#ef444433!important}.toolbar-btn.stop-btn[data-v-9cef9d64] .n-button__border,.toolbar-btn.stop-btn[data-v-9cef9d64] .n-button__state-border{border:none!important;border-color:transparent!important}.toolbar-btn.stop-btn[data-v-9cef9d64]:hover:not(:disabled){background:#fecaca!important;color:#b91c1c!important;border-color:#ef44444d!important;box-shadow:0 2px 8px #ef444426}.toolbar-btn.stop-btn[data-v-9cef9d64]:hover:not(:disabled) .n-button__border,.toolbar-btn.stop-btn[data-v-9cef9d64]:hover:not(:disabled) .n-button__state-border{border:none!important;border-color:transparent!important}.toolbar-btn[data-v-9cef9d64]:disabled{opacity:.5;cursor:not-allowed}.toolbar-btn[data-v-9cef9d64]:disabled .n-button__border,.toolbar-btn[data-v-9cef9d64]:disabled .n-button__state-border{border:none!important;border-color:transparent!important}@media (max-width: 768px){.properties-grid[data-v-9cef9d64]{grid-template-columns:1fr}.page-header[data-v-9cef9d64]{flex-direction:column;align-items:flex-start;gap:16px}} diff --git a/apps/jingrow/frontend/dist/assets/ScheduledJobList-c2ab8f86.css b/apps/jingrow/frontend/dist/assets/ScheduledJobList-c2ab8f86.css new file mode 100644 index 0000000..05b0784 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/ScheduledJobList-c2ab8f86.css @@ -0,0 +1 @@ +.page[data-v-2dfcd234]{padding:16px;width:100%;min-height:100vh}.page-header[data-v-2dfcd234]{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px}.header-left h2[data-v-2dfcd234]{font-size:28px;font-weight:700;color:#1f2937;margin:0 0 8px}.page-description[data-v-2dfcd234]{font-size:16px;color:#6b7280;margin:0}.header-right[data-v-2dfcd234]{display:flex;align-items:center;gap:12px}.filters[data-v-2dfcd234]{display:flex;gap:8px;align-items:center}.refresh-btn[data-v-2dfcd234]{width:36px;height:36px;border:none;border-radius:8px;background:#f8fafc;color:#64748b;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.refresh-btn[data-v-2dfcd234]:hover{background:#e2e8f0;color:#475569;transform:translateY(-1px);box-shadow:0 4px 12px #0000001a}.refresh-btn[data-v-2dfcd234]:active{transform:translateY(0);box-shadow:0 2px 6px #0000001a}.refresh-btn[data-v-2dfcd234]:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.refresh-btn[data-v-2dfcd234]:disabled:hover{background:#f8fafc;color:#64748b;transform:none;box-shadow:none}.loading[data-v-2dfcd234]{display:flex;align-items:center;justify-content:center;padding:60px 20px;color:#6b7280;font-size:16px}.loading i[data-v-2dfcd234]{margin-right:8px}.job-list[data-v-2dfcd234]{background:white;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden}.list-header[data-v-2dfcd234]{display:grid;gap:16px;padding:16px 20px;background:#f9fafb;border-bottom:1px solid #e5e7eb;font-size:14px;font-weight:600;color:#374151;align-items:center}.col-header[data-v-2dfcd234]{color:#374151}.list-body[data-v-2dfcd234]{max-height:600px;overflow-y:auto}.list-item[data-v-2dfcd234]{display:grid;gap:16px;padding:16px 20px;border-bottom:1px solid #f3f4f6;cursor:pointer;transition:background-color .2s cubic-bezier(.4,0,.2,1);align-items:center}.list-item[data-v-2dfcd234]:hover{background:#f9fafb}.list-item[data-v-2dfcd234]:last-child{border-bottom:none}.col-field[data-v-2dfcd234]{display:flex;align-items:center;gap:8px}.col-name-wrapper[data-v-2dfcd234]{display:flex;flex-direction:column;justify-content:center;width:100%}.col-name-wrapper .name[data-v-2dfcd234]{font-weight:600;color:#111827;font-size:14px;margin-bottom:2px}.col-name-wrapper .description[data-v-2dfcd234]{color:#6b7280;font-size:12px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.col-name[data-v-2dfcd234]{display:flex;flex-direction:column;justify-content:center}.col-name .name[data-v-2dfcd234]{font-weight:600;color:#111827;font-size:14px;margin-bottom:2px}.col-name .description[data-v-2dfcd234]{color:#6b7280;font-size:12px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.col-frequency[data-v-2dfcd234]{display:flex;align-items:center}.col-cron[data-v-2dfcd234]{display:flex;align-items:center;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:12px}.cron-text[data-v-2dfcd234]{color:#374151;background:#f3f4f6;padding:2px 6px;border-radius:4px}.col-status[data-v-2dfcd234]{display:flex;align-items:center;gap:8px}.col-status[data-v-2dfcd234] .n-checkbox--checked .n-checkbox-box{background-color:#ef4444!important;border-color:#ef4444!important}.col-status[data-v-2dfcd234] .n-checkbox--checked .n-checkbox-box:hover{background-color:#dc2626!important;border-color:#dc2626!important}.col-status[data-v-2dfcd234] .n-checkbox--checked .n-checkbox-box__border{border-color:#ef4444!important}.col-last-execution[data-v-2dfcd234]{display:flex;align-items:center;color:#6b7280;font-size:13px}.datetime-text[data-v-2dfcd234]{color:#374151}.text-muted[data-v-2dfcd234]{color:#9ca3af}.col-actions[data-v-2dfcd234]{display:flex;align-items:center;justify-content:center;gap:4px}.action-btn[data-v-2dfcd234]{width:28px;height:28px;border:none;background:#f3f4f6;color:#6b7280;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;transition:all .2s cubic-bezier(.4,0,.2,1)}.action-btn[data-v-2dfcd234]:hover{background:#3b82f6;color:#fff}.action-btn.start-btn[data-v-2dfcd234]{background:#dcfce7;color:#166534}.action-btn.start-btn[data-v-2dfcd234]:hover{background:#bbf7d0;color:#15803d;box-shadow:0 2px 8px #22c55e26}.action-btn.stop-btn[data-v-2dfcd234]{background:#fee2e2;color:#dc2626}.action-btn.stop-btn[data-v-2dfcd234]:hover{background:#fecaca;color:#b91c1c;box-shadow:0 2px 8px #ef444426}.badge[data-v-2dfcd234]{background:#f3f4f6;color:#374151;padding:4px 8px;border-radius:6px;font-size:12px;font-weight:500}.status-badge[data-v-2dfcd234]{padding:4px 10px;border-radius:6px;font-size:12px;font-weight:500;display:inline-block;white-space:nowrap}.status-badge.running[data-v-2dfcd234]{background:#dcfce7;color:#166534;border:1px solid rgba(34,197,94,.2)}.status-badge.stopped[data-v-2dfcd234]{background:#fee2e2;color:#dc2626;border:1px solid rgba(239,68,68,.2)}.list-pagination[data-v-2dfcd234]{padding:16px 20px;border-top:1px solid #e5e7eb;background:#f9fafb;display:flex;justify-content:center} diff --git a/apps/jingrow/frontend/dist/assets/ScheduledJobList-e4f8da9e.js b/apps/jingrow/frontend/dist/assets/ScheduledJobList-e4f8da9e.js new file mode 100644 index 0000000..b7ace20 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/ScheduledJobList-e4f8da9e.js @@ -0,0 +1,2 @@ +import{d as X,u as j,r as u,c as V,M as N,o as ee,e as o,f as n,g as d,j as i,h as b,Y as m,p as te,a1 as O,F as w,C as $,k as ae,t as l,a0 as se,a2 as le,l as r,m as ne,Z as z,L as I,a3 as oe,y as A,_ as ie}from"./index-d271a6a3.js";import{g as re,t as R}from"./scheduledJobs-fd54b72b.js";import{_ as ue}from"./_plugin-vue_export-helper-c27b6911.js";import"./common-c89c6552.js";const ce={class:"page"},de={class:"page-header"},pe={class:"header-left"},me={class:"header-right"},fe={class:"filters"},ve=["disabled"],he={class:"page-content"},ye={key:0,class:"loading"},_e={key:1},ge={class:"job-list"},xe={class:"col-actions"},ke={class:"list-body"},Se=["onClick"],Ce={key:0,class:"col-name-wrapper"},be={class:"name"},we={key:0,class:"description"},Fe={key:1,class:"badge"},De={key:2,class:"cron-text"},Je={class:"col-actions"},qe=["onClick","title"],Le=["onClick","title"],Te={class:"list-pagination"},Me=X({__name:"ScheduledJobList",setup(Ne){const E=ae(),f=j(),S=u(!1),F=u([]),D=u([]),J=u(0),v=u(""),h=u("all"),y=u("all"),g=u(1),q=u(parseInt(localStorage.getItem("itemsPerPage")||"10")),L=u([]),_=u([]),U=u([]),G=V(()=>[{label:l("All"),value:"all"},{label:l("Running"),value:"running"},{label:l("Stopped"),value:"stopped"}]),Q=V(()=>Math.max(1,Math.ceil(J.value/q.value)));async function x(){S.value=!0;try{const a=[];if(v.value&&a.push(["method","like",`%${v.value}%`]),h.value!=="all"&&a.push(["frequency","=",h.value]),y.value!=="all"){const e=y.value==="stopped";a.push(["stopped","=",e?1:0])}const t=await re(g.value,q.value,a);D.value=t.items||[],Y(),J.value=t.total||0}catch(a){console.error("获取任务列表失败:",a),f.error(l("Failed to load jobs")),F.value=[],D.value=[],J.value=0}finally{S.value=!1}}async function Y(){let a=[...D.value];if(a=a.map(t=>({...t,stopped:!!t.stopped})),v.value){const t=v.value.toLowerCase();a=a.filter(e=>{var s,c;return((s=e.method)==null?void 0:s.toLowerCase().includes(t))||((c=e.name)==null?void 0:c.toLowerCase().includes(t))})}if(h.value!=="all"&&(a=a.filter(t=>t.frequency===h.value)),y.value!=="all"){const t=y.value==="stopped";a=a.filter(e=>!!e.stopped===t)}F.value=a}function Z(){x()}function B(a){E.push({name:"ScheduledJobDetail",params:{id:a}})}async function H(a){try{const t=await R(a.name);t.success?f.success(t.message||l("Job status updated successfully")):(f.error(t.message||l("Failed to update job status")),a.stopped=!a.stopped)}catch(t){console.error("Toggle job status error:",t),f.error(l("Failed to update job status")),a.stopped=!a.stopped}}async function K(a){try{const t=await R(a);t.success?(f.success(t.message||l("Job status updated successfully")),await x()):f.error(t.message||l("Failed to update job status"))}catch(t){console.error("Toggle job status error:",t),f.error(l("Failed to update job status"))}}function P(){if(_.value.length===0)return"1fr 120px 150px 100px 180px 120px";const a=_.value.map(t=>t.fieldname==="method"||t.fieldname==="name"?"1fr":t.fieldname==="frequency"?"120px":t.fieldname==="cron_format"?"150px":t.fieldname==="stopped"?"120px":t.fieldtype==="Datetime"||t.fieldtype==="Date"?"180px":t.fieldtype==="Check"?"100px":"120px");return a.push("120px"),a.join(" ")}async function W(){var a;try{const e=((a=(await se.get(`/api/data/PageType/${encodeURIComponent("Local Scheduled Job")}`,{headers:le(),withCredentials:!0})).data)==null?void 0:a.data)||{};L.value=e.fields||[],_.value=L.value.filter(p=>p.in_list_view===1||["method","frequency","cron_format","stopped","last_execution"].includes(p.fieldname));const s=e.field_order||[];_.value.sort((p,k)=>{const T=s.indexOf(p.fieldname),M=s.indexOf(k.fieldname);return T===-1&&M===-1?0:T===-1?1:M===-1?-1:T-M});const c=L.value.find(p=>p.fieldname==="frequency");if(c&&c.options){const p=typeof c.options=="string"?c.options.split(` +`).filter(k=>k.trim()):[];U.value=[{label:l("All"),value:"all"},...p.map(k=>({label:l(k.trim()),value:k.trim()}))]}}catch(t){console.error("Failed to load meta fields:",t),_.value=[{fieldname:"method",label:"Method",fieldtype:"Data"},{fieldname:"frequency",label:"Frequency",fieldtype:"Select"},{fieldname:"cron_format",label:"Cron Format",fieldtype:"Data"},{fieldname:"stopped",label:"Status",fieldtype:"Check"},{fieldname:"last_execution",label:"Last Execution",fieldtype:"Datetime"}]}}function C(a,t){const e=t[a.fieldname];switch(a.fieldtype||"Data"){case"Check":return{type:"checkbox",value:!!e};case"Datetime":case"Date":if(!e)return{type:"text",value:"—"};try{return{type:"text",value:new Date(e).toLocaleString()}}catch{return{type:"text",value:e}}case"Select":return{type:"text",value:e||"—"};case"Link":return{type:"text",value:e||"—"};case"Data":case"Small Text":case"Text":default:return{type:"text",value:e||"—"}}}return N([v,h,y],()=>{g.value=1,x()},{deep:!0}),N([g],()=>{x()}),N(()=>localStorage.getItem("itemsPerPage"),a=>{a&&(q.value=parseInt(a),g.value=1,x())}),ee(()=>{W(),x()}),(a,t)=>(r(),o("div",ce,[n("div",de,[n("div",pe,[n("h2",null,d(i(l)("Scheduled Jobs")),1)]),n("div",me,[n("div",fe,[b(i(ne),{value:v.value,"onUpdate:value":t[0]||(t[0]=e=>v.value=e),placeholder:i(l)("Search jobs..."),clearable:"",style:{width:"200px"}},null,8,["value","placeholder"]),b(i(z),{value:h.value,"onUpdate:value":t[1]||(t[1]=e=>h.value=e),options:U.value,placeholder:i(l)("Frequency"),style:{width:"120px"}},null,8,["value","options","placeholder"]),b(i(z),{value:y.value,"onUpdate:value":t[2]||(t[2]=e=>y.value=e),options:G.value,placeholder:i(l)("Status"),style:{width:"120px"}},null,8,["value","options","placeholder"])]),n("button",{class:"refresh-btn",onClick:Z,disabled:S.value},[n("i",{class:m(S.value?"fa fa-spinner fa-spin":"fa fa-refresh")},null,2)],8,ve)])]),n("div",he,[S.value?(r(),o("div",ye,[t[5]||(t[5]=n("i",{class:"fa fa-spinner fa-spin"},null,-1)),te(" "+d(i(l)("Loading...")),1)])):(r(),o("div",_e,[n("div",ge,[n("div",{class:"list-header",style:O({gridTemplateColumns:P()})},[(r(!0),o(w,null,$(_.value,e=>(r(),o("div",{key:e.fieldname,class:m(["col-header",`col-${e.fieldname}`])},d(i(l)(e.label||e.fieldname)),3))),128)),n("div",xe,d(i(l)("Actions")),1)],4),n("div",ke,[(r(!0),o(w,null,$(F.value,e=>(r(),o("div",{key:e.name,class:"list-item",style:O({gridTemplateColumns:P()}),onClick:s=>B(e.name)},[(r(!0),o(w,null,$(_.value,s=>(r(),o("div",{key:s.fieldname,class:m(["col-field",`col-${s.fieldname}`])},[s.fieldtype==="Check"?(r(),o(w,{key:0},[b(i(oe),{checked:e[s.fieldname],"onUpdate:checked":[c=>e[s.fieldname]=c,c=>s.fieldname==="stopped"?()=>H(e):void 0],onClick:t[3]||(t[3]=I(()=>{},["stop"]))},null,8,["checked","onUpdate:checked"]),s.fieldname==="stopped"?(r(),o("span",{key:0,class:m(["status-badge",e[s.fieldname]?"stopped":"running"])},d(e[s.fieldname]?i(l)("Stopped"):i(l)("Running")),3)):A("",!0)],64)):(r(),o(w,{key:1},[s.fieldname==="method"||s.fieldname==="name"?(r(),o("div",Ce,[n("div",be,d(C(s,e).value),1),s.fieldname==="method"&&e.name!==e.method?(r(),o("div",we,d(e.name),1)):A("",!0)])):s.fieldtype==="Select"&&s.fieldname==="frequency"?(r(),o("span",Fe,d(i(l)(C(s,e).value)),1)):s.fieldname==="cron_format"&&e.cron_format?(r(),o("span",De,d(C(s,e).value),1)):s.fieldtype==="Datetime"||s.fieldtype==="Date"?(r(),o("span",{key:3,class:m(e[s.fieldname]?"datetime-text":"text-muted")},d(C(s,e).value),3)):(r(),o("span",{key:4,class:m(e[s.fieldname]?"":"text-muted")},d(C(s,e).value),3))],64))],2))),128)),n("div",Je,[n("button",{class:m(["action-btn",e.stopped?"start-btn":"stop-btn"]),onClick:I(s=>K(e.name),["stop"]),title:e.stopped?i(l)("Start"):i(l)("Stop")},[n("i",{class:m(e.stopped?"fa fa-play":"fa fa-pause")},null,2)],10,qe),n("button",{class:"action-btn",onClick:I(s=>B(e.name),["stop"]),title:i(l)("View Details")},[...t[6]||(t[6]=[n("i",{class:"fa fa-eye"},null,-1)])],8,Le)])],12,Se))),128))]),n("div",Te,[b(i(ie),{page:g.value,"onUpdate:page":t[4]||(t[4]=e=>g.value=e),"page-count":Q.value,size:"small"},null,8,["page","page-count"])])])]))])]))}});const Pe=ue(Me,[["__scopeId","data-v-2dfcd234"]]);export{Pe as default}; diff --git a/apps/jingrow/frontend/dist/assets/SchemaBuilder-33147e49.css b/apps/jingrow/frontend/dist/assets/SchemaBuilder-33147e49.css new file mode 100644 index 0000000..5439dc9 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/SchemaBuilder-33147e49.css @@ -0,0 +1 @@ +.n-message-container,.n-dialog-container{z-index:1100!important}.schema-builder-container[data-v-aa1da059]{display:flex;height:80vh;overflow:hidden;width:100%}.schema-builder-container .schema-main[data-v-aa1da059]{background-color:#fff;border-radius:8px;border:1px solid #e5e7eb;margin:0 5px;display:flex;flex-direction:column;height:100%;overflow:hidden;flex:1}.schema-builder-container .schema-sidebar[data-v-aa1da059]{border-left:1px solid #e5e7eb;border-radius:8px;background-color:#f8fafc;flex-shrink:0}.schema-builder-container .resize-handle[data-v-aa1da059]{width:4px;background-color:transparent;cursor:col-resize;position:relative;transition:all .2s ease;flex-shrink:0;z-index:10}.schema-builder-container .resize-handle[data-v-aa1da059]:hover{background-color:#3b82f61a}.schema-builder-container .resize-handle[data-v-aa1da059]:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:1px;height:24px;background:linear-gradient(180deg,rgba(156,163,175,.3) 0%,rgba(156,163,175,.6) 50%,rgba(156,163,175,.3) 100%);border-radius:.5px;transition:all .2s ease}.schema-builder-container .resize-handle[data-v-aa1da059]:hover:after{background:linear-gradient(180deg,rgba(59,130,246,.4) 0%,rgba(59,130,246,.8) 50%,rgba(59,130,246,.4) 100%);width:2px;height:32px}.schema-builder-container .resize-handle[data-v-aa1da059]:active{background-color:#3b82f626} diff --git a/apps/jingrow/frontend/dist/assets/SchemaBuilder-9f425397.js b/apps/jingrow/frontend/dist/assets/SchemaBuilder-9f425397.js new file mode 100644 index 0000000..25b045a --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/SchemaBuilder-9f425397.js @@ -0,0 +1 @@ +import{u as x}from"./store-f2a9a627.js";import w from"./SchemaCanvas-3d8849d4.js";import z from"./SchemaSidebar-31bd15ac.js";import{_ as B}from"./_plugin-vue_export-helper-c27b6911.js";import{r as t,o as C,M,D,w as _,j as c,l as R,h as l,f as s,Y as W,a1 as k,bt as E,bu as L}from"./index-d271a6a3.js";import"./SchemaTabs-aeec890d.js";import"./EditableInput-1063ff78.js";import"./SchemaSections-2b3120d6.js";import"./_commonjsHelpers-de833af9.js";import"./index-362e01cb.js";const N=300,X=700,j={__name:"SchemaBuilder",props:{initialSchema:{type:Object,default:()=>({})},onSave:{type:Function,default:null}},setup(S,{expose:y}){const a=S;y({getSchemaData:()=>o.schema});const o=x(),n=t(300),i=t(!1),b=t(null),u=t(null),d=t(null),m=t(0),v=t(300);function g(e){e.preventDefault(),e.stopPropagation(),m.value=e.clientX,v.value=n.value,i.value=!0,document.body.style.cursor="col-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",p),document.addEventListener("mouseup",h)}function p(e){if(!i.value)return;const f=m.value-e.clientX,r=v.value+f;r>=N&&r<=X&&(n.value=r)}function h(){i.value=!1,document.body.style.cursor="",document.body.style.userSelect="",document.removeEventListener("mousemove",p),document.removeEventListener("mouseup",h)}return C(()=>{u.value=document.body,d.value=document.body,a.initialSchema&&Object.keys(a.initialSchema).length>0&&o.loadSchema(a.initialSchema)}),M(()=>o.schema,e=>{a.onSave&&e&&a.onSave(e)},{deep:!0}),(e,f)=>(R(),D(c(L),{to:d.value},{default:_(()=>[l(c(E),{to:u.value},{default:_(()=>[s("div",{class:"schema-builder-container",ref_key:"containerRef",ref:b},[s("div",{class:W(["schema-main",[c(o).preview?"preview":""]])},[l(w)],2),s("div",{class:"resize-handle",onMousedown:g},null,32),s("div",{class:"schema-sidebar",style:k({width:n.value+"px"})},[l(z)],4)],512)]),_:1},8,["to"])]),_:1},8,["to"]))}},K=B(j,[["__scopeId","data-v-aa1da059"]]);export{K as default}; diff --git a/apps/jingrow/frontend/dist/assets/SchemaCanvas-3d8849d4.js b/apps/jingrow/frontend/dist/assets/SchemaCanvas-3d8849d4.js new file mode 100644 index 0000000..167d383 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/SchemaCanvas-3d8849d4.js @@ -0,0 +1 @@ +import V from"./SchemaTabs-aeec890d.js";import{u as W}from"./store-f2a9a627.js";import"./EditableInput-1063ff78.js";import{_ as J}from"./_plugin-vue_export-helper-c27b6911.js";import"./SchemaSections-2b3120d6.js";import{b as O,c as I,a6 as T,aW as y,j as m,e as A,f as _,g as x,D as U,y as F,l as D,t as B}from"./index-d271a6a3.js";import{n as $,i as q,t as L,w as z,a as G,b as H,c as Q}from"./index-362e01cb.js";import"./_commonjsHelpers-de833af9.js";const N=q?window:void 0;function X(i){var e;const r=y(i);return(e=r==null?void 0:r.$el)!=null?e:r}function k(...i){const e=[],r=()=>{e.forEach(o=>o()),e.length=0},h=(o,s,a,u)=>(o.addEventListener(s,a,u),()=>o.removeEventListener(s,a,u)),f=I(()=>{const o=L(y(i[0])).filter(s=>s!=null);return o.every(s=>typeof s!="string")?o:void 0}),d=z(()=>{var o,s;return[(s=(o=f.value)==null?void 0:o.map(a=>X(a)))!=null?s:[N].filter(a=>a!=null),L(y(f.value?i[1]:i[0])),L(m(f.value?i[2]:i[1])),y(f.value?i[3]:i[2])]},([o,s,a,u])=>{if(r(),!(o!=null&&o.length)||!(s!=null&&s.length)||!(a!=null&&a.length))return;const g=H(u)?{...u}:u;e.push(...o.flatMap(p=>s.flatMap(E=>a.map(b=>h(p,E,b,g)))))},{flush:"post"}),c=()=>{d(),r()};return G(r),c}const Y={ctrl:"control",command:"meta",cmd:"meta",option:"alt",up:"arrowup",down:"arrowdown",left:"arrowleft",right:"arrowright"};function Z(i={}){const{reactive:e=!1,target:r=N,aliasMap:h=Y,passive:f=!0,onEventFired:d=$}=i,c=O(new Set),o={toJSON(){return{}},current:c},s=e?O(o):o,a=new Set,u=new Set,g=new Set;function p(n,t){n in s&&(e?s[n]=t:s[n].value=t)}function E(){c.clear();for(const n of g)p(n,!1)}function b(n,t){var w,S;const v=(w=n.key)==null?void 0:w.toLowerCase(),M=[(S=n.code)==null?void 0:S.toLowerCase(),v].filter(Boolean);v&&(t?c.add(v):c.delete(v));for(const l of M)g.add(l),p(l,t);if(v==="shift"&&!t){const l=Array.from(u),j=l.indexOf("shift");l.forEach((R,K)=>{K>=j&&(c.delete(R),p(R,!1))}),u.clear()}else typeof n.getModifierState=="function"&&n.getModifierState("Shift")&&t&&[...c,...M].forEach(l=>u.add(l));v==="meta"&&!t?(a.forEach(l=>{c.delete(l),p(l,!1)}),a.clear()):typeof n.getModifierState=="function"&&n.getModifierState("Meta")&&t&&[...c,...M].forEach(l=>a.add(l))}k(r,"keydown",n=>(b(n,!0),d(n)),{passive:f}),k(r,"keyup",n=>(b(n,!1),d(n)),{passive:f}),k("blur",E,{passive:f}),k("focus",E,{passive:f});const P=new Proxy(s,{get(n,t,w){if(typeof t!="string")return Reflect.get(n,t,w);if(t=t.toLowerCase(),t in h&&(t=h[t]),!(t in s))if(/[+_-]/.test(t)){const v=t.split(/[+_-]/g).map(C=>C.trim());s[t]=I(()=>v.map(C=>y(P[C])).every(Boolean))}else s[t]=T(!1);const S=Reflect.get(n,t,w);return e?y(S):S}});return P}const ee={class:"schema-canvas"},te={class:"schema-header"},se={class:"schema-actions"},ne={class:"schema-content"},oe={key:0,class:"schema-preview"},ae={__name:"SchemaCanvas",setup(i){const e=W(),{Backspace:r}=Z();Q(r,d=>{d&&e.selectedField&&e.notUsingInput&&h(e.selectedField)});function h(d){e.removeProperty(d)}function f(){e.updateSchema();const d=new CustomEvent("schema-save",{detail:{schemaData:e.schema}});document.dispatchEvent(d)}return(d,c)=>(D(),A("div",ee,[_("div",te,[_("div",se,[_("button",{class:"preview-btn",onClick:c[0]||(c[0]=(...o)=>m(e).togglePreview&&m(e).togglePreview(...o))},x(m(e).preview?m(B)("Edit"):m(B)("Preview")),1),_("button",{class:"save-btn",onClick:f},x(m(B)("Save")),1)])]),m(e).preview?F("",!0):(D(),U(V,{key:0})),_("div",ne,[m(e).preview?(D(),A("div",oe,[_("pre",null,x(JSON.stringify(m(e).schema,null,2)),1)])):F("",!0)])]))}},ve=J(ae,[["__scopeId","data-v-a6a159d7"]]);export{ve as default}; diff --git a/apps/jingrow/frontend/dist/assets/SchemaCanvas-98183741.css b/apps/jingrow/frontend/dist/assets/SchemaCanvas-98183741.css new file mode 100644 index 0000000..019b618 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/SchemaCanvas-98183741.css @@ -0,0 +1 @@ +@charset "UTF-8";.schema-canvas[data-v-a6a159d7]{padding:0;display:flex;flex-direction:column;height:100%;min-height:0}.schema-header[data-v-a6a159d7]{display:flex;justify-content:flex-end;align-items:center;margin-bottom:0;padding:.75rem 1rem;border-bottom:1px solid var(--border-color);background-color:var(--fg-color)}.schema-title[data-v-a6a159d7]{flex:1}.schema-title[data-v-a6a159d7] span{font-weight:600;color:var(--heading-color);font-size:1.2rem}.schema-actions[data-v-a6a159d7]{display:flex;gap:.5rem}.preview-btn[data-v-a6a159d7]{padding:6px 12px;border:1px solid #d1d5db;border-radius:4px;background:#fff;color:#1f2937;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s ease}.preview-btn[data-v-a6a159d7]:hover{background-color:#f9fafb;border-color:#9ca3af}.preview-btn[data-v-a6a159d7]:active{background-color:#f3f4f6}.save-btn[data-v-a6a159d7]{padding:6px 12px;border:1px solid #1fc76f;border-radius:4px;background:#e6f8f0;color:#0d684b;cursor:pointer;font-size:13px;font-weight:500;transition:all .2s cubic-bezier(.4,0,.2,1)}.save-btn[data-v-a6a159d7]:hover{background:#dcfce7;border-color:#1fc76f;color:#166534;box-shadow:0 2px 8px #1fc76f26}.save-btn[data-v-a6a159d7]:focus{background:#dcfce7;border-color:#1fc76f;color:#166534;box-shadow:0 0 0 2px #1fc76f33}.save-btn[data-v-a6a159d7]:active{background:#1fc76f;border-color:#1fc76f;color:#fff;box-shadow:0 1px 4px #1fc76f33}.schema-content[data-v-a6a159d7]{padding:1rem;flex:1 1 auto;min-height:0;overflow:auto}.schema-preview pre[data-v-a6a159d7]{background-color:var(--bg-light-gray);padding:1rem;border-radius:var(--border-radius);overflow-x:auto;font-size:var(--text-sm)} diff --git a/apps/jingrow/frontend/dist/assets/SchemaEditorModal-2e54d83a.css b/apps/jingrow/frontend/dist/assets/SchemaEditorModal-2e54d83a.css new file mode 100644 index 0000000..ecad358 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/SchemaEditorModal-2e54d83a.css @@ -0,0 +1 @@ +.modal-overlay[data-v-b69356c9]{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:10000;display:flex;align-items:center;justify-content:center}.modal-content[data-v-b69356c9]{background:white;border-radius:8px;width:90%;max-width:1200px;max-height:90vh;display:flex;flex-direction:column}.modal-header[data-v-b69356c9]{padding:12px 20px;border-bottom:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between}.modal-header h3[data-v-b69356c9]{margin:0;font-size:18px;font-weight:600}.close-btn[data-v-b69356c9]{background:none;border:none;font-size:18px;cursor:pointer;padding:4px;border-radius:4px}.close-btn[data-v-b69356c9]:hover{background:#f3f4f6}.modal-body[data-v-b69356c9]{flex:1;padding:12px;overflow:auto}#schema-builder-container[data-v-b69356c9]{min-height:400px} diff --git a/apps/jingrow/frontend/dist/assets/SchemaEditorModal-fbf1b367.js b/apps/jingrow/frontend/dist/assets/SchemaEditorModal-fbf1b367.js new file mode 100644 index 0000000..18cb2b3 --- /dev/null +++ b/apps/jingrow/frontend/dist/assets/SchemaEditorModal-fbf1b367.js @@ -0,0 +1,13 @@ +import{d as Br,u as $r,r as zr,c as Ur,M as Vr,K as Xr,e as Gr,f as Le,g as Qr,L as Yr,y as Jr,t as $t,l as Kr,J as Zr,a8 as ei}from"./index-d271a6a3.js";import{c as ti,g as ni}from"./_commonjsHelpers-de833af9.js";import{_ as ri}from"./_plugin-vue_export-helper-c27b6911.js";var Hn={exports:{}};/*! + * jQuery JavaScript Library v3.7.1 + * https://jquery.com/ + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2023-08-28T13:37Z + */(function(vt){(function(j,ie){vt.exports=j.document?ie(j,!0):function(z){if(!z.document)throw new Error("jQuery requires a window with a document");return ie(z)}})(typeof window<"u"?window:ti,function(j,ie){var z=[],ze=Object.getPrototypeOf,V=z.slice,ot=z.flat?function(e){return z.flat.call(e)}:function(e){return z.concat.apply([],e)},qe=z.push,oe=z.indexOf,we={},Ue=we.toString,Se=we.hasOwnProperty,Ve=Se.toString,X=Ve.call(Object),E={},L=function(t){return typeof t=="function"&&typeof t.nodeType!="number"&&typeof t.item!="function"},Ee=function(t){return t!=null&&t===t.window},q=j.document,On={type:!0,src:!0,nonce:!0,noModule:!0};function zt(e,t,n){n=n||q;var r,o,a=n.createElement("script");if(a.text=e,t)for(r in On)o=t[r]||t.getAttribute&&t.getAttribute(r),o&&a.setAttribute(r,o);n.head.appendChild(a).parentNode.removeChild(a)}function He(e){return e==null?e+"":typeof e=="object"||typeof e=="function"?we[Ue.call(e)]||"object":typeof e}var Ut="3.7.1",Pn=/HTML$/i,i=function(e,t){return new i.fn.init(e,t)};i.fn=i.prototype={jquery:Ut,constructor:i,length:0,toArray:function(){return V.call(this)},get:function(e){return e==null?V.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=i.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return i.each(this,e)},map:function(e){return this.pushStack(i.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(V.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(i.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(i.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e}function B(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var _n=z.pop,Mn=z.sort,Rn=z.splice,F="[\\x20\\t\\r\\n\\f]",Xe=new RegExp("^"+F+"+|((?:^|[^\\\\])(?:\\\\.)*)"+F+"+$","g");i.contains=function(e,t){var n=t&&t.parentNode;return e===n||!!(n&&n.nodeType===1&&(e.contains?e.contains(n):e.compareDocumentPosition&&e.compareDocumentPosition(n)&16))};var In=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function Fn(e,t){return t?e==="\0"?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}i.escapeSelector=function(e){return(e+"").replace(In,Fn)};var ge=q,bt=qe;(function(){var e,t,n,r,o,a=bt,u,c,f,d,y,m=i.expando,h=0,b=0,A=pt(),M=pt(),H=pt(),G=pt(),U=function(s,l){return s===l&&(o=!0),0},ce="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",le="(?:\\\\[\\da-fA-F]{1,6}"+F+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",_="\\["+F+"*("+le+")(?:"+F+"*([*^$|!~]?=)"+F+`*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(`+le+"))|)"+F+"*\\]",Ne=":("+le+`)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|`+_+")*)|.*)\\)|)",R=new RegExp(F+"+","g"),$=new RegExp("^"+F+"*,"+F+"*"),nt=new RegExp("^"+F+"*([>+~]|"+F+")"+F+"*"),_t=new RegExp(F+"|>"),de=new RegExp(Ne),rt=new RegExp("^"+le+"$"),pe={ID:new RegExp("^#("+le+")"),CLASS:new RegExp("^\\.("+le+")"),TAG:new RegExp("^("+le+"|[*])"),ATTR:new RegExp("^"+_),PSEUDO:new RegExp("^"+Ne),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+F+"*(even|odd|(([+-]|)(\\d*)n|)"+F+"*(?:([+-]|)"+F+"*(\\d+)|))"+F+"*\\)|)","i"),bool:new RegExp("^(?:"+ce+")$","i"),needsContext:new RegExp("^"+F+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+F+"*((?:-\\d)?\\d*)"+F+"*\\)|)(?=[^-]|$)","i")},xe=/^(?:input|select|textarea|button)$/i,Te=/^h\d$/i,ne=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Mt=/[+~]/,me=new RegExp("\\\\[\\da-fA-F]{1,6}"+F+"?|\\\\([^\\r\\n\\f])","g"),be=function(s,l){var p="0x"+s.slice(1)-65536;return l||(p<0?String.fromCharCode(p+65536):String.fromCharCode(p>>10|55296,p&1023|56320))},Pr=function(){Ce()},_r=gt(function(s){return s.disabled===!0&&B(s,"fieldset")},{dir:"parentNode",next:"legend"});function Mr(){try{return u.activeElement}catch{}}try{a.apply(z=V.call(ge.childNodes),ge.childNodes),z[ge.childNodes.length].nodeType}catch{a={apply:function(l,p){bt.apply(l,V.call(p))},call:function(l){bt.apply(l,V.call(arguments,1))}}}function I(s,l,p,g){var v,x,T,w,C,O,k,N=l&&l.ownerDocument,P=l?l.nodeType:9;if(p=p||[],typeof s!="string"||!s||P!==1&&P!==9&&P!==11)return p;if(!g&&(Ce(l),l=l||u,f)){if(P!==11&&(C=ne.exec(s)))if(v=C[1]){if(P===9)if(T=l.getElementById(v)){if(T.id===v)return a.call(p,T),p}else return p;else if(N&&(T=N.getElementById(v))&&I.contains(l,T)&&T.id===v)return a.call(p,T),p}else{if(C[2])return a.apply(p,l.getElementsByTagName(s)),p;if((v=C[3])&&l.getElementsByClassName)return a.apply(p,l.getElementsByClassName(v)),p}if(!G[s+" "]&&(!d||!d.test(s))){if(k=s,N=l,P===1&&(_t.test(s)||nt.test(s))){for(N=Mt.test(s)&&Rt(l.parentNode)||l,(N!=l||!E.scope)&&((w=l.getAttribute("id"))?w=i.escapeSelector(w):l.setAttribute("id",w=m)),O=it(s),x=O.length;x--;)O[x]=(w?"#"+w:":scope")+" "+ht(O[x]);k=O.join(",")}try{return a.apply(p,N.querySelectorAll(k)),p}catch{G(s,!0)}finally{w===m&&l.removeAttribute("id")}}}return qn(s.replace(Xe,"$1"),l,p,g)}function pt(){var s=[];function l(p,g){return s.push(p+" ")>t.cacheLength&&delete l[s.shift()],l[p+" "]=g}return l}function ue(s){return s[m]=!0,s}function Be(s){var l=u.createElement("fieldset");try{return!!s(l)}catch{return!1}finally{l.parentNode&&l.parentNode.removeChild(l),l=null}}function Rr(s){return function(l){return B(l,"input")&&l.type===s}}function Ir(s){return function(l){return(B(l,"input")||B(l,"button"))&&l.type===s}}function jn(s){return function(l){return"form"in l?l.parentNode&&l.disabled===!1?"label"in l?"label"in l.parentNode?l.parentNode.disabled===s:l.disabled===s:l.isDisabled===s||l.isDisabled!==!s&&_r(l)===s:l.disabled===s:"label"in l?l.disabled===s:!1}}function je(s){return ue(function(l){return l=+l,ue(function(p,g){for(var v,x=s([],p.length,l),T=x.length;T--;)p[v=x[T]]&&(p[v]=!(g[v]=p[v]))})})}function Rt(s){return s&&typeof s.getElementsByTagName<"u"&&s}function Ce(s){var l,p=s?s.ownerDocument||s:ge;return p==u||p.nodeType!==9||!p.documentElement||(u=p,c=u.documentElement,f=!i.isXMLDoc(u),y=c.matches||c.webkitMatchesSelector||c.msMatchesSelector,c.msMatchesSelector&&ge!=u&&(l=u.defaultView)&&l.top!==l&&l.addEventListener("unload",Pr),E.getById=Be(function(g){return c.appendChild(g).id=i.expando,!u.getElementsByName||!u.getElementsByName(i.expando).length}),E.disconnectedMatch=Be(function(g){return y.call(g,"*")}),E.scope=Be(function(){return u.querySelectorAll(":scope")}),E.cssHas=Be(function(){try{return u.querySelector(":has(*,:jqfake)"),!1}catch{return!0}}),E.getById?(t.filter.ID=function(g){var v=g.replace(me,be);return function(x){return x.getAttribute("id")===v}},t.find.ID=function(g,v){if(typeof v.getElementById<"u"&&f){var x=v.getElementById(g);return x?[x]:[]}}):(t.filter.ID=function(g){var v=g.replace(me,be);return function(x){var T=typeof x.getAttributeNode<"u"&&x.getAttributeNode("id");return T&&T.value===v}},t.find.ID=function(g,v){if(typeof v.getElementById<"u"&&f){var x,T,w,C=v.getElementById(g);if(C){if(x=C.getAttributeNode("id"),x&&x.value===g)return[C];for(w=v.getElementsByName(g),T=0;C=w[T++];)if(x=C.getAttributeNode("id"),x&&x.value===g)return[C]}return[]}}),t.find.TAG=function(g,v){return typeof v.getElementsByTagName<"u"?v.getElementsByTagName(g):v.querySelectorAll(g)},t.find.CLASS=function(g,v){if(typeof v.getElementsByClassName<"u"&&f)return v.getElementsByClassName(g)},d=[],Be(function(g){var v;c.appendChild(g).innerHTML="
    ",g.querySelectorAll("[selected]").length||d.push("\\["+F+"*(?:value|"+ce+")"),g.querySelectorAll("[id~="+m+"-]").length||d.push("~="),g.querySelectorAll("a#"+m+"+*").length||d.push(".#.+[+~]"),g.querySelectorAll(":checked").length||d.push(":checked"),v=u.createElement("input"),v.setAttribute("type","hidden"),g.appendChild(v).setAttribute("name","D"),c.appendChild(g).disabled=!0,g.querySelectorAll(":disabled").length!==2&&d.push(":enabled",":disabled"),v=u.createElement("input"),v.setAttribute("name",""),g.appendChild(v),g.querySelectorAll("[name='']").length||d.push("\\["+F+"*name"+F+"*="+F+`*(?:''|"")`)}),E.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),U=function(g,v){if(g===v)return o=!0,0;var x=!g.compareDocumentPosition-!v.compareDocumentPosition;return x||(x=(g.ownerDocument||g)==(v.ownerDocument||v)?g.compareDocumentPosition(v):1,x&1||!E.sortDetached&&v.compareDocumentPosition(g)===x?g===u||g.ownerDocument==ge&&I.contains(ge,g)?-1:v===u||v.ownerDocument==ge&&I.contains(ge,v)?1:r?oe.call(r,g)-oe.call(r,v):0:x&4?-1:1)}),u}I.matches=function(s,l){return I(s,null,null,l)},I.matchesSelector=function(s,l){if(Ce(s),f&&!G[l+" "]&&(!d||!d.test(l)))try{var p=y.call(s,l);if(p||E.disconnectedMatch||s.document&&s.document.nodeType!==11)return p}catch{G(l,!0)}return I(l,u,null,[s]).length>0},I.contains=function(s,l){return(s.ownerDocument||s)!=u&&Ce(s),i.contains(s,l)},I.attr=function(s,l){(s.ownerDocument||s)!=u&&Ce(s);var p=t.attrHandle[l.toLowerCase()],g=p&&Se.call(t.attrHandle,l.toLowerCase())?p(s,l,!f):void 0;return g!==void 0?g:s.getAttribute(l)},I.error=function(s){throw new Error("Syntax error, unrecognized expression: "+s)},i.uniqueSort=function(s){var l,p=[],g=0,v=0;if(o=!E.sortStable,r=!E.sortStable&&V.call(s,0),Mn.call(s,U),o){for(;l=s[v++];)l===s[v]&&(g=p.push(v));for(;g--;)Rn.call(s,p[g],1)}return r=null,s},i.fn.uniqueSort=function(){return this.pushStack(i.uniqueSort(V.apply(this)))},t=i.expr={cacheLength:50,createPseudo:ue,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(s){return s[1]=s[1].replace(me,be),s[3]=(s[3]||s[4]||s[5]||"").replace(me,be),s[2]==="~="&&(s[3]=" "+s[3]+" "),s.slice(0,4)},CHILD:function(s){return s[1]=s[1].toLowerCase(),s[1].slice(0,3)==="nth"?(s[3]||I.error(s[0]),s[4]=+(s[4]?s[5]+(s[6]||1):2*(s[3]==="even"||s[3]==="odd")),s[5]=+(s[7]+s[8]||s[3]==="odd")):s[3]&&I.error(s[0]),s},PSEUDO:function(s){var l,p=!s[6]&&s[2];return pe.CHILD.test(s[0])?null:(s[3]?s[2]=s[4]||s[5]||"":p&&de.test(p)&&(l=it(p,!0))&&(l=p.indexOf(")",p.length-l)-p.length)&&(s[0]=s[0].slice(0,l),s[2]=p.slice(0,l)),s.slice(0,3))}},filter:{TAG:function(s){var l=s.replace(me,be).toLowerCase();return s==="*"?function(){return!0}:function(p){return B(p,l)}},CLASS:function(s){var l=A[s+" "];return l||(l=new RegExp("(^|"+F+")"+s+"("+F+"|$)"))&&A(s,function(p){return l.test(typeof p.className=="string"&&p.className||typeof p.getAttribute<"u"&&p.getAttribute("class")||"")})},ATTR:function(s,l,p){return function(g){var v=I.attr(g,s);return v==null?l==="!=":l?(v+="",l==="="?v===p:l==="!="?v!==p:l==="^="?p&&v.indexOf(p)===0:l==="*="?p&&v.indexOf(p)>-1:l==="$="?p&&v.slice(-p.length)===p:l==="~="?(" "+v.replace(R," ")+" ").indexOf(p)>-1:l==="|="?v===p||v.slice(0,p.length+1)===p+"-":!1):!0}},CHILD:function(s,l,p,g,v){var x=s.slice(0,3)!=="nth",T=s.slice(-4)!=="last",w=l==="of-type";return g===1&&v===0?function(C){return!!C.parentNode}:function(C,O,k){var N,P,D,W,ee,Q=x!==T?"nextSibling":"previousSibling",re=C.parentNode,he=w&&C.nodeName.toLowerCase(),$e=!k&&!w,Y=!1;if(re){if(x){for(;Q;){for(D=C;D=D[Q];)if(w?B(D,he):D.nodeType===1)return!1;ee=Q=s==="only"&&!ee&&"nextSibling"}return!0}if(ee=[T?re.firstChild:re.lastChild],T&&$e){for(P=re[m]||(re[m]={}),N=P[s]||[],W=N[0]===h&&N[1],Y=W&&N[2],D=W&&re.childNodes[W];D=++W&&D&&D[Q]||(Y=W=0)||ee.pop();)if(D.nodeType===1&&++Y&&D===C){P[s]=[h,W,Y];break}}else if($e&&(P=C[m]||(C[m]={}),N=P[s]||[],W=N[0]===h&&N[1],Y=W),Y===!1)for(;(D=++W&&D&&D[Q]||(Y=W=0)||ee.pop())&&!((w?B(D,he):D.nodeType===1)&&++Y&&($e&&(P=D[m]||(D[m]={}),P[s]=[h,Y]),D===C)););return Y-=v,Y===g||Y%g===0&&Y/g>=0}}},PSEUDO:function(s,l){var p,g=t.pseudos[s]||t.setFilters[s.toLowerCase()]||I.error("unsupported pseudo: "+s);return g[m]?g(l):g.length>1?(p=[s,s,"",l],t.setFilters.hasOwnProperty(s.toLowerCase())?ue(function(v,x){for(var T,w=g(v,l),C=w.length;C--;)T=oe.call(v,w[C]),v[T]=!(x[T]=w[C])}):function(v){return g(v,0,p)}):g}},pseudos:{not:ue(function(s){var l=[],p=[],g=Bt(s.replace(Xe,"$1"));return g[m]?ue(function(v,x,T,w){for(var C,O=g(v,null,w,[]),k=v.length;k--;)(C=O[k])&&(v[k]=!(x[k]=C))}):function(v,x,T){return l[0]=v,g(l,null,T,p),l[0]=null,!p.pop()}}),has:ue(function(s){return function(l){return I(s,l).length>0}}),contains:ue(function(s){return s=s.replace(me,be),function(l){return(l.textContent||i.text(l)).indexOf(s)>-1}}),lang:ue(function(s){return rt.test(s||"")||I.error("unsupported lang: "+s),s=s.replace(me,be).toLowerCase(),function(l){var p;do if(p=f?l.lang:l.getAttribute("xml:lang")||l.getAttribute("lang"))return p=p.toLowerCase(),p===s||p.indexOf(s+"-")===0;while((l=l.parentNode)&&l.nodeType===1);return!1}}),target:function(s){var l=j.location&&j.location.hash;return l&&l.slice(1)===s.id},root:function(s){return s===c},focus:function(s){return s===Mr()&&u.hasFocus()&&!!(s.type||s.href||~s.tabIndex)},enabled:jn(!1),disabled:jn(!0),checked:function(s){return B(s,"input")&&!!s.checked||B(s,"option")&&!!s.selected},selected:function(s){return s.parentNode&&s.parentNode.selectedIndex,s.selected===!0},empty:function(s){for(s=s.firstChild;s;s=s.nextSibling)if(s.nodeType<6)return!1;return!0},parent:function(s){return!t.pseudos.empty(s)},header:function(s){return Te.test(s.nodeName)},input:function(s){return xe.test(s.nodeName)},button:function(s){return B(s,"input")&&s.type==="button"||B(s,"button")},text:function(s){var l;return B(s,"input")&&s.type==="text"&&((l=s.getAttribute("type"))==null||l.toLowerCase()==="text")},first:je(function(){return[0]}),last:je(function(s,l){return[l-1]}),eq:je(function(s,l,p){return[p<0?p+l:p]}),even:je(function(s,l){for(var p=0;pl?g=l:g=p;--g>=0;)s.push(g);return s}),gt:je(function(s,l,p){for(var g=p<0?p+l:p;++g1?function(l,p,g){for(var v=s.length;v--;)if(!s[v](l,p,g))return!1;return!0}:s[0]}function Fr(s,l,p){for(var g=0,v=l.length;g-1&&(T[k]=!(w[k]=P))}}else D=yt(D===w?D.splice(Q,D.length):D),v?v(null,w,D,O):a.apply(w,D)})}function Wt(s){for(var l,p,g,v=s.length,x=t.relative[s[0].type],T=x||t.relative[" "],w=x?1:0,C=gt(function(N){return N===l},T,!0),O=gt(function(N){return oe.call(l,N)>-1},T,!0),k=[function(N,P,D){var W=!x&&(D||P!=n)||((l=P).nodeType?C(N,P,D):O(N,P,D));return l=null,W}];w1&&It(k),w>1&&ht(s.slice(0,w-1).concat({value:s[w-2].type===" "?"*":""})).replace(Xe,"$1"),p,w0,g=s.length>0,v=function(x,T,w,C,O){var k,N,P,D=0,W="0",ee=x&&[],Q=[],re=n,he=x||g&&t.find.TAG("*",O),$e=h+=re==null?1:Math.random()||.1,Y=he.length;for(O&&(n=T==u||T||O);W!==Y&&(k=he[W])!=null;W++){if(g&&k){for(N=0,!T&&k.ownerDocument!=u&&(Ce(k),w=!f);P=s[N++];)if(P(k,T||u,w)){a.call(C,k);break}O&&(h=$e)}p&&((k=!P&&k)&&D--,x&&ee.push(k))}if(D+=W,p&&W!==D){for(N=0;P=l[N++];)P(ee,Q,T,w);if(x){if(D>0)for(;W--;)ee[W]||Q[W]||(Q[W]=_n.call(C));Q=yt(Q)}a.apply(C,Q),O&&!x&&Q.length>0&&D+l.length>1&&i.uniqueSort(C)}return O&&(h=$e,n=re),ee};return p?ue(v):v}function Bt(s,l){var p,g=[],v=[],x=H[s+" "];if(!x){for(l||(l=it(s)),p=l.length;p--;)x=Wt(l[p]),x[m]?g.push(x):v.push(x);x=H(s,Wr(v,g)),x.selector=s}return x}function qn(s,l,p,g){var v,x,T,w,C,O=typeof s=="function"&&s,k=!g&&it(s=O.selector||s);if(p=p||[],k.length===1){if(x=k[0]=k[0].slice(0),x.length>2&&(T=x[0]).type==="ID"&&l.nodeType===9&&f&&t.relative[x[1].type]){if(l=(t.find.ID(T.matches[0].replace(me,be),l)||[])[0],l)O&&(l=l.parentNode);else return p;s=s.slice(x.shift().value.length)}for(v=pe.needsContext.test(s)?0:x.length;v--&&(T=x[v],!t.relative[w=T.type]);)if((C=t.find[w])&&(g=C(T.matches[0].replace(me,be),Mt.test(x[0].type)&&Rt(l.parentNode)||l))){if(x.splice(v,1),s=g.length&&ht(x),!s)return a.apply(p,g),p;break}}return(O||Bt(s,k))(g,l,!f,p,!l||Mt.test(s)&&Rt(l.parentNode)||l),p}E.sortStable=m.split("").sort(U).join("")===m,Ce(),E.sortDetached=Be(function(s){return s.compareDocumentPosition(u.createElement("fieldset"))&1}),i.find=I,i.expr[":"]=i.expr.pseudos,i.unique=i.uniqueSort,I.compile=Bt,I.select=qn,I.setDocument=Ce,I.tokenize=it,I.escape=i.escapeSelector,I.getText=i.text,I.isXML=i.isXMLDoc,I.selectors=i.expr,I.support=i.support,I.uniqueSort=i.uniqueSort})();var Oe=function(e,t,n){for(var r=[],o=n!==void 0;(e=e[t])&&e.nodeType!==9;)if(e.nodeType===1){if(o&&i(e).is(n))break;r.push(e)}return r},Vt=function(e,t){for(var n=[];e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n},Xt=i.expr.match.needsContext,Gt=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function xt(e,t,n){return L(t)?i.grep(e,function(r,o){return!!t.call(r,o,r)!==n}):t.nodeType?i.grep(e,function(r){return r===t!==n}):typeof t!="string"?i.grep(e,function(r){return oe.call(t,r)>-1!==n}):i.filter(t,e,n)}i.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),t.length===1&&r.nodeType===1?i.find.matchesSelector(r,e)?[r]:[]:i.find.matches(e,i.grep(t,function(o){return o.nodeType===1}))},i.fn.extend({find:function(e){var t,n,r=this.length,o=this;if(typeof e!="string")return this.pushStack(i(e).filter(function(){for(t=0;t1?i.uniqueSort(n):n},filter:function(e){return this.pushStack(xt(this,e||[],!1))},not:function(e){return this.pushStack(xt(this,e||[],!0))},is:function(e){return!!xt(this,typeof e=="string"&&Xt.test(e)?i(e):e||[],!1).length}});var Qt,Wn=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Bn=i.fn.init=function(e,t,n){var r,o;if(!e)return this;if(n=n||Qt,typeof e=="string")if(e[0]==="<"&&e[e.length-1]===">"&&e.length>=3?r=[null,e,null]:r=Wn.exec(e),r&&(r[1]||!t))if(r[1]){if(t=t instanceof i?t[0]:t,i.merge(this,i.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:q,!0)),Gt.test(r[1])&&i.isPlainObject(t))for(r in t)L(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}else return o=q.getElementById(r[2]),o&&(this[0]=o,this.length=1),this;else return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);else{if(e.nodeType)return this[0]=e,this.length=1,this;if(L(e))return n.ready!==void 0?n.ready(e):e(i)}return i.makeArray(e,this)};Bn.prototype=i.fn,Qt=i(q);var $n=/^(?:parents|prev(?:Until|All))/,zn={children:!0,contents:!0,next:!0,prev:!0};i.fn.extend({has:function(e){var t=i(e,this),n=t.length;return this.filter(function(){for(var r=0;r-1:n.nodeType===1&&i.find.matchesSelector(n,e))){a.push(n);break}}return this.pushStack(a.length>1?i.uniqueSort(a):a)},index:function(e){return e?typeof e=="string"?oe.call(i(e),this[0]):oe.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(i.uniqueSort(i.merge(this.get(),i(e,t))))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}});function Yt(e,t){for(;(e=e[t])&&e.nodeType!==1;);return e}i.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return Oe(e,"parentNode")},parentsUntil:function(e,t,n){return Oe(e,"parentNode",n)},next:function(e){return Yt(e,"nextSibling")},prev:function(e){return Yt(e,"previousSibling")},nextAll:function(e){return Oe(e,"nextSibling")},prevAll:function(e){return Oe(e,"previousSibling")},nextUntil:function(e,t,n){return Oe(e,"nextSibling",n)},prevUntil:function(e,t,n){return Oe(e,"previousSibling",n)},siblings:function(e){return Vt((e.parentNode||{}).firstChild,e)},children:function(e){return Vt(e.firstChild)},contents:function(e){return e.contentDocument!=null&&ze(e.contentDocument)?e.contentDocument:(B(e,"template")&&(e=e.content||e),i.merge([],e.childNodes))}},function(e,t){i.fn[e]=function(n,r){var o=i.map(this,t,n);return e.slice(-5)!=="Until"&&(r=n),r&&typeof r=="string"&&(o=i.filter(r,o)),this.length>1&&(zn[e]||i.uniqueSort(o),$n.test(e)&&o.reverse()),this.pushStack(o)}});var se=/[^\x20\t\r\n\f]+/g;function Un(e){var t={};return i.each(e.match(se)||[],function(n,r){t[r]=!0}),t}i.Callbacks=function(e){e=typeof e=="string"?Un(e):i.extend({},e);var t,n,r,o,a=[],u=[],c=-1,f=function(){for(o=o||e.once,r=t=!0;u.length;c=-1)for(n=u.shift();++c-1;)a.splice(h,1),h<=c&&c--}),this},has:function(y){return y?i.inArray(y,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return o=u=[],a=n="",this},disabled:function(){return!a},lock:function(){return o=u=[],!n&&!t&&(a=n=""),this},locked:function(){return!!o},fireWith:function(y,m){return o||(m=m||[],m=[y,m.slice?m.slice():m],u.push(m),t||f()),this},fire:function(){return d.fireWith(this,arguments),this},fired:function(){return!!r}};return d};function Pe(e){return e}function at(e){throw e}function Jt(e,t,n,r){var o;try{e&&L(o=e.promise)?o.call(e).done(t).fail(n):e&&L(o=e.then)?o.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(a){n.apply(void 0,[a])}}i.extend({Deferred:function(e){var t=[["notify","progress",i.Callbacks("memory"),i.Callbacks("memory"),2],["resolve","done",i.Callbacks("once memory"),i.Callbacks("once memory"),0,"resolved"],["reject","fail",i.Callbacks("once memory"),i.Callbacks("once memory"),1,"rejected"]],n="pending",r={state:function(){return n},always:function(){return o.done(arguments).fail(arguments),this},catch:function(a){return r.then(null,a)},pipe:function(){var a=arguments;return i.Deferred(function(u){i.each(t,function(c,f){var d=L(a[f[4]])&&a[f[4]];o[f[1]](function(){var y=d&&d.apply(this,arguments);y&&L(y.promise)?y.promise().progress(u.notify).done(u.resolve).fail(u.reject):u[f[0]+"With"](this,d?[y]:arguments)})}),a=null}).promise()},then:function(a,u,c){var f=0;function d(y,m,h,b){return function(){var A=this,M=arguments,H=function(){var U,ce;if(!(y=f&&(h!==at&&(A=void 0,M=[U]),m.rejectWith(A,M))}};y?G():(i.Deferred.getErrorHook?G.error=i.Deferred.getErrorHook():i.Deferred.getStackHook&&(G.error=i.Deferred.getStackHook()),j.setTimeout(G))}}return i.Deferred(function(y){t[0][3].add(d(0,y,L(c)?c:Pe,y.notifyWith)),t[1][3].add(d(0,y,L(a)?a:Pe)),t[2][3].add(d(0,y,L(u)?u:at))}).promise()},promise:function(a){return a!=null?i.extend(a,r):r}},o={};return i.each(t,function(a,u){var c=u[2],f=u[5];r[u[1]]=c.add,f&&c.add(function(){n=f},t[3-a][2].disable,t[3-a][3].disable,t[0][2].lock,t[0][3].lock),c.add(u[3].fire),o[u[0]]=function(){return o[u[0]+"With"](this===o?void 0:this,arguments),this},o[u[0]+"With"]=c.fireWith}),r.promise(o),e&&e.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),o=V.call(arguments),a=i.Deferred(),u=function(c){return function(f){r[c]=this,o[c]=arguments.length>1?V.call(arguments):f,--t||a.resolveWith(r,o)}};if(t<=1&&(Jt(e,a.done(u(n)).resolve,a.reject,!t),a.state()==="pending"||L(o[n]&&o[n].then)))return a.then();for(;n--;)Jt(o[n],u(n),a.reject);return a.promise()}});var Vn=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;i.Deferred.exceptionHook=function(e,t){j.console&&j.console.warn&&e&&Vn.test(e.name)&&j.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},i.readyException=function(e){j.setTimeout(function(){throw e})};var Tt=i.Deferred();i.fn.ready=function(e){return Tt.then(e).catch(function(t){i.readyException(t)}),this},i.extend({isReady:!1,readyWait:1,ready:function(e){(e===!0?--i.readyWait:i.isReady)||(i.isReady=!0,!(e!==!0&&--i.readyWait>0)&&Tt.resolveWith(q,[i]))}}),i.ready.then=Tt.then;function ut(){q.removeEventListener("DOMContentLoaded",ut),j.removeEventListener("load",ut),i.ready()}q.readyState==="complete"||q.readyState!=="loading"&&!q.documentElement.doScroll?j.setTimeout(i.ready):(q.addEventListener("DOMContentLoaded",ut),j.addEventListener("load",ut));var ye=function(e,t,n,r,o,a,u){var c=0,f=e.length,d=n==null;if(He(n)==="object"){o=!0;for(c in n)ye(e,t,c,n[c],!0,a,u)}else if(r!==void 0&&(o=!0,L(r)||(u=!0),d&&(u?(t.call(e,r),t=null):(d=t,t=function(y,m,h){return d.call(i(y),h)})),t))for(;c1,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),i.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=S.get(e,t),n&&(!r||Array.isArray(n)?r=S.access(e,t,i.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=i.queue(e,t),r=n.length,o=n.shift(),a=i._queueHooks(e,t),u=function(){i.dequeue(e,t)};o==="inprogress"&&(o=n.shift(),r--),o&&(t==="fx"&&n.unshift("inprogress"),delete a.stop,o.call(e,u,a)),!r&&a&&a.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return S.get(e,n)||S.access(e,n,{empty:i.Callbacks("once memory").add(function(){S.remove(e,[t+"queue",n])})})}}),i.fn.extend({queue:function(e,t){var n=2;return typeof e!="string"&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,rn=/^$|^module$|\/(?:java|ecma)script/i;(function(){var e=q.createDocumentFragment(),t=e.appendChild(q.createElement("div")),n=q.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),E.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="",E.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue,t.innerHTML="",E.option=!!t.lastChild})();var te={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};te.tbody=te.tfoot=te.colgroup=te.caption=te.thead,te.th=te.td,E.option||(te.optgroup=te.option=[1,""]);function K(e,t){var n;return typeof e.getElementsByTagName<"u"?n=e.getElementsByTagName(t||"*"):typeof e.querySelectorAll<"u"?n=e.querySelectorAll(t||"*"):n=[],t===void 0||t&&B(e,t)?i.merge([e],n):n}function Ct(e,t){for(var n=0,r=e.length;n-1){o&&o.push(a);continue}if(d=_e(a),u=K(m.appendChild(a),"script"),d&&Ct(u),n)for(y=0;a=u[y++];)rn.test(a.type||"")&&n.push(a)}return m}var an=/^([^.]*)(?:\.(.+)|)/;function Re(){return!0}function Ie(){return!1}function wt(e,t,n,r,o,a){var u,c;if(typeof t=="object"){typeof n!="string"&&(r=r||n,n=void 0);for(c in t)wt(e,c,n,r,t[c],a);return e}if(r==null&&o==null?(o=n,r=n=void 0):o==null&&(typeof n=="string"?(o=r,r=void 0):(o=r,r=n,n=void 0)),o===!1)o=Ie;else if(!o)return e;return a===1&&(u=o,o=function(f){return i().off(f),u.apply(this,arguments)},o.guid=u.guid||(u.guid=i.guid++)),e.each(function(){i.event.add(this,t,o,r,n)})}i.event={global:{},add:function(e,t,n,r,o){var a,u,c,f,d,y,m,h,b,A,M,H=S.get(e);if(Ge(e))for(n.handler&&(a=n,n=a.handler,o=a.selector),o&&i.find.matchesSelector(De,o),n.guid||(n.guid=i.guid++),(f=H.events)||(f=H.events=Object.create(null)),(u=H.handle)||(u=H.handle=function(G){return typeof i<"u"&&i.event.triggered!==G.type?i.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(se)||[""],d=t.length;d--;)c=an.exec(t[d])||[],b=M=c[1],A=(c[2]||"").split(".").sort(),b&&(m=i.event.special[b]||{},b=(o?m.delegateType:m.bindType)||b,m=i.event.special[b]||{},y=i.extend({type:b,origType:M,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&i.expr.match.needsContext.test(o),namespace:A.join(".")},a),(h=f[b])||(h=f[b]=[],h.delegateCount=0,(!m.setup||m.setup.call(e,r,A,u)===!1)&&e.addEventListener&&e.addEventListener(b,u)),m.add&&(m.add.call(e,y),y.handler.guid||(y.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,y):h.push(y),i.event.global[b]=!0)},remove:function(e,t,n,r,o){var a,u,c,f,d,y,m,h,b,A,M,H=S.hasData(e)&&S.get(e);if(!(!H||!(f=H.events))){for(t=(t||"").match(se)||[""],d=t.length;d--;){if(c=an.exec(t[d])||[],b=M=c[1],A=(c[2]||"").split(".").sort(),!b){for(b in f)i.event.remove(e,b+t[d],n,r,!0);continue}for(m=i.event.special[b]||{},b=(r?m.delegateType:m.bindType)||b,h=f[b]||[],c=c[2]&&new RegExp("(^|\\.)"+A.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=a=h.length;a--;)y=h[a],(o||M===y.origType)&&(!n||n.guid===y.guid)&&(!c||c.test(y.namespace))&&(!r||r===y.selector||r==="**"&&y.selector)&&(h.splice(a,1),y.selector&&h.delegateCount--,m.remove&&m.remove.call(e,y));u&&!h.length&&((!m.teardown||m.teardown.call(e,A,H.handle)===!1)&&i.removeEvent(e,b,H.handle),delete f[b])}i.isEmptyObject(f)&&S.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,a,u,c=new Array(arguments.length),f=i.event.fix(e),d=(S.get(this,"events")||Object.create(null))[f.type]||[],y=i.event.special[f.type]||{};for(c[0]=f,t=1;t=1)){for(;d!==this;d=d.parentNode||this)if(d.nodeType===1&&!(e.type==="click"&&d.disabled===!0)){for(a=[],u={},n=0;n-1:i.find(o,this,null,[d]).length),u[o]&&a.push(r);a.length&&c.push({elem:d,handlers:a})}}return d=this,f\s*$/g;function un(e,t){return B(e,"table")&&B(t.nodeType!==11?t:t.firstChild,"tr")&&i(e).children("tbody")[0]||e}function or(e){return e.type=(e.getAttribute("type")!==null)+"/"+e.type,e}function ar(e){return(e.type||"").slice(0,5)==="true/"?e.type=e.type.slice(5):e.removeAttribute("type"),e}function sn(e,t){var n,r,o,a,u,c,f;if(t.nodeType===1){if(S.hasData(e)&&(a=S.get(e),f=a.events,f)){S.remove(t,"handle events");for(o in f)for(n=0,r=f[o].length;n1&&typeof b=="string"&&!E.checkClone&&rr.test(b))return e.each(function(M){var H=e.eq(M);A&&(t[0]=b.call(this,M,H.html())),Fe(H,t,n,r)});if(m&&(o=on(t,e[0].ownerDocument,!1,e,r),a=o.firstChild,o.childNodes.length===1&&(o=a),a||r)){for(u=i.map(K(o,"script"),or),c=u.length;y0&&Ct(u,!f&&K(e,"script")),c},cleanData:function(e){for(var t,n,r,o=i.event.special,a=0;(n=e[a])!==void 0;a++)if(Ge(n)){if(t=n[S.expando]){if(t.events)for(r in t.events)o[r]?i.event.remove(n,r):i.removeEvent(n,r,t.handle);n[S.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),i.fn.extend({detach:function(e){return fn(this,e,!0)},remove:function(e){return fn(this,e)},text:function(e){return ye(this,function(t){return t===void 0?i.text(this):this.empty().each(function(){(this.nodeType===1||this.nodeType===11||this.nodeType===9)&&(this.textContent=t)})},null,e,arguments.length)},append:function(){return Fe(this,arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var t=un(this,e);t.appendChild(e)}})},prepend:function(){return Fe(this,arguments,function(e){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var t=un(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Fe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Fe(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;(e=this[t])!=null;t++)e.nodeType===1&&(i.cleanData(K(e,!1)),e.textContent="");return this},clone:function(e,t){return e=e??!1,t=t??e,this.map(function(){return i.clone(this,e,t)})},html:function(e){return ye(this,function(t){var n=this[0]||{},r=0,o=this.length;if(t===void 0&&n.nodeType===1)return n.innerHTML;if(typeof t=="string"&&!nr.test(t)&&!te[(nn.exec(t)||["",""])[1].toLowerCase()]){t=i.htmlPrefilter(t);try{for(;r=0&&(f+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-a-f-c-.5))||0),f+d}function vn(e,t,n){var r=ct(e),o=!E.boxSizingReliable()||n,a=o&&i.css(e,"boxSizing",!1,r)==="border-box",u=a,c=Ke(e,t,r),f="offset"+t[0].toUpperCase()+t.slice(1);if(St.test(c)){if(!n)return c;c="auto"}return(!E.boxSizingReliable()&&a||!E.reliableTrDimensions()&&B(e,"tr")||c==="auto"||!parseFloat(c)&&i.css(e,"display",!1,r)==="inline")&&e.getClientRects().length&&(a=i.css(e,"boxSizing",!1,r)==="border-box",u=f in e,u&&(c=e[f])),c=parseFloat(c)||0,c+kt(e,t,n||(a?"border":"content"),u,r,c)+"px"}i.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ke(e,"opacity");return n===""?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,r){if(!(!e||e.nodeType===3||e.nodeType===8||!e.style)){var o,a,u,c=fe(t),f=Et.test(t),d=e.style;if(f||(t=Dt(c)),u=i.cssHooks[t]||i.cssHooks[c],n!==void 0){if(a=typeof n,a==="string"&&(o=Ye.exec(n))&&o[1]&&(n=en(e,t,o),a="number"),n==null||n!==n)return;a==="number"&&!f&&(n+=o&&o[3]||(i.cssNumber[c]?"":"px")),!E.clearCloneStyle&&n===""&&t.indexOf("background")===0&&(d[t]="inherit"),(!u||!("set"in u)||(n=u.set(e,n,r))!==void 0)&&(f?d.setProperty(t,n):d[t]=n)}else return u&&"get"in u&&(o=u.get(e,!1,r))!==void 0?o:d[t]}},css:function(e,t,n,r){var o,a,u,c=fe(t),f=Et.test(t);return f||(t=Dt(c)),u=i.cssHooks[t]||i.cssHooks[c],u&&"get"in u&&(o=u.get(e,!0,n)),o===void 0&&(o=Ke(e,t,r)),o==="normal"&&t in gn&&(o=gn[t]),n===""||n?(a=parseFloat(o),n===!0||isFinite(a)?a||0:o):o}}),i.each(["height","width"],function(e,t){i.cssHooks[t]={get:function(n,r,o){if(r)return cr.test(i.css(n,"display"))&&(!n.getClientRects().length||!n.getBoundingClientRect().width)?cn(n,lr,function(){return vn(n,t,o)}):vn(n,t,o)},set:function(n,r,o){var a,u=ct(n),c=!E.scrollboxSize()&&u.position==="absolute",f=c||o,d=f&&i.css(n,"boxSizing",!1,u)==="border-box",y=o?kt(n,t,o,d,u):0;return d&&c&&(y-=Math.ceil(n["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(u[t])-kt(n,t,"border",!1,u)-.5)),y&&(a=Ye.exec(r))&&(a[3]||"px")!=="px"&&(n.style[t]=r,r=i.css(n,t)),yn(n,r,y)}}}),i.cssHooks.marginLeft=ln(E.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ke(e,"marginLeft"))||e.getBoundingClientRect().left-cn(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),i.each({margin:"",padding:"",border:"Width"},function(e,t){i.cssHooks[e+t]={expand:function(n){for(var r=0,o={},a=typeof n=="string"?n.split(" "):[n];r<4;r++)o[e+ve[r]+t]=a[r]||a[r-2]||a[0];return o}},e!=="margin"&&(i.cssHooks[e+t].set=yn)}),i.fn.extend({css:function(e,t){return ye(this,function(n,r,o){var a,u,c={},f=0;if(Array.isArray(r)){for(a=ct(n),u=r.length;f1)}});function Z(e,t,n,r,o){return new Z.prototype.init(e,t,n,r,o)}i.Tween=Z,Z.prototype={constructor:Z,init:function(e,t,n,r,o,a){this.elem=e,this.prop=n,this.easing=o||i.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=a||(i.cssNumber[n]?"":"px")},cur:function(){var e=Z.propHooks[this.prop];return e&&e.get?e.get(this):Z.propHooks._default.get(this)},run:function(e){var t,n=Z.propHooks[this.prop];return this.options.duration?this.pos=t=i.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Z.propHooks._default.set(this),this}},Z.prototype.init.prototype=Z.prototype,Z.propHooks={_default:{get:function(e){var t;return e.elem.nodeType!==1||e.elem[e.prop]!=null&&e.elem.style[e.prop]==null?e.elem[e.prop]:(t=i.css(e.elem,e.prop,""),!t||t==="auto"?0:t)},set:function(e){i.fx.step[e.prop]?i.fx.step[e.prop](e):e.elem.nodeType===1&&(i.cssHooks[e.prop]||e.elem.style[Dt(e.prop)]!=null)?i.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Z.propHooks.scrollTop=Z.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},i.easing={linear:function(e){return e},swing:function(e){return .5-Math.cos(e*Math.PI)/2},_default:"swing"},i.fx=Z.prototype.init,i.fx.step={};var We,lt,dr=/^(?:toggle|show|hide)$/,pr=/queueHooks$/;function At(){lt&&(q.hidden===!1&&j.requestAnimationFrame?j.requestAnimationFrame(At):j.setTimeout(At,i.fx.interval),i.fx.tick())}function mn(){return j.setTimeout(function(){We=void 0}),We=Date.now()}function dt(e,t){var n,r=0,o={height:e};for(t=t?1:0;r<4;r+=2-t)n=ve[r],o["margin"+n]=o["padding"+n]=e;return t&&(o.opacity=o.width=e),o}function bn(e,t,n){for(var r,o=(ae.tweeners[t]||[]).concat(ae.tweeners["*"]),a=0,u=o.length;a1)},removeAttr:function(e){return this.each(function(){i.removeAttr(this,e)})}}),i.extend({attr:function(e,t,n){var r,o,a=e.nodeType;if(!(a===3||a===8||a===2)){if(typeof e.getAttribute>"u")return i.prop(e,t,n);if((a!==1||!i.isXMLDoc(e))&&(o=i.attrHooks[t.toLowerCase()]||(i.expr.match.bool.test(t)?xn:void 0)),n!==void 0){if(n===null){i.removeAttr(e,t);return}return o&&"set"in o&&(r=o.set(e,n,t))!==void 0?r:(e.setAttribute(t,n+""),n)}return o&&"get"in o&&(r=o.get(e,t))!==null?r:(r=i.find.attr(e,t),r??void 0)}},attrHooks:{type:{set:function(e,t){if(!E.radioValue&&t==="radio"&&B(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(se);if(o&&e.nodeType===1)for(;n=o[r++];)e.removeAttribute(n)}}),xn={set:function(e,t,n){return t===!1?i.removeAttr(e,n):e.setAttribute(n,n),n}},i.each(i.expr.match.bool.source.match(/\w+/g),function(e,t){var n=Ze[t]||i.find.attr;Ze[t]=function(r,o,a){var u,c,f=o.toLowerCase();return a||(c=Ze[f],Ze[f]=u,u=n(r,o,a)!=null?f:null,Ze[f]=c),u}});var yr=/^(?:input|select|textarea|button)$/i,vr=/^(?:a|area)$/i;i.fn.extend({prop:function(e,t){return ye(this,i.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[i.propFix[e]||e]})}}),i.extend({prop:function(e,t,n){var r,o,a=e.nodeType;if(!(a===3||a===8||a===2))return(a!==1||!i.isXMLDoc(e))&&(t=i.propFix[t]||t,o=i.propHooks[t]),n!==void 0?o&&"set"in o&&(r=o.set(e,n,t))!==void 0?r:e[t]=n:o&&"get"in o&&(r=o.get(e,t))!==null?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=i.find.attr(e,"tabindex");return t?parseInt(t,10):yr.test(e.nodeName)||vr.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),E.optSelected||(i.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),i.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){i.propFix[this.toLowerCase()]=this});function ke(e){var t=e.match(se)||[];return t.join(" ")}function Ae(e){return e.getAttribute&&e.getAttribute("class")||""}function Nt(e){return Array.isArray(e)?e:typeof e=="string"?e.match(se)||[]:[]}i.fn.extend({addClass:function(e){var t,n,r,o,a,u;return L(e)?this.each(function(c){i(this).addClass(e.call(this,c,Ae(this)))}):(t=Nt(e),t.length?this.each(function(){if(r=Ae(this),n=this.nodeType===1&&" "+ke(r)+" ",n){for(a=0;a-1;)n=n.replace(" "+o+" "," ");u=ke(n),r!==u&&this.setAttribute("class",u)}}):this):this.attr("class","")},toggleClass:function(e,t){var n,r,o,a,u=typeof e,c=u==="string"||Array.isArray(e);return L(e)?this.each(function(f){i(this).toggleClass(e.call(this,f,Ae(this),t),t)}):typeof t=="boolean"&&c?t?this.addClass(e):this.removeClass(e):(n=Nt(e),this.each(function(){if(c)for(a=i(this),o=0;o-1)return!0;return!1}});var mr=/\r/g;i.fn.extend({val:function(e){var t,n,r,o=this[0];return arguments.length?(r=L(e),this.each(function(a){var u;this.nodeType===1&&(r?u=e.call(this,a,i(this).val()):u=e,u==null?u="":typeof u=="number"?u+="":Array.isArray(u)&&(u=i.map(u,function(c){return c==null?"":c+""})),t=i.valHooks[this.type]||i.valHooks[this.nodeName.toLowerCase()],(!t||!("set"in t)||t.set(this,u,"value")===void 0)&&(this.value=u))})):o?(t=i.valHooks[o.type]||i.valHooks[o.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(o,"value"))!==void 0?n:(n=o.value,typeof n=="string"?n.replace(mr,""):n??"")):void 0}}),i.extend({valHooks:{option:{get:function(e){var t=i.find.attr(e,"value");return t??ke(i.text(e))}},select:{get:function(e){var t,n,r,o=e.options,a=e.selectedIndex,u=e.type==="select-one",c=u?null:[],f=u?a+1:o.length;for(a<0?r=f:r=u?a:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),a}}}}),i.each(["radio","checkbox"],function(){i.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=i.inArray(i(e).val(),t)>-1}},E.checkOn||(i.valHooks[this].get=function(e){return e.getAttribute("value")===null?"on":e.value})});var et=j.location,Tn={guid:Date.now()},jt=/\?/;i.parseXML=function(e){var t,n;if(!e||typeof e!="string")return null;try{t=new j.DOMParser().parseFromString(e,"text/xml")}catch{}return n=t&&t.getElementsByTagName("parsererror")[0],(!t||n)&&i.error("Invalid XML: "+(n?i.map(n.childNodes,function(r){return r.textContent}).join(` +`):e)),t};var Cn=/^(?:focusinfocus|focusoutblur)$/,wn=function(e){e.stopPropagation()};i.extend(i.event,{trigger:function(e,t,n,r){var o,a,u,c,f,d,y,m,h=[n||q],b=Se.call(e,"type")?e.type:e,A=Se.call(e,"namespace")?e.namespace.split("."):[];if(a=m=u=n=n||q,!(n.nodeType===3||n.nodeType===8)&&!Cn.test(b+i.event.triggered)&&(b.indexOf(".")>-1&&(A=b.split("."),b=A.shift(),A.sort()),f=b.indexOf(":")<0&&"on"+b,e=e[i.expando]?e:new i.Event(b,typeof e=="object"&&e),e.isTrigger=r?2:3,e.namespace=A.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+A.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=t==null?[e]:i.makeArray(t,[e]),y=i.event.special[b]||{},!(!r&&y.trigger&&y.trigger.apply(n,t)===!1))){if(!r&&!y.noBubble&&!Ee(n)){for(c=y.delegateType||b,Cn.test(c+b)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(n.ownerDocument||q)&&h.push(u.defaultView||u.parentWindow||j)}for(o=0;(a=h[o++])&&!e.isPropagationStopped();)m=a,e.type=o>1?c:y.bindType||b,d=(S.get(a,"events")||Object.create(null))[e.type]&&S.get(a,"handle"),d&&d.apply(a,t),d=f&&a[f],d&&d.apply&&Ge(a)&&(e.result=d.apply(a,t),e.result===!1&&e.preventDefault());return e.type=b,!r&&!e.isDefaultPrevented()&&(!y._default||y._default.apply(h.pop(),t)===!1)&&Ge(n)&&f&&L(n[b])&&!Ee(n)&&(u=n[f],u&&(n[f]=null),i.event.triggered=b,e.isPropagationStopped()&&m.addEventListener(b,wn),n[b](),e.isPropagationStopped()&&m.removeEventListener(b,wn),i.event.triggered=void 0,u&&(n[f]=u)),e.result}},simulate:function(e,t,n){var r=i.extend(new i.Event,n,{type:e,isSimulated:!0});i.event.trigger(r,null,t)}}),i.fn.extend({trigger:function(e,t){return this.each(function(){i.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return i.event.trigger(e,t,n,!0)}});var br=/\[\]$/,Sn=/\r?\n/g,xr=/^(?:submit|button|image|reset|file)$/i,Tr=/^(?:input|select|textarea|keygen)/i;function Lt(e,t,n,r){var o;if(Array.isArray(t))i.each(t,function(a,u){n||br.test(e)?r(e,u):Lt(e+"["+(typeof u=="object"&&u!=null?a:"")+"]",u,n,r)});else if(!n&&He(t)==="object")for(o in t)Lt(e+"["+o+"]",t[o],n,r);else r(e,t)}i.param=function(e,t){var n,r=[],o=function(a,u){var c=L(u)?u():u;r[r.length]=encodeURIComponent(a)+"="+encodeURIComponent(c??"")};if(e==null)return"";if(Array.isArray(e)||e.jquery&&!i.isPlainObject(e))i.each(e,function(){o(this.name,this.value)});else for(n in e)Lt(n,e[n],t,o);return r.join("&")},i.fn.extend({serialize:function(){return i.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=i.prop(this,"elements");return e?i.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!i(this).is(":disabled")&&Tr.test(this.nodeName)&&!xr.test(e)&&(this.checked||!Je.test(e))}).map(function(e,t){var n=i(this).val();return n==null?null:Array.isArray(n)?i.map(n,function(r){return{name:t.name,value:r.replace(Sn,`\r +`)}}):{name:t.name,value:n.replace(Sn,`\r +`)}}).get()}});var Cr=/%20/g,wr=/#.*$/,Sr=/([?&])_=[^&]*/,Er=/^(.*?):[ \t]*([^\r\n]*)$/mg,Dr=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kr=/^(?:GET|HEAD)$/,Ar=/^\/\//,En={},qt={},Dn="*/".concat("*"),Ht=q.createElement("a");Ht.href=et.href;function kn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,o=0,a=t.toLowerCase().match(se)||[];if(L(n))for(;r=a[o++];)r[0]==="+"?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function An(e,t,n,r){var o={},a=e===qt;function u(c){var f;return o[c]=!0,i.each(e[c]||[],function(d,y){var m=y(t,n,r);if(typeof m=="string"&&!a&&!o[m])return t.dataTypes.unshift(m),u(m),!1;if(a)return!(f=m)}),f}return u(t.dataTypes[0])||!o["*"]&&u("*")}function Ot(e,t){var n,r,o=i.ajaxSettings.flatOptions||{};for(n in t)t[n]!==void 0&&((o[n]?e:r||(r={}))[n]=t[n]);return r&&i.extend(!0,e,r),e}function Nr(e,t,n){for(var r,o,a,u,c=e.contents,f=e.dataTypes;f[0]==="*";)f.shift(),r===void 0&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r){for(o in c)if(c[o]&&c[o].test(r)){f.unshift(o);break}}if(f[0]in n)a=f[0];else{for(o in n){if(!f[0]||e.converters[o+" "+f[0]]){a=o;break}u||(u=o)}a=a||u}if(a)return a!==f[0]&&f.unshift(a),n[a]}function jr(e,t,n,r){var o,a,u,c,f,d={},y=e.dataTypes.slice();if(y[1])for(u in e.converters)d[u.toLowerCase()]=e.converters[u];for(a=y.shift();a;)if(e.responseFields[a]&&(n[e.responseFields[a]]=t),!f&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),f=a,a=y.shift(),a){if(a==="*")a=f;else if(f!=="*"&&f!==a){if(u=d[f+" "+a]||d["* "+a],!u){for(o in d)if(c=o.split(" "),c[1]===a&&(u=d[f+" "+c[0]]||d["* "+c[0]],u)){u===!0?u=d[o]:d[o]!==!0&&(a=c[0],y.unshift(c[1]));break}}if(u!==!0)if(u&&e.throws)t=u(t);else try{t=u(t)}catch(m){return{state:"parsererror",error:u?m:"No conversion from "+f+" to "+a}}}}return{state:"success",data:t}}i.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:et.href,type:"GET",isLocal:Dr.test(et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":i.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ot(Ot(e,i.ajaxSettings),t):Ot(i.ajaxSettings,e)},ajaxPrefilter:kn(En),ajaxTransport:kn(qt),ajax:function(e,t){typeof e=="object"&&(t=e,e=void 0),t=t||{};var n,r,o,a,u,c,f,d,y,m,h=i.ajaxSetup({},t),b=h.context||h,A=h.context&&(b.nodeType||b.jquery)?i(b):i.event,M=i.Deferred(),H=i.Callbacks("once memory"),G=h.statusCode||{},U={},ce={},le="canceled",_={readyState:0,getResponseHeader:function(R){var $;if(f){if(!a)for(a={};$=Er.exec(o);)a[$[1].toLowerCase()+" "]=(a[$[1].toLowerCase()+" "]||[]).concat($[2]);$=a[R.toLowerCase()+" "]}return $==null?null:$.join(", ")},getAllResponseHeaders:function(){return f?o:null},setRequestHeader:function(R,$){return f==null&&(R=ce[R.toLowerCase()]=ce[R.toLowerCase()]||R,U[R]=$),this},overrideMimeType:function(R){return f==null&&(h.mimeType=R),this},statusCode:function(R){var $;if(R)if(f)_.always(R[_.status]);else for($ in R)G[$]=[G[$],R[$]];return this},abort:function(R){var $=R||le;return n&&n.abort($),Ne(0,$),this}};if(M.promise(_),h.url=((e||h.url||et.href)+"").replace(Ar,et.protocol+"//"),h.type=t.method||t.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(se)||[""],h.crossDomain==null){c=q.createElement("a");try{c.href=h.url,c.href=c.href,h.crossDomain=Ht.protocol+"//"+Ht.host!=c.protocol+"//"+c.host}catch{h.crossDomain=!0}}if(h.data&&h.processData&&typeof h.data!="string"&&(h.data=i.param(h.data,h.traditional)),An(En,h,t,_),f)return _;d=i.event&&h.global,d&&i.active++===0&&i.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!kr.test(h.type),r=h.url.replace(wr,""),h.hasContent?h.data&&h.processData&&(h.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&(h.data=h.data.replace(Cr,"+")):(m=h.url.slice(r.length),h.data&&(h.processData||typeof h.data=="string")&&(r+=(jt.test(r)?"&":"?")+h.data,delete h.data),h.cache===!1&&(r=r.replace(Sr,"$1"),m=(jt.test(r)?"&":"?")+"_="+Tn.guid+++m),h.url=r+m),h.ifModified&&(i.lastModified[r]&&_.setRequestHeader("If-Modified-Since",i.lastModified[r]),i.etag[r]&&_.setRequestHeader("If-None-Match",i.etag[r])),(h.data&&h.hasContent&&h.contentType!==!1||t.contentType)&&_.setRequestHeader("Content-Type",h.contentType),_.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+(h.dataTypes[0]!=="*"?", "+Dn+"; q=0.01":""):h.accepts["*"]);for(y in h.headers)_.setRequestHeader(y,h.headers[y]);if(h.beforeSend&&(h.beforeSend.call(b,_,h)===!1||f))return _.abort();if(le="abort",H.add(h.complete),_.done(h.success),_.fail(h.error),n=An(qt,h,t,_),!n)Ne(-1,"No Transport");else{if(_.readyState=1,d&&A.trigger("ajaxSend",[_,h]),f)return _;h.async&&h.timeout>0&&(u=j.setTimeout(function(){_.abort("timeout")},h.timeout));try{f=!1,n.send(U,Ne)}catch(R){if(f)throw R;Ne(-1,R)}}function Ne(R,$,nt,_t){var de,rt,pe,xe,Te,ne=$;f||(f=!0,u&&j.clearTimeout(u),n=void 0,o=_t||"",_.readyState=R>0?4:0,de=R>=200&&R<300||R===304,nt&&(xe=Nr(h,_,nt)),!de&&i.inArray("script",h.dataTypes)>-1&&i.inArray("json",h.dataTypes)<0&&(h.converters["text script"]=function(){}),xe=jr(h,xe,_,de),de?(h.ifModified&&(Te=_.getResponseHeader("Last-Modified"),Te&&(i.lastModified[r]=Te),Te=_.getResponseHeader("etag"),Te&&(i.etag[r]=Te)),R===204||h.type==="HEAD"?ne="nocontent":R===304?ne="notmodified":(ne=xe.state,rt=xe.data,pe=xe.error,de=!pe)):(pe=ne,(R||!ne)&&(ne="error",R<0&&(R=0))),_.status=R,_.statusText=($||ne)+"",de?M.resolveWith(b,[rt,ne,_]):M.rejectWith(b,[_,ne,pe]),_.statusCode(G),G=void 0,d&&A.trigger(de?"ajaxSuccess":"ajaxError",[_,h,de?rt:pe]),H.fireWith(b,[_,ne]),d&&(A.trigger("ajaxComplete",[_,h]),--i.active||i.event.trigger("ajaxStop")))}return _},getJSON:function(e,t,n){return i.get(e,t,n,"json")},getScript:function(e,t){return i.get(e,void 0,t,"script")}}),i.each(["get","post"],function(e,t){i[t]=function(n,r,o,a){return L(r)&&(a=a||o,o=r,r=void 0),i.ajax(i.extend({url:n,type:t,dataType:a,data:r,success:o},i.isPlainObject(n)&&n))}}),i.ajaxPrefilter(function(e){var t;for(t in e.headers)t.toLowerCase()==="content-type"&&(e.contentType=e.headers[t]||"")}),i._evalUrl=function(e,t,n){return i.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(r){i.globalEval(r,t,n)}})},i.fn.extend({wrapAll:function(e){var t;return this[0]&&(L(e)&&(e=e.call(this[0])),t=i(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var n=this;n.firstElementChild;)n=n.firstElementChild;return n}).append(this)),this},wrapInner:function(e){return L(e)?this.each(function(t){i(this).wrapInner(e.call(this,t))}):this.each(function(){var t=i(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=L(e);return this.each(function(n){i(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){i(this).replaceWith(this.childNodes)}),this}}),i.expr.pseudos.hidden=function(e){return!i.expr.pseudos.visible(e)},i.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},i.ajaxSettings.xhr=function(){try{return new j.XMLHttpRequest}catch{}};var Lr={0:200,1223:204},tt=i.ajaxSettings.xhr();E.cors=!!tt&&"withCredentials"in tt,E.ajax=tt=!!tt,i.ajaxTransport(function(e){var t,n;if(E.cors||tt&&!e.crossDomain)return{send:function(r,o){var a,u=e.xhr();if(u.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)u[a]=e.xhrFields[a];e.mimeType&&u.overrideMimeType&&u.overrideMimeType(e.mimeType),!e.crossDomain&&!r["X-Requested-With"]&&(r["X-Requested-With"]="XMLHttpRequest");for(a in r)u.setRequestHeader(a,r[a]);t=function(c){return function(){t&&(t=n=u.onload=u.onerror=u.onabort=u.ontimeout=u.onreadystatechange=null,c==="abort"?u.abort():c==="error"?typeof u.status!="number"?o(0,"error"):o(u.status,u.statusText):o(Lr[u.status]||u.status,u.statusText,(u.responseType||"text")!=="text"||typeof u.responseText!="string"?{binary:u.response}:{text:u.responseText},u.getAllResponseHeaders()))}},u.onload=t(),n=u.onerror=u.ontimeout=t("error"),u.onabort!==void 0?u.onabort=n:u.onreadystatechange=function(){u.readyState===4&&j.setTimeout(function(){t&&n()})},t=t("abort");try{u.send(e.hasContent&&e.data||null)}catch(c){if(t)throw c}},abort:function(){t&&t()}}}),i.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),i.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return i.globalEval(e),e}}}),i.ajaxPrefilter("script",function(e){e.cache===void 0&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),i.ajaxTransport("script",function(e){if(e.crossDomain||e.scriptAttrs){var t,n;return{send:function(r,o){t=i(" + + + +
    + + + diff --git a/apps/jingrow/frontend/dist/logo.svg b/apps/jingrow/frontend/dist/logo.svg new file mode 100644 index 0000000..8ca7b42 --- /dev/null +++ b/apps/jingrow/frontend/dist/logo.svg @@ -0,0 +1,162 @@ + + + + + + + + + + +