@robot-admin/naive-ui-components 0.19.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +5 -5
  3. package/README_EN.md +5 -5
  4. package/SECURITY.md +39 -0
  5. package/dist/C_AntV.css +31 -31
  6. package/dist/C_AntV2.cjs +1 -1
  7. package/dist/C_AntV2.js +1 -1
  8. package/dist/C_Breadcrumb.css +308 -20
  9. package/dist/C_Breadcrumb.d.cts +2 -2
  10. package/dist/C_Breadcrumb.d.ts +2 -2
  11. package/dist/C_Breadcrumb2.cjs +1 -1
  12. package/dist/C_Breadcrumb2.js +1 -1
  13. package/dist/C_Chat.css +90 -90
  14. package/dist/C_Chat2.cjs +1 -1
  15. package/dist/C_Chat2.js +1 -1
  16. package/dist/C_CollapsePanel2.cjs +1 -1
  17. package/dist/C_CollapsePanel2.js +1 -1
  18. package/dist/C_Draggable.css +53 -53
  19. package/dist/C_Draggable2.cjs +1 -1
  20. package/dist/C_Draggable2.js +1 -1
  21. package/dist/C_FilePreview.css +98 -98
  22. package/dist/C_FilePreview.d.cts +2 -2
  23. package/dist/C_FilePreview.d.ts +2 -2
  24. package/dist/C_FilePreview2.cjs +1 -1
  25. package/dist/C_FilePreview2.js +1 -1
  26. package/dist/C_Form.base.css +9 -9
  27. package/dist/C_Form.css +9 -9
  28. package/dist/C_FormSearch.css +52 -52
  29. package/dist/C_FormSearch2.cjs +1 -1
  30. package/dist/C_FormSearch2.js +1 -1
  31. package/dist/C_Language.css +2 -2
  32. package/dist/C_Language2.cjs +1 -1
  33. package/dist/C_Language2.js +1 -1
  34. package/dist/C_Login.css +79 -79
  35. package/dist/C_Login2.cjs +1 -1
  36. package/dist/C_Login2.js +1 -1
  37. package/dist/C_Menu.css +1 -1
  38. package/dist/C_Menu.d.cts +2 -2
  39. package/dist/C_Menu.d.ts +2 -2
  40. package/dist/C_Menu2.cjs +1 -1
  41. package/dist/C_Menu2.js +1 -1
  42. package/dist/C_NotificationCenter.css +124 -124
  43. package/dist/C_NotificationCenter.d.cts +2 -2
  44. package/dist/C_NotificationCenter.d.ts +2 -2
  45. package/dist/C_NotificationCenter2.cjs +1 -1
  46. package/dist/C_NotificationCenter2.js +1 -1
  47. package/dist/C_Skeleton.css +2 -2
  48. package/dist/C_Skeleton2.cjs +1 -1
  49. package/dist/C_Skeleton2.js +1 -1
  50. package/dist/C_SplitPane.css +66 -66
  51. package/dist/C_SplitPane2.cjs +1 -1
  52. package/dist/C_SplitPane2.js +1 -1
  53. package/dist/C_Table.base.css +9 -9
  54. package/dist/C_Table.css +9 -9
  55. package/dist/C_Table.d.ts +1 -0
  56. package/dist/C_Theme2.cjs +1 -1
  57. package/dist/C_Theme2.js +1 -1
  58. package/dist/C_Timeline.css +46 -46
  59. package/dist/C_Timeline2.cjs +1 -1
  60. package/dist/C_Timeline2.js +1 -1
  61. package/dist/C_Transfer.css +26 -26
  62. package/dist/C_Transfer2.cjs +1 -1
  63. package/dist/C_Transfer2.js +1 -1
  64. package/dist/C_Tree.css +23 -23
  65. package/dist/C_Tree.d.ts +1 -0
  66. package/dist/C_Tree2.cjs +1 -1
  67. package/dist/C_Tree2.js +1 -1
  68. package/dist/C_Upload2.cjs +1 -1
  69. package/dist/C_Upload2.js +1 -1
  70. package/dist/C_VideoPlayer.d.cts +2 -2
  71. package/dist/C_VideoPlayer.d.ts +2 -2
  72. package/dist/C_VideoPlayer2.cjs +2 -2
  73. package/dist/C_VideoPlayer2.js +2 -2
  74. package/dist/C_WaterFall.css +31 -29
  75. package/dist/C_WaterFall2.cjs +1 -1
  76. package/dist/C_WaterFall2.js +1 -1
  77. package/dist/C_WorkFlow.css +111 -111
  78. package/dist/C_WorkFlow2.cjs +1 -1
  79. package/dist/C_WorkFlow2.js +1 -1
  80. package/dist/config.cjs +1 -0
  81. package/dist/config.d.cts +8 -0
  82. package/dist/config.d.ts +8 -0
  83. package/dist/config.js +1 -0
  84. package/dist/constants3.d.cts +34 -11
  85. package/dist/constants3.d.ts +34 -11
  86. package/dist/constants4.d.cts +14 -3
  87. package/dist/constants4.d.ts +14 -3
  88. package/dist/constants5.d.cts +24 -20
  89. package/dist/constants5.d.ts +24 -20
  90. package/dist/data.d.cts +6 -6
  91. package/dist/data.d.ts +6 -6
  92. package/dist/dateRange.d.cts +2 -0
  93. package/dist/dateRange.d.ts +2 -0
  94. package/dist/feedback.cjs +1 -1
  95. package/dist/feedback.js +1 -1
  96. package/dist/helpers.cjs +1 -1
  97. package/dist/helpers.js +1 -1
  98. package/dist/index.cjs +1 -1
  99. package/dist/index.d.cts +8 -7
  100. package/dist/index.d.ts +9 -7
  101. package/dist/index.js +1 -1
  102. package/dist/index.vue.d.cts +4 -4
  103. package/dist/index.vue.d.ts +4 -4
  104. package/dist/index10.vue.d.cts +5 -5
  105. package/dist/index10.vue.d.ts +3 -3
  106. package/dist/index11.vue.d.cts +3 -3
  107. package/dist/index12.vue.d.ts +2 -2
  108. package/dist/index13.vue.d.cts +2 -2
  109. package/dist/index13.vue.d.ts +6 -6
  110. package/dist/index14.vue.d.cts +6 -6
  111. package/dist/index14.vue.d.ts +0 -1
  112. package/dist/index15.vue.d.cts +0 -1
  113. package/dist/index16.vue.d.ts +2 -2
  114. package/dist/index17.vue.d.cts +2 -2
  115. package/dist/index17.vue.d.ts +1 -1
  116. package/dist/index18.vue.d.cts +1 -1
  117. package/dist/index18.vue.d.ts +44 -40
  118. package/dist/index19.vue.d.cts +2 -2
  119. package/dist/index19.vue.d.ts +2 -2
  120. package/dist/index2.vue.d.cts +1 -1
  121. package/dist/index2.vue.d.ts +1 -1
  122. package/dist/index20.vue.d.cts +1 -1
  123. package/dist/index20.vue.d.ts +1 -1
  124. package/dist/index21.vue.d.cts +1 -1
  125. package/dist/index21.vue.d.ts +1 -1
  126. package/dist/index22.vue.d.cts +2 -2
  127. package/dist/index22.vue.d.ts +2 -2
  128. package/dist/index25.vue.d.cts +2 -3
  129. package/dist/index25.vue.d.ts +2 -3
  130. package/dist/index26.vue.d.cts +3 -3
  131. package/dist/index26.vue.d.ts +3 -3
  132. package/dist/index3.vue.d.cts +4 -4
  133. package/dist/index3.vue.d.ts +4 -4
  134. package/dist/index4.vue.d.cts +44 -40
  135. package/dist/index4.vue.d.ts +26 -12
  136. package/dist/index5.vue.d.cts +26 -12
  137. package/dist/index6.vue.d.ts +0 -2
  138. package/dist/index7.vue.d.cts +0 -2
  139. package/dist/index8.vue.d.ts +4 -4
  140. package/dist/index9.vue.d.cts +4 -4
  141. package/dist/index9.vue.d.ts +5 -5
  142. package/dist/mapUtils.d.cts +3 -3
  143. package/dist/mapUtils.d.ts +3 -3
  144. package/dist/presets.d.cts +1 -1
  145. package/dist/presets.d.ts +1 -1
  146. package/dist/public.d.ts +3 -1
  147. package/dist/style.css +1154 -864
  148. package/dist/types.d.cts +3 -1
  149. package/dist/useCalendarEvents.d.cts +1 -1
  150. package/dist/useCalendarEvents.d.ts +1 -1
  151. package/dist/useCollapsePanel.d.cts +3 -3
  152. package/dist/useCollapsePanel.d.ts +3 -3
  153. package/dist/useComponentLocale.cjs +1 -1
  154. package/dist/useComponentLocale.js +1 -1
  155. package/dist/useCropperCore.d.cts +4 -4
  156. package/dist/useCropperCore.d.ts +4 -4
  157. package/dist/useDraggableLayout.d.cts +1 -0
  158. package/dist/useDraggableLayout.d.ts +1 -0
  159. package/dist/useEdgeInteraction.d.cts +2 -2
  160. package/dist/useEdgeInteraction.d.ts +2 -2
  161. package/dist/useFullscreen.d.cts +41 -23
  162. package/dist/useFullscreen.d.ts +41 -23
  163. package/dist/useInfiniteScroll.d.cts +6 -4
  164. package/dist/useInfiniteScroll.d.ts +6 -4
  165. package/dist/useQRCode.d.cts +4 -4
  166. package/dist/useQRCode.d.ts +4 -4
  167. package/dist/useSignatureHistory.d.cts +2 -2
  168. package/dist/useSignatureHistory.d.ts +2 -2
  169. package/dist/useSplitResize.d.cts +6 -7
  170. package/dist/useSplitResize.d.ts +6 -7
  171. package/dist/useTableQuery.cjs +1 -1
  172. package/dist/useTableQuery.d.cts +6 -10
  173. package/dist/useTableQuery.d.ts +6 -10
  174. package/dist/useTableQuery.js +1 -1
  175. package/dist/useWorkflowValidation.d.cts +11 -3
  176. package/dist/useWorkflowValidation.d.ts +11 -3
  177. package/dist/verification.d.cts +1 -1
  178. package/dist/verification.d.ts +1 -1
  179. package/docs/architecture.en.md +3 -1
  180. package/docs/architecture.md +3 -1
  181. package/docs/guides/usage.en.md +22 -0
  182. package/docs/guides/usage.md +73 -0
  183. package/package.json +27 -10
  184. package/dist/context.cjs +0 -1
  185. package/dist/context.js +0 -1
package/dist/C_AntV2.js CHANGED
@@ -1,4 +1,4 @@
1
- import{t as e}from"./feedback.js";import{t}from"./C_Icon2.js";import{t as n}from"./export-helper.js";import{t as r}from"./data.js";import{Fragment as i,computed as a,createBlock as o,createCommentVNode as s,createElementBlock as c,createElementVNode as l,createTextVNode as u,createVNode as d,defineComponent as f,mergeModels as p,mergeProps as m,nextTick as h,normalizeClass as g,normalizeStyle as _,onMounted as ee,onUnmounted as v,openBlock as y,ref as b,renderList as x,resolveDynamicComponent as S,shallowRef as C,toDisplayString as w,unref as T,useModel as E,watch as D,withCtx as O}from"vue";import{NAlert as k,NButton as A,NCard as j,NCheckbox as M,NDivider as N,NDrawer as P,NDrawerContent as F,NDropdown as te,NForm as I,NFormItem as L,NGi as R,NGrid as z,NInput as B,NRadio as V,NRadioGroup as H,NSelect as U,NSpace as W}from"naive-ui";import{Graph as G,ObjectExt as K}from"@antv/x6";import ne from"html2canvas";function re(e){return{background:e?`#18181c`:`#f5f5f5`,gridPrimary:e?`rgba(255, 255, 255, 0.08)`:`#eee`,gridSecondary:e?`rgba(255, 255, 255, 0.04)`:`#ddd`}}function ie(e=!1){let t=re(e);return{background:{color:t.background},grid:{visible:!0,type:`doubleMesh`,args:[{color:t.gridPrimary,thickness:1},{color:t.gridSecondary,thickness:1,factor:4}]},mousewheel:{enabled:!0,zoomAtMousePosition:!0,modifiers:`ctrl`,minScale:.5,maxScale:2},selecting:{enabled:!0,rubberband:!0,movable:!0,showNodeSelectionBox:!0},resizing:!0,rotating:!0,snapline:!0,keyboard:!0,clipboard:!0}}function q(e){return e?{width:e.clientWidth||e.offsetWidth||800,height:e.clientHeight||e.offsetHeight||600}:{width:0,height:0}}function J(e,t){let n=0,r,i,a=!1,o=C(null),s=b(!1),c=i=>{if(!a){s.value=!0;try{if(!e.value)return;o.value&&=(o.value.dispose(),null);let{width:s,height:c}=q(e.value);if(s===0||c===0){n++,n<10&&(clearTimeout(r),r=setTimeout(()=>{a||l(i)},100));return}n=0;let u=ie(t?.value??!1);o.value=new G({container:e.value,width:s,height:c,...u,...i})}catch{}finally{s.value=!1}}},l=async(e={})=>{clearTimeout(r),r=void 0,await h(),c(e)};function u(e){if(!o.value)return;let t=re(e);o.value.drawBackground({color:t.background}),o.value.drawGrid({type:`doubleMesh`,args:[{color:t.gridPrimary,thickness:1},{color:t.gridSecondary,thickness:1,factor:4}]})}t&&D(t,e=>{u(e)});function d(){if(clearTimeout(r),clearTimeout(i),r=void 0,i=void 0,o.value){let e=o.value;o.value=null,e.dispose()}}function f(){o.value?.centerContent()}function p(){o.value?.zoomToFit({padding:20,maxScale:1})}function m(e=200,t=20){clearTimeout(i);let n=o.value;n&&(i=setTimeout(()=>{!a&&o.value===n&&n.zoomToFit({padding:t,maxScale:1})},e))}function g(e){o.value?.zoom(e)}function _(){if(o.value&&e.value){let{width:t,height:n}=q(e.value);o.value.resize(t,n)}}return v(()=>{a=!0,d()}),{graph:o,loading:s,initGraph:l,destroyGraph:d,centerContent:f,zoomToFit:p,scheduleZoomToFit:m,zoom:g,resizeGraph:_,updateTheme:u}}function Y(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.style.display=`none`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}function X(e,t=`diagram.json`){let n=JSON.stringify(e,null,2);Y(new Blob([n],{type:`application/json`}),t)}async function Z(e,t=`diagram.png`,n={}){let{backgroundColor:r=`#ffffff`,scale:i=2}=n,{container:a}=e;Y(await Q(await ne(a,{backgroundColor:r,scale:i,useCORS:!0,logging:!1}),`image/png`),t)}function ae(e,t=`diagram.svg`){let n=e.container.querySelector(`svg`);if(!n)throw Error(`SVG导出失败: 未找到图表 SVG 元素`);let r=n.cloneNode(!0);r.getAttribute(`xmlns`)||r.setAttribute(`xmlns`,`http://www.w3.org/2000/svg`),r.getAttribute(`xmlns:xlink`)||r.setAttribute(`xmlns:xlink`,`http://www.w3.org/1999/xlink`);let i=new XMLSerializer().serializeToString(r);Y(new Blob([i],{type:`image/svg+xml;charset=utf-8`}),t)}function Q(e,t,n=1){return new Promise((r,i)=>{e.toBlob(e=>{e?r(e):i(Error(`Canvas 转 Blob 失败`))},t,n)})}const oe=[{label:`导出PNG`,key:`png`},{label:`导出SVG`,key:`svg`},{label:`导出JSON`,key:`json`}];function $(t,n=`diagram`){let r=e();return{exportOptions:oe,handleExport:async(e,i)=>{if(t.value)try{switch(e){case`png`:await Z(t.value,`${n}.png`);break;case`svg`:ae(t.value,`${n}.svg`);break;case`json`:i&&X(i(),`${n}.json`);break}}catch(t){r.error(`导出${e.toUpperCase()}失败,请重试`,t)}}}}function se(e,t){e.on(`cell:change:*`,({cell:e,key:n,previous:r,options:i})=>{t()&&i.ui&&e.prop(n,r,{ui:!1})})}const ce=[{label:`BIGINT`,value:`BIGINT`},{label:`INT`,value:`INT`},{label:`SMALLINT`,value:`SMALLINT`},{label:`TINYINT`,value:`TINYINT`},{label:`VARCHAR(50)`,value:`VARCHAR(50)`},{label:`VARCHAR(100)`,value:`VARCHAR(100)`},{label:`VARCHAR(255)`,value:`VARCHAR(255)`},{label:`CHAR(10)`,value:`CHAR(10)`},{label:`TEXT`,value:`TEXT`},{label:`LONGTEXT`,value:`LONGTEXT`},{label:`DATETIME`,value:`DATETIME`},{label:`TIMESTAMP`,value:`TIMESTAMP`},{label:`DATE`,value:`DATE`},{label:`TIME`,value:`TIME`},{label:`DECIMAL(10,2)`,value:`DECIMAL(10,2)`},{label:`FLOAT`,value:`FLOAT`},{label:`DOUBLE`,value:`DOUBLE`},{label:`BOOLEAN`,value:`BOOLEAN`},{label:`JSON`,value:`JSON`}],le={key:0,class:`table-editor`},ue={class:`fields-container`},de={class:`field-header`};var fe=n(f({__name:`ERTableEditor`,props:p({show:{type:Boolean}},{editingTable:{},editingTableModifiers:{}}),emits:p([`update:show`,`save`,`add-field`,`remove-field`,`handle-primary-key`],[`update:editingTable`]),setup(e,{emit:n}){let r=E(e,`editingTable`),a=n,f=(e,t)=>a(`handle-primary-key`,e,t),p=()=>a(`add-field`),m=e=>a(`remove-field`,e);return(n,a)=>(y(),o(T(P),{show:e.show,width:`600`,placement:`right`,"onUpdate:show":a[4]||=e=>n.$emit(`update:show`,e)},{default:O(()=>[d(T(F),{title:`编辑表: ${r.value?.name||`新表`}`,closable:``},{footer:O(()=>[d(T(W),{justify:`end`},{default:O(()=>[d(T(A),{onClick:a[2]||=e=>n.$emit(`update:show`,!1)},{default:O(()=>[...a[11]||=[u(`取消`,-1)]]),_:1}),d(T(A),{onClick:a[3]||=e=>n.$emit(`save`),type:`primary`},{default:O(()=>[...a[12]||=[u(`保存`,-1)]]),_:1})]),_:1})]),default:O(()=>[r.value?(y(),c(`div`,le,[d(T(I),{model:r.value,"label-placement":`top`},{default:O(()=>[d(T(L),{label:`表名`},{default:O(()=>[d(T(B),{value:r.value.name,"onUpdate:value":a[0]||=e=>r.value.name=e,placeholder:`请输入表名`},null,8,[`value`])]),_:1}),d(T(L),{label:`表注释`},{default:O(()=>[d(T(B),{value:r.value.comment,"onUpdate:value":a[1]||=e=>r.value.comment=e,placeholder:`表注释`},null,8,[`value`])]),_:1}),d(T(N),null,{default:O(()=>[...a[5]||=[u(`字段列表`,-1)]]),_:1}),l(`div`,ue,[(y(!0),c(i,null,x(r.value.fields,(e,t)=>(y(),o(T(j),{key:t,size:`small`,class:`field-card`},{header:O(()=>[l(`div`,de,[l(`span`,null,`#`+w(t+1)+` `+w(e.name||`新字段`),1),d(T(A),{onClick:e=>m(t),size:`tiny`,type:`error`,quaternary:``,disabled:r.value.fields.length<=1},{default:O(()=>[...a[6]||=[u(` 删除 `,-1)]]),_:1},8,[`onClick`,`disabled`])])]),default:O(()=>[d(T(z),{cols:2,"x-gap":12},{default:O(()=>[d(T(R),null,{default:O(()=>[d(T(L),{label:`字段名`,size:`small`},{default:O(()=>[d(T(B),{value:e.name,"onUpdate:value":t=>e.name=t,placeholder:`字段名`,size:`small`},null,8,[`value`,`onUpdate:value`])]),_:2},1024)]),_:2},1024),d(T(R),null,{default:O(()=>[d(T(L),{label:`类型`,size:`small`},{default:O(()=>[d(T(U),{value:e.type,"onUpdate:value":t=>e.type=t,options:T(ce),size:`small`,filterable:``,placeholder:`选择类型`},null,8,[`value`,`onUpdate:value`,`options`])]),_:2},1024)]),_:2},1024)]),_:2},1024),d(T(W),{style:{"margin-top":`12px`}},{default:O(()=>[d(T(M),{checked:e.isPrimaryKey,"onUpdate:checked":[t=>e.isPrimaryKey=t,t=>f(e,t)]},{default:O(()=>[...a[7]||=[u(` 主键 `,-1)]]),_:1},8,[`checked`,`onUpdate:checked`]),d(T(M),{checked:e.isRequired,"onUpdate:checked":t=>e.isRequired=t},{default:O(()=>[...a[8]||=[u(`必填`,-1)]]),_:1},8,[`checked`,`onUpdate:checked`]),d(T(M),{checked:e.isForeignKey,"onUpdate:checked":t=>e.isForeignKey=t},{default:O(()=>[...a[9]||=[u(`外键`,-1)]]),_:1},8,[`checked`,`onUpdate:checked`])]),_:2},1024),d(T(L),{label:`注释`,size:`small`,style:{"margin-top":`12px`}},{default:O(()=>[d(T(B),{value:e.comment,"onUpdate:value":t=>e.comment=t,placeholder:`字段注释`,size:`small`},null,8,[`value`,`onUpdate:value`])]),_:2},1024)]),_:2},1024))),128)),d(T(A),{onClick:p,dashed:``,block:``,type:`primary`,ghost:``,style:{"margin-top":`16px`}},{icon:O(()=>[d(t,{name:`mdi:plus`,size:16})]),default:O(()=>[a[10]||=u(` 添加字段 `,-1)]),_:1})])]),_:1},8,[`model`])])):s(`v-if`,!0)]),_:1},8,[`title`])]),_:1},8,[`show`]))}}),[[`__scopeId`,`data-v-4e8f219f`]]);const pe={class:`er-layout`},me={key:0,class:`toolbar`},he={key:0,style:{"margin-top":`8px`}};var ge=n(f({__name:`index`,props:{data:{},showToolbar:{type:Boolean,default:!0},readonly:{type:Boolean,default:!1},theme:{}},emits:[`ready`,`data-change`],setup(e,{expose:n,emit:i}){let o=e,f=i,p=b(),{graph:m,initGraph:g,centerContent:_,zoomToFit:v,scheduleZoomToFit:x}=J(p,a(()=>o.theme===`dark`)),{exportOptions:S,handleExport:C}=$(m,`er-diagram`),E=b(!1),j=b(),M=b(!1),N=(e,t)=>e.length>t?e.substring(0,t-1)+`..`:e,P=e=>e.fields?.map(t=>{let n=t.isPrimaryKey?`🔑 ${t.name}`:t.isRequired?`* ${t.name}`:t.name;return{id:`${e.id}_${t.name}`,data:{tableId:e.id,fieldName:t.name},group:`list`,attrs:{portNameLabel:{text:N(n,12),title:n},portTypeLabel:{text:N(t.type,10),title:t.type},portBody:{fill:t.isPrimaryKey?`#FFF7E6`:`#EFF4FF`}}}})||[],F=e=>({id:e.id,shape:`er-rect`,x:e.position.x,y:e.position.y,width:200,height:24+(e.fields?.length||0)*24,data:r(e),attrs:{label:{text:N(e.name,20),refX:.5,refY:10,textAnchor:`middle`,title:e.name}},ports:P(e)}),I=()=>{m.value&&(G.registerPortLayout(`erPortPosition`,e=>e.map((e,t)=>({position:{x:0,y:(t+1)*24},angle:0})),!0),G.registerNode(`er-rect`,{inherit:`rect`,markup:[{tagName:`rect`,selector:`body`},{tagName:`text`,selector:`label`}],attrs:{rect:{strokeWidth:1,stroke:`#5F95FF`,fill:`#5F95FF`},label:{fontWeight:`bold`,fill:`#ffffff`,fontSize:12}},ports:{groups:{list:{markup:[{tagName:`rect`,selector:`portBody`},{tagName:`text`,selector:`portNameLabel`},{tagName:`text`,selector:`portTypeLabel`}],attrs:{portBody:{width:200,height:24,strokeWidth:1,stroke:`#5F95FF`,fill:`#EFF4FF`,magnet:!0},portNameLabel:{ref:`portBody`,refX:6,refY:6,fontSize:9,textAnchor:`start`,textOverflow:`ellipsis`},portTypeLabel:{ref:`portBody`,refX:120,refY:6,fontSize:9,textAnchor:`start`,fill:`#666`}},position:`erPortPosition`}}}},!0))},L=()=>{o.readonly||(M.value=!M.value,M.value||R())},R=()=>{m.value?.getEdges().forEach(e=>{e.attr(`line/stroke`,`#A2B1C3`),e.attr(`line/strokeWidth`,2)})},z=e=>{if(!m.value)return;let t=m.value.createNode(F(e));return m.value.resetCells([t,...m.value.getCells()]),t},B=()=>{let e=m.value?.getNodes()||[];for(let t=0;t<10;t++)for(let n=0;n<3;n++){let r={x:n*250+50,y:t*250+50};if(!e.some(e=>{let t=e.getPosition();return Math.abs(t.x-r.x)<250*.8&&Math.abs(t.y-r.y)<250*.8}))return r}return{x:50,y:50}},V=()=>{if(o.readonly)return;let e={id:`table_${Date.now()}`,name:`新表`,comment:``,fields:[{name:`id`,type:`BIGINT`,isPrimaryKey:!0,isRequired:!0,isForeignKey:!1,comment:`主键`},{name:`name`,type:`VARCHAR(100)`,isPrimaryKey:!1,isRequired:!0,isForeignKey:!1,comment:`名称`}],position:B()};z(e),H(e),Z()},H=e=>{o.readonly||(j.value=r(e),E.value=!0)},U=()=>{if(o.readonly||!m.value||!j.value)return;let e=m.value.getCellById(j.value.id);e&&(e.setData(r(j.value)),e.prop({size:{width:200,height:24+j.value.fields.length*24},attrs:{label:{text:N(j.value.name,20),title:j.value.name}},ports:P(j.value)})),E.value=!1,Z()},K=(e,t)=>{o.readonly||!t||(e.isRequired=!0,j.value?.fields.forEach(t=>{t!==e&&(t.isPrimaryKey=!1)}))},ne=()=>{o.readonly||j.value?.fields.push({name:`field_${(j.value?.fields.length||0)+1}`,type:`VARCHAR(100)`,isPrimaryKey:!1,isRequired:!1,isForeignKey:!1,comment:``})},re=e=>{o.readonly||j.value&&j.value.fields.length>1&&j.value.fields.splice(e,1)},ie=(e,t)=>{let n=e.getPort(t)?.data;if(n?.tableId===e.id)return n.fieldName;let r=`${e.id}_`;return t.startsWith(r)?t.slice(r.length):void 0},q=e=>e.getData()?.name||e.id,Y=e=>{let t=e.getSourceNode(),n=e.getTargetNode();if(!t||!n)return;let i=ie(t,e.getSourcePortId()??``),a=ie(n,e.getTargetPortId()??``);if(i===void 0||a===void 0)return;let o=e.getData();return{...r(o),id:e.id,type:o?.type??`foreign-key`,sourceTable:t.id,sourceField:i,targetTable:n.id,targetField:a,...!o&&{name:`${q(t)} -> ${q(n)}`}}},X=()=>{if(!m.value)return{tables:[],relations:[]};let e=m.value.getNodes().map(e=>({...r(e.getData()),position:e.getPosition()})),t=[];return m.value.getEdges().forEach(e=>{let n=Y(e);n&&t.push(n)}),{tables:e,relations:t}},Z=()=>{o.readonly||f(`data-change`,X())},ae=e=>{let t=m.value;if(!t)return;Q=null;let n=e.tables.map(e=>t.createNode(F(e)));e.relations?.forEach(e=>{n.push(t.createEdge({id:e.id,source:{cell:e.sourceTable,port:`${e.sourceTable}_${e.sourceField}`},target:{cell:e.targetTable,port:`${e.targetTable}_${e.targetField}`},data:r(e),attrs:{line:{stroke:`#A2B1C3`,strokeWidth:2}}}))}),t.resetCells(n)},Q=null;D(m,e=>{e instanceof G&&(I(),se(e,()=>o.readonly),e.on(`node:dblclick`,({node:e})=>{o.readonly||H(e.getData())}),e.on(`edge:connected`,Z),e.on(`edge:removed`,({edge:e})=>{Q===e&&(Q=null),Z()}),e.on(`edge:click`,({edge:e})=>{o.readonly||(M.value?e.remove():(R(),e.attr(`line/stroke`,`#ff4d4f`),e.attr(`line/strokeWidth`,3),Q=e))}),e.on(`edge:dblclick`,({edge:e})=>{o.readonly||e.remove()}),e.on(`blank:click`,()=>{Q=null,M.value||R()}),f(`ready`,e),h(()=>{m.value===e&&o.data?.tables&&(ae(o.data),x(300,20))}))},{immediate:!0}),D(()=>o.data,e=>{m.value&&e?.tables&&ae(e)},{deep:!0}),D(()=>o.readonly,e=>{e&&(E.value=!1,j.value=void 0,M.value=!1,Q=null,R())},{flush:`sync`});let oe=e=>{e.target?.closest(`input, textarea, [contenteditable]:not([contenteditable="false"])`)||p.value?.focus({preventScroll:!0})},ce=e=>{o.readonly||document.activeElement!==p.value||e.target?.closest(`input, textarea, [contenteditable]:not([contenteditable="false"])`)||(e.key===`Delete`||e.key===`Backspace`)&&Q&&(e.preventDefault(),Q.remove(),Q=null)};return ee(()=>{g({interacting:()=>!o.readonly,connecting:{allowBlank:!1,allowNode:!1,allowEdge:!1,validateMagnet:()=>!o.readonly,validateConnection:()=>!o.readonly,validateEdge:()=>!o.readonly}})}),n({getGraph:()=>m.value??void 0,getData:X}),(n,r)=>(y(),c(`div`,pe,[s(` 工具栏 `),e.showToolbar?(y(),c(`div`,me,[d(T(W),null,{default:O(()=>[d(T(A),{onClick:V,disabled:e.readonly,type:`primary`,size:`small`},{icon:O(()=>[d(t,{name:`mdi:table-plus`,size:16})]),default:O(()=>[r[3]||=u(` 添加表 `,-1)]),_:1},8,[`disabled`]),d(T(A),{onClick:T(_),size:`small`},{icon:O(()=>[d(t,{name:`mdi:image-filter-center-focus`,size:16})]),default:O(()=>[r[4]||=u(` 居中 `,-1)]),_:1},8,[`onClick`]),d(T(A),{onClick:T(v),size:`small`},{icon:O(()=>[d(t,{name:`mdi:fit-to-screen`,size:16})]),default:O(()=>[r[5]||=u(` 适应 `,-1)]),_:1},8,[`onClick`]),d(T(A),{onClick:L,disabled:e.readonly,type:M.value?`error`:`default`,size:`small`},{icon:O(()=>[d(t,{name:`mdi:delete`,size:16})]),default:O(()=>[u(` `+w(M.value?`退出删除`:`删除连线`),1)]),_:1},8,[`disabled`,`type`]),d(T(te),{options:T(S),onSelect:r[0]||=e=>T(C)(e,X)},{default:O(()=>[d(T(A),{size:`small`},{icon:O(()=>[d(t,{name:`mdi:export`,size:16})]),default:O(()=>[r[6]||=u(` 导出 `,-1)]),_:1})]),_:1},8,[`options`])]),_:1}),M.value?(y(),c(`div`,he,[d(T(k),{type:`info`,size:`small`,"show-icon":!1},{default:O(()=>[...r[7]||=[u(` 删除模式:点击连接线即可删除 `,-1)]]),_:1})])):s(`v-if`,!0)])):s(`v-if`,!0),s(` 图表容器 `),l(`div`,{ref_key:`containerRef`,ref:p,class:`graph-container`,tabindex:`0`,role:`region`,"aria-label":`ER 图画布`,onPointerdown:oe,onKeydown:ce},null,544),s(` 表编辑器 `),d(fe,{show:E.value,"editing-table":j.value,"onUpdate:editingTable":r[1]||=e=>j.value=e,"onUpdate:show":r[2]||=e=>E.value=e,onSave:U,onAddField:ne,onRemoveField:re,onHandlePrimaryKey:K},null,8,[`show`,`editing-table`])]))}}),[[`__scopeId`,`data-v-8f501636`]]);const _e={defaultColor:`#A2B1C3`,highlightColor:`#ff4d4f`,strokeWidth:2,highlightStrokeWidth:3,portPositions:[],onDataChange:()=>{},isReadonly:()=>!1};function ve(e,t={}){let n={..._e,...t},r=()=>{e.value?.getEdges().forEach(e=>{e.attr(`line/stroke`,n.defaultColor),e.attr(`line/strokeWidth`,n.strokeWidth)})},i=e=>{r(),e.attr(`line/stroke`,n.highlightColor),e.attr(`line/strokeWidth`,n.highlightStrokeWidth)},a=(e,t)=>{n.portPositions.forEach(n=>e.attr(`port-${n}/style/opacity`,t))};return{resetEdgeStyles:r,highlightEdge:i,togglePorts:a,bindInteractions:()=>{let t=e.value;t&&(t.on(`edge:click`,({edge:e})=>i(e)),t.on(`edge:dblclick`,({edge:e})=>{n.isReadonly()||(e.remove(),n.onDataChange())}),t.on(`blank:click`,r),t.on(`node:click`,r),t.on(`edge:connected`,()=>{n.isReadonly()||n.onDataChange()}),n.portPositions.length>0&&(t.on(`node:mouseenter`,({node:e})=>a(e,1)),t.on(`node:mouseleave`,({node:e})=>a(e,0))))}}}const ye={"start-event":{name:`开始`,title:`开始事件`,iconClass:`circle start-event`},activity:{name:`任务`,title:`任务活动`,iconClass:`rect activity`},gateway:{name:`网关`,title:`排他网关`,iconClass:`diamond gateway`},"end-event":{name:`结束`,title:`结束事件`,iconClass:`circle end-event`}},be={event:`事件`,activity:`活动`,gateway:`网关`,"bpmn-edge":`连接线`},xe=[`top`,`right`,`bottom`,`left`],Se=(e,t=`rect`)=>e.reduce((e,n)=>{let r=t===`circle`,i=n===`top`?r?{refCx:.5,refCy:0}:{refX:.5,refY:0}:n===`right`?r?{refCx:1,refCy:.5}:{refX:1,refY:.5}:n===`bottom`?r?{refCx:.5,refCy:1}:{refX:.5,refY:1}:r?{refCx:0,refCy:.5}:{refX:0,refY:.5};return e[`port-${n}`]={ref:`body`,...i,r:4,fill:`#31d0c6`,stroke:`#ffffff`,strokeWidth:2,magnet:!0,style:{cursor:`crosshair`,opacity:0,transition:`opacity 0.2s`}},e},{}),Ce={event:{inherit:`circle`,attrs:{body:{strokeWidth:2,stroke:`#5F95FF`,fill:`#FFF`,magnet:!1,style:{cursor:`move`}},text:{fontSize:12,fill:`#262626`,textAnchor:`middle`,textVerticalAnchor:`middle`,pointerEvents:`none`}}},activity:{inherit:`rect`,attrs:{body:{rx:6,ry:6,stroke:`#5F95FF`,fill:`#EFF4FF`,strokeWidth:1,magnet:!1,style:{cursor:`move`}},text:{fontSize:12,fill:`#262626`,textAnchor:`middle`,textVerticalAnchor:`middle`,pointerEvents:`none`}}},gateway:{inherit:`polygon`,attrs:{body:{refPoints:`0,10 10,0 20,10 10,20`,strokeWidth:2,stroke:`#5F95FF`,fill:`#EFF4FF`,magnet:!1,style:{cursor:`move`}},text:{fontSize:20,fill:`#5F95FF`,textAnchor:`middle`,textVerticalAnchor:`middle`,pointerEvents:`none`}}}},we={inherit:`edge`,attrs:{line:{stroke:`#A2B1C3`,strokeWidth:2,targetMarker:{name:`block`,width:8,height:6,fill:`#A2B1C3`},cursor:`pointer`}}};function Te(e=!1){let t={background:e?`#18181c`:`#ffffff`,gridPrimary:e?`rgba(255, 255, 255, 0.08)`:`#eee`,gridSecondary:e?`rgba(255, 255, 255, 0.04)`:`#ddd`};return{background:{color:t.background},grid:{visible:!0,type:`doubleMesh`,args:[{color:t.gridPrimary,thickness:1},{color:t.gridSecondary,thickness:1,factor:4}]},mousewheel:{enabled:!0,zoomAtMousePosition:!0,modifiers:`ctrl`,minScale:.5,maxScale:3},connecting:{router:`manhattan`,connector:{name:`rounded`,args:{radius:8}},allowBlank:!1,allowLoop:!1,allowNode:!1,snap:!0,allowEdge:!1},highlighting:{magnetAvailable:{name:`stroke`,args:{attrs:{fill:`#31d0c6`,stroke:`#31d0c6`,opacity:1}}},magnetAdsorbed:{name:`stroke`,args:{attrs:{fill:`#5F95FF`,stroke:`#5F95FF`,opacity:1}}}},selecting:{enabled:!0,rubberband:!0,showNodeSelectionBox:!0},resizing:!0,rotating:!1,snapline:!0,keyboard:!0,clipboard:!0}}Te();const Ee={"start-event":{shape:`event`,width:50,height:50,label:`开始事件`,data:{type:`start`}},"end-event":{shape:`event`,width:50,height:50,label:`结束事件`,data:{type:`end`}},activity:{shape:`activity`,width:120,height:60,label:`新活动`,data:{description:``,assignee:``}},gateway:{shape:`gateway`,width:40,height:40,label:`+`,data:{type:`exclusive`}}},De=[{id:`start-1`,shape:`event`,x:100,y:200,width:50,height:50,label:`流程开始`,data:{type:`start`}},{id:`activity-1`,shape:`activity`,x:200,y:180,width:120,height:60,label:`用户申请`,data:{description:`用户提交申请表单`,assignee:`申请人`}},{id:`activity-2`,shape:`activity`,x:380,y:180,width:120,height:60,label:`初审`,data:{description:`部门进行初步审核`,assignee:`部门主管`}},{id:`gateway-1`,shape:`gateway`,x:550,y:200,width:40,height:40,label:`+`,data:{type:`exclusive`}},{id:`activity-3`,shape:`activity`,x:650,y:120,width:120,height:60,label:`终审`,data:{description:`高级主管最终审核`,assignee:`总监`}},{id:`activity-4`,shape:`activity`,x:650,y:260,width:120,height:60,label:`驳回处理`,data:{description:`处理驳回流程`,assignee:`专员`}},{id:`end-1`,shape:`event`,x:820,y:140,width:50,height:50,label:`审批通过`,data:{type:`end`}},{id:`end-2`,shape:`event`,x:820,y:280,width:50,height:50,label:`审批驳回`,data:{type:`end`}},{id:`edge-1`,shape:`bpmn-edge`,source:`start-1`,target:`activity-1`,x:0,y:0},{id:`edge-2`,shape:`bpmn-edge`,source:`activity-1`,target:`activity-2`,x:0,y:0},{id:`edge-3`,shape:`bpmn-edge`,source:`activity-2`,target:`gateway-1`,x:0,y:0},{id:`edge-4`,shape:`bpmn-edge`,source:`gateway-1`,target:`activity-3`,label:`通过`,x:0,y:0},{id:`edge-5`,shape:`bpmn-edge`,source:`gateway-1`,target:`activity-4`,label:`驳回`,x:0,y:0},{id:`edge-6`,shape:`bpmn-edge`,source:`activity-3`,target:`end-1`,x:0,y:0},{id:`edge-7`,shape:`bpmn-edge`,source:`activity-4`,target:`end-2`,x:0,y:0}],Oe={key:0,class:`property-panel`},ke={class:`property-item`},Ae={class:`property-item`},je={key:0,class:`property-item`},Me={key:1,class:`property-item`},Ne={class:`form-actions`};var Pe=n(f({__name:`BPMNPropertyEditor`,props:p({show:{type:Boolean}},{editingElement:{},editingElementModifiers:{}}),emits:p([`update:show`,`save`,`delete`],[`update:editingElement`]),setup(e,{emit:t}){let n=E(e,`editingElement`),r=t,i=a(()=>be[n.value?.shape]||n.value?.shape||``);return(t,a)=>(y(),o(T(P),{show:e.show,width:`300`,title:`属性设置`,"onUpdate:show":a[6]||=e=>r(`update:show`,e)},{default:O(()=>[n.value?(y(),c(`div`,Oe,[l(`div`,ke,[a[7]||=l(`div`,{class:`property-label`},`名称`,-1),d(T(B),{value:n.value.label,"onUpdate:value":a[0]||=e=>n.value.label=e,placeholder:`请输入名称`,size:`small`},null,8,[`value`])]),l(`div`,Ae,[a[8]||=l(`div`,{class:`property-label`},`类型`,-1),d(T(B),{value:i.value,readonly:``,size:`small`},null,8,[`value`])]),n.value.shape===`activity`?(y(),c(`div`,je,[a[9]||=l(`div`,{class:`property-label`},`描述`,-1),d(T(B),{value:n.value.description,"onUpdate:value":a[1]||=e=>n.value.description=e,type:`textarea`,rows:3,placeholder:`请输入活动描述`,size:`small`},null,8,[`value`])])):s(`v-if`,!0),n.value.shape===`activity`?(y(),c(`div`,Me,[a[10]||=l(`div`,{class:`property-label`},`执行人`,-1),d(T(B),{value:n.value.assignee,"onUpdate:value":a[2]||=e=>n.value.assignee=e,placeholder:`请输入执行人`,size:`small`},null,8,[`value`])])):s(`v-if`,!0),l(`div`,Ne,[d(T(W),null,{default:O(()=>[d(T(A),{onClick:a[3]||=e=>r(`save`),type:`primary`,size:`small`},{default:O(()=>[...a[11]||=[u(` 保存 `,-1)]]),_:1}),d(T(A),{onClick:a[4]||=e=>r(`update:show`,!1),size:`small`},{default:O(()=>[...a[12]||=[u(` 取消 `,-1)]]),_:1}),d(T(A),{onClick:a[5]||=e=>r(`delete`),type:`error`,size:`small`},{default:O(()=>[...a[13]||=[u(` 删除 `,-1)]]),_:1})]),_:1})])])):s(`v-if`,!0)]),_:1},8,[`show`]))}}),[[`__scopeId`,`data-v-fc8f213e`]]);const Fe={class:`bpmn-layout`},Ie={key:0,class:`top-toolbar`},Le={class:`toolbar-section`},Re={class:`toolbar-group`},ze={class:`toolbar-group`},Be={class:`toolbar-group`},Ve={class:`main-content`},He={key:0,class:`left-panel`},Ue={class:`element-grid`},We=[`onClick`,`title`],Ge={class:`graph-wrapper`};var Ke=n(f({__name:`index`,props:{data:{},showToolbar:{type:Boolean,default:!0},readonly:{type:Boolean,default:!1},width:{default:`100%`},height:{default:`600px`},theme:{}},emits:[`ready`,`data-change`],setup(e,{expose:n,emit:o}){let f=e,p=o,m=b(),{graph:h,initGraph:_,centerContent:v,zoomToFit:S,scheduleZoomToFit:C}=J(m,a(()=>f.theme===`dark`)),{exportOptions:E,handleExport:k}=$(h,`bpmn-diagram`),{bindInteractions:j}=ve(h,{portPositions:xe,onDataChange:()=>W(),isReadonly:()=>f.readonly}),M=b(!1),N=b(),P=e=>String(e.attr(`text/text`)||e.attr(`label/text`)||``),F=e=>{if(!e)return[];if(Array.isArray(e))return e;let t=[];return Object.values(e).forEach(e=>{Array.isArray(e)&&t.push(...e)}),t},I=()=>{let e=xe.map(e=>({tagName:`circle`,selector:`port-${e}`})),t=[`event`,`activity`,`gateway`],n={event:`circle`,activity:`rect`,gateway:`polygon`};t.forEach(t=>{G.registerNode(t,{...Ce[t],markup:[{tagName:n[t],selector:`body`},{tagName:`text`,selector:`text`},...e],attrs:{...Ce[t].attrs,...Se(xe,n[t])}},!0)}),G.registerEdge(`bpmn-edge`,we,!0)},L=e=>{if(!h.value)return;let t=e.map(e=>{let{data:t,...n}=e,i=e.shape===`bpmn-edge`?h.value.createEdge(n):h.value.createNode(n);return t&&i.setData(r(t)),i});h.value.resetCells(t),t.length&&C(200,50)},R=e=>{if(f.readonly||!h.value)return;let t=Ee[e];if(!t)return;let n=h.value.options.width/2,i=h.value.options.height/2,{data:a,...o}={id:`${e}-${Date.now()}`,x:n+Math.random()*100-50,y:i+Math.random()*100-50,...t},s=h.value.createNode(o);a&&s.setData(r(a)),h.value.addCell(s),W()},z=()=>{f.readonly||(h.value?.clearCells(),W())},B=e=>{if(f.readonly)return;let t=e.getData()||{};N.value={id:e.id,shape:e.shape,label:P(e),description:t.description||``,assignee:t.assignee||``,x:0,y:0},M.value=!0},V=()=>{if(f.readonly||!h.value||!N.value)return;let e=h.value.getCellById(N.value.id);e&&(e.setData({description:N.value.description,assignee:N.value.assignee}),e.attr(`text/text`,N.value.label||``),e.attr(`label/text`,N.value.label||``)),M.value=!1,W()},H=()=>{f.readonly||!h.value||!N.value||(h.value.getCellById(N.value.id)?.remove(),M.value=!1,W())},U=()=>h.value?[...h.value.getNodes().map(e=>({id:e.id,shape:e.shape,x:e.getPosition().x,y:e.getPosition().y,width:e.getSize().width,height:e.getSize().height,label:P(e),data:r(e.getData()||{})})),...h.value.getEdges().map(e=>({id:e.id,shape:`bpmn-edge`,source:e.getSourceCellId()||``,target:e.getTargetCellId()||``,label:P(e),data:r(e.getData()||{}),x:0,y:0}))]:[],W=()=>{f.readonly||p(`data-change`,U())};return D(h,e=>{e instanceof G&&(se(e,()=>f.readonly),j(),e.on(`node:dblclick`,({node:e})=>B(e)),e.on(`node:moved`,W),p(`ready`,e),L(f.data===void 0?De:F(f.data)))},{immediate:!0}),D(()=>f.data,e=>{h.value&&L(e===void 0?De:F(e))},{deep:!0}),D(()=>f.readonly,e=>{e&&(M.value=!1,N.value=void 0)},{flush:`sync`}),ee(async()=>{I();let e=Te();await _({...e,interacting:()=>!f.readonly,connecting:{...e.connecting,validateMagnet:()=>!f.readonly,validateEdge:()=>!f.readonly,createEdge:()=>h.value.createEdge({shape:`bpmn-edge`}),validateConnection:({sourceView:e,targetView:t,sourceMagnet:n,targetMagnet:r})=>!f.readonly&&e!==t&&!!n&&!!r&&n.getAttribute(`magnet`)===`true`&&r.getAttribute(`magnet`)===`true`}})}),n({getGraph:()=>h.value,getData:U,loadData:L}),(n,r)=>(y(),c(`div`,Fe,[e.showToolbar?(y(),c(`div`,Ie,[l(`div`,Le,[l(`div`,Re,[d(T(A),{onClick:z,disabled:e.readonly,size:`small`},{icon:O(()=>[d(t,{name:`mdi:delete-outline`,size:16})]),default:O(()=>[r[3]||=u(` 清空 `,-1)]),_:1},8,[`disabled`])]),l(`div`,ze,[d(T(A),{onClick:T(v),size:`small`},{icon:O(()=>[d(t,{name:`mdi:image-filter-center-focus`,size:16})]),default:O(()=>[r[4]||=u(` 居中 `,-1)]),_:1},8,[`onClick`]),d(T(A),{onClick:T(S),size:`small`},{icon:O(()=>[d(t,{name:`mdi:fit-to-screen`,size:16})]),default:O(()=>[r[5]||=u(` 适应 `,-1)]),_:1},8,[`onClick`])]),l(`div`,Be,[d(T(te),{options:T(E),onSelect:r[0]||=e=>T(k)(e,U)},{default:O(()=>[d(T(A),{size:`small`},{icon:O(()=>[d(t,{name:`mdi:export`,size:16})]),default:O(()=>[r[6]||=u(` 导出 `,-1)]),_:1})]),_:1},8,[`options`])])])])):s(`v-if`,!0),l(`div`,Ve,[e.showToolbar&&!e.readonly?(y(),c(`div`,He,[r[7]||=l(`div`,{class:`panel-title`},`组件`,-1),l(`div`,Ue,[(y(!0),c(i,null,x(T(ye),(e,t)=>(y(),c(`div`,{key:t,class:`element-item`,onClick:e=>R(t),title:e.title},[l(`div`,{class:g([`element-icon`,e.iconClass])},null,2),l(`span`,null,w(e.name),1)],8,We))),128))])])):s(`v-if`,!0),l(`div`,Ge,[l(`div`,{ref_key:`containerRef`,ref:m,class:`graph-container`},null,512)])]),d(Pe,{show:M.value,"editing-element":N.value,"onUpdate:editingElement":r[1]||=e=>N.value=e,"onUpdate:show":r[2]||=e=>M.value=e,onSave:V,onDelete:H},null,8,[`show`,`editing-element`])]))}}),[[`__scopeId`,`data-v-a7aebb58`]]);const qe={key:0,class:`class-editor`},Je={class:`section`},Ye={class:`section-header`},Xe={style:{"font-size":`13px`}},Ze={class:`section`},Qe={class:`section-header`},$e={style:{"font-size":`13px`}};var et=n(f({__name:`UMLClassEditor`,props:p({show:{type:Boolean}},{editingClass:{},editingClassModifiers:{}}),emits:p([`update:show`,`save`,`delete`],[`update:editingClass`]),setup(e,{emit:n}){let r=E(e,`editingClass`),a=n;return(n,f)=>(y(),o(T(P),{show:e.show,width:`450`,title:`编辑类`,"onUpdate:show":f[6]||=e=>a(`update:show`,e)},{default:O(()=>[r.value?(y(),c(`div`,qe,[d(T(I),{"label-placement":`top`},{default:O(()=>[d(T(L),{label:`类名`},{default:O(()=>[d(T(B),{value:r.value.name,"onUpdate:value":f[0]||=e=>r.value.name=e,placeholder:`请输入类名`},null,8,[`value`])]),_:1}),d(T(N),{style:{margin:`20px 0`}},{default:O(()=>[...f[7]||=[u(`属性`,-1)]]),_:1}),l(`div`,Je,[(y(!0),c(i,null,x(r.value.attributes,(e,t)=>(y(),c(`div`,{key:t,class:`item`},[d(T(j),{size:`small`,style:{"margin-bottom":`12px`}},{header:O(()=>[l(`div`,Ye,[l(`span`,Xe,`#`+w(t+1)+` `+w(e.name||`新属性`),1),d(T(A),{onClick:e=>r.value.attributes.splice(t,1),size:`tiny`,type:`error`,quaternary:``,style:{"margin-left":`auto`}},{default:O(()=>[...f[8]||=[u(` 删除 `,-1)]]),_:1},8,[`onClick`])])]),default:O(()=>[d(T(W),{vertical:``,size:`small`},{default:O(()=>[d(T(W),null,{default:O(()=>[d(T(L),{label:`属性名`,style:{margin:`0`,flex:`1`}},{default:O(()=>[d(T(B),{value:e.name,"onUpdate:value":t=>e.name=t,placeholder:`属性名`,size:`small`},null,8,[`value`,`onUpdate:value`])]),_:2},1024),d(T(L),{label:`类型`,style:{margin:`0`,flex:`1`}},{default:O(()=>[d(T(B),{value:e.type,"onUpdate:value":t=>e.type=t,placeholder:`类型`,size:`small`},null,8,[`value`,`onUpdate:value`])]),_:2},1024)]),_:2},1024),d(T(L),{label:`可见性`,style:{margin:`0`}},{default:O(()=>[d(T(H),{value:e.visibility,"onUpdate:value":t=>e.visibility=t,size:`small`},{default:O(()=>[d(T(V),{value:`public`},{default:O(()=>[...f[9]||=[u(`+ public`,-1)]]),_:1}),d(T(V),{value:`private`},{default:O(()=>[...f[10]||=[u(`- private`,-1)]]),_:1}),d(T(V),{value:`protected`},{default:O(()=>[...f[11]||=[u(`# protected`,-1)]]),_:1})]),_:1},8,[`value`,`onUpdate:value`])]),_:2},1024)]),_:2},1024)]),_:2},1024)]))),128)),d(T(A),{onClick:f[1]||=e=>r.value.attributes.push({name:`newAttribute`,type:`string`,visibility:`private`}),dashed:``,block:``,type:`primary`,ghost:``,size:`small`},{icon:O(()=>[d(t,{name:`mdi:plus`,size:16})]),default:O(()=>[f[12]||=u(` 添加属性 `,-1)]),_:1})]),d(T(N),{style:{margin:`20px 0`}},{default:O(()=>[...f[13]||=[u(`方法`,-1)]]),_:1}),l(`div`,Ze,[(y(!0),c(i,null,x(r.value.methods,(e,t)=>(y(),c(`div`,{key:t,class:`item`},[d(T(j),{size:`small`,style:{"margin-bottom":`12px`}},{header:O(()=>[l(`div`,Qe,[l(`span`,$e,`#`+w(t+1)+` `+w(e.name||`新方法`),1),d(T(A),{onClick:e=>r.value.methods.splice(t,1),size:`tiny`,type:`error`,quaternary:``,style:{"margin-left":`auto`}},{default:O(()=>[...f[14]||=[u(` 删除 `,-1)]]),_:1},8,[`onClick`])])]),default:O(()=>[d(T(W),{vertical:``,size:`small`},{default:O(()=>[d(T(W),null,{default:O(()=>[d(T(L),{label:`方法名`,style:{margin:`0`,flex:`1`}},{default:O(()=>[d(T(B),{value:e.name,"onUpdate:value":t=>e.name=t,placeholder:`方法名`,size:`small`},null,8,[`value`,`onUpdate:value`])]),_:2},1024),d(T(L),{label:`返回类型`,style:{margin:`0`,flex:`1`}},{default:O(()=>[d(T(B),{value:e.returnType,"onUpdate:value":t=>e.returnType=t,placeholder:`返回类型`,size:`small`},null,8,[`value`,`onUpdate:value`])]),_:2},1024)]),_:2},1024),d(T(L),{label:`可见性`,style:{margin:`0`}},{default:O(()=>[d(T(H),{value:e.visibility,"onUpdate:value":t=>e.visibility=t,size:`small`},{default:O(()=>[d(T(V),{value:`public`},{default:O(()=>[...f[15]||=[u(`+ public`,-1)]]),_:1}),d(T(V),{value:`private`},{default:O(()=>[...f[16]||=[u(`- private`,-1)]]),_:1}),d(T(V),{value:`protected`},{default:O(()=>[...f[17]||=[u(`# protected`,-1)]]),_:1})]),_:1},8,[`value`,`onUpdate:value`])]),_:2},1024)]),_:2},1024)]),_:2},1024)]))),128)),d(T(A),{onClick:f[2]||=e=>r.value.methods.push({name:`newMethod`,returnType:`void`,visibility:`public`}),dashed:``,block:``,type:`primary`,ghost:``,size:`small`},{icon:O(()=>[d(t,{name:`mdi:plus`,size:16})]),default:O(()=>[f[18]||=u(` 添加方法 `,-1)]),_:1})]),d(T(N),{style:{margin:`20px 0`}}),d(T(W),{justify:`space-between`},{default:O(()=>[d(T(A),{onClick:f[3]||=e=>a(`delete`),type:`error`,ghost:``},{icon:O(()=>[d(t,{name:`mdi:delete`,size:16})]),default:O(()=>[f[19]||=u(` 删除类 `,-1)]),_:1}),d(T(W),null,{default:O(()=>[d(T(A),{onClick:f[4]||=e=>a(`update:show`,!1)},{default:O(()=>[...f[20]||=[u(`取消`,-1)]]),_:1}),d(T(A),{onClick:f[5]||=e=>a(`save`),type:`primary`},{default:O(()=>[...f[21]||=[u(` 保存 `,-1)]]),_:1})]),_:1})]),_:1})]),_:1})])):s(`v-if`,!0)]),_:1},8,[`show`]))}}),[[`__scopeId`,`data-v-c37f7424`]]);const tt={public:`+`,private:`-`,protected:`#`},nt={extends:{strokeDasharray:0,targetMarker:{name:`block`,width:10,height:8,fill:`white`,stroke:`#722ed1`,strokeWidth:2}},implement:{strokeDasharray:`8,4`,targetMarker:{name:`block`,width:10,height:8,fill:`white`,stroke:`#722ed1`,strokeWidth:2}},dependency:{strokeDasharray:`6,4`,targetMarker:{name:`classic`,size:8,fill:`#722ed1`}},composition:{strokeDasharray:0,sourceMarker:{name:`diamond`,width:12,height:8,fill:`#722ed1`,stroke:`#722ed1`}},aggregation:{strokeDasharray:0,sourceMarker:{name:`diamond`,width:12,height:8,fill:`white`,stroke:`#722ed1`,strokeWidth:2}},association:{strokeDasharray:0,targetMarker:{name:`classic`,size:8,fill:`#722ed1`}}},rt=[`top`,`right`,`bottom`,`left`].reduce((e,t)=>{let n=t===`top`?{refX:.5,refY:0}:t===`right`?{refX:1,refY:.5}:t===`bottom`?{refX:.5,refY:1}:{refX:0,refY:.5};return e[`port-${t}`]={ref:`body`,...n,r:4,fill:`#31d0c6`,stroke:`#ffffff`,strokeWidth:2,magnet:!0,style:{cursor:`crosshair`,opacity:0,transition:`opacity 0.2s`}},e},{}),it={inherit:`rect`,markup:[{tagName:`rect`,selector:`body`},{tagName:`rect`,selector:`name-rect`},{tagName:`rect`,selector:`attrs-rect`},{tagName:`rect`,selector:`methods-rect`},{tagName:`text`,selector:`name-text`},{tagName:`text`,selector:`attrs-text`},{tagName:`text`,selector:`methods-text`},{tagName:`circle`,selector:`port-top`},{tagName:`circle`,selector:`port-right`},{tagName:`circle`,selector:`port-bottom`},{tagName:`circle`,selector:`port-left`}],attrs:{rect:{width:160},body:{stroke:`#5f95ff`,strokeWidth:1,fill:`#fff`,magnet:!1,style:{cursor:`move`}},"name-rect":{fill:`#5f95ff`,stroke:`#fff`,strokeWidth:.5,magnet:!1,style:{cursor:`move`}},"attrs-rect":{fill:`#eff4ff`,stroke:`#fff`,strokeWidth:.5,magnet:!1,style:{cursor:`move`}},"methods-rect":{fill:`#eff4ff`,stroke:`#fff`,strokeWidth:.5,magnet:!1,style:{cursor:`move`}},"name-text":{ref:`name-rect`,refY:.5,refX:.5,textAnchor:`middle`,fontWeight:`bold`,fill:`#fff`,fontSize:12,pointerEvents:`none`},"attrs-text":{ref:`attrs-rect`,refY:.5,refX:5,textAnchor:`left`,fill:`black`,fontSize:10,pointerEvents:`none`},"methods-text":{ref:`methods-rect`,refY:.5,refX:5,textAnchor:`left`,fill:`black`,fontSize:10,pointerEvents:`none`},...rt}},at={router:`manhattan`,connector:{name:`rounded`,args:{radius:8}},allowBlank:!1,allowLoop:!1,allowNode:!1,snap:!0,allowEdge:!1},ot={magnetAvailable:{name:`stroke`,args:{attrs:{fill:`#31d0c6`,stroke:`#31d0c6`,opacity:1}}},magnetAdsorbed:{name:`stroke`,args:{attrs:{fill:`#5F95FF`,stroke:`#5F95FF`,opacity:1}}}},st={shape:`extends`,attrs:{line:{stroke:`#722ed1`,strokeWidth:2,targetMarker:{name:`block`,width:8,height:6,fill:`#722ed1`}}}},ct=[{id:`animal`,name:`<<Abstract>>
1
+ import{t as e}from"./feedback.js";import{t}from"./C_Icon2.js";import{t as n}from"./export-helper.js";import{t as r}from"./data.js";import{Fragment as i,computed as a,createBlock as o,createCommentVNode as s,createElementBlock as c,createElementVNode as l,createTextVNode as u,createVNode as d,defineComponent as f,mergeModels as p,mergeProps as m,nextTick as h,normalizeClass as g,normalizeStyle as _,onMounted as ee,onUnmounted as v,openBlock as y,ref as b,renderList as x,resolveDynamicComponent as S,shallowRef as C,toDisplayString as w,unref as T,useModel as E,watch as D,withCtx as O}from"vue";import{NAlert as k,NButton as A,NCard as j,NCheckbox as M,NDivider as N,NDrawer as P,NDrawerContent as F,NDropdown as te,NForm as I,NFormItem as L,NGi as R,NGrid as z,NInput as B,NRadio as V,NRadioGroup as H,NSelect as U,NSpace as W}from"naive-ui";import{Graph as G,ObjectExt as K}from"@antv/x6";import ne from"html2canvas";function re(e){return{background:e?`#18181c`:`#f5f5f5`,gridPrimary:e?`rgba(255, 255, 255, 0.08)`:`#eee`,gridSecondary:e?`rgba(255, 255, 255, 0.04)`:`#ddd`}}function ie(e=!1){let t=re(e);return{background:{color:t.background},grid:{visible:!0,type:`doubleMesh`,args:[{color:t.gridPrimary,thickness:1},{color:t.gridSecondary,thickness:1,factor:4}]},mousewheel:{enabled:!0,zoomAtMousePosition:!0,modifiers:`ctrl`,minScale:.5,maxScale:2},selecting:{enabled:!0,rubberband:!0,movable:!0,showNodeSelectionBox:!0},resizing:!0,rotating:!0,snapline:!0,keyboard:!0,clipboard:!0}}function q(e){return e?{width:e.clientWidth||e.offsetWidth||800,height:e.clientHeight||e.offsetHeight||600}:{width:0,height:0}}function J(e,t){let n=0,r,i,a=!1,o=C(null),s=b(!1),c=i=>{if(!a){s.value=!0;try{if(!e.value)return;o.value&&=(o.value.dispose(),null);let{width:s,height:c}=q(e.value);if(s===0||c===0){n++,n<10&&(clearTimeout(r),r=setTimeout(()=>{a||l(i)},100));return}n=0;let u=ie(t?.value??!1);o.value=new G({container:e.value,width:s,height:c,...u,...i})}catch{}finally{s.value=!1}}},l=async(e={})=>{clearTimeout(r),r=void 0,await h(),c(e)};function u(e){if(!o.value)return;let t=re(e);o.value.drawBackground({color:t.background}),o.value.drawGrid({type:`doubleMesh`,args:[{color:t.gridPrimary,thickness:1},{color:t.gridSecondary,thickness:1,factor:4}]})}t&&D(t,e=>{u(e)});function d(){if(clearTimeout(r),clearTimeout(i),r=void 0,i=void 0,o.value){let e=o.value;o.value=null,e.dispose()}}function f(){o.value?.centerContent()}function p(){o.value?.zoomToFit({padding:20,maxScale:1})}function m(e=200,t=20){clearTimeout(i);let n=o.value;n&&(i=setTimeout(()=>{!a&&o.value===n&&n.zoomToFit({padding:t,maxScale:1})},e))}function g(e){o.value?.zoom(e)}function _(){if(o.value&&e.value){let{width:t,height:n}=q(e.value);o.value.resize(t,n)}}return v(()=>{a=!0,d()}),{graph:o,loading:s,initGraph:l,destroyGraph:d,centerContent:f,zoomToFit:p,scheduleZoomToFit:m,zoom:g,resizeGraph:_,updateTheme:u}}function Y(e,t){let n=URL.createObjectURL(e),r=document.createElement(`a`);r.href=n,r.download=t,r.style.display=`none`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)}function X(e,t=`diagram.json`){let n=JSON.stringify(e,null,2);Y(new Blob([n],{type:`application/json`}),t)}async function Z(e,t=`diagram.png`,n={}){let{backgroundColor:r=`#ffffff`,scale:i=2}=n,{container:a}=e;Y(await Q(await ne(a,{backgroundColor:r,scale:i,useCORS:!0,logging:!1}),`image/png`),t)}function ae(e,t=`diagram.svg`){let n=e.container.querySelector(`svg`);if(!n)throw Error(`SVG导出失败: 未找到图表 SVG 元素`);let r=n.cloneNode(!0);r.getAttribute(`xmlns`)||r.setAttribute(`xmlns`,`http://www.w3.org/2000/svg`),r.getAttribute(`xmlns:xlink`)||r.setAttribute(`xmlns:xlink`,`http://www.w3.org/1999/xlink`);let i=new XMLSerializer().serializeToString(r);Y(new Blob([i],{type:`image/svg+xml;charset=utf-8`}),t)}function Q(e,t,n=1){return new Promise((r,i)=>{e.toBlob(e=>{e?r(e):i(Error(`Canvas 转 Blob 失败`))},t,n)})}const oe=[{label:`导出PNG`,key:`png`},{label:`导出SVG`,key:`svg`},{label:`导出JSON`,key:`json`}];function $(t,n=`diagram`){let r=e();return{exportOptions:oe,handleExport:async(e,i)=>{if(t.value)try{switch(e){case`png`:await Z(t.value,`${n}.png`);break;case`svg`:ae(t.value,`${n}.svg`);break;case`json`:i&&X(i(),`${n}.json`);break}}catch(t){r.error(`导出${e.toUpperCase()}失败,请重试`,t)}}}}function se(e,t){e.on(`cell:change:*`,({cell:e,key:n,previous:r,options:i})=>{t()&&i.ui&&e.prop(n,r,{ui:!1})})}const ce=[{label:`BIGINT`,value:`BIGINT`},{label:`INT`,value:`INT`},{label:`SMALLINT`,value:`SMALLINT`},{label:`TINYINT`,value:`TINYINT`},{label:`VARCHAR(50)`,value:`VARCHAR(50)`},{label:`VARCHAR(100)`,value:`VARCHAR(100)`},{label:`VARCHAR(255)`,value:`VARCHAR(255)`},{label:`CHAR(10)`,value:`CHAR(10)`},{label:`TEXT`,value:`TEXT`},{label:`LONGTEXT`,value:`LONGTEXT`},{label:`DATETIME`,value:`DATETIME`},{label:`TIMESTAMP`,value:`TIMESTAMP`},{label:`DATE`,value:`DATE`},{label:`TIME`,value:`TIME`},{label:`DECIMAL(10,2)`,value:`DECIMAL(10,2)`},{label:`FLOAT`,value:`FLOAT`},{label:`DOUBLE`,value:`DOUBLE`},{label:`BOOLEAN`,value:`BOOLEAN`},{label:`JSON`,value:`JSON`}],le={key:0,class:`table-editor`},ue={class:`fields-container`},de={class:`field-header`};var fe=n(f({__name:`ERTableEditor`,props:p({show:{type:Boolean}},{editingTable:{},editingTableModifiers:{}}),emits:p([`update:show`,`save`,`add-field`,`remove-field`,`handle-primary-key`],[`update:editingTable`]),setup(e,{emit:n}){let r=E(e,`editingTable`),a=n,f=(e,t)=>a(`handle-primary-key`,e,t),p=()=>a(`add-field`),m=e=>a(`remove-field`,e);return(n,a)=>(y(),o(T(P),{show:e.show,width:`600`,placement:`right`,"onUpdate:show":a[4]||=e=>n.$emit(`update:show`,e)},{default:O(()=>[d(T(F),{title:`编辑表: ${r.value?.name||`新表`}`,closable:``},{footer:O(()=>[d(T(W),{justify:`end`},{default:O(()=>[d(T(A),{onClick:a[2]||=e=>n.$emit(`update:show`,!1)},{default:O(()=>[...a[11]||=[u(`取消`,-1)]]),_:1}),d(T(A),{onClick:a[3]||=e=>n.$emit(`save`),type:`primary`},{default:O(()=>[...a[12]||=[u(`保存`,-1)]]),_:1})]),_:1})]),default:O(()=>[r.value?(y(),c(`div`,le,[d(T(I),{model:r.value,"label-placement":`top`},{default:O(()=>[d(T(L),{label:`表名`},{default:O(()=>[d(T(B),{value:r.value.name,"onUpdate:value":a[0]||=e=>r.value.name=e,placeholder:`请输入表名`},null,8,[`value`])]),_:1}),d(T(L),{label:`表注释`},{default:O(()=>[d(T(B),{value:r.value.comment,"onUpdate:value":a[1]||=e=>r.value.comment=e,placeholder:`表注释`},null,8,[`value`])]),_:1}),d(T(N),null,{default:O(()=>[...a[5]||=[u(`字段列表`,-1)]]),_:1}),l(`div`,ue,[(y(!0),c(i,null,x(r.value.fields,(e,t)=>(y(),o(T(j),{key:t,size:`small`,class:`field-card`},{header:O(()=>[l(`div`,de,[l(`span`,null,`#`+w(t+1)+` `+w(e.name||`新字段`),1),d(T(A),{onClick:e=>m(t),size:`tiny`,type:`error`,quaternary:``,disabled:r.value.fields.length<=1},{default:O(()=>[...a[6]||=[u(` 删除 `,-1)]]),_:1},8,[`onClick`,`disabled`])])]),default:O(()=>[d(T(z),{cols:2,"x-gap":12},{default:O(()=>[d(T(R),null,{default:O(()=>[d(T(L),{label:`字段名`,size:`small`},{default:O(()=>[d(T(B),{value:e.name,"onUpdate:value":t=>e.name=t,placeholder:`字段名`,size:`small`},null,8,[`value`,`onUpdate:value`])]),_:2},1024)]),_:2},1024),d(T(R),null,{default:O(()=>[d(T(L),{label:`类型`,size:`small`},{default:O(()=>[d(T(U),{value:e.type,"onUpdate:value":t=>e.type=t,options:T(ce),size:`small`,filterable:``,placeholder:`选择类型`},null,8,[`value`,`onUpdate:value`,`options`])]),_:2},1024)]),_:2},1024)]),_:2},1024),d(T(W),{style:{"margin-top":`12px`}},{default:O(()=>[d(T(M),{checked:e.isPrimaryKey,"onUpdate:checked":[t=>e.isPrimaryKey=t,t=>f(e,t)]},{default:O(()=>[...a[7]||=[u(` 主键 `,-1)]]),_:1},8,[`checked`,`onUpdate:checked`]),d(T(M),{checked:e.isRequired,"onUpdate:checked":t=>e.isRequired=t},{default:O(()=>[...a[8]||=[u(`必填`,-1)]]),_:1},8,[`checked`,`onUpdate:checked`]),d(T(M),{checked:e.isForeignKey,"onUpdate:checked":t=>e.isForeignKey=t},{default:O(()=>[...a[9]||=[u(`外键`,-1)]]),_:1},8,[`checked`,`onUpdate:checked`])]),_:2},1024),d(T(L),{label:`注释`,size:`small`,style:{"margin-top":`12px`}},{default:O(()=>[d(T(B),{value:e.comment,"onUpdate:value":t=>e.comment=t,placeholder:`字段注释`,size:`small`},null,8,[`value`,`onUpdate:value`])]),_:2},1024)]),_:2},1024))),128)),d(T(A),{onClick:p,dashed:``,block:``,type:`primary`,ghost:``,style:{"margin-top":`16px`}},{icon:O(()=>[d(t,{name:`mdi:plus`,size:16})]),default:O(()=>[a[10]||=u(` 添加字段 `,-1)]),_:1})])]),_:1},8,[`model`])])):s(`v-if`,!0)]),_:1},8,[`title`])]),_:1},8,[`show`]))}}),[[`__scopeId`,`data-v-4e8f219f`]]);const pe={class:`er-layout`},me={key:0,class:`toolbar`},he={key:0,style:{"margin-top":`8px`}};var ge=n(f({__name:`index`,props:{data:{},showToolbar:{type:Boolean,default:!0},readonly:{type:Boolean,default:!1},theme:{}},emits:[`ready`,`data-change`],setup(e,{expose:n,emit:i}){let o=e,f=i,p=b(),{graph:m,initGraph:g,centerContent:_,zoomToFit:v,scheduleZoomToFit:x}=J(p,a(()=>o.theme===`dark`)),{exportOptions:S,handleExport:C}=$(m,`er-diagram`),E=b(!1),j=b(),M=b(!1),N=(e,t)=>e.length>t?e.substring(0,t-1)+`..`:e,P=e=>e.fields?.map(t=>{let n=t.isPrimaryKey?`🔑 ${t.name}`:t.isRequired?`* ${t.name}`:t.name;return{id:`${e.id}_${t.name}`,data:{tableId:e.id,fieldName:t.name},group:`list`,attrs:{portNameLabel:{text:N(n,12),title:n},portTypeLabel:{text:N(t.type,10),title:t.type},portBody:{fill:t.isPrimaryKey?`#FFF7E6`:`#EFF4FF`}}}})||[],F=e=>({id:e.id,shape:`er-rect`,x:e.position.x,y:e.position.y,width:200,height:24+(e.fields?.length||0)*24,data:r(e),attrs:{label:{text:N(e.name,20),refX:.5,refY:10,textAnchor:`middle`,title:e.name}},ports:P(e)}),I=()=>{m.value&&(G.registerPortLayout(`erPortPosition`,e=>e.map((e,t)=>({position:{x:0,y:(t+1)*24},angle:0})),!0),G.registerNode(`er-rect`,{inherit:`rect`,markup:[{tagName:`rect`,selector:`body`},{tagName:`text`,selector:`label`}],attrs:{rect:{strokeWidth:1,stroke:`#5F95FF`,fill:`#5F95FF`},label:{fontWeight:`bold`,fill:`#ffffff`,fontSize:12}},ports:{groups:{list:{markup:[{tagName:`rect`,selector:`portBody`},{tagName:`text`,selector:`portNameLabel`},{tagName:`text`,selector:`portTypeLabel`}],attrs:{portBody:{width:200,height:24,strokeWidth:1,stroke:`#5F95FF`,fill:`#EFF4FF`,magnet:!0},portNameLabel:{ref:`portBody`,refX:6,refY:6,fontSize:9,textAnchor:`start`,textOverflow:`ellipsis`},portTypeLabel:{ref:`portBody`,refX:120,refY:6,fontSize:9,textAnchor:`start`,fill:`#666`}},position:`erPortPosition`}}}},!0))},L=()=>{o.readonly||(M.value=!M.value,M.value||R())},R=()=>{m.value?.getEdges().forEach(e=>{e.attr(`line/stroke`,`#A2B1C3`),e.attr(`line/strokeWidth`,2)})},z=e=>{if(!m.value)return;let t=m.value.createNode(F(e));return m.value.resetCells([t,...m.value.getCells()]),t},B=()=>{let e=m.value?.getNodes()||[];for(let t=0;t<10;t++)for(let n=0;n<3;n++){let r={x:n*250+50,y:t*250+50};if(!e.some(e=>{let t=e.getPosition();return Math.abs(t.x-r.x)<250*.8&&Math.abs(t.y-r.y)<250*.8}))return r}return{x:50,y:50}},V=()=>{if(o.readonly)return;let e={id:`table_${Date.now()}`,name:`新表`,comment:``,fields:[{name:`id`,type:`BIGINT`,isPrimaryKey:!0,isRequired:!0,isForeignKey:!1,comment:`主键`},{name:`name`,type:`VARCHAR(100)`,isPrimaryKey:!1,isRequired:!0,isForeignKey:!1,comment:`名称`}],position:B()};z(e),H(e),Z()},H=e=>{o.readonly||(j.value=r(e),E.value=!0)},U=()=>{if(o.readonly||!m.value||!j.value)return;let e=m.value.getCellById(j.value.id);e&&(e.setData(r(j.value)),e.prop({size:{width:200,height:24+j.value.fields.length*24},attrs:{label:{text:N(j.value.name,20),title:j.value.name}},ports:P(j.value)})),E.value=!1,Z()},K=(e,t)=>{o.readonly||!t||(e.isRequired=!0,j.value?.fields.forEach(t=>{t!==e&&(t.isPrimaryKey=!1)}))},ne=()=>{o.readonly||j.value?.fields.push({name:`field_${(j.value?.fields.length||0)+1}`,type:`VARCHAR(100)`,isPrimaryKey:!1,isRequired:!1,isForeignKey:!1,comment:``})},re=e=>{o.readonly||j.value&&j.value.fields.length>1&&j.value.fields.splice(e,1)},ie=(e,t)=>{let n=e.getPort(t)?.data;if(n?.tableId===e.id)return n.fieldName;let r=`${e.id}_`;return t.startsWith(r)?t.slice(r.length):void 0},q=e=>e.getData()?.name||e.id,Y=e=>{let t=e.getSourceNode(),n=e.getTargetNode();if(!t||!n)return;let i=ie(t,e.getSourcePortId()??``),a=ie(n,e.getTargetPortId()??``);if(i===void 0||a===void 0)return;let o=e.getData();return{...r(o),id:e.id,type:o?.type??`foreign-key`,sourceTable:t.id,sourceField:i,targetTable:n.id,targetField:a,...!o&&{name:`${q(t)} -> ${q(n)}`}}},X=()=>{if(!m.value)return{tables:[],relations:[]};let e=m.value.getNodes().map(e=>({...r(e.getData()),position:e.getPosition()})),t=[];return m.value.getEdges().forEach(e=>{let n=Y(e);n&&t.push(n)}),{tables:e,relations:t}},Z=()=>{o.readonly||f(`data-change`,X())},ae=e=>{let t=m.value;if(!t)return;Q=null;let n=e.tables.map(e=>t.createNode(F(e)));e.relations?.forEach(e=>{n.push(t.createEdge({id:e.id,source:{cell:e.sourceTable,port:`${e.sourceTable}_${e.sourceField}`},target:{cell:e.targetTable,port:`${e.targetTable}_${e.targetField}`},data:r(e),attrs:{line:{stroke:`#A2B1C3`,strokeWidth:2}}}))}),t.resetCells(n)},Q=null;D(m,e=>{e instanceof G&&(I(),se(e,()=>o.readonly),e.on(`node:dblclick`,({node:e})=>{o.readonly||H(e.getData())}),e.on(`node:moved`,Z),e.on(`edge:connected`,Z),e.on(`edge:removed`,({edge:e})=>{Q===e&&(Q=null),Z()}),e.on(`edge:click`,({edge:e})=>{o.readonly||(M.value?e.remove():(R(),e.attr(`line/stroke`,`#ff4d4f`),e.attr(`line/strokeWidth`,3),Q=e))}),e.on(`edge:dblclick`,({edge:e})=>{o.readonly||e.remove()}),e.on(`blank:click`,()=>{Q=null,M.value||R()}),f(`ready`,e),h(()=>{m.value===e&&o.data?.tables&&(ae(o.data),x(300,20))}))},{immediate:!0}),D(()=>o.data,e=>{m.value&&e?.tables&&ae(e)},{deep:!0}),D(()=>o.readonly,e=>{e&&(E.value=!1,j.value=void 0,M.value=!1,Q=null,R())},{flush:`sync`});let oe=e=>{e.target?.closest(`input, textarea, [contenteditable]:not([contenteditable="false"])`)||p.value?.focus({preventScroll:!0})},ce=e=>{o.readonly||document.activeElement!==p.value||e.target?.closest(`input, textarea, [contenteditable]:not([contenteditable="false"])`)||(e.key===`Delete`||e.key===`Backspace`)&&Q&&(e.preventDefault(),Q.remove(),Q=null)};return ee(()=>{g({interacting:()=>!o.readonly,connecting:{allowBlank:!1,allowNode:!1,allowEdge:!1,validateMagnet:()=>!o.readonly,validateConnection:()=>!o.readonly,validateEdge:()=>!o.readonly}})}),n({getGraph:()=>m.value??void 0,getData:X}),(n,r)=>(y(),c(`div`,pe,[s(` 工具栏 `),e.showToolbar?(y(),c(`div`,me,[d(T(W),null,{default:O(()=>[d(T(A),{onClick:V,disabled:e.readonly,type:`primary`,size:`small`},{icon:O(()=>[d(t,{name:`mdi:table-plus`,size:16})]),default:O(()=>[r[3]||=u(` 添加表 `,-1)]),_:1},8,[`disabled`]),d(T(A),{onClick:T(_),size:`small`},{icon:O(()=>[d(t,{name:`mdi:image-filter-center-focus`,size:16})]),default:O(()=>[r[4]||=u(` 居中 `,-1)]),_:1},8,[`onClick`]),d(T(A),{onClick:T(v),size:`small`},{icon:O(()=>[d(t,{name:`mdi:fit-to-screen`,size:16})]),default:O(()=>[r[5]||=u(` 适应 `,-1)]),_:1},8,[`onClick`]),d(T(A),{onClick:L,disabled:e.readonly,type:M.value?`error`:`default`,size:`small`},{icon:O(()=>[d(t,{name:`mdi:delete`,size:16})]),default:O(()=>[u(` `+w(M.value?`退出删除`:`删除连线`),1)]),_:1},8,[`disabled`,`type`]),d(T(te),{options:T(S),onSelect:r[0]||=e=>T(C)(e,X)},{default:O(()=>[d(T(A),{size:`small`},{icon:O(()=>[d(t,{name:`mdi:export`,size:16})]),default:O(()=>[r[6]||=u(` 导出 `,-1)]),_:1})]),_:1},8,[`options`])]),_:1}),M.value?(y(),c(`div`,he,[d(T(k),{type:`info`,size:`small`,"show-icon":!1},{default:O(()=>[...r[7]||=[u(` 删除模式:点击连接线即可删除 `,-1)]]),_:1})])):s(`v-if`,!0)])):s(`v-if`,!0),s(` 图表容器 `),l(`div`,{ref_key:`containerRef`,ref:p,class:`graph-container`,tabindex:`0`,role:`region`,"aria-label":`ER 图画布`,onPointerdown:oe,onKeydown:ce},null,544),s(` 表编辑器 `),d(fe,{show:E.value,"editing-table":j.value,"onUpdate:editingTable":r[1]||=e=>j.value=e,"onUpdate:show":r[2]||=e=>E.value=e,onSave:U,onAddField:ne,onRemoveField:re,onHandlePrimaryKey:K},null,8,[`show`,`editing-table`])]))}}),[[`__scopeId`,`data-v-7676efd4`]]);const _e={defaultColor:`#A2B1C3`,highlightColor:`#ff4d4f`,strokeWidth:2,highlightStrokeWidth:3,portPositions:[],onDataChange:()=>{},isReadonly:()=>!1};function ve(e,t={}){let n={..._e,...t},r=()=>{e.value?.getEdges().forEach(e=>{e.attr(`line/stroke`,n.defaultColor),e.attr(`line/strokeWidth`,n.strokeWidth)})},i=e=>{r(),e.attr(`line/stroke`,n.highlightColor),e.attr(`line/strokeWidth`,n.highlightStrokeWidth)},a=(e,t)=>{n.portPositions.forEach(n=>e.attr(`port-${n}/style/opacity`,t))};return{resetEdgeStyles:r,highlightEdge:i,togglePorts:a,bindInteractions:()=>{let t=e.value;t&&(t.on(`edge:click`,({edge:e})=>i(e)),t.on(`edge:dblclick`,({edge:e})=>{n.isReadonly()||(e.remove(),n.onDataChange())}),t.on(`blank:click`,r),t.on(`node:click`,r),t.on(`edge:connected`,()=>{n.isReadonly()||n.onDataChange()}),n.portPositions.length>0&&(t.on(`node:mouseenter`,({node:e})=>a(e,1)),t.on(`node:mouseleave`,({node:e})=>a(e,0))))}}}const ye={"start-event":{name:`开始`,title:`开始事件`,iconClass:`circle start-event`},activity:{name:`任务`,title:`任务活动`,iconClass:`rect activity`},gateway:{name:`网关`,title:`排他网关`,iconClass:`diamond gateway`},"end-event":{name:`结束`,title:`结束事件`,iconClass:`circle end-event`}},be={event:`事件`,activity:`活动`,gateway:`网关`,"bpmn-edge":`连接线`},xe=[`top`,`right`,`bottom`,`left`],Se=(e,t=`rect`)=>e.reduce((e,n)=>{let r=t===`circle`,i=n===`top`?r?{refCx:.5,refCy:0}:{refX:.5,refY:0}:n===`right`?r?{refCx:1,refCy:.5}:{refX:1,refY:.5}:n===`bottom`?r?{refCx:.5,refCy:1}:{refX:.5,refY:1}:r?{refCx:0,refCy:.5}:{refX:0,refY:.5};return e[`port-${n}`]={ref:`body`,...i,r:4,fill:`#31d0c6`,stroke:`#ffffff`,strokeWidth:2,magnet:!0,style:{cursor:`crosshair`,opacity:0,transition:`opacity 0.2s`}},e},{}),Ce={event:{inherit:`circle`,attrs:{body:{strokeWidth:2,stroke:`#5F95FF`,fill:`#FFF`,magnet:!1,style:{cursor:`move`}},text:{fontSize:12,fill:`#262626`,textAnchor:`middle`,textVerticalAnchor:`middle`,pointerEvents:`none`}}},activity:{inherit:`rect`,attrs:{body:{rx:6,ry:6,stroke:`#5F95FF`,fill:`#EFF4FF`,strokeWidth:1,magnet:!1,style:{cursor:`move`}},text:{fontSize:12,fill:`#262626`,textAnchor:`middle`,textVerticalAnchor:`middle`,pointerEvents:`none`}}},gateway:{inherit:`polygon`,attrs:{body:{refPoints:`0,10 10,0 20,10 10,20`,strokeWidth:2,stroke:`#5F95FF`,fill:`#EFF4FF`,magnet:!1,style:{cursor:`move`}},text:{fontSize:20,fill:`#5F95FF`,textAnchor:`middle`,textVerticalAnchor:`middle`,pointerEvents:`none`}}}},we={inherit:`edge`,attrs:{line:{stroke:`#A2B1C3`,strokeWidth:2,targetMarker:{name:`block`,width:8,height:6,fill:`#A2B1C3`},cursor:`pointer`}}};function Te(e=!1){let t={background:e?`#18181c`:`#ffffff`,gridPrimary:e?`rgba(255, 255, 255, 0.08)`:`#eee`,gridSecondary:e?`rgba(255, 255, 255, 0.04)`:`#ddd`};return{background:{color:t.background},grid:{visible:!0,type:`doubleMesh`,args:[{color:t.gridPrimary,thickness:1},{color:t.gridSecondary,thickness:1,factor:4}]},mousewheel:{enabled:!0,zoomAtMousePosition:!0,modifiers:`ctrl`,minScale:.5,maxScale:3},connecting:{router:`manhattan`,connector:{name:`rounded`,args:{radius:8}},allowBlank:!1,allowLoop:!1,allowNode:!1,snap:!0,allowEdge:!1},highlighting:{magnetAvailable:{name:`stroke`,args:{attrs:{fill:`#31d0c6`,stroke:`#31d0c6`,opacity:1}}},magnetAdsorbed:{name:`stroke`,args:{attrs:{fill:`#5F95FF`,stroke:`#5F95FF`,opacity:1}}}},selecting:{enabled:!0,rubberband:!0,showNodeSelectionBox:!0},resizing:!0,rotating:!1,snapline:!0,keyboard:!0,clipboard:!0}}Te();const Ee={"start-event":{shape:`event`,width:50,height:50,label:`开始事件`,data:{type:`start`}},"end-event":{shape:`event`,width:50,height:50,label:`结束事件`,data:{type:`end`}},activity:{shape:`activity`,width:120,height:60,label:`新活动`,data:{description:``,assignee:``}},gateway:{shape:`gateway`,width:40,height:40,label:`+`,data:{type:`exclusive`}}},De=[{id:`start-1`,shape:`event`,x:100,y:200,width:50,height:50,label:`流程开始`,data:{type:`start`}},{id:`activity-1`,shape:`activity`,x:200,y:180,width:120,height:60,label:`用户申请`,data:{description:`用户提交申请表单`,assignee:`申请人`}},{id:`activity-2`,shape:`activity`,x:380,y:180,width:120,height:60,label:`初审`,data:{description:`部门进行初步审核`,assignee:`部门主管`}},{id:`gateway-1`,shape:`gateway`,x:550,y:200,width:40,height:40,label:`+`,data:{type:`exclusive`}},{id:`activity-3`,shape:`activity`,x:650,y:120,width:120,height:60,label:`终审`,data:{description:`高级主管最终审核`,assignee:`总监`}},{id:`activity-4`,shape:`activity`,x:650,y:260,width:120,height:60,label:`驳回处理`,data:{description:`处理驳回流程`,assignee:`专员`}},{id:`end-1`,shape:`event`,x:820,y:140,width:50,height:50,label:`审批通过`,data:{type:`end`}},{id:`end-2`,shape:`event`,x:820,y:280,width:50,height:50,label:`审批驳回`,data:{type:`end`}},{id:`edge-1`,shape:`bpmn-edge`,source:`start-1`,target:`activity-1`,x:0,y:0},{id:`edge-2`,shape:`bpmn-edge`,source:`activity-1`,target:`activity-2`,x:0,y:0},{id:`edge-3`,shape:`bpmn-edge`,source:`activity-2`,target:`gateway-1`,x:0,y:0},{id:`edge-4`,shape:`bpmn-edge`,source:`gateway-1`,target:`activity-3`,label:`通过`,x:0,y:0},{id:`edge-5`,shape:`bpmn-edge`,source:`gateway-1`,target:`activity-4`,label:`驳回`,x:0,y:0},{id:`edge-6`,shape:`bpmn-edge`,source:`activity-3`,target:`end-1`,x:0,y:0},{id:`edge-7`,shape:`bpmn-edge`,source:`activity-4`,target:`end-2`,x:0,y:0}],Oe={key:0,class:`property-panel`},ke={class:`property-item`},Ae={class:`property-item`},je={key:0,class:`property-item`},Me={key:1,class:`property-item`},Ne={class:`form-actions`};var Pe=n(f({__name:`BPMNPropertyEditor`,props:p({show:{type:Boolean}},{editingElement:{},editingElementModifiers:{}}),emits:p([`update:show`,`save`,`delete`],[`update:editingElement`]),setup(e,{emit:t}){let n=E(e,`editingElement`),r=t,i=a(()=>be[n.value?.shape]||n.value?.shape||``);return(t,a)=>(y(),o(T(P),{show:e.show,width:`300`,title:`属性设置`,"onUpdate:show":a[6]||=e=>r(`update:show`,e)},{default:O(()=>[n.value?(y(),c(`div`,Oe,[l(`div`,ke,[a[7]||=l(`div`,{class:`property-label`},`名称`,-1),d(T(B),{value:n.value.label,"onUpdate:value":a[0]||=e=>n.value.label=e,placeholder:`请输入名称`,size:`small`},null,8,[`value`])]),l(`div`,Ae,[a[8]||=l(`div`,{class:`property-label`},`类型`,-1),d(T(B),{value:i.value,readonly:``,size:`small`},null,8,[`value`])]),n.value.shape===`activity`?(y(),c(`div`,je,[a[9]||=l(`div`,{class:`property-label`},`描述`,-1),d(T(B),{value:n.value.description,"onUpdate:value":a[1]||=e=>n.value.description=e,type:`textarea`,rows:3,placeholder:`请输入活动描述`,size:`small`},null,8,[`value`])])):s(`v-if`,!0),n.value.shape===`activity`?(y(),c(`div`,Me,[a[10]||=l(`div`,{class:`property-label`},`执行人`,-1),d(T(B),{value:n.value.assignee,"onUpdate:value":a[2]||=e=>n.value.assignee=e,placeholder:`请输入执行人`,size:`small`},null,8,[`value`])])):s(`v-if`,!0),l(`div`,Ne,[d(T(W),null,{default:O(()=>[d(T(A),{onClick:a[3]||=e=>r(`save`),type:`primary`,size:`small`},{default:O(()=>[...a[11]||=[u(` 保存 `,-1)]]),_:1}),d(T(A),{onClick:a[4]||=e=>r(`update:show`,!1),size:`small`},{default:O(()=>[...a[12]||=[u(` 取消 `,-1)]]),_:1}),d(T(A),{onClick:a[5]||=e=>r(`delete`),type:`error`,size:`small`},{default:O(()=>[...a[13]||=[u(` 删除 `,-1)]]),_:1})]),_:1})])])):s(`v-if`,!0)]),_:1},8,[`show`]))}}),[[`__scopeId`,`data-v-fc8f213e`]]);const Fe={class:`bpmn-layout`},Ie={key:0,class:`top-toolbar`},Le={class:`toolbar-section`},Re={class:`toolbar-group`},ze={class:`toolbar-group`},Be={class:`toolbar-group`},Ve={class:`main-content`},He={key:0,class:`left-panel`},Ue={class:`element-grid`},We=[`onClick`,`title`],Ge={class:`graph-wrapper`};var Ke=n(f({__name:`index`,props:{data:{},showToolbar:{type:Boolean,default:!0},readonly:{type:Boolean,default:!1},width:{default:`100%`},height:{default:`600px`},theme:{}},emits:[`ready`,`data-change`],setup(e,{expose:n,emit:o}){let f=e,p=o,m=b(),{graph:h,initGraph:_,centerContent:v,zoomToFit:S,scheduleZoomToFit:C}=J(m,a(()=>f.theme===`dark`)),{exportOptions:E,handleExport:k}=$(h,`bpmn-diagram`),{bindInteractions:j}=ve(h,{portPositions:xe,onDataChange:()=>W(),isReadonly:()=>f.readonly}),M=b(!1),N=b(),P=e=>String(e.attr(`text/text`)||e.attr(`label/text`)||``),F=e=>{if(!e)return[];if(Array.isArray(e))return e;let t=[];return Object.values(e).forEach(e=>{Array.isArray(e)&&t.push(...e)}),t},I=()=>{let e=xe.map(e=>({tagName:`circle`,selector:`port-${e}`})),t=[`event`,`activity`,`gateway`],n={event:`circle`,activity:`rect`,gateway:`polygon`};t.forEach(t=>{G.registerNode(t,{...Ce[t],markup:[{tagName:n[t],selector:`body`},{tagName:`text`,selector:`text`},...e],attrs:{...Ce[t].attrs,...Se(xe,n[t])}},!0)}),G.registerEdge(`bpmn-edge`,we,!0)},L=e=>{if(!h.value)return;let t=e.map(e=>{let{data:t,...n}=e,i=e.shape===`bpmn-edge`?h.value.createEdge(n):h.value.createNode(n);return t&&i.setData(r(t)),i});h.value.resetCells(t),t.length&&C(200,50)},R=e=>{if(f.readonly||!h.value)return;let t=Ee[e];if(!t)return;let n=h.value.options.width/2,i=h.value.options.height/2,{data:a,...o}={id:`${e}-${Date.now()}`,x:n+Math.random()*100-50,y:i+Math.random()*100-50,...t},s=h.value.createNode(o);a&&s.setData(r(a)),h.value.addCell(s),W()},z=()=>{f.readonly||(h.value?.clearCells(),W())},B=e=>{if(f.readonly)return;let t=e.getData()||{};N.value={id:e.id,shape:e.shape,label:P(e),description:t.description||``,assignee:t.assignee||``,x:0,y:0},M.value=!0},V=()=>{if(f.readonly||!h.value||!N.value)return;let e=h.value.getCellById(N.value.id);e&&(e.setData({description:N.value.description,assignee:N.value.assignee}),e.attr(`text/text`,N.value.label||``),e.attr(`label/text`,N.value.label||``)),M.value=!1,W()},H=()=>{f.readonly||!h.value||!N.value||(h.value.getCellById(N.value.id)?.remove(),M.value=!1,W())},U=()=>h.value?[...h.value.getNodes().map(e=>({id:e.id,shape:e.shape,x:e.getPosition().x,y:e.getPosition().y,width:e.getSize().width,height:e.getSize().height,label:P(e),data:r(e.getData()||{})})),...h.value.getEdges().map(e=>({id:e.id,shape:`bpmn-edge`,source:e.getSourceCellId()||``,target:e.getTargetCellId()||``,label:P(e),data:r(e.getData()||{}),x:0,y:0}))]:[],W=()=>{f.readonly||p(`data-change`,U())};return D(h,e=>{e instanceof G&&(se(e,()=>f.readonly),j(),e.on(`node:dblclick`,({node:e})=>B(e)),e.on(`node:moved`,W),p(`ready`,e),L(f.data===void 0?De:F(f.data)))},{immediate:!0}),D(()=>f.data,e=>{h.value&&L(e===void 0?De:F(e))},{deep:!0}),D(()=>f.readonly,e=>{e&&(M.value=!1,N.value=void 0)},{flush:`sync`}),ee(async()=>{I();let e=Te();await _({...e,interacting:()=>!f.readonly,connecting:{...e.connecting,validateMagnet:()=>!f.readonly,validateEdge:()=>!f.readonly,createEdge:()=>h.value.createEdge({shape:`bpmn-edge`}),validateConnection:({sourceView:e,targetView:t,sourceMagnet:n,targetMagnet:r})=>!f.readonly&&e!==t&&!!n&&!!r&&n.getAttribute(`magnet`)===`true`&&r.getAttribute(`magnet`)===`true`}})}),n({getGraph:()=>h.value,getData:U,loadData:L}),(n,r)=>(y(),c(`div`,Fe,[e.showToolbar?(y(),c(`div`,Ie,[l(`div`,Le,[l(`div`,Re,[d(T(A),{onClick:z,disabled:e.readonly,size:`small`},{icon:O(()=>[d(t,{name:`mdi:delete-outline`,size:16})]),default:O(()=>[r[3]||=u(` 清空 `,-1)]),_:1},8,[`disabled`])]),l(`div`,ze,[d(T(A),{onClick:T(v),size:`small`},{icon:O(()=>[d(t,{name:`mdi:image-filter-center-focus`,size:16})]),default:O(()=>[r[4]||=u(` 居中 `,-1)]),_:1},8,[`onClick`]),d(T(A),{onClick:T(S),size:`small`},{icon:O(()=>[d(t,{name:`mdi:fit-to-screen`,size:16})]),default:O(()=>[r[5]||=u(` 适应 `,-1)]),_:1},8,[`onClick`])]),l(`div`,Be,[d(T(te),{options:T(E),onSelect:r[0]||=e=>T(k)(e,U)},{default:O(()=>[d(T(A),{size:`small`},{icon:O(()=>[d(t,{name:`mdi:export`,size:16})]),default:O(()=>[r[6]||=u(` 导出 `,-1)]),_:1})]),_:1},8,[`options`])])])])):s(`v-if`,!0),l(`div`,Ve,[e.showToolbar&&!e.readonly?(y(),c(`div`,He,[r[7]||=l(`div`,{class:`panel-title`},`组件`,-1),l(`div`,Ue,[(y(!0),c(i,null,x(T(ye),(e,t)=>(y(),c(`div`,{key:t,class:`element-item`,onClick:e=>R(t),title:e.title},[l(`div`,{class:g([`element-icon`,e.iconClass])},null,2),l(`span`,null,w(e.name),1)],8,We))),128))])])):s(`v-if`,!0),l(`div`,Ge,[l(`div`,{ref_key:`containerRef`,ref:m,class:`graph-container`},null,512)])]),d(Pe,{show:M.value,"editing-element":N.value,"onUpdate:editingElement":r[1]||=e=>N.value=e,"onUpdate:show":r[2]||=e=>M.value=e,onSave:V,onDelete:H},null,8,[`show`,`editing-element`])]))}}),[[`__scopeId`,`data-v-a7aebb58`]]);const qe={key:0,class:`class-editor`},Je={class:`section`},Ye={class:`section-header`},Xe={style:{"font-size":`13px`}},Ze={class:`section`},Qe={class:`section-header`},$e={style:{"font-size":`13px`}};var et=n(f({__name:`UMLClassEditor`,props:p({show:{type:Boolean}},{editingClass:{},editingClassModifiers:{}}),emits:p([`update:show`,`save`,`delete`],[`update:editingClass`]),setup(e,{emit:n}){let r=E(e,`editingClass`),a=n;return(n,f)=>(y(),o(T(P),{show:e.show,width:`450`,title:`编辑类`,"onUpdate:show":f[6]||=e=>a(`update:show`,e)},{default:O(()=>[r.value?(y(),c(`div`,qe,[d(T(I),{"label-placement":`top`},{default:O(()=>[d(T(L),{label:`类名`},{default:O(()=>[d(T(B),{value:r.value.name,"onUpdate:value":f[0]||=e=>r.value.name=e,placeholder:`请输入类名`},null,8,[`value`])]),_:1}),d(T(N),{style:{margin:`20px 0`}},{default:O(()=>[...f[7]||=[u(`属性`,-1)]]),_:1}),l(`div`,Je,[(y(!0),c(i,null,x(r.value.attributes,(e,t)=>(y(),c(`div`,{key:t,class:`item`},[d(T(j),{size:`small`,style:{"margin-bottom":`12px`}},{header:O(()=>[l(`div`,Ye,[l(`span`,Xe,`#`+w(t+1)+` `+w(e.name||`新属性`),1),d(T(A),{onClick:e=>r.value.attributes.splice(t,1),size:`tiny`,type:`error`,quaternary:``,style:{"margin-left":`auto`}},{default:O(()=>[...f[8]||=[u(` 删除 `,-1)]]),_:1},8,[`onClick`])])]),default:O(()=>[d(T(W),{vertical:``,size:`small`},{default:O(()=>[d(T(W),null,{default:O(()=>[d(T(L),{label:`属性名`,style:{margin:`0`,flex:`1`}},{default:O(()=>[d(T(B),{value:e.name,"onUpdate:value":t=>e.name=t,placeholder:`属性名`,size:`small`},null,8,[`value`,`onUpdate:value`])]),_:2},1024),d(T(L),{label:`类型`,style:{margin:`0`,flex:`1`}},{default:O(()=>[d(T(B),{value:e.type,"onUpdate:value":t=>e.type=t,placeholder:`类型`,size:`small`},null,8,[`value`,`onUpdate:value`])]),_:2},1024)]),_:2},1024),d(T(L),{label:`可见性`,style:{margin:`0`}},{default:O(()=>[d(T(H),{value:e.visibility,"onUpdate:value":t=>e.visibility=t,size:`small`},{default:O(()=>[d(T(V),{value:`public`},{default:O(()=>[...f[9]||=[u(`+ public`,-1)]]),_:1}),d(T(V),{value:`private`},{default:O(()=>[...f[10]||=[u(`- private`,-1)]]),_:1}),d(T(V),{value:`protected`},{default:O(()=>[...f[11]||=[u(`# protected`,-1)]]),_:1})]),_:1},8,[`value`,`onUpdate:value`])]),_:2},1024)]),_:2},1024)]),_:2},1024)]))),128)),d(T(A),{onClick:f[1]||=e=>r.value.attributes.push({name:`newAttribute`,type:`string`,visibility:`private`}),dashed:``,block:``,type:`primary`,ghost:``,size:`small`},{icon:O(()=>[d(t,{name:`mdi:plus`,size:16})]),default:O(()=>[f[12]||=u(` 添加属性 `,-1)]),_:1})]),d(T(N),{style:{margin:`20px 0`}},{default:O(()=>[...f[13]||=[u(`方法`,-1)]]),_:1}),l(`div`,Ze,[(y(!0),c(i,null,x(r.value.methods,(e,t)=>(y(),c(`div`,{key:t,class:`item`},[d(T(j),{size:`small`,style:{"margin-bottom":`12px`}},{header:O(()=>[l(`div`,Qe,[l(`span`,$e,`#`+w(t+1)+` `+w(e.name||`新方法`),1),d(T(A),{onClick:e=>r.value.methods.splice(t,1),size:`tiny`,type:`error`,quaternary:``,style:{"margin-left":`auto`}},{default:O(()=>[...f[14]||=[u(` 删除 `,-1)]]),_:1},8,[`onClick`])])]),default:O(()=>[d(T(W),{vertical:``,size:`small`},{default:O(()=>[d(T(W),null,{default:O(()=>[d(T(L),{label:`方法名`,style:{margin:`0`,flex:`1`}},{default:O(()=>[d(T(B),{value:e.name,"onUpdate:value":t=>e.name=t,placeholder:`方法名`,size:`small`},null,8,[`value`,`onUpdate:value`])]),_:2},1024),d(T(L),{label:`返回类型`,style:{margin:`0`,flex:`1`}},{default:O(()=>[d(T(B),{value:e.returnType,"onUpdate:value":t=>e.returnType=t,placeholder:`返回类型`,size:`small`},null,8,[`value`,`onUpdate:value`])]),_:2},1024)]),_:2},1024),d(T(L),{label:`可见性`,style:{margin:`0`}},{default:O(()=>[d(T(H),{value:e.visibility,"onUpdate:value":t=>e.visibility=t,size:`small`},{default:O(()=>[d(T(V),{value:`public`},{default:O(()=>[...f[15]||=[u(`+ public`,-1)]]),_:1}),d(T(V),{value:`private`},{default:O(()=>[...f[16]||=[u(`- private`,-1)]]),_:1}),d(T(V),{value:`protected`},{default:O(()=>[...f[17]||=[u(`# protected`,-1)]]),_:1})]),_:1},8,[`value`,`onUpdate:value`])]),_:2},1024)]),_:2},1024)]),_:2},1024)]))),128)),d(T(A),{onClick:f[2]||=e=>r.value.methods.push({name:`newMethod`,returnType:`void`,visibility:`public`}),dashed:``,block:``,type:`primary`,ghost:``,size:`small`},{icon:O(()=>[d(t,{name:`mdi:plus`,size:16})]),default:O(()=>[f[18]||=u(` 添加方法 `,-1)]),_:1})]),d(T(N),{style:{margin:`20px 0`}}),d(T(W),{justify:`space-between`},{default:O(()=>[d(T(A),{onClick:f[3]||=e=>a(`delete`),type:`error`,ghost:``},{icon:O(()=>[d(t,{name:`mdi:delete`,size:16})]),default:O(()=>[f[19]||=u(` 删除类 `,-1)]),_:1}),d(T(W),null,{default:O(()=>[d(T(A),{onClick:f[4]||=e=>a(`update:show`,!1)},{default:O(()=>[...f[20]||=[u(`取消`,-1)]]),_:1}),d(T(A),{onClick:f[5]||=e=>a(`save`),type:`primary`},{default:O(()=>[...f[21]||=[u(` 保存 `,-1)]]),_:1})]),_:1})]),_:1})]),_:1})])):s(`v-if`,!0)]),_:1},8,[`show`]))}}),[[`__scopeId`,`data-v-c37f7424`]]);const tt={public:`+`,private:`-`,protected:`#`},nt={extends:{strokeDasharray:0,targetMarker:{name:`block`,width:10,height:8,fill:`white`,stroke:`#722ed1`,strokeWidth:2}},implement:{strokeDasharray:`8,4`,targetMarker:{name:`block`,width:10,height:8,fill:`white`,stroke:`#722ed1`,strokeWidth:2}},dependency:{strokeDasharray:`6,4`,targetMarker:{name:`classic`,size:8,fill:`#722ed1`}},composition:{strokeDasharray:0,sourceMarker:{name:`diamond`,width:12,height:8,fill:`#722ed1`,stroke:`#722ed1`}},aggregation:{strokeDasharray:0,sourceMarker:{name:`diamond`,width:12,height:8,fill:`white`,stroke:`#722ed1`,strokeWidth:2}},association:{strokeDasharray:0,targetMarker:{name:`classic`,size:8,fill:`#722ed1`}}},rt=[`top`,`right`,`bottom`,`left`].reduce((e,t)=>{let n=t===`top`?{refX:.5,refY:0}:t===`right`?{refX:1,refY:.5}:t===`bottom`?{refX:.5,refY:1}:{refX:0,refY:.5};return e[`port-${t}`]={ref:`body`,...n,r:4,fill:`#31d0c6`,stroke:`#ffffff`,strokeWidth:2,magnet:!0,style:{cursor:`crosshair`,opacity:0,transition:`opacity 0.2s`}},e},{}),it={inherit:`rect`,markup:[{tagName:`rect`,selector:`body`},{tagName:`rect`,selector:`name-rect`},{tagName:`rect`,selector:`attrs-rect`},{tagName:`rect`,selector:`methods-rect`},{tagName:`text`,selector:`name-text`},{tagName:`text`,selector:`attrs-text`},{tagName:`text`,selector:`methods-text`},{tagName:`circle`,selector:`port-top`},{tagName:`circle`,selector:`port-right`},{tagName:`circle`,selector:`port-bottom`},{tagName:`circle`,selector:`port-left`}],attrs:{rect:{width:160},body:{stroke:`#5f95ff`,strokeWidth:1,fill:`#fff`,magnet:!1,style:{cursor:`move`}},"name-rect":{fill:`#5f95ff`,stroke:`#fff`,strokeWidth:.5,magnet:!1,style:{cursor:`move`}},"attrs-rect":{fill:`#eff4ff`,stroke:`#fff`,strokeWidth:.5,magnet:!1,style:{cursor:`move`}},"methods-rect":{fill:`#eff4ff`,stroke:`#fff`,strokeWidth:.5,magnet:!1,style:{cursor:`move`}},"name-text":{ref:`name-rect`,refY:.5,refX:.5,textAnchor:`middle`,fontWeight:`bold`,fill:`#fff`,fontSize:12,pointerEvents:`none`},"attrs-text":{ref:`attrs-rect`,refY:.5,refX:5,textAnchor:`left`,fill:`black`,fontSize:10,pointerEvents:`none`},"methods-text":{ref:`methods-rect`,refY:.5,refX:5,textAnchor:`left`,fill:`black`,fontSize:10,pointerEvents:`none`},...rt}},at={router:`manhattan`,connector:{name:`rounded`,args:{radius:8}},allowBlank:!1,allowLoop:!1,allowNode:!1,snap:!0,allowEdge:!1},ot={magnetAvailable:{name:`stroke`,args:{attrs:{fill:`#31d0c6`,stroke:`#31d0c6`,opacity:1}}},magnetAdsorbed:{name:`stroke`,args:{attrs:{fill:`#5F95FF`,stroke:`#5F95FF`,opacity:1}}}},st={shape:`extends`,attrs:{line:{stroke:`#722ed1`,strokeWidth:2,targetMarker:{name:`block`,width:8,height:6,fill:`#722ed1`}}}},ct=[{id:`animal`,name:`<<Abstract>>
2
2
  动物`,x:342,y:98,attributes:[{name:`名字`,type:`string`,visibility:`public`}],methods:[{name:`新陈代谢`,returnType:`void`,visibility:`public`},{name:`繁殖`,returnType:`void`,visibility:`public`}]},{id:`bird`,name:`鸟`,x:575,y:280,attributes:[{name:`羽毛`,type:`string`,visibility:`public`},{name:`下蛋`,type:`boolean`,visibility:`public`}],methods:[]},{id:`mammal`,name:`哺乳动物`,x:844,y:319,attributes:[{name:`翅膀`,type:`boolean`,visibility:`public`}],methods:[]},{id:`dog`,name:`狗`,x:656,y:456,attributes:[{name:`下蛋`,type:`boolean`,visibility:`public`}],methods:[]},{id:`enterprise`,name:`企鹅`,x:984,y:456,attributes:[{name:`下蛋`,type:`boolean`,visibility:`public`}],methods:[]},{id:`sparrow`,name:`麻雀`,x:531,y:608,attributes:[{name:`学飞`,type:`boolean`,visibility:`public`}],methods:[]},{id:`interface-flying`,name:`<<interface>>
3
3
  飞翔`,x:762,y:608,attributes:[{name:`下蛋`,type:`boolean`,visibility:`public`}],methods:[]},{id:`qemu`,name:`气球`,x:981,y:608,attributes:[],methods:[]}],lt=[{id:`edge-1`,shape:`extends`,source:`bird`,target:`animal`},{id:`edge-2`,shape:`extends`,source:`mammal`,target:`animal`},{id:`edge-3`,shape:`extends`,source:`dog`,target:`mammal`},{id:`edge-4`,shape:`extends`,source:`enterprise`,target:`mammal`},{id:`edge-5`,shape:`extends`,source:`sparrow`,target:`bird`},{id:`edge-6`,shape:`implement`,source:`sparrow`,target:`interface-flying`},{id:`edge-7`,shape:`implement`,source:`enterprise`,target:`interface-flying`},{id:`edge-8`,shape:`association`,source:`bird`,target:`mammal`,label:`1:2`}],ut=e=>tt[e]||`+`,dt={name:`新类`,attributes:[{name:`attribute`,type:`string`,visibility:`private`}],methods:[{name:`method`,returnType:`void`,visibility:`public`}],position:{x:100,y:100}},ft={class:`uml-layout`},pt={key:0,class:`toolbar`};var mt=n(f({__name:`index`,props:{data:{},showToolbar:{type:Boolean,default:!0},readonly:{type:Boolean,default:!1},width:{default:`100%`},height:{default:`600px`},theme:{}},emits:[`ready`,`data-change`],setup(e,{expose:n,emit:i}){let o=e,f=i,p=b(),{graph:m,initGraph:h,centerContent:g,zoomToFit:v,scheduleZoomToFit:x}=J(p,a(()=>o.theme===`dark`)),{exportOptions:S,handleExport:C}=$(m,`uml-diagram`),{bindInteractions:w}=ve(m,{defaultColor:`#722ed1`,portPositions:[`top`,`right`,`bottom`,`left`],onDataChange:()=>z(),isReadonly:()=>o.readonly}),E=b(!1),k=b(),j=()=>{G.registerNode(`class`,{...it,propHooks(e){let{name:t,attributes:n,methods:r,...i}=e;if(!(t&&n&&r))return e;let a=0;return[{type:`name`,text:t},{type:`attrs`,text:n},{type:`methods`,text:r}].forEach(e=>{let t=Array.isArray(e.text)?e.text.length*12+16:32;K.setByPath(i,`attrs/${e.type}-text/text`,Array.isArray(e.text)?e.text.join(`
4
4
  `):e.text),K.setByPath(i,`attrs/${e.type}-rect/height`,t),K.setByPath(i,`attrs/${e.type}-rect/transform`,`translate(0,${a})`),a+=t}),i.size={width:160,height:a},i}},!0),Object.entries(nt).forEach(([e,t])=>{G.registerEdge(e,{inherit:`edge`,attrs:{line:{strokeWidth:2,stroke:`#722ed1`,...t}}},!0)})},M=e=>{if(!m.value)return;let t=[`extends`,`composition`,`implement`,`dependency`,`aggregation`,`association`],n=[];e.forEach(e=>{if(t.includes(e.shape)){let t=m.value.createEdge(e);e.data&&t.setData(r(e.data)),n.push(t)}else{let{data:t,...i}=e,a=m.value.createNode(i);t&&a.setData(r(t)),n.push(a)}}),m.value.resetCells(n),n.length&&x(200,10)},N=e=>({name:e.name,attributes:e.attributes.map(e=>`${ut(e.visibility)} ${e.name}: ${e.type}`),methods:e.methods.map(e=>`${ut(e.visibility)} ${e.name}(): ${e.returnType}`)}),P=()=>{if(o.readonly||!m.value)return;let e={id:`class_${Date.now()}`,...r(dt)},t={id:e.id,shape:`class`,x:e.position.x,y:e.position.y,...N(e),data:e};m.value.addCell(m.value.createNode(t)),z()},F=e=>{o.readonly||(k.value=r(e),E.value=!0)},I=()=>{if(o.readonly||!m.value||!k.value)return;let e=m.value.getCellById(k.value.id);e&&(e.setData(r(k.value)),e.prop(N(k.value))),E.value=!1,z()},L=()=>{o.readonly||!m.value||!k.value||(m.value.getCellById(k.value.id)?.remove(),E.value=!1,z())},R=()=>({classes:m.value?.getNodes().map(e=>({...r(e.getData()),position:e.getPosition()}))||[],relations:m.value?.getEdges().map(e=>{let t=e.getData();return{id:e.id,type:e.shape===`extends`?`inheritance`:e.shape===`implement`?`implementation`:e.shape,source:e.getSourceCellId()||``,target:e.getTargetCellId()||``,name:t?.name,multiplicity:t?.multiplicity}})||[]}),z=()=>{o.readonly||f(`data-change`,R())},B=e=>{M([...e.classes.map(e=>({id:e.id,shape:`class`,x:e.position?.x??50,y:e.position?.y??50,...N(e),data:e})),...e.relations.map(e=>({id:e.id,shape:e.type===`inheritance`?`extends`:e.type===`implementation`?`implement`:e.type,source:e.source,target:e.target,data:{name:e.name,multiplicity:e.multiplicity}}))])};return D(m,e=>{if(!(e instanceof G))return;j(),se(e,()=>o.readonly),w(),e.on(`node:dblclick`,({node:e})=>{!o.readonly&&e.getData()&&F(e.getData())}),e.on(`node:moved`,z),f(`ready`,e);let t=[...ct.map(e=>({id:e.id,shape:`class`,x:e.x,y:e.y,...N(e),data:{id:e.id,name:e.name,attributes:e.attributes,methods:e.methods,position:{x:e.x,y:e.y}}})),...lt];o.data?B(o.data):M(t)},{immediate:!0}),D(()=>o.data,e=>{m.value&&e&&B(e)},{deep:!0}),D(()=>o.readonly,e=>{e&&(E.value=!1,k.value=void 0)},{flush:`sync`}),ee(()=>{h({interacting:()=>!o.readonly,connecting:{...at,validateMagnet:()=>!o.readonly,validateEdge:()=>!o.readonly,createEdge:()=>m.value.createEdge(st),validateConnection:({sourceView:e,targetView:t,sourceMagnet:n,targetMagnet:r})=>!o.readonly&&e!==t&&!!n&&!!r&&n.getAttribute(`magnet`)===`true`&&r.getAttribute(`magnet`)===`true`},highlighting:ot})}),n({getGraph:()=>m.value,getData:R,addClass:P,centerContent:g,zoomToFit:v}),(n,r)=>(y(),c(`div`,ft,[e.showToolbar?(y(),c(`div`,pt,[d(T(W),null,{default:O(()=>[d(T(A),{onClick:P,disabled:e.readonly,type:`primary`,size:`small`},{icon:O(()=>[d(t,{name:`mdi:plus-box`,size:16})]),default:O(()=>[r[3]||=u(` 添加类 `,-1)]),_:1},8,[`disabled`]),d(T(A),{onClick:T(g),size:`small`},{icon:O(()=>[d(t,{name:`mdi:image-filter-center-focus`,size:16})]),default:O(()=>[r[4]||=u(` 居中 `,-1)]),_:1},8,[`onClick`]),d(T(A),{onClick:T(v),size:`small`},{icon:O(()=>[d(t,{name:`mdi:fit-to-screen`,size:16})]),default:O(()=>[r[5]||=u(` 适应 `,-1)]),_:1},8,[`onClick`]),d(T(te),{options:T(S),onSelect:r[0]||=e=>T(C)(e,R)},{default:O(()=>[d(T(A),{size:`small`},{icon:O(()=>[d(t,{name:`mdi:export`,size:16})]),default:O(()=>[r[6]||=u(` 导出 `,-1)]),_:1})]),_:1},8,[`options`])]),_:1})])):s(`v-if`,!0),l(`div`,{ref_key:`containerRef`,ref:p,class:`graph-container`,style:_({width:o.width,height:o.height})},null,4),d(et,{show:E.value,"editing-class":k.value,"onUpdate:editingClass":r[1]||=e=>k.value=e,"onUpdate:show":r[2]||=e=>E.value=e,onSave:I,onDelete:L},null,8,[`show`,`editing-class`])]))}}),[[`__scopeId`,`data-v-90e76429`]]);const ht=e=>e===`task`?`activity`:e===`gateway`?`gateway`:`event`,gt=e=>{let t=e.data?.type;return t===`start`||t===`end`||t===`task`||t===`gateway`||t===`event`?t:e.shape===`activity`?`task`:e.shape===`gateway`?`gateway`:`event`},_t=e=>[...e.nodes.map(e=>{let t=ht(e.type);return{id:e.id,shape:t,x:e.position.x,y:e.position.y,width:t===`activity`?120:t===`gateway`?40:50,height:t===`activity`?60:t===`gateway`?40:50,label:e.name,data:{...e.properties,type:e.type}}}),...e.flows.map(e=>({id:e.id,shape:`bpmn-edge`,source:e.source,target:e.target,label:e.name,x:0,y:0,data:e.condition?{condition:e.condition}:void 0}))],vt=e=>({nodes:e.filter(e=>e.shape!==`bpmn-edge`).map(e=>{let t={...e.data};return delete t.type,{id:e.id,type:gt(e),name:e.label??``,position:{x:e.x,y:e.y},properties:t}}),flows:e.filter(e=>e.shape===`bpmn-edge`).map(e=>({id:e.id,source:e.source??``,target:e.target??``,name:e.label,condition:typeof e.data?.condition==`string`?e.data.condition:void 0}))}),yt={class:`c-antv-container`};var bt=n(f({name:`C_AntV`,__name:`index`,props:{type:{},data:{},width:{default:`100%`},height:{default:`600px`},readonly:{type:Boolean,default:!1},showToolbar:{type:Boolean,default:!0},theme:{default:`light`}},emits:[`ready`,`data-change`],setup(e,{expose:t,emit:n}){let r=e,i=n,s=b(),l={er:ge,bpmn:Ke,uml:mt},u=a(()=>l[r.type]),d=a(()=>{let e={width:r.width,height:r.height,readonly:r.readonly,showToolbar:r.showToolbar,theme:r.theme},t=r.type===`bpmn`&&r.data&&`nodes`in r.data?_t(r.data):r.data;return{...e,data:t}}),f=e=>{i(`ready`,e)},p=e=>{i(`data-change`,r.type===`bpmn`&&Array.isArray(e)?vt(e):e)};return t({getGraph:()=>s.value?.getGraph()??void 0,getData:()=>{let e=s.value?.getData();return r.type===`bpmn`&&Array.isArray(e)?vt(e):Array.isArray(e)?void 0:e}}),(e,t)=>(y(),c(`div`,yt,[(y(),o(S(u.value),m(d.value,{onReady:f,onDataChange:p,ref_key:`layoutRef`,ref:s}),null,16))]))}}),[[`__scopeId`,`data-v-f70bf9bd`]]);export{J as i,ve as n,$ as r,bt as t};
@@ -65,40 +65,328 @@
65
65
  .transform[data-v-075758a0]{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}
66
66
  .px[data-v-075758a0]{padding-left:1rem;padding-right:1rem;}
67
67
 
68
- .c-breadcrumb {
69
- --c-breadcrumb-icon-size: 16px;
70
- --c-breadcrumb-gap: 4px;
71
- --c-breadcrumb-font-size: inherit;
68
+ .c-breadcrumb-menu[data-v-3ca99da3] {
69
+ margin: 0;
70
+ padding: 0;
71
+ list-style: none;
72
+ }
73
+ .c-breadcrumb-menu[role=group][data-v-3ca99da3] {
74
+ margin-left: 13px;
75
+ padding-left: 8px;
76
+ border-left: 1px solid var(--c-crumb-border);
77
+ }
78
+ .c-breadcrumb-menu__item[data-v-3ca99da3] {
79
+ margin: 2px 0;
80
+ }
81
+ .c-breadcrumb-menu__directory[data-v-3ca99da3], .c-breadcrumb-menu__page[data-v-3ca99da3] {
82
+ box-sizing: border-box;
72
83
  display: flex;
73
84
  align-items: center;
85
+ gap: 9px;
86
+ width: 100%;
87
+ min-width: 0;
88
+ min-height: 38px;
89
+ padding: 5px 8px;
90
+ border: 0;
91
+ border-radius: 8px;
92
+ background: transparent;
93
+ color: var(--c-crumb-text);
94
+ font: inherit;
95
+ font-size: 13px;
96
+ line-height: 20px;
97
+ text-align: left;
98
+ cursor: pointer;
99
+ transition: background-color 0.15s ease, color 0.15s ease;
100
+ }
101
+ .c-breadcrumb-menu__directory[data-v-3ca99da3]:hover:not(:disabled), .c-breadcrumb-menu__page[data-v-3ca99da3]:hover:not(:disabled) {
102
+ background: var(--c-crumb-hover);
103
+ color: var(--c-crumb-current);
104
+ }
105
+ .c-breadcrumb-menu__directory[data-v-3ca99da3]:focus-visible, .c-breadcrumb-menu__page[data-v-3ca99da3]:focus-visible {
106
+ outline: 2px solid var(--c-crumb-primary);
107
+ outline-offset: -2px;
108
+ background: var(--c-crumb-hover);
109
+ }
110
+ .c-breadcrumb-menu__directory[data-v-3ca99da3]:disabled, .c-breadcrumb-menu__page[data-v-3ca99da3]:disabled {
111
+ cursor: not-allowed;
112
+ opacity: 0.5;
113
+ }
114
+ .c-breadcrumb-menu__directory[aria-current=page][data-v-3ca99da3], .c-breadcrumb-menu__page[aria-current=page][data-v-3ca99da3] {
115
+ background: color-mix(in srgb, var(--c-crumb-primary) 8%, transparent);
116
+ color: var(--c-crumb-primary);
117
+ cursor: default;
118
+ opacity: 1;
119
+ }
120
+ .c-breadcrumb-menu__icon[data-v-3ca99da3] {
121
+ display: inline-flex;
122
+ flex: none;
123
+ align-items: center;
124
+ justify-content: center;
125
+ width: 26px;
126
+ height: 26px;
127
+ border-radius: 7px;
128
+ background: color-mix(in srgb, var(--c-crumb-primary) 7%, transparent);
129
+ color: var(--c-crumb-primary);
130
+ }
131
+ .c-breadcrumb-menu__icon svg[data-v-3ca99da3] {
132
+ width: 17px;
133
+ height: 17px;
134
+ }
135
+ .c-breadcrumb-menu__icon.is-directory[data-v-3ca99da3] {
136
+ background: var(--c-crumb-hover);
137
+ color: var(--c-crumb-muted);
138
+ }
139
+ .c-breadcrumb-menu__label[data-v-3ca99da3] {
140
+ flex: 1;
141
+ min-width: 0;
142
+ overflow: hidden;
143
+ text-overflow: ellipsis;
144
+ white-space: nowrap;
145
+ }
146
+ .c-breadcrumb-menu__count[data-v-3ca99da3], .c-breadcrumb-menu__current[data-v-3ca99da3] {
147
+ flex: none;
148
+ min-width: 20px;
149
+ padding: 0 6px;
150
+ border-radius: 9px;
151
+ background: var(--c-crumb-hover);
152
+ color: var(--c-crumb-muted);
153
+ font-size: 11px;
154
+ line-height: 18px;
155
+ text-align: center;
156
+ }
157
+ .c-breadcrumb-menu__current[data-v-3ca99da3] {
158
+ background: color-mix(in srgb, var(--c-crumb-primary) 10%, transparent);
159
+ color: var(--c-crumb-primary);
160
+ }
161
+ .c-breadcrumb-menu__chevron[data-v-3ca99da3] {
162
+ flex: none;
163
+ width: 12px;
164
+ height: 12px;
165
+ color: var(--c-crumb-muted);
166
+ transition: transform 0.16s ease;
167
+ }
168
+ .c-breadcrumb-menu__chevron.is-expanded[data-v-3ca99da3] {
169
+ transform: rotate(90deg);
170
+ }
171
+ @media (prefers-reduced-motion: reduce) {
172
+ .c-breadcrumb-menu__directory[data-v-3ca99da3],
173
+ .c-breadcrumb-menu__page[data-v-3ca99da3],
174
+ .c-breadcrumb-menu__chevron[data-v-3ca99da3] {
175
+ transition: none;
176
+ }
177
+ }
178
+
179
+ /* layer: default */
180
+ .m6[data-v-3ca99da3]{margin:1.5rem;}
181
+
182
+ /* 路径与目录浮层仅使用组件自身类名,主题色由 Naive 提供。 */
183
+ .c-breadcrumb[data-v-69d2eaf4] {
184
+ --c-breadcrumb-font-size: 13px;
185
+ display: flex;
186
+ align-items: center;
187
+ width: 100%;
188
+ min-width: 0;
74
189
  height: 100%;
75
190
  }
76
- .c-breadcrumb__trigger, .c-breadcrumb__link {
191
+ .c-breadcrumb__path[data-v-69d2eaf4] {
192
+ box-sizing: border-box;
193
+ display: flex;
194
+ align-items: center;
195
+ width: 100%;
196
+ min-width: 0;
197
+ margin: 0;
198
+ padding: 3px;
199
+ list-style: none;
200
+ }
201
+ .c-breadcrumb__item[data-v-69d2eaf4] {
202
+ display: flex;
203
+ flex: 0 1 auto;
204
+ align-items: center;
205
+ min-width: 0;
206
+ }
207
+ .c-breadcrumb__item.is-current[data-v-69d2eaf4] {
208
+ flex: 1 1 auto;
209
+ }
210
+ .c-breadcrumb__item.is-overflow[data-v-69d2eaf4] {
211
+ flex: none;
212
+ }
213
+ .c-breadcrumb__item:last-child .c-breadcrumb__separator[data-v-69d2eaf4] {
214
+ display: none;
215
+ }
216
+ .c-breadcrumb__trigger[data-v-69d2eaf4], .c-breadcrumb__link[data-v-69d2eaf4], .c-breadcrumb__current[data-v-69d2eaf4] {
217
+ box-sizing: border-box;
77
218
  display: inline-flex;
78
219
  align-items: center;
79
- gap: var(--c-breadcrumb-gap);
220
+ gap: var(--c-breadcrumb-gap, 4px);
221
+ min-width: 0;
222
+ max-width: 220px;
223
+ min-height: 28px;
224
+ padding: 3px 7px;
225
+ border: 1px solid transparent;
226
+ border-radius: 7px;
227
+ background: transparent;
228
+ color: var(--c-crumb-text);
229
+ font: inherit;
80
230
  font-size: var(--c-breadcrumb-font-size);
81
- line-height: 1;
231
+ font-weight: 500;
232
+ line-height: 20px;
233
+ text-align: left;
234
+ transition: color 0.15s ease, background-color 0.15s ease, border-color 0.15s ease;
235
+ }
236
+ .c-breadcrumb__trigger .c-icon[data-v-69d2eaf4], .c-breadcrumb__link .c-icon[data-v-69d2eaf4], .c-breadcrumb__current .c-icon[data-v-69d2eaf4] {
237
+ flex: none;
238
+ }
239
+ .c-breadcrumb__trigger[data-v-69d2eaf4], .c-breadcrumb__link[data-v-69d2eaf4] {
82
240
  cursor: pointer;
83
241
  }
84
- .c-breadcrumb .c-icon {
85
- flex-shrink: 0;
242
+ .c-breadcrumb__trigger[data-v-69d2eaf4]:hover:not(:disabled), .c-breadcrumb__trigger.is-open[data-v-69d2eaf4], .c-breadcrumb__link[data-v-69d2eaf4]:hover:not(:disabled), .c-breadcrumb__link.is-open[data-v-69d2eaf4] {
243
+ border-color: color-mix(in srgb, var(--c-crumb-primary) 17%, transparent);
244
+ background: color-mix(in srgb, var(--c-crumb-primary) 6%, transparent);
245
+ color: var(--c-crumb-primary);
246
+ }
247
+ .c-breadcrumb__trigger[data-v-69d2eaf4]:focus-visible, .c-breadcrumb__link[data-v-69d2eaf4]:focus-visible {
248
+ outline: 2px solid var(--c-crumb-primary);
249
+ outline-offset: 1px;
250
+ }
251
+ .c-breadcrumb__trigger[data-v-69d2eaf4]:disabled, .c-breadcrumb__link[data-v-69d2eaf4]:disabled {
252
+ color: var(--c-crumb-muted);
253
+ cursor: not-allowed;
254
+ opacity: 0.6;
255
+ }
256
+ .c-breadcrumb__current[data-v-69d2eaf4] {
257
+ position: relative;
258
+ max-width: 100%;
259
+ color: var(--c-crumb-current);
260
+ font-weight: 600;
261
+ }
262
+ .c-breadcrumb__current[data-v-69d2eaf4]::after {
263
+ position: absolute;
264
+ right: 7px;
265
+ bottom: 1px;
266
+ left: 7px;
267
+ height: 1.5px;
268
+ border-radius: 1px;
269
+ background: linear-gradient(90deg, color-mix(in srgb, var(--c-crumb-primary) 50%, transparent), transparent);
270
+ content: "";
271
+ }
272
+ .c-breadcrumb__current .c-icon[data-v-69d2eaf4] {
273
+ color: var(--c-crumb-primary);
274
+ }
275
+ .c-breadcrumb__label[data-v-69d2eaf4] {
276
+ overflow: hidden;
277
+ text-overflow: ellipsis;
278
+ white-space: nowrap;
279
+ }
280
+ .c-breadcrumb__separator[data-v-69d2eaf4] {
281
+ flex: none;
282
+ margin: 0 5px;
283
+ color: color-mix(in srgb, var(--c-crumb-muted) 60%, transparent);
284
+ font-size: 12px;
285
+ font-weight: 400;
286
+ }
287
+ .c-breadcrumb__chevron[data-v-69d2eaf4] {
288
+ flex: none;
289
+ width: 12px;
290
+ height: 12px;
291
+ color: var(--c-crumb-muted);
292
+ transition: transform 0.16s ease;
293
+ }
294
+ .c-breadcrumb__trigger.is-open .c-breadcrumb__chevron[data-v-69d2eaf4] {
295
+ transform: rotate(180deg);
296
+ }
297
+ .c-breadcrumb.is-narrow .c-breadcrumb__path[data-v-69d2eaf4] {
298
+ gap: 4px;
299
+ padding: 0;
86
300
  }
87
- .c-breadcrumb .n-breadcrumb-item {
88
- display: inline-flex !important;
301
+ .c-breadcrumb.is-narrow .c-breadcrumb__separator[data-v-69d2eaf4] {
302
+ display: none;
303
+ }
304
+ .c-breadcrumb.is-narrow .c-breadcrumb__item.is-current[data-v-69d2eaf4] {
305
+ flex: 1 1 0;
306
+ }
307
+ .c-breadcrumb.is-narrow .c-breadcrumb__item.is-overflow .c-breadcrumb__trigger[data-v-69d2eaf4] {
308
+ width: 28px;
309
+ padding: 3px 0;
310
+ justify-content: center;
311
+ }
312
+ .c-breadcrumb.is-narrow .c-breadcrumb__current[data-v-69d2eaf4] {
313
+ padding: 3px 0;
314
+ border: 0;
315
+ }
316
+ .c-breadcrumb.is-narrow .c-breadcrumb__current .c-icon[data-v-69d2eaf4] {
317
+ display: none;
318
+ }
319
+ .c-breadcrumb-panel[data-v-69d2eaf4] {
320
+ box-sizing: border-box;
321
+ width: 100%;
322
+ max-width: calc(100vw - 24px);
323
+ color: var(--c-crumb-text);
324
+ }
325
+ .c-breadcrumb-panel__header[data-v-69d2eaf4] {
326
+ display: flex;
89
327
  align-items: center;
328
+ gap: 10px;
329
+ min-height: 64px;
330
+ padding: 12px 14px;
331
+ border-bottom: 1px solid var(--c-crumb-border);
332
+ background: linear-gradient(120deg, color-mix(in srgb, var(--c-crumb-primary) 4%, transparent), transparent);
90
333
  }
91
- .c-breadcrumb .n-breadcrumb-item .n-breadcrumb-item__separator {
334
+ .c-breadcrumb-panel__icon[data-v-69d2eaf4] {
92
335
  display: inline-flex;
336
+ flex: none;
93
337
  align-items: center;
94
- line-height: 1;
95
- margin-top: -4px;
338
+ justify-content: center;
339
+ width: 34px;
340
+ height: 34px;
341
+ border: 1px solid color-mix(in srgb, var(--c-crumb-primary) 12%, transparent);
342
+ border-radius: 9px;
343
+ background: color-mix(in srgb, var(--c-crumb-primary) 8%, transparent);
344
+ color: var(--c-crumb-primary);
345
+ }
346
+ .c-breadcrumb-panel__icon svg[data-v-69d2eaf4] {
347
+ width: 21px;
348
+ height: 21px;
349
+ }
350
+ .c-breadcrumb-panel__heading[data-v-69d2eaf4] {
351
+ display: flex;
352
+ flex: 1;
353
+ flex-direction: column;
354
+ min-width: 0;
355
+ gap: 2px;
356
+ }
357
+ .c-breadcrumb-panel__heading h2[data-v-69d2eaf4] {
358
+ margin: 0;
359
+ overflow: hidden;
360
+ color: var(--c-crumb-current);
361
+ font-size: 14px;
362
+ font-weight: 600;
363
+ line-height: 21px;
364
+ text-overflow: ellipsis;
365
+ white-space: nowrap;
366
+ }
367
+ .c-breadcrumb-panel__heading small[data-v-69d2eaf4] {
368
+ color: var(--c-crumb-muted);
369
+ font-size: 12px;
370
+ line-height: 18px;
371
+ }
372
+ .c-breadcrumb-panel__body[data-v-69d2eaf4] {
373
+ max-height: min(380px, 65dvh);
374
+ padding: 7px;
375
+ overflow: auto;
376
+ scrollbar-width: thin;
377
+ scrollbar-color: var(--c-crumb-border) transparent;
378
+ overscroll-behavior: contain;
379
+ }
380
+ @media (prefers-reduced-motion: reduce) {
381
+ .c-breadcrumb__trigger[data-v-69d2eaf4],
382
+ .c-breadcrumb__link[data-v-69d2eaf4],
383
+ .c-breadcrumb__chevron[data-v-69d2eaf4] {
384
+ transition: none;
385
+ }
96
386
  }
97
387
 
98
388
  /* layer: default */
99
- .min-w-0[data-v-a86331d5]{min-width:0;}
100
- .flex[data-v-a86331d5]{display:flex;}
101
- .inline-flex[data-v-a86331d5]{display:inline-flex;}
102
- .flex-1[data-v-a86331d5]{flex:1 1 0%;}
103
- .flex-shrink[data-v-a86331d5]{flex-shrink:1;}
104
- .px[data-v-a86331d5]{padding-left:1rem;padding-right:1rem;}
389
+ .m5[data-v-69d2eaf4]{margin:1.25rem;}
390
+ .hidden[data-v-69d2eaf4]{display:none;}
391
+ .border[data-v-69d2eaf4]{border-width:1px;}
392
+ .px[data-v-69d2eaf4]{padding-left:1rem;padding-right:1rem;}
@@ -1,3 +1,3 @@
1
1
  import { t as BreadcrumbItem } from "./types.cjs";
2
- import { t as _default } from "./index5.vue.cjs";
3
- export { type BreadcrumbItem, _default as C_Breadcrumb };
2
+ import { n as BreadcrumbMenuItem, t as _default } from "./index5.vue.cjs";
3
+ export { type BreadcrumbItem, type BreadcrumbMenuItem, _default as C_Breadcrumb };
@@ -1,3 +1,3 @@
1
1
  import { i as BreadcrumbItem } from "./public.js";
2
- import { t as _default } from "./index4.vue.js";
3
- export { type BreadcrumbItem, _default as C_Breadcrumb };
2
+ import { n as BreadcrumbMenuItem, t as _default } from "./index4.vue.js";
3
+ export { type BreadcrumbItem, type BreadcrumbMenuItem, _default as C_Breadcrumb };
@@ -1 +1 @@
1
- require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`),i=require(`vue-router`);const a={class:`c-breadcrumb__trigger`},o=[`onClick`],s=(0,n.defineComponent)({name:`C_Breadcrumb`,__name:`index`,props:{items:{},showIcon:{type:Boolean,default:!0},iconSize:{default:16},labelFormatter:{}},emits:[`select`],setup(t,{emit:s}){let c=t,l=s,u=(0,i.useRoute)(),d=e=>c.labelFormatter?c.labelFormatter(e):e,f=(0,n.computed)(()=>u.matched.filter(e=>e.meta?.title).map(e=>({key:e.path,label:d(e.meta.title||``),icon:e.meta.icon,children:e.children?.length?e.children.map(e=>({key:e.path,label:d(e.meta?.title||``),...e.children?.length&&{children:e.children.map(e=>({key:e.path,label:d(e.meta?.title||``)}))}})):[]}))),p=(0,n.computed)(()=>c.items??f.value),m=e=>{l(`select`,e)};return(i,s)=>{let c=r.NDropdown,l=r.NBreadcrumbItem,u=r.NBreadcrumb;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:`c-breadcrumb flex-1 min-w-0`,style:(0,n.normalizeStyle)({"--c-breadcrumb-icon-size":`${t.iconSize}px`,"--c-breadcrumb-gap":`${Math.max(Math.round(t.iconSize/4),2)}px`})},[(0,n.createVNode)(u,null,{default:(0,n.withCtx)(()=>[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(p.value,(r,i)=>((0,n.openBlock)(),(0,n.createBlock)(l,{key:i},{default:(0,n.withCtx)(()=>[r.children?.length?((0,n.openBlock)(),(0,n.createBlock)(c,{key:0,options:r.children,onSelect:m},{default:(0,n.withCtx)(()=>[(0,n.createElementVNode)(`div`,a,[t.showIcon&&r.icon?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(e.t),{key:0,name:r.icon,size:t.iconSize},null,8,[`name`,`size`])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(r.label),1)])]),_:2},1032,[`options`])):((0,n.openBlock)(),(0,n.createElementBlock)(`span`,{key:1,class:`c-breadcrumb__link`,onClick:e=>m(r.key)},[t.showIcon&&r.icon?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(e.t),{key:0,name:r.icon,size:t.iconSize},null,8,[`name`,`size`])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(r.label),1)],8,o))]),_:2},1024))),128))]),_:1})],4)}}});var c=t.t(s,[[`__scopeId`,`data-v-a86331d5`]]);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return c}});
1
+ require(`./chunk.cjs`);const e=require(`./useComponentLocale.cjs`),t=require(`./C_Icon2.cjs`),n=require(`./export-helper.cjs`);let r=require(`vue`),i=require(`naive-ui`),a=require(`vue-router`);const o=e=>typeof e==`string`?e.trim():``,s=e=>e[e.length-1],c=e=>e.split(/[?#]/,1)[0],l=e=>/(^|\/)[:*]/.test(c(e));function u(e){let t=[];for(let n of e.split(`/`))!n||n===`.`||(n===`..`?t.pop():t.push(n));return`/${t.join(`/`)}`}function d(e,t=``){let n=String(e??``).trim();if(!n||/^(?:[a-z][\w+.-]*:|\/\/|#)/i.test(n))return``;let r=n.search(/[?#]/),i=r<0?``:n.slice(r),a=r<0?n:n.slice(0,r);return`${u(a.startsWith(`/`)?a:`${c(t)}/${a}`)}${i}`}const f=e=>o(e.label)||o(e.meta?.title),p=e=>o(e.icon)||o(e.meta?.icon)||void 0,m=e=>e.meta?.hidden===!0||e.type===`divider`,h=e=>e.type===`group`||e.meta?.breadcrumb===!1;function g(e,t,n){if(m(e))return[];let r=n||e.disabled===!0,i=e.type===`group`?t:d(o(e.path)||e.key,t),a=_(e.children??[],i||t,r),s=f(e);return h(e)||!s||!i?a:[{path:i,label:s,icon:p(e),disabled:r,children:a}]}function _(e,t=``,n=!1){return e.flatMap(e=>g(e,t,n))}function v(e,t){return e.flatMap(e=>{let n=v(e.children,t);return l(e.path)&&!n.length?[]:[{key:e.path,label:t(e.label),icon:e.icon,disabled:e.disabled||l(e.path),...n.length?{children:n}:{}}]})}function y(e,t,n=e.path){return{key:n,label:t(e.label),icon:e.icon,disabled:e.disabled||l(n),children:v(e.children,t)}}function b(e,t,n){let r=c(e.path);return r===t||l(r)&&r===s(n)?3e5+r.length:r!==`/`&&t.startsWith(`${r}/`)?2e5+r.length:n.includes(r)?1e5+r.length:0}function x(e,t,n){let r=[],i=0,a=(e,o)=>{e.forEach(e=>{let s=[...o,e],c=b(e,t,n);c>i&&(r=s,i=c),a(e.children,s)})};return a(e,[]),r}function S(e,t){let n=o(e?.meta?.title);if(n)return n;let r=typeof e?.name==`symbol`?e.name.description:e?.name;if(o(r))return o(r);let i=s(c(t).split(`/`).filter(Boolean))||`/`;try{return decodeURIComponent(i).replace(/[-_]+/g,` `)}catch{return i}}function C(e,t){let n=[],r=``;return e.matched.forEach((i,a)=>{r=d(i.path,r);let o=a===e.matched.length-1,s=T(i,r,o,e,t);s&&n.push(s)}),n}function w(e,t){return e.meta?.breadcrumb===!1?!1:t||e.meta?.hidden!==!0&&!!o(e.meta?.title)}function T(e,t,n,r,i){if(!w(e,n))return;let a=r.menus===void 0?_(e.children??[],t):[];return{key:n?r.path:t,label:i(n?S(e,r.path):o(e.meta?.title)),icon:p(e),disabled:!n&&l(t),children:v(a,i)}}function E(e,t,n){return e?c(e.path)===t||l(e.path)&&c(e.path)===s(n):!1}function D(e,t){let n=c(d(e.path)||e.path),r=_(e.menus??[]),i=e.matched.map(e=>c(e.path)),a=x(r,n,i),o=s(a),l=E(o,n,i),u=s(e.matched)?.meta?.breadcrumb===!1&&l?a.slice(0,-1):a;if(u.length)return u.map(n=>y(n,t,l&&n===o?e.path:n.path))}function O(e,t=!1){return e.map(e=>({...e,...t?{disabled:!0}:{},...e.children===void 0?{}:{children:O(e.children,t||e.disabled===!0)}}))}function k(e,t,n){let r=s(t.matched);return r?.meta?.breadcrumb===!1||s(e)?.key===t.path||e.push({key:t.path,label:n(S(r,t.path)),icon:r?p(r):void 0}),e}function A(e){return e.reduce((e,t)=>t.disabled?e:e+(t.children?.length?A(t.children):1),0)}function j(e){if(e.items!==void 0)return O(e.items);let t=e.formatLabel??(e=>e);return k(D(e,t)??C(e,t),e,t)}const M=[`role`,`aria-label`],N=[`aria-level`,`aria-expanded`,`aria-current`,`disabled`,`title`,`onClick`],P={key:1,viewBox:`0 0 20 20`,fill:`none`},F={key:0,d:`M2.5 6a1.5 1.5 0 0 1 1.5-1.5h4l1.5 1.5H16a1.5 1.5 0 0 1 1.5 1.5v7A1.5 1.5 0 0 1 16 16H4a1.5 1.5 0 0 1-1.5-1.5Z`,stroke:`currentColor`,"stroke-width":`1.4`},I={key:1,d:`M6 2.5h5l3 3v12H6a1.5 1.5 0 0 1-1.5-1.5V4A1.5 1.5 0 0 1 6 2.5Zm4.5 0v4H14M7 10h5m-5 3h5`,stroke:`currentColor`,"stroke-width":`1.3`,"stroke-linejoin":`round`},L={class:`c-breadcrumb-menu__label`},R={key:1,class:`c-breadcrumb-menu__count`},z={key:2,class:`c-breadcrumb-menu__current`},B=(0,r.defineComponent)({name:`BreadcrumbMenu`,__name:`BreadcrumbMenu`,props:{items:{},currentKey:{},level:{default:0},showIcon:{type:Boolean},iconSize:{}},emits:[`select`],setup(n,{emit:i}){let a=n,o=i,{t:s}=e.t(),c=(0,r.ref)(null),l=(0,r.ref)(new Set),u=e=>e.some(e=>e.key===a.currentKey||e.children&&u(e.children));(0,r.watch)([()=>a.items,()=>a.currentKey],()=>{l.value=new Set(a.items.filter(e=>e.children&&u(e.children)).map(e=>e.key))},{immediate:!0});let d=e=>{if(!e.disabled)if(e.children?.length){let t=new Set(l.value);t.has(e.key)?t.delete(e.key):t.add(e.key),l.value=t}else e.key!==a.currentKey&&o(`select`,e.key)},f=e=>{if(!(a.level!==0||!(e.target instanceof HTMLButtonElement)))for(let t of c.value?.querySelectorAll(`button[role="treeitem"]`)??[])t.tabIndex=t===e.target?0:-1},p=(e,t)=>{if(e.hasAttribute(`aria-expanded`)){if(e.getAttribute(`aria-expanded`)===`true`){t?.focus();return}e.click(),(0,r.nextTick)(()=>e.parentElement?.querySelector(`ul button:not(:disabled)`)?.focus())}},m=e=>{e.getAttribute(`aria-expanded`)===`true`?e.click():e.closest(`ul[role="group"]`)?.parentElement?.querySelector(`button[role="treeitem"]`)?.focus()},h=e=>{if(a.level!==0||!(e.target instanceof HTMLButtonElement))return;let{target:t}=e,n=[...c.value?.querySelectorAll(`button[role="treeitem"]:not(:disabled)`)??[]],r=n.indexOf(t);if(r<0)return;let i={ArrowDown:Math.min(r+1,n.length-1),ArrowUp:Math.max(r-1,0),Home:0,End:n.length-1};if(e.key in i){e.preventDefault(),n[i[e.key]]?.focus();return}e.key===`ArrowRight`?(e.preventDefault(),p(t,n[r+1])):e.key===`ArrowLeft`&&(e.preventDefault(),m(t))};return(0,r.onMounted)(()=>{a.level===0&&(0,r.nextTick)(()=>c.value?.querySelector(`button[role="treeitem"]:not(:disabled)`)?.focus())}),(e,i)=>{let a=(0,r.resolveComponent)(`BreadcrumbMenu`,!0);return(0,r.openBlock)(),(0,r.createElementBlock)(`ul`,{ref_key:`listRef`,ref:c,class:`c-breadcrumb-menu`,role:n.level===0?`tree`:`group`,"aria-label":n.level===0?(0,r.unref)(s)(`breadcrumb.directoryPages`):void 0,onKeydown:h,onFocusin:f},[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(n.items,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`li`,{key:e.key,role:`none`,class:`c-breadcrumb-menu__item`},[(0,r.createElementVNode)(`button`,{type:`button`,role:`treeitem`,tabindex:`-1`,"aria-level":n.level+1,"aria-expanded":e.children?.length?l.value.has(e.key):void 0,"aria-current":e.key===n.currentKey?`page`:void 0,disabled:e.disabled||!e.children?.length&&e.key===n.currentKey,class:(0,r.normalizeClass)(e.children?.length?`c-breadcrumb-menu__directory`:`c-breadcrumb-menu__page`),title:e.label,onClick:t=>d(e)},[n.showIcon?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,{key:0,class:(0,r.normalizeClass)([`c-breadcrumb-menu__icon`,{"is-directory":e.children?.length}]),"aria-hidden":`true`},[n.showIcon&&e.icon?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(t.t),{key:0,name:e.icon,size:Math.min(n.iconSize,18)},null,8,[`name`,`size`])):((0,r.openBlock)(),(0,r.createElementBlock)(`svg`,P,[e.children?.length?((0,r.openBlock)(),(0,r.createElementBlock)(`path`,F)):((0,r.openBlock)(),(0,r.createElementBlock)(`path`,I))]))],2)):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createElementVNode)(`span`,L,(0,r.toDisplayString)(e.label),1),e.children?.length?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,R,(0,r.toDisplayString)((0,r.unref)(A)(e.children)),1)):e.key===n.currentKey?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,z,(0,r.toDisplayString)((0,r.unref)(s)(`breadcrumb.current`)),1)):(0,r.createCommentVNode)(`v-if`,!0),e.children?.length?((0,r.openBlock)(),(0,r.createElementBlock)(`svg`,{key:3,class:(0,r.normalizeClass)([`c-breadcrumb-menu__chevron`,{"is-expanded":l.value.has(e.key)}]),viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`},[...i[1]||=[(0,r.createElementVNode)(`path`,{d:`m6 4 4 4-4 4`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,-1)]],2)):(0,r.createCommentVNode)(`v-if`,!0)],10,N),e.children?.length&&l.value.has(e.key)?((0,r.openBlock)(),(0,r.createBlock)(a,{key:0,items:e.children,"current-key":n.currentKey,level:n.level+1,"show-icon":n.showIcon,"icon-size":n.iconSize,onSelect:i[0]||=e=>o(`select`,e)},null,8,[`items`,`current-key`,`level`,`show-icon`,`icon-size`])):(0,r.createCommentVNode)(`v-if`,!0)]))),128))],40,M)}}});var V=n.t(B,[[`__scopeId`,`data-v-3ca99da3`]]);const H=[`aria-label`],U={class:`c-breadcrumb__path`},W=[`title`],G={class:`c-breadcrumb__label`},K=[`disabled`,`aria-expanded`,`aria-label`,`title`],q={class:`c-breadcrumb__label`},J={key:1,class:`c-breadcrumb__chevron`,viewBox:`0 0 16 16`,fill:`none`,"aria-hidden":`true`},Y=[`aria-label`],X={class:`c-breadcrumb-panel__header`},Z={class:`c-breadcrumb-panel__heading`},Q={class:`c-breadcrumb-panel__body`},$=[`disabled`,`title`,`onClick`],ee={class:`c-breadcrumb__label`},te=(0,r.defineComponent)({name:`C_Breadcrumb`,__name:`index`,props:{items:{},menus:{},showIcon:{type:Boolean,default:!0},iconSize:{default:16},labelFormatter:{}},emits:[`select`],setup(n,{emit:o}){let s=n,c=o,l=(0,r.inject)(a.routeLocationKey,void 0),u=(0,r.computed)(()=>l?.path??``),d=(0,i.useThemeVars)(),{t:f}=e.t(),p=(0,r.ref)(null),m=(0,r.ref)(null),h=(0,r.ref)(`bottom-start`),g=(0,r.ref)(320),_=(0,r.ref)(1/0),v=null,y,b=!1,x=(0,r.computed)(()=>!l&&s.items===void 0?[]:j({items:s.items,menus:s.menus,matched:l?.matched??[],path:u.value,formatLabel:s.labelFormatter})),S=(0,r.computed)(()=>({"--c-breadcrumb-icon-size":`${s.iconSize}px`,"--c-breadcrumb-gap":`${Math.max(Math.round(s.iconSize/4),2)}px`,"--c-crumb-text":d.value.textColor2,"--c-crumb-muted":d.value.textColor3,"--c-crumb-current":d.value.textColor1,"--c-crumb-primary":d.value.primaryColor,"--c-crumb-border":d.value.borderColor,"--c-crumb-hover":d.value.hoverColor})),C=(0,r.computed)(()=>({boxSizing:`border-box`,width:`${g.value}px`,padding:`0`,borderRadius:`12px`,overflow:`hidden`,border:`1px solid ${d.value.borderColor}`,background:d.value.popoverColor,boxShadow:d.value.boxShadow2,maxWidth:`calc(100vw - 24px)`})),w=(0,r.computed)(()=>{let e=x.value.map((e,t)=>({key:`${t}:${e.key}`,index:t,item:e}));if(e.length<2)return e;let t=e[e.length-1];return _.value<260?[{key:`overflow`,index:-1,overflow:x.value.slice(0,-1)},t]:_.value<360&&e.length>2?[e[0],{key:`overflow`,index:-1,overflow:x.value.slice(1,-1)},t]:e}),T=(e,t)=>e.key===u.value||s.items!==void 0&&t===x.value.length-1&&!e.children?.length,E=(0,r.computed)(()=>{let e=new Set,t=n=>{for(let r of n)e.add(r.key),r.children&&t(r.children)};for(let e of x.value)t(e.children??[]);return x.value.filter(t=>!e.has(t.key))}),D=e=>e.overflow?E.value:e.item?.children??[],O=e=>{if(!(e.currentTarget instanceof HTMLButtonElement))return;v=e.currentTarget;let t=document.documentElement.clientWidth;if(t<=0)return;let n=v.getBoundingClientRect(),r=Math.min(320,Math.max(t-24,1)),i=t-n.left-12,a=n.right-12,o=i>=r||a<r&&i>=a;h.value=o?`bottom-start`:`bottom-end`,g.value=Math.max(Math.min(r,o?i:a),1)},k=(e,t)=>{m.value=e?t:m.value===t?null:m.value},M=(e=!1)=>{m.value=null,e&&(0,r.nextTick)(()=>{!b&&v?.isConnected&&v.focus()})},N=e=>{e.currentTarget instanceof HTMLElement&&!e.currentTarget.contains(e.relatedTarget instanceof Node?e.relatedTarget:null)&&M()},P=e=>{M(!0),e!==u.value&&c(`select`,e)};return(0,r.watch)([()=>l?.fullPath,x],()=>M()),(0,r.onMounted)(()=>{typeof ResizeObserver<`u`&&p.value&&(y=new ResizeObserver(([e])=>{b||!e||(_.value!==e.contentRect.width&&M(),_.value=e.contentRect.width)}),y.observe(p.value))}),(0,r.onBeforeUnmount)(()=>{b=!0,y?.disconnect(),v=null}),(e,a)=>((0,r.openBlock)(),(0,r.createElementBlock)(`nav`,{ref_key:`rootRef`,ref:p,class:(0,r.normalizeClass)([`c-breadcrumb`,{"is-narrow":_.value<120}]),"aria-label":(0,r.unref)(f)(`breadcrumb.label`),style:(0,r.normalizeStyle)(S.value)},[(0,r.createElementVNode)(`ol`,U,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(w.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`li`,{key:e.key,class:(0,r.normalizeClass)([`c-breadcrumb__item`,{"is-current":e.item&&T(e.item,e.index),"is-overflow":e.overflow}])},[e.item&&T(e.item,e.index)?((0,r.openBlock)(),(0,r.createElementBlock)(`span`,{key:0,class:`c-breadcrumb__current`,"aria-current":`page`,title:e.item.label},[n.showIcon&&e.item.icon?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(t.t),{key:0,"aria-hidden":`true`,name:e.item.icon,size:n.iconSize},null,8,[`name`,`size`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createElementVNode)(`span`,G,(0,r.toDisplayString)(e.item.label),1)],8,W)):e.overflow||e.item?.children?.length?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NPopover),{key:1,trigger:`click`,placement:h.value,show:m.value===e.key,"show-arrow":!1,style:(0,r.normalizeStyle)(C.value),class:`c-breadcrumb-popover`,disabled:e.item?.disabled,"onUpdate:show":t=>k(t,e.key)},{trigger:(0,r.withCtx)(()=>[(0,r.createElementVNode)(`button`,{type:`button`,class:(0,r.normalizeClass)([`c-breadcrumb__trigger`,{"is-open":m.value===e.key}]),disabled:e.item?.disabled,"aria-haspopup":`tree`,"aria-expanded":m.value===e.key,"aria-label":e.overflow?(0,r.unref)(f)(`breadcrumb.expandPath`):e.item?.label,title:e.item?.label,onClick:O},[e.item&&n.showIcon&&e.item.icon?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(t.t),{key:0,"aria-hidden":`true`,name:e.item.icon,size:n.iconSize},null,8,[`name`,`size`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createElementVNode)(`span`,q,(0,r.toDisplayString)(e.overflow?`…`:e.item?.label),1),e.overflow?(0,r.createCommentVNode)(`v-if`,!0):((0,r.openBlock)(),(0,r.createElementBlock)(`svg`,J,[...a[1]||=[(0,r.createElementVNode)(`path`,{d:`m5 6 3 3 3-3`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`},null,-1)]]))],10,K)]),default:(0,r.withCtx)(()=>[m.value===e.key?((0,r.openBlock)(),(0,r.createElementBlock)(`section`,{key:0,class:`c-breadcrumb-panel`,style:(0,r.normalizeStyle)(S.value),"aria-label":e.overflow?(0,r.unref)(f)(`breadcrumb.fullPath`):e.item?.label,onKeydown:a[0]||=(0,r.withKeys)((0,r.withModifiers)(e=>M(!0),[`stop`,`prevent`]),[`esc`]),onFocusout:N},[(0,r.createElementVNode)(`header`,X,[a[2]||=(0,r.createElementVNode)(`span`,{class:`c-breadcrumb-panel__icon`,"aria-hidden":`true`},[(0,r.createElementVNode)(`svg`,{viewBox:`0 0 24 24`,fill:`none`},[(0,r.createElementVNode)(`path`,{d:`M3 7a2 2 0 0 1 2-2h5l2 2h7a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z`,stroke:`currentColor`,"stroke-width":`1.6`,"stroke-linejoin":`round`}),(0,r.createElementVNode)(`path`,{d:`M3 10h18`,stroke:`currentColor`,"stroke-width":`1.6`})])],-1),(0,r.createElementVNode)(`div`,Z,[(0,r.createElementVNode)(`h2`,null,(0,r.toDisplayString)(e.overflow?(0,r.unref)(f)(`breadcrumb.fullPath`):e.item?.label),1),(0,r.createElementVNode)(`small`,null,(0,r.toDisplayString)((0,r.unref)(f)(`breadcrumb.pageCount`,{count:(0,r.unref)(A)(D(e))})),1)])]),(0,r.createElementVNode)(`div`,Q,[(0,r.createVNode)(V,{items:D(e),"current-key":u.value,"show-icon":n.showIcon,"icon-size":n.iconSize,onSelect:P},null,8,[`items`,`current-key`,`show-icon`,`icon-size`])])],44,Y)):(0,r.createCommentVNode)(`v-if`,!0)]),_:2},1032,[`placement`,`show`,`style`,`disabled`,`onUpdate:show`])):e.item?((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:2,type:`button`,class:`c-breadcrumb__link`,disabled:e.item.disabled,title:e.item.label,onClick:t=>P(e.item.key)},[n.showIcon&&e.item.icon?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(t.t),{key:0,"aria-hidden":`true`,name:e.item.icon,size:n.iconSize},null,8,[`name`,`size`])):(0,r.createCommentVNode)(`v-if`,!0),(0,r.createElementVNode)(`span`,ee,(0,r.toDisplayString)(e.item.label),1)],8,$)):(0,r.createCommentVNode)(`v-if`,!0),a[3]||=(0,r.createElementVNode)(`span`,{class:`c-breadcrumb__separator`,"aria-hidden":`true`},`/`,-1)],2))),128))])],14,H))}});var ne=n.t(te,[[`__scopeId`,`data-v-69d2eaf4`]]);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return ne}});