UNPKG

241 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/slot.js","../../../components/element-ui/checkbox/src/component.jsx","../../utils/lib/toarray.js","../../../node_modules/style-inject/dist/style-inject.es.js","../../../components/element-ui/frame/src/component.jsx","../../../components/element-ui/radio/src/component.jsx","../../utils/lib/type.js","../../../components/element-ui/select/src/component.jsx","../../../components/element-ui/tree/src/component.jsx","../../../components/element-ui/upload/src/component.jsx","../../../components/element-ui/group/src/component.jsx","../../../components/common/subform/src/component.jsx","../src/components/index.js","../../utils/lib/modify.js","../../utils/lib/extend.js","../../core/src/components/formCreate.js","../../utils/lib/mergeprops.js","../../core/src/frame/attrs.js","../../utils/lib/deepextend.js","../../utils/lib/console.js","../../core/src/frame/util.js","../../utils/lib/tostring.js","../../utils/lib/toline.js","../../utils/lib/unique.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/handler/helper.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/slider.js","../src/parsers/timePicker.js","../src/parsers/row.js","../src/parsers/select.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 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 getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcCheckbox';\n\nexport default {\n name: NAME,\n props: {\n formCreateRule: {\n type: Object,\n default: () => ({})\n },\n formCreateOptions: {\n type: Array,\n default: () => []\n },\n value: {\n type: Array,\n default: () => []\n },\n type: String,\n },\n watch: {\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n methods: {\n onInput(n) {\n this.$emit('input', this.formCreateOptions.filter((opt) => n.indexOf(opt.label) !== -1).map((opt) => opt.value).filter(v => v !== undefined));\n },\n update() {\n this.trueValue = this.value ? this.formCreateOptions.filter((opt) => this.value.indexOf(opt.value) !== -1)\n .map((option) => option.label) : []\n }\n },\n created() {\n this.update();\n },\n render() {\n return <ElCheckboxGroup {...this.formCreateRule} value={this.trueValue}\n on-input={this.onInput}>{this.formCreateOptions.map((opt, index) => {\n const props = {...opt};\n const Type = this.type === 'button' ? 'ElCheckboxButton' : 'ElCheckbox';\n delete props.value;\n return <Type {...{props}} key={Type + index + opt.value}/>\n })}{getSlot(this.$slots)}</ElCheckboxGroup>\n }\n}\n","export default function toArray(value) {\n return Array.isArray(value)\n ? value\n : ([null, undefined, ''].indexOf(value) > -1 ? [] : [value]);\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 formCreateField: String,\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: 'el-icon-upload2'\n },\n width: {\n type: String,\n default: '500px'\n },\n height: {\n type: String,\n default: '370px'\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 src(n) {\n this.modalVm && (this.modalVm.src = n);\n }\n },\n methods: {\n key(unique) {\n return unique;\n },\n closeModel(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 handleCancel() {\n this.previewVisible = false;\n },\n\n showModel() {\n if (this.disabled || false === this.onOpen()) {\n return;\n }\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 <ElInput props={props} key={this.key('input')}>\n {this.fileList.length ? <i slot=\"suffix\" class=\"el-input__icon el-icon-circle-close\"\n on-click={() => this.fileList = []}/> : null}\n <ElButton icon={this.icon} on={{'click': () => this.showModel()}} slot=\"append\"/>\n </ElInput>\n },\n\n makeGroup(children) {\n if (!this.maxLength || this.fileList.length < this.maxLength) {\n children.push(this.makeBtn());\n }\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.formCreateField || this.field;\n if (field && f !== field) {\n throw new Error('[frame]无效的字段值');\n }\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 }\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 <i\n class={(this.handleIcon === true || this.handleIcon === undefined) ? 'el-icon-view' : this.handleIcon}\n on-click={() => this.handleClick(val)} key={this.key('hi' + index)}/>\n },\n\n makeRemoveIcon(val, index) {\n return <i class=\"el-icon-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, [<i class=\"el-icon-tickets\"\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.showModel()} key={this.key('btn')}>\n <i class={this.icon}/>\n </div>\n },\n handleClick(src) {\n if (this.disabled) {\n return;\n }\n return this.onHandle(src);\n },\n handleRemove(src) {\n if (this.disabled) {\n return;\n }\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.closeModel();\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 if (!footer) {\n return;\n }\n return <div slot=\"footer\">\n {closeBtn ? <ElButton\n on-click={() => (this.onCancel() !== false && (this.frameVisible = false))}>{closeBtnText}</ElButton> : null}\n {okBtn ? <ElButton type=\"primary\"\n on-click={() => (this.onOk() !== false && this.closeModel())}>{okBtnText}</ElButton> : null}\n </div>\n }\n },\n render() {\n const type = this.type;\n\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\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 <el-dialog appendToBody={true} modal={this.previewMask} title={modalTitle} visible={this.previewVisible}\n on-close={this.handleCancel}>\n <img alt=\"example\" style=\"width: 100%\" src={this.previewImage}/>\n </el-dialog>\n <el-dialog appendToBody={true} props={{width, title, ...this.modal}} visible={this.frameVisible}\n on-close={() => (this.closeModel(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 {this.makeFooter()}\n </el-dialog>\n </div>\n },\n mounted() {\n this.$on('fc.closeModal', this.closeModal);\n }\n}\n","import getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcRadio';\n\nexport default {\n name: NAME,\n props: {\n formCreateRule: {\n type: Object,\n default: () => ({})\n },\n formCreateOptions: {\n type: Array,\n default: () => []\n },\n value: {},\n type: String,\n },\n watch: {\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n methods: {\n onInput(n) {\n this.$emit('input', this.formCreateOptions.filter((opt) => opt.label === n).reduce((initial, opt) => opt.value, ''));\n },\n update() {\n this.trueValue = this.formCreateOptions.filter((opt) => opt.value === this.value).reduce((initial, opt) => opt.label, '');\n }\n },\n created() {\n this.update();\n },\n render() {\n return <ElRadioGroup {...this.formCreateRule} value={this.trueValue}\n on-input={this.onInput}>{this.formCreateOptions.map((opt, index) => {\n const props = {...opt};\n const Type = this.type === 'button' ? 'ElRadioButton' : 'ElRadio';\n delete props.value;\n return <Type {...{props}} key={Type + index + opt.value}/>\n })}{getSlot(this.$slots)}</ElRadioGroup>\n }\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 is from '@form-create/utils/lib/type';\n\nconst NAME = 'fcSelect';\nexport default {\n name: NAME,\n functional: true,\n props: {\n formCreateOptions: {\n type: Array,\n default: () => ([])\n },\n },\n render(h, ctx) {\n return <ElSelect {...ctx.data}>{ctx.props.formCreateOptions.map((props, index) => {\n const slot = props.slot;\n return <ElOption {...{props}}\n key={'' + index + props.value}>\n {slot ? <template\n slot={props.slotName || 'default'}>{is.Function(slot) ? props.slot(h) : slot}</template> : null}\n </ElOption>\n })}{ctx.children}</ElSelect>;\n }\n}\n","import toArray from '@form-create/utils/lib/toarray';\nimport getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcTree';\n\nexport default {\n name: NAME,\n formCreateParser: {\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!props.nodeKey) props.nodeKey = 'id';\n if (!props.props) props.props = {\n label: 'title'\n };\n }\n },\n props: {\n formCreateRule: {\n type: Object,\n default: () => ({props: {}})\n },\n type: {\n type: String,\n default: 'checked'\n },\n value: {\n type: [Array, String, Number],\n default: () => ([])\n }\n },\n watch: {\n value() {\n this.setValue();\n }\n },\n methods: {\n onChange() {\n this.updateValue()\n },\n updateValue() {\n if (!this.$refs.tree) return;\n const type = this.type.toLocaleLowerCase();\n let value;\n\n if (type === 'selected') {\n value = this.$refs.tree.getCurrentKey();\n } else {\n value = this.$refs.tree.getCheckedKeys();\n }\n\n this.$emit('input', value);\n },\n setValue() {\n const type = this.type.toLocaleLowerCase();\n\n if (type === 'selected') {\n this.$refs.tree.setCurrentKey(this.value);\n } else {\n this.$refs.tree.setCheckedKeys(toArray(this.value));\n }\n }\n },\n render() {\n return <ElTree {...this.formCreateRule} ref=\"tree\" on-check-change={() => this.updateValue()}\n on-node-click={() => this.updateValue()}>{getSlot(this.$slots)}</ElTree>;\n },\n mounted() {\n this.setValue();\n this.updateValue();\n }\n}\n","import toArray from '@form-create/utils/lib/toarray';\nimport getSlot from '@form-create/utils/lib/slot';\nimport './style.css';\n\nfunction parseFile(file, i) {\n return {\n url: file,\n name: getFileName(file),\n uid: i\n };\n}\n\nfunction getFileName(file) {\n return ('' + file).split('/').pop()\n}\n\nconst NAME = 'fcUpload';\n\nexport default {\n name: NAME,\n props: {\n formCreateRule: {\n type: Object,\n default: () => ({props: {}})\n },\n onHandle: {\n type: Function,\n default(file) {\n this.previewImage = file.url;\n this.previewVisible = true;\n }\n },\n uploadType: {\n type: String,\n default: 'file'\n },\n limit: {\n type: Number,\n default: 0\n },\n allowRemove: {\n type: Boolean,\n default: true\n },\n previewMask: undefined,\n modalTitle: String,\n handleIcon: {\n type: [String, Boolean],\n default: () => undefined\n },\n value: [Array, String]\n },\n data() {\n return {\n uploadList: [],\n previewVisible: false,\n previewImage: ''\n }\n },\n created() {\n if (this.formCreateRule.props.showFileList === undefined) {\n this.formCreateRule.props.showFileList = false;\n }\n this.formCreateRule.props.fileList = toArray(this.value).map(parseFile);\n },\n watch: {\n value(n) {\n if (this.$refs.upload.uploadFiles.every(file => {\n return !file.status || file.status === 'success';\n })) {\n this.$refs.upload.uploadFiles = toArray(n).map(parseFile);\n this.uploadList = this.$refs.upload.uploadFiles;\n }\n },\n limit(n, o) {\n if (o === 1 || n === 1) {\n this.update();\n }\n }\n },\n methods: {\n key(unique) {\n return unique;\n },\n isDisabled() {\n return this.formCreateRule.props.disabled === true;\n },\n onRemove(file) {\n if (this.isDisabled()) {\n return;\n }\n this.$refs.upload.handleRemove(file);\n },\n handleClick(file) {\n if (this.isDisabled()) {\n return;\n }\n this.onHandle(file);\n },\n makeItem(file, index) {\n return this.uploadType === 'image'\n ? <img src={file.url} key={this.key('img' + index)}/>\n : <i class=\"el-icon-tickets\" key={this.key('i' + index)}/>\n },\n makeRemoveIcon(file, index) {\n return <i class=\"el-icon-delete\" on-click={() => this.onRemove(file)} key={this.key('ri' + index)}/>;\n },\n makeHandleIcon(file, index) {\n return <i\n class={(this.handleIcon === true || this.handleIcon === undefined) ? 'el-icon-view' : this.handleIcon}\n on-click={() => this.handleClick(file)} key={this.key('hi' + index)}/>;\n },\n makeProgress(file, index) {\n return <ElProgress props={{percentage: file.percentage, type: 'circle', width: 52}} style=\"margin-top:2px;\"\n key={this.key('pg' + index)}/>\n },\n makeIcons(file, index) {\n const icons = [];\n if (this.allowRemove || this.handleIcon !== false) {\n if ((this.uploadType !== 'file' && this.handleIcon !== false) || (this.uploadType === 'file' && this.handleIcon)) {\n icons.push(this.makeHandleIcon(file, index));\n }\n if (this.allowRemove) {\n icons.push(this.makeRemoveIcon(file, index));\n }\n\n return <div class='fc-upload-cover'>{icons}</div>;\n }\n },\n makeFiles() {\n return this.uploadList.map((file, index) => this.$scopedSlots.fileList ? this.$scopedSlots.fileList({\n file,\n index,\n vm: this\n }) : <div key={this.key(index)}\n class='fc-files'>{(file.percentage !== undefined && file.status !== 'success') ? this.makeProgress(file, index) : [this.makeItem(file, index), this.makeIcons(file, index)]}</div>);\n },\n makeUpload() {\n const isShow = (!this.limit || this.limit > this.uploadList.length);\n return <ElUpload {...this.formCreateRule} ref=\"upload\"\n style={{display: 'inline-block'}}\n key={this.key('upload')}>\n {isShow ? <template slot=\"default\">\n {this.$slots.default || <div class='fc-upload-btn'>\n <i class=\"el-icon-upload2\"/>\n </div>}\n </template> : null}{getSlot(this.$slots, ['default'])}\n </ElUpload>;\n },\n update() {\n let files = this.$refs.upload.uploadFiles.map((file) => file.url).filter((url) => url !== undefined);\n this.$emit('input', this.limit === 1 ? (files[0] || '') : files);\n },\n handleCancel() {\n this.previewVisible = false;\n },\n },\n render() {\n if (this.$refs.upload) {\n if (this.formCreateRule.props.showFileList === undefined) {\n this.formCreateRule.props.showFileList = this.$refs.upload.showFileList;\n }\n this.formCreateRule.props.fileList = this.$refs.upload.fileList;\n }\n return (\n <div\n class='_fc-upload'>{[this.formCreateRule.props.showFileList ? [] : this.makeFiles(), this.makeUpload()]}\n <el-dialog appendToBody={true} modal={this.previewMask} title={this.modalTitle} visible={this.previewVisible}\n on-close={this.handleCancel}>\n <img alt=\"example\" style=\"width: 100%\" src={this.previewImage}/>\n </el-dialog>\n </div>);\n },\n mounted() {\n this.uploadList = this.$refs.upload.uploadFiles;\n this.$watch(() => this.$refs.upload.uploadFiles, () => {\n this.update();\n }, {deep: true});\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 formCreate: Object,\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 fontSize: {\n type: Number,\n default: 28\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 const lst = this.cacheRule;\n Object.keys(lst).forEach(k => {\n lst[k].$f.disabled(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.$formCreate.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 $f.disabled(this.disabled);\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n subForm() {\n this.$emit('fc.sub-form', 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 (!this.disabled) && this.addRule(i, true);\n },\n del(index, key) {\n if (this.disabled) {\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 <i key={`a${key}`} class=\"el-icon-circle-plus-outline\"\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 <i key={`d${key}`} class=\"el-icon-remove-outline\"\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 })) : <i key={'a_def'} class=\"el-icon-circle-plus-outline\"\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 <ElRow align=\"middle\" type=\"flex\" key={key}\n style=\"border-bottom:1px dashed #DCDFE6;margin-bottom:10px;\">\n <ElCol span={button ? 20 : 24}><ElFormItem><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}/></ElFormItem></ElCol>\n {button ? <ElCol span={2} pull={1} push={1}>{this.makeIcon(keys.length, index, key)}</ElCol> : null}\n </ElRow>\n })}</div>\n }\n}\n","const NAME = 'fcSubForm';\n\nexport default {\n name: NAME,\n props: {\n rule: Array,\n options: Object,\n formCreate: Object,\n value: {\n type: Object,\n default: () => ({})\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n cacheRule: {},\n cacheValue: {},\n }\n },\n watch: {\n disabled(n) {\n 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 $f.disabled(this.disabled);\n this.$emit('itemMounted', $f);\n });\n },\n subForm() {\n this.$emit('fc.sub-form', 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}\n","import checkbox from '@form-create/component-elm-checkbox/src/index';\nimport frame from '@form-create/component-elm-frame/src/index';\nimport radio from '@form-create/component-elm-radio/src/index';\nimport select from '@form-create/component-elm-select/src/index';\nimport tree from '@form-create/component-elm-tree/src/index';\nimport upload from '@form-create/component-elm-upload/src/index';\nimport group from '@form-create/component-elm-group/src/index';\nimport subForm from '@form-create/component-subform/src/index';\n\n\nexport default [\n checkbox,\n frame,\n radio,\n select,\n tree,\n upload,\n group,\n subForm,\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","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 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, value} = this.$options.propsData;\n this.formCreate = new FormCreate(this, rule, option);\n extend(this.formCreate.options.formData, value || {});\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'];\n\nexport const arrayAttrs = ['validate', 'children', 'control'];\n\nexport const normalAttrs = ['effect'];\n\nexport function attrs() {\n return [...keyAttrs, ...normalMerge, ...toArrayMerge, ...functionalMerge, ...arrayAttrs, ...normalAttrs];\n}\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 {\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 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 '@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 {err, logError} from '@form-create/utils/lib/console';\n\nconst PREFIX = '[[FORM-CREATE-PREFIX-';\nconst SUFFIX = '-FORM-CREATE-SUFFIX]]';\n\nconst $T = '$FN:';\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 (val.__inject)\n val = val.__origin;\n\n if (val.__emit)\n return undefined;\n\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)) {\n let v = fn.trim();\n let flag = false;\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(!mode && v.indexOf(FUNCTION) === 0 && v !== FUNCTION){\n flag = true;\n }\n if(!flag) return fn;\n try{\n return makeFn(v.indexOf(FUNCTION) === -1 && v.indexOf('(') !== 0 ? (FUNCTION + ' ' + v) : v);\n }catch (e){\n err(`解析失败:${v}`);\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\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 toString(val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\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","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 {err, format} from '@form-create/utils/lib/console';\n\n\nfunction copy(value) {\n return deepCopy(value);\n}\n\nfunction byRules(ctxs, origin) {\n return Object.keys(ctxs).reduce((initial, key) => {\n initial[key] = origin ? ctxs[key].origin : ctxs[key].rule;\n return initial;\n }, {});\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 const ctx = h.getCtx(field);\n if (!ctx) return;\n $set(ctx.rule, key, val);\n h.$render.clearCache(ctx);\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.fieldCtx[id];\n if (!ctx) return initial;\n initial[ctx.field] = copy(ctx.rule.value);\n return initial;\n }, {});\n },\n getValue(field) {\n const ctx = h.fieldCtx[field];\n if (!ctx) return;\n return copy(ctx.rule.value);\n },\n coverValue(formData) {\n h.deferSyncValue(() => {\n Object.keys(h.fieldCtx).forEach(key => {\n const ctx = h.fieldCtx[key];\n if (!ctx) return h.appendData[key] = formData[key];\n ctx.rule.value = hasProperty(formData, key) ? formData[key] : undefined;\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 ctx = h.fieldCtx[key];\n if (!ctx) return h.appendData[key] = formData[key];\n ctx.rule.value = formData[key];\n });\n })\n },\n removeField(field) {\n let ctx = h.getCtx(field);\n if (!ctx) return;\n ctx.rm();\n return ctx.origin;\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 fields = Object.keys(h.fieldCtx), index = h.sort.length - 1, rules;\n\n if (rule.field && fields.indexOf(rule.field) > -1)\n return err(`${rule.field} 字段已存在`, rule);\n\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 fields = Object.keys(h.fieldCtx), index = 0, rules;\n\n if (rule.field && fields.indexOf(rule.field) > -1)\n return err(`${rule.field} 字段已存在`, rule);\n\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 const ctx = h.fieldCtx[field];\n if (!ctx) return;\n $set(ctx.rule.props, 'disabled', !!disabled);\n });\n h.refresh();\n },\n model(origin) {\n return byRules(h.fieldCtx, origin);\n },\n component(origin) {\n return byRules(h.nameCtx, origin);\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 const ctx = is.Object(field) ? byCtx(field) : h.getCtx(field);\n if (ctx && !ctx.deleted) {\n const subForm = h.subForm[field];\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 h.refresh();\n }\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 const r = api.getRule(id);\n r && extend(r, rule);\n },\n updateRules(rules) {\n Object.keys(rules).forEach(id => {\n api.updateRule(id, rules[id]);\n })\n },\n mergeRule: (id, rule) => {\n const ctx = h.getCtx(id);\n ctx && mergeRule(ctx.rule, rule);\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 let ctxs = h.fieldCtx;\n tidyFields(fields).forEach(field => {\n let ctx = ctxs[field];\n if (!ctx) return;\n h.$render.clearCache(ctx);\n ctx.rule.value = copy(ctx.defaultValue);\n h.refreshControl(ctx);\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 return h.subForm[field];\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 };\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';\n\nfunction setTempProps(vm, ctx, api) {\n if (!vm.$props) return;\n\n const {prop} = ctx;\n const keys = Object.keys(vm.$props);\n const inject = injectProp(ctx, api);\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\nfunction injectProp(ctx, api) {\n return {\n formCreate: api,\n formCreateField: ctx.field,\n formCreateOptions: ctx.prop.options,\n formCreateRule: (function () {\n const temp = {...ctx.prop};\n return temp.on = temp.on ? {...temp.on} : {}, temp;\n }()),\n }\n}\n\n\nexport default function useRender(Render) {\n extend(Render.prototype, {\n initRender() {\n this.renderList = {};\n this.clearOrgChildren();\n },\n initOrgChildren() {\n const ctxs = this.$handle.ctxs;\n this.orgChildren = Object.keys(ctxs).reduce((initial, id) => {\n const children = ctxs[id].rule.children;\n initial[id] = is.trueArray(children) ? [...children] : [];\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 const vn = this.sort.map((id) => {\n return this.renderCtx(this.$handle.ctxs[id]);\n }).filter((val) => val !== undefined);\n\n return this.$manager.render(vn);\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(() => 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 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.renderList[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.renderList[id] = {\n vm,\n template: Vue.compile(rule.template)\n };\n }\n\n const {vm, template} = this.renderList[id];\n\n setTempProps(vm, ctx, this.$handle.api);\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 renderSides(vn, ctx, temp) {\n const prop = ctx[temp ? 'rule' : 'prop'];\n return [this.renderRule(prop.prefix), vn, this.renderRule(prop.suffix)];\n },\n renderCtx(ctx, parent) {\n if (ctx.type === 'hidden') return;\n if (!this.cache[ctx.id]) {\n let vn;\n let cacheFlag = true;\n const _type = ctx.trueType;\n const none = !(is.Undef(ctx.rule.display) || !!ctx.rule.display);\n if (_type === 'template' && !ctx.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.ctxProp(ctx);\n let prop = ctx.prop;\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 vn = ctx.parser.render(this.renderChildren(ctx), ctx);\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 ctxProp(ctx, custom) {\n const {ref, key} = ctx;\n this.$manager.mergeProp(ctx, custom);\n ctx.parser.mergeProp(ctx, custom);\n const props = [\n {\n props: injectProp(ctx, this.$handle.api),\n ref: ref,\n key: `${key}fc`,\n slot: undefined,\n }\n ]\n\n if (!custom) {\n props.push({\n on: {\n 'hook:mounted': () => {\n this.onMounted(ctx);\n },\n 'fc.sub-form': (subForm) => {\n this.$handle.addSubForm(ctx, subForm);\n }\n },\n model: ctx.input ? {\n value: this.$handle.getFormData(ctx),\n callback: (value) => {\n this.onInput(ctx, value);\n },\n expression: `formData.${ctx.field}`\n } : undefined,\n })\n }\n mergeProps(props, ctx.prop);\n return ctx.prop;\n },\n onMounted(ctx) {\n ctx.el = this.vm.$refs[ctx.ref];\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 if (!is.trueArray(children) && orgChildren) {\n this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!is.String(child) && child.__fc__) {\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 (children.indexOf(child) === -1 && !is.String(child) && child.__fc__) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n\n return children.map(child => {\n if (is.String(child)) return child;\n if (child.__fc__) {\n return this.renderCtx(child.__fc__, ctx);\n }\n if (!this.$handle.isRepeatRule(child.__origin__ || child) && 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';\n\n\nexport default function useInject(Handler) {\n extend(Handler.prototype, {\n parseInjectEvent(rule, on) {\n if (rule.inject === false) return;\n const inject = rule.inject || this.options.injectEvent;\n if (is.Undef(inject)) return;\n Object.keys(on).forEach(k => {\n if (is.Function(on[k]))\n on[k] = this.inject(rule, on[k], inject)\n });\n return on;\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 $f: this.api,\n rule,\n self: self.__origin__,\n option,\n inject\n };\n },\n inject(self, _fn, inject) {\n if (_fn.__inject) {\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 args.unshift(h.getInjectData(self, inject));\n return _fn.apply(this, args);\n };\n fn.__inject = true;\n fn.__origin = _fn;\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 this.prop = mergeProps([this.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__.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.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 });\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\n if (rule.field && hasProperty(this.options.formData || {}, rule.field))\n rule.value = this.options.formData[rule.field];\n\n rule.options = Array.isArray(rule.options) ? rule.options : [];\n\n ['on', 'props', 'nativeOn'].forEach(k => {\n const v = rule[k];\n if (v) {\n Object.keys(v).forEach(n => {\n v[n] = parseFn(v[n]);\n })\n this.parseInjectEvent(rule, v);\n }\n })\n\n return rule;\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 isRepeatRule(rule) {\n return this.repeatRule.indexOf(rule) > -1;\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 const initEvent = (rule) => this.ruleEffect(rule, 'init');\n\n rules.map((_rule, index) => {\n if (parent && is.String(_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 if (!_rule.__fc__) initEvent(rule);\n\n if (rule.field && this.fieldCtx[rule.field] && this.fieldCtx[rule.field] !== _rule.__fc__) {\n this.repeatRule.push(_rule);\n return err(`${rule.field} 字段已存在`, _rule);\n }\n\n let ctx;\n if (_rule.__fc__) {\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 initEvent(getRule(_rule));\n ctx = null;\n }\n }\n }\n if (!ctx) {\n ctx = new RuleContext(this, this.parseRule(_rule));\n this.bindParser(ctx);\n } else if (ctx.originType !== ctx.rule.type) {\n ctx.updateType();\n this.bindParser(ctx);\n }\n this.appendValue(ctx.rule);\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 loadChildren(ctx.rule.children, ctx);\n\n if (!parent) {\n const _preIndex = preIndex(index);\n if (_preIndex > -1) {\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 const data = {\n ...control,\n valid: invoke(() => handleFn(ctx.rule.value, api)),\n ctrl: findCtrl(ctx, control.rule),\n };\n if ((data.valid && data.ctrl) || (!data.valid && !data.ctrl)) continue;\n validate.push(data);\n }\n if (!validate.length) return false;\n\n let flag = false;\n validate.reverse().forEach(({valid, rule, prepend, append, child, ctrl}) => {\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 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.field, value);\n },\n getFormData(ctx) {\n return this.formData[ctx.field];\n },\n validate() {\n toEmpty(this.vm.validate);\n Object.keys(this.fieldCtx).forEach(id => {\n const ctx = this.fieldCtx[id];\n this.vm.validate[ctx.field] = toArray(ctx.rule.validate);\n });\n return this.vm.validate;\n },\n syncForm() {\n toEmpty(this.form);\n Object.defineProperties(this.form, Object.keys(this.formData).reduce((initial, field) => {\n const ctx = this.getCtx(field);\n const handle = this.valueHandle(ctx);\n handle.configurable = true;\n initial[field] = handle;\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 this.subForm[ctx.field] = subForm;\n },\n deferSyncValue(fn) {\n if (!this.deferSyncFn) {\n this.deferSyncFn = fn;\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 const fn = ctx.rule.update;\n if (is.Function(fn)) {\n const state = invoke(() => fn(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.formData);\n },\n });\n}\n\nfunction toEmpty(obj) {\n Object.keys(obj).forEach(k => delete obj[k]);\n}","import {enumerable, getRule} from '../frame/util';\nimport is from '@form-create/utils/lib/type';\n\n\nexport default function useHelper(rules) {\n if (!Array.isArray(rules) || rules.findField) return;\n Object.defineProperties(rules, {\n findField: enumerable(findField),\n findName: enumerable(findName),\n setValue: enumerable(setValue),\n })\n}\n\nfunction find(field, name, origin) {\n if (!this.length) return;\n let children = [];\n for (let i = 0; i < this.length; i++) {\n if (!is.Object(this[i])) continue;\n let rule = getRule(this[i]);\n if (rule[name] === field) return origin ? rule : this[i];\n if (is.trueArray(rule.children)) children = children.concat(rule.children);\n is.trueArray(rule.control) && rule.control.forEach(r => {\n children = children.concat(r.rule);\n })\n }\n return find.call(children, field, name, origin);\n}\n\nfunction findField(field) {\n return find.call(this, field, 'field');\n}\n\nfunction findName(field) {\n return find.call(this, field, 'name');\n}\n\nfunction setValue(formData) {\n Object.keys(formData).forEach(field => {\n const rule = find.call(this, field, 'field', true);\n if (rule) rule.value = formData[field];\n });\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, $set} 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.fieldCtx[id] || this.nameCtx[id] || this.ctxs[id];\n },\n setCtx(ctx) {\n let {id, field, name, rule} = ctx;\n this.ctxs[id] = ctx;\n if (name) $set(this.nameCtx, name, ctx);\n if (!ctx.input) return;\n this.fieldCtx[field] = ctx;\n this.setFormData(ctx, ctx.parser.toFormValue(rule.value, ctx))\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'];\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 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'].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 (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, 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.renderList, id);\n $del(this.$render.orgChildren, id);\n $del(ctx, 'cacheValue');\n\n const f = this.fieldCtx[field];\n\n if (field && (!f || f === ctx)) {\n $del(this.formData, field);\n $del(this.form, field);\n $del(this.fieldCtx, field);\n $del(this.subForm, field);\n }\n if (name && this.nameCtx[name] === ctx) {\n $del(this.nameCtx, name);\n }\n if (!this.reloading) {\n this.deferSyncValue(() => {\n if (is.trueArray(ctx.rule.children)) {\n ctx.rule.children.forEach(h => h.__fc__ && this.rmCtx(h.__fc__));\n }\n this.syncValue();\n })\n if (ctx.root === this.rules) {\n this.vm._renderRule();\n }\n }\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 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 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 ruleEffect(rule, event) {\n this.emitEffect({\n rule,\n input: !!rule.field,\n type: this.getType(rule.type)\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) {\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)};\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 useHelper from './helper';\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 fieldCtx: {},\n ctxs: {},\n nameCtx: {},\n sort: [],\n rules,\n repeatRule: [],\n });\n useHelper(rules);\n },\n init() {\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 const formData = new FormData();\n\n if (option.data) {\n Object.keys(option.data).map(key => {\n formData.append(key, option.data[key]);\n });\n }\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 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 render(h, ctx) {\n return 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';\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 if (!option) return false;\n option = parseOpt(option);\n if (!option.to) {\n return false;\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 let data = inject.getProp(), to;\n option.to.split('.').forEach(v => {\n if (to) {\n data = data[to] = {};\n }\n to = v;\n })\n data[to] = val;\n }\n\n invoke(() => fetch({\n ...option,\n onSuccess(body) {\n if (check()) return;\n set((option.parse || ((v) => v.data))(body))\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 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 FormCreate(vm, rules, options) {\n extend(this, {\n vm,\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 parser,\n use,\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 }\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 {creatorFactory} from '@form-create/core/src/index';\n\nconst DEFAULT_FORMATS = {\n date: 'yyyy-MM-dd',\n month: 'yyyy-MM',\n datetime: 'yyyy-MM-dd HH:mm:ss',\n week: 'yyyywWW',\n timerange: 'HH:mm:ss',\n daterange: 'yyyy-MM-dd',\n monthrange: 'yyyy-MM',\n datetimerange: 'yyyy-MM-dd HH:mm:ss',\n year: 'yyyy'\n};\n\nconst name = 'datePicker';\n\nexport default {\n name,\n maker: (function () {\n return ['year', 'month', 'date', 'dates', 'week', 'datetime', 'datetimeRange', 'dateRange', 'monthRange'].reduce((initial, type) => {\n initial[type] = creatorFactory(name, {type: type.toLowerCase()});\n return initial\n }, {});\n }()),\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!props.valueFormat) {\n props.valueFormat = DEFAULT_FORMATS[props.type] || DEFAULT_FORMATS['date'];\n }\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'hidden';\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 const maker = ['password', 'url', 'email', 'text', 'textarea'].reduce((maker, type) => {\n maker[type] = creatorFactory(name, {type});\n return maker;\n }, {});\n\n maker.idate = creatorFactory(name, {type:'date'});\n return maker;\n }()),\n mergeProp(ctx) {\n let {props} = ctx.prop;\n if (props && props.autosize && props.autosize.minRows) {\n props.rows = props.autosize.minRows || 2;\n }\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'slider';\n\nexport default {\n name,\n maker: {\n sliderRange: creatorFactory(name, {range:true})\n },\n toFormValue(value, ctx) {\n let isArr = Array.isArray(value), props = ctx.prop.props, min = props.min || 0,\n parseValue;\n if (props.range === true) {\n parseValue = isArr ? value : [min, (parseFloat(value) || min)];\n } else {\n parseValue = isArr ? (parseFloat(value[0]) || min) : parseFloat(value);\n }\n return parseValue;\n }\n\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'timePicker';\n\nexport default {\n name,\n maker: {\n time: creatorFactory(name, (m) => m.props.isRange = false),\n timeRange: creatorFactory(name, (m) => m.props.isRange = true)\n },\n mergeProp(ctx) {\n const props = ctx.prop.props;\n if (!props.valueFormat) {\n props.valueFormat = 'HH:mm:ss';\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 toArray from '@form-create/utils/lib/toarray';\n\nconst name = 'select';\n\nexport default {\n name,\n toFormValue(value, ctx) {\n if (ctx.prop.props.multiple && !Array.isArray(value)) {\n return toArray(value)\n } else {\n return value;\n }\n }\n\n}\n","import datePicker from './datePicker';\nimport hidden from './hidden';\nimport input from './input';\nimport slider from './slider';\nimport timePicker from './timePicker';\nimport row from './row';\nimport select from './select';\n\nexport default [\n datePicker,\n hidden,\n input,\n slider,\n timePicker,\n row,\n select\n]\n","const PRE = 'el';\nexport default {\n button: PRE + 'Button',\n icon: 'i',\n slider: PRE + 'Slider',\n rate: PRE + 'Rate',\n upload: 'fcUpload',\n cascader: PRE + 'Cascader',\n popover: PRE + 'Popover',\n tooltip: PRE + 'Tooltip',\n colorPicker: PRE + 'ColorPicker',\n timePicker: PRE + 'TimePicker',\n timeSelect: PRE + 'TimeSelect',\n datePicker: PRE + 'DatePicker',\n 'switch': PRE + 'Switch',\n select: 'fcSelect',\n checkbox: 'fcCheckbox',\n radio: 'fcRadio',\n inputNumber: PRE + 'InputNumber',\n number: PRE + 'InputNumber',\n input: PRE + 'Input',\n formItem: PRE + 'FormItem',\n form: PRE + 'Form',\n frame: 'fcFrame',\n col: PRE + 'Col',\n row: PRE + 'Row',\n tree: 'fcTree',\n autoComplete: PRE + 'Autocomplete',\n auto: PRE + 'Autocomplete',\n group: 'fcGroup',\n object: 'fcSubForm',\n subForm: 'fcSubForm',\n}\n","export default function getConfig() {\n return {\n form: {\n inline: false,\n labelPosition: 'right',\n labelWidth: '125px',\n disabled: false,\n size: undefined,\n },\n row: {\n show: true,\n gutter: 0,\n },\n submitBtn: {\n type: 'primary',\n loading: false,\n disabled: false,\n innerText: '提交',\n show: true,\n col: undefined,\n click: undefined,\n },\n resetBtn: {\n type: 'default',\n loading: false,\n disabled: false,\n icon: 'el-icon-refresh',\n innerText: '重置',\n show: false,\n col: undefined,\n click: undefined,\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 toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\n\nfunction isTooltip(info) {\n return info.type === 'tooltip';\n}\n\nconst upperCaseReg = /[A-Z]/;\n\nexport function isAttr(name, value) {\n return (!upperCaseReg.test(name) && (is.String(value) || is.Number(value)))\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 let props = ctx.prop.props;\n ctx.prop = mergeProps([{\n attrs: Object.keys(props).reduce((initial, val) => {\n if (isAttr(val, props[val]))\n initial[val] = props[val];\n return initial;\n }, {}),\n info: this.options.info || {},\n wrap: this.options.wrap || {},\n col: this.options.col || {},\n }, ctx.prop], {\n info: {\n trigger: 'hover',\n placement: 'top-start',\n icon: 'el-icon-warning',\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 isTitle = this.isTitle(rule);\n const labelWidth = (!col.labelWidth && !isTitle) ? 0 : col.labelWidth;\n const {inline, col: _col} = this.rule.props;\n const item = isFalse(rule.wrap.show) ? children : this.$r(mergeProps([rule.wrap, {\n props: {\n label: rule.title.title,\n labelWidth: labelWidth === void 0 ? labelWidth : toString(labelWidth),\n ...(rule.wrap || {}),\n prop: ctx.field,\n rules: rule.validate,\n },\n class: rule.className,\n key: `${uni}fi`,\n ref: ctx.wrapRef,\n type: 'formItem',\n }]), [children, isTitle ? this.makeInfo(rule, uni) : null]);\n return (inline === true || isFalse(_col) || isFalse(col.show)) ? item : this.makeCol(rule, uni, [item]);\n },\n isTitle(rule) {\n const title = rule.title;\n return !((!title.title && !title.native) || isFalse(title.show))\n },\n makeInfo(rule, uni) {\n const titleProp = rule.title;\n const infoProp = rule.info;\n const isTip = isTooltip(infoProp);\n const children = [titleProp.title];\n const titleFn = (pop) => this.$r(mergeProps([titleProp, {\n props: titleProp,\n slot: titleProp.slot || (pop ? (isTip ? 'default' : 'reference') : '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: 'i',\n class: infoProp.icon === true ? 'el-icon-warning' : 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 = '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 const item = this.$r({\n type: 'formItem',\n key: `${this.key}fb`\n }, vn);\n\n return this.rule.props.inline === true\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},\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\nuseAlias(maker);\nuseSelect(maker);\nuseTree(maker);\nuseUpload(maker);\nuseFrame(maker);\n\nfunction useAlias(maker) {\n ['group', 'tree', 'switch', 'upload', 'autoComplete', 'checkbox', 'cascader', 'colorPicker', 'datePicker', 'frame', 'inputNumber', 'radio', 'rate'].forEach(name => {\n maker[name] = creatorFactory(name);\n });\n maker.auto = maker.autoComplete;\n maker.number = maker.inputNumber;\n maker.color = maker.colorPicker;\n}\n\nfunction useSelect(maker) {\n const select = 'select';\n const multiple = 'multiple';\n maker['selectMultiple'] = creatorFactory(select, {[multiple]:true});\n maker['selectOne'] = creatorFactory(select, {[multiple]:false});\n}\n\nfunction useTree(maker) {\n const name = 'tree';\n const types = {'treeSelected': 'selected', 'treeChecked': 'checked'};\n\n Object.keys(types).reduce((m, key) => {\n m[key] = creatorFactory(name, {type:types[key]});\n return m;\n }, maker);\n}\n\nfunction useUpload(maker) {\n const name = 'upload';\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((m, key) => {\n m[key] = creatorFactory(name, m => m.props({uploadType: types[key][0], maxLength: types[key][1]}));\n return m\n }, maker);\n\n maker.uploadImage = maker.image;\n maker.uploadFile = maker.file;\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 return maker;\n}\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(...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 if (!h.fieldCtx[field])\n return;\n const sub = h.subForm[field];\n let len = 0;\n let flag;\n const validate = () => {\n h.$manager.validateField(field, (...args) => {\n if (args[0]) {\n flag = args;\n } else if (flag) {\n return callback('子表单验证未通过', flag[1]);\n }\n 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 const ctx = h.fieldCtx[field];\n if (!ctx) return;\n h.$manager.clearValidateState(ctx);\n });\n },\n clearSubValidateState(fields) {\n api.helper.tidyFields(fields).forEach(field => {\n const subForm = h.subForm[field];\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 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}","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 elmFormCreate() {\n return FormCreateFactory({\n ui: `${process.env.UI}`,\n version: `${process.env.VERSION}`,\n manager,\n extendApi,\n install,\n attrs: {\n normal: ['col', 'wrap'],\n array: ['className'],\n key: ['title', 'info'],\n }\n });\n}\n","import elmFormCreate from './core/index';\n\nconst FormCreate = elmFormCreate();\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","getSlot","slots","exclude","keys","lst","name","push","NAME","props","formCreateRule","type","formCreateOptions","value","String","watch","update","data","trueValue","methods","onInput","n","$emit","filter","opt","label","map","v","undefined","_this","option","created","render","index","Type","_this2","$slots","toArray","isArray","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","formCreateField","field","helper","Boolean","disabled","src","required","icon","width","height","maxLength","Number","okBtnText","closeBtnText","modalTitle","handleIcon","title","allowRemove","onOpen","Function","onOk","onCancel","onLoad","onBeforeRemove","onRemove","onHandle","previewImage","getSrc","previewVisible","modal","srcKey","previewMask","footer","reload","closeBtn","okBtn","fileList","frameVisible","val","modalVm","key","unique","closeModel","close","$off","handleCancel","showModel","makeInput","toString","readonly","makeGroup","children","makeBtn","makeItem","valid","Error","makeIcons","icons","makeHandleIcon","makeRemoveIcon","handleClick","_this3","handleRemove","makeFiles","_this4","makeImages","_this5","_this6","splice","frameLoad","iframe","_this7","set","get","fn","$on","onClose","console","log","makeFooter","$props","_this8","node","$nextTick","_this9","$refs","frame","contentWindow","mounted","closeModal","initial","is","arg","Undef","Element","_typeof","nodeType","trueArray","hasProperty","rule","k","forEach","t","functional","ctx","slot","slotName","formCreateParser","mergeProp","prop","nodeKey","setValue","onChange","updateValue","tree","toLocaleLowerCase","getCurrentKey","getCheckedKeys","setCurrentKey","setCheckedKeys","parseFile","file","url","getFileName","uid","split","pop","uploadType","limit","uploadList","showFileList","upload","uploadFiles","every","status","o","isDisabled","makeProgress","percentage","$scopedSlots","vm","makeUpload","isShow","display","files","$watch","deep","rules","expand","options","formCreate","button","max","min","fontSize","len","cacheRule","cacheValue","computed","formRule","$f","expandRule","total","addRule","removeRule","subForm","_value","cache","JSON","stringify","input","formData","form","coverValue","emit","$formCreate","copyRules","submitBtn","resetBtn","$set","add$f","$delete","add","del","addIcon","delIcon","makeIcon","emitEvent","args","str","checkbox","radio","select","group","target","Vue","$del","extend","$FormCreate","FormCreate","componentName","model","provide","$pfc","inject","extendOption","api","destroyed","validate","renderRule","_refresh","_renderRule","_updateValue","handler","initOptions","refresh","$handle","reloadRule","beforeCreate","$options","propsData","mergeProps","objects","_normalMerge","_toArrayMerge","_functionalMerge","propsMerge","arrA","arrB","event","hook","fn1","fn2","keyAttrs","arrayAttrs","normalAttrs","attrs","deepExtend","origin","mode","isArr","clone","nst","_clone","getRule","__ctrl","deepCopy","format","msg","tip","warn","err","error","logError","PREFIX","SUFFIX","$T","FUNCTION","toJson","obj","space","_isVue","__inject","__origin","__emit","makeFn","eval","parseFn","trim","flag","replace","parseJson","json","parse","enumerable","writable","configurable","copyRule","mergeRule","merge","array","normal","mergeGlobal","funcProxy","that","proxy","defineProperties","byCtx","__fc__","__origin__","invoke","def","toLine","line","substr","id","uniqueId","Math","random","Date","now","baseRule","on","hidden","creatorFactory","init","maker","Creator","_data","appendProto","setProp","constructor","commonMaker","create","make","createTmp","template","makerFactory","factory","copy","byRules","ctxs","Api","tidyFields","fields","getCtx","$render","clearCache","allSubForm","subs","sub","fieldCtx","getValue","deferSyncValue","appendData","removeField","rm","destroy","$el","parentNode","removeChild","$destroy","append","after","child","sort","root","prepend","state","hiddenStatus","displayStatus","component","nameCtx","bind","updateOptions","fc","onSubmit","sync","deleted","clearCacheAll","refreshOptions","$manager","hideForm","hide","changeStatus","clearChangeStatus","updateRule","r","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","getCache","toCase","lower","toLocaleUpperCase","toLowerCase","setTempProps","injectProp","injectKeys","temp","useRender","initRender","renderList","clearOrgChildren","initOrgChildren","orgChildren","$h","$createElement","beforeRender","vn","renderCtx","makeVm","getInjectData","global","cacheConfig","originType","trueType","renderTemp","compile","parser","renderSides","prefix","suffix","cacheFlag","_type","none","renderChildren","initProp","tidyRule","ctxProp","makeWrap","item","custom","onMounted","addSubForm","getFormData","callback","expression","effect","rmCtx","isRepeatRule","loadChildren","defaultRender","vNode","alias","aliasMap","handle","CreateNode","useInject","Handler","parseInjectEvent","injectEvent","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","useLoader","parseRule","_rule","fullRule","syncProp","pre","fapi","repeatRule","cycleLoad","_loadRule","syncForm","initEvent","ruleEffect","check","isCtrl","bindParser","appendValue","setCtx","_preIndex","preIndex","updated","refreshUpdate","defineProperty","valueHandle","control","useCtrl","controls","getCtrl","handleFn","ctrl","findCtrl","reverse","ruleCon","ctrlCtx","_reloadRule","initData","reloading","nextReload","useInput","toValue","formValue","setFlag","setFormData","syncValue","valueChange","isQuote","isChange","toEmpty","toFormValue","deferSyncFn","refreshRule","appendLink","link","useHelper","findField","findName","find","effectData","clearEffectData","setParser","unwatch","un","unlink","watchTo","watchCtx","rmCtrl","$api","_rm","noWatch","getType","BaseParser","useContext","getParser","list","parsers","noWatchFn","rmSub","watchEffect","useLifecycle","_mounted","isMounted","lifecycle","useEffect","useProvider","ps","providers","_c","getComponent","onEffect","provider","used","_used","emitEffect","getEffect","attr","p","getProp","clearProp","arr","components","manager","extendApi","getError","action","xhr","getBody","text","responseText","response","fetch","XMLHttpRequest","FormData","onerror","onError","onload","onSuccess","open","withCredentials","headers","setRequestHeader","send","__init","parseProp","domProps","innerHTML","CreateNodeFactory","setVm","tag","config","isReservedTag","nativeOn","Node","context","nodes","createManager","proto","CustomManager","Manager","mergeOptionsRule","$r","mergeOptions","tidyOptions","getDefaultOptions","$fetch","loaded","run","parseOpt","to","body","message","_vue","window","_parseProp","nameProp","_getEl","querySelector","mountForm","$vm","$data","$mount","exportAttrs","FormCreateFactory","fragment","directives","globalConfig","directive","register","componentAlias","base","$form","install","_opt","$parent","useAttr","version","ui","mount","remove","Handle","isSub","_installedFormCreate","DEFAULT_FORMATS","date","month","datetime","week","timerange","daterange","monthrange","datetimerange","year","valueFormat","idate","autosize","minRows","rows","sliderRange","range","parseFloat","time","m","isRange","timeRange","_","col","span","row","multiple","datePicker","slider","timePicker","PRE","rate","cascader","popover","tooltip","colorPicker","timeSelect","inputNumber","number","formItem","autoComplete","auto","object","getConfig","inline","labelPosition","labelWidth","size","show","gutter","innerText","click","isTooltip","info","upperCaseReg","isAttr","test","tidy","isFalse","tidyBool","validateField","clearValidateState","fItem","validateMessage","validateState","wrap","placement","submit","preventDefault","className","makeFormBtn","makeRow","uni","isTitle","_col","makeInfo","makeCol","titleProp","infoProp","isTip","titleFn","align","makeSubmitBtn","makeResetBtn","fApi","useAlias","color","useSelect","useTree","types","useUpload","image","uploadFileOne","uploadImageOne","uploadImage","uploadFile","useFrame","frameInputs","frameFiles","frameImages","frameInputOne","frameFileOne","frameImageOne","frameInput","frameFile","frameImage","tidyBtnProp","btn","forms","validFn","clearSub","clearSubValidateState","submitBtnProps","resetBtnProps","successFn","failFn","makers","elmFormCreate","process"],"mappings":"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"}
\No newline at end of file