UNPKG

189 kBSource Map (JSON)View Raw
1{"version":3,"file":"form-create.min.js","sources":["../../../node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js","../../utils/src/index.js","../src/components/checkbox/index.jsx","../src/core/config.js","../../../node_modules/style-inject/dist/style-inject.es.js","../src/components/frame/index.jsx","../src/components/radio/index.jsx","../src/components/select/index.jsx","../src/components/tree/index.jsx","../src/components/upload/index.jsx","../../core/src/components/formCreate.js","../../core/src/core/mergeJsxProps.js","../../core/src/factory/vData.js","../../core/src/factory/creator.js","../../core/src/core/util.js","../../core/src/factory/maker.js","../../core/src/factory/vNode.js","../../core/src/factory/parser.js","../../core/src/core/render.js","../../core/src/core/api.js","../../core/src/core/handle.js","../../core/src/components/fragment.jsx","../../core/src/core/index.js","../../core/src/factory/form.js","../src/components/group/index.jsx","../src/components/index.js","../src/parsers/checkbox/parser.js","../src/parsers/checkbox/index.js","../src/parsers/datePicker/parser.js","../src/parsers/datePicker/index.js","../src/parsers/frame/parser.js","../src/parsers/frame/index.js","../src/parsers/hidden/index.js","../src/parsers/input/parser.js","../src/parsers/input/index.js","../src/parsers/radio/parser.js","../src/parsers/radio/index.js","../src/parsers/select/parser.js","../src/parsers/select/index.js","../src/parsers/slider/parser.js","../src/parsers/slider/index.js","../src/parsers/switch/parser.js","../src/parsers/switch/index.js","../src/parsers/tree/parser.js","../src/parsers/tree/index.js","../src/parsers/upload/parser.js","../src/parsers/upload/index.js","../src/parsers/index.js","../src/core/nodes.js","../src/core/form.js","../src/makers/datePicker.js","../src/makers/frame.js","../src/makers/input.js","../src/makers/select.js","../src/makers/slider.js","../src/makers/timePicker.js","../src/makers/tree.js","../src/makers/upload.js","../src/makers/index.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","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\nexport function isValidChildren(children) {\n return Array.isArray(children) && children.length > 0;\n}\n\nexport const _toString = Object.prototype.toString;\n\nexport function isUndef(v) {\n return v === undefined || v === null\n}\n\nexport function toString(val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\nexport function extend(to, _from) {\n for (var key in _from) {\n $set(to, key, _from[key]);\n }\n return to\n}\n\nexport function debounce(fn, wait) {\n var timeout = null;\n return function (...arg) {\n if (timeout !== null)\n clearTimeout(timeout);\n timeout = setTimeout(() => fn(...arg), wait);\n }\n}\n\nexport function isType(arg, type) {\n return _toString.call(arg) === '[object ' + type + ']'\n}\n\nexport function isDate(arg) {\n return isType(arg, 'Date');\n}\n\nexport function isPlainObject(arg) {\n return isType(arg, 'Object');\n}\n\nexport function isFunction(arg) {\n return isType(arg, 'Function');\n}\n\nexport function isString(arg) {\n return isType(arg, 'String');\n}\n\nexport function isBool(arg) {\n return isType(arg, 'Boolean');\n}\n\nexport function toLine(name) {\n let line = name.replace(/([A-Z])/g, '-$1').toLowerCase();\n if (line.indexOf('-') === 0)\n line = line.substr(1);\n return line;\n}\n\nexport function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n)\n}\n\nexport function toArray(value) {\n return Array.isArray(value)\n ? value\n : ((isUndef(value) || value === '' ? [] : [value])\n );\n}\n\nexport function isElement(arg) {\n return typeof arg === 'object' && arg !== null && arg.nodeType === 1 && !isPlainObject(arg)\n}\n\nexport 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)) || isPlainObject(clone)) {\n let nst = origin[key] === undefined;\n if (isArr) {\n isArr = false;\n nst && $set(origin, key, []);\n } else if (clone._clone) {\n clone = clone._clone();\n if (mode) {\n clone = clone.getRule();\n nst && $set(origin, key, {});\n } else {\n $set(origin, key, clone);\n continue;\n }\n } else {\n nst && $set(origin, key, {});\n }\n deepExtend(origin[key], clone, mode);\n } else {\n $set(origin, key, clone);\n }\n }\n }\n return origin\n}\n\nexport function deepExtendArgs(origin, ...lst) {\n lst.forEach(target => {\n origin = deepExtend(origin, target);\n });\n return origin;\n}\n\nlet id = 0;\n\nexport function uniqueId() {\n return ++id\n}\n\nexport function toDefSlot(slot, $h) {\n return [slot && isFunction(slot) ? slot($h) : slot]\n}\n\n\nexport function timeStampToDate(timeStamp) {\n if (isDate(timeStamp))\n return timeStamp;\n else {\n let date = new Date(timeStamp);\n return date.toString() === 'Invalid Date' ? timeStamp : date;\n }\n}\n\nexport function preventDefault(e) {\n e.preventDefault();\n}\n\nexport function dateFormat(fmt, date = new Date) {\n let o = {\n 'M+': date.getMonth() + 1,\n 'd+': date.getDate(),\n 'h+': date.getHours(),\n 'm+': date.getMinutes(),\n 's+': date.getSeconds(),\n 'q+': Math.floor((date.getMonth() + 3) / 3),\n 'S': date.getMilliseconds()\n };\n if (/(y+)/.test(fmt))\n fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));\n for (let k in o)\n if (new RegExp('(' + k + ')').test(fmt))\n fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1)\n ? (o[k])\n : (('00' + o[k]).substr(('' + o[k]).length)));\n return fmt\n}\n\nexport function hasSlot(children, slotName) {\n return children.length !== 0 && children.some(child => {\n if (child.data) {\n if ((!child.data.slot && slotName === 'default') || (child.data.slot === slotName))\n return true;\n } else if (slotName === 'default')\n return true;\n return false;\n })\n}\n\nexport function errMsg(i) {\n\n return '\\n\\x67\\x69\\x74\\x68\\x75\\x62\\x3a\\x68\\x74\\x74\\x70' +\n '\\x73\\x3a\\x2f\\x2f\\x67\\x69\\x74\\x68\\x75\\x62\\x2e\\x63\\x6f' +\n '\\x6d\\x2f\\x78\\x61\\x62\\x6f\\x79\\x2f\\x66\\x6f\\x72\\x6d\\x2d' +\n '\\x63\\x72\\x65\\x61\\x74\\x65\\n\\x64\\x6f\\x63\\x75\\x6d\\x65' +\n '\\x6e\\x74\\x3a\\x68\\x74\\x74\\x70\\x3a\\x2f\\x2f\\x77\\x77\\x77' +\n '\\x2e\\x66\\x6f\\x72\\x6d\\x2d\\x63\\x72\\x65\\x61\\x74\\x65\\x2e' +\n '\\x63\\x6f\\x6d' + (i || '');\n}\n","import {uniqueId} from '@form-create/utils';\n\nconst NAME = 'fc-ivu-checkbox';\n\nexport default {\n name: NAME,\n props: {\n options: {\n type: Array,\n default: () => []\n },\n children: {\n type: Array,\n default: () => []\n },\n ctx: {\n type: Object,\n default: () => ({})\n },\n value: {\n type: Array,\n default: () => []\n },\n },\n watch: {\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: [],\n unique: uniqueId()\n }\n },\n methods: {\n onInput(n) {\n this.$emit('input', this.options.filter((opt) => n.indexOf(opt.label) !== -1).map((opt) => opt.value));\n },\n update() {\n this.trueValue = this.value ? this.options.filter((opt) => this.value.indexOf(opt.value) !== -1)\n .map((option) => option.label) : [];\n }\n },\n created() {\n this.update();\n },\n render() {\n return <CheckboxGroup {...this.ctx} v-model={this.trueValue}\n on-input={this.onInput}>{this.options.map((opt, index) => {\n const props = {...opt};\n delete props.value;\n return <Checkbox {...{props}} key={NAME + index + this.unique}/>\n }).concat(this.chlidren)}</CheckboxGroup>\n }\n}\n","import iview from 'iview';\n\n\nexport const iview2 = {\n _v: 2,\n resetBtnType: 'ghost',\n resetBtnIcon: 'refresh',\n submitBtnIcon: 'ios-upload',\n fileIcon: 'document-text',\n fileUpIcon: 'folder',\n imgUpIcon: 'image',\n infoIcon: 'ios-information-outline',\n removeIcon:'ios-minus-outline',\n addIcon:'ios-plus-outline',\n};\n\nexport const iview3 = {\n _v: 3,\n resetBtnType: 'default',\n resetBtnIcon: 'md-refresh',\n submitBtnIcon: 'ios-share',\n fileIcon: 'md-document',\n fileUpIcon: 'ios-folder-open',\n imgUpIcon: 'md-images',\n infoIcon: 'ios-information-circle-outline',\n removeIcon:'ios-remove-circle-outline',\n addIcon:'ios-add-circle-outline',\n};\n\nexport const iviewConfig = (function () {\n if (typeof iview === 'undefined') return iview2;\n return (iview.version && iview.version.split('.')[0] > 2) ? iview3 : iview2;\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 type: undefined,\n align: undefined,\n justify: undefined,\n className: undefined\n },\n info: {\n type: 'poptip',\n trigger: 'hover',\n placement: 'top-start',\n wordWrap: true,\n icon: iviewConfig.infoIcon\n },\n submitBtn: {\n type: 'primary',\n size: 'large',\n shape: undefined,\n long: true,\n htmlType: 'button',\n disabled: false,\n icon: iviewConfig.submitBtnIcon,\n innerText: '提交',\n loading: false,\n show: true,\n col: undefined,\n click: undefined,\n },\n resetBtn: {\n type: iviewConfig.resetBtnType,\n size: 'large',\n shape: undefined,\n long: true,\n htmlType: 'button',\n disabled: false,\n icon: iviewConfig.resetBtnIcon,\n innerText: '重置',\n loading: false,\n show: false,\n col: undefined,\n click: undefined,\n },\n };\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import {iviewConfig} from '../../core/config';\nimport style from '../../style/index.css';\nimport {isUndef, toArray, uniqueId} from '@form-create/utils';\n\nconst NAME = 'fc-ivu-frame';\n\nexport default {\n name: NAME,\n props: {\n type: {\n type: String,\n default: 'input'\n },\n field: {\n type: String,\n default: ''\n },\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: iviewConfig.fileUpIcon\n },\n width: {\n type: [Number, String],\n default: 500\n },\n height: {\n type: [Number, String],\n default: 370\n },\n maxLength: {\n type: Number,\n default: 0\n },\n okBtnText: {\n type: String,\n default: '确定'\n },\n closeBtnText: {\n type: String,\n default: '关闭'\n },\n modalTitle: String,\n handleIcon: {\n type: [String, Boolean],\n default: undefined\n },\n title: String,\n allowRemove: {\n type: Boolean,\n default: true\n },\n onOpen: {\n type: Function,\n default: () => {\n }\n },\n onOk: {\n type: Function,\n default: () => {\n }\n },\n onCancel: {\n type: Function,\n default: () => {\n }\n },\n onLoad: {\n type: Function,\n default: () => {\n }\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onRemove: {\n type: Function,\n default: () => {\n }\n },\n onHandle: {\n type: Function,\n default(src) {\n this.previewImage = this.getSrc(src);\n this.previewVisible = true;\n }\n },\n modal: {\n type: Object,\n default: () => ({})\n },\n srcKey: {\n type: [String, Number]\n },\n value: [Array, String, Number, Object],\n previewMask: undefined,\n footer: {\n type: Boolean,\n default: true\n },\n reload: {\n type: Boolean,\n default: true\n },\n closeBtn: {\n type: Boolean,\n default: true\n },\n okBtn: {\n type: Boolean,\n default: true\n },\n\n },\n data() {\n return {\n fileList: toArray(this.value),\n unique: uniqueId(),\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('on-change', val);\n },\n src(n) {\n this.modalVm && (this.modalVm.src = n);\n }\n },\n methods: {\n key(unique) {\n return NAME + unique + this.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 class={style['fc-upload']} key={this.key('group')}>{...children}</div>\n },\n\n makeItem(index, children) {\n return <div class={style['fc-files']} key={this.key('file' + index)}>{...children}</div>;\n },\n valid(field) {\n if (field !== this.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={style['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: iviewConfig.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={style['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 if (this.disabled) return;\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 isUndef(this.srcKey) ? src : src[this.srcKey];\n },\n frameLoad(iframe) {\n this.onLoad(iframe);\n try {\n if (this.helper === true) {\n iframe['form_create_helper'] = {\n close: (field) => {\n this.valid(field);\n this.closeModel();\n },\n set: (field, value) => {\n this.valid(field);\n if (!this.disabled)\n this.$emit('input', value);\n\n },\n get: (field) => {\n this.valid(field);\n return this.value;\n },\n onOk: fn => this.$on('$ok', fn),\n onClose: fn => this.$on('$close', fn)\n };\n\n }\n } catch (e) {\n console.log(e);\n }\n },\n makeFooter() {\n const {okBtnText, closeBtnText, closeBtn, okBtn, footer} = this.$props;\n 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>{node}\n <Modal mask={this.previewMask} title={modalTitle} v-model={this.previewVisible} footerHide={true}>\n <img alt=\"example\" 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}\n","import {uniqueId} from '@form-create/utils';\n\nconst NAME = 'fc-ivu-radio';\n\nexport default {\n name: NAME,\n functional: true,\n props: {\n options: {\n type: Array,\n default: () => ([])\n },\n unique: {\n default: () => uniqueId()\n },\n },\n render(h, ctx) {\n return <RadioGroup {...ctx.data}>{ctx.props.options.map((opt, index) => {\n const props = {...opt};\n delete props.value;\n return <Radio {...{props}} key={NAME + index + ctx.props.unique}/>\n }).concat(ctx.chlidren)}</RadioGroup>\n }\n}\n","import {toDefSlot, uniqueId} from '@form-create/utils';\n\nconst NAME = 'fc-ivu-select';\n\nexport default {\n name: NAME,\n functional: true,\n props: {\n options: {\n type: Array,\n default: () => ([])\n },\n unique: {\n default: () => uniqueId()\n },\n },\n render(h, ctx) {\n return <Select {...ctx.data}>{ctx.props.options.map((props, index) => {\n\n const slot = props.slot ? toDefSlot(props.slot, h) : [];\n\n return <Option {...{props}}\n key={NAME + index + ctx.props.unique}>{slot}</Option>\n }).concat(ctx.chlidren)}</Select>;\n }\n}\n","import {toArray} from '@form-create/utils';\n\n\nexport default {\n name: 'fc-ivu-tree',\n props: {\n ctx: {\n type: Object,\n default: () => ({props: {}})\n },\n children: {\n type: Array,\n default: () => ([])\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 methods: {\n setStatus(value) {\n const n = toArray(value);\n const data = this.$refs.tree.data;\n this.type === 'selected' ? this.selected(data, n) : this.checked(data, n);\n },\n selected(_data, value) {\n _data.forEach((node) => {\n this.$set(node, 'selected', value.indexOf(node.id) !== -1);\n if (node.children !== undefined && Array.isArray(node.children))\n this.selected(node.children, value);\n });\n },\n checked(_data, value) {\n _data.forEach((node) => {\n this.$set(node, 'checked', value.indexOf(node.id) !== -1);\n if (node.children !== undefined && Array.isArray(node.children))\n this.checked(node.children, value);\n });\n },\n makeTree() {\n return <Tree ref=\"tree\" {...this.ctx}>{this.children}</Tree>;\n },\n updateTreeData() {\n const type = (this.type).toLocaleLowerCase();\n\n if (type === 'selected')\n this.treeData = this.$refs.tree.getSelectedNodes();\n else\n this.treeData = this.$refs.tree.getCheckedNodes();\n this.$emit('input', this.treeData.map(node => node.id));\n }\n },\n render() {\n return this.makeTree();\n },\n mounted() {\n this.$nextTick(() => {\n this.setStatus(this.value);\n this.$watch(() => this.$refs.tree.flatState, () => this.updateTreeData())\n })\n\n }\n}\n","import {iviewConfig} from '../../core/config';\nimport {hasSlot, toArray, toString, uniqueId} from '@form-create/utils';\nimport style from '../../style/index.css';\n\nfunction parseFile(file) {\n return {\n url: file,\n name: getFileName(file)\n };\n}\n\nfunction getFileName(file) {\n return toString(file).split('/').pop()\n}\n\nconst NAME = 'fc-ivu-upload';\n\n\nexport default {\n name: NAME,\n\n props: {\n ctx: {\n type: Object,\n default: () => ({props: {}})\n },\n children: {\n type: Array,\n default: () => ([])\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: [String, Boolean],\n previewMask: undefined,\n value: [Array, String]\n },\n data() {\n return {\n uploadList: [],\n unique: uniqueId(),\n previewVisible: false,\n previewImage: ''\n }\n },\n created() {\n if (this.ctx.props.showUploadList === undefined)\n this.ctx.props.showUploadList = false;\n this.ctx.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 NAME + unique + this.unique;\n },\n isDisabled() {\n return this.ctx.props.disabled === true;\n },\n onRemove(file) {\n if (this.isDisabled()) return;\n this.$refs.upload.handleRemove(file);\n },\n handleClick(file) {\n if (this.isDisabled()) return;\n this.onHandle(file);\n },\n\n makeDefaultBtn() {\n return <div class={style['fc-upload-btn']}>\n <icon props={{\n type: this.uploadType === 'file' ? 'ios-cloud-upload-outline' : iviewConfig.imgUpIcon,\n size: 20\n }}/>\n </div>\n },\n makeItem(file, index) {\n return this.uploadType === 'image'\n ? <img src={file.url} key={this.key('img' + index)}/>\n : <icon props={{type: iviewConfig.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)} 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={style['fc-upload-cover']}>{icons}</div>;\n }\n },\n\n makeFiles() {\n return this.uploadList.map((file, index) => <div key={this.key(index)}\n class={style['fc-files']}>{file.showProgress ? this.makeProgress(file, index) : [this.makeItem(file, index), this.makeIcons(file, index)]}</div>);\n },\n makeUpload() {\n return <Upload ref=\"upload\"\n style={{display: 'inline-block'}} {...this.ctx}\n key={this.key('upload')}>{this.children}</Upload>;\n },\n initChildren() {\n if (!hasSlot(this.children, 'default'))\n this.children.push(this.makeDefaultBtn());\n },\n update() {\n let files = this.$refs.upload.fileList.map((file) => file.url).filter((url) => url !== undefined);\n this.$emit('input', this.maxLength === 1 ? (files[0] || '') : files);\n },\n handleCancel() {\n this.previewVisible = false;\n },\n },\n render() {\n const isShow = (!this.maxLength || this.maxLength > this.uploadList.length);\n\n if (this.$refs.upload) {\n if (this.ctx.props.showUploadList === undefined)\n this.ctx.props.showUploadList = this.$refs.upload.showUploadList;\n this.ctx.props.defaultFileList = this.$refs.upload.defaultFileList;\n }\n\n this.initChildren();\n\n return (\n <div class={{\n [style['fc-upload']]: true,\n [style['fc-hide-btn']]: !isShow\n }}>{[this.ctx.props.showUploadList ? [] : this.makeFiles(), this.makeUpload()]}\n <Modal mask={this.previewMask} title={this.modalTitle} v-model={this.previewVisible} 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 }\n}\n","import {deepExtend} from '@form-create/utils';\n\nexport const formCreateName = 'FormCreate';\n\nexport default function $FormCreate(FormCreate, components) {\n return {\n name: formCreateName,\n componentName: formCreateName,\n props: {\n rule: {\n type: Array,\n required: true\n },\n option: {\n type: Object,\n default: () => {\n return {};\n },\n required: false\n },\n value: Object\n },\n data: () => {\n return {\n formData: undefined,\n buttonProps: undefined,\n resetProps: undefined,\n $f: undefined,\n isShow: true,\n unique: 1,\n };\n },\n components,\n render() {\n return this.formCreate.render();\n },\n methods: {\n _buttonProps(props) {\n this.$set(this, 'buttonProps', deepExtend(this.buttonProps, props));\n },\n _resetProps(props) {\n this.$set(this, 'resetProps', deepExtend(this.resetProps, props));\n },\n _refresh() {\n ++this.unique;\n }\n },\n watch: {\n option: '_refresh',\n rule(n) {\n this.formCreate.handle.reloadRule(n);\n }\n },\n beforeCreate() {\n const {rule, option} = this.$options.propsData;\n this.formCreate = new FormCreate(rule, option);\n this.formCreate.beforeCreate(this);\n },\n created() {\n this.formCreate.created();\n this.$f = this.formCreate.api();\n this.$emit('input', this.$f);\n },\n mounted() {\n this.formCreate.mounted();\n this.$emit('input', this.$f);\n },\n beforeDestroy() {\n this.formCreate.handle.reloadRule([]);\n this.formCreate.handle.$render.clearCacheAll();\n },\n }\n}\n","const normalMerge = ['attrs', 'props', 'domProps'];\nconst toArrayMerge = ['class', 'style', 'directives'];\nconst functionalMerge = ['on', 'nativeOn'];\n\nconst mergeJsxProps = (objects, initial) =>\n objects.reduce((a, b) => {\n for (const key in b) {\n if (a[key]) {\n 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 a[key] = b[key]\n }\n }\n return a\n }, initial);\n\nconst mergeFn = (fn1, fn2) =>\n function () {\n fn1 && fn1.apply(this, arguments);\n fn2 && fn2.apply(this, arguments);\n };\n\nexport default mergeJsxProps\n","import {isPlainObject, isUndef, toString} from '@form-create/utils';\nimport mergeJsxProps from '../core/mergeJsxProps';\n\nfunction defVData() {\n return {\n // class: {},\n // style: {},\n // attrs: {},\n props: {},\n // domProps: {},\n on: {},\n // nativeOn: {},\n // directives: [],\n // scopedSlots: {},\n // slot: undefined,\n // key: undefined,\n // ref: undefined\n };\n}\n\nexport default class VData {\n\n constructor() {\n this.init();\n }\n\n merge(props) {\n mergeJsxProps([props], this._data);\n return this;\n }\n\n class(classList, status = true) {\n if (isUndef(classList)) return this;\n\n if (Array.isArray(classList)) {\n this.merge({class: classList});\n } else if (isPlainObject(classList)) {\n this.merge(classList);\n } else {\n this.merge({class: {[toString(classList)]: !!status}});\n }\n\n return this;\n }\n\n init() {\n this._data = defVData();\n return this;\n }\n\n get() {\n const data = Object.keys(this._data).reduce((initial, key) => {\n const value = this._data[key];\n if (value === undefined) return initial;\n if (Array.isArray(value) && !value.length) return initial;\n if (isPlainObject(value) && !Object.keys(value).length && key !== 'props') return initial;\n\n initial[key] = value;\n return initial;\n }, {});\n this.init();\n return data;\n }\n}\n\nconst keyList = ['ref', 'key', 'slot'];\nconst objList = ['scopedSlots', 'nativeOn', 'on', 'domProps', 'props', 'attrs', 'style', 'directives'];\n\nkeyList.forEach(key => {\n VData.prototype[key] = function (val) {\n this.merge({[key]: val});\n return this;\n };\n});\n\nobjList.forEach(key => {\n VData.prototype[key] = function (obj, val) {\n if (isUndef(obj)) return this;\n if (isPlainObject(obj)) {\n this.merge({[key]: obj})\n } else {\n this.merge({[key]: {[toString(obj)]: val}})\n }\n\n return this;\n };\n});\n\nexport const vdataField = objList.concat(keyList, 'class');\n","import {$set, deepExtend, extend, isFunction, isPlainObject} from '@form-create/utils';\nimport VData from './vData';\n\nfunction baseRule() {\n return {\n validate: [],\n options: [],\n col: {},\n children: [],\n control: [],\n emit: [],\n template: undefined,\n emitPrefix: undefined,\n native: undefined,\n info: undefined,\n };\n}\n\nexport function creatorFactory(name) {\n return (title, field, value, props = {}) => new Creator(name, title, field, value, props);\n}\n\nexport function creatorTypeFactory(name, type, typeName = 'type') {\n return (title, field, value, props = {}) => {\n const maker = new Creator(name, title, field, value, props);\n if (isFunction(type)) type(maker);\n else maker.props(typeName, type);\n return maker;\n };\n}\n\nexport default class Creator extends VData {\n constructor(type, title, field, value, props = {}) {\n super();\n extend(this._data, baseRule());\n extend(this._data, {type, title, field, value});\n if (isPlainObject(props)) this.props(props);\n }\n\n type(type) {\n this.props('type', type);\n return this;\n }\n\n _clone() {\n const clone = new this.constructor();\n clone._data = deepExtend({}, this._data);\n return clone;\n }\n\n getRule() {\n return this._data;\n }\n\n event(...args) {\n this.on(...args);\n return this;\n }\n}\n\nconst keyAttrs = ['emitPrefix', 'className', 'value', 'name', 'title', 'native', 'info', 'hidden', 'visibility', 'inject', 'model'];\n\nkeyAttrs.forEach(attr => {\n Creator.prototype[attr] = function (value) {\n $set(this._data, attr, value);\n return this;\n };\n});\n\nconst objAttrs = ['col'];\n\nobjAttrs.forEach(attr => {\n Creator.prototype[attr] = function (opt) {\n $set(this._data, attr, extend(this._data[attr], opt));\n return this;\n };\n});\n\nconst arrAttrs = ['validate', 'options', 'children', 'emit', 'control'];\n\narrAttrs.forEach(attr => {\n Creator.prototype[attr] = function (opt) {\n if (!Array.isArray(opt)) opt = [opt];\n $set(this._data, attr, this._data[attr].concat(opt));\n return this;\n };\n});\n","import {deepExtend, isUndef} from '@form-create/utils';\n\nconst PREFIX = '[[FORM-CREATE-PREFIX-';\nconst SUFFIX = '-FORM-CREATE-SUFFIX]]';\n\nexport function toJson(obj) {\n return JSON.stringify(deepExtend([], obj, true), function (key, val) {\n if (val && val._isVue === true)\n return undefined;\n\n if (typeof val !== 'function') {\n return val;\n }\n if (val.__inject)\n val = val.__origin;\n\n if (val.__emit)\n return undefined;\n\n return PREFIX + val + SUFFIX;\n });\n}\n\nfunction makeFn(fn) {\n return eval('(function(){return ' + fn + ' })()')\n}\n\nexport function parseJson(json, mode) {\n return JSON.parse(json, function (k, v) {\n if (isUndef(v) || !v.indexOf) return v;\n try {\n if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {\n v = v.replace(SUFFIX, '').replace(PREFIX, '');\n return makeFn(v.indexOf('function') === -1 && v.indexOf('(') !== 0 ? 'function ' + v : v);\n } else if (!mode && v.indexOf('function') > -1)\n return makeFn(v)\n } catch (e) {\n console.error(`[form-create]解析失败:${v}`);\n return undefined;\n }\n return v;\n });\n}\n\nexport function enumerable(value) {\n return {\n value,\n enumerable: false,\n configurable: false\n }\n}\n\nexport function copyRule(rule, mode) {\n return copyRules([rule], mode)[0];\n}\n\nexport function copyRules(rules, mode) {\n return deepExtend([], rules, mode);\n}\n","import Creator, {creatorFactory} from './creator';\nimport {parseJson, enumerable} from '../core/util';\nimport {extend, isPlainObject, isString, isValidChildren} from '@form-create/utils';\n\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 let maker = {};\n\n extend(maker, {\n create,\n createTmp\n });\n maker.template = createTmp;\n maker.parse = parse;\n\n return maker;\n}\n\nfunction parse(rule, toMaker = false) {\n if (isString(rule)) rule = parseJson(rule);\n\n if (rule instanceof Creator) return toMaker ? rule : rule.getRule();\n if (isPlainObject(rule)) {\n const maker = ruleToMaker(rule);\n return toMaker ? maker : maker.getRule();\n } else if (!Array.isArray(rule)) return rule;\n else {\n const rules = rule.map(r => parse(r, toMaker));\n Object.defineProperties(rules, {\n find: enumerable(findField),\n model: enumerable(model)\n });\n\n return rules;\n }\n}\n\nfunction findField(field, origin) {\n let children = [];\n for (let i in this) {\n const rule = this[i] instanceof Creator ? this[i]._data : this[i];\n if (rule.field === field) return origin === true ? rule : this[i];\n if (isValidChildren(rule.children)) children = children.concat(rule.children);\n }\n if (children.length > 0) return findField.call(children, field);\n}\n\nfunction model(formData) {\n Object.keys(formData).forEach(field => {\n const rule = this.find(field, true);\n if (rule) rule.value = formData[field];\n });\n}\n\nfunction ruleToMaker(rule) {\n const maker = new Creator();\n Object.keys(rule).forEach(key => {\n maker._data[key] = rule[key];\n });\n return maker;\n}\n","import {isFunction, isString, toString} from '@form-create/utils';\n\nfunction parseVData(data) {\n if (isString(data))\n data = {domProps: {innerHTML: data}};\n else if (data && isFunction(data.get))\n data = data.get();\n\n return data;\n}\n\nfunction getVNode(VNode) {\n return isFunction(VNode) ? VNode() : (VNode || []);\n}\n\nexport default class VNode {\n\n constructor(vm) {\n if (vm)\n this.setVm(vm);\n }\n\n setVm(vm) {\n this.vm = vm;\n this.$h = vm.$createElement;\n }\n\n make(nodeName, data, VNodeFn) {\n let Node = this.$h(nodeName, parseVData(data), getVNode(VNodeFn));\n Node.context = this.vm;\n\n return Node;\n }\n\n static use(nodes) {\n Object.keys(nodes).forEach((k) => {\n VNode.prototype[toString(k).toLocaleLowerCase()] = VNode.prototype[k] = function (data, VNodeFn) {\n return this.make(nodes[k], data, VNodeFn);\n };\n });\n }\n}\n\nVNode.use({fragment: 'fcFragment'});\n","import VData from './vData';\nimport {toString, uniqueId} from '@form-create/utils';\nimport VNode from './vNode';\n\nexport default class BaseParser {\n\n constructor(handle, rule, id) {\n this.rule = rule;\n this.vData = new VData;\n this.vNode = new VNode();\n this.id = id;\n this.watch = [];\n this.originType = rule.type;\n this.type = toString(rule.type).toLocaleLowerCase();\n this.isDef = true;\n this.el = undefined;\n\n if (!rule.field) {\n this.field = '_def_' + uniqueId();\n this.isDef = false;\n } else {\n this.field = rule.field;\n }\n this.name = rule.name;\n\n this.key = 'key_' + id;\n this.refName = '__' + this.field + this.id;\n this.formItemRefName = 'fi' + this.refName;\n this.root = [];\n this.ctrlRule = null;\n this.modelEvent = 'input';\n this.parent = null;\n\n this.update(handle);\n this.init();\n }\n\n update(handle) {\n this.$handle = handle;\n this.$render = handle.$render;\n this.vm = handle.vm;\n this.options = handle.options;\n this.vNode.setVm(this.vm);\n this.deleted = false;\n }\n\n init() {\n }\n\n toFormValue(value) {\n return value\n }\n\n toValue(formValue) {\n return formValue;\n }\n}\n","import {_vue as Vue} from './index';\nimport {debounce, errMsg, isFunction, isString, isUndef, isValidChildren} from '@form-create/utils';\nimport VNode from '../factory/vNode';\nimport VData, {vdataField} from '../factory/vData';\n\n\nconst $de = debounce((fn) => fn(), 1);\n\nexport default class Render {\n constructor(handle) {\n this.$handle = handle;\n this.fc = handle.fc;\n this.vm = handle.vm;\n this.options = handle.options;\n this.$form = handle.$form;\n this.vNode = new VNode(this.vm);\n this.vData = new VData();\n this.cache = {};\n this.renderList = {};\n }\n\n clearCache(parser, clear = true) {\n if (!this.cache[parser.id]) return;\n if (this.cacheStatus(parser))\n this.$handle.refresh();\n const parent = this.cache[parser.id].parent;\n this.cache[parser.id] = null;\n if (parent && clear)\n this.clearCache(parent, clear);\n }\n\n clearCacheAll() {\n this.cache = {};\n }\n\n setCache(parser, vnode, parent) {\n this.cache[parser.id] = {\n vnode,\n use: false,\n parent\n };\n }\n\n cacheStatus(parser) {\n return this.cache[parser.id] && (this.cache[parser.id].use === true || this.cache[parser.id].parent);\n }\n\n getCache(parser) {\n const cache = this.cache[parser.id];\n cache.use = true;\n return cache.vnode;\n }\n\n initOrgChildren() {\n const parsers = this.$handle.parsers;\n this.orgChildren = Object.keys(parsers).reduce((initial, id) => {\n const children = parsers[id].rule.children;\n initial[id] = isValidChildren(children) ? [...children] : [];\n\n return initial;\n }, {});\n }\n\n run() {\n if (!this.vm.isShow)\n return;\n\n this.$form.beforeRender();\n\n const vn = this.$handle.sortList.map((id) => {\n return this.renderParser(this.$handle.parsers[id]);\n }).filter((val) => val !== undefined);\n\n return this.$form.render(vn);\n }\n\n setGlobalConfig(parser) {\n if (!this.options.global) return;\n const global = this.options.global;\n\n if (global['*']) {\n this.toData(parser, global['*']);\n }\n if (global[parser.type]) {\n this.toData(parser, global[parser.type]);\n } else if (global[parser.originType]) {\n this.toData(parser, global[parser.originType]);\n }\n }\n\n renderTemplate(parser) {\n const {id, rule, key} = parser;\n if (isUndef(Vue.compile)) {\n console.error('使用的 Vue 版本不支持 compile' + errMsg());\n return [];\n }\n\n if (!this.renderList[id]) {\n let vm = rule.vm;\n if (isUndef(rule.vm))\n vm = new Vue;\n else if (isFunction(rule.vm))\n vm = rule.vm(this.$handle.getInjectData(rule));\n\n this.renderList[id] = {\n vm,\n template: Vue.compile(rule.template)\n };\n\n }\n\n const {vm, template} = this.renderList[id];\n\n setTemplateProps(vm, parser, this.$handle.fCreateApi);\n\n vm.$off('input');\n vm.$on('input', (value) => {\n this.onInput(parser, value);\n });\n\n const vn = template.render.call(vm);\n\n if (isUndef(vn.data)) vn.data = {};\n vn.key = key;\n return vn;\n }\n\n renderParser(parser, parent) {\n if (parser.type === 'hidden') return;\n if (!this.cache[parser.id] || parser.type === 'template') {\n\n parser.vData.get();\n this.setGlobalConfig(parser);\n\n let {type, rule} = parser, form = this.$form, vn;\n\n if (type === 'template' && rule.template) {\n vn = this.renderTemplate(parser);\n\n if (parent && isUndef(rule.native)) {\n this.setCache(parser, vn, parent);\n return vn;\n }\n } else if (!this.$handle.isNoVal(parser)) {\n const children = this.renderChildren(parser);\n vn = parser.render ? parser.render(children) : this.defaultRender(parser, children);\n } else {\n vn = this.defaultRender(parser, this.renderChildren(parser));\n if (parent && isUndef(rule.native)) {\n this.setCache(parser, vn, parent);\n return vn;\n }\n }\n if (rule.native !== true)\n vn = form.container(vn, parser);\n this.setCache(parser, vn, parent);\n return vn;\n }\n\n return this.getCache(parser);\n }\n\n toData(parser, data) {\n vdataField.forEach((key) => {\n if (data[key] !== undefined)\n parser.vData[key](data[key]);\n });\n\n return parser.vData;\n }\n\n parserToData(parser) {\n return this.toData(parser, parser.rule);\n }\n\n inputVData(parser, custom) {\n const {refName, key} = parser;\n\n this.parserToData(parser);\n\n let data = parser.vData\n .ref(refName).key('fc_item' + key).props('formCreate', this.$handle.fCreateApi)\n .on('fc.subForm', (subForm) => this.$handle.addSubForm(parser, subForm));\n\n const model = this.$handle.modelEvent(parser);\n if (!custom)\n data.on(model.event || model, (value) => {\n this.onInput(parser, value);\n }).props(model.prop || 'value', this.$handle.getFormData(parser));\n\n this.$form.inputVData && this.$form.inputVData(parser, custom);\n\n return data;\n }\n\n onInput(parser, value) {\n this.$handle.onInput(parser, value);\n }\n\n renderChildren(parser) {\n const {children} = parser.rule, orgChildren = this.orgChildren[parser.id];\n\n if (!isValidChildren(children)) {\n orgChildren.forEach(child => {\n if (!isString(child) && child.__fc__) {\n this.$handle.removeField(child.__fc__);\n }\n });\n this.orgChildren[parser.id] = [];\n return [];\n }\n\n this.orgChildren[parser.id].forEach(child => {\n if (children.indexOf(child) === -1 && !isString(child) && child.__fc__) {\n this.$handle.removeField(child.__fc__);\n }\n });\n\n return children.map(child => {\n if (isString(child)) return child;\n if (child.__fc__) {\n return this.renderParser(child.__fc__, parser);\n }\n if (!this.$handle.isset(child) && child.type)\n $de(() => this.$handle.reloadRule());\n });\n\n }\n\n defaultRender(parser, children) {\n const vdata = this.inputVData(parser);\n if (this.vNode[parser.type])\n return this.vNode[parser.type](vdata, children);\n if (this.vNode[parser.originType])\n return this.vNode[parser.originType](vdata, children);\n return this.vNode.make(parser.originType, vdata, children);\n }\n}\n\nfunction setTemplateProps(vm, parser, fApi) {\n if (!vm.$props)\n return;\n const {rule} = parser;\n const keys = Object.keys(vm.$props);\n keys.forEach(key => {\n if (rule.props[key] !== undefined)\n vm.$props[key] = rule.props[key];\n });\n\n if (keys.indexOf('value') !== -1) {\n vm.$props.value = parser.rule.value;\n }\n vm.$props.formCreate = fApi;\n}\n","import {$set, deepExtend, errMsg, isFunction, isPlainObject, isUndef} from '@form-create/utils';\nimport {toJson} from './util';\n\n\nexport default function Api(h) {\n\n function tidyFields(fields, all = false) {\n if (!fields)\n fields = all ? Object.keys(h.fieldList) : h.fields();\n else if (!Array.isArray(fields))\n fields = [fields];\n return fields;\n }\n\n return {\n formData() {\n const parsers = h.fieldList;\n\n return Object.keys(parsers).reduce((initial, id) => {\n const parser = parsers[id];\n initial[parser.field] = deepExtend({}, {value: parser.rule.value}).value;\n return initial;\n }, {});\n },\n getValue(field) {\n const parser = h.fieldList[field];\n if (!parser) return;\n return deepExtend({}, {value: parser.rule.value}).value;\n },\n setValue(field, value) {\n let formData = field;\n if (!isPlainObject(field))\n formData = {[field]: value};\n Object.keys(formData).forEach(key => {\n const parser = h.fieldList[key];\n if (!parser) return;\n parser.rule.value = formData[key];\n });\n },\n changeValue(field, value) {\n this.setValue(field, value);\n },\n changeField(field, value) {\n this.setValue(field, value);\n },\n removeField(field) {\n let parser = h.getParser(field);\n if (!parser)\n return;\n let index = parser.root.indexOf(parser.rule.__origin__);\n if (index === -1)\n return;\n parser.root.splice(index, 1);\n if (h.sortList.indexOf(parser.id) === -1)\n this.reload();\n\n return parser.rule.__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, isChild) => {\n let fields = Object.keys(h.fieldList), index = h.sortList.length, rules;\n\n if (rule.field && fields.indexOf(rule.field) !== -1)\n return console.error(`${rule.field} 字段已存在` + errMsg());\n\n const parser = h.getParser(after);\n\n if (parser) {\n if (isChild) {\n rules = parser.rule.children;\n index = parser.rule.children.length;\n } else {\n index = parser.root.indexOf(parser.rule.__origin__);\n rules = parser.root;\n }\n } else rules = h.rules;\n rules.splice(index + 1, 0, rule);\n },\n prepend: (rule, after, isChild) => {\n let fields = Object.keys(h.fieldList), index = 0, rules;\n\n if (rule.field && fields.indexOf(rule.field) !== -1)\n return console.error(`${rule.field} 字段已存在` + errMsg());\n\n const parser = h.getParser(after);\n\n if (parser) {\n if (isChild) {\n rules = parser.rule.children;\n } else {\n index = parser.root.indexOf(parser.rule.__origin__);\n rules = parser.root;\n }\n } else rules = h.rules;\n rules.splice(index, 0, rule);\n },\n hidden(hidden, fields) {\n tidyFields(fields, true).forEach((field) => {\n const parser = h.getParser(field);\n if (!parser)\n return;\n $set(parser.rule, 'hidden', !!hidden);\n h.$render.clearCache(parser, true);\n });\n h.refresh();\n },\n hiddenStatus(id) {\n const parser = h.getParser(id);\n if (!parser) return;\n return !!parser.rule.hidden;\n },\n visibility(visibility, fields) {\n tidyFields(fields, true).forEach((field) => {\n const parser = h.getParser(field);\n if (!parser)\n return;\n $set(parser.rule, 'visibility', !!visibility);\n h.$render.clearCache(parser, true);\n });\n h.refresh();\n },\n visibilityStatus(id) {\n const parser = h.getParser(id);\n if (!parser) return;\n return !!parser.rule.visibility;\n },\n disabled(disabled, fields) {\n tidyFields(fields, true).forEach((field) => {\n const parser = h.fieldList[field];\n if (!parser)\n return;\n h.vm.$set(parser.rule.props, 'disabled', !!disabled);\n });\n },\n model() {\n return Object.keys(h.trueData).reduce((initial, key) => {\n initial[key] = h.trueData[key].rule;\n return initial;\n }, {});\n },\n component() {\n return Object.keys(h.customData).reduce((initial, key) => {\n initial[key] = h.customData[key].rule;\n return initial;\n }, {});\n },\n bind() {\n let bind = {}, properties = {};\n Object.keys(h.fieldList).forEach((field) => {\n const parser = h.fieldList[field];\n properties[field] = {\n get() {\n return parser.rule.value;\n },\n set(value) {\n parser.rule.value = value;\n },\n enumerable: true,\n configurable: true\n };\n });\n Object.defineProperties(bind, properties);\n return bind;\n },\n submitBtnProps: (props = {}) => {\n h.vm._buttonProps(props);\n },\n resetBtnProps: (props = {}) => {\n h.vm._resetProps(props);\n },\n set: (node, field, value) => {\n h.vm.$set(node, field, value);\n },\n reload: (rules) => {\n h.reloadRule(rules)\n },\n updateOptions(options) {\n deepExtend(h.options, options);\n this.refresh(true);\n },\n onSubmit(fn) {\n this.updateOptions({onSubmit: fn});\n },\n sync: (field) => {\n const parser = h.getParser(field);\n if (parser) {\n h.$render.clearCache(parser, true);\n h.refresh();\n }\n },\n refresh: (clear) => {\n if (clear)\n h.$render.clearCacheAll();\n h.refresh();\n },\n hideForm: (isShow) => {\n h.vm.isShow = !isShow;\n },\n changeStatus: () => {\n return h.changeStatus;\n },\n clearChangeStatus: () => {\n h.changeStatus = false;\n },\n updateRule: (id, rule, cover) => {\n const parser = h.getParser(id);\n if (parser) {\n cover ? Object.keys(rule).forEach(key => {\n parser.rule[key] = rule[key];\n }) : deepExtend(parser.rule, rule);\n return parser.rule.__origin__;\n }\n },\n getRule: (id) => {\n const parser = h.getParser(id);\n if (parser) {\n return parser.rule;\n }\n },\n updateRules(rules, cover) {\n Object.keys(rules).forEach(id => {\n this.updateRule(id, rules[id], cover);\n })\n },\n updateValidate(id, validate, merge) {\n const parser = h.getParser(id);\n if (parser) {\n parser.rule.validate = merge ? parser.rule.validate.concat(validate) : validate;\n }\n },\n updateValidates(validates, merge) {\n Object.keys(validates).forEach(id => {\n this.updateValidate(id, validates[id], merge);\n })\n },\n method(id, name) {\n const el = this.el(id);\n if (!el || !el[name])\n throw new Error('方法不存在' + errMsg());\n return (...args) => {\n return el[name](...args);\n }\n },\n toJson() {\n return toJson(this.rule);\n },\n on(...args) {\n h.vm.$on(...args);\n },\n once(...args) {\n h.vm.$once(...args);\n },\n off(...args) {\n h.vm.$off(...args);\n },\n trigger(id, event, ...args) {\n const el = this.el(id);\n el && el.$emit(event, ...args);\n },\n el(id) {\n const parser = h.getParser(id);\n if (parser) return parser.el;\n },\n validate(callback) {\n let state = false;\n let subForm = {\n ...{\n ___this: {\n validate(call) {\n h.$form.validate((valid) => {\n call && call(valid);\n });\n }\n }\n }, ...h.subForm\n };\n let keys = Object.keys(subForm).filter(field => {\n const sub = subForm[field];\n return Array.isArray(sub) ? sub.length : !isUndef(sub);\n }), len = keys.length, subLen;\n const validFn = (valid, field) => {\n if (valid) {\n if (subLen > 1) subLen--;\n else if (len > 1) len--;\n else callback(true);\n } else {\n if (!state) {\n callback(false);\n state = true;\n }\n field && this.clearValidateState(field, false);\n }\n };\n\n keys.forEach(field => {\n let sub = subForm[field];\n if (Array.isArray(sub)) {\n subLen = sub.length;\n sub.forEach(form => {\n form.validate((v) => validFn(v, field))\n })\n } else if (sub) {\n subLen = 1;\n sub.validate(validFn)\n }\n\n });\n\n },\n validateField: (field, callback) => {\n if (!h.fieldList[field])\n return;\n h.$form.validateField(field, callback);\n },\n resetFields(fields) {\n let parsers = h.fieldList;\n tidyFields(fields, true).forEach(field => {\n let parser = parsers[field];\n if (!parser) return;\n\n if (parser.type === 'hidden') return;\n h.$form.resetField(parser);\n h.refreshControl(parser);\n h.$render.clearCache(parser, true);\n });\n },\n submit(successFn, failFn) {\n this.validate((valid) => {\n if (valid) {\n let formData = this.formData();\n if (isFunction(successFn))\n successFn(formData, this);\n else {\n h.options.onSubmit && h.options.onSubmit(formData, this);\n h.fc.$emit('on-submit', formData, this);\n }\n } else {\n failFn && failFn(this)\n }\n });\n },\n clearValidateState(fields, clearSub = true) {\n tidyFields(fields).forEach(field => {\n if (clearSub) this.clearSubValidateState(field);\n const parser = h.fieldList[field];\n if (!parser)\n return;\n h.$form.clearValidateState(parser);\n });\n },\n clearSubValidateState(fields) {\n tidyFields(fields).forEach(field => {\n const subForm = h.subForm[field];\n if (subForm) {\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 getSubForm(field) {\n return h.subForm[field];\n },\n btn: {\n loading: (loading = true) => {\n h.vm._buttonProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n h.vm._buttonProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n h.vm._buttonProps({show: !!isShow});\n }\n },\n resetBtn: {\n loading: (loading = true) => {\n h.vm._resetProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n h.vm._resetProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n h.vm._resetProps({show: !!isShow});\n }\n },\n closeModal: (field) => {\n const parser = h.fieldList[field];\n parser && parser.closeModel && parser.closeModel();\n }\n };\n}\n","import {\n $del,\n $set, deepExtend,\n errMsg,\n extend,\n isString,\n isUndef,\n isValidChildren,\n isPlainObject,\n toLine,\n toString,\n uniqueId,\n isFunction\n} from '@form-create/utils';\nimport BaseParser from '../factory/parser';\nimport Render from './render';\nimport Api from './api';\nimport {copyRule, enumerable} from './util';\n\n\nexport function getRule(rule) {\n if (isFunction(rule.getRule))\n return rule.getRule();\n else\n return rule;\n}\n\nexport default class Handle {\n\n constructor(fc) {\n const {vm, rules, options} = this.fc = fc;\n\n this.watching = false;\n this.vm = vm;\n this.options = options;\n\n this.validate = {};\n this.formData = {};\n this.subForm = {};\n\n this.fCreateApi = undefined;\n\n this.__init(rules);\n this.$form = new fc.drive.formRender(this);\n this.$render = new Render(this);\n\n this.loadRule(this.rules, false);\n\n this.$render.initOrgChildren();\n\n this.$form.init();\n }\n\n __init(rules) {\n this.fieldList = {};\n this.trueData = {};\n this.parsers = {};\n this.customData = {};\n this.sortList = [];\n this.rules = rules;\n this.origin = [...this.rules];\n this.changeStatus = false;\n this.issetRule = [];\n }\n\n modelEvent(parser) {\n const modelList = this.fc.modelEvents;\n return modelList[parser.type] || modelList[parser.originType] || parser.rule.model || parser.modelEvent;\n }\n\n isset(rule) {\n return this.issetRule.indexOf(rule) > -1;\n }\n\n loadRule(rules, parent) {\n rules.map((_rule, index) => {\n if (parent && isString(_rule)) return;\n\n if (!_rule.type)\n return console.error('未定义生成规则的 type 字段' + errMsg());\n\n let parser;\n\n if (_rule.__fc__) {\n parser = _rule.__fc__;\n\n //规则在其他 form-create 中使用,自动浅拷贝\n if (!parser.deleted && (parser.vm !== this.vm || this.parsers[parser.id])) {\n rules[index] = _rule = copyRule(_rule);\n parser = this.createParser(this.parseRule(_rule));\n } else {\n parser.update(this);\n let rule = parser.rule;\n this.parseOn(rule);\n this.parseProps(rule);\n }\n } else {\n parser = this.createParser(this.parseRule(_rule));\n }\n\n let children = parser.rule.children, rule = parser.rule;\n if (!this.notField(parser.field)) {\n this.issetRule.push(_rule);\n return console.error(`${rule.field} 字段已存在` + errMsg());\n }\n parser.parent = parent || null;\n this.setParser(parser);\n\n if (!_rule.__fc__) {\n bindParser(_rule, parser);\n }\n if (isValidChildren(children)) {\n this.loadRule(children, parser);\n }\n\n if (!parent) {\n this.sortList.push(parser.id);\n }\n\n if (!this.isNoVal(parser))\n Object.defineProperty(parser.rule, 'value', this.valueHandle(parser));\n\n return parser;\n }).filter(h => h).forEach(h => {\n h.root = rules;\n });\n }\n\n valueHandle(parser) {\n return {\n enumerable: true,\n get: () => {\n return parser.toValue(this.getFormData(parser));\n },\n set: (value) => {\n if (this.isChange(parser, value)) {\n this.$render.clearCache(parser, true);\n this.setFormData(parser, parser.toFormValue(value));\n this.valueChange(parser, value);\n this.refresh();\n }\n }\n };\n }\n\n createParser(rule) {\n return new (this.fc.parsers[toString(rule.type).toLocaleLowerCase()] || BaseParser)(this, rule, '' + uniqueId());\n }\n\n parseRule(_rule) {\n const def = defRule(), rule = getRule(_rule);\n\n Object.defineProperties(rule, {\n __origin__: enumerable(_rule)\n });\n\n Object.keys(def).forEach(k => {\n if (isUndef(rule[k])) $set(rule, k, def[k]);\n });\n\n if (rule.field && this.options.formData[rule.field] !== undefined)\n rule.value = this.options.formData[rule.field];\n\n rule.options = parseArray(rule.options);\n this.parseOn(rule);\n this.parseProps(rule);\n\n return rule;\n }\n\n parseOn(rule) {\n this.parseInjectEvent(rule, rule.on || {});\n if (!this.watching) {\n this.margeEmit(rule);\n }\n }\n\n margeEmit(rule) {\n const emitEvent = this.parseEmit(rule);\n if (Object.keys(emitEvent).length > 0) extend(rule.on, emitEvent);\n }\n\n parseProps(rule) {\n this.parseInjectEvent(rule, rule.props || {});\n }\n\n parseInjectEvent(rule, on) {\n if (this.options.injectEvent || rule.inject)\n Object.keys(on).forEach(k => {\n if (isFunction(on[k]))\n on[k] = this.inject(rule, on[k])\n });\n return on;\n }\n\n getInjectData(self, inject) {\n const {option, rule} = this.vm.$options.propsData;\n return {\n $f: this.fCreateApi,\n rule,\n self: self.__origin__,\n option,\n inject: inject || rule.inject || {}\n };\n }\n\n inject(self, _fn, inject) {\n if (_fn.__inject) {\n if (this.watching)\n return _fn;\n _fn = _fn.__origin;\n }\n\n const h = this;\n\n const fn = function (...args) {\n args.unshift(h.getInjectData(self, inject));\n return _fn(...args);\n };\n fn.__inject = true;\n fn.__origin = _fn;\n return fn;\n }\n\n parseEmit(rule) {\n let event = {}, {emit, emitPrefix, field, name} = rule;\n\n if (!Array.isArray(emit)) return event;\n const emitKey = emitPrefix ? emitPrefix : (field || name);\n if (!emitKey) return event;\n\n emit.forEach(config => {\n let inject, eventName = config;\n if (isPlainObject(config)) {\n eventName = config.name;\n inject = config.inject;\n }\n if (!eventName) return;\n\n const _fieldKey = `${emitKey}-${eventName}`;\n const fieldKey = toLine(_fieldKey).replace('_', '-');\n\n const fn = (...arg) => {\n this.vm.$emit(fieldKey, ...arg);\n this.vm.$emit(_fieldKey, ...arg);\n };\n fn.__emit = true;\n event[eventName] = (this.options.injectEvent || config.inject !== undefined) ? this.inject(rule, fn, inject) : fn;\n });\n\n return event;\n }\n\n run() {\n if (this.vm.unique > 0)\n return this.$render.run();\n else {\n this.vm.unique = 1;\n return [];\n }\n }\n\n setParser(parser) {\n let {id, field, name, rule} = parser;\n if (this.parsers[id])\n return;\n this.parsers[id] = parser;\n\n if (name)\n $set(this.customData, name, parser);\n\n if (this.isNoVal(parser)) return;\n this.fieldList[field] = parser;\n $set(this.formData, field, parser.toFormValue(rule.value));\n $set(this.validate, field, rule.validate || []);\n $set(this.trueData, field, parser);\n }\n\n addSubForm(parser, subForm) {\n this.subForm[parser.field] = subForm;\n }\n\n notField(field) {\n return this.fieldList[field] === undefined;\n }\n\n isChange(parser, value) {\n return JSON.stringify(parser.rule.value) !== JSON.stringify(value);\n }\n\n valueChange(parser) {\n this.validateControl(parser);\n }\n\n onInput(parser, value) {\n let val;\n if (!this.isNoVal(parser) && this.isChange(parser, val = parser.toValue(value))) {\n this.$render.clearCache(parser);\n this.setFormData(parser, value);\n this.changeStatus = true;\n this.valueChange(parser);\n this.vm.$emit('change', parser.field, val, this.fCreateApi);\n }\n }\n\n getParser(id) {\n return this.fieldList[id] || this.customData[id] || this.parsers[id];\n }\n\n created() {\n const vm = this.vm;\n\n vm.$set(vm, 'buttonProps', this.options.submitBtn);\n vm.$set(vm, 'resetProps', this.options.resetBtn);\n vm.$set(vm, 'formData', this.formData);\n\n\n if (this.fCreateApi === undefined)\n this.fCreateApi = Api(this);\n this.fCreateApi.rule = this.rules;\n this.fCreateApi.config = this.options;\n if (this.fCreateApi.form) {\n const form = this.fCreateApi.form;\n Object.keys(form).forEach((field) => {\n delete form[field];\n })\n } else {\n Object.defineProperty(this.fCreateApi, 'form', {\n value: {},\n writable: false,\n enumerable: true\n });\n }\n Object.defineProperties(this.fCreateApi.form, Object.keys(this.fCreateApi.formData()).reduce((initial, field) => {\n const parser = this.getParser(field);\n const handle = this.valueHandle(parser);\n handle.configurable = true;\n initial[field] = handle;\n return initial;\n }, {}));\n }\n\n addParserWitch(parser) {\n const vm = this.vm;\n\n Object.keys(parser.rule).forEach((key) => {\n if (['field', 'type', 'value', 'vm', 'template', 'name', 'config', 'control'].indexOf(key) !== -1 || parser.rule[key] === undefined) return;\n try {\n parser.watch.push(vm.$watch(() => parser.rule[key], (n, o) => {\n if (o === undefined) return;\n this.watching = true;\n if (key === 'validate')\n this.validate[parser.field] = n;\n else if (key === 'props')\n this.parseProps(parser.rule);\n else if (key === 'on')\n this.parseOn(parser.rule);\n else if (key === 'emit')\n this.margeEmit(parser.rule);\n\n this.$render.clearCache(parser);\n this.watching = false;\n }, {deep: key !== 'children', immediate: true}));\n } catch (e) {\n //\n }\n });\n }\n\n refreshControl(parser) {\n if (!this.isNoVal(parser) && parser.rule.control) {\n this.validateControl(parser);\n }\n }\n\n\n validateControl(parser) {\n const controls = getControl(parser), len = controls.length, ctrlRule = parser.ctrlRule;\n if (!len) return;\n for (let i = 0; i < len; i++) {\n const control = controls[i], validate = control.handle || (val => val === control.value);\n if (validate(parser.rule.value, this.fCreateApi)) {\n if (ctrlRule) {\n if (ctrlRule.children === control.rule)\n return;\n else\n removeControl(parser);\n }\n const rule = {\n type: 'fcFragment',\n native: true,\n children: control.rule\n };\n //TODO 位置可自定义\n parser.root.splice(parser.root.indexOf(parser.rule.__origin__) + 1, 0, rule);\n parser.ctrlRule = rule;\n this.vm.$emit('control', parser.rule.__origin__, this.fCreateApi);\n parser.parent && this.$render.clearCache(parser.parent);\n this.refresh();\n return;\n }\n }\n if (ctrlRule) {\n removeControl(parser);\n this.vm.$emit('control', parser.rule.__origin__, this.fCreateApi);\n this.refresh();\n }\n }\n\n mountedParser() {\n const vm = this.vm;\n Object.keys(this.parsers).forEach((id) => {\n let parser = this.parsers[id];\n if (parser.watch.length === 0) this.addParserWitch(parser);\n this.refreshControl(parser);\n parser.el = vm.$refs[parser.refName] || {};\n\n if (parser.defaultValue === undefined)\n parser.defaultValue = deepExtend({}, {value: parser.rule.value}).value;\n\n parser.mounted && parser.mounted();\n });\n }\n\n mounted() {\n const mounted = this.options.mounted;\n\n this.mountedParser();\n\n mounted && mounted(this.fCreateApi);\n this.fc.$emit('mounted', this.fCreateApi);\n }\n\n reload() {\n const onReload = this.options.onReload;\n\n this.mountedParser();\n\n onReload && onReload(this.fCreateApi);\n this.fc.$emit('on-reload', this.fCreateApi);\n }\n\n removeField(parser, value) {\n const {id, field} = parser, index = this.sortList.indexOf(id);\n\n delParser(parser, value);\n $del(this.parsers, id);\n\n if (index !== -1) {\n this.sortList.splice(index, 1);\n }\n\n if (!this.fieldList[field]) {\n $del(this.validate, field);\n $del(this.formData, field);\n $del(this.customData, field);\n $del(this.fieldList, field);\n $del(this.trueData, field);\n }\n\n if (this.subForm[parser.field])\n $del(this.subForm, field);\n\n return parser;\n }\n\n refresh() {\n this.vm._refresh();\n }\n\n reloadRule(rules) {\n const vm = this.vm;\n if (!rules) return this.reloadRule(this.rules);\n if (!this.origin.length) this.fCreateApi.refresh();\n this.origin = [...rules];\n\n const parsers = {...this.parsers};\n const formData = this.fCreateApi.formData();\n this.__init(rules);\n this.loadRule(rules, false);\n Object.keys(parsers).filter(id => this.parsers[id] === undefined)\n .forEach(id => this.removeField(parsers[id], formData[parsers[id].field]));\n this.$render.initOrgChildren();\n this.formData = {...this.formData};\n this.created();\n\n vm.$f = this.fCreateApi;\n this.$render.clearCacheAll();\n this.refresh();\n\n vm.$nextTick(() => {\n this.reload();\n });\n\n }\n\n setFormData(parser, value) {\n $set(this.formData, parser.field, value);\n }\n\n getFormData(parser) {\n return this.formData[parser.field];\n }\n\n fields() {\n return Object.keys(this.formData);\n }\n\n isNoVal(parser) {\n return !parser.isDef;\n }\n\n}\n\nexport function delParser(parser, value) {\n if (parser.ctrlRule)\n removeControl(parser);\n parser.watch.forEach((unWatch) => unWatch());\n parser.watch = [];\n parser.deleted = true;\n parser.root = [];\n Object.defineProperty(parser.rule, 'value', {\n value\n });\n}\n\nfunction parseArray(validate) {\n return Array.isArray(validate) ? validate : [];\n}\n\nfunction getControl(parser) {\n const control = parser.rule.control || [];\n if (isPlainObject(control)) return [control];\n else return control;\n}\n\nfunction removeControl(parser) {\n const index = parser.root.indexOf(parser.ctrlRule);\n if (index !== -1)\n parser.root.splice(index, 1);\n parser.ctrlRule = null;\n}\n\n\nfunction defRule() {\n return {\n validate: [],\n col: {},\n emit: [],\n props: {},\n on: {},\n options: [],\n title: undefined,\n value: null,\n field: '',\n name: undefined,\n className: undefined\n };\n}\n\nfunction bindParser(rule, parser) {\n Object.defineProperties(rule, {\n __field__: enumerable(parser.field),\n __fc__: enumerable(parser)\n });\n}\n","const NAME = 'fcFragment';\n\nexport default {\n name: NAME,\n functional: true,\n props: {\n children: Array\n },\n render(h, ctx) {\n return ctx.children\n }\n}\n","import {\n $set,\n deepExtend,\n extend,\n isBool,\n isElement,\n toString,\n isPlainObject\n} from '@form-create/utils';\nimport $FormCreate from '../components/formCreate';\nimport {formCreateName} from '../components/formCreate';\nimport Vue from 'vue';\nimport makerFactory from '../factory/maker';\nimport Handle from './handle';\nimport {creatorFactory} from '../factory/creator';\nimport BaseParser from '../factory/parser';\nimport {parseJson, copyRule, copyRules} from './util';\nimport fragment from '../components/fragment';\n\nexport let _vue = typeof window !== 'undefined' && window.Vue ? window.Vue : Vue;\n\nexport default function createFormCreate(drive) {\n\n const components = {\n [fragment.name]: fragment\n }, parsers = {}, maker = makerFactory(), globalConfig = drive.getConfig(), data = {},\n modelEvents = {};\n\n function setParser(id, parser) {\n id = toString(id);\n parsers[id.toLocaleLowerCase()] = parser;\n FormCreate.maker[id] = creatorFactory(id);\n }\n\n function setModel(id, model) {\n modelEvents[id.toLocaleLowerCase()] = model;\n }\n\n function createParser() {\n return class Parser extends BaseParser {\n }\n }\n\n function component(id, component) {\n id = toString(id);\n const _id = id.toLocaleLowerCase();\n if (_id === 'form-create' || _id === 'formcreate')\n return get$FormCreate();\n if (component === undefined)\n return components[id];\n else\n components[id] = component;\n }\n\n function margeGlobal(config, _options) {\n if (isBool(_options.submitBtn))\n _options.submitBtn = {show: _options.submitBtn};\n\n if (isBool(_options.resetBtn))\n _options.resetBtn = {show: _options.resetBtn};\n\n let options = deepExtend(config, _options);\n\n $set(options, 'el', !options.el\n ? window.document.body\n : (isElement(options.el)\n ? options.el\n : document.querySelector(options.el)\n ));\n\n return options;\n }\n\n function get$FormCreate() {\n return _vue.extend($FormCreate(FormCreate, components));\n }\n\n\n function bindAttr(formCreate) {\n extend(formCreate, {\n version: drive.version,\n ui: drive.ui,\n maker,\n component,\n setParser,\n createParser,\n data,\n copyRule,\n copyRules,\n $form() {\n return get$FormCreate();\n },\n parseJson(json) {\n return parseJson(json);\n }\n });\n }\n\n function create(rules, option) {\n const $vm = new _vue({\n data() {\n return {rule: rules, option: isElement(option) ? {el: option} : option};\n },\n render() {\n return <form-create ref='fc' props={this.$data}/>\n }\n });\n $vm.$mount();\n return $vm;\n }\n\n class FormCreate {\n constructor(rules, options = {}) {\n this.fCreateApi = undefined;\n this.drive = drive;\n this.parsers = parsers;\n this.modelEvents = modelEvents;\n this.vm = undefined;\n this.rules = Array.isArray(rules) ? rules : [];\n this.options = margeGlobal(deepExtend({formData: {}}, globalConfig), options);\n }\n\n beforeCreate(vm) {\n this.vm = vm;\n this.handle = new Handle(this);\n }\n\n created() {\n this.handle.created();\n }\n\n api() {\n return this.handle.fCreateApi;\n }\n\n render() {\n return this.handle.run();\n }\n\n mounted() {\n this.handle.mounted();\n }\n\n $emit(eventName, ...params) {\n if (this.$parent)\n this.$parent.$emit(`fc:${eventName}`, ...params);\n\n this.vm.$emit(eventName, ...params);\n }\n\n static create(rules, _opt = {}, parent) {\n\n let $vm = create(rules, _opt);\n\n const _this = $vm.$refs.fc.formCreate;\n _this.parent = parent;\n _this.options.el.appendChild($vm.$el);\n\n return _this.handle.fCreateApi;\n }\n\n static install(Vue, options) {\n if (options && isPlainObject(options))\n margeGlobal(globalConfig, options);\n\n if (Vue._installedFormCreate === true) return;\n Vue._installedFormCreate = true;\n\n const $formCreate = function (rules, opt = {}) {\n return FormCreate.create(rules, opt, this);\n };\n\n bindAttr($formCreate);\n\n Vue.prototype.$formCreate = $formCreate;\n\n Vue.component(formCreateName, get$FormCreate());\n Vue.component(fragment.name, _vue.extend(fragment));\n _vue = Vue;\n }\n\n static init(rules, _opt = {}) {\n let $vm = create(rules, _opt), formCreate = $vm.$refs.fc.formCreate;\n\n return {\n mount($el) {\n if ($el && isElement($el))\n formCreate.options.el = $el;\n formCreate.options.el.appendChild($vm.$el);\n return formCreate.handle.fCreateApi;\n },\n remove() {\n formCreate.options.el.removeChild($vm.$el);\n },\n destroy() {\n this.remove();\n $vm.$destroy();\n },\n $f: formCreate.handle.fCreateApi\n };\n }\n }\n\n bindAttr(FormCreate);\n\n\n drive.components.forEach(component => {\n FormCreate.component(component.name, component);\n });\n\n drive.parsers.forEach(({name, parser}) => {\n FormCreate.setParser(name, parser);\n });\n\n Object.keys(drive.makers).forEach(name => {\n FormCreate.maker[name] = drive.makers[name];\n });\n\n if (drive.modelEvents) {\n Object.keys(drive.modelEvents).forEach((name) => setModel(name, drive.modelEvents[name]));\n }\n\n return {\n FormCreate,\n install: FormCreate.install\n };\n}\n","import VData from './vData';\nimport VNode from './vNode';\nimport {deepExtendArgs, uniqueId} from '@form-create/utils';\n\n\nexport default class BaseForm {\n\n constructor(handle) {\n this.$handle = handle;\n this.vm = handle.vm;\n this.drive = this.$handle.fc.drive;\n this.options = handle.options;\n this.vNode = new VNode(this.vm);\n this.vData = new VData();\n this.unique = uniqueId();\n this.refName = `cForm${this.unique}`;\n }\n\n getFormRef() {\n return this.vm.$refs[this.refName];\n }\n\n init() {\n this.$render = this.$handle.$render;\n }\n\n getGetCol(parser, field = 'col') {\n let col = parser.rule[field] || {}, mCol = {}, pCol = {}, global = this.options.global;\n\n if (!global)\n return col;\n\n if (global['*']) {\n mCol = global['*'][field] || {};\n }\n\n if (global[parser.type]) {\n pCol = global[parser.type][field] || {};\n } else if (global[parser.originType]) {\n pCol = global[parser.originType][field] || {};\n }\n col = deepExtendArgs({}, mCol, pCol, col);\n return col;\n }\n\n beforeRender() {\n\n }\n\n render() {\n\n }\n\n inputVData() {\n }\n}\n","import {iviewConfig} from '../../core/config';\nimport {copyRules} from '@form-create/core';\nimport {deepExtendArgs} from '@form-create/utils';\n\nconst NAME = 'fc-ivu-group';\n\nexport default {\n name: NAME,\n props: {\n rule: Object,\n rules: Array,\n button: {\n type: Boolean,\n default: true\n },\n formCreate: Object,\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n value: {\n type: Array,\n default: () => []\n },\n disabled: {\n type: Boolean,\n default: false\n },\n fontSize: {\n type: Number,\n default: 28\n }\n },\n data() {\n return {\n option: deepExtendArgs({}, this.formCreate.config || {}, {\n submitBtn: false,\n resetBtn: false,\n mounted: undefined,\n onReload: undefined\n }),\n len: 0,\n cacheRule: {},\n group$f: {},\n fieldRule: {}\n }\n },\n computed: {\n formRule() {\n if (this.rule) return [this.rule];\n else if (this.rules) return this.rules;\n return [];\n },\n formData() {\n return Object.keys(this.fieldRule).map(key => {\n const keys = Object.keys(this.fieldRule[key]);\n return this.rule ? keys[0] === undefined ? null : this.fieldRule[key][keys[0]].value : keys.reduce((initial, field) => {\n initial[field] = this.fieldRule[key][field].value;\n return initial;\n }, {});\n })\n }\n },\n watch: {\n disabled(n) {\n const lst = this.group$f;\n Object.keys(lst).forEach(k => {\n lst[k].disabled(n);\n })\n },\n formData(n) {\n this.$emit('input', n);\n this.$emit('change', n);\n },\n value: {\n handler(n) {\n let keys = Object.keys(this.cacheRule), total = keys.length, len = total - n.length;\n if (len < 0) {\n for (let i = len; i < 0; i++) {\n this.addRule();\n }\n for (let i = 0; i < total; i++) {\n this.setValue(this.group$f[keys[i]], n[i]);\n }\n } else {\n if (len > 0) {\n for (let i = 0; i < len; i++) {\n this.removeRule(keys[total - i - 1]);\n }\n this.subForm();\n }\n\n n.forEach((val, i) => {\n this.setValue(this.group$f[keys[i]], n[i]);\n });\n }\n },\n deep: true,\n immediate: true\n }\n },\n methods: {\n setValue($f, value) {\n if (this.rule) {\n const fields = $f.fields();\n if (!fields[0]) return;\n $f.setValue(fields[0], value);\n } else {\n $f.setValue(value);\n }\n },\n addRule(emit) {\n const rule = this.copyRule();\n this.$set(this.cacheRule, ++this.len, rule);\n if (emit)\n this.$nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));\n },\n add$f(i, key, $f) {\n this.group$f[key] = $f;\n this.setValue($f, this.value[i]);\n this.syncData(key, $f);\n this.subForm();\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n },\n subForm() {\n this.$emit('fc.subForm', Object.keys(this.group$f).map(k => this.group$f[k]));\n },\n syncData(key, $f) {\n this.$set(this.fieldRule, key, {});\n $f.fields().forEach(field => {\n this.fieldRule[key][field] = $f.getRule(field);\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.fieldRule, key);\n this.$delete(this.group$f, key);\n if (emit)\n this.$nextTick(() => this.$emit('remove', index));\n },\n copyRule() {\n return copyRules(this.formRule);\n },\n add() {\n (!this.disabled) && this.addRule(true);\n },\n del(key) {\n if (this.disabled) return;\n this.removeRule(key, true);\n this.subForm();\n },\n addIcon(key) {\n return <Icon key={`a${key}`} type={iviewConfig.addIcon}\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer;color:#000'}`}\n on-click={this.add}/>;\n },\n delIcon(key) {\n return <Icon key={`d${key}`} type={iviewConfig.removeIcon}\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}\n on-click={() => this.del(key)}/>;\n },\n makeIcon(total, index, key) {\n if (this.$scopedSlots.button) return this.$scopedSlots.button({\n total,\n index,\n vm: this,\n key,\n del: () => this.del(key),\n add: this.add\n });\n if (index === 0) {\n return [(this.max !== 0 && total >= this.max) ? null : this.addIcon(key), (this.min === 0 || total > this.min) ? this.delIcon(key) : null];\n } else if (index >= this.min) {\n return this.delIcon(key);\n }\n }\n },\n render() {\n const keys = Object.keys(this.cacheRule);\n const button = this.button;\n return keys.length === 0 ?\n (this.$scopedSlots.default ? (this.$scopedSlots.default({\n vm: this,\n add: this.add\n })) : <Icon key={'a_def'} type={iviewConfig.addIcon}\n style={`font-size:${this.fontSize}px;vertical-align:middle;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}\n on-click={this.add}/>) :\n <div class=\"fc-group\" key={'con'}>{keys.map((key, index) => {\n const rule = this.cacheRule[key];\n return <Row align=\"middle\" type=\"flex\" key={key}\n style=\"background-color:#f5f7fa;padding:10px;border-radius:5px;margin-bottom:10px;\">\n <Col span={button ? 20 : 24}><FormItem><FormCreate on-mounted={($f) => this.add$f(index, key, $f)}\n on-on-reload={($f) => this.syncData(key, $f)}\n rule={rule}\n option={this.option}/></FormItem></Col>\n {button ? <Col span={2} pull={1} push={1}>{this.makeIcon(keys.length, index, key)}</Col> : null}\n </Row>\n })}</div>\n }\n}\n","import checkbox from './checkbox';\nimport frame from './frame';\nimport radio from './radio';\nimport select from './select';\nimport tree from './tree';\nimport upload from './upload';\nimport group from './group';\n\n\nexport default [\n checkbox,\n frame,\n radio,\n select,\n tree,\n upload,\n group\n]\n","import {BaseParser} from '@form-create/core';\n\nexport default class parser extends BaseParser {\n\n render(children) {\n return this.vNode.checkbox({\n props: {\n ctx: this.$render.inputVData(this, true).get(),\n options: this.rule.options,\n value: this.$handle.getFormData(this),\n children\n },\n on: {\n input: (n) => {\n this.$render.onInput(this, n);\n }\n }\n });\n }\n}\n\n","import parser from './parser';\n\nconst name = 'checkbox';\n\nexport default {parser, name};\n","import {BaseParser} from '@form-create/core';\nimport {timeStampToDate, $set} from '@form-create/utils';\n\nexport default class Parser extends BaseParser {\n init() {\n let props = this.rule.props;\n if ((props.startDate))\n $set(props, 'startDate', timeStampToDate(props.startDate));\n }\n\n isRange() {\n return this.el.type.includes('range') || this.el.multiple;\n }\n\n _toValue(val) {\n const value = this.el.formatDate(val || ''), {separator} = this.el,\n isRange = this.isRange();\n if (!value)\n return isRange ? (this.el.multiple ? [] : ['', '']) : value;\n else if (isRange)\n return value.split(separator);\n else\n return value;\n }\n\n toValue(formValue) {\n const el = this.$handle.vm.$refs[this.refName];\n if (el) {\n this.el = el;\n return this._toValue(formValue);\n }\n return formValue;\n }\n\n toFormValue(value) {\n let isArr = Array.isArray(value), props = this.rule.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() {\n this.toFormValue = (val) => {\n let v = this.el.parseDate(val);\n return this.isRange() ? v : v[0];\n };\n\n this.toValue = this._toValue;\n }\n}\n","import parser from './parser';\n\nconst name = 'datePicker';\n\n\nexport default {parser, name};\n","import {BaseParser} from '@form-create/core';\n\n\nexport default class Parser extends BaseParser {\n\n render(children) {\n const data = this.$render.inputVData(this).props('field', this.field);\n\n return this.vNode.frame(data, children);\n }\n\n closeModel() {\n this.el.closeModel && this.el.closeModel();\n }\n\n}\n","import parser from './parser';\n\nconst name = 'frame';\n\n\nexport default {parser, name};\n","import {BaseParser} from '@form-create/core';\n\nconst name = 'hidden';\n\nclass parser extends BaseParser {\n render() {\n return [];\n }\n}\n\nexport default {parser, name};\n","import {BaseParser} from '@form-create/core';\nimport {$set} from '@form-create/utils';\n\n\nexport default class Parser extends BaseParser {\n init() {\n let {props} = this.rule;\n if (props.autosize && props.autosize.minRows)\n $set(props, 'rows', props.autosize.minRows || 2);\n }\n}\n","import parser from './parser';\n\nconst name = 'input';\n\n\nexport default {parser, name};\n","import {BaseParser} from '@form-create/core';\n\nexport default class Parser extends BaseParser {\n toFormValue(value) {\n return this.rule.options.filter((opt) => opt.value === value).reduce((initial, opt) => opt.label, '')\n }\n\n toValue(parseValue) {\n return this.rule.options.filter((opt) => opt.label === parseValue).reduce((initial, opt) => opt.value, '')\n }\n\n render(children) {\n return this.vNode.radio(this.$render.inputVData(this).props({\n 'options': this.rule.options\n }), children);\n }\n\n}","import parser from './parser';\n\nconst name = 'radio';\n\nexport default {parser, name};","import {BaseParser} from '@form-create/core';\n\n\nexport default class Parser extends BaseParser {\n\n render(children) {\n return this.vNode.select(this.$render.inputVData(this).props('options', this.rule.options), children);\n }\n}\n\n","import parser from './parser';\n\nconst name = 'select';\n\n\nexport default {parser, name};\n","import {BaseParser} from '@form-create/core';\n\n\nexport default class Parser extends BaseParser {\n toFormValue(value) {\n let rule = this.rule, isArr = Array.isArray(value), props = rule.props, min = props.min || 0,\n parseValue;\n if (props.range === true) {\n parseValue = isArr ? value : [min, (parseFloat(value) || min)];\n } else {\n parseValue = isArr ? (parseFloat(value[0]) || min) : parseFloat(value);\n }\n return parseValue;\n }\n\n}\n","import parser from './parser';\n\nconst name = 'slider';\n\n\nexport default {parser, name};\n","import {BaseParser} from '@form-create/core';\n\nexport default class parser extends BaseParser {\n render(children) {\n let rule = this.rule, slot = rule.props.slot || {};\n\n return this.vNode.switch(this.$render.inputVData(this).scopedSlots({\n open: () => slot.open,\n close: () => slot.close\n }).get(), children);\n }\n}\n","import parser from './parser';\n\nconst name = 'switch';\n\n\nexport default {parser, name};\n","import {BaseParser} from '@form-create/core';\n\nexport default class Parser extends BaseParser {\n\n render(children) {\n const data = this.$render.parserToData(this).get();\n return this.vNode.tree({\n props: {\n ctx: data,\n children,\n value: this.$handle.getFormData(this),\n type: data.props.type\n },\n ref: this.refName,\n key: this.key,\n on: {\n input: (value) => {\n this.$render.onInput(this, value);\n }\n }\n });\n }\n}\n","import parser from './parser';\n\nconst name = 'tree';\n\nexport default {parser, name};\n","import {BaseParser} from '@form-create/core';\n\n\nexport default class Parser extends BaseParser {\n\n render(children) {\n\n const ctx = this.$render.parserToData(this).get();\n const {key, refName} = this;\n delete ctx.props.defaultFileList;\n const props = {\n uploadType: ctx.props.uploadType,\n maxLength: ctx.props.maxLength,\n modalTitle: ctx.props.modalTitle,\n handleIcon: ctx.props.handleIcon,\n onHandle: ctx.props.onHandle,\n allowRemove: ctx.props.allowRemove,\n value: this.$handle.getFormData(this),\n ctx,\n children\n };\n return this.vNode.upload({\n props,\n key,\n ref: refName,\n on: {\n input: (n) => {\n this.$render.onInput(this, n);\n }\n }\n });\n }\n}\n\n","import parser from './parser';\n\nconst name = 'upload';\n\n\nexport default {parser, name};\n","import checkbox from './checkbox';\nimport datePicker from './datePicker';\nimport frame from './frame';\nimport hidden from './hidden';\nimport input from './input';\nimport radio from './radio';\nimport select from './select';\nimport slider from './slider';\nimport iswitch from './switch';\nimport tree from './tree';\nimport upload from './upload';\n\nexport default [\n checkbox,\n datePicker,\n frame,\n hidden,\n input,\n radio,\n select,\n slider,\n iswitch,\n tree,\n upload\n]","export default {\n button: 'i-button',\n icon: 'Icon',\n slider: 'Slider',\n rate: 'Rate',\n upload: 'fc-ivu-upload',\n cascader: 'Cascader',\n colorPicker: 'Color-Picker',\n timePicker: 'Time-Picker',\n datePicker: 'Date-Picker',\n 'switch': 'i-switch',\n select: 'fc-ivu-select',\n checkbox: 'fc-ivu-checkbox',\n radio: 'fc-ivu-radio',\n inputNumber: 'Input-Number',\n input: 'i-input',\n formItem: 'Form-Item',\n form: 'i-form',\n frame: 'fc-ivu-frame',\n col: 'i-col',\n row: 'row',\n tree: 'fc-ivu-tree',\n autoComplete: 'AutoComplete',\n group: 'fc-ivu-group',\n}\n","import {isFunction, isString, preventDefault} from '@form-create/utils';\nimport {BaseForm} from '@form-create/core';\nimport style from '../style/index.css';\nimport {iviewConfig} from './config';\n\nfunction isTooltip(info) {\n return info.type === 'tooltip';\n}\n\nexport default class Form extends BaseForm {\n\n inputVData(parser) {\n if (!parser.rule.props.size && this.options.form.size)\n parser.vData.props('size', this.options.form.size);\n }\n\n validate(call) {\n this.getFormRef().validate((valid) => {\n call && call(valid);\n });\n }\n\n validateField(field, call) {\n this.getFormRef().validateField(field, call);\n }\n\n resetField(parser) {\n this.vm.$refs[parser.formItemRefName].resetField();\n }\n\n clearValidateState(parser) {\n const fItem = this.vm.$refs[parser.formItemRefName];\n if (fItem) {\n fItem.validateMessage = '';\n fItem.validateState = '';\n }\n }\n\n beforeRender() {\n this.propsData = this.vData.props(this.options.form).props({\n model: this.$handle.formData,\n rules: this.$handle.validate,\n key: 'form' + this.unique\n }).ref(this.refName).nativeOn({submit: preventDefault}).class(this.options.form.className).class('form-create', true).key(this.unique).get();\n }\n\n render(vn) {\n if (vn.length > 0)\n vn.push(this.makeFormBtn());\n\n return this.vNode.form(this.propsData, [this.options.row === false ? vn : this.makeRow(vn)]);\n }\n\n makeRow(vn) {\n const _class = {}, row = this.options.row || {};\n\n if (row.class) _class[row.class] = true;\n return this.vNode.row({props: row || {}, key: 'fr' + this.unique, class: _class}, vn)\n }\n\n container(child, parser) {\n return this.makeFormItem(parser, child);\n }\n\n makeFormItem(parser, child) {\n let fItemUnique = `fItem${parser.key}${this.unique}`,\n {rule, field, formItemRefName} = parser,\n col = this.getGetCol(parser),\n labelWidth = (!col.labelWidth && !rule.title) ? 0 : col.labelWidth, {inline, col: _col} = this.propsData.props,\n propsData = this.vData.props({\n prop: field,\n label: rule.title,\n // labelFor: unique,\n rules: rule.validate,\n labelWidth: labelWidth,\n required: rule.props.required\n }).key(fItemUnique).ref(formItemRefName).class(rule.className).get(),\n node = this.vNode.formItem(propsData, [child, this.makeFormPop(parser, fItemUnique)]);\n return (inline === true || _col === false) ? node : this.makeCol(col, parser, fItemUnique, [node]);\n }\n\n makeFormPop({rule}, unique) {\n if (rule.title) {\n const titleProp = isString(rule.title) ? {title: rule.title} : rule.title;\n const info = this.options.info || {}, svn = [titleProp.title || ''];\n if (rule.info) {\n svn.push(this.vNode.make(isTooltip(info) ? 'Tooltip' : 'Poptip', {\n props: {...info, content: rule.info},\n class: 'fc-pop' + iviewConfig._v,\n key: `pop${unique}`\n }, [\n this.vNode.icon({props: {type: info.icon || iviewConfig.infoIcon, size: 16}})\n ]));\n }\n return this.vNode.make('span', {...titleProp, slot: 'label'}, svn);\n }\n }\n\n makeCol(col, parser, fItemUnique, VNodeFn) {\n if (col.span === undefined)\n col.span = 24;\n const cls = {\n [style.__fc_h]: !!parser.rule.hidden,\n [style.__fc_v]: !!parser.rule.visibility\n };\n if (col.class) cls[col.class] = true;\n return this.vNode.col({\n props: col, class: cls, key: `${fItemUnique}col1`\n }, VNodeFn);\n }\n\n makeFormBtn() {\n let btn = [],\n submitBtnShow = false !== this.vm.buttonProps && false !== this.vm.buttonProps.show,\n resetBtnShow = false !== this.vm.resetProps && false !== this.vm.resetProps.show;\n if (submitBtnShow)\n btn.push(this.makeSubmitBtn(resetBtnShow ? 19 : 24));\n if (resetBtnShow)\n btn.push(this.makeResetBtn(4));\n\n return this.propsData.props.inline === true\n ? btn\n : (btn.length ? this.vNode.col({\n props: {span: 24},\n key: `${this.unique}col2`\n }, btn) : []);\n }\n\n makeResetBtn(span) {\n const resetBtn = this.vm.resetProps,\n props = resetBtn.col || {span: span, push: 1};\n\n return this.vNode.col({props: props, key: `${this.unique}col3`}, [\n this.vNode.button({\n key: `frsbtn${this.unique}`, props: resetBtn, on: {\n 'click': () => {\n const fApi = this.$handle.fCreateApi;\n isFunction(resetBtn.click)\n ? resetBtn.click(fApi)\n : fApi.resetFields();\n }\n }\n }, [resetBtn.innerText])\n ]);\n }\n\n makeSubmitBtn(span) {\n const submitBtn = this.vm.buttonProps,\n props = submitBtn.col || {span: span};\n\n return this.vNode.col({props: props, key: `${this.unique}col4`}, [\n this.vNode.button({\n key: `fbtn${this.unique}`, props: submitBtn, on: {\n 'click': () => {\n const fApi = this.$handle.fCreateApi;\n isFunction(submitBtn.click)\n ? submitBtn.click(fApi)\n : fApi.submit();\n }\n }\n }, [submitBtn.innerText])\n ]);\n }\n}\n","import {creatorTypeFactory} from '@form-create/core';\n\nconst name = 'datePicker';\n\nexport default ['date', 'dateRange', 'dateTime', 'dateTimeRange', 'year', 'month'].reduce((maker, type) => {\n maker[type] = creatorTypeFactory(name, type.toLowerCase());\n return maker;\n}, {});","import {creatorTypeFactory} from '@form-create/core';\n\nconst name = 'frame';\n\nconst 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\nconst maker = Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorTypeFactory(name, m => m.props({type: types[key][0], maxLength: types[key][1]}));\n return maker\n}, {});\n\n\nmaker.frameInput = maker.frameInputs;\nmaker.frameFile = maker.frameFiles;\nmaker.frameImage = maker.frameImages;\n\nexport default maker;","import {creatorTypeFactory} from '@form-create/core';\n\nconst name = 'input';\n\nconst maker = ['password', 'url', 'email', 'text', 'textarea'].reduce((maker, type) => {\n maker[type] = creatorTypeFactory(name, type);\n return maker;\n}, {});\n\nmaker.idate = creatorTypeFactory(name, 'date');\n\nexport default maker;","import {creatorTypeFactory} from '@form-create/core';\n\nconst name = 'select';\n\nexport default {\n selectMultiple: creatorTypeFactory(name, true, 'multiple'),\n selectOne: creatorTypeFactory(name, false, 'multiple'),\n};","import {creatorTypeFactory} from '@form-create/core';\n\nconst name = 'slider';\n\nexport default {\n sliderRange: creatorTypeFactory(name, true, 'range')\n};","import {creatorTypeFactory} from '@form-create/core';\n\nconst name = 'timePicker';\n\nexport default {\n time: creatorTypeFactory(name, 'time'),\n timeRange: creatorTypeFactory(name, 'timerange')\n};","import {creatorTypeFactory} from '@form-create/core';\n\nconst name = 'tree';\n\nconst types = {'treeSelected': 'selected', 'treeChecked': 'checked'};\n\nexport default Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorTypeFactory(name, types[key]);\n return maker;\n}, {});","import {creatorTypeFactory} from '@form-create/core';\n\nconst name = 'upload';\n\nconst types = {\n image: ['image', 0],\n file: ['file', 0],\n uploadFileOne: ['file', 1],\n uploadImageOne: ['image', 1],\n};\n\nconst maker = Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorTypeFactory(name, m => m.props({uploadType: types[key][0], maxLength: types[key][1]}));\n return maker\n}, {});\n\nmaker.uploadImage = maker.image;\nmaker.uploadFile = maker.file;\n\nexport default maker;","import {creatorFactory} from '@form-create/core';\nimport datePicker from './datePicker';\nimport frame from './frame';\nimport input from './input';\nimport select from './select';\nimport slider from './slider';\nimport timePicker from './timePicker';\nimport tree from './tree';\nimport upload from './upload';\n\nconst maker = {...datePicker, ...frame, ...input, ...select, ...slider, ...timePicker, ...tree, ...upload},\n names = ['autoComplete', 'cascader', 'colorPicker', 'datePicker', 'frame', 'inputNumber', 'radio', 'rate', 'timePicker', 'group'];\n\nnames.forEach(name => {\n maker[name] = creatorFactory(name);\n});\n\nmaker.auto = maker.autoComplete;\nmaker.number = maker.inputNumber;\nmaker.color = maker.colorPicker;\nmaker.hidden = (field, value) => creatorFactory('hidden')('', field, value);\n\nexport default maker;\n","import components from '../components';\nimport parsers from '../parsers';\nimport getConfig from './config';\nimport nodes from './nodes';\nimport formRender from './form';\nimport createFormCreate, {Creator, VNode} from '@form-create/core';\nimport makers from '../makers';\nimport {isPlainObject, toString} from '@form-create/utils';\n\nVNode.use(nodes);\n\nexport const drive = {\n ui: process.env.UI,\n version: process.env.VERSION,\n formRender,\n components,\n parsers,\n makers,\n getConfig,\n};\n\nconst {FormCreate, install} = createFormCreate(drive);\n\nCreator.prototype.event = function (key, value) {\n let event;\n\n if (!isPlainObject(key)) {\n event = {[key]: value}\n } else {\n event = key;\n }\n\n Object.keys(event).forEach((eventName) => {\n const name = toString(eventName).indexOf('on-') === 0 ? eventName : `on-${eventName}`;\n this.on(name, event[eventName]);\n });\n return this;\n};\n\nif (typeof window !== 'undefined') {\n window.formCreate = FormCreate;\n if (window.Vue) {\n install(window.Vue);\n }\n}\n\nexport default FormCreate;\n","import FormCreate from './core/index';\n\n\nconst maker = FormCreate.maker;\n\nexport {maker}\n\nexport default FormCreate;\n"],"names":["_extends","Object","assign","a","b","c","arguments","length","d","prototype","hasOwnProperty","call","apply","this","normalMerge","toArrayMerge","functionalMerge","mergeJsxProps","reduce","indexOf","Array","e","concat","f","g","h","i","mergeFn","$set","target","field","value","Vue","set","$del","delete","isValidChildren","children","isArray","_toString","toString","isUndef","v","val","_typeof","JSON","stringify","String","extend","to","_from","key","debounce","fn","wait","timeout","arg","clearTimeout","setTimeout","isType","type","isDate","isPlainObject","isFunction","isString","isBool","toLine","name","line","replace","toLowerCase","substr","toArray","isElement","nodeType","deepExtend","origin","mode","isArr","clone","nst","undefined","_clone","getRule","deepExtendArgs","lst","forEach","id","uniqueId","toDefSlot","slot","$h","timeStampToDate","timeStamp","date","Date","preventDefault","hasSlot","slotName","some","child","data","errMsg","NAME","props","options","default","ctx","watch","update","trueValue","unique","methods","onInput","n","$emit","filter","opt","label","map","_this","option","created","render","_this2","index","chlidren","iview2","_v","resetBtnType","resetBtnIcon","submitBtnIcon","fileIcon","fileUpIcon","imgUpIcon","infoIcon","removeIcon","addIcon","iview3","iviewConfig","iview","version","split","getConfig","form","inline","labelPosition","labelWidth","showMessage","autocomplete","size","row","gutter","align","justify","className","info","trigger","placement","wordWrap","icon","submitBtn","shape","long","htmlType","disabled","innerText","loading","show","col","click","resetBtn","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","helper","Boolean","src","required","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","modalVm","closeModel","close","$off","showModel","makeInput","readonly","clearable","makeGroup","push","makeBtn","makeItem","valid","Error","makeIcons","icons","makeHandleIcon","makeRemoveIcon","handleClick","_this3","handleRemove","makeFiles","_this4","makeImages","_this5","_this6","splice","frameLoad","iframe","_this7","get","$on","onClose","console","log","makeFooter","$props","node","_this8","$nextTick","_this9","$refs","frame","contentWindow","functional","treeData","setStatus","tree","selected","checked","_data","makeTree","updateTreeData","toLocaleLowerCase","getSelectedNodes","getCheckedNodes","mounted","$watch","flatState","parseFile","file","url","getFileName","pop","uploadType","uploadList","showUploadList","defaultFileList","upload","every","status","o","isDisabled","makeDefaultBtn","makeProgress","percent","percentage","hideInfo","showProgress","makeUpload","display","initChildren","files","handleCancel","isShow","deep","formCreateName","$FormCreate","FormCreate","components","componentName","rule","formData","buttonProps","resetProps","$f","formCreate","_buttonProps","_resetProps","_refresh","handle","reloadRule","beforeCreate","$options","propsData","api","beforeDestroy","$render","clearCacheAll","objects","initial","arrA","arrB","event","hook","fn1","fn2","defVData","on","VData","init","classList","merge","class","keys","keyList","objList","obj","vdataField","baseRule","validate","control","emit","template","emitPrefix","native","creatorFactory","Creator","creatorTypeFactory","typeName","maker","constructor","keyAttrs","attr","objAttrs","arrAttrs","PREFIX","SUFFIX","toJson","_isVue","__inject","__origin","__emit","makeFn","eval","parseJson","json","parse","k","error","enumerable","configurable","copyRule","copyRules","rules","commonMaker","create","make","createTmp","vm","makerFactory","toMaker","ruleToMaker","r","defineProperties","find","findField","model","parseVData","domProps","innerHTML","getVNode","VNode","setVm","$createElement","nodeName","VNodeFn","Node","context","nodes","use","fragment","BaseParser","vData","vNode","originType","isDef","el","refName","formItemRefName","root","ctrlRule","modelEvent","parent","$handle","deleted","formValue","$de","Render","fc","$form","cache","renderList","parser","clear","cacheStatus","refresh","clearCache","vnode","parsers","orgChildren","beforeRender","vn","sortList","renderParser","global","toData","compile","getInjectData","setTemplateProps","fCreateApi","setGlobalConfig","renderTemplate","setCache","isNoVal","defaultRender","renderChildren","container","getCache","custom","parserToData","subForm","addSubForm","prop","getFormData","inputVData","__fc__","removeField","isset","vdata","fApi","Api","tidyFields","fields","all","fieldList","getValue","setValue","changeValue","changeField","getParser","__origin__","destroy","$el","parentNode","removeChild","$destroy","append","after","isChild","prepend","hidden","hiddenStatus","visibility","visibilityStatus","trueData","component","customData","bind","properties","submitBtnProps","resetBtnProps","updateOptions","onSubmit","sync","hideForm","changeStatus","clearChangeStatus","updateRule","cover","updateRules","updateValidate","updateValidates","validates","method","once","$once","off","args","callback","subLen","state","___this","sub","len","validFn","clearValidateState","validateField","resetFields","resetField","refreshControl","submit","successFn","failFn","clearSub","clearSubValidateState","getSubForm","btn","closeModal","Handle","watching","__init","drive","formRender","loadRule","initOrgChildren","issetRule","modelList","modelEvents","_rule","parseOn","parseProps","createParser","parseRule","notField","setParser","bindParser","defineProperty","valueHandle","toValue","isChange","setFormData","toFormValue","valueChange","def","defRule","parseArray","parseInjectEvent","margeEmit","emitEvent","parseEmit","injectEvent","inject","self","_fn","unshift","emitKey","config","eventName","_fieldKey","fieldKey","run","validateControl","writable","immediate","controls","getControl","removeControl","addParserWitch","defaultValue","mountedParser","onReload","delParser","unWatch","__field__","_vue","window","createFormCreate","globalConfig","_id","get$FormCreate","margeGlobal","_options","querySelector","body","bindAttr","ui","$vm","$data","$mount","params","$parent","_opt","_installedFormCreate","$formCreate","mount","remove","makers","install","BaseForm","mCol","pCol","button","max","min","fontSize","cacheRule","group$f","fieldRule","computed","formRule","handler","total","addRule","removeRule","add$f","syncData","$delete","add","del","delIcon","makeIcon","$scopedSlots","checkbox","radio","select","group","input","Parser","startDate","includes","multiple","formatDate","separator","isRange","_toValue","parseValue","time","parseDate","autosize","minRows","range","parseFloat","switch","scopedSlots","open","datePicker","slider","iswitch","rate","cascader","colorPicker","timePicker","inputNumber","formItem","autoComplete","isTooltip","Form","getFormRef","fItem","validateMessage","validateState","nativeOn","makeFormBtn","makeRow","_class","makeFormItem","fItemUnique","getGetCol","_col","makeFormPop","makeCol","titleProp","svn","content","span","cls","__fc_h","__fc_v","submitBtnShow","resetBtnShow","makeSubmitBtn","makeResetBtn","types","frameInputs","frameFiles","frameImages","frameInputOne","frameFileOne","frameImageOne","m","frameInput","frameFile","frameImage","idate","selectMultiple","selectOne","sliderRange","timeRange","image","uploadFileOne","uploadImageOne","uploadImage","uploadFile","names","auto","number","color","process"],"mappings":"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"}
\No newline at end of file