UNPKG

245 kBSource Map (JSON)View Raw
1{"version":3,"file":"form-create.min.js","sources":["../../../node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js","../../utils/lib/tostring.js","../../utils/lib/modify.js","../../utils/lib/type.js","../../utils/lib/deepextend.js","../../utils/lib/toarray.js","../../utils/lib/slot.js","../../../components/ant-design-vue/upload/src/component.jsx","../../../node_modules/style-inject/dist/style-inject.es.js","../../../components/ant-design-vue/frame/src/component.jsx","../../../components/ant-design-vue/group/src/component.jsx","../../../components/common/subform/src/component.jsx","../src/components/index.js","../src/parsers/checkbox.js","../src/parsers/radio.js","../src/parsers/select.js","../../utils/lib/extend.js","../../core/src/components/formCreate.js","../../utils/lib/mergeprops.js","../../core/src/frame/attrs.js","../../utils/lib/console.js","../../utils/lib/json.js","../../core/src/frame/util.js","../../utils/lib/toline.js","../../utils/lib/unique.js","../../utils/lib/deepset.js","../../core/src/factory/creator.js","../../core/src/factory/maker.js","../../core/src/frame/api.js","../../core/src/render/cache.js","../../utils/lib/tocase.js","../../core/src/render/render.js","../../core/src/render/index.js","../../core/src/handler/inject.js","../../core/src/handler/page.js","../../core/src/handler/render.js","../../core/src/factory/context.js","../../core/src/handler/loader.js","../../core/src/handler/input.js","../../core/src/factory/parser.js","../../core/src/handler/context.js","../../core/src/handler/lifecycle.js","../../core/src/handler/effect.js","../../core/src/handler/index.js","../../core/src/frame/fetch.js","../../core/src/components/fragment.js","../../core/src/factory/node.js","../../core/src/factory/manager.js","../../core/src/frame/provider.js","../../core/src/frame/index.js","../src/parsers/datePicker.js","../src/parsers/hidden.js","../src/parsers/input.js","../src/parsers/timePicker.js","../src/parsers/tree.js","../src/parsers/row.js","../src/parsers/index.js","../src/core/alias.js","../src/core/config.js","../src/core/manager.js","../src/core/maker.js","../src/core/api.js","../src/core/index.js","../src/index.js"],"sourcesContent":["\"use strict\";function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_extends.apply(this,arguments)}var normalMerge=[\"attrs\",\"props\",\"domProps\"],toArrayMerge=[\"class\",\"style\",\"directives\"],functionalMerge=[\"on\",\"nativeOn\"],mergeJsxProps=function(a){return a.reduce(function(c,a){for(var b in a)if(!c[b])c[b]=a[b];else if(-1!==normalMerge.indexOf(b))c[b]=_extends({},c[b],a[b]);else if(-1!==toArrayMerge.indexOf(b)){var d=c[b]instanceof Array?c[b]:[c[b]],e=a[b]instanceof Array?a[b]:[a[b]];c[b]=d.concat(e)}else if(-1!==functionalMerge.indexOf(b)){for(var f in a[b])if(c[b][f]){var g=c[b][f]instanceof Array?c[b][f]:[c[b][f]],h=a[b][f]instanceof Array?a[b][f]:[a[b][f]];c[b][f]=g.concat(h)}else c[b][f]=a[b][f];}else if(\"hook\"==b)for(var i in a[b])c[b][i]=c[b][i]?mergeFn(c[b][i],a[b][i]):a[b][i];else c[b]=a[b];return c},{})},mergeFn=function(a,b){return function(){a&&a.apply(this,arguments),b&&b.apply(this,arguments)}};module.exports=mergeJsxProps;\n","export default function toString(val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n","import Vue from 'vue';\n\nexport function $set(target, field, value) {\n Vue.set(target, field, value);\n}\n\nexport function $del(target, field) {\n Vue.delete(target, field);\n}\n","const is = {\n type(arg, type) {\n return Object.prototype.toString.call(arg) === '[object ' + type + ']'\n },\n Undef(v) {\n return v === undefined || v === null\n },\n Element(arg) {\n return typeof arg === 'object' && arg !== null && arg.nodeType === 1 && !is.Object(arg)\n },\n trueArray(data) {\n return Array.isArray(data) && data.length > 0;\n }\n};\n\n['Date', 'Object', 'Function', 'String', 'Boolean', 'Array', 'Number'].forEach(t => {\n is[t] = function (arg) {\n return is.type(arg, t);\n }\n})\n\nexport function hasProperty(rule, k) {\n return ({}).hasOwnProperty.call(rule, k)\n}\n\nexport default is;\n","import {$set} from './modify';\nimport is from './type';\n\nexport default function deepExtend(origin, target = {}, mode) {\n let isArr = false;\n for (let key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n let clone = target[key];\n if ((isArr = Array.isArray(clone)) || is.Object(clone)) {\n let nst = origin[key] === undefined;\n if (isArr) {\n isArr = false;\n nst && $set(origin, key, []);\n } else if (clone._clone && mode !== undefined) {\n if (mode) {\n clone = clone.getRule();\n nst && $set(origin, key, {});\n } else {\n $set(origin, key, clone._clone());\n continue;\n }\n } else {\n nst && $set(origin, key, {});\n }\n origin[key] = deepExtend(origin[key], clone, mode);\n } else if (is.Undef(clone)) {\n $set(origin, key, clone);\n } else if (clone.__json !== undefined) {\n $set(origin, key, clone.__json);\n } else if (clone.__origin !== undefined) {\n $set(origin, key, clone.__origin);\n } else {\n $set(origin, key, clone);\n }\n }\n }\n return (mode !== undefined && Array.isArray(origin)) ? origin.filter(v => !v || !v.__ctrl) : origin\n}\n\nexport function deepCopy(value) {\n return deepExtend({}, {value}).value;\n}\n\nexport function deepExtendArgs(origin, ...lst) {\n lst.forEach(target => {\n origin = deepExtend(origin, target);\n });\n return origin;\n}\n","export default function toArray(value) {\n return Array.isArray(value)\n ? value\n : ([null, undefined, ''].indexOf(value) > -1 ? [] : [value]);\n}\n","export default function getSlot(slots, exclude) {\n return Object.keys(slots).reduce((lst, name) => {\n if (!exclude || exclude.indexOf(name) === -1) {\n lst.push(slots[name])\n }\n return lst;\n }, [])\n}","import toString from '@form-create/utils/lib/tostring';\nimport deepExtend from '@form-create/utils/lib/deepextend';\nimport toArray from '@form-create/utils/lib/toarray';\nimport getSlot from '@form-create/utils/lib/slot';\n\nconst parseFile = function (file, uid) {\n return {\n url: file,\n name: getFileName(file),\n status: 'done',\n uid: uid + 1\n };\n }, getFileName = function (file) {\n return toString(file).split('/').pop()\n }, parseUpload = function (file) {\n return {url: file.url, file};\n };\n\nconst NAME = 'fcUpload';\n\nexport default {\n name: NAME,\n formCreateParser: {\n toFormValue(value) {\n return toArray(value);\n },\n toValue(formValue,ctx) {\n return ctx.prop.props.limit === 1 ? (formValue[0] || '') : formValue;\n }\n },\n props: {\n limit: {\n type: Number,\n default: 0\n },\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {\n type: Array,\n default: () => []\n },\n onSuccess: {\n type: Function,\n required: true\n },\n onHandle: {\n type: Function,\n default: function (file) {\n this.previewImage = file.url;\n this.previewVisible = true;\n }\n },\n modalTitle: String,\n previewMask: undefined,\n },\n data() {\n const fileList = this.value.map(parseFile);\n return {\n defaultUploadList: fileList,\n previewImage: '',\n previewVisible: false,\n uploadList: fileList.map(parseUpload)\n };\n },\n watch: {\n value(n) {\n const fileList = n.map(parseFile);\n this.$refs.upload.sFileList = fileList;\n this.uploadList = fileList.map(parseUpload)\n }\n },\n methods: {\n handleChange({file, fileList}) {\n const list = this.uploadList;\n if (file.status === 'done') {\n this.onSuccess(file, fileList);\n if (file.url) list.push({\n url: file.url,\n file: fileList[fileList.length - 1]\n });\n this.input();\n } else if (file.status === 'removed') {\n list.forEach((v, i) => {\n if (v.file === file) {\n list.splice(i, 1);\n }\n });\n this.input();\n }\n },\n input() {\n this.$emit('input', this.uploadList.map(v => v.url));\n },\n\n },\n render() {\n const isShow = (!this.limit || this.limit > this.uploadList.length);\n const ctx = {...this.formCreateInject.prop};\n ctx.on = deepExtend({}, ctx.on || {});\n return <div>\n <AUpload {...ctx} on-preview={this.onHandle.bind(this)}\n on-change={this.handleChange}\n ref=\"upload\" defaultFileList={this.defaultUploadList}>\n {isShow ? <template slot=\"default\">{this.$slots.default || <AIcon type=\"plus\"/>}</template> : null}{getSlot(this.$slots, ['default'])}\n </AUpload>\n <aModal mask={this.previewMask} title={this.modalTitle} v-model={this.previewVisible} footer={null}>\n <img style=\"width: 100%\" src={this.previewImage}/>\n </aModal>\n </div>;\n }\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import toArray from '@form-create/utils/lib/toarray';\nimport './style.css';\n\nconst NAME = 'fcFrame';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n type: {\n type: String,\n default: 'input'\n },\n field: String,\n helper: {\n type: Boolean,\n default: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n src: {\n type: String,\n required: true\n },\n icon: {\n type: String,\n default: 'folder'\n },\n width: {\n type: [Number, String],\n default: 500\n },\n height: {\n type: [Number, String],\n default: 370\n },\n maxLength: {\n type: Number,\n default: 0\n },\n okBtnText: {\n type: String,\n default: '确定'\n },\n closeBtnText: {\n type: String,\n default: '关闭'\n },\n modalTitle: String,\n handleIcon: {\n type: [String, Boolean],\n default: undefined\n },\n title: String,\n allowRemove: {\n type: Boolean,\n default: true\n },\n onOpen: {\n type: Function,\n default: () => {\n }\n },\n onOk: {\n type: Function,\n default: () => {\n }\n },\n onCancel: {\n type: Function,\n default: () => {\n }\n },\n onLoad: {\n type: Function,\n default: () => {\n }\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onRemove: {\n type: Function,\n default: () => {\n }\n },\n onHandle: {\n type: Function,\n default(src) {\n this.previewImage = this.getSrc(src);\n this.previewVisible = true;\n }\n },\n modal: {\n type: Object,\n default: () => ({})\n },\n srcKey: {\n type: [String, Number]\n },\n value: [Array, String, Number, Object],\n previewMask: undefined,\n footer: {\n type: Boolean,\n default: true\n },\n reload: {\n type: Boolean,\n default: true\n },\n closeBtn: {\n type: Boolean,\n default: true\n },\n okBtn: {\n type: Boolean,\n default: true\n },\n\n },\n data() {\n return {\n fileList: toArray(this.value),\n previewVisible: false,\n frameVisible: false,\n previewImage: ''\n }\n },\n watch: {\n value(n) {\n this.fileList = toArray(n);\n },\n fileList(n) {\n const val = this.maxLength === 1 ? (n[0] || '') : n;\n this.$emit('input', val);\n this.$emit('change', val);\n }\n },\n methods: {\n key(unique) {\n return unique;\n },\n closeModal(close) {\n this.$emit(close ? '$close' : '$ok');\n if (this.reload) {\n this.$off('$ok');\n this.$off('$close');\n }\n this.frameVisible = false;\n },\n\n showModal() {\n if (this.disabled || false === this.onOpen()) return;\n this.frameVisible = true;\n },\n\n makeInput() {\n const props = {\n type: 'text',\n value: (this.fileList.map(v => this.getSrc(v))).toString(),\n readonly: true\n };\n\n return <AInput props={props} key={this.key('input')}>\n <AIcon type={this.icon} slot=\"addonAfter\" on-click={this.showModal}/>\n {this.fileList.length ?\n <AIcon type=\"close-circle\" slot=\"suffix\" on-click={() => this.fileList = []}/> : null}\n </AInput>\n },\n\n makeGroup(children) {\n if (!this.maxLength || this.fileList.length < this.maxLength)\n children.push(this.makeBtn());\n return <div key={this.key('group')}>{...children}</div>\n },\n\n makeItem(index, children) {\n return <div class='fc-files' key={this.key('file' + index)}>{...children}</div>;\n },\n valid(f) {\n const field = this.formCreateInject.field || this.field;\n if (field && f !== field)\n throw new Error('[frame]无效的字段值');\n },\n\n makeIcons(val, index) {\n if (this.handleIcon !== false || this.allowRemove === true) {\n const icons = [];\n if ((this.type !== 'file' && this.handleIcon !== false) || (this.type === 'file' && this.handleIcon))\n icons.push(this.makeHandleIcon(val, index));\n if (this.allowRemove)\n icons.push(this.makeRemoveIcon(val, index));\n\n return <div class='fc-upload-cover' key={this.key('uc')}>{icons}</div>\n }\n },\n makeHandleIcon(val, index) {\n return <AIcon\n type={(this.handleIcon === true || this.handleIcon === undefined) ? 'eye-o' : this.handleIcon}\n on-click={() => this.handleClick(val)} key={this.key('hi' + index)}/>\n },\n\n makeRemoveIcon(val, index) {\n return <AIcon type=\"delete\" on-click={() => this.handleRemove(val)} key={this.key('ri' + index)}/>\n },\n\n makeFiles() {\n return this.makeGroup(this.fileList.map((src, index) => {\n return this.makeItem(index, [<AIcon type=\"file\"\n on-click={() => this.handleClick(src)}/>, this.makeIcons(src, index)])\n }))\n },\n makeImages() {\n return this.makeGroup(this.fileList.map((src, index) => {\n return this.makeItem(index, [<img src={this.getSrc(src)}/>, this.makeIcons(src, index)])\n }))\n },\n makeBtn() {\n return <div class='fc-upload-btn' on-click={() => this.showModal()} key={this.key('btn')}>\n <AIcon type={this.icon} theme=\"filled\"/>\n </div>\n },\n handleClick(src) {\n return this.onHandle(src);\n },\n handleRemove(src) {\n if (this.disabled) return;\n if (false !== this.onBeforeRemove(src)) {\n this.fileList.splice(this.fileList.indexOf(src), 1);\n this.onRemove(src);\n }\n },\n getSrc(src) {\n return !this.srcKey ? src : src[this.srcKey];\n },\n frameLoad(iframe) {\n this.onLoad(iframe);\n try {\n if (this.helper === true) {\n iframe['form_create_helper'] = {\n close: (field) => {\n this.valid(field);\n this.closeModal();\n },\n set: (field, value) => {\n this.valid(field);\n if (!this.disabled)\n this.$emit('input', value);\n\n },\n get: (field) => {\n this.valid(field);\n return this.value;\n },\n onOk: fn => this.$on('$ok', fn),\n onClose: fn => this.$on('$close', fn)\n };\n\n }\n } catch (e) {\n console.log(e);\n }\n },\n makeFooter() {\n const {okBtnText, closeBtnText, closeBtn, okBtn, footer} = this.$props;\n\n const node = [];\n if (!footer) return node;\n\n if (closeBtn)\n node.push(<AButton\n on-click={() => (this.onCancel() !== false && this.closeModal(true))}>{closeBtnText}</AButton>);\n if (okBtn)\n node.push(<AButton type=\"primary\"\n on-click={() => (this.onOk() !== false && this.closeModal())}>{okBtnText}</AButton>);\n return node;\n }\n },\n render() {\n const type = this.type;\n let Node;\n if (type === 'input')\n Node = this.makeInput();\n else if (type === 'image')\n Node = this.makeImages();\n else\n Node = this.makeFiles();\n\n const {width = '30%', height, src, title, modalTitle} = this.$props;\n this.$nextTick(() => {\n if (this.$refs.frame) {\n this.frameLoad(this.$refs.frame.contentWindow || {});\n }\n });\n return <div class=\"_fc-frame\">{Node}\n <aModal mask={this.previewMask} title={modalTitle} v-model={this.previewVisible} footer={null}>\n <img alt=\"example\" style=\"width: 100%\" src={this.previewImage}/>\n </aModal>\n <aModal props={{width, title, ...this.modal}} visible={this.frameVisible}\n on-cancel={() => (this.closeModal(true))}>\n {(this.frameVisible || !this.reload) ? <iframe ref=\"frame\" src={src} frameborder=\"0\" style={{\n 'height': height,\n 'border': '0 none',\n 'width': '100%'\n }}/> : null}\n <div slot=\"footer\">\n {this.makeFooter()}\n </div>\n </aModal>\n </div>\n },\n mounted() {\n this.$on('fc.closeModal', this.closeModal);\n }\n}\n","import {hasProperty} from '@form-create/utils/lib/type';\n\nconst NAME = 'fcGroup';\n\nexport default {\n name: NAME,\n props: {\n field: String,\n rule: [Array, Object],\n rules: Array,\n expand: Number,\n options: Object,\n formCreateInject: {\n type: Object,\n required: true,\n },\n button: {\n type: Boolean,\n default: true\n },\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n value: {\n type: Array,\n default: () => []\n },\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n fontSize: {\n type: Number,\n default: 28\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onBeforeAdd: {\n type: Function,\n default: () => {\n }\n },\n },\n data() {\n return {\n len: 0,\n cacheRule: {},\n cacheValue: {},\n }\n },\n computed: {\n formRule() {\n if (this.rule) {\n return Array.isArray(this.rule) ? this.rule : [this.rule];\n }\n if (this.rules) {\n return this.rules;\n }\n return [];\n }\n },\n watch: {\n disabled(n) {\n if (this.syncDisabled) {\n const lst = this.cacheRule;\n Object.keys(lst).forEach(k => {\n lst[k].$f.disabled(n);\n })\n }\n },\n expand(n) {\n let d = n - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n },\n value(n) {\n n = n || [];\n let keys = Object.keys(this.cacheRule), total = keys.length, len = total - n.length;\n if (len < 0) {\n for (let i = len; i < 0; i++) {\n this.addRule(n.length + i);\n }\n for (let i = 0; i < total; i++) {\n this.setValue(keys[i], n[i]);\n }\n } else {\n if (len > 0) {\n for (let i = 0; i < len; i++) {\n this.removeRule(keys[total - i - 1]);\n }\n this.subForm();\n }\n n.forEach((val, i) => {\n this.setValue(keys[i], n[i]);\n });\n }\n }\n },\n methods: {\n _value(v) {\n return (v && hasProperty(v, this.field)) ? v[this.field] : v;\n },\n cache(k, val) {\n this.cacheValue[k] = JSON.stringify(val);\n },\n input(value) {\n this.$emit('input', value);\n this.$emit('change', value);\n },\n formData(key, formData) {\n const cacheRule = this.cacheRule;\n const keys = Object.keys(cacheRule);\n if (keys.filter(k => cacheRule[k].$f).length !== keys.length) {\n return;\n }\n const value = keys.map(k => {\n const data = key === k ? formData : {...this.cacheRule[k].$f.form};\n const value = this.field ? data[this.field] || null : data;\n this.cache(k, value);\n return value;\n });\n this.input(value);\n },\n setValue(key, value) {\n const field = this.field, $f = this.cacheRule[key].$f;\n if (field) {\n value = {[field]: this._value(value)};\n }\n if (this.cacheValue[key] === JSON.stringify(field ? value[field] : value)) {\n return;\n }\n this.cache(key, value);\n $f.coverValue(value || {});\n },\n addRule(i, emit) {\n const rule = this.formCreateInject.form.copyRules(this.formRule);\n const options = this.options ? {...this.options} : {\n submitBtn: false,\n resetBtn: false,\n };\n options.formData = this.field ? ({[this.field]: this._value(this.value[i])}) : (this.value[i] || {});\n this.$set(this.cacheRule, ++this.len, {rule, options});\n if (emit) {\n this.$nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));\n }\n },\n add$f(i, key, $f) {\n this.cacheRule[key].$f = $f;\n this.subForm();\n this.$nextTick(() => {\n if (this.syncDisabled) {\n $f.disabled(this.disabled);\n }\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n subForm() {\n this.formCreateInject.subForm(Object.keys(this.cacheRule).map(k => this.cacheRule[k].$f));\n },\n removeRule(key, emit) {\n const index = Object.keys(this.cacheRule).indexOf(key);\n this.$delete(this.cacheRule, key);\n this.$delete(this.cacheValue, key);\n if (emit) {\n this.$nextTick(() => this.$emit('remove', index));\n }\n },\n add(i) {\n if (this.disabled || false === this.onBeforeAdd(this.value)) {\n return;\n }\n this.addRule(i, true);\n },\n del(index, key) {\n if (this.disabled || false === this.onBeforeRemove(this.value)) {\n return;\n }\n this.removeRule(key, true);\n this.subForm();\n this.value.splice(index, 1);\n this.input(this.value);\n },\n addIcon(key) {\n return <AIcon key={`a${key}`} type=\"plus-circle\"\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}\n on-click={this.add}/>;\n },\n delIcon(index, key) {\n return <AIcon key={`d${key}`} type=\"minus-circle\"\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer;color:#606266'};`}\n on-click={() => this.del(index, key)}/>;\n },\n makeIcon(total, index, key) {\n if (this.$scopedSlots.button) {\n return this.$scopedSlots.button({\n total,\n index,\n vm: this,\n key,\n del: () => this.del(index, key),\n add: this.add\n });\n }\n if (index === 0) {\n return [(this.max !== 0 && total >= this.max) ? null : this.addIcon(key), (this.min === 0 || total > this.min) ? this.delIcon(index, key) : null];\n }\n if (index >= this.min) {\n return this.delIcon(index, key);\n }\n },\n emitEvent(name, args, index, key) {\n this.$emit(name, ...args, this.cacheRule[key].$f, index);\n },\n expandRule(n) {\n for (let i = 0; i < n; i++) {\n this.value.push(this.field ? null : {});\n }\n }\n },\n created() {\n const d = (this.expand || 0) - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n for (let i = 0; i < this.value.length; i++) {\n this.addRule(i);\n }\n },\n render() {\n const keys = Object.keys(this.cacheRule);\n const button = this.button;\n return keys.length === 0 ?\n (this.$scopedSlots.default ? (this.$scopedSlots.default({\n vm: this,\n add: this.add\n })) : <AIcon key={'a_def'} type=\"plus-circle\"\n style={`font-size:${this.fontSize}px;vertical-align:middle;color:${this.disabled ? '#c9cdd4;cursor: not-allowed' : '#606266;cursor:pointer'};`}\n on-click={this.add}/>) :\n <div key={'con'}>{keys.map((key, index) => {\n const {rule, options} = this.cacheRule[key];\n return <ARow align=\"middle\" type=\"flex\" key={key}\n style=\"border-bottom:1px dashed #d9d9d9;margin-bottom:10px;\">\n <ACol span={button ? 20 : 24}><FormCreate\n key={key}\n on={{\n 'update:value': (formData) => this.formData(key, formData),\n 'emit-event': (name, ...args) => this.emitEvent(name, args, index, key),\n input: ($f) => this.add$f(index, key, $f)\n }}\n rule={rule}\n option={options} extendOption={true}/></ACol>\n {button ? <ACol span={2} pull={1} push={1}>{this.makeIcon(keys.length, index, key)}</ACol> : null}\n </ARow>\n })}</div>\n },\n beforeMount() {\n this.$options.components.FormCreate = this.formCreateInject.form.$form();\n }\n}\n","const NAME = 'fcSubForm';\n\nexport default {\n name: NAME,\n props: {\n rule: Array,\n options: Object,\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {\n type: Object,\n default: () => ({})\n },\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n },\n data() {\n return {\n cacheRule: {},\n cacheValue: {},\n }\n },\n watch: {\n disabled(n) {\n this.syncDisabled && this.cacheRule.$f.disabled(n);\n },\n value(n) {\n this.setValue(n);\n }\n },\n methods: {\n formData(value) {\n this.cacheValue = JSON.stringify(value);\n this.$emit('input', value);\n this.$emit('change', value);\n },\n setValue(value) {\n const str = JSON.stringify(value);\n if (this.cacheValue === str) {\n return;\n }\n this.cacheValue = str;\n this.cacheRule.$f.coverValue(value || {});\n },\n addRule() {\n const options = this.options ? this.options : {\n submitBtn: false,\n resetBtn: false,\n };\n options.formData = {...(this.value || {})};\n this.cacheRule = {rule: this.rule, options};\n },\n add$f($f) {\n this.cacheRule.$f = $f;\n this.subForm();\n this.$nextTick(() => {\n this.syncDisabled && $f.disabled(this.disabled);\n this.$emit('itemMounted', $f);\n });\n },\n subForm() {\n this.formCreateInject.subForm(this.cacheRule.$f);\n },\n emitEvent(name, ...args) {\n this.$emit(name, ...args);\n }\n },\n created() {\n this.addRule();\n },\n render() {\n const {rule, options} = this.cacheRule;\n return <FormCreate\n on={{\n 'update:value': this.formData,\n 'emit-event': this.emitEvent,\n input: this.add$f\n }}\n rule={rule}\n option={options} extendOption={true}/>\n },\n beforeMount() {\n this.$options.components.FormCreate = this.formCreateInject.form.$form();\n }\n}\n","import upload from '@form-create/component-antdv-upload/src/index'\nimport frame from '@form-create/component-antdv-frame/src/index'\nimport group from '@form-create/component-antdv-group/src/index'\nimport subForm from '@form-create/component-subform/src/index'\n\nexport default [\n upload, frame, group, subForm\n]\n","import {hasProperty} from '@form-create/utils/lib/type';\n\nexport default {\n name: 'checkbox',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!hasProperty(props, 'options'))\n props.options = ctx.prop.options || [];\n }\n\n}\n","import checkbox from './checkbox';\n\nexport default {\n ...checkbox, name: 'radio'\n};\n","import checkbox from './checkbox';\n\nexport default {\n ...checkbox, name: 'select'\n};\n","import {$set} from './modify';\n\nconst _extends = Object.assign || function (a) {\n for (let b, c = 1; c < arguments.length; c++) {\n for (let d in b = arguments[c], b) {\n Object.prototype.hasOwnProperty.call(b, d) && ($set(a, d, b[d]));\n }\n }\n\n return a;\n}\n\nexport default function extend() {\n return _extends.apply(this, arguments);\n}\n\nexport function copy(obj) {\n if (typeof obj !== 'object' || obj === null) return obj;\n return obj instanceof Array ? [...obj] : {...obj};\n}\n","import extend from '@form-create/utils/lib/extend';\n\nconst NAME = 'FormCreate';\n\nexport default function $FormCreate(FormCreate) {\n return {\n name: NAME,\n componentName: NAME,\n model: {\n prop: 'api'\n },\n provide() {\n return {\n $pfc: this,\n }\n },\n inject: {$pfc: {default: null}},\n props: {\n rule: {\n type: Array,\n required: true\n },\n option: {\n type: Object,\n default: () => {\n return {};\n }\n },\n extendOption: Boolean,\n value: Object,\n api: Object,\n },\n data() {\n return {\n formData: undefined,\n destroyed: false,\n validate: {},\n $f: undefined,\n isShow: true,\n unique: 1,\n renderRule: [...this.rule || []],\n ctxInject: {},\n updateValue: ''\n };\n },\n render() {\n return this.formCreate.render();\n },\n methods: {\n _refresh() {\n ++this.unique;\n },\n _renderRule() {\n this.renderRule = [...this.rule || []];\n },\n _updateValue(value) {\n if (this.destroyed) return;\n this.updateValue = JSON.stringify(value);\n this.$emit('update:value', value);\n }\n },\n watch: {\n value: {\n handler(n) {\n if (JSON.stringify(n) === this.updateValue) return;\n this.$f.setValue(n);\n },\n deep: true\n },\n option: {\n handler(n) {\n this.formCreate.initOptions(n);\n this.$f.refresh();\n },\n deep: true\n },\n rule(n) {\n if (n.length === this.renderRule.length && n.every(v => this.renderRule.indexOf(v) > -1)) return;\n this.formCreate.$handle.reloadRule(n);\n this._renderRule();\n }\n },\n beforeCreate() {\n const {rule, option} = this.$options.propsData;\n this.formCreate = new FormCreate(this, rule, option);\n Object.keys(this.formCreate.prop).forEach(k => {\n extend(this.$options[k], this.formCreate.prop[k]);\n })\n },\n }\n}\n","export const normalMerge = ['attrs', 'props', 'domProps', 'scopedSlots'];\nexport const toArrayMerge = ['class', 'style', 'directives'];\nexport const functionalMerge = ['on', 'nativeOn'];\n\nconst mergeProps = (objects, initial = {}, opt = {}) => {\n const _normalMerge = [...normalMerge, ...opt['normal'] || []];\n const _toArrayMerge = [...toArrayMerge, ...opt['array'] || []];\n const _functionalMerge = [...functionalMerge, ...opt['functional'] || []];\n const propsMerge = opt['props'] || [];\n\n return objects.reduce((a, b) => {\n for (const key in b) {\n if (a[key]) {\n if (propsMerge.indexOf(key) > -1) {\n a[key] = mergeProps([b[key]], a[key]);\n } else if (_normalMerge.indexOf(key) > -1) {\n a[key] = {...a[key], ...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n const arrA = a[key] instanceof Array ? a[key] : [a[key]];\n const arrB = b[key] instanceof Array ? b[key] : [b[key]];\n a[key] = [...arrA, ...arrB]\n } else if (_functionalMerge.indexOf(key) > -1) {\n for (const event in b[key]) {\n if (a[key][event]) {\n const arrA = a[key][event] instanceof Array ? a[key][event] : [a[key][event]];\n const arrB = b[key][event] instanceof Array ? b[key][event] : [b[key][event]];\n a[key][event] = [...arrA, ...arrB]\n } else {\n a[key][event] = b[key][event]\n }\n }\n } else if (key === 'hook') {\n for (let hook in b[key]) {\n if (a[key][hook]) {\n a[key][hook] = mergeFn(a[key][hook], b[key][hook])\n } else {\n a[key][hook] = b[key][hook]\n }\n }\n } else {\n a[key] = b[key]\n }\n } else {\n if (_normalMerge.indexOf(key) > -1 || _functionalMerge.indexOf(key) > -1 || propsMerge.indexOf(key) > -1) {\n a[key] = {...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n a[key] = b[key] instanceof Array ? [...b[key]] : (typeof b[key] === 'object' ? {...b[key]} : b[key]);\n } else\n a[key] = b[key];\n }\n }\n return a\n }, initial);\n}\n\nconst mergeFn = (fn1, fn2) =>\n function () {\n fn1 && fn1.apply(this, arguments);\n fn2 && fn2.apply(this, arguments);\n };\n\nexport default mergeProps;\n","import {functionalMerge, normalMerge, toArrayMerge} from '@form-create/utils/lib/mergeprops';\n\n\nexport const keyAttrs = ['type', 'slot', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'nativeEmit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key'];\n\nexport const arrayAttrs = ['validate', 'children', 'control'];\n\nexport const normalAttrs = ['effect', 'deep'];\n\nexport function attrs() {\n return [...keyAttrs, ...normalMerge, ...toArrayMerge, ...functionalMerge, ...arrayAttrs, ...normalAttrs];\n}\n","export function format(type, msg, rule) {\n return (`[form-create ${type}]: ${msg}` + (rule ? ('\\n\\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule)) : ''))\n}\n\nexport function tip(msg, rule) {\n console.warn(format('tip', msg, rule));\n}\n\nexport function err(msg, rule) {\n console.error(format('err', msg, rule));\n}\n\nexport function logError(e) {\n err(e.toString());\n console.error(e);\n}\n","import deepExtend from './deepextend';\nimport {err} from './console';\nimport is, {hasProperty} from './type';\n\nconst PREFIX = '[[FORM-CREATE-PREFIX-';\nconst SUFFIX = '-FORM-CREATE-SUFFIX]]';\n\nconst $T = '$FN:';\nconst $TX = '$FNX:';\nconst FUNCTION = 'function';\n\nexport function toJson(obj, space) {\n return JSON.stringify(deepExtend([], obj, true), function (key, val) {\n if (val && val._isVue === true)\n return undefined;\n\n if (typeof val !== FUNCTION) {\n return val;\n }\n if (hasProperty(val, '__json')) {\n return val.__json;\n }\n if (val.__origin)\n val = val.__origin;\n\n if (val.__emit)\n return undefined;\n return PREFIX + val + SUFFIX;\n }, space);\n}\n\nfunction makeFn(fn) {\n return eval('(' + FUNCTION + '(){return ' + fn + ' })()')\n}\n\nexport function parseFn(fn, mode) {\n if (fn && is.String(fn) && fn.length > 4) {\n let v = fn.trim();\n let flag = false;\n try {\n if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {\n v = v.replace(SUFFIX, '').replace(PREFIX, '');\n flag = true;\n } else if (v.indexOf($T) === 0) {\n v = v.replace($T, '');\n flag = true;\n } else if (v.indexOf($TX) === 0) {\n v = makeFn('function($inject){' + v.replace($TX, '') + '}');\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (!mode && v.indexOf(FUNCTION) === 0 && v !== FUNCTION) {\n flag = true;\n }\n if (!flag) return fn;\n const val = makeFn((v.indexOf(FUNCTION) === -1 && v.indexOf('(') !== 0) ? (FUNCTION + ' ' + v) : v);\n val.__json = fn;\n return val;\n } catch (e) {\n err(`解析失败:${v}\\n\\nerr: ${e}`);\n return undefined;\n }\n }\n return fn;\n}\n\nexport function parseJson(json, mode) {\n return JSON.parse(json, function (k, v) {\n if (is.Undef(v) || !v.indexOf) return v;\n return parseFn(v, mode);\n });\n}\n","import deepExtend from '@form-create/utils/lib/deepextend';\nimport is from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {arrayAttrs, normalAttrs} from './attrs';\nimport {logError} from '@form-create/utils/lib/console';\nexport {parseJson,parseFn,toJson} from '@form-create/utils/lib/json';\n\nexport function enumerable(value, writable) {\n return {\n value,\n enumerable: false,\n configurable: false,\n writable: !!writable\n }\n}\n\n//todo 优化位置\nexport function copyRule(rule, mode) {\n return copyRules([rule], mode || false)[0];\n}\n\nexport function copyRules(rules, mode) {\n return deepExtend([], [...rules], mode || false);\n}\n\nexport function mergeRule(rule, merge) {\n mergeProps(Array.isArray(merge) ? merge : [merge], rule, {array: arrayAttrs, normal: normalAttrs});\n return rule;\n}\n\nexport function getRule(rule) {\n return is.Function(rule.getRule) ? rule.getRule() : rule;\n}\n\nexport function mergeGlobal(target, merge) {\n if (!target) return merge;\n Object.keys(merge || {}).forEach((k) => {\n if (merge[k]) {\n target[k] = mergeRule(target[k] || {}, merge[k])\n }\n });\n return target;\n}\n\nexport function funcProxy(that, proxy) {\n Object.defineProperties(that, Object.keys(proxy).reduce((initial, k) => {\n initial[k] = {\n get() {\n return proxy[k]();\n }\n }\n return initial;\n }, {}))\n}\n\nexport function byCtx(rule) {\n return rule.__fc__ || (rule.__origin__ ? rule.__origin__.__fc__ : null)\n}\n\nexport function invoke(fn, def) {\n try {\n def = fn()\n } catch (e) {\n logError(e);\n }\n return def;\n}\n","export default function toLine(name) {\n let line = name.replace(/([A-Z])/g, '-$1').toLocaleLowerCase();\n if (line.indexOf('-') === 0)\n line = line.substr(1);\n return line;\n}\n","let id = 0;\n\nexport default function uniqueId() {\n return Math.random().toString(36).substr(3, 3) + Number(`${Date.now()}${++id}`).toString(36);\n}\n","export default function deepSet(data, idx, val) {\n let _data = data, to;\n (idx || '').split('.').forEach(v => {\n if (to) {\n if (!_data[to] || typeof _data[to] != 'object') {\n _data[to] = {}\n }\n _data = _data[to];\n }\n to = v;\n })\n _data[to] = val;\n return _data;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {attrs} from '../frame/attrs';\nimport {copyRule, mergeRule} from '../frame/util';\nimport {$set} from '@form-create/utils/lib';\n\nexport function baseRule() {\n return {\n props: {},\n on: {},\n options: [],\n children: [],\n hidden: false,\n display: true,\n value: undefined,\n };\n}\n\nexport function creatorFactory(name, init) {\n return (title, field, value, props = {}) => {\n const maker = new Creator(name, title, field, value, props);\n if (init) {\n if (is.Function(init)) init(maker);\n else maker.props(init);\n }\n return maker;\n };\n}\n\nexport default function Creator(type, title, field, value, props) {\n this._data = extend(baseRule(), {type, title, field, value, props: props || {}});\n this.event = this.on;\n}\n\nextend(Creator.prototype, {\n getRule() {\n return this._data;\n },\n setProp(key, value) {\n $set(this._data, key, value);\n return this;\n },\n _clone() {\n const clone = new this.constructor();\n clone._data = copyRule(this._data);\n return clone;\n },\n})\n\nexport function appendProto(attrs) {\n attrs.forEach(name => {\n Creator.prototype[name] = function (key) {\n mergeRule(this._data, {[name]: arguments.length < 2 ? key : {[key]: arguments[1]}})\n return this;\n };\n });\n}\n\nappendProto(attrs());\n","import {creatorFactory} from './creator';\n\nconst commonMaker = creatorFactory('');\n\nexport function create(type, field, title) {\n let make = commonMaker('', field);\n make._data.type = type;\n make._data.title = title;\n return make;\n}\n\nexport function createTmp(template, vm, field, title) {\n let make = commonMaker('', field);\n make._data.type = 'template';\n make._data.template = template;\n make._data.title = title;\n make._data.vm = vm;\n return make;\n}\n\nexport default function makerFactory() {\n return {\n create,\n createTmp,\n template: createTmp,\n factory: creatorFactory\n };\n}\n","import {byCtx, invoke, mergeRule, toJson} from './util';\nimport {$set} from '@form-create/utils/lib/modify';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {format} from '@form-create/utils/lib/console';\n\n\nfunction copy(value) {\n return deepCopy(value);\n}\n\nexport default function Api(h) {\n\n function tidyFields(fields) {\n if (is.Undef(fields))\n fields = h.fields();\n else if (!Array.isArray(fields))\n fields = [fields];\n return fields;\n }\n\n function props(fields, key, val) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n $set(ctx.rule, key, val);\n h.$render.clearCache(ctx);\n });\n })\n }\n\n function allSubForm() {\n const subs = h.subForm;\n return Object.keys(subs).reduce((initial, k) => {\n const sub = subs[k];\n if (!sub) return initial;\n if (Array.isArray(sub))\n initial.push(...sub);\n else\n initial.push(sub);\n return initial;\n }, []);\n }\n\n const api = {\n helper: {\n tidyFields, props\n },\n get config() {\n return h.options\n },\n get options() {\n return h.options\n },\n get form() {\n return h.form\n },\n get rule() {\n return h.rules\n },\n get parent() {\n return h.vm.$pfc && h.vm.$pfc.$f\n },\n get children() {\n return allSubForm();\n },\n formData(fields) {\n return tidyFields(fields).reduce((initial, id) => {\n const ctx = h.getFieldCtx(id);\n if (!ctx) return initial;\n initial[ctx.field] = copy(ctx.rule.value);\n return initial;\n }, copy(h.appendData));\n },\n getValue(field) {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n return copy(ctx.rule.value);\n },\n coverValue(formData) {\n h.deferSyncValue(() => {\n api.fields().forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (!ctxs) return h.appendData[key] = formData[key];\n const flag = hasProperty(formData, key);\n ctxs.forEach(ctx => {\n ctx.rule.value = flag ? formData[key] : undefined;\n })\n });\n })\n },\n setValue(field) {\n let formData = field;\n if (arguments.length >= 2)\n formData = {[field]: arguments[1]};\n h.deferSyncValue(() => {\n Object.keys(formData).forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (!ctxs) return h.appendData[key] = formData[key];\n ctxs.forEach(ctx => {\n ctx.rule.value = formData[key];\n });\n });\n })\n },\n removeField(field) {\n const ctx = h.getCtx(field);\n h.deferSyncValue(() => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rm();\n });\n }, true);\n return ctx ? ctx.origin : undefined;\n },\n removeRule(rule) {\n const ctx = rule && byCtx(rule);\n if (!ctx) return;\n ctx.rm();\n return ctx.origin;\n },\n destroy: () => {\n h.vm.$el.parentNode && h.vm.$el.parentNode.removeChild(h.vm.$el);\n h.vm.$destroy();\n },\n fields: () => h.fields(),\n append: (rule, after, child) => {\n let index = h.sort.length - 1, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n index = ctx.rule.children.length - 1;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index + 1, 0, rule);\n },\n prepend: (rule, after, child) => {\n let index = 0, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index, 0, rule);\n },\n hidden(state, fields) {\n props(fields, 'hidden', !!state);\n h.refresh();\n },\n hiddenStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.hidden;\n },\n display(state, fields) {\n props(fields, 'display', !!state);\n h.refresh();\n },\n displayStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.display;\n },\n disabled(disabled, fields) {\n tidyFields(fields).forEach((field) => {\n h.getCtxs(field).forEach(ctx => {\n $set(ctx.rule.props, 'disabled', !!disabled);\n });\n });\n h.refresh();\n },\n model(origin) {\n return h.fields().reduce((initial, key) => {\n const ctx = h.fieldCtx[key][0];\n initial[key] = origin ? ctx.origin : ctx.rule;\n return initial;\n }, {});\n },\n component(origin) {\n return Object.keys(h.nameCtx).reduce((initial, key) => {\n const ctx = h.nameCtx[key].map(ctx => origin ? ctx.origin : ctx.rule);\n initial[key] = ctx.length === 1 ? ctx[0] : ctx;\n return initial;\n }, {});\n },\n bind() {\n return api.form;\n },\n reload: (rules) => {\n h.reloadRule(rules)\n },\n updateOptions(options) {\n h.fc.updateOptions(options);\n api.refresh();\n },\n onSubmit(fn) {\n api.updateOptions({onSubmit: fn});\n },\n sync: (field) => {\n if (Array.isArray(field)) {\n field.forEach(v => api.sync(v));\n return;\n }\n let ctxs = is.Object(field) ? byCtx(field) : h.getCtxs(field);\n if (!ctxs) {\n return;\n }\n ctxs = Array.isArray(ctxs) ? ctxs : [ctxs];\n ctxs.forEach(ctx => {\n if (!ctx.deleted) {\n const subForm = h.subForm[ctx.id];\n if (subForm) {\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.refresh();\n })\n } else if (subForm) {\n subForm.refresh();\n }\n }\n //ctx.updateKey(true);\n h.$render.clearCache(ctx);\n }\n });\n h.refresh();\n },\n refresh: () => {\n allSubForm().forEach(sub => {\n sub.refresh();\n });\n h.$render.clearCacheAll();\n h.refresh();\n },\n refreshOptions() {\n h.$manager.updateOptions(h.options);\n api.refresh();\n },\n hideForm: (hide) => {\n $set(h.vm, 'isShow', !hide);\n },\n changeStatus: () => {\n return h.changeStatus;\n },\n clearChangeStatus: () => {\n h.changeStatus = false;\n },\n updateRule(id, rule) {\n h.getCtxs(id).forEach(ctx => {\n extend(ctx.rule, rule);\n });\n },\n updateRules(rules) {\n Object.keys(rules).forEach(id => {\n api.updateRule(id, rules[id]);\n })\n },\n mergeRule: (id, rule) => {\n h.getCtxs(id).forEach(ctx => {\n mergeRule(ctx.rule, rule);\n });\n },\n mergeRules(rules) {\n Object.keys(rules).forEach(id => {\n api.mergeRule(id, rules[id]);\n })\n },\n getRule: (id, origin) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return origin ? ctx.origin : ctx.rule;\n }\n },\n updateValidate(id, validate, merge) {\n if (merge) {\n api.mergeRule(id, {validate})\n } else {\n props(id, 'validate', validate);\n }\n },\n updateValidates(validates, merge) {\n Object.keys(validates).forEach(id => {\n api.updateValidate(id, validates[id], merge);\n })\n },\n refreshValidate() {\n h.vm.validate = {};\n api.refresh();\n },\n resetFields(fields) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n h.$render.clearCache(ctx);\n ctx.rule.value = copy(ctx.defaultValue);\n h.refreshControl(ctx);\n });\n });\n },\n method(id, name) {\n const el = api.el(id);\n if (!el || !el[name])\n throw new Error(format('err', `${name}方法不存在`));\n return (...args) => {\n return el[name](...args);\n }\n },\n exec(id, name, ...args) {\n return invoke(() => api.method(id, name)(...args));\n },\n toJson(space) {\n return toJson(api.rule, space);\n },\n trigger(id, event, ...args) {\n const el = api.el(id);\n el && el.$emit(event, ...args);\n },\n el(id) {\n const ctx = h.getCtx(id);\n if (ctx) return ctx.el || h.vm.$refs[ctx.ref];\n },\n closeModal: (id) => {\n const el = api.el(id);\n el && el.$emit && el.$emit('close-modal');\n },\n getSubForm(field) {\n const ctx = h.getCtx(field);\n return ctx ? h.subForm[ctx.id] : undefined;\n },\n nextTick(fn) {\n h.bus.$once('next-tick', fn);\n h.refresh();\n },\n nextRefresh(fn) {\n h.nextRefresh();\n fn && invoke(fn);\n }\n };\n\n ['on', 'once', 'off', 'set'].forEach(n => {\n api[n] = function (...args) {\n h.vm[`$${n}`](...args);\n }\n });\n\n api.changeValue = api.changeField = api.setValue;\n\n return api;\n}\n","import extend from '@form-create/utils/lib/extend';\n\nexport default function useCache(Render) {\n extend(Render.prototype, {\n initCache() {\n this.clearCacheAll();\n },\n clearCache(ctx) {\n if (!this.cache[ctx.id]) {\n ctx.parent && this.clearCache(ctx.parent);\n return;\n }\n if (this.cache[ctx.id].use === true || this.cache[ctx.id].parent) {\n this.$handle.refresh();\n }\n const parent = this.cache[ctx.id].parent;\n this.cache[ctx.id] = null;\n parent && this.clearCache(parent);\n },\n clearCacheAll() {\n this.cache = {};\n },\n setCache(ctx, vnode, parent) {\n this.cache[ctx.id] = {\n vnode,\n use: false,\n parent,\n slot: ctx.rule.slot\n };\n },\n getCache(ctx) {\n const cache = this.cache[ctx.id];\n cache.use = true;\n return cache.vnode;\n }\n })\n\n}\n","export default function toCase(str) {\n const to = str.replace(/(-[a-z])/g, function (v) {\n return v.replace('-', '').toLocaleUpperCase();\n });\n\n return lower(to);\n}\n\nexport function lower(str) {\n return str.replace(str[0], str[0].toLowerCase());\n}\n","import extend from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {_vue as Vue} from '../frame';\nimport {tip} from '@form-create/utils/lib/console';\nimport {invoke, mergeRule} from '../frame/util';\nimport toCase, {lower} from '@form-create/utils/lib/tocase';\nimport {$set, deepSet, toLine} from '@form-create/utils';\n\nexport default function useRender(Render) {\n extend(Render.prototype, {\n initRender() {\n this.tempList = {};\n this.clearOrgChildren();\n },\n initOrgChildren() {\n const ctxs = this.$handle.ctxs;\n this.orgChildren = Object.keys(ctxs).reduce((initial, id) => {\n if (ctxs[id].parser.loadChildren !== false) {\n const children = ctxs[id].rule.children;\n initial[id] = is.trueArray(children) ? [...children] : [];\n }\n\n return initial;\n }, {});\n\n },\n clearOrgChildren() {\n this.orgChildren = {};\n },\n render() {\n if (!this.vm.isShow) {\n return;\n }\n this.$h = this.vm.$createElement;\n this.$manager.beforeRender();\n\n let vn;\n\n const make = () => this.renderList();\n make.renderSlot = slot => this.renderList(slot);\n make.renderName = name => this.renderId(name);\n make.renderField = field => this.renderId(field, 'field');\n\n if (this.vm.$scopedSlots.container) {\n vn = [this.vm.$scopedSlots.container(make)];\n } else {\n vn = make();\n }\n return this.$manager.render(vn);\n },\n renderList(slot) {\n return this.sort.map((id) => {\n return slot ? this.renderSlot(this.$handle.ctxs[id], slot) : this.renderCtx(this.$handle.ctxs[id]);\n }).filter((val) => val !== undefined);\n },\n makeVm(rule) {\n const vm = rule.vm;\n if (!vm)\n return new Vue;\n else if (is.Function(vm))\n return invoke(() => rule.vm(this.$handle.getInjectData(rule)));\n else if (!vm._isVue)\n return new Vue(vm);\n return vm;\n },\n mergeGlobal(ctx) {\n const g = this.$handle.options.global;\n if (!g) return;\n //todo 缓存配置,更新 option 更新\n if (!ctx.cacheConfig)\n ctx.cacheConfig = g[ctx.originType] || g[ctx.type] || g[ctx.trueType] || {};\n ctx.prop = mergeRule({}, [g['*'], ctx.cacheConfig, ctx.prop]);\n },\n setOptions(ctx) {\n if (ctx.prop.optionsTo && ctx.prop.options) {\n deepSet(ctx.prop, ctx.prop.optionsTo, ctx.prop.options);\n }\n },\n deepSet(ctx) {\n const deep = ctx.rule.deep;\n deep && Object.keys(deep).sort((a, b) => a.length < b.length ? -1 : 1).forEach(str => {\n deepSet(ctx.prop, str, deep[str]);\n });\n },\n setTempProps(vm, ctx) {\n if (!vm.$props) return;\n\n const {prop} = ctx;\n const keys = Object.keys(vm.$props);\n const inject = this.injectProp(ctx);\n const injectKeys = Object.keys(inject);\n\n keys.forEach(key => {\n if (hasProperty(prop.props, key))\n vm.$props[key] = prop.props[key];\n else if (injectKeys.indexOf(key) > -1) vm.$props[key] = inject[key];\n });\n\n const key = (vm.$options.model && vm.$options.model.prop) || 'value';\n if (keys.indexOf(key) > -1) {\n vm.$props[key] = prop.value;\n }\n },\n renderTemp(ctx) {\n if (!Vue.compile) {\n tip('当前使用的Vue构建版本不支持compile,无法使用template功能');\n return [];\n }\n const rule = ctx.prop;\n const {id, key} = ctx;\n\n if (!this.tempList[id]) {\n if (!ctx.el) {\n ctx.el = this.makeVm(rule);\n this.vm.$nextTick(() => ctx.parser.mounted(ctx));\n }\n\n let vm = ctx.el;\n if (ctx.input)\n vm.$on((vm.$options.model && vm.$options.model.event) || 'input', (value) => {\n this.onInput(ctx, value);\n });\n\n this.tempList[id] = {\n vm,\n template: Vue.compile(rule.template)\n };\n }\n\n const {vm, template} = this.tempList[id];\n\n this.setTempProps(vm, ctx);\n\n const vn = template.render.call(vm);\n\n if (is.Undef(vn.data)) vn.data = {};\n vn.key = key;\n vn.data.ref = ctx.ref;\n vn.data.key = key;\n return vn;\n },\n parseSide(side) {\n return is.Object(side) ? mergeRule({}, side) : side;\n },\n renderSides(vn, ctx, temp) {\n const prop = ctx[temp ? 'rule' : 'prop'];\n return [this.renderRule(this.parseSide(prop.prefix)), vn, this.renderRule(this.parseSide(prop.suffix))];\n },\n renderSlot(ctx, slot) {\n return ctx.rule.slot === slot ? this.renderCtx(ctx) : undefined;\n },\n renderId(name, type) {\n const ctxs = this.$handle[type === 'field' ? 'fieldCtx' : 'nameCtx'][name]\n return ctxs ? ctxs.map(ctx => this.renderCtx(ctx, ctx.parent)) : undefined;\n },\n renderCtx(ctx, parent) {\n if (ctx.type === 'hidden') return;\n const rule = ctx.rule;\n if ((!this.cache[ctx.id]) || this.cache[ctx.id].slot !== rule.slot) {\n let vn;\n let cacheFlag = true;\n const _type = ctx.trueType;\n const none = !(is.Undef(rule.display) || !!rule.display);\n if (_type === 'template' && !rule.template) {\n vn = this.renderSides(this.renderChildren(ctx), ctx, true);\n if (none) {\n this.display(vn);\n }\n vn = this.item(ctx, vn);\n } else if (_type === 'fcFragment') {\n vn = this.renderChildren(ctx);\n } else {\n ctx.initProp();\n this.mergeGlobal(ctx);\n this.$manager.tidyRule(ctx);\n this.deepSet(ctx);\n this.setOptions(ctx);\n this.ctxProp(ctx);\n let prop = ctx.prop;\n prop.props.formCreateInject = this.injectProp(ctx);\n\n if (prop.hidden) {\n this.setCache(ctx, undefined, parent);\n return;\n }\n\n if (_type === 'template' && prop.template) {\n vn = this.renderTemp(ctx);\n cacheFlag = false;\n } else {\n let children = [];\n if (ctx.parser.renderChildren) {\n children = ctx.parser.renderChildren(ctx);\n } else if (ctx.parser.loadChildren !== false) {\n children = this.renderChildren(ctx);\n }\n const slot = 'type-' + toLine(ctx.type);\n if (this.vm.$scopedSlots[slot]) {\n vn = this.vm.$scopedSlots[slot]({\n rule,\n prop,\n children,\n api: this.$handle.api,\n model: prop.model || {}\n });\n } else {\n vn = ctx.parser.render(children, ctx);\n }\n }\n vn = this.renderSides(vn, ctx);\n if ((!(!ctx.input && is.Undef(prop.native))) && prop.native !== true) {\n vn = this.$manager.makeWrap(ctx, vn);\n }\n if (none) {\n vn = this.display(vn);\n }\n vn = this.item(ctx, vn)\n }\n if (cacheFlag) {\n this.setCache(ctx, vn, parent);\n }\n return vn;\n }\n\n return this.getCache(ctx);\n },\n display(vn) {\n if (Array.isArray(vn)) {\n const data = [];\n vn.forEach(v => {\n if (Array.isArray(v)) return this.display(v);\n if (this.none(v)) data.push(v);\n })\n return data;\n } else {\n return this.none(vn);\n }\n },\n none(vn) {\n if (vn && vn.data) {\n if (Array.isArray(vn.data.style)) {\n vn.data.style.push({display: 'none'});\n } else {\n vn.data.style = [vn.data.style, {display: 'none'}];\n }\n return vn;\n }\n },\n item(ctx, vn) {\n return this.$h('fcFragment', {\n slot: ctx.rule.slot,\n key: ctx.key,\n }, [vn]);\n },\n injectProp(ctx) {\n if (!this.vm.ctxInject[ctx.id]) {\n $set(this.vm.ctxInject, ctx.id, {});\n }\n const inject = this.vm.ctxInject[ctx.id];\n extend(inject, {\n api: this.$handle.api,\n form: this.fc.create,\n subForm: subForm => {\n this.$handle.addSubForm(ctx, subForm);\n },\n field: ctx.field,\n options: ctx.prop.options,\n children: ctx.rule.children,\n rule: ctx.rule,\n prop: (function () {\n const temp = {...ctx.prop};\n temp.on = temp.on ? {...temp.on} : {};\n delete temp.model;\n return temp;\n }()),\n });\n return inject;\n },\n ctxProp(ctx, custom) {\n const {ref, key, rule} = ctx;\n this.$manager.mergeProp(ctx, custom);\n ctx.parser.mergeProp(ctx, custom);\n const props = [\n {\n ref: ref,\n key: rule.key || `${key}fc`,\n slot: undefined,\n on: {\n 'hook:mounted': () => {\n this.onMounted(ctx);\n }\n },\n }\n ]\n\n if (!custom && ctx.input) {\n props.push({\n model: {\n value: this.$handle.getFormData(ctx),\n callback: (value) => {\n this.onInput(ctx, value);\n },\n expression: `formData.${ctx.id}`\n },\n })\n }\n mergeProps(props, ctx.prop);\n return ctx.prop;\n },\n onMounted(ctx) {\n ctx.el = this.vm.$refs[ctx.ref];\n if (ctx.el) {\n (ctx.el.$el || ctx.el).__rule__ = ctx.rule;\n }\n ctx.parser.mounted(ctx);\n this.$handle.effect(ctx, 'mounted');\n },\n onInput(ctx, value) {\n this.$handle.onInput(ctx, value);\n },\n renderChildren(ctx) {\n const {children} = ctx.rule, orgChildren = this.orgChildren[ctx.id];\n\n const isRm = child => {\n return !is.String(child) && child.__fc__ && !this.$handle.ctxs[child.__fc__.id];\n }\n\n if (!is.trueArray(children) && orgChildren) {\n this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n this.orgChildren[ctx.id] = [];\n return [];\n }\n\n orgChildren && this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (children.indexOf(child) === -1 && isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n\n return children.map(child => {\n if (!child) return;\n if (is.String(child)) return child;\n if (child.__fc__) {\n return this.renderCtx(child.__fc__, ctx);\n }\n if (child.type) {\n this.vm.$nextTick(() => {\n this.$handle.loadChildren(children, ctx);\n this.$handle.refresh();\n });\n }\n });\n\n },\n defaultRender(ctx, children) {\n const prop = ctx.prop;\n if (this.vNode[ctx.type])\n return this.vNode[ctx.type](prop, children);\n if (this.vNode[ctx.originType])\n return this.vNode[ctx.originType](prop, children);\n return this.vNode.make(lower(ctx.originType), prop, children);\n },\n renderRule(rule, children, origin) {\n if (!rule) return undefined;\n if (is.String(rule)) return rule;\n\n let type;\n if (origin) {\n type = rule.type;\n } else {\n type = rule.is;\n if (rule.type) {\n type = toCase(rule.type);\n const alias = this.vNode.aliasMap[type];\n if (alias) type = toCase(alias);\n }\n }\n\n if (!type) return undefined;\n let data = [[children]];\n if (is.trueArray(rule.children)) {\n data.push(rule.children.map(v => this.renderRule(v)));\n }\n return this.$h(type, {...rule}, data);\n }\n })\n}\n","import useCache from './cache';\nimport useRender from './render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\n\nexport default function Render(handle) {\n extend(this, {\n $handle: handle,\n fc: handle.fc,\n vm: handle.vm,\n $manager: handle.$manager,\n vNode: new handle.fc.CreateNode(handle.vm),\n });\n\n funcProxy(this, {\n options() {\n return handle.options;\n },\n sort() {\n return handle.sort;\n }\n })\n\n this.initCache();\n this.initRender();\n}\n\nuseCache(Render);\nuseRender(Render)\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport toLine from '@form-create/utils/lib/toline';\nimport {parseFn} from '../frame/util';\n\n\nexport default function useInject(Handler) {\n extend(Handler.prototype, {\n parseInjectEvent(rule, on) {\n const inject = rule.inject || this.options.injectEvent;\n return this.parseEventLst(rule, on, inject);\n },\n parseEventLst(rule, data, inject, deep) {\n Object.keys(data).forEach(k => {\n const fn = this.parseEvent(rule, data[k], inject, deep);\n if (fn) {\n data[k] = fn;\n }\n });\n return data;\n },\n parseEvent(rule, fn, inject, deep) {\n if (is.Function(fn) && ((inject !== false && !is.Undef(inject)) || fn.__inject)) {\n return this.inject(rule, fn, inject)\n } else if (!deep && Array.isArray(fn) && fn[0] && (is.String(fn[0]) || is.Function(fn[0]))) {\n return this.parseEventLst(rule, fn, inject, true);\n } else if (is.String(fn)) {\n const val = parseFn(fn);\n if (val && fn !== val) {\n return val.__inject ? this.parseEvent(rule, val, inject, true) : val;\n }\n }\n },\n parseEmit(ctx, on) {\n let event = {}, rule = ctx.rule, {emitPrefix, field, name, inject} = rule;\n let emit = rule[on ? 'emit' : 'nativeEmit'] || [];\n if (is.trueArray(emit)) {\n let emitKey = emitPrefix || field || name;\n if (emitKey) {\n if (!on) emitKey = `native-${emitKey}`;\n emit.forEach(eventName => {\n if (!eventName) return;\n let eventInject;\n if (is.Object(eventName)) {\n eventInject = eventName.inject;\n eventName = eventName.name;\n }\n const fieldKey = toLine(`${emitKey}-${eventName}`);\n const fn = (...arg) => {\n this.vm.$emit(fieldKey, ...arg);\n this.vm.$emit('emit-event', fieldKey, ...arg);\n };\n fn.__emit = true;\n\n if (!eventInject && inject === false) {\n event[eventName] = fn;\n } else {\n let _inject = eventInject || inject || this.options.injectEvent;\n event[eventName] = is.Undef(_inject) ? fn : this.inject(rule, fn, _inject);\n }\n });\n }\n\n }\n ctx.computed[on ? 'on' : 'nativeOn'] = event;\n return event;\n },\n getInjectData(self, inject) {\n const {option, rule} = this.vm.$options.propsData;\n return {\n api: this.api,\n $f: this.api,\n rule,\n self: self.__origin__,\n option,\n inject\n };\n },\n inject(self, _fn, inject) {\n if (_fn.__origin) {\n if (this.watching && !this.loading)\n return _fn;\n _fn = _fn.__origin;\n }\n\n const h = this;\n\n const fn = function (...args) {\n const data = h.getInjectData(self, inject);\n data.args = [...args];\n args.unshift(data);\n return _fn.apply(this, args);\n };\n fn.__origin = _fn;\n fn.__json = _fn.__json;\n return fn;\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\n\nconst EVENT = ['hook:updated', 'hook:mounted'];\n\nexport default function usePage(Handler) {\n extend(Handler.prototype, {\n usePage() {\n const page = this.options.page;\n if (!page) return;\n let first = 25;\n let limit = getLimit(this.rules);\n if (is.Object(page)) {\n if (page.first) first = parseInt(page.first, 10) || first;\n if (page.limit) limit = parseInt(page.limit, 10) || limit;\n }\n extend(this, {\n first,\n limit,\n pageEnd: this.rules.length <= first,\n })\n\n this.bus.$on('page-end', () => this.vm.$emit('page-end', this.api));\n this.pageLoad();\n },\n pageLoad() {\n const pageFn = () => {\n if (this.pageEnd) {\n this.vm.$off(EVENT, pageFn);\n this.bus.$emit('page-end');\n } else {\n this.first += this.limit;\n this.pageEnd = this.rules.length <= this.first;\n this.loadRule();\n this.refresh();\n }\n }\n this.vm.$on(EVENT, pageFn);\n },\n })\n}\n\n\nfunction getLimit(rules) {\n return rules.length < 31 ? 31 : Math.ceil(rules.length / 3);\n}\n","import extend from '@form-create/utils/lib/extend';\n\n\nexport default function useRender(Handler) {\n extend(Handler.prototype, {\n clearNextTick() {\n this.nextTick && clearTimeout(this.nextTick);\n this.nextTick = null;\n },\n bindNextTick(fn) {\n this.clearNextTick();\n this.nextTick = setTimeout(() => {\n fn()\n this.nextTick = null;\n }, 10);\n },\n render() {\n // console.warn('%c render', 'color:green');\n ++this.loadedId;\n\n if (this.vm.unique > 0)\n return this.$render.render();\n else {\n this.vm.unique = 1;\n return [];\n }\n },\n });\n}\n","import unique from '@form-create/utils/lib/unique';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {enumerable} from '../frame/util';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\n\nfunction bind(ctx) {\n Object.defineProperties(ctx.origin, {\n __fc__: enumerable(ctx, true)\n });\n}\n\nexport default function RuleContext(handle, rule) {\n const id = unique();\n\n extend(this, {\n id,\n ref: id,\n wrapRef: id + 'fi',\n rule,\n origin: rule.__origin__ || rule,\n name: rule.name,\n\n watch: [],\n linkOn: [],\n root: [],\n ctrlRule: [],\n parent: null,\n cacheConfig: null,\n prop: {...rule},\n computed: {},\n payload: {},\n input: !!rule.field,\n el: undefined,\n defaultValue: rule.field ? deepCopy(rule.value) : undefined,\n field: rule.field || undefined,\n })\n\n this.updateType();\n this.updateKey();\n bind(this);\n this.update(handle, true);\n}\n\nextend(RuleContext.prototype, {\n effectData(name) {\n if (!this.payload[name]) {\n this.payload[name] = {};\n }\n return this.payload[name];\n },\n clearEffectData(name) {\n delete this.payload[name]\n },\n updateKey(flag) {\n this.key = unique();\n flag && this.parent && this.parent.updateKey(flag);\n },\n updateType() {\n this.originType = this.rule.type;\n this.type = toCase(this.rule.type);\n },\n setParser(parser) {\n this.parser = parser;\n parser.init(this);\n },\n initProp() {\n const rule = {...this.rule};\n delete rule.children;\n this.prop = mergeProps([rule, ...Object.keys(this.payload).map(k => this.payload[k]), this.computed]);\n },\n check(handle) {\n return this.vm === handle.vm\n },\n unwatch() {\n this.watch.forEach(un => un());\n this.watch = [];\n },\n unlink() {\n this.linkOn.forEach(un => un());\n this.linkOn = [];\n },\n link() {\n this.unlink();\n this.$handle.appendLink(this);\n },\n watchTo() {\n this.$handle.watchCtx(this);\n },\n delete() {\n const undef = void 0;\n this.unwatch();\n this.unlink();\n this.rmCtrl();\n extend(this, {\n deleted: true,\n prop: {...this.rule},\n computed: {},\n el: undef,\n $handle: undef,\n $render: undef,\n $api: undef,\n vm: undef,\n vNode: undef,\n parent: null,\n cacheConfig: null,\n })\n },\n rmCtrl() {\n this.ctrlRule.forEach(ctrl => ctrl.__fc__ && ctrl.__fc__.rm());\n this.ctrlRule = [];\n },\n rm() {\n const _rm = () => {\n let index = this.root.indexOf(this.origin);\n if (index > -1) {\n this.root.splice(index, 1);\n this.$handle && this.$handle.refresh();\n }\n }\n if (this.deleted) {\n _rm();\n return;\n }\n this.$handle.noWatch(() => {\n this.$handle.deferSyncValue(() => {\n this.rmCtrl();\n _rm();\n this.$handle.rmCtx(this);\n extend(this, {\n root: []\n });\n }, this.input);\n });\n },\n update(handle, init) {\n extend(this, {\n deleted: false,\n $handle: handle,\n $render: handle.$render,\n $api: handle.api,\n vm: handle.vm,\n trueType: handle.getType(this.originType),\n vNode: handle.$render.vNode,\n updated: false,\n });\n !init && this.unwatch();\n this.watchTo();\n this.link();\n }\n})\n","import extend from '@form-create/utils/lib/extend';\nimport {byCtx, copyRule, enumerable, getRule, invoke, parseFn} from '../frame/util';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {err} from '@form-create/utils/lib/console';\nimport {baseRule} from '../factory/creator';\nimport RuleContext from '../factory/context';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\n\nexport default function useLoader(Handler) {\n extend(Handler.prototype, {\n nextRefresh(fn) {\n const id = this.loadedId;\n this.vm.$nextTick(() => {\n id === this.loadedId && (fn ? fn() : this.refresh());\n });\n },\n parseRule(_rule) {\n const rule = getRule(_rule);\n\n Object.defineProperties(rule, {\n __origin__: enumerable(_rule, true)\n });\n\n fullRule(rule);\n this.appendValue(rule);\n\n rule.options = Array.isArray(rule.options) ? rule.options : [];\n\n [rule, rule['prefix'], rule['suffix']].forEach(item => {\n if (!item) {\n return;\n }\n this.loadFn(item, rule);\n });\n this.loadCtrl(rule);\n if (rule.update) {\n rule.update = parseFn(rule.update);\n }\n return rule;\n },\n loadFn(item, rule) {\n ['on', 'props', 'nativeOn', 'deep'].forEach(k => {\n item[k] && this.parseInjectEvent(rule, item[k]);\n });\n },\n loadCtrl(rule) {\n rule.control && rule.control.forEach(ctrl => {\n if (ctrl.handle) {\n ctrl.handle = parseFn(ctrl.handle)\n }\n })\n },\n syncProp(ctx) {\n const rule = ctx.rule;\n is.trueArray(rule.sync) && mergeProps([{\n on: rule.sync.reduce((pre, prop) => {\n pre[`update:${prop}`] = (val) => {\n rule.props[prop] = val;\n this.vm.$emit('sync', prop, val, rule, this.fapi);\n }\n return pre\n }, {})\n }], ctx.computed)\n },\n loadRule() {\n // console.warn('%c load', 'color:blue');\n this.cycleLoad = false;\n this.loading = true;\n if (this.pageEnd) {\n this.bus.$emit('load-start');\n }\n this.deferSyncValue(() => {\n this._loadRule(this.rules);\n this.loading = false;\n if (this.cycleLoad && this.pageEnd) {\n return this.loadRule();\n }\n if (this.pageEnd) {\n this.bus.$emit('load-end');\n }\n this.vm._renderRule();\n this.$render.initOrgChildren();\n this.syncForm();\n });\n },\n loadChildren(children, parent) {\n this.cycleLoad = false;\n this.loading = true;\n this.bus.$emit('load-start');\n this._loadRule(children, parent);\n this.loading = false;\n if (this.cycleLoad) {\n return this.loadRule();\n } else {\n this.bus.$emit('load-end');\n this.syncForm();\n }\n this.$render.clearCache(parent);\n },\n _loadRule(rules, parent) {\n\n const preIndex = (i) => {\n let pre = rules[i - 1];\n if (!pre || !pre.__fc__) {\n return i > 0 ? preIndex(i - 1) : -1;\n }\n let index = this.sort.indexOf(pre.__fc__.id);\n return index > -1 ? index : preIndex(i - 1);\n }\n\n const loadChildren = (children, parent) => {\n if (is.trueArray(children)) {\n this._loadRule(children, parent);\n }\n };\n\n rules.map((_rule, index) => {\n if (parent && (is.String(_rule) || is.Undef(_rule))) return;\n if (!this.pageEnd && !parent && index >= this.first) return;\n\n if (!is.Object(_rule) || !getRule(_rule).type)\n return err('未定义生成规则的 type 字段', _rule);\n\n if (_rule.__fc__ && _rule.__fc__.root === rules && this.ctxs[_rule.__fc__.id]) {\n loadChildren(_rule.__fc__.rule.children, _rule.__fc__);\n return _rule.__fc__;\n }\n\n let rule = getRule(_rule);\n\n const isRepeat = () => {\n return !!(rule.field && this.fieldCtx[rule.field] && this.fieldCtx[rule.field][0] !== _rule.__fc__)\n }\n\n this.ruleEffect(rule, 'init', {repeat: isRepeat()});\n\n if (isRepeat()) {\n this.vm.$emit('repeat-field', _rule, this.api);\n }\n\n let ctx;\n let isCopy = false;\n let isInit = !!_rule.__fc__;\n if (isInit) {\n ctx = _rule.__fc__;\n const check = !ctx.check(this);\n if (ctx.deleted) {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n ctx.update(this);\n }\n } else {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n rules[index] = _rule = _rule._clone ? _rule._clone() : copyRule(_rule);\n ctx = null;\n isCopy = true;\n }\n }\n }\n if (!ctx) {\n ctx = new RuleContext(this, this.parseRule(_rule));\n this.bindParser(ctx);\n } else {\n if (ctx.originType !== ctx.rule.type) {\n ctx.updateType();\n this.bindParser(ctx);\n }\n this.appendValue(ctx.rule);\n }\n [false, true].forEach(b => this.parseEmit(ctx, b));\n this.syncProp(ctx);\n ctx.parent = parent || null;\n ctx.root = rules;\n this.setCtx(ctx);\n\n !isCopy && !isInit && this.effect(ctx, 'load');\n\n ctx.parser.loadChildren === false || loadChildren(ctx.rule.children, ctx);\n\n if (!parent) {\n const _preIndex = preIndex(index);\n if (_preIndex > -1 || !index) {\n this.sort.splice(_preIndex + 1, 0, ctx.id);\n } else {\n this.sort.push(ctx.id);\n }\n }\n\n const r = ctx.rule;\n if (!ctx.updated) {\n ctx.updated = true;\n if (is.Function(r.update)) {\n this.bus.$once('load-end', () => {\n this.refreshUpdate(ctx, r.value);\n });\n }\n this.effect(ctx, 'loaded');\n }\n\n if (ctx.input)\n Object.defineProperty(r, 'value', this.valueHandle(ctx));\n if (this.refreshControl(ctx)) this.cycleLoad = true;\n return ctx;\n });\n },\n refreshControl(ctx) {\n return ctx.input && ctx.rule.control && this.useCtrl(ctx);\n },\n useCtrl(ctx) {\n const controls = getCtrl(ctx), validate = [], api = this.api;\n if (!controls.length) return false;\n\n for (let i = 0; i < controls.length; i++) {\n const control = controls[i], handleFn = control.handle || (val => val === control.value);\n if (!is.trueArray(control.rule)) continue;\n const data = {\n ...control,\n valid: invoke(() => handleFn(ctx.rule.value, api)),\n ctrl: findCtrl(ctx, control.rule),\n isHidden: is.String(control.rule[0]),\n };\n if ((data.valid && data.ctrl) || (!data.valid && !data.ctrl && !data.isHidden)) continue;\n validate.push(data);\n }\n if (!validate.length) return false;\n\n let flag = false;\n this.deferSyncValue(() => {\n validate.reverse().forEach(({isHidden, valid, rule, prepend, append, child, ctrl}) => {\n if (isHidden) {\n valid ? ctx.ctrlRule.push({\n __ctrl: true,\n children: rule,\n valid\n })\n : ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n this.vm.$nextTick(() => {\n this.api.hidden(!valid, rule);\n });\n return;\n }\n if (valid) {\n flag = true;\n const ruleCon = {\n type: 'fcFragment',\n native: true,\n __ctrl: true,\n children: rule,\n }\n ctx.ctrlRule.push(ruleCon);\n this.bus.$once('load-start', () => {\n // this.cycleLoad = true;\n if (prepend) {\n api.prepend(ruleCon, prepend, child)\n } else if (append || child) {\n api.append(ruleCon, append || ctx.id, child)\n } else {\n ctx.root.splice(ctx.root.indexOf(ctx.origin) + 1, 0, ruleCon);\n }\n });\n } else {\n ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n const ctrlCtx = byCtx(ctrl);\n ctrlCtx && ctrlCtx.rm();\n }\n });\n });\n this.vm.$emit('control', ctx.origin, this.api);\n this.effect(ctx, 'control');\n return flag;\n },\n reloadRule(rules) {\n return this._reloadRule(rules);\n },\n _reloadRule(rules) {\n // console.warn('%c reload', 'color:red');\n if (!rules) rules = this.rules;\n\n const ctxs = {...this.ctxs};\n\n this.clearNextTick();\n this.$render.clearOrgChildren();\n this.initData(rules);\n this.fc.rules = rules;\n\n this.bus.$once('load-end', () => {\n Object.keys(ctxs).filter(id => this.ctxs[id] === undefined)\n .forEach(id => this.rmCtx(ctxs[id]));\n this.$render.clearCacheAll();\n });\n this.reloading = true;\n this.loadRule();\n this.reloading = false;\n this.refresh();\n\n this.bus.$off('next-tick', this.nextReload);\n this.bus.$once('next-tick', this.nextReload);\n },\n //todo 组件生成全部通过 alias\n refresh() {\n this.vm._refresh();\n },\n });\n}\n\nfunction fullRule(rule) {\n const def = baseRule();\n\n Object.keys(def).forEach(k => {\n if (!hasProperty(rule, k)) rule[k] = def[k];\n });\n return rule;\n}\n\nfunction getCtrl(ctx) {\n const control = ctx.rule.control || [];\n if (is.Object(control)) return [control];\n else return control;\n}\n\nfunction findCtrl(ctx, rule) {\n for (let i = 0; i < ctx.ctrlRule.length; i++) {\n const ctrl = ctx.ctrlRule[i];\n if (ctrl.children === rule)\n return ctrl;\n }\n}\n\nfunction isCtrl(ctx) {\n return !!ctx.rule.__ctrl;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport {$set} from '@form-create/utils/lib';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nexport default function useInput(Handler) {\n extend(Handler.prototype, {\n getValue(ctx) {\n if (!hasProperty(ctx, 'cacheValue')) {\n ctx.cacheValue = ctx.parser.toValue(this.getFormData(ctx), ctx);\n }\n return ctx.cacheValue;\n },\n setValue(ctx, value, formValue, setFlag) {\n if (ctx.deleted) return;\n ctx.cacheValue = value;\n this.changeStatus = true;\n this.nextRefresh();\n this.$render.clearCache(ctx);\n this.setFormData(ctx, formValue);\n this.syncValue();\n this.valueChange(ctx, value);\n this.vm.$emit('change', ctx.field, value, ctx.origin, this.api, setFlag);\n this.effect(ctx, 'value');\n },\n onInput(ctx, value) {\n let val;\n if (ctx.input && (this.isQuote(ctx, val = ctx.parser.toValue(value, ctx)) || this.isChange(ctx, val))) {\n this.setValue(ctx, val, value);\n }\n },\n setFormData(ctx, value) {\n $set(this.formData, ctx.id, value);\n },\n getFormData(ctx) {\n return this.formData[ctx.id];\n },\n validate() {\n toEmpty(this.vm.validate);\n this.fields().forEach(id => {\n this.fieldCtx[id].forEach(ctx => {\n this.vm.validate[ctx.id] = toArray(ctx.rule.validate);\n });\n });\n return this.vm.validate;\n },\n syncForm() {\n toEmpty(this.form);\n Object.defineProperties(this.form, this.fields().reduce((initial, field) => {\n const ctx = this.getFieldCtx(field);\n const handle = this.valueHandle(ctx);\n handle.configurable = true;\n initial[field] = handle;\n return initial;\n }, Object.keys(this.appendData).reduce((initial, field) => {\n initial[field] = {\n enumerable: true,\n configurable: true,\n get: () => {\n return this.appendData[field];\n },\n set: (val) => {\n this.appendData[field] = val;\n }\n }\n return initial;\n }, {})));\n this.syncValue();\n },\n valueHandle(ctx) {\n return {\n enumerable: true,\n get: () => {\n return this.getValue(ctx);\n },\n set: (value) => {\n if (this.isChange(ctx, value)) {\n this.setValue(ctx, value, ctx.parser.toFormValue(value, ctx), true);\n }\n }\n };\n },\n appendValue(rule) {\n if (!rule.field || !hasProperty(this.appendData, rule.field)) return;\n rule.value = this.appendData[rule.field];\n delete this.appendData[rule.field];\n },\n addSubForm(ctx, subForm) {\n if (ctx.input) {\n this.subForm[ctx.id] = subForm;\n }\n },\n deferSyncValue(fn, sync) {\n if (!this.deferSyncFn) {\n this.deferSyncFn = fn;\n }\n if (!this.deferSyncFn.sync) {\n this.deferSyncFn.sync = sync;\n }\n invoke(fn);\n if (this.deferSyncFn === fn) {\n this.deferSyncFn = null;\n if (fn.sync) {\n this.syncValue();\n }\n }\n },\n syncValue() {\n if (this.deferSyncFn) {\n return this.deferSyncFn.sync = true;\n }\n this.vm._updateValue({...this.form});\n },\n isChange(ctx, value) {\n return JSON.stringify(ctx.rule.value) !== JSON.stringify(value);\n },\n isQuote(ctx, value) {\n return (is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;\n },\n refreshUpdate(ctx, val) {\n if (is.Function(ctx.rule.update)) {\n const state = invoke(() => ctx.rule.update(val, ctx.origin, this.api));\n if (state === undefined) return;\n ctx.rule.hidden = state === true;\n }\n },\n valueChange(ctx, val) {\n this.refreshRule(ctx, val);\n this.bus.$emit('change-' + ctx.field, val);\n },\n refreshRule(ctx, val) {\n if (this.refreshControl(ctx)) {\n this.$render.clearCacheAll();\n this.loadRule();\n this.refresh();\n }\n this.refreshUpdate(ctx, val);\n },\n appendLink(ctx) {\n const link = ctx.rule.link;\n is.trueArray(link) && link.forEach(field => {\n const fn = () => this.refreshRule(ctx, ctx.rule.value);\n\n this.bus.$on('change-' + field, fn);\n ctx.linkOn.push(() => this.bus.$off('change-' + field, fn));\n });\n },\n fields() {\n return Object.keys(this.fieldCtx);\n },\n });\n}\n\nfunction toEmpty(obj) {\n Object.keys(obj).forEach(k => delete obj[k]);\n}\n","const BaseParser = {\n init(ctx) {\n },\n toFormValue(value, ctx) {\n return value\n },\n toValue(formValue, ctx) {\n return formValue;\n },\n mounted(ctx) {\n },\n render(children, ctx) {\n return ctx.$render.defaultRender(ctx, children);\n },\n mergeProp(ctx) {\n }\n}\n\nexport default BaseParser;\n","import extend from '@form-create/utils/lib/extend';\nimport toCase from '@form-create/utils/lib/tocase';\nimport BaseParser from '../factory/parser';\nimport {$del} from '@form-create/utils/lib';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\n\n\nexport default function useContext(Handler) {\n extend(Handler.prototype, {\n getCtx(id) {\n return this.getFieldCtx(id) || this.getNameCtx(id)[0] || this.ctxs[id];\n },\n getCtxs(id) {\n return this.fieldCtx[id] || this.nameCtx[id] || (this.ctxs[id] ? [this.ctxs[id]] : []);\n },\n setIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n if (!this[field][key]) {\n this[field][key] = [ctx];\n } else {\n this[field][key].push(ctx);\n }\n },\n rmIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n const lst = this[field][key];\n if (!lst) return false;\n const flag = lst.splice(lst.indexOf(ctx) >>> 0, 1).length > 0;\n if (!lst.length) {\n delete this[field][key];\n }\n return flag;\n },\n getFieldCtx(field) {\n return (this.fieldCtx[field] || [])[0];\n },\n getNameCtx(name) {\n return this.nameCtx[name] || [];\n },\n setCtx(ctx) {\n let {id, field, name, rule} = ctx;\n this.ctxs[id] = ctx;\n name && this.setIdCtx(ctx, name, 'name');\n if (!ctx.input) return;\n this.setIdCtx(ctx, field, 'field');\n this.setFormData(ctx, ctx.parser.toFormValue(rule.value, ctx));\n if (this.isMounted && !this.reloading) {\n this.vm.$emit('change', ctx.field, rule.value, ctx.origin, this.api);\n }\n },\n getParser(ctx) {\n const list = this.fc.parsers;\n return list[ctx.originType] || list[toCase(ctx.type)] || list[ctx.trueType] || BaseParser;\n },\n bindParser(ctx) {\n ctx.setParser(this.getParser(ctx));\n },\n getType(alias) {\n const map = this.fc.CreateNode.aliasMap;\n const type = map[alias] || map[toCase(alias)] || alias;\n return toCase(type);\n },\n noWatch(fn) {\n if (!this.noWatchFn) {\n this.noWatchFn = fn;\n }\n invoke(fn);\n if (this.noWatchFn === fn) {\n this.noWatchFn = null;\n }\n },\n watchCtx(ctx) {\n const vm = this.vm;\n const none = ['field', 'value', 'vm', 'template', 'name', 'config', 'control', 'inject', 'sync', 'payload', 'optionsTo', 'update'];\n Object.keys(ctx.rule).filter(k => none.indexOf(k) === -1).forEach((key) => {\n const flag = key === 'children';\n ctx.watch.push(vm.$watch(() => ctx.rule[key], (n, o) => {\n if (this.loading || this.noWatchFn || this.reloading) return;\n if (flag && ctx.parser.loadChildren === false) {\n this.$render.clearCache(ctx);\n this.nextRefresh();\n return;\n }\n this.watching = true;\n // if (key === 'hidden')\n // ctx.updateKey(true);\n // else\n if (key === 'link') {\n ctx.link();\n return;\n } else if (['props', 'on', 'nativeOn', 'deep'].indexOf(key) > -1) {\n this.parseInjectEvent(ctx.rule, n || {});\n if (key === 'props' && ctx.input) {\n this.setFormData(ctx, ctx.parser.toFormValue(ctx.rule.value, ctx));\n }\n } else if (['emit', 'nativeEmit'].indexOf(key) > -1)\n this.parseEmit(ctx, key === 'emit');\n else if (['prefix', 'suffix'].indexOf(key) > -1)\n n && this.loadFn(n, ctx.rule);\n else if (key === 'type') {\n ctx.updateType();\n this.bindParser(ctx);\n } else if (key === 'children') {\n const flag = is.trueArray(n);\n this.deferSyncValue(() => {\n if (n !== o) {\n this.rmSub(o);\n this.$render.initOrgChildren();\n }\n flag && this.loadChildren(n, ctx);\n });\n }\n this.$render.clearCache(ctx);\n this.watching = false;\n }, {deep: !flag, sync: flag}));\n });\n this.watchEffect(ctx);\n },\n rmSub(sub) {\n is.trueArray(sub) && sub.forEach(r => {\n r && r.__fc__ && this.rmCtx(r.__fc__);\n })\n },\n rmCtx(ctx) {\n if (ctx.deleted) return;\n const {id, field, input, name} = ctx;\n if (ctx.input) {\n Object.defineProperty(ctx.rule, 'value', {\n value: ctx.rule.value,\n writable: true\n });\n }\n\n $del(this.ctxs, id);\n $del(this.$render.tempList, id);\n $del(this.$render.orgChildren, id);\n $del(this.vm.ctxInject, id);\n $del(this.formData, id);\n $del(this.subForm, id);\n $del(ctx, 'cacheValue');\n\n input && this.rmIdCtx(ctx, field, 'field');\n name && this.rmIdCtx(ctx, name, 'name');\n\n this.deferSyncValue(() => {\n if (!this.reloading) {\n if (ctx.parser.loadChildren !== false) {\n if (is.trueArray(ctx.rule.children)) {\n ctx.rule.children.forEach(h => h.__fc__ && this.rmCtx(h.__fc__));\n }\n }\n if (ctx.root === this.rules) {\n this.vm._renderRule();\n }\n }\n }, input);\n\n const index = this.sort.indexOf(id);\n if (index > -1) {\n this.sort.splice(index, 1);\n }\n\n this.$render.clearCache(ctx);\n ctx.delete();\n this.effect(ctx, 'deleted');\n input && !this.fieldCtx[field] && this.vm.$emit('removeField', field, ctx.rule, this.api);\n ctx.rule.__ctrl || this.vm.$emit('removeRule', ctx.rule, this.api);\n return ctx;\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\n\n\nexport default function useLifecycle(Handler) {\n extend(Handler.prototype, {\n mounted() {\n const _mounted = () => {\n this.isMounted = true;\n this.lifecycle('mounted');\n }\n if (this.pageEnd) {\n _mounted();\n } else {\n this.bus.$once('page-end', _mounted);\n }\n },\n lifecycle(name) {\n const fn = this.options[name];\n is.Function(fn) && invoke(() => fn(this.api));\n this.vm.$emit(name, this.api);\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\n\n\nexport default function useEffect(Handler) {\n extend(Handler.prototype, {\n useProvider() {\n const ps = this.fc.providers;\n Object.keys(ps).forEach(k => {\n const prop = ps[k];\n prop._c = getComponent(prop);\n this.onEffect(prop);\n this.providers[k] = prop;\n });\n },\n onEffect(provider) {\n const used = [];\n (provider._c || ['*']).forEach(name => {\n const type = name === '*' ? '*' : this.getType(name);\n if (used.indexOf(type) > -1) return;\n used.push(type);\n this.bus.$on(`p:${provider.name}:${type}:${provider.input ? 1 : 0}`, (event, args) => {\n provider[event] && provider[event](...args);\n });\n });\n provider._used = used;\n },\n watchEffect(ctx) {\n const vm = this.vm;\n Object.keys(ctx.rule.effect || {}).forEach(k => {\n ctx.watch.push(vm.$watch(() => ctx.rule.effect[k], (n) => {\n this.effect(ctx, 'watch', {[k]: n});\n }, {deep: true}));\n });\n },\n ruleEffect(rule, event, append) {\n this.emitEffect({\n rule,\n input: !!rule.field,\n type: this.getType(rule.type)\n }, event, append);\n },\n effect(ctx, event, custom) {\n this.emitEffect({\n rule: ctx.rule,\n input: ctx.input,\n type: ctx.trueType,\n ctx,\n custom\n }, event);\n },\n getEffect(rule, name) {\n if (hasProperty(rule, 'effect') && hasProperty(rule.effect, name))\n return rule.effect[name];\n else\n return undefined;\n },\n emitEffect({ctx, rule, input, type, custom}, event, append) {\n if (!type || type === 'fcFragment') return;\n const effect = custom ? custom : (rule.effect || {});\n Object.keys(effect).forEach(attr => {\n const p = this.providers[attr];\n if (!p || (p.input && !input)) return;\n let _type;\n if (!p._c) {\n _type = '*';\n } else if (p._used.indexOf(type) > -1) {\n _type = type;\n } else {\n return;\n }\n const data = {value: effect[attr], getValue: () => this.getEffect(rule, attr), ...(append || {})};\n if (ctx) {\n data.getProp = () => ctx.effectData(attr);\n data.clearProp = () => ctx.clearEffectData(attr);\n data.mergeProp = (prop) => mergeProps([prop], data.getProp());\n }\n this.bus.$emit(`p:${attr}:${_type}:${p.input ? 1 : 0}`, event, [data, rule, this.api]);\n });\n }\n });\n}\n\nfunction unique(arr) {\n return arr.filter(function (item, index, arr) {\n return arr.indexOf(item, 0) === index;\n });\n}\n\nfunction getComponent(p) {\n const c = p.components;\n if (Array.isArray(c)) return unique(c.filter(v => v !== '*'));\n else if (is.String(c)) return [c];\n else return false;\n}\n","import Api from '../frame/api';\nimport Render from '../render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\nimport useInject from './inject';\nimport usePage from './page';\nimport useRender from './render';\nimport useLoader from './loader';\nimport useInput from './input';\nimport useContext from './context';\nimport useLifecycle from './lifecycle';\nimport useEffect from './effect';\n\n\nexport default function Handler(fc) {\n extend(this, {\n fc,\n vm: fc.vm,\n watching: false,\n loading: false,\n reloading: false,\n noWatchFn: null,\n deferSyncFn: null,\n isMounted: false,\n formData: {},\n subForm: {},\n form: {},\n appendData: {},\n providers: {},\n cycleLoad: null,\n loadedId: 1,\n nextTick: null,\n changeStatus: false,\n pageEnd: true,\n nextReload: () => {\n this.lifecycle('reload');\n }\n });\n\n funcProxy(this, {\n options() {\n return fc.options;\n },\n bus() {\n return fc.bus;\n },\n })\n\n this.initData(fc.rules);\n\n this.$manager = new fc.manager(this);\n this.$render = new Render(this);\n this.api = fc.extendApi(Api(this), this);\n}\n\nextend(Handler.prototype, {\n initData(rules) {\n extend(this, {\n ctxs: {},\n fieldCtx: {},\n nameCtx: {},\n sort: [],\n rules,\n });\n },\n init() {\n this.appendData = {...this.fc.options.formData || {}, ...this.vm.value || {}, ...this.appendData};\n this.useProvider();\n this.usePage();\n this.loadRule();\n this.$manager.__init();\n this.vm.$set(this.vm, 'formData', this.formData);\n },\n})\n\nuseInject(Handler);\nusePage(Handler);\nuseRender(Handler);\nuseLoader(Handler);\nuseInput(Handler);\nuseContext(Handler);\nuseLifecycle(Handler);\nuseEffect(Handler);\n","// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js\n\nfunction getError(action, option, xhr) {\n const msg = `fail to ${action} ${xhr.status}'`;\n const err = new Error(msg);\n err.status = xhr.status;\n err.url = action;\n return err;\n}\n\nfunction getBody(xhr) {\n const text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nexport default function fetch(option) {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n\n const xhr = new XMLHttpRequest();\n const action = option.action;\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(action, option, xhr), getBody(xhr));\n }\n\n option.onSuccess(getBody(xhr));\n };\n\n xhr.open(option.method || 'get', action, true);\n\n let formData;\n if (option.data) {\n if ((option.dataType || '').toLowerCase() !== 'json') {\n formData = new FormData();\n Object.keys(option.data).map(key => {\n formData.append(key, option.data[key]);\n });\n } else {\n formData = JSON.stringify(option.data);\n xhr.setRequestHeader('content-type', 'application/json');\n }\n }\n\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n const headers = option.headers || {};\n\n Object.keys(headers).forEach(item => {\n if (headers[item] !== null) {\n xhr.setRequestHeader(item, headers[item]);\n }\n });\n xhr.send(formData);\n}\n","const NAME = 'fcFragment';\n\nexport default {\n name: NAME,\n functional: true,\n props: ['vnode'],\n render(h, ctx) {\n return ctx.props.vnode ? ctx.props.vnode : ctx.children\n }\n}\n","import toLine from '@form-create/utils/lib/toline';\nimport is from '@form-create/utils/lib/type';\nimport toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\nimport Vue from 'vue';\n\nfunction parseProp(prop) {\n if (is.String(prop))\n return {domProps: {innerHTML: prop}};\n return prop;\n}\n\nexport function CreateNodeFactory() {\n\n const aliasMap = {};\n\n function CreateNode(vm) {\n vm && this.setVm(vm);\n }\n\n extend(CreateNode.prototype, {\n setVm(vm) {\n this.vm = vm;\n this.$h = vm.$createElement;\n },\n make(tag, data, children) {\n if (Vue.config.isReservedTag(tag) && data.nativeOn) delete data.nativeOn;\n let Node = this.$h(tag, parseProp(data), children || []);\n Node.context = this.vm;\n return Node;\n },\n aliasMap\n });\n\n extend(CreateNode, {\n aliasMap,\n alias(alias, name) {\n aliasMap[alias] = name;\n },\n use(nodes) {\n Object.keys(nodes).forEach((k) => {\n const line = toLine(k);\n const lower = toString(k).toLocaleLowerCase();\n const v = nodes[k];\n [k, line, lower].forEach(n => {\n CreateNode.alias(k, v);\n CreateNode.prototype[n] = function (data, children) {\n return this.make(v, data, children);\n };\n });\n });\n }\n })\n\n return CreateNode;\n}\n","import mergeProps from '@form-create/utils/lib/mergeprops';\nimport unique from '@form-create/utils/lib/unique';\nimport extend from '@form-create/utils/lib/extend';\n\nexport function createManager(proto) {\n class CustomManager extends Manager {\n }\n\n Object.assign(CustomManager.prototype, proto);\n return CustomManager;\n}\n\nexport default function Manager(handler) {\n extend(this, {\n $handle: handler,\n vm: handler.vm,\n options: {},\n ref: 'fcForm',\n mergeOptionsRule: {\n normal: ['form', 'row', 'info', 'submitBtn', 'resetBtn']\n }\n });\n this.updateKey();\n this.init();\n}\n\nextend(Manager.prototype, {\n __init() {\n this.$render = this.$handle.$render;\n this.$r = (...args) => this.$render.renderRule(...args);\n },\n updateKey() {\n this.key = unique();\n },\n //TODO interface\n init() {\n },\n update() {\n },\n beforeRender() {\n },\n form() {\n return this.vm.$refs[this.ref];\n },\n mergeOptions(args, opt) {\n return mergeProps(args.map(v => this.tidyOptions(v)), opt, this.mergeOptionsRule);\n },\n updateOptions(options) {\n this.options = this.mergeOptions([options], this.getDefaultOptions());\n this.update();\n },\n tidyOptions(options) {\n return options;\n },\n tidyRule(ctx) {\n },\n mergeProp(ctx) {\n },\n getDefaultOptions() {\n return {};\n },\n render(children) {\n }\n})\n","import {err} from '@form-create/utils/lib/console';\nimport fetch from './fetch';\nimport {invoke} from './util';\nimport is from '@form-create/utils/lib/type';\nimport deepSet from '@form-create/utils/lib/deepset';\n\nconst $fetch = {\n name: 'fetch',\n loaded(...args) {\n run(...args);\n },\n watch(inject, rule, api) {\n if (!run(inject, rule, api)) {\n inject.clearProp();\n api.sync(rule);\n }\n }\n};\n\nfunction parseOpt(option) {\n if (is.String(option)) {\n option = {\n action: option,\n to: 'options'\n }\n }\n return option;\n}\n\nfunction run(inject, rule, api) {\n let option = inject.value;\n option = parseOpt(option);\n if (!option || !option.action) {\n return false;\n }\n if (!option.to) {\n option.to = 'options';\n }\n const onError = option.onError;\n\n const check = () => {\n if (!inject.getValue()) {\n inject.clearProp();\n api.sync(rule);\n return true;\n }\n }\n\n const set = (val) => {\n if (val === undefined) {\n inject.clearProp();\n api.sync(rule);\n } else {\n deepSet(inject.getProp(), option.to, val);\n }\n }\n\n invoke(() => fetch({\n ...option,\n onSuccess(body) {\n if (check()) return;\n set((option.parse || ((v) => v.data))(body, rule, api))\n api.sync(rule);\n },\n onError(e) {\n set(undefined)\n if (check()) return;\n (onError || ((e) => err(e.message || 'fetch fail ' + option.action)))(e, rule, api);\n }\n }));\n\n return true;\n}\n\nexport default $fetch;","import $FormCreate from '../components/formCreate';\nimport Vue from 'vue';\nimport makerFactory from '../factory/maker';\nimport Handle from '../handler';\nimport fetch from './fetch';\nimport {creatorFactory} from '..';\nimport BaseParser from '../factory/parser';\nimport {copyRule, copyRules, mergeGlobal, parseJson, toJson} from './util';\nimport fragment from '../components/fragment';\nimport is from '@form-create/utils/lib/type';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport {CreateNodeFactory} from '../factory/node';\nimport {createManager} from '../factory/manager';\nimport {arrayAttrs, keyAttrs, normalAttrs} from './attrs';\nimport {appendProto} from '../factory/creator';\nimport $fetch from './provider';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\n\nexport let _vue = typeof window !== 'undefined' && window.Vue ? window.Vue : Vue;\n\nfunction _parseProp(name, id) {\n let prop;\n if (arguments.length === 2) {\n prop = arguments[1];\n id = prop[name];\n } else {\n prop = arguments[2];\n }\n return {id, prop};\n}\n\nfunction nameProp() {\n return _parseProp('name', ...arguments);\n}\n\nfunction _getEl(options) {\n if (!options || !options.el) return window.document.body;\n return is.Element(options.el)\n ? options.el\n : document.querySelector(options.el);\n}\n\nfunction mountForm(rules, option) {\n const $vm = new _vue({\n data() {\n //todo 外部无法修改\n return {rule: rules, option: option || {}};\n },\n render(h) {\n return h('FormCreate', {ref: 'fc', props: this.$data});\n }\n });\n $vm.$mount();\n return $vm;\n}\n\nfunction exportAttrs(attrs) {\n const key = attrs.key || [];\n const array = attrs.array || [];\n const normal = attrs.normal || [];\n keyAttrs.push(...key);\n arrayAttrs.push(...array);\n normalAttrs.push(...normal);\n\n appendProto([...key, ...array, ...normal]);\n}\n\n//todo 表单嵌套\nexport default function FormCreateFactory(config) {\n\n const _fragment = _vue.extend(fragment);\n const components = {\n [fragment.name]: _fragment\n };\n const parsers = {};\n const directives = {};\n const providers = {\n fetch: $fetch\n };\n const maker = makerFactory();\n let globalConfig = {global: {}};\n const data = {};\n const CreateNode = CreateNodeFactory();\n\n exportAttrs(config.attrs || {});\n\n function directive() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) directives[data.id] = data.prop;\n }\n\n function register() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) providers[data.id] = {...data.prop, name: data.id};\n }\n\n function componentAlias(alias) {\n CreateNode.use(alias);\n }\n\n function parser() {\n const data = nameProp(...arguments);\n if (!data.id || !data.prop) return;\n const name = toCase(data.id);\n const parser = data.prop;\n const base = parser.merge === true ? parsers[name] : undefined;\n parsers[name] = {...(base || BaseParser), ...parser};\n maker[name] = creatorFactory(name);\n parser.maker && extend(maker, parser.maker);\n }\n\n function component(id, component) {\n let name;\n if (is.String(id)) {\n name = toCase(id);\n if (['form-create', 'formcreate'].indexOf(name) > -1) {\n return $form();\n } else if (component === undefined) {\n return components[name];\n }\n } else {\n name = toCase(id.name);\n component = id;\n }\n if (!name || !component) return;\n components[name] = component;\n if (component.formCreateParser) parser(name, component.formCreateParser);\n }\n\n function $form() {\n return _vue.extend($FormCreate(FormCreate));\n }\n\n //todo 检查回调函数作用域\n function use(fn, opt) {\n if (is.Function(fn.install)) fn.install(create, opt);\n else if (is.Function(fn)) fn(create, opt);\n return this;\n }\n\n function create(rules, _opt, parent) {\n let $vm = mountForm(rules, _opt || {});\n const _this = $vm.$refs.fc.formCreate;\n _this.$parent = parent;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n }\n\n function factory() {\n return FormCreateFactory(config);\n }\n\n function FormCreate(vm, rules, options) {\n extend(this, {\n vm,\n create,\n manager: createManager(config.manager),\n parsers,\n providers,\n rules: Array.isArray(rules) ? rules : [],\n prop: {\n components,\n directives,\n },\n CreateNode,\n bus: new _vue,\n unwatch: null,\n extendApi: config.extendApi || (api => api)\n })\n this.init();\n this.initOptions(options || {});\n }\n\n extend(FormCreate.prototype, {\n init() {\n const vm = this.vm;\n const h = new Handle(this);\n this.$handle = h;\n vm.$f = h.api;\n vm.$emit('input', h.api);\n\n vm.$on('hook:created', () => {\n if (this.isSub()) {\n this.unwatch = vm.$watch(() => vm.$pfc.option, () => {\n this.initOptions(this.options);\n vm.$f.refresh();\n }, {deep: true});\n this.initOptions(this.options);\n }\n this.created();\n })\n vm.$on('hook:mounted', () => {\n this.mounted();\n });\n vm.$on('hook:beforeDestroy', () => {\n vm.destroyed = true;\n this.unwatch && this.unwatch();\n h.reloadRule([]);\n });\n vm.$on('hook:updated', () => {\n h.bindNextTick(() => this.bus.$emit('next-tick', h.api));\n });\n },\n isSub() {\n return this.vm.$pfc && this.vm.extendOption;\n },\n initOptions(options) {\n this.options = {formData: {}, submitBtn: {}, resetBtn: {}, ...deepCopy(globalConfig)};\n if (this.isSub()) {\n this.mergeOptions(this.options, this.vm.$pfc.$f.config || {}, true);\n }\n this.updateOptions(options);\n },\n mergeOptions(target, opt, parent) {\n opt = deepCopy(opt);\n parent && ['page', 'onSubmit', 'mounted', 'reload', 'formData', 'el'].forEach((n) => {\n delete opt[n];\n });\n if (opt.global) {\n target.global = mergeGlobal(target.global, opt.global);\n delete opt.global;\n }\n this.$handle.$manager.mergeOptions([opt], target);\n return target;\n },\n updateOptions(options) {\n this.mergeOptions(this.options, options);\n this.$handle.$manager.updateOptions(this.options);\n },\n created() {\n this.$handle.init();\n },\n api() {\n return this.$handle.api;\n },\n render() {\n return this.$handle.render();\n },\n mounted() {\n this.$handle.mounted();\n },\n })\n\n\n function useAttr(formCreate) {\n extend(formCreate, {\n version: config.version,\n ui: config.ui,\n data,\n maker,\n component,\n directive,\n register,\n fragment: _fragment,\n parser,\n use,\n factory,\n componentAlias,\n copyRule,\n copyRules,\n fetch,\n $form,\n parseJson,\n toJson,\n init(rules, _opt = {}) {\n let $vm = mountForm(rules, _opt), _this = $vm.$refs.fc.formCreate;\n return {\n mount($el) {\n if ($el && is.Element($el))\n _this.options.el = $el;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n },\n remove() {\n $vm.$el.parentNode && $vm.$el.parentNode.removeChild($vm.$el);\n },\n destroy() {\n this.remove();\n $vm.$destroy();\n },\n $f: _this.api()\n };\n }\n });\n }\n\n function useStatic(formCreate) {\n extend(formCreate, {\n create,\n install(Vue, options) {\n globalConfig = {...globalConfig, ...(options || {})}\n if (Vue._installedFormCreate === true) return;\n Vue._installedFormCreate = true;\n _vue = Vue;\n\n const $formCreate = function (rules, opt = {}) {\n return create(rules, opt, this);\n };\n\n useAttr($formCreate);\n\n Vue.prototype.$formCreate = $formCreate;\n Vue.component('FormCreate', $form());\n Vue.component('FcFragment', _fragment);\n }\n })\n }\n\n useAttr(create);\n useStatic(create);\n\n CreateNode.use({fragment: 'fcFragment'});\n\n if (config.install) create.use(config);\n\n return create;\n}\n","import moment from 'moment';\nimport {creatorFactory} from '@form-create/core/src/index';\n\nconst FORMAT_TYPE = {\n date: 'YYYY-MM-DD',\n month: 'YYYY-MM',\n week: 'YYYY-wo',\n range: 'YYYY-MM-DD HH:mm:ss'\n};\n\nconst getType = function (ctx) {\n const type = ctx.prop.props.type;\n if (['date', 'month', 'week', 'range'].indexOf(type) === -1) return 'date';\n return type;\n};\n\nconst toMoment = function (val) {\n return val instanceof moment ? val : moment(val);\n};\n\nfunction getFormat(ctx) {\n return ctx.prop.props.format || (ctx.el ? ctx.el.format : '') || FORMAT_TYPE[getType(ctx)];\n}\n\nconst name = 'datePicker';\n\nexport default {\n name,\n maker: (function () {\n return ['date', 'month', 'week'].reduce((initial, type) => {\n initial[type] = creatorFactory(name, {type});\n return initial\n }, {\n dateRange: creatorFactory(name, {type:'range'}),\n datetimeRange: creatorFactory(name, m => m.props({type: 'range', showTime: true}))\n })\n }()),\n toFormValue(value, ctx) {\n let parseValue, type = getType(ctx);\n const isArr = Array.isArray(value);\n if (type === 'range') {\n if (isArr) {\n parseValue = value.map(v => v ? toMoment(v) : null);\n } else {\n parseValue = []\n }\n } else {\n parseValue = isArr ? ((value[0] ? toMoment(value[0]) : null) || null) : (value ? toMoment(value) : null);\n }\n return parseValue;\n },\n toValue(formValue, ctx) {\n const format = getFormat(ctx);\n if (Array.isArray(formValue))\n return formValue.map(v => v ? v.format(format) : v);\n else\n return formValue ? formValue.format(format) : formValue;\n },\n render(children, ctx) {\n const type = getType(ctx) + 'Picker';\n return ctx.$render.vNode[type](ctx.prop, children);\n }\n\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'hidden';\n\nexport default {\n name,\n maker: {\n [name]: (field, value) => creatorFactory(name)('', field, value),\n },\n render() {\n return [];\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'input';\nexport default {\n name,\n maker: (function () {\n return ['password', 'url', 'email', 'text', 'textarea', 'search'].reduce((maker, type) => {\n maker[type] = creatorFactory(name, {type});\n return maker;\n }, {\n idate: creatorFactory(name, {type:'date'})\n });\n }()),\n render(children, ctx) {\n let type = ctx.prop.props.type;\n if (['textarea', 'search'].indexOf(type) === -1) type = 'input';\n\n type = (type === 'textarea' ? 'ATextarea' : (type === 'search' ? 'AInputSearch' : 'AInput'));\n return ctx.$render.vNode.make(type, ctx.prop, children);\n }\n}\n","import moment from 'moment';\n\nconst toMoment = function (val, format) {\n return val instanceof moment ? val : moment(val, format);\n};\n\nfunction getFormat(ctx) {\n return ctx.prop.props.format || (ctx.el ? ctx.el.format : '') || 'HH:mm:ss';\n}\n\nexport default {\n name: 'timePicker',\n toFormValue(value, ctx) {\n return value ? toMoment(value, getFormat(ctx)) : null;\n },\n\n toValue(formValue, ctx) {\n return formValue ? formValue.format(getFormat(ctx)) : formValue;\n },\n\n}\n\n","export default {\n name: 'tree',\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!props.replaceFields)\n props.replaceFields = {\n key: 'id'\n };\n else if (!props.replaceFields.key) props.replaceFields.key = 'id';\n props.checkedKeys = ctx.rule.value;\n props.checkable = true;\n },\n\n}\n\n","export default {\n name: 'FcRow',\n render(_, ctx) {\n return ctx.vNode.col({props: {span: 24}}, [\n ctx.vNode.row(ctx.prop, _)\n ])\n }\n}","import checkbox from './checkbox';\nimport radio from './radio';\nimport select from './select';\nimport datePicker from './datePicker';\nimport hidden from './hidden';\nimport input from './input';\nimport timePicker from './timePicker';\nimport tree from './tree';\nimport row from './row';\n\nexport default [\n checkbox,\n datePicker,\n hidden,\n input,\n timePicker,\n tree,\n radio,\n select,\n row,\n]\n","const PRE = 'a';\nexport default {\n tooltip: PRE + 'Tooltip',\n popover: PRE + 'Popover',\n button: PRE + 'Button',\n icon: PRE + 'Icon',\n slider: PRE + 'Slider',\n rate: PRE + 'Rate',\n upload: 'fcUpload',\n cascader: PRE + 'Cascader',\n timePicker: PRE + 'TimePicker',\n datePicker: PRE + 'DatePicker',\n rangePicker: PRE + 'RangePicker',\n weekPicker: PRE + 'WeekPicker',\n monthPicker: PRE + 'MonthPicker',\n 'switch': PRE + 'Switch',\n select: PRE + 'Select',\n checkbox: PRE + 'CheckboxGroup',\n radio: PRE + 'RadioGroup',\n inputNumber: PRE + 'InputNumber',\n search: PRE + 'InputSearch',\n textarea: PRE + 'Textarea',\n formItem: PRE + 'FormModelItem',\n form: PRE + 'FormModel',\n frame: 'fcFrame',\n col: PRE + 'Col',\n row: PRE + 'Row',\n tree: PRE + 'Tree',\n autoComplete: PRE + 'AutoComplete',\n group: 'fcGroup',\n subForm: 'fcSubForm',\n object: 'fcSubForm',\n}\n","const UNDEF = undefined;\n\nexport default function getConfig() {\n return {\n form: {\n hideRequiredMark: false,\n layout: 'horizontal',\n labelAlign: 'right',\n labelCol: {\n span: 3\n },\n wrapperCol: {\n span: 21\n },\n validateOnRuleChange: true\n },\n row: {\n gutter: 0,\n },\n submitBtn: {\n disabled: false,\n loading: false,\n type: 'primary',\n innerText: '提交',\n show: true,\n col: UNDEF,\n click: UNDEF,\n },\n resetBtn: {\n disabled: false,\n icon: 'sync',\n loading: false,\n type: 'default',\n innerText: '重置',\n show: false,\n col: UNDEF,\n click: UNDEF\n },\n };\n}\n","import getConfig from './config';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\n\nfunction isTooltip(info) {\n return info.type === 'tooltip';\n}\n\nfunction tidy(props, name) {\n if (!hasProperty(props, name)) return;\n if (is.String(props[name])) {\n props[name] = {[name]: props[name], show: true};\n }\n}\n\nfunction isFalse(val) {\n return val === false;\n}\n\nfunction tidyBool(opt, name) {\n if (hasProperty(opt, name) && !is.Object(opt[name])) {\n opt[name] = {show: !!opt[name]};\n }\n}\n\nexport default {\n validate(call) {\n this.form().validate(call);\n },\n validateField(field, call) {\n this.form().validateField(field, call);\n },\n clearValidateState(ctx) {\n const fItem = this.vm.$refs[ctx.wrapRef];\n if (fItem) {\n fItem.validateMessage = '';\n fItem.validateState = '';\n }\n },\n tidyOptions(options) {\n ['submitBtn', 'resetBtn', 'row', 'info', 'wrap', 'col'].forEach(name => {\n tidyBool(options, name);\n })\n return options;\n },\n tidyRule({prop}) {\n tidy(prop, 'title');\n tidy(prop, 'info');\n return prop;\n },\n mergeProp(ctx) {\n ctx.prop = mergeProps([{\n info: this.options.info || {},\n wrap: this.options.wrap || {},\n col: this.options.col || {},\n }, ctx.prop], {\n info: {\n type: 'popover',\n placement: 'topLeft',\n icon: 'question-circle-o'\n },\n title: {},\n col: {span: 24},\n wrap: {},\n }, {normal: ['title', 'info', 'col', 'wrap']});\n },\n getDefaultOptions() {\n return getConfig();\n },\n update() {\n const form = this.options.form;\n this.rule = {\n props: {...form},\n nativeOn: {\n submit: (e) => {\n e.preventDefault();\n }\n },\n class: [form.className, form.class, 'form-create'],\n style: form.style,\n type: 'form',\n };\n },\n beforeRender() {\n const {key, ref, $handle} = this;\n extend(this.rule, {key, ref});\n extend(this.rule.props, {\n model: $handle.formData,\n rules: $handle.validate(),\n });\n },\n render(children) {\n if (children.length) {\n children.push(this.makeFormBtn());\n }\n return this.$r(this.rule, isFalse(this.options.row.show) ? children : [this.makeRow(children)]);\n },\n makeWrap(ctx, children) {\n const rule = ctx.prop;\n const uni = `${this.key}${ctx.key}`;\n const col = rule.col;\n const {layout, col: _col} = this.rule.props;\n const item = isFalse(rule.wrap.show) ? children : this.$r(mergeProps([rule.wrap, {\n props: {\n ...(rule.wrap || {}),\n prop: ctx.id,\n rules: rule.validate,\n ...(layout !== 'horizontal' ? {labelCol: {}, wrapperCol: {}} : {})\n },\n class: rule.className,\n key: `${uni}fi`,\n ref: ctx.wrapRef,\n type: 'formItem',\n }]), [children, this.makeInfo(rule, uni)]);\n return (layout === 'inline' || isFalse(_col) || isFalse(col.show)) ? item : this.makeCol(rule, uni, [item]);\n },\n makeInfo(rule, uni) {\n const titleProp = rule.title;\n const infoProp = rule.info;\n if (this.options.form.title === false) return false;\n if ((!titleProp.title && !titleProp.native) || isFalse(titleProp.show)) return;\n const isTool = isTooltip(infoProp);\n const children = [titleProp.title];\n\n const titleFn = (pop) => this.$r(mergeProps([titleProp, {\n props: titleProp,\n slot: titleProp.slot || (pop ? 'default' : 'label'),\n key: `${uni}tit`,\n type: titleProp.type || 'span',\n }]), children);\n\n if (!isFalse(infoProp.show) && (infoProp.info || infoProp.native)) {\n if (infoProp.icon !== false) {\n children[infoProp.align !== 'left' ? 'unshift' : 'push'](this.$r({\n type: 'icon',\n props: {type: infoProp.icon === true ? 'question-circle-o' : infoProp.icon},\n key: `${uni}i`\n }));\n }\n const prop = {\n type: infoProp.type || 'popover',\n props: {...infoProp},\n key: `${uni}pop`,\n slot: 'label',\n };\n\n const field = isTool ? 'title' : 'content';\n if (infoProp.info && !hasProperty(prop.props, field)) {\n prop.props[field] = infoProp.info;\n }\n\n return this.$r(mergeProps([infoProp, prop]), [\n titleFn(true)\n ])\n }\n return titleFn();\n },\n makeCol(rule, uni, children) {\n const col = rule.col;\n return this.$r({\n class: col.class,\n type: 'col',\n props: col || {span: 24},\n key: `${uni}col`\n }, children);\n },\n makeRow(children) {\n const row = this.options.row || {};\n return this.$r({\n type: 'row',\n props: row,\n class: row.class,\n key: `${this.key}row`\n }, children)\n },\n makeFormBtn() {\n let vn = [];\n if (!isFalse(this.options.submitBtn.show)) {\n vn.push(this.makeSubmitBtn())\n }\n if (!isFalse(this.options.resetBtn.show)) {\n vn.push(this.makeResetBtn())\n }\n if (!vn.length) {\n return;\n }\n let {labelCol, wrapperCol, layout} = this.rule.props;\n if (layout !== 'horizontal') {\n labelCol = wrapperCol = {};\n }\n const item = this.$r({\n type: 'formItem',\n key: `${this.key}fb`,\n props: {\n labelCol,\n wrapperCol,\n label: ' ', colon: false\n }\n }, vn);\n\n return layout === 'inline'\n ? item\n : this.$r({\n type: 'col',\n props: {span: 24},\n key: `${this.key}fc`\n }, [item]);\n },\n makeResetBtn() {\n const resetBtn = this.options.resetBtn;\n return this.$r({\n type: 'button',\n props: resetBtn,\n style: {width: resetBtn.width, marginLeft: '10px'},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n resetBtn.click\n ? resetBtn.click(fApi)\n : fApi.resetFields();\n }\n },\n key: `${this.key}b2`,\n }, [resetBtn.innerText]);\n },\n makeSubmitBtn() {\n const submitBtn = this.options.submitBtn;\n\n return this.$r({\n type: 'button',\n props: submitBtn,\n style: {width: submitBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n submitBtn.click\n ? submitBtn.click(fApi)\n : fApi.submit();\n }\n },\n key: `${this.key}b1`,\n }, [submitBtn.innerText]);\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst maker = {};\n\nfunction useAlias(maker) {\n ['upload', 'frame', 'autoComplete', 'cascader', 'datePicker', 'frame', 'inputNumber', 'radio', 'rate', 'switch', 'rate', 'slider', 'timePicker'].reduce((maker, name) => {\n maker[name] = creatorFactory(name);\n return maker;\n }, maker);\n maker.auto = maker.autoComplete;\n maker.number = maker.inputNumber;\n maker.time = maker.timePicker;\n}\n\nfunction useFrame(maker) {\n const types = {\n frameInputs: ['input', 0],\n frameFiles: ['file', 0],\n frameImages: ['image', 0],\n frameInputOne: ['input', 1],\n frameFileOne: ['file', 1],\n frameImageOne: ['image', 1]\n };\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory('frame', m => m.props({type: types[key][0], maxLength: types[key][1]}));\n return maker\n }, maker);\n\n maker.frameInput = maker.frameInputs;\n maker.frameFile = maker.frameFiles;\n maker.frameImage = maker.frameImages;\n}\n\nfunction useSlider(maker) {\n maker['sliderRange'] = creatorFactory('slider', {range: true})\n}\n\nfunction useSelect(m) {\n m.selectMultiple = creatorFactory(name, {mode:'multiple'});\n m.selectTags = creatorFactory(name, {mode: 'tags'});\n m.selectCombobox = creatorFactory(name, {mode:'combobox'});\n}\n\nfunction useUpload(maker) {\n const types = {\n image: ['image', 0],\n file: ['file', 0],\n uploadFileOne: ['file', 1],\n uploadImageOne: ['image', 1],\n };\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory('upload', m => m.props({uploadType: types[key][0], maxLength: types[key][1]}));\n return maker\n }, maker);\n\n maker.uploadImage = maker.image;\n maker.uploadFile = maker.file;\n}\n\nuseAlias(maker);\nuseSlider(maker);\nuseFrame(maker);\nuseUpload(maker);\nuseSelect(maker);\n\nexport default maker;\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '@form-create/core/src/frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction tidyBtnProp(btn, def) {\n if (is.Boolean(btn))\n btn = {show: btn};\n else if (!is.Undef(btn) && !is.Object(btn)) btn = {show: def};\n return btn;\n}\n\nexport default function extendApi(api, h) {\n extend(api, {\n validate(callback) {\n let flag;\n const forms = api.children;\n let len = forms.length;\n const validate = () => {\n h.$manager.validate((...args) => {\n if (!args[0] || !flag) {\n flag = args;\n }\n callback && callback(...flag);\n });\n };\n\n const validFn = (args) => {\n setTimeout(() => {\n if (!args[0]) {\n if (!flag) {\n flag = args;\n }\n }\n if (!--len) {\n validate();\n }\n });\n };\n\n forms.forEach(form => {\n form.validate((...args) => validFn(args))\n })\n\n if (!len) {\n validate();\n }\n },\n validateField: (field, callback) => {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n const sub = h.subForm[ctx.id];\n let len = 0;\n let flag;\n const validate = () => {\n h.$manager.validateField(ctx.id, (...args) => {\n if (args[0]) {\n flag = args;\n } else if (flag) {\n return callback && callback('子表单验证未通过', flag[1]);\n }\n callback && callback(...flag || args);\n });\n };\n const validFn = (args) => {\n setTimeout(() => {\n if (!args[0]) {\n if (!flag) {\n flag = args;\n }\n }\n if (!--len) {\n validate();\n }\n });\n };\n sub && toArray(sub).forEach(form => {\n len++;\n form.validate((...args) => validFn(args))\n });\n\n if (!len) {\n validate();\n }\n },\n clearValidateState(fields, clearSub = true) {\n api.helper.tidyFields(fields).forEach(field => {\n if (clearSub) this.clearSubValidateState(field);\n h.getCtxs(field).forEach(ctx => {\n h.$manager.clearValidateState(ctx);\n });\n });\n },\n clearSubValidateState(fields) {\n api.helper.tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n const subForm = h.subForm[ctx.id];\n if (!subForm) return;\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.clearValidateState();\n })\n } else if (subForm) {\n subForm.clearValidateState();\n }\n });\n })\n },\n btn: {\n loading: (loading = true) => {\n api.submitBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.submitBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.submitBtnProps({show: !!isShow});\n }\n },\n resetBtn: {\n loading: (loading = true) => {\n api.resetBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.resetBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.resetBtnProps({show: !!isShow});\n }\n },\n submitBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.submitBtn, true);\n extend(btn, props);\n h.options.submitBtn = btn;\n api.refreshOptions();\n },\n resetBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.resetBtn, false);\n extend(btn, props);\n h.options.resetBtn = btn;\n api.refreshOptions();\n },\n submit(successFn, failFn) {\n api.validate((valid) => {\n if (valid) {\n let formData = api.formData();\n if (is.Function(successFn))\n invoke(() => successFn(formData, this));\n else {\n is.Function(h.options.onSubmit) && invoke(() => h.options.onSubmit(formData, this));\n h.vm.$emit('submit', formData, this);\n }\n } else {\n is.Function(failFn) && invoke(() => failFn(this, ...arguments));\n }\n });\n },\n });\n\n return api;\n}\n","import components from '../components';\nimport parsers from '../parsers';\nimport alias from './alias';\nimport manager from './manager';\nimport FormCreateFactory from '@form-create/core/src/index';\nimport makers from './maker';\nimport '../style/index.css';\nimport extendApi from './api';\n\nfunction install(FormCreate) {\n FormCreate.componentAlias(alias);\n\n components.forEach(component => {\n FormCreate.component(component.name, component);\n });\n\n parsers.forEach((parser) => {\n FormCreate.parser(parser);\n });\n\n Object.keys(makers).forEach(name => {\n FormCreate.maker[name] = makers[name];\n });\n}\n\nexport default function antdvFormCreate() {\n return FormCreateFactory({\n ui: `${process.env.UI}`,\n version: `${process.env.VERSION}`,\n manager,\n install,\n extendApi,\n attrs: {\n normal: ['col', 'wrap'],\n array: ['className'],\n key: ['title', 'info'],\n }\n });\n}\n","import antdvFormCreate from './core/index';\n\nconst FormCreate = antdvFormCreate();\n\nif (typeof window !== 'undefined') {\n window.formCreate = FormCreate;\n if (window.Vue) {\n FormCreate.install(window.Vue);\n }\n}\n\nconst maker = FormCreate.maker;\n\nexport {maker}\n\nexport default FormCreate;\n"],"names":["_extends","Object","assign","a","b","c","arguments","length","d","prototype","hasOwnProperty","call","apply","this","normalMerge","toArrayMerge","functionalMerge","mergeJsxProps","reduce","indexOf","Array","e","concat","f","g","h","i","mergeFn","toString","val","_typeof","JSON","stringify","String","$set","target","field","value","Vue","set","$del","is","type","arg","Undef","v","Element","nodeType","trueArray","data","isArray","hasProperty","rule","k","deepExtend","origin","mode","isArr","key","clone","nst","undefined","_clone","getRule","__json","__origin","filter","__ctrl","deepCopy","toArray","getSlot","slots","exclude","keys","lst","name","push","forEach","t","parseFile","file","uid","url","getFileName","status","split","pop","parseUpload","NAME","formCreateParser","toFormValue","toValue","formValue","ctx","prop","props","limit","Number","formCreateInject","required","onSuccess","Function","onHandle","previewImage","previewVisible","modalTitle","previewMask","fileList","map","defaultUploadList","uploadList","watch","n","$refs","upload","sFileList","methods","handleChange","list","input","splice","$emit","render","isShow","on","bind","$slots","_this","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","helper","Boolean","disabled","src","icon","width","height","maxLength","okBtnText","closeBtnText","handleIcon","title","allowRemove","onOpen","onOk","onCancel","onLoad","onBeforeRemove","onRemove","getSrc","modal","srcKey","footer","reload","closeBtn","okBtn","frameVisible","unique","closeModal","close","$off","showModal","makeInput","readonly","makeGroup","children","makeBtn","makeItem","index","valid","Error","makeIcons","icons","makeHandleIcon","makeRemoveIcon","_this2","handleClick","_this3","handleRemove","makeFiles","_this4","makeImages","_this5","_this6","frameLoad","iframe","_this7","get","fn","$on","onClose","console","log","makeFooter","$props","node","_this8","Node","$nextTick","_this9","frame","contentWindow","mounted","rules","expand","options","button","max","min","syncDisabled","fontSize","onBeforeAdd","len","cacheRule","cacheValue","computed","formRule","$f","expandRule","total","addRule","setValue","removeRule","subForm","_value","cache","formData","form","coverValue","emit","copyRules","submitBtn","resetBtn","add$f","$delete","add","del","addIcon","delIcon","makeIcon","$scopedSlots","vm","emitEvent","args","created","beforeMount","$options","components","FormCreate","$form","str","group","mergeProp","checkbox","extend","$FormCreate","componentName","model","provide","$pfc","inject","option","extendOption","api","destroyed","validate","renderRule","ctxInject","updateValue","formCreate","_refresh","_renderRule","_updateValue","handler","deep","initOptions","refresh","every","$handle","reloadRule","beforeCreate","propsData","mergeProps","objects","initial","opt","_normalMerge","_toArrayMerge","_functionalMerge","propsMerge","arrA","arrB","event","hook","fn1","fn2","keyAttrs","arrayAttrs","normalAttrs","attrs","format","msg","tip","warn","err","error","logError","PREFIX","SUFFIX","$T","$TX","FUNCTION","toJson","obj","space","_isVue","__emit","makeFn","eval","parseFn","trim","flag","replace","__inject","parseJson","json","parse","enumerable","writable","configurable","copyRule","mergeRule","merge","array","normal","mergeGlobal","funcProxy","that","proxy","defineProperties","byCtx","__fc__","__origin__","invoke","def","toLine","line","toLocaleLowerCase","substr","id","uniqueId","Math","random","Date","now","deepSet","idx","to","_data","baseRule","hidden","display","creatorFactory","init","maker","Creator","appendProto","setProp","constructor","commonMaker","create","make","createTmp","template","makerFactory","factory","copy","Api","tidyFields","fields","getCtxs","$render","clearCache","allSubForm","subs","sub","getFieldCtx","appendData","getValue","deferSyncValue","ctxs","fieldCtx","removeField","getCtx","rm","destroy","$el","parentNode","removeChild","$destroy","append","after","child","sort","root","prepend","state","hiddenStatus","displayStatus","component","nameCtx","updateOptions","fc","onSubmit","sync","deleted","clearCacheAll","refreshOptions","$manager","hideForm","hide","changeStatus","clearChangeStatus","updateRule","updateRules","mergeRules","updateValidate","updateValidates","validates","refreshValidate","resetFields","defaultValue","refreshControl","method","el","exec","trigger","getSubForm","nextTick","bus","$once","nextRefresh","changeValue","changeField","useCache","Render","initCache","use","parent","setCache","vnode","slot","getCache","toCase","lower","toLocaleUpperCase","toLowerCase","useRender","initRender","tempList","clearOrgChildren","initOrgChildren","orgChildren","parser","loadChildren","vn","$h","$createElement","beforeRender","renderList","renderSlot","renderName","renderId","renderField","container","renderCtx","makeVm","getInjectData","global","cacheConfig","originType","trueType","setOptions","optionsTo","setTempProps","injectProp","injectKeys","renderTemp","compile","onInput","parseSide","side","renderSides","temp","prefix","suffix","cacheFlag","_type","none","renderChildren","initProp","tidyRule","ctxProp","makeWrap","item","addSubForm","custom","onMounted","getFormData","callback","expression","__rule__","effect","isRm","rmCtx","defaultRender","vNode","alias","aliasMap","_this10","handle","CreateNode","useInject","Handler","parseInjectEvent","injectEvent","parseEventLst","parseEvent","parseEmit","emitPrefix","emitKey","eventName","eventInject","fieldKey","_inject","self","_fn","watching","loading","unshift","EVENT","usePage","page","first","getLimit","parseInt","pageEnd","pageLoad","pageFn","loadRule","ceil","clearNextTick","clearTimeout","bindNextTick","setTimeout","loadedId","RuleContext","wrapRef","linkOn","ctrlRule","payload","updateType","updateKey","update","useLoader","parseRule","_rule","fullRule","appendValue","loadFn","loadCtrl","control","ctrl","syncProp","pre","fapi","cycleLoad","_loadRule","syncForm","isRepeat","ruleEffect","repeat","isCopy","isInit","check","isCtrl","bindParser","setCtx","_preIndex","preIndex","r","updated","refreshUpdate","defineProperty","valueHandle","useCtrl","controls","getCtrl","handleFn","findCtrl","isHidden","reverse","ruleCon","ctrlCtx","_reloadRule","initData","reloading","nextReload","useInput","setFlag","setFormData","syncValue","valueChange","isQuote","isChange","toEmpty","deferSyncFn","refreshRule","appendLink","link","effectData","clearEffectData","setParser","unwatch","un","unlink","watchTo","watchCtx","rmCtrl","$api","_rm","noWatch","getType","BaseParser","useContext","getNameCtx","setIdCtx","rmIdCtx","isMounted","getParser","parsers","noWatchFn","$watch","o","rmSub","watchEffect","useLifecycle","_mounted","lifecycle","useEffect","useProvider","ps","providers","_c","getComponent","onEffect","provider","used","_used","emitEffect","getEffect","attr","p","getProp","clearProp","arr","manager","extendApi","getError","action","xhr","getBody","text","responseText","response","fetch","XMLHttpRequest","onerror","onError","onload","open","dataType","FormData","setRequestHeader","withCredentials","headers","send","__init","functional","parseProp","domProps","innerHTML","CreateNodeFactory","setVm","tag","config","isReservedTag","nativeOn","context","nodes","createManager","proto","CustomManager","Manager","mergeOptionsRule","$r","mergeOptions","tidyOptions","getDefaultOptions","$fetch","loaded","run","parseOpt","body","message","_vue","window","_parseProp","nameProp","_getEl","querySelector","mountForm","$vm","$data","$mount","exportAttrs","FormCreateFactory","_fragment","fragment","directives","globalConfig","directive","register","componentAlias","base","install","_opt","$parent","useAttr","version","ui","mount","remove","Handle","isSub","_installedFormCreate","$formCreate","FORMAT_TYPE","date","month","week","range","toMoment","moment","getFormat","dateRange","datetimeRange","m","showTime","idate","replaceFields","checkedKeys","checkable","_","col","span","row","datePicker","timePicker","tree","radio","select","PRE","tooltip","popover","slider","rate","cascader","rangePicker","weekPicker","monthPicker","inputNumber","search","textarea","formItem","autoComplete","object","UNDEF","getConfig","hideRequiredMark","layout","labelAlign","labelCol","wrapperCol","validateOnRuleChange","gutter","innerText","show","click","isTooltip","info","tidy","isFalse","tidyBool","validateField","clearValidateState","fItem","validateMessage","validateState","wrap","placement","submit","preventDefault","className","makeFormBtn","makeRow","uni","_col","makeInfo","makeCol","titleProp","infoProp","isTool","titleFn","align","makeSubmitBtn","makeResetBtn","label","colon","marginLeft","fApi","useAlias","auto","number","time","useFrame","types","frameInputs","frameFiles","frameImages","frameInputOne","frameFileOne","frameImageOne","frameInput","frameFile","frameImage","useSlider","useSelect","selectMultiple","selectTags","selectCombobox","useUpload","image","uploadFileOne","uploadImageOne","uploadType","uploadImage","uploadFile","tidyBtnProp","btn","forms","validFn","clearSub","clearSubValidateState","submitBtnProps","resetBtnProps","successFn","failFn","makers","antdvFormCreate","process"],"mappings":"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"}
\No newline at end of file