@robot-admin/naive-ui-components 0.11.3 → 0.11.5

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 (84) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +35 -0
  3. package/README_EN.md +34 -0
  4. package/SECURITY.md +1 -0
  5. package/dist/C_Form.d.cts +2 -2
  6. package/dist/C_Form.d.ts +2 -2
  7. package/dist/C_Form2.cjs +1 -1
  8. package/dist/C_Form2.js +1 -1
  9. package/dist/C_Map.cjs +1 -1
  10. package/dist/C_Map.css +8 -8
  11. package/dist/C_Map.d.cts +2 -2
  12. package/dist/C_Map.d.ts +2 -2
  13. package/dist/C_Map.js +1 -1
  14. package/dist/C_Map2.cjs +1 -1
  15. package/dist/C_Map2.js +1 -1
  16. package/dist/C_Table.d.ts +1 -0
  17. package/dist/constants3.d.cts +1 -1
  18. package/dist/constants3.d.ts +1 -1
  19. package/dist/constants4.d.cts +1 -1
  20. package/dist/constants4.d.ts +1 -1
  21. package/dist/images/layers-2x.png +0 -0
  22. package/dist/images/layers.png +0 -0
  23. package/dist/index.cjs +1 -1
  24. package/dist/index.d.cts +3 -3
  25. package/dist/index.d.ts +4 -3
  26. package/dist/index.js +1 -1
  27. package/dist/index13.vue.d.ts +2 -2
  28. package/dist/index14.vue.d.cts +2 -2
  29. package/dist/index14.vue.d.ts +1 -1
  30. package/dist/index15.vue.d.cts +1 -1
  31. package/dist/index17.vue.d.ts +1 -1
  32. package/dist/index18.vue.d.cts +1 -1
  33. package/dist/index18.vue.d.ts +1 -1
  34. package/dist/index19.vue.d.cts +1 -1
  35. package/dist/index19.vue.d.ts +1 -1
  36. package/dist/index2.vue.d.cts +1 -1
  37. package/dist/index2.vue.d.ts +1 -1
  38. package/dist/index21.vue.d.cts +1 -1
  39. package/dist/index21.vue.d.ts +1 -1
  40. package/dist/index22.vue.d.cts +2 -2
  41. package/dist/index22.vue.d.ts +2 -2
  42. package/dist/index24.vue.d.cts +1 -1
  43. package/dist/index24.vue.d.ts +1 -1
  44. package/dist/index25.vue.d.cts +1 -1
  45. package/dist/index25.vue.d.ts +1 -1
  46. package/dist/index26.vue.d.cts +3 -3
  47. package/dist/index26.vue.d.ts +3 -3
  48. package/dist/index3.vue.d.cts +2 -2
  49. package/dist/index3.vue.d.ts +2 -2
  50. package/dist/index5.vue.d.cts +1 -1
  51. package/dist/index7.vue.d.ts +1 -1
  52. package/dist/index8.vue.d.cts +1 -1
  53. package/dist/mapUtils.d.cts +135 -0
  54. package/dist/mapUtils.d.ts +135 -0
  55. package/dist/style.css +8 -8
  56. package/dist/useCollapsePanel.d.cts +3 -3
  57. package/dist/useCollapsePanel.d.ts +3 -3
  58. package/dist/useCropperCore.d.cts +6 -6
  59. package/dist/useCropperCore.d.ts +6 -6
  60. package/dist/useDraggableLayout.d.cts +5 -5
  61. package/dist/useDraggableLayout.d.ts +5 -5
  62. package/dist/useDynamicFormState.d.cts +41 -22
  63. package/dist/useDynamicFormState.d.ts +41 -22
  64. package/dist/useFullscreen.d.cts +2 -2
  65. package/dist/useFullscreen.d.ts +2 -2
  66. package/dist/useInfiniteScroll.d.cts +2 -2
  67. package/dist/useInfiniteScroll.d.ts +2 -2
  68. package/dist/useQRCode.d.cts +1 -1
  69. package/dist/useQRCode.d.ts +1 -1
  70. package/dist/useSearchState.d.cts +6 -6
  71. package/dist/useSearchState.d.ts +6 -6
  72. package/dist/useSplitResize.d.cts +6 -6
  73. package/dist/useSplitResize.d.ts +6 -6
  74. package/dist/useTableQuery.d.cts +1 -1
  75. package/dist/useTableQuery.d.ts +1 -1
  76. package/dist/useTimeSelection.d.cts +2 -2
  77. package/dist/useTimeSelection.d.ts +2 -2
  78. package/dist/useTreeOperations.d.cts +3 -3
  79. package/dist/useTreeOperations.d.ts +3 -3
  80. package/dist/useWorkflowValidation.d.cts +3 -3
  81. package/dist/useWorkflowValidation.d.ts +3 -3
  82. package/package.json +2 -1
  83. package/dist/data.d.cts +0 -67
  84. package/dist/data.d.ts +0 -67
package/dist/C_Form2.js CHANGED
@@ -1 +1 @@
1
- import{i as e,r as t}from"./config.js";import{t as n}from"./C_Icon2.js";import{t as r}from"./export-helper.js";import{a as i,i as a,n as o,o as s,r as c,s as l,t as u}from"./data.js";import{Fragment as d,computed as f,createBlock as p,createCommentVNode as m,createElementBlock as h,createElementVNode as g,createTextVNode as _,createVNode as v,defineAsyncComponent as y,defineComponent as b,getCurrentInstance as x,h as S,inject as C,mergeProps as w,nextTick as T,normalizeClass as E,normalizeStyle as D,onMounted as O,onScopeDispose as k,openBlock as A,reactive as j,readonly as M,ref as N,renderList as P,renderSlot as F,resolveComponent as I,resolveDynamicComponent as L,toDisplayString as R,toValue as z,unref as B,vShow as ee,watch as V,watchEffect as H,withCtx as U,withDirectives as te,withKeys as ne}from"vue";import{NAlert as W,NBadge as re,NButton as G,NButtonGroup as ie,NCard as K,NCascader as ae,NCheckbox as oe,NCheckboxGroup as se,NColorPicker as ce,NDatePicker as le,NEmpty as ue,NForm as de,NFormItem as fe,NGrid as q,NGridItem as J,NInput as Y,NInputNumber as pe,NProgress as me,NRadio as he,NRadioGroup as ge,NRate as _e,NSelect as ve,NSlider as ye,NSpace as X,NStep as be,NSteps as xe,NSwitch as Se,NTabPane as Z,NTabs as Ce,NTag as we,NTimePicker as Te,NTooltip as Ee,NUpload as De}from"naive-ui";import{VueDraggable as Oe}from"vue-draggable-plus";const ke=Symbol(`c-form-global-config`);function Ae(){return x()?C(ke,{}):{}}function je(e,t){let n=e??{},r=(e,t)=>e||t?{...e,...t}:void 0;return{...t,...n,grid:r(t.grid,n.grid),inline:r(t.inline,n.inline),card:r(t.card,n.card),tabs:r(t.tabs,n.tabs),steps:r(t.steps,n.steps),dynamic:r(t.dynamic,n.dynamic),custom:r(t.custom,n.custom)}}const Me={layout:`default`,labelPlacement:`left`,labelWidth:`auto`,size:`medium`,disabled:!1,readonly:!1,showActions:!0,validateOnChange:!1,preserveRemovedFields:!1,submitText:``,resetText:``,mode:`create`},Ne=[`steps`,`custom`];function Pe(e){return{...Me,...e}}function Fe(e){return!(e.showActions===!1||Ne.includes(e.layout))}function Q(e,t){let n=N({}),r=f(()=>a().length>0);function a(){let r=n.value,a=t?z(t):void 0,o=new Set(a??[...Object.keys(r),...Object.keys(e)]),s=[];for(let t of o)i(c(r,t),c(e,t))||s.push(t);return s}function o(t){return!i(c(n.value,t),c(e,t))}function s(){n.value=u(e)}function l(){return u(n.value)}return{isDirty:r,getChangedFields:a,isFieldDirty:o,markAsClean:s,getCleanModel:l}}const Ie={input:``,textarea:``,editor:``,select:null,datePicker:null,daterange:null,timePicker:null,cascader:null,colorPicker:null,checkbox:[],upload:[],radio:``,inputNumber:null,slider:null,rate:null,switch:!1};function Le(e){return u((e.value===void 0?Ie[e.type]:e.value)??null)}function Re(e){let t=new Set;e.forEach((e,n)=>{if(!e.prop?.trim())throw TypeError(`[C_Form] options[${n}].prop 不能为空`);if(t.has(e.prop))throw TypeError(`[C_Form] 字段 prop 重复: ${e.prop}`);t.add(e.prop)})}function ze(n,r,d,p,m){let h=j({}),g=j({}),_=new Map,v=N({}),y=N({}),b=N({}),x=N(!1),S=new Map,C=new Map,w=new Map,E=new Set,D=!1,O=!1,A=0,M=t(()=>r.value.feedback),{t:P}=e(()=>r.value.locale),{isDirty:F,getChangedFields:I,isFieldDirty:L,markAsClean:R,getCleanModel:z}=Q(h,()=>n.value.map(e=>e.prop));function B(e,t,n){r.value.onError?r.value.onError(e,{source:t,field:n}):M.error(e instanceof Error?e.message:String(e),e)}let ee=f(()=>n.value.filter(e=>{if(e.show===!1)return!1;if(!e.showWhen)return!0;try{return e.showWhen(h)}catch(t){return B(t,`callback`,e.prop),!1}}));function H(){O=!0;let e=++A;T(()=>{e===A&&(O=!1)})}function U(){return u(h)}function te(e){let t=e?u(e):{};return n.value.forEach(e=>{a(t,e.prop)||l(t,e.prop,Le(e))}),t}function ne(e){try{let t=e.rulesWhen?[...e.rulesWhen(h)]:[...e.rules??[]];if(e.required&&!t.some(e=>e.required)&&t.unshift({required:!0,message:P(`form.required`,{label:e.label||e.prop}),trigger:[`input`,`change`,`blur`]}),e.crossFieldValidator){let n=e.crossFieldValidator;t.push({async validator(){let e=await n(h);if(e)throw Error(e)},trigger:[`change`,`blur`]})}if(t.length===0){delete g[e.prop];return}g[e.prop]=t.map(t=>({...t,key:e.prop}))}catch(t){delete g[e.prop],B(t,`callback`,e.prop)}}function W(){n.value.forEach(e=>{(e.rulesWhen||e.crossFieldValidator)&&ne(e)})}function re(e){E.forEach(t=>{e.has(t)||(_.delete(t),delete g[t],delete v.value[t],delete y.value[t],delete b.value[t],C.get(t)?.abort(),C.delete(t),S.delete(t),w.delete(t),r.value.preserveRemovedFields||o(h,t))})}function G(e=!1){try{Re(n.value);let t=new Set(n.value.map(e=>e.prop));re(t),n.value.forEach(e=>{a(h,e.prop)||l(h,e.prop,Le(e)),ne(e),e.asyncOptions&&w.get(e.prop)!==e.asyncOptions&&(w.set(e.prop,e.asyncOptions),T(()=>ae(e,`initialize`)))}),E=t,e&&T(R)}catch(e){throw B(e,`initialize`),e}}function ie(e){H(),s(h,te(e)),W()}function K(e,t,n){return n.signal.aborted||S.get(e)!==t}async function ae(e,t){if(!e.asyncOptions)return;let{prop:n}=e,r=(S.get(n)??0)+1;S.set(n,r),C.get(n)?.abort();let i=new AbortController;C.set(n,i),y.value[n]=!0,delete b.value[n];try{let a=await e.asyncOptions(U(),{field:n,reason:t,signal:i.signal});if(K(n,r,i))return;if(!Array.isArray(a))throw TypeError(`[C_Form] ${n}.asyncOptions 必须返回数组`);v.value[n]=u([...a])}catch(e){if(K(n,r,i))return;b.value[n]=e,B(e,`async-options`,n)}finally{S.get(n)===r&&(y.value[n]=!1,C.delete(n))}}async function oe(e){let t=n.value.filter(t=>t.asyncOptions&&(!e||t.prop===e));if(e&&t.length===0)throw Error(`[C_Form] 未找到异步选项字段: ${e}`);await Promise.all(t.map(e=>ae(e,`manual`)))}function se(){let e=n.value.filter(e=>e.valueWhen);if(e.length!==0){for(let t=0;t<=e.length;t+=1){let t=!1;for(let n of e)try{let e=n.valueWhen?.(h);e!==void 0&&!i(c(h,n.prop),e)&&(l(h,n.prop,u(e)),t=!0)}catch(e){B(e,`callback`,n.prop)}if(!t)return}B(Error(`[C_Form] valueWhen 存在循环依赖,已停止继续计算`),`callback`)}}function ce(e){let t=new Set(e);return n.value.filter(e=>!e.asyncOptions||!e.dependsOn?!1:(Array.isArray(e.dependsOn)?e.dependsOn:[e.dependsOn]).some(e=>t.has(e)))}function le(e){se(),W(),ce(e).forEach(e=>{ae(e,`dependency`)}),r.value.validateOnChange&&T(()=>{q([...e]).catch(()=>void 0)})}function ue(e){le([e])}function de(e,t){t?_.set(e,t):_.delete(e)}async function fe(){if(!d.value)throw Error(`[C_Form] 表单引用不存在`);try{await d.value.validate(),p(`validate-success`,U())}catch(e){throw p(`validate-error`,e),e}}async function q(e){if(!d.value)throw Error(`[C_Form] 表单引用不存在`);let t=[...new Set(Array.isArray(e)?e:[e])],n=[],r=t.flatMap(e=>{let t=_.get(e);return t?[t.validate()]:(n.push(e),[])});n.length>0&&r.push(d.value.validate(void 0,e=>n.includes(String(e.key??``))));let i=(await Promise.allSettled(r)).filter(e=>e.status===`rejected`).map(e=>e.reason);if(i.length>0)throw i}function J(e){if(!e){d.value?.restoreValidation();return}(Array.isArray(e)?e:[e]).forEach(e=>_.get(e)?.restoreValidation())}async function Y(e){let t=n.value.filter(e).map(e=>e.prop);if(t.length===0)return!0;try{return await q(t),!0}catch{return!1}}function pe(e){let t=r.value.steps?.steps?.[e]?.key;return t?Y(e=>e.layout?.step===t):Promise.resolve(!0)}function me(e){return Y(t=>t.layout?.tab===e)}function he(){return Y(e=>!!e.layout?.dynamic)}function ge(e){return Y(t=>t.layout?.group===e)}function _e(e){Object.entries(u(e)).forEach(([e,t])=>{l(h,e,t)}),le(Object.keys(e))}function ve(){s(h,z()),J(),W()}async function ye(e,t,n=!1){l(h,e,u(t)),ue(e),n&&await q(e)}function X(e){return u(c(h,e))}async function be(e,t=!1){_e(e),t&&await q(Object.keys(e))}async function xe(){if(x.value)return!1;x.value=!0;try{await fe();let e={model:U(),form:d.value};try{await r.value.onSubmit?.(e)}catch(e){return B(e,`submit`),!1}return p(`submit`,e),!0}catch{return!1}finally{x.value=!1}}function Se(){G(!0);let e=m?.value??(r.value.mode===`edit`?r.value.initialValues:void 0);e&&ie(e),se(),T(R)}return V(n,()=>{let e=!D;e&&H(),G(e),D=!0},{deep:!0,immediate:!0}),m&&V(m,e=>{e!==void 0&&!i(h,e)&&ie(e)},{deep:!0,immediate:!0}),V(()=>[r.value.mode,r.value.initialValues],([e,t])=>{m?.value!==void 0||e!==`edit`||!t||(ie(t),T(R))},{deep:!0}),V(h,e=>{O||p(`update:modelValue`,u(e))},{deep:!0,flush:`post`}),k(()=>{C.forEach(e=>e.abort()),C.clear(),_.clear()}),{formModel:h,formRules:g,visibleOptions:ee,initialize:Se,handleFieldChange:ue,setFormItemRef:de,validate:fe,validateField:q,validateStep:pe,validateTab:me,validateDynamicFields:he,validateCustomGroup:ge,clearValidation:J,getModel:U,setFields:_e,resetFields:ve,setFieldValue:ye,getFieldValue:X,setFieldsValue:be,submit:xe,handleSubmit:xe,handleReset:ve,isSubmitting:x,isDirty:F,getChangedFields:I,isFieldDirty:L,markAsClean:R,asyncOptionsCache:v,asyncLoadingMap:y,asyncErrorMap:b,reloadOptions:oe}}function Be(e,t,n){return e===void 0?t:typeof e==`function`?e(n):e}function Ve(e){return{input:t=>S(e.NInput,{...t}),textarea:t=>S(e.NInput,{...t,type:`textarea`}),inputNumber:t=>S(e.NInputNumber,{...t}),switch:t=>S(e.NSwitch,{...t}),slider:t=>S(e.NSlider,{...t}),rate:t=>S(e.NRate,{...t}),datePicker:t=>S(e.NDatePicker,{...t}),daterange:t=>S(e.NDatePicker,{...t,type:`daterange`}),timePicker:t=>S(e.NTimePicker,{...t}),cascader:t=>S(e.NCascader,{...t}),colorPicker:t=>S(e.NColorPicker,{...t}),select:(t,n)=>S(e.NSelect,{...t,options:n.children?.map(e=>({...e}))||[]}),checkbox:(t,n)=>S(e.NCheckboxGroup,{...t},{default:()=>S(e.NSpace,{},{default:()=>n.children?.map(t=>S(e.NCheckbox,{value:t.value,label:t.label,disabled:t.disabled,key:String(t.value)}))||[]})}),radio:(t,n)=>S(e.NRadioGroup,{...t},{default:()=>S(e.NSpace,{},{default:()=>n.children?.map(t=>S(e.NRadio,{value:t.value,disabled:t.disabled,key:String(t.value)},{default:()=>t.label}))||[]})}),upload:(t,n,r,i)=>{let a={...t},{value:o}=a,s=a[`onUpdate:value`];return delete a.value,delete a[`onUpdate:value`],S(e.NUpload,{...a,fileList:Array.isArray(o)?o:[],"onUpdate:fileList":e=>s?.(e)},{trigger:()=>i.slots?.uploadClick?.()||S(e.NButton,{type:`primary`},{default:()=>`选择文件`}),tip:()=>i.slots?.uploadTip?.()||null})},editor:(t,n)=>{let r={...t},{value:i}=r,a=r[`onUpdate:value`];return delete r.value,delete r[`onUpdate:value`],S(e.C_Editor,{...r,editorId:`editor-${n.prop}`,modelValue:typeof i==`string`?i:``,"onUpdate:modelValue":e=>a?.(e)})}}}const $={};function He(e,t){if(!e.trim())throw TypeError(`[C_Form] renderer type 不能为空`);if(typeof t!=`function`)throw TypeError(`[C_Form] renderer ${e} 必须是函数`);return $[e]=t,()=>Ue(e,t)}function Ue(e,t){return!$[e]||t&&$[e]!==t?!1:delete $[e]}const We=new Set([`select`,`checkbox`,`radio`,`cascader`]);function Ge(e){let{formModel:t,visibleOptions:n,config:r,handleFieldChange:i,componentMap:a,instanceSlots:o,asyncOptionsCache:s,asyncLoadingMap:u,renderers:d,setFormItemRef:p,onError:m}=e,h=a,g=Ve(h),_=e=>d?.value?.[e]??$[e]??g[e],v=e=>{let n={value:c(t,e.prop),"onUpdate:value":n=>{l(t,e.prop,n),i(e.prop)},disabled:Be(e.disabled,r.value.disabled,t),readonly:Be(e.readonly,r.value.readonly,t)};return e.type===`textarea`&&(n.type=`textarea`),e.placeholder&&(n.placeholder=e.placeholder),n};function y(e){let t=e.children??[];return Object.prototype.hasOwnProperty.call(s.value,e.prop)?s.value[e.prop]??[]:t}function b(e){return We.has(e.type)?{...e,children:y(e)}:e}function x(e,t){return e.type===`select`&&u.value[e.prop]&&(t.loading=!0),t}let C=e=>{try{let t=b(e),n=_(t.type);return n?n(x(t,w(t.attrs??{},v(t))),t,r.value,{slots:o,components:h}):(m?.(TypeError(`[C_Form] 未支持的组件类型: ${t.type}`),t.prop),null)}catch(t){return m?.(t,e.prop),null}};function T(e){if(e.label)return e.help?S(`span`,{style:`display:inline-flex;align-items:center;gap:4px`},[e.label,S(h.NTooltip,{trigger:`hover`},{trigger:()=>S(`span`,{style:`cursor:help;opacity:0.5;font-size:14px`,textContent:`ⓘ`}),default:()=>e.help})]):e.label}return{renderFormItem:C,formItems:f(()=>n.value.map(e=>{let t=!!(e.required||e.rules?.some(e=>e.required)),n=T(e);return S(h.NFormItem,{label:typeof n==`string`?n:void 0,path:e.prop,key:e.prop,required:t,ref:t=>p?.(e.prop,t)},{...typeof n!=`string`&&n?{label:()=>n}:{},default:()=>C(e)})})),getBaseProps:v}}const Ke={class:`c-form-default`};var qe=r(b({__name:`index`,props:{formItems:{},layoutConfig:{},options:{}},setup(e){return(t,n)=>(A(),h(`div`,Ke,[(A(!0),h(d,null,P(e.formItems,e=>(A(),p(L(e),{key:e.key}))),128))]))}}),[[`__scopeId`,`data-v-f5303a7c`]]),Je=r(b({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e){let t=e,n=f(()=>280),r=f(()=>t.layoutConfig?.inline?.gap??16),i=f(()=>16),a=f(()=>{let e=t.layoutConfig?.inline?.align;return e===`start`||e===`end`?e:`center`}),o=f(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;default:return`center`}}),s=f(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;case`center`:return`center`;default:return`flex-start`}}),c=f(()=>({display:`flex`,flexWrap:`wrap`,alignItems:o.value,justifyContent:s.value,gap:`${i.value}px ${r.value}px`,width:`100%`})),l=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`form-item-${t}`},u=e=>{let r=t.options?.[e]?.layout,i={width:`${n.value}px`,flexShrink:0,display:`flex`,flexDirection:`column`};return r?.width!==void 0&&(i.width=typeof r.width==`number`?`${r.width}px`:r.width),r?.style&&Object.assign(i,r.style),i};return(t,n)=>(A(),h(`div`,{class:`c-form-inline`,style:D(c.value)},[(A(!0),h(d,null,P(e.formItems,(e,t)=>(A(),h(`div`,{key:l(e,t),class:`c-form-inline-item`,style:D(u(t))},[(A(),p(L(e)))],4))),128))],4))}}),[[`__scopeId`,`data-v-7c4a2aa3`]]);const Ye={class:`c-grid-layout`},Xe={class:`config-header`},Ze={class:`config-controls`},Qe={class:`config-label`},$e={class:`item-wrapper`};var et=r(b({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e,{expose:t}){let r=e,i=j({cols:24,gutter:16,responsive:!0}),a=f(()=>r.layoutConfig?.grid||{}),o=f(()=>a.value.showConfigPanel),s=f(()=>a.value.showStats),c=f(()=>({cols:o.value?i.cols:a.value.cols??24,gutter:o.value?i.gutter:a.value.gutter??16,responsive:o.value?i.responsive:a.value.responsive??!0})),l=f(()=>({cols:c.value.cols,xGap:c.value.gutter,yGap:c.value.gutter,responsive:c.value.responsive?`screen`:`self`})),u=f(()=>[{key:`cols`,label:`列数`,component:`NInputNumber`,value:f({get:()=>i.cols,set:e=>i.cols=e}),props:{min:1,max:48,size:`small`}},{key:`gutter`,label:`间距`,component:`NInputNumber`,value:f({get:()=>i.gutter,set:e=>i.gutter=e}),props:{min:0,max:48,size:`small`}},{key:`responsive`,label:`响应式`,component:`NSwitch`,value:f({get:()=>i.responsive,set:e=>i.responsive=e}),props:{size:`small`}}]),y=f(()=>`列数: ${c.value.cols} | 间距: ${c.value.gutter}px | 项目: ${r.formItems.length}个`),b=(e,t)=>String(e.key)||e.props?.path||`grid-item-${t}`,x=(e,t)=>{let n=r.options?.[e]?.layout;return n?.[t]??n?.grid?.[t]},S=()=>{let{cols:e}=c.value;return e<=12?e:e<=24?12:8},C=e=>{let t=x(e,`span`),n=x(e,`offset`),r=x(e,`suffix`);return{span:typeof t==`number`&&t>0&&t<=c.value.cols?t:S(),offset:typeof n==`number`&&n>=0&&n<c.value.cols?n:0,suffix:!!r}};return V(a,e=>{e.cols!==void 0&&(i.cols=e.cols),e.gutter!==void 0&&(i.gutter=e.gutter),e.responsive!==void 0&&(i.responsive=e.responsive)},{immediate:!0}),t({updateGridConfig:e=>Object.assign(i,e),getCurrentConfig:()=>({...c.value}),getGridInfo:()=>({...c.value,itemCount:r.formItems.length})}),(t,r)=>{let i=K,a=J,c=q,f=W;return A(),h(`div`,Ye,[m(` 配置面板 `),o.value?(A(),p(i,{key:0,size:`small`,bordered:!1,class:`config-panel`},{header:U(()=>[g(`div`,Xe,[v(n,{name:`mdi:view-grid`,size:18}),r[0]||=g(`span`,null,`网格配置`,-1)])]),default:U(()=>[g(`div`,Ze,[(A(!0),h(d,null,P(u.value,e=>(A(),h(`div`,{key:e.key,class:`config-item`},[g(`span`,Qe,R(e.label)+`:`,1),(A(),p(L(e.component),w({value:e.value,"onUpdate:value":t=>e.value=t},{ref_for:!0},e.props),null,16,[`value`,`onUpdate:value`]))]))),128))])]),_:1})):m(`v-if`,!0),m(` 网格容器 `),v(c,w(l.value,{class:`grid-container`}),{default:U(()=>[(A(!0),h(d,null,P(e.formItems,(e,t)=>(A(),p(a,w({key:b(e,t)},{ref_for:!0},C(t),{class:`grid-item`}),{default:U(()=>[g(`div`,$e,[(A(),p(L(e)))])]),_:2},1040))),128))]),_:1},16),m(` 统计信息 `),s.value?(A(),p(f,{key:1,type:`info`,"show-icon":!1,size:`small`,class:`grid-stats`},{header:U(()=>[v(n,{name:`mdi:information-outline`,size:16}),r[1]||=_(` 网格信息 `,-1)]),default:U(()=>[_(` `+R(y.value),1)]),_:1})):m(`v-if`,!0)])}}}),[[`__scopeId`,`data-v-90ef9fa4`]]);const tt={class:`c-form-card`},nt={class:`flex items-center gap-2`},rt={class:`config-controls`},it={class:`config-item`},at={class:`flex items-center gap-2`},ot={class:`text-xs min-w-12`},st={class:`config-item`},ct={class:`config-item`},lt={class:`config-item`},ut={class:`flex items-center gap-3`},dt={class:`card-header`},ft={class:`header-info`},pt={class:`header-text`},mt={key:0},ht={class:`header-actions`},gt={class:`field-stats`},_t={class:`card-content`},vt={key:0,class:`progress-section`},yt={class:`action-content`},bt={class:`status-summary`},xt={class:`status-item`},St={class:`progress-display`},Ct={class:`text-sm min-w-12`},wt={class:`action-buttons`};var Tt=r(b({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},formData:{default:()=>({})}},setup(e){let t=e,r=N(20),i=N(!0),a=N(!0),o=N(!0),s=N(`vertical`),c=N({}),l=f(()=>t.layoutConfig?.card?.groups||[]),u=f(()=>l.value.length>0),y=f(()=>t.layoutConfig?.card?.showLayoutConfig??!0),b=f(()=>t.layoutConfig?.card?.showActionPanel??!0),x=f(()=>u.value?`layout-${s.value}`:`layout-single`),S=f(()=>{if(!u.value)return[];let e=new Map;return l.value.forEach(t=>{e.set(t.key,[])}),t.formItems.forEach((n,r)=>{let i=(t.options?.[r])?.layout?.group||l.value[0]?.key||`default`;e.has(i)||e.set(i,[]),e.get(i).push(n)}),l.value.map(t=>({config:t,items:e.get(t.key)||[]})).filter(e=>e.items.length>0)}),C=f(()=>{let e=Object.keys(c.value);return e.length>0&&e.every(e=>c.value[e])}),w=f(()=>{if(!t.options||t.options.length===0)return 0;let e=t.options.filter(e=>{let n=t.formData?.[e.prop||``];return T(n)}).length;return Math.round(e/t.options.length*100)}),T=e=>e==null?!1:Array.isArray(e)?e.length>0:typeof e==`string`?e.trim()!==``:!0,k=e=>t.options?t.options.filter(t=>t.layout?.group===e.config.key).filter(e=>{let n=t.formData?.[e.prop||``];return T(n)}).length:0,j=e=>{if(e.items.length===0)return 0;let t=k(e);return Math.round(t/e.items.length*100)},M=e=>{let t={basic:`mdi:account`,contact:`mdi:phone`,preferences:`mdi:cog`,settings:`mdi:cog`,info:`mdi:information`,default:`mdi:form-select`};return t[e]||t.default},F=e=>{c.value[e]=!c.value[e]},I=()=>{let e=!C.value;l.value.forEach(t=>{c.value[t.key]=e})};return O(()=>{let e=t.layoutConfig?.card;e?.direction&&(s.value=e.direction),e?.showProgress!==void 0&&(o.value=e.showProgress),l.value.forEach(e=>{c.value[e.key]=!1})}),(t,l)=>{let f=ye,T=Se,O=he,N=ge,z=K,B=re,V=G,H=me;return A(),h(`div`,tt,[m(` 布局配置面板 `),u.value&&y.value?(A(),p(z,{key:0,class:`layout-config-panel`,bordered:!1},{header:U(()=>[g(`div`,nt,[v(n,{name:`mdi:cog`,size:18}),l[4]||=g(`span`,null,`布局配置`,-1)])]),default:U(()=>[g(`div`,rt,[g(`div`,it,[l[5]||=g(`span`,null,`卡片间距`,-1),g(`div`,at,[v(f,{value:r.value,"onUpdate:value":l[0]||=e=>r.value=e,min:12,max:32,step:4,class:`w-24`},null,8,[`value`]),g(`span`,ot,R(r.value)+`px`,1)])]),g(`div`,st,[l[6]||=g(`span`,null,`显示图标`,-1),v(T,{value:i.value,"onUpdate:value":l[1]||=e=>i.value=e,size:`small`},null,8,[`value`])]),g(`div`,ct,[l[7]||=g(`span`,null,`可折叠`,-1),v(T,{value:a.value,"onUpdate:value":l[2]||=e=>a.value=e,size:`small`},null,8,[`value`])]),g(`div`,lt,[l[10]||=g(`span`,null,`布局方向`,-1),v(N,{value:s.value,"onUpdate:value":l[3]||=e=>s.value=e,size:`small`},{default:U(()=>[v(O,{value:`vertical`},{default:U(()=>[...l[8]||=[_(`垂直`,-1)]]),_:1}),v(O,{value:`horizontal`},{default:U(()=>[...l[9]||=[_(`水平`,-1)]]),_:1})]),_:1},8,[`value`])])])]),_:1})):m(`v-if`,!0),m(` 表单内容区域 `),g(`div`,{class:E([`form-content`,x.value]),style:D({gap:`${r.value}px`})},[m(` 无分组时的单卡片模式 `),u.value?(A(),h(d,{key:1},[m(` 有分组时的多卡片模式 `),(A(!0),h(d,null,P(S.value,e=>(A(),p(z,{key:e.config.key,class:E([`group-card`,[`${e.config.key}-card`,{collapsed:a.value&&c.value[e.config.key]}]]),hoverable:``},{header:U(()=>[g(`div`,dt,[g(`div`,ft,[i.value&&e.config.icon?(A(),p(n,{key:0,name:e.config.icon,size:20,class:`card-icon`},null,8,[`name`])):i.value?(A(),p(n,{key:1,name:M(e.config.key),size:20,class:`card-icon`},null,8,[`name`])):m(`v-if`,!0),g(`div`,pt,[g(`h3`,null,R(e.config.title),1),e.config.description?(A(),h(`p`,mt,R(e.config.description),1)):m(`v-if`,!0)])]),g(`div`,ht,[m(` 统计信息 `),g(`div`,gt,[v(B,{value:e.items.length,type:`info`,"show-zero":``},null,8,[`value`]),v(B,{value:`${k(e)}/${e.items.length}`,type:k(e)===e.items.length?`success`:`warning`},null,8,[`value`,`type`])]),m(` 折叠按钮 `),a.value?(A(),p(V,{key:0,quaternary:``,circle:``,size:`small`,onClick:t=>F(e.config.key)},{icon:U(()=>[v(n,{name:c.value[e.config.key]?`mdi:chevron-down`:`mdi:chevron-up`,size:18},null,8,[`name`])]),_:2},1032,[`onClick`])):m(`v-if`,!0)])])]),default:U(()=>[te(g(`div`,_t,[m(` 进度指示器 `),o.value?(A(),h(`div`,vt,[v(H,{percentage:j(e),color:j(e)===100?`#52c41a`:`#1890ff`,"show-indicator":!1,class:`mb-4`},null,8,[`percentage`,`color`])])):m(`v-if`,!0),m(` 表单项 `),(A(!0),h(d,null,P(e.items,e=>(A(),p(L(e),{key:e.key}))),128))],512),[[ee,!c.value[e.config.key]]])]),_:2},1032,[`class`]))),128))],64)):(A(),p(z,{key:0,class:`single-card`,hoverable:``},{header:U(()=>[g(`div`,ut,[i.value?(A(),p(n,{key:0,name:`mdi:form-select`,size:18,style:{color:`#3b82f6`}})):m(`v-if`,!0),l[11]||=g(`span`,null,`表单信息`,-1)])]),default:U(()=>[(A(!0),h(d,null,P(e.formItems,e=>(A(),p(L(e),{key:e.key}))),128))]),_:1}))],6),m(` 统一操作面板 `),u.value&&b.value?(A(),p(z,{key:1,class:`action-panel`,bordered:!1},{default:U(()=>[g(`div`,yt,[g(`div`,bt,[g(`div`,xt,[l[12]||=g(`span`,{class:`label`},`完成进度:`,-1),g(`div`,St,[v(H,{percentage:w.value,"show-indicator":!1,color:w.value===100?`#52c41a`:`#1890ff`,class:`flex-1`},null,8,[`percentage`,`color`]),g(`span`,Ct,R(w.value)+`%`,1)])])]),g(`div`,wt,[a.value?(A(),p(V,{key:0,onClick:I},{icon:U(()=>[v(n,{name:C.value?`mdi:unfold-more-horizontal`:`mdi:unfold-less-horizontal`,size:18},null,8,[`name`])]),default:U(()=>[_(` `+R(C.value?`展开全部`:`折叠全部`),1)]),_:1})):m(`v-if`,!0)])])]),_:1})):m(`v-if`,!0)])}}}),[[`__scopeId`,`data-v-cb63c8f5`]]);const Et={class:`c-form-tabs`},Dt={key:0,class:`single-panel`},Ot={class:`tabs-container`},kt={key:0,class:`tab-header`},At={class:`tab-description`},jt={class:`tab-form-items`},Mt={key:0,class:`tabs-actions`};var Nt=r(b({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},beforeTabChange:{},validateTab:{}},emits:[`tab-change`,`tab-before-change`,`tab-validate`,`tab-close`,`tab-add`],setup(e,{expose:t,emit:r}){let i=e,a=r,o=N(``),s=j({}),c=()=>({tabs:[],type:`line`,size:`medium`,placement:`top`,animated:!0,closable:!1,addable:!1,showTabHeader:!0,showActions:!1,showCount:!1,validateBeforeSwitch:!1,defaultTab:``}),l=f(()=>{let e=c(),t=i.layoutConfig?.tabs||{};return{...e,...t}}),u=f(()=>l.value.tabs.length>0),y=f(()=>{if(!u.value)return[];let e=new Map;return l.value.tabs.forEach(t=>{e.set(t.key,[])}),i.formItems.forEach((t,n)=>{let r=(i.options?.[n])?.layout?.tab||l.value.tabs[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),l.value.tabs.map(t=>({config:t,items:e.get(t.key)||[]}))}),b=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?String(n.path):`tab-item-${t}`},x=async()=>{if(!o.value)return!0;try{let e=i.validateTab?await i.validateTab(o.value):!0;return a(`tab-validate`,o.value),s[o.value]=e,e}catch{return s[o.value]=!1,!1}},S=async e=>{if(!e||e===o.value)return!0;if(!y.value.some(t=>t.config.key===e))return!1;try{if(l.value.validateBeforeSwitch&&o.value&&!await x())return!1;if(o.value){if(await i.beforeTabChange?.(o.value,e)===!1)return!1;a(`tab-before-change`,o.value,e)}return o.value=e,a(`tab-change`,e,y.value.findIndex(t=>t.config.key===e)),!0}catch{return!1}},C=e=>{S(e)},w=e=>{a(`tab-close`,e)},E=()=>{a(`tab-add`)},D=()=>{if(!u.value||y.value.length===0)return;let{defaultTab:e}=l.value,t=e||y.value[0]?.config.key;t&&t!==o.value&&(o.value=t,T(()=>{let e=y.value.findIndex(e=>e.config.key===t);e>=0&&a(`tab-change`,t,e)}))};return O(()=>{D()}),V(f(()=>l.value.tabs.map(e=>e.key).join(`,`)),()=>{o.value&&!l.value.tabs.some(e=>e.key===o.value)&&D()}),V(()=>l.value.defaultTab,e=>{e&&e!==o.value&&S(e)}),t({switchToTab:S,validateCurrentTab:x,currentTab:M(o),totalTabs:f(()=>y.value.length),tabsWithItems:M(y)}),(t,r)=>{let i=re,a=X,s=ue,c=Z,f=Ce,T=G;return A(),h(`div`,Et,[m(` 无标签配置时的单一面板模式 `),u.value?(A(),h(d,{key:1},[m(` 有标签配置时的分标签模式 `),g(`div`,Ot,[v(f,{value:o.value,"onUpdate:value":[r[0]||=e=>o.value=e,C],type:l.value.type,size:l.value.size,placement:l.value.placement,animated:l.value.animated,closable:l.value.closable,addable:l.value.addable,class:`form-tabs`,onClose:w,onAdd:E},{default:U(()=>[(A(!0),h(d,null,P(y.value,e=>(A(),p(c,{key:e.config.key,name:e.config.key,tab:e.config.title,disabled:e.config.disabled,closable:e.config.closable},{tab:U(()=>[v(a,{align:`center`,size:8},{default:U(()=>[e.config.icon?(A(),p(n,{key:0,name:e.config.icon,size:16,class:`tab-icon`},null,8,[`name`])):m(`v-if`,!0),g(`span`,null,R(e.config.title),1),l.value.showCount?(A(),p(i,{key:1,value:e.items.length,max:99,show:e.items.length>0,type:`info`},null,8,[`value`,`show`])):m(`v-if`,!0)]),_:2},1024)]),default:U(()=>[l.value.showTabHeader&&e.config.description?(A(),h(`div`,kt,[g(`p`,At,R(e.config.description),1)])):m(`v-if`,!0),g(`div`,jt,[(A(!0),h(d,null,P(e.items,(e,t)=>(A(),p(L(e),{key:b(e,t)}))),128))]),e.items.length===0?(A(),p(s,{key:1,description:`暂无表单项`,class:`tab-empty`})):m(`v-if`,!0)]),_:2},1032,[`name`,`tab`,`disabled`,`closable`]))),128))]),_:1},8,[`value`,`type`,`size`,`placement`,`animated`,`closable`,`addable`]),m(` 标签页操作按钮 `),l.value.showActions?(A(),h(`div`,Mt,[v(a,{justify:`space-between`},{default:U(()=>[v(a,null,{default:U(()=>[l.value.validateBeforeSwitch?(A(),p(T,{key:0,type:`primary`,size:`small`,onClick:x},{default:U(()=>[v(n,{name:`carbon:star-check`,size:14,style:{"margin-right":`4px`}}),r[1]||=_(` 验证当前标签 `,-1)]),_:1})):m(`v-if`,!0)]),_:1}),v(a,null,{default:U(()=>[F(t.$slots,`tab-actions`,{currentTab:o.value,totalTabs:y.value.length,validateTab:x,switchToTab:S},void 0,!0)]),_:3})]),_:3})])):m(`v-if`,!0)])],2112)):(A(),h(`div`,Dt,[(A(!0),h(d,null,P(e.formItems,(e,t)=>(A(),p(L(e),{key:b(e,t)}))),128))]))])}}}),[[`__scopeId`,`data-v-3617f22f`]]);const Pt={class:`c-form-steps`},Ft={key:0,class:`single-panel`},It={key:0,class:`step-header`},Lt={class:`step-title`},Rt={key:0,class:`step-description`},zt={class:`step-form-items`},Bt={class:`steps-actions`};var Vt=r(b({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},beforeStepChange:{},validateStep:{}},emits:[`step-change`,`step-before-change`,`step-validate`],setup(e,{expose:t,emit:r}){let i=e,a=r,o=N(0),s=N(!1),c=j({}),l=f(()=>{let e=i.layoutConfig?.steps||{};return{steps:e.steps||[],vertical:e.vertical||!1,size:e.size||`medium`,showStepHeader:e.showStepHeader!==!1,validateBeforeNext:e.validateBeforeNext||!1,prevButtonText:e.prevButtonText||`上一步`,nextButtonText:e.nextButtonText||`下一步`,defaultStep:e.defaultStep||0}}),u=f(()=>l.value.steps.length>0),y=f(()=>{if(!u.value)return[];let e=new Map;return l.value.steps.forEach(t=>{e.set(t.key,[])}),i.formItems.forEach((t,n)=>{let r=(i.options?.[n])?.layout?.step||l.value.steps[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),l.value.steps.map(t=>({config:t,items:e.get(t.key)||[]})).filter(e=>e.items.length>0)}),b=f(()=>{for(let e=0;e<=o.value;e++)if(c[e]===!1)return`error`;return`process`}),x=f(()=>o.value===0),S=f(()=>o.value===y.value.length-1),C=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`step-item-${t}`},w=async()=>{try{let e=i.validateStep?await i.validateStep(o.value):!0;return a(`step-validate`,o.value),c[o.value]=e,e}catch{return c[o.value]=!1,!1}},T=async(e,t=!1)=>{if(e<0||e>=y.value.length)return!1;if(e===o.value)return!0;try{return s.value=!0,t&&l.value.validateBeforeNext&&!await w()||await i.beforeStepChange?.(o.value,e)===!1?!1:(a(`step-before-change`,o.value,e),o.value=e,a(`step-change`,o.value,y.value[o.value].config.key),!0)}catch{return!1}finally{s.value=!1}},D=async()=>{await T(o.value+1,!0)},k=()=>{T(o.value-1)},I=async e=>{y.value[e]?.config.disabled||await T(e,e>o.value)},z=()=>{if(!u.value||y.value.length===0)return;let{defaultStep:e}=l.value;o.value=e>=0&&e<y.value.length&&!y.value[e]?.config.disabled?e:0};return V(f(()=>l.value.steps.map(e=>e.key).join(`,`)),()=>{z()}),O(()=>{z()}),t({nextStep:D,previousStep:k,goToStep:I,validateCurrentStep:w,currentStep:M(o),totalSteps:f(()=>y.value.length)}),(t,r)=>{let i=be,a=xe,c=K,f=G,w=X;return A(),h(`div`,Pt,[m(` 无步骤配置时的单一面板模式 `),u.value?(A(),h(d,{key:1},[m(` 有步骤配置时的分步骤模式 `),g(`div`,{class:E([`steps-container`,{"is-vertical":l.value.vertical}])},[m(` 步骤指示器 `),v(a,{current:o.value+1,status:b.value,size:l.value.size,vertical:l.value.vertical,class:`steps-indicator`},{default:U(()=>[(A(!0),h(d,null,P(y.value,e=>(A(),p(i,{key:e.config.key,title:e.config.title,description:e.config.description,disabled:e.config.disabled},null,8,[`title`,`description`,`disabled`]))),128))]),_:1},8,[`current`,`status`,`size`,`vertical`]),m(` 步骤内容区域 `),v(c,{class:`steps-content`,bordered:!1},{default:U(()=>[(A(!0),h(d,null,P(y.value,(e,t)=>te((A(),h(`div`,{key:e.config.key,class:`step-panel`},[m(` 步骤标题和描述 `),l.value.showStepHeader?(A(),h(`div`,It,[g(`h3`,Lt,R(e.config.title),1),e.config.description?(A(),h(`p`,Rt,R(e.config.description),1)):m(`v-if`,!0)])):m(`v-if`,!0),m(` 步骤内的表单项 `),g(`div`,zt,[(A(!0),h(d,null,P(e.items,(e,t)=>(A(),p(L(e),{key:C(e,t)}))),128))])])),[[ee,o.value===t]])),128))]),_:1}),m(` 步骤操作按钮 `),g(`div`,Bt,[v(w,{justify:`space-between`},{default:U(()=>[o.value>0?(A(),p(f,{key:0,disabled:s.value,onClick:k},{default:U(()=>[v(n,{name:`mdi:chevron-left-first`,size:16,style:{"margin-right":`4px`}}),_(` `+R(l.value.prevButtonText),1)]),_:1},8,[`disabled`])):m(`v-if`,!0),r[0]||=g(`div`,null,null,-1),v(w,null,{default:U(()=>[o.value<y.value.length-1?(A(),p(f,{key:0,type:`primary`,loading:s.value,onClick:D},{default:U(()=>[_(R(l.value.nextButtonText)+` `,1),v(n,{name:`mdi:chevron-right-last`,size:16,style:{"margin-left":`4px`}})]),_:1},8,[`loading`])):m(`v-if`,!0),F(t.$slots,`step-actions`,{currentStep:o.value,totalSteps:y.value.length,isFirstStep:x.value,isLastStep:S.value,nextStep:D,previousStep:k,goToStep:I},void 0,!0)]),_:3})]),_:3})])],2)],2112)):(A(),h(`div`,Ft,[(A(!0),h(d,null,P(e.formItems,(e,t)=>(A(),p(L(e),{key:C(e,t)}))),128))]))])}}}),[[`__scopeId`,`data-v-d1b5209b`]]);const Ht={maxFields:20,autoSave:!1,enableSort:!0,showControls:!0,showItemControls:!0},Ut=[{label:`文本输入`,value:`input`},{label:`数字输入`,value:`inputNumber`},{label:`多行文本`,value:`textarea`},{label:`下拉选择`,value:`select`},{label:`开关切换`,value:`switch`},{label:`评分组件`,value:`rate`}];function Wt(e,t){let n=t.label||`动态字段 ${e}`;return{...t,id:t.id?.trim()||`dynamic_field_${e}`,type:t.type||Ut[0].value,prop:t.prop?.trim()||`dynamic_${e}`,label:n,placeholder:t.placeholder||`请输入${n||`内容`}`,visible:t.visible??!0,removable:t.removable??!0,created:t.created??Date.now(),layout:t.layout||{span:12}}}const Gt=()=>{let e=j({config:{...Ht},baseFields:[],dynamicFields:[],hiddenFieldIds:new Set,fieldCounter:0,isInitialized:!1}),t=f(()=>[...e.baseFields,...e.dynamicFields.map(t=>({...t,show:!e.hiddenFieldIds.has(t.prop)}))]),n=f(()=>t.value.filter(e=>e.show!==!1)),r=f(()=>e.dynamicFields.length),i=f(()=>e.hiddenFieldIds.size),a=f(()=>e.dynamicFields.length<e.config.maxFields),o=f(()=>e.hiddenFieldIds.size===0),s=(n={})=>{if(!a.value)return null;e.fieldCounter++;let r=Wt(e.fieldCounter,n);return t.value.some(e=>e.prop===r.prop)?null:(e.dynamicFields.push(r),r)},c=t=>{if(e.dynamicFields.length===0)return null;let n=t??e.dynamicFields.length-1;if(n<0||n>=e.dynamicFields.length||e.dynamicFields[n]?.removable===!1)return null;let r=e.dynamicFields.splice(n,1)[0];return r&&e.hiddenFieldIds.delete(r.prop),r??null},l=()=>{let t=e.dynamicFields.length;return e.dynamicFields.forEach(t=>e.hiddenFieldIds.delete(t.prop)),e.dynamicFields.length=0,e.fieldCounter=0,t},u=n=>t.value.some(e=>e.prop===n)?(e.hiddenFieldIds.has(n)?e.hiddenFieldIds.delete(n):e.hiddenFieldIds.add(n),!e.hiddenFieldIds.has(n)):!1,d=()=>(o.value?e.dynamicFields.forEach(t=>{e.hiddenFieldIds.add(t.prop)}):e.hiddenFieldIds.clear(),o.value),p=t=>{let n={...t};n.maxFields!==void 0&&(n.maxFields=Math.max(0,Math.trunc(n.maxFields))),Object.assign(e.config,n)};return{state:M(e),allFields:t,visibleFields:n,dynamicFieldsCount:r,hiddenFieldsCount:i,canAddMoreFields:a,allVisible:o,FIELD_TYPE_OPTIONS:Ut,addField:s,removeField:c,clearDynamicFields:l,toggleFieldVisibility:u,toggleAllVisibility:d,updateConfig:p,exportConfig:()=>{let t={baseFields:e.baseFields,dynamicFields:e.dynamicFields,config:e.config,hiddenFields:Array.from(e.hiddenFieldIds),timestamp:Date.now()};return JSON.stringify(t,null,2)},initialize:(t,n={})=>{e.baseFields=[...t],e.dynamicFields.length=0,e.hiddenFieldIds.clear(),e.fieldCounter=0,Object.assign(e.config,Ht),p(n),e.isInitialized=!0}}},Kt=Symbol(`dynamicFormState`),qt={class:`c-form-dynamic`},Jt={key:0,class:`dynamic-controls`},Yt={class:`max-fields-config`},Xt={class:`dynamic-stats`},Zt={class:`dynamic-controls-fallback`},Qt={class:`dynamic-form-items`};var $t=r(b({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},dynamicFormState:{default:null}},emits:[`field-add`,`field-remove`,`fields-clear`],setup(e,{expose:t,emit:r}){let i=e,a=r,o=C(Kt,null),s=f(()=>i.dynamicFormState||o),c=f(()=>!!s.value),l=f(()=>i.layoutConfig?.dynamic?.grid?.cols??24),u=f(()=>i.layoutConfig?.dynamic?.grid?.gutter??16),y=f(()=>i.layoutConfig?.dynamic?.controls?.showControls!==!1),b=f(()=>s.value?.state.config.maxFields??i.layoutConfig?.dynamic?.dynamic?.maxFields??50),x=f(()=>s.value?.dynamicFieldsCount.value??0),S=f(()=>s.value?.canAddMoreFields.value??!1),w=f(()=>i.formItems.length),T=()=>{let e=s.value?.addField();e&&a(`field-add`,e)},D=()=>{let e=s.value?.removeField();e&&a(`field-remove`,e.prop)},O=()=>{(s.value?.clearDynamicFields()??0)>0&&a(`fields-clear`)},k=e=>{e!==null&&s.value?.updateConfig({maxFields:e})},j=(e,t)=>e.key?.toString()||e.props?.path?.toString()||`dynamic-item-${t}`,M=e=>{let t=i.options?.[e]?.layout?.span;return typeof t==`number`&&t>0&&t<=l.value?t:Math.min(12,l.value)},N=e=>{if(!s.value)return!1;let t=e.props?.path?.toString()||e.key?.toString()||``;return s.value.state.dynamicFields.some(e=>e.prop===t)};return t({addField:()=>s.value?.addField(),removeField:()=>s.value?.removeField(),clearAllDynamic:()=>s.value?.clearDynamicFields(),isDynamicStateAvailable:c,dynamicState:s}),(t,r)=>{let i=re,a=G,o=X,s=pe,f=we,C=K,F=W,I=J,z=q;return A(),h(`div`,qt,[m(` 动态控制面板 `),y.value&&c.value?(A(),h(`div`,Jt,[v(C,{size:`small`,title:`动态表单控制`,bordered:!1},{"header-extra":U(()=>[v(i,{value:x.value,type:`warning`},{default:U(()=>[v(n,{name:`mdi:layers`,size:16})]),_:1},8,[`value`])]),default:U(()=>[v(o,{justify:`space-between`,align:`center`},{default:U(()=>[v(o,null,{default:U(()=>[v(a,{size:`small`,type:`primary`,disabled:!S.value,onClick:T},{icon:U(()=>[v(n,{name:`mdi:plus`,size:14})]),default:U(()=>[_(` 添加字段 (`+R(x.value)+`/`+R(b.value)+`) `,1)]),_:1},8,[`disabled`]),v(a,{size:`small`,type:`warning`,disabled:x.value===0,onClick:D},{icon:U(()=>[v(n,{name:`mdi:minus`,size:14})]),default:U(()=>[r[0]||=_(` 移除字段 `,-1)]),_:1},8,[`disabled`]),v(a,{size:`small`,type:`error`,disabled:x.value===0,onClick:O},{icon:U(()=>[v(n,{name:`mdi:delete-sweep`,size:14})]),default:U(()=>[r[1]||=_(` 清空动态 `,-1)]),_:1},8,[`disabled`])]),_:1}),m(` 最大字段数配置 `),g(`div`,Yt,[r[2]||=g(`span`,null,`最大字段数:`,-1),v(s,{value:b.value,"onUpdate:value":k,min:5,max:50,size:`small`,style:{width:`100px`}},null,8,[`value`])])]),_:1}),g(`div`,Xt,[v(o,null,{default:U(()=>[v(f,{type:`info`},{default:U(()=>[_(`总字段: `+R(w.value),1)]),_:1}),v(f,{type:`warning`},{default:U(()=>[_(`动态: `+R(x.value),1)]),_:1})]),_:1})])]),_:1})])):y.value&&!c.value?(A(),h(d,{key:1},[m(` 状态不可用时的提示 `),g(`div`,Zt,[v(C,{size:`small`,title:`动态表单控制 (静态模式)`,bordered:!1},{default:U(()=>[v(F,{type:`info`,"show-icon":``},{icon:U(()=>[v(n,{name:`mdi:information-outline`,size:16})]),default:U(()=>[r[3]||=_(` 当前为静态模式,如需动态功能请在父组件中提供动态表单状态。 `,-1)]),_:1})]),_:1})])],2112)):m(`v-if`,!0),m(` 表单项渲染区域 `),g(`div`,Qt,[v(z,{cols:l.value,"x-gap":u.value,"y-gap":u.value},{default:U(()=>[(A(!0),h(d,null,P(e.formItems,(e,t)=>(A(),p(I,{key:j(e,t),span:M(t)},{default:U(()=>[g(`div`,{class:E([`dynamic-item-wrapper`,{"is-dynamic-field":N(e)}])},[(A(),p(L(e)))],2)]),_:2},1032,[`span`]))),128))]),_:1},8,[`cols`,`x-gap`,`y-gap`])])])}}}),[[`__scopeId`,`data-v-02a5a52b`]]);const en={class:`custom-layout`},tn={class:`toolbar-content`},nn={class:`mode-section`},rn={class:`stats-section`},an={class:`stat-item`},on={class:`stat-value`},sn={class:`stat-item`},cn={class:`stat-value`},ln={class:`actions-section`},un={class:`design-tools`},dn={class:`tool-group`},fn={key:0,class:`canvas-hint`},pn={class:`areas-container`},mn={class:`area-header`},hn={class:`area-info`},gn=[`onClick`],_n={class:`area-controls`},vn={class:`field-preview`},yn={class:`field-label`},bn={class:`field-type`},xn={key:0,class:`area-drop-zone`},Sn={class:`field-name`},Cn={class:`field-type-tag`},wn={key:0,class:`empty-layout`},Tn={key:1,class:`form-container`},En={class:`form-areas`};var Dn=r(b({__name:`index`,props:{options:{default:()=>[]},formItems:{default:()=>[]},formData:{default:()=>({})}},emits:[`fields-change`,`export-data`],setup(e,{emit:t}){let n=e,r=t,i=N(!0),a=N([]),o=N([]),s=N(``),c=f(()=>n.options?.length>0?n.options:n.formItems?.map(e=>{let t=e.props;return{prop:t?.path||``,label:t?.label||t?.path||``,type:`input`,show:!0}}).filter(e=>e.prop)||[]),l=f(()=>a.value.reduce((e,t)=>e+t.fields.length,0)),u=()=>`${Date.now()}-${Math.random().toString(36).substring(2,11)}`,y=e=>({input:`输入框`,select:`下拉框`,radio:`单选框`,checkbox:`复选框`,textarea:`文本域`,date:`日期`,number:`数字`})[e]||e,b=e=>n.formItems?.find(t=>t.props?.path===e.prop)||null,x=e=>{let t={id:u(),title:`${e===`horizontal`?`水平`:e===`vertical`?`垂直`:`网格`}区域`,type:e,fields:[]};a.value.push(t)},S=e=>{let t=a.value.findIndex(t=>t.id===e);t!==-1&&a.value.splice(t,1)},C=e=>({...e,id:`${e.prop}-${u()}`}),w=(e,t)=>{let n=a.value.find(t=>t.id===e);if(n){let e=n.fields.findIndex(e=>e.id===t);e!==-1&&n.fields.splice(e,1)}},T=()=>{let e=JSON.stringify(a.value,null,2),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`layout-config-${Date.now()}.json`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)},D=()=>{a.value=[]},O=()=>{r(`export-data`,{layout:a.value,formData:n.formData,timestamp:new Date().toISOString()})};return H(()=>{let e=new Set(a.value.flatMap(e=>e.fields.map(e=>e.prop)));o.value=c.value.filter(t=>!e.has(t.prop)).map(e=>({...e,id:e.prop}))}),V(()=>a.value,()=>{r(`fields-change`,a.value.flatMap(e=>e.fields.map(e=>({...e,id:void 0}))))},{deep:!0}),(e,t)=>{let n=G,r=ie,c=K,u=Y,f=we,k=ue;return A(),h(`div`,en,[m(` 顶部工具栏 `),v(c,{bordered:!1,class:`toolbar-card`},{default:U(()=>[g(`div`,tn,[m(` 模式切换 `),g(`div`,nn,[t[12]||=g(`span`,{class:`section-label`},`自定义模式:`,-1),v(r,null,{default:U(()=>[v(n,{type:i.value?`primary`:`default`,onClick:t[0]||=e=>i.value=!0,size:`small`},{default:U(()=>[...t[10]||=[_(` 🎨 设计模式 `,-1)]]),_:1},8,[`type`]),v(n,{type:i.value?`default`:`primary`,onClick:t[1]||=e=>i.value=!1,size:`small`},{default:U(()=>[...t[11]||=[_(` 📝 填写模式 `,-1)]]),_:1},8,[`type`])]),_:1})]),m(` 统计信息 `),g(`div`,rn,[g(`div`,an,[g(`div`,on,R(a.value.length),1),t[13]||=g(`div`,{class:`stat-label`},`自定义区域`,-1)]),g(`div`,sn,[g(`div`,cn,R(l.value),1),t[14]||=g(`div`,{class:`stat-label`},`字段总数`,-1)])]),m(` 操作按钮 `),g(`div`,ln,[i.value?(A(),h(d,{key:0},[v(n,{secondary:``,onClick:T,size:`small`},{default:U(()=>[...t[15]||=[_(` 💾 保存布局 `,-1)]]),_:1}),v(n,{secondary:``,onClick:D,size:`small`},{default:U(()=>[...t[16]||=[_(` 🔄 重置布局 `,-1)]]),_:1})],64)):(A(),p(n,{key:1,secondary:``,onClick:O,size:`small`},{default:U(()=>[...t[17]||=[_(` 📊 导出数据 `,-1)]]),_:1}))])])]),_:1}),m(` 设计模式工具面板 `),i.value?(A(),p(c,{key:0,class:`design-panel`,title:`🎨 设计工具`},{default:U(()=>[g(`div`,un,[g(`div`,dn,[t[21]||=g(`span`,{class:`group-label`},`添加区域:`,-1),v(n,{onClick:t[2]||=e=>x(`horizontal`),size:`small`},{default:U(()=>[...t[18]||=[_(` ➡️ 水平区域 `,-1)]]),_:1}),v(n,{onClick:t[3]||=e=>x(`vertical`),size:`small`},{default:U(()=>[...t[19]||=[_(` ⬇️ 垂直区域 `,-1)]]),_:1}),v(n,{onClick:t[4]||=e=>x(`grid`),size:`small`},{default:U(()=>[...t[20]||=[_(` ⚏ 网格区域 `,-1)]]),_:1})])])]),_:1})):m(`v-if`,!0),m(` 主画布区域 `),g(`div`,{class:E([`layout-canvas`,{"design-mode":i.value}])},[m(` 设计模式 `),i.value?(A(),h(d,{key:0},[a.value.length===0?(A(),h(`div`,fn,[...t[22]||=[g(`div`,{class:`hint-content`},[g(`h3`,null,`🎨 开始自定义你的布局`),g(`p`,null,`点击上方按钮添加区域`)],-1)]])):(A(),h(d,{key:1},[m(` 区域列表 `),g(`div`,pn,[(A(!0),h(d,null,P(a.value,e=>(A(),h(`div`,{key:e.id,class:E([`custom-area`,`area-${e.type}`])},[g(`div`,mn,[g(`div`,hn,[s.value===e.id?(A(),p(u,{key:0,value:e.title,"onUpdate:value":t=>e.title=t,size:`small`,onBlur:t[5]||=e=>s.value=``,onKeyup:t[6]||=ne(e=>s.value=``,[`enter`]),class:`title-input`},null,8,[`value`,`onUpdate:value`])):(A(),h(`span`,{key:1,class:`area-title`,onClick:t=>s.value=e.id},R(e.title),9,gn)),v(f,{size:`small`},{default:U(()=>[_(R(e.fields.length)+` 字段`,1)]),_:2},1024)]),g(`div`,_n,[v(n,{text:``,onClick:t=>S(e.id),size:`tiny`,type:`error`,title:`删除区域`},{default:U(()=>[...t[23]||=[_(` 🗑️ `,-1)]]),_:1},8,[`onClick`])])]),m(` 字段容器(可拖入) `),v(B(Oe),{modelValue:e.fields,"onUpdate:modelValue":t=>e.fields=t,class:`area-fields`,group:{name:`form-fields`,pull:!0,put:!0},animation:200,"ghost-class":`field-ghost`,"item-key":`id`},{default:U(()=>[(A(!0),h(d,null,P(e.fields,r=>(A(),h(`div`,{key:r.id,class:`field-item`},[g(`div`,vn,[t[25]||=g(`span`,{class:`drag-handle`},`⠿`,-1),g(`span`,yn,R(r.label||r.prop),1),g(`span`,bn,R(y(r.type)),1),v(n,{text:``,size:`tiny`,type:`error`,onClick:t=>w(e.id,r.id),title:`移出字段`},{default:U(()=>[...t[24]||=[_(` ✕ `,-1)]]),_:1},8,[`onClick`])])]))),128))]),_:2},1032,[`modelValue`,`onUpdate:modelValue`]),e.fields.length===0?(A(),h(`div`,xn,` 从下方字段池拖拽字段到这里 `)):m(`v-if`,!0)],2))),128))])],2112)),m(` 字段池(可拖出) `),v(c,{class:`field-pool`,title:`📦 可用字段`},{default:U(()=>[v(B(Oe),{modelValue:o.value,"onUpdate:modelValue":t[7]||=e=>o.value=e,class:`pool-fields-grid`,group:{name:`form-fields`,pull:`clone`,put:!0},animation:200,sort:!1,"ghost-class":`field-ghost`,"item-key":`id`,clone:C},{default:U(()=>[(A(!0),h(d,null,P(o.value,e=>(A(),h(`div`,{key:e.id,class:`pool-field`},[t[26]||=g(`span`,{class:`drag-handle`},`⠿`,-1),g(`span`,Sn,R(e.label||e.prop),1),g(`span`,Cn,R(y(e.type)),1)]))),128))]),_:1},8,[`modelValue`])]),_:1})],64)):(A(),h(d,{key:1},[m(` 填写模式 `),a.value.length===0?(A(),h(`div`,wn,[v(k,{description:`尚未设计布局`},{extra:U(()=>[v(n,{onClick:t[8]||=e=>i.value=!0,type:`primary`},{default:U(()=>[...t[27]||=[_(` 🎨 开始设计 `,-1)]]),_:1})]),_:1})])):(A(),h(`div`,Tn,[g(`div`,En,[(A(!0),h(d,null,P(a.value,e=>(A(),h(`div`,{key:e.id,class:E([`form-area`,`area-${e.type}`])},[e.fields.length>0?(A(),p(c,{key:0,title:e.title},{default:U(()=>[g(`div`,{class:E([`area-form-items`,`layout-${e.type}`])},[(A(!0),h(d,null,P(e.fields,e=>(A(),p(L(b(e)),{key:e.prop}))),128))],2)]),_:2},1032,[`title`])):(A(),p(k,{key:1,description:`此区域暂无字段`,size:`small`},{extra:U(()=>[v(n,{onClick:t[9]||=e=>i.value=!0,size:`small`,secondary:``},{default:U(()=>[...t[28]||=[_(` 🎨 添加字段 `,-1)]]),_:1})]),_:1}))],2))),128))])]))],64))],2)])}}}),[[`__scopeId`,`data-v-fe093284`]]);const On=b({name:`C_Form`,__name:`index`,props:{options:{},modelValue:{},config:{default:()=>({})},renderers:{}},emits:[`submit`,`update:modelValue`,`validate-success`,`validate-error`],setup(t,{expose:n,emit:r}){let i=y(()=>import(`./C_Editor.js`).then(e=>e.C_Editor)),a={default:qe,inline:Je,grid:et,card:Tt,tabs:Nt,steps:Vt,dynamic:$t,custom:Dn},o={NFormItem:fe,NInput:Y,NInputNumber:pe,NSwitch:Se,NSlider:ye,NRate:_e,NDatePicker:le,NTimePicker:Te,NCascader:ae,NColorPicker:ce,NSelect:ve,NCheckboxGroup:se,NCheckbox:oe,NRadioGroup:ge,NRadio:he,NUpload:De,NButton:G,NSpace:X,NTooltip:Ee,C_Editor:i},s=t,c=r,l=Ae(),u=f(()=>Pe(je(s.config,l))),{t:d}=e(()=>u.value.locale),h=N(null),{formModel:g,formRules:b,visibleOptions:S,initialize:C,handleFieldChange:T,validate:E,validateField:D,validateStep:O,validateTab:k,validateDynamicFields:j,validateCustomGroup:M,clearValidation:P,getModel:I,setFields:z,resetFields:ee,setFieldValue:V,getFieldValue:H,setFieldsValue:te,handleSubmit:ne,handleReset:W,isDirty:re,getChangedFields:ie,isFieldDirty:K,markAsClean:ue,asyncOptionsCache:q,asyncLoadingMap:J,asyncErrorMap:me,reloadOptions:be,setFormItemRef:xe,isSubmitting:Z,submit:Ce}=ze(f(()=>s.options),u,h,c,f(()=>s.modelValue)),{formItems:we}=Ge({formModel:g,visibleOptions:S,config:u,handleFieldChange:T,componentMap:o,instanceSlots:x()?.slots,asyncOptionsCache:q,asyncLoadingMap:J,renderers:f(()=>s.renderers),setFormItemRef:xe,onError:(e,t)=>u.value.onError?.(e,{source:`render`,field:t})}),Oe=f(()=>a[u.value.layout]||a.default),ke=f(()=>({type:u.value.layout,grid:u.value.grid,inline:u.value.inline,card:u.value.card,tabs:u.value.tabs,steps:u.value.steps,dynamic:u.value.dynamic,custom:u.value.custom})),Me=f(()=>Fe(u.value)),Ne=f(()=>u.value.layout===`steps`?{beforeStepChange:He,validateStep:Ue}:u.value.layout===`tabs`?{beforeTabChange:Be,validateTab:Ve}:{}),Q=(e,...t)=>{let n=u.value[e];if(typeof n==`function`)try{let e=n(...t);e instanceof Promise&&e.catch(e=>u.value.onError?.(e,{source:`callback`}))}catch(e){u.value.onError?.(e,{source:`callback`})}},Ie=e=>{u.value.onFieldsChange?.(e)},Le=e=>{c(`validate-success`,e)},Re=e=>{c(`validate-error`,e)},Be=async(e,t)=>{try{return await u.value.onTabBeforeChange?.(e,t)!==!1}catch(e){return u.value.onError?.(e,{source:`callback`}),!1}},Ve=async e=>{let t=await k(e);return t&&u.value.onTabValidate?.(e),t},$=(e,t)=>{u.value.onStepChange?.(e,t)},He=async(e,t)=>{try{return await u.value.onStepBeforeChange?.(e,t)!==!1}catch(e){return u.value.onError?.(e,{source:`callback`}),!1}},Ue=async e=>{try{return await O(e)?(u.value.onStepValidate?.(e),!0):!1}catch{return!1}};return n({validate:E,validateField:D,validateStep:O,validateTab:k,validateDynamicFields:j,validateCustomGroup:M,clearValidation:P,getModel:I,setFields:z,resetFields:ee,setFieldValue:V,getFieldValue:H,setFieldsValue:te,formRef:h,formModel:g,initialize:C,layoutType:f(()=>u.value.layout),shouldShowDefaultActions:Me,isDirty:re,getChangedFields:ie,isFieldDirty:K,markAsClean:ue,asyncLoadingMap:J,asyncErrorMap:me,reloadOptions:be,isSubmitting:Z,submit:Ce}),(e,t)=>(A(),p(B(de),w({ref_key:`formRef`,ref:h,model:B(g),rules:B(b),"validate-on-rule-change":!1,"label-placement":u.value.labelPlacement,"label-width":u.value.labelWidth,size:u.value.size,disabled:u.value.disabled,readonly:u.value.readonly},e.$attrs),{default:U(()=>[m(` 布局组件渲染 `),(A(),p(L(Oe.value),w({"form-items":B(we),"layout-config":ke.value,options:B(S),"form-data":B(g)},Ne.value,{onTabChange:t[0]||=(e,t)=>Q(`onTabChange`,e,t),onStepChange:$,onFieldAdd:t[1]||=e=>Q(`onFieldAdd`,e),onFieldRemove:t[2]||=e=>Q(`onFieldRemove`,e),onFieldToggle:t[3]||=(e,t)=>Q(`onFieldToggle`,e,t),onFieldsClear:t[4]||=e=>Q(`onFieldsClear`),onRenderModeChange:t[5]||=e=>Q(`onRenderModeChange`,e),onGroupToggle:t[6]||=(e,t)=>Q(`onGroupToggle`,e,t),onGroupReset:t[7]||=e=>Q(`onGroupReset`,e),onValidateSuccess:Le,onValidateError:Re,onFieldsChange:Ie}),null,16,[`form-items`,`layout-config`,`options`,`form-data`])),m(` 表单操作按钮区域(只在特定布局中显示) `),Me.value?(A(),p(B(fe),{key:0,style:{"margin-top":`20px`}},{default:U(()=>[F(e.$slots,`action`,{form:h.value,model:B(g),validate:B(E),validateField:B(D),reset:B(ee),setFields:B(z),getModel:B(I),clearValidation:B(P),submit:B(Ce),reloadOptions:B(be),submitting:B(Z)},()=>[v(B(X),null,{default:U(()=>[v(B(G),{type:`primary`,loading:B(Z),disabled:B(Z),onClick:B(ne)},{default:U(()=>[_(R(u.value.submitText||B(d)(`common.submit`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`]),v(B(G),{disabled:B(Z),onClick:B(W)},{default:U(()=>[_(R(u.value.resetText||B(d)(`common.reset`)),1)]),_:1},8,[`disabled`,`onClick`])]),_:1})])]),_:3})):m(`v-if`,!0)]),_:3},16,[`model`,`rules`,`label-placement`,`label-width`,`size`,`disabled`,`readonly`]))}});export{He as a,ze as c,ke as d,Ne as f,Ae as g,Fe as h,Gt as i,Q as l,Pe as m,Kt as n,Ue as o,je as p,Ut as r,Ge as s,On as t,Me as u};
1
+ import{i as e,r as t}from"./config.js";import{t as n}from"./C_Icon2.js";import{t as r}from"./export-helper.js";import{a as i,i as a,n as o,o as s,r as c,s as l,t as u}from"./data.js";import{Fragment as d,computed as f,createBlock as p,createCommentVNode as m,createElementBlock as h,createElementVNode as g,createSlots as _,createTextVNode as v,createVNode as y,defineAsyncComponent as b,defineComponent as x,getCurrentInstance as S,guardReactiveProps as C,h as w,inject as T,mergeProps as E,nextTick as D,normalizeClass as O,normalizeProps as k,normalizeStyle as A,onMounted as j,onScopeDispose as ee,openBlock as M,reactive as N,readonly as P,ref as F,renderList as I,renderSlot as L,resolveComponent as te,resolveDynamicComponent as R,toDisplayString as z,toValue as B,unref as V,vShow as ne,watch as H,watchEffect as re,withCtx as U,withDirectives as ie,withKeys as ae}from"vue";import{NAlert as W,NBadge as G,NButton as K,NButtonGroup as oe,NCard as q,NCascader as se,NCheckbox as ce,NCheckboxGroup as le,NColorPicker as ue,NDatePicker as de,NEmpty as J,NForm as fe,NFormItem as Y,NGrid as pe,NGridItem as me,NInput as he,NInputNumber as ge,NProgress as _e,NRadio as ve,NRadioGroup as ye,NRate as be,NSelect as xe,NSlider as Se,NSpace as X,NStep as Ce,NSteps as we,NSwitch as Te,NTabPane as Ee,NTabs as Z,NTag as De,NTimePicker as Oe,NTooltip as ke,NUpload as Ae}from"naive-ui";import{VueDraggable as je}from"vue-draggable-plus";const Me=Symbol(`c-form-global-config`);function Ne(){return S()?T(Me,{}):{}}function Pe(e,t){let n=e??{},r=(e,t)=>e||t?{...e,...t}:void 0;return{...t,...n,grid:r(t.grid,n.grid),inline:r(t.inline,n.inline),card:r(t.card,n.card),tabs:r(t.tabs,n.tabs),steps:r(t.steps,n.steps),dynamic:r(t.dynamic,n.dynamic),custom:r(t.custom,n.custom)}}const Fe={layout:`default`,labelPlacement:`left`,labelWidth:`auto`,size:`medium`,disabled:!1,readonly:!1,showActions:!0,validateOnChange:!1,preserveRemovedFields:!1,submitText:``,resetText:``,mode:`create`},Ie=[`steps`,`custom`];function Le(e){return{...Fe,...e}}function Re(e){return!(e.showActions===!1||Ie.includes(e.layout))}function ze(e,t){let n=F({}),r=f(()=>a().length>0);function a(){let r=n.value,a=t?B(t):void 0,o=new Set(a??[...Object.keys(r),...Object.keys(e)]),s=[];for(let t of o)i(c(r,t),c(e,t))||s.push(t);return s}function o(t){return!i(c(n.value,t),c(e,t))}function s(){n.value=u(e)}function l(){return u(n.value)}return{isDirty:r,getChangedFields:a,isFieldDirty:o,markAsClean:s,getCleanModel:l}}const Q={input:``,textarea:``,editor:``,select:null,datePicker:null,daterange:null,timePicker:null,cascader:null,colorPicker:null,checkbox:[],upload:[],radio:``,inputNumber:null,slider:null,rate:null,switch:!1};function Be(e){return u((e.value===void 0?Q[e.type]:e.value)??null)}function Ve(e){let t=new Set;e.forEach((e,n)=>{if(!e.prop?.trim())throw TypeError(`[C_Form] options[${n}].prop 不能为空`);if(t.has(e.prop))throw TypeError(`[C_Form] 字段 prop 重复: ${e.prop}`);t.add(e.prop)})}function He(n,r,d,p,m){let h=N({}),g=N({}),_=new Map,v=F({}),y=F({}),b=F({}),x=F(!1),S=new Map,C=new Map,w=new Map,T=new Set,E=!1,O=!1,k=0,A=t(()=>r.value.feedback),{t:j}=e(()=>r.value.locale),{isDirty:M,getChangedFields:P,isFieldDirty:I,markAsClean:L,getCleanModel:te}=ze(h,()=>n.value.map(e=>e.prop));function R(e,t,n){r.value.onError?r.value.onError(e,{source:t,field:n}):A.error(e instanceof Error?e.message:String(e),e)}let z=f(()=>n.value.filter(e=>{if(e.show===!1)return!1;if(!e.showWhen)return!0;try{return e.showWhen(h)}catch(t){return R(t,`callback`,e.prop),!1}}));function B(){O=!0;let e=++k;D(()=>{e===k&&(O=!1)})}function V(){return u(h)}function ne(e){let t=e?u(e):{};return n.value.forEach(e=>{a(t,e.prop)||l(t,e.prop,Be(e))}),t}function re(e){try{let t=e.rulesWhen?[...e.rulesWhen(h)]:[...e.rules??[]];if(e.required&&!t.some(e=>e.required)&&t.unshift({required:!0,message:j(`form.required`,{label:e.label||e.prop}),trigger:[`input`,`change`,`blur`]}),e.crossFieldValidator){let n=e.crossFieldValidator;t.push({async validator(){let e=await n(h);if(e)throw Error(e)},trigger:[`change`,`blur`]})}if(t.length===0){delete g[e.prop];return}g[e.prop]=t.map(t=>({...t,key:e.prop}))}catch(t){delete g[e.prop],R(t,`callback`,e.prop)}}function U(){n.value.forEach(e=>{(e.rulesWhen||e.crossFieldValidator)&&re(e)})}function ie(e){T.forEach(t=>{e.has(t)||(_.delete(t),delete g[t],delete v.value[t],delete y.value[t],delete b.value[t],C.get(t)?.abort(),C.delete(t),S.delete(t),w.delete(t),r.value.preserveRemovedFields||o(h,t))})}function ae(e=!1){try{Ve(n.value);let t=new Set(n.value.map(e=>e.prop));ie(t),n.value.forEach(e=>{a(h,e.prop)||l(h,e.prop,Be(e)),re(e),e.asyncOptions&&w.get(e.prop)!==e.asyncOptions&&(w.set(e.prop,e.asyncOptions),D(()=>K(e,`initialize`)))}),T=t,e&&D(L)}catch(e){throw R(e,`initialize`),e}}function W(e){B(),s(h,ne(e)),U()}function G(e,t,n){return n.signal.aborted||S.get(e)!==t}async function K(e,t){if(!e.asyncOptions)return;let{prop:n}=e,r=(S.get(n)??0)+1;S.set(n,r),C.get(n)?.abort();let i=new AbortController;C.set(n,i),y.value[n]=!0,delete b.value[n];try{let a=await e.asyncOptions(V(),{field:n,reason:t,signal:i.signal});if(G(n,r,i))return;if(!Array.isArray(a))throw TypeError(`[C_Form] ${n}.asyncOptions 必须返回数组`);v.value[n]=u([...a])}catch(e){if(G(n,r,i))return;b.value[n]=e,R(e,`async-options`,n)}finally{S.get(n)===r&&(y.value[n]=!1,C.delete(n))}}async function oe(e){let t=n.value.filter(t=>t.asyncOptions&&(!e||t.prop===e));if(e&&t.length===0)throw Error(`[C_Form] 未找到异步选项字段: ${e}`);await Promise.all(t.map(e=>K(e,`manual`)))}function q(){let e=n.value.filter(e=>e.valueWhen);if(e.length!==0){for(let t=0;t<=e.length;t+=1){let t=!1;for(let n of e)try{let e=n.valueWhen?.(h);e!==void 0&&!i(c(h,n.prop),e)&&(l(h,n.prop,u(e)),t=!0)}catch(e){R(e,`callback`,n.prop)}if(!t)return}R(Error(`[C_Form] valueWhen 存在循环依赖,已停止继续计算`),`callback`)}}function se(e){let t=new Set(e);return n.value.filter(e=>!e.asyncOptions||!e.dependsOn?!1:(Array.isArray(e.dependsOn)?e.dependsOn:[e.dependsOn]).some(e=>t.has(e)))}function ce(e){q(),U(),se(e).forEach(e=>{K(e,`dependency`)}),r.value.validateOnChange&&D(()=>{J([...e]).catch(()=>void 0)})}function le(e){ce([e])}function ue(e,t){t?_.set(e,t):_.delete(e)}async function de(){if(!d.value)throw Error(`[C_Form] 表单引用不存在`);try{await d.value.validate(),p(`validate-success`,V())}catch(e){throw p(`validate-error`,e),e}}async function J(e){if(!d.value)throw Error(`[C_Form] 表单引用不存在`);let t=[...new Set(Array.isArray(e)?e:[e])],n=[],r=t.flatMap(e=>{let t=_.get(e);return t?[t.validate()]:(n.push(e),[])});n.length>0&&r.push(d.value.validate(void 0,e=>n.includes(String(e.key??``))));let i=(await Promise.allSettled(r)).filter(e=>e.status===`rejected`).map(e=>e.reason);if(i.length>0)throw i}function fe(e){if(!e){d.value?.restoreValidation();return}(Array.isArray(e)?e:[e]).forEach(e=>_.get(e)?.restoreValidation())}async function Y(e){let t=n.value.filter(e).map(e=>e.prop);if(t.length===0)return!0;try{return await J(t),!0}catch{return!1}}function pe(e){let t=r.value.steps?.steps?.[e]?.key;return t?Y(e=>e.layout?.step===t):Promise.resolve(!0)}function me(e){return Y(t=>t.layout?.tab===e)}function he(){return Y(e=>!!e.layout?.dynamic)}function ge(e){return Y(t=>t.layout?.group===e)}function _e(e){Object.entries(u(e)).forEach(([e,t])=>{l(h,e,t)}),ce(Object.keys(e))}function ve(){s(h,te()),fe(),U()}async function ye(e,t,n=!1){l(h,e,u(t)),le(e),n&&await J(e)}function be(e){return u(c(h,e))}async function xe(e,t=!1){_e(e),t&&await J(Object.keys(e))}async function Se(){if(x.value)return!1;x.value=!0;try{await de();let e={model:V(),form:d.value};try{await r.value.onSubmit?.(e)}catch(e){return R(e,`submit`),!1}return p(`submit`,e),!0}catch{return!1}finally{x.value=!1}}function X(){ae(!0);let e=m?.value??(r.value.mode===`edit`?r.value.initialValues:void 0);e&&W(e),q(),D(L)}return H(n,()=>{let e=!E;e&&B(),ae(e),E=!0},{deep:!0,immediate:!0}),m&&H(m,e=>{e!==void 0&&!i(h,e)&&W(e)},{deep:!0,immediate:!0}),H(()=>[r.value.mode,r.value.initialValues],([e,t])=>{m?.value!==void 0||e!==`edit`||!t||(W(t),D(L))},{deep:!0}),H(h,e=>{O||p(`update:modelValue`,u(e))},{deep:!0,flush:`post`}),ee(()=>{C.forEach(e=>e.abort()),C.clear(),_.clear()}),{formModel:h,formRules:g,visibleOptions:z,initialize:X,handleFieldChange:le,setFormItemRef:ue,validate:de,validateField:J,validateStep:pe,validateTab:me,validateDynamicFields:he,validateCustomGroup:ge,clearValidation:fe,getModel:V,setFields:_e,resetFields:ve,setFieldValue:ye,getFieldValue:be,setFieldsValue:xe,submit:Se,handleSubmit:Se,handleReset:ve,isSubmitting:x,isDirty:M,getChangedFields:P,isFieldDirty:I,markAsClean:L,asyncOptionsCache:v,asyncLoadingMap:y,asyncErrorMap:b,reloadOptions:oe}}function Ue(e,t,n){return e===void 0?t:typeof e==`function`?e(n):e}function We(e){return{input:t=>w(e.NInput,{...t}),textarea:t=>w(e.NInput,{...t,type:`textarea`}),inputNumber:t=>w(e.NInputNumber,{...t}),switch:t=>w(e.NSwitch,{...t}),slider:t=>w(e.NSlider,{...t}),rate:t=>w(e.NRate,{...t}),datePicker:t=>w(e.NDatePicker,{...t}),daterange:t=>w(e.NDatePicker,{...t,type:`daterange`}),timePicker:t=>w(e.NTimePicker,{...t}),cascader:t=>w(e.NCascader,{...t}),colorPicker:t=>w(e.NColorPicker,{...t}),select:(t,n)=>w(e.NSelect,{...t,options:n.children?.map(e=>({...e}))||[]}),checkbox:(t,n)=>w(e.NCheckboxGroup,{...t},{default:()=>w(e.NSpace,{},{default:()=>n.children?.map(t=>w(e.NCheckbox,{value:t.value,label:t.label,disabled:t.disabled,key:String(t.value)}))||[]})}),radio:(t,n)=>w(e.NRadioGroup,{...t},{default:()=>w(e.NSpace,{},{default:()=>n.children?.map(t=>w(e.NRadio,{value:t.value,disabled:t.disabled,key:String(t.value)},{default:()=>t.label}))||[]})}),upload:(t,n,r,i)=>{let a={...t},{value:o}=a,s=a[`onUpdate:value`];return delete a.value,delete a[`onUpdate:value`],w(e.NUpload,{...a,fileList:Array.isArray(o)?o:[],"onUpdate:fileList":e=>s?.(e)},{trigger:()=>i.slots?.uploadClick?.()||w(e.NButton,{type:`primary`},{default:()=>`选择文件`}),tip:()=>i.slots?.uploadTip?.()||null})},editor:(t,n)=>{let r={...t},{value:i}=r,a=r[`onUpdate:value`];return delete r.value,delete r[`onUpdate:value`],w(e.C_Editor,{...r,editorId:`editor-${n.prop}`,modelValue:typeof i==`string`?i:``,"onUpdate:modelValue":e=>a?.(e)})}}}const $={};function Ge(e,t){if(!e.trim())throw TypeError(`[C_Form] renderer type 不能为空`);if(typeof t!=`function`)throw TypeError(`[C_Form] renderer ${e} 必须是函数`);return $[e]=t,()=>Ke(e,t)}function Ke(e,t){return!$[e]||t&&$[e]!==t?!1:delete $[e]}const qe=new Set([`select`,`checkbox`,`radio`,`cascader`]);function Je(e){let{formModel:t,visibleOptions:n,config:r,handleFieldChange:i,componentMap:a,instanceSlots:o,asyncOptionsCache:s,asyncLoadingMap:u,renderers:d,setFormItemRef:p,onError:m}=e,h=a,g=We(h),_=e=>d?.value?.[e]??$[e]??g[e],v=e=>{let n={value:c(t,e.prop),"onUpdate:value":n=>{l(t,e.prop,n),i(e.prop)},disabled:Ue(e.disabled,r.value.disabled,t),readonly:Ue(e.readonly,r.value.readonly,t)};return e.type===`textarea`&&(n.type=`textarea`),e.placeholder&&(n.placeholder=e.placeholder),n};function y(e){let t=e.children??[];return Object.prototype.hasOwnProperty.call(s.value,e.prop)?s.value[e.prop]??[]:t}function b(e){return qe.has(e.type)?{...e,children:y(e)}:e}function x(e,t){return e.type===`select`&&u.value[e.prop]&&(t.loading=!0),t}let S=e=>{try{let t=b(e),n=_(t.type);return n?n(x(t,E(t.attrs??{},v(t))),t,r.value,{slots:o,components:h}):(m?.(TypeError(`[C_Form] 未支持的组件类型: ${t.type}`),t.prop),null)}catch(t){return m?.(t,e.prop),null}};function C(e){if(e.label)return e.help?w(`span`,{style:`display:inline-flex;align-items:center;gap:4px`},[e.label,w(h.NTooltip,{trigger:`hover`},{trigger:()=>w(`span`,{style:`cursor:help;opacity:0.5;font-size:14px`,textContent:`ⓘ`}),default:()=>e.help})]):e.label}return{renderFormItem:S,formItems:f(()=>n.value.map(e=>{let t=!!(e.required||e.rules?.some(e=>e.required)),n=C(e);return w(h.NFormItem,{label:typeof n==`string`?n:void 0,path:e.prop,key:e.prop,required:t,ref:t=>p?.(e.prop,t)},{...typeof n!=`string`&&n?{label:()=>n}:{},default:()=>S(e)})})),getBaseProps:v}}const Ye={class:`c-form-default`};var Xe=r(x({__name:`index`,props:{formItems:{},layoutConfig:{},options:{}},setup(e){return(t,n)=>(M(),h(`div`,Ye,[(M(!0),h(d,null,I(e.formItems,e=>(M(),p(R(e),{key:e.key}))),128))]))}}),[[`__scopeId`,`data-v-f5303a7c`]]),Ze=r(x({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e){let t=e,n=f(()=>280),r=f(()=>t.layoutConfig?.inline?.gap??16),i=f(()=>16),a=f(()=>{let e=t.layoutConfig?.inline?.align;return e===`start`||e===`end`?e:`center`}),o=f(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;default:return`center`}}),s=f(()=>{switch(a.value){case`start`:return`flex-start`;case`end`:return`flex-end`;case`center`:return`center`;default:return`flex-start`}}),c=f(()=>({display:`flex`,flexWrap:`wrap`,alignItems:o.value,justifyContent:s.value,gap:`${i.value}px ${r.value}px`,width:`100%`})),l=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`form-item-${t}`},u=e=>{let r=t.options?.[e]?.layout,i={width:`${n.value}px`,flexShrink:0,display:`flex`,flexDirection:`column`};return r?.width!==void 0&&(i.width=typeof r.width==`number`?`${r.width}px`:r.width),r?.style&&Object.assign(i,r.style),i};return(t,n)=>(M(),h(`div`,{class:`c-form-inline`,style:A(c.value)},[(M(!0),h(d,null,I(e.formItems,(e,t)=>(M(),h(`div`,{key:l(e,t),class:`c-form-inline-item`,style:A(u(t))},[(M(),p(R(e)))],4))),128))],4))}}),[[`__scopeId`,`data-v-7c4a2aa3`]]);const Qe={class:`c-grid-layout`},$e={class:`config-header`},et={class:`config-controls`},tt={class:`config-label`},nt={class:`item-wrapper`};var rt=r(x({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]}},setup(e,{expose:t}){let r=e,i=N({cols:24,gutter:16,responsive:!0}),a=f(()=>r.layoutConfig?.grid||{}),o=f(()=>a.value.showConfigPanel),s=f(()=>a.value.showStats),c=f(()=>({cols:o.value?i.cols:a.value.cols??24,gutter:o.value?i.gutter:a.value.gutter??16,responsive:o.value?i.responsive:a.value.responsive??!0})),l=f(()=>({cols:c.value.cols,xGap:c.value.gutter,yGap:c.value.gutter,responsive:c.value.responsive?`screen`:`self`})),u=f(()=>[{key:`cols`,label:`列数`,component:`NInputNumber`,value:f({get:()=>i.cols,set:e=>i.cols=e}),props:{min:1,max:48,size:`small`}},{key:`gutter`,label:`间距`,component:`NInputNumber`,value:f({get:()=>i.gutter,set:e=>i.gutter=e}),props:{min:0,max:48,size:`small`}},{key:`responsive`,label:`响应式`,component:`NSwitch`,value:f({get:()=>i.responsive,set:e=>i.responsive=e}),props:{size:`small`}}]),_=f(()=>`列数: ${c.value.cols} | 间距: ${c.value.gutter}px | 项目: ${r.formItems.length}个`),b=(e,t)=>String(e.key)||e.props?.path||`grid-item-${t}`,x=(e,t)=>{let n=r.options?.[e]?.layout;return n?.[t]??n?.grid?.[t]},S=()=>{let{cols:e}=c.value;return e<=12?e:e<=24?12:8},C=e=>{let t=x(e,`span`),n=x(e,`offset`),r=x(e,`suffix`);return{span:typeof t==`number`&&t>0&&t<=c.value.cols?t:S(),offset:typeof n==`number`&&n>=0&&n<c.value.cols?n:0,suffix:!!r}};return H(a,e=>{e.cols!==void 0&&(i.cols=e.cols),e.gutter!==void 0&&(i.gutter=e.gutter),e.responsive!==void 0&&(i.responsive=e.responsive)},{immediate:!0}),t({updateGridConfig:e=>Object.assign(i,e),getCurrentConfig:()=>({...c.value}),getGridInfo:()=>({...c.value,itemCount:r.formItems.length})}),(t,r)=>{let i=q,a=me,c=pe,f=W;return M(),h(`div`,Qe,[m(` 配置面板 `),o.value?(M(),p(i,{key:0,size:`small`,bordered:!1,class:`config-panel`},{header:U(()=>[g(`div`,$e,[y(n,{name:`mdi:view-grid`,size:18}),r[0]||=g(`span`,null,`网格配置`,-1)])]),default:U(()=>[g(`div`,et,[(M(!0),h(d,null,I(u.value,e=>(M(),h(`div`,{key:e.key,class:`config-item`},[g(`span`,tt,z(e.label)+`:`,1),(M(),p(R(e.component),E({value:e.value,"onUpdate:value":t=>e.value=t},{ref_for:!0},e.props),null,16,[`value`,`onUpdate:value`]))]))),128))])]),_:1})):m(`v-if`,!0),m(` 网格容器 `),y(c,E(l.value,{class:`grid-container`}),{default:U(()=>[(M(!0),h(d,null,I(e.formItems,(e,t)=>(M(),p(a,E({key:b(e,t)},{ref_for:!0},C(t),{class:`grid-item`}),{default:U(()=>[g(`div`,nt,[(M(),p(R(e)))])]),_:2},1040))),128))]),_:1},16),m(` 统计信息 `),s.value?(M(),p(f,{key:1,type:`info`,"show-icon":!1,size:`small`,class:`grid-stats`},{header:U(()=>[y(n,{name:`mdi:information-outline`,size:16}),r[1]||=v(` 网格信息 `,-1)]),default:U(()=>[v(` `+z(_.value),1)]),_:1})):m(`v-if`,!0)])}}}),[[`__scopeId`,`data-v-90ef9fa4`]]);const it={class:`c-form-card`},at={class:`flex items-center gap-2`},ot={class:`config-controls`},st={class:`config-item`},ct={class:`flex items-center gap-2`},lt={class:`text-xs min-w-12`},ut={class:`config-item`},dt={class:`config-item`},ft={class:`config-item`},pt={class:`flex items-center gap-3`},mt={class:`card-header`},ht={class:`header-info`},gt={class:`header-text`},_t={key:0},vt={class:`header-actions`},yt={class:`field-stats`},bt={class:`card-content`},xt={key:0,class:`progress-section`},St={class:`action-content`},Ct={class:`status-summary`},wt={class:`status-item`},Tt={class:`progress-display`},Et={class:`text-sm min-w-12`},Dt={class:`action-buttons`};var Ot=r(x({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},formData:{default:()=>({})}},setup(e){let t=e,r=F(20),i=F(!0),a=F(!0),o=F(!0),s=F(`vertical`),c=F({}),l=f(()=>t.layoutConfig?.card?.groups||[]),u=f(()=>l.value.length>0),_=f(()=>t.layoutConfig?.card?.showLayoutConfig??!0),b=f(()=>t.layoutConfig?.card?.showActionPanel??!0),x=f(()=>u.value?`layout-${s.value}`:`layout-single`),S=f(()=>{if(!u.value)return[];let e=new Map;return l.value.forEach(t=>{e.set(t.key,[])}),t.formItems.forEach((n,r)=>{let i=(t.options?.[r])?.layout?.group||l.value[0]?.key||`default`;e.has(i)||e.set(i,[]),e.get(i).push(n)}),l.value.map(t=>({config:t,items:e.get(t.key)||[]})).filter(e=>e.items.length>0)}),C=f(()=>{let e=Object.keys(c.value);return e.length>0&&e.every(e=>c.value[e])}),w=f(()=>{if(!t.options||t.options.length===0)return 0;let e=t.options.filter(e=>{let n=t.formData?.[e.prop||``];return T(n)}).length;return Math.round(e/t.options.length*100)}),T=e=>e==null?!1:Array.isArray(e)?e.length>0:typeof e==`string`?e.trim()!==``:!0,E=e=>t.options?t.options.filter(t=>t.layout?.group===e.config.key).filter(e=>{let n=t.formData?.[e.prop||``];return T(n)}).length:0,D=e=>{if(e.items.length===0)return 0;let t=E(e);return Math.round(t/e.items.length*100)},k=e=>{let t={basic:`mdi:account`,contact:`mdi:phone`,preferences:`mdi:cog`,settings:`mdi:cog`,info:`mdi:information`,default:`mdi:form-select`};return t[e]||t.default},ee=e=>{c.value[e]=!c.value[e]},N=()=>{let e=!C.value;l.value.forEach(t=>{c.value[t.key]=e})};return j(()=>{let e=t.layoutConfig?.card;e?.direction&&(s.value=e.direction),e?.showProgress!==void 0&&(o.value=e.showProgress),l.value.forEach(e=>{c.value[e.key]=!1})}),(t,l)=>{let f=Se,T=Te,j=ve,P=ye,F=q,L=G,te=K,B=_e;return M(),h(`div`,it,[m(` 布局配置面板 `),u.value&&_.value?(M(),p(F,{key:0,class:`layout-config-panel`,bordered:!1},{header:U(()=>[g(`div`,at,[y(n,{name:`mdi:cog`,size:18}),l[4]||=g(`span`,null,`布局配置`,-1)])]),default:U(()=>[g(`div`,ot,[g(`div`,st,[l[5]||=g(`span`,null,`卡片间距`,-1),g(`div`,ct,[y(f,{value:r.value,"onUpdate:value":l[0]||=e=>r.value=e,min:12,max:32,step:4,class:`w-24`},null,8,[`value`]),g(`span`,lt,z(r.value)+`px`,1)])]),g(`div`,ut,[l[6]||=g(`span`,null,`显示图标`,-1),y(T,{value:i.value,"onUpdate:value":l[1]||=e=>i.value=e,size:`small`},null,8,[`value`])]),g(`div`,dt,[l[7]||=g(`span`,null,`可折叠`,-1),y(T,{value:a.value,"onUpdate:value":l[2]||=e=>a.value=e,size:`small`},null,8,[`value`])]),g(`div`,ft,[l[10]||=g(`span`,null,`布局方向`,-1),y(P,{value:s.value,"onUpdate:value":l[3]||=e=>s.value=e,size:`small`},{default:U(()=>[y(j,{value:`vertical`},{default:U(()=>[...l[8]||=[v(`垂直`,-1)]]),_:1}),y(j,{value:`horizontal`},{default:U(()=>[...l[9]||=[v(`水平`,-1)]]),_:1})]),_:1},8,[`value`])])])]),_:1})):m(`v-if`,!0),m(` 表单内容区域 `),g(`div`,{class:O([`form-content`,x.value]),style:A({gap:`${r.value}px`})},[m(` 无分组时的单卡片模式 `),u.value?(M(),h(d,{key:1},[m(` 有分组时的多卡片模式 `),(M(!0),h(d,null,I(S.value,e=>(M(),p(F,{key:e.config.key,class:O([`group-card`,[`${e.config.key}-card`,{collapsed:a.value&&c.value[e.config.key]}]]),hoverable:``},{header:U(()=>[g(`div`,mt,[g(`div`,ht,[i.value&&e.config.icon?(M(),p(n,{key:0,name:e.config.icon,size:20,class:`card-icon`},null,8,[`name`])):i.value?(M(),p(n,{key:1,name:k(e.config.key),size:20,class:`card-icon`},null,8,[`name`])):m(`v-if`,!0),g(`div`,gt,[g(`h3`,null,z(e.config.title),1),e.config.description?(M(),h(`p`,_t,z(e.config.description),1)):m(`v-if`,!0)])]),g(`div`,vt,[m(` 统计信息 `),g(`div`,yt,[y(L,{value:e.items.length,type:`info`,"show-zero":``},null,8,[`value`]),y(L,{value:`${E(e)}/${e.items.length}`,type:E(e)===e.items.length?`success`:`warning`},null,8,[`value`,`type`])]),m(` 折叠按钮 `),a.value?(M(),p(te,{key:0,quaternary:``,circle:``,size:`small`,onClick:t=>ee(e.config.key)},{icon:U(()=>[y(n,{name:c.value[e.config.key]?`mdi:chevron-down`:`mdi:chevron-up`,size:18},null,8,[`name`])]),_:2},1032,[`onClick`])):m(`v-if`,!0)])])]),default:U(()=>[ie(g(`div`,bt,[m(` 进度指示器 `),o.value?(M(),h(`div`,xt,[y(B,{percentage:D(e),color:D(e)===100?`#52c41a`:`#1890ff`,"show-indicator":!1,class:`mb-4`},null,8,[`percentage`,`color`])])):m(`v-if`,!0),m(` 表单项 `),(M(!0),h(d,null,I(e.items,e=>(M(),p(R(e),{key:e.key}))),128))],512),[[ne,!c.value[e.config.key]]])]),_:2},1032,[`class`]))),128))],64)):(M(),p(F,{key:0,class:`single-card`,hoverable:``},{header:U(()=>[g(`div`,pt,[i.value?(M(),p(n,{key:0,name:`mdi:form-select`,size:18,style:{color:`#3b82f6`}})):m(`v-if`,!0),l[11]||=g(`span`,null,`表单信息`,-1)])]),default:U(()=>[(M(!0),h(d,null,I(e.formItems,e=>(M(),p(R(e),{key:e.key}))),128))]),_:1}))],6),m(` 统一操作面板 `),u.value&&b.value?(M(),p(F,{key:1,class:`action-panel`,bordered:!1},{default:U(()=>[g(`div`,St,[g(`div`,Ct,[g(`div`,wt,[l[12]||=g(`span`,{class:`label`},`完成进度:`,-1),g(`div`,Tt,[y(B,{percentage:w.value,"show-indicator":!1,color:w.value===100?`#52c41a`:`#1890ff`,class:`flex-1`},null,8,[`percentage`,`color`]),g(`span`,Et,z(w.value)+`%`,1)])])]),g(`div`,Dt,[a.value?(M(),p(te,{key:0,onClick:N},{icon:U(()=>[y(n,{name:C.value?`mdi:unfold-more-horizontal`:`mdi:unfold-less-horizontal`,size:18},null,8,[`name`])]),default:U(()=>[v(` `+z(C.value?`展开全部`:`折叠全部`),1)]),_:1})):m(`v-if`,!0)])])]),_:1})):m(`v-if`,!0)])}}}),[[`__scopeId`,`data-v-cb63c8f5`]]);const kt={class:`c-form-tabs`},At={key:0,class:`single-panel`},jt={class:`tabs-container`},Mt={key:0,class:`tab-header`},Nt={class:`tab-description`},Pt={class:`tab-form-items`},Ft={key:0,class:`tabs-actions`};var It=r(x({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},beforeTabChange:{},validateTab:{}},emits:[`tab-change`,`tab-before-change`,`tab-validate`,`tab-close`,`tab-add`],setup(e,{expose:t,emit:r}){let i=e,a=r,o=F(``),s=N({}),c=()=>({tabs:[],type:`line`,size:`medium`,placement:`top`,animated:!0,closable:!1,addable:!1,showTabHeader:!0,showActions:!1,showCount:!1,validateBeforeSwitch:!1,defaultTab:``}),l=f(()=>{let e=c(),t=i.layoutConfig?.tabs||{};return{...e,...t}}),u=f(()=>l.value.tabs.length>0),_=f(()=>{if(!u.value)return[];let e=new Map;return l.value.tabs.forEach(t=>{e.set(t.key,[])}),i.formItems.forEach((t,n)=>{let r=(i.options?.[n])?.layout?.tab||l.value.tabs[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),l.value.tabs.map(t=>({config:t,items:e.get(t.key)||[]}))}),b=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?String(n.path):`tab-item-${t}`},x=async()=>{if(!o.value)return!0;try{let e=i.validateTab?await i.validateTab(o.value):!0;return a(`tab-validate`,o.value),s[o.value]=e,e}catch{return s[o.value]=!1,!1}},S=async e=>{if(!e||e===o.value)return!0;if(!_.value.some(t=>t.config.key===e))return!1;try{if(l.value.validateBeforeSwitch&&o.value&&!await x())return!1;if(o.value){if(await i.beforeTabChange?.(o.value,e)===!1)return!1;a(`tab-before-change`,o.value,e)}return o.value=e,a(`tab-change`,e,_.value.findIndex(t=>t.config.key===e)),!0}catch{return!1}},C=e=>{S(e)},w=e=>{a(`tab-close`,e)},T=()=>{a(`tab-add`)},E=()=>{if(!u.value||_.value.length===0)return;let{defaultTab:e}=l.value,t=e||_.value[0]?.config.key;t&&t!==o.value&&(o.value=t,D(()=>{let e=_.value.findIndex(e=>e.config.key===t);e>=0&&a(`tab-change`,t,e)}))};return j(()=>{E()}),H(f(()=>l.value.tabs.map(e=>e.key).join(`,`)),()=>{o.value&&!l.value.tabs.some(e=>e.key===o.value)&&E()}),H(()=>l.value.defaultTab,e=>{e&&e!==o.value&&S(e)}),t({switchToTab:S,validateCurrentTab:x,currentTab:P(o),totalTabs:f(()=>_.value.length),tabsWithItems:P(_)}),(t,r)=>{let i=G,a=X,s=J,c=Ee,f=Z,E=K;return M(),h(`div`,kt,[m(` 无标签配置时的单一面板模式 `),u.value?(M(),h(d,{key:1},[m(` 有标签配置时的分标签模式 `),g(`div`,jt,[y(f,{value:o.value,"onUpdate:value":[r[0]||=e=>o.value=e,C],type:l.value.type,size:l.value.size,placement:l.value.placement,animated:l.value.animated,closable:l.value.closable,addable:l.value.addable,class:`form-tabs`,onClose:w,onAdd:T},{default:U(()=>[(M(!0),h(d,null,I(_.value,e=>(M(),p(c,{key:e.config.key,name:e.config.key,tab:e.config.title,disabled:e.config.disabled,closable:e.config.closable},{tab:U(()=>[y(a,{align:`center`,size:8},{default:U(()=>[e.config.icon?(M(),p(n,{key:0,name:e.config.icon,size:16,class:`tab-icon`},null,8,[`name`])):m(`v-if`,!0),g(`span`,null,z(e.config.title),1),l.value.showCount?(M(),p(i,{key:1,value:e.items.length,max:99,show:e.items.length>0,type:`info`},null,8,[`value`,`show`])):m(`v-if`,!0)]),_:2},1024)]),default:U(()=>[l.value.showTabHeader&&e.config.description?(M(),h(`div`,Mt,[g(`p`,Nt,z(e.config.description),1)])):m(`v-if`,!0),g(`div`,Pt,[(M(!0),h(d,null,I(e.items,(e,t)=>(M(),p(R(e),{key:b(e,t)}))),128))]),e.items.length===0?(M(),p(s,{key:1,description:`暂无表单项`,class:`tab-empty`})):m(`v-if`,!0)]),_:2},1032,[`name`,`tab`,`disabled`,`closable`]))),128))]),_:1},8,[`value`,`type`,`size`,`placement`,`animated`,`closable`,`addable`]),m(` 标签页操作按钮 `),l.value.showActions?(M(),h(`div`,Ft,[y(a,{justify:`space-between`},{default:U(()=>[y(a,null,{default:U(()=>[l.value.validateBeforeSwitch?(M(),p(E,{key:0,type:`primary`,size:`small`,onClick:x},{default:U(()=>[y(n,{name:`carbon:star-check`,size:14,style:{"margin-right":`4px`}}),r[1]||=v(` 验证当前标签 `,-1)]),_:1})):m(`v-if`,!0)]),_:1}),y(a,null,{default:U(()=>[L(t.$slots,`tab-actions`,{currentTab:o.value,totalTabs:_.value.length,validateTab:x,switchToTab:S},void 0,!0)]),_:3})]),_:3})])):m(`v-if`,!0)])],2112)):(M(),h(`div`,At,[(M(!0),h(d,null,I(e.formItems,(e,t)=>(M(),p(R(e),{key:b(e,t)}))),128))]))])}}}),[[`__scopeId`,`data-v-3617f22f`]]);const Lt={class:`c-form-steps`},Rt={key:0,class:`single-panel`},zt={key:0,class:`step-header`},Bt={class:`step-title`},Vt={key:0,class:`step-description`},Ht={class:`step-form-items`},Ut={class:`steps-actions`};var Wt=r(x({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},beforeStepChange:{},validateStep:{}},emits:[`step-change`,`step-before-change`,`step-validate`],setup(e,{expose:t,emit:r}){let i=e,a=r,o=F(0),s=F(!1),c=N({}),l=f(()=>{let e=i.layoutConfig?.steps||{};return{steps:e.steps||[],vertical:e.vertical||!1,size:e.size||`medium`,showStepHeader:e.showStepHeader!==!1,validateBeforeNext:e.validateBeforeNext||!1,prevButtonText:e.prevButtonText||`上一步`,nextButtonText:e.nextButtonText||`下一步`,defaultStep:e.defaultStep||0}}),u=f(()=>l.value.steps.length>0),_=f(()=>{if(!u.value)return[];let e=new Map;return l.value.steps.forEach(t=>{e.set(t.key,[])}),i.formItems.forEach((t,n)=>{let r=(i.options?.[n])?.layout?.step||l.value.steps[0]?.key||`default`;e.has(r)||e.set(r,[]),e.get(r).push(t)}),l.value.steps.map(t=>({config:t,items:e.get(t.key)||[]})).filter(e=>e.items.length>0)}),b=f(()=>{for(let e=0;e<=o.value;e++)if(c[e]===!1)return`error`;return`process`}),x=f(()=>o.value===0),S=f(()=>o.value===_.value.length-1),C=(e,t)=>{if(e.key!=null)return String(e.key);let n=e.props;return n?.path?n.path:`step-item-${t}`},w=async()=>{try{let e=i.validateStep?await i.validateStep(o.value):!0;return a(`step-validate`,o.value),c[o.value]=e,e}catch{return c[o.value]=!1,!1}},T=async(e,t=!1)=>{if(e<0||e>=_.value.length)return!1;if(e===o.value)return!0;try{return s.value=!0,t&&l.value.validateBeforeNext&&!await w()||await i.beforeStepChange?.(o.value,e)===!1?!1:(a(`step-before-change`,o.value,e),o.value=e,a(`step-change`,o.value,_.value[o.value].config.key),!0)}catch{return!1}finally{s.value=!1}},E=async()=>{await T(o.value+1,!0)},D=()=>{T(o.value-1)},k=async e=>{_.value[e]?.config.disabled||await T(e,e>o.value)},A=()=>{if(!u.value||_.value.length===0)return;let{defaultStep:e}=l.value;o.value=e>=0&&e<_.value.length&&!_.value[e]?.config.disabled?e:0};return H(f(()=>l.value.steps.map(e=>e.key).join(`,`)),()=>{A()}),j(()=>{A()}),t({nextStep:E,previousStep:D,goToStep:k,validateCurrentStep:w,currentStep:P(o),totalSteps:f(()=>_.value.length)}),(t,r)=>{let i=Ce,a=we,c=q,f=K,w=X;return M(),h(`div`,Lt,[m(` 无步骤配置时的单一面板模式 `),u.value?(M(),h(d,{key:1},[m(` 有步骤配置时的分步骤模式 `),g(`div`,{class:O([`steps-container`,{"is-vertical":l.value.vertical}])},[m(` 步骤指示器 `),y(a,{current:o.value+1,status:b.value,size:l.value.size,vertical:l.value.vertical,class:`steps-indicator`},{default:U(()=>[(M(!0),h(d,null,I(_.value,e=>(M(),p(i,{key:e.config.key,title:e.config.title,description:e.config.description,disabled:e.config.disabled},null,8,[`title`,`description`,`disabled`]))),128))]),_:1},8,[`current`,`status`,`size`,`vertical`]),m(` 步骤内容区域 `),y(c,{class:`steps-content`,bordered:!1},{default:U(()=>[(M(!0),h(d,null,I(_.value,(e,t)=>ie((M(),h(`div`,{key:e.config.key,class:`step-panel`},[m(` 步骤标题和描述 `),l.value.showStepHeader?(M(),h(`div`,zt,[g(`h3`,Bt,z(e.config.title),1),e.config.description?(M(),h(`p`,Vt,z(e.config.description),1)):m(`v-if`,!0)])):m(`v-if`,!0),m(` 步骤内的表单项 `),g(`div`,Ht,[(M(!0),h(d,null,I(e.items,(e,t)=>(M(),p(R(e),{key:C(e,t)}))),128))])])),[[ne,o.value===t]])),128))]),_:1}),m(` 步骤操作按钮 `),g(`div`,Ut,[y(w,{justify:`space-between`},{default:U(()=>[o.value>0?(M(),p(f,{key:0,disabled:s.value,onClick:D},{default:U(()=>[y(n,{name:`mdi:chevron-left-first`,size:16,style:{"margin-right":`4px`}}),v(` `+z(l.value.prevButtonText),1)]),_:1},8,[`disabled`])):m(`v-if`,!0),r[0]||=g(`div`,null,null,-1),y(w,null,{default:U(()=>[o.value<_.value.length-1?(M(),p(f,{key:0,type:`primary`,loading:s.value,onClick:E},{default:U(()=>[v(z(l.value.nextButtonText)+` `,1),y(n,{name:`mdi:chevron-right-last`,size:16,style:{"margin-left":`4px`}})]),_:1},8,[`loading`])):m(`v-if`,!0),L(t.$slots,`step-actions`,{currentStep:o.value,totalSteps:_.value.length,isFirstStep:x.value,isLastStep:S.value,nextStep:E,previousStep:D,goToStep:k},void 0,!0)]),_:3})]),_:3})])],2)],2112)):(M(),h(`div`,Rt,[(M(!0),h(d,null,I(e.formItems,(e,t)=>(M(),p(R(e),{key:C(e,t)}))),128))]))])}}}),[[`__scopeId`,`data-v-d1b5209b`]]);const Gt={maxFields:20,autoSave:!1,enableSort:!0,showControls:!0,showItemControls:!0},Kt=[{label:`文本输入`,value:`input`},{label:`数字输入`,value:`inputNumber`},{label:`多行文本`,value:`textarea`},{label:`下拉选择`,value:`select`},{label:`开关切换`,value:`switch`},{label:`评分组件`,value:`rate`}];function qt(e,t){let n=t.label||`动态字段 ${e}`;return{...t,id:t.id?.trim()||`dynamic_field_${e}`,type:t.type||Kt[0].value,prop:t.prop?.trim()||`dynamic_${e}`,label:n,placeholder:t.placeholder||`请输入${n||`内容`}`,visible:t.visible??!0,removable:t.removable??!0,created:t.created??Date.now(),layout:t.layout||{span:12}}}const Jt=()=>{let e=N({config:{...Gt},baseFields:[],dynamicFields:[],hiddenFieldIds:new Set,fieldCounter:0,isInitialized:!1}),t=f(()=>[...e.baseFields,...e.dynamicFields.map(t=>({...t,show:!e.hiddenFieldIds.has(t.prop)}))]),n=f(()=>t.value.filter(e=>e.show!==!1)),r=f(()=>e.dynamicFields.length),i=f(()=>e.hiddenFieldIds.size),a=f(()=>e.dynamicFields.length<e.config.maxFields),o=f(()=>e.hiddenFieldIds.size===0),s=(n={})=>{if(!a.value)return null;e.fieldCounter++;let r=qt(e.fieldCounter,n);return t.value.some(e=>e.prop===r.prop)?null:(e.dynamicFields.push(r),r)},c=t=>{if(e.dynamicFields.length===0)return null;let n=t??e.dynamicFields.length-1;if(n<0||n>=e.dynamicFields.length||e.dynamicFields[n]?.removable===!1)return null;let r=e.dynamicFields.splice(n,1)[0];return r&&e.hiddenFieldIds.delete(r.prop),r??null},l=()=>{let t=e.dynamicFields.length;return e.dynamicFields.forEach(t=>e.hiddenFieldIds.delete(t.prop)),e.dynamicFields.length=0,e.fieldCounter=0,t},u=n=>t.value.some(e=>e.prop===n)?(e.hiddenFieldIds.has(n)?e.hiddenFieldIds.delete(n):e.hiddenFieldIds.add(n),!e.hiddenFieldIds.has(n)):!1,d=()=>(o.value?e.dynamicFields.forEach(t=>{e.hiddenFieldIds.add(t.prop)}):e.hiddenFieldIds.clear(),o.value),p=t=>{let n={...t};n.maxFields!==void 0&&(n.maxFields=Math.max(0,Math.trunc(n.maxFields))),Object.assign(e.config,n)};return{state:P(e),allFields:t,visibleFields:n,dynamicFieldsCount:r,hiddenFieldsCount:i,canAddMoreFields:a,allVisible:o,FIELD_TYPE_OPTIONS:Kt,addField:s,removeField:c,clearDynamicFields:l,toggleFieldVisibility:u,toggleAllVisibility:d,updateConfig:p,exportConfig:()=>{let t={baseFields:e.baseFields,dynamicFields:e.dynamicFields,config:e.config,hiddenFields:Array.from(e.hiddenFieldIds),timestamp:Date.now()};return JSON.stringify(t,null,2)},initialize:(t,n={})=>{e.baseFields=[...t],e.dynamicFields.length=0,e.hiddenFieldIds.clear(),e.fieldCounter=0,Object.assign(e.config,Gt),p(n),e.isInitialized=!0}}},Yt=Symbol(`dynamicFormState`),Xt={class:`c-form-dynamic`},Zt={key:0,class:`dynamic-controls`},Qt={class:`max-fields-config`},$t={class:`dynamic-stats`},en={class:`dynamic-controls-fallback`},tn={class:`dynamic-form-items`};var nn=r(x({__name:`index`,props:{formItems:{},layoutConfig:{default:()=>({})},options:{default:()=>[]},dynamicFormState:{default:null}},emits:[`field-add`,`field-remove`,`fields-clear`],setup(e,{expose:t,emit:r}){let i=e,a=r,o=T(Yt,null),s=f(()=>i.dynamicFormState||o),c=f(()=>!!s.value),l=f(()=>i.layoutConfig?.dynamic?.grid?.cols??24),u=f(()=>i.layoutConfig?.dynamic?.grid?.gutter??16),_=f(()=>i.layoutConfig?.dynamic?.controls?.showControls!==!1),b=f(()=>s.value?.state.config.maxFields??i.layoutConfig?.dynamic?.dynamic?.maxFields??50),x=f(()=>s.value?.dynamicFieldsCount.value??0),S=f(()=>s.value?.canAddMoreFields.value??!1),C=f(()=>i.formItems.length),w=()=>{let e=s.value?.addField();e&&a(`field-add`,e)},E=()=>{let e=s.value?.removeField();e&&a(`field-remove`,e.prop)},D=()=>{(s.value?.clearDynamicFields()??0)>0&&a(`fields-clear`)},k=e=>{e!==null&&s.value?.updateConfig({maxFields:e})},A=(e,t)=>e.key?.toString()||e.props?.path?.toString()||`dynamic-item-${t}`,j=e=>{let t=i.options?.[e]?.layout?.span;return typeof t==`number`&&t>0&&t<=l.value?t:Math.min(12,l.value)},ee=e=>{if(!s.value)return!1;let t=e.props?.path?.toString()||e.key?.toString()||``;return s.value.state.dynamicFields.some(e=>e.prop===t)};return t({addField:()=>s.value?.addField(),removeField:()=>s.value?.removeField(),clearAllDynamic:()=>s.value?.clearDynamicFields(),isDynamicStateAvailable:c,dynamicState:s}),(t,r)=>{let i=G,a=K,o=X,s=ge,f=De,T=q,N=W,P=me,F=pe;return M(),h(`div`,Xt,[m(` 动态控制面板 `),_.value&&c.value?(M(),h(`div`,Zt,[y(T,{size:`small`,title:`动态表单控制`,bordered:!1},{"header-extra":U(()=>[y(i,{value:x.value,type:`warning`},{default:U(()=>[y(n,{name:`mdi:layers`,size:16})]),_:1},8,[`value`])]),default:U(()=>[y(o,{justify:`space-between`,align:`center`},{default:U(()=>[y(o,null,{default:U(()=>[y(a,{size:`small`,type:`primary`,disabled:!S.value,onClick:w},{icon:U(()=>[y(n,{name:`mdi:plus`,size:14})]),default:U(()=>[v(` 添加字段 (`+z(x.value)+`/`+z(b.value)+`) `,1)]),_:1},8,[`disabled`]),y(a,{size:`small`,type:`warning`,disabled:x.value===0,onClick:E},{icon:U(()=>[y(n,{name:`mdi:minus`,size:14})]),default:U(()=>[r[0]||=v(` 移除字段 `,-1)]),_:1},8,[`disabled`]),y(a,{size:`small`,type:`error`,disabled:x.value===0,onClick:D},{icon:U(()=>[y(n,{name:`mdi:delete-sweep`,size:14})]),default:U(()=>[r[1]||=v(` 清空动态 `,-1)]),_:1},8,[`disabled`])]),_:1}),m(` 最大字段数配置 `),g(`div`,Qt,[r[2]||=g(`span`,null,`最大字段数:`,-1),y(s,{value:b.value,"onUpdate:value":k,min:5,max:50,size:`small`,style:{width:`100px`}},null,8,[`value`])])]),_:1}),g(`div`,$t,[y(o,null,{default:U(()=>[y(f,{type:`info`},{default:U(()=>[v(`总字段: `+z(C.value),1)]),_:1}),y(f,{type:`warning`},{default:U(()=>[v(`动态: `+z(x.value),1)]),_:1})]),_:1})])]),_:1})])):_.value&&!c.value?(M(),h(d,{key:1},[m(` 状态不可用时的提示 `),g(`div`,en,[y(T,{size:`small`,title:`动态表单控制 (静态模式)`,bordered:!1},{default:U(()=>[y(N,{type:`info`,"show-icon":``},{icon:U(()=>[y(n,{name:`mdi:information-outline`,size:16})]),default:U(()=>[r[3]||=v(` 当前为静态模式,如需动态功能请在父组件中提供动态表单状态。 `,-1)]),_:1})]),_:1})])],2112)):m(`v-if`,!0),m(` 表单项渲染区域 `),g(`div`,tn,[y(F,{cols:l.value,"x-gap":u.value,"y-gap":u.value},{default:U(()=>[(M(!0),h(d,null,I(e.formItems,(e,t)=>(M(),p(P,{key:A(e,t),span:j(t)},{default:U(()=>[g(`div`,{class:O([`dynamic-item-wrapper`,{"is-dynamic-field":ee(e)}])},[(M(),p(R(e)))],2)]),_:2},1032,[`span`]))),128))]),_:1},8,[`cols`,`x-gap`,`y-gap`])])])}}}),[[`__scopeId`,`data-v-02a5a52b`]]);const rn={class:`custom-layout`},an={class:`toolbar-content`},on={class:`mode-section`},sn={class:`stats-section`},cn={class:`stat-item`},ln={class:`stat-value`},un={class:`stat-item`},dn={class:`stat-value`},fn={class:`actions-section`},pn={class:`design-tools`},mn={class:`tool-group`},hn={key:0,class:`canvas-hint`},gn={class:`areas-container`},_n={class:`area-header`},vn={class:`area-info`},yn=[`onClick`],bn={class:`area-controls`},xn={class:`field-preview`},Sn={class:`field-label`},Cn={class:`field-type`},wn={key:0,class:`area-drop-zone`},Tn={class:`field-name`},En={class:`field-type-tag`},Dn={key:0,class:`empty-layout`},On={key:1,class:`form-container`},kn={class:`form-areas`};var An=r(x({__name:`index`,props:{options:{default:()=>[]},formItems:{default:()=>[]},formData:{default:()=>({})}},emits:[`fields-change`,`export-data`],setup(e,{emit:t}){let n=e,r=t,i=F(!0),a=F([]),o=F([]),s=F(``),c=f(()=>n.options?.length>0?n.options:n.formItems?.map(e=>{let t=e.props;return{prop:t?.path||``,label:t?.label||t?.path||``,type:`input`,show:!0}}).filter(e=>e.prop)||[]),l=f(()=>a.value.reduce((e,t)=>e+t.fields.length,0)),u=()=>`${Date.now()}-${Math.random().toString(36).substring(2,11)}`,_=e=>({input:`输入框`,select:`下拉框`,radio:`单选框`,checkbox:`复选框`,textarea:`文本域`,date:`日期`,number:`数字`})[e]||e,b=e=>n.formItems?.find(t=>t.props?.path===e.prop)||null,x=e=>{let t={id:u(),title:`${e===`horizontal`?`水平`:e===`vertical`?`垂直`:`网格`}区域`,type:e,fields:[]};a.value.push(t)},S=e=>{let t=a.value.findIndex(t=>t.id===e);t!==-1&&a.value.splice(t,1)},C=e=>({...e,id:`${e.prop}-${u()}`}),w=(e,t)=>{let n=a.value.find(t=>t.id===e);if(n){let e=n.fields.findIndex(e=>e.id===t);e!==-1&&n.fields.splice(e,1)}},T=()=>{let e=JSON.stringify(a.value,null,2),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`layout-config-${Date.now()}.json`,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(n)},E=()=>{a.value=[]},D=()=>{r(`export-data`,{layout:a.value,formData:n.formData,timestamp:new Date().toISOString()})};return re(()=>{let e=new Set(a.value.flatMap(e=>e.fields.map(e=>e.prop)));o.value=c.value.filter(t=>!e.has(t.prop)).map(e=>({...e,id:e.prop}))}),H(()=>a.value,()=>{r(`fields-change`,a.value.flatMap(e=>e.fields.map(e=>({...e,id:void 0}))))},{deep:!0}),(e,t)=>{let n=K,r=oe,c=q,u=he,f=De,k=J;return M(),h(`div`,rn,[m(` 顶部工具栏 `),y(c,{bordered:!1,class:`toolbar-card`},{default:U(()=>[g(`div`,an,[m(` 模式切换 `),g(`div`,on,[t[12]||=g(`span`,{class:`section-label`},`自定义模式:`,-1),y(r,null,{default:U(()=>[y(n,{type:i.value?`primary`:`default`,onClick:t[0]||=e=>i.value=!0,size:`small`},{default:U(()=>[...t[10]||=[v(` 🎨 设计模式 `,-1)]]),_:1},8,[`type`]),y(n,{type:i.value?`default`:`primary`,onClick:t[1]||=e=>i.value=!1,size:`small`},{default:U(()=>[...t[11]||=[v(` 📝 填写模式 `,-1)]]),_:1},8,[`type`])]),_:1})]),m(` 统计信息 `),g(`div`,sn,[g(`div`,cn,[g(`div`,ln,z(a.value.length),1),t[13]||=g(`div`,{class:`stat-label`},`自定义区域`,-1)]),g(`div`,un,[g(`div`,dn,z(l.value),1),t[14]||=g(`div`,{class:`stat-label`},`字段总数`,-1)])]),m(` 操作按钮 `),g(`div`,fn,[i.value?(M(),h(d,{key:0},[y(n,{secondary:``,onClick:T,size:`small`},{default:U(()=>[...t[15]||=[v(` 💾 保存布局 `,-1)]]),_:1}),y(n,{secondary:``,onClick:E,size:`small`},{default:U(()=>[...t[16]||=[v(` 🔄 重置布局 `,-1)]]),_:1})],64)):(M(),p(n,{key:1,secondary:``,onClick:D,size:`small`},{default:U(()=>[...t[17]||=[v(` 📊 导出数据 `,-1)]]),_:1}))])])]),_:1}),m(` 设计模式工具面板 `),i.value?(M(),p(c,{key:0,class:`design-panel`,title:`🎨 设计工具`},{default:U(()=>[g(`div`,pn,[g(`div`,mn,[t[21]||=g(`span`,{class:`group-label`},`添加区域:`,-1),y(n,{onClick:t[2]||=e=>x(`horizontal`),size:`small`},{default:U(()=>[...t[18]||=[v(` ➡️ 水平区域 `,-1)]]),_:1}),y(n,{onClick:t[3]||=e=>x(`vertical`),size:`small`},{default:U(()=>[...t[19]||=[v(` ⬇️ 垂直区域 `,-1)]]),_:1}),y(n,{onClick:t[4]||=e=>x(`grid`),size:`small`},{default:U(()=>[...t[20]||=[v(` ⚏ 网格区域 `,-1)]]),_:1})])])]),_:1})):m(`v-if`,!0),m(` 主画布区域 `),g(`div`,{class:O([`layout-canvas`,{"design-mode":i.value}])},[m(` 设计模式 `),i.value?(M(),h(d,{key:0},[a.value.length===0?(M(),h(`div`,hn,[...t[22]||=[g(`div`,{class:`hint-content`},[g(`h3`,null,`🎨 开始自定义你的布局`),g(`p`,null,`点击上方按钮添加区域`)],-1)]])):(M(),h(d,{key:1},[m(` 区域列表 `),g(`div`,gn,[(M(!0),h(d,null,I(a.value,e=>(M(),h(`div`,{key:e.id,class:O([`custom-area`,`area-${e.type}`])},[g(`div`,_n,[g(`div`,vn,[s.value===e.id?(M(),p(u,{key:0,value:e.title,"onUpdate:value":t=>e.title=t,size:`small`,onBlur:t[5]||=e=>s.value=``,onKeyup:t[6]||=ae(e=>s.value=``,[`enter`]),class:`title-input`},null,8,[`value`,`onUpdate:value`])):(M(),h(`span`,{key:1,class:`area-title`,onClick:t=>s.value=e.id},z(e.title),9,yn)),y(f,{size:`small`},{default:U(()=>[v(z(e.fields.length)+` 字段`,1)]),_:2},1024)]),g(`div`,bn,[y(n,{text:``,onClick:t=>S(e.id),size:`tiny`,type:`error`,title:`删除区域`},{default:U(()=>[...t[23]||=[v(` 🗑️ `,-1)]]),_:1},8,[`onClick`])])]),m(` 字段容器(可拖入) `),y(V(je),{modelValue:e.fields,"onUpdate:modelValue":t=>e.fields=t,class:`area-fields`,group:{name:`form-fields`,pull:!0,put:!0},animation:200,"ghost-class":`field-ghost`,"item-key":`id`},{default:U(()=>[(M(!0),h(d,null,I(e.fields,r=>(M(),h(`div`,{key:r.id,class:`field-item`},[g(`div`,xn,[t[25]||=g(`span`,{class:`drag-handle`},`⠿`,-1),g(`span`,Sn,z(r.label||r.prop),1),g(`span`,Cn,z(_(r.type)),1),y(n,{text:``,size:`tiny`,type:`error`,onClick:t=>w(e.id,r.id),title:`移出字段`},{default:U(()=>[...t[24]||=[v(` ✕ `,-1)]]),_:1},8,[`onClick`])])]))),128))]),_:2},1032,[`modelValue`,`onUpdate:modelValue`]),e.fields.length===0?(M(),h(`div`,wn,` 从下方字段池拖拽字段到这里 `)):m(`v-if`,!0)],2))),128))])],2112)),m(` 字段池(可拖出) `),y(c,{class:`field-pool`,title:`📦 可用字段`},{default:U(()=>[y(V(je),{modelValue:o.value,"onUpdate:modelValue":t[7]||=e=>o.value=e,class:`pool-fields-grid`,group:{name:`form-fields`,pull:`clone`,put:!0},animation:200,sort:!1,"ghost-class":`field-ghost`,"item-key":`id`,clone:C},{default:U(()=>[(M(!0),h(d,null,I(o.value,e=>(M(),h(`div`,{key:e.id,class:`pool-field`},[t[26]||=g(`span`,{class:`drag-handle`},`⠿`,-1),g(`span`,Tn,z(e.label||e.prop),1),g(`span`,En,z(_(e.type)),1)]))),128))]),_:1},8,[`modelValue`])]),_:1})],64)):(M(),h(d,{key:1},[m(` 填写模式 `),a.value.length===0?(M(),h(`div`,Dn,[y(k,{description:`尚未设计布局`},{extra:U(()=>[y(n,{onClick:t[8]||=e=>i.value=!0,type:`primary`},{default:U(()=>[...t[27]||=[v(` 🎨 开始设计 `,-1)]]),_:1})]),_:1})])):(M(),h(`div`,On,[g(`div`,kn,[(M(!0),h(d,null,I(a.value,e=>(M(),h(`div`,{key:e.id,class:O([`form-area`,`area-${e.type}`])},[e.fields.length>0?(M(),p(c,{key:0,title:e.title},{default:U(()=>[g(`div`,{class:O([`area-form-items`,`layout-${e.type}`])},[(M(!0),h(d,null,I(e.fields,e=>(M(),p(R(b(e)),{key:e.prop}))),128))],2)]),_:2},1032,[`title`])):(M(),p(k,{key:1,description:`此区域暂无字段`,size:`small`},{extra:U(()=>[y(n,{onClick:t[9]||=e=>i.value=!0,size:`small`,secondary:``},{default:U(()=>[...t[28]||=[v(` 🎨 添加字段 `,-1)]]),_:1})]),_:1}))],2))),128))])]))],64))],2)])}}}),[[`__scopeId`,`data-v-fe093284`]]);const jn=x({name:`C_Form`,__name:`index`,props:{options:{},modelValue:{},config:{default:()=>({})},renderers:{}},emits:[`submit`,`update:modelValue`,`validate-success`,`validate-error`],setup(t,{expose:n,emit:r}){let i=b(()=>import(`./C_Editor.js`).then(e=>e.C_Editor)),a={default:Xe,inline:Ze,grid:rt,card:Ot,tabs:It,steps:Wt,dynamic:nn,custom:An},o={NFormItem:Y,NInput:he,NInputNumber:ge,NSwitch:Te,NSlider:Se,NRate:be,NDatePicker:de,NTimePicker:Oe,NCascader:se,NColorPicker:ue,NSelect:xe,NCheckboxGroup:le,NCheckbox:ce,NRadioGroup:ye,NRadio:ve,NUpload:Ae,NButton:K,NSpace:X,NTooltip:ke,C_Editor:i},s=t,c=r,l=Ne(),u=f(()=>Le(Pe(s.config,l))),{t:d}=e(()=>u.value.locale),h=F(null),{formModel:g,formRules:x,visibleOptions:w,initialize:T,handleFieldChange:D,validate:O,validateField:A,validateStep:j,validateTab:ee,validateDynamicFields:N,validateCustomGroup:P,clearValidation:te,getModel:B,setFields:ne,resetFields:H,setFieldValue:re,getFieldValue:ie,setFieldsValue:ae,handleSubmit:W,handleReset:G,isDirty:oe,getChangedFields:q,isFieldDirty:J,markAsClean:pe,asyncOptionsCache:me,asyncLoadingMap:_e,asyncErrorMap:Ce,reloadOptions:we,setFormItemRef:Ee,isSubmitting:Z,submit:De}=He(f(()=>s.options),u,h,c,f(()=>s.modelValue)),{formItems:je}=Je({formModel:g,visibleOptions:w,config:u,handleFieldChange:D,componentMap:o,instanceSlots:S()?.slots,asyncOptionsCache:me,asyncLoadingMap:_e,renderers:f(()=>s.renderers),setFormItemRef:Ee,onError:(e,t)=>u.value.onError?.(e,{source:`render`,field:t})}),Me=f(()=>a[u.value.layout]||a.default),Fe=f(()=>({type:u.value.layout,grid:u.value.grid,inline:u.value.inline,card:u.value.card,tabs:u.value.tabs,steps:u.value.steps,dynamic:u.value.dynamic,custom:u.value.custom})),Ie=f(()=>Re(u.value)),ze=f(()=>u.value.layout===`steps`?{beforeStepChange:Ke,validateStep:qe}:u.value.layout===`tabs`?{beforeTabChange:We,validateTab:$}:{}),Q=(e,...t)=>{let n=u.value[e];if(typeof n==`function`)try{let e=n(...t);e instanceof Promise&&e.catch(e=>u.value.onError?.(e,{source:`callback`}))}catch(e){u.value.onError?.(e,{source:`callback`})}},Be=e=>{u.value.onFieldsChange?.(e)},Ve=e=>{c(`validate-success`,e)},Ue=e=>{c(`validate-error`,e)},We=async(e,t)=>{try{return await u.value.onTabBeforeChange?.(e,t)!==!1}catch(e){return u.value.onError?.(e,{source:`callback`}),!1}},$=async e=>{let t=await ee(e);return t&&u.value.onTabValidate?.(e),t},Ge=(e,t)=>{u.value.onStepChange?.(e,t)},Ke=async(e,t)=>{try{return await u.value.onStepBeforeChange?.(e,t)!==!1}catch(e){return u.value.onError?.(e,{source:`callback`}),!1}},qe=async e=>{try{return await j(e)?(u.value.onStepValidate?.(e),!0):!1}catch{return!1}};return n({validate:O,validateField:A,validateStep:j,validateTab:ee,validateDynamicFields:N,validateCustomGroup:P,clearValidation:te,getModel:B,setFields:ne,resetFields:H,setFieldValue:re,getFieldValue:ie,setFieldsValue:ae,formRef:h,formModel:g,initialize:T,layoutType:f(()=>u.value.layout),shouldShowDefaultActions:Ie,isDirty:oe,getChangedFields:q,isFieldDirty:J,markAsClean:pe,asyncLoadingMap:_e,asyncErrorMap:Ce,reloadOptions:we,isSubmitting:Z,submit:De}),(e,t)=>(M(),p(V(fe),E({ref_key:`formRef`,ref:h,model:V(g),rules:V(x),"validate-on-rule-change":!1,"label-placement":u.value.labelPlacement,"label-width":u.value.labelWidth,size:u.value.size,disabled:u.value.disabled,readonly:u.value.readonly},e.$attrs),{default:U(()=>[m(` 布局组件渲染 `),(M(),p(R(Me.value),E({"form-items":V(je),"layout-config":Fe.value,options:V(w),"form-data":V(g)},ze.value,{onTabChange:t[0]||=(e,t)=>Q(`onTabChange`,e,t),onStepChange:Ge,onFieldAdd:t[1]||=e=>Q(`onFieldAdd`,e),onFieldRemove:t[2]||=e=>Q(`onFieldRemove`,e),onFieldToggle:t[3]||=(e,t)=>Q(`onFieldToggle`,e,t),onFieldsClear:t[4]||=e=>Q(`onFieldsClear`),onRenderModeChange:t[5]||=e=>Q(`onRenderModeChange`,e),onGroupToggle:t[6]||=(e,t)=>Q(`onGroupToggle`,e,t),onGroupReset:t[7]||=e=>Q(`onGroupReset`,e),onValidateSuccess:Ve,onValidateError:Ue,onFieldsChange:Be}),_({_:2},[I(e.$slots,(t,n)=>({name:n,fn:U(t=>[n===`action`?m(`v-if`,!0):L(e.$slots,n,k(C(t)),void 0,void 0,0)])}))]),1040,[`form-items`,`layout-config`,`options`,`form-data`])),m(` 表单操作按钮区域(只在特定布局中显示) `),Ie.value?(M(),p(V(Y),{key:0,style:{"margin-top":`20px`}},{default:U(()=>[L(e.$slots,`action`,{form:h.value,model:V(g),validate:V(O),validateField:V(A),reset:V(H),setFields:V(ne),getModel:V(B),clearValidation:V(te),submit:V(De),reloadOptions:V(we),submitting:V(Z)},()=>[y(V(X),null,{default:U(()=>[y(V(K),{type:`primary`,loading:V(Z),disabled:V(Z),onClick:V(W)},{default:U(()=>[v(z(u.value.submitText||V(d)(`common.submit`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`]),y(V(K),{disabled:V(Z),onClick:V(G)},{default:U(()=>[v(z(u.value.resetText||V(d)(`common.reset`)),1)]),_:1},8,[`disabled`,`onClick`])]),_:1})])]),_:3})):m(`v-if`,!0)]),_:3},16,[`model`,`rules`,`label-placement`,`label-width`,`size`,`disabled`,`readonly`]))}});export{Ge as a,He as c,Me as d,Ie as f,Ne as g,Re as h,Jt as i,ze as l,Le as m,Yt as n,Ke as o,Pe as p,Kt as r,Je as s,jn as t,Fe as u};
package/dist/C_Map.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./C_Map2.cjs`);exports.C_Map=e.t,exports.DEFAULT_MAP_CONFIG=e.n,exports.MAP_TYPES=e.r,exports.OSM_TILE_CONFIG=e.i;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./C_Map2.cjs`);exports.C_Map=e.t,exports.DEFAULT_MAP_CONFIG=e.s,exports.MAP_TYPES=e.c,exports.OSM_TILE_CONFIG=e.l,exports.getValidMapMarkers=e.n,exports.isValidMapCoordinate=e.r,exports.normalizeMapZoom=e.i,exports.resolveTileConfig=e.a,exports.toAMapPosition=e.o;
package/dist/C_Map.css CHANGED
@@ -660,21 +660,21 @@ svg.leaflet-image-layer.leaflet-interactive path {
660
660
  }
661
661
  }
662
662
 
663
- /* unplugin-vue-components disabled */.c-map[data-v-09a5ef45] {
663
+ /* unplugin-vue-components disabled */.c-map[data-v-5e6d0330] {
664
664
  position: relative;
665
665
  width: 100%;
666
666
  min-height: 300px;
667
- background: #f5f5f5;
668
- border-radius: 4px;
667
+ background: var(--c-bg-surface, #fff);
668
+ border-radius: var(--c-radius-sm, 4px);
669
669
  overflow: hidden;
670
670
  }
671
- .c-map .map-container[data-v-09a5ef45] {
671
+ .c-map .map-container[data-v-5e6d0330] {
672
672
  width: 100%;
673
673
  height: 100%;
674
- border-radius: 4px;
674
+ border-radius: inherit;
675
675
  overflow: hidden;
676
676
  }
677
- .c-map .map-loading[data-v-09a5ef45] {
677
+ .c-map .map-loading[data-v-5e6d0330] {
678
678
  position: absolute;
679
679
  top: 0;
680
680
  left: 0;
@@ -683,7 +683,7 @@ svg.leaflet-image-layer.leaflet-interactive path {
683
683
  display: flex;
684
684
  align-items: center;
685
685
  justify-content: center;
686
- background: rgba(255, 255, 255, 0.9);
687
- border-radius: 4px;
686
+ background: color-mix(in srgb, var(--c-bg-surface, #fff) 90%, transparent);
687
+ border-radius: inherit;
688
688
  z-index: 1000;
689
689
  }
package/dist/C_Map.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as MapType, i as MapMarker, n as MAP_TYPES, o as OSM_TILE_CONFIG, r as MapConfig, s as _default, t as DEFAULT_MAP_CONFIG } from "./data.cjs";
2
- export { _default as C_Map, DEFAULT_MAP_CONFIG, MAP_TYPES, type MapConfig, type MapMarker, type MapType, OSM_TILE_CONFIG };
1
+ import { C as MapType, S as MapTileConfig, _ as MapFitOptions, a as toAMapPosition, b as MapMarkerEvent, c as OSM_TILE_CONFIG, d as AMapMapInstance, f as AMapMarkerEvent, g as MapExpose, h as MapCoordinate, i as resolveTileConfig, l as _default, m as MapConfig, n as isValidMapCoordinate, o as DEFAULT_MAP_CONFIG, p as AMapPosition, r as normalizeMapZoom, s as MAP_TYPES, t as getValidMapMarkers, u as AMapApi, v as MapInstance, x as MapProps, y as MapMarker } from "./mapUtils.cjs";
2
+ export { type AMapApi, type AMapMapInstance, type AMapMarkerEvent, type AMapPosition, _default as C_Map, DEFAULT_MAP_CONFIG, MAP_TYPES, type MapConfig, type MapCoordinate, type MapExpose, type MapFitOptions, type MapInstance, type MapMarker, type MapMarkerEvent, type MapProps, type MapTileConfig, type MapType, OSM_TILE_CONFIG, getValidMapMarkers, isValidMapCoordinate, normalizeMapZoom, resolveTileConfig, toAMapPosition };
package/dist/C_Map.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as MapType, i as MapMarker, n as MAP_TYPES, o as OSM_TILE_CONFIG, r as MapConfig, s as _default, t as DEFAULT_MAP_CONFIG } from "./data.js";
2
- export { _default as C_Map, DEFAULT_MAP_CONFIG, MAP_TYPES, type MapConfig, type MapMarker, type MapType, OSM_TILE_CONFIG };
1
+ import { C as MapType, S as MapTileConfig, _ as MapFitOptions, a as toAMapPosition, b as MapMarkerEvent, c as OSM_TILE_CONFIG, d as AMapMapInstance, f as AMapMarkerEvent, g as MapExpose, h as MapCoordinate, i as resolveTileConfig, l as _default, m as MapConfig, n as isValidMapCoordinate, o as DEFAULT_MAP_CONFIG, p as AMapPosition, r as normalizeMapZoom, s as MAP_TYPES, t as getValidMapMarkers, u as AMapApi, v as MapInstance, x as MapProps, y as MapMarker } from "./mapUtils.js";
2
+ export { type AMapApi, type AMapMapInstance, type AMapMarkerEvent, type AMapPosition, _default as C_Map, DEFAULT_MAP_CONFIG, MAP_TYPES, type MapConfig, type MapCoordinate, type MapExpose, type MapFitOptions, type MapInstance, type MapMarker, type MapMarkerEvent, type MapProps, type MapTileConfig, type MapType, OSM_TILE_CONFIG, getValidMapMarkers, isValidMapCoordinate, normalizeMapZoom, resolveTileConfig, toAMapPosition };
package/dist/C_Map.js CHANGED
@@ -1 +1 @@
1
- import{i as e,n as t,r as n,t as r}from"./C_Map2.js";export{r as C_Map,t as DEFAULT_MAP_CONFIG,n as MAP_TYPES,e as OSM_TILE_CONFIG};
1
+ import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c}from"./C_Map2.js";export{c as C_Map,s as DEFAULT_MAP_CONFIG,t as MAP_TYPES,r as OSM_TILE_CONFIG,i as getValidMapMarkers,o as isValidMapCoordinate,n as normalizeMapZoom,e as resolveTileConfig,a as toAMapPosition};
package/dist/C_Map2.cjs CHANGED
@@ -1 +1 @@
1
- require(`./chunk.cjs`);const e=require(`./export-helper.cjs`);let t=require(`vue`),n=require(`naive-ui`);const r=[{label:`OpenStreetMap`,value:`osm`},{label:`高德地图`,value:`amap`}],i={height:`400px`,center:[39.9042,116.4074],zoom:10,mapType:`osm`},a={url:`https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png`,attribution:`© OpenStreetMap contributors`,maxZoom:19,minZoom:1,tileSize:256,detectRetina:!0},o={apiUrl:`https://webapi.amap.com/maps?v=2.0&key=`,note:`高德地图需要API Key,如需使用请申请:https://lbs.amap.com/api/javascript-api/guide/create/`};let s=null;function c(e){let t=window;return t.AMap?Promise.resolve(t.AMap):s||(s=new Promise((n,r)=>{let i=document.createElement(`script`);i.async=!0,i.dataset.cMapAmap=`true`,i.src=`${o.apiUrl}${encodeURIComponent(e)}`,i.onload=()=>{t.AMap?n(t.AMap):r(Error(`高德地图 API 加载完成但未找到全局对象`))},i.onerror=()=>{i.remove(),s=null,r(Error(`高德地图 API 加载失败`))},document.head.appendChild(i)}),s)}const l={class:`c-map`},u={key:0,class:`map-loading`},d=(0,t.defineComponent)({name:`C_Map`,__name:`index`,props:{height:{default:`400px`},center:{default:()=>[39.9042,116.4074]},zoom:{default:10},markers:{default:()=>[]},mapType:{default:`osm`},amapKey:{default:``}},emits:[`ready`,`markerClick`,`error`],setup(e,{emit:r}){let i=e,o=r,s=(0,t.ref)(),d=(0,t.ref)(!0),f=null,p=null,m=[],h=0,g=!1,_=e=>e instanceof Error?e:Error(String(e)),v=()=>{h+=1,m.forEach(e=>e.setMap?.(null)),m=[],f&&=(typeof f.remove==`function`?f.remove():typeof f.destroy==`function`&&f.destroy(),null)},y=async()=>{if(!s.value)return;let e=++h;try{if(v(),h=e,s.value.replaceChildren(),p??=await import(`leaflet`),g||e!==h||!s.value)return;let n=p;if(f=n.map(s.value,{center:i.center,zoom:i.zoom,zoomControl:!0,preferCanvas:!0}),n.tileLayer(a.url,a).addTo(f),g||e!==h){v();return}if(x(),await(0,t.nextTick)(),requestAnimationFrame(()=>{e===h&&f?.invalidateSize({reset:!0,pan:!1})}),g||e!==h)return;d.value=!1,o(`ready`,f)}catch(t){e===h&&(v(),o(`error`,_(t)),d.value=!1)}},b=async()=>{if(!s.value||!i.amapKey){i.amapKey||o(`error`,Error(`使用高德地图时必须提供 amapKey`)),d.value=!1;return}let e=++h;try{v(),h=e,s.value.replaceChildren();let t=await c(i.amapKey);if(g||e!==h||!s.value)return;f=new t.Map(s.value,{zoom:i.zoom,center:i.center}),S(f),d.value=!1,o(`ready`,f)}catch(t){e===h&&(o(`error`,_(t)),d.value=!1)}},x=()=>{if(!f||!p||i.mapType!==`osm`||!i.markers)return;let e=p;f.eachLayer(t=>{t instanceof e.Marker&&f.removeLayer(t)}),i.markers.forEach(t=>{if(!Number.isFinite(t.lat)||!Number.isFinite(t.lng))return;let n=e.marker([t.lat,t.lng]);if(t.popup){let e=document.createElement(`span`);e.textContent=t.popup,n.bindPopup(e),n.on(`click`,e=>{o(`markerClick`,t,e)})}n.addTo(f)})},S=e=>{!e||i.mapType!==`amap`||!i.markers||(m.forEach(e=>e.setMap?.(null)),m=[],i.markers.forEach(t=>{if(!Number.isFinite(t.lat)||!Number.isFinite(t.lng))return;let n=new window.AMap.Marker({position:[t.lat,t.lng],title:t.popup||``});if(t.popup){let r=document.createElement(`span`);r.textContent=t.popup;let i=new window.AMap.InfoWindow({content:r,offset:new window.AMap.Pixel(0,-30)});n.on(`click`,()=>{i.open(e,n.getPosition()),o(`markerClick`,t,null)})}n.setMap(e),m.push(n)}))};return(0,t.watch)(()=>i.markers,()=>{f&&(i.mapType===`osm`?x():S(f))},{deep:!0}),(0,t.watch)(()=>i.mapType,async(e,n)=>{e!==n&&(v(),d.value=!0,await(0,t.nextTick)(),e===`amap`?await b():await y())}),(0,t.watch)([()=>i.center,()=>i.zoom],()=>{f&&(i.mapType===`osm`?f.setView(i.center,i.zoom):(f.setCenter?.(i.center),f.setZoom?.(i.zoom)))},{deep:!0}),(0,t.onMounted)(async()=>{await(0,t.nextTick)(),i.mapType===`amap`?await b():await y()}),(0,t.onUnmounted)(()=>{g=!0,v()}),(r,i)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,l,[(0,t.createElementVNode)(`div`,{ref_key:`mapContainer`,ref:s,class:`map-container`,style:(0,t.normalizeStyle)({height:e.height})},null,4),d.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,u,[(0,t.createVNode)((0,t.unref)(n.NSpin),{size:`large`})])):(0,t.createCommentVNode)(`v-if`,!0)]))}});var f=e.t(d,[[`__scopeId`,`data-v-09a5ef45`]]);Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return f}});
1
+ require(`./chunk.cjs`);const e=require(`./export-helper.cjs`);let t=require(`vue`),n=require(`naive-ui`);const r=[{label:`OpenStreetMap`,value:`osm`},{label:`高德地图`,value:`amap`}],i={height:`400px`,center:[39.9042,116.4074],zoom:10,mapType:`osm`},a={url:`https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png`,attribution:`© OpenStreetMap contributors`,maxZoom:19,minZoom:1,tileSize:256,detectRetina:!0},o={apiUrl:`https://webapi.amap.com/maps?v=2.0&key=`,note:`高德地图需要API Key,如需使用请申请:https://lbs.amap.com/api/javascript-api/guide/create/`},s=15e3;let c=null;function l(e,t=s){let n=e.trim();if(!n)return Promise.reject(Error(`高德地图 API Key 不能为空`));if(typeof window>`u`||typeof document>`u`)return Promise.reject(Error(`高德地图 API 只能在浏览器环境加载`));let r=window;return r.AMap?Promise.resolve(r.AMap):c||(c=new Promise((e,i)=>{let a=document.querySelector(`script[data-c-map-amap="true"]`),l=a||document.createElement(`script`),u=!1,d=Number.isFinite(t)&&t>0?t:s,f=()=>{window.clearTimeout(g),l.removeEventListener(`load`,m),l.removeEventListener(`error`,h)},p=e=>{u||(u=!0,f(),l.remove(),c=null,i(e))},m=()=>{if(!u){if(!r.AMap){p(Error(`高德地图 API 加载完成但未找到全局对象`));return}u=!0,f(),e(r.AMap)}},h=()=>p(Error(`高德地图 API 加载失败`)),g=window.setTimeout(()=>p(Error(`高德地图 API 加载超时(${d}ms)`)),d);l.addEventListener(`load`,m,{once:!0}),l.addEventListener(`error`,h,{once:!0}),!a&&(l.async=!0,l.dataset.cMapAmap=`true`,l.src=`${o.apiUrl}${encodeURIComponent(n)}`,document.head.appendChild(l))}),c)}function u(e){if(!e||e.length!==2)return!1;let[t,n]=e;return Number.isFinite(t)&&Number.isFinite(n)&&t>=-90&&t<=90&&n>=-180&&n<=180}function d(e){return[e[1],e[0]]}function f(e){return e.filter(e=>u([e.lat,e.lng]))}function p(e,t=a.minZoom,n=a.maxZoom){return Number.isFinite(e)?Math.min(Math.max(e,t),n):i.zoom}function m(e={}){let{url:t,...n}={...a,...e};return{url:t,options:n}}const h=[`aria-label`,`aria-busy`],g={key:0,class:`map-loading`,role:`status`,"aria-live":`polite`,"aria-label":`地图加载中`},_=(0,t.defineComponent)({name:`C_Map`,__name:`index`,props:{ariaLabel:{default:`地图`},height:{default:i.height},center:{default:()=>[...i.center]},zoom:{default:i.zoom},markers:{default:()=>[]},mapType:{default:i.mapType},amapKey:{default:``},amapLoadTimeout:{default:15e3},amapOptions:{default:()=>({})},tileConfig:{default:()=>({})},zoomControl:{type:Boolean,default:!0},preferCanvas:{type:Boolean,default:!0},fitMarkersOnInit:{type:Boolean,default:!1}},emits:[`ready`,`markerClick`,`error`],setup(e,{expose:r,emit:i}){let a=e,o=i,s=(0,t.ref)(),c=(0,t.ref)(!0),_=null,v=null,y=[],b=null,x=null,S=[],C=[],w=0,T=!1,E=e=>e instanceof Error?e:Error(String(e)),D=()=>{y.forEach(e=>e.remove()),y=[]},O=()=>{C.forEach(e=>e.close?.()),C=[],S.forEach(e=>e.setMap?.(null)),S=[]},k=()=>{D(),O(),v?.remove(),x?.destroy(),v=null,x=null,s.value?.replaceChildren()},A=()=>{let e=++w;return k(),c.value=!0,e},j=e=>!T&&e===w,M=()=>{if(u(a.center))return a.center;throw Error(`地图中心坐标无效,应使用 [纬度, 经度] 且处于合法范围`)},N=(e,t)=>{j(e)&&(k(),c.value=!1,o(`error`,E(t)))},P=()=>{let e=_,t=v;!t||!e||a.mapType!==`osm`||(D(),f(a.markers).forEach(n=>{let r=e.marker([n.lat,n.lng]);if(n.popup){let e=document.createElement(`span`);e.textContent=n.popup,r.bindPopup(e)}r.on(`click`,e=>{o(`markerClick`,n,e)}),r.addTo(t),y.push(r)}))},F=()=>{let e=b,t=x;!t||!e||a.mapType!==`amap`||(O(),f(a.markers).forEach(n=>{let r=new e.Marker({position:d([n.lat,n.lng]),title:n.title||n.popup||``});if(n.popup){let i=document.createElement(`span`);i.textContent=n.popup;let a=new e.InfoWindow({content:i,offset:new e.Pixel(0,-30)});C.push(a),r.on(`click`,e=>{a.open(t,r.getPosition()),o(`markerClick`,n,e)})}else r.on(`click`,e=>o(`markerClick`,n,e));r.setMap(t),S.push(r)}))},I=()=>v||x,L=()=>{v?.invalidateSize({reset:!0,pan:!1}),x?.resize?.()},R=(e={})=>{let t=f(a.markers);if(t.length===0)return!1;if(v){let n=t.map(e=>[e.lat,e.lng]);return v.fitBounds(n,{maxZoom:e.maxZoom,padding:e.padding}),!0}if(x&&S.length>0){let[t=0,n=0]=e.padding||[];return x.setFitView?.(S,!1,[n,t,n,t],e.maxZoom),!0}return!1},z=async()=>{if(!s.value)return;let e=A();try{let n=await import(`leaflet`);if(!j(e)||!s.value)return;_=n;let{url:r,options:i}=m(a.tileConfig),l=p(a.zoom,i.minZoom,i.maxZoom);if(v=n.map(s.value,{center:M(),zoom:l,zoomControl:a.zoomControl,preferCanvas:a.preferCanvas}),n.tileLayer(r,i).addTo(v),P(),a.fitMarkersOnInit&&R(),await(0,t.nextTick)(),requestAnimationFrame(()=>{j(e)&&L()}),!j(e)||!v)return;c.value=!1,o(`ready`,v)}catch(t){N(e,t)}},B=async()=>{if(!s.value)return;let e=A();try{let t=await l(a.amapKey,a.amapLoadTimeout);if(!j(e)||!s.value)return;b=t,x=new t.Map(s.value,{...a.amapOptions,zoom:p(a.zoom,1,20),center:d(M())}),F(),a.fitMarkersOnInit&&R(),c.value=!1,o(`ready`,x)}catch(t){N(e,t)}},V=async()=>{a.mapType===`amap`?await B():await z()};return(0,t.watch)(()=>a.markers,()=>{a.mapType===`osm`?P():F()},{deep:!0}),(0,t.watch)([()=>a.mapType,()=>a.amapKey,()=>a.amapLoadTimeout,()=>a.amapOptions,()=>a.tileConfig,()=>a.zoomControl,()=>a.preferCanvas],()=>void V(),{deep:!0}),(0,t.watch)([()=>a.center,()=>a.zoom],()=>{if(!u(a.center)){o(`error`,Error(`地图中心坐标无效,应使用 [纬度, 经度]`));return}v?.setView(a.center,p(a.zoom)),x?.setCenter(d(a.center)),x?.setZoom(p(a.zoom,1,20))},{deep:!0}),(0,t.onMounted)(async()=>{await(0,t.nextTick)(),await V()}),(0,t.onUnmounted)(()=>{T=!0,w+=1,k()}),r({fitToMarkers:R,getMap:I,refresh:L}),(r,i)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{class:`c-map`,role:`region`,"aria-label":e.ariaLabel,"aria-busy":c.value},[(0,t.createElementVNode)(`div`,{ref_key:`mapContainer`,ref:s,class:`map-container`,style:(0,t.normalizeStyle)({height:e.height})},null,4),c.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,g,[(0,t.createVNode)((0,t.unref)(n.NSpin),{size:`large`})])):(0,t.createCommentVNode)(`v-if`,!0)],8,h))}});var v=e.t(_,[[`__scopeId`,`data-v-5e6d0330`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return v}});
package/dist/C_Map2.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./export-helper.js";import{createCommentVNode as t,createElementBlock as n,createElementVNode as r,createVNode as i,defineComponent as a,nextTick as o,normalizeStyle as s,onMounted as c,onUnmounted as l,openBlock as u,ref as d,unref as f,watch as p}from"vue";import{NSpin as m}from"naive-ui";const h=[{label:`OpenStreetMap`,value:`osm`},{label:`高德地图`,value:`amap`}],g={height:`400px`,center:[39.9042,116.4074],zoom:10,mapType:`osm`},_={url:`https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png`,attribution:`© OpenStreetMap contributors`,maxZoom:19,minZoom:1,tileSize:256,detectRetina:!0},v={apiUrl:`https://webapi.amap.com/maps?v=2.0&key=`,note:`高德地图需要API Key,如需使用请申请:https://lbs.amap.com/api/javascript-api/guide/create/`};let y=null;function b(e){let t=window;return t.AMap?Promise.resolve(t.AMap):y||(y=new Promise((n,r)=>{let i=document.createElement(`script`);i.async=!0,i.dataset.cMapAmap=`true`,i.src=`${v.apiUrl}${encodeURIComponent(e)}`,i.onload=()=>{t.AMap?n(t.AMap):r(Error(`高德地图 API 加载完成但未找到全局对象`))},i.onerror=()=>{i.remove(),y=null,r(Error(`高德地图 API 加载失败`))},document.head.appendChild(i)}),y)}const x={class:`c-map`},S={key:0,class:`map-loading`};var C=e(a({name:`C_Map`,__name:`index`,props:{height:{default:`400px`},center:{default:()=>[39.9042,116.4074]},zoom:{default:10},markers:{default:()=>[]},mapType:{default:`osm`},amapKey:{default:``}},emits:[`ready`,`markerClick`,`error`],setup(e,{emit:a}){let h=e,g=a,v=d(),y=d(!0),C=null,w=null,T=[],E=0,D=!1,O=e=>e instanceof Error?e:Error(String(e)),k=()=>{E+=1,T.forEach(e=>e.setMap?.(null)),T=[],C&&=(typeof C.remove==`function`?C.remove():typeof C.destroy==`function`&&C.destroy(),null)},A=async()=>{if(!v.value)return;let e=++E;try{if(k(),E=e,v.value.replaceChildren(),w??=await import(`leaflet`),D||e!==E||!v.value)return;let t=w;if(C=t.map(v.value,{center:h.center,zoom:h.zoom,zoomControl:!0,preferCanvas:!0}),t.tileLayer(_.url,_).addTo(C),D||e!==E){k();return}if(M(),await o(),requestAnimationFrame(()=>{e===E&&C?.invalidateSize({reset:!0,pan:!1})}),D||e!==E)return;y.value=!1,g(`ready`,C)}catch(t){e===E&&(k(),g(`error`,O(t)),y.value=!1)}},j=async()=>{if(!v.value||!h.amapKey){h.amapKey||g(`error`,Error(`使用高德地图时必须提供 amapKey`)),y.value=!1;return}let e=++E;try{k(),E=e,v.value.replaceChildren();let t=await b(h.amapKey);if(D||e!==E||!v.value)return;C=new t.Map(v.value,{zoom:h.zoom,center:h.center}),N(C),y.value=!1,g(`ready`,C)}catch(t){e===E&&(g(`error`,O(t)),y.value=!1)}},M=()=>{if(!C||!w||h.mapType!==`osm`||!h.markers)return;let e=w;C.eachLayer(t=>{t instanceof e.Marker&&C.removeLayer(t)}),h.markers.forEach(t=>{if(!Number.isFinite(t.lat)||!Number.isFinite(t.lng))return;let n=e.marker([t.lat,t.lng]);if(t.popup){let e=document.createElement(`span`);e.textContent=t.popup,n.bindPopup(e),n.on(`click`,e=>{g(`markerClick`,t,e)})}n.addTo(C)})},N=e=>{!e||h.mapType!==`amap`||!h.markers||(T.forEach(e=>e.setMap?.(null)),T=[],h.markers.forEach(t=>{if(!Number.isFinite(t.lat)||!Number.isFinite(t.lng))return;let n=new window.AMap.Marker({position:[t.lat,t.lng],title:t.popup||``});if(t.popup){let r=document.createElement(`span`);r.textContent=t.popup;let i=new window.AMap.InfoWindow({content:r,offset:new window.AMap.Pixel(0,-30)});n.on(`click`,()=>{i.open(e,n.getPosition()),g(`markerClick`,t,null)})}n.setMap(e),T.push(n)}))};return p(()=>h.markers,()=>{C&&(h.mapType===`osm`?M():N(C))},{deep:!0}),p(()=>h.mapType,async(e,t)=>{e!==t&&(k(),y.value=!0,await o(),e===`amap`?await j():await A())}),p([()=>h.center,()=>h.zoom],()=>{C&&(h.mapType===`osm`?C.setView(h.center,h.zoom):(C.setCenter?.(h.center),C.setZoom?.(h.zoom)))},{deep:!0}),c(async()=>{await o(),h.mapType===`amap`?await j():await A()}),l(()=>{D=!0,k()}),(a,o)=>(u(),n(`div`,x,[r(`div`,{ref_key:`mapContainer`,ref:v,class:`map-container`,style:s({height:e.height})},null,4),y.value?(u(),n(`div`,S,[i(f(m),{size:`large`})])):t(`v-if`,!0)]))}}),[[`__scopeId`,`data-v-09a5ef45`]]);export{_ as i,g as n,h as r,C as t};
1
+ import{t as e}from"./export-helper.js";import{createCommentVNode as t,createElementBlock as n,createElementVNode as r,createVNode as i,defineComponent as a,nextTick as o,normalizeStyle as s,onMounted as c,onUnmounted as l,openBlock as u,ref as d,unref as f,watch as p}from"vue";import{NSpin as m}from"naive-ui";const h=[{label:`OpenStreetMap`,value:`osm`},{label:`高德地图`,value:`amap`}],g={height:`400px`,center:[39.9042,116.4074],zoom:10,mapType:`osm`},_={url:`https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png`,attribution:`© OpenStreetMap contributors`,maxZoom:19,minZoom:1,tileSize:256,detectRetina:!0},v={apiUrl:`https://webapi.amap.com/maps?v=2.0&key=`,note:`高德地图需要API Key,如需使用请申请:https://lbs.amap.com/api/javascript-api/guide/create/`},y=15e3;let b=null;function x(e,t=y){let n=e.trim();if(!n)return Promise.reject(Error(`高德地图 API Key 不能为空`));if(typeof window>`u`||typeof document>`u`)return Promise.reject(Error(`高德地图 API 只能在浏览器环境加载`));let r=window;return r.AMap?Promise.resolve(r.AMap):b||(b=new Promise((e,i)=>{let a=document.querySelector(`script[data-c-map-amap="true"]`),o=a||document.createElement(`script`),s=!1,c=Number.isFinite(t)&&t>0?t:y,l=()=>{window.clearTimeout(p),o.removeEventListener(`load`,d),o.removeEventListener(`error`,f)},u=e=>{s||(s=!0,l(),o.remove(),b=null,i(e))},d=()=>{if(!s){if(!r.AMap){u(Error(`高德地图 API 加载完成但未找到全局对象`));return}s=!0,l(),e(r.AMap)}},f=()=>u(Error(`高德地图 API 加载失败`)),p=window.setTimeout(()=>u(Error(`高德地图 API 加载超时(${c}ms)`)),c);o.addEventListener(`load`,d,{once:!0}),o.addEventListener(`error`,f,{once:!0}),!a&&(o.async=!0,o.dataset.cMapAmap=`true`,o.src=`${v.apiUrl}${encodeURIComponent(n)}`,document.head.appendChild(o))}),b)}function S(e){if(!e||e.length!==2)return!1;let[t,n]=e;return Number.isFinite(t)&&Number.isFinite(n)&&t>=-90&&t<=90&&n>=-180&&n<=180}function C(e){return[e[1],e[0]]}function w(e){return e.filter(e=>S([e.lat,e.lng]))}function T(e,t=_.minZoom,n=_.maxZoom){return Number.isFinite(e)?Math.min(Math.max(e,t),n):g.zoom}function E(e={}){let{url:t,...n}={..._,...e};return{url:t,options:n}}const D=[`aria-label`,`aria-busy`],O={key:0,class:`map-loading`,role:`status`,"aria-live":`polite`,"aria-label":`地图加载中`};var k=e(a({name:`C_Map`,__name:`index`,props:{ariaLabel:{default:`地图`},height:{default:g.height},center:{default:()=>[...g.center]},zoom:{default:g.zoom},markers:{default:()=>[]},mapType:{default:g.mapType},amapKey:{default:``},amapLoadTimeout:{default:15e3},amapOptions:{default:()=>({})},tileConfig:{default:()=>({})},zoomControl:{type:Boolean,default:!0},preferCanvas:{type:Boolean,default:!0},fitMarkersOnInit:{type:Boolean,default:!1}},emits:[`ready`,`markerClick`,`error`],setup(e,{expose:a,emit:h}){let g=e,_=h,v=d(),y=d(!0),b=null,k=null,A=[],j=null,M=null,N=[],P=[],F=0,I=!1,L=e=>e instanceof Error?e:Error(String(e)),R=()=>{A.forEach(e=>e.remove()),A=[]},z=()=>{P.forEach(e=>e.close?.()),P=[],N.forEach(e=>e.setMap?.(null)),N=[]},B=()=>{R(),z(),k?.remove(),M?.destroy(),k=null,M=null,v.value?.replaceChildren()},V=()=>{let e=++F;return B(),y.value=!0,e},H=e=>!I&&e===F,U=()=>{if(S(g.center))return g.center;throw Error(`地图中心坐标无效,应使用 [纬度, 经度] 且处于合法范围`)},W=(e,t)=>{H(e)&&(B(),y.value=!1,_(`error`,L(t)))},G=()=>{let e=b,t=k;!t||!e||g.mapType!==`osm`||(R(),w(g.markers).forEach(n=>{let r=e.marker([n.lat,n.lng]);if(n.popup){let e=document.createElement(`span`);e.textContent=n.popup,r.bindPopup(e)}r.on(`click`,e=>{_(`markerClick`,n,e)}),r.addTo(t),A.push(r)}))},K=()=>{let e=j,t=M;!t||!e||g.mapType!==`amap`||(z(),w(g.markers).forEach(n=>{let r=new e.Marker({position:C([n.lat,n.lng]),title:n.title||n.popup||``});if(n.popup){let i=document.createElement(`span`);i.textContent=n.popup;let a=new e.InfoWindow({content:i,offset:new e.Pixel(0,-30)});P.push(a),r.on(`click`,e=>{a.open(t,r.getPosition()),_(`markerClick`,n,e)})}else r.on(`click`,e=>_(`markerClick`,n,e));r.setMap(t),N.push(r)}))},q=()=>k||M,J=()=>{k?.invalidateSize({reset:!0,pan:!1}),M?.resize?.()},Y=(e={})=>{let t=w(g.markers);if(t.length===0)return!1;if(k){let n=t.map(e=>[e.lat,e.lng]);return k.fitBounds(n,{maxZoom:e.maxZoom,padding:e.padding}),!0}if(M&&N.length>0){let[t=0,n=0]=e.padding||[];return M.setFitView?.(N,!1,[n,t,n,t],e.maxZoom),!0}return!1},X=async()=>{if(!v.value)return;let e=V();try{let t=await import(`leaflet`);if(!H(e)||!v.value)return;b=t;let{url:n,options:r}=E(g.tileConfig),i=T(g.zoom,r.minZoom,r.maxZoom);if(k=t.map(v.value,{center:U(),zoom:i,zoomControl:g.zoomControl,preferCanvas:g.preferCanvas}),t.tileLayer(n,r).addTo(k),G(),g.fitMarkersOnInit&&Y(),await o(),requestAnimationFrame(()=>{H(e)&&J()}),!H(e)||!k)return;y.value=!1,_(`ready`,k)}catch(t){W(e,t)}},Z=async()=>{if(!v.value)return;let e=V();try{let t=await x(g.amapKey,g.amapLoadTimeout);if(!H(e)||!v.value)return;j=t,M=new t.Map(v.value,{...g.amapOptions,zoom:T(g.zoom,1,20),center:C(U())}),K(),g.fitMarkersOnInit&&Y(),y.value=!1,_(`ready`,M)}catch(t){W(e,t)}},Q=async()=>{g.mapType===`amap`?await Z():await X()};return p(()=>g.markers,()=>{g.mapType===`osm`?G():K()},{deep:!0}),p([()=>g.mapType,()=>g.amapKey,()=>g.amapLoadTimeout,()=>g.amapOptions,()=>g.tileConfig,()=>g.zoomControl,()=>g.preferCanvas],()=>void Q(),{deep:!0}),p([()=>g.center,()=>g.zoom],()=>{if(!S(g.center)){_(`error`,Error(`地图中心坐标无效,应使用 [纬度, 经度]`));return}k?.setView(g.center,T(g.zoom)),M?.setCenter(C(g.center)),M?.setZoom(T(g.zoom,1,20))},{deep:!0}),c(async()=>{await o(),await Q()}),l(()=>{I=!0,F+=1,B()}),a({fitToMarkers:Y,getMap:q,refresh:J}),(a,o)=>(u(),n(`div`,{class:`c-map`,role:`region`,"aria-label":e.ariaLabel,"aria-busy":y.value},[r(`div`,{ref_key:`mapContainer`,ref:v,class:`map-container`,style:s({height:e.height})},null,4),y.value?(u(),n(`div`,O,[i(f(m),{size:`large`})])):t(`v-if`,!0)],8,D))}}),[[`__scopeId`,`data-v-5e6d0330`]]);export{E as a,h as c,T as i,_ as l,w as n,C as o,S as r,g as s,k as t};
package/dist/C_Table.d.ts CHANGED
@@ -4,6 +4,7 @@ import "./public.js";
4
4
  import "./index5.vue.js";
5
5
  import "./useSearchState.js";
6
6
  import "./useDynamicFormState.js";
7
+ import "./mapUtils.js";
7
8
  import "./index18.vue.js";
8
9
  import { $ as applyFormatter, A as EditMode, At as PrintWatermarkOptions, B as TableColumn, C as _default, Ct as RowDragConfig, D as ColumnWithKey, Dt as DynamicRowsOptions, E as ChildSelectionState, Et as useRowDrag, F as RenderFunction, G as TableRowKeyIssue, H as TableInstance, I as RowAction, J as ColumnFormatter, K as UseTableExpandOptions, L as SelectOption, M as NormalTableColumn, Mt as usePrintWatermark, N as PaginationConfig, O as CustomAction, Ot as DynamicRowsReturn, P as ParentChildLinkMode, Q as TableGlobalConfig, R as SimpleTableActions, S as validateTableRowKeys, St as useCrossPageSelection, T as BuiltInTableColumn, Tt as UseRowDragReturn, U as TableProps, V as TableEmits, W as TableRowKey, X as FormatterType, Y as FormatterConfig, Z as TABLE_GLOBAL_CONFIG_KEY, _ as useTableManager, _t as ExportConfig, at as DisplayConfig, b as defineTableColumns, bt as UseCrossPageSelectionOptions, ct as ExpandConfig, dt as TableConfig, et as mergeGlobalConfig, f as useModalEdit, ft as ToolbarConfig, g as useTableExpand, gt as resolveConfig, h as useTableActions, ht as createEditModeChecker, i as useTableQuery, it as CrudBinding, j as MaybeRefLike, jt as printPresets, k as DataRecord, kt as useDynamicRows, lt as SelectionConfig, m as usePagination, mt as VirtualScrollConfig, n as TableQueryResult, nt as BatchActionsConfig, ot as EditConfig, p as useCellEdit, pt as TreeConfig, q as UseTableExpandReturn, r as UseTableQueryOptions, rt as ColumnDragConfig, st as ErrorConfig, t as TableQueryContext, tt as useTableGlobalConfig, ut as SummaryConfig, v as useRowEdit, vt as exportTableData, w as ApiFunction, wt as UseRowDragOptions, x as defineTableConfig, xt as UseCrossPageSelectionReturn, y as useTableColumns, yt as CrossPageSelectionConfig, z as StrictTableColumn } from "./useTableQuery.js";
9
10
  import "./constants5.js";
@@ -173,10 +173,10 @@ declare const __VLS_export: vue.DefineComponent<NotificationCenterProps, Notific
173
173
  onNavigate?: ((url: string) => any) | undefined;
174
174
  }>, {
175
175
  pageSize: number;
176
+ storageKey: string;
176
177
  desktopNotification: boolean;
177
178
  maxBadgeCount: number;
178
179
  pollingInterval: number;
179
- storageKey: string;
180
180
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
181
181
  declare const _default: typeof __VLS_export;
182
182
  //#endregion
@@ -173,10 +173,10 @@ declare const __VLS_export: vue.DefineComponent<NotificationCenterProps, Notific
173
173
  onNavigate?: ((url: string) => any) | undefined;
174
174
  }>, {
175
175
  pageSize: number;
176
+ storageKey: string;
176
177
  desktopNotification: boolean;
177
178
  maxBadgeCount: number;
178
179
  pollingInterval: number;
179
- storageKey: string;
180
180
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
181
181
  declare const _default: typeof __VLS_export;
182
182
  //#endregion
@@ -216,8 +216,8 @@ declare const __VLS_base: vue.DefineComponent<UploadProps, UploadExpose, {}, {},
216
216
  multiple: boolean;
217
217
  data: Record<string, unknown>;
218
218
  draggable: boolean;
219
- action: string;
220
219
  maxSize: number;
220
+ action: string;
221
221
  headers: Record<string, string>;
222
222
  directory: boolean;
223
223
  accept: string;
@@ -216,8 +216,8 @@ declare const __VLS_base: vue.DefineComponent<UploadProps, UploadExpose, {}, {},
216
216
  multiple: boolean;
217
217
  data: Record<string, unknown>;
218
218
  draggable: boolean;
219
- action: string;
220
219
  maxSize: number;
220
+ action: string;
221
221
  headers: Record<string, string>;
222
222
  directory: boolean;
223
223
  accept: string;
Binary file
Binary file
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./chunk.cjs`),t=require(`./config.cjs`),n=require(`./C_Icon2.cjs`),r=require(`./C_Code2.cjs`),i=require(`./C_Upload2.cjs`),a=require(`./C_Barcode2.cjs`),o=require(`./C_Captcha2.cjs`),ee=require(`./C_Cascade2.cjs`),te=require(`./C_Guide2.cjs`),ne=require(`./C_Progress2.cjs`),re=require(`./C_Steps2.cjs`),ie=require(`./C_ActionBar2.cjs`),ae=require(`./C_Theme2.cjs`),oe=require(`./C_Language2.cjs`),se=require(`./C_Date2.cjs`),ce=require(`./C_Editor2.cjs`),le=require(`./C_Markdown2.cjs`),s=require(`./C_Map2.cjs`),ue=require(`./C_City2.cjs`),c=require(`./C_VtableGantt2.cjs`),l=require(`./C_Signature2.cjs`),u=require(`./C_SplitPane2.cjs`),d=require(`./C_CollapsePanel2.cjs`),f=require(`./C_Time2.cjs`),p=require(`./storage.cjs`),m=require(`./C_FormSearch2.cjs`),h=require(`./C_Tree2.cjs`),g=require(`./C_QRCode2.cjs`),_=require(`./C_ImageCropper2.cjs`),v=require(`./C_Draggable2.cjs`),y=require(`./C_WaterFall2.cjs`),b=require(`./C_FullCalendar2.cjs`),x=require(`./C_NotificationCenter2.cjs`),S=require(`./C_Cron2.cjs`),C=require(`./C_FormulaEditor2.cjs`),w=require(`./C_AntV2.cjs`),T=require(`./C_VideoPlayer2.cjs`),E=require(`./C_FilePreview2.cjs`),D=require(`./C_WorkFlow2.cjs`),O=require(`./C_Form2.cjs`),k=require(`./helpers.cjs`),A=require(`./useTableQuery.cjs`),j=require(`./C_GlobalSearch2.cjs`),M=require(`./C_Menu2.cjs`),de=require(`./C_Breadcrumb2.cjs`),N=require(`./C_TagsView2.cjs`),P=require(`./C_AudioPlayer2.cjs`),F=require(`./C_AvatarGroup2.cjs`),I=require(`./C_Chat2.cjs`),L=require(`./C_ContextMenu2.cjs`),R=require(`./C_Login2.cjs`),z=require(`./C_Timeline2.cjs`),B=require(`./C_Transfer2.cjs`),fe=require(`./C_Skeleton2.cjs`),pe=require(`./C_OrgChart2.cjs`);let V=require(`highlight.js/lib/core`);V=e.t(V);let H=require(`highlight.js/lib/languages/javascript`);H=e.t(H);let U=require(`highlight.js/lib/languages/typescript`);U=e.t(U);let W=require(`highlight.js/lib/languages/json`);W=e.t(W);let G=require(`highlight.js/lib/languages/xml`);G=e.t(G);let K=require(`highlight.js/lib/languages/css`);K=e.t(K);let q=require(`highlight.js/lib/languages/bash`);q=e.t(q);let J=require(`highlight.js/lib/languages/yaml`);J=e.t(J);let Y=require(`highlight.js/lib/languages/markdown`);Y=e.t(Y);let X=require(`highlight.js/lib/languages/java`);X=e.t(X);let Z=require(`highlight.js/lib/languages/csharp`);Z=e.t(Z);let me=require(`highlight.js/lib/languages/go`);me=e.t(me);let he=require(`highlight.js/lib/languages/python`);he=e.t(he);const ge={cpp:()=>import(`highlight.js/lib/languages/cpp`),c:()=>import(`highlight.js/lib/languages/c`),php:()=>import(`highlight.js/lib/languages/php`),ruby:()=>import(`highlight.js/lib/languages/ruby`),rust:()=>import(`highlight.js/lib/languages/rust`),swift:()=>import(`highlight.js/lib/languages/swift`),kotlin:()=>import(`highlight.js/lib/languages/kotlin`),scss:()=>import(`highlight.js/lib/languages/scss`),less:()=>import(`highlight.js/lib/languages/less`),sql:()=>import(`highlight.js/lib/languages/sql`),dockerfile:()=>import(`highlight.js/lib/languages/dockerfile`),powershell:()=>import(`highlight.js/lib/languages/powershell`)},_e=new Set,Q=new Map,$=V.default;function ve(e,t){$.registerLanguage(e,t),_e.add(e)}function ye(e){[[`javascript`,H.default],[`typescript`,U.default],[`json`,W.default],[`html`,G.default],[`xml`,G.default],[`css`,K.default],[`bash`,q.default],[`shell`,q.default],[`yaml`,J.default],[`yml`,J.default],[`markdown`,Y.default],[`java`,X.default],[`csharp`,Z.default],[`go`,me.default],[`python`,he.default]].forEach(([e,t])=>{ve(e,t)}),$.configure({ignoreUnescapedHTML:!0,languages:e.autoDetect?void 0:[]}),e.extraLanguages?.length&&be(e.extraLanguages,e)}async function be(e,t={}){let n=e.map(e=>xe(e,t));return(await Promise.allSettled(n)).map((t,n)=>t.status===`fulfilled`&&t.value?e[n]:null).filter(Boolean)}async function xe(e,t={}){let n=e.toLowerCase();if(_e.has(n))return!0;let r=Q.get(n);if(r)return r;let i=ge[n];if(!i)return t.logger?.warn(`[HighlightPlugin] Language '${e}' not supported`),!1;let a=(async()=>{try{return ve(n,(await i()).default),t.debug&&t.logger?.info(`[HighlightPlugin] Language '${n}' loaded successfully`),!0}catch(e){return t.logger?.error(`[HighlightPlugin] Failed to load language '${n}'`,e),t.onError?.(e,{source:`language-loader`,language:n}),!1}finally{Q.delete(n)}})();return Q.set(n,a),a}const Se=(e={})=>({getHljs:()=>$,loadLanguage:t=>xe(t,e),loadLanguages:t=>be(t,e),getLoadedLanguages:()=>Array.from(_e)});function Ce(e,t={}){let n={autoDetect:!1,extraLanguages:[],...t};ye(n),typeof window<`u`&&(window.hljs=$);let r=Se(n);e.provide(`highlightManager`,r),e.config.globalProperties.$highlight=r,n.debug&&n.logger?.info(`[HighlightPlugin] highlight.js plugin installed`)}const we=[r.t,n.t,i.t,a.t,o.t,ee.t,te.t,ne.t,re.t,ie.t,ae.t,oe.t,se.t,ce.t,le.t,s.t,ue.t,c.t,l.t,u.t,d.t,f.t,m.t,h.t,g.t,_.t,v.t,y.t,b.t,x.t,S.t,C.t,w.t,T.t,E.t,D.t,O.t,A.n,j.t,M.t,de.t,N.t,P.t,F.t,I.t,L.t,R.t,z.t,B.t,fe.t,pe.t];var Te={install:(e,n={})=>{we.forEach(t=>{let n=t,r=n.__name||n.name||`UnknownComponent`;e.component(r,t)}),n.highlight!==void 0&&Ce(e,n.highlight),n.feedback&&e.provide(t.t,n.feedback),n.locale&&e.provide(t.n,n.locale),n.form&&e.provide(O.d,n.form),n.table&&e.provide(A.u,n.table)}};exports.ACTION_KEYS=C.i,exports.AVATAR_STATUS_COLOR_MAP=F.r,exports.BUTTON_TEXT=b.r,exports.CATEGORY_MAP=x.a,exports.CATEGORY_TABS=x.o,exports.COMPONENT_FEEDBACK_KEY=t.t,exports.COMPONENT_LOCALE_KEY=t.n,exports.CRON_FIELD_META=S.a,exports.CRON_TEMPLATES=S.o,exports.C_ActionBar=ie.t,exports.C_AntV=w.t,exports.C_AudioPlayer=P.t,exports.C_AvatarGroup=F.t,exports.C_Barcode=a.t,exports.C_Breadcrumb=de.t,exports.C_Captcha=o.t,exports.C_Cascade=ee.t,exports.C_Chat=I.t,exports.C_City=ue.t,exports.C_Code=r.t,exports.C_CollapsePanel=d.t,exports.C_ContextMenu=L.t,exports.C_Cron=S.t,exports.C_Date=se.t,exports.C_Draggable=v.t,exports.C_Editor=ce.t,exports.C_FilePreview=E.t,exports.C_Form=O.t,exports.C_FormSearch=m.t,exports.C_FormulaEditor=C.t,exports.C_FullCalendar=b.t,exports.C_GlobalSearch=j.t,exports.C_Guide=te.t,exports.C_Icon=n.t,exports.C_ImageCropper=_.t,exports.C_Language=oe.t,exports.C_Login=R.t,exports.C_Map=s.t,exports.C_Markdown=le.t,exports.C_Menu=M.t,exports.C_NotificationCenter=x.t,exports.C_OrgChart=pe.t,exports.C_Progress=ne.t,exports.C_QRCode=g.t,exports.C_Signature=l.t,exports.C_Skeleton=fe.t,exports.C_SplitPane=u.t,exports.C_Steps=re.t,exports.C_Table=A.n,exports.C_TagsView=N.t,exports.C_Theme=ae.t,exports.C_Time=f.t,exports.C_Timeline=z.t,exports.C_Transfer=B.t,exports.C_Tree=h.t,exports.C_Upload=i.t,exports.C_VideoPlayer=T.t,exports.C_VtableGantt=c.t,exports.C_WaterFall=y.t,exports.C_WorkFlow=D.t,exports.CaptchaVerificationError=o.n,exports.DEFAULT_ANIMATION_DURATION=y.a,exports.DEFAULT_AUDIO_PLAYER_PROPS=P.n,exports.DEFAULT_AVATAR_GROUP_PROPS=F.n,exports.DEFAULT_BREAKPOINTS=y.o,exports.DEFAULT_CHAT_PROPS=I.n,exports.DEFAULT_CONTEXT_MENU_PROPS=L.n,exports.DEFAULT_CRON_EXPRESSION=S.s,exports.DEFAULT_CRON_VALUE=S.c,exports.DEFAULT_EDIT_FORM=b.i,exports.DEFAULT_FEATURES=R.n,exports.DEFAULT_FIELD_VALUE=S.l,exports.DEFAULT_FUNCTIONS=C.a,exports.DEFAULT_GAP=y.s,exports.DEFAULT_HEARTBEAT_INTERVAL=T.c,exports.DEFAULT_MAP_CONFIG=s.n,exports.DEFAULT_MAX_BADGE_COUNT=x.s,exports.DEFAULT_PAGE_SIZE=x.c,exports.DEFAULT_PLAYBACK_RATE=T.l,exports.DEFAULT_PLAYBACK_RATES=T.u,exports.DEFAULT_POLLING_INTERVAL=x.l,exports.DEFAULT_SKELETON_COUNT=y.c,exports.DEFAULT_SOCIAL_PROVIDERS=R.r,exports.DEFAULT_STORAGE_KEY=x.u,exports.DEFAULT_TIMELINE_PROPS=z.n,exports.DEFAULT_TRANSFER_PROPS=B.n,exports.DEFAULT_VOLUME=T.d,exports.DEFAULT_WS_HEARTBEAT_INTERVAL=x.d,exports.DEFAULT_WS_HEARTBEAT_MESSAGE=x.f,exports.DEFAULT_WS_MAX_RECONNECT=x.p,exports.DEFAULT_WS_RECONNECT_INTERVAL=x.m,exports.DYNAMIC_FORM_STATE_KEY=O.n,exports.EVENT_COLORS=b.a,exports.FIELD_TYPE_OPTIONS=O.r,exports.FORM_DEFAULTS=O.u,exports.FORM_GLOBAL_CONFIG_KEY=O.d,exports.HEADER_TOOLBAR=b.o,exports.INFINITE_SCROLL_THRESHOLD=y.l,exports.KEYBOARD_SHORTCUTS=T.f,exports.LAYOUTS_WITH_OWN_CONTROLS=O.f,exports.MAP_TYPES=s.r,exports.MOCK_MESSAGES=x.h,exports.MODE_ICON_MAP=P.r,exports.MONTH_LABELS=S.u,exports.NUMBER_KEYS=C.o,exports.OPERATORS=C.s,exports.OPERATOR_KEYS=C.c,exports.OSM_TILE_CONFIG=s.i,exports.PRIORITY_MAP=x.g,exports.PROGRESS_THROTTLE_INTERVAL=T.p,exports.QUALITY_LABEL_MAP=T.m,exports.SEEK_STEP=T.h,exports.SKELETON_HEIGHT_RANGE=y.u,exports.SOURCE_TYPE_MAP=T.g,exports.SPACED_OPERATORS=C.l,exports.STORAGE_KEYS=T._,exports.STORAGE_PREFIX=T.v,exports.TABLE_GLOBAL_CONFIG_KEY=A.u,exports.TIMELINE_STATUS_COLOR_MAP=z.r,exports.VOLUME_STEP=T.y,exports.WATERMARK_DEFAULT_STYLE=T.b,exports.WEEK_LABELS=S.d,exports.XGPLAYER_EVENTS=T.x,exports.applyFormatter=A.d,exports.createCaptchaProof=o.r,exports.createEditModeChecker=A.w,exports.createMenuOptions=M.n,exports.default=Te,exports.defineFormConfig=k.t,exports.defineFormOptions=k.n,exports.defineTableColumns=A.r,exports.defineTableConfig=A.i,exports.exportTableData=A.o,exports.flattenRoutes=M.r,exports.formatFileSize=i.s,exports.formatTime=P.i,exports.ganttPresetConfigs=c.n,exports.getFileIcon=i.c,exports.getInitials=F.i,exports.getItem=p.t,exports.mergeFormConfig=O.p,exports.mergeGlobalConfig=A.f,exports.nameToColor=F.a,exports.printPresets=A.v,exports.registerRenderer=O.a,exports.removeAllItem=p.n,exports.removeItem=p.r,exports.resolveConfig=A.T,exports.resolveFormConfig=O.m,exports.setItem=p.i,exports.setupHighlight=Ce,exports.shouldShowActions=O.h,exports.treePresetConfigs=h.r,exports.unregisterRenderer=O.o,exports.useBookmarks=T.r,exports.useCForm=k.r,exports.useCalendarEvents=b.n,exports.useCellEdit=A.S,exports.useChapters=T.i,exports.useChunkUpload=i.a,exports.useCollapsePanel=d.n,exports.useComponentFeedback=t.r,exports.useComponentLocale=t.i,exports.useCronDescription=S.n,exports.useCronParser=S.i,exports.useCronPreview=S.r,exports.useCropperCore=_.n,exports.useCrossPageSelection=A.s,exports.useDragDrop=i.n,exports.useDraggableLayout=v.n,exports.useDynamicFormState=O.i,exports.useDynamicRows=A._,exports.useEdgeInteraction=w.n,exports.useFileHash=i.o,exports.useFilePreview=E.r,exports.useFormDirty=O.l,exports.useFormGlobalConfig=O.g,exports.useFormRenderer=O.s,exports.useFormState=O.c,exports.useFormulaEvaluator=C.n,exports.useFormulaParser=C.r,exports.useFullscreen=E.n,exports.useGlobalSearch=j.n,exports.useGraphBase=w.i,exports.useGraphExport=w.r,exports.useHighlight=Se,exports.useInfiniteScroll=y.n,exports.useModalEdit=A.x,exports.useNotificationCore=x.r,exports.useNotificationFormat=x.n,exports.useNotificationWS=x.i,exports.usePagination=A.h,exports.usePlaybackControl=T.o,exports.usePlayerCore=T.s,exports.usePrintWatermark=A.y,exports.useProgressTracker=T.a,exports.useQRCode=g.n,exports.useResponsiveColumns=y.i,exports.useRowDrag=A.c,exports.useRowEdit=A.C,exports.useSearchHistory=m.r,exports.useSearchState=m.n,exports.useSignatureCanvas=l.i,exports.useSignatureExport=l.n,exports.useSignatureHistory=l.r,exports.useSplitResize=u.n,exports.useSubtitle=T.n,exports.useTableActions=A.m,exports.useTableColumns=A.l,exports.useTableExpand=A.b,exports.useTableGlobalConfig=A.p,exports.useTableManager=A.g,exports.useTableQuery=A.t,exports.useTagsView=N.n,exports.useTimeSelection=f.n,exports.useTreeOperations=h.n,exports.useUploadCore=i.r,exports.useUploadQueue=i.i,exports.useWaterFallLayout=y.r,exports.useWorkflowNodes=D.i,exports.useWorkflowPreview=D.n,exports.useWorkflowValidation=D.r,exports.validateTableRowKeys=A.a,exports.verifyCaptchaProof=o.i;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./chunk.cjs`),t=require(`./config.cjs`),n=require(`./C_Icon2.cjs`),r=require(`./C_Code2.cjs`),i=require(`./C_Upload2.cjs`),a=require(`./C_Barcode2.cjs`),o=require(`./C_Captcha2.cjs`),ee=require(`./C_Cascade2.cjs`),te=require(`./C_Guide2.cjs`),ne=require(`./C_Progress2.cjs`),re=require(`./C_Steps2.cjs`),ie=require(`./C_ActionBar2.cjs`),ae=require(`./C_Theme2.cjs`),oe=require(`./C_Language2.cjs`),se=require(`./C_Date2.cjs`),ce=require(`./C_Editor2.cjs`),le=require(`./C_Markdown2.cjs`),s=require(`./C_Map2.cjs`),ue=require(`./C_City2.cjs`),c=require(`./C_VtableGantt2.cjs`),l=require(`./C_Signature2.cjs`),u=require(`./C_SplitPane2.cjs`),d=require(`./C_CollapsePanel2.cjs`),f=require(`./C_Time2.cjs`),p=require(`./storage.cjs`),m=require(`./C_FormSearch2.cjs`),h=require(`./C_Tree2.cjs`),g=require(`./C_QRCode2.cjs`),_=require(`./C_ImageCropper2.cjs`),v=require(`./C_Draggable2.cjs`),y=require(`./C_WaterFall2.cjs`),b=require(`./C_FullCalendar2.cjs`),x=require(`./C_NotificationCenter2.cjs`),S=require(`./C_Cron2.cjs`),C=require(`./C_FormulaEditor2.cjs`),w=require(`./C_AntV2.cjs`),T=require(`./C_VideoPlayer2.cjs`),E=require(`./C_FilePreview2.cjs`),D=require(`./C_WorkFlow2.cjs`),O=require(`./C_Form2.cjs`),k=require(`./helpers.cjs`),A=require(`./useTableQuery.cjs`),j=require(`./C_GlobalSearch2.cjs`),M=require(`./C_Menu2.cjs`),de=require(`./C_Breadcrumb2.cjs`),N=require(`./C_TagsView2.cjs`),P=require(`./C_AudioPlayer2.cjs`),F=require(`./C_AvatarGroup2.cjs`),I=require(`./C_Chat2.cjs`),L=require(`./C_ContextMenu2.cjs`),R=require(`./C_Login2.cjs`),z=require(`./C_Timeline2.cjs`),B=require(`./C_Transfer2.cjs`),fe=require(`./C_Skeleton2.cjs`),pe=require(`./C_OrgChart2.cjs`);let V=require(`highlight.js/lib/core`);V=e.t(V);let H=require(`highlight.js/lib/languages/javascript`);H=e.t(H);let U=require(`highlight.js/lib/languages/typescript`);U=e.t(U);let W=require(`highlight.js/lib/languages/json`);W=e.t(W);let G=require(`highlight.js/lib/languages/xml`);G=e.t(G);let K=require(`highlight.js/lib/languages/css`);K=e.t(K);let q=require(`highlight.js/lib/languages/bash`);q=e.t(q);let J=require(`highlight.js/lib/languages/yaml`);J=e.t(J);let Y=require(`highlight.js/lib/languages/markdown`);Y=e.t(Y);let X=require(`highlight.js/lib/languages/java`);X=e.t(X);let Z=require(`highlight.js/lib/languages/csharp`);Z=e.t(Z);let me=require(`highlight.js/lib/languages/go`);me=e.t(me);let he=require(`highlight.js/lib/languages/python`);he=e.t(he);const ge={cpp:()=>import(`highlight.js/lib/languages/cpp`),c:()=>import(`highlight.js/lib/languages/c`),php:()=>import(`highlight.js/lib/languages/php`),ruby:()=>import(`highlight.js/lib/languages/ruby`),rust:()=>import(`highlight.js/lib/languages/rust`),swift:()=>import(`highlight.js/lib/languages/swift`),kotlin:()=>import(`highlight.js/lib/languages/kotlin`),scss:()=>import(`highlight.js/lib/languages/scss`),less:()=>import(`highlight.js/lib/languages/less`),sql:()=>import(`highlight.js/lib/languages/sql`),dockerfile:()=>import(`highlight.js/lib/languages/dockerfile`),powershell:()=>import(`highlight.js/lib/languages/powershell`)},_e=new Set,Q=new Map,$=V.default;function ve(e,t){$.registerLanguage(e,t),_e.add(e)}function ye(e){[[`javascript`,H.default],[`typescript`,U.default],[`json`,W.default],[`html`,G.default],[`xml`,G.default],[`css`,K.default],[`bash`,q.default],[`shell`,q.default],[`yaml`,J.default],[`yml`,J.default],[`markdown`,Y.default],[`java`,X.default],[`csharp`,Z.default],[`go`,me.default],[`python`,he.default]].forEach(([e,t])=>{ve(e,t)}),$.configure({ignoreUnescapedHTML:!0,languages:e.autoDetect?void 0:[]}),e.extraLanguages?.length&&be(e.extraLanguages,e)}async function be(e,t={}){let n=e.map(e=>xe(e,t));return(await Promise.allSettled(n)).map((t,n)=>t.status===`fulfilled`&&t.value?e[n]:null).filter(Boolean)}async function xe(e,t={}){let n=e.toLowerCase();if(_e.has(n))return!0;let r=Q.get(n);if(r)return r;let i=ge[n];if(!i)return t.logger?.warn(`[HighlightPlugin] Language '${e}' not supported`),!1;let a=(async()=>{try{return ve(n,(await i()).default),t.debug&&t.logger?.info(`[HighlightPlugin] Language '${n}' loaded successfully`),!0}catch(e){return t.logger?.error(`[HighlightPlugin] Failed to load language '${n}'`,e),t.onError?.(e,{source:`language-loader`,language:n}),!1}finally{Q.delete(n)}})();return Q.set(n,a),a}const Se=(e={})=>({getHljs:()=>$,loadLanguage:t=>xe(t,e),loadLanguages:t=>be(t,e),getLoadedLanguages:()=>Array.from(_e)});function Ce(e,t={}){let n={autoDetect:!1,extraLanguages:[],...t};ye(n),typeof window<`u`&&(window.hljs=$);let r=Se(n);e.provide(`highlightManager`,r),e.config.globalProperties.$highlight=r,n.debug&&n.logger?.info(`[HighlightPlugin] highlight.js plugin installed`)}const we=[r.t,n.t,i.t,a.t,o.t,ee.t,te.t,ne.t,re.t,ie.t,ae.t,oe.t,se.t,ce.t,le.t,s.t,ue.t,c.t,l.t,u.t,d.t,f.t,m.t,h.t,g.t,_.t,v.t,y.t,b.t,x.t,S.t,C.t,w.t,T.t,E.t,D.t,O.t,A.n,j.t,M.t,de.t,N.t,P.t,F.t,I.t,L.t,R.t,z.t,B.t,fe.t,pe.t];var Te={install:(e,n={})=>{we.forEach(t=>{let n=t,r=n.__name||n.name||`UnknownComponent`;e.component(r,t)}),n.highlight!==void 0&&Ce(e,n.highlight),n.feedback&&e.provide(t.t,n.feedback),n.locale&&e.provide(t.n,n.locale),n.form&&e.provide(O.d,n.form),n.table&&e.provide(A.u,n.table)}};exports.ACTION_KEYS=C.i,exports.AVATAR_STATUS_COLOR_MAP=F.r,exports.BUTTON_TEXT=b.r,exports.CATEGORY_MAP=x.a,exports.CATEGORY_TABS=x.o,exports.COMPONENT_FEEDBACK_KEY=t.t,exports.COMPONENT_LOCALE_KEY=t.n,exports.CRON_FIELD_META=S.a,exports.CRON_TEMPLATES=S.o,exports.C_ActionBar=ie.t,exports.C_AntV=w.t,exports.C_AudioPlayer=P.t,exports.C_AvatarGroup=F.t,exports.C_Barcode=a.t,exports.C_Breadcrumb=de.t,exports.C_Captcha=o.t,exports.C_Cascade=ee.t,exports.C_Chat=I.t,exports.C_City=ue.t,exports.C_Code=r.t,exports.C_CollapsePanel=d.t,exports.C_ContextMenu=L.t,exports.C_Cron=S.t,exports.C_Date=se.t,exports.C_Draggable=v.t,exports.C_Editor=ce.t,exports.C_FilePreview=E.t,exports.C_Form=O.t,exports.C_FormSearch=m.t,exports.C_FormulaEditor=C.t,exports.C_FullCalendar=b.t,exports.C_GlobalSearch=j.t,exports.C_Guide=te.t,exports.C_Icon=n.t,exports.C_ImageCropper=_.t,exports.C_Language=oe.t,exports.C_Login=R.t,exports.C_Map=s.t,exports.C_Markdown=le.t,exports.C_Menu=M.t,exports.C_NotificationCenter=x.t,exports.C_OrgChart=pe.t,exports.C_Progress=ne.t,exports.C_QRCode=g.t,exports.C_Signature=l.t,exports.C_Skeleton=fe.t,exports.C_SplitPane=u.t,exports.C_Steps=re.t,exports.C_Table=A.n,exports.C_TagsView=N.t,exports.C_Theme=ae.t,exports.C_Time=f.t,exports.C_Timeline=z.t,exports.C_Transfer=B.t,exports.C_Tree=h.t,exports.C_Upload=i.t,exports.C_VideoPlayer=T.t,exports.C_VtableGantt=c.t,exports.C_WaterFall=y.t,exports.C_WorkFlow=D.t,exports.CaptchaVerificationError=o.n,exports.DEFAULT_ANIMATION_DURATION=y.a,exports.DEFAULT_AUDIO_PLAYER_PROPS=P.n,exports.DEFAULT_AVATAR_GROUP_PROPS=F.n,exports.DEFAULT_BREAKPOINTS=y.o,exports.DEFAULT_CHAT_PROPS=I.n,exports.DEFAULT_CONTEXT_MENU_PROPS=L.n,exports.DEFAULT_CRON_EXPRESSION=S.s,exports.DEFAULT_CRON_VALUE=S.c,exports.DEFAULT_EDIT_FORM=b.i,exports.DEFAULT_FEATURES=R.n,exports.DEFAULT_FIELD_VALUE=S.l,exports.DEFAULT_FUNCTIONS=C.a,exports.DEFAULT_GAP=y.s,exports.DEFAULT_HEARTBEAT_INTERVAL=T.c,exports.DEFAULT_MAP_CONFIG=s.s,exports.DEFAULT_MAX_BADGE_COUNT=x.s,exports.DEFAULT_PAGE_SIZE=x.c,exports.DEFAULT_PLAYBACK_RATE=T.l,exports.DEFAULT_PLAYBACK_RATES=T.u,exports.DEFAULT_POLLING_INTERVAL=x.l,exports.DEFAULT_SKELETON_COUNT=y.c,exports.DEFAULT_SOCIAL_PROVIDERS=R.r,exports.DEFAULT_STORAGE_KEY=x.u,exports.DEFAULT_TIMELINE_PROPS=z.n,exports.DEFAULT_TRANSFER_PROPS=B.n,exports.DEFAULT_VOLUME=T.d,exports.DEFAULT_WS_HEARTBEAT_INTERVAL=x.d,exports.DEFAULT_WS_HEARTBEAT_MESSAGE=x.f,exports.DEFAULT_WS_MAX_RECONNECT=x.p,exports.DEFAULT_WS_RECONNECT_INTERVAL=x.m,exports.DYNAMIC_FORM_STATE_KEY=O.n,exports.EVENT_COLORS=b.a,exports.FIELD_TYPE_OPTIONS=O.r,exports.FORM_DEFAULTS=O.u,exports.FORM_GLOBAL_CONFIG_KEY=O.d,exports.HEADER_TOOLBAR=b.o,exports.INFINITE_SCROLL_THRESHOLD=y.l,exports.KEYBOARD_SHORTCUTS=T.f,exports.LAYOUTS_WITH_OWN_CONTROLS=O.f,exports.MAP_TYPES=s.c,exports.MOCK_MESSAGES=x.h,exports.MODE_ICON_MAP=P.r,exports.MONTH_LABELS=S.u,exports.NUMBER_KEYS=C.o,exports.OPERATORS=C.s,exports.OPERATOR_KEYS=C.c,exports.OSM_TILE_CONFIG=s.l,exports.PRIORITY_MAP=x.g,exports.PROGRESS_THROTTLE_INTERVAL=T.p,exports.QUALITY_LABEL_MAP=T.m,exports.SEEK_STEP=T.h,exports.SKELETON_HEIGHT_RANGE=y.u,exports.SOURCE_TYPE_MAP=T.g,exports.SPACED_OPERATORS=C.l,exports.STORAGE_KEYS=T._,exports.STORAGE_PREFIX=T.v,exports.TABLE_GLOBAL_CONFIG_KEY=A.u,exports.TIMELINE_STATUS_COLOR_MAP=z.r,exports.VOLUME_STEP=T.y,exports.WATERMARK_DEFAULT_STYLE=T.b,exports.WEEK_LABELS=S.d,exports.XGPLAYER_EVENTS=T.x,exports.applyFormatter=A.d,exports.createCaptchaProof=o.r,exports.createEditModeChecker=A.w,exports.createMenuOptions=M.n,exports.default=Te,exports.defineFormConfig=k.t,exports.defineFormOptions=k.n,exports.defineTableColumns=A.r,exports.defineTableConfig=A.i,exports.exportTableData=A.o,exports.flattenRoutes=M.r,exports.formatFileSize=i.s,exports.formatTime=P.i,exports.ganttPresetConfigs=c.n,exports.getFileIcon=i.c,exports.getInitials=F.i,exports.getItem=p.t,exports.getValidMapMarkers=s.n,exports.isValidMapCoordinate=s.r,exports.mergeFormConfig=O.p,exports.mergeGlobalConfig=A.f,exports.nameToColor=F.a,exports.normalizeMapZoom=s.i,exports.printPresets=A.v,exports.registerRenderer=O.a,exports.removeAllItem=p.n,exports.removeItem=p.r,exports.resolveConfig=A.T,exports.resolveFormConfig=O.m,exports.resolveTileConfig=s.a,exports.setItem=p.i,exports.setupHighlight=Ce,exports.shouldShowActions=O.h,exports.toAMapPosition=s.o,exports.treePresetConfigs=h.r,exports.unregisterRenderer=O.o,exports.useBookmarks=T.r,exports.useCForm=k.r,exports.useCalendarEvents=b.n,exports.useCellEdit=A.S,exports.useChapters=T.i,exports.useChunkUpload=i.a,exports.useCollapsePanel=d.n,exports.useComponentFeedback=t.r,exports.useComponentLocale=t.i,exports.useCronDescription=S.n,exports.useCronParser=S.i,exports.useCronPreview=S.r,exports.useCropperCore=_.n,exports.useCrossPageSelection=A.s,exports.useDragDrop=i.n,exports.useDraggableLayout=v.n,exports.useDynamicFormState=O.i,exports.useDynamicRows=A._,exports.useEdgeInteraction=w.n,exports.useFileHash=i.o,exports.useFilePreview=E.r,exports.useFormDirty=O.l,exports.useFormGlobalConfig=O.g,exports.useFormRenderer=O.s,exports.useFormState=O.c,exports.useFormulaEvaluator=C.n,exports.useFormulaParser=C.r,exports.useFullscreen=E.n,exports.useGlobalSearch=j.n,exports.useGraphBase=w.i,exports.useGraphExport=w.r,exports.useHighlight=Se,exports.useInfiniteScroll=y.n,exports.useModalEdit=A.x,exports.useNotificationCore=x.r,exports.useNotificationFormat=x.n,exports.useNotificationWS=x.i,exports.usePagination=A.h,exports.usePlaybackControl=T.o,exports.usePlayerCore=T.s,exports.usePrintWatermark=A.y,exports.useProgressTracker=T.a,exports.useQRCode=g.n,exports.useResponsiveColumns=y.i,exports.useRowDrag=A.c,exports.useRowEdit=A.C,exports.useSearchHistory=m.r,exports.useSearchState=m.n,exports.useSignatureCanvas=l.i,exports.useSignatureExport=l.n,exports.useSignatureHistory=l.r,exports.useSplitResize=u.n,exports.useSubtitle=T.n,exports.useTableActions=A.m,exports.useTableColumns=A.l,exports.useTableExpand=A.b,exports.useTableGlobalConfig=A.p,exports.useTableManager=A.g,exports.useTableQuery=A.t,exports.useTagsView=N.n,exports.useTimeSelection=f.n,exports.useTreeOperations=h.n,exports.useUploadCore=i.r,exports.useUploadQueue=i.i,exports.useWaterFallLayout=y.r,exports.useWorkflowNodes=D.i,exports.useWorkflowPreview=D.n,exports.useWorkflowValidation=D.r,exports.validateTableRowKeys=A.a,exports.verifyCaptchaProof=o.i;