/*! * FormCreate 低代码表单渲染器 * @form-create/component-elm-group v2.6.3 * (c) 2018-2024 xaboy * Github https://github.com/xaboy/form-create * Site https://form-create.com/ * Released under the MIT License. */ (function(){"use strict";try{if(typeof document!="undefined"){var o=document.createElement("style");o.appendChild(document.createTextNode('._fc-group{display:flex;min-height:42px;justify-content:center;flex-direction:column}._fc-group-disabled ._fc-group-btn,._fc-group-disabled ._fc-group-add{cursor:not-allowed}._fc-group-handle{display:flex;flex-direction:row;position:absolute;bottom:-15px;right:30px;border-radius:15px;border:1px dashed #d9d9d9;padding:3px 8px;background-color:#fff}._fc-group-btn{cursor:pointer}._fc-group-idx{position:absolute;bottom:-15px;left:10px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:#eee;border-radius:15px;font-weight:700}._fc-group-handle ._fc-group-btn+._fc-group-btn{margin-left:7px}._fc-group-container{position:relative;display:flex;flex-direction:column;border:1px dashed #d9d9d9;padding:20px 20px 25px;margin:5px 5px 25px;border-radius:5px}._fc-group-arrow{position:relative;width:20px;height:20px}._fc-group-arrow:before{content:"";position:absolute;top:8px;left:5px;width:9px;height:9px;border-left:2px solid #999;border-top:2px solid #999}._fc-group-arrow:before{transform:rotate(45deg)}._fc-group-arrow._fc-group-down{transform:rotate(180deg)}._fc-group-plus-minus{width:20px;height:20px;position:relative;cursor:pointer}._fc-group-plus-minus:before,._fc-group-plus-minus:after{content:"";position:absolute;top:50%;left:50%;width:60%;height:2px;background-color:#409eff;transform:translate(-50%,-50%)}._fc-group-plus-minus:before{transform:translate(-50%,-50%) rotate(90deg)}._fc-group-plus-minus._fc-group-minus:before{display:none}._fc-group-plus-minus._fc-group-minus:after{background-color:#f56c6c}._fc-group-add{cursor:pointer;width:25px;height:25px;border:1px solid rgb(64 158 255 / 50%);border-radius:15px}._fc-group-add._fc-group-plus-minus:before,._fc-group-add._fc-group-plus-minus:after{width:50%}')),document.head.appendChild(o)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})(); (function(l,u){typeof exports=="object"&&typeof module!="undefined"?module.exports=u(require("vue")):typeof define=="function"&&define.amd?define(["vue"],u):(l=typeof globalThis!="undefined"?globalThis:l||self,l.FcGroup=u(l.Vue))})(this,function(l){"use strict";var w=Object.defineProperty;var $=Object.getOwnPropertySymbols;var x=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable;var O=(l,u,c)=>u in l?w(l,u,{enumerable:!0,configurable:!0,writable:!0,value:c}):l[u]=c,g=(l,u)=>{for(var c in u||(u={}))x.call(u,c)&&O(l,c,u[c]);if($)for(var c of $(u))F.call(u,c)&&O(l,c,u[c]);return l};function u(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t,r=1;r0},Function(e){const t=this.getType(e);return t==="Function"||t==="AsyncFunction"},getType(e){const t=Object.prototype.toString.call(e);return/^\[object (.*)\]$/.exec(t)[1]},empty(e){return e==null||Array.isArray(e)&&Array.isArray(e)&&!e.length?!0:typeof e=="string"&&!e}};["Date","Object","String","Boolean","Array","Number"].forEach(e=>{h[e]=function(t){return h.type(t,e)}});function D(e,t){return{}.hasOwnProperty.call(e,t)}function d(e,t,r){l.set(e,t,r)}function m(e,t={},r){let s=!1;for(let i in t)if(Object.prototype.hasOwnProperty.call(t,i)){let n=t[i];if((s=Array.isArray(n))||h.Object(n)){let o=e[i]===void 0;if(s)s=!1,o&&d(e,i,[]);else if(n._clone&&r!==void 0){d(e,i,n._clone());continue}else o&&d(e,i,{});e[i]=m(e[i],n,r)}else d(e,i,n),h.Undef(n)||(h.Undef(n.__json)||(e[i].__json=n.__json),h.Undef(n.__origin)||(e[i].__origin=n.__origin))}return e}function v(e){return m({},{value:e}).value}const I=Object.assign||function(e){for(let t,r=1;r[]},sortBtn:{type:Boolean,default:!0},defaultValue:Object,disabled:{type:Boolean,default:!1},syncDisabled:{type:Boolean,default:!0},onBeforeRemove:{type:Function,default:()=>{}},onBeforeAdd:{type:Function,default:()=>{}},parse:Function},data(){return{len:0,cacheRule:{},cacheValue:{},sort:[],type:void 0}},computed:{formRule(){return this.rules?this.rules:this.rule?Array.isArray(this.rule)?this.rule:[this.rule]:[]}},watch:{cacheRule:{handler(e){this.sort=Object.keys(e)},immediate:!0},formRule:{handler(e,t){Object.keys(this.cacheRule).forEach(r=>{const s=this.cacheRule[r];if(s.$f){const i=s.$f.formData();if(e===t)s.$f.deferSyncValue(()=>{m(s.rule,e),s.$f.setValue(i)},!0);else{const n=s.$f.formData();s.$f.once("reloading",()=>{s.$f.setValue(n)}),s.rule=v(e)}}})},deep:!0},expand(e){let t=e-this.value.length;t>0&&this.expandRule(t)},value(e,t){e=e||[];let r=this.sort,s=r.length,i=s-e.length;if(i<0){for(let n=i;n<0;n++)this.addRule(e.length+n);this.sort=Object.keys(this.cacheRule);for(let n=0;n0){for(let n=0;n{this.setValue(r[o],e[o])})}}},methods:{_value(e){return e&&D(e,this.field)?e[this.field]:e},cache(e,t){this.cacheValue[e]=JSON.stringify(t)},input(e){this.$emit("input",e),this.$emit("change",e)},formData(e,t){const r=this.cacheRule,s=this.sort;if(s.filter(n=>r[n].$f).length!==s.length)return;const i=s.map(n=>{const o=e===n?t:g({},this.cacheRule[n].$f.form),a=this.field?o[this.field]||null:o;return this.cache(n,a),a});this.input(i)},setValue(e,t){const r=this.field,s=this.cacheRule[e].$f;r&&(t={[r]:this._value(t)}),this.cacheValue[e]!==JSON.stringify(r?t[r]:t)&&(this.cache(e,t),s&&s.coverValue(t||{}))},addRule(e,t){const r=this.formCreateInject.form.copyRules(this.formRule),s=this.options?g({},this.options):{submitBtn:!1,resetBtn:!1};if(this.defaultValue){s.formData||(s.formData={});const i=v(this.defaultValue);b(s.formData,this.field?{[this.field]:i}:i)}this.parse&&this.parse({rule:r,options:s,index:this.sort.length}),this.$set(this.cacheRule,++this.len,{rule:r,options:s}),t&&this.$nextTick(()=>this.$emit("add",r,Object.keys(this.cacheRule).length-1))},add$f(e,t,r){this.cacheRule[t].$f=r,this.$nextTick(()=>{this.$emit("itemMounted",r,Object.keys(this.cacheRule).indexOf(t))})},removeRule(e,t){const r=Object.keys(this.cacheRule).indexOf(e);this.$delete(this.cacheRule,e),this.$delete(this.cacheValue,e),t&&this.$nextTick(()=>this.$emit("remove",r))},add(e){this.disabled||this.onBeforeAdd(this.value)===!1||this.addRule(e,!0)},del(e,t){if(this.disabled||this.onBeforeRemove(this.value,e)===!1)return;this.removeRule(t,!0);const r=[...this.value];r.splice(e,1),this.input(r)},addIcon(e){const t=this.$createElement;return t("div",{class:"_fc-group-btn _fc-group-plus-minus",on:{click:this.add}})},delIcon(e,t){const r=this.$createElement;return r("div",{class:"_fc-group-btn _fc-group-plus-minus _fc-group-minus",on:{click:()=>this.del(e,t)}})},sortUpIcon(e){const t=this.$createElement;return t("div",{class:"_fc-group-btn _fc-group-arrow _fc-group-up",on:{click:()=>this.changeSort(e,-1)}})},sortDownIcon(e){const t=this.$createElement;return t("div",{class:"_fc-group-btn _fc-group-arrow _fc-group-down",on:{click:()=>this.changeSort(e,1)}})},changeSort(e,t){const r=this.sort[e];this.$set(this.sort,e,this.sort[e+t]),this.sort[e+t]=r,this.formData(0)},makeIcon(e,t,r){if(this.$scopedSlots.button)return this.$scopedSlots.button({total:e,index:t,vm:this,key:r,del:()=>this.del(t,r),add:this.add});const s=[];return(!this.max||ethis.min&&s.push(this.delIcon(t,r)),this.sortBtn&&t&&s.push(this.sortUpIcon(t)),this.sortBtn&&t!==e-1&&s.push(this.sortDownIcon(t)),s},emitEvent(e,t,r,s){this.$emit(e,...t,this.cacheRule[s].$f,r)},expandRule(e){for(let t=0;t0&&this.expandRule(e);for(let t=0;t{const{rule:y,options:f}=this.cacheRule[o],_=r&&!i?this.makeIcon(t.length,a,o):[];return e("div",{class:"_fc-group-container",key:o},[e(s,E([{key:o},{on:{"update:value":p=>this.formData(o,p),"emit-event":(p,...k)=>this.emitEvent(p,k,a,o),input:p=>this.add$f(a,o,p)}},{},{props:{disabled:i,inFor:!0,value:this.field?{[this.field]:this._value(this.value[a])}:this.value[a],rule:y,option:f,extendOption:!0}}])),e("div",{class:"_fc-group-idx"},[a+1]),_.length?e("div",{class:"_fc-group-handle"},[_]):null])});return e("div",{key:"con",class:"_fc-group "+(i?"_fc-group-disabled":"")},[n])}}});