@form-create/iview 2.5.33 → 2.5.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
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/iview/checkbox/src/component.jsx","../../utils/lib/toarray.js","../../../node_modules/style-inject/dist/style-inject.es.js","../../../components/iview/frame/src/component.jsx","../../../components/iview/frame/src/index.js","../../../components/iview/radio/src/component.jsx","../../utils/lib/type.js","../../../components/iview/select/src/component.jsx","../../../components/iview/tree/src/component.jsx","../../../components/iview/upload/src/component.jsx","../../../components/iview/upload/src/index.js","../../utils/lib/modify.js","../../utils/lib/deepextend.js","../../utils/lib/extend.js","../../../components/iview/group/src/component.jsx","../src/components/index.js","../../../components/common/subform/src/component.jsx","../../core/src/components/formCreate.js","../../utils/lib/mergeprops.js","../../core/src/frame/attrs.js","../../utils/lib/console.js","../../utils/lib/json.js","../../core/src/frame/util.js","../../core/src/factory/creator.js","../../core/src/factory/maker.js","../../core/src/frame/api.js","../../utils/lib/tocase.js","../../utils/lib/toline.js","../../utils/lib/unique.js","../../utils/lib/deepset.js","../../core/src/render/index.js","../../core/src/render/cache.js","../../core/src/render/render.js","../../core/src/handler/page.js","../../core/src/factory/context.js","../../core/src/handler/loader.js","../../core/src/handler/input.js","../../core/src/factory/parser.js","../../core/src/handler/context.js","../../core/src/handler/index.js","../../core/src/frame/fetch.js","../../core/src/handler/inject.js","../../core/src/handler/render.js","../../core/src/handler/lifecycle.js","../../core/src/handler/effect.js","../../core/src/components/fragment.js","../../core/src/factory/node.js","../../utils/lib/tostring.js","../../core/src/factory/manager.js","../../core/src/frame/provider.js","../../core/src/parser/html.js","../../core/src/frame/index.js","../src/parsers/datePicker.js","../src/parsers/hidden.js","../src/parsers/index.js","../src/parsers/input.js","../src/parsers/slider.js","../src/parsers/switch.js","../src/parsers/row.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 formCreateInject: {\n type: Object,\n required: true,\n },\n value: {\n type: Array,\n default: () => []\n },\n },\n watch: {\n 'formCreateInject.options': {\n handler() {\n this.update();\n },\n deep: true,\n },\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n methods: {\n options() {\n const opt = this.formCreateInject.options;\n return Array.isArray(opt) ? opt : [];\n },\n onInput(n) {\n this.$emit('input', this.options().filter((opt) => n.indexOf(opt.label) !== -1).map((opt) => opt.value).filter(v => v !== undefined));\n },\n update() {\n const checked = Array.isArray(this.value) ? this.value : [this.value];\n this.trueValue = this.options().filter((opt) => checked.indexOf(opt.value) !== -1)\n .map((option) => option.label);\n }\n },\n created() {\n this.update();\n },\n render() {\n return <CheckboxGroup {...this.formCreateInject.prop} ref=\"el\"\n props={{value: this.trueValue}}\n on-input={this.onInput}>{this.options().map((opt, index) => {\n const props = {...opt};\n delete props.value;\n return <Checkbox props={props} key={'' + index + '-' + opt.value}/>\n })}{getSlot(this.$slots)}</CheckboxGroup>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\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 function createFrame(config) {\n return {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n type: {\n type: String,\n default: 'input'\n },\n field: String,\n helper: {\n type: Boolean,\n default: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n src: {\n type: String,\n required: true\n },\n icon: {\n type: String,\n default: config.fileUpIcon\n },\n width: {\n type: [Number, String],\n default: 500\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 showModel() {\n if (this.disabled || false === this.onOpen()) return;\n this.frameVisible = true;\n },\n\n makeInput() {\n const props = {\n type: 'text',\n value: (this.fileList.map(v => this.getSrc(v))).toString(),\n icon: this.icon,\n readonly: true,\n clearable: false\n };\n\n return <Input props={props} on={{'on-click': () => this.showModel()}} key={this.key('input')}/>\n },\n\n makeGroup(children) {\n if (!this.maxLength || this.fileList.length < this.maxLength)\n children.push(this.makeBtn());\n return <div key={this.key('group')}>{...children}</div>\n },\n\n makeItem(index, children) {\n return <div class='fc-files' key={this.key('file' + index)}>{...children}</div>;\n },\n valid(f) {\n const field = this.formCreateInject.field || this.field;\n if (field && f !== field)\n throw new Error('[frame]无效的字段值');\n },\n\n makeIcons(val, index) {\n if (this.handleIcon !== false || this.allowRemove === true) {\n const icons = [];\n if ((this.type !== 'file' && this.handleIcon !== false) || (this.type === 'file' && this.handleIcon))\n icons.push(this.makeHandleIcon(val, index));\n if (this.allowRemove)\n icons.push(this.makeRemoveIcon(val, index));\n\n return <div class='fc-upload-cover' key={this.key('uc')}>{icons}</div>\n }\n },\n makeHandleIcon(val, index) {\n return <icon\n props={{type: (this.handleIcon === true || this.handleIcon === undefined) ? 'ios-eye-outline' : this.handleIcon}}\n on-click={() => this.handleClick(val)} key={this.key('hi' + index)}/>\n },\n\n makeRemoveIcon(val, index) {\n return <icon props={{type: 'ios-trash-outline'}} on-click={() => this.handleRemove(val)}\n key={this.key('ri' + index)}/>\n },\n\n makeFiles() {\n return this.makeGroup(this.fileList.map((src, index) => {\n return this.makeItem(index, [<icon props={{type: config.fileIcon, size: 40}}\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()}\n key={this.key('btn')}>\n <icon props={{type: this.icon, size: 20}}/>\n </div>\n },\n handleClick(src) {\n return this.onHandle(src);\n },\n handleRemove(src) {\n if (this.disabled) return;\n if (false !== this.onBeforeRemove(src)) {\n this.fileList.splice(this.fileList.indexOf(src), 1);\n this.onRemove(src);\n }\n },\n getSrc(src) {\n return !(this.srcKey) ? src : src[this.srcKey];\n },\n frameLoad(iframe) {\n this.onLoad(iframe);\n try {\n if (this.helper === true) {\n iframe['form_create_helper'] = {\n api: this.formCreateInject.api,\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 const node = [];\n\n if (!footer) return node;\n if (closeBtn)\n node.push(<Button\n on-click={() => (this.onCancel() !== false && this.closeModel(true))}>{closeBtnText}</Button>);\n if (okBtn)\n node.push(<Button type=\"primary\"\n on-click={() => (this.onOk() !== false && this.closeModel())}>{okBtnText}</Button>);\n return node;\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 const {width, 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 <Modal v-model={this.previewVisible}\n props={{mask: this.previewMask, title: modalTitle, footerHide: true}}>\n <img style=\"width: 100%\" src={this.previewImage}/>\n </Modal>\n <Modal props={{width, title, ...this.modal}} v-model={this.frameVisible}\n on-on-cancel={() => (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 <div slot=\"footer\">\n {this.makeFooter()}\n </div>\n </Modal>\n </div>\n },\n mounted() {\n this.$on('fc.closeModal', this.closeModal);\n }\n };\n}\n","import createFrame from './component';\n\nconst frame = createFrame({\n fileIcon: 'md-document',\n fileUpIcon: 'ios-folder-open',\n});\n\n\nframe.v2 = createFrame({\n fileIcon: 'document-text',\n fileUpIcon: 'folder',\n});\n\nexport default frame;\n","import getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcRadio';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {}\n },\n watch: {\n 'formCreateInject.options': {\n handler() {\n this.update();\n },\n deep: true,\n },\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n methods: {\n options() {\n const opt = this.formCreateInject.options;\n return Array.isArray(opt) ? opt : [];\n },\n onInput(n) {\n this.$emit('input', this.options().filter((opt) => opt.label === n).reduce((initial, opt) => opt.value, ''));\n },\n update() {\n this.trueValue = this.options().filter((opt) => opt.value === this.value).reduce((initial, opt) => opt.label, '');\n }\n },\n created() {\n this.update();\n },\n render() {\n return <RadioGroup {...this.formCreateInject.prop} props={{value: this.trueValue}} ref=\"el\"\n on-input={this.onInput}>{this.options().map((opt, index) => {\n const props = {...opt};\n delete props.value;\n return <Radio props={props} key={'' + index + '-' + opt.value}/>\n })}{getSlot(this.$slots)}</RadioGroup>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\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 Function(v) {\n const type = this.getType(v);\n return type === 'Function' || type === 'AsyncFunction';\n },\n getType(v) {\n const str = Object.prototype.toString.call(v)\n return /^\\[object (.*)\\]$/.exec(str)[1]\n },\n empty(value) {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (Array.isArray(value) && Array.isArray(value) && !value.length) {\n return true;\n }\n\n return typeof value === 'string' && !value;\n }\n};\n\n['Date', 'Object', '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, {hasProperty} from '@form-create/utils/lib/type';\n\nconst NAME = 'fcSelect';\nexport default {\n name: NAME,\n functional: true,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n },\n render(h, ctx) {\n const makeOption = (props, index) => {\n const slot = props.slot;\n return <Option props={props}\n key={'' + index + '-' + props.value}>\n {slot ? <template\n slot={props.slotName || 'default'}>{is.Function(slot) ? props.slot(h) : slot}</template> : null}\n </Option>;\n }\n const makeOptionGroup = (props, index) => {\n return <OptionGroup label={props.label}\n key={'' + index + '-' + props.label}>\n {is.trueArray(props.options) && props.options.map((v, index) => {\n return makeOption(v, index);\n })}\n </OptionGroup>;\n }\n\n const options = ctx.props.formCreateInject.options;\n return <Select {...ctx.data} ref=\"el\">{(Array.isArray(options) ? options : []).map((props, index) => {\n return hasProperty(props || '', 'options') ? makeOptionGroup(props, index) : makeOption(props, index);\n })}{ctx.children}</Select>;\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\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 props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n type: {\n type: String,\n default: 'checked'\n },\n value: {\n type: [Array, String, Number],\n default: () => []\n }\n },\n data() {\n return {\n treeData: []\n }\n },\n watch: {\n value(n) {\n this.setStatus(n);\n }\n },\n created() {\n this.setStatus(this.value);\n },\n methods: {\n setStatus(value) {\n const n = toArray(value);\n const data = this.formCreateInject.prop.props.data;\n this.type === 'selected' ? this.checked(data, n, 'selected') : this.checked(data, n, 'checked');\n this.$forceUpdate();\n },\n checked(_data, value, type) {\n _data.forEach((node) => {\n this.$set(node, type, value.indexOf(node.id) !== -1);\n if (node.children !== undefined && Array.isArray(node.children))\n this.checked(node.children, value, type);\n });\n },\n onInput(list) {\n this.$emit('input', list.map(node => node.id));\n }\n },\n render() {\n const on = {};\n if (this.type === 'selected') {\n on['on-select-change'] = this.onInput;\n } else {\n on['on-check-change'] = this.onInput;\n }\n return <Tree {...this.formCreateInject.prop} ref=\"tree\" on={on}>{getSlot(this.$slots)}</Tree>;\n },\n mounted() {\n this.$emit('fc.el', this.$refs.tree);\n }\n}\n","import toArray from '@form-create/utils/lib/toarray';\nimport './style.css';\nimport getSlot from '@form-create/utils/lib/slot';\n\nfunction parseFile(file) {\n return {\n url: file,\n name: getFileName(file)\n };\n}\n\nfunction getFileName(file) {\n return ('' + file).split('/').pop()\n}\n\nconst NAME = 'fcUpload';\n\n\nexport default function createUpload(config) {\n return {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\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 maxLength: {\n type: Number,\n default: 0\n },\n allowRemove: {\n type: Boolean,\n default: true\n },\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 cacheFiles: [],\n }\n },\n created() {\n if (this.formCreateInject.prop.props.showUploadList === undefined)\n this.formCreateInject.prop.props.showUploadList = false;\n this.formCreateInject.prop.props.defaultFileList = toArray(this.value).map(parseFile);\n },\n watch: {\n value(n) {\n if (this.$refs.upload.fileList.every(file => {\n return !file.status || file.status === 'finished';\n })) {\n this.$refs.upload.fileList = toArray(n).map(parseFile);\n this.uploadList = this.$refs.upload.fileList;\n }\n },\n maxLength(n, o) {\n if (o === 1 || n === 1)\n this.update();\n }\n },\n methods: {\n key(unique) {\n return unique;\n },\n isDisabled() {\n return this.formCreateInject.prop.props.disabled === true;\n },\n onRemove(file) {\n if (this.isDisabled()) return;\n this.$refs.upload.handleRemove(file);\n },\n handleClick(file) {\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 : <icon props={{type: config.fileIcon, size: 40}} key={this.key('i' + index)}/>\n },\n makeRemoveIcon(file, index) {\n return <icon type='ios-trash-outline' on-click={() => this.onRemove(file)}\n key={this.key('ri' + index)}/>;\n },\n makeHandleIcon(file, index) {\n return <icon\n type={(this.handleIcon === true || this.handleIcon === undefined) ? 'ios-eye-outline' : this.handleIcon}\n on-click={() => this.handleClick(file)} key={this.key('hi' + index)}/>;\n },\n makeProgress(file, index) {\n return <Progress props={{percent: file.percentage, hideInfo: true}} style=\"width:90%\"\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 if (this.allowRemove)\n icons.push(this.makeRemoveIcon(file, index));\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.showProgress ? this.makeProgress(file, index) : [this.makeItem(file, index), this.makeIcons(file, index)]}</div>);\n },\n makeUpload() {\n const isShow = (!this.maxLength || this.maxLength > this.uploadList.length);\n return <Upload {...this.formCreateInject.prop} {...{\n style: {display: 'inline-block'},\n key: this.key('upload'),\n ref: 'upload'\n }}>\n {isShow ? <template slot=\"default\">\n {this.$slots.default || <div class=\"fc-upload-btn\">\n <icon props={{\n type: this.uploadType === 'file' ? 'ios-cloud-upload-outline' : config.imgUpIcon,\n size: 20\n }}/>\n </div>}\n </template> : null}{getSlot(this.$slots, ['default'])}\n </Upload>;\n },\n update() {\n let files = this.$refs.upload.fileList.map((file) => file.url).filter((url) => url !== undefined);\n if (this.cacheFiles.length !== files.length || !files.length) {\n this.cacheFiles = [...files];\n this.$emit('input', this.maxLength === 1 ? (files[0] || '') : files);\n }\n },\n handleCancel() {\n this.previewVisible = false;\n },\n },\n render() {\n if (this.$refs.upload) {\n if (this.formCreateInject.prop.props.showUploadList === undefined)\n this.formCreateInject.prop.props.showUploadList = this.$refs.upload.showUploadList;\n this.formCreateInject.prop.props.defaultFileList = this.$refs.upload.defaultFileList;\n }\n return (\n <div\n class=\"_fc-upload\">{[this.formCreateInject.prop.props.showUploadList ? [] : this.makeFiles(), this.makeUpload()]}\n <Modal v-model={this.previewVisible}\n props={{title: this.modalTitle, footerHide: true}}>\n <img alt=\"example\" style=\"width: 100%\" src={this.previewImage}/>\n </Modal>\n </div>);\n },\n mounted() {\n this.uploadList = this.$refs.upload.fileList;\n this.$watch(() => this.$refs.upload.fileList, () => {\n this.update();\n }, {deep: true});\n this.$emit('fc.el', this.$refs.upload);\n }\n };\n}\n","import createUpload from './component';\n\nconst upload = createUpload({\n\n fileIcon: 'md-document',\n imgUpIcon: 'md-images',\n});\n\nupload.v2 = createUpload({\n\n fileIcon: 'document-text',\n imgUpIcon: 'image',\n});\n\nexport default upload;\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';\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 if (!is.Undef(clone)) {\n if (!is.Undef(clone.__json)) {\n origin[key].__json = clone.__json;\n }\n if (!is.Undef(clone.__origin)) {\n origin[key].__origin = clone.__origin;\n }\n }\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","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 {hasProperty} from '@form-create/utils/lib/type';\nimport deepExtend, {deepCopy} from '@form-create/utils/lib/deepextend';\nimport extend from '@form-create/utils/lib/extend';\nimport './style.css';\n\nconst NAME = 'fcGroup';\n\nexport default {\n name: NAME,\n props: {\n field: String,\n rule: [Array, Object],\n rules: Array,\n expand: Number,\n options: Object,\n formCreateInject: {\n type: Object,\n required: true,\n },\n button: {\n type: Boolean,\n default: true\n },\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n value: {\n type: Array,\n default: () => []\n },\n sortBtn: {\n type: Boolean,\n default: true\n },\n defaultValue: Object,\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onBeforeAdd: {\n type: Function,\n default: () => {\n }\n },\n parse: Function,\n },\n data() {\n return {\n len: 0,\n cacheRule: {},\n cacheValue: {},\n sort: [],\n type: undefined\n }\n },\n computed: {\n formRule() {\n if (this.rules) {\n return this.rules;\n }\n if (this.rule) {\n return Array.isArray(this.rule) ? this.rule : [this.rule];\n }\n return [];\n }\n },\n watch: {\n cacheRule: {\n handler(n) {\n this.sort = Object.keys(n);\n },\n immediate: true\n },\n formRule: {\n handler(n, o) {\n Object.keys(this.cacheRule).forEach(v => {\n const item = this.cacheRule[v];\n if (item.$f) {\n const val = item.$f.formData();\n if (n === o) {\n item.$f.deferSyncValue(() => {\n deepExtend(item.rule, n);\n item.$f.setValue(val);\n }, true);\n } else {\n const val = item.$f.formData();\n item.$f.once('reloading', () => {\n item.$f.setValue(val);\n })\n item.rule = deepCopy(n);\n }\n }\n })\n },\n deep: true\n },\n disabled(n) {\n if (this.syncDisabled) {\n const lst = this.cacheRule;\n Object.keys(lst).forEach(k => {\n lst[k].$f.disabled(n);\n })\n }\n },\n expand(n) {\n let d = n - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n },\n value(n, o) {\n n = n || [];\n let keys = this.sort, 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 }\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 = this.sort;\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 && $f.coverValue(value || {});\n },\n addRule(i, emit) {\n const rule = this.formCreateInject.form.copyRules(this.formRule);\n const options = this.options ? {...this.options} : {\n submitBtn: false,\n resetBtn: false,\n };\n if (this.defaultValue) {\n if (!options.formData) options.formData = {};\n const defVal = deepCopy(this.defaultValue);\n extend(options.formData, this.field ? {[this.field]: defVal} : defVal);\n }\n this.parse && this.parse({rule, options, index: this.sort.length});\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.$nextTick(() => {\n if (this.syncDisabled) {\n $f.disabled(this.disabled);\n }\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n removeRule(key, emit) {\n const index = Object.keys(this.cacheRule).indexOf(key);\n this.$delete(this.cacheRule, key);\n this.$delete(this.cacheValue, key);\n if (emit) {\n this.$nextTick(() => this.$emit('remove', index));\n }\n },\n add(i) {\n if (this.disabled || false === this.onBeforeAdd(this.value)) {\n return;\n }\n this.addRule(i, true);\n },\n del(index, key) {\n if (this.disabled || false === this.onBeforeRemove(this.value, index)) {\n return;\n }\n this.removeRule(key, true);\n const value = [...this.value];\n value.splice(index, 1);\n this.input(value);\n },\n addIcon(key) {\n return <div class=\"_fc-group-btn _fc-group-plus-minus\" on-click={this.add}></div>;\n },\n delIcon(index, key) {\n return <div class=\"_fc-group-btn _fc-group-plus-minus _fc-group-minus\"\n onClick={() => this.del(index, key)}></div>\n },\n sortUpIcon(index) {\n return <div class=\"_fc-group-btn _fc-group-arrow _fc-group-up\"\n onClick={() => this.changeSort(index, -1)}></div>\n },\n sortDownIcon(index) {\n return <div class=\"_fc-group-btn _fc-group-arrow _fc-group-down\"\n onClick={() => this.changeSort(index, 1)}></div>\n },\n changeSort(index, sort) {\n const a = this.sort[index];\n this.$set(this.sort, index, this.sort[index + sort]);\n this.sort[index + sort] = a;\n this.formData(0);\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 const btn = [];\n if ((!this.max || total < this.max) && total === index + 1) {\n btn.push(this.addIcon(key));\n }\n if (total > this.min) {\n btn.push(this.delIcon(index, key));\n }\n if (this.sortBtn && index) {\n btn.push(this.sortUpIcon(index));\n }\n if (this.sortBtn && index !== total - 1) {\n btn.push(this.sortDownIcon(index));\n }\n return btn;\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 this.type = this.formCreateInject.form.$form();\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 = this.sort;\n const button = this.button;\n const Type = this.type;\n const disabled = this.disabled;\n\n const children = keys.length === 0 ?\n (this.$scopedSlots.default ? (this.$scopedSlots.default({\n vm: this,\n add: this.add\n })) : <div key={'a_def'} class=\"_fc-group-plus-minus _fc-group-add\"\n on-click={this.add}/>) : keys.map((key, index) => {\n const {rule, options} = this.cacheRule[key];\n const btn = button && !disabled ? this.makeIcon(keys.length, index, key) : [];\n return <div class=\"_fc-group-container\" key={key}>\n <Type\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 props={{\n inFor: true,\n value: this.field ? {[this.field]: this._value(this.value[index])} : this.value[index],\n rule,\n option: options,\n extendOption: true\n }}\n />\n <div class=\"_fc-group-idx\">{index + 1}</div>\n {(btn.length) ? <div class=\"_fc-group-handle\">{btn}</div> : null}\n </div>\n });\n return <div key={'con'} class={'_fc-group ' + (disabled ? '_fc-group-disabled' : '')}>{children}</div>\n },\n}\n","import checkbox from '@form-create/component-ivu-checkbox/src/index';\nimport frame from '@form-create/component-ivu-frame/src/index';\nimport radio from '@form-create/component-ivu-radio/src/index';\nimport select from '@form-create/component-ivu-select/src/index';\nimport tree from '@form-create/component-ivu-tree/src/index';\nimport upload from '@form-create/component-ivu-upload/src/index';\nimport group from '@form-create/component-ivu-group/src/index';\nimport subForm from '@form-create/component-subform/src/index';\n\nexport default [\n checkbox,\n radio,\n select,\n tree,\n subForm,\n frame,\n upload,\n group\n];\n","const NAME = 'fcSubForm';\n\nexport default {\n name: NAME,\n props: {\n rule: Array,\n options: Object,\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {\n type: Object,\n default: () => ({})\n },\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n },\n data() {\n return {\n cacheRule: {},\n cacheValue: {},\n type: undefined\n }\n },\n watch: {\n disabled(n) {\n this.syncDisabled && this.cacheRule.$f.disabled(n);\n },\n value(n) {\n this.setValue(n);\n }\n },\n methods: {\n formData(value) {\n this.cacheValue = JSON.stringify(value);\n this.$emit('input', value);\n this.$emit('change', value);\n },\n setValue(value) {\n const str = JSON.stringify(value);\n if (this.cacheValue === str) {\n return;\n }\n this.cacheValue = str;\n this.cacheRule.$f.coverValue(value || {});\n },\n addRule() {\n const options = this.options ? this.options : {\n submitBtn: false,\n resetBtn: false,\n };\n options.formData = {...(this.value || {})};\n this.cacheRule = {rule: this.rule, options};\n },\n add$f($f) {\n this.cacheRule.$f = $f;\n this.$nextTick(() => {\n this.syncDisabled && $f.disabled(this.disabled);\n this.$emit('itemMounted', $f);\n });\n },\n emitEvent(name, ...args) {\n this.$emit(name, ...args);\n }\n },\n created() {\n this.addRule();\n this.type = this.formCreateInject.form.$form();\n },\n render() {\n const {rule, options} = this.cacheRule;\n const Type = this.type;\n return <Type\n on={{\n 'update:value': this.formData,\n 'emit-event': this.emitEvent,\n input: this.add$f\n }}\n props={{rule, option: options, extendOption: true}}/>\n }\n}\n","import extend from '@form-create/utils/lib/extend';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst NAME = 'FormCreate';\n\nconst getRuleInject = (vm, parent) => {\n if (!vm || vm === parent) {\n return;\n }\n if (vm.formCreateInject) {\n return vm.formCreateInject\n }\n if (vm.$parent) {\n return getRuleInject(vm.$parent, parent);\n }\n}\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 name: String,\n subForm: {\n type: Boolean,\n default: true\n },\n inFor: Boolean,\n },\n data() {\n return {\n formData: undefined,\n destroyed: false,\n validate: {},\n $f: undefined,\n isShow: true,\n unique: 1,\n renderRule: [...this.rule || []],\n ctxInject: {},\n updateValue: JSON.stringify(this.value || {}),\n isMore: !!this.inFor,\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.config.forceCoverValue ? this.$f.coverValue(n || {}) : this.$f.setValue(n || {});\n },\n deep: true\n },\n option: {\n handler(n) {\n this.formCreate.initOptions(n);\n this.$f.refresh();\n },\n deep: true\n },\n rule(n) {\n if (n.length === this.renderRule.length && n.every(v => this.renderRule.indexOf(v) > -1)) return;\n this.formCreate.$handle.reloadRule(n);\n this._renderRule();\n }\n },\n beforeCreate() {\n const {rule, option} = this.$options.propsData;\n this.formCreate = new FormCreate(this, rule, option);\n Object.keys(this.formCreate.prop).forEach(k => {\n extend(this.$options[k], this.formCreate.prop[k]);\n })\n this.$emit('beforeCreate', this.formCreate.api());\n },\n created() {\n const vm = this, fapi = this.formCreate.api();\n const addSubForm = () => {\n if (vm.$pfc) {\n const inject = getRuleInject(vm, vm.$pfc);\n if (inject) {\n let sub;\n if (vm.isMore) {\n sub = toArray(inject.getSubForm());\n sub.push(fapi);\n\n } else {\n sub = fapi;\n }\n inject.subForm(sub);\n }\n }\n };\n\n const rmSubForm = () => {\n const inject = getRuleInject(vm, vm.$pfc);\n if (inject) {\n if (vm.isMore) {\n const sub = toArray(inject.getSubForm());\n const idx = sub.indexOf(fapi);\n if (idx > -1) {\n sub.splice(idx, 1);\n }\n } else {\n inject.subForm();\n }\n }\n };\n\n vm.$on('hook:beforeDestroy', () => {\n rmSubForm();\n });\n\n this.$watch(() => this.subForm, (n) => {\n n ? addSubForm() : rmSubForm();\n }, {immediate: true});\n }\n }\n}\n","export const normalMerge = ['attrs', 'props', 'domProps', 'scopedSlots'];\nexport const toArrayMerge = ['class', 'style', 'directives'];\nexport const functionalMerge = ['on', 'nativeOn'];\n\nconst mergeProps = (objects, initial = {}, opt = {}) => {\n const _normalMerge = [...normalMerge, ...opt['normal'] || []];\n const _toArrayMerge = [...toArrayMerge, ...opt['array'] || []];\n const _functionalMerge = [...functionalMerge, ...opt['functional'] || []];\n const propsMerge = opt['props'] || [];\n\n return objects.reduce((a, b) => {\n for (const key in b) {\n if (a[key]) {\n if (propsMerge.indexOf(key) > -1) {\n a[key] = mergeProps([b[key]], a[key]);\n } else if (_normalMerge.indexOf(key) > -1) {\n a[key] = {...a[key], ...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n const arrA = a[key] instanceof Array ? a[key] : [a[key]];\n const arrB = b[key] instanceof Array ? b[key] : [b[key]];\n a[key] = [...arrA, ...arrB]\n } else if (_functionalMerge.indexOf(key) > -1) {\n for (const event in b[key]) {\n if (a[key][event]) {\n const arrA = a[key][event] instanceof Array ? a[key][event] : [a[key][event]];\n const arrB = b[key][event] instanceof Array ? b[key][event] : [b[key][event]];\n a[key][event] = [...arrA, ...arrB]\n } else {\n a[key][event] = b[key][event]\n }\n }\n } else if (key === 'hook') {\n for (let hook in b[key]) {\n if (a[key][hook]) {\n a[key][hook] = mergeFn(a[key][hook], b[key][hook])\n } else {\n a[key][hook] = b[key][hook]\n }\n }\n } else {\n a[key] = b[key]\n }\n } else {\n if (_normalMerge.indexOf(key) > -1 || _functionalMerge.indexOf(key) > -1 || propsMerge.indexOf(key) > -1) {\n a[key] = {...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n a[key] = b[key] instanceof Array ? [...b[key]] : (typeof b[key] === 'object' ? {...b[key]} : b[key]);\n } else\n a[key] = b[key];\n }\n }\n return a\n }, initial);\n}\n\nconst mergeFn = (fn1, fn2) =>\n function () {\n fn1 && fn1.apply(this, arguments);\n fn2 && fn2.apply(this, arguments);\n };\n\nexport default mergeProps;\n","import {functionalMerge, normalMerge, toArrayMerge} from '@form-create/utils/lib/mergeprops';\n\n\nexport const keyAttrs = ['type', 'slot', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'nativeEmit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key', 'preview', 'component', 'cache'];\n\nexport const arrayAttrs = ['validate', 'children', 'control'];\n\nexport const normalAttrs = ['effect', 'deep'];\n\nexport function attrs() {\n return [...keyAttrs, ...normalMerge, ...toArrayMerge, ...functionalMerge, ...arrayAttrs, ...normalAttrs];\n}\n","export function format(type, msg, rule) {\n return (`[form-create ${type}]: ${msg}` + (rule ? ('\\n\\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule)) : ''))\n}\n\nexport function tip(msg, rule) {\n console.warn(format('tip', msg, rule));\n}\n\nexport function err(msg, rule) {\n console.error(format('err', msg, rule));\n}\n\nexport function logError(e) {\n err(e.toString());\n console.error(e);\n}\n","import deepExtend from './deepextend';\nimport {err} from './console';\nimport is, {hasProperty} from './type';\n\nconst PREFIX = '[[FORM-CREATE-PREFIX-';\nconst SUFFIX = '-FORM-CREATE-SUFFIX]]';\n\nconst $T = '$FN:';\nconst $TX = '$FNX:';\nconst FUNCTION = 'function';\n\nexport function toJson(obj, space) {\n return JSON.stringify(deepExtend([], obj, true), function (key, val) {\n if (val && val._isVue === true)\n return undefined;\n\n if (typeof val !== FUNCTION) {\n return val;\n }\n if (val.__json) {\n return val.__json;\n }\n if (val.__origin)\n val = val.__origin;\n\n if (val.__emit)\n return undefined;\n return PREFIX + val + SUFFIX;\n }, space);\n}\n\nfunction makeFn(fn) {\n return (new Function('return ' + fn))();\n}\n\nexport function parseFn(fn, mode) {\n if (fn && is.String(fn) && fn.length > 4) {\n let v = fn.trim();\n let flag = false;\n try {\n if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {\n v = v.replace(SUFFIX, '').replace(PREFIX, '');\n flag = true;\n } else if (v.indexOf($T) === 0) {\n v = v.replace($T, '');\n flag = true;\n } else if (v.indexOf($TX) === 0) {\n v = makeFn('function($inject){' + v.replace($TX, '') + '}');\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (!mode && v.indexOf(FUNCTION) === 0 && v !== FUNCTION) {\n flag = true;\n }\n if (!flag) return fn;\n const val = makeFn((v.indexOf(FUNCTION) === -1 && v.indexOf('(') !== 0) ? (FUNCTION + ' ' + v) : v);\n val.__json = fn;\n return val;\n } catch (e) {\n err(`解析失败:${v}\\n\\nerr: ${e}`);\n return undefined;\n }\n }\n return fn;\n}\n\nexport function parseJson(json, mode) {\n return JSON.parse(json, function (k, v) {\n if (is.Undef(v) || !v.indexOf) return v;\n return parseFn(v, mode);\n });\n}\n","import is from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {arrayAttrs, normalAttrs} from './attrs';\nimport {logError} from '@form-create/utils/lib/console';\nimport {parseJson, toJson} from '@form-create/utils/lib/json';\nimport deepExtend from '@form-create/utils/lib/deepextend';\n\nexport {parseFn} from '@form-create/utils/lib/json';\nexport {parseJson, toJson}\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) {\n return copyRules([rule])[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 const r = is.Function(rule.getRule) ? rule.getRule() : rule;\n if (!r.type) {\n r.type = 'input';\n }\n return r;\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","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/modify';\n\nexport function baseRule() {\n return {\n props: {},\n on: {},\n options: [],\n children: [],\n effect: {},\n hidden: false,\n display: true,\n value: undefined,\n };\n}\n\nexport function creatorFactory(name, init) {\n return (title, field, value, props = {}) => {\n const maker = new Creator(name, title, field, value, props);\n if (init) {\n if (is.Function(init)) init(maker);\n else maker.props(init);\n }\n return maker;\n };\n}\n\nexport default function Creator(type, title, field, value, props) {\n this._data = extend(baseRule(), {type, title, field, value, props: props || {}});\n this.event = this.on;\n}\n\nextend(Creator.prototype, {\n getRule() {\n return this._data;\n },\n setProp(key, value) {\n $set(this._data, key, value);\n return this;\n },\n _clone() {\n const clone = new this.constructor();\n clone._data = copyRule(this._data);\n return clone;\n },\n})\n\nexport function appendProto(attrs) {\n attrs.forEach(name => {\n Creator.prototype[name] = function (key) {\n mergeRule(this._data, {[name]: arguments.length < 2 ? key : {[key]: arguments[1]}})\n return this;\n };\n });\n}\n\nappendProto(attrs());\n","import {creatorFactory} from './creator';\n\nconst commonMaker = creatorFactory('');\n\nexport function create(type, field, title) {\n let make = commonMaker('', field);\n make._data.type = type;\n make._data.title = title;\n return make;\n}\n\nexport function createTmp(template, vm, field, title) {\n let make = commonMaker('', field);\n make._data.type = 'template';\n make._data.template = template;\n make._data.title = title;\n make._data.vm = vm;\n return make;\n}\n\nexport default function makerFactory() {\n return {\n create,\n createTmp,\n template: createTmp,\n factory: creatorFactory\n };\n}\n","import {byCtx, invoke, mergeRule, toJson} from './util';\nimport {$set} from '@form-create/utils/lib/modify';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {format} from '@form-create/utils/lib/console';\n\n\nfunction copy(value) {\n return deepCopy(value);\n}\n\nexport default function Api(h) {\n\n function tidyFields(fields) {\n if (is.Undef(fields))\n fields = h.fields();\n else if (!Array.isArray(fields))\n fields = [fields];\n return fields;\n }\n\n function props(fields, key, val) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n $set(ctx.rule, key, val);\n h.$render.clearCache(ctx);\n });\n })\n }\n\n function allSubForm() {\n const subs = h.subForm;\n return Object.keys(subs).reduce((initial, k) => {\n const sub = subs[k];\n if (!sub) return initial;\n if (Array.isArray(sub))\n initial.push(...sub);\n else\n initial.push(sub);\n return initial;\n }, []);\n }\n\n const api = {\n get config() {\n return h.options\n },\n get options() {\n return h.options\n },\n get form() {\n return h.form\n },\n get rule() {\n return h.rules\n },\n get parent() {\n return h.vm.$pfc && h.vm.$pfc.$f\n },\n get children() {\n return allSubForm();\n },\n formData(fields) {\n return tidyFields(fields).reduce((initial, id) => {\n const ctx = h.getFieldCtx(id);\n if (!ctx) return initial;\n initial[ctx.field] = copy(ctx.rule.value);\n return initial;\n }, h.options.appendValue ? copy(h.appendData) : {});\n },\n getValue(field) {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n return copy(ctx.rule.value);\n },\n coverValue(formData) {\n const data = {...(formData || {})};\n h.deferSyncValue(() => {\n api.fields().forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (ctxs) {\n const flag = hasProperty(data, key);\n ctxs.forEach(ctx => {\n ctx.rule.value = flag ? data[key] : undefined;\n })\n delete data[key];\n }\n });\n extend(h.appendData, data);\n })\n },\n setValue(field) {\n let formData = field;\n if (arguments.length >= 2)\n formData = {[field]: arguments[1]};\n h.deferSyncValue(() => {\n Object.keys(formData).forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (!ctxs) return h.appendData[key] = formData[key];\n ctxs.forEach(ctx => {\n ctx.rule.value = formData[key];\n });\n });\n })\n },\n removeField(field) {\n const ctx = h.getCtx(field);\n h.deferSyncValue(() => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rm();\n });\n }, true);\n return ctx ? ctx.origin : undefined;\n },\n removeRule(rule) {\n const ctx = rule && byCtx(rule);\n if (!ctx) return;\n ctx.rm();\n return ctx.origin;\n },\n destroy: () => {\n h.vm.$el.parentNode && h.vm.$el.parentNode.removeChild(h.vm.$el);\n h.vm.$destroy();\n },\n fields: () => h.fields(),\n append: (rule, after, child) => {\n let index = h.sort.length - 1, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n index = ctx.rule.children.length - 1;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index + 1, 0, rule);\n },\n prepend: (rule, after, child) => {\n let index = 0, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index, 0, rule);\n },\n hidden(state, fields) {\n props(fields, 'hidden', !!state);\n h.refresh();\n },\n hiddenStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.hidden;\n },\n display(state, fields) {\n props(fields, 'display', !!state);\n h.refresh();\n },\n displayStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.display;\n },\n disabled(disabled, fields) {\n tidyFields(fields).forEach((field) => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rule.props && $set(ctx.rule.props, 'disabled', !!disabled);\n });\n });\n h.refresh();\n },\n all(origin) {\n return Object.keys(h.ctxs).map(k => {\n const ctx = h.ctxs[k];\n return origin ? ctx.origin : ctx.rule;\n });\n },\n model(origin) {\n return h.fields().reduce((initial, key) => {\n const ctx = h.fieldCtx[key][0];\n initial[key] = origin ? ctx.origin : ctx.rule;\n return initial;\n }, {});\n },\n component(origin) {\n return Object.keys(h.nameCtx).reduce((initial, key) => {\n const ctx = h.nameCtx[key].map(ctx => origin ? ctx.origin : ctx.rule);\n initial[key] = ctx.length === 1 ? ctx[0] : ctx;\n return initial;\n }, {});\n },\n bind() {\n return api.form;\n },\n reload: (rules) => {\n h.reloadRule(rules)\n },\n updateOptions(options) {\n h.fc.updateOptions(options);\n api.refresh();\n },\n onSubmit(fn) {\n api.updateOptions({onSubmit: fn});\n },\n sync: (field) => {\n if (Array.isArray(field)) {\n field.forEach(v => api.sync(v));\n return;\n }\n let ctxs = is.Object(field) ? byCtx(field) : h.getCtxs(field);\n if (!ctxs) {\n return;\n }\n ctxs = Array.isArray(ctxs) ? ctxs : [ctxs];\n ctxs.forEach(ctx => {\n if (!ctx.deleted) {\n const subForm = h.subForm[ctx.id];\n if (subForm) {\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.refresh();\n })\n } else if (subForm) {\n subForm.refresh();\n }\n }\n //ctx.updateKey(true);\n h.$render.clearCache(ctx);\n }\n });\n h.refresh();\n },\n refresh: () => {\n allSubForm().forEach(sub => {\n sub.refresh();\n });\n h.$render.clearCacheAll();\n h.refresh();\n },\n refreshOptions() {\n h.$manager.updateOptions(h.options);\n api.refresh();\n },\n hideForm: (hide) => {\n $set(h.vm, 'isShow', !hide);\n },\n changeStatus: () => {\n return h.changeStatus;\n },\n clearChangeStatus: () => {\n h.changeStatus = false;\n },\n updateRule(id, rule) {\n h.getCtxs(id).forEach(ctx => {\n extend(ctx.rule, rule);\n });\n },\n updateRules(rules) {\n Object.keys(rules).forEach(id => {\n api.updateRule(id, rules[id]);\n })\n },\n mergeRule: (id, rule) => {\n h.getCtxs(id).forEach(ctx => {\n mergeRule(ctx.rule, rule);\n });\n },\n mergeRules(rules) {\n Object.keys(rules).forEach(id => {\n api.mergeRule(id, rules[id]);\n })\n },\n getRule: (id, origin) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return origin ? ctx.origin : ctx.rule;\n }\n },\n setEffect(id, attr, value) {\n const ctx = h.getCtx(id);\n if (ctx && attr) {\n if (attr[0] === '$') {\n attr = attr.substr(1);\n }\n if (hasProperty(ctx.rule, '$' + attr)) {\n $set(ctx.rule, '$' + attr, value);\n }\n if (!hasProperty(ctx.rule, 'effect')) {\n $set(ctx.rule, 'effect', {});\n }\n $set(ctx.rule.effect, attr, value);\n }\n },\n clearEffectData(id, attr) {\n const ctx = h.getCtx(id);\n if (ctx) {\n if (attr && attr[0] === '$') {\n attr = attr.substr(1);\n }\n ctx.clearEffectData(attr);\n api.sync(id);\n }\n },\n updateValidate(id, validate, merge) {\n if (merge) {\n api.mergeRule(id, {validate})\n } else {\n props(id, 'validate', validate);\n }\n },\n updateValidates(validates, merge) {\n Object.keys(validates).forEach(id => {\n api.updateValidate(id, validates[id], merge);\n })\n },\n refreshValidate() {\n h.vm.validate = {};\n api.refresh();\n },\n resetFields(fields) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n h.$render.clearCache(ctx);\n ctx.rule.value = copy(ctx.defaultValue);\n });\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.exportEl || ctx.el || h.vm.$refs[ctx.ref];\n },\n closeModal: (id) => {\n const el = api.el(id);\n el && el.$emit && el.$emit('close-modal');\n },\n getSubForm(field) {\n const ctx = h.getCtx(field);\n return ctx ? h.subForm[ctx.id] : undefined;\n },\n nextTick(fn) {\n h.bus.$once('next-tick', fn);\n h.refresh();\n },\n nextRefresh(fn) {\n h.nextRefresh();\n fn && invoke(fn);\n },\n emit(name, ...args) {\n h.vm.$emit(name, ...args);\n },\n deferSyncValue(fn, sync){\n h.deferSyncValue(fn, sync);\n },\n helper: {\n tidyFields, props\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","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","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 'F' + Math.random().toString(36).substr(3, 3) + Number(`${Date.now()}${++id}`).toString(36);\n}\n","export default function deepSet(data, idx, val) {\n let _data = data, to;\n (idx || '').split('.').forEach(v => {\n if (to) {\n if (!_data[to] || typeof _data[to] != 'object') {\n _data[to] = {}\n }\n _data = _data[to];\n }\n to = v;\n })\n _data[to] = val;\n return _data;\n}\n","import 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';\n\nexport default function useCache(Render) {\n extend(Render.prototype, {\n initCache() {\n this.clearCacheAll();\n },\n clearCache(ctx) {\n if(ctx.rule.cache){\n return;\n }\n if (!this.cache[ctx.id]) {\n ctx.parent && this.clearCache(ctx.parent);\n return;\n }\n if (this.cache[ctx.id].use === true || this.cache[ctx.id].parent) {\n this.$handle.refresh();\n }\n const parent = this.cache[ctx.id].parent;\n this.cache[ctx.id] = null;\n parent && this.clearCache(parent);\n },\n clearCacheAll() {\n this.cache = {};\n },\n setCache(ctx, vnode, parent) {\n this.cache[ctx.id] = {\n vnode,\n use: false,\n parent,\n slot: ctx.rule.slot\n };\n },\n getCache(ctx) {\n const cache = this.cache[ctx.id];\n if (cache) {\n cache.use = true;\n return cache.vnode;\n }\n return undefined;\n }\n })\n\n}\n","import extend from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {_vue as Vue} from '../frame';\nimport {tip} from '@form-create/utils/lib/console';\nimport {invoke, mergeRule} from '../frame/util';\nimport toCase, {lower} from '@form-create/utils/lib/tocase';\nimport {$set, deepSet, toLine} from '@form-create/utils';\n\nexport default function useRender(Render) {\n extend(Render.prototype, {\n initRender() {\n this.tempList = {};\n this.clearOrgChildren();\n },\n initOrgChildren() {\n const ctxs = this.$handle.ctxs;\n this.orgChildren = Object.keys(ctxs).reduce((initial, id) => {\n if (ctxs[id].parser.loadChildren !== false) {\n const children = ctxs[id].rule.children;\n initial[id] = is.trueArray(children) ? [...children] : [];\n }\n\n return initial;\n }, {});\n\n },\n clearOrgChildren() {\n this.orgChildren = {};\n },\n getTypeSlot(ctx) {\n const _fn = (vm) => {\n if (vm) {\n let slot = undefined;\n if (ctx.rule.field) {\n slot = vm.$scopedSlots['field-' + toLine(ctx.rule.field)] || vm.$scopedSlots['field-' + ctx.rule.field];\n }\n if (!slot) {\n slot = vm.$scopedSlots['type-' + toLine(ctx.type)] || vm.$scopedSlots['type-' + ctx.type];\n }\n if (slot) {\n return slot;\n }\n return _fn(vm.$pfc);\n }\n }\n return _fn(this.vm);\n },\n render() {\n if (!this.vm.isShow) {\n return;\n }\n this.$h = this.vm.$createElement;\n this.$manager.beforeRender();\n\n let vn;\n\n const make = () => this.renderList();\n make.renderSlot = slot => this.renderList(slot);\n make.renderName = name => this.renderId(name);\n make.renderField = field => this.renderId(field, 'field');\n\n if (this.vm.$scopedSlots.container) {\n vn = [this.vm.$scopedSlots.container(make)];\n } else {\n vn = make();\n }\n return this.$manager.render(vn);\n },\n renderList(slot) {\n return this.sort.map((id) => {\n return slot ? this.renderSlot(this.$handle.ctxs[id], slot) : this.renderCtx(this.$handle.ctxs[id]);\n }).filter((val) => val !== undefined);\n },\n makeVm(rule) {\n const vm = rule.vm;\n if (!vm)\n return new Vue;\n else if (is.Function(vm))\n return invoke(() => rule.vm(this.$handle.getInjectData(rule)));\n else if (!vm._isVue)\n return new Vue(vm);\n return vm;\n },\n mergeGlobal(ctx) {\n const g = this.$handle.options.global;\n if (!g) return;\n //todo 缓存配置,更新 option 更新\n if (!ctx.cacheConfig)\n ctx.cacheConfig = g[ctx.originType] || g[ctx.type] || g[ctx.trueType] || {};\n ctx.prop = mergeRule({}, [g['*'], ctx.cacheConfig, ctx.prop]);\n },\n setOptions(ctx) {\n if (ctx.prop.optionsTo && ctx.prop.options) {\n deepSet(ctx.prop, ctx.prop.optionsTo, ctx.prop.options);\n }\n },\n deepSet(ctx) {\n const deep = ctx.rule.deep;\n deep && Object.keys(deep).sort((a, b) => a.length < b.length ? -1 : 1).forEach(str => {\n deepSet(ctx.prop, str, deep[str]);\n });\n },\n setTempProps(vm, ctx) {\n if (!vm.$props) return;\n\n const {prop} = ctx;\n const keys = Object.keys(vm.$props);\n const inject = this.injectProp(ctx);\n const injectKeys = Object.keys(inject);\n\n keys.forEach(key => {\n if (hasProperty(prop.props, key))\n vm.$props[key] = prop.props[key];\n else if (injectKeys.indexOf(key) > -1) vm.$props[key] = inject[key];\n });\n\n const key = (vm.$options.model && vm.$options.model.prop) || 'value';\n if (keys.indexOf(key) > -1) {\n vm.$props[key] = prop.value;\n }\n },\n renderTemp(ctx) {\n if (!Vue.compile) {\n tip('当前使用的Vue构建版本不支持compile,无法使用template功能');\n return [];\n }\n const rule = ctx.prop;\n const {id, key} = ctx;\n\n if (!this.tempList[id]) {\n if (!ctx.el) {\n ctx.el = this.makeVm(rule);\n this.vm.$nextTick(() => ctx.parser.mounted(ctx));\n }\n\n let vm = ctx.el;\n if (ctx.input)\n vm.$on((vm.$options.model && vm.$options.model.event) || 'input', (value) => {\n this.onInput(ctx, value);\n });\n\n this.tempList[id] = {\n vm,\n template: Vue.compile(rule.template)\n };\n }\n\n const {vm, template} = this.tempList[id];\n\n this.setTempProps(vm, ctx);\n\n const vn = template.render.call(vm);\n\n if (is.Undef(vn.data)) vn.data = {};\n vn.key = key;\n vn.data.ref = ctx.ref;\n vn.data.key = key;\n return vn;\n },\n parseSide(side, ctx) {\n return is.Object(side) ? mergeRule({props: {formCreateInject: ctx.prop.props.formCreateInject}}, side) : side;\n },\n renderSides(vn, ctx, temp) {\n const prop = ctx[temp ? 'rule' : 'prop'];\n return [this.renderRule(this.parseSide(prop.prefix, ctx)), vn, this.renderRule(this.parseSide(prop.suffix, ctx))];\n\n },\n renderSlot(ctx, slot) {\n return ctx.rule.slot === slot ? this.renderCtx(ctx) : undefined;\n },\n renderId(name, type) {\n const ctxs = this.$handle[type === 'field' ? 'fieldCtx' : 'nameCtx'][name]\n return ctxs ? ctxs.map(ctx => this.renderCtx(ctx, ctx.parent)) : undefined;\n },\n renderCtx(ctx, parent) {\n if (ctx.type === 'hidden') return;\n const rule = ctx.rule;\n if ((!this.cache[ctx.id]) || this.cache[ctx.id].slot !== rule.slot) {\n let vn;\n let cacheFlag = rule.cache !== false;\n const _type = ctx.trueType;\n const none = !(is.Undef(rule.display) || !!rule.display);\n if (_type === 'template' && !rule.template) {\n vn = this.renderSides(this.renderChildren(ctx), ctx, true);\n if (none) {\n this.display(vn);\n }\n vn = this.item(ctx, vn);\n } else if (_type === 'fcFragment') {\n vn = this.renderChildren(ctx);\n } else {\n ctx.initProp();\n this.mergeGlobal(ctx);\n this.$manager.tidyRule(ctx);\n this.deepSet(ctx);\n this.setOptions(ctx);\n this.ctxProp(ctx);\n let prop = ctx.prop;\n prop.preview = !!(hasProperty(prop, 'preview') ? prop.preview : (this.options.preview || false))\n prop.props.formCreateInject = this.injectProp(ctx);\n const preview = prop.preview;\n\n if (prop.hidden) {\n this.setCache(ctx, undefined, parent);\n return;\n }\n\n if (_type === 'template' && prop.template) {\n vn = this.renderTemp(ctx);\n cacheFlag = false;\n } else {\n let children = [];\n if (ctx.parser.renderChildren) {\n children = ctx.parser.renderChildren(ctx);\n } else if (ctx.parser.loadChildren !== false) {\n children = this.renderChildren(ctx);\n }\n const slot = this.getTypeSlot(ctx);\n if (slot) {\n vn = slot({\n rule,\n prop,\n preview,\n children,\n api: this.$handle.api,\n model: prop.model || {}\n });\n } else {\n vn = preview ? ctx.parser.preview(children, ctx) : ctx.parser.render(children, ctx);\n }\n }\n vn = this.renderSides(vn, ctx);\n if ((!(!ctx.input && is.Undef(prop.native))) && prop.native !== true) {\n vn = this.$manager.makeWrap(ctx, vn);\n }\n if (none) {\n vn = this.display(vn);\n }\n vn = this.item(ctx, vn)\n }\n if (cacheFlag) {\n this.setCache(ctx, vn, parent);\n }\n return vn;\n }\n\n return this.getCache(ctx);\n },\n display(vn) {\n if (Array.isArray(vn)) {\n const data = [];\n vn.forEach(v => {\n if (Array.isArray(v)) return this.display(v);\n if (this.none(v)) data.push(v);\n })\n return data;\n } else {\n return this.none(vn);\n }\n },\n none(vn) {\n if (vn && vn.data) {\n if (Array.isArray(vn.data.style)) {\n vn.data.style.push({display: 'none'});\n } else if(is.String(vn.data.style)) {\n vn.data.style += ';display:none;';\n } else {\n vn.data.style = [vn.data.style, {display: 'none'}];\n }\n return vn;\n }\n },\n item(ctx, vn) {\n return this.$h('fcFragment', {\n slot: ctx.rule.slot,\n key: ctx.key,\n }, [vn]);\n },\n injectProp(ctx) {\n if (!this.vm.ctxInject[ctx.id]) {\n $set(this.vm.ctxInject, ctx.id, {\n api: this.$handle.api,\n form: this.fc.create,\n subForm: subForm => {\n this.$handle.addSubForm(ctx, subForm);\n },\n getSubForm: () => {\n return this.$handle.subForm[ctx.id];\n },\n options: [],\n children: [],\n prop: {},\n preview: false,\n field: ctx.field,\n rule: ctx.rule,\n input: ctx.input,\n });\n }\n const inject = this.vm.ctxInject[ctx.id];\n extend(inject, {\n preview: ctx.prop.preview,\n options: ctx.prop.options,\n children: ctx.rule.children,\n prop: (function () {\n const temp = {...ctx.prop};\n temp.on = temp.on ? {...temp.on} : {};\n delete temp.model;\n return temp;\n }()),\n });\n return inject;\n },\n ctxProp(ctx, custom) {\n const {ref, key, rule} = ctx;\n this.$manager.mergeProp(ctx, custom);\n ctx.parser.mergeProp(ctx, custom);\n const props = [\n {\n ref: ref,\n key: rule.key || `${key}fc`,\n slot: undefined,\n on: {\n 'hook:mounted': () => {\n this.onMounted(ctx);\n },\n 'fc.sub-form': (subForm) => {\n this.$handle.addSubForm(ctx, subForm);\n },\n 'fc.el': (el) => {\n ctx.exportEl = el;\n if (el) {\n (el.$el || el).__rule__ = ctx.rule;\n }\n }\n },\n }\n ]\n\n if (!custom && ctx.input) {\n ctx.prop.model = {\n value: this.$handle.getFormData(ctx),\n callback: (value) => {\n this.onInput(ctx, value);\n },\n expression: `formData.${ctx.id}`\n };\n }\n mergeProps(props, ctx.prop);\n return ctx.prop;\n },\n onMounted(ctx) {\n ctx.el = this.vm.$refs[ctx.ref];\n if (ctx.el) {\n (ctx.el.$el || ctx.el).__rule__ = ctx.rule;\n }\n ctx.parser.mounted(ctx);\n this.$handle.effect(ctx, 'mounted');\n },\n onInput(ctx, value) {\n this.$handle.onInput(ctx, value);\n },\n renderChildren(ctx) {\n const {children} = ctx.rule, orgChildren = this.orgChildren[ctx.id];\n\n const isRm = child => {\n return !is.String(child) && child.__fc__ && !this.$handle.ctxs[child.__fc__.id];\n }\n\n if (!is.trueArray(children) && orgChildren) {\n this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n this.orgChildren[ctx.id] = [];\n return [];\n }\n\n orgChildren && this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (children.indexOf(child) === -1 && isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n\n return children.map(child => {\n if (!child) return;\n if (is.String(child)) return child;\n if (child.__fc__) {\n return this.renderCtx(child.__fc__, ctx);\n }\n if (child.type) {\n this.vm.$nextTick(() => {\n this.$handle.loadChildren(children, ctx);\n this.$handle.refresh();\n });\n }\n });\n\n },\n defaultRender(ctx, children) {\n const prop = ctx.prop;\n if(prop.component)\n return this.vNode.makeComponent(prop.component, prop, children)\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 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 unique from '@form-create/utils/lib/unique';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport {enumerable, mergeRule} 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, defaultValue) {\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 exportEl: undefined,\n defaultValue: rule.field ? deepCopy(defaultValue) : 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 if (name === undefined) {\n this.payload = {};\n } else {\n delete this.payload[name];\n }\n },\n updateKey(flag) {\n this.key = unique();\n flag && this.parent && this.parent.updateKey(flag);\n },\n updateType() {\n this.originType = this.rule.type;\n this.type = toCase(this.rule.type);\n },\n setParser(parser) {\n this.parser = parser;\n parser.init(this);\n },\n initProp() {\n const rule = {...this.rule};\n delete rule.children;\n this.prop = mergeRule({}, [rule, ...Object.keys(this.payload).map(k => this.payload[k]), this.computed]);\n },\n check(handle) {\n return this.vm === handle.vm\n },\n unwatch() {\n this.watch.forEach(un => un());\n this.watch = [];\n },\n unlink() {\n this.linkOn.forEach(un => un());\n this.linkOn = [];\n },\n link() {\n this.unlink();\n this.$handle.appendLink(this);\n },\n watchTo() {\n this.$handle.watchCtx(this);\n },\n delete() {\n const undef = void 0;\n this.unwatch();\n this.unlink();\n this.rmCtrl();\n extend(this, {\n deleted: true,\n prop: {...this.rule},\n computed: {},\n el: undef,\n $handle: undef,\n $render: undef,\n $api: undef,\n vm: undef,\n vNode: undef,\n parent: null,\n cacheConfig: null,\n })\n },\n rmCtrl() {\n this.ctrlRule.forEach(ctrl => ctrl.__fc__ && ctrl.__fc__.rm());\n this.ctrlRule = [];\n },\n rm() {\n const _rm = () => {\n let index = this.root.indexOf(this.origin);\n if (index > -1) {\n this.root.splice(index, 1);\n this.$handle && this.$handle.refresh();\n }\n }\n if (this.deleted) {\n _rm();\n return;\n }\n this.$handle.noWatch(() => {\n this.$handle.deferSyncValue(() => {\n this.rmCtrl();\n _rm();\n this.$handle.rmCtx(this);\n extend(this, {\n root: []\n });\n }, this.input);\n });\n },\n update(handle, init) {\n extend(this, {\n deleted: false,\n $handle: handle,\n $render: handle.$render,\n $api: handle.api,\n vm: handle.vm,\n trueType: handle.getType(this.originType),\n vNode: handle.$render.vNode,\n updated: false,\n cacheValue: this.rule.value\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 {baseRule} from '../factory/creator';\nimport RuleContext from '../factory/context';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {$set} from '@form-create/utils';\n\nconst condition = {\n '==': (b) => (a) => a === b,\n '!=': (b) => (a) => a !== b,\n '<>': (b) => (a) => a !== b,\n '>': (b) => (a) => a > b,\n '>=': (b) => (a) => a >= b,\n '<': (b) => (a) => a < b,\n '<=': (b) => (a) => a <= b,\n 'in': (b) => (a) => (b && b.indexOf && b.indexOf(a) > -1),\n 'on': (b) => (a) => (a && a.indexOf && a.indexOf(b) > -1),\n 'notIn': (b) => (a) => !(condition.in(b)(a)),\n 'notOn': (b) => (a) => !(condition.on(b)(a)),\n 'between': (b) => (a) => a > b[0] && a < b[1],\n 'notBetween': (b) => (a) => a < b[0] || a > b[1],\n}\n\n\nexport default function useLoader(Handler) {\n extend(Handler.prototype, {\n nextRefresh(fn) {\n const id = this.loadedId;\n this.vm.$nextTick(() => {\n id === this.loadedId && (fn ? fn() : this.refresh());\n });\n },\n parseRule(_rule) {\n const rule = getRule(_rule);\n\n Object.defineProperties(rule, {\n __origin__: enumerable(_rule, true)\n });\n\n fullRule(rule);\n this.appendValue(rule);\n\n rule.options = Array.isArray(rule.options) ? rule.options : [];\n\n [rule, rule['prefix'], rule['suffix']].forEach(item => {\n if (!item) {\n return;\n }\n this.loadFn(item, rule);\n });\n this.loadCtrl(rule);\n if (rule.update) {\n rule.update = parseFn(rule.update);\n }\n return rule;\n },\n loadFn(item, rule) {\n ['on', 'props', 'nativeOn', 'deep'].forEach(k => {\n item[k] && this.parseInjectEvent(rule, item[k]);\n });\n },\n loadCtrl(rule) {\n rule.control && rule.control.forEach(ctrl => {\n if (ctrl.handle) {\n ctrl.handle = parseFn(ctrl.handle)\n }\n })\n },\n syncProp(ctx) {\n const rule = ctx.rule;\n is.trueArray(rule.sync) && mergeProps([{\n on: rule.sync.reduce((pre, prop) => {\n pre[`update:${prop}`] = (val) => {\n rule.props[prop] = val;\n this.vm.$emit('sync', prop, val, rule, this.fapi);\n }\n return pre\n }, {})\n }], ctx.computed)\n },\n loadRule() {\n // console.warn('%c load', 'color:blue');\n this.cycleLoad = false;\n this.loading = true;\n if (this.pageEnd) {\n this.bus.$emit('load-start');\n }\n this.deferSyncValue(() => {\n this._loadRule(this.rules);\n this.loading = false;\n if (this.cycleLoad && this.pageEnd) {\n return this.loadRule();\n }\n if (this.pageEnd) {\n this.bus.$emit('load-end');\n }\n this.vm._renderRule();\n this.$render.initOrgChildren();\n this.syncForm();\n });\n },\n loadChildren(children, parent) {\n this.cycleLoad = false;\n this.loading = true;\n this.bus.$emit('load-start');\n this._loadRule(children, parent);\n this.loading = false;\n if (this.cycleLoad) {\n return this.loadRule();\n } else {\n this.bus.$emit('load-end');\n this.syncForm();\n }\n this.$render.clearCache(parent);\n },\n _loadRule(rules, parent) {\n\n const preIndex = (i) => {\n let pre = rules[i - 1];\n if (!pre || !pre.__fc__) {\n return i > 0 ? preIndex(i - 1) : -1;\n }\n let index = this.sort.indexOf(pre.__fc__.id);\n return index > -1 ? index : preIndex(i - 1);\n }\n\n const loadChildren = (children, parent) => {\n if (is.trueArray(children)) {\n this._loadRule(children, parent);\n }\n };\n\n rules.map((_rule, index) => {\n if (parent && !is.Object(_rule)) return;\n if (!this.pageEnd && !parent && index >= this.first) return;\n\n if (_rule.__fc__ && _rule.__fc__.root === rules && this.ctxs[_rule.__fc__.id]) {\n loadChildren(_rule.__fc__.rule.children, _rule.__fc__);\n return _rule.__fc__;\n }\n\n let rule = getRule(_rule);\n\n const isRepeat = () => {\n return !!(rule.field && this.fieldCtx[rule.field] && this.fieldCtx[rule.field][0] !== _rule.__fc__)\n }\n\n this.ruleEffect(rule, 'init', {repeat: isRepeat()});\n\n if (isRepeat()) {\n this.vm.$emit('repeat-field', _rule, this.api);\n }\n\n let ctx;\n let isCopy = false;\n let isInit = !!_rule.__fc__;\n let defaultValue = rule.value;\n if (isInit) {\n ctx = _rule.__fc__;\n defaultValue = ctx.defaultValue;\n const check = !ctx.check(this);\n if (ctx.deleted) {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n ctx.update(this);\n }\n } else {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n rules[index] = _rule = _rule._clone ? _rule._clone() : copyRule(_rule);\n ctx = null;\n isCopy = true;\n }\n }\n }\n if (!ctx) {\n const rule = this.parseRule(_rule);\n ctx = new RuleContext(this, rule, isInit ? defaultValue : rule.value);\n this.bindParser(ctx);\n } else {\n if (ctx.originType !== ctx.rule.type) {\n ctx.updateType();\n this.bindParser(ctx);\n }\n this.appendValue(ctx.rule);\n }\n [false, true].forEach(b => this.parseEmit(ctx, b));\n this.syncProp(ctx);\n ctx.parent = parent || null;\n ctx.root = rules;\n this.setCtx(ctx);\n\n !isCopy && !isInit && this.effect(ctx, 'load');\n\n this.effect(ctx, 'created');\n\n ctx.parser.loadChildren === false || loadChildren(ctx.rule.children, ctx);\n\n if (!parent) {\n const _preIndex = preIndex(index);\n if (_preIndex > -1 || !index) {\n this.sort.splice(_preIndex + 1, 0, ctx.id);\n } else {\n this.sort.push(ctx.id);\n }\n }\n\n const r = ctx.rule;\n if (!ctx.updated) {\n ctx.updated = true;\n if (is.Function(r.update)) {\n this.bus.$once('load-end', () => {\n this.refreshUpdate(ctx, r.value, 'init');\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 || ((condition[control.condition || '=='] || condition['=='])(control.value));\n if (!is.trueArray(control.rule)) continue;\n const data = {\n ...control,\n valid: invoke(() => handleFn(ctx.rule.value, api)),\n ctrl: findCtrl(ctx, control.rule),\n isHidden: is.String(control.rule[0]),\n };\n if ((data.valid && data.ctrl) || (!data.valid && !data.ctrl && !data.isHidden)) continue;\n validate.push(data);\n }\n if (!validate.length) return false;\n\n const hideLst = [];\n let flag = false;\n this.deferSyncValue(() => {\n validate.reverse().forEach(({isHidden, valid, rule, prepend, append, child, ctrl, method}) => {\n if (isHidden) {\n valid ? ctx.ctrlRule.push({\n __ctrl: true,\n children: rule,\n valid\n })\n : ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n hideLst[valid ? 'push' : 'unshift'](() => {\n if (method === 'disabled') {\n this.api.disabled(!valid, rule);\n } else if (method === 'display') {\n this.api.display(valid, rule);\n } else if (method === 'required') {\n rule.forEach(item => {\n this.api.setEffect(item, 'required', valid);\n })\n if(!valid){\n this.api.clearValidateState(rule);\n }\n } else {\n this.api.hidden(!valid, rule);\n }\n });\n return;\n }\n if (valid) {\n flag = true;\n const ruleCon = {\n type: 'fcFragment',\n native: true,\n __ctrl: true,\n children: rule,\n }\n ctx.ctrlRule.push(ruleCon);\n this.bus.$once('load-start', () => {\n // this.cycleLoad = true;\n if (prepend) {\n api.prepend(ruleCon, prepend, child)\n } else if (append || child) {\n api.append(ruleCon, append || ctx.id, child)\n } else {\n ctx.root.splice(ctx.root.indexOf(ctx.origin) + 1, 0, ruleCon);\n }\n });\n } else {\n ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n const ctrlCtx = byCtx(ctrl);\n ctrlCtx && ctrlCtx.rm();\n }\n });\n });\n hideLst.length && this.vm.$nextTick(() => {\n hideLst.forEach(v => v());\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 this.deferSyncValue(() => {\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 this.vm.$emit('reloading', this.api);\n });\n this.bus.$off('next-tick', this.nextReload);\n this.bus.$once('next-tick', this.nextReload);\n this.vm.$emit('update', this.api);\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)) $set(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/modify';\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 (is.Undef(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 || false);\n this.effect(ctx, 'value');\n },\n onInput(ctx, value) {\n let val;\n if (ctx.input && (this.isQuote(ctx, val = ctx.parser.toValue(value, ctx)) || this.isChange(ctx, val))) {\n this.setValue(ctx, val, value);\n }\n },\n setFormData(ctx, value) {\n $set(this.formData, ctx.id, value === null ? undefined : value);\n },\n getFormData(ctx) {\n return this.formData[ctx.id];\n },\n validate() {\n toEmpty(this.vm.validate);\n this.fields().forEach(id => {\n this.fieldCtx[id].forEach(ctx => {\n this.vm.validate[ctx.id] = toArray(ctx.rule.validate);\n });\n });\n return this.vm.validate;\n },\n syncForm() {\n toEmpty(this.form);\n Object.defineProperties(this.form, this.fields().reduce((initial, field) => {\n const ctx = this.getFieldCtx(field);\n const handle = this.valueHandle(ctx);\n handle.configurable = true;\n initial[field] = handle;\n return initial;\n }, this.options.appendValue ? Object.keys(this.appendData).reduce((initial, field) => {\n initial[field] = {\n enumerable: true,\n configurable: true,\n get: () => {\n return this.appendData[field];\n },\n set: (val) => {\n this.appendData[field] = val;\n }\n }\n return initial;\n }, {}) : {}));\n this.syncValue();\n },\n valueHandle(ctx) {\n return {\n enumerable: true,\n get: () => {\n return this.getValue(ctx);\n },\n set: (value) => {\n if (this.isChange(ctx, value)) {\n this.setValue(ctx, value, ctx.parser.toFormValue(value, ctx), true);\n }\n }\n };\n },\n appendValue(rule) {\n if (!rule.field || !hasProperty(this.appendData, rule.field)) return;\n rule.value = this.appendData[rule.field];\n delete this.appendData[rule.field];\n },\n addSubForm(ctx, subForm) {\n this.subForm[ctx.id] = subForm;\n },\n deferSyncValue(fn, sync) {\n if (!this.deferSyncFn) {\n this.deferSyncFn = fn;\n }\n if (!this.deferSyncFn.sync) {\n this.deferSyncFn.sync = sync;\n }\n invoke(fn);\n if (this.deferSyncFn === fn) {\n this.deferSyncFn = null;\n if (fn.sync) {\n this.syncValue();\n }\n }\n },\n syncValue() {\n if (this.deferSyncFn) {\n return this.deferSyncFn.sync = true;\n }\n this.vm._updateValue({...(this.options.appendValue ? this.appendData : {}), ...this.form});\n },\n isChange(ctx, value) {\n return JSON.stringify(ctx.rule.value, strFn) !== JSON.stringify(value === null ? undefined : value, strFn);\n },\n isQuote(ctx, value) {\n return (is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;\n },\n refreshUpdate(ctx, val, origin) {\n if (is.Function(ctx.rule.update)) {\n const state = invoke(() => ctx.rule.update(val, ctx.origin, this.api, {origin: origin || 'change'}));\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, origin) {\n if (this.refreshControl(ctx)) {\n this.$render.clearCacheAll();\n this.loadRule();\n this.vm.$emit('update', this.api);\n this.refresh();\n }\n this.refreshUpdate(ctx, val, origin);\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, 'link');\n\n this.bus.$on('change-' + field, fn);\n ctx.linkOn.push(() => this.bus.$off('change-' + field, fn));\n });\n },\n fields() {\n return Object.keys(this.fieldCtx);\n },\n });\n}\n\n\nfunction strFn(key, val) {\n return typeof val === 'function' ? '' + val : val;\n}\n\nfunction toEmpty(obj) {\n Object.keys(obj).forEach(k => delete obj[k]);\n}\n","const BaseParser = {\n init(ctx) {\n },\n toFormValue(value, ctx) {\n return value\n },\n toValue(formValue, ctx) {\n return formValue;\n },\n mounted(ctx) {\n },\n render(children, ctx) {\n return ctx.$render.defaultRender(ctx, children);\n },\n preview(children, ctx) {\n return this.render(children, ctx);\n },\n mergeProp(ctx) {\n }\n}\n\nexport default BaseParser;\n","import extend from '@form-create/utils/lib/extend';\nimport toCase from '@form-create/utils/lib/tocase';\nimport BaseParser from '../factory/parser';\nimport {$del} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\n\nconst noneKey = ['field', 'value', 'vm', 'template', 'name', 'config', 'control', 'inject', 'sync', 'payload', 'optionsTo', 'update', 'component', 'cache'];\n\nexport default function useContext(Handler) {\n extend(Handler.prototype, {\n getCtx(id) {\n return this.getFieldCtx(id) || this.getNameCtx(id)[0] || this.ctxs[id];\n },\n getCtxs(id) {\n return this.fieldCtx[id] || this.nameCtx[id] || (this.ctxs[id] ? [this.ctxs[id]] : []);\n },\n setIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n if (!this[field][key]) {\n this[field][key] = [ctx];\n } else {\n this[field][key].push(ctx);\n }\n },\n rmIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n const lst = this[field][key];\n if (!lst) return false;\n const flag = lst.splice(lst.indexOf(ctx) >>> 0, 1).length > 0;\n if (!lst.length) {\n delete this[field][key];\n }\n return flag;\n },\n getFieldCtx(field) {\n return (this.fieldCtx[field] || [])[0];\n },\n getNameCtx(name) {\n return this.nameCtx[name] || [];\n },\n setCtx(ctx) {\n let {id, field, name, rule} = ctx;\n this.ctxs[id] = ctx;\n name && this.setIdCtx(ctx, name, 'name');\n if (!ctx.input) return;\n this.setIdCtx(ctx, field, 'field');\n this.setFormData(ctx, ctx.parser.toFormValue(rule.value, ctx));\n if (this.isMounted && !this.reloading) {\n this.vm.$emit('change', ctx.field, rule.value, ctx.origin, this.api);\n }\n },\n getParser(ctx) {\n const list = this.fc.parsers;\n return list[ctx.originType] || list[toCase(ctx.type)] || list[ctx.trueType] || BaseParser;\n },\n bindParser(ctx) {\n ctx.setParser(this.getParser(ctx));\n },\n getType(alias) {\n const map = this.fc.CreateNode.aliasMap;\n const type = map[alias] || map[toCase(alias)] || alias;\n return toCase(type);\n },\n noWatch(fn) {\n if (!this.noWatchFn) {\n this.noWatchFn = fn;\n }\n invoke(fn);\n if (this.noWatchFn === fn) {\n this.noWatchFn = null;\n }\n },\n watchCtx(ctx) {\n const vm = this.vm;\n Object.keys(ctx.rule).filter(k => k[0] !== '_' && k[0] !== '$' && noneKey.indexOf(k) === -1).forEach((key) => {\n const flag = key === 'children';\n ctx.watch.push(vm.$watch(() => ctx.rule[key], (n, o) => {\n if (this.loading || this.noWatchFn || this.reloading) return;\n if (flag && ctx.parser.loadChildren === false) {\n this.$render.clearCache(ctx);\n this.nextRefresh();\n return;\n }\n this.watching = true;\n // if (key === 'hidden')\n // ctx.updateKey(true);\n // else\n if (key === 'link') {\n ctx.link();\n return;\n } else if (['props', 'on', 'nativeOn', 'deep'].indexOf(key) > -1) {\n this.parseInjectEvent(ctx.rule, n || {});\n if (key === 'props' && ctx.input) {\n this.setFormData(ctx, ctx.parser.toFormValue(ctx.rule.value, ctx));\n }\n } else if (['emit', 'nativeEmit'].indexOf(key) > -1)\n this.parseEmit(ctx, key === 'emit');\n else if (['prefix', 'suffix'].indexOf(key) > -1)\n n && this.loadFn(n, ctx.rule);\n else if (key === 'type') {\n ctx.updateType();\n this.bindParser(ctx);\n } else if (key === 'children') {\n const flag = is.trueArray(n);\n this.deferSyncValue(() => {\n if (n !== o) {\n this.rmSub(o, ctx);\n this.$render.initOrgChildren();\n }\n flag && this.loadChildren(n, ctx);\n this.vm.$emit('update', this.api);\n });\n }\n this.$render.clearCache(ctx);\n this.refresh();\n this.watching = false;\n }, {deep: !flag, sync: flag}));\n });\n this.watchEffect(ctx);\n },\n rmSub(sub, ctx) {\n is.trueArray(sub) && sub.forEach(r => {\n r && r.__fc__ && r.__fc__.parent === ctx && this.rmCtx(r.__fc__);\n })\n },\n rmCtx(ctx) {\n if (ctx.deleted) return;\n const {id, field, input, name} = ctx;\n if (ctx.input) {\n Object.defineProperty(ctx.rule, 'value', {\n value: ctx.rule.value,\n writable: true\n });\n }\n\n $del(this.ctxs, id);\n $del(this.$render.tempList, id);\n $del(this.$render.orgChildren, id);\n $del(this.vm.ctxInject, id);\n $del(this.formData, id);\n $del(this.subForm, id);\n $del(ctx, 'cacheValue');\n\n input && this.rmIdCtx(ctx, field, 'field');\n name && this.rmIdCtx(ctx, name, 'name');\n\n if (input && !hasProperty(this.fieldCtx, field)) {\n $del(this.form, field);\n }\n\n this.deferSyncValue(() => {\n if (!this.reloading) {\n if (ctx.parser.loadChildren !== false) {\n if (is.trueArray(ctx.rule.children)) {\n ctx.rule.children.forEach(h => h.__fc__ && this.rmCtx(h.__fc__));\n }\n }\n if (ctx.root === this.rules) {\n this.vm._renderRule();\n }\n }\n }, input);\n\n const index = this.sort.indexOf(id);\n if (index > -1) {\n this.sort.splice(index, 1);\n }\n\n this.$render.clearCache(ctx);\n ctx.delete();\n this.effect(ctx, 'deleted');\n input && !this.fieldCtx[field] && this.vm.$emit('removeField', field, ctx.rule, this.api);\n ctx.rule.__ctrl || this.vm.$emit('removeRule', ctx.rule, this.api);\n return ctx;\n },\n })\n}\n","import Api from '../frame/api';\nimport Render from '../render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\nimport useInject from './inject';\nimport usePage from './page';\nimport useRender from './render';\nimport useLoader from './loader';\nimport useInput from './input';\nimport useContext from './context';\nimport useLifecycle from './lifecycle';\nimport useEffect from './effect';\n\n\nexport default function Handler(fc) {\n extend(this, {\n fc,\n vm: fc.vm,\n watching: false,\n loading: false,\n reloading: false,\n noWatchFn: null,\n deferSyncFn: null,\n isMounted: false,\n formData: {},\n subForm: {},\n form: {},\n appendData: {},\n providers: {},\n cycleLoad: null,\n loadedId: 1,\n nextTick: null,\n changeStatus: false,\n pageEnd: true,\n nextReload: () => {\n this.lifecycle('reload');\n }\n });\n\n funcProxy(this, {\n options() {\n return fc.options;\n },\n bus() {\n return fc.bus;\n },\n })\n\n this.initData(fc.rules);\n\n this.$manager = new fc.manager(this);\n this.$render = new Render(this);\n this.api = fc.extendApi(Api(this), this);\n}\n\nextend(Handler.prototype, {\n initData(rules) {\n extend(this, {\n ctxs: {},\n fieldCtx: {},\n nameCtx: {},\n sort: [],\n rules,\n });\n },\n init() {\n this.appendData = {...this.fc.options.formData || {}, ...this.vm.value || {}, ...this.appendData};\n this.useProvider();\n this.usePage();\n this.loadRule();\n this.$manager.__init();\n this.vm.$set(this.vm, 'formData', this.formData);\n },\n})\n\nuseInject(Handler);\nusePage(Handler);\nuseRender(Handler);\nuseLoader(Handler);\nuseInput(Handler);\nuseContext(Handler);\nuseLifecycle(Handler);\nuseEffect(Handler);\n","// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js\n\nfunction getError(action, option, xhr) {\n const msg = `fail to ${action} ${xhr.status}'`;\n const err = new Error(msg);\n err.status = xhr.status;\n err.url = action;\n return err;\n}\n\nfunction getBody(xhr) {\n const text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nexport default function fetch(option) {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n\n const xhr = new XMLHttpRequest();\n const action = option.action;\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(action, option, xhr), getBody(xhr));\n }\n\n option.onSuccess(getBody(xhr));\n };\n\n xhr.open(option.method || 'get', action, true);\n\n let formData;\n if (option.data) {\n if ((option.dataType || '').toLowerCase() !== 'json') {\n formData = new FormData();\n Object.keys(option.data).map(key => {\n formData.append(key, option.data[key]);\n });\n } else {\n formData = JSON.stringify(option.data);\n xhr.setRequestHeader('content-type', 'application/json');\n }\n }\n\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n const headers = option.headers || {};\n\n Object.keys(headers).forEach(item => {\n if (headers[item] !== null) {\n xhr.setRequestHeader(item, headers[item]);\n }\n });\n xhr.send(formData);\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport toLine from '@form-create/utils/lib/toline';\nimport {parseFn} from '../frame/util';\n\n\nexport default function useInject(Handler) {\n extend(Handler.prototype, {\n parseInjectEvent(rule, on) {\n const inject = rule.inject || this.options.injectEvent;\n return this.parseEventLst(rule, on, inject);\n },\n parseEventLst(rule, data, inject, deep) {\n Object.keys(data).forEach(k => {\n const fn = this.parseEvent(rule, data[k], inject, deep);\n if (fn) {\n data[k] = fn;\n }\n });\n return data;\n },\n parseEvent(rule, fn, inject, deep) {\n if (is.Function(fn) && ((inject !== false && !is.Undef(inject)) || fn.__inject)) {\n return this.inject(rule, fn, inject)\n } else if (!deep && Array.isArray(fn) && fn[0] && (is.String(fn[0]) || is.Function(fn[0]))) {\n return this.parseEventLst(rule, fn, inject, true);\n } else if (is.String(fn)) {\n const val = parseFn(fn);\n if (val && fn !== val) {\n return val.__inject ? this.parseEvent(rule, val, inject, true) : val;\n }\n }\n },\n parseEmit(ctx, on) {\n let event = {}, rule = ctx.rule, {emitPrefix, field, name, inject} = rule;\n let emit = rule[on ? 'emit' : 'nativeEmit'] || [];\n if (is.trueArray(emit)) {\n let emitKey = emitPrefix || field || name;\n if (emitKey) {\n if (!on) emitKey = `native-${emitKey}`;\n emit.forEach(eventName => {\n if (!eventName) return;\n let eventInject;\n if (is.Object(eventName)) {\n eventInject = eventName.inject;\n eventName = eventName.name;\n }\n const fieldKey = toLine(`${emitKey}-${eventName}`);\n const fn = (...arg) => {\n this.vm.$emit(fieldKey, ...arg);\n this.vm.$emit('emit-event', fieldKey, ...arg);\n };\n fn.__emit = true;\n\n if (!eventInject && inject === false) {\n event[eventName] = fn;\n } else {\n let _inject = eventInject || inject || this.options.injectEvent;\n event[eventName] = is.Undef(_inject) ? fn : this.inject(rule, fn, _inject);\n }\n });\n }\n\n }\n ctx.computed[on ? 'on' : 'nativeOn'] = event;\n return event;\n },\n getInjectData(self, inject) {\n const {option, rule} = this.vm.$options.propsData;\n return {\n api: this.api,\n $f: this.api,\n rule,\n self: self.__origin__,\n option,\n inject\n };\n },\n inject(self, _fn, inject) {\n if (_fn.__origin) {\n if (this.watching && !this.loading)\n return _fn;\n _fn = _fn.__origin;\n }\n\n const h = this;\n\n const fn = function (...args) {\n const data = h.getInjectData(self, inject);\n data.args = [...args];\n args.unshift(data);\n return _fn.apply(this, args);\n };\n fn.__origin = _fn;\n fn.__json = _fn.__json;\n return fn;\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\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 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 {mergeRule} from '../frame/util';\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 let prop = ps[k];\n if (is.Function(prop)) {\n prop = prop(this.fc);\n }\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 let effect = {\n required: () => {\n return (hasProperty(ctx.rule, '$required') ? ctx.rule['$required'] : ctx.rule?.effect?.required) || false;\n }\n };\n Object.keys(ctx.rule.effect || {}).forEach(k => {\n effect[k] = () => ctx.rule.effect[k];\n })\n Object.keys(ctx.rule).forEach(k => {\n if (k[0] === '$') {\n effect[k.substr(1)] = () => ctx.rule[k];\n }\n })\n Object.keys(effect || {}).forEach(k => {\n ctx.watch.push(vm.$watch(effect[k], (n) => {\n this.effect(ctx, 'watch', {[k]: n});\n }, {deep: true}));\n });\n },\n ruleEffect(rule, event, append) {\n this.emitEffect({\n rule,\n input: !!rule.field,\n type: this.getType(rule.type)\n }, event, append);\n },\n effect(ctx, event, custom) {\n this.emitEffect({\n rule: ctx.rule,\n input: ctx.input,\n type: ctx.trueType,\n ctx,\n custom\n }, event);\n },\n getEffect(rule, name) {\n if (hasProperty(rule, '$' + name)) {\n return rule['$' + name];\n }\n if (hasProperty(rule, 'effect') && hasProperty(rule.effect, name))\n return rule.effect[name];\n return undefined;\n },\n emitEffect({ctx, rule, input, type, custom}, event, append) {\n if (!type || type === 'fcFragment') return;\n const effect = custom ? custom : (Object.keys(rule).reduce((i, k) => {\n if (k[0] === '$') {\n i[k.substr(1)] = rule[k];\n }\n return i;\n }, {...rule.effect || {}}));\n Object.keys(effect).forEach(attr => {\n const p = this.providers[attr];\n if (!p || (p.input && !input)) return;\n let _type;\n if (!p._c) {\n _type = '*';\n } else if (p._used.indexOf(type) > -1) {\n _type = type;\n } else {\n return;\n }\n const data = {value: effect[attr], getValue: () => this.getEffect(rule, attr), ...(append || {})};\n if (ctx) {\n data.getProp = () => ctx.effectData(attr);\n data.clearProp = () => ctx.clearEffectData(attr);\n data.mergeProp = (prop) => mergeRule(data.getProp(), [prop]);\n data.id = ctx.id;\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)) {\n const arr = unique(c.filter(v => v !== '*'));\n return arr.length ? arr : false;\n } else if (is.String(c)) return [c];\n else return false;\n}\n","const NAME = 'fcFragment';\n\nexport default {\n name: NAME,\n functional: true,\n props: ['vnode'],\n render(h, ctx) {\n return ctx.props.vnode ? ctx.props.vnode : ctx.children\n }\n}\n","import toLine from '@form-create/utils/lib/toline';\nimport is from '@form-create/utils/lib/type';\nimport toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\nimport Vue from 'vue';\n\nfunction parseProp(prop) {\n if (is.String(prop))\n return {domProps: {innerHTML: prop}};\n return prop;\n}\n\nexport function CreateNodeFactory() {\n\n const aliasMap = {};\n\n function CreateNode(vm) {\n vm && this.setVm(vm);\n }\n\n extend(CreateNode.prototype, {\n setVm(vm) {\n this.vm = vm;\n this.$h = vm.$createElement;\n },\n make(tag, data, children) {\n if (Vue.config.isReservedTag(tag) && data.nativeOn) delete data.nativeOn;\n return this.makeComponent(tag, data, children);\n },\n makeComponent(type, data, children) {\n let Node = this.$h(type, 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","export default function toString(val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n","import 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 {byCtx, invoke} from './util';\nimport is from '@form-create/utils/lib/type';\nimport deepSet from '@form-create/utils/lib/deepset';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst loadData = function (fc) {\n const loadData = {\n name: 'loadData',\n _fn: [],\n created(inject, rule, api) {\n this.deleted(inject);\n let attrs = toArray(inject.getValue());\n const events = [];\n attrs.forEach(attr => {\n if (attr) {\n const on = () => {\n if (attr.watch !== false) {\n fc.bus.$off('p.loadData.' + attr.attr, on);\n fc.bus.$once('p.loadData.' + attr.attr, on);\n }\n let value = undefined;\n if (attr.attr) {\n value = fc.loadData[attr.attr] || attr.default;\n if (attr.copy) {\n value = deepCopy(value)\n }\n }\n deepSet(inject.getProp(), attr.to || 'options', value);\n api.sync(rule);\n }\n events.push(() => fc.bus.$off('p.loadData.' + attr.attr, on));\n on();\n }\n })\n this._fn[inject.id] = events;\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id].forEach(un => {\n un();\n })\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n loadData.watch = loadData.created;\n return loadData;\n}\n\nconst componentValidate = {\n name: 'componentValidate',\n load(attr, rule, api) {\n const method = attr.getValue();\n if (!method) {\n attr.clearProp();\n api.clearValidateState([rule.field]);\n } else {\n attr.getProp().validate = [{\n validator(...args) {\n const ctx = byCtx(rule);\n if (ctx) {\n return api.exec(ctx.id, method === true ? 'formCreateValidate' : method, ...args, {\n attr,\n rule,\n api\n });\n }\n }\n }];\n }\n },\n watch(...args) {\n componentValidate.load(...args);\n }\n};\n\nconst fetch = function (fc) {\n\n function parseOpt(option) {\n if (is.String(option)) {\n option = {\n action: option,\n to: 'options'\n }\n }\n return option;\n }\n\n function run(inject, rule, api) {\n let option = inject.value;\n const set = (val) => {\n if (val === undefined) {\n inject.clearProp();\n api.sync(rule);\n } else {\n deepSet(inject.getProp(), option.to || 'options', val);\n }\n }\n if (is.Function(option)) {\n option = option(rule, api);\n\n }\n option = parseOpt(option);\n if (!option || !option.action) {\n set(undefined);\n return;\n }\n if (!option.to) {\n option.to = 'options';\n }\n const onError = option.onError;\n\n const check = () => {\n if (!inject.getValue()) {\n inject.clearProp();\n api.sync(rule);\n return true;\n }\n }\n\n const config = {\n headers: {},\n ...option,\n onSuccess(body, flag) {\n if (check()) return;\n let fn = (v) => flag ? v : v.data;\n if (is.Function(option.parse)) {\n fn = option.parse;\n } else if (option.parse && is.String(option.parse)) {\n fn = (v) => {\n option.parse.split('.').forEach(k => {\n if (v) {\n v = v[k];\n }\n })\n return v;\n }\n }\n set(fn(body, rule, api))\n api.sync(rule);\n },\n onError(e) {\n set(undefined)\n if (check()) return;\n (onError || ((e) => err(e.message || 'fetch fail ' + option.action)))(e, rule, api);\n }\n };\n fc.options.beforeFetch && invoke(() => fc.options.beforeFetch(config, {rule, api}))\n if (is.Function(option.action)) {\n option.action(rule, api).then((val) => {\n config.onSuccess(val, true);\n }).catch((e) => {\n config.onError(e);\n });\n return;\n }\n invoke(() => fc.create.fetch(config, {inject, rule, api}));\n }\n\n return {\n name: 'fetch',\n loaded(...args) {\n run(...args);\n },\n watch(...args) {\n run(...args);\n },\n };\n}\n\n\nconst $required = {\n name: 'required',\n load(inject, rule, api) {\n const val = parseVal(inject.getValue());\n if (val.required === false) {\n inject.clearProp();\n } else {\n const validate = {\n required: true,\n validator(_, v, call) {\n is.empty(v) ? call(validate.message) : call();\n },\n ...val,\n };\n if (!validate.message) {\n let title = rule.title || '';\n validate.message = ((typeof title === 'object' ? title.title : title) || '') + '不能为空';\n }\n inject.getProp().validate = [validate];\n }\n api.sync(rule);\n },\n watch(...args) {\n $required.load(...args);\n }\n}\n\nfunction parseVal(val) {\n if (is.Boolean(val)) {\n return {required: val}\n } else if (is.String(val)) {\n return {message: val};\n } else if (is.Undef(val)) {\n return {required: false};\n } else if (is.Function(val)) {\n return {validator: val};\n } else if (!is.Object(val)) {\n return {};\n } else {\n return val;\n }\n}\n\nexport default {\n fetch,\n loadData,\n required: $required,\n componentValidate,\n};\n","import is from '@form-create/utils/lib/type';\n\nconst name = 'html';\n\nexport default {\n name,\n loadChildren: false,\n render(children, ctx) {\n if (!ctx.prop.domProps) ctx.prop.domProps = {};\n ctx.prop.domProps.innerHTML = children;\n return ctx.vNode.make(ctx.prop.props.tag || 'div', ctx.prop);\n },\n renderChildren(ctx) {\n if (Array.isArray(ctx.rule.children)) {\n return ctx.rule.children.filter(v => is.String(v)).join('');\n }\n return '';\n }\n}\n","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, parseFn} 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 $provider from './provider';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport html from '../parser/html';\nimport uniqueId from '@form-create/utils/lib/unique';\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\nlet id = 1;\nconst instance = {};\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 ...$provider\n };\n const maker = makerFactory();\n let globalConfig = {global: {}};\n const loadData = {};\n const CreateNode = CreateNodeFactory();\n\n exportAttrs(config.attrs || {});\n\n function getApi(name) {\n const val = instance[name];\n if (Array.isArray(val)) {\n return val.map(v => {\n return v.api();\n });\n } else if (val) {\n return val.api();\n }\n }\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 _emitData(id) {\n Object.keys(instance).forEach(v => {\n const apis = Array.isArray(instance[v]) ? instance[v] : [instance[v]];\n apis.forEach(that => {\n that.bus.$emit('p.loadData.' + id);\n })\n })\n }\n\n function setData(id, data) {\n loadData[id] = data;\n _emitData(id);\n }\n\n function removeData(id) {\n delete loadData[id];\n _emitData(id);\n }\n\n function $form() {\n return _vue.extend($FormCreate(FormCreate));\n }\n\n function $vnode() {\n return _vue.extend(fragment);\n }\n\n //todo 检查回调函数作用域\n function use(fn, opt) {\n if (is.Function(fn.install)) fn.install(create, opt);\n else if (is.Function(fn)) fn(create, opt);\n return this;\n }\n\n function create(rules, _opt, parent) {\n let $vm = mountForm(rules, _opt || {});\n const _this = $vm.$refs.fc.formCreate;\n _this.$parent = parent;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n }\n\n function factory(inherit) {\n let _config = {...config};\n if (inherit) {\n _config.inherit = {\n components,\n parsers,\n directives,\n providers,\n maker,\n loadData\n }\n } else {\n delete _config.inherit;\n }\n return FormCreateFactory(_config);\n }\n\n function FormCreate(vm, rules, options) {\n extend(this, {\n id: id++,\n vm,\n create,\n manager: createManager(config.manager),\n parsers,\n providers,\n rules: Array.isArray(rules) ? rules : [],\n name: vm.$options.propsData.name || uniqueId(),\n inFor: vm.$options.propsData.inFor,\n prop: {\n components,\n directives,\n },\n loadData,\n CreateNode,\n bus: new _vue,\n unwatch: null,\n options: options || {},\n extendApi: config.extendApi || (api => api)\n })\n this.init();\n this.initOptions(this.options);\n if (this.name) {\n if (this.inFor) {\n if (!instance[this.name]) instance[this.name] = [];\n instance[this.name].push(this);\n } else {\n instance[this.name] = this;\n }\n }\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 if (this.name) {\n if (this.inFor) {\n const idx = instance[this.name].indexOf(this);\n instance[this.name].splice(idx, 1);\n if(!instance[this.name].length){\n delete instance[this.name];\n }\n } else {\n delete instance[this.name];\n }\n }\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 this.vm.$emit('created', this.api());\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 setData,\n removeData,\n maker,\n component,\n directive,\n register,\n $vnode,\n parser,\n use,\n factory,\n componentAlias,\n copyRule,\n copyRules,\n fetch,\n $form,\n parseFn,\n parseJson,\n toJson,\n getApi,\n init(rules, _opt = {}) {\n let $vm = mountForm(rules, _opt), _this = $vm.$refs.fc.formCreate;\n return {\n mount($el) {\n if ($el && is.Element($el))\n _this.options.el = $el;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n },\n remove() {\n $vm.$el.parentNode && $vm.$el.parentNode.removeChild($vm.$el);\n },\n destroy() {\n this.remove();\n $vm.$destroy();\n },\n $f: _this.api()\n };\n }\n });\n }\n\n function useStatic(formCreate) {\n extend(formCreate, {\n create,\n install(Vue, options) {\n globalConfig = {...globalConfig, ...(options || {})}\n if (Vue._installedFormCreate === true) return;\n Vue._installedFormCreate = true;\n _vue = Vue;\n\n const $formCreate = function (rules, opt = {}) {\n return create(rules, opt, this);\n };\n\n useAttr($formCreate);\n\n Vue.prototype.$formCreate = $formCreate;\n Vue.component('FormCreate', $form());\n Vue.component('FcFragment', $vnode());\n }\n })\n }\n\n useAttr(create);\n useStatic(create);\n\n CreateNode.use({fragment: 'fcFragment'});\n\n parser(html);\n\n if (config.install) create.use(config);\n\n if (config.inherit) {\n const inherit = config.inherit;\n inherit.components && extend(components, inherit.components);\n inherit.parsers && extend(parsers, inherit.parsers);\n inherit.directives && extend(directives, inherit.directives);\n inherit.providers && extend(providers, inherit.providers);\n inherit.maker && extend(maker, inherit.maker);\n inherit.loadData && extend(loadData, inherit.loadData);\n }\n\n return create;\n}\n","import is from '@form-create/utils/lib/type';\nimport {creatorFactory} from '@form-create/core/src/index';\n\nexport function timeStampToDate(timeStamp) {\n if (is.Date(timeStamp))\n return timeStamp;\n else {\n let date = new Date(timeStamp);\n return date.toString() === 'Invalid Date' ? timeStamp : date;\n }\n}\n\nconst name = 'datePicker';\n\nexport default {\n name,\n maker: (function () {\n return ['date', 'dateRange', 'datetime', 'datetimeRange', 'year', 'month'].reduce((maker, type) => {\n maker[type] = creatorFactory(name, {type: type.toLowerCase()});\n return maker;\n }, {});\n }()),\n mergeProp(ctx) {\n let props = ctx.prop.props;\n if (props.startDate) {\n props.startDate = props.startDate && timeStampToDate(props.startDate);\n }\n },\n\n isRange(el) {\n return el.type.includes('range') || el.multiple;\n },\n\n _toValue(val, ctx) {\n const value = ctx.el.formatDate(val || ''), {separator} = ctx.el,\n isRange = this.isRange(ctx.el);\n if (!value)\n return isRange ? (ctx.el.multiple ? [] : ['', '']) : value;\n else if (isRange)\n return value.split(separator);\n else\n return value;\n },\n\n toValue(formValue, ctx) {\n const el = ctx.el;\n if (el) {\n this.el = el;\n return this._toValue(formValue, ctx);\n }\n return formValue;\n },\n\n toFormValue(value, ctx) {\n if (ctx.el) {\n const v = ctx.el.parseDate(value);\n return this.isRange(ctx.el) ? v : v[0];\n } else {\n let isArr = Array.isArray(value), props = ctx.prop.props, parseValue, type = props.type || 'date';\n if (['daterange', 'datetimerange'].indexOf(type) !== -1) {\n if (isArr) {\n parseValue = value.map((time) => !time ? '' : timeStampToDate(time));\n } else {\n parseValue = ['', '']\n }\n } else if ('date' === type && props.multiple === true) {\n parseValue = toString(value);\n } else {\n parseValue = isArr ? (value[0] || '') : value;\n parseValue = !parseValue ? '' : timeStampToDate(parseValue);\n }\n return parseValue;\n }\n },\n mounted(ctx) {\n ctx.rule.value = this.toValue(ctx.$handle.getFormData(ctx), ctx);\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 datePicker from './datePicker';\nimport hidden from './hidden';\nimport input from './input';\nimport slider from './slider';\nimport iswitch from './switch';\nimport row from './row';\n\nexport default [\n datePicker, hidden, input, slider, iswitch, row\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.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';\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","export default {\n name: 'switch',\n mergeProp(ctx) {\n const prop = ctx.prop.props.slot || {};\n const slot = ctx.prop.scopedSlots || {};\n if (prop.open) slot.open = () => prop.open;\n if (prop.close) slot.close = () => prop.close;\n ctx.prop.scopedSlots = slot;\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}","export default {\n button: 'iButton',\n icon: 'Icon',\n slider: 'Slider',\n rate: 'Rate',\n upload: 'fcUpload',\n cascader: 'Cascader',\n colorPicker: 'ColorPicker',\n timePicker: 'TimePicker',\n datePicker: 'DatePicker',\n 'switch': 'iSwitch',\n select: 'fcSelect',\n checkbox: 'fcCheckbox',\n radio: 'fcRadio',\n inputNumber: 'InputNumber',\n input: 'iInput',\n formItem: 'FormItem',\n form: 'iForm',\n frame: 'fcFrame',\n col: 'iCol',\n row: 'row',\n tree: 'fcTree',\n autoComplete: 'AutoComplete',\n group: 'fcGroup',\n subForm: 'fcSubForm',\n object: 'fcSubForm',\n}\n","export const iviewConfig = {\n resetBtnType: 'default',\n resetBtnIcon: 'md-refresh',\n infoIcon: 'ios-information-circle-outline',\n};\n\nexport function info() {\n return {\n type: 'poptip',\n trigger: 'hover',\n placement: 'top-start',\n wordWrap: true,\n icon: iviewConfig.infoIcon\n }\n}\n\nexport default function getConfig() {\n return {\n form: {\n inline: false,\n labelPosition: 'right',\n labelWidth: 125,\n showMessage: true,\n autocomplete: 'off',\n size: undefined,\n },\n row: {\n gutter: 0,\n },\n submitBtn: {\n type: 'primary',\n disabled: false,\n innerText: '提交',\n loading: false,\n show: true,\n click: undefined,\n },\n resetBtn: {\n type: iviewConfig.resetBtnType,\n disabled: false,\n icon: iviewConfig.resetBtnIcon,\n innerText: '重置',\n loading: false,\n show: false,\n click: undefined,\n },\n };\n}\n","import getConfig, {info, iviewConfig} from './config';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\n\nfunction 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() {\n const form = this.form();\n if (form) {\n return new Promise((resolve, reject) => {\n form.validate().then(flag => {\n flag ? resolve(true) : reject(false);\n })\n });\n }\n return new Promise(v => v());\n },\n validateField(field) {\n const form = this.form();\n if (form) {\n return new Promise((resolve, reject) => {\n form.validateField(field, e => {\n e ? reject(e) : resolve(null);\n })\n })\n }\n return new Promise(v => v());\n },\n clearValidateState(ctx) {\n const fItem = this.vm.$refs[ctx.wrapRef];\n if (fItem) {\n fItem.validateMessage = '';\n fItem.validateState = '';\n }\n },\n tidyOptions(options) {\n ['submitBtn', 'resetBtn', 'row', 'info', 'wrap', 'col'].forEach(name => {\n tidyBool(options, name);\n })\n return options;\n },\n tidyRule({prop}) {\n tidy(prop, 'title');\n tidy(prop, 'info');\n return prop;\n },\n mergeProp(ctx) {\n ctx.prop = mergeProps([{\n info: this.options.info || {},\n wrap: this.options.wrap || {},\n col: this.options.col || {},\n }, ctx.prop], {\n info: info(),\n title: {},\n col: {span: 24},\n wrap: {},\n }, {normal: ['title', 'info', 'col', 'wrap']});\n this.setSize(ctx.prop.props);\n },\n setSize(props) {\n if (!props.size && this.options.form.size) {\n props.size = this.options.form.size;\n }\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 labelWidth,\n ...(rule.wrap || {}),\n prop: ctx.id,\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 if (this.options.form.title === false) return false;\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 children = [titleProp.title];\n\n const titleFn = (pop) => this.$r(mergeProps([titleProp, {\n props: titleProp,\n slot: titleProp.slot || (pop ? 'default' : 'label'),\n key: `${uni}tit`,\n type: titleProp.type || 'span',\n }]), children);\n\n if (!isFalse(infoProp.show) && (infoProp.info || infoProp.native) && !isFalse(infoProp.icon)) {\n const prop = {\n type: infoProp.type || 'poptip',\n props: {...infoProp},\n key: `${uni}pop`,\n slot: 'label'\n };\n const field = 'content';\n if (infoProp.info && !hasProperty(prop.props, field)) {\n prop.props[field] = infoProp.info;\n }\n children[infoProp.align !== 'left' ? 'unshift' : 'push'](this.$r(mergeProps([infoProp, prop]), [\n this.$r({\n type: 'icon',\n props: {type: infoProp.icon === true ? iviewConfig.infoIcon : infoProp.icon, size: 16},\n style: 'margin-top: -1px',\n key: `${uni}i`\n })\n ]));\n }\n return this.$r(mergeProps([titleProp, {\n props: titleProp,\n slot: titleProp.slot || 'label',\n key: `${uni}tit`,\n type: titleProp.type || 'span',\n }]), children);\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 this.setSize(resetBtn);\n return this.$r({\n type: 'button',\n props: resetBtn,\n style: {width: resetBtn.width, marginLeft: '15px'},\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 this.setSize(submitBtn);\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\nconst names = ['upload', 'select', 'tree', 'checkbox', 'autoComplete', 'cascader', 'colorPicker', 'frame', 'inputNumber', 'radio', 'rate', 'timePicker', 'group'];\n\nfunction useAlias(maker) {\n names.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\n\nfunction useUpload(maker) {\n const name = 'upload';\n\n const types = {\n image: ['image', 0],\n file: ['file', 0],\n uploadFileOne: ['file', 1],\n uploadImageOne: ['image', 1],\n };\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory(name, m => m.props({uploadType: types[key][0], maxLength: types[key][1]}));\n return maker\n }, maker);\n\n maker.uploadImage = maker.image;\n maker.uploadFile = maker.file;\n}\n\nfunction useTree(maker) {\n const name = 'tree';\n\n const types = {'treeSelected': 'selected', 'treeChecked': 'checked'};\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory(name, {type:types[key]});\n return maker;\n }, maker);\n}\n\nfunction useTimePicker(maker) {\n const name = 'timePicker';\n\n maker.time = creatorFactory(name, {type:'time'})\n maker.timeRange = creatorFactory(name, {type:'timerange'})\n}\n\n\nfunction useSelect(maker) {\n const name = 'select';\n\n maker.selectMultiple = creatorFactory(name, {multiple:true})\n maker.selectOne = creatorFactory(name, {multiple:false})\n}\n\n\nfunction useFrame(maker) {\n const name = 'frame';\n\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(name, m => m.props({type: types[key][0], maxLength: types[key][1]}));\n return maker\n }, maker);\n\n\n maker.frameInput = maker.frameInputs;\n maker.frameFile = maker.frameFiles;\n maker.frameImage = maker.frameImages;\n}\n\nuseAlias(maker);\nuseUpload(maker);\nuseTree(maker);\nuseSelect(maker);\nuseFrame(maker);\nuseTimePicker(maker);\n\nexport default maker;\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '@form-create/core/src/frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction tidyBtnProp(btn, def) {\n if (is.Boolean(btn))\n btn = {show: btn};\n else if (!is.Undef(btn) && !is.Object(btn)) btn = {show: def};\n return btn;\n}\n\nexport default function extendApi(api, h) {\n extend(api, {\n formEl() {\n return h.$manager.form();\n },\n wrapEl(id) {\n const ctx = h.getFieldCtx(id);\n if (!ctx) return;\n return h.vm.$refs[ctx.wrapRef];\n },\n validate(callback) {\n return new Promise((resolve, reject) => {\n const forms = api.children;\n const all = [h.$manager.validate()];\n forms.forEach(v => {\n all.push(v.validate());\n })\n Promise.all(all).then(() => {\n resolve(true);\n callback && callback(true);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.$emit('validate-fail', e, {api});\n })\n });\n },\n validateField: (field, callback) => {\n return new Promise((resolve, reject) => {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n const sub = h.subForm[ctx.id];\n const all = [h.$manager.validateField(ctx.id)];\n toArray(sub).forEach(v => {\n all.push(v.validate().catch(() => {\n return Promise.reject('子表单验证未通过');\n }));\n })\n Promise.all(all).then(() => {\n resolve(null);\n callback && callback(null);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.$emit('validate-field-fail', e, {field, api});\n })\n });\n },\n clearValidateState(fields, clearSub = true) {\n api.helper.tidyFields(fields).forEach(field => {\n if (clearSub) this.clearSubValidateState(field);\n h.getCtxs(field).forEach(ctx => {\n h.$manager.clearValidateState(ctx);\n });\n });\n },\n clearSubValidateState(fields) {\n api.helper.tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n const subForm = h.subForm[ctx.id];\n if (!subForm) return;\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.clearValidateState();\n })\n } else if (subForm) {\n subForm.clearValidateState();\n }\n });\n })\n },\n btn: {\n loading: (loading = true) => {\n api.submitBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.submitBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.submitBtnProps({show: !!isShow});\n }\n },\n resetBtn: {\n loading: (loading = true) => {\n api.resetBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.resetBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.resetBtnProps({show: !!isShow});\n }\n },\n submitBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.submitBtn, true);\n extend(btn, props);\n h.options.submitBtn = btn;\n api.refreshOptions();\n },\n resetBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.resetBtn, false);\n extend(btn, props);\n h.options.resetBtn = btn;\n api.refreshOptions();\n },\n submit(successFn, failFn) {\n api.validate((valid) => {\n if (valid) {\n let formData = api.formData();\n if (is.Function(successFn))\n invoke(() => successFn(formData, this));\n else {\n is.Function(h.options.onSubmit) && invoke(() => h.options.onSubmit(formData, this));\n h.vm.$emit('submit', formData, this);\n }\n } else {\n is.Function(failFn) && invoke(() => failFn(this, ...arguments));\n }\n });\n },\n });\n\n return api;\n}\n","import components from '../components';\nimport parsers from '../parsers';\nimport alias from './alias';\nimport manager from './manager';\nimport FormCreateFactory from '@form-create/core/src/index';\nimport makers from './maker';\nimport '../style/index.css';\nimport extendApi from './api';\n\nfunction install(FormCreate) {\n FormCreate.componentAlias(alias);\n\n components.forEach(component => {\n FormCreate.component(component.name, component);\n });\n\n parsers.forEach((parser) => {\n FormCreate.parser(parser);\n });\n\n Object.keys(makers).forEach(name => {\n FormCreate.maker[name] = makers[name];\n });\n}\n\nexport default function ivuFormCreate() {\n return FormCreateFactory({\n ui: `${process.env.UI}`,\n version: `${process.env.VERSION}`,\n manager,\n install,\n extendApi,\n attrs: {\n normal: ['col', 'wrap'],\n array: ['className'],\n key: ['title', 'info'],\n }\n });\n}\n","import ivuFormCreate from './core/index';\n\nconst FormCreate = ivuFormCreate();\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","mergeFn","reduce","indexOf","Array","e","concat","f","g","h","i","getSlot","slots","exclude","keys","lst","name","push","props","formCreateInject","type","required","value","watch","handler","update","deep","data","trueValue","methods","options","opt","isArray","onInput","n","$emit","filter","label","map","v","undefined","checked","option","created","render","prop","index","$slots","mounted","$refs","el","toArray","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","NAME","createFrame","config","String","field","helper","Boolean","disabled","src","icon","fileUpIcon","width","Number","height","maxLength","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","showModel","makeInput","_this","toString","readonly","clearable","makeGroup","children","makeBtn","makeItem","valid","Error","makeIcons","icons","makeHandleIcon","makeRemoveIcon","_this2","handleClick","_this3","handleRemove","makeFiles","_this4","fileIcon","size","makeImages","_this5","_this6","splice","frameLoad","iframe","api","_this7","set","get","fn","$on","onClose","console","log","makeFooter","$props","node","_this8","$nextTick","_this9","frame","contentWindow","mask","footerHide","closeModal","v2","initial","is","arg","Undef","Element","_typeof","nodeType","trueArray","getType","str","exec","empty","hasProperty","rule","k","forEach","t","functional","ctx","makeOption","slot","slotName","makeOptionGroup","treeData","setStatus","$forceUpdate","_data","$set","id","list","on","tree","parseFile","file","url","getFileName","split","pop","createUpload","uploadType","uploadList","cacheFiles","showUploadList","defaultFileList","upload","every","status","o","isDisabled","makeProgress","percent","percentage","hideInfo","$scopedSlots","vm","showProgress","makeUpload","isShow","display","imgUpIcon","files","handleCancel","$watch","target","Vue","$del","deepExtend","origin","mode","isArr","clone","nst","_clone","getRule","__json","__origin","__ctrl","deepCopy","extend","rules","expand","button","max","min","sortBtn","defaultValue","syncDisabled","onBeforeAdd","parse","len","cacheRule","cacheValue","sort","computed","formRule","immediate","item","$f","formData","deferSyncValue","setValue","once","expandRule","total","addRule","removeRule","_value","cache","JSON","stringify","input","form","coverValue","emit","copyRules","submitBtn","resetBtn","defVal","add$f","$delete","add","del","addIcon","delIcon","sortUpIcon","changeSort","sortDownIcon","makeIcon","_this10","btn","emitEvent","args","$form","Type","_this11","inFor","extendOption","checkbox","radio","select","group","getRuleInject","parent","$parent","$FormCreate","FormCreate","componentName","model","provide","$pfc","inject","subForm","destroyed","validate","renderRule","ctxInject","updateValue","isMore","formCreate","_refresh","_renderRule","_updateValue","forceCoverValue","initOptions","refresh","$handle","reloadRule","beforeCreate","$options","propsData","fapi","rmSubForm","sub","getSubForm","idx","addSubForm","mergeProps","objects","_normalMerge","_toArrayMerge","_functionalMerge","propsMerge","arrA","arrB","event","hook","fn1","fn2","keyAttrs","arrayAttrs","normalAttrs","format","msg","err","error","PREFIX","SUFFIX","$T","$TX","FUNCTION","toJson","obj","space","_isVue","__emit","makeFn","parseFn","trim","flag","replace","__inject","parseJson","json","enumerable","writable","configurable","copyRule","mergeRule","merge","array","normal","r","funcProxy","that","proxy","defineProperties","byCtx","__fc__","__origin__","invoke","def","logError","creatorFactory","init","maker","Creator","effect","hidden","appendProto","attrs","setProp","constructor","commonMaker","create","make","createTmp","template","makerFactory","factory","copy","toCase","lower","toLocaleUpperCase","toLowerCase","toLine","line","toLocaleLowerCase","substr","uniqueId","Math","random","Date","now","deepSet","to","Render","handle","fc","$manager","vNode","CreateNode","initCache","initRender","clearCacheAll","clearCache","use","setCache","vnode","getCache","useCache","tempList","clearOrgChildren","initOrgChildren","ctxs","orgChildren","parser","loadChildren","getTypeSlot","_fn","vn","$h","$createElement","beforeRender","renderList","renderSlot","renderName","renderId","renderField","container","renderCtx","makeVm","getInjectData","mergeGlobal","global","cacheConfig","originType","trueType","setOptions","optionsTo","setTempProps","injectProp","injectKeys","renderTemp","compile","warn","tip","parseSide","side","renderSides","temp","prefix","suffix","cacheFlag","_type","none","renderChildren","initProp","tidyRule","ctxProp","preview","makeWrap","custom","mergeProp","onMounted","exportEl","$el","__rule__","getFormData","callback","expression","isRm","child","rmCtx","defaultRender","component","makeComponent","alias","aliasMap","useRender","EVENT","RuleContext","wrapRef","linkOn","root","ctrlRule","payload","updateType","updateKey","effectData","clearEffectData","setParser","check","unwatch","un","unlink","link","appendLink","watchTo","watchCtx","rmCtrl","deleted","$render","$api","ctrl","rm","_rm","noWatch","updated","condition","findCtrl","isCtrl","strFn","toEmpty","BaseParser","toFormValue","toValue","formValue","noneKey","Handler","watching","loading","reloading","noWatchFn","deferSyncFn","isMounted","appendData","providers","cycleLoad","loadedId","nextTick","changeStatus","pageEnd","nextReload","lifecycle","bus","initData","manager","extendApi","tidyFields","fields","getCtxs","allSubForm","subs","getFieldCtx","appendValue","getValue","fieldCtx","removeField","getCtx","destroy","parentNode","removeChild","$destroy","append","after","prepend","state","hiddenStatus","displayStatus","all","nameCtx","bind","updateOptions","onSubmit","sync","refreshOptions","hideForm","hide","clearChangeStatus","updateRule","updateRules","mergeRules","setEffect","attr","updateValidate","updateValidates","validates","refreshValidate","resetFields","method","trigger","$once","nextRefresh","changeValue","changeField","Api","getBody","xhr","text","responseText","response","fetch","XMLHttpRequest","action","onerror","onError","onload","getError","onSuccess","open","dataType","FormData","setRequestHeader","withCredentials","headers","send","useProvider","usePage","loadRule","__init","parseInjectEvent","injectEvent","parseEventLst","parseEvent","parseEmit","emitPrefix","emitKey","eventName","eventInject","fieldKey","_inject","self","unshift","useInject","page","first","limit","ceil","parseInt","pageLoad","pageFn","clearNextTick","clearTimeout","bindNextTick","setTimeout","parseRule","_rule","fullRule","loadFn","loadCtrl","control","syncProp","pre","_loadRule","syncForm","isRepeat","ruleEffect","repeat","isCopy","isInit","bindParser","setCtx","_preIndex","preIndex","refreshUpdate","defineProperty","valueHandle","refreshControl","useCtrl","controls","getCtrl","handleFn","isHidden","hideLst","reverse","clearValidateState","ruleCon","ctrlCtx","_reloadRule","useLoader","setFlag","setFormData","syncValue","valueChange","isQuote","isChange","refreshRule","useInput","getNameCtx","setIdCtx","rmIdCtx","getParser","parsers","rmSub","watchEffect","useContext","_mounted","useLifecycle","ps","_c","p","components","arr","getComponent","onEffect","provider","used","_used","_ctx$rule","_ctx$rule$effect","emitEffect","getEffect","getProp","clearProp","useEffect","CreateNodeFactory","setVm","tag","isReservedTag","nativeOn","Node","domProps","innerHTML","context","nodes","createManager","proto","CustomManager","Manager","mergeOptionsRule","$r","mergeOptions","tidyOptions","getDefaultOptions","componentValidate","load","validator","$required","message","parseVal","_","run","parseOpt","body","beforeFetch","then","loaded","loadData","events","join","_vue","window","nameProp","_getEl","querySelector","mountForm","$vm","$data","$mount","instance","FormCreateFactory","fragment","directives","$provider","globalConfig","getApi","directive","register","componentAlias","base","formCreateParser","_emitData","setData","removeData","$vnode","install","_opt","inherit","_config","useAttr","version","ui","mount","remove","Handle","isSub","_installedFormCreate","$formCreate","html","timeStampToDate","timeStamp","date","startDate","isRange","includes","multiple","_toValue","formatDate","separator","parseDate","parseValue","time","datePicker","idate","autosize","minRows","rows","sliderRange","range","parseFloat","scopedSlots","col","span","row","slider","rate","cascader","colorPicker","timePicker","inputNumber","formItem","autoComplete","object","iviewConfig","resetBtnType","resetBtnIcon","infoIcon","tidy","isFalse","Promise","resolve","reject","validateField","fItem","validateMessage","validateState","show","tidyBool","info","wrap","placement","wordWrap","setSize","inline","labelPosition","labelWidth","showMessage","autocomplete","gutter","innerText","click","submit","preventDefault","className","makeFormBtn","makeRow","uni","isTitle","_col","makeInfo","makeCol","titleProp","infoProp","align","makeSubmitBtn","makeResetBtn","marginLeft","fApi","names","auto","number","color","useAlias","types","image","uploadFileOne","uploadImageOne","m","uploadImage","uploadFile","useUpload","useTree","selectMultiple","selectOne","useSelect","frameInputs","frameFiles","frameImages","frameInputOne","frameFileOne","frameImageOne","frameInput","frameFile","frameImage","useFrame","timeRange","useTimePicker","tidyBtnProp","formEl","wrapEl","forms","clearSub","clearSubValidateState","submitBtnProps","resetBtnProps","successFn","failFn","makers","process"],"mappings":"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"}
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/iview/checkbox/src/component.jsx","../../utils/lib/toarray.js","../../../node_modules/style-inject/dist/style-inject.es.js","../../../components/iview/frame/src/component.jsx","../../../components/iview/frame/src/index.js","../../../components/iview/radio/src/component.jsx","../../utils/lib/type.js","../../../components/iview/select/src/component.jsx","../../../components/iview/tree/src/component.jsx","../../../components/iview/upload/src/component.jsx","../../../components/iview/upload/src/index.js","../../utils/lib/modify.js","../../utils/lib/deepextend.js","../../utils/lib/extend.js","../../../components/iview/group/src/component.jsx","../src/components/index.js","../../../components/common/subform/src/component.jsx","../../core/src/components/formCreate.js","../../utils/lib/mergeprops.js","../../core/src/frame/attrs.js","../../utils/lib/console.js","../../utils/lib/json.js","../../core/src/frame/util.js","../../core/src/factory/creator.js","../../core/src/factory/maker.js","../../core/src/frame/api.js","../../utils/lib/tocase.js","../../utils/lib/toline.js","../../utils/lib/unique.js","../../utils/lib/deepset.js","../../core/src/render/index.js","../../core/src/render/cache.js","../../core/src/render/render.js","../../core/src/handler/page.js","../../core/src/factory/context.js","../../core/src/handler/loader.js","../../core/src/handler/input.js","../../core/src/factory/parser.js","../../core/src/handler/context.js","../../core/src/handler/index.js","../../core/src/frame/fetch.js","../../core/src/handler/inject.js","../../core/src/handler/render.js","../../core/src/handler/lifecycle.js","../../core/src/handler/effect.js","../../core/src/components/fragment.js","../../core/src/factory/node.js","../../utils/lib/tostring.js","../../core/src/factory/manager.js","../../core/src/frame/provider.js","../../core/src/parser/html.js","../../core/src/frame/index.js","../src/parsers/datePicker.js","../src/parsers/hidden.js","../src/parsers/index.js","../src/parsers/input.js","../src/parsers/slider.js","../src/parsers/switch.js","../src/parsers/row.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 formCreateInject: {\n type: Object,\n required: true,\n },\n value: {\n type: Array,\n default: () => []\n },\n },\n watch: {\n 'formCreateInject.options': {\n handler() {\n this.update();\n },\n deep: true,\n },\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n methods: {\n options() {\n const opt = this.formCreateInject.options;\n return Array.isArray(opt) ? opt : [];\n },\n onInput(n) {\n this.$emit('input', this.options().filter((opt) => n.indexOf(opt.label) !== -1).map((opt) => opt.value).filter(v => v !== undefined));\n },\n update() {\n const checked = Array.isArray(this.value) ? this.value : [this.value];\n this.trueValue = this.options().filter((opt) => checked.indexOf(opt.value) !== -1)\n .map((option) => option.label);\n }\n },\n created() {\n this.update();\n },\n render() {\n return <CheckboxGroup {...this.formCreateInject.prop} ref=\"el\"\n props={{value: this.trueValue}}\n on-input={this.onInput}>{this.options().map((opt, index) => {\n const props = {...opt};\n delete props.value;\n return <Checkbox props={props} key={'' + index + '-' + opt.value}/>\n })}{getSlot(this.$slots)}</CheckboxGroup>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\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 function createFrame(config) {\n return {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n type: {\n type: String,\n default: 'input'\n },\n field: String,\n helper: {\n type: Boolean,\n default: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n src: {\n type: String,\n required: true\n },\n icon: {\n type: String,\n default: config.fileUpIcon\n },\n width: {\n type: [Number, String],\n default: 500\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 showModel() {\n if (this.disabled || false === this.onOpen()) return;\n this.frameVisible = true;\n },\n\n makeInput() {\n const props = {\n type: 'text',\n value: (this.fileList.map(v => this.getSrc(v))).toString(),\n icon: this.icon,\n readonly: true,\n clearable: false\n };\n\n return <Input props={props} on={{'on-click': () => this.showModel()}} key={this.key('input')}/>\n },\n\n makeGroup(children) {\n if (!this.maxLength || this.fileList.length < this.maxLength)\n children.push(this.makeBtn());\n return <div key={this.key('group')}>{...children}</div>\n },\n\n makeItem(index, children) {\n return <div class='fc-files' key={this.key('file' + index)}>{...children}</div>;\n },\n valid(f) {\n const field = this.formCreateInject.field || this.field;\n if (field && f !== field)\n throw new Error('[frame]无效的字段值');\n },\n\n makeIcons(val, index) {\n if (this.handleIcon !== false || this.allowRemove === true) {\n const icons = [];\n if ((this.type !== 'file' && this.handleIcon !== false) || (this.type === 'file' && this.handleIcon))\n icons.push(this.makeHandleIcon(val, index));\n if (this.allowRemove)\n icons.push(this.makeRemoveIcon(val, index));\n\n return <div class='fc-upload-cover' key={this.key('uc')}>{icons}</div>\n }\n },\n makeHandleIcon(val, index) {\n return <icon\n props={{type: (this.handleIcon === true || this.handleIcon === undefined) ? 'ios-eye-outline' : this.handleIcon}}\n on-click={() => this.handleClick(val)} key={this.key('hi' + index)}/>\n },\n\n makeRemoveIcon(val, index) {\n return <icon props={{type: 'ios-trash-outline'}} on-click={() => this.handleRemove(val)}\n key={this.key('ri' + index)}/>\n },\n\n makeFiles() {\n return this.makeGroup(this.fileList.map((src, index) => {\n return this.makeItem(index, [<icon props={{type: config.fileIcon, size: 40}}\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()}\n key={this.key('btn')}>\n <icon props={{type: this.icon, size: 20}}/>\n </div>\n },\n handleClick(src) {\n return this.onHandle(src);\n },\n handleRemove(src) {\n if (this.disabled) return;\n if (false !== this.onBeforeRemove(src)) {\n this.fileList.splice(this.fileList.indexOf(src), 1);\n this.onRemove(src);\n }\n },\n getSrc(src) {\n return !(this.srcKey) ? src : src[this.srcKey];\n },\n frameLoad(iframe) {\n this.onLoad(iframe);\n try {\n if (this.helper === true) {\n iframe['form_create_helper'] = {\n api: this.formCreateInject.api,\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 const node = [];\n\n if (!footer) return node;\n if (closeBtn)\n node.push(<Button\n on-click={() => (this.onCancel() !== false && this.closeModel(true))}>{closeBtnText}</Button>);\n if (okBtn)\n node.push(<Button type=\"primary\"\n on-click={() => (this.onOk() !== false && this.closeModel())}>{okBtnText}</Button>);\n return node;\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 const {width, 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 <Modal v-model={this.previewVisible}\n props={{mask: this.previewMask, title: modalTitle, footerHide: true}}>\n <img style=\"width: 100%\" src={this.previewImage}/>\n </Modal>\n <Modal props={{width, title, ...this.modal}} v-model={this.frameVisible}\n on-on-cancel={() => (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 <div slot=\"footer\">\n {this.makeFooter()}\n </div>\n </Modal>\n </div>\n },\n mounted() {\n this.$on('fc.closeModal', this.closeModal);\n }\n };\n}\n","import createFrame from './component';\n\nconst frame = createFrame({\n fileIcon: 'md-document',\n fileUpIcon: 'ios-folder-open',\n});\n\n\nframe.v2 = createFrame({\n fileIcon: 'document-text',\n fileUpIcon: 'folder',\n});\n\nexport default frame;\n","import getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcRadio';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {}\n },\n watch: {\n 'formCreateInject.options': {\n handler() {\n this.update();\n },\n deep: true,\n },\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n methods: {\n options() {\n const opt = this.formCreateInject.options;\n return Array.isArray(opt) ? opt : [];\n },\n onInput(n) {\n this.$emit('input', this.options().filter((opt) => opt.label === n).reduce((initial, opt) => opt.value, ''));\n },\n update() {\n this.trueValue = this.options().filter((opt) => opt.value === this.value).reduce((initial, opt) => opt.label, '');\n }\n },\n created() {\n this.update();\n },\n render() {\n return <RadioGroup {...this.formCreateInject.prop} props={{value: this.trueValue}} ref=\"el\"\n on-input={this.onInput}>{this.options().map((opt, index) => {\n const props = {...opt};\n delete props.value;\n return <Radio props={props} key={'' + index + '-' + opt.value}/>\n })}{getSlot(this.$slots)}</RadioGroup>\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\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 Function(v) {\n const type = this.getType(v);\n return type === 'Function' || type === 'AsyncFunction';\n },\n getType(v) {\n const str = Object.prototype.toString.call(v)\n return /^\\[object (.*)\\]$/.exec(str)[1]\n },\n empty(value) {\n if (value === undefined || value === null) {\n return true;\n }\n\n if (Array.isArray(value) && Array.isArray(value) && !value.length) {\n return true;\n }\n\n return typeof value === 'string' && !value;\n }\n};\n\n['Date', 'Object', '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, {hasProperty} from '@form-create/utils/lib/type';\n\nconst NAME = 'fcSelect';\nexport default {\n name: NAME,\n functional: true,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n },\n render(h, ctx) {\n const makeOption = (props, index) => {\n const slot = props.slot;\n return <Option props={props}\n key={'' + index + '-' + props.value}>\n {slot ? <template\n slot={props.slotName || 'default'}>{is.Function(slot) ? props.slot(h) : slot}</template> : null}\n </Option>;\n }\n const makeOptionGroup = (props, index) => {\n return <OptionGroup label={props.label}\n key={'' + index + '-' + props.label}>\n {is.trueArray(props.options) && props.options.map((v, index) => {\n return makeOption(v, index);\n })}\n </OptionGroup>;\n }\n\n const options = ctx.props.formCreateInject.options;\n return <Select {...ctx.data} ref=\"el\">{(Array.isArray(options) ? options : []).map((props, index) => {\n return hasProperty(props || '', 'options') ? makeOptionGroup(props, index) : makeOption(props, index);\n })}{ctx.children}</Select>;\n },\n mounted() {\n this.$emit('fc.el', this.$refs.el);\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 props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n type: {\n type: String,\n default: 'checked'\n },\n value: {\n type: [Array, String, Number],\n default: () => []\n }\n },\n data() {\n return {\n treeData: []\n }\n },\n watch: {\n value(n) {\n this.setStatus(n);\n }\n },\n created() {\n this.setStatus(this.value);\n },\n methods: {\n setStatus(value) {\n const n = toArray(value);\n const data = this.formCreateInject.prop.props.data;\n this.type === 'selected' ? this.checked(data, n, 'selected') : this.checked(data, n, 'checked');\n this.$forceUpdate();\n },\n checked(_data, value, type) {\n _data.forEach((node) => {\n this.$set(node, type, value.indexOf(node.id) !== -1);\n if (node.children !== undefined && Array.isArray(node.children))\n this.checked(node.children, value, type);\n });\n },\n onInput(list) {\n this.$emit('input', list.map(node => node.id));\n }\n },\n render() {\n const on = {};\n if (this.type === 'selected') {\n on['on-select-change'] = this.onInput;\n } else {\n on['on-check-change'] = this.onInput;\n }\n return <Tree {...this.formCreateInject.prop} ref=\"tree\" on={on}>{getSlot(this.$slots)}</Tree>;\n },\n mounted() {\n this.$emit('fc.el', this.$refs.tree);\n }\n}\n","import toArray from '@form-create/utils/lib/toarray';\nimport './style.css';\nimport getSlot from '@form-create/utils/lib/slot';\n\nfunction parseFile(file) {\n return {\n url: file,\n name: getFileName(file)\n };\n}\n\nfunction getFileName(file) {\n return ('' + file).split('/').pop()\n}\n\nconst NAME = 'fcUpload';\n\n\nexport default function createUpload(config) {\n return {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\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 maxLength: {\n type: Number,\n default: 0\n },\n allowRemove: {\n type: Boolean,\n default: true\n },\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 cacheFiles: [],\n }\n },\n created() {\n if (this.formCreateInject.prop.props.showUploadList === undefined)\n this.formCreateInject.prop.props.showUploadList = false;\n this.formCreateInject.prop.props.defaultFileList = toArray(this.value).map(parseFile);\n },\n watch: {\n value(n) {\n if (this.$refs.upload.fileList.every(file => {\n return !file.status || file.status === 'finished';\n })) {\n this.$refs.upload.fileList = toArray(n).map(parseFile);\n this.uploadList = this.$refs.upload.fileList;\n }\n },\n maxLength(n, o) {\n if (o === 1 || n === 1)\n this.update();\n }\n },\n methods: {\n key(unique) {\n return unique;\n },\n isDisabled() {\n return this.formCreateInject.prop.props.disabled === true;\n },\n onRemove(file) {\n if (this.isDisabled()) return;\n this.$refs.upload.handleRemove(file);\n },\n handleClick(file) {\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 : <icon props={{type: config.fileIcon, size: 40}} key={this.key('i' + index)}/>\n },\n makeRemoveIcon(file, index) {\n return <icon type='ios-trash-outline' on-click={() => this.onRemove(file)}\n key={this.key('ri' + index)}/>;\n },\n makeHandleIcon(file, index) {\n return <icon\n type={(this.handleIcon === true || this.handleIcon === undefined) ? 'ios-eye-outline' : this.handleIcon}\n on-click={() => this.handleClick(file)} key={this.key('hi' + index)}/>;\n },\n makeProgress(file, index) {\n return <Progress props={{percent: file.percentage, hideInfo: true}} style=\"width:90%\"\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 if (this.allowRemove)\n icons.push(this.makeRemoveIcon(file, index));\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.showProgress ? this.makeProgress(file, index) : [this.makeItem(file, index), this.makeIcons(file, index)]}</div>);\n },\n makeUpload() {\n const isShow = (!this.maxLength || this.maxLength > this.uploadList.length);\n return <Upload {...this.formCreateInject.prop} {...{\n style: {display: 'inline-block'},\n key: this.key('upload'),\n ref: 'upload'\n }}>\n {isShow ? <template slot=\"default\">\n {this.$slots.default || <div class=\"fc-upload-btn\">\n <icon props={{\n type: this.uploadType === 'file' ? 'ios-cloud-upload-outline' : config.imgUpIcon,\n size: 20\n }}/>\n </div>}\n </template> : null}{getSlot(this.$slots, ['default'])}\n </Upload>;\n },\n update() {\n let files = this.$refs.upload.fileList.map((file) => file.url).filter((url) => url !== undefined);\n if (this.cacheFiles.length !== files.length || !files.length) {\n this.cacheFiles = [...files];\n this.$emit('input', this.maxLength === 1 ? (files[0] || '') : files);\n }\n },\n handleCancel() {\n this.previewVisible = false;\n },\n },\n render() {\n if (this.$refs.upload) {\n if (this.formCreateInject.prop.props.showUploadList === undefined)\n this.formCreateInject.prop.props.showUploadList = this.$refs.upload.showUploadList;\n this.formCreateInject.prop.props.defaultFileList = this.$refs.upload.defaultFileList;\n }\n return (\n <div\n class=\"_fc-upload\">{[this.formCreateInject.prop.props.showUploadList ? [] : this.makeFiles(), this.makeUpload()]}\n <Modal v-model={this.previewVisible}\n props={{title: this.modalTitle, footerHide: true}}>\n <img alt=\"example\" style=\"width: 100%\" src={this.previewImage}/>\n </Modal>\n </div>);\n },\n mounted() {\n this.uploadList = this.$refs.upload.fileList;\n this.$watch(() => this.$refs.upload.fileList, () => {\n this.update();\n }, {deep: true});\n this.$emit('fc.el', this.$refs.upload);\n }\n };\n}\n","import createUpload from './component';\n\nconst upload = createUpload({\n\n fileIcon: 'md-document',\n imgUpIcon: 'md-images',\n});\n\nupload.v2 = createUpload({\n\n fileIcon: 'document-text',\n imgUpIcon: 'image',\n});\n\nexport default upload;\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';\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 if (!is.Undef(clone)) {\n if (!is.Undef(clone.__json)) {\n origin[key].__json = clone.__json;\n }\n if (!is.Undef(clone.__origin)) {\n origin[key].__origin = clone.__origin;\n }\n }\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","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 {hasProperty} from '@form-create/utils/lib/type';\nimport deepExtend, {deepCopy} from '@form-create/utils/lib/deepextend';\nimport extend from '@form-create/utils/lib/extend';\nimport './style.css';\n\nconst NAME = 'fcGroup';\n\nexport default {\n name: NAME,\n props: {\n field: String,\n rule: [Array, Object],\n rules: Array,\n expand: Number,\n options: Object,\n formCreateInject: {\n type: Object,\n required: true,\n },\n button: {\n type: Boolean,\n default: true\n },\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n value: {\n type: Array,\n default: () => []\n },\n sortBtn: {\n type: Boolean,\n default: true\n },\n defaultValue: Object,\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onBeforeAdd: {\n type: Function,\n default: () => {\n }\n },\n parse: Function,\n },\n data() {\n return {\n len: 0,\n cacheRule: {},\n cacheValue: {},\n sort: [],\n type: undefined\n }\n },\n computed: {\n formRule() {\n if (this.rules) {\n return this.rules;\n }\n if (this.rule) {\n return Array.isArray(this.rule) ? this.rule : [this.rule];\n }\n return [];\n }\n },\n watch: {\n cacheRule: {\n handler(n) {\n this.sort = Object.keys(n);\n },\n immediate: true\n },\n formRule: {\n handler(n, o) {\n Object.keys(this.cacheRule).forEach(v => {\n const item = this.cacheRule[v];\n if (item.$f) {\n const val = item.$f.formData();\n if (n === o) {\n item.$f.deferSyncValue(() => {\n deepExtend(item.rule, n);\n item.$f.setValue(val);\n }, true);\n } else {\n const val = item.$f.formData();\n item.$f.once('reloading', () => {\n item.$f.setValue(val);\n })\n item.rule = deepCopy(n);\n }\n }\n })\n },\n deep: true\n },\n disabled(n) {\n if (this.syncDisabled) {\n const lst = this.cacheRule;\n Object.keys(lst).forEach(k => {\n lst[k].$f.disabled(n);\n })\n }\n },\n expand(n) {\n let d = n - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n },\n value(n, o) {\n n = n || [];\n let keys = this.sort, 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 }\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 = this.sort;\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 && $f.coverValue(value || {});\n },\n addRule(i, emit) {\n const rule = this.formCreateInject.form.copyRules(this.formRule);\n const options = this.options ? {...this.options} : {\n submitBtn: false,\n resetBtn: false,\n };\n if (this.defaultValue) {\n if (!options.formData) options.formData = {};\n const defVal = deepCopy(this.defaultValue);\n extend(options.formData, this.field ? {[this.field]: defVal} : defVal);\n }\n this.parse && this.parse({rule, options, index: this.sort.length});\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.$nextTick(() => {\n if (this.syncDisabled) {\n $f.disabled(this.disabled);\n }\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n removeRule(key, emit) {\n const index = Object.keys(this.cacheRule).indexOf(key);\n this.$delete(this.cacheRule, key);\n this.$delete(this.cacheValue, key);\n if (emit) {\n this.$nextTick(() => this.$emit('remove', index));\n }\n },\n add(i) {\n if (this.disabled || false === this.onBeforeAdd(this.value)) {\n return;\n }\n this.addRule(i, true);\n },\n del(index, key) {\n if (this.disabled || false === this.onBeforeRemove(this.value, index)) {\n return;\n }\n this.removeRule(key, true);\n const value = [...this.value];\n value.splice(index, 1);\n this.input(value);\n },\n addIcon(key) {\n return <div class=\"_fc-group-btn _fc-group-plus-minus\" on-click={this.add}></div>;\n },\n delIcon(index, key) {\n return <div class=\"_fc-group-btn _fc-group-plus-minus _fc-group-minus\"\n onClick={() => this.del(index, key)}></div>\n },\n sortUpIcon(index) {\n return <div class=\"_fc-group-btn _fc-group-arrow _fc-group-up\"\n onClick={() => this.changeSort(index, -1)}></div>\n },\n sortDownIcon(index) {\n return <div class=\"_fc-group-btn _fc-group-arrow _fc-group-down\"\n onClick={() => this.changeSort(index, 1)}></div>\n },\n changeSort(index, sort) {\n const a = this.sort[index];\n this.$set(this.sort, index, this.sort[index + sort]);\n this.sort[index + sort] = a;\n this.formData(0);\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 const btn = [];\n if ((!this.max || total < this.max) && total === index + 1) {\n btn.push(this.addIcon(key));\n }\n if (total > this.min) {\n btn.push(this.delIcon(index, key));\n }\n if (this.sortBtn && index) {\n btn.push(this.sortUpIcon(index));\n }\n if (this.sortBtn && index !== total - 1) {\n btn.push(this.sortDownIcon(index));\n }\n return btn;\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 this.type = this.formCreateInject.form.$form();\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 = this.sort;\n const button = this.button;\n const Type = this.type;\n const disabled = this.disabled;\n\n const children = keys.length === 0 ?\n (this.$scopedSlots.default ? (this.$scopedSlots.default({\n vm: this,\n add: this.add\n })) : <div key={'a_def'} class=\"_fc-group-plus-minus _fc-group-add\"\n on-click={this.add}/>) : keys.map((key, index) => {\n const {rule, options} = this.cacheRule[key];\n const btn = button && !disabled ? this.makeIcon(keys.length, index, key) : [];\n return <div class=\"_fc-group-container\" key={key}>\n <Type\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 props={{\n inFor: true,\n value: this.field ? {[this.field]: this._value(this.value[index])} : this.value[index],\n rule,\n option: options,\n extendOption: true\n }}\n />\n <div class=\"_fc-group-idx\">{index + 1}</div>\n {(btn.length) ? <div class=\"_fc-group-handle\">{btn}</div> : null}\n </div>\n });\n return <div key={'con'} class={'_fc-group ' + (disabled ? '_fc-group-disabled' : '')}>{children}</div>\n },\n}\n","import checkbox from '@form-create/component-ivu-checkbox/src/index';\nimport frame from '@form-create/component-ivu-frame/src/index';\nimport radio from '@form-create/component-ivu-radio/src/index';\nimport select from '@form-create/component-ivu-select/src/index';\nimport tree from '@form-create/component-ivu-tree/src/index';\nimport upload from '@form-create/component-ivu-upload/src/index';\nimport group from '@form-create/component-ivu-group/src/index';\nimport subForm from '@form-create/component-subform/src/index';\n\nexport default [\n checkbox,\n radio,\n select,\n tree,\n subForm,\n frame,\n upload,\n group\n];\n","const NAME = 'fcSubForm';\n\nexport default {\n name: NAME,\n props: {\n rule: Array,\n options: Object,\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {\n type: Object,\n default: () => ({})\n },\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n },\n data() {\n return {\n cacheRule: {},\n cacheValue: {},\n type: undefined\n }\n },\n watch: {\n disabled(n) {\n this.syncDisabled && this.cacheRule.$f.disabled(n);\n },\n value(n) {\n this.setValue(n);\n }\n },\n methods: {\n formData(value) {\n this.cacheValue = JSON.stringify(value);\n this.$emit('input', value);\n this.$emit('change', value);\n },\n setValue(value) {\n const str = JSON.stringify(value);\n if (this.cacheValue === str) {\n return;\n }\n this.cacheValue = str;\n this.cacheRule.$f.coverValue(value || {});\n },\n addRule() {\n const options = this.options ? this.options : {\n submitBtn: false,\n resetBtn: false,\n };\n options.formData = {...(this.value || {})};\n this.cacheRule = {rule: this.rule, options};\n },\n add$f($f) {\n this.cacheRule.$f = $f;\n this.$nextTick(() => {\n this.syncDisabled && $f.disabled(this.disabled);\n this.$emit('itemMounted', $f);\n });\n },\n emitEvent(name, ...args) {\n this.$emit(name, ...args);\n }\n },\n created() {\n this.addRule();\n this.type = this.formCreateInject.form.$form();\n },\n render() {\n const {rule, options} = this.cacheRule;\n const Type = this.type;\n return <Type\n on={{\n 'update:value': this.formData,\n 'emit-event': this.emitEvent,\n input: this.add$f\n }}\n props={{rule, option: options, extendOption: true}}/>\n }\n}\n","import extend from '@form-create/utils/lib/extend';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst NAME = 'FormCreate';\n\nconst getRuleInject = (vm, parent) => {\n if (!vm || vm === parent) {\n return;\n }\n if (vm.formCreateInject) {\n return vm.formCreateInject\n }\n if (vm.$parent) {\n return getRuleInject(vm.$parent, parent);\n }\n}\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 name: String,\n subForm: {\n type: Boolean,\n default: true\n },\n inFor: Boolean,\n },\n data() {\n return {\n formData: undefined,\n destroyed: false,\n validate: {},\n $f: undefined,\n isShow: true,\n unique: 1,\n renderRule: [...this.rule || []],\n ctxInject: {},\n updateValue: JSON.stringify(this.value || {}),\n isMore: !!this.inFor,\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.config.forceCoverValue ? this.$f.coverValue(n || {}) : this.$f.setValue(n || {});\n },\n deep: true\n },\n option: {\n handler(n) {\n this.formCreate.initOptions(n);\n this.$f.refresh();\n },\n deep: true\n },\n rule(n) {\n if (n.length === this.renderRule.length && n.every(v => this.renderRule.indexOf(v) > -1)) return;\n this.formCreate.$handle.reloadRule(n);\n this._renderRule();\n }\n },\n beforeCreate() {\n const {rule, option} = this.$options.propsData;\n this.formCreate = new FormCreate(this, rule, option);\n Object.keys(this.formCreate.prop).forEach(k => {\n extend(this.$options[k], this.formCreate.prop[k]);\n })\n this.$emit('beforeCreate', this.formCreate.api());\n },\n created() {\n const vm = this, fapi = this.formCreate.api();\n const addSubForm = () => {\n if (vm.$pfc) {\n const inject = getRuleInject(vm, vm.$pfc);\n if (inject) {\n let sub;\n if (vm.isMore) {\n sub = toArray(inject.getSubForm());\n sub.push(fapi);\n\n } else {\n sub = fapi;\n }\n inject.subForm(sub);\n }\n }\n };\n\n const rmSubForm = () => {\n const inject = getRuleInject(vm, vm.$pfc);\n if (inject) {\n if (vm.isMore) {\n const sub = toArray(inject.getSubForm());\n const idx = sub.indexOf(fapi);\n if (idx > -1) {\n sub.splice(idx, 1);\n }\n } else {\n inject.subForm();\n }\n }\n };\n\n vm.$on('hook:beforeDestroy', () => {\n rmSubForm();\n });\n\n this.$watch(() => this.subForm, (n) => {\n n ? addSubForm() : rmSubForm();\n }, {immediate: true});\n }\n }\n}\n","export const normalMerge = ['attrs', 'props', 'domProps', 'scopedSlots'];\nexport const toArrayMerge = ['class', 'style', 'directives'];\nexport const functionalMerge = ['on', 'nativeOn'];\n\nconst mergeProps = (objects, initial = {}, opt = {}) => {\n const _normalMerge = [...normalMerge, ...opt['normal'] || []];\n const _toArrayMerge = [...toArrayMerge, ...opt['array'] || []];\n const _functionalMerge = [...functionalMerge, ...opt['functional'] || []];\n const propsMerge = opt['props'] || [];\n\n return objects.reduce((a, b) => {\n for (const key in b) {\n if (a[key]) {\n if (propsMerge.indexOf(key) > -1) {\n a[key] = mergeProps([b[key]], a[key]);\n } else if (_normalMerge.indexOf(key) > -1) {\n a[key] = {...a[key], ...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n const arrA = a[key] instanceof Array ? a[key] : [a[key]];\n const arrB = b[key] instanceof Array ? b[key] : [b[key]];\n a[key] = [...arrA, ...arrB]\n } else if (_functionalMerge.indexOf(key) > -1) {\n for (const event in b[key]) {\n if (a[key][event]) {\n const arrA = a[key][event] instanceof Array ? a[key][event] : [a[key][event]];\n const arrB = b[key][event] instanceof Array ? b[key][event] : [b[key][event]];\n a[key][event] = [...arrA, ...arrB]\n } else {\n a[key][event] = b[key][event]\n }\n }\n } else if (key === 'hook') {\n for (let hook in b[key]) {\n if (a[key][hook]) {\n a[key][hook] = mergeFn(a[key][hook], b[key][hook])\n } else {\n a[key][hook] = b[key][hook]\n }\n }\n } else {\n a[key] = b[key]\n }\n } else {\n if (_normalMerge.indexOf(key) > -1 || _functionalMerge.indexOf(key) > -1 || propsMerge.indexOf(key) > -1) {\n a[key] = {...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n a[key] = b[key] instanceof Array ? [...b[key]] : (typeof b[key] === 'object' ? {...b[key]} : b[key]);\n } else\n a[key] = b[key];\n }\n }\n return a\n }, initial);\n}\n\nconst mergeFn = (fn1, fn2) =>\n function () {\n fn1 && fn1.apply(this, arguments);\n fn2 && fn2.apply(this, arguments);\n };\n\nexport default mergeProps;\n","import {functionalMerge, normalMerge, toArrayMerge} from '@form-create/utils/lib/mergeprops';\n\n\nexport const keyAttrs = ['type', 'slot', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'nativeEmit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key', 'preview', 'component', 'cache'];\n\nexport const arrayAttrs = ['validate', 'children', 'control'];\n\nexport const normalAttrs = ['effect', 'deep'];\n\nexport function attrs() {\n return [...keyAttrs, ...normalMerge, ...toArrayMerge, ...functionalMerge, ...arrayAttrs, ...normalAttrs];\n}\n","export function format(type, msg, rule) {\n return (`[form-create ${type}]: ${msg}` + (rule ? ('\\n\\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule)) : ''))\n}\n\nexport function tip(msg, rule) {\n console.warn(format('tip', msg, rule));\n}\n\nexport function err(msg, rule) {\n console.error(format('err', msg, rule));\n}\n\nexport function logError(e) {\n err(e.toString());\n console.error(e);\n}\n","import deepExtend from './deepextend';\nimport {err} from './console';\nimport is, {hasProperty} from './type';\n\nconst PREFIX = '[[FORM-CREATE-PREFIX-';\nconst SUFFIX = '-FORM-CREATE-SUFFIX]]';\n\nconst $T = '$FN:';\nconst $TX = '$FNX:';\nconst FUNCTION = 'function';\n\nexport function toJson(obj, space) {\n return JSON.stringify(deepExtend([], obj, true), function (key, val) {\n if (val && val._isVue === true)\n return undefined;\n\n if (typeof val !== FUNCTION) {\n return val;\n }\n if (val.__json) {\n return val.__json;\n }\n if (val.__origin)\n val = val.__origin;\n\n if (val.__emit)\n return undefined;\n return PREFIX + val + SUFFIX;\n }, space);\n}\n\nfunction makeFn(fn) {\n return (new Function('return ' + fn))();\n}\n\nexport function parseFn(fn, mode) {\n if (fn && is.String(fn) && fn.length > 4) {\n let v = fn.trim();\n let flag = false;\n try {\n if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {\n v = v.replace(SUFFIX, '').replace(PREFIX, '');\n flag = true;\n } else if (v.indexOf($T) === 0) {\n v = v.replace($T, '');\n flag = true;\n } else if (v.indexOf($TX) === 0) {\n v = makeFn('function($inject){' + v.replace($TX, '') + '}');\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (!mode && v.indexOf(FUNCTION) === 0 && v !== FUNCTION) {\n flag = true;\n }\n if (!flag) return fn;\n const val = makeFn((v.indexOf(FUNCTION) === -1 && v.indexOf('(') !== 0) ? (FUNCTION + ' ' + v) : v);\n val.__json = fn;\n return val;\n } catch (e) {\n err(`解析失败:${v}\\n\\nerr: ${e}`);\n return undefined;\n }\n }\n return fn;\n}\n\nexport function parseJson(json, mode) {\n return JSON.parse(json, function (k, v) {\n if (is.Undef(v) || !v.indexOf) return v;\n return parseFn(v, mode);\n });\n}\n","import is from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {arrayAttrs, normalAttrs} from './attrs';\nimport {logError} from '@form-create/utils/lib/console';\nimport {parseJson, toJson} from '@form-create/utils/lib/json';\nimport deepExtend from '@form-create/utils/lib/deepextend';\n\nexport {parseFn} from '@form-create/utils/lib/json';\nexport {parseJson, toJson}\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) {\n return copyRules([rule])[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 const r = is.Function(rule.getRule) ? rule.getRule() : rule;\n if (!r.type) {\n r.type = 'input';\n }\n return r;\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","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/modify';\n\nexport function baseRule() {\n return {\n props: {},\n on: {},\n options: [],\n children: [],\n effect: {},\n hidden: false,\n display: true,\n value: undefined,\n };\n}\n\nexport function creatorFactory(name, init) {\n return (title, field, value, props = {}) => {\n const maker = new Creator(name, title, field, value, props);\n if (init) {\n if (is.Function(init)) init(maker);\n else maker.props(init);\n }\n return maker;\n };\n}\n\nexport default function Creator(type, title, field, value, props) {\n this._data = extend(baseRule(), {type, title, field, value, props: props || {}});\n this.event = this.on;\n}\n\nextend(Creator.prototype, {\n getRule() {\n return this._data;\n },\n setProp(key, value) {\n $set(this._data, key, value);\n return this;\n },\n _clone() {\n const clone = new this.constructor();\n clone._data = copyRule(this._data);\n return clone;\n },\n})\n\nexport function appendProto(attrs) {\n attrs.forEach(name => {\n Creator.prototype[name] = function (key) {\n mergeRule(this._data, {[name]: arguments.length < 2 ? key : {[key]: arguments[1]}})\n return this;\n };\n });\n}\n\nappendProto(attrs());\n","import {creatorFactory} from './creator';\n\nconst commonMaker = creatorFactory('');\n\nexport function create(type, field, title) {\n let make = commonMaker('', field);\n make._data.type = type;\n make._data.title = title;\n return make;\n}\n\nexport function createTmp(template, vm, field, title) {\n let make = commonMaker('', field);\n make._data.type = 'template';\n make._data.template = template;\n make._data.title = title;\n make._data.vm = vm;\n return make;\n}\n\nexport default function makerFactory() {\n return {\n create,\n createTmp,\n template: createTmp,\n factory: creatorFactory\n };\n}\n","import {byCtx, invoke, mergeRule, toJson} from './util';\nimport {$set} from '@form-create/utils/lib/modify';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {format} from '@form-create/utils/lib/console';\n\n\nfunction copy(value) {\n return deepCopy(value);\n}\n\nexport default function Api(h) {\n\n function tidyFields(fields) {\n if (is.Undef(fields))\n fields = h.fields();\n else if (!Array.isArray(fields))\n fields = [fields];\n return fields;\n }\n\n function props(fields, key, val) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n $set(ctx.rule, key, val);\n h.$render.clearCache(ctx);\n });\n })\n }\n\n function allSubForm() {\n const subs = h.subForm;\n return Object.keys(subs).reduce((initial, k) => {\n const sub = subs[k];\n if (!sub) return initial;\n if (Array.isArray(sub))\n initial.push(...sub);\n else\n initial.push(sub);\n return initial;\n }, []);\n }\n\n const api = {\n get config() {\n return h.options\n },\n get options() {\n return h.options\n },\n get form() {\n return h.form\n },\n get rule() {\n return h.rules\n },\n get parent() {\n return h.vm.$pfc && h.vm.$pfc.$f\n },\n get children() {\n return allSubForm();\n },\n formData(fields) {\n return tidyFields(fields).reduce((initial, id) => {\n const ctx = h.getFieldCtx(id);\n if (!ctx) return initial;\n initial[ctx.field] = copy(ctx.rule.value);\n return initial;\n }, h.options.appendValue ? copy(h.appendData) : {});\n },\n getValue(field) {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n return copy(ctx.rule.value);\n },\n coverValue(formData) {\n const data = {...(formData || {})};\n h.deferSyncValue(() => {\n api.fields().forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (ctxs) {\n const flag = hasProperty(data, key);\n ctxs.forEach(ctx => {\n ctx.rule.value = flag ? data[key] : undefined;\n })\n delete data[key];\n }\n });\n extend(h.appendData, data);\n })\n },\n setValue(field) {\n let formData = field;\n if (arguments.length >= 2)\n formData = {[field]: arguments[1]};\n h.deferSyncValue(() => {\n Object.keys(formData).forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (!ctxs) return h.appendData[key] = formData[key];\n ctxs.forEach(ctx => {\n ctx.rule.value = formData[key];\n });\n });\n })\n },\n removeField(field) {\n const ctx = h.getCtx(field);\n h.deferSyncValue(() => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rm();\n });\n }, true);\n return ctx ? ctx.origin : undefined;\n },\n removeRule(rule) {\n const ctx = rule && byCtx(rule);\n if (!ctx) return;\n ctx.rm();\n return ctx.origin;\n },\n destroy: () => {\n h.vm.$el.parentNode && h.vm.$el.parentNode.removeChild(h.vm.$el);\n h.vm.$destroy();\n },\n fields: () => h.fields(),\n append: (rule, after, child) => {\n let index = h.sort.length - 1, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n index = ctx.rule.children.length - 1;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index + 1, 0, rule);\n },\n prepend: (rule, after, child) => {\n let index = 0, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index, 0, rule);\n },\n hidden(state, fields) {\n props(fields, 'hidden', !!state);\n h.refresh();\n },\n hiddenStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.hidden;\n },\n display(state, fields) {\n props(fields, 'display', !!state);\n h.refresh();\n },\n displayStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.display;\n },\n disabled(disabled, fields) {\n tidyFields(fields).forEach((field) => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rule.props && $set(ctx.rule.props, 'disabled', !!disabled);\n });\n });\n h.refresh();\n },\n all(origin) {\n return Object.keys(h.ctxs).map(k => {\n const ctx = h.ctxs[k];\n return origin ? ctx.origin : ctx.rule;\n });\n },\n model(origin) {\n return h.fields().reduce((initial, key) => {\n const ctx = h.fieldCtx[key][0];\n initial[key] = origin ? ctx.origin : ctx.rule;\n return initial;\n }, {});\n },\n component(origin) {\n return Object.keys(h.nameCtx).reduce((initial, key) => {\n const ctx = h.nameCtx[key].map(ctx => origin ? ctx.origin : ctx.rule);\n initial[key] = ctx.length === 1 ? ctx[0] : ctx;\n return initial;\n }, {});\n },\n bind() {\n return api.form;\n },\n reload: (rules) => {\n h.reloadRule(rules)\n },\n updateOptions(options) {\n h.fc.updateOptions(options);\n api.refresh();\n },\n onSubmit(fn) {\n api.updateOptions({onSubmit: fn});\n },\n sync: (field) => {\n if (Array.isArray(field)) {\n field.forEach(v => api.sync(v));\n return;\n }\n let ctxs = is.Object(field) ? byCtx(field) : h.getCtxs(field);\n if (!ctxs) {\n return;\n }\n ctxs = Array.isArray(ctxs) ? ctxs : [ctxs];\n ctxs.forEach(ctx => {\n if (!ctx.deleted) {\n const subForm = h.subForm[ctx.id];\n if (subForm) {\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.refresh();\n })\n } else if (subForm) {\n subForm.refresh();\n }\n }\n //ctx.updateKey(true);\n h.$render.clearCache(ctx);\n }\n });\n h.refresh();\n },\n refresh: () => {\n allSubForm().forEach(sub => {\n sub.refresh();\n });\n h.$render.clearCacheAll();\n h.refresh();\n },\n refreshOptions() {\n h.$manager.updateOptions(h.options);\n api.refresh();\n },\n hideForm: (hide) => {\n $set(h.vm, 'isShow', !hide);\n },\n changeStatus: () => {\n return h.changeStatus;\n },\n clearChangeStatus: () => {\n h.changeStatus = false;\n },\n updateRule(id, rule) {\n h.getCtxs(id).forEach(ctx => {\n extend(ctx.rule, rule);\n });\n },\n updateRules(rules) {\n Object.keys(rules).forEach(id => {\n api.updateRule(id, rules[id]);\n })\n },\n mergeRule: (id, rule) => {\n h.getCtxs(id).forEach(ctx => {\n mergeRule(ctx.rule, rule);\n });\n },\n mergeRules(rules) {\n Object.keys(rules).forEach(id => {\n api.mergeRule(id, rules[id]);\n })\n },\n getRule: (id, origin) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return origin ? ctx.origin : ctx.rule;\n }\n },\n setEffect(id, attr, value) {\n const ctx = h.getCtx(id);\n if (ctx && attr) {\n if (attr[0] === '$') {\n attr = attr.substr(1);\n }\n if (hasProperty(ctx.rule, '$' + attr)) {\n $set(ctx.rule, '$' + attr, value);\n }\n if (!hasProperty(ctx.rule, 'effect')) {\n $set(ctx.rule, 'effect', {});\n }\n $set(ctx.rule.effect, attr, value);\n }\n },\n clearEffectData(id, attr) {\n const ctx = h.getCtx(id);\n if (ctx) {\n if (attr && attr[0] === '$') {\n attr = attr.substr(1);\n }\n ctx.clearEffectData(attr);\n api.sync(id);\n }\n },\n updateValidate(id, validate, merge) {\n if (merge) {\n api.mergeRule(id, {validate})\n } else {\n props(id, 'validate', validate);\n }\n },\n updateValidates(validates, merge) {\n Object.keys(validates).forEach(id => {\n api.updateValidate(id, validates[id], merge);\n })\n },\n refreshValidate() {\n h.vm.validate = {};\n api.refresh();\n },\n resetFields(fields) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n h.$render.clearCache(ctx);\n ctx.rule.value = copy(ctx.defaultValue);\n });\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.exportEl || ctx.el || h.vm.$refs[ctx.ref];\n },\n closeModal: (id) => {\n const el = api.el(id);\n el && el.$emit && el.$emit('close-modal');\n },\n getSubForm(field) {\n const ctx = h.getCtx(field);\n return ctx ? h.subForm[ctx.id] : undefined;\n },\n nextTick(fn) {\n h.bus.$once('next-tick', fn);\n h.refresh();\n },\n nextRefresh(fn) {\n h.nextRefresh();\n fn && invoke(fn);\n },\n emit(name, ...args) {\n h.vm.$emit(name, ...args);\n },\n deferSyncValue(fn, sync){\n h.deferSyncValue(fn, sync);\n },\n helper: {\n tidyFields, props\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","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","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 'F' + Math.random().toString(36).substr(3, 3) + Number(`${Date.now()}${++id}`).toString(36);\n}\n","export default function deepSet(data, idx, val) {\n let _data = data, to;\n (idx || '').split('.').forEach(v => {\n if (to) {\n if (!_data[to] || typeof _data[to] != 'object') {\n _data[to] = {}\n }\n _data = _data[to];\n }\n to = v;\n })\n _data[to] = val;\n return _data;\n}\n","import 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';\n\nexport default function useCache(Render) {\n extend(Render.prototype, {\n initCache() {\n this.clearCacheAll();\n },\n clearCache(ctx) {\n if(ctx.rule.cache){\n return;\n }\n if (!this.cache[ctx.id]) {\n ctx.parent && this.clearCache(ctx.parent);\n return;\n }\n if (this.cache[ctx.id].use === true || this.cache[ctx.id].parent) {\n this.$handle.refresh();\n }\n const parent = this.cache[ctx.id].parent;\n this.cache[ctx.id] = null;\n parent && this.clearCache(parent);\n },\n clearCacheAll() {\n this.cache = {};\n },\n setCache(ctx, vnode, parent) {\n this.cache[ctx.id] = {\n vnode,\n use: false,\n parent,\n slot: ctx.rule.slot\n };\n },\n getCache(ctx) {\n const cache = this.cache[ctx.id];\n if (cache) {\n cache.use = true;\n return cache.vnode;\n }\n return undefined;\n }\n })\n\n}\n","import extend from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {_vue as Vue} from '../frame';\nimport {tip} from '@form-create/utils/lib/console';\nimport {invoke, mergeRule} from '../frame/util';\nimport toCase, {lower} from '@form-create/utils/lib/tocase';\nimport {$set, deepSet, toLine} from '@form-create/utils';\n\nexport default function useRender(Render) {\n extend(Render.prototype, {\n initRender() {\n this.tempList = {};\n this.clearOrgChildren();\n },\n initOrgChildren() {\n const ctxs = this.$handle.ctxs;\n this.orgChildren = Object.keys(ctxs).reduce((initial, id) => {\n if (ctxs[id].parser.loadChildren !== false) {\n const children = ctxs[id].rule.children;\n initial[id] = is.trueArray(children) ? [...children] : [];\n }\n\n return initial;\n }, {});\n\n },\n clearOrgChildren() {\n this.orgChildren = {};\n },\n getTypeSlot(ctx) {\n const _fn = (vm) => {\n if (vm) {\n let slot = undefined;\n if (ctx.rule.field) {\n slot = vm.$scopedSlots['field-' + toLine(ctx.rule.field)] || vm.$scopedSlots['field-' + ctx.rule.field];\n }\n if (!slot) {\n slot = vm.$scopedSlots['type-' + toLine(ctx.type)] || vm.$scopedSlots['type-' + ctx.type];\n }\n if (slot) {\n return slot;\n }\n return _fn(vm.$pfc);\n }\n }\n return _fn(this.vm);\n },\n render() {\n if (!this.vm.isShow) {\n return;\n }\n this.$h = this.vm.$createElement;\n this.$manager.beforeRender();\n\n let vn;\n\n const make = () => this.renderList();\n make.renderSlot = slot => this.renderList(slot);\n make.renderName = name => this.renderId(name);\n make.renderField = field => this.renderId(field, 'field');\n\n if (this.vm.$scopedSlots.container) {\n vn = [this.vm.$scopedSlots.container(make)];\n } else {\n vn = make();\n }\n return this.$manager.render(vn);\n },\n renderList(slot) {\n return this.sort.map((id) => {\n return slot ? this.renderSlot(this.$handle.ctxs[id], slot) : this.renderCtx(this.$handle.ctxs[id]);\n }).filter((val) => val !== undefined);\n },\n makeVm(rule) {\n const vm = rule.vm;\n if (!vm)\n return new Vue;\n else if (is.Function(vm))\n return invoke(() => rule.vm(this.$handle.getInjectData(rule)));\n else if (!vm._isVue)\n return new Vue(vm);\n return vm;\n },\n mergeGlobal(ctx) {\n const g = this.$handle.options.global;\n if (!g) return;\n //todo 缓存配置,更新 option 更新\n if (!ctx.cacheConfig)\n ctx.cacheConfig = g[ctx.originType] || g[ctx.type] || g[ctx.trueType] || {};\n ctx.prop = mergeRule({}, [g['*'], ctx.cacheConfig, ctx.prop]);\n },\n setOptions(ctx) {\n if (ctx.prop.optionsTo && ctx.prop.options) {\n deepSet(ctx.prop, ctx.prop.optionsTo, ctx.prop.options);\n }\n },\n deepSet(ctx) {\n const deep = ctx.rule.deep;\n deep && Object.keys(deep).sort((a, b) => a.length < b.length ? -1 : 1).forEach(str => {\n deepSet(ctx.prop, str, deep[str]);\n });\n },\n setTempProps(vm, ctx) {\n if (!vm.$props) return;\n\n const {prop} = ctx;\n const keys = Object.keys(vm.$props);\n const inject = this.injectProp(ctx);\n const injectKeys = Object.keys(inject);\n\n keys.forEach(key => {\n if (hasProperty(prop.props, key))\n vm.$props[key] = prop.props[key];\n else if (injectKeys.indexOf(key) > -1) vm.$props[key] = inject[key];\n });\n\n const key = (vm.$options.model && vm.$options.model.prop) || 'value';\n if (keys.indexOf(key) > -1) {\n vm.$props[key] = prop.value;\n }\n },\n renderTemp(ctx) {\n if (!Vue.compile) {\n tip('当前使用的Vue构建版本不支持compile,无法使用template功能');\n return [];\n }\n const rule = ctx.prop;\n const {id, key} = ctx;\n\n if (!this.tempList[id]) {\n if (!ctx.el) {\n ctx.el = this.makeVm(rule);\n this.vm.$nextTick(() => ctx.parser.mounted(ctx));\n }\n\n let vm = ctx.el;\n if (ctx.input)\n vm.$on((vm.$options.model && vm.$options.model.event) || 'input', (value) => {\n this.onInput(ctx, value);\n });\n\n this.tempList[id] = {\n vm,\n template: Vue.compile(rule.template)\n };\n }\n\n const {vm, template} = this.tempList[id];\n\n this.setTempProps(vm, ctx);\n\n const vn = template.render.call(vm);\n\n if (is.Undef(vn.data)) vn.data = {};\n vn.key = key;\n vn.data.ref = ctx.ref;\n vn.data.key = key;\n return vn;\n },\n parseSide(side, ctx) {\n return is.Object(side) ? mergeRule({props: {formCreateInject: ctx.prop.props.formCreateInject}}, side) : side;\n },\n renderSides(vn, ctx, temp) {\n const prop = ctx[temp ? 'rule' : 'prop'];\n return [this.renderRule(this.parseSide(prop.prefix, ctx)), vn, this.renderRule(this.parseSide(prop.suffix, ctx))];\n\n },\n renderSlot(ctx, slot) {\n return ctx.rule.slot === slot ? this.renderCtx(ctx) : undefined;\n },\n renderId(name, type) {\n const ctxs = this.$handle[type === 'field' ? 'fieldCtx' : 'nameCtx'][name]\n return ctxs ? ctxs.map(ctx => this.renderCtx(ctx, ctx.parent)) : undefined;\n },\n renderCtx(ctx, parent) {\n if (ctx.type === 'hidden') return;\n const rule = ctx.rule;\n if ((!this.cache[ctx.id]) || this.cache[ctx.id].slot !== rule.slot) {\n let vn;\n let cacheFlag = rule.cache !== false;\n const _type = ctx.trueType;\n const none = !(is.Undef(rule.display) || !!rule.display);\n if (_type === 'template' && !rule.template) {\n vn = this.renderSides(this.renderChildren(ctx), ctx, true);\n if (none) {\n this.display(vn);\n }\n vn = this.item(ctx, vn);\n } else if (_type === 'fcFragment') {\n vn = this.renderChildren(ctx);\n } else {\n ctx.initProp();\n this.mergeGlobal(ctx);\n this.$manager.tidyRule(ctx);\n this.deepSet(ctx);\n this.setOptions(ctx);\n this.ctxProp(ctx);\n let prop = ctx.prop;\n prop.preview = !!(hasProperty(prop, 'preview') ? prop.preview : (this.options.preview || false))\n prop.props.formCreateInject = this.injectProp(ctx);\n const preview = prop.preview;\n\n if (prop.hidden) {\n this.setCache(ctx, undefined, parent);\n return;\n }\n\n if (_type === 'template' && prop.template) {\n vn = this.renderTemp(ctx);\n cacheFlag = false;\n } else {\n let children = [];\n if (ctx.parser.renderChildren) {\n children = ctx.parser.renderChildren(ctx);\n } else if (ctx.parser.loadChildren !== false) {\n children = this.renderChildren(ctx);\n }\n const slot = this.getTypeSlot(ctx);\n if (slot) {\n vn = slot({\n rule,\n prop,\n preview,\n children,\n api: this.$handle.api,\n model: prop.model || {}\n });\n } else {\n vn = preview ? ctx.parser.preview(children, ctx) : ctx.parser.render(children, ctx);\n }\n }\n vn = this.renderSides(vn, ctx);\n if ((!(!ctx.input && is.Undef(prop.native))) && prop.native !== true) {\n vn = this.$manager.makeWrap(ctx, vn);\n }\n if (none) {\n vn = this.display(vn);\n }\n vn = this.item(ctx, vn)\n }\n if (cacheFlag) {\n this.setCache(ctx, vn, parent);\n }\n return vn;\n }\n\n return this.getCache(ctx);\n },\n display(vn) {\n if (Array.isArray(vn)) {\n const data = [];\n vn.forEach(v => {\n if (Array.isArray(v)) return this.display(v);\n if (this.none(v)) data.push(v);\n })\n return data;\n } else {\n return this.none(vn);\n }\n },\n none(vn) {\n if (vn && vn.data) {\n if (Array.isArray(vn.data.style)) {\n vn.data.style.push({display: 'none'});\n } else if(is.String(vn.data.style)) {\n vn.data.style += ';display:none;';\n } else {\n vn.data.style = [vn.data.style, {display: 'none'}];\n }\n return vn;\n }\n },\n item(ctx, vn) {\n return this.$h('fcFragment', {\n slot: ctx.rule.slot,\n key: ctx.key,\n }, [vn]);\n },\n injectProp(ctx) {\n if (!this.vm.ctxInject[ctx.id]) {\n $set(this.vm.ctxInject, ctx.id, {\n api: this.$handle.api,\n form: this.fc.create,\n subForm: subForm => {\n this.$handle.addSubForm(ctx, subForm);\n },\n getSubForm: () => {\n return this.$handle.subForm[ctx.id];\n },\n options: [],\n children: [],\n prop: {},\n preview: false,\n field: ctx.field,\n rule: ctx.rule,\n input: ctx.input,\n });\n }\n const inject = this.vm.ctxInject[ctx.id];\n extend(inject, {\n preview: ctx.prop.preview,\n options: ctx.prop.options,\n children: ctx.rule.children,\n prop: (function () {\n const temp = {...ctx.prop};\n temp.on = temp.on ? {...temp.on} : {};\n delete temp.model;\n return temp;\n }()),\n });\n return inject;\n },\n ctxProp(ctx, custom) {\n const {ref, key, rule} = ctx;\n this.$manager.mergeProp(ctx, custom);\n ctx.parser.mergeProp(ctx, custom);\n const props = [\n {\n ref: ref,\n key: rule.key || `${key}fc`,\n slot: undefined,\n on: {\n 'hook:mounted': () => {\n this.onMounted(ctx);\n },\n 'fc.sub-form': (subForm) => {\n this.$handle.addSubForm(ctx, subForm);\n },\n 'fc.el': (el) => {\n ctx.exportEl = el;\n if (el) {\n (el.$el || el).__rule__ = ctx.rule;\n }\n }\n },\n }\n ]\n\n if (!custom && ctx.input) {\n ctx.prop.model = {\n value: this.$handle.getFormData(ctx),\n callback: (value) => {\n this.onInput(ctx, value);\n },\n expression: `formData.${ctx.id}`\n };\n }\n mergeProps(props, ctx.prop);\n return ctx.prop;\n },\n onMounted(ctx) {\n ctx.el = this.vm.$refs[ctx.ref];\n if (ctx.el) {\n (ctx.el.$el || ctx.el).__rule__ = ctx.rule;\n }\n ctx.parser.mounted(ctx);\n this.$handle.effect(ctx, 'mounted');\n },\n onInput(ctx, value) {\n this.$handle.onInput(ctx, value);\n },\n renderChildren(ctx) {\n const {children} = ctx.rule, orgChildren = this.orgChildren[ctx.id];\n\n const isRm = child => {\n return !is.String(child) && child.__fc__ && !this.$handle.ctxs[child.__fc__.id];\n }\n\n if (!is.trueArray(children) && orgChildren) {\n this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n this.orgChildren[ctx.id] = [];\n return [];\n }\n\n orgChildren && this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (children.indexOf(child) === -1 && isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n\n return children.map(child => {\n if (!child) return;\n if (is.String(child)) return child;\n if (child.__fc__) {\n return this.renderCtx(child.__fc__, ctx);\n }\n if (child.type) {\n this.vm.$nextTick(() => {\n this.$handle.loadChildren(children, ctx);\n this.$handle.refresh();\n });\n }\n });\n\n },\n defaultRender(ctx, children) {\n const prop = ctx.prop;\n if(prop.component)\n return this.vNode.makeComponent(prop.component, prop, children)\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 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 unique from '@form-create/utils/lib/unique';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport {enumerable, mergeRule} 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, defaultValue) {\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 exportEl: undefined,\n defaultValue: rule.field ? deepCopy(defaultValue) : 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 if (name === undefined) {\n this.payload = {};\n } else {\n delete this.payload[name];\n }\n },\n updateKey(flag) {\n this.key = unique();\n flag && this.parent && this.parent.updateKey(flag);\n },\n updateType() {\n this.originType = this.rule.type;\n this.type = toCase(this.rule.type);\n },\n setParser(parser) {\n this.parser = parser;\n parser.init(this);\n },\n initProp() {\n const rule = {...this.rule};\n delete rule.children;\n this.prop = mergeRule({}, [rule, ...Object.keys(this.payload).map(k => this.payload[k]), this.computed]);\n },\n check(handle) {\n return this.vm === handle.vm\n },\n unwatch() {\n this.watch.forEach(un => un());\n this.watch = [];\n },\n unlink() {\n this.linkOn.forEach(un => un());\n this.linkOn = [];\n },\n link() {\n this.unlink();\n this.$handle.appendLink(this);\n },\n watchTo() {\n this.$handle.watchCtx(this);\n },\n delete() {\n const undef = void 0;\n this.unwatch();\n this.unlink();\n this.rmCtrl();\n extend(this, {\n deleted: true,\n prop: {...this.rule},\n computed: {},\n el: undef,\n $handle: undef,\n $render: undef,\n $api: undef,\n vm: undef,\n vNode: undef,\n parent: null,\n cacheConfig: null,\n })\n },\n rmCtrl() {\n this.ctrlRule.forEach(ctrl => ctrl.__fc__ && ctrl.__fc__.rm());\n this.ctrlRule = [];\n },\n rm() {\n const _rm = () => {\n let index = this.root.indexOf(this.origin);\n if (index > -1) {\n this.root.splice(index, 1);\n this.$handle && this.$handle.refresh();\n }\n }\n if (this.deleted) {\n _rm();\n return;\n }\n this.$handle.noWatch(() => {\n this.$handle.deferSyncValue(() => {\n this.rmCtrl();\n _rm();\n this.$handle.rmCtx(this);\n extend(this, {\n root: []\n });\n }, this.input);\n });\n },\n update(handle, init) {\n extend(this, {\n deleted: false,\n $handle: handle,\n $render: handle.$render,\n $api: handle.api,\n vm: handle.vm,\n trueType: handle.getType(this.originType),\n vNode: handle.$render.vNode,\n updated: false,\n cacheValue: this.rule.value\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 {baseRule} from '../factory/creator';\nimport RuleContext from '../factory/context';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {$set} from '@form-create/utils';\n\nconst condition = {\n '==': (b) => (a) => a === b,\n '!=': (b) => (a) => a !== b,\n '<>': (b) => (a) => a !== b,\n '>': (b) => (a) => a > b,\n '>=': (b) => (a) => a >= b,\n '<': (b) => (a) => a < b,\n '<=': (b) => (a) => a <= b,\n 'in': (b) => (a) => (b && b.indexOf && b.indexOf(a) > -1),\n 'on': (b) => (a) => (a && a.indexOf && a.indexOf(b) > -1),\n 'notIn': (b) => (a) => !(condition.in(b)(a)),\n 'notOn': (b) => (a) => !(condition.on(b)(a)),\n 'between': (b) => (a) => a > b[0] && a < b[1],\n 'notBetween': (b) => (a) => a < b[0] || a > b[1],\n}\n\n\nexport default function useLoader(Handler) {\n extend(Handler.prototype, {\n nextRefresh(fn) {\n const id = this.loadedId;\n this.vm.$nextTick(() => {\n id === this.loadedId && (fn ? fn() : this.refresh());\n });\n },\n parseRule(_rule) {\n const rule = getRule(_rule);\n\n Object.defineProperties(rule, {\n __origin__: enumerable(_rule, true)\n });\n\n fullRule(rule);\n this.appendValue(rule);\n\n rule.options = Array.isArray(rule.options) ? rule.options : [];\n\n [rule, rule['prefix'], rule['suffix']].forEach(item => {\n if (!item) {\n return;\n }\n this.loadFn(item, rule);\n });\n this.loadCtrl(rule);\n if (rule.update) {\n rule.update = parseFn(rule.update);\n }\n return rule;\n },\n loadFn(item, rule) {\n ['on', 'props', 'nativeOn', 'deep'].forEach(k => {\n item[k] && this.parseInjectEvent(rule, item[k]);\n });\n },\n loadCtrl(rule) {\n rule.control && rule.control.forEach(ctrl => {\n if (ctrl.handle) {\n ctrl.handle = parseFn(ctrl.handle)\n }\n })\n },\n syncProp(ctx) {\n const rule = ctx.rule;\n is.trueArray(rule.sync) && mergeProps([{\n on: rule.sync.reduce((pre, prop) => {\n pre[`update:${prop}`] = (val) => {\n rule.props[prop] = val;\n this.vm.$emit('sync', prop, val, rule, this.fapi);\n }\n return pre\n }, {})\n }], ctx.computed)\n },\n loadRule() {\n // console.warn('%c load', 'color:blue');\n this.cycleLoad = false;\n this.loading = true;\n if (this.pageEnd) {\n this.bus.$emit('load-start');\n }\n this.deferSyncValue(() => {\n this._loadRule(this.rules);\n this.loading = false;\n if (this.cycleLoad && this.pageEnd) {\n return this.loadRule();\n }\n if (this.pageEnd) {\n this.bus.$emit('load-end');\n }\n this.vm._renderRule();\n this.$render.initOrgChildren();\n this.syncForm();\n });\n },\n loadChildren(children, parent) {\n this.cycleLoad = false;\n this.loading = true;\n this.bus.$emit('load-start');\n this._loadRule(children, parent);\n this.loading = false;\n if (this.cycleLoad) {\n return this.loadRule();\n } else {\n this.bus.$emit('load-end');\n this.syncForm();\n }\n this.$render.clearCache(parent);\n },\n _loadRule(rules, parent) {\n\n const preIndex = (i) => {\n let pre = rules[i - 1];\n if (!pre || !pre.__fc__) {\n return i > 0 ? preIndex(i - 1) : -1;\n }\n let index = this.sort.indexOf(pre.__fc__.id);\n return index > -1 ? index : preIndex(i - 1);\n }\n\n const loadChildren = (children, parent) => {\n if (is.trueArray(children)) {\n this._loadRule(children, parent);\n }\n };\n\n rules.map((_rule, index) => {\n if (parent && !is.Object(_rule)) return;\n if (!this.pageEnd && !parent && index >= this.first) return;\n\n if (_rule.__fc__ && _rule.__fc__.root === rules && this.ctxs[_rule.__fc__.id]) {\n loadChildren(_rule.__fc__.rule.children, _rule.__fc__);\n return _rule.__fc__;\n }\n\n let rule = getRule(_rule);\n\n const isRepeat = () => {\n return !!(rule.field && this.fieldCtx[rule.field] && this.fieldCtx[rule.field][0] !== _rule.__fc__)\n }\n\n this.ruleEffect(rule, 'init', {repeat: isRepeat()});\n\n if (isRepeat()) {\n this.vm.$emit('repeat-field', _rule, this.api);\n }\n\n let ctx;\n let isCopy = false;\n let isInit = !!_rule.__fc__;\n let defaultValue = rule.value;\n if (isInit) {\n ctx = _rule.__fc__;\n defaultValue = ctx.defaultValue;\n const check = !ctx.check(this);\n if (ctx.deleted) {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n ctx.update(this);\n }\n } else {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n rules[index] = _rule = _rule._clone ? _rule._clone() : copyRule(_rule);\n ctx = null;\n isCopy = true;\n }\n }\n }\n if (!ctx) {\n const rule = this.parseRule(_rule);\n ctx = new RuleContext(this, rule, isInit ? defaultValue : rule.value);\n this.bindParser(ctx);\n } else {\n if (ctx.originType !== ctx.rule.type) {\n ctx.updateType();\n this.bindParser(ctx);\n }\n this.appendValue(ctx.rule);\n }\n [false, true].forEach(b => this.parseEmit(ctx, b));\n this.syncProp(ctx);\n ctx.parent = parent || null;\n ctx.root = rules;\n this.setCtx(ctx);\n\n !isCopy && !isInit && this.effect(ctx, 'load');\n\n this.effect(ctx, 'created');\n\n ctx.parser.loadChildren === false || loadChildren(ctx.rule.children, ctx);\n\n if (!parent) {\n const _preIndex = preIndex(index);\n if (_preIndex > -1 || !index) {\n this.sort.splice(_preIndex + 1, 0, ctx.id);\n } else {\n this.sort.push(ctx.id);\n }\n }\n\n const r = ctx.rule;\n if (!ctx.updated) {\n ctx.updated = true;\n if (is.Function(r.update)) {\n this.bus.$once('load-end', () => {\n this.refreshUpdate(ctx, r.value, 'init');\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 || ((condition[control.condition || '=='] || condition['=='])(control.value));\n if (!is.trueArray(control.rule)) continue;\n const data = {\n ...control,\n valid: invoke(() => handleFn(ctx.rule.value, api)),\n ctrl: findCtrl(ctx, control.rule),\n isHidden: is.String(control.rule[0]),\n };\n if ((data.valid && data.ctrl) || (!data.valid && !data.ctrl && !data.isHidden)) continue;\n validate.push(data);\n }\n if (!validate.length) return false;\n\n const hideLst = [];\n let flag = false;\n this.deferSyncValue(() => {\n validate.reverse().forEach(({isHidden, valid, rule, prepend, append, child, ctrl, method}) => {\n if (isHidden) {\n valid ? ctx.ctrlRule.push({\n __ctrl: true,\n children: rule,\n valid\n })\n : ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n hideLst[valid ? 'push' : 'unshift'](() => {\n if (method === 'disabled') {\n this.api.disabled(!valid, rule);\n } else if (method === 'display') {\n this.api.display(valid, rule);\n } else if (method === 'required') {\n rule.forEach(item => {\n this.api.setEffect(item, 'required', valid);\n })\n if(!valid){\n this.api.clearValidateState(rule);\n }\n } else {\n this.api.hidden(!valid, rule);\n }\n });\n return;\n }\n if (valid) {\n flag = true;\n const ruleCon = {\n type: 'fcFragment',\n native: true,\n __ctrl: true,\n children: rule,\n }\n ctx.ctrlRule.push(ruleCon);\n this.bus.$once('load-start', () => {\n // this.cycleLoad = true;\n if (prepend) {\n api.prepend(ruleCon, prepend, child)\n } else if (append || child) {\n api.append(ruleCon, append || ctx.id, child)\n } else {\n ctx.root.splice(ctx.root.indexOf(ctx.origin) + 1, 0, ruleCon);\n }\n });\n } else {\n ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n const ctrlCtx = byCtx(ctrl);\n ctrlCtx && ctrlCtx.rm();\n }\n });\n });\n hideLst.length && this.vm.$nextTick(() => {\n hideLst.forEach(v => v());\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 this.deferSyncValue(() => {\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 this.vm.$emit('reloading', this.api);\n });\n this.bus.$off('next-tick', this.nextReload);\n this.bus.$once('next-tick', this.nextReload);\n this.vm.$emit('update', this.api);\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)) $set(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/modify';\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 (is.Undef(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 || false);\n this.effect(ctx, 'value');\n },\n onInput(ctx, value) {\n let val;\n if (ctx.input && (this.isQuote(ctx, val = ctx.parser.toValue(value, ctx)) || this.isChange(ctx, val))) {\n this.setValue(ctx, val, value);\n }\n },\n setFormData(ctx, value) {\n $set(this.formData, ctx.id, value === null ? undefined : value);\n },\n getFormData(ctx) {\n return this.formData[ctx.id];\n },\n validate() {\n toEmpty(this.vm.validate);\n this.fields().forEach(id => {\n this.fieldCtx[id].forEach(ctx => {\n this.vm.validate[ctx.id] = toArray(ctx.rule.validate);\n });\n });\n return this.vm.validate;\n },\n syncForm() {\n toEmpty(this.form);\n Object.defineProperties(this.form, this.fields().reduce((initial, field) => {\n const ctx = this.getFieldCtx(field);\n const handle = this.valueHandle(ctx);\n handle.configurable = true;\n initial[field] = handle;\n return initial;\n }, this.options.appendValue ? Object.keys(this.appendData).reduce((initial, field) => {\n initial[field] = {\n enumerable: true,\n configurable: true,\n get: () => {\n return this.appendData[field];\n },\n set: (val) => {\n this.appendData[field] = val;\n }\n }\n return initial;\n }, {}) : {}));\n this.syncValue();\n },\n valueHandle(ctx) {\n return {\n enumerable: true,\n get: () => {\n return this.getValue(ctx);\n },\n set: (value) => {\n if (this.isChange(ctx, value)) {\n this.setValue(ctx, value, ctx.parser.toFormValue(value, ctx), true);\n }\n }\n };\n },\n appendValue(rule) {\n if (!rule.field || !hasProperty(this.appendData, rule.field)) return;\n rule.value = this.appendData[rule.field];\n delete this.appendData[rule.field];\n },\n addSubForm(ctx, subForm) {\n this.subForm[ctx.id] = subForm;\n },\n deferSyncValue(fn, sync) {\n if (!this.deferSyncFn) {\n this.deferSyncFn = fn;\n }\n if (!this.deferSyncFn.sync) {\n this.deferSyncFn.sync = sync;\n }\n invoke(fn);\n if (this.deferSyncFn === fn) {\n this.deferSyncFn = null;\n if (fn.sync) {\n this.syncValue();\n }\n }\n },\n syncValue() {\n if (this.deferSyncFn) {\n return this.deferSyncFn.sync = true;\n }\n this.vm._updateValue({...(this.options.appendValue ? this.appendData : {}), ...this.form});\n },\n isChange(ctx, value) {\n return JSON.stringify(ctx.rule.value, strFn) !== JSON.stringify(value === null ? undefined : value, strFn);\n },\n isQuote(ctx, value) {\n return (is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;\n },\n refreshUpdate(ctx, val, origin) {\n if (is.Function(ctx.rule.update)) {\n const state = invoke(() => ctx.rule.update(val, ctx.origin, this.api, {origin: origin || 'change'}));\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, origin) {\n if (this.refreshControl(ctx)) {\n this.$render.clearCacheAll();\n this.loadRule();\n this.vm.$emit('update', this.api);\n this.refresh();\n }\n this.refreshUpdate(ctx, val, origin);\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, 'link');\n\n this.bus.$on('change-' + field, fn);\n ctx.linkOn.push(() => this.bus.$off('change-' + field, fn));\n });\n },\n fields() {\n return Object.keys(this.fieldCtx);\n },\n });\n}\n\n\nfunction strFn(key, val) {\n return typeof val === 'function' ? '' + val : val;\n}\n\nfunction toEmpty(obj) {\n Object.keys(obj).forEach(k => delete obj[k]);\n}\n","const BaseParser = {\n init(ctx) {\n },\n toFormValue(value, ctx) {\n return value\n },\n toValue(formValue, ctx) {\n return formValue;\n },\n mounted(ctx) {\n },\n render(children, ctx) {\n return ctx.$render.defaultRender(ctx, children);\n },\n preview(children, ctx) {\n return this.render(children, ctx);\n },\n mergeProp(ctx) {\n }\n}\n\nexport default BaseParser;\n","import extend from '@form-create/utils/lib/extend';\nimport toCase from '@form-create/utils/lib/tocase';\nimport BaseParser from '../factory/parser';\nimport {$del} from '@form-create/utils/lib/modify';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\n\nconst noneKey = ['field', 'value', 'vm', 'template', 'name', 'config', 'control', 'inject', 'sync', 'payload', 'optionsTo', 'update', 'component', 'cache'];\n\nexport default function useContext(Handler) {\n extend(Handler.prototype, {\n getCtx(id) {\n return this.getFieldCtx(id) || this.getNameCtx(id)[0] || this.ctxs[id];\n },\n getCtxs(id) {\n return this.fieldCtx[id] || this.nameCtx[id] || (this.ctxs[id] ? [this.ctxs[id]] : []);\n },\n setIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n if (!this[field][key]) {\n this[field][key] = [ctx];\n } else {\n this[field][key].push(ctx);\n }\n },\n rmIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n const lst = this[field][key];\n if (!lst) return false;\n const flag = lst.splice(lst.indexOf(ctx) >>> 0, 1).length > 0;\n if (!lst.length) {\n delete this[field][key];\n }\n return flag;\n },\n getFieldCtx(field) {\n return (this.fieldCtx[field] || [])[0];\n },\n getNameCtx(name) {\n return this.nameCtx[name] || [];\n },\n setCtx(ctx) {\n let {id, field, name, rule} = ctx;\n this.ctxs[id] = ctx;\n name && this.setIdCtx(ctx, name, 'name');\n if (!ctx.input) return;\n this.setIdCtx(ctx, field, 'field');\n this.setFormData(ctx, ctx.parser.toFormValue(rule.value, ctx));\n if (this.isMounted && !this.reloading) {\n this.vm.$emit('change', ctx.field, rule.value, ctx.origin, this.api);\n }\n },\n getParser(ctx) {\n const list = this.fc.parsers;\n return list[ctx.originType] || list[toCase(ctx.type)] || list[ctx.trueType] || BaseParser;\n },\n bindParser(ctx) {\n ctx.setParser(this.getParser(ctx));\n },\n getType(alias) {\n const map = this.fc.CreateNode.aliasMap;\n const type = map[alias] || map[toCase(alias)] || alias;\n return toCase(type);\n },\n noWatch(fn) {\n if (!this.noWatchFn) {\n this.noWatchFn = fn;\n }\n invoke(fn);\n if (this.noWatchFn === fn) {\n this.noWatchFn = null;\n }\n },\n watchCtx(ctx) {\n const vm = this.vm;\n Object.keys(ctx.rule).filter(k => k[0] !== '_' && k[0] !== '$' && noneKey.indexOf(k) === -1).forEach((key) => {\n const flag = key === 'children';\n ctx.watch.push(vm.$watch(() => ctx.rule[key], (n, o) => {\n if (this.loading || this.noWatchFn || this.reloading) return;\n if (flag && ctx.parser.loadChildren === false) {\n this.$render.clearCache(ctx);\n this.nextRefresh();\n return;\n }\n this.watching = true;\n // if (key === 'hidden')\n // ctx.updateKey(true);\n // else\n if (key === 'link') {\n ctx.link();\n return;\n } else if (['props', 'on', 'nativeOn', 'deep'].indexOf(key) > -1) {\n this.parseInjectEvent(ctx.rule, n || {});\n if (key === 'props' && ctx.input) {\n this.setFormData(ctx, ctx.parser.toFormValue(ctx.rule.value, ctx));\n }\n } else if (['emit', 'nativeEmit'].indexOf(key) > -1)\n this.parseEmit(ctx, key === 'emit');\n else if (['prefix', 'suffix'].indexOf(key) > -1)\n n && this.loadFn(n, ctx.rule);\n else if (key === 'type') {\n ctx.updateType();\n this.bindParser(ctx);\n } else if (key === 'children') {\n const flag = is.trueArray(n);\n this.deferSyncValue(() => {\n if (n !== o) {\n this.rmSub(o, ctx);\n this.$render.initOrgChildren();\n }\n flag && this.loadChildren(n, ctx);\n this.vm.$emit('update', this.api);\n });\n }\n this.$render.clearCache(ctx);\n this.refresh();\n this.watching = false;\n }, {deep: !flag, sync: flag}));\n });\n this.watchEffect(ctx);\n },\n rmSub(sub, ctx) {\n is.trueArray(sub) && sub.forEach(r => {\n r && r.__fc__ && r.__fc__.parent === ctx && this.rmCtx(r.__fc__);\n })\n },\n rmCtx(ctx) {\n if (ctx.deleted) return;\n const {id, field, input, name} = ctx;\n if (ctx.input) {\n Object.defineProperty(ctx.rule, 'value', {\n value: ctx.rule.value,\n writable: true\n });\n }\n\n $del(this.ctxs, id);\n $del(this.$render.tempList, id);\n $del(this.$render.orgChildren, id);\n $del(this.vm.ctxInject, id);\n $del(this.formData, id);\n $del(this.subForm, id);\n $del(ctx, 'cacheValue');\n\n input && this.rmIdCtx(ctx, field, 'field');\n name && this.rmIdCtx(ctx, name, 'name');\n\n if (input && !hasProperty(this.fieldCtx, field)) {\n $del(this.form, field);\n }\n\n this.deferSyncValue(() => {\n if (!this.reloading) {\n if (ctx.parser.loadChildren !== false) {\n if (is.trueArray(ctx.rule.children)) {\n ctx.rule.children.forEach(h => h.__fc__ && this.rmCtx(h.__fc__));\n }\n }\n if (ctx.root === this.rules) {\n this.vm._renderRule();\n }\n }\n }, input);\n\n const index = this.sort.indexOf(id);\n if (index > -1) {\n this.sort.splice(index, 1);\n }\n\n this.$render.clearCache(ctx);\n ctx.delete();\n this.effect(ctx, 'deleted');\n input && !this.fieldCtx[field] && this.vm.$emit('removeField', field, ctx.rule, this.api);\n ctx.rule.__ctrl || this.vm.$emit('removeRule', ctx.rule, this.api);\n return ctx;\n },\n })\n}\n","import Api from '../frame/api';\nimport Render from '../render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\nimport useInject from './inject';\nimport usePage from './page';\nimport useRender from './render';\nimport useLoader from './loader';\nimport useInput from './input';\nimport useContext from './context';\nimport useLifecycle from './lifecycle';\nimport useEffect from './effect';\n\n\nexport default function Handler(fc) {\n extend(this, {\n fc,\n vm: fc.vm,\n watching: false,\n loading: false,\n reloading: false,\n noWatchFn: null,\n deferSyncFn: null,\n isMounted: false,\n formData: {},\n subForm: {},\n form: {},\n appendData: {},\n providers: {},\n cycleLoad: null,\n loadedId: 1,\n nextTick: null,\n changeStatus: false,\n pageEnd: true,\n nextReload: () => {\n this.lifecycle('reload');\n }\n });\n\n funcProxy(this, {\n options() {\n return fc.options;\n },\n bus() {\n return fc.bus;\n },\n })\n\n this.initData(fc.rules);\n\n this.$manager = new fc.manager(this);\n this.$render = new Render(this);\n this.api = fc.extendApi(Api(this), this);\n}\n\nextend(Handler.prototype, {\n initData(rules) {\n extend(this, {\n ctxs: {},\n fieldCtx: {},\n nameCtx: {},\n sort: [],\n rules,\n });\n },\n init() {\n this.appendData = {...this.fc.options.formData || {}, ...this.vm.value || {}, ...this.appendData};\n this.useProvider();\n this.usePage();\n this.loadRule();\n this.$manager.__init();\n this.vm.$set(this.vm, 'formData', this.formData);\n },\n})\n\nuseInject(Handler);\nusePage(Handler);\nuseRender(Handler);\nuseLoader(Handler);\nuseInput(Handler);\nuseContext(Handler);\nuseLifecycle(Handler);\nuseEffect(Handler);\n","// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js\n\nfunction getError(action, option, xhr) {\n const msg = `fail to ${action} ${xhr.status}'`;\n const err = new Error(msg);\n err.status = xhr.status;\n err.url = action;\n return err;\n}\n\nfunction getBody(xhr) {\n const text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nexport default function fetch(option) {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n\n const xhr = new XMLHttpRequest();\n const action = option.action;\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(action, option, xhr), getBody(xhr));\n }\n\n option.onSuccess(getBody(xhr));\n };\n\n xhr.open(option.method || 'get', action, true);\n\n let formData;\n if (option.data) {\n if ((option.dataType || '').toLowerCase() !== 'json') {\n formData = new FormData();\n Object.keys(option.data).map(key => {\n formData.append(key, option.data[key]);\n });\n } else {\n formData = JSON.stringify(option.data);\n xhr.setRequestHeader('content-type', 'application/json');\n }\n }\n\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n const headers = option.headers || {};\n\n Object.keys(headers).forEach(item => {\n if (headers[item] !== null) {\n xhr.setRequestHeader(item, headers[item]);\n }\n });\n xhr.send(formData);\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport toLine from '@form-create/utils/lib/toline';\nimport {parseFn} from '../frame/util';\n\n\nexport default function useInject(Handler) {\n extend(Handler.prototype, {\n parseInjectEvent(rule, on) {\n const inject = rule.inject || this.options.injectEvent;\n return this.parseEventLst(rule, on, inject);\n },\n parseEventLst(rule, data, inject, deep) {\n Object.keys(data).forEach(k => {\n const fn = this.parseEvent(rule, data[k], inject, deep);\n if (fn) {\n data[k] = fn;\n }\n });\n return data;\n },\n parseEvent(rule, fn, inject, deep) {\n if (is.Function(fn) && ((inject !== false && !is.Undef(inject)) || fn.__inject)) {\n return this.inject(rule, fn, inject)\n } else if (!deep && Array.isArray(fn) && fn[0] && (is.String(fn[0]) || is.Function(fn[0]))) {\n return this.parseEventLst(rule, fn, inject, true);\n } else if (is.String(fn)) {\n const val = parseFn(fn);\n if (val && fn !== val) {\n return val.__inject ? this.parseEvent(rule, val, inject, true) : val;\n }\n }\n },\n parseEmit(ctx, on) {\n let event = {}, rule = ctx.rule, {emitPrefix, field, name, inject} = rule;\n let emit = rule[on ? 'emit' : 'nativeEmit'] || [];\n if (is.trueArray(emit)) {\n let emitKey = emitPrefix || field || name;\n if (emitKey) {\n if (!on) emitKey = `native-${emitKey}`;\n emit.forEach(eventName => {\n if (!eventName) return;\n let eventInject;\n if (is.Object(eventName)) {\n eventInject = eventName.inject;\n eventName = eventName.name;\n }\n const fieldKey = toLine(`${emitKey}-${eventName}`);\n const fn = (...arg) => {\n this.vm.$emit(fieldKey, ...arg);\n this.vm.$emit('emit-event', fieldKey, ...arg);\n };\n fn.__emit = true;\n\n if (!eventInject && inject === false) {\n event[eventName] = fn;\n } else {\n let _inject = eventInject || inject || this.options.injectEvent;\n event[eventName] = is.Undef(_inject) ? fn : this.inject(rule, fn, _inject);\n }\n });\n }\n\n }\n ctx.computed[on ? 'on' : 'nativeOn'] = event;\n return event;\n },\n getInjectData(self, inject) {\n const {option, rule} = this.vm.$options.propsData;\n return {\n api: this.api,\n $f: this.api,\n rule,\n self: self.__origin__,\n option,\n inject\n };\n },\n inject(self, _fn, inject) {\n if (_fn.__origin) {\n if (this.watching && !this.loading)\n return _fn;\n _fn = _fn.__origin;\n }\n\n const h = this;\n\n const fn = function (...args) {\n const data = h.getInjectData(self, inject);\n data.args = [...args];\n args.unshift(data);\n return _fn.apply(this, args);\n };\n fn.__origin = _fn;\n fn.__json = _fn.__json;\n return fn;\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\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 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 {mergeRule} from '../frame/util';\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 let prop = ps[k];\n if (is.Function(prop)) {\n prop = prop(this.fc);\n }\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 let effect = {\n required: () => {\n return (hasProperty(ctx.rule, '$required') ? ctx.rule['$required'] : ctx.rule?.effect?.required) || false;\n }\n };\n Object.keys(ctx.rule.effect || {}).forEach(k => {\n effect[k] = () => ctx.rule.effect[k];\n })\n Object.keys(ctx.rule).forEach(k => {\n if (k[0] === '$') {\n effect[k.substr(1)] = () => ctx.rule[k];\n }\n })\n Object.keys(effect || {}).forEach(k => {\n ctx.watch.push(vm.$watch(effect[k], (n) => {\n this.effect(ctx, 'watch', {[k]: n});\n }, {deep: true}));\n });\n },\n ruleEffect(rule, event, append) {\n this.emitEffect({\n rule,\n input: !!rule.field,\n type: this.getType(rule.type)\n }, event, append);\n },\n effect(ctx, event, custom) {\n this.emitEffect({\n rule: ctx.rule,\n input: ctx.input,\n type: ctx.trueType,\n ctx,\n custom\n }, event);\n },\n getEffect(rule, name) {\n if (hasProperty(rule, '$' + name)) {\n return rule['$' + name];\n }\n if (hasProperty(rule, 'effect') && hasProperty(rule.effect, name))\n return rule.effect[name];\n return undefined;\n },\n emitEffect({ctx, rule, input, type, custom}, event, append) {\n if (!type || type === 'fcFragment') return;\n const effect = custom ? custom : (Object.keys(rule).reduce((i, k) => {\n if (k[0] === '$') {\n i[k.substr(1)] = rule[k];\n }\n return i;\n }, {...rule.effect || {}}));\n Object.keys(effect).forEach(attr => {\n const p = this.providers[attr];\n if (!p || (p.input && !input)) return;\n let _type;\n if (!p._c) {\n _type = '*';\n } else if (p._used.indexOf(type) > -1) {\n _type = type;\n } else {\n return;\n }\n const data = {value: effect[attr], getValue: () => this.getEffect(rule, attr), ...(append || {})};\n if (ctx) {\n data.getProp = () => ctx.effectData(attr);\n data.clearProp = () => ctx.clearEffectData(attr);\n data.mergeProp = (prop) => mergeRule(data.getProp(), [prop]);\n data.id = ctx.id;\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)) {\n const arr = unique(c.filter(v => v !== '*'));\n return arr.length ? arr : false;\n } else if (is.String(c)) return [c];\n else return false;\n}\n","const NAME = 'fcFragment';\n\nexport default {\n name: NAME,\n functional: true,\n props: ['vnode'],\n render(h, ctx) {\n return ctx.props.vnode ? ctx.props.vnode : ctx.children\n }\n}\n","import toLine from '@form-create/utils/lib/toline';\nimport is from '@form-create/utils/lib/type';\nimport toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\nimport Vue from 'vue';\n\nfunction parseProp(prop) {\n if (is.String(prop))\n return {domProps: {innerHTML: prop}};\n return prop;\n}\n\nexport function CreateNodeFactory() {\n\n const aliasMap = {};\n\n function CreateNode(vm) {\n vm && this.setVm(vm);\n }\n\n extend(CreateNode.prototype, {\n setVm(vm) {\n this.vm = vm;\n this.$h = vm.$createElement;\n },\n make(tag, data, children) {\n if (Vue.config.isReservedTag(tag) && data.nativeOn) delete data.nativeOn;\n return this.makeComponent(tag, data, children);\n },\n makeComponent(type, data, children) {\n let Node = this.$h(type, 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","export default function toString(val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n","import 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 getSlot(name){\n const _fn = (vm) => {\n if (vm) {\n let slot = vm.$scopedSlots[name];\n if (slot) {\n return slot;\n }\n return _fn(vm.$pfc);\n }\n return undefined;\n }\n return _fn(this.vm);\n },\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 {byCtx, invoke} from './util';\nimport is from '@form-create/utils/lib/type';\nimport deepSet from '@form-create/utils/lib/deepset';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport toArray from '@form-create/utils/lib/toarray';\n\nconst loadData = function (fc) {\n const loadData = {\n name: 'loadData',\n _fn: [],\n created(inject, rule, api) {\n this.deleted(inject);\n let attrs = toArray(inject.getValue());\n const events = [];\n attrs.forEach(attr => {\n if (attr) {\n const on = () => {\n if (attr.watch !== false) {\n fc.bus.$off('p.loadData.' + attr.attr, on);\n fc.bus.$once('p.loadData.' + attr.attr, on);\n }\n let value = undefined;\n if (attr.attr) {\n value = fc.loadData[attr.attr] || attr.default;\n if (attr.copy) {\n value = deepCopy(value)\n }\n }\n deepSet(inject.getProp(), attr.to || 'options', value);\n api.sync(rule);\n }\n events.push(() => fc.bus.$off('p.loadData.' + attr.attr, on));\n on();\n }\n })\n this._fn[inject.id] = events;\n },\n deleted(inject) {\n if (this._fn[inject.id]) {\n this._fn[inject.id].forEach(un => {\n un();\n })\n delete this._fn[inject.id];\n }\n inject.clearProp();\n },\n };\n loadData.watch = loadData.created;\n return loadData;\n}\n\nconst componentValidate = {\n name: 'componentValidate',\n load(attr, rule, api) {\n const method = attr.getValue();\n if (!method) {\n attr.clearProp();\n api.clearValidateState([rule.field]);\n } else {\n attr.getProp().validate = [{\n validator(...args) {\n const ctx = byCtx(rule);\n if (ctx) {\n return api.exec(ctx.id, method === true ? 'formCreateValidate' : method, ...args, {\n attr,\n rule,\n api\n });\n }\n }\n }];\n }\n },\n watch(...args) {\n componentValidate.load(...args);\n }\n};\n\nconst fetch = function (fc) {\n\n function parseOpt(option) {\n if (is.String(option)) {\n option = {\n action: option,\n to: 'options'\n }\n }\n return option;\n }\n\n function run(inject, rule, api) {\n let option = inject.value;\n const set = (val) => {\n if (val === undefined) {\n inject.clearProp();\n api.sync(rule);\n } else {\n deepSet(inject.getProp(), option.to || 'options', val);\n }\n }\n if (is.Function(option)) {\n option = option(rule, api);\n\n }\n option = parseOpt(option);\n if (!option || !option.action) {\n set(undefined);\n return;\n }\n if (!option.to) {\n option.to = 'options';\n }\n const onError = option.onError;\n\n const check = () => {\n if (!inject.getValue()) {\n inject.clearProp();\n api.sync(rule);\n return true;\n }\n }\n\n const config = {\n headers: {},\n ...option,\n onSuccess(body, flag) {\n if (check()) return;\n let fn = (v) => flag ? v : v.data;\n if (is.Function(option.parse)) {\n fn = option.parse;\n } else if (option.parse && is.String(option.parse)) {\n fn = (v) => {\n option.parse.split('.').forEach(k => {\n if (v) {\n v = v[k];\n }\n })\n return v;\n }\n }\n set(fn(body, rule, api))\n api.sync(rule);\n },\n onError(e) {\n set(undefined)\n if (check()) return;\n (onError || ((e) => err(e.message || 'fetch fail ' + option.action)))(e, rule, api);\n }\n };\n fc.options.beforeFetch && invoke(() => fc.options.beforeFetch(config, {rule, api}));\n if (is.Function(option.action)) {\n option.action(rule, api).then((val) => {\n config.onSuccess(val, true);\n }).catch((e) => {\n config.onError(e);\n });\n return;\n }\n invoke(() => fc.create.fetch(config, {inject, rule, api}));\n }\n\n return {\n name: 'fetch',\n loaded(...args) {\n run(...args);\n },\n watch(...args) {\n run(...args);\n },\n };\n}\n\n\nconst $required = {\n name: 'required',\n load(inject, rule, api) {\n const val = parseVal(inject.getValue());\n if (val.required === false) {\n inject.clearProp();\n } else {\n const validate = {\n required: true,\n validator(_, v, call) {\n is.empty(v) ? call(validate.message) : call();\n },\n ...val,\n };\n if (!validate.message) {\n let title = rule.title || '';\n validate.message = ((typeof title === 'object' ? title.title : title) || '') + '不能为空';\n }\n inject.getProp().validate = [validate];\n }\n api.sync(rule);\n },\n watch(...args) {\n $required.load(...args);\n }\n}\n\nfunction parseVal(val) {\n if (is.Boolean(val)) {\n return {required: val}\n } else if (is.String(val)) {\n return {message: val};\n } else if (is.Undef(val)) {\n return {required: false};\n } else if (is.Function(val)) {\n return {validator: val};\n } else if (!is.Object(val)) {\n return {};\n } else {\n return val;\n }\n}\n\nexport default {\n fetch,\n loadData,\n required: $required,\n componentValidate,\n};\n","import is from '@form-create/utils/lib/type';\n\nconst name = 'html';\n\nexport default {\n name,\n loadChildren: false,\n render(children, ctx) {\n if (!ctx.prop.domProps) ctx.prop.domProps = {};\n ctx.prop.domProps.innerHTML = children;\n return ctx.vNode.make(ctx.prop.props.tag || 'div', ctx.prop);\n },\n renderChildren(ctx) {\n if (Array.isArray(ctx.rule.children)) {\n return ctx.rule.children.filter(v => is.String(v)).join('');\n }\n return '';\n }\n}\n","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, parseFn} 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 $provider from './provider';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport html from '../parser/html';\nimport uniqueId from '@form-create/utils/lib/unique';\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\nlet id = 1;\nconst instance = {};\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 ...$provider\n };\n const maker = makerFactory();\n let globalConfig = {global: {}};\n const loadData = {};\n const CreateNode = CreateNodeFactory();\n\n exportAttrs(config.attrs || {});\n\n function getApi(name) {\n const val = instance[name];\n if (Array.isArray(val)) {\n return val.map(v => {\n return v.api();\n });\n } else if (val) {\n return val.api();\n }\n }\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 _emitData(id) {\n Object.keys(instance).forEach(v => {\n const apis = Array.isArray(instance[v]) ? instance[v] : [instance[v]];\n apis.forEach(that => {\n that.bus.$emit('p.loadData.' + id);\n })\n })\n }\n\n function setData(id, data) {\n loadData[id] = data;\n _emitData(id);\n }\n\n function removeData(id) {\n delete loadData[id];\n _emitData(id);\n }\n\n function $form() {\n return _vue.extend($FormCreate(FormCreate));\n }\n\n function $vnode() {\n return _vue.extend(fragment);\n }\n\n //todo 检查回调函数作用域\n function use(fn, opt) {\n if (is.Function(fn.install)) fn.install(create, opt);\n else if (is.Function(fn)) fn(create, opt);\n return this;\n }\n\n function create(rules, _opt, parent) {\n let $vm = mountForm(rules, _opt || {});\n const _this = $vm.$refs.fc.formCreate;\n _this.$parent = parent;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n }\n\n function factory(inherit) {\n let _config = {...config};\n if (inherit) {\n _config.inherit = {\n components,\n parsers,\n directives,\n providers,\n maker,\n loadData\n }\n } else {\n delete _config.inherit;\n }\n return FormCreateFactory(_config);\n }\n\n function FormCreate(vm, rules, options) {\n extend(this, {\n id: id++,\n vm,\n create,\n manager: createManager(config.manager),\n parsers,\n providers,\n rules: Array.isArray(rules) ? rules : [],\n name: vm.$options.propsData.name || uniqueId(),\n inFor: vm.$options.propsData.inFor,\n prop: {\n components,\n directives,\n },\n loadData,\n CreateNode,\n bus: new _vue,\n unwatch: null,\n options: options || {},\n extendApi: config.extendApi || (api => api)\n })\n this.init();\n this.initOptions(this.options);\n if (this.name) {\n if (this.inFor) {\n if (!instance[this.name]) instance[this.name] = [];\n instance[this.name].push(this);\n } else {\n instance[this.name] = this;\n }\n }\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 if (this.name) {\n if (this.inFor) {\n const idx = instance[this.name].indexOf(this);\n instance[this.name].splice(idx, 1);\n if(!instance[this.name].length){\n delete instance[this.name];\n }\n } else {\n delete instance[this.name];\n }\n }\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 this.vm.$emit('created', this.api());\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 setData,\n removeData,\n maker,\n component,\n directive,\n register,\n $vnode,\n parser,\n use,\n factory,\n componentAlias,\n copyRule,\n copyRules,\n fetch,\n $form,\n parseFn,\n parseJson,\n toJson,\n getApi,\n init(rules, _opt = {}) {\n let $vm = mountForm(rules, _opt), _this = $vm.$refs.fc.formCreate;\n return {\n mount($el) {\n if ($el && is.Element($el))\n _this.options.el = $el;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n },\n remove() {\n $vm.$el.parentNode && $vm.$el.parentNode.removeChild($vm.$el);\n },\n destroy() {\n this.remove();\n $vm.$destroy();\n },\n $f: _this.api()\n };\n }\n });\n }\n\n function useStatic(formCreate) {\n extend(formCreate, {\n create,\n install(Vue, options) {\n globalConfig = {...globalConfig, ...(options || {})}\n if (Vue._installedFormCreate === true) return;\n Vue._installedFormCreate = true;\n _vue = Vue;\n\n const $formCreate = function (rules, opt = {}) {\n return create(rules, opt, this);\n };\n\n useAttr($formCreate);\n\n Vue.prototype.$formCreate = $formCreate;\n Vue.component('FormCreate', $form());\n Vue.component('FcFragment', $vnode());\n }\n })\n }\n\n useAttr(create);\n useStatic(create);\n\n CreateNode.use({fragment: 'fcFragment'});\n\n parser(html);\n\n if (config.install) create.use(config);\n\n if (config.inherit) {\n const inherit = config.inherit;\n inherit.components && extend(components, inherit.components);\n inherit.parsers && extend(parsers, inherit.parsers);\n inherit.directives && extend(directives, inherit.directives);\n inherit.providers && extend(providers, inherit.providers);\n inherit.maker && extend(maker, inherit.maker);\n inherit.loadData && extend(loadData, inherit.loadData);\n }\n\n return create;\n}\n","import is from '@form-create/utils/lib/type';\nimport {creatorFactory} from '@form-create/core/src/index';\n\nexport function timeStampToDate(timeStamp) {\n if (is.Date(timeStamp))\n return timeStamp;\n else {\n let date = new Date(timeStamp);\n return date.toString() === 'Invalid Date' ? timeStamp : date;\n }\n}\n\nconst name = 'datePicker';\n\nexport default {\n name,\n maker: (function () {\n return ['date', 'dateRange', 'datetime', 'datetimeRange', 'year', 'month'].reduce((maker, type) => {\n maker[type] = creatorFactory(name, {type: type.toLowerCase()});\n return maker;\n }, {});\n }()),\n mergeProp(ctx) {\n let props = ctx.prop.props;\n if (props.startDate) {\n props.startDate = props.startDate && timeStampToDate(props.startDate);\n }\n },\n\n isRange(el) {\n return el.type.includes('range') || el.multiple;\n },\n\n _toValue(val, ctx) {\n const value = ctx.el.formatDate(val || ''), {separator} = ctx.el,\n isRange = this.isRange(ctx.el);\n if (!value)\n return isRange ? (ctx.el.multiple ? [] : ['', '']) : value;\n else if (isRange)\n return value.split(separator);\n else\n return value;\n },\n\n toValue(formValue, ctx) {\n const el = ctx.el;\n if (el) {\n this.el = el;\n return this._toValue(formValue, ctx);\n }\n return formValue;\n },\n\n toFormValue(value, ctx) {\n if (ctx.el) {\n const v = ctx.el.parseDate(value);\n return this.isRange(ctx.el) ? v : v[0];\n } else {\n let isArr = Array.isArray(value), props = ctx.prop.props, parseValue, type = props.type || 'date';\n if (['daterange', 'datetimerange'].indexOf(type) !== -1) {\n if (isArr) {\n parseValue = value.map((time) => !time ? '' : timeStampToDate(time));\n } else {\n parseValue = ['', '']\n }\n } else if ('date' === type && props.multiple === true) {\n parseValue = toString(value);\n } else {\n parseValue = isArr ? (value[0] || '') : value;\n parseValue = !parseValue ? '' : timeStampToDate(parseValue);\n }\n return parseValue;\n }\n },\n mounted(ctx) {\n ctx.rule.value = this.toValue(ctx.$handle.getFormData(ctx), ctx);\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 datePicker from './datePicker';\nimport hidden from './hidden';\nimport input from './input';\nimport slider from './slider';\nimport iswitch from './switch';\nimport row from './row';\n\nexport default [\n datePicker, hidden, input, slider, iswitch, row\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.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';\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","export default {\n name: 'switch',\n mergeProp(ctx) {\n const prop = ctx.prop.props.slot || {};\n const slot = ctx.prop.scopedSlots || {};\n if (prop.open) slot.open = () => prop.open;\n if (prop.close) slot.close = () => prop.close;\n ctx.prop.scopedSlots = slot;\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}","export default {\n button: 'iButton',\n icon: 'Icon',\n slider: 'Slider',\n rate: 'Rate',\n upload: 'fcUpload',\n cascader: 'Cascader',\n colorPicker: 'ColorPicker',\n timePicker: 'TimePicker',\n datePicker: 'DatePicker',\n 'switch': 'iSwitch',\n select: 'fcSelect',\n checkbox: 'fcCheckbox',\n radio: 'fcRadio',\n inputNumber: 'InputNumber',\n input: 'iInput',\n formItem: 'FormItem',\n form: 'iForm',\n frame: 'fcFrame',\n col: 'iCol',\n row: 'row',\n tree: 'fcTree',\n autoComplete: 'AutoComplete',\n group: 'fcGroup',\n subForm: 'fcSubForm',\n object: 'fcSubForm',\n}\n","export const iviewConfig = {\n resetBtnType: 'default',\n resetBtnIcon: 'md-refresh',\n infoIcon: 'ios-information-circle-outline',\n};\n\nexport function info() {\n return {\n type: 'poptip',\n trigger: 'hover',\n placement: 'top-start',\n wordWrap: true,\n icon: iviewConfig.infoIcon\n }\n}\n\nexport default function getConfig() {\n return {\n form: {\n inline: false,\n labelPosition: 'right',\n labelWidth: 125,\n showMessage: true,\n autocomplete: 'off',\n size: undefined,\n },\n row: {\n gutter: 0,\n },\n submitBtn: {\n type: 'primary',\n disabled: false,\n innerText: '提交',\n loading: false,\n show: true,\n click: undefined,\n },\n resetBtn: {\n type: iviewConfig.resetBtnType,\n disabled: false,\n icon: iviewConfig.resetBtnIcon,\n innerText: '重置',\n loading: false,\n show: false,\n click: undefined,\n },\n };\n}\n","import getConfig, {info, iviewConfig} from './config';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\n\nfunction 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() {\n const form = this.form();\n if (form) {\n return new Promise((resolve, reject) => {\n form.validate().then(flag => {\n flag ? resolve(true) : reject(false);\n })\n });\n }\n return new Promise(v => v());\n },\n validateField(field) {\n const form = this.form();\n if (form) {\n return new Promise((resolve, reject) => {\n form.validateField(field, e => {\n e ? reject(e) : resolve(null);\n })\n })\n }\n return new Promise(v => v());\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', 'title'].forEach(name => {\n tidyBool(options, name);\n })\n return options;\n },\n tidyRule({prop}) {\n tidy(prop, 'title');\n tidy(prop, 'info');\n return prop;\n },\n mergeProp(ctx) {\n ctx.prop = mergeProps([{\n info: this.options.info || {},\n wrap: this.options.wrap || {},\n col: this.options.col || {},\n title: this.options.title || {},\n }, ctx.prop], {\n info: info(),\n title: {},\n col: {span: 24},\n wrap: {},\n }, {normal: ['title', 'info', 'col', 'wrap']});\n this.setSize(ctx.prop.props);\n },\n setSize(props) {\n if (!props.size && this.options.form.size) {\n props.size = this.options.form.size;\n }\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 labelWidth,\n ...(rule.wrap || {}),\n prop: ctx.id,\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, ctx) : null]);\n return (inline === true || isFalse(_col) || isFalse(col.show)) ? item : this.makeCol(rule, uni, [item]);\n },\n isTitle(rule) {\n if (this.options.form.title === false) return false;\n const title = rule.title;\n return !((!title.title && !title.native) || isFalse(title.show))\n },\n makeInfo(rule, uni, ctx) {\n const titleProp = rule.title;\n const infoProp = rule.info;\n const titleSlot = this.getSlot('title');\n const children = [titleSlot ? titleSlot({title: titleProp.title || '', rule: ctx.rule, options: this.options}) : titleProp.title];\n\n if (!isFalse(infoProp.show) && (infoProp.info || infoProp.native) && !isFalse(infoProp.icon)) {\n const prop = {\n type: infoProp.type || 'poptip',\n props: {...infoProp},\n key: `${uni}pop`,\n slot: 'label'\n };\n const field = 'content';\n if (infoProp.info && !hasProperty(prop.props, field)) {\n prop.props[field] = infoProp.info;\n }\n children[infoProp.align !== 'left' ? 'unshift' : 'push'](this.$r(mergeProps([infoProp, prop]), [\n this.$r({\n type: 'icon',\n props: {type: infoProp.icon === true ? iviewConfig.infoIcon : infoProp.icon, size: 16},\n style: 'margin-top: -1px',\n key: `${uni}i`\n })\n ]));\n }\n return this.$r(mergeProps([titleProp, {\n props: titleProp,\n slot: titleProp.slot || 'label',\n key: `${uni}tit`,\n type: titleProp.type || 'span',\n }]), children);\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 this.setSize(resetBtn);\n return this.$r({\n type: 'button',\n props: resetBtn,\n style: {width: resetBtn.width, marginLeft: '15px'},\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 this.setSize(submitBtn);\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\nconst names = ['upload', 'select', 'tree', 'checkbox', 'autoComplete', 'cascader', 'colorPicker', 'frame', 'inputNumber', 'radio', 'rate', 'timePicker', 'group'];\n\nfunction useAlias(maker) {\n names.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\n\nfunction useUpload(maker) {\n const name = 'upload';\n\n const types = {\n image: ['image', 0],\n file: ['file', 0],\n uploadFileOne: ['file', 1],\n uploadImageOne: ['image', 1],\n };\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory(name, m => m.props({uploadType: types[key][0], maxLength: types[key][1]}));\n return maker\n }, maker);\n\n maker.uploadImage = maker.image;\n maker.uploadFile = maker.file;\n}\n\nfunction useTree(maker) {\n const name = 'tree';\n\n const types = {'treeSelected': 'selected', 'treeChecked': 'checked'};\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory(name, {type:types[key]});\n return maker;\n }, maker);\n}\n\nfunction useTimePicker(maker) {\n const name = 'timePicker';\n\n maker.time = creatorFactory(name, {type:'time'})\n maker.timeRange = creatorFactory(name, {type:'timerange'})\n}\n\n\nfunction useSelect(maker) {\n const name = 'select';\n\n maker.selectMultiple = creatorFactory(name, {multiple:true})\n maker.selectOne = creatorFactory(name, {multiple:false})\n}\n\n\nfunction useFrame(maker) {\n const name = 'frame';\n\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(name, m => m.props({type: types[key][0], maxLength: types[key][1]}));\n return maker\n }, maker);\n\n\n maker.frameInput = maker.frameInputs;\n maker.frameFile = maker.frameFiles;\n maker.frameImage = maker.frameImages;\n}\n\nuseAlias(maker);\nuseUpload(maker);\nuseTree(maker);\nuseSelect(maker);\nuseFrame(maker);\nuseTimePicker(maker);\n\nexport default maker;\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '@form-create/core/src/frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction tidyBtnProp(btn, def) {\n if (is.Boolean(btn))\n btn = {show: btn};\n else if (!is.Undef(btn) && !is.Object(btn)) btn = {show: def};\n return btn;\n}\n\nexport default function extendApi(api, h) {\n extend(api, {\n formEl() {\n return h.$manager.form();\n },\n wrapEl(id) {\n const ctx = h.getFieldCtx(id);\n if (!ctx) return;\n return h.vm.$refs[ctx.wrapRef];\n },\n validate(callback) {\n return new Promise((resolve, reject) => {\n const forms = api.children;\n const all = [h.$manager.validate()];\n forms.forEach(v => {\n all.push(v.validate());\n })\n Promise.all(all).then(() => {\n resolve(true);\n callback && callback(true);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.$emit('validate-fail', e, {api});\n })\n });\n },\n validateField: (field, callback) => {\n return new Promise((resolve, reject) => {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n const sub = h.subForm[ctx.id];\n const all = [h.$manager.validateField(ctx.id)];\n toArray(sub).forEach(v => {\n all.push(v.validate().catch(() => {\n return Promise.reject('子表单验证未通过');\n }));\n })\n Promise.all(all).then(() => {\n resolve(null);\n callback && callback(null);\n }).catch((e) => {\n reject(e);\n callback && callback(e);\n h.vm.$emit('validate-field-fail', e, {field, api});\n })\n });\n },\n clearValidateState(fields, clearSub = true) {\n api.helper.tidyFields(fields).forEach(field => {\n if (clearSub) this.clearSubValidateState(field);\n h.getCtxs(field).forEach(ctx => {\n h.$manager.clearValidateState(ctx);\n });\n });\n },\n clearSubValidateState(fields) {\n api.helper.tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n const subForm = h.subForm[ctx.id];\n if (!subForm) return;\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.clearValidateState();\n })\n } else if (subForm) {\n subForm.clearValidateState();\n }\n });\n })\n },\n btn: {\n loading: (loading = true) => {\n api.submitBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.submitBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.submitBtnProps({show: !!isShow});\n }\n },\n resetBtn: {\n loading: (loading = true) => {\n api.resetBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.resetBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.resetBtnProps({show: !!isShow});\n }\n },\n submitBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.submitBtn, true);\n extend(btn, props);\n h.options.submitBtn = btn;\n api.refreshOptions();\n },\n resetBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.resetBtn, false);\n extend(btn, props);\n h.options.resetBtn = btn;\n api.refreshOptions();\n },\n submit(successFn, failFn) {\n api.validate((valid) => {\n if (valid) {\n let formData = api.formData();\n if (is.Function(successFn))\n invoke(() => successFn(formData, this));\n else {\n is.Function(h.options.onSubmit) && invoke(() => h.options.onSubmit(formData, this));\n h.vm.$emit('submit', formData, this);\n }\n } else {\n is.Function(failFn) && invoke(() => failFn(this, ...arguments));\n }\n });\n },\n });\n\n return api;\n}\n","import components from '../components';\nimport parsers from '../parsers';\nimport alias from './alias';\nimport manager from './manager';\nimport FormCreateFactory from '@form-create/core/src/index';\nimport makers from './maker';\nimport '../style/index.css';\nimport extendApi from './api';\n\nfunction install(FormCreate) {\n FormCreate.componentAlias(alias);\n\n components.forEach(component => {\n FormCreate.component(component.name, component);\n });\n\n parsers.forEach((parser) => {\n FormCreate.parser(parser);\n });\n\n Object.keys(makers).forEach(name => {\n FormCreate.maker[name] = makers[name];\n });\n}\n\nexport default function ivuFormCreate() {\n return FormCreateFactory({\n ui: `${process.env.UI}`,\n version: `${process.env.VERSION}`,\n manager,\n install,\n extendApi,\n attrs: {\n normal: ['col', 'wrap'],\n array: ['className'],\n key: ['title', 'info'],\n }\n });\n}\n","import ivuFormCreate from './core/index';\n\nconst FormCreate = ivuFormCreate();\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","mergeFn","reduce","indexOf","Array","e","concat","f","g","h","i","getSlot","slots","exclude","keys","lst","name","push","props","formCreateInject","type","required","value","watch","handler","update","deep","data","trueValue","methods","options","opt","isArray","onInput","n","$emit","filter","label","map","v","undefined","checked","option","created","render","prop","index","$slots","mounted","$refs","el","toArray","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","NAME","createFrame","config","String","field","helper","Boolean","disabled","src","icon","fileUpIcon","width","Number","height","maxLength","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","showModel","makeInput","_this","toString","readonly","clearable","makeGroup","children","makeBtn","makeItem","valid","Error","makeIcons","icons","makeHandleIcon","makeRemoveIcon","_this2","handleClick","_this3","handleRemove","makeFiles","_this4","fileIcon","size","makeImages","_this5","_this6","splice","frameLoad","iframe","api","_this7","set","get","fn","$on","onClose","console","log","makeFooter","$props","node","_this8","$nextTick","_this9","frame","contentWindow","mask","footerHide","closeModal","v2","initial","is","arg","Undef","Element","_typeof","nodeType","trueArray","getType","str","exec","empty","hasProperty","rule","k","forEach","t","functional","ctx","makeOption","slot","slotName","makeOptionGroup","treeData","setStatus","$forceUpdate","_data","$set","id","list","on","tree","parseFile","file","url","getFileName","split","pop","createUpload","uploadType","uploadList","cacheFiles","showUploadList","defaultFileList","upload","every","status","o","isDisabled","makeProgress","percent","percentage","hideInfo","$scopedSlots","vm","showProgress","makeUpload","isShow","display","imgUpIcon","files","handleCancel","$watch","target","Vue","$del","deepExtend","origin","mode","isArr","clone","nst","_clone","getRule","__json","__origin","__ctrl","deepCopy","extend","rules","expand","button","max","min","sortBtn","defaultValue","syncDisabled","onBeforeAdd","parse","len","cacheRule","cacheValue","sort","computed","formRule","immediate","item","$f","formData","deferSyncValue","setValue","once","expandRule","total","addRule","removeRule","_value","cache","JSON","stringify","input","form","coverValue","emit","copyRules","submitBtn","resetBtn","defVal","add$f","$delete","add","del","addIcon","delIcon","sortUpIcon","changeSort","sortDownIcon","makeIcon","_this10","btn","emitEvent","args","$form","Type","_this11","inFor","extendOption","checkbox","radio","select","group","getRuleInject","parent","$parent","$FormCreate","FormCreate","componentName","model","provide","$pfc","inject","subForm","destroyed","validate","renderRule","ctxInject","updateValue","isMore","formCreate","_refresh","_renderRule","_updateValue","forceCoverValue","initOptions","refresh","$handle","reloadRule","beforeCreate","$options","propsData","fapi","rmSubForm","sub","getSubForm","idx","addSubForm","mergeProps","objects","_normalMerge","_toArrayMerge","_functionalMerge","propsMerge","arrA","arrB","event","hook","fn1","fn2","keyAttrs","arrayAttrs","normalAttrs","format","msg","err","error","PREFIX","SUFFIX","$T","$TX","FUNCTION","toJson","obj","space","_isVue","__emit","makeFn","parseFn","trim","flag","replace","__inject","parseJson","json","enumerable","writable","configurable","copyRule","mergeRule","merge","array","normal","r","funcProxy","that","proxy","defineProperties","byCtx","__fc__","__origin__","invoke","def","logError","creatorFactory","init","maker","Creator","effect","hidden","appendProto","attrs","setProp","constructor","commonMaker","create","make","createTmp","template","makerFactory","factory","copy","toCase","lower","toLocaleUpperCase","toLowerCase","toLine","line","toLocaleLowerCase","substr","uniqueId","Math","random","Date","now","deepSet","to","Render","handle","fc","$manager","vNode","CreateNode","initCache","initRender","clearCacheAll","clearCache","use","setCache","vnode","getCache","useCache","tempList","clearOrgChildren","initOrgChildren","ctxs","orgChildren","parser","loadChildren","getTypeSlot","_fn","vn","$h","$createElement","beforeRender","renderList","renderSlot","renderName","renderId","renderField","container","renderCtx","makeVm","getInjectData","mergeGlobal","global","cacheConfig","originType","trueType","setOptions","optionsTo","setTempProps","injectProp","injectKeys","renderTemp","compile","warn","tip","parseSide","side","renderSides","temp","prefix","suffix","cacheFlag","_type","none","renderChildren","initProp","tidyRule","ctxProp","preview","makeWrap","custom","mergeProp","onMounted","exportEl","$el","__rule__","getFormData","callback","expression","isRm","child","rmCtx","defaultRender","component","makeComponent","alias","aliasMap","useRender","EVENT","RuleContext","wrapRef","linkOn","root","ctrlRule","payload","updateType","updateKey","effectData","clearEffectData","setParser","check","unwatch","un","unlink","link","appendLink","watchTo","watchCtx","rmCtrl","deleted","$render","$api","ctrl","rm","_rm","noWatch","updated","condition","findCtrl","isCtrl","strFn","toEmpty","BaseParser","toFormValue","toValue","formValue","noneKey","Handler","watching","loading","reloading","noWatchFn","deferSyncFn","isMounted","appendData","providers","cycleLoad","loadedId","nextTick","changeStatus","pageEnd","nextReload","lifecycle","bus","initData","manager","extendApi","tidyFields","fields","getCtxs","allSubForm","subs","getFieldCtx","appendValue","getValue","fieldCtx","removeField","getCtx","destroy","parentNode","removeChild","$destroy","append","after","prepend","state","hiddenStatus","displayStatus","all","nameCtx","bind","updateOptions","onSubmit","sync","refreshOptions","hideForm","hide","clearChangeStatus","updateRule","updateRules","mergeRules","setEffect","attr","updateValidate","updateValidates","validates","refreshValidate","resetFields","method","trigger","$once","nextRefresh","changeValue","changeField","Api","getBody","xhr","text","responseText","response","fetch","XMLHttpRequest","action","onerror","onError","onload","getError","onSuccess","open","dataType","FormData","setRequestHeader","withCredentials","headers","send","useProvider","usePage","loadRule","__init","parseInjectEvent","injectEvent","parseEventLst","parseEvent","parseEmit","emitPrefix","emitKey","eventName","eventInject","fieldKey","_inject","self","unshift","useInject","page","first","limit","ceil","parseInt","pageLoad","pageFn","clearNextTick","clearTimeout","bindNextTick","setTimeout","parseRule","_rule","fullRule","loadFn","loadCtrl","control","syncProp","pre","_loadRule","syncForm","isRepeat","ruleEffect","repeat","isCopy","isInit","bindParser","setCtx","_preIndex","preIndex","refreshUpdate","defineProperty","valueHandle","refreshControl","useCtrl","controls","getCtrl","handleFn","isHidden","hideLst","reverse","clearValidateState","ruleCon","ctrlCtx","_reloadRule","useLoader","setFlag","setFormData","syncValue","valueChange","isQuote","isChange","refreshRule","useInput","getNameCtx","setIdCtx","rmIdCtx","getParser","parsers","rmSub","watchEffect","useContext","_mounted","useLifecycle","ps","_c","p","components","arr","getComponent","onEffect","provider","used","_used","_ctx$rule","_ctx$rule$effect","emitEffect","getEffect","getProp","clearProp","useEffect","CreateNodeFactory","setVm","tag","isReservedTag","nativeOn","Node","domProps","innerHTML","context","nodes","createManager","proto","CustomManager","Manager","mergeOptionsRule","$r","mergeOptions","tidyOptions","getDefaultOptions","componentValidate","load","validator","$required","message","parseVal","_","run","parseOpt","body","beforeFetch","then","loaded","loadData","events","join","_vue","window","nameProp","_getEl","querySelector","mountForm","$vm","$data","$mount","instance","FormCreateFactory","fragment","directives","$provider","globalConfig","getApi","directive","register","componentAlias","base","formCreateParser","_emitData","setData","removeData","$vnode","install","_opt","inherit","_config","useAttr","version","ui","mount","remove","Handle","isSub","_installedFormCreate","$formCreate","html","timeStampToDate","timeStamp","date","startDate","isRange","includes","multiple","_toValue","formatDate","separator","parseDate","parseValue","time","datePicker","idate","autosize","minRows","rows","sliderRange","range","parseFloat","scopedSlots","col","span","row","slider","rate","cascader","colorPicker","timePicker","inputNumber","formItem","autoComplete","object","iviewConfig","resetBtnType","resetBtnIcon","infoIcon","tidy","isFalse","Promise","resolve","reject","validateField","fItem","validateMessage","validateState","show","tidyBool","info","wrap","placement","wordWrap","setSize","inline","labelPosition","labelWidth","showMessage","autocomplete","gutter","innerText","click","submit","preventDefault","className","makeFormBtn","makeRow","uni","isTitle","_col","makeInfo","makeCol","titleProp","infoProp","titleSlot","align","makeSubmitBtn","makeResetBtn","marginLeft","fApi","names","auto","number","color","useAlias","types","image","uploadFileOne","uploadImageOne","m","uploadImage","uploadFile","useUpload","useTree","selectMultiple","selectOne","useSelect","frameInputs","frameFiles","frameImages","frameInputOne","frameFileOne","frameImageOne","frameInput","frameFile","frameImage","useFrame","timeRange","useTimePicker","tidyBtnProp","formEl","wrapEl","forms","clearSub","clearSubValidateState","submitBtnProps","resetBtnProps","successFn","failFn","makers","process"],"mappings":"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"}