@form-create/view-design 2.5.8 → 2.5.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/form-create.js +699 -483
- package/dist/form-create.min.js +2 -2
- package/dist/form-create.min.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-create.min.js","sources":["../../../node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js","../../utils/lib/slot.js","../../../components/iview/checkbox/src/component.jsx","../../utils/lib/toarray.js","../../../node_modules/style-inject/dist/style-inject.es.js","../../../components/iview/frame/src/component.jsx","../../../components/iview/frame/src/index.js","../../../components/iview/radio/src/component.jsx","../../utils/lib/type.js","../../../components/iview/select/src/component.jsx","../../../components/iview/tree/src/component.jsx","../../../components/iview/upload/src/component.jsx","../../../components/iview/upload/src/index.js","../../../components/iview/group/src/component.jsx","../../../components/iview/group/src/index.js","../../../components/common/subform/src/component.jsx","../../iview/src/components/index.js","../../utils/lib/modify.js","../../utils/lib/extend.js","../../core/src/components/formCreate.js","../../utils/lib/mergeprops.js","../../core/src/frame/attrs.js","../../utils/lib/deepextend.js","../../utils/lib/console.js","../../core/src/frame/util.js","../../utils/lib/tostring.js","../../utils/lib/toline.js","../../utils/lib/unique.js","../../utils/lib/deepset.js","../../core/src/factory/creator.js","../../core/src/factory/maker.js","../../core/src/frame/api.js","../../core/src/render/cache.js","../../utils/lib/tocase.js","../../core/src/render/render.js","../../core/src/render/index.js","../../core/src/handler/inject.js","../../core/src/handler/page.js","../../core/src/handler/render.js","../../core/src/factory/context.js","../../core/src/handler/loader.js","../../core/src/handler/input.js","../../core/src/handler/helper.js","../../core/src/factory/parser.js","../../core/src/handler/context.js","../../core/src/handler/lifecycle.js","../../core/src/handler/effect.js","../../core/src/handler/index.js","../../core/src/frame/fetch.js","../../core/src/components/fragment.js","../../core/src/factory/node.js","../../core/src/factory/manager.js","../../core/src/frame/provider.js","../../core/src/frame/index.js","../../iview/src/parsers/datePicker.js","../../iview/src/parsers/hidden.js","../../iview/src/parsers/input.js","../../iview/src/parsers/slider.js","../../iview/src/parsers/switch.js","../../iview/src/parsers/row.js","../../iview/src/parsers/index.js","../../iview/src/core/alias.js","../../iview/src/core/config.js","../../iview/src/core/manager.js","../../iview/src/core/maker.js","../../iview/src/core/api.js","../../iview/src/core/index.js","../../iview/src/index.js"],"sourcesContent":["\"use strict\";function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_extends.apply(this,arguments)}var normalMerge=[\"attrs\",\"props\",\"domProps\"],toArrayMerge=[\"class\",\"style\",\"directives\"],functionalMerge=[\"on\",\"nativeOn\"],mergeJsxProps=function(a){return a.reduce(function(c,a){for(var b in a)if(!c[b])c[b]=a[b];else if(-1!==normalMerge.indexOf(b))c[b]=_extends({},c[b],a[b]);else if(-1!==toArrayMerge.indexOf(b)){var d=c[b]instanceof Array?c[b]:[c[b]],e=a[b]instanceof Array?a[b]:[a[b]];c[b]=d.concat(e)}else if(-1!==functionalMerge.indexOf(b)){for(var f in a[b])if(c[b][f]){var g=c[b][f]instanceof Array?c[b][f]:[c[b][f]],h=a[b][f]instanceof Array?a[b][f]:[a[b][f]];c[b][f]=g.concat(h)}else c[b][f]=a[b][f];}else if(\"hook\"==b)for(var i in a[b])c[b][i]=c[b][i]?mergeFn(c[b][i],a[b][i]):a[b][i];else c[b]=a[b];return c},{})},mergeFn=function(a,b){return function(){a&&a.apply(this,arguments),b&&b.apply(this,arguments)}};module.exports=mergeJsxProps;\n","export default function getSlot(slots, exclude) {\n return Object.keys(slots).reduce((lst, name) => {\n if (!exclude || exclude.indexOf(name) === -1) {\n lst.push(slots[name])\n }\n return lst;\n }, [])\n}","import getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcCheckbox';\n\nexport default {\n name: NAME,\n props: {\n formCreateRule: {\n type: Object,\n default: () => ({})\n },\n formCreateOptions: {\n type: Array,\n default: () => []\n },\n value: {\n type: Array,\n default: () => []\n },\n },\n watch: {\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n methods: {\n onInput(n) {\n this.$emit('input', this.formCreateOptions.filter((opt) => n.indexOf(opt.label) !== -1).map((opt) => opt.value).filter(v => v !== undefined));\n },\n update() {\n this.trueValue = this.value ? this.formCreateOptions.filter((opt) => this.value.indexOf(opt.value) !== -1)\n .map((option) => option.label) : []\n }\n },\n created() {\n this.update();\n },\n render() {\n return <CheckboxGroup {...this.formCreateRule} value={this.trueValue}\n on-input={this.onInput}>{this.formCreateOptions.map((opt, index) => {\n const props = {...opt};\n delete props.value;\n return <Checkbox {...{props}} key={'' + index + opt.value}/>\n })}{getSlot(this.$slots)}</CheckboxGroup>\n }\n}\n","export default function toArray(value) {\n return Array.isArray(value)\n ? value\n : ([null, undefined, ''].indexOf(value) > -1 ? [] : [value]);\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import toArray from '@form-create/utils/lib/toarray';\nimport './style.css'\n\nconst NAME = 'fcFrame';\n\nexport default function createFrame(config) {\n return {\n name: NAME,\n props: {\n formCreateField: String,\n type: {\n type: String,\n default: 'input'\n },\n field: String,\n helper: {\n type: Boolean,\n default: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n src: {\n type: String,\n required: true\n },\n icon: {\n type: String,\n default: config.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 previewVisible: false,\n frameVisible: false,\n previewImage: ''\n }\n },\n watch: {\n value(n) {\n this.fileList = toArray(n);\n },\n fileList(n) {\n const val = this.maxLength === 1 ? (n[0] || '') : n;\n this.$emit('input', val);\n this.$emit('change', val);\n },\n src(n) {\n this.modalVm && (this.modalVm.src = n);\n }\n },\n methods: {\n key(unique) {\n return unique;\n },\n closeModel(close) {\n this.$emit(close ? '$close' : '$ok');\n if (this.reload) {\n this.$off('$ok');\n this.$off('$close');\n }\n this.frameVisible = false;\n },\n showModel() {\n if (this.disabled || false === this.onOpen()) return;\n this.frameVisible = true;\n },\n\n makeInput() {\n const props = {\n type: 'text',\n value: (this.fileList.map(v => this.getSrc(v))).toString(),\n icon: this.icon,\n readonly: true,\n clearable: false\n };\n\n return <Input props={props} on={{'on-click': () => this.showModel()}} key={this.key('input')}/>\n },\n\n makeGroup(children) {\n if (!this.maxLength || this.fileList.length < this.maxLength)\n children.push(this.makeBtn());\n return <div key={this.key('group')}>{...children}</div>\n },\n\n makeItem(index, children) {\n return <div class='fc-files' key={this.key('file' + index)}>{...children}</div>;\n },\n valid(f) {\n const field = this.formCreateField || this.field;\n if (field && f !== field)\n throw new Error('[frame]无效的字段值');\n },\n\n makeIcons(val, index) {\n if (this.handleIcon !== false || this.allowRemove === true) {\n const icons = [];\n if ((this.type !== 'file' && this.handleIcon !== false) || (this.type === 'file' && this.handleIcon))\n icons.push(this.makeHandleIcon(val, index));\n if (this.allowRemove)\n icons.push(this.makeRemoveIcon(val, index));\n\n return <div class='fc-upload-cover' key={this.key('uc')}>{icons}</div>\n }\n },\n makeHandleIcon(val, index) {\n return <icon\n props={{type: (this.handleIcon === true || this.handleIcon === undefined) ? 'ios-eye-outline' : this.handleIcon}}\n on-click={() => this.handleClick(val)} key={this.key('hi' + index)}/>\n },\n\n makeRemoveIcon(val, index) {\n return <icon props={{type: 'ios-trash-outline'}} on-click={() => this.handleRemove(val)}\n key={this.key('ri' + index)}/>\n },\n\n makeFiles() {\n return this.makeGroup(this.fileList.map((src, index) => {\n return this.makeItem(index, [<icon props={{type: config.fileIcon, size: 40}}\n on-click={() => this.handleClick(src)}/>, this.makeIcons(src, index)])\n }))\n },\n makeImages() {\n return this.makeGroup(this.fileList.map((src, index) => {\n return this.makeItem(index, [<img src={this.getSrc(src)}/>, this.makeIcons(src, index)])\n }))\n },\n makeBtn() {\n return <div class='fc-upload-btn' on-click={() => this.showModel()}\n key={this.key('btn')}>\n <icon props={{type: this.icon, size: 20}}/>\n </div>\n },\n handleClick(src) {\n 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 !(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 class=\"_fc-frame\">{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 mounted() {\n this.$on('fc.closeModal', this.closeModal);\n }\n };\n}\n","import createFrame from './component';\n\nconst frame = createFrame({\n fileIcon: 'md-document',\n fileUpIcon: 'ios-folder-open',\n});\n\n\nframe.v2 = createFrame({\n fileIcon: 'document-text',\n fileUpIcon: 'folder',\n});\n\nexport default frame;\n","import getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcRadio';\n\nexport default {\n name: NAME,\n props: {\n formCreateRule: {\n type: Object,\n default: () => ({})\n },\n formCreateOptions: {\n type: Array,\n default: () => []\n },\n value: {}\n },\n watch: {\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n methods: {\n onInput(n) {\n this.$emit('input', this.formCreateOptions.filter((opt) => opt.label === n).reduce((initial, opt) => opt.value, ''));\n },\n update() {\n this.trueValue = this.formCreateOptions.filter((opt) => opt.value === this.value).reduce((initial, opt) => opt.label, '');\n }\n },\n created() {\n this.update();\n },\n render() {\n return <RadioGroup {...this.formCreateRule} value={this.trueValue}\n on-input={this.onInput}>{this.formCreateOptions.map((opt, index) => {\n const props = {...opt};\n delete props.value;\n return <Radio {...{props}} key={'' + index + opt.value}/>\n })}{getSlot(this.$slots)}</RadioGroup>\n }\n}\n","const is = {\n type(arg, type) {\n return Object.prototype.toString.call(arg) === '[object ' + type + ']'\n },\n Undef(v) {\n return v === undefined || v === null\n },\n Element(arg) {\n return typeof arg === 'object' && arg !== null && arg.nodeType === 1 && !is.Object(arg)\n },\n trueArray(data) {\n return Array.isArray(data) && data.length > 0;\n }\n};\n\n['Date', 'Object', 'Function', 'String', 'Boolean', 'Array', 'Number'].forEach(t => {\n is[t] = function (arg) {\n return is.type(arg, t);\n }\n})\n\nexport function hasProperty(rule, k) {\n return ({}).hasOwnProperty.call(rule, k)\n}\n\nexport default is;\n","import is from '@form-create/utils/lib/type';\n\nconst NAME = 'fcSelect';\nexport default {\n name: NAME,\n functional: true,\n props: {\n formCreateOptions: {\n type: Array,\n default: () => ([])\n },\n },\n render(h, ctx) {\n return <Select {...ctx.data}>{ctx.props.formCreateOptions.map((props, index) => {\n const slot = props.slot;\n return <Option {...{props}}\n key={'' + index + props.value}>\n {slot ? <template\n slot={props.slotName || 'default'}>{is.Function(slot) ? props.slot(h) : slot}</template> : null}\n </Option>\n })}{ctx.children}</Select>;\n }\n}\n","import toArray from '@form-create/utils/lib/toarray';\nimport getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcTree';\n\nexport default {\n name: NAME,\n props: {\n formCreateRule: {\n type: Object,\n default: () => ({props: {}})\n },\n type: {\n type: String,\n default: 'checked'\n },\n value: {\n type: [Array, String, Number],\n default: () => []\n }\n },\n data() {\n return {\n treeData: []\n }\n },\n watch: {\n value(n) {\n this.setStatus(n);\n }\n },\n created() {\n this.setStatus(this.value);\n },\n methods: {\n setStatus(value) {\n const n = toArray(value);\n const data = this.formCreateRule.props.data;\n this.type === 'selected' ? this.checked(data, n, 'selected') : this.checked(data, n, 'checked');\n this.$forceUpdate();\n },\n checked(_data, value, type) {\n _data.forEach((node) => {\n this.$set(node, type, value.indexOf(node.id) !== -1);\n if (node.children !== undefined && Array.isArray(node.children))\n this.checked(node.children, value, type);\n });\n },\n onInput(list) {\n this.$emit('input', list.map(node => node.id));\n }\n },\n render() {\n const on = {};\n if (this.type === 'selected') {\n on['on-select-change'] = this.onInput;\n } else {\n on['on-check-change'] = this.onInput;\n }\n return <Tree {...this.formCreateRule} ref=\"tree\" on={on}>{getSlot(this.$slots)}</Tree>;\n },\n mounted() {\n this.onInput(this.type === 'selected' ? this.$refs.tree.getSelectedNodes() : this.$refs.tree.getCheckedNodes());\n }\n}\n","import toArray from '@form-create/utils/lib/toarray';\nimport './style.css';\nimport getSlot from '@form-create/utils/lib/slot';\n\nfunction parseFile(file) {\n return {\n url: file,\n name: getFileName(file)\n };\n}\n\nfunction getFileName(file) {\n return ('' + file).split('/').pop()\n}\n\nconst NAME = 'fcUpload';\n\n\nexport default function createUpload(config) {\n return {\n name: NAME,\n props: {\n formCreateRule: {\n type: Object,\n default: () => ({props: {}})\n },\n onHandle: {\n type: Function,\n default(file) {\n this.previewImage = file.url;\n this.previewVisible = true;\n }\n },\n uploadType: {\n type: String,\n default: 'file'\n },\n maxLength: {\n type: Number,\n default: 0\n },\n allowRemove: {\n type: Boolean,\n default: true\n },\n modalTitle: String,\n handleIcon: {\n type: [String, Boolean],\n default: () => undefined\n },\n value: [Array, String]\n },\n data() {\n return {\n uploadList: [],\n previewVisible: false,\n previewImage: ''\n }\n },\n created() {\n if (this.formCreateRule.props.showUploadList === undefined)\n this.formCreateRule.props.showUploadList = false;\n this.formCreateRule.props.defaultFileList = toArray(this.value).map(parseFile);\n },\n watch: {\n value(n) {\n if (this.$refs.upload.fileList.every(file => {\n return !file.status || file.status === 'finished';\n })) {\n this.$refs.upload.fileList = toArray(n).map(parseFile);\n this.uploadList = this.$refs.upload.fileList;\n }\n },\n maxLength(n, o) {\n if (o === 1 || n === 1)\n this.update();\n }\n },\n methods: {\n key(unique) {\n return unique;\n },\n isDisabled() {\n return this.formCreateRule.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 makeItem(file, index) {\n return this.uploadType === 'image'\n ? <img src={file.url} key={this.key('img' + index)}/>\n : <icon props={{type: config.fileIcon, size: 40}} key={this.key('i' + index)}/>\n },\n makeRemoveIcon(file, index) {\n return <icon type='ios-trash-outline' on-click={() => this.onRemove(file)}\n key={this.key('ri' + index)}/>;\n },\n makeHandleIcon(file, index) {\n return <icon\n type={(this.handleIcon === true || this.handleIcon === undefined) ? 'ios-eye-outline' : this.handleIcon}\n on-click={() => this.handleClick(file)} key={this.key('hi' + index)}/>;\n },\n makeProgress(file, index) {\n return <Progress props={{percent: file.percentage, hideInfo: true}} style=\"width:90%\"\n key={this.key('pg' + index)}/>\n },\n makeIcons(file, index) {\n const icons = [];\n if (this.allowRemove || this.handleIcon !== false) {\n if ((this.uploadType !== 'file' && this.handleIcon !== false) || (this.uploadType === 'file' && this.handleIcon))\n icons.push(this.makeHandleIcon(file, index));\n if (this.allowRemove)\n icons.push(this.makeRemoveIcon(file, index));\n\n return <div class=\"fc-upload-cover\">{icons}</div>;\n }\n },\n makeFiles() {\n return this.uploadList.map((file, index) => this.$scopedSlots.fileList ? this.$scopedSlots.fileList({\n file,\n index,\n vm: this\n }) : <div key={this.key(index)}\n class=\"fc-files\">{file.showProgress ? this.makeProgress(file, index) : [this.makeItem(file, index), this.makeIcons(file, index)]}</div>);\n },\n makeUpload() {\n const isShow = (!this.maxLength || this.maxLength > this.uploadList.length);\n return <Upload {...this.formCreateRule} ref=\"upload\"\n style={{display: 'inline-block'}}\n key={this.key('upload')}>\n {isShow ? <template slot=\"default\">\n {this.$slots.default || <div class=\"fc-upload-btn\">\n <icon props={{\n type: this.uploadType === 'file' ? 'ios-cloud-upload-outline' : config.imgUpIcon,\n size: 20\n }}/>\n </div>}\n </template> : null}{getSlot(this.$slots,['default'])}\n </Upload>;\n },\n update() {\n let files = this.$refs.upload.fileList.map((file) => file.url).filter((url) => url !== undefined);\n this.$emit('input', this.maxLength === 1 ? (files[0] || '') : files);\n },\n handleCancel() {\n this.previewVisible = false;\n },\n },\n render() {\n if (this.$refs.upload) {\n if (this.formCreateRule.props.showUploadList === undefined)\n this.formCreateRule.props.showUploadList = this.$refs.upload.showUploadList;\n this.formCreateRule.props.defaultFileList = this.$refs.upload.defaultFileList;\n }\n return (\n <div\n class=\"_fc-upload\">{[this.formCreateRule.props.showUploadList ? [] : this.makeFiles(), this.makeUpload()]}\n <Modal 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}\n","import createUpload from './component';\n\nconst upload = createUpload({\n\n fileIcon: 'md-document',\n imgUpIcon: 'md-images',\n});\n\nupload.v2 = createUpload({\n\n fileIcon: 'document-text',\n imgUpIcon: 'image',\n});\n\nexport default upload;\n","import {hasProperty} from '@form-create/utils/lib/type';\n\nconst NAME = 'fcGroup';\n\nexport default function createGroup(config) {\n return {\n name: NAME,\n props: {\n field: String,\n rule: [Array, Object],\n rules: Array,\n expand: Number,\n options: Object,\n formCreate: Object,\n button: {\n type: Boolean,\n default: true\n },\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n value: {\n type: Array,\n default: () => []\n },\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n fontSize: {\n type: Number,\n default: 28\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onBeforeAdd: {\n type: Function,\n default: () => {\n }\n },\n },\n data() {\n return {\n len: 0,\n cacheRule: {},\n cacheValue: {},\n }\n },\n computed: {\n formRule() {\n if (this.rule) {\n return Array.isArray(this.rule) ? this.rule : [this.rule];\n }\n if (this.rules) {\n return this.rules;\n }\n return [];\n }\n },\n watch: {\n disabled(n) {\n if (this.syncDisabled) {\n const lst = this.cacheRule;\n Object.keys(lst).forEach(k => {\n lst[k].$f.disabled(n);\n })\n }\n },\n expand(n) {\n let d = n - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n },\n value(n) {\n n = n || [];\n let keys = Object.keys(this.cacheRule), total = keys.length, len = total - n.length;\n if (len < 0) {\n for (let i = len; i < 0; i++) {\n this.addRule(n.length + i);\n }\n for (let i = 0; i < total; i++) {\n this.setValue(keys[i], n[i]);\n }\n } else {\n if (len > 0) {\n for (let i = 0; i < len; i++) {\n this.removeRule(keys[total - i - 1]);\n }\n this.subForm();\n }\n n.forEach((val, i) => {\n this.setValue(keys[i], n[i]);\n });\n }\n }\n },\n methods: {\n _value(v) {\n return (v && hasProperty(v, this.field)) ? v[this.field] : v;\n },\n cache(k, val) {\n this.cacheValue[k] = JSON.stringify(val);\n },\n input(value) {\n this.$emit('input', value);\n this.$emit('change', value);\n },\n formData(key, formData) {\n const cacheRule = this.cacheRule;\n const keys = Object.keys(cacheRule);\n if (keys.filter(k => cacheRule[k].$f).length !== keys.length) {\n return;\n }\n const value = keys.map(k => {\n const data = key === k ? formData : {...this.cacheRule[k].$f.form};\n const value = this.field ? data[this.field] || null : data;\n this.cache(k, value);\n return value;\n });\n this.input(value);\n },\n setValue(key, value) {\n const field = this.field, $f = this.cacheRule[key].$f;\n if (field) {\n value = {[field]: this._value(value)};\n }\n if (this.cacheValue[key] === JSON.stringify(field ? value[field] : value)) {\n return;\n }\n this.cache(key, value);\n $f.coverValue(value || {});\n },\n addRule(i, emit) {\n const rule = this.$formCreate.copyRules(this.formRule);\n const options = this.options ? {...this.options} : {\n submitBtn: false,\n resetBtn: false,\n };\n options.formData = this.field ? ({[this.field]: this._value(this.value[i])}) : (this.value[i] || {});\n this.$set(this.cacheRule, ++this.len, {rule, options});\n if (emit) {\n this.$nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));\n }\n },\n add$f(i, key, $f) {\n this.cacheRule[key].$f = $f;\n this.subForm();\n this.$nextTick(() => {\n if (this.syncDisabled) {\n $f.disabled(this.disabled);\n }\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n subForm() {\n this.$emit('fc.sub-form', Object.keys(this.cacheRule).map(k => this.cacheRule[k].$f));\n },\n removeRule(key, emit) {\n const index = Object.keys(this.cacheRule).indexOf(key);\n this.$delete(this.cacheRule, key);\n this.$delete(this.cacheValue, key);\n if (emit) {\n this.$nextTick(() => this.$emit('remove', index));\n }\n },\n add(i) {\n if (this.disabled || false === this.onBeforeAdd(this.value)) {\n return;\n }\n this.addRule(i, true);\n },\n del(index, key) {\n if (this.disabled || false === this.onBeforeRemove(this.value)) {\n return;\n }\n this.removeRule(key, true);\n this.subForm();\n this.value.splice(index, 1);\n this.input(this.value);\n },\n addIcon(key) {\n return <Icon key={`a${key}`} type={config.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(index, key) {\n return <Icon key={`d${key}`} type={config.removeIcon}\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}\n on-click={() => this.del(index, key)}/>;\n },\n makeIcon(total, index, key) {\n if (this.$scopedSlots.button) {\n return this.$scopedSlots.button({\n total,\n index,\n vm: this,\n key,\n del: () => this.del(index, key),\n add: this.add\n });\n }\n if (index === 0) {\n return [(this.max !== 0 && total >= this.max) ? null : this.addIcon(key), (this.min === 0 || total > this.min) ? this.delIcon(index, key) : null];\n }\n if (index >= this.min) {\n return this.delIcon(index, key);\n }\n },\n emitEvent(name, args, index, key) {\n this.$emit(name, ...args, this.cacheRule[key].$f, index);\n },\n expandRule(n) {\n for (let i = 0; i < n; i++) {\n this.value.push(this.field ? null : {});\n }\n }\n },\n created() {\n const d = (this.expand || 0) - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n for (let i = 0; i < this.value.length; i++) {\n this.addRule(i);\n }\n },\n render() {\n const keys = Object.keys(this.cacheRule);\n const button = this.button;\n return keys.length === 0 ?\n (this.$scopedSlots.default ? (this.$scopedSlots.default({\n vm: this,\n add: this.add\n })) : <Icon key={'a_def'} type={config.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 key={'con'}>{keys.map((key, index) => {\n const {rule, options} = this.cacheRule[key];\n return <Row align=\"middle\" type=\"flex\" key={key}\n style=\"border-bottom:1px dashed #dcdee2;margin-bottom:10px;\">\n <Col span={button ? 20 : 24}><FormItem><FormCreate\n key={key}\n on={{\n 'update:value': (formData) => this.formData(key, formData),\n 'emit-event': (name, ...args) => this.emitEvent(name, args, index, key),\n input: ($f) => this.add$f(index, key, $f)\n }}\n rule={rule}\n option={options} extendOption={true}/></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}\n","import createGroup from './component';\n\nconst group = createGroup({\n removeIcon: 'ios-remove-circle-outline',\n addIcon: 'ios-add-circle-outline',\n});\n\ngroup.v2 = createGroup({\n addIcon: 'ios-plus-outline',\n removeIcon: 'ios-minus-outline',\n})\n\nexport default group;\n","const NAME = 'fcSubForm';\n\nexport default {\n name: NAME,\n props: {\n rule: Array,\n options: Object,\n formCreate: Object,\n value: {\n type: Object,\n default: () => ({})\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n cacheRule: {},\n cacheValue: {},\n }\n },\n watch: {\n disabled(n) {\n this.cacheRule.$f.disabled(n);\n },\n value(n) {\n this.setValue(n);\n }\n },\n methods: {\n formData(value) {\n this.cacheValue = JSON.stringify(value);\n this.$emit('input', value);\n this.$emit('change', value);\n },\n setValue(value) {\n const str = JSON.stringify(value);\n if (this.cacheValue === str) {\n return;\n }\n this.cacheValue = str;\n this.cacheRule.$f.coverValue(value || {});\n },\n addRule() {\n const options = this.options ? this.options : {\n submitBtn: false,\n resetBtn: false,\n };\n options.formData = {...(this.value || {})};\n this.cacheRule = {rule: this.rule, options};\n },\n add$f($f) {\n this.cacheRule.$f = $f;\n this.subForm();\n this.$nextTick(() => {\n $f.disabled(this.disabled);\n this.$emit('itemMounted', $f);\n });\n },\n subForm() {\n this.$emit('fc.sub-form', this.cacheRule.$f);\n },\n emitEvent(name, ...args) {\n this.$emit(name, ...args);\n }\n },\n created() {\n this.addRule();\n },\n render() {\n const {rule, options} = this.cacheRule;\n return <FormCreate\n on={{\n 'update:value': this.formData,\n 'emit-event': this.emitEvent,\n input: this.add$f\n }}\n rule={rule}\n option={options} extendOption={true}/>\n }\n}\n","import checkbox from '@form-create/component-ivu-checkbox/src/index';\nimport frame from '@form-create/component-ivu-frame/src/index';\nimport radio from '@form-create/component-ivu-radio/src/index';\nimport select from '@form-create/component-ivu-select/src/index';\nimport tree from '@form-create/component-ivu-tree/src/index';\nimport upload from '@form-create/component-ivu-upload/src/index';\nimport group from '@form-create/component-ivu-group/src/index';\nimport subForm from '@form-create/component-subform/src/index';\n\nexport default [\n checkbox,\n radio,\n select,\n tree,\n subForm,\n frame,\n upload,\n group\n];\n","import Vue from 'vue';\n\nexport function $set(target, field, value) {\n Vue.set(target, field, value);\n}\n\nexport function $del(target, field) {\n Vue.delete(target, field);\n}\n","import {$set} from './modify';\n\nconst _extends = Object.assign || function (a) {\n for (let b, c = 1; c < arguments.length; c++) {\n for (let d in b = arguments[c], b) {\n Object.prototype.hasOwnProperty.call(b, d) && ($set(a, d, b[d]));\n }\n }\n\n return a;\n}\n\nexport default function extend() {\n return _extends.apply(this, arguments);\n}\n\nexport function copy(obj) {\n if (typeof obj !== 'object' || obj === null) return obj;\n return obj instanceof Array ? [...obj] : {...obj};\n}\n","import extend from '@form-create/utils/lib/extend';\n\nconst NAME = 'FormCreate';\n\nexport default function $FormCreate(FormCreate) {\n return {\n name: NAME,\n componentName: NAME,\n model: {\n prop: 'api'\n },\n provide() {\n return {\n $pfc: this,\n }\n },\n inject: {$pfc: {default: null}},\n props: {\n rule: {\n type: Array,\n required: true\n },\n option: {\n type: Object,\n default: () => {\n return {};\n }\n },\n extendOption: Boolean,\n value: Object,\n api: Object,\n },\n data() {\n return {\n formData: undefined,\n destroyed: false,\n validate: {},\n $f: undefined,\n isShow: true,\n unique: 1,\n renderRule: [...this.rule || []],\n updateValue: ''\n };\n },\n render() {\n return this.formCreate.render();\n },\n methods: {\n _refresh() {\n ++this.unique;\n },\n _renderRule() {\n this.renderRule = [...this.rule || []];\n },\n _updateValue(value) {\n if (this.destroyed) return;\n this.updateValue = JSON.stringify(value);\n this.$emit('update:value', value);\n }\n },\n watch: {\n value: {\n handler(n) {\n if (JSON.stringify(n) === this.updateValue) return;\n this.$f.setValue(n);\n },\n deep: true\n },\n option: {\n handler(n) {\n this.formCreate.initOptions(n);\n this.$f.refresh();\n },\n deep: true\n },\n rule(n) {\n if (n.length === this.renderRule.length && n.every(v => this.renderRule.indexOf(v) > -1)) return;\n this.formCreate.$handle.reloadRule(n);\n this._renderRule();\n }\n },\n beforeCreate() {\n const {rule, option, value} = this.$options.propsData;\n this.formCreate = new FormCreate(this, rule, option);\n extend(this.formCreate.options.formData, value || {});\n Object.keys(this.formCreate.prop).forEach(k => {\n extend(this.$options[k], this.formCreate.prop[k]);\n })\n },\n }\n}\n","export const normalMerge = ['attrs', 'props', 'domProps', 'scopedSlots'];\nexport const toArrayMerge = ['class', 'style', 'directives'];\nexport const functionalMerge = ['on', 'nativeOn'];\n\nconst mergeProps = (objects, initial = {}, opt = {}) => {\n const _normalMerge = [...normalMerge, ...opt['normal'] || []];\n const _toArrayMerge = [...toArrayMerge, ...opt['array'] || []];\n const _functionalMerge = [...functionalMerge, ...opt['functional'] || []];\n const propsMerge = opt['props'] || [];\n\n return objects.reduce((a, b) => {\n for (const key in b) {\n if (a[key]) {\n if (propsMerge.indexOf(key) > -1) {\n a[key] = mergeProps([b[key]], a[key]);\n } else if (_normalMerge.indexOf(key) > -1) {\n a[key] = {...a[key], ...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n const arrA = a[key] instanceof Array ? a[key] : [a[key]];\n const arrB = b[key] instanceof Array ? b[key] : [b[key]];\n a[key] = [...arrA, ...arrB]\n } else if (_functionalMerge.indexOf(key) > -1) {\n for (const event in b[key]) {\n if (a[key][event]) {\n const arrA = a[key][event] instanceof Array ? a[key][event] : [a[key][event]];\n const arrB = b[key][event] instanceof Array ? b[key][event] : [b[key][event]];\n a[key][event] = [...arrA, ...arrB]\n } else {\n a[key][event] = b[key][event]\n }\n }\n } else if (key === 'hook') {\n for (let hook in b[key]) {\n if (a[key][hook]) {\n a[key][hook] = mergeFn(a[key][hook], b[key][hook])\n } else {\n a[key][hook] = b[key][hook]\n }\n }\n } else {\n a[key] = b[key]\n }\n } else {\n if (_normalMerge.indexOf(key) > -1 || _functionalMerge.indexOf(key) > -1 || propsMerge.indexOf(key) > -1) {\n a[key] = {...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n a[key] = b[key] instanceof Array ? [...b[key]] : (typeof b[key] === 'object' ? {...b[key]} : b[key]);\n } else\n a[key] = b[key];\n }\n }\n return a\n }, initial);\n}\n\nconst mergeFn = (fn1, fn2) =>\n function () {\n fn1 && fn1.apply(this, arguments);\n fn2 && fn2.apply(this, arguments);\n };\n\nexport default mergeProps;\n","import {functionalMerge, normalMerge, toArrayMerge} from '@form-create/utils/lib/mergeprops';\n\n\nexport const keyAttrs = ['type', 'slot', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'nativeEmit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key'];\n\nexport const arrayAttrs = ['validate', 'children', 'control'];\n\nexport const normalAttrs = ['effect'];\n\nexport function attrs() {\n return [...keyAttrs, ...normalMerge, ...toArrayMerge, ...functionalMerge, ...arrayAttrs, ...normalAttrs];\n}\n","import {$set} from './modify';\nimport is from './type';\n\nexport default function deepExtend(origin, target = {}, mode) {\n let isArr = false;\n for (let key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n let clone = target[key];\n if ((isArr = Array.isArray(clone)) || is.Object(clone)) {\n let nst = origin[key] === undefined;\n if (isArr) {\n isArr = false;\n nst && $set(origin, key, []);\n } else if (clone._clone && mode !== undefined) {\n if (mode) {\n clone = clone.getRule();\n nst && $set(origin, key, {});\n } else {\n $set(origin, key, clone._clone());\n continue;\n }\n } else {\n nst && $set(origin, key, {});\n }\n origin[key] = deepExtend(origin[key], clone, mode);\n } else {\n $set(origin, key, clone);\n }\n }\n }\n return (mode !== undefined && Array.isArray(origin)) ? origin.filter(v => !v || !v.__ctrl) : origin\n}\n\nexport function deepCopy(value) {\n return deepExtend({}, {value}).value;\n}\n\nexport function deepExtendArgs(origin, ...lst) {\n lst.forEach(target => {\n origin = deepExtend(origin, target);\n });\n return origin;\n}\n","export function format(type, msg, rule) {\n return (`[form-create ${type}]: ${msg}` + (rule ? ('\\n\\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule)) : ''))\n}\n\nexport function tip(msg, rule) {\n console.warn(format('tip', msg, rule));\n}\n\nexport function err(msg, rule) {\n console.error(format('err', msg, rule));\n}\n\nexport function logError(e) {\n err(e.toString());\n console.error(e);\n}\n","import deepExtend from '@form-create/utils/lib/deepextend';\nimport is from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {arrayAttrs, normalAttrs} from './attrs';\nimport {err, logError} from '@form-create/utils/lib/console';\n\nconst PREFIX = '[[FORM-CREATE-PREFIX-';\nconst SUFFIX = '-FORM-CREATE-SUFFIX]]';\n\nconst $T = '$FN:';\nconst FUNCTION = 'function';\n\nexport function toJson(obj, space) {\n return JSON.stringify(deepExtend([], obj, true), function (key, val) {\n if (val && val._isVue === true)\n return undefined;\n\n if (typeof val !== FUNCTION) {\n return val;\n }\n if (val.__inject)\n val = val.__origin;\n\n if (val.__emit)\n return undefined;\n\n return PREFIX + val + SUFFIX;\n }, space);\n}\n\nfunction makeFn(fn) {\n return eval('(' + FUNCTION + '(){return ' + fn + ' })()')\n}\n\nexport function parseFn(fn, mode) {\n if (fn && is.String(fn)) {\n let v = fn.trim();\n let flag = false;\n if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {\n v = v.replace(SUFFIX, '').replace(PREFIX, '');\n flag = true;\n } else if (v.indexOf($T) === 0) {\n v = v.replace($T, '');\n flag = true;\n }else if(!mode && v.indexOf(FUNCTION) === 0 && v !== FUNCTION){\n flag = true;\n }\n if(!flag) return fn;\n try{\n return makeFn(v.indexOf(FUNCTION) === -1 && v.indexOf('(') !== 0 ? (FUNCTION + ' ' + v) : v);\n }catch (e){\n err(`解析失败:${v}`);\n return undefined;\n }\n }\n return fn;\n}\n\nexport function parseJson(json, mode) {\n return JSON.parse(json, function (k, v) {\n if (is.Undef(v) || !v.indexOf) return v;\n return parseFn(v, mode);\n });\n}\n\nexport function enumerable(value, writable) {\n return {\n value,\n enumerable: false,\n configurable: false,\n writable: !!writable\n }\n}\n\n//todo 优化位置\nexport function copyRule(rule, mode) {\n return copyRules([rule], mode || false)[0];\n}\n\nexport function copyRules(rules, mode) {\n return deepExtend([], [...rules], mode || false);\n}\n\nexport function mergeRule(rule, merge) {\n mergeProps(Array.isArray(merge) ? merge : [merge], rule, {array: arrayAttrs, normal: normalAttrs});\n return rule;\n}\n\nexport function getRule(rule) {\n return is.Function(rule.getRule) ? rule.getRule() : rule;\n}\n\nexport function mergeGlobal(target, merge) {\n if (!target) return merge;\n Object.keys(merge || {}).forEach((k) => {\n if (merge[k]) {\n target[k] = mergeRule(target[k] || {}, merge[k])\n }\n });\n return target;\n}\n\nexport function funcProxy(that, proxy) {\n Object.defineProperties(that, Object.keys(proxy).reduce((initial, k) => {\n initial[k] = {\n get() {\n return proxy[k]();\n }\n }\n return initial;\n }, {}))\n}\n\nexport function byCtx(rule) {\n return rule.__fc__ || (rule.__origin__ ? rule.__origin__.__fc__ : null)\n}\n\nexport function invoke(fn, def) {\n try {\n def = fn()\n } catch (e) {\n logError(e);\n }\n return def;\n}\n","export default function toString(val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n","export default function toLine(name) {\n let line = name.replace(/([A-Z])/g, '-$1').toLocaleLowerCase();\n if (line.indexOf('-') === 0)\n line = line.substr(1);\n return line;\n}\n","let id = 0;\n\nexport default function uniqueId() {\n return Math.random().toString(36).substr(3, 3) + Number(`${Date.now()}${++id}`).toString(36);\n}\n","export default function deepSet(data, idx, val) {\n let _data = data, to;\n (idx || '').split('.').forEach(v => {\n if (to) {\n if(!_data[to]) {\n _data[to] = {}\n }\n _data = _data[to];\n }\n to = v;\n })\n _data[to] = val;\n return _data;\n}","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {attrs} from '../frame/attrs';\nimport {copyRule, mergeRule} from '../frame/util';\nimport {$set} from '@form-create/utils/lib';\n\nexport function baseRule() {\n return {\n props: {},\n on: {},\n options: [],\n children: [],\n hidden: false,\n display: true,\n value: undefined,\n };\n}\n\nexport function creatorFactory(name, init) {\n return (title, field, value, props = {}) => {\n const maker = new Creator(name, title, field, value, props);\n if (init) {\n if (is.Function(init)) init(maker);\n else maker.props(init);\n }\n return maker;\n };\n}\n\nexport default function Creator(type, title, field, value, props) {\n this._data = extend(baseRule(), {type, title, field, value, props: props || {}});\n this.event = this.on;\n}\n\nextend(Creator.prototype, {\n getRule() {\n return this._data;\n },\n setProp(key, value) {\n $set(this._data, key, value);\n return this;\n },\n _clone() {\n const clone = new this.constructor();\n clone._data = copyRule(this._data);\n return clone;\n },\n})\n\nexport function appendProto(attrs) {\n attrs.forEach(name => {\n Creator.prototype[name] = function (key) {\n mergeRule(this._data, {[name]: arguments.length < 2 ? key : {[key]: arguments[1]}})\n return this;\n };\n });\n}\n\nappendProto(attrs());\n","import {creatorFactory} from './creator';\n\nconst commonMaker = creatorFactory('');\n\nexport function create(type, field, title) {\n let make = commonMaker('', field);\n make._data.type = type;\n make._data.title = title;\n return make;\n}\n\nexport function createTmp(template, vm, field, title) {\n let make = commonMaker('', field);\n make._data.type = 'template';\n make._data.template = template;\n make._data.title = title;\n make._data.vm = vm;\n return make;\n}\n\nexport default function makerFactory() {\n return {\n create,\n createTmp,\n template: createTmp,\n factory: creatorFactory\n };\n}\n","import {byCtx, invoke, mergeRule, toJson} from './util';\nimport {$set} from '@form-create/utils/lib/modify';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {err, format} from '@form-create/utils/lib/console';\n\n\nfunction copy(value) {\n return deepCopy(value);\n}\n\nfunction byRules(ctxs, origin) {\n return Object.keys(ctxs).reduce((initial, key) => {\n initial[key] = origin ? ctxs[key].origin : ctxs[key].rule;\n return initial;\n }, {});\n}\n\nexport default function Api(h) {\n\n function tidyFields(fields) {\n if (is.Undef(fields))\n fields = h.fields();\n else if (!Array.isArray(fields))\n fields = [fields];\n return fields;\n }\n\n function props(fields, key, val) {\n tidyFields(fields).forEach(field => {\n const ctx = h.getCtx(field);\n if (!ctx) return;\n $set(ctx.rule, key, val);\n h.$render.clearCache(ctx);\n })\n }\n\n function allSubForm() {\n const subs = h.subForm;\n return Object.keys(subs).reduce((initial, k) => {\n const sub = subs[k];\n if (!sub) return initial;\n if (Array.isArray(sub))\n initial.push(...sub);\n else\n initial.push(sub);\n return initial;\n }, []);\n }\n\n const api = {\n helper: {\n tidyFields, props\n },\n get config() {\n return h.options\n },\n get options() {\n return h.options\n },\n get form() {\n return h.form\n },\n get rule() {\n return h.rules\n },\n get parent() {\n return h.vm.$pfc && h.vm.$pfc.$f\n },\n get children() {\n return allSubForm();\n },\n formData(fields) {\n return tidyFields(fields).reduce((initial, id) => {\n const ctx = h.fieldCtx[id];\n if (!ctx) return initial;\n initial[ctx.field] = copy(ctx.rule.value);\n return initial;\n }, {});\n },\n getValue(field) {\n const ctx = h.fieldCtx[field];\n if (!ctx) return;\n return copy(ctx.rule.value);\n },\n coverValue(formData) {\n h.deferSyncValue(() => {\n Object.keys(h.fieldCtx).forEach(key => {\n const ctx = h.fieldCtx[key];\n if (!ctx) return h.appendData[key] = formData[key];\n ctx.rule.value = hasProperty(formData, key) ? formData[key] : undefined;\n });\n })\n },\n setValue(field) {\n let formData = field;\n if (arguments.length >= 2)\n formData = {[field]: arguments[1]};\n h.deferSyncValue(() => {\n Object.keys(formData).forEach(key => {\n const ctx = h.fieldCtx[key];\n if (!ctx) return h.appendData[key] = formData[key];\n ctx.rule.value = formData[key];\n });\n })\n },\n removeField(field) {\n let ctx = h.getCtx(field);\n if (!ctx) return;\n ctx.rm();\n return ctx.origin;\n },\n removeRule(rule) {\n const ctx = rule && byCtx(rule);\n if (!ctx) return;\n ctx.rm();\n return ctx.origin;\n },\n destroy: () => {\n h.vm.$el.parentNode && h.vm.$el.parentNode.removeChild(h.vm.$el);\n h.vm.$destroy();\n },\n fields: () => h.fields(),\n append: (rule, after, child) => {\n let fields = Object.keys(h.fieldCtx), index = h.sort.length - 1, rules;\n\n if (rule.field && fields.indexOf(rule.field) > -1)\n return err(`${rule.field} 字段已存在`, rule);\n\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n index = ctx.rule.children.length - 1;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index + 1, 0, rule);\n },\n prepend: (rule, after, child) => {\n let fields = Object.keys(h.fieldCtx), index = 0, rules;\n\n if (rule.field && fields.indexOf(rule.field) > -1)\n return err(`${rule.field} 字段已存在`, rule);\n\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index, 0, rule);\n },\n hidden(state, fields) {\n props(fields, 'hidden', !!state);\n h.refresh();\n },\n hiddenStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.hidden;\n },\n display(state, fields) {\n props(fields, 'display', !!state);\n h.refresh();\n },\n displayStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.display;\n },\n disabled(disabled, fields) {\n tidyFields(fields).forEach((field) => {\n const ctx = h.fieldCtx[field];\n if (!ctx) return;\n $set(ctx.rule.props, 'disabled', !!disabled);\n });\n h.refresh();\n },\n model(origin) {\n return byRules(h.fieldCtx, origin);\n },\n component(origin) {\n return byRules(h.nameCtx, origin);\n },\n bind() {\n return api.form;\n },\n reload: (rules) => {\n h.reloadRule(rules)\n },\n updateOptions(options) {\n h.fc.updateOptions(options);\n api.refresh();\n },\n onSubmit(fn) {\n api.updateOptions({onSubmit: fn});\n },\n sync: (field) => {\n const ctx = is.Object(field) ? byCtx(field) : h.getCtx(field);\n if (ctx && !ctx.deleted) {\n const subForm = h.subForm[field];\n if (subForm) {\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.refresh();\n })\n } else if (subForm) {\n subForm.refresh();\n }\n }\n //ctx.updateKey(true);\n h.$render.clearCache(ctx);\n h.refresh();\n }\n },\n refresh: () => {\n allSubForm().forEach(sub => {\n sub.refresh();\n });\n h.$render.clearCacheAll();\n h.refresh();\n },\n refreshOptions() {\n h.$manager.updateOptions(h.options);\n api.refresh();\n },\n hideForm: (hide) => {\n $set(h.vm, 'isShow', !hide);\n },\n changeStatus: () => {\n return h.changeStatus;\n },\n clearChangeStatus: () => {\n h.changeStatus = false;\n },\n updateRule(id, rule) {\n const r = api.getRule(id);\n r && extend(r, rule);\n },\n updateRules(rules) {\n Object.keys(rules).forEach(id => {\n api.updateRule(id, rules[id]);\n })\n },\n mergeRule: (id, rule) => {\n const ctx = h.getCtx(id);\n ctx && mergeRule(ctx.rule, rule);\n },\n mergeRules(rules) {\n Object.keys(rules).forEach(id => {\n api.mergeRule(id, rules[id]);\n })\n },\n getRule: (id, origin) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return origin ? ctx.origin : ctx.rule;\n }\n },\n updateValidate(id, validate, merge) {\n if (merge) {\n api.mergeRule(id, {validate})\n } else {\n props(id, 'validate', validate);\n }\n },\n updateValidates(validates, merge) {\n Object.keys(validates).forEach(id => {\n api.updateValidate(id, validates[id], merge);\n })\n },\n refreshValidate() {\n h.vm.validate = {};\n api.refresh();\n },\n resetFields(fields) {\n let ctxs = h.fieldCtx;\n tidyFields(fields).forEach(field => {\n let ctx = ctxs[field];\n if (!ctx) return;\n h.$render.clearCache(ctx);\n ctx.rule.value = copy(ctx.defaultValue);\n h.refreshControl(ctx);\n });\n },\n method(id, name) {\n const el = api.el(id);\n if (!el || !el[name])\n throw new Error(format('err', `${name}方法不存在`));\n return (...args) => {\n return el[name](...args);\n }\n },\n exec(id, name, ...args) {\n return invoke(() => api.method(id, name)(...args));\n },\n toJson(space) {\n return toJson(api.rule, space);\n },\n trigger(id, event, ...args) {\n const el = api.el(id);\n el && el.$emit(event, ...args);\n },\n el(id) {\n const ctx = h.getCtx(id);\n if (ctx) return ctx.el || h.vm.$refs[ctx.ref];\n },\n closeModal: (id) => {\n const el = api.el(id);\n el && el.$emit && el.$emit('close-modal');\n },\n getSubForm(field) {\n return h.subForm[field];\n },\n nextTick(fn) {\n h.bus.$once('next-tick', fn);\n h.refresh();\n },\n nextRefresh(fn) {\n h.nextRefresh();\n fn && invoke(fn);\n }\n };\n\n ['on', 'once', 'off', 'set'].forEach(n => {\n api[n] = function (...args) {\n h.vm[`$${n}`](...args);\n }\n });\n\n api.changeValue = api.changeField = api.setValue;\n\n return api;\n}\n","import extend from '@form-create/utils/lib/extend';\n\nexport default function useCache(Render) {\n extend(Render.prototype, {\n initCache() {\n this.clearCacheAll();\n },\n clearCache(ctx) {\n if (!this.cache[ctx.id]) {\n ctx.parent && this.clearCache(ctx.parent);\n return;\n }\n if (this.cache[ctx.id].use === true || this.cache[ctx.id].parent) {\n this.$handle.refresh();\n }\n const parent = this.cache[ctx.id].parent;\n this.cache[ctx.id] = null;\n parent && this.clearCache(parent);\n },\n clearCacheAll() {\n this.cache = {};\n },\n setCache(ctx, vnode, parent) {\n this.cache[ctx.id] = {\n vnode,\n use: false,\n parent\n };\n },\n getCache(ctx) {\n const cache = this.cache[ctx.id];\n cache.use = true;\n return cache.vnode;\n }\n })\n\n}\n","export default function toCase(str) {\n const to = str.replace(/(-[a-z])/g, function (v) {\n return v.replace('-', '').toLocaleUpperCase();\n });\n\n return lower(to);\n}\n\nexport function lower(str) {\n return str.replace(str[0], str[0].toLowerCase());\n}\n","import extend from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {_vue as Vue} from '../frame';\nimport {tip} from '@form-create/utils/lib/console';\nimport {invoke, mergeRule} from '../frame/util';\nimport toCase, {lower} from '@form-create/utils/lib/tocase';\nimport {deepSet} from '@form-create/utils';\n\nfunction setTempProps(vm, ctx, api) {\n if (!vm.$props) return;\n\n const {prop} = ctx;\n const keys = Object.keys(vm.$props);\n const inject = injectProp(ctx, api);\n const injectKeys = Object.keys(inject);\n\n keys.forEach(key => {\n if (hasProperty(prop.props, key))\n vm.$props[key] = prop.props[key];\n else if (injectKeys.indexOf(key) > -1) vm.$props[key] = inject[key];\n });\n\n const key = (vm.$options.model && vm.$options.model.prop) || 'value';\n if (keys.indexOf(key) > -1) {\n vm.$props[key] = prop.value;\n }\n}\n\nfunction injectProp(ctx, api) {\n return {\n formCreate: api,\n formCreateField: ctx.field,\n formCreateOptions: ctx.prop.options,\n formCreateRule: (function () {\n const temp = {...ctx.prop};\n return temp.on = temp.on ? {...temp.on} : {}, temp;\n }()),\n }\n}\n\n\nexport default function useRender(Render) {\n extend(Render.prototype, {\n initRender() {\n this.renderList = {};\n this.clearOrgChildren();\n },\n initOrgChildren() {\n const ctxs = this.$handle.ctxs;\n this.orgChildren = Object.keys(ctxs).reduce((initial, id) => {\n const children = ctxs[id].rule.children;\n initial[id] = is.trueArray(children) ? [...children] : [];\n\n return initial;\n }, {});\n\n },\n clearOrgChildren() {\n this.orgChildren = {};\n },\n render() {\n if (!this.vm.isShow) {\n return;\n }\n this.$h = this.vm.$createElement;\n this.$manager.beforeRender();\n\n const vn = this.sort.map((id) => {\n return this.renderCtx(this.$handle.ctxs[id]);\n }).filter((val) => val !== undefined);\n\n return this.$manager.render(vn);\n },\n makeVm(rule) {\n const vm = rule.vm;\n if (!vm)\n return new Vue;\n else if (is.Function(vm))\n return invoke(() => vm(this.$handle.getInjectData(rule)));\n else if (!vm._isVue)\n return new Vue(vm);\n return vm;\n },\n mergeGlobal(ctx) {\n const g = this.$handle.options.global;\n if (!g) return;\n //todo 缓存配置,更新 option 更新\n if (!ctx.cacheConfig)\n ctx.cacheConfig = g[ctx.originType] || g[ctx.type] || g[ctx.trueType] || {};\n ctx.prop = mergeRule({}, [g['*'], ctx.cacheConfig, ctx.prop]);\n },\n setOptions(ctx) {\n if (ctx.prop.optionsTo && ctx.prop.options) {\n deepSet(ctx.prop, ctx.prop.optionsTo, ctx.prop.options);\n }\n },\n renderTemp(ctx) {\n if (!Vue.compile) {\n tip('当前使用的Vue构建版本不支持compile,无法使用template功能');\n return [];\n }\n const rule = ctx.prop;\n const {id, key} = ctx;\n\n if (!this.renderList[id]) {\n if (!ctx.el) {\n ctx.el = this.makeVm(rule);\n this.vm.$nextTick(() => ctx.parser.mounted(ctx));\n }\n\n let vm = ctx.el;\n if (ctx.input)\n vm.$on((vm.$options.model && vm.$options.model.event) || 'input', (value) => {\n this.onInput(ctx, value);\n });\n\n this.renderList[id] = {\n vm,\n template: Vue.compile(rule.template)\n };\n }\n\n const {vm, template} = this.renderList[id];\n\n setTempProps(vm, ctx, this.$handle.api);\n\n const vn = template.render.call(vm);\n\n if (is.Undef(vn.data)) vn.data = {};\n vn.key = key;\n vn.data.ref = ctx.ref;\n vn.data.key = key;\n return vn;\n },\n renderSides(vn, ctx, temp) {\n const prop = ctx[temp ? 'rule' : 'prop'];\n return [this.renderRule(prop.prefix), vn, this.renderRule(prop.suffix)];\n },\n renderCtx(ctx, parent) {\n if (ctx.type === 'hidden') return;\n if (!this.cache[ctx.id]) {\n let vn;\n let cacheFlag = true;\n const _type = ctx.trueType;\n const none = !(is.Undef(ctx.rule.display) || !!ctx.rule.display);\n if (_type === 'template' && !ctx.rule.template) {\n vn = this.renderSides(this.renderChildren(ctx), ctx, true);\n if (none) {\n this.display(vn);\n }\n vn = this.item(ctx, vn);\n } else if (_type === 'fcFragment') {\n vn = this.renderChildren(ctx);\n } else {\n ctx.initProp();\n this.mergeGlobal(ctx);\n this.$manager.tidyRule(ctx);\n this.setOptions(ctx);\n this.ctxProp(ctx);\n let prop = ctx.prop;\n\n if (prop.hidden) {\n this.setCache(ctx, undefined, parent);\n return;\n }\n\n if (_type === 'template' && prop.template) {\n vn = this.renderTemp(ctx);\n cacheFlag = false;\n } else {\n vn = ctx.parser.render(this.renderChildren(ctx), ctx);\n }\n vn = this.renderSides(vn, ctx);\n if ((!(!ctx.input && is.Undef(prop.native))) && prop.native !== true) {\n vn = this.$manager.makeWrap(ctx, vn);\n }\n if (none) {\n vn = this.display(vn);\n }\n vn = this.item(ctx, vn)\n }\n if (cacheFlag) {\n this.setCache(ctx, vn, parent);\n }\n return vn;\n }\n\n return this.getCache(ctx);\n },\n display(vn) {\n if (Array.isArray(vn)) {\n const data = [];\n vn.forEach(v => {\n if (Array.isArray(v)) return this.display(v);\n if (this.none(v)) data.push(v);\n })\n return data;\n } else {\n return this.none(vn);\n }\n },\n none(vn) {\n if (vn && vn.data) {\n if (Array.isArray(vn.data.style)) {\n vn.data.style.push({display: 'none'});\n } else {\n vn.data.style = [vn.data.style, {display: 'none'}];\n }\n return vn;\n }\n },\n item(ctx, vn) {\n return this.$h('fcFragment', {\n slot: ctx.rule.slot,\n key: ctx.key,\n }, [vn]);\n },\n ctxProp(ctx, custom) {\n const {ref, key, rule} = ctx;\n this.$manager.mergeProp(ctx, custom);\n ctx.parser.mergeProp(ctx, custom);\n const props = [\n {\n props: injectProp(ctx, this.$handle.api),\n ref: ref,\n key: rule.key || `${key}fc`,\n slot: undefined,\n }\n ]\n\n if (!custom) {\n props.push({\n on: {\n 'hook:mounted': () => {\n this.onMounted(ctx);\n },\n 'fc.sub-form': (subForm) => {\n this.$handle.addSubForm(ctx, subForm);\n }\n },\n model: ctx.input ? {\n value: this.$handle.getFormData(ctx),\n callback: (value) => {\n this.onInput(ctx, value);\n },\n expression: `formData.${ctx.field}`\n } : undefined,\n })\n }\n mergeProps(props, ctx.prop);\n return ctx.prop;\n },\n onMounted(ctx) {\n ctx.el = this.vm.$refs[ctx.ref];\n ctx.parser.mounted(ctx);\n this.$handle.effect(ctx, 'mounted');\n },\n onInput(ctx, value) {\n this.$handle.onInput(ctx, value);\n },\n renderChildren(ctx) {\n const {children} = ctx.rule, orgChildren = this.orgChildren[ctx.id];\n\n const isRm = child => {\n return !is.String(child) && child.__fc__ && !this.$handle.ctxs[child.__fc__.id];\n }\n\n if (!is.trueArray(children) && orgChildren) {\n this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n this.orgChildren[ctx.id] = [];\n return [];\n }\n\n orgChildren && this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (children.indexOf(child) === -1 && isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n\n return children.map(child => {\n if (!child) return;\n if (is.String(child)) return child;\n if (child.__fc__) {\n return this.renderCtx(child.__fc__, ctx);\n }\n if (!this.$handle.isRepeatRule(child.__origin__ || child) && child.type) {\n this.vm.$nextTick(() => {\n this.$handle.loadChildren(children, ctx);\n this.$handle.refresh();\n });\n }\n });\n\n },\n defaultRender(ctx, children) {\n const prop = ctx.prop;\n if (this.vNode[ctx.type])\n return this.vNode[ctx.type](prop, children);\n if (this.vNode[ctx.originType])\n return this.vNode[ctx.originType](prop, children);\n return this.vNode.make(lower(ctx.originType), prop, children);\n },\n renderRule(rule, children, origin) {\n if (!rule) return undefined;\n if (is.String(rule)) return rule;\n\n let type;\n if (origin) {\n type = rule.type;\n } else {\n type = rule.is;\n if (rule.type) {\n type = toCase(rule.type);\n const alias = this.vNode.aliasMap[type];\n if (alias) type = toCase(alias);\n }\n }\n\n if (!type) return undefined;\n let data = [[children]];\n if (is.trueArray(rule.children)) {\n data.push(rule.children.map(v => this.renderRule(v)));\n }\n return this.$h(type, {...rule}, data);\n }\n })\n}\n","import useCache from './cache';\nimport useRender from './render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\n\nexport default function Render(handle) {\n extend(this, {\n $handle: handle,\n fc: handle.fc,\n vm: handle.vm,\n $manager: handle.$manager,\n vNode: new handle.fc.CreateNode(handle.vm),\n });\n\n funcProxy(this, {\n options() {\n return handle.options;\n },\n sort() {\n return handle.sort;\n }\n })\n\n this.initCache();\n this.initRender();\n}\n\nuseCache(Render);\nuseRender(Render)\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport toLine from '@form-create/utils/lib/toline';\n\n\nexport default function useInject(Handler) {\n extend(Handler.prototype, {\n parseInjectEvent(rule, on) {\n if (rule.inject === false) return;\n const inject = rule.inject || this.options.injectEvent;\n if (is.Undef(inject)) return;\n Object.keys(on).forEach(k => {\n if (is.Function(on[k]))\n on[k] = this.inject(rule, on[k], inject)\n });\n return on;\n },\n parseEmit(ctx, on) {\n let event = {}, rule = ctx.rule, {emitPrefix, field, name, inject} = rule;\n let emit = rule[on ? 'emit' : 'nativeEmit'] || [];\n if (is.trueArray(emit)) {\n let emitKey = emitPrefix || field || name;\n if (emitKey) {\n if (!on) emitKey = `native-${emitKey}`;\n emit.forEach(eventName => {\n if (!eventName) return;\n let eventInject;\n if (is.Object(eventName)) {\n eventInject = eventName.inject;\n eventName = eventName.name;\n }\n const fieldKey = toLine(`${emitKey}-${eventName}`);\n const fn = (...arg) => {\n this.vm.$emit(fieldKey, ...arg);\n this.vm.$emit('emit-event', fieldKey, ...arg);\n };\n fn.__emit = true;\n\n if (!eventInject && inject === false) {\n event[eventName] = fn;\n } else {\n let _inject = eventInject || inject || this.options.injectEvent;\n event[eventName] = is.Undef(_inject) ? fn : this.inject(rule, fn, _inject);\n }\n });\n }\n\n }\n ctx.computed[on ? 'on' : 'nativeOn'] = event;\n return event;\n },\n getInjectData(self, inject) {\n const {option, rule} = this.vm.$options.propsData;\n return {\n $f: this.api,\n rule,\n self: self.__origin__,\n option,\n inject\n };\n },\n inject(self, _fn, inject) {\n if (_fn.__inject) {\n if (this.watching && !this.loading)\n return _fn;\n _fn = _fn.__origin;\n }\n\n const h = this;\n\n const fn = function (...args) {\n args.unshift(h.getInjectData(self, inject));\n return _fn.apply(this, args);\n };\n fn.__inject = true;\n fn.__origin = _fn;\n return fn;\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\n\nconst EVENT = ['hook:updated', 'hook:mounted'];\n\nexport default function usePage(Handler) {\n extend(Handler.prototype, {\n usePage() {\n const page = this.options.page;\n if (!page) return;\n let first = 25;\n let limit = getLimit(this.rules);\n if (is.Object(page)) {\n if (page.first) first = parseInt(page.first, 10) || first;\n if (page.limit) limit = parseInt(page.limit, 10) || limit;\n }\n extend(this, {\n first,\n limit,\n pageEnd: this.rules.length <= first,\n })\n\n this.bus.$on('page-end', () => this.vm.$emit('page-end', this.api));\n this.pageLoad();\n },\n pageLoad() {\n const pageFn = () => {\n if (this.pageEnd) {\n this.vm.$off(EVENT, pageFn);\n this.bus.$emit('page-end');\n } else {\n this.first += this.limit;\n this.pageEnd = this.rules.length <= this.first;\n this.loadRule();\n this.refresh();\n }\n }\n this.vm.$on(EVENT, pageFn);\n },\n })\n}\n\n\nfunction getLimit(rules) {\n return rules.length < 31 ? 31 : Math.ceil(rules.length / 3);\n}\n","import extend from '@form-create/utils/lib/extend';\n\n\nexport default function useRender(Handler) {\n extend(Handler.prototype, {\n clearNextTick() {\n this.nextTick && clearTimeout(this.nextTick);\n this.nextTick = null;\n },\n bindNextTick(fn) {\n this.clearNextTick();\n this.nextTick = setTimeout(() => {\n fn()\n this.nextTick = null;\n }, 10);\n },\n render() {\n // console.warn('%c render', 'color:green');\n ++this.loadedId;\n\n if (this.vm.unique > 0)\n return this.$render.render();\n else {\n this.vm.unique = 1;\n return [];\n }\n },\n });\n}\n","import unique from '@form-create/utils/lib/unique';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {enumerable} from '../frame/util';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\n\nfunction bind(ctx) {\n Object.defineProperties(ctx.origin, {\n __fc__: enumerable(ctx, true)\n });\n}\n\nexport default function RuleContext(handle, rule) {\n const id = unique();\n\n extend(this, {\n id,\n ref: id,\n wrapRef: id + 'fi',\n rule,\n origin: rule.__origin__ || rule,\n name: rule.name,\n\n watch: [],\n linkOn: [],\n root: [],\n ctrlRule: [],\n parent: null,\n cacheConfig: null,\n prop: {...rule},\n computed: {},\n payload: {},\n input: !!rule.field,\n el: undefined,\n defaultValue: rule.field ? deepCopy(rule.value) : undefined,\n field: rule.field || undefined,\n })\n\n this.updateType();\n this.updateKey();\n bind(this);\n this.update(handle, true);\n}\n\nextend(RuleContext.prototype, {\n effectData(name) {\n if (!this.payload[name]) {\n this.payload[name] = {};\n }\n return this.payload[name];\n },\n clearEffectData(name) {\n delete this.payload[name]\n },\n updateKey(flag) {\n this.key = unique();\n flag && this.parent && this.parent.updateKey(flag);\n },\n updateType() {\n this.originType = this.rule.type;\n this.type = toCase(this.rule.type);\n },\n setParser(parser) {\n this.parser = parser;\n parser.init(this);\n },\n initProp() {\n this.prop = mergeProps([this.rule, ...Object.keys(this.payload).map(k => this.payload[k]), this.computed]);\n },\n check(handle) {\n return this.vm === handle.vm\n },\n unwatch() {\n this.watch.forEach(un => un());\n this.watch = [];\n },\n unlink() {\n this.linkOn.forEach(un => un());\n this.linkOn = [];\n },\n link() {\n this.unlink();\n this.$handle.appendLink(this);\n },\n watchTo() {\n this.$handle.watchCtx(this);\n },\n delete() {\n const undef = void 0;\n this.unwatch();\n this.unlink();\n this.rmCtrl();\n extend(this, {\n deleted: true,\n prop: {...this.rule},\n computed: {},\n el: undef,\n $handle: undef,\n $render: undef,\n $api: undef,\n vm: undef,\n vNode: undef,\n parent: null,\n cacheConfig: null,\n })\n },\n rmCtrl() {\n this.ctrlRule.forEach(ctrl => ctrl.__fc__.rm());\n this.ctrlRule = [];\n },\n rm() {\n const _rm = () => {\n let index = this.root.indexOf(this.origin);\n if (index > -1) {\n this.root.splice(index, 1);\n this.$handle.refresh();\n }\n }\n if (this.deleted) {\n _rm();\n return;\n }\n this.$handle.noWatch(() => {\n this.$handle.deferSyncValue(() => {\n this.rmCtrl();\n _rm();\n this.$handle.rmCtx(this);\n extend(this, {\n root: []\n });\n });\n });\n },\n update(handle, init) {\n extend(this, {\n deleted: false,\n $handle: handle,\n $render: handle.$render,\n $api: handle.api,\n vm: handle.vm,\n trueType: handle.getType(this.originType),\n vNode: handle.$render.vNode,\n updated: false,\n });\n !init && this.unwatch();\n this.watchTo();\n this.link();\n }\n})\n","import extend from '@form-create/utils/lib/extend';\nimport {byCtx, copyRule, enumerable, getRule, invoke, parseFn} from '../frame/util';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {err} from '@form-create/utils/lib/console';\nimport {baseRule} from '../factory/creator';\nimport RuleContext from '../factory/context';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\n\nexport default function useLoader(Handler) {\n extend(Handler.prototype, {\n nextRefresh(fn) {\n const id = this.loadedId;\n this.vm.$nextTick(() => {\n id === this.loadedId && (fn ? fn() : this.refresh());\n });\n },\n parseRule(_rule) {\n const rule = getRule(_rule);\n\n Object.defineProperties(rule, {\n __origin__: enumerable(_rule, true)\n });\n\n fullRule(rule);\n\n if (rule.field && hasProperty(this.options.formData || {}, rule.field))\n rule.value = this.options.formData[rule.field];\n\n rule.options = Array.isArray(rule.options) ? rule.options : [];\n\n ['on', 'props', 'nativeOn'].forEach(k => {\n const v = rule[k];\n if (v) {\n Object.keys(v).forEach(n => {\n v[n] = parseFn(v[n]);\n })\n this.parseInjectEvent(rule, v);\n }\n })\n\n return rule;\n },\n syncProp(ctx) {\n const rule = ctx.rule;\n is.trueArray(rule.sync) && mergeProps([{\n on: rule.sync.reduce((pre, prop) => {\n pre[`update:${prop}`] = (val) => {\n rule.props[prop] = val;\n this.vm.$emit('sync', prop, val, rule, this.fapi);\n }\n return pre\n }, {})\n }], ctx.computed)\n },\n isRepeatRule(rule) {\n return this.repeatRule.indexOf(rule) > -1;\n },\n loadRule() {\n // console.warn('%c load', 'color:blue');\n this.cycleLoad = false;\n this.loading = true;\n if (this.pageEnd) {\n this.bus.$emit('load-start');\n }\n this.deferSyncValue(() => {\n this._loadRule(this.rules);\n this.loading = false;\n if (this.cycleLoad && this.pageEnd) {\n return this.loadRule();\n }\n if (this.pageEnd) {\n this.bus.$emit('load-end');\n }\n this.vm._renderRule();\n this.$render.initOrgChildren();\n this.syncForm();\n });\n },\n loadChildren(children, parent) {\n this.cycleLoad = false;\n this.loading = true;\n this.bus.$emit('load-start');\n this._loadRule(children, parent);\n this.loading = false;\n if (this.cycleLoad) {\n return this.loadRule();\n } else {\n this.bus.$emit('load-end');\n this.syncForm();\n }\n this.$render.clearCache(parent);\n },\n _loadRule(rules, parent) {\n\n const preIndex = (i) => {\n let pre = rules[i - 1];\n if (!pre || !pre.__fc__) {\n return i > 0 ? preIndex(i - 1) : -1;\n }\n let index = this.sort.indexOf(pre.__fc__.id);\n return index > -1 ? index : preIndex(i - 1);\n }\n\n const loadChildren = (children, parent) => {\n if (is.trueArray(children)) {\n this._loadRule(children, parent);\n }\n };\n\n const initEvent = (rule) => this.ruleEffect(rule, 'init');\n\n rules.map((_rule, index) => {\n if (parent && (is.String(_rule) || is.Undef(_rule))) return;\n if (!this.pageEnd && !parent && index >= this.first) return;\n\n if (!is.Object(_rule) || !getRule(_rule).type)\n return err('未定义生成规则的 type 字段', _rule);\n\n if (_rule.__fc__ && _rule.__fc__.root === rules && this.ctxs[_rule.__fc__.id]) {\n loadChildren(_rule.__fc__.rule.children, _rule.__fc__);\n return _rule.__fc__;\n }\n\n let rule = getRule(_rule);\n\n if (!_rule.__fc__) initEvent(rule);\n\n if (rule.field && this.fieldCtx[rule.field] && this.fieldCtx[rule.field] !== _rule.__fc__) {\n this.repeatRule.push(_rule);\n return err(`${rule.field} 字段已存在`, _rule);\n }\n\n let ctx;\n if (_rule.__fc__) {\n ctx = _rule.__fc__;\n const check = !ctx.check(this);\n if (ctx.deleted) {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n ctx.update(this);\n }\n } else {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n rules[index] = _rule = _rule._clone ? _rule._clone() : copyRule(_rule);\n initEvent(getRule(_rule));\n ctx = null;\n }\n }\n }\n if (!ctx) {\n ctx = new RuleContext(this, this.parseRule(_rule));\n this.bindParser(ctx);\n } else if (ctx.originType !== ctx.rule.type) {\n ctx.updateType();\n this.bindParser(ctx);\n }\n this.appendValue(ctx.rule);\n [false, true].forEach(b => this.parseEmit(ctx, b));\n this.syncProp(ctx);\n ctx.parent = parent || null;\n ctx.root = rules;\n this.setCtx(ctx);\n\n loadChildren(ctx.rule.children, ctx);\n\n if (!parent) {\n const _preIndex = preIndex(index);\n if (_preIndex > -1 || !index) {\n this.sort.splice(_preIndex + 1, 0, ctx.id);\n } else {\n this.sort.push(ctx.id);\n }\n }\n\n const r = ctx.rule;\n if (!ctx.updated) {\n ctx.updated = true;\n if (is.Function(r.update)) {\n this.bus.$once('load-end', () => {\n this.refreshUpdate(ctx, r.value);\n });\n }\n this.effect(ctx, 'loaded');\n }\n\n if (ctx.input)\n Object.defineProperty(r, 'value', this.valueHandle(ctx));\n if (this.refreshControl(ctx)) this.cycleLoad = true;\n return ctx;\n });\n },\n refreshControl(ctx) {\n return ctx.input && ctx.rule.control && this.useCtrl(ctx);\n },\n useCtrl(ctx) {\n const controls = getCtrl(ctx), validate = [], api = this.api;\n if (!controls.length) return false;\n\n for (let i = 0; i < controls.length; i++) {\n const control = controls[i], handleFn = control.handle || (val => val === control.value);\n const data = {\n ...control,\n valid: invoke(() => handleFn(ctx.rule.value, api)),\n ctrl: findCtrl(ctx, control.rule),\n };\n if ((data.valid && data.ctrl) || (!data.valid && !data.ctrl)) continue;\n validate.push(data);\n }\n if (!validate.length) return false;\n\n let flag = false;\n validate.reverse().forEach(({valid, rule, prepend, append, child, ctrl}) => {\n if (valid) {\n flag = true;\n const ruleCon = {\n type: 'fcFragment',\n native: true,\n __ctrl: true,\n children: rule,\n }\n ctx.ctrlRule.push(ruleCon);\n this.bus.$once('load-start', () => {\n // this.cycleLoad = true;\n if (prepend) {\n api.prepend(ruleCon, prepend, child)\n } else if (append || child) {\n api.append(ruleCon, append || ctx.id, child)\n } else {\n ctx.root.splice(ctx.root.indexOf(ctx.origin) + 1, 0, ruleCon);\n }\n });\n } else {\n ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n const ctrlCtx = byCtx(ctrl);\n ctrlCtx && ctrlCtx.rm();\n }\n });\n this.vm.$emit('control', ctx.origin, this.api);\n this.effect(ctx, 'control');\n return flag;\n },\n reloadRule(rules) {\n return this._reloadRule(rules);\n },\n _reloadRule(rules) {\n // console.warn('%c reload', 'color:red');\n if (!rules) rules = this.rules;\n\n const ctxs = {...this.ctxs};\n\n this.clearNextTick();\n this.$render.clearOrgChildren();\n this.initData(rules);\n this.fc.rules = rules;\n\n this.bus.$once('load-end', () => {\n Object.keys(ctxs).filter(id => this.ctxs[id] === undefined)\n .forEach(id => this.rmCtx(ctxs[id]));\n this.$render.clearCacheAll();\n });\n this.reloading = true;\n this.loadRule();\n this.reloading = false;\n this.refresh();\n\n this.bus.$off('next-tick', this.nextReload);\n this.bus.$once('next-tick', this.nextReload);\n },\n //todo 组件生成全部通过 alias\n refresh() {\n this.vm._refresh();\n },\n });\n}\n\nfunction fullRule(rule) {\n const def = baseRule();\n\n Object.keys(def).forEach(k => {\n if (!hasProperty(rule, k)) rule[k] = def[k];\n });\n return rule;\n}\n\nfunction getCtrl(ctx) {\n const control = ctx.rule.control || [];\n if (is.Object(control)) return [control];\n else return control;\n}\n\nfunction findCtrl(ctx, rule) {\n for (let i = 0; i < ctx.ctrlRule.length; i++) {\n const ctrl = ctx.ctrlRule[i];\n if (ctrl.children === rule)\n return ctrl;\n }\n}\n\nfunction isCtrl(ctx) {\n return !!ctx.rule.__ctrl;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport {$set} from '@form-create/utils/lib';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nexport default function useInput(Handler) {\n extend(Handler.prototype, {\n getValue(ctx) {\n if (!hasProperty(ctx, 'cacheValue')) {\n ctx.cacheValue = ctx.parser.toValue(this.getFormData(ctx), ctx);\n }\n return ctx.cacheValue;\n },\n setValue(ctx, value, formValue, setFlag) {\n if (ctx.deleted) return;\n ctx.cacheValue = value;\n this.changeStatus = true;\n this.nextRefresh();\n this.$render.clearCache(ctx);\n this.setFormData(ctx, formValue);\n this.syncValue();\n this.valueChange(ctx, value);\n this.vm.$emit('change', ctx.field, value, ctx.origin, this.api, setFlag);\n this.effect(ctx, 'value');\n },\n onInput(ctx, value) {\n let val;\n if (ctx.input && (this.isQuote(ctx, val = ctx.parser.toValue(value, ctx)) || this.isChange(ctx, val))) {\n this.setValue(ctx, val, value);\n }\n },\n setFormData(ctx, value) {\n $set(this.formData, ctx.field, value);\n },\n getFormData(ctx) {\n return this.formData[ctx.field];\n },\n validate() {\n toEmpty(this.vm.validate);\n Object.keys(this.fieldCtx).forEach(id => {\n const ctx = this.fieldCtx[id];\n this.vm.validate[ctx.field] = toArray(ctx.rule.validate);\n });\n return this.vm.validate;\n },\n syncForm() {\n toEmpty(this.form);\n Object.defineProperties(this.form, Object.keys(this.formData).reduce((initial, field) => {\n const ctx = this.getCtx(field);\n const handle = this.valueHandle(ctx);\n handle.configurable = true;\n initial[field] = handle;\n return initial;\n }, {}));\n this.syncValue();\n },\n valueHandle(ctx) {\n return {\n enumerable: true,\n get: () => {\n return this.getValue(ctx);\n },\n set: (value) => {\n if (this.isChange(ctx, value)) {\n this.setValue(ctx, value, ctx.parser.toFormValue(value, ctx), true);\n }\n }\n };\n },\n appendValue(rule) {\n if (!rule.field || !hasProperty(this.appendData, rule.field)) return;\n rule.value = this.appendData[rule.field];\n delete this.appendData[rule.field];\n },\n addSubForm(ctx, subForm) {\n this.subForm[ctx.field] = subForm;\n },\n deferSyncValue(fn) {\n if (!this.deferSyncFn) {\n this.deferSyncFn = fn;\n }\n invoke(fn);\n if (this.deferSyncFn === fn) {\n this.deferSyncFn = null;\n if (fn.sync) {\n this.syncValue();\n }\n }\n },\n syncValue() {\n if (this.deferSyncFn) {\n return this.deferSyncFn.sync = true;\n }\n this.vm._updateValue({...this.form});\n },\n isChange(ctx, value) {\n return JSON.stringify(ctx.rule.value) !== JSON.stringify(value);\n },\n isQuote(ctx, value) {\n return (is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;\n },\n refreshUpdate(ctx, val) {\n const fn = ctx.rule.update;\n if (is.Function(fn)) {\n const state = invoke(() => fn(val, ctx.origin, this.api));\n if (state === undefined) return;\n ctx.rule.hidden = state === true;\n }\n },\n valueChange(ctx, val) {\n this.refreshRule(ctx, val);\n this.bus.$emit('change-' + ctx.field, val);\n },\n refreshRule(ctx, val) {\n if (this.refreshControl(ctx)) {\n this.$render.clearCacheAll();\n this.loadRule();\n this.refresh();\n }\n this.refreshUpdate(ctx, val);\n },\n appendLink(ctx) {\n const link = ctx.rule.link;\n is.trueArray(link) && link.forEach(field => {\n const fn = () => this.refreshRule(ctx, ctx.rule.value);\n\n this.bus.$on('change-' + field, fn);\n ctx.linkOn.push(() => this.bus.$off('change-' + field, fn));\n });\n },\n fields() {\n return Object.keys(this.formData);\n },\n });\n}\n\nfunction toEmpty(obj) {\n Object.keys(obj).forEach(k => delete obj[k]);\n}","import {enumerable, getRule} from '../frame/util';\nimport is from '@form-create/utils/lib/type';\n\n\nexport default function useHelper(rules) {\n if (!Array.isArray(rules) || rules.findField) return;\n Object.defineProperties(rules, {\n findField: enumerable(findField),\n findName: enumerable(findName),\n setValue: enumerable(setValue),\n })\n}\n\nfunction find(field, name, origin) {\n if (!this.length) return;\n let children = [];\n for (let i = 0; i < this.length; i++) {\n if (!is.Object(this[i])) continue;\n let rule = getRule(this[i]);\n if (rule[name] === field) return origin ? rule : this[i];\n if (is.trueArray(rule.children)) children = children.concat(rule.children);\n is.trueArray(rule.control) && rule.control.forEach(r => {\n children = children.concat(r.rule);\n })\n }\n return find.call(children, field, name, origin);\n}\n\nfunction findField(field) {\n return find.call(this, field, 'field');\n}\n\nfunction findName(field) {\n return find.call(this, field, 'name');\n}\n\nfunction setValue(formData) {\n Object.keys(formData).forEach(field => {\n const rule = find.call(this, field, 'field', true);\n if (rule) rule.value = formData[field];\n });\n}\n","const BaseParser = {\n init(ctx) {\n },\n toFormValue(value, ctx) {\n return value\n },\n toValue(formValue, ctx) {\n return formValue;\n },\n mounted(ctx) {\n },\n render(children, ctx) {\n return ctx.$render.defaultRender(ctx, children);\n },\n mergeProp(ctx) {\n }\n}\n\nexport default BaseParser;\n","import extend from '@form-create/utils/lib/extend';\nimport toCase from '@form-create/utils/lib/tocase';\nimport BaseParser from '../factory/parser';\nimport {$del, $set} from '@form-create/utils/lib';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\n\n\nexport default function useContext(Handler) {\n extend(Handler.prototype, {\n getCtx(id) {\n return this.fieldCtx[id] || this.nameCtx[id] || this.ctxs[id];\n },\n setCtx(ctx) {\n let {id, field, name, rule} = ctx;\n this.ctxs[id] = ctx;\n if (name) $set(this.nameCtx, name, ctx);\n if (!ctx.input) return;\n this.fieldCtx[field] = ctx;\n this.setFormData(ctx, ctx.parser.toFormValue(rule.value, ctx));\n if (this.isMounted && !this.reloading) {\n this.vm.$emit('change', ctx.field, rule.value, ctx.origin, this.api);\n }\n },\n getParser(ctx) {\n const list = this.fc.parsers;\n return list[ctx.originType] || list[toCase(ctx.type)] || list[ctx.trueType] || BaseParser;\n },\n bindParser(ctx) {\n ctx.setParser(this.getParser(ctx));\n },\n getType(alias) {\n const map = this.fc.CreateNode.aliasMap;\n const type = map[alias] || map[toCase(alias)] || alias;\n return toCase(type);\n },\n noWatch(fn) {\n if (!this.noWatchFn) {\n this.noWatchFn = fn;\n }\n invoke(fn);\n if (this.noWatchFn === fn) {\n this.noWatchFn = null;\n }\n },\n watchCtx(ctx) {\n const vm = this.vm;\n const none = ['field', 'value', 'vm', 'template', 'name', 'config', 'control', 'inject', 'sync', 'payload', 'optionsTo'];\n Object.keys(ctx.rule).filter(k => none.indexOf(k) === -1).forEach((key) => {\n const flag = key === 'children';\n ctx.watch.push(vm.$watch(() => ctx.rule[key], (n, o) => {\n if (this.loading || this.noWatchFn || this.reloading) return;\n this.watching = true;\n // if (key === 'hidden')\n // ctx.updateKey(true);\n // else\n if (key === 'link') {\n ctx.link();\n return;\n } else if (['props', 'on', 'nativeOn'].indexOf(key) > -1) {\n this.parseInjectEvent(ctx.rule, n || {});\n if (key === 'props' && ctx.input) {\n this.setFormData(ctx, ctx.parser.toFormValue(ctx.rule.value, ctx));\n }\n } else if (['emit', 'nativeEmit'].indexOf(key) > -1)\n this.parseEmit(ctx, key === 'emit');\n else if (key === 'type') {\n ctx.updateType();\n this.bindParser(ctx);\n } else if (key === 'children') {\n const flag = is.trueArray(n);\n this.deferSyncValue(() => {\n if (n !== o) {\n this.rmSub(o);\n this.$render.initOrgChildren();\n }\n flag && this.loadChildren(n, ctx);\n });\n }\n this.$render.clearCache(ctx);\n this.watching = false;\n }, {deep: !flag, sync: flag}));\n });\n this.watchEffect(ctx);\n },\n rmSub(sub) {\n is.trueArray(sub) && sub.forEach(r => {\n r && r.__fc__ && this.rmCtx(r.__fc__);\n })\n },\n rmCtx(ctx) {\n if (ctx.deleted) return;\n const {id, field, name} = ctx;\n if (ctx.input) {\n Object.defineProperty(ctx.rule, 'value', {\n value: ctx.rule.value,\n writable: true\n });\n }\n\n $del(this.ctxs, id);\n $del(this.$render.renderList, id);\n $del(this.$render.orgChildren, id);\n $del(ctx, 'cacheValue');\n\n const f = this.fieldCtx[field];\n\n if (field && (!f || f === ctx)) {\n $del(this.formData, field);\n $del(this.form, field);\n $del(this.fieldCtx, field);\n $del(this.subForm, field);\n this.vm.$nextTick(() => this.vm.$emit('removeField', field, ctx.rule, this.api));\n }\n if (name && this.nameCtx[name] === ctx) {\n $del(this.nameCtx, name);\n }\n if (!this.reloading) {\n this.deferSyncValue(() => {\n if (is.trueArray(ctx.rule.children)) {\n ctx.rule.children.forEach(h => h.__fc__ && this.rmCtx(h.__fc__));\n }\n this.syncValue();\n })\n if (ctx.root === this.rules) {\n this.vm._renderRule();\n }\n }\n\n const index = this.sort.indexOf(id);\n if (index > -1) {\n this.sort.splice(index, 1);\n }\n\n this.$render.clearCache(ctx);\n ctx.delete();\n this.effect(ctx, 'deleted');\n this.vm.$nextTick(() => this.vm.$emit('removeRule', ctx.rule, this.api));\n return ctx;\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\n\n\nexport default function useLifecycle(Handler) {\n extend(Handler.prototype, {\n mounted() {\n const _mounted = () => {\n this.isMounted = true;\n this.lifecycle('mounted');\n }\n if (this.pageEnd) {\n _mounted();\n } else {\n this.bus.$once('page-end', _mounted);\n }\n },\n lifecycle(name) {\n const fn = this.options[name];\n is.Function(fn) && invoke(() => fn(this.api));\n this.vm.$emit(name, this.api);\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\n\n\nexport default function useEffect(Handler) {\n extend(Handler.prototype, {\n useProvider() {\n const ps = this.fc.providers;\n Object.keys(ps).forEach(k => {\n const prop = ps[k];\n prop._c = getComponent(prop);\n this.onEffect(prop);\n this.providers[k] = prop;\n });\n },\n onEffect(provider) {\n const used = [];\n (provider._c || ['*']).forEach(name => {\n const type = name === '*' ? '*' : this.getType(name);\n if (used.indexOf(type) > -1) return;\n used.push(type);\n this.bus.$on(`p:${provider.name}:${type}:${provider.input ? 1 : 0}`, (event, args) => {\n provider[event] && provider[event](...args);\n });\n });\n provider._used = used;\n },\n watchEffect(ctx) {\n const vm = this.vm;\n Object.keys(ctx.rule.effect || {}).forEach(k => {\n ctx.watch.push(vm.$watch(() => ctx.rule.effect[k], (n) => {\n this.effect(ctx, 'watch', {[k]: n});\n }, {deep: true}));\n });\n },\n effect(ctx, event, custom) {\n this.emitEffect({\n rule: ctx.rule,\n input: ctx.input,\n type: ctx.trueType,\n ctx,\n custom\n }, event);\n },\n ruleEffect(rule, event) {\n this.emitEffect({\n rule,\n input: !!rule.field,\n type: this.getType(rule.type)\n }, event);\n },\n getEffect(rule, name) {\n if (hasProperty(rule, 'effect') && hasProperty(rule.effect, name))\n return rule.effect[name];\n else\n return undefined;\n },\n emitEffect({ctx, rule, input, type, custom}, event) {\n if (!type || type === 'fcFragment') return;\n const effect = custom ? custom : (rule.effect || {});\n Object.keys(effect).forEach(attr => {\n const p = this.providers[attr];\n if (!p || (p.input && !input)) return;\n let _type;\n if (!p._c) {\n _type = '*';\n } else if (p._used.indexOf(type) > -1) {\n _type = type;\n } else {\n return;\n }\n const data = {value: effect[attr], getValue: () => this.getEffect(rule, attr)};\n if (ctx) {\n data.getProp = () => ctx.effectData(attr);\n data.clearProp = () => ctx.clearEffectData(attr);\n data.mergeProp = (prop) => mergeProps([prop], data.getProp());\n }\n this.bus.$emit(`p:${attr}:${_type}:${p.input ? 1 : 0}`, event, [data, rule, this.api]);\n });\n }\n });\n}\n\nfunction unique(arr) {\n return arr.filter(function (item, index, arr) {\n return arr.indexOf(item, 0) === index;\n });\n}\n\nfunction getComponent(p) {\n const c = p.components;\n if (Array.isArray(c)) return unique(c.filter(v => v !== '*'));\n else if (is.String(c)) return [c];\n else return false;\n}\n","import Api from '../frame/api';\nimport Render from '../render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\nimport useInject from './inject';\nimport usePage from './page';\nimport useRender from './render';\nimport useLoader from './loader';\nimport useInput from './input';\nimport useHelper from './helper';\nimport useContext from './context';\nimport useLifecycle from './lifecycle';\nimport useEffect from './effect';\n\n\nexport default function Handler(fc) {\n extend(this, {\n fc,\n vm: fc.vm,\n watching: false,\n loading: false,\n reloading: false,\n noWatchFn: null,\n deferSyncFn: null,\n isMounted: false,\n formData: {},\n subForm: {},\n form: {},\n appendData: {},\n providers: {},\n cycleLoad: null,\n loadedId: 1,\n nextTick: null,\n changeStatus: false,\n pageEnd: true,\n nextReload: () => {\n this.lifecycle('reload');\n }\n });\n\n funcProxy(this, {\n options() {\n return fc.options;\n },\n bus() {\n return fc.bus;\n },\n })\n\n this.initData(fc.rules);\n\n this.$manager = new fc.manager(this);\n this.$render = new Render(this);\n this.api = fc.extendApi(Api(this), this);\n}\n\nextend(Handler.prototype, {\n initData(rules) {\n extend(this, {\n fieldCtx: {},\n ctxs: {},\n nameCtx: {},\n sort: [],\n rules,\n repeatRule: [],\n });\n useHelper(rules);\n },\n init() {\n this.useProvider();\n this.usePage();\n this.loadRule();\n this.$manager.__init();\n this.vm.$set(this.vm, 'formData', this.formData);\n },\n})\n\nuseInject(Handler);\nusePage(Handler);\nuseRender(Handler);\nuseLoader(Handler);\nuseInput(Handler);\nuseContext(Handler);\nuseLifecycle(Handler);\nuseEffect(Handler);\n","// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js\n\nfunction getError(action, option, xhr) {\n const msg = `fail to ${action} ${xhr.status}'`;\n const err = new Error(msg);\n err.status = xhr.status;\n err.url = action;\n return err;\n}\n\nfunction getBody(xhr) {\n const text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nexport default function fetch(option) {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n\n const xhr = new XMLHttpRequest();\n const action = option.action;\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(action, option, xhr), getBody(xhr));\n }\n\n option.onSuccess(getBody(xhr));\n };\n\n xhr.open(option.method || 'get', action, true);\n\n let formData;\n if (option.data) {\n if ((option.dataType || '').toLowerCase() !== 'json') {\n formData = new FormData();\n Object.keys(option.data).map(key => {\n formData.append(key, option.data[key]);\n });\n } else {\n formData = JSON.stringify(option.data);\n xhr.setRequestHeader('content-type', 'application/json');\n }\n }\n\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n const headers = option.headers || {};\n\n Object.keys(headers).forEach(item => {\n if (headers[item] !== null) {\n xhr.setRequestHeader(item, headers[item]);\n }\n });\n xhr.send(formData);\n}\n","const NAME = 'fcFragment';\n\nexport default {\n name: NAME,\n functional: true,\n render(h, ctx) {\n return ctx.children\n }\n}\n","import toLine from '@form-create/utils/lib/toline';\nimport is from '@form-create/utils/lib/type';\nimport toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\nimport Vue from 'vue';\n\nfunction parseProp(prop) {\n if (is.String(prop))\n return {domProps: {innerHTML: prop}};\n return prop;\n}\n\nexport function CreateNodeFactory() {\n\n const aliasMap = {};\n\n function CreateNode(vm) {\n vm && this.setVm(vm);\n }\n\n extend(CreateNode.prototype, {\n setVm(vm) {\n this.vm = vm;\n this.$h = vm.$createElement;\n },\n make(tag, data, children) {\n if (Vue.config.isReservedTag(tag) && data.nativeOn) delete data.nativeOn;\n let Node = this.$h(tag, parseProp(data), children || []);\n Node.context = this.vm;\n return Node;\n },\n aliasMap\n });\n\n extend(CreateNode, {\n aliasMap,\n alias(alias, name) {\n aliasMap[alias] = name;\n },\n use(nodes) {\n Object.keys(nodes).forEach((k) => {\n const line = toLine(k);\n const lower = toString(k).toLocaleLowerCase();\n const v = nodes[k];\n [k, line, lower].forEach(n => {\n CreateNode.alias(k, v);\n CreateNode.prototype[n] = function (data, children) {\n return this.make(v, data, children);\n };\n });\n });\n }\n })\n\n return CreateNode;\n}\n","import mergeProps from '@form-create/utils/lib/mergeprops';\nimport unique from '@form-create/utils/lib/unique';\nimport extend from '@form-create/utils/lib/extend';\n\nexport function createManager(proto) {\n class CustomManager extends Manager {\n }\n\n Object.assign(CustomManager.prototype, proto);\n return CustomManager;\n}\n\nexport default function Manager(handler) {\n extend(this, {\n $handle: handler,\n vm: handler.vm,\n options: {},\n ref: 'fcForm',\n mergeOptionsRule: {\n normal: ['form', 'row', 'info', 'submitBtn', 'resetBtn']\n }\n });\n this.updateKey();\n this.init();\n}\n\nextend(Manager.prototype, {\n __init() {\n this.$render = this.$handle.$render;\n this.$r = (...args) => this.$render.renderRule(...args);\n },\n updateKey() {\n this.key = unique();\n },\n //TODO interface\n init() {\n },\n update() {\n },\n beforeRender() {\n },\n form() {\n return this.vm.$refs[this.ref];\n },\n mergeOptions(args, opt) {\n return mergeProps(args.map(v => this.tidyOptions(v)), opt, this.mergeOptionsRule);\n },\n updateOptions(options) {\n this.options = this.mergeOptions([options], this.getDefaultOptions());\n this.update();\n },\n tidyOptions(options) {\n return options;\n },\n tidyRule(ctx) {\n },\n mergeProp(ctx) {\n },\n getDefaultOptions() {\n return {};\n },\n render(children) {\n }\n})\n","import {err} from '@form-create/utils/lib/console';\nimport fetch from './fetch';\nimport {invoke} from './util';\nimport is from '@form-create/utils/lib/type';\nimport deepSet from '@form-create/utils/lib/deepset';\n\nconst $fetch = {\n name: 'fetch',\n loaded(...args) {\n run(...args);\n },\n watch(inject, rule, api) {\n if (!run(inject, rule, api)) {\n inject.clearProp();\n api.sync(rule);\n }\n }\n};\n\nfunction parseOpt(option) {\n if (is.String(option)) {\n option = {\n action: option,\n to: 'options'\n }\n }\n return option;\n}\n\nfunction run(inject, rule, api) {\n let option = inject.value;\n option = parseOpt(option);\n if (!option || !option.action) {\n return false;\n }\n if (!option.to) {\n option.to = 'options';\n }\n const onError = option.onError;\n\n const check = () => {\n if (!inject.getValue()) {\n inject.clearProp();\n api.sync(rule);\n return true;\n }\n }\n\n const set = (val) => {\n if (val === undefined) {\n inject.clearProp();\n api.sync(rule);\n } else {\n deepSet(inject.getProp(), option.to, val);\n }\n }\n\n invoke(() => fetch({\n ...option,\n onSuccess(body) {\n if (check()) return;\n set((option.parse || ((v) => v.data))(body, rule, api))\n api.sync(rule);\n },\n onError(e) {\n set(undefined)\n if (check()) return;\n (onError || ((e) => err(e.message || 'fetch fail ' + option.action)))(e, rule, api);\n }\n }));\n\n return true;\n}\n\nexport default $fetch;","import $FormCreate from '../components/formCreate';\nimport Vue from 'vue';\nimport makerFactory from '../factory/maker';\nimport Handle from '../handler';\nimport fetch from './fetch';\nimport {creatorFactory} from '..';\nimport BaseParser from '../factory/parser';\nimport {copyRule, copyRules, mergeGlobal, parseJson, toJson} from './util';\nimport fragment from '../components/fragment';\nimport is from '@form-create/utils/lib/type';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport {CreateNodeFactory} from '../factory/node';\nimport {createManager} from '../factory/manager';\nimport {arrayAttrs, keyAttrs, normalAttrs} from './attrs';\nimport {appendProto} from '../factory/creator';\nimport $fetch from './provider';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\n\nexport let _vue = typeof window !== 'undefined' && window.Vue ? window.Vue : Vue;\n\nfunction _parseProp(name, id) {\n let prop;\n if (arguments.length === 2) {\n prop = arguments[1];\n id = prop[name];\n } else {\n prop = arguments[2];\n }\n return {id, prop};\n}\n\nfunction nameProp() {\n return _parseProp('name', ...arguments);\n}\n\nfunction _getEl(options) {\n if (!options || !options.el) return window.document.body;\n return is.Element(options.el)\n ? options.el\n : document.querySelector(options.el);\n}\n\nfunction mountForm(rules, option) {\n const $vm = new _vue({\n data() {\n //todo 外部无法修改\n return {rule: rules, option: option || {}};\n },\n render(h) {\n return h('FormCreate', {ref: 'fc', props: this.$data});\n }\n });\n $vm.$mount();\n return $vm;\n}\n\nfunction exportAttrs(attrs) {\n const key = attrs.key || [];\n const array = attrs.array || [];\n const normal = attrs.normal || [];\n keyAttrs.push(...key);\n arrayAttrs.push(...array);\n normalAttrs.push(...normal);\n\n appendProto([...key, ...array, ...normal]);\n}\n\n//todo 表单嵌套\nexport default function FormCreateFactory(config) {\n\n const components = {\n [fragment.name]: fragment\n };\n const parsers = {};\n const directives = {};\n const providers = {\n fetch: $fetch\n };\n const maker = makerFactory();\n let globalConfig = {global: {}};\n const data = {};\n const CreateNode = CreateNodeFactory();\n\n exportAttrs(config.attrs || {});\n\n function directive() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) directives[data.id] = data.prop;\n }\n\n function register() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) providers[data.id] = {...data.prop, name: data.id};\n }\n\n function componentAlias(alias) {\n CreateNode.use(alias);\n }\n\n function parser() {\n const data = nameProp(...arguments);\n if (!data.id || !data.prop) return;\n const name = toCase(data.id);\n const parser = data.prop;\n const base = parser.merge === true ? parsers[name] : undefined;\n parsers[name] = {...(base || BaseParser), ...parser};\n maker[name] = creatorFactory(name);\n parser.maker && extend(maker, parser.maker);\n }\n\n function component(id, component) {\n let name;\n if (is.String(id)) {\n name = toCase(id);\n if (['form-create', 'formcreate'].indexOf(name) > -1) {\n return $form();\n } else if (component === undefined) {\n return components[name];\n }\n } else {\n name = toCase(id.name);\n component = id;\n }\n if (!name || !component) return;\n components[name] = component;\n if (component.formCreateParser) parser(name, component.formCreateParser);\n }\n\n function $form() {\n return _vue.extend($FormCreate(FormCreate));\n }\n\n //todo 检查回调函数作用域\n function use(fn, opt) {\n if (is.Function(fn.install)) fn.install(create, opt);\n else if (is.Function(fn)) fn(create, opt);\n return this;\n }\n\n function create(rules, _opt, parent) {\n let $vm = mountForm(rules, _opt || {});\n const _this = $vm.$refs.fc.formCreate;\n _this.$parent = parent;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n }\n\n function FormCreate(vm, rules, options) {\n extend(this, {\n vm,\n manager: createManager(config.manager),\n parsers,\n providers,\n rules: Array.isArray(rules) ? rules : [],\n prop: {\n components,\n directives,\n },\n CreateNode,\n bus: new _vue,\n unwatch: null,\n extendApi: config.extendApi || (api => api)\n })\n this.init();\n this.initOptions(options || {});\n }\n\n extend(FormCreate.prototype, {\n init() {\n const vm = this.vm;\n const h = new Handle(this);\n this.$handle = h;\n vm.$f = h.api;\n vm.$emit('input', h.api);\n\n vm.$on('hook:created', () => {\n if (this.isSub()) {\n this.unwatch = vm.$watch(() => vm.$pfc.option, () => {\n this.initOptions(this.options);\n vm.$f.refresh();\n }, {deep: true});\n this.initOptions(this.options);\n }\n this.created();\n })\n vm.$on('hook:mounted', () => {\n this.mounted();\n });\n vm.$on('hook:beforeDestroy', () => {\n vm.destroyed = true;\n this.unwatch && this.unwatch();\n h.reloadRule([]);\n });\n vm.$on('hook:updated', () => {\n h.bindNextTick(() => this.bus.$emit('next-tick', h.api));\n });\n },\n isSub() {\n return this.vm.$pfc && this.vm.extendOption;\n },\n initOptions(options) {\n this.options = {formData: {}, submitBtn: {}, resetBtn: {}, ...deepCopy(globalConfig)};\n if (this.isSub()) {\n this.mergeOptions(this.options, this.vm.$pfc.$f.config || {}, true);\n }\n this.updateOptions(options);\n },\n mergeOptions(target, opt, parent) {\n opt = deepCopy(opt);\n parent && ['page', 'onSubmit', 'mounted', 'reload', 'formData', 'el'].forEach((n) => {\n delete opt[n];\n });\n if (opt.global) {\n target.global = mergeGlobal(target.global, opt.global);\n delete opt.global;\n }\n this.$handle.$manager.mergeOptions([opt], target);\n return target;\n },\n updateOptions(options) {\n this.mergeOptions(this.options, options);\n this.$handle.$manager.updateOptions(this.options);\n },\n created() {\n this.$handle.init();\n },\n api() {\n return this.$handle.api;\n },\n render() {\n return this.$handle.render();\n },\n mounted() {\n this.$handle.mounted();\n },\n })\n\n\n function useAttr(formCreate) {\n extend(formCreate, {\n version: config.version,\n ui: config.ui,\n data,\n maker,\n component,\n directive,\n register,\n parser,\n use,\n componentAlias,\n copyRule,\n copyRules,\n fetch,\n $form,\n parseJson,\n toJson,\n init(rules, _opt = {}) {\n let $vm = mountForm(rules, _opt), _this = $vm.$refs.fc.formCreate;\n return {\n mount($el) {\n if ($el && is.Element($el))\n _this.options.el = $el;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n },\n remove() {\n $vm.$el.parentNode && $vm.$el.parentNode.removeChild($vm.$el);\n },\n destroy() {\n this.remove();\n $vm.$destroy();\n },\n $f: _this.api()\n };\n }\n });\n }\n\n function useStatic(formCreate) {\n extend(formCreate, {\n create,\n install(Vue, options) {\n globalConfig = {...globalConfig, ...(options || {})}\n if (Vue._installedFormCreate === true) return;\n Vue._installedFormCreate = true;\n _vue = Vue;\n\n const $formCreate = function (rules, opt = {}) {\n return create(rules, opt, this);\n };\n\n useAttr($formCreate);\n\n Vue.prototype.$formCreate = $formCreate;\n Vue.component('FormCreate', $form());\n }\n })\n }\n\n useAttr(create);\n useStatic(create);\n\n CreateNode.use({fragment: 'fcFragment'});\n\n if (config.install) create.use(config);\n\n return create;\n}\n","import is from '@form-create/utils/lib/type';\nimport {creatorFactory} from '@form-create/core/src/index';\n\nexport function timeStampToDate(timeStamp) {\n if (is.Date(timeStamp))\n return timeStamp;\n else {\n let date = new Date(timeStamp);\n return date.toString() === 'Invalid Date' ? timeStamp : date;\n }\n}\n\nconst name = 'datePicker';\n\nexport default {\n name,\n maker: (function () {\n return ['date', 'dateRange', 'datetime', 'datetimeRange', 'year', 'month'].reduce((maker, type) => {\n maker[type] = creatorFactory(name, {type: type.toLowerCase()});\n return maker;\n }, {});\n }()),\n mergeProp(ctx) {\n let props = ctx.prop.props;\n if (props.startDate) {\n props.startDate = props.startDate && timeStampToDate(props.startDate);\n }\n },\n\n isRange(el) {\n return el.type.includes('range') || el.multiple;\n },\n\n _toValue(val, ctx) {\n const value = ctx.el.formatDate(val || ''), {separator} = ctx.el,\n isRange = this.isRange(ctx.el);\n if (!value)\n return isRange ? (ctx.el.multiple ? [] : ['', '']) : value;\n else if (isRange)\n return value.split(separator);\n else\n return value;\n },\n\n toValue(formValue, ctx) {\n const el = ctx.el;\n if (el) {\n this.el = el;\n return this._toValue(formValue, ctx);\n }\n return formValue;\n },\n\n toFormValue(value, ctx) {\n if (ctx.el) {\n const v = ctx.el.parseDate(value);\n return this.isRange(ctx.el) ? v : v[0];\n } else {\n let isArr = Array.isArray(value), props = ctx.prop.props, parseValue, type = props.type || 'date';\n if (['daterange', 'datetimerange'].indexOf(type) !== -1) {\n if (isArr) {\n parseValue = value.map((time) => !time ? '' : timeStampToDate(time));\n } else {\n parseValue = ['', '']\n }\n } else if ('date' === type && props.multiple === true) {\n parseValue = toString(value);\n } else {\n parseValue = isArr ? (value[0] || '') : value;\n parseValue = !parseValue ? '' : timeStampToDate(parseValue);\n }\n return parseValue;\n }\n },\n mounted(ctx) {\n ctx.rule.value = this.toValue(ctx.$handle.getFormData(ctx), ctx);\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'hidden';\nexport default {\n name,\n maker: {\n [name]: (field, value) => creatorFactory(name)('', field, value)\n },\n render() {\n return [];\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'input';\nexport default {\n name,\n maker: (function () {\n const maker = ['password', 'url', 'email', 'text', 'textarea'].reduce((maker, type) => {\n maker[type] = creatorFactory(name, {type});\n return maker;\n }, {});\n\n maker.idate = creatorFactory(name, {type:'date'});\n return maker\n }()),\n mergeProp(ctx) {\n let {props} = ctx.prop;\n if (props.autosize && props.autosize.minRows) {\n props.rows = props.autosize.minRows || 2;\n }\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'slider';\nexport default {\n name,\n maker: {\n sliderRange: creatorFactory(name, {range:true})\n },\n toFormValue(value, ctx) {\n let isArr = Array.isArray(value), props = ctx.prop.props, min = props.min || 0,\n parseValue;\n if (props.range === true) {\n parseValue = isArr ? value : [min, (parseFloat(value) || min)];\n } else {\n parseValue = isArr ? (parseFloat(value[0]) || min) : parseFloat(value);\n }\n return parseValue;\n }\n\n}\n","export default {\n name: 'switch',\n mergeProp(ctx) {\n const prop = ctx.prop.props.slot || {};\n const slot = ctx.prop.scopedSlots || {};\n if (prop.open) slot.open = () => prop.open;\n if (prop.close) slot.close = () => prop.close;\n ctx.prop.scopedSlots = slot;\n }\n}\n","export default {\n name: 'FcRow',\n render(_, ctx) {\n return ctx.vNode.col({props: {span: 24}}, [\n ctx.vNode.row(ctx.prop, _)\n ])\n }\n}","import datePicker from './datePicker';\nimport hidden from './hidden';\nimport input from './input';\nimport slider from './slider';\nimport iswitch from './switch';\nimport row from './row';\n\nexport default [\n datePicker, hidden, input, slider, iswitch, row\n]\n","export default {\n button: 'iButton',\n icon: 'Icon',\n slider: 'Slider',\n rate: 'Rate',\n upload: 'fcUpload',\n cascader: 'Cascader',\n colorPicker: 'ColorPicker',\n timePicker: 'TimePicker',\n datePicker: 'DatePicker',\n 'switch': 'iSwitch',\n select: 'fcSelect',\n checkbox: 'fcCheckbox',\n radio: 'fcRadio',\n inputNumber: 'InputNumber',\n input: 'iInput',\n formItem: 'FormItem',\n form: 'iForm',\n frame: 'fcFrame',\n col: 'iCol',\n row: 'row',\n tree: 'fcTree',\n autoComplete: 'AutoComplete',\n group: 'fcGroup',\n subForm: 'fcSubForm',\n object: 'fcSubForm',\n}\n","export const iviewConfig = {\n resetBtnType: 'default',\n resetBtnIcon: 'md-refresh',\n infoIcon: 'ios-information-circle-outline',\n};\n\nexport function info() {\n return {\n type: 'poptip',\n trigger: 'hover',\n placement: 'top-start',\n wordWrap: true,\n icon: iviewConfig.infoIcon\n }\n}\n\nexport default function getConfig() {\n return {\n form: {\n inline: false,\n labelPosition: 'right',\n labelWidth: 125,\n showMessage: true,\n autocomplete: 'off',\n size: undefined,\n },\n row: {\n gutter: 0,\n },\n submitBtn: {\n type: 'primary',\n disabled: false,\n innerText: '提交',\n loading: false,\n show: true,\n click: undefined,\n },\n resetBtn: {\n type: iviewConfig.resetBtnType,\n disabled: false,\n icon: iviewConfig.resetBtnIcon,\n innerText: '重置',\n loading: false,\n show: false,\n click: undefined,\n },\n };\n}\n","import getConfig, {info, iviewConfig} from './config';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\n\nfunction tidy(props, name) {\n if (!hasProperty(props, name)) return;\n if (is.String(props[name])) {\n props[name] = {[name]: props[name], show: true};\n }\n}\n\nfunction isFalse(val) {\n return val === false;\n}\n\nfunction tidyBool(opt, name) {\n if (hasProperty(opt, name) && !is.Object(opt[name])) {\n opt[name] = {show: !!opt[name]};\n }\n}\n\nexport default {\n validate(call) {\n this.form().validate(call);\n },\n validateField(field, call) {\n this.form().validateField(field, call);\n },\n clearValidateState(ctx) {\n const fItem = this.vm.$refs[ctx.wrapRef];\n if (fItem) {\n fItem.validateMessage = '';\n fItem.validateState = '';\n }\n },\n tidyOptions(options) {\n ['submitBtn', 'resetBtn', 'row', 'info', 'wrap', 'col'].forEach(name => {\n tidyBool(options, name);\n })\n return options;\n },\n tidyRule({prop}) {\n tidy(prop, 'title');\n tidy(prop, 'info');\n return prop;\n },\n mergeProp(ctx) {\n ctx.prop = mergeProps([{\n info: this.options.info || {},\n wrap: this.options.wrap || {},\n col: this.options.col || {},\n }, ctx.prop], {\n info: info(),\n title: {},\n col: {span: 24},\n wrap: {},\n }, {normal: ['title', 'info', 'col', 'wrap']});\n this.setSize(ctx.prop.props);\n },\n setSize(props) {\n if (!props.size && this.options.form.size) {\n props.size = this.options.form.size;\n }\n },\n getDefaultOptions() {\n return getConfig();\n },\n update() {\n const form = this.options.form;\n this.rule = {\n props: {...form},\n nativeOn: {\n submit: (e) => {\n e.preventDefault();\n }\n },\n class: [form.className, form.class, 'form-create'],\n style: form.style,\n type: 'form',\n };\n },\n beforeRender() {\n const {key, ref, $handle} = this;\n extend(this.rule, {key, ref});\n extend(this.rule.props, {\n model: $handle.formData,\n rules: $handle.validate(),\n });\n },\n render(children) {\n if (children.length) {\n children.push(this.makeFormBtn());\n }\n return this.$r(this.rule, isFalse(this.options.row.show) ? children : [this.makeRow(children)]);\n },\n makeWrap(ctx, children) {\n const rule = ctx.prop;\n const uni = `${this.key}${ctx.key}`;\n const col = rule.col;\n const isTitle = this.isTitle(rule);\n const labelWidth = (!col.labelWidth && !isTitle) ? 0 : col.labelWidth;\n const {inline, col: _col} = this.rule.props;\n const item = isFalse(rule.wrap.show) ? children : this.$r(mergeProps([rule.wrap, {\n props: {\n label: rule.title.title,\n labelWidth,\n ...(rule.wrap || {}),\n prop: ctx.field,\n rules: rule.validate,\n },\n class: rule.className,\n key: `${uni}fi`,\n ref: ctx.wrapRef,\n type: 'formItem',\n }]), [children, isTitle ? this.makeInfo(rule, uni) : null]);\n return (inline === true || isFalse(_col) || isFalse(col.show)) ? item : this.makeCol(rule, uni, [item]);\n },\n isTitle(rule) {\n const title = rule.title;\n return !((!title.title && !title.native) || isFalse(title.show))\n },\n makeInfo(rule, uni) {\n const titleProp = rule.title;\n const infoProp = rule.info;\n const children = [titleProp.title];\n\n const titleFn = (pop) => this.$r(mergeProps([titleProp, {\n props: titleProp,\n slot: titleProp.slot || (pop ? 'default' : 'label'),\n key: `${uni}tit`,\n type: titleProp.type || 'span',\n }]), children);\n\n if (!isFalse(infoProp.show) && (infoProp.info || infoProp.native)) {\n if (infoProp.icon !== false) {\n children[infoProp.align !== 'left' ? 'unshift' : 'push'](this.$r({\n type: 'icon',\n props: {type: infoProp.icon === true ? iviewConfig.infoIcon : infoProp.icon, size: 16},\n style: 'margin-top: -1px',\n key: `${uni}i`\n }));\n }\n\n const prop = {\n type: infoProp.type || 'poptip',\n props: {...infoProp},\n key: `${uni}pop`,\n slot: 'label'\n };\n\n const field = 'content';\n if (infoProp.info && !hasProperty(prop.props, field)) {\n prop.props[field] = infoProp.info;\n }\n\n return this.$r(mergeProps([infoProp, prop]), [\n titleFn(true)\n ])\n }\n return titleFn();\n },\n makeCol(rule, uni, children) {\n const col = rule.col;\n return this.$r({\n class: col.class,\n type: 'col',\n props: col || {span: 24},\n key: `${uni}col`\n }, children);\n },\n makeRow(children) {\n const row = this.options.row || {};\n return this.$r({\n type: 'row',\n props: row,\n class: row.class,\n key: `${this.key}row`\n }, children)\n },\n makeFormBtn() {\n let vn = [];\n if (!isFalse(this.options.submitBtn.show)) {\n vn.push(this.makeSubmitBtn())\n }\n if (!isFalse(this.options.resetBtn.show)) {\n vn.push(this.makeResetBtn())\n }\n if (!vn.length) {\n return;\n }\n const item = this.$r({\n type: 'formItem',\n key: `${this.key}fb`\n }, vn);\n\n return this.rule.props.inline === true\n ? item\n : this.$r({\n type: 'col',\n props: {span: 24},\n key: `${this.key}fc`\n }, [item]);\n },\n makeResetBtn() {\n const resetBtn = this.options.resetBtn;\n this.setSize(resetBtn);\n return this.$r({\n type: 'button',\n props: resetBtn,\n style: {width: resetBtn.width, marginLeft: '15px'},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n resetBtn.click\n ? resetBtn.click(fApi)\n : fApi.resetFields();\n }\n },\n key: `${this.key}b2`,\n }, [resetBtn.innerText]);\n },\n makeSubmitBtn() {\n const submitBtn = this.options.submitBtn;\n this.setSize(submitBtn);\n return this.$r({\n type: 'button',\n props: submitBtn,\n style: {width: submitBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n submitBtn.click\n ? submitBtn.click(fApi)\n : fApi.submit();\n }\n },\n key: `${this.key}b1`,\n }, [submitBtn.innerText]);\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst maker = {};\n\nconst names = ['upload', 'select', 'tree', 'checkbox', 'autoComplete', 'cascader', 'colorPicker', 'frame', 'inputNumber', 'radio', 'rate', 'timePicker', 'group'];\n\nfunction useAlias(maker) {\n names.forEach(name => {\n maker[name] = creatorFactory(name);\n });\n maker.auto = maker.autoComplete;\n maker.number = maker.inputNumber;\n maker.color = maker.colorPicker;\n}\n\n\nfunction useUpload(maker) {\n const name = 'upload';\n\n const types = {\n image: ['image', 0],\n file: ['file', 0],\n uploadFileOne: ['file', 1],\n uploadImageOne: ['image', 1],\n };\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory(name, m => m.props({uploadType: types[key][0], maxLength: types[key][1]}));\n return maker\n }, maker);\n\n maker.uploadImage = maker.image;\n maker.uploadFile = maker.file;\n}\n\nfunction useTree(maker) {\n const name = 'tree';\n\n const types = {'treeSelected': 'selected', 'treeChecked': 'checked'};\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory(name, {type:types[key]});\n return maker;\n }, maker);\n}\n\nfunction useTimePicker(maker) {\n const name = 'timePicker';\n\n maker.time = creatorFactory(name, {type:'time'})\n maker.timeRange = creatorFactory(name, {type:'timerange'})\n}\n\n\nfunction useSelect(maker) {\n const name = 'select';\n\n maker.selectMultiple = creatorFactory(name, {multiple:true})\n maker.selectOne = creatorFactory(name, {multiple:false})\n}\n\n\nfunction useFrame(maker) {\n const name = 'frame';\n\n const types = {\n frameInputs: ['input', 0],\n frameFiles: ['file', 0],\n frameImages: ['image', 0],\n frameInputOne: ['input', 1],\n frameFileOne: ['file', 1],\n frameImageOne: ['image', 1]\n };\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory(name, m => m.props({type: types[key][0], maxLength: types[key][1]}));\n return maker\n }, maker);\n\n\n maker.frameInput = maker.frameInputs;\n maker.frameFile = maker.frameFiles;\n maker.frameImage = maker.frameImages;\n}\n\nuseAlias(maker);\nuseUpload(maker);\nuseTree(maker);\nuseSelect(maker);\nuseFrame(maker);\nuseTimePicker(maker);\n\nexport default maker;\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '@form-create/core/src/frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction tidyBtnProp(btn, def) {\n if (is.Boolean(btn))\n btn = {show: btn};\n else if (!is.Undef(btn) && !is.Object(btn)) btn = {show: def};\n return btn;\n}\n\nexport default function extendApi(api, h) {\n extend(api, {\n validate(callback) {\n let flag;\n const forms = api.children;\n let len = forms.length;\n const validate = () => {\n h.$manager.validate((...args) => {\n if (!args[0] || !flag) {\n flag = args;\n }\n callback(...flag);\n });\n };\n\n const validFn = (args) => {\n setTimeout(() => {\n if (!args[0]) {\n if (!flag) {\n flag = args;\n }\n }\n if (!--len) {\n validate();\n }\n });\n };\n\n forms.forEach(form => {\n form.validate((...args) => validFn(args))\n })\n\n if (!len) {\n validate();\n }\n },\n validateField: (field, callback) => {\n if (!h.fieldCtx[field])\n return;\n const sub = h.subForm[field];\n let len = 0;\n let flag;\n const validate = () => {\n h.$manager.validateField(field, (...args) => {\n if (args[0]) {\n flag = args;\n } else if (flag) {\n return callback('子表单验证未通过');\n }\n callback(...flag || args);\n });\n };\n const validFn = (args) => {\n setTimeout(() => {\n if (!args[0]) {\n if (!flag) {\n flag = args;\n }\n }\n if (!--len) {\n validate();\n }\n });\n };\n sub && toArray(sub).forEach(form => {\n len++;\n form.validate((...args) => validFn(args))\n });\n\n if (!len) {\n validate();\n }\n },\n clearValidateState(fields, clearSub = true) {\n api.helper.tidyFields(fields).forEach(field => {\n if (clearSub) this.clearSubValidateState(field);\n const ctx = h.fieldCtx[field];\n if (!ctx) return;\n h.$manager.clearValidateState(ctx);\n });\n },\n clearSubValidateState(fields) {\n api.helper.tidyFields(fields).forEach(field => {\n const subForm = h.subForm[field];\n if (!subForm) return;\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.clearValidateState();\n })\n } else if (subForm) {\n subForm.clearValidateState();\n }\n })\n },\n btn: {\n loading: (loading = true) => {\n api.submitBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.submitBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.submitBtnProps({show: !!isShow});\n }\n },\n resetBtn: {\n loading: (loading = true) => {\n api.resetBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.resetBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.resetBtnProps({show: !!isShow});\n }\n },\n submitBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.submitBtn, true);\n extend(btn, props);\n h.options.submitBtn = btn;\n api.refreshOptions();\n },\n resetBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.resetBtn, false);\n extend(btn, props);\n h.options.resetBtn = btn;\n api.refreshOptions();\n },\n submit(successFn, failFn) {\n api.validate((valid) => {\n if (valid) {\n let formData = api.formData();\n if (is.Function(successFn))\n invoke(() => successFn(formData, this));\n else {\n is.Function(h.options.onSubmit) && invoke(() => h.options.onSubmit(formData, this));\n h.vm.$emit('submit', formData, this);\n }\n } else {\n is.Function(failFn) && invoke(() => failFn(this, ...arguments));\n }\n });\n },\n });\n\n return api;\n}","import components from '../components';\nimport parsers from '../parsers';\nimport alias from './alias';\nimport manager from './manager';\nimport FormCreateFactory from '@form-create/core/src/index';\nimport makers from './maker';\nimport '../style/index.css';\nimport extendApi from './api';\n\nfunction install(FormCreate) {\n FormCreate.componentAlias(alias);\n\n components.forEach(component => {\n FormCreate.component(component.name, component);\n });\n\n parsers.forEach((parser) => {\n FormCreate.parser(parser);\n });\n\n Object.keys(makers).forEach(name => {\n FormCreate.maker[name] = makers[name];\n });\n}\n\nexport default function ivuFormCreate() {\n return FormCreateFactory({\n ui: `${process.env.UI}`,\n version: `${process.env.VERSION}`,\n manager,\n install,\n extendApi,\n attrs: {\n normal: ['col', 'wrap'],\n array: ['className'],\n key: ['title', 'info'],\n }\n });\n}\n","import ivuFormCreate from './core/index';\n\nconst FormCreate = ivuFormCreate();\n\nif (typeof window !== 'undefined') {\n window.formCreate = FormCreate;\n if (window.Vue) {\n FormCreate.install(window.Vue);\n }\n}\n\nconst maker = FormCreate.maker;\n\nexport {maker}\n\nexport default FormCreate;\n"],"names":["_extends","Object","assign","a","b","c","arguments","length","d","prototype","hasOwnProperty","call","apply","this","normalMerge","toArrayMerge","functionalMerge","mergeJsxProps","reduce","indexOf","Array","e","concat","f","g","h","i","mergeFn","getSlot","slots","exclude","keys","lst","name","push","NAME","props","formCreateRule","type","formCreateOptions","value","watch","update","data","trueValue","methods","onInput","n","$emit","filter","opt","label","map","v","undefined","_this","option","created","render","index","$slots","toArray","isArray","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","createFrame","config","formCreateField","String","field","helper","Boolean","disabled","src","required","icon","fileUpIcon","width","Number","height","maxLength","okBtnText","closeBtnText","modalTitle","handleIcon","title","allowRemove","onOpen","Function","onOk","onCancel","onLoad","onBeforeRemove","onRemove","onHandle","previewImage","getSrc","previewVisible","modal","srcKey","previewMask","footer","reload","closeBtn","okBtn","fileList","frameVisible","val","modalVm","key","unique","closeModel","close","$off","showModel","makeInput","toString","readonly","clearable","makeGroup","children","makeBtn","makeItem","valid","Error","makeIcons","icons","makeHandleIcon","makeRemoveIcon","_this2","handleClick","_this3","handleRemove","makeFiles","_this4","fileIcon","size","makeImages","_this5","_this6","splice","frameLoad","iframe","_this7","set","get","fn","$on","onClose","console","log","makeFooter","$props","node","_this8","$nextTick","_this9","$refs","frame","contentWindow","mounted","closeModal","v2","initial","is","arg","Undef","Element","_typeof","nodeType","trueArray","hasProperty","rule","k","forEach","t","functional","ctx","slot","slotName","treeData","setStatus","checked","$forceUpdate","_data","$set","id","list","on","tree","getSelectedNodes","getCheckedNodes","parseFile","file","url","getFileName","split","pop","createUpload","uploadType","uploadList","showUploadList","defaultFileList","upload","every","status","o","isDisabled","makeProgress","percent","percentage","hideInfo","$scopedSlots","vm","showProgress","makeUpload","isShow","display","imgUpIcon","files","handleCancel","$watch","deep","createGroup","rules","expand","options","formCreate","button","max","min","syncDisabled","fontSize","onBeforeAdd","len","cacheRule","cacheValue","computed","formRule","$f","expandRule","total","addRule","setValue","removeRule","subForm","_value","cache","JSON","stringify","input","formData","form","coverValue","emit","$formCreate","copyRules","submitBtn","resetBtn","add$f","$delete","add","del","addIcon","delIcon","removeIcon","makeIcon","emitEvent","args","group","str","checkbox","radio","select","target","Vue","$del","extend","$FormCreate","FormCreate","componentName","model","prop","provide","$pfc","inject","extendOption","api","destroyed","validate","renderRule","updateValue","_refresh","_renderRule","_updateValue","handler","initOptions","refresh","$handle","reloadRule","beforeCreate","$options","propsData","mergeProps","objects","_normalMerge","_toArrayMerge","_functionalMerge","propsMerge","arrA","arrB","event","hook","fn1","fn2","keyAttrs","arrayAttrs","normalAttrs","attrs","deepExtend","origin","mode","isArr","clone","nst","_clone","getRule","__ctrl","deepCopy","format","msg","tip","warn","err","error","logError","PREFIX","SUFFIX","$T","FUNCTION","toJson","obj","space","_isVue","__inject","__origin","__emit","makeFn","eval","parseFn","trim","flag","replace","parseJson","json","parse","enumerable","writable","configurable","copyRule","mergeRule","merge","array","normal","mergeGlobal","funcProxy","that","proxy","defineProperties","byCtx","__fc__","__origin__","invoke","def","toLine","line","toLocaleLowerCase","substr","uniqueId","Math","random","Date","now","deepSet","idx","to","baseRule","hidden","creatorFactory","init","maker","Creator","appendProto","setProp","constructor","commonMaker","create","make","createTmp","template","makerFactory","factory","copy","byRules","ctxs","Api","tidyFields","fields","getCtx","$render","clearCache","allSubForm","subs","sub","fieldCtx","getValue","deferSyncValue","appendData","removeField","rm","destroy","$el","parentNode","removeChild","$destroy","append","after","child","sort","root","prepend","state","hiddenStatus","displayStatus","component","nameCtx","bind","updateOptions","fc","onSubmit","sync","deleted","clearCacheAll","refreshOptions","$manager","hideForm","hide","changeStatus","clearChangeStatus","updateRule","r","updateRules","mergeRules","updateValidate","updateValidates","validates","refreshValidate","resetFields","defaultValue","refreshControl","method","el","exec","trigger","getSubForm","nextTick","bus","$once","nextRefresh","changeValue","changeField","useCache","Render","initCache","use","parent","setCache","vnode","getCache","toCase","lower","toLocaleUpperCase","toLowerCase","setTempProps","injectProp","injectKeys","temp","useRender","initRender","renderList","clearOrgChildren","initOrgChildren","orgChildren","$h","$createElement","beforeRender","vn","renderCtx","makeVm","getInjectData","global","cacheConfig","originType","trueType","setOptions","optionsTo","renderTemp","compile","parser","renderSides","prefix","suffix","cacheFlag","_type","none","renderChildren","initProp","tidyRule","ctxProp","makeWrap","item","custom","mergeProp","onMounted","addSubForm","getFormData","callback","expression","effect","isRm","rmCtx","isRepeatRule","loadChildren","defaultRender","vNode","alias","aliasMap","handle","CreateNode","useInject","Handler","parseInjectEvent","injectEvent","parseEmit","emitPrefix","emitKey","eventName","eventInject","fieldKey","_inject","self","_fn","watching","loading","unshift","EVENT","usePage","page","first","limit","getLimit","parseInt","pageEnd","pageLoad","pageFn","loadRule","ceil","clearNextTick","clearTimeout","bindNextTick","setTimeout","loadedId","RuleContext","wrapRef","linkOn","ctrlRule","payload","updateType","updateKey","useLoader","parseRule","_rule","fullRule","syncProp","pre","fapi","repeatRule","cycleLoad","_loadRule","syncForm","initEvent","ruleEffect","check","isCtrl","bindParser","appendValue","setCtx","_preIndex","preIndex","updated","refreshUpdate","defineProperty","valueHandle","control","useCtrl","controls","getCtrl","handleFn","ctrl","findCtrl","reverse","ruleCon","ctrlCtx","_reloadRule","initData","reloading","nextReload","useInput","toValue","formValue","setFlag","setFormData","syncValue","valueChange","isQuote","isChange","toEmpty","toFormValue","deferSyncFn","refreshRule","appendLink","link","useHelper","findField","findName","find","effectData","clearEffectData","setParser","unwatch","un","unlink","watchTo","watchCtx","rmCtrl","$api","_rm","noWatch","getType","BaseParser","useContext","isMounted","getParser","parsers","noWatchFn","rmSub","watchEffect","useLifecycle","_mounted","lifecycle","useEffect","useProvider","ps","providers","_c","getComponent","onEffect","provider","used","_used","emitEffect","getEffect","attr","p","getProp","clearProp","arr","components","manager","extendApi","getError","action","xhr","getBody","text","responseText","response","fetch","XMLHttpRequest","onerror","onError","onload","onSuccess","open","dataType","FormData","setRequestHeader","withCredentials","headers","send","__init","parseProp","domProps","innerHTML","CreateNodeFactory","setVm","tag","isReservedTag","nativeOn","Node","context","nodes","createManager","proto","CustomManager","Manager","mergeOptionsRule","$r","mergeOptions","tidyOptions","getDefaultOptions","$fetch","loaded","run","parseOpt","body","message","_vue","window","_parseProp","nameProp","_getEl","querySelector","mountForm","$vm","$data","$mount","exportAttrs","FormCreateFactory","fragment","directives","globalConfig","directive","register","componentAlias","base","$form","formCreateParser","install","_opt","$parent","useAttr","version","ui","mount","remove","Handle","isSub","_installedFormCreate","timeStampToDate","timeStamp","date","startDate","isRange","includes","multiple","_toValue","formatDate","separator","parseDate","parseValue","time","idate","autosize","minRows","rows","sliderRange","range","parseFloat","scopedSlots","_","col","span","row","datePicker","slider","iswitch","rate","cascader","colorPicker","timePicker","inputNumber","formItem","autoComplete","object","iviewConfig","resetBtnType","resetBtnIcon","infoIcon","info","placement","wordWrap","getConfig","inline","labelPosition","labelWidth","showMessage","autocomplete","gutter","innerText","show","click","tidy","isFalse","tidyBool","validateField","clearValidateState","fItem","validateMessage","validateState","wrap","setSize","submit","preventDefault","className","makeFormBtn","makeRow","uni","isTitle","_col","makeInfo","makeCol","titleProp","infoProp","titleFn","align","makeSubmitBtn","makeResetBtn","marginLeft","fApi","names","useAlias","auto","number","color","useUpload","types","image","uploadFileOne","uploadImageOne","m","uploadImage","uploadFile","useTree","useTimePicker","timeRange","useSelect","selectMultiple","selectOne","useFrame","frameInputs","frameFiles","frameImages","frameInputOne","frameFileOne","frameImageOne","frameInput","frameFile","frameImage","tidyBtnProp","btn","forms","validFn","clearSub","clearSubValidateState","submitBtnProps","resetBtnProps","successFn","failFn","makers","ivuFormCreate","process"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form-create.min.js","sources":["../../../node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js","../../utils/lib/slot.js","../../../components/iview/checkbox/src/component.jsx","../../utils/lib/toarray.js","../../../node_modules/style-inject/dist/style-inject.es.js","../../../components/iview/frame/src/component.jsx","../../../components/iview/frame/src/index.js","../../../components/iview/radio/src/component.jsx","../../utils/lib/type.js","../../../components/iview/select/src/component.jsx","../../../components/iview/tree/src/component.jsx","../../../components/iview/upload/src/component.jsx","../../../components/iview/upload/src/index.js","../../../components/iview/group/src/component.jsx","../../../components/iview/group/src/index.js","../../../components/common/subform/src/component.jsx","../../iview/src/components/index.js","../../utils/lib/modify.js","../../utils/lib/extend.js","../../core/src/components/formCreate.js","../../utils/lib/mergeprops.js","../../core/src/frame/attrs.js","../../utils/lib/deepextend.js","../../utils/lib/console.js","../../utils/lib/json.js","../../core/src/frame/util.js","../../utils/lib/tostring.js","../../utils/lib/toline.js","../../utils/lib/unique.js","../../utils/lib/deepset.js","../../core/src/factory/creator.js","../../core/src/factory/maker.js","../../core/src/frame/api.js","../../core/src/render/cache.js","../../utils/lib/tocase.js","../../core/src/render/render.js","../../core/src/render/index.js","../../core/src/handler/inject.js","../../core/src/handler/page.js","../../core/src/handler/render.js","../../core/src/factory/context.js","../../core/src/handler/loader.js","../../core/src/handler/input.js","../../core/src/factory/parser.js","../../core/src/handler/context.js","../../core/src/handler/lifecycle.js","../../core/src/handler/effect.js","../../core/src/handler/index.js","../../core/src/frame/fetch.js","../../core/src/components/fragment.js","../../core/src/factory/node.js","../../core/src/factory/manager.js","../../core/src/frame/provider.js","../../core/src/frame/index.js","../../iview/src/parsers/datePicker.js","../../iview/src/parsers/hidden.js","../../iview/src/parsers/input.js","../../iview/src/parsers/slider.js","../../iview/src/parsers/switch.js","../../iview/src/parsers/row.js","../../iview/src/parsers/index.js","../../iview/src/core/alias.js","../../iview/src/core/config.js","../../iview/src/core/manager.js","../../iview/src/core/maker.js","../../iview/src/core/api.js","../../iview/src/core/index.js","../../iview/src/index.js"],"sourcesContent":["\"use strict\";function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_extends.apply(this,arguments)}var normalMerge=[\"attrs\",\"props\",\"domProps\"],toArrayMerge=[\"class\",\"style\",\"directives\"],functionalMerge=[\"on\",\"nativeOn\"],mergeJsxProps=function(a){return a.reduce(function(c,a){for(var b in a)if(!c[b])c[b]=a[b];else if(-1!==normalMerge.indexOf(b))c[b]=_extends({},c[b],a[b]);else if(-1!==toArrayMerge.indexOf(b)){var d=c[b]instanceof Array?c[b]:[c[b]],e=a[b]instanceof Array?a[b]:[a[b]];c[b]=d.concat(e)}else if(-1!==functionalMerge.indexOf(b)){for(var f in a[b])if(c[b][f]){var g=c[b][f]instanceof Array?c[b][f]:[c[b][f]],h=a[b][f]instanceof Array?a[b][f]:[a[b][f]];c[b][f]=g.concat(h)}else c[b][f]=a[b][f];}else if(\"hook\"==b)for(var i in a[b])c[b][i]=c[b][i]?mergeFn(c[b][i],a[b][i]):a[b][i];else c[b]=a[b];return c},{})},mergeFn=function(a,b){return function(){a&&a.apply(this,arguments),b&&b.apply(this,arguments)}};module.exports=mergeJsxProps;\n","export default function getSlot(slots, exclude) {\n return Object.keys(slots).reduce((lst, name) => {\n if (!exclude || exclude.indexOf(name) === -1) {\n lst.push(slots[name])\n }\n return lst;\n }, [])\n}","import getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcCheckbox';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {\n type: Array,\n default: () => []\n },\n },\n watch: {\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n computed: {\n options() {\n const opt = this.formCreateInject.options;\n return Array.isArray(opt) ? opt : [];\n }\n },\n methods: {\n onInput(n) {\n this.$emit('input', this.options.filter((opt) => n.indexOf(opt.label) !== -1).map((opt) => opt.value).filter(v => v !== undefined));\n },\n update() {\n 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.formCreateInject.prop} value={this.trueValue}\n on-input={this.onInput}>{this.options.map((opt, index) => {\n const props = {...opt};\n delete props.value;\n return <Checkbox {...{props}} key={'' + index + opt.value}/>\n })}{getSlot(this.$slots)}</CheckboxGroup>\n }\n}\n","export default function toArray(value) {\n return Array.isArray(value)\n ? value\n : ([null, undefined, ''].indexOf(value) > -1 ? [] : [value]);\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import toArray from '@form-create/utils/lib/toarray';\nimport './style.css'\n\nconst NAME = 'fcFrame';\n\nexport default function createFrame(config) {\n return {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n type: {\n type: String,\n default: 'input'\n },\n field: String,\n helper: {\n type: Boolean,\n default: true\n },\n disabled: {\n type: Boolean,\n default: false\n },\n src: {\n type: String,\n required: true\n },\n icon: {\n type: String,\n default: config.fileUpIcon\n },\n width: {\n type: [Number, String],\n default: 500\n },\n height: {\n type: [Number, String],\n default: 370\n },\n maxLength: {\n type: Number,\n default: 0\n },\n okBtnText: {\n type: String,\n default: '确定'\n },\n closeBtnText: {\n type: String,\n default: '关闭'\n },\n modalTitle: String,\n handleIcon: {\n type: [String, Boolean],\n default: undefined\n },\n title: String,\n allowRemove: {\n type: Boolean,\n default: true\n },\n onOpen: {\n type: Function,\n default: () => {\n }\n },\n onOk: {\n type: Function,\n default: () => {\n }\n },\n onCancel: {\n type: Function,\n default: () => {\n }\n },\n onLoad: {\n type: Function,\n default: () => {\n }\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onRemove: {\n type: Function,\n default: () => {\n }\n },\n onHandle: {\n type: Function,\n default(src) {\n this.previewImage = this.getSrc(src);\n this.previewVisible = true;\n }\n },\n modal: {\n type: Object,\n default: () => ({})\n },\n srcKey: {\n type: [String, Number]\n },\n value: [Array, String, Number, Object],\n previewMask: undefined,\n footer: {\n type: Boolean,\n default: true\n },\n reload: {\n type: Boolean,\n default: true\n },\n closeBtn: {\n type: Boolean,\n default: true\n },\n okBtn: {\n type: Boolean,\n default: true\n },\n\n },\n data() {\n return {\n fileList: toArray(this.value),\n previewVisible: false,\n frameVisible: false,\n previewImage: ''\n }\n },\n watch: {\n value(n) {\n this.fileList = toArray(n);\n },\n fileList(n) {\n const val = this.maxLength === 1 ? (n[0] || '') : n;\n this.$emit('input', val);\n this.$emit('change', val);\n },\n src(n) {\n this.modalVm && (this.modalVm.src = n);\n }\n },\n methods: {\n key(unique) {\n return unique;\n },\n closeModel(close) {\n this.$emit(close ? '$close' : '$ok');\n if (this.reload) {\n this.$off('$ok');\n this.$off('$close');\n }\n this.frameVisible = false;\n },\n showModel() {\n if (this.disabled || false === this.onOpen()) return;\n this.frameVisible = true;\n },\n\n makeInput() {\n const props = {\n type: 'text',\n value: (this.fileList.map(v => this.getSrc(v))).toString(),\n icon: this.icon,\n readonly: true,\n clearable: false\n };\n\n return <Input props={props} on={{'on-click': () => this.showModel()}} key={this.key('input')}/>\n },\n\n makeGroup(children) {\n if (!this.maxLength || this.fileList.length < this.maxLength)\n children.push(this.makeBtn());\n return <div key={this.key('group')}>{...children}</div>\n },\n\n makeItem(index, children) {\n return <div class='fc-files' key={this.key('file' + index)}>{...children}</div>;\n },\n valid(f) {\n const field = this.formCreateInject.field || this.field;\n if (field && f !== field)\n throw new Error('[frame]无效的字段值');\n },\n\n makeIcons(val, index) {\n if (this.handleIcon !== false || this.allowRemove === true) {\n const icons = [];\n if ((this.type !== 'file' && this.handleIcon !== false) || (this.type === 'file' && this.handleIcon))\n icons.push(this.makeHandleIcon(val, index));\n if (this.allowRemove)\n icons.push(this.makeRemoveIcon(val, index));\n\n return <div class='fc-upload-cover' key={this.key('uc')}>{icons}</div>\n }\n },\n makeHandleIcon(val, index) {\n return <icon\n props={{type: (this.handleIcon === true || this.handleIcon === undefined) ? 'ios-eye-outline' : this.handleIcon}}\n on-click={() => this.handleClick(val)} key={this.key('hi' + index)}/>\n },\n\n makeRemoveIcon(val, index) {\n return <icon props={{type: 'ios-trash-outline'}} on-click={() => this.handleRemove(val)}\n key={this.key('ri' + index)}/>\n },\n\n makeFiles() {\n return this.makeGroup(this.fileList.map((src, index) => {\n return this.makeItem(index, [<icon props={{type: config.fileIcon, size: 40}}\n on-click={() => this.handleClick(src)}/>, this.makeIcons(src, index)])\n }))\n },\n makeImages() {\n return this.makeGroup(this.fileList.map((src, index) => {\n return this.makeItem(index, [<img src={this.getSrc(src)}/>, this.makeIcons(src, index)])\n }))\n },\n makeBtn() {\n return <div class='fc-upload-btn' on-click={() => this.showModel()}\n key={this.key('btn')}>\n <icon props={{type: this.icon, size: 20}}/>\n </div>\n },\n handleClick(src) {\n return this.onHandle(src);\n },\n handleRemove(src) {\n if (this.disabled) return;\n if (false !== this.onBeforeRemove(src)) {\n this.fileList.splice(this.fileList.indexOf(src), 1);\n this.onRemove(src);\n }\n },\n getSrc(src) {\n return !(this.srcKey) ? src : src[this.srcKey];\n },\n frameLoad(iframe) {\n this.onLoad(iframe);\n try {\n if (this.helper === true) {\n iframe['form_create_helper'] = {\n close: (field) => {\n this.valid(field);\n this.closeModel();\n },\n set: (field, value) => {\n this.valid(field);\n if (!this.disabled)\n this.$emit('input', value);\n\n },\n get: (field) => {\n this.valid(field);\n return this.value;\n },\n onOk: fn => this.$on('$ok', fn),\n onClose: fn => this.$on('$close', fn)\n };\n\n }\n } catch (e) {\n console.log(e);\n }\n },\n makeFooter() {\n const {okBtnText, closeBtnText, closeBtn, okBtn, footer} = this.$props;\n const node = [];\n\n if (!footer) return node;\n if (closeBtn)\n node.push(<Button\n on-click={() => (this.onCancel() !== false && this.closeModel(true))}>{closeBtnText}</Button>);\n if (okBtn)\n node.push(<Button type=\"primary\"\n on-click={() => (this.onOk() !== false && this.closeModel())}>{okBtnText}</Button>);\n return node;\n }\n },\n render() {\n const type = this.type;\n\n let node;\n if (type === 'input')\n node = this.makeInput();\n else if (type === 'image')\n node = this.makeImages();\n else\n node = this.makeFiles();\n const {width, height, src, title, modalTitle} = this.$props;\n this.$nextTick(() => {\n if (this.$refs.frame) {\n this.frameLoad(this.$refs.frame.contentWindow || {});\n }\n });\n return <div class=\"_fc-frame\">{node}\n <Modal 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 mounted() {\n this.$on('fc.closeModal', this.closeModal);\n }\n };\n}\n","import createFrame from './component';\n\nconst frame = createFrame({\n fileIcon: 'md-document',\n fileUpIcon: 'ios-folder-open',\n});\n\n\nframe.v2 = createFrame({\n fileIcon: 'document-text',\n fileUpIcon: 'folder',\n});\n\nexport default frame;\n","import getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcRadio';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {}\n },\n watch: {\n value() {\n this.update();\n }\n },\n data() {\n return {\n trueValue: []\n }\n },\n computed: {\n options() {\n const opt = this.formCreateInject.options;\n return Array.isArray(opt) ? opt : [];\n }\n },\n methods: {\n onInput(n) {\n this.$emit('input', this.options.filter((opt) => opt.label === n).reduce((initial, opt) => opt.value, ''));\n },\n update() {\n this.trueValue = this.options.filter((opt) => opt.value === this.value).reduce((initial, opt) => opt.label, '');\n }\n },\n created() {\n this.update();\n },\n render() {\n return <RadioGroup {...this.formCreateInject.prop} value={this.trueValue}\n on-input={this.onInput}>{this.options.map((opt, index) => {\n const props = {...opt};\n delete props.value;\n return <Radio {...{props}} key={'' + index + opt.value}/>\n })}{getSlot(this.$slots)}</RadioGroup>\n }\n}\n","const is = {\n type(arg, type) {\n return Object.prototype.toString.call(arg) === '[object ' + type + ']'\n },\n Undef(v) {\n return v === undefined || v === null\n },\n Element(arg) {\n return typeof arg === 'object' && arg !== null && arg.nodeType === 1 && !is.Object(arg)\n },\n trueArray(data) {\n return Array.isArray(data) && data.length > 0;\n }\n};\n\n['Date', 'Object', 'Function', 'String', 'Boolean', 'Array', 'Number'].forEach(t => {\n is[t] = function (arg) {\n return is.type(arg, t);\n }\n})\n\nexport function hasProperty(rule, k) {\n return ({}).hasOwnProperty.call(rule, k)\n}\n\nexport default is;\n","import is from '@form-create/utils/lib/type';\n\nconst NAME = 'fcSelect';\nexport default {\n name: NAME,\n functional: true,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n },\n render(h, ctx) {\n const options = ctx.props.formCreateInject.options;\n return <Select {...ctx.data}>{(Array.isArray(options) ? options : []).map((props, index) => {\n const slot = props.slot;\n return <Option {...{props}}\n key={'' + index + props.value}>\n {slot ? <template\n slot={props.slotName || 'default'}>{is.Function(slot) ? props.slot(h) : slot}</template> : null}\n </Option>\n })}{ctx.children}</Select>;\n }\n}\n","import toArray from '@form-create/utils/lib/toarray';\nimport getSlot from '@form-create/utils/lib/slot';\n\nconst NAME = 'fcTree';\n\nexport default {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n type: {\n type: String,\n default: 'checked'\n },\n value: {\n type: [Array, String, Number],\n default: () => []\n }\n },\n data() {\n return {\n treeData: []\n }\n },\n watch: {\n value(n) {\n this.setStatus(n);\n }\n },\n created() {\n this.setStatus(this.value);\n },\n methods: {\n setStatus(value) {\n const n = toArray(value);\n const data = this.formCreateInject.prop.props.data;\n this.type === 'selected' ? this.checked(data, n, 'selected') : this.checked(data, n, 'checked');\n this.$forceUpdate();\n },\n checked(_data, value, type) {\n _data.forEach((node) => {\n this.$set(node, type, value.indexOf(node.id) !== -1);\n if (node.children !== undefined && Array.isArray(node.children))\n this.checked(node.children, value, type);\n });\n },\n onInput(list) {\n this.$emit('input', list.map(node => node.id));\n }\n },\n render() {\n const on = {};\n if (this.type === 'selected') {\n on['on-select-change'] = this.onInput;\n } else {\n on['on-check-change'] = this.onInput;\n }\n return <Tree {...this.formCreateInject.prop} ref=\"tree\" on={on}>{getSlot(this.$slots)}</Tree>;\n }\n}\n","import toArray from '@form-create/utils/lib/toarray';\nimport './style.css';\nimport getSlot from '@form-create/utils/lib/slot';\n\nfunction parseFile(file) {\n return {\n url: file,\n name: getFileName(file)\n };\n}\n\nfunction getFileName(file) {\n return ('' + file).split('/').pop()\n}\n\nconst NAME = 'fcUpload';\n\n\nexport default function createUpload(config) {\n return {\n name: NAME,\n props: {\n formCreateInject: {\n type: Object,\n required: true,\n },\n onHandle: {\n type: Function,\n default(file) {\n this.previewImage = file.url;\n this.previewVisible = true;\n }\n },\n uploadType: {\n type: String,\n default: 'file'\n },\n maxLength: {\n type: Number,\n default: 0\n },\n allowRemove: {\n type: Boolean,\n default: true\n },\n modalTitle: String,\n handleIcon: {\n type: [String, Boolean],\n default: () => undefined\n },\n value: [Array, String]\n },\n data() {\n return {\n uploadList: [],\n previewVisible: false,\n previewImage: ''\n }\n },\n created() {\n if (this.formCreateInject.prop.props.showUploadList === undefined)\n this.formCreateInject.prop.props.showUploadList = false;\n this.formCreateInject.prop.props.defaultFileList = toArray(this.value).map(parseFile);\n },\n watch: {\n value(n) {\n if (this.$refs.upload.fileList.every(file => {\n return !file.status || file.status === 'finished';\n })) {\n this.$refs.upload.fileList = toArray(n).map(parseFile);\n this.uploadList = this.$refs.upload.fileList;\n }\n },\n maxLength(n, o) {\n if (o === 1 || n === 1)\n this.update();\n }\n },\n methods: {\n key(unique) {\n return unique;\n },\n isDisabled() {\n return this.formCreateInject.prop.props.disabled === true;\n },\n onRemove(file) {\n if (this.isDisabled()) return;\n this.$refs.upload.handleRemove(file);\n },\n handleClick(file) {\n this.onHandle(file);\n },\n makeItem(file, index) {\n return this.uploadType === 'image'\n ? <img src={file.url} key={this.key('img' + index)}/>\n : <icon props={{type: config.fileIcon, size: 40}} key={this.key('i' + index)}/>\n },\n makeRemoveIcon(file, index) {\n return <icon type='ios-trash-outline' on-click={() => this.onRemove(file)}\n key={this.key('ri' + index)}/>;\n },\n makeHandleIcon(file, index) {\n return <icon\n type={(this.handleIcon === true || this.handleIcon === undefined) ? 'ios-eye-outline' : this.handleIcon}\n on-click={() => this.handleClick(file)} key={this.key('hi' + index)}/>;\n },\n makeProgress(file, index) {\n return <Progress props={{percent: file.percentage, hideInfo: true}} style=\"width:90%\"\n key={this.key('pg' + index)}/>\n },\n makeIcons(file, index) {\n const icons = [];\n if (this.allowRemove || this.handleIcon !== false) {\n if ((this.uploadType !== 'file' && this.handleIcon !== false) || (this.uploadType === 'file' && this.handleIcon))\n icons.push(this.makeHandleIcon(file, index));\n if (this.allowRemove)\n icons.push(this.makeRemoveIcon(file, index));\n\n return <div class=\"fc-upload-cover\">{icons}</div>;\n }\n },\n makeFiles() {\n return this.uploadList.map((file, index) => this.$scopedSlots.fileList ? this.$scopedSlots.fileList({\n file,\n index,\n vm: this\n }) : <div key={this.key(index)}\n class=\"fc-files\">{file.showProgress ? this.makeProgress(file, index) : [this.makeItem(file, index), this.makeIcons(file, index)]}</div>);\n },\n makeUpload() {\n const isShow = (!this.maxLength || this.maxLength > this.uploadList.length);\n return <Upload {...this.formCreateInject.prop} ref=\"upload\"\n style={{display: 'inline-block'}}\n key={this.key('upload')}>\n {isShow ? <template slot=\"default\">\n {this.$slots.default || <div class=\"fc-upload-btn\">\n <icon props={{\n type: this.uploadType === 'file' ? 'ios-cloud-upload-outline' : config.imgUpIcon,\n size: 20\n }}/>\n </div>}\n </template> : null}{getSlot(this.$slots,['default'])}\n </Upload>;\n },\n update() {\n let files = this.$refs.upload.fileList.map((file) => file.url).filter((url) => url !== undefined);\n this.$emit('input', this.maxLength === 1 ? (files[0] || '') : files);\n },\n handleCancel() {\n this.previewVisible = false;\n },\n },\n render() {\n if (this.$refs.upload) {\n if (this.formCreateInject.prop.props.showUploadList === undefined)\n this.formCreateInject.prop.props.showUploadList = this.$refs.upload.showUploadList;\n this.formCreateInject.prop.props.defaultFileList = this.$refs.upload.defaultFileList;\n }\n return (\n <div\n class=\"_fc-upload\">{[this.formCreateInject.prop.props.showUploadList ? [] : this.makeFiles(), this.makeUpload()]}\n <Modal 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}\n","import createUpload from './component';\n\nconst upload = createUpload({\n\n fileIcon: 'md-document',\n imgUpIcon: 'md-images',\n});\n\nupload.v2 = createUpload({\n\n fileIcon: 'document-text',\n imgUpIcon: 'image',\n});\n\nexport default upload;\n","import {hasProperty} from '@form-create/utils/lib/type';\n\nconst NAME = 'fcGroup';\n\nexport default function createGroup(config) {\n return {\n name: NAME,\n props: {\n field: String,\n rule: [Array, Object],\n rules: Array,\n expand: Number,\n options: Object,\n formCreateInject: {\n type: Object,\n required: true,\n },\n button: {\n type: Boolean,\n default: true\n },\n max: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n value: {\n type: Array,\n default: () => []\n },\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n fontSize: {\n type: Number,\n default: 28\n },\n onBeforeRemove: {\n type: Function,\n default: () => {\n }\n },\n onBeforeAdd: {\n type: Function,\n default: () => {\n }\n },\n },\n data() {\n return {\n len: 0,\n cacheRule: {},\n cacheValue: {},\n type: undefined\n }\n },\n computed: {\n formRule() {\n if (this.rule) {\n return Array.isArray(this.rule) ? this.rule : [this.rule];\n }\n if (this.rules) {\n return this.rules;\n }\n return [];\n }\n },\n watch: {\n disabled(n) {\n if (this.syncDisabled) {\n const lst = this.cacheRule;\n Object.keys(lst).forEach(k => {\n lst[k].$f.disabled(n);\n })\n }\n },\n expand(n) {\n let d = n - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n },\n value(n) {\n n = n || [];\n let keys = Object.keys(this.cacheRule), total = keys.length, len = total - n.length;\n if (len < 0) {\n for (let i = len; i < 0; i++) {\n this.addRule(n.length + i);\n }\n for (let i = 0; i < total; i++) {\n this.setValue(keys[i], n[i]);\n }\n } else {\n if (len > 0) {\n for (let i = 0; i < len; i++) {\n this.removeRule(keys[total - i - 1]);\n }\n this.subForm();\n }\n n.forEach((val, i) => {\n this.setValue(keys[i], n[i]);\n });\n }\n }\n },\n methods: {\n _value(v) {\n return (v && hasProperty(v, this.field)) ? v[this.field] : v;\n },\n cache(k, val) {\n this.cacheValue[k] = JSON.stringify(val);\n },\n input(value) {\n this.$emit('input', value);\n this.$emit('change', value);\n },\n formData(key, formData) {\n const cacheRule = this.cacheRule;\n const keys = Object.keys(cacheRule);\n if (keys.filter(k => cacheRule[k].$f).length !== keys.length) {\n return;\n }\n const value = keys.map(k => {\n const data = key === k ? formData : {...this.cacheRule[k].$f.form};\n const value = this.field ? data[this.field] || null : data;\n this.cache(k, value);\n return value;\n });\n this.input(value);\n },\n setValue(key, value) {\n const field = this.field, $f = this.cacheRule[key].$f;\n if (field) {\n value = {[field]: this._value(value)};\n }\n if (this.cacheValue[key] === JSON.stringify(field ? value[field] : value)) {\n return;\n }\n this.cache(key, value);\n $f.coverValue(value || {});\n },\n addRule(i, emit) {\n const rule = this.formCreateInject.form.copyRules(this.formRule);\n const options = this.options ? {...this.options} : {\n submitBtn: false,\n resetBtn: false,\n };\n options.formData = this.field ? ({[this.field]: this._value(this.value[i])}) : (this.value[i] || {});\n this.$set(this.cacheRule, ++this.len, {rule, options});\n if (emit) {\n this.$nextTick(() => this.$emit('add', rule, Object.keys(this.cacheRule).length - 1));\n }\n },\n add$f(i, key, $f) {\n this.cacheRule[key].$f = $f;\n this.subForm();\n this.$nextTick(() => {\n if (this.syncDisabled) {\n $f.disabled(this.disabled);\n }\n this.$emit('itemMounted', $f, Object.keys(this.cacheRule).indexOf(key));\n });\n },\n subForm() {\n this.formCreateInject.subForm(Object.keys(this.cacheRule).map(k => this.cacheRule[k].$f));\n },\n removeRule(key, emit) {\n const index = Object.keys(this.cacheRule).indexOf(key);\n this.$delete(this.cacheRule, key);\n this.$delete(this.cacheValue, key);\n if (emit) {\n this.$nextTick(() => this.$emit('remove', index));\n }\n },\n add(i) {\n if (this.disabled || false === this.onBeforeAdd(this.value)) {\n return;\n }\n this.addRule(i, true);\n },\n del(index, key) {\n if (this.disabled || false === this.onBeforeRemove(this.value, index)) {\n return;\n }\n this.removeRule(key, true);\n this.subForm();\n this.value.splice(index, 1);\n this.input(this.value);\n },\n addIcon(key) {\n return <Icon key={`a${key}`} type={config.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(index, key) {\n return <Icon key={`d${key}`} type={config.removeIcon}\n style={`font-size:${this.fontSize}px;cursor:${this.disabled ? 'not-allowed;color:#c9cdd4' : 'pointer'};`}\n on-click={() => this.del(index, key)}/>;\n },\n makeIcon(total, index, key) {\n if (this.$scopedSlots.button) {\n return this.$scopedSlots.button({\n total,\n index,\n vm: this,\n key,\n del: () => this.del(index, key),\n add: this.add\n });\n }\n if (index === 0) {\n return [(this.max !== 0 && total >= this.max) ? null : this.addIcon(key), (this.min === 0 || total > this.min) ? this.delIcon(index, key) : null];\n }\n if (index >= this.min) {\n return this.delIcon(index, key);\n }\n },\n emitEvent(name, args, index, key) {\n this.$emit(name, ...args, this.cacheRule[key].$f, index);\n },\n expandRule(n) {\n for (let i = 0; i < n; i++) {\n this.value.push(this.field ? null : {});\n }\n }\n },\n created() {\n this.type = this.formCreateInject.form.$form();\n const d = (this.expand || 0) - this.value.length;\n if (d > 0) {\n this.expandRule(d);\n }\n for (let i = 0; i < this.value.length; i++) {\n this.addRule(i);\n }\n },\n render() {\n const keys = Object.keys(this.cacheRule);\n const button = this.button;\n const Type = this.type;\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={config.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 key={'con'}>{keys.map((key, index) => {\n const {rule, options} = this.cacheRule[key];\n return <Row align=\"middle\" type=\"flex\" key={key}\n style=\"border-bottom:1px dashed #dcdee2;margin-bottom:10px;\">\n <Col span={button ? 20 : 24}><FormItem><Type\n key={key}\n on={{\n 'update:value': (formData) => this.formData(key, formData),\n 'emit-event': (name, ...args) => this.emitEvent(name, args, index, key),\n input: ($f) => this.add$f(index, key, $f)\n }}\n rule={rule}\n option={options} extendOption={true}/></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}\n","import createGroup from './component';\n\nconst group = createGroup({\n removeIcon: 'ios-remove-circle-outline',\n addIcon: 'ios-add-circle-outline',\n});\n\ngroup.v2 = createGroup({\n addIcon: 'ios-plus-outline',\n removeIcon: 'ios-minus-outline',\n})\n\nexport default group;\n","const NAME = 'fcSubForm';\n\nexport default {\n name: NAME,\n props: {\n rule: Array,\n options: Object,\n formCreateInject: {\n type: Object,\n required: true,\n },\n value: {\n type: Object,\n default: () => ({})\n },\n disabled: {\n type: Boolean,\n default: false\n },\n syncDisabled: {\n type: Boolean,\n default: true\n },\n },\n data() {\n return {\n cacheRule: {},\n cacheValue: {},\n type: undefined\n }\n },\n watch: {\n disabled(n) {\n this.syncDisabled && this.cacheRule.$f.disabled(n);\n },\n value(n) {\n this.setValue(n);\n }\n },\n methods: {\n formData(value) {\n this.cacheValue = JSON.stringify(value);\n this.$emit('input', value);\n this.$emit('change', value);\n },\n setValue(value) {\n const str = JSON.stringify(value);\n if (this.cacheValue === str) {\n return;\n }\n this.cacheValue = str;\n this.cacheRule.$f.coverValue(value || {});\n },\n addRule() {\n const options = this.options ? this.options : {\n submitBtn: false,\n resetBtn: false,\n };\n options.formData = {...(this.value || {})};\n this.cacheRule = {rule: this.rule, options};\n },\n add$f($f) {\n this.cacheRule.$f = $f;\n this.subForm();\n this.$nextTick(() => {\n this.syncDisabled && $f.disabled(this.disabled);\n this.$emit('itemMounted', $f);\n });\n },\n subForm() {\n this.formCreateInject.subForm(this.cacheRule.$f);\n },\n emitEvent(name, ...args) {\n this.$emit(name, ...args);\n }\n },\n created() {\n this.addRule();\n this.type = this.formCreateInject.form.$form();\n },\n render() {\n const {rule, options} = this.cacheRule;\n const Type = this.type;\n return <Type\n on={{\n 'update:value': this.formData,\n 'emit-event': this.emitEvent,\n input: this.add$f\n }}\n rule={rule}\n option={options} extendOption={true}/>\n }\n}\n","import checkbox from '@form-create/component-ivu-checkbox/src/index';\nimport frame from '@form-create/component-ivu-frame/src/index';\nimport radio from '@form-create/component-ivu-radio/src/index';\nimport select from '@form-create/component-ivu-select/src/index';\nimport tree from '@form-create/component-ivu-tree/src/index';\nimport upload from '@form-create/component-ivu-upload/src/index';\nimport group from '@form-create/component-ivu-group/src/index';\nimport subForm from '@form-create/component-subform/src/index';\n\nexport default [\n checkbox,\n radio,\n select,\n tree,\n subForm,\n frame,\n upload,\n group\n];\n","import Vue from 'vue';\n\nexport function $set(target, field, value) {\n Vue.set(target, field, value);\n}\n\nexport function $del(target, field) {\n Vue.delete(target, field);\n}\n","import {$set} from './modify';\n\nconst _extends = Object.assign || function (a) {\n for (let b, c = 1; c < arguments.length; c++) {\n for (let d in b = arguments[c], b) {\n Object.prototype.hasOwnProperty.call(b, d) && ($set(a, d, b[d]));\n }\n }\n\n return a;\n}\n\nexport default function extend() {\n return _extends.apply(this, arguments);\n}\n\nexport function copy(obj) {\n if (typeof obj !== 'object' || obj === null) return obj;\n return obj instanceof Array ? [...obj] : {...obj};\n}\n","import extend from '@form-create/utils/lib/extend';\n\nconst NAME = 'FormCreate';\n\nexport default function $FormCreate(FormCreate) {\n return {\n name: NAME,\n componentName: NAME,\n model: {\n prop: 'api'\n },\n provide() {\n return {\n $pfc: this,\n }\n },\n inject: {$pfc: {default: null}},\n props: {\n rule: {\n type: Array,\n required: true\n },\n option: {\n type: Object,\n default: () => {\n return {};\n }\n },\n extendOption: Boolean,\n value: Object,\n api: Object,\n },\n data() {\n return {\n formData: undefined,\n destroyed: false,\n validate: {},\n $f: undefined,\n isShow: true,\n unique: 1,\n renderRule: [...this.rule || []],\n ctxInject: {},\n updateValue: ''\n };\n },\n render() {\n return this.formCreate.render();\n },\n methods: {\n _refresh() {\n ++this.unique;\n },\n _renderRule() {\n this.renderRule = [...this.rule || []];\n },\n _updateValue(value) {\n if (this.destroyed) return;\n this.updateValue = JSON.stringify(value);\n this.$emit('update:value', value);\n }\n },\n watch: {\n value: {\n handler(n) {\n if (JSON.stringify(n) === this.updateValue) return;\n this.$f.setValue(n);\n },\n deep: true\n },\n option: {\n handler(n) {\n this.formCreate.initOptions(n);\n this.$f.refresh();\n },\n deep: true\n },\n rule(n) {\n if (n.length === this.renderRule.length && n.every(v => this.renderRule.indexOf(v) > -1)) return;\n this.formCreate.$handle.reloadRule(n);\n this._renderRule();\n }\n },\n beforeCreate() {\n const {rule, option} = this.$options.propsData;\n this.formCreate = new FormCreate(this, rule, option);\n Object.keys(this.formCreate.prop).forEach(k => {\n extend(this.$options[k], this.formCreate.prop[k]);\n })\n },\n }\n}\n","export const normalMerge = ['attrs', 'props', 'domProps', 'scopedSlots'];\nexport const toArrayMerge = ['class', 'style', 'directives'];\nexport const functionalMerge = ['on', 'nativeOn'];\n\nconst mergeProps = (objects, initial = {}, opt = {}) => {\n const _normalMerge = [...normalMerge, ...opt['normal'] || []];\n const _toArrayMerge = [...toArrayMerge, ...opt['array'] || []];\n const _functionalMerge = [...functionalMerge, ...opt['functional'] || []];\n const propsMerge = opt['props'] || [];\n\n return objects.reduce((a, b) => {\n for (const key in b) {\n if (a[key]) {\n if (propsMerge.indexOf(key) > -1) {\n a[key] = mergeProps([b[key]], a[key]);\n } else if (_normalMerge.indexOf(key) > -1) {\n a[key] = {...a[key], ...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n const arrA = a[key] instanceof Array ? a[key] : [a[key]];\n const arrB = b[key] instanceof Array ? b[key] : [b[key]];\n a[key] = [...arrA, ...arrB]\n } else if (_functionalMerge.indexOf(key) > -1) {\n for (const event in b[key]) {\n if (a[key][event]) {\n const arrA = a[key][event] instanceof Array ? a[key][event] : [a[key][event]];\n const arrB = b[key][event] instanceof Array ? b[key][event] : [b[key][event]];\n a[key][event] = [...arrA, ...arrB]\n } else {\n a[key][event] = b[key][event]\n }\n }\n } else if (key === 'hook') {\n for (let hook in b[key]) {\n if (a[key][hook]) {\n a[key][hook] = mergeFn(a[key][hook], b[key][hook])\n } else {\n a[key][hook] = b[key][hook]\n }\n }\n } else {\n a[key] = b[key]\n }\n } else {\n if (_normalMerge.indexOf(key) > -1 || _functionalMerge.indexOf(key) > -1 || propsMerge.indexOf(key) > -1) {\n a[key] = {...b[key]}\n } else if (_toArrayMerge.indexOf(key) > -1) {\n a[key] = b[key] instanceof Array ? [...b[key]] : (typeof b[key] === 'object' ? {...b[key]} : b[key]);\n } else\n a[key] = b[key];\n }\n }\n return a\n }, initial);\n}\n\nconst mergeFn = (fn1, fn2) =>\n function () {\n fn1 && fn1.apply(this, arguments);\n fn2 && fn2.apply(this, arguments);\n };\n\nexport default mergeProps;\n","import {functionalMerge, normalMerge, toArrayMerge} from '@form-create/utils/lib/mergeprops';\n\n\nexport const keyAttrs = ['type', 'slot', 'emitPrefix', 'value', 'name', 'native', 'hidden', 'display', 'inject', 'options', 'emit', 'nativeEmit', 'link', 'prefix', 'suffix', 'update', 'sync', 'optionsTo', 'key'];\n\nexport const arrayAttrs = ['validate', 'children', 'control'];\n\nexport const normalAttrs = ['effect', 'deep'];\n\nexport function attrs() {\n return [...keyAttrs, ...normalMerge, ...toArrayMerge, ...functionalMerge, ...arrayAttrs, ...normalAttrs];\n}\n","import {$set} from './modify';\nimport is from './type';\n\nexport default function deepExtend(origin, target = {}, mode) {\n let isArr = false;\n for (let key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n let clone = target[key];\n if ((isArr = Array.isArray(clone)) || is.Object(clone)) {\n let nst = origin[key] === undefined;\n if (isArr) {\n isArr = false;\n nst && $set(origin, key, []);\n } else if (clone._clone && mode !== undefined) {\n if (mode) {\n clone = clone.getRule();\n nst && $set(origin, key, {});\n } else {\n $set(origin, key, clone._clone());\n continue;\n }\n } else {\n nst && $set(origin, key, {});\n }\n origin[key] = deepExtend(origin[key], clone, mode);\n } else if (is.Undef(clone)) {\n $set(origin, key, clone);\n } else if (clone.__json !== undefined) {\n $set(origin, key, clone.__json);\n } else if (clone.__origin !== undefined) {\n $set(origin, key, clone.__origin);\n } else {\n $set(origin, key, clone);\n }\n }\n }\n return (mode !== undefined && Array.isArray(origin)) ? origin.filter(v => !v || !v.__ctrl) : origin\n}\n\nexport function deepCopy(value) {\n return deepExtend({}, {value}).value;\n}\n\nexport function deepExtendArgs(origin, ...lst) {\n lst.forEach(target => {\n origin = deepExtend(origin, target);\n });\n return origin;\n}\n","export function format(type, msg, rule) {\n return (`[form-create ${type}]: ${msg}` + (rule ? ('\\n\\nrule: ' + JSON.stringify(rule.getRule ? rule.getRule() : rule)) : ''))\n}\n\nexport function tip(msg, rule) {\n console.warn(format('tip', msg, rule));\n}\n\nexport function err(msg, rule) {\n console.error(format('err', msg, rule));\n}\n\nexport function logError(e) {\n err(e.toString());\n console.error(e);\n}\n","import deepExtend from './deepextend';\nimport {err} from './console';\nimport is, {hasProperty} from './type';\n\nconst PREFIX = '[[FORM-CREATE-PREFIX-';\nconst SUFFIX = '-FORM-CREATE-SUFFIX]]';\n\nconst $T = '$FN:';\nconst $TX = '$FNX:';\nconst FUNCTION = 'function';\n\nexport function toJson(obj, space) {\n return JSON.stringify(deepExtend([], obj, true), function (key, val) {\n if (val && val._isVue === true)\n return undefined;\n\n if (typeof val !== FUNCTION) {\n return val;\n }\n if (hasProperty(val, '__json')) {\n return val.__json;\n }\n if (val.__origin)\n val = val.__origin;\n\n if (val.__emit)\n return undefined;\n return PREFIX + val + SUFFIX;\n }, space);\n}\n\nfunction makeFn(fn) {\n return eval('(' + FUNCTION + '(){return ' + fn + ' })()')\n}\n\nexport function parseFn(fn, mode) {\n if (fn && is.String(fn) && fn.length > 4) {\n let v = fn.trim();\n let flag = false;\n try {\n if (v.indexOf(SUFFIX) > 0 && v.indexOf(PREFIX) === 0) {\n v = v.replace(SUFFIX, '').replace(PREFIX, '');\n flag = true;\n } else if (v.indexOf($T) === 0) {\n v = v.replace($T, '');\n flag = true;\n } else if (v.indexOf($TX) === 0) {\n v = makeFn('function($inject){' + v.replace($TX, '') + '}');\n v.__json = fn;\n v.__inject = true;\n return v;\n } else if (!mode && v.indexOf(FUNCTION) === 0 && v !== FUNCTION) {\n flag = true;\n }\n if (!flag) return fn;\n const val = makeFn((v.indexOf(FUNCTION) === -1 && v.indexOf('(') !== 0) ? (FUNCTION + ' ' + v) : v);\n val.__json = fn;\n return val;\n } catch (e) {\n err(`解析失败:${v}\\n\\nerr: ${e}`);\n return undefined;\n }\n }\n return fn;\n}\n\nexport function parseJson(json, mode) {\n return JSON.parse(json, function (k, v) {\n if (is.Undef(v) || !v.indexOf) return v;\n return parseFn(v, mode);\n });\n}\n","import deepExtend from '@form-create/utils/lib/deepextend';\nimport is from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {arrayAttrs, normalAttrs} from './attrs';\nimport {logError} from '@form-create/utils/lib/console';\nexport {parseJson,parseFn,toJson} from '@form-create/utils/lib/json';\n\nexport function enumerable(value, writable) {\n return {\n value,\n enumerable: false,\n configurable: false,\n writable: !!writable\n }\n}\n\n//todo 优化位置\nexport function copyRule(rule, mode) {\n return copyRules([rule], mode || false)[0];\n}\n\nexport function copyRules(rules, mode) {\n return deepExtend([], [...rules], mode || false);\n}\n\nexport function mergeRule(rule, merge) {\n mergeProps(Array.isArray(merge) ? merge : [merge], rule, {array: arrayAttrs, normal: normalAttrs});\n return rule;\n}\n\nexport function getRule(rule) {\n return is.Function(rule.getRule) ? rule.getRule() : rule;\n}\n\nexport function mergeGlobal(target, merge) {\n if (!target) return merge;\n Object.keys(merge || {}).forEach((k) => {\n if (merge[k]) {\n target[k] = mergeRule(target[k] || {}, merge[k])\n }\n });\n return target;\n}\n\nexport function funcProxy(that, proxy) {\n Object.defineProperties(that, Object.keys(proxy).reduce((initial, k) => {\n initial[k] = {\n get() {\n return proxy[k]();\n }\n }\n return initial;\n }, {}))\n}\n\nexport function byCtx(rule) {\n return rule.__fc__ || (rule.__origin__ ? rule.__origin__.__fc__ : null)\n}\n\nexport function invoke(fn, def) {\n try {\n def = fn()\n } catch (e) {\n logError(e);\n }\n return def;\n}\n","export default function toString(val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n","export default function toLine(name) {\n let line = name.replace(/([A-Z])/g, '-$1').toLocaleLowerCase();\n if (line.indexOf('-') === 0)\n line = line.substr(1);\n return line;\n}\n","let id = 0;\n\nexport default function uniqueId() {\n return Math.random().toString(36).substr(3, 3) + Number(`${Date.now()}${++id}`).toString(36);\n}\n","export default function deepSet(data, idx, val) {\n let _data = data, to;\n (idx || '').split('.').forEach(v => {\n if (to) {\n if (!_data[to] || typeof _data[to] != 'object') {\n _data[to] = {}\n }\n _data = _data[to];\n }\n to = v;\n })\n _data[to] = val;\n return _data;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {attrs} from '../frame/attrs';\nimport {copyRule, mergeRule} from '../frame/util';\nimport {$set} from '@form-create/utils/lib';\n\nexport function baseRule() {\n return {\n props: {},\n on: {},\n options: [],\n children: [],\n hidden: false,\n display: true,\n value: undefined,\n };\n}\n\nexport function creatorFactory(name, init) {\n return (title, field, value, props = {}) => {\n const maker = new Creator(name, title, field, value, props);\n if (init) {\n if (is.Function(init)) init(maker);\n else maker.props(init);\n }\n return maker;\n };\n}\n\nexport default function Creator(type, title, field, value, props) {\n this._data = extend(baseRule(), {type, title, field, value, props: props || {}});\n this.event = this.on;\n}\n\nextend(Creator.prototype, {\n getRule() {\n return this._data;\n },\n setProp(key, value) {\n $set(this._data, key, value);\n return this;\n },\n _clone() {\n const clone = new this.constructor();\n clone._data = copyRule(this._data);\n return clone;\n },\n})\n\nexport function appendProto(attrs) {\n attrs.forEach(name => {\n Creator.prototype[name] = function (key) {\n mergeRule(this._data, {[name]: arguments.length < 2 ? key : {[key]: arguments[1]}})\n return this;\n };\n });\n}\n\nappendProto(attrs());\n","import {creatorFactory} from './creator';\n\nconst commonMaker = creatorFactory('');\n\nexport function create(type, field, title) {\n let make = commonMaker('', field);\n make._data.type = type;\n make._data.title = title;\n return make;\n}\n\nexport function createTmp(template, vm, field, title) {\n let make = commonMaker('', field);\n make._data.type = 'template';\n make._data.template = template;\n make._data.title = title;\n make._data.vm = vm;\n return make;\n}\n\nexport default function makerFactory() {\n return {\n create,\n createTmp,\n template: createTmp,\n factory: creatorFactory\n };\n}\n","import {byCtx, invoke, mergeRule, toJson} from './util';\nimport {$set} from '@form-create/utils/lib/modify';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\nimport {format} from '@form-create/utils/lib/console';\n\n\nfunction copy(value) {\n return deepCopy(value);\n}\n\nexport default function Api(h) {\n\n function tidyFields(fields) {\n if (is.Undef(fields))\n fields = h.fields();\n else if (!Array.isArray(fields))\n fields = [fields];\n return fields;\n }\n\n function props(fields, key, val) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n $set(ctx.rule, key, val);\n h.$render.clearCache(ctx);\n });\n })\n }\n\n function allSubForm() {\n const subs = h.subForm;\n return Object.keys(subs).reduce((initial, k) => {\n const sub = subs[k];\n if (!sub) return initial;\n if (Array.isArray(sub))\n initial.push(...sub);\n else\n initial.push(sub);\n return initial;\n }, []);\n }\n\n const api = {\n helper: {\n tidyFields, props\n },\n get config() {\n return h.options\n },\n get options() {\n return h.options\n },\n get form() {\n return h.form\n },\n get rule() {\n return h.rules\n },\n get parent() {\n return h.vm.$pfc && h.vm.$pfc.$f\n },\n get children() {\n return allSubForm();\n },\n formData(fields) {\n return tidyFields(fields).reduce((initial, id) => {\n const ctx = h.getFieldCtx(id);\n if (!ctx) return initial;\n initial[ctx.field] = copy(ctx.rule.value);\n return initial;\n }, copy(h.appendData));\n },\n getValue(field) {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n return copy(ctx.rule.value);\n },\n coverValue(formData) {\n h.deferSyncValue(() => {\n api.fields().forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (!ctxs) return h.appendData[key] = formData[key];\n const flag = hasProperty(formData, key);\n ctxs.forEach(ctx => {\n ctx.rule.value = flag ? formData[key] : undefined;\n })\n });\n })\n },\n setValue(field) {\n let formData = field;\n if (arguments.length >= 2)\n formData = {[field]: arguments[1]};\n h.deferSyncValue(() => {\n Object.keys(formData).forEach(key => {\n const ctxs = h.fieldCtx[key];\n if (!ctxs) return h.appendData[key] = formData[key];\n ctxs.forEach(ctx => {\n ctx.rule.value = formData[key];\n });\n });\n })\n },\n removeField(field) {\n const ctx = h.getCtx(field);\n h.deferSyncValue(() => {\n h.getCtxs(field).forEach(ctx => {\n ctx.rm();\n });\n }, true);\n return ctx ? ctx.origin : undefined;\n },\n removeRule(rule) {\n const ctx = rule && byCtx(rule);\n if (!ctx) return;\n ctx.rm();\n return ctx.origin;\n },\n destroy: () => {\n h.vm.$el.parentNode && h.vm.$el.parentNode.removeChild(h.vm.$el);\n h.vm.$destroy();\n },\n fields: () => h.fields(),\n append: (rule, after, child) => {\n let index = h.sort.length - 1, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n index = ctx.rule.children.length - 1;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index + 1, 0, rule);\n },\n prepend: (rule, after, child) => {\n let index = 0, rules;\n const ctx = h.getCtx(after);\n\n if (ctx) {\n if (child) {\n rules = ctx.rule.children;\n } else {\n index = ctx.root.indexOf(ctx.origin);\n rules = ctx.root;\n }\n } else rules = h.rules;\n rules.splice(index, 0, rule);\n },\n hidden(state, fields) {\n props(fields, 'hidden', !!state);\n h.refresh();\n },\n hiddenStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.hidden;\n },\n display(state, fields) {\n props(fields, 'display', !!state);\n h.refresh();\n },\n displayStatus(id) {\n const ctx = h.getCtx(id);\n if (!ctx) return;\n return !!ctx.rule.display;\n },\n disabled(disabled, fields) {\n tidyFields(fields).forEach((field) => {\n h.getCtxs(field).forEach(ctx => {\n $set(ctx.rule.props, 'disabled', !!disabled);\n });\n });\n h.refresh();\n },\n model(origin) {\n return h.fields().reduce((initial, key) => {\n const ctx = h.fieldCtx[key][0];\n initial[key] = origin ? ctx.origin : ctx.rule;\n return initial;\n }, {});\n },\n component(origin) {\n return Object.keys(h.nameCtx).reduce((initial, key) => {\n const ctx = h.nameCtx[key].map(ctx => origin ? ctx.origin : ctx.rule);\n initial[key] = ctx.length === 1 ? ctx[0] : ctx;\n return initial;\n }, {});\n },\n bind() {\n return api.form;\n },\n reload: (rules) => {\n h.reloadRule(rules)\n },\n updateOptions(options) {\n h.fc.updateOptions(options);\n api.refresh();\n },\n onSubmit(fn) {\n api.updateOptions({onSubmit: fn});\n },\n sync: (field) => {\n if (Array.isArray(field)) {\n field.forEach(v => api.sync(v));\n return;\n }\n let ctxs = is.Object(field) ? byCtx(field) : h.getCtxs(field);\n if (!ctxs) {\n return;\n }\n ctxs = Array.isArray(ctxs) ? ctxs : [ctxs];\n ctxs.forEach(ctx => {\n if (!ctx.deleted) {\n const subForm = h.subForm[ctx.id];\n if (subForm) {\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.refresh();\n })\n } else if (subForm) {\n subForm.refresh();\n }\n }\n //ctx.updateKey(true);\n h.$render.clearCache(ctx);\n }\n });\n h.refresh();\n },\n refresh: () => {\n allSubForm().forEach(sub => {\n sub.refresh();\n });\n h.$render.clearCacheAll();\n h.refresh();\n },\n refreshOptions() {\n h.$manager.updateOptions(h.options);\n api.refresh();\n },\n hideForm: (hide) => {\n $set(h.vm, 'isShow', !hide);\n },\n changeStatus: () => {\n return h.changeStatus;\n },\n clearChangeStatus: () => {\n h.changeStatus = false;\n },\n updateRule(id, rule) {\n h.getCtxs(id).forEach(ctx => {\n extend(ctx.rule, rule);\n });\n },\n updateRules(rules) {\n Object.keys(rules).forEach(id => {\n api.updateRule(id, rules[id]);\n })\n },\n mergeRule: (id, rule) => {\n h.getCtxs(id).forEach(ctx => {\n mergeRule(ctx.rule, rule);\n });\n },\n mergeRules(rules) {\n Object.keys(rules).forEach(id => {\n api.mergeRule(id, rules[id]);\n })\n },\n getRule: (id, origin) => {\n const ctx = h.getCtx(id);\n if (ctx) {\n return origin ? ctx.origin : ctx.rule;\n }\n },\n updateValidate(id, validate, merge) {\n if (merge) {\n api.mergeRule(id, {validate})\n } else {\n props(id, 'validate', validate);\n }\n },\n updateValidates(validates, merge) {\n Object.keys(validates).forEach(id => {\n api.updateValidate(id, validates[id], merge);\n })\n },\n refreshValidate() {\n h.vm.validate = {};\n api.refresh();\n },\n resetFields(fields) {\n tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n h.$render.clearCache(ctx);\n ctx.rule.value = copy(ctx.defaultValue);\n h.refreshControl(ctx);\n });\n });\n },\n method(id, name) {\n const el = api.el(id);\n if (!el || !el[name])\n throw new Error(format('err', `${name}方法不存在`));\n return (...args) => {\n return el[name](...args);\n }\n },\n exec(id, name, ...args) {\n return invoke(() => api.method(id, name)(...args));\n },\n toJson(space) {\n return toJson(api.rule, space);\n },\n trigger(id, event, ...args) {\n const el = api.el(id);\n el && el.$emit(event, ...args);\n },\n el(id) {\n const ctx = h.getCtx(id);\n if (ctx) return ctx.el || h.vm.$refs[ctx.ref];\n },\n closeModal: (id) => {\n const el = api.el(id);\n el && el.$emit && el.$emit('close-modal');\n },\n getSubForm(field) {\n const ctx = h.getCtx(field);\n return ctx ? h.subForm[ctx.id] : undefined;\n },\n nextTick(fn) {\n h.bus.$once('next-tick', fn);\n h.refresh();\n },\n nextRefresh(fn) {\n h.nextRefresh();\n fn && invoke(fn);\n }\n };\n\n ['on', 'once', 'off', 'set'].forEach(n => {\n api[n] = function (...args) {\n h.vm[`$${n}`](...args);\n }\n });\n\n api.changeValue = api.changeField = api.setValue;\n\n return api;\n}\n","import extend from '@form-create/utils/lib/extend';\n\nexport default function useCache(Render) {\n extend(Render.prototype, {\n initCache() {\n this.clearCacheAll();\n },\n clearCache(ctx) {\n if (!this.cache[ctx.id]) {\n ctx.parent && this.clearCache(ctx.parent);\n return;\n }\n if (this.cache[ctx.id].use === true || this.cache[ctx.id].parent) {\n this.$handle.refresh();\n }\n const parent = this.cache[ctx.id].parent;\n this.cache[ctx.id] = null;\n parent && this.clearCache(parent);\n },\n clearCacheAll() {\n this.cache = {};\n },\n setCache(ctx, vnode, parent) {\n this.cache[ctx.id] = {\n vnode,\n use: false,\n parent,\n slot: ctx.rule.slot\n };\n },\n getCache(ctx) {\n const cache = this.cache[ctx.id];\n cache.use = true;\n return cache.vnode;\n }\n })\n\n}\n","export default function toCase(str) {\n const to = str.replace(/(-[a-z])/g, function (v) {\n return v.replace('-', '').toLocaleUpperCase();\n });\n\n return lower(to);\n}\n\nexport function lower(str) {\n return str.replace(str[0], str[0].toLowerCase());\n}\n","import extend from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {_vue as Vue} from '../frame';\nimport {tip} from '@form-create/utils/lib/console';\nimport {invoke, mergeRule} from '../frame/util';\nimport toCase, {lower} from '@form-create/utils/lib/tocase';\nimport {$set, deepSet, toLine} from '@form-create/utils';\n\nexport default function useRender(Render) {\n extend(Render.prototype, {\n initRender() {\n this.tempList = {};\n this.clearOrgChildren();\n },\n initOrgChildren() {\n const ctxs = this.$handle.ctxs;\n this.orgChildren = Object.keys(ctxs).reduce((initial, id) => {\n if (ctxs[id].parser.loadChildren !== false) {\n const children = ctxs[id].rule.children;\n initial[id] = is.trueArray(children) ? [...children] : [];\n }\n\n return initial;\n }, {});\n\n },\n clearOrgChildren() {\n this.orgChildren = {};\n },\n render() {\n if (!this.vm.isShow) {\n return;\n }\n this.$h = this.vm.$createElement;\n this.$manager.beforeRender();\n\n let vn;\n\n const make = () => this.renderList();\n make.renderSlot = slot => this.renderList(slot);\n make.renderName = name => this.renderId(name);\n make.renderField = field => this.renderId(field, 'field');\n\n if (this.vm.$scopedSlots.container) {\n vn = [this.vm.$scopedSlots.container(make)];\n } else {\n vn = make();\n }\n return this.$manager.render(vn);\n },\n renderList(slot) {\n return this.sort.map((id) => {\n return slot ? this.renderSlot(this.$handle.ctxs[id], slot) : this.renderCtx(this.$handle.ctxs[id]);\n }).filter((val) => val !== undefined);\n },\n makeVm(rule) {\n const vm = rule.vm;\n if (!vm)\n return new Vue;\n else if (is.Function(vm))\n return invoke(() => rule.vm(this.$handle.getInjectData(rule)));\n else if (!vm._isVue)\n return new Vue(vm);\n return vm;\n },\n mergeGlobal(ctx) {\n const g = this.$handle.options.global;\n if (!g) return;\n //todo 缓存配置,更新 option 更新\n if (!ctx.cacheConfig)\n ctx.cacheConfig = g[ctx.originType] || g[ctx.type] || g[ctx.trueType] || {};\n ctx.prop = mergeRule({}, [g['*'], ctx.cacheConfig, ctx.prop]);\n },\n setOptions(ctx) {\n if (ctx.prop.optionsTo && ctx.prop.options) {\n deepSet(ctx.prop, ctx.prop.optionsTo, ctx.prop.options);\n }\n },\n deepSet(ctx) {\n const deep = ctx.rule.deep;\n deep && Object.keys(deep).sort((a, b) => a.length < b.length ? -1 : 1).forEach(str => {\n deepSet(ctx.prop, str, deep[str]);\n });\n },\n setTempProps(vm, ctx) {\n if (!vm.$props) return;\n\n const {prop} = ctx;\n const keys = Object.keys(vm.$props);\n const inject = this.injectProp(ctx);\n const injectKeys = Object.keys(inject);\n\n keys.forEach(key => {\n if (hasProperty(prop.props, key))\n vm.$props[key] = prop.props[key];\n else if (injectKeys.indexOf(key) > -1) vm.$props[key] = inject[key];\n });\n\n const key = (vm.$options.model && vm.$options.model.prop) || 'value';\n if (keys.indexOf(key) > -1) {\n vm.$props[key] = prop.value;\n }\n },\n renderTemp(ctx) {\n if (!Vue.compile) {\n tip('当前使用的Vue构建版本不支持compile,无法使用template功能');\n return [];\n }\n const rule = ctx.prop;\n const {id, key} = ctx;\n\n if (!this.tempList[id]) {\n if (!ctx.el) {\n ctx.el = this.makeVm(rule);\n this.vm.$nextTick(() => ctx.parser.mounted(ctx));\n }\n\n let vm = ctx.el;\n if (ctx.input)\n vm.$on((vm.$options.model && vm.$options.model.event) || 'input', (value) => {\n this.onInput(ctx, value);\n });\n\n this.tempList[id] = {\n vm,\n template: Vue.compile(rule.template)\n };\n }\n\n const {vm, template} = this.tempList[id];\n\n this.setTempProps(vm, ctx);\n\n const vn = template.render.call(vm);\n\n if (is.Undef(vn.data)) vn.data = {};\n vn.key = key;\n vn.data.ref = ctx.ref;\n vn.data.key = key;\n return vn;\n },\n parseSide(side) {\n return is.Object(side) ? mergeRule({}, side) : side;\n },\n renderSides(vn, ctx, temp) {\n const prop = ctx[temp ? 'rule' : 'prop'];\n return [this.renderRule(this.parseSide(prop.prefix)), vn, this.renderRule(this.parseSide(prop.suffix))];\n },\n renderSlot(ctx, slot) {\n return ctx.rule.slot === slot ? this.renderCtx(ctx) : undefined;\n },\n renderId(name, type) {\n const ctxs = this.$handle[type === 'field' ? 'fieldCtx' : 'nameCtx'][name]\n return ctxs ? ctxs.map(ctx => this.renderCtx(ctx, ctx.parent)) : undefined;\n },\n renderCtx(ctx, parent) {\n if (ctx.type === 'hidden') return;\n const rule = ctx.rule;\n if ((!this.cache[ctx.id]) || this.cache[ctx.id].slot !== rule.slot) {\n let vn;\n let cacheFlag = true;\n const _type = ctx.trueType;\n const none = !(is.Undef(rule.display) || !!rule.display);\n if (_type === 'template' && !rule.template) {\n vn = this.renderSides(this.renderChildren(ctx), ctx, true);\n if (none) {\n this.display(vn);\n }\n vn = this.item(ctx, vn);\n } else if (_type === 'fcFragment') {\n vn = this.renderChildren(ctx);\n } else {\n ctx.initProp();\n this.mergeGlobal(ctx);\n this.$manager.tidyRule(ctx);\n this.deepSet(ctx);\n this.setOptions(ctx);\n this.ctxProp(ctx);\n let prop = ctx.prop;\n prop.props.formCreateInject = this.injectProp(ctx);\n\n if (prop.hidden) {\n this.setCache(ctx, undefined, parent);\n return;\n }\n\n if (_type === 'template' && prop.template) {\n vn = this.renderTemp(ctx);\n cacheFlag = false;\n } else {\n let children = [];\n if (ctx.parser.renderChildren) {\n children = ctx.parser.renderChildren(ctx);\n } else if (ctx.parser.loadChildren !== false) {\n children = this.renderChildren(ctx);\n }\n const slot = 'type-' + toLine(ctx.type);\n if (this.vm.$scopedSlots[slot]) {\n vn = this.vm.$scopedSlots[slot]({\n rule,\n prop,\n children,\n api: this.$handle.api,\n model: prop.model || {}\n });\n } else {\n vn = ctx.parser.render(children, ctx);\n }\n }\n vn = this.renderSides(vn, ctx);\n if ((!(!ctx.input && is.Undef(prop.native))) && prop.native !== true) {\n vn = this.$manager.makeWrap(ctx, vn);\n }\n if (none) {\n vn = this.display(vn);\n }\n vn = this.item(ctx, vn)\n }\n if (cacheFlag) {\n this.setCache(ctx, vn, parent);\n }\n return vn;\n }\n\n return this.getCache(ctx);\n },\n display(vn) {\n if (Array.isArray(vn)) {\n const data = [];\n vn.forEach(v => {\n if (Array.isArray(v)) return this.display(v);\n if (this.none(v)) data.push(v);\n })\n return data;\n } else {\n return this.none(vn);\n }\n },\n none(vn) {\n if (vn && vn.data) {\n if (Array.isArray(vn.data.style)) {\n vn.data.style.push({display: 'none'});\n } else {\n vn.data.style = [vn.data.style, {display: 'none'}];\n }\n return vn;\n }\n },\n item(ctx, vn) {\n return this.$h('fcFragment', {\n slot: ctx.rule.slot,\n key: ctx.key,\n }, [vn]);\n },\n injectProp(ctx) {\n if (!this.vm.ctxInject[ctx.id]) {\n $set(this.vm.ctxInject, ctx.id, {});\n }\n const inject = this.vm.ctxInject[ctx.id];\n extend(inject, {\n api: this.$handle.api,\n form: this.fc.create,\n subForm: subForm => {\n this.$handle.addSubForm(ctx, subForm);\n },\n field: ctx.field,\n options: ctx.prop.options,\n children: ctx.rule.children,\n rule: ctx.rule,\n prop: (function () {\n const temp = {...ctx.prop};\n temp.on = temp.on ? {...temp.on} : {};\n delete temp.model;\n return temp;\n }()),\n });\n return inject;\n },\n ctxProp(ctx, custom) {\n const {ref, key, rule} = ctx;\n this.$manager.mergeProp(ctx, custom);\n ctx.parser.mergeProp(ctx, custom);\n const props = [\n {\n ref: ref,\n key: rule.key || `${key}fc`,\n slot: undefined,\n on: {\n 'hook:mounted': () => {\n this.onMounted(ctx);\n },\n 'fc.sub-form': (subForm) => {\n this.$handle.addSubForm(ctx, subForm);\n }\n },\n }\n ]\n\n if (!custom && ctx.input) {\n props.push({\n model: {\n value: this.$handle.getFormData(ctx),\n callback: (value) => {\n this.onInput(ctx, value);\n },\n expression: `formData.${ctx.id}`\n },\n })\n }\n mergeProps(props, ctx.prop);\n return ctx.prop;\n },\n onMounted(ctx) {\n ctx.el = this.vm.$refs[ctx.ref];\n if (ctx.el) {\n (ctx.el.$el || ctx.el).__rule__ = ctx.rule;\n }\n ctx.parser.mounted(ctx);\n this.$handle.effect(ctx, 'mounted');\n },\n onInput(ctx, value) {\n this.$handle.onInput(ctx, value);\n },\n renderChildren(ctx) {\n const {children} = ctx.rule, orgChildren = this.orgChildren[ctx.id];\n\n const isRm = child => {\n return !is.String(child) && child.__fc__ && !this.$handle.ctxs[child.__fc__.id];\n }\n\n if (!is.trueArray(children) && orgChildren) {\n this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n this.orgChildren[ctx.id] = [];\n return [];\n }\n\n orgChildren && this.$handle.deferSyncValue(() => {\n orgChildren.forEach(child => {\n if (!child) return;\n if (children.indexOf(child) === -1 && isRm(child)) {\n this.$handle.rmCtx(child.__fc__);\n }\n });\n });\n\n return children.map(child => {\n if (!child) return;\n if (is.String(child)) return child;\n if (child.__fc__) {\n return this.renderCtx(child.__fc__, ctx);\n }\n if (child.type) {\n this.vm.$nextTick(() => {\n this.$handle.loadChildren(children, ctx);\n this.$handle.refresh();\n });\n }\n });\n\n },\n defaultRender(ctx, children) {\n const prop = ctx.prop;\n if (this.vNode[ctx.type])\n return this.vNode[ctx.type](prop, children);\n if (this.vNode[ctx.originType])\n return this.vNode[ctx.originType](prop, children);\n return this.vNode.make(lower(ctx.originType), prop, children);\n },\n renderRule(rule, children, origin) {\n if (!rule) return undefined;\n if (is.String(rule)) return rule;\n\n let type;\n if (origin) {\n type = rule.type;\n } else {\n type = rule.is;\n if (rule.type) {\n type = toCase(rule.type);\n const alias = this.vNode.aliasMap[type];\n if (alias) type = toCase(alias);\n }\n }\n\n if (!type) return undefined;\n let data = [[children]];\n if (is.trueArray(rule.children)) {\n data.push(rule.children.map(v => this.renderRule(v)));\n }\n return this.$h(type, {...rule}, data);\n }\n })\n}\n","import useCache from './cache';\nimport useRender from './render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\n\nexport default function Render(handle) {\n extend(this, {\n $handle: handle,\n fc: handle.fc,\n vm: handle.vm,\n $manager: handle.$manager,\n vNode: new handle.fc.CreateNode(handle.vm),\n });\n\n funcProxy(this, {\n options() {\n return handle.options;\n },\n sort() {\n return handle.sort;\n }\n })\n\n this.initCache();\n this.initRender();\n}\n\nuseCache(Render);\nuseRender(Render)\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport toLine from '@form-create/utils/lib/toline';\nimport {parseFn} from '../frame/util';\n\n\nexport default function useInject(Handler) {\n extend(Handler.prototype, {\n parseInjectEvent(rule, on) {\n const inject = rule.inject || this.options.injectEvent;\n return this.parseEventLst(rule, on, inject);\n },\n parseEventLst(rule, data, inject, deep) {\n Object.keys(data).forEach(k => {\n const fn = this.parseEvent(rule, data[k], inject, deep);\n if (fn) {\n data[k] = fn;\n }\n });\n return data;\n },\n parseEvent(rule, fn, inject, deep) {\n if (is.Function(fn) && ((inject !== false && !is.Undef(inject)) || fn.__inject)) {\n return this.inject(rule, fn, inject)\n } else if (!deep && Array.isArray(fn) && fn[0] && (is.String(fn[0]) || is.Function(fn[0]))) {\n return this.parseEventLst(rule, fn, inject, true);\n } else if (is.String(fn)) {\n const val = parseFn(fn);\n if (val && fn !== val) {\n return val.__inject ? this.parseEvent(rule, val, inject, true) : val;\n }\n }\n },\n parseEmit(ctx, on) {\n let event = {}, rule = ctx.rule, {emitPrefix, field, name, inject} = rule;\n let emit = rule[on ? 'emit' : 'nativeEmit'] || [];\n if (is.trueArray(emit)) {\n let emitKey = emitPrefix || field || name;\n if (emitKey) {\n if (!on) emitKey = `native-${emitKey}`;\n emit.forEach(eventName => {\n if (!eventName) return;\n let eventInject;\n if (is.Object(eventName)) {\n eventInject = eventName.inject;\n eventName = eventName.name;\n }\n const fieldKey = toLine(`${emitKey}-${eventName}`);\n const fn = (...arg) => {\n this.vm.$emit(fieldKey, ...arg);\n this.vm.$emit('emit-event', fieldKey, ...arg);\n };\n fn.__emit = true;\n\n if (!eventInject && inject === false) {\n event[eventName] = fn;\n } else {\n let _inject = eventInject || inject || this.options.injectEvent;\n event[eventName] = is.Undef(_inject) ? fn : this.inject(rule, fn, _inject);\n }\n });\n }\n\n }\n ctx.computed[on ? 'on' : 'nativeOn'] = event;\n return event;\n },\n getInjectData(self, inject) {\n const {option, rule} = this.vm.$options.propsData;\n return {\n api: this.api,\n $f: this.api,\n rule,\n self: self.__origin__,\n option,\n inject\n };\n },\n inject(self, _fn, inject) {\n if (_fn.__origin) {\n if (this.watching && !this.loading)\n return _fn;\n _fn = _fn.__origin;\n }\n\n const h = this;\n\n const fn = function (...args) {\n const data = h.getInjectData(self, inject);\n data.args = [...args];\n args.unshift(data);\n return _fn.apply(this, args);\n };\n fn.__origin = _fn;\n fn.__json = _fn.__json;\n return fn;\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\n\nconst EVENT = ['hook:updated', 'hook:mounted'];\n\nexport default function usePage(Handler) {\n extend(Handler.prototype, {\n usePage() {\n const page = this.options.page;\n if (!page) return;\n let first = 25;\n let limit = getLimit(this.rules);\n if (is.Object(page)) {\n if (page.first) first = parseInt(page.first, 10) || first;\n if (page.limit) limit = parseInt(page.limit, 10) || limit;\n }\n extend(this, {\n first,\n limit,\n pageEnd: this.rules.length <= first,\n })\n\n this.bus.$on('page-end', () => this.vm.$emit('page-end', this.api));\n this.pageLoad();\n },\n pageLoad() {\n const pageFn = () => {\n if (this.pageEnd) {\n this.vm.$off(EVENT, pageFn);\n this.bus.$emit('page-end');\n } else {\n this.first += this.limit;\n this.pageEnd = this.rules.length <= this.first;\n this.loadRule();\n this.refresh();\n }\n }\n this.vm.$on(EVENT, pageFn);\n },\n })\n}\n\n\nfunction getLimit(rules) {\n return rules.length < 31 ? 31 : Math.ceil(rules.length / 3);\n}\n","import extend from '@form-create/utils/lib/extend';\n\n\nexport default function useRender(Handler) {\n extend(Handler.prototype, {\n clearNextTick() {\n this.nextTick && clearTimeout(this.nextTick);\n this.nextTick = null;\n },\n bindNextTick(fn) {\n this.clearNextTick();\n this.nextTick = setTimeout(() => {\n fn()\n this.nextTick = null;\n }, 10);\n },\n render() {\n // console.warn('%c render', 'color:green');\n ++this.loadedId;\n\n if (this.vm.unique > 0)\n return this.$render.render();\n else {\n this.vm.unique = 1;\n return [];\n }\n },\n });\n}\n","import unique from '@form-create/utils/lib/unique';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport {enumerable} from '../frame/util';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\n\nfunction bind(ctx) {\n Object.defineProperties(ctx.origin, {\n __fc__: enumerable(ctx, true)\n });\n}\n\nexport default function RuleContext(handle, rule) {\n const id = unique();\n\n extend(this, {\n id,\n ref: id,\n wrapRef: id + 'fi',\n rule,\n origin: rule.__origin__ || rule,\n name: rule.name,\n\n watch: [],\n linkOn: [],\n root: [],\n ctrlRule: [],\n parent: null,\n cacheConfig: null,\n prop: {...rule},\n computed: {},\n payload: {},\n input: !!rule.field,\n el: undefined,\n defaultValue: rule.field ? deepCopy(rule.value) : undefined,\n field: rule.field || undefined,\n })\n\n this.updateType();\n this.updateKey();\n bind(this);\n this.update(handle, true);\n}\n\nextend(RuleContext.prototype, {\n effectData(name) {\n if (!this.payload[name]) {\n this.payload[name] = {};\n }\n return this.payload[name];\n },\n clearEffectData(name) {\n delete this.payload[name]\n },\n updateKey(flag) {\n this.key = unique();\n flag && this.parent && this.parent.updateKey(flag);\n },\n updateType() {\n this.originType = this.rule.type;\n this.type = toCase(this.rule.type);\n },\n setParser(parser) {\n this.parser = parser;\n parser.init(this);\n },\n initProp() {\n const rule = {...this.rule};\n delete rule.children;\n this.prop = mergeProps([rule, ...Object.keys(this.payload).map(k => this.payload[k]), this.computed]);\n },\n check(handle) {\n return this.vm === handle.vm\n },\n unwatch() {\n this.watch.forEach(un => un());\n this.watch = [];\n },\n unlink() {\n this.linkOn.forEach(un => un());\n this.linkOn = [];\n },\n link() {\n this.unlink();\n this.$handle.appendLink(this);\n },\n watchTo() {\n this.$handle.watchCtx(this);\n },\n delete() {\n const undef = void 0;\n this.unwatch();\n this.unlink();\n this.rmCtrl();\n extend(this, {\n deleted: true,\n prop: {...this.rule},\n computed: {},\n el: undef,\n $handle: undef,\n $render: undef,\n $api: undef,\n vm: undef,\n vNode: undef,\n parent: null,\n cacheConfig: null,\n })\n },\n rmCtrl() {\n this.ctrlRule.forEach(ctrl => ctrl.__fc__ && ctrl.__fc__.rm());\n this.ctrlRule = [];\n },\n rm() {\n const _rm = () => {\n let index = this.root.indexOf(this.origin);\n if (index > -1) {\n this.root.splice(index, 1);\n this.$handle && this.$handle.refresh();\n }\n }\n if (this.deleted) {\n _rm();\n return;\n }\n this.$handle.noWatch(() => {\n this.$handle.deferSyncValue(() => {\n this.rmCtrl();\n _rm();\n this.$handle.rmCtx(this);\n extend(this, {\n root: []\n });\n }, this.input);\n });\n },\n update(handle, init) {\n extend(this, {\n deleted: false,\n $handle: handle,\n $render: handle.$render,\n $api: handle.api,\n vm: handle.vm,\n trueType: handle.getType(this.originType),\n vNode: handle.$render.vNode,\n updated: false,\n });\n !init && this.unwatch();\n this.watchTo();\n this.link();\n }\n})\n","import extend from '@form-create/utils/lib/extend';\nimport {byCtx, copyRule, enumerable, getRule, invoke, parseFn} from '../frame/util';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {err} from '@form-create/utils/lib/console';\nimport {baseRule} from '../factory/creator';\nimport RuleContext from '../factory/context';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\n\nexport default function useLoader(Handler) {\n extend(Handler.prototype, {\n nextRefresh(fn) {\n const id = this.loadedId;\n this.vm.$nextTick(() => {\n id === this.loadedId && (fn ? fn() : this.refresh());\n });\n },\n parseRule(_rule) {\n const rule = getRule(_rule);\n\n Object.defineProperties(rule, {\n __origin__: enumerable(_rule, true)\n });\n\n fullRule(rule);\n this.appendValue(rule);\n\n rule.options = Array.isArray(rule.options) ? rule.options : [];\n\n [rule, rule['prefix'], rule['suffix']].forEach(item => {\n if (!item) {\n return;\n }\n this.loadFn(item, rule);\n });\n this.loadCtrl(rule);\n if (rule.update) {\n rule.update = parseFn(rule.update);\n }\n return rule;\n },\n loadFn(item, rule) {\n ['on', 'props', 'nativeOn', 'deep'].forEach(k => {\n item[k] && this.parseInjectEvent(rule, item[k]);\n });\n },\n loadCtrl(rule) {\n rule.control && rule.control.forEach(ctrl => {\n if (ctrl.handle) {\n ctrl.handle = parseFn(ctrl.handle)\n }\n })\n },\n syncProp(ctx) {\n const rule = ctx.rule;\n is.trueArray(rule.sync) && mergeProps([{\n on: rule.sync.reduce((pre, prop) => {\n pre[`update:${prop}`] = (val) => {\n rule.props[prop] = val;\n this.vm.$emit('sync', prop, val, rule, this.fapi);\n }\n return pre\n }, {})\n }], ctx.computed)\n },\n loadRule() {\n // console.warn('%c load', 'color:blue');\n this.cycleLoad = false;\n this.loading = true;\n if (this.pageEnd) {\n this.bus.$emit('load-start');\n }\n this.deferSyncValue(() => {\n this._loadRule(this.rules);\n this.loading = false;\n if (this.cycleLoad && this.pageEnd) {\n return this.loadRule();\n }\n if (this.pageEnd) {\n this.bus.$emit('load-end');\n }\n this.vm._renderRule();\n this.$render.initOrgChildren();\n this.syncForm();\n });\n },\n loadChildren(children, parent) {\n this.cycleLoad = false;\n this.loading = true;\n this.bus.$emit('load-start');\n this._loadRule(children, parent);\n this.loading = false;\n if (this.cycleLoad) {\n return this.loadRule();\n } else {\n this.bus.$emit('load-end');\n this.syncForm();\n }\n this.$render.clearCache(parent);\n },\n _loadRule(rules, parent) {\n\n const preIndex = (i) => {\n let pre = rules[i - 1];\n if (!pre || !pre.__fc__) {\n return i > 0 ? preIndex(i - 1) : -1;\n }\n let index = this.sort.indexOf(pre.__fc__.id);\n return index > -1 ? index : preIndex(i - 1);\n }\n\n const loadChildren = (children, parent) => {\n if (is.trueArray(children)) {\n this._loadRule(children, parent);\n }\n };\n\n rules.map((_rule, index) => {\n if (parent && (is.String(_rule) || is.Undef(_rule))) return;\n if (!this.pageEnd && !parent && index >= this.first) return;\n\n if (!is.Object(_rule) || !getRule(_rule).type)\n return err('未定义生成规则的 type 字段', _rule);\n\n if (_rule.__fc__ && _rule.__fc__.root === rules && this.ctxs[_rule.__fc__.id]) {\n loadChildren(_rule.__fc__.rule.children, _rule.__fc__);\n return _rule.__fc__;\n }\n\n let rule = getRule(_rule);\n\n const isRepeat = () => {\n return !!(rule.field && this.fieldCtx[rule.field] && this.fieldCtx[rule.field][0] !== _rule.__fc__)\n }\n\n this.ruleEffect(rule, 'init', {repeat: isRepeat()});\n\n if (isRepeat()) {\n this.vm.$emit('repeat-field', _rule, this.api);\n }\n\n let ctx;\n let isCopy = false;\n let isInit = !!_rule.__fc__;\n if (isInit) {\n ctx = _rule.__fc__;\n const check = !ctx.check(this);\n if (ctx.deleted) {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n ctx.update(this);\n }\n } else {\n if (check) {\n if (isCtrl(ctx)) {\n return;\n }\n rules[index] = _rule = _rule._clone ? _rule._clone() : copyRule(_rule);\n ctx = null;\n isCopy = true;\n }\n }\n }\n if (!ctx) {\n ctx = new RuleContext(this, this.parseRule(_rule));\n this.bindParser(ctx);\n } else {\n if (ctx.originType !== ctx.rule.type) {\n ctx.updateType();\n this.bindParser(ctx);\n }\n this.appendValue(ctx.rule);\n }\n [false, true].forEach(b => this.parseEmit(ctx, b));\n this.syncProp(ctx);\n ctx.parent = parent || null;\n ctx.root = rules;\n this.setCtx(ctx);\n\n !isCopy && !isInit && this.effect(ctx, 'load');\n\n ctx.parser.loadChildren === false || loadChildren(ctx.rule.children, ctx);\n\n if (!parent) {\n const _preIndex = preIndex(index);\n if (_preIndex > -1 || !index) {\n this.sort.splice(_preIndex + 1, 0, ctx.id);\n } else {\n this.sort.push(ctx.id);\n }\n }\n\n const r = ctx.rule;\n if (!ctx.updated) {\n ctx.updated = true;\n if (is.Function(r.update)) {\n this.bus.$once('load-end', () => {\n this.refreshUpdate(ctx, r.value);\n });\n }\n this.effect(ctx, 'loaded');\n }\n\n if (ctx.input)\n Object.defineProperty(r, 'value', this.valueHandle(ctx));\n if (this.refreshControl(ctx)) this.cycleLoad = true;\n return ctx;\n });\n },\n refreshControl(ctx) {\n return ctx.input && ctx.rule.control && this.useCtrl(ctx);\n },\n useCtrl(ctx) {\n const controls = getCtrl(ctx), validate = [], api = this.api;\n if (!controls.length) return false;\n\n for (let i = 0; i < controls.length; i++) {\n const control = controls[i], handleFn = control.handle || (val => val === control.value);\n if (!is.trueArray(control.rule)) continue;\n const data = {\n ...control,\n valid: invoke(() => handleFn(ctx.rule.value, api)),\n ctrl: findCtrl(ctx, control.rule),\n isHidden: is.String(control.rule[0]),\n };\n if ((data.valid && data.ctrl) || (!data.valid && !data.ctrl && !data.isHidden)) continue;\n validate.push(data);\n }\n if (!validate.length) return false;\n\n let flag = false;\n this.deferSyncValue(() => {\n validate.reverse().forEach(({isHidden, valid, rule, prepend, append, child, ctrl}) => {\n if (isHidden) {\n valid ? ctx.ctrlRule.push({\n __ctrl: true,\n children: rule,\n valid\n })\n : ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n this.vm.$nextTick(() => {\n this.api.hidden(!valid, rule);\n });\n return;\n }\n if (valid) {\n flag = true;\n const ruleCon = {\n type: 'fcFragment',\n native: true,\n __ctrl: true,\n children: rule,\n }\n ctx.ctrlRule.push(ruleCon);\n this.bus.$once('load-start', () => {\n // this.cycleLoad = true;\n if (prepend) {\n api.prepend(ruleCon, prepend, child)\n } else if (append || child) {\n api.append(ruleCon, append || ctx.id, child)\n } else {\n ctx.root.splice(ctx.root.indexOf(ctx.origin) + 1, 0, ruleCon);\n }\n });\n } else {\n ctx.ctrlRule.splice(ctx.ctrlRule.indexOf(ctrl), 1);\n const ctrlCtx = byCtx(ctrl);\n ctrlCtx && ctrlCtx.rm();\n }\n });\n });\n this.vm.$emit('control', ctx.origin, this.api);\n this.effect(ctx, 'control');\n return flag;\n },\n reloadRule(rules) {\n return this._reloadRule(rules);\n },\n _reloadRule(rules) {\n // console.warn('%c reload', 'color:red');\n if (!rules) rules = this.rules;\n\n const ctxs = {...this.ctxs};\n\n this.clearNextTick();\n this.$render.clearOrgChildren();\n this.initData(rules);\n this.fc.rules = rules;\n\n this.bus.$once('load-end', () => {\n Object.keys(ctxs).filter(id => this.ctxs[id] === undefined)\n .forEach(id => this.rmCtx(ctxs[id]));\n this.$render.clearCacheAll();\n });\n this.reloading = true;\n this.loadRule();\n this.reloading = false;\n this.refresh();\n\n this.bus.$off('next-tick', this.nextReload);\n this.bus.$once('next-tick', this.nextReload);\n },\n //todo 组件生成全部通过 alias\n refresh() {\n this.vm._refresh();\n },\n });\n}\n\nfunction fullRule(rule) {\n const def = baseRule();\n\n Object.keys(def).forEach(k => {\n if (!hasProperty(rule, k)) rule[k] = def[k];\n });\n return rule;\n}\n\nfunction getCtrl(ctx) {\n const control = ctx.rule.control || [];\n if (is.Object(control)) return [control];\n else return control;\n}\n\nfunction findCtrl(ctx, rule) {\n for (let i = 0; i < ctx.ctrlRule.length; i++) {\n const ctrl = ctx.ctrlRule[i];\n if (ctrl.children === rule)\n return ctrl;\n }\n}\n\nfunction isCtrl(ctx) {\n return !!ctx.rule.__ctrl;\n}\n","import extend from '@form-create/utils/lib/extend';\nimport {$set} from '@form-create/utils/lib';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nexport default function useInput(Handler) {\n extend(Handler.prototype, {\n getValue(ctx) {\n if (!hasProperty(ctx, 'cacheValue')) {\n ctx.cacheValue = ctx.parser.toValue(this.getFormData(ctx), ctx);\n }\n return ctx.cacheValue;\n },\n setValue(ctx, value, formValue, setFlag) {\n if (ctx.deleted) return;\n ctx.cacheValue = value;\n this.changeStatus = true;\n this.nextRefresh();\n this.$render.clearCache(ctx);\n this.setFormData(ctx, formValue);\n this.syncValue();\n this.valueChange(ctx, value);\n this.vm.$emit('change', ctx.field, value, ctx.origin, this.api, setFlag);\n this.effect(ctx, 'value');\n },\n onInput(ctx, value) {\n let val;\n if (ctx.input && (this.isQuote(ctx, val = ctx.parser.toValue(value, ctx)) || this.isChange(ctx, val))) {\n this.setValue(ctx, val, value);\n }\n },\n setFormData(ctx, value) {\n $set(this.formData, ctx.id, value);\n },\n getFormData(ctx) {\n return this.formData[ctx.id];\n },\n validate() {\n toEmpty(this.vm.validate);\n this.fields().forEach(id => {\n this.fieldCtx[id].forEach(ctx => {\n this.vm.validate[ctx.id] = toArray(ctx.rule.validate);\n });\n });\n return this.vm.validate;\n },\n syncForm() {\n toEmpty(this.form);\n Object.defineProperties(this.form, this.fields().reduce((initial, field) => {\n const ctx = this.getFieldCtx(field);\n const handle = this.valueHandle(ctx);\n handle.configurable = true;\n initial[field] = handle;\n return initial;\n }, Object.keys(this.appendData).reduce((initial, field) => {\n initial[field] = {\n enumerable: true,\n configurable: true,\n get: () => {\n return this.appendData[field];\n },\n set: (val) => {\n this.appendData[field] = val;\n }\n }\n return initial;\n }, {})));\n this.syncValue();\n },\n valueHandle(ctx) {\n return {\n enumerable: true,\n get: () => {\n return this.getValue(ctx);\n },\n set: (value) => {\n if (this.isChange(ctx, value)) {\n this.setValue(ctx, value, ctx.parser.toFormValue(value, ctx), true);\n }\n }\n };\n },\n appendValue(rule) {\n if (!rule.field || !hasProperty(this.appendData, rule.field)) return;\n rule.value = this.appendData[rule.field];\n delete this.appendData[rule.field];\n },\n addSubForm(ctx, subForm) {\n if (ctx.input) {\n this.subForm[ctx.id] = subForm;\n }\n },\n deferSyncValue(fn, sync) {\n if (!this.deferSyncFn) {\n this.deferSyncFn = fn;\n }\n if (!this.deferSyncFn.sync) {\n this.deferSyncFn.sync = sync;\n }\n invoke(fn);\n if (this.deferSyncFn === fn) {\n this.deferSyncFn = null;\n if (fn.sync) {\n this.syncValue();\n }\n }\n },\n syncValue() {\n if (this.deferSyncFn) {\n return this.deferSyncFn.sync = true;\n }\n this.vm._updateValue({...this.form});\n },\n isChange(ctx, value) {\n return JSON.stringify(ctx.rule.value) !== JSON.stringify(value);\n },\n isQuote(ctx, value) {\n return (is.Object(value) || Array.isArray(value)) && value === ctx.rule.value;\n },\n refreshUpdate(ctx, val) {\n if (is.Function(ctx.rule.update)) {\n const state = invoke(() => ctx.rule.update(val, ctx.origin, this.api));\n if (state === undefined) return;\n ctx.rule.hidden = state === true;\n }\n },\n valueChange(ctx, val) {\n this.refreshRule(ctx, val);\n this.bus.$emit('change-' + ctx.field, val);\n },\n refreshRule(ctx, val) {\n if (this.refreshControl(ctx)) {\n this.$render.clearCacheAll();\n this.loadRule();\n this.refresh();\n }\n this.refreshUpdate(ctx, val);\n },\n appendLink(ctx) {\n const link = ctx.rule.link;\n is.trueArray(link) && link.forEach(field => {\n const fn = () => this.refreshRule(ctx, ctx.rule.value);\n\n this.bus.$on('change-' + field, fn);\n ctx.linkOn.push(() => this.bus.$off('change-' + field, fn));\n });\n },\n fields() {\n return Object.keys(this.fieldCtx);\n },\n });\n}\n\nfunction toEmpty(obj) {\n Object.keys(obj).forEach(k => delete obj[k]);\n}\n","const BaseParser = {\n init(ctx) {\n },\n toFormValue(value, ctx) {\n return value\n },\n toValue(formValue, ctx) {\n return formValue;\n },\n mounted(ctx) {\n },\n render(children, ctx) {\n return ctx.$render.defaultRender(ctx, children);\n },\n mergeProp(ctx) {\n }\n}\n\nexport default BaseParser;\n","import extend from '@form-create/utils/lib/extend';\nimport toCase from '@form-create/utils/lib/tocase';\nimport BaseParser from '../factory/parser';\nimport {$del} from '@form-create/utils/lib';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\n\n\nexport default function useContext(Handler) {\n extend(Handler.prototype, {\n getCtx(id) {\n return this.getFieldCtx(id) || this.getNameCtx(id)[0] || this.ctxs[id];\n },\n getCtxs(id) {\n return this.fieldCtx[id] || this.nameCtx[id] || (this.ctxs[id] ? [this.ctxs[id]] : []);\n },\n setIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n if (!this[field][key]) {\n this[field][key] = [ctx];\n } else {\n this[field][key].push(ctx);\n }\n },\n rmIdCtx(ctx, key, type) {\n const field = `${type}Ctx`;\n const lst = this[field][key];\n if (!lst) return false;\n const flag = lst.splice(lst.indexOf(ctx) >>> 0, 1).length > 0;\n if (!lst.length) {\n delete this[field][key];\n }\n return flag;\n },\n getFieldCtx(field) {\n return (this.fieldCtx[field] || [])[0];\n },\n getNameCtx(name) {\n return this.nameCtx[name] || [];\n },\n setCtx(ctx) {\n let {id, field, name, rule} = ctx;\n this.ctxs[id] = ctx;\n name && this.setIdCtx(ctx, name, 'name');\n if (!ctx.input) return;\n this.setIdCtx(ctx, field, 'field');\n this.setFormData(ctx, ctx.parser.toFormValue(rule.value, ctx));\n if (this.isMounted && !this.reloading) {\n this.vm.$emit('change', ctx.field, rule.value, ctx.origin, this.api);\n }\n },\n getParser(ctx) {\n const list = this.fc.parsers;\n return list[ctx.originType] || list[toCase(ctx.type)] || list[ctx.trueType] || BaseParser;\n },\n bindParser(ctx) {\n ctx.setParser(this.getParser(ctx));\n },\n getType(alias) {\n const map = this.fc.CreateNode.aliasMap;\n const type = map[alias] || map[toCase(alias)] || alias;\n return toCase(type);\n },\n noWatch(fn) {\n if (!this.noWatchFn) {\n this.noWatchFn = fn;\n }\n invoke(fn);\n if (this.noWatchFn === fn) {\n this.noWatchFn = null;\n }\n },\n watchCtx(ctx) {\n const vm = this.vm;\n const none = ['field', 'value', 'vm', 'template', 'name', 'config', 'control', 'inject', 'sync', 'payload', 'optionsTo', 'update'];\n Object.keys(ctx.rule).filter(k => none.indexOf(k) === -1).forEach((key) => {\n const flag = key === 'children';\n ctx.watch.push(vm.$watch(() => ctx.rule[key], (n, o) => {\n if (this.loading || this.noWatchFn || this.reloading) return;\n if (flag && ctx.parser.loadChildren === false) {\n this.$render.clearCache(ctx);\n this.nextRefresh();\n return;\n }\n this.watching = true;\n // if (key === 'hidden')\n // ctx.updateKey(true);\n // else\n if (key === 'link') {\n ctx.link();\n return;\n } else if (['props', 'on', 'nativeOn', 'deep'].indexOf(key) > -1) {\n this.parseInjectEvent(ctx.rule, n || {});\n if (key === 'props' && ctx.input) {\n this.setFormData(ctx, ctx.parser.toFormValue(ctx.rule.value, ctx));\n }\n } else if (['emit', 'nativeEmit'].indexOf(key) > -1)\n this.parseEmit(ctx, key === 'emit');\n else if (['prefix', 'suffix'].indexOf(key) > -1)\n n && this.loadFn(n, ctx.rule);\n else if (key === 'type') {\n ctx.updateType();\n this.bindParser(ctx);\n } else if (key === 'children') {\n const flag = is.trueArray(n);\n this.deferSyncValue(() => {\n if (n !== o) {\n this.rmSub(o);\n this.$render.initOrgChildren();\n }\n flag && this.loadChildren(n, ctx);\n });\n }\n this.$render.clearCache(ctx);\n this.watching = false;\n }, {deep: !flag, sync: flag}));\n });\n this.watchEffect(ctx);\n },\n rmSub(sub) {\n is.trueArray(sub) && sub.forEach(r => {\n r && r.__fc__ && this.rmCtx(r.__fc__);\n })\n },\n rmCtx(ctx) {\n if (ctx.deleted) return;\n const {id, field, input, name} = ctx;\n if (ctx.input) {\n Object.defineProperty(ctx.rule, 'value', {\n value: ctx.rule.value,\n writable: true\n });\n }\n\n $del(this.ctxs, id);\n $del(this.$render.tempList, id);\n $del(this.$render.orgChildren, id);\n $del(this.vm.ctxInject, id);\n $del(this.formData, id);\n $del(this.subForm, id);\n $del(ctx, 'cacheValue');\n\n input && this.rmIdCtx(ctx, field, 'field');\n name && this.rmIdCtx(ctx, name, 'name');\n\n this.deferSyncValue(() => {\n if (!this.reloading) {\n if (ctx.parser.loadChildren !== false) {\n if (is.trueArray(ctx.rule.children)) {\n ctx.rule.children.forEach(h => h.__fc__ && this.rmCtx(h.__fc__));\n }\n }\n if (ctx.root === this.rules) {\n this.vm._renderRule();\n }\n }\n }, input);\n\n const index = this.sort.indexOf(id);\n if (index > -1) {\n this.sort.splice(index, 1);\n }\n\n this.$render.clearCache(ctx);\n ctx.delete();\n this.effect(ctx, 'deleted');\n input && !this.fieldCtx[field] && this.vm.$emit('removeField', field, ctx.rule, this.api);\n ctx.rule.__ctrl || this.vm.$emit('removeRule', ctx.rule, this.api);\n return ctx;\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '../frame/util';\n\n\nexport default function useLifecycle(Handler) {\n extend(Handler.prototype, {\n mounted() {\n const _mounted = () => {\n this.isMounted = true;\n this.lifecycle('mounted');\n }\n if (this.pageEnd) {\n _mounted();\n } else {\n this.bus.$once('page-end', _mounted);\n }\n },\n lifecycle(name) {\n const fn = this.options[name];\n is.Function(fn) && invoke(() => fn(this.api));\n this.vm.$emit(name, this.api);\n },\n })\n}\n","import extend from '@form-create/utils/lib/extend';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\n\n\nexport default function useEffect(Handler) {\n extend(Handler.prototype, {\n useProvider() {\n const ps = this.fc.providers;\n Object.keys(ps).forEach(k => {\n const prop = ps[k];\n prop._c = getComponent(prop);\n this.onEffect(prop);\n this.providers[k] = prop;\n });\n },\n onEffect(provider) {\n const used = [];\n (provider._c || ['*']).forEach(name => {\n const type = name === '*' ? '*' : this.getType(name);\n if (used.indexOf(type) > -1) return;\n used.push(type);\n this.bus.$on(`p:${provider.name}:${type}:${provider.input ? 1 : 0}`, (event, args) => {\n provider[event] && provider[event](...args);\n });\n });\n provider._used = used;\n },\n watchEffect(ctx) {\n const vm = this.vm;\n Object.keys(ctx.rule.effect || {}).forEach(k => {\n ctx.watch.push(vm.$watch(() => ctx.rule.effect[k], (n) => {\n this.effect(ctx, 'watch', {[k]: n});\n }, {deep: true}));\n });\n },\n ruleEffect(rule, event, append) {\n this.emitEffect({\n rule,\n input: !!rule.field,\n type: this.getType(rule.type)\n }, event, append);\n },\n effect(ctx, event, custom) {\n this.emitEffect({\n rule: ctx.rule,\n input: ctx.input,\n type: ctx.trueType,\n ctx,\n custom\n }, event);\n },\n getEffect(rule, name) {\n if (hasProperty(rule, 'effect') && hasProperty(rule.effect, name))\n return rule.effect[name];\n else\n return undefined;\n },\n emitEffect({ctx, rule, input, type, custom}, event, append) {\n if (!type || type === 'fcFragment') return;\n const effect = custom ? custom : (rule.effect || {});\n Object.keys(effect).forEach(attr => {\n const p = this.providers[attr];\n if (!p || (p.input && !input)) return;\n let _type;\n if (!p._c) {\n _type = '*';\n } else if (p._used.indexOf(type) > -1) {\n _type = type;\n } else {\n return;\n }\n const data = {value: effect[attr], getValue: () => this.getEffect(rule, attr), ...(append || {})};\n if (ctx) {\n data.getProp = () => ctx.effectData(attr);\n data.clearProp = () => ctx.clearEffectData(attr);\n data.mergeProp = (prop) => mergeProps([prop], data.getProp());\n }\n this.bus.$emit(`p:${attr}:${_type}:${p.input ? 1 : 0}`, event, [data, rule, this.api]);\n });\n }\n });\n}\n\nfunction unique(arr) {\n return arr.filter(function (item, index, arr) {\n return arr.indexOf(item, 0) === index;\n });\n}\n\nfunction getComponent(p) {\n const c = p.components;\n if (Array.isArray(c)) return unique(c.filter(v => v !== '*'));\n else if (is.String(c)) return [c];\n else return false;\n}\n","import Api from '../frame/api';\nimport Render from '../render';\nimport extend from '@form-create/utils/lib/extend';\nimport {funcProxy} from '../frame/util';\nimport useInject from './inject';\nimport usePage from './page';\nimport useRender from './render';\nimport useLoader from './loader';\nimport useInput from './input';\nimport useContext from './context';\nimport useLifecycle from './lifecycle';\nimport useEffect from './effect';\n\n\nexport default function Handler(fc) {\n extend(this, {\n fc,\n vm: fc.vm,\n watching: false,\n loading: false,\n reloading: false,\n noWatchFn: null,\n deferSyncFn: null,\n isMounted: false,\n formData: {},\n subForm: {},\n form: {},\n appendData: {},\n providers: {},\n cycleLoad: null,\n loadedId: 1,\n nextTick: null,\n changeStatus: false,\n pageEnd: true,\n nextReload: () => {\n this.lifecycle('reload');\n }\n });\n\n funcProxy(this, {\n options() {\n return fc.options;\n },\n bus() {\n return fc.bus;\n },\n })\n\n this.initData(fc.rules);\n\n this.$manager = new fc.manager(this);\n this.$render = new Render(this);\n this.api = fc.extendApi(Api(this), this);\n}\n\nextend(Handler.prototype, {\n initData(rules) {\n extend(this, {\n ctxs: {},\n fieldCtx: {},\n nameCtx: {},\n sort: [],\n rules,\n });\n },\n init() {\n this.appendData = {...this.fc.options.formData || {}, ...this.vm.value || {}, ...this.appendData};\n this.useProvider();\n this.usePage();\n this.loadRule();\n this.$manager.__init();\n this.vm.$set(this.vm, 'formData', this.formData);\n },\n})\n\nuseInject(Handler);\nusePage(Handler);\nuseRender(Handler);\nuseLoader(Handler);\nuseInput(Handler);\nuseContext(Handler);\nuseLifecycle(Handler);\nuseEffect(Handler);\n","// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js\n\nfunction getError(action, option, xhr) {\n const msg = `fail to ${action} ${xhr.status}'`;\n const err = new Error(msg);\n err.status = xhr.status;\n err.url = action;\n return err;\n}\n\nfunction getBody(xhr) {\n const text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\nexport default function fetch(option) {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n\n const xhr = new XMLHttpRequest();\n const action = option.action;\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(action, option, xhr), getBody(xhr));\n }\n\n option.onSuccess(getBody(xhr));\n };\n\n xhr.open(option.method || 'get', action, true);\n\n let formData;\n if (option.data) {\n if ((option.dataType || '').toLowerCase() !== 'json') {\n formData = new FormData();\n Object.keys(option.data).map(key => {\n formData.append(key, option.data[key]);\n });\n } else {\n formData = JSON.stringify(option.data);\n xhr.setRequestHeader('content-type', 'application/json');\n }\n }\n\n\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n const headers = option.headers || {};\n\n Object.keys(headers).forEach(item => {\n if (headers[item] !== null) {\n xhr.setRequestHeader(item, headers[item]);\n }\n });\n xhr.send(formData);\n}\n","const NAME = 'fcFragment';\n\nexport default {\n name: NAME,\n functional: true,\n props: ['vnode'],\n render(h, ctx) {\n return ctx.props.vnode ? ctx.props.vnode : ctx.children\n }\n}\n","import toLine from '@form-create/utils/lib/toline';\nimport is from '@form-create/utils/lib/type';\nimport toString from '@form-create/utils/lib/tostring';\nimport extend from '@form-create/utils/lib/extend';\nimport Vue from 'vue';\n\nfunction parseProp(prop) {\n if (is.String(prop))\n return {domProps: {innerHTML: prop}};\n return prop;\n}\n\nexport function CreateNodeFactory() {\n\n const aliasMap = {};\n\n function CreateNode(vm) {\n vm && this.setVm(vm);\n }\n\n extend(CreateNode.prototype, {\n setVm(vm) {\n this.vm = vm;\n this.$h = vm.$createElement;\n },\n make(tag, data, children) {\n if (Vue.config.isReservedTag(tag) && data.nativeOn) delete data.nativeOn;\n let Node = this.$h(tag, parseProp(data), children || []);\n Node.context = this.vm;\n return Node;\n },\n aliasMap\n });\n\n extend(CreateNode, {\n aliasMap,\n alias(alias, name) {\n aliasMap[alias] = name;\n },\n use(nodes) {\n Object.keys(nodes).forEach((k) => {\n const line = toLine(k);\n const lower = toString(k).toLocaleLowerCase();\n const v = nodes[k];\n [k, line, lower].forEach(n => {\n CreateNode.alias(k, v);\n CreateNode.prototype[n] = function (data, children) {\n return this.make(v, data, children);\n };\n });\n });\n }\n })\n\n return CreateNode;\n}\n","import mergeProps from '@form-create/utils/lib/mergeprops';\nimport unique from '@form-create/utils/lib/unique';\nimport extend from '@form-create/utils/lib/extend';\n\nexport function createManager(proto) {\n class CustomManager extends Manager {\n }\n\n Object.assign(CustomManager.prototype, proto);\n return CustomManager;\n}\n\nexport default function Manager(handler) {\n extend(this, {\n $handle: handler,\n vm: handler.vm,\n options: {},\n ref: 'fcForm',\n mergeOptionsRule: {\n normal: ['form', 'row', 'info', 'submitBtn', 'resetBtn']\n }\n });\n this.updateKey();\n this.init();\n}\n\nextend(Manager.prototype, {\n __init() {\n this.$render = this.$handle.$render;\n this.$r = (...args) => this.$render.renderRule(...args);\n },\n updateKey() {\n this.key = unique();\n },\n //TODO interface\n init() {\n },\n update() {\n },\n beforeRender() {\n },\n form() {\n return this.vm.$refs[this.ref];\n },\n mergeOptions(args, opt) {\n return mergeProps(args.map(v => this.tidyOptions(v)), opt, this.mergeOptionsRule);\n },\n updateOptions(options) {\n this.options = this.mergeOptions([options], this.getDefaultOptions());\n this.update();\n },\n tidyOptions(options) {\n return options;\n },\n tidyRule(ctx) {\n },\n mergeProp(ctx) {\n },\n getDefaultOptions() {\n return {};\n },\n render(children) {\n }\n})\n","import {err} from '@form-create/utils/lib/console';\nimport fetch from './fetch';\nimport {invoke} from './util';\nimport is from '@form-create/utils/lib/type';\nimport deepSet from '@form-create/utils/lib/deepset';\n\nconst $fetch = {\n name: 'fetch',\n loaded(...args) {\n run(...args);\n },\n watch(inject, rule, api) {\n if (!run(inject, rule, api)) {\n inject.clearProp();\n api.sync(rule);\n }\n }\n};\n\nfunction parseOpt(option) {\n if (is.String(option)) {\n option = {\n action: option,\n to: 'options'\n }\n }\n return option;\n}\n\nfunction run(inject, rule, api) {\n let option = inject.value;\n option = parseOpt(option);\n if (!option || !option.action) {\n return false;\n }\n if (!option.to) {\n option.to = 'options';\n }\n const onError = option.onError;\n\n const check = () => {\n if (!inject.getValue()) {\n inject.clearProp();\n api.sync(rule);\n return true;\n }\n }\n\n const set = (val) => {\n if (val === undefined) {\n inject.clearProp();\n api.sync(rule);\n } else {\n deepSet(inject.getProp(), option.to, val);\n }\n }\n\n invoke(() => fetch({\n ...option,\n onSuccess(body) {\n if (check()) return;\n set((option.parse || ((v) => v.data))(body, rule, api))\n api.sync(rule);\n },\n onError(e) {\n set(undefined)\n if (check()) return;\n (onError || ((e) => err(e.message || 'fetch fail ' + option.action)))(e, rule, api);\n }\n }));\n\n return true;\n}\n\nexport default $fetch;","import $FormCreate from '../components/formCreate';\nimport Vue from 'vue';\nimport makerFactory from '../factory/maker';\nimport Handle from '../handler';\nimport fetch from './fetch';\nimport {creatorFactory} from '..';\nimport BaseParser from '../factory/parser';\nimport {copyRule, copyRules, mergeGlobal, parseJson, toJson} from './util';\nimport fragment from '../components/fragment';\nimport is from '@form-create/utils/lib/type';\nimport toCase from '@form-create/utils/lib/tocase';\nimport extend from '@form-create/utils/lib/extend';\nimport {CreateNodeFactory} from '../factory/node';\nimport {createManager} from '../factory/manager';\nimport {arrayAttrs, keyAttrs, normalAttrs} from './attrs';\nimport {appendProto} from '../factory/creator';\nimport $fetch from './provider';\nimport {deepCopy} from '@form-create/utils/lib/deepextend';\n\nexport let _vue = typeof window !== 'undefined' && window.Vue ? window.Vue : Vue;\n\nfunction _parseProp(name, id) {\n let prop;\n if (arguments.length === 2) {\n prop = arguments[1];\n id = prop[name];\n } else {\n prop = arguments[2];\n }\n return {id, prop};\n}\n\nfunction nameProp() {\n return _parseProp('name', ...arguments);\n}\n\nfunction _getEl(options) {\n if (!options || !options.el) return window.document.body;\n return is.Element(options.el)\n ? options.el\n : document.querySelector(options.el);\n}\n\nfunction mountForm(rules, option) {\n const $vm = new _vue({\n data() {\n //todo 外部无法修改\n return {rule: rules, option: option || {}};\n },\n render(h) {\n return h('FormCreate', {ref: 'fc', props: this.$data});\n }\n });\n $vm.$mount();\n return $vm;\n}\n\nfunction exportAttrs(attrs) {\n const key = attrs.key || [];\n const array = attrs.array || [];\n const normal = attrs.normal || [];\n keyAttrs.push(...key);\n arrayAttrs.push(...array);\n normalAttrs.push(...normal);\n\n appendProto([...key, ...array, ...normal]);\n}\n\n//todo 表单嵌套\nexport default function FormCreateFactory(config) {\n\n const components = {\n [fragment.name]: fragment\n };\n const parsers = {};\n const directives = {};\n const providers = {\n fetch: $fetch\n };\n const maker = makerFactory();\n let globalConfig = {global: {}};\n const data = {};\n const CreateNode = CreateNodeFactory();\n\n exportAttrs(config.attrs || {});\n\n function directive() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) directives[data.id] = data.prop;\n }\n\n function register() {\n const data = nameProp(...arguments);\n if (data.id && data.prop) providers[data.id] = {...data.prop, name: data.id};\n }\n\n function componentAlias(alias) {\n CreateNode.use(alias);\n }\n\n function parser() {\n const data = nameProp(...arguments);\n if (!data.id || !data.prop) return;\n const name = toCase(data.id);\n const parser = data.prop;\n const base = parser.merge === true ? parsers[name] : undefined;\n parsers[name] = {...(base || BaseParser), ...parser};\n maker[name] = creatorFactory(name);\n parser.maker && extend(maker, parser.maker);\n }\n\n function component(id, component) {\n let name;\n if (is.String(id)) {\n name = toCase(id);\n if (['form-create', 'formcreate'].indexOf(name) > -1) {\n return $form();\n } else if (component === undefined) {\n return components[name];\n }\n } else {\n name = toCase(id.name);\n component = id;\n }\n if (!name || !component) return;\n components[name] = component;\n if (component.formCreateParser) parser(name, component.formCreateParser);\n }\n\n function $form() {\n return _vue.extend($FormCreate(FormCreate));\n }\n\n function $vnode() {\n return _vue.extend(fragment);\n }\n\n //todo 检查回调函数作用域\n function use(fn, opt) {\n if (is.Function(fn.install)) fn.install(create, opt);\n else if (is.Function(fn)) fn(create, opt);\n return this;\n }\n\n function create(rules, _opt, parent) {\n let $vm = mountForm(rules, _opt || {});\n const _this = $vm.$refs.fc.formCreate;\n _this.$parent = parent;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n }\n\n function factory() {\n return FormCreateFactory(config);\n }\n\n function FormCreate(vm, rules, options) {\n extend(this, {\n vm,\n create,\n manager: createManager(config.manager),\n parsers,\n providers,\n rules: Array.isArray(rules) ? rules : [],\n prop: {\n components,\n directives,\n },\n CreateNode,\n bus: new _vue,\n unwatch: null,\n extendApi: config.extendApi || (api => api)\n })\n this.init();\n this.initOptions(options || {});\n }\n\n extend(FormCreate.prototype, {\n init() {\n const vm = this.vm;\n const h = new Handle(this);\n this.$handle = h;\n vm.$f = h.api;\n vm.$emit('input', h.api);\n\n vm.$on('hook:created', () => {\n if (this.isSub()) {\n this.unwatch = vm.$watch(() => vm.$pfc.option, () => {\n this.initOptions(this.options);\n vm.$f.refresh();\n }, {deep: true});\n this.initOptions(this.options);\n }\n this.created();\n })\n vm.$on('hook:mounted', () => {\n this.mounted();\n });\n vm.$on('hook:beforeDestroy', () => {\n vm.destroyed = true;\n this.unwatch && this.unwatch();\n h.reloadRule([]);\n });\n vm.$on('hook:updated', () => {\n h.bindNextTick(() => this.bus.$emit('next-tick', h.api));\n });\n },\n isSub() {\n return this.vm.$pfc && this.vm.extendOption;\n },\n initOptions(options) {\n this.options = {formData: {}, submitBtn: {}, resetBtn: {}, ...deepCopy(globalConfig)};\n if (this.isSub()) {\n this.mergeOptions(this.options, this.vm.$pfc.$f.config || {}, true);\n }\n this.updateOptions(options);\n },\n mergeOptions(target, opt, parent) {\n opt = deepCopy(opt);\n parent && ['page', 'onSubmit', 'mounted', 'reload', 'formData', 'el'].forEach((n) => {\n delete opt[n];\n });\n if (opt.global) {\n target.global = mergeGlobal(target.global, opt.global);\n delete opt.global;\n }\n this.$handle.$manager.mergeOptions([opt], target);\n return target;\n },\n updateOptions(options) {\n this.mergeOptions(this.options, options);\n this.$handle.$manager.updateOptions(this.options);\n },\n created() {\n this.$handle.init();\n },\n api() {\n return this.$handle.api;\n },\n render() {\n return this.$handle.render();\n },\n mounted() {\n this.$handle.mounted();\n },\n })\n\n\n function useAttr(formCreate) {\n extend(formCreate, {\n version: config.version,\n ui: config.ui,\n data,\n maker,\n component,\n directive,\n register,\n $vnode,\n parser,\n use,\n factory,\n componentAlias,\n copyRule,\n copyRules,\n fetch,\n $form,\n parseJson,\n toJson,\n init(rules, _opt = {}) {\n let $vm = mountForm(rules, _opt), _this = $vm.$refs.fc.formCreate;\n return {\n mount($el) {\n if ($el && is.Element($el))\n _this.options.el = $el;\n _getEl(_this.options).appendChild($vm.$el);\n return _this.api();\n },\n remove() {\n $vm.$el.parentNode && $vm.$el.parentNode.removeChild($vm.$el);\n },\n destroy() {\n this.remove();\n $vm.$destroy();\n },\n $f: _this.api()\n };\n }\n });\n }\n\n function useStatic(formCreate) {\n extend(formCreate, {\n create,\n install(Vue, options) {\n globalConfig = {...globalConfig, ...(options || {})}\n if (Vue._installedFormCreate === true) return;\n Vue._installedFormCreate = true;\n _vue = Vue;\n\n const $formCreate = function (rules, opt = {}) {\n return create(rules, opt, this);\n };\n\n useAttr($formCreate);\n\n Vue.prototype.$formCreate = $formCreate;\n Vue.component('FormCreate', $form());\n Vue.component('FcFragment', $vnode());\n }\n })\n }\n\n useAttr(create);\n useStatic(create);\n\n CreateNode.use({fragment: 'fcFragment'});\n\n if (config.install) create.use(config);\n\n return create;\n}\n","import is from '@form-create/utils/lib/type';\nimport {creatorFactory} from '@form-create/core/src/index';\n\nexport function timeStampToDate(timeStamp) {\n if (is.Date(timeStamp))\n return timeStamp;\n else {\n let date = new Date(timeStamp);\n return date.toString() === 'Invalid Date' ? timeStamp : date;\n }\n}\n\nconst name = 'datePicker';\n\nexport default {\n name,\n maker: (function () {\n return ['date', 'dateRange', 'datetime', 'datetimeRange', 'year', 'month'].reduce((maker, type) => {\n maker[type] = creatorFactory(name, {type: type.toLowerCase()});\n return maker;\n }, {});\n }()),\n mergeProp(ctx) {\n let props = ctx.prop.props;\n if (props.startDate) {\n props.startDate = props.startDate && timeStampToDate(props.startDate);\n }\n },\n\n isRange(el) {\n return el.type.includes('range') || el.multiple;\n },\n\n _toValue(val, ctx) {\n const value = ctx.el.formatDate(val || ''), {separator} = ctx.el,\n isRange = this.isRange(ctx.el);\n if (!value)\n return isRange ? (ctx.el.multiple ? [] : ['', '']) : value;\n else if (isRange)\n return value.split(separator);\n else\n return value;\n },\n\n toValue(formValue, ctx) {\n const el = ctx.el;\n if (el) {\n this.el = el;\n return this._toValue(formValue, ctx);\n }\n return formValue;\n },\n\n toFormValue(value, ctx) {\n if (ctx.el) {\n const v = ctx.el.parseDate(value);\n return this.isRange(ctx.el) ? v : v[0];\n } else {\n let isArr = Array.isArray(value), props = ctx.prop.props, parseValue, type = props.type || 'date';\n if (['daterange', 'datetimerange'].indexOf(type) !== -1) {\n if (isArr) {\n parseValue = value.map((time) => !time ? '' : timeStampToDate(time));\n } else {\n parseValue = ['', '']\n }\n } else if ('date' === type && props.multiple === true) {\n parseValue = toString(value);\n } else {\n parseValue = isArr ? (value[0] || '') : value;\n parseValue = !parseValue ? '' : timeStampToDate(parseValue);\n }\n return parseValue;\n }\n },\n mounted(ctx) {\n ctx.rule.value = this.toValue(ctx.$handle.getFormData(ctx), ctx);\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'hidden';\nexport default {\n name,\n maker: {\n [name]: (field, value) => creatorFactory(name)('', field, value)\n },\n render() {\n return [];\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'input';\nexport default {\n name,\n maker: (function () {\n const maker = ['password', 'url', 'email', 'text', 'textarea'].reduce((maker, type) => {\n maker[type] = creatorFactory(name, {type});\n return maker;\n }, {});\n\n maker.idate = creatorFactory(name, {type:'date'});\n return maker\n }()),\n mergeProp(ctx) {\n let {props} = ctx.prop;\n if (props.autosize && props.autosize.minRows) {\n props.rows = props.autosize.minRows || 2;\n }\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst name = 'slider';\nexport default {\n name,\n maker: {\n sliderRange: creatorFactory(name, {range:true})\n },\n toFormValue(value, ctx) {\n let isArr = Array.isArray(value), props = ctx.prop.props, min = props.min || 0,\n parseValue;\n if (props.range === true) {\n parseValue = isArr ? value : [min, (parseFloat(value) || min)];\n } else {\n parseValue = isArr ? (parseFloat(value[0]) || min) : parseFloat(value);\n }\n return parseValue;\n }\n\n}\n","export default {\n name: 'switch',\n mergeProp(ctx) {\n const prop = ctx.prop.props.slot || {};\n const slot = ctx.prop.scopedSlots || {};\n if (prop.open) slot.open = () => prop.open;\n if (prop.close) slot.close = () => prop.close;\n ctx.prop.scopedSlots = slot;\n }\n}\n","export default {\n name: 'FcRow',\n render(_, ctx) {\n return ctx.vNode.col({props: {span: 24}}, [\n ctx.vNode.row(ctx.prop, _)\n ])\n }\n}","import datePicker from './datePicker';\nimport hidden from './hidden';\nimport input from './input';\nimport slider from './slider';\nimport iswitch from './switch';\nimport row from './row';\n\nexport default [\n datePicker, hidden, input, slider, iswitch, row\n]\n","export default {\n button: 'iButton',\n icon: 'Icon',\n slider: 'Slider',\n rate: 'Rate',\n upload: 'fcUpload',\n cascader: 'Cascader',\n colorPicker: 'ColorPicker',\n timePicker: 'TimePicker',\n datePicker: 'DatePicker',\n 'switch': 'iSwitch',\n select: 'fcSelect',\n checkbox: 'fcCheckbox',\n radio: 'fcRadio',\n inputNumber: 'InputNumber',\n input: 'iInput',\n formItem: 'FormItem',\n form: 'iForm',\n frame: 'fcFrame',\n col: 'iCol',\n row: 'row',\n tree: 'fcTree',\n autoComplete: 'AutoComplete',\n group: 'fcGroup',\n subForm: 'fcSubForm',\n object: 'fcSubForm',\n}\n","export const iviewConfig = {\n resetBtnType: 'default',\n resetBtnIcon: 'md-refresh',\n infoIcon: 'ios-information-circle-outline',\n};\n\nexport function info() {\n return {\n type: 'poptip',\n trigger: 'hover',\n placement: 'top-start',\n wordWrap: true,\n icon: iviewConfig.infoIcon\n }\n}\n\nexport default function getConfig() {\n return {\n form: {\n inline: false,\n labelPosition: 'right',\n labelWidth: 125,\n showMessage: true,\n autocomplete: 'off',\n size: undefined,\n },\n row: {\n gutter: 0,\n },\n submitBtn: {\n type: 'primary',\n disabled: false,\n innerText: '提交',\n loading: false,\n show: true,\n click: undefined,\n },\n resetBtn: {\n type: iviewConfig.resetBtnType,\n disabled: false,\n icon: iviewConfig.resetBtnIcon,\n innerText: '重置',\n loading: false,\n show: false,\n click: undefined,\n },\n };\n}\n","import getConfig, {info, iviewConfig} from './config';\nimport mergeProps from '@form-create/utils/lib/mergeprops';\nimport is, {hasProperty} from '@form-create/utils/lib/type';\nimport extend from '@form-create/utils/lib/extend';\n\nfunction tidy(props, name) {\n if (!hasProperty(props, name)) return;\n if (is.String(props[name])) {\n props[name] = {[name]: props[name], show: true};\n }\n}\n\nfunction isFalse(val) {\n return val === false;\n}\n\nfunction tidyBool(opt, name) {\n if (hasProperty(opt, name) && !is.Object(opt[name])) {\n opt[name] = {show: !!opt[name]};\n }\n}\n\nexport default {\n validate(call) {\n this.form().validate(call);\n },\n validateField(field, call) {\n this.form().validateField(field, call);\n },\n clearValidateState(ctx) {\n const fItem = this.vm.$refs[ctx.wrapRef];\n if (fItem) {\n fItem.validateMessage = '';\n fItem.validateState = '';\n }\n },\n tidyOptions(options) {\n ['submitBtn', 'resetBtn', 'row', 'info', 'wrap', 'col'].forEach(name => {\n tidyBool(options, name);\n })\n return options;\n },\n tidyRule({prop}) {\n tidy(prop, 'title');\n tidy(prop, 'info');\n return prop;\n },\n mergeProp(ctx) {\n ctx.prop = mergeProps([{\n info: this.options.info || {},\n wrap: this.options.wrap || {},\n col: this.options.col || {},\n }, ctx.prop], {\n info: info(),\n title: {},\n col: {span: 24},\n wrap: {},\n }, {normal: ['title', 'info', 'col', 'wrap']});\n this.setSize(ctx.prop.props);\n },\n setSize(props) {\n if (!props.size && this.options.form.size) {\n props.size = this.options.form.size;\n }\n },\n getDefaultOptions() {\n return getConfig();\n },\n update() {\n const form = this.options.form;\n this.rule = {\n props: {...form},\n nativeOn: {\n submit: (e) => {\n e.preventDefault();\n }\n },\n class: [form.className, form.class, 'form-create'],\n style: form.style,\n type: 'form',\n };\n },\n beforeRender() {\n const {key, ref, $handle} = this;\n extend(this.rule, {key, ref});\n extend(this.rule.props, {\n model: $handle.formData,\n rules: $handle.validate(),\n });\n },\n render(children) {\n if (children.length) {\n children.push(this.makeFormBtn());\n }\n return this.$r(this.rule, isFalse(this.options.row.show) ? children : [this.makeRow(children)]);\n },\n makeWrap(ctx, children) {\n const rule = ctx.prop;\n const uni = `${this.key}${ctx.key}`;\n const col = rule.col;\n const isTitle = this.isTitle(rule);\n const labelWidth = (!col.labelWidth && !isTitle) ? 0 : col.labelWidth;\n const {inline, col: _col} = this.rule.props;\n const item = isFalse(rule.wrap.show) ? children : this.$r(mergeProps([rule.wrap, {\n props: {\n labelWidth,\n ...(rule.wrap || {}),\n prop: ctx.id,\n rules: rule.validate,\n },\n class: rule.className,\n key: `${uni}fi`,\n ref: ctx.wrapRef,\n type: 'formItem',\n }]), [children, isTitle ? this.makeInfo(rule, uni) : null]);\n return (inline === true || isFalse(_col) || isFalse(col.show)) ? item : this.makeCol(rule, uni, [item]);\n },\n isTitle(rule) {\n if (this.options.form.title === false) return false;\n const title = rule.title;\n return !((!title.title && !title.native) || isFalse(title.show))\n },\n makeInfo(rule, uni) {\n const titleProp = rule.title;\n const infoProp = rule.info;\n const children = [titleProp.title];\n\n const titleFn = (pop) => this.$r(mergeProps([titleProp, {\n props: titleProp,\n slot: titleProp.slot || (pop ? 'default' : 'label'),\n key: `${uni}tit`,\n type: titleProp.type || 'span',\n }]), children);\n\n if (!isFalse(infoProp.show) && (infoProp.info || infoProp.native)) {\n if (infoProp.icon !== false) {\n children[infoProp.align !== 'left' ? 'unshift' : 'push'](this.$r({\n type: 'icon',\n props: {type: infoProp.icon === true ? iviewConfig.infoIcon : infoProp.icon, size: 16},\n style: 'margin-top: -1px',\n key: `${uni}i`\n }));\n }\n\n const prop = {\n type: infoProp.type || 'poptip',\n props: {...infoProp},\n key: `${uni}pop`,\n slot: 'label'\n };\n\n const field = 'content';\n if (infoProp.info && !hasProperty(prop.props, field)) {\n prop.props[field] = infoProp.info;\n }\n\n return this.$r(mergeProps([infoProp, prop]), [\n titleFn(true)\n ])\n }\n return titleFn();\n },\n makeCol(rule, uni, children) {\n const col = rule.col;\n return this.$r({\n class: col.class,\n type: 'col',\n props: col || {span: 24},\n key: `${uni}col`\n }, children);\n },\n makeRow(children) {\n const row = this.options.row || {};\n return this.$r({\n type: 'row',\n props: row,\n class: row.class,\n key: `${this.key}row`\n }, children)\n },\n makeFormBtn() {\n let vn = [];\n if (!isFalse(this.options.submitBtn.show)) {\n vn.push(this.makeSubmitBtn())\n }\n if (!isFalse(this.options.resetBtn.show)) {\n vn.push(this.makeResetBtn())\n }\n if (!vn.length) {\n return;\n }\n const item = this.$r({\n type: 'formItem',\n key: `${this.key}fb`\n }, vn);\n\n return this.rule.props.inline === true\n ? item\n : this.$r({\n type: 'col',\n props: {span: 24},\n key: `${this.key}fc`\n }, [item]);\n },\n makeResetBtn() {\n const resetBtn = this.options.resetBtn;\n this.setSize(resetBtn);\n return this.$r({\n type: 'button',\n props: resetBtn,\n style: {width: resetBtn.width, marginLeft: '15px'},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n resetBtn.click\n ? resetBtn.click(fApi)\n : fApi.resetFields();\n }\n },\n key: `${this.key}b2`,\n }, [resetBtn.innerText]);\n },\n makeSubmitBtn() {\n const submitBtn = this.options.submitBtn;\n this.setSize(submitBtn);\n return this.$r({\n type: 'button',\n props: submitBtn,\n style: {width: submitBtn.width},\n on: {\n click: () => {\n const fApi = this.$handle.api;\n submitBtn.click\n ? submitBtn.click(fApi)\n : fApi.submit();\n }\n },\n key: `${this.key}b1`,\n }, [submitBtn.innerText]);\n }\n}\n","import {creatorFactory} from '@form-create/core/src/index';\n\nconst maker = {};\n\nconst names = ['upload', 'select', 'tree', 'checkbox', 'autoComplete', 'cascader', 'colorPicker', 'frame', 'inputNumber', 'radio', 'rate', 'timePicker', 'group'];\n\nfunction useAlias(maker) {\n names.forEach(name => {\n maker[name] = creatorFactory(name);\n });\n maker.auto = maker.autoComplete;\n maker.number = maker.inputNumber;\n maker.color = maker.colorPicker;\n}\n\n\nfunction useUpload(maker) {\n const name = 'upload';\n\n const types = {\n image: ['image', 0],\n file: ['file', 0],\n uploadFileOne: ['file', 1],\n uploadImageOne: ['image', 1],\n };\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory(name, m => m.props({uploadType: types[key][0], maxLength: types[key][1]}));\n return maker\n }, maker);\n\n maker.uploadImage = maker.image;\n maker.uploadFile = maker.file;\n}\n\nfunction useTree(maker) {\n const name = 'tree';\n\n const types = {'treeSelected': 'selected', 'treeChecked': 'checked'};\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory(name, {type:types[key]});\n return maker;\n }, maker);\n}\n\nfunction useTimePicker(maker) {\n const name = 'timePicker';\n\n maker.time = creatorFactory(name, {type:'time'})\n maker.timeRange = creatorFactory(name, {type:'timerange'})\n}\n\n\nfunction useSelect(maker) {\n const name = 'select';\n\n maker.selectMultiple = creatorFactory(name, {multiple:true})\n maker.selectOne = creatorFactory(name, {multiple:false})\n}\n\n\nfunction useFrame(maker) {\n const name = 'frame';\n\n const types = {\n frameInputs: ['input', 0],\n frameFiles: ['file', 0],\n frameImages: ['image', 0],\n frameInputOne: ['input', 1],\n frameFileOne: ['file', 1],\n frameImageOne: ['image', 1]\n };\n\n Object.keys(types).reduce((maker, key) => {\n maker[key] = creatorFactory(name, m => m.props({type: types[key][0], maxLength: types[key][1]}));\n return maker\n }, maker);\n\n\n maker.frameInput = maker.frameInputs;\n maker.frameFile = maker.frameFiles;\n maker.frameImage = maker.frameImages;\n}\n\nuseAlias(maker);\nuseUpload(maker);\nuseTree(maker);\nuseSelect(maker);\nuseFrame(maker);\nuseTimePicker(maker);\n\nexport default maker;\n","import extend from '@form-create/utils/lib/extend';\nimport is from '@form-create/utils/lib/type';\nimport {invoke} from '@form-create/core/src/frame/util';\nimport toArray from '@form-create/utils/lib/toarray';\n\nfunction tidyBtnProp(btn, def) {\n if (is.Boolean(btn))\n btn = {show: btn};\n else if (!is.Undef(btn) && !is.Object(btn)) btn = {show: def};\n return btn;\n}\n\nexport default function extendApi(api, h) {\n extend(api, {\n validate(callback) {\n let flag;\n const forms = api.children;\n let len = forms.length;\n const validate = () => {\n h.$manager.validate((...args) => {\n if (!args[0] || !flag) {\n flag = args;\n }\n callback && callback(...flag);\n });\n };\n\n const validFn = (args) => {\n setTimeout(() => {\n if (!args[0]) {\n if (!flag) {\n flag = args;\n }\n }\n if (!--len) {\n validate();\n }\n });\n };\n\n forms.forEach(form => {\n form.validate((...args) => validFn(args))\n })\n\n if (!len) {\n validate();\n }\n },\n validateField: (field, callback) => {\n const ctx = h.getFieldCtx(field);\n if (!ctx) return;\n const sub = h.subForm[ctx.id];\n let len = 0;\n let flag;\n const validate = () => {\n h.$manager.validateField(ctx.id, (...args) => {\n if (args[0]) {\n flag = args;\n } else if (flag) {\n return callback && callback('子表单验证未通过');\n }\n callback && callback(...flag || args);\n });\n };\n const validFn = (args) => {\n setTimeout(() => {\n if (!args[0]) {\n if (!flag) {\n flag = args;\n }\n }\n if (!--len) {\n validate();\n }\n });\n };\n sub && toArray(sub).forEach(form => {\n len++;\n form.validate((...args) => validFn(args))\n });\n\n if (!len) {\n validate();\n }\n },\n clearValidateState(fields, clearSub = true) {\n api.helper.tidyFields(fields).forEach(field => {\n if (clearSub) this.clearSubValidateState(field);\n h.getCtxs(field).forEach(ctx => {\n h.$manager.clearValidateState(ctx);\n });\n });\n },\n clearSubValidateState(fields) {\n api.helper.tidyFields(fields).forEach(field => {\n h.getCtxs(field).forEach(ctx => {\n const subForm = h.subForm[ctx.id];\n if (!subForm) return;\n if (Array.isArray(subForm)) {\n subForm.forEach(form => {\n form.clearValidateState();\n })\n } else if (subForm) {\n subForm.clearValidateState();\n }\n });\n })\n },\n btn: {\n loading: (loading = true) => {\n api.submitBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.submitBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.submitBtnProps({show: !!isShow});\n }\n },\n resetBtn: {\n loading: (loading = true) => {\n api.resetBtnProps({loading: !!loading});\n },\n disabled: (disabled = true) => {\n api.resetBtnProps({disabled: !!disabled});\n },\n show: (isShow = true) => {\n api.resetBtnProps({show: !!isShow});\n }\n },\n submitBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.submitBtn, true);\n extend(btn, props);\n h.options.submitBtn = btn;\n api.refreshOptions();\n },\n resetBtnProps: (props = {}) => {\n let btn = tidyBtnProp(h.options.resetBtn, false);\n extend(btn, props);\n h.options.resetBtn = btn;\n api.refreshOptions();\n },\n submit(successFn, failFn) {\n api.validate((valid) => {\n if (valid) {\n let formData = api.formData();\n if (is.Function(successFn))\n invoke(() => successFn(formData, this));\n else {\n is.Function(h.options.onSubmit) && invoke(() => h.options.onSubmit(formData, this));\n h.vm.$emit('submit', formData, this);\n }\n } else {\n is.Function(failFn) && invoke(() => failFn(this, ...arguments));\n }\n });\n },\n });\n\n return api;\n}\n","import components from '../components';\nimport parsers from '../parsers';\nimport alias from './alias';\nimport manager from './manager';\nimport FormCreateFactory from '@form-create/core/src/index';\nimport makers from './maker';\nimport '../style/index.css';\nimport extendApi from './api';\n\nfunction install(FormCreate) {\n FormCreate.componentAlias(alias);\n\n components.forEach(component => {\n FormCreate.component(component.name, component);\n });\n\n parsers.forEach((parser) => {\n FormCreate.parser(parser);\n });\n\n Object.keys(makers).forEach(name => {\n FormCreate.maker[name] = makers[name];\n });\n}\n\nexport default function ivuFormCreate() {\n return FormCreateFactory({\n ui: `${process.env.UI}`,\n version: `${process.env.VERSION}`,\n manager,\n install,\n extendApi,\n attrs: {\n normal: ['col', 'wrap'],\n array: ['className'],\n key: ['title', 'info'],\n }\n });\n}\n","import ivuFormCreate from './core/index';\n\nconst FormCreate = ivuFormCreate();\n\nif (typeof window !== 'undefined') {\n window.formCreate = FormCreate;\n if (window.Vue) {\n FormCreate.install(window.Vue);\n }\n}\n\nconst maker = FormCreate.maker;\n\nexport {maker}\n\nexport default FormCreate;\n"],"names":["_extends","Object","assign","a","b","c","arguments","length","d","prototype","hasOwnProperty","call","apply","this","normalMerge","toArrayMerge","functionalMerge","mergeJsxProps","reduce","indexOf","Array","e","concat","f","g","h","i","mergeFn","getSlot","slots","exclude","keys","lst","name","push","NAME","props","formCreateInject","type","required","value","watch","update","data","trueValue","computed","options","opt","isArray","methods","onInput","n","$emit","filter","label","map","v","undefined","_this","option","created","render","prop","index","$slots","toArray","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","createFrame","config","String","field","helper","Boolean","disabled","src","icon","fileUpIcon","width","Number","height","maxLength","okBtnText","closeBtnText","modalTitle","handleIcon","title","allowRemove","onOpen","Function","onOk","onCancel","onLoad","onBeforeRemove","onRemove","onHandle","previewImage","getSrc","previewVisible","modal","srcKey","previewMask","footer","reload","closeBtn","okBtn","fileList","frameVisible","val","modalVm","key","unique","closeModel","close","$off","showModel","makeInput","toString","readonly","clearable","makeGroup","children","makeBtn","makeItem","valid","Error","makeIcons","icons","makeHandleIcon","makeRemoveIcon","_this2","handleClick","_this3","handleRemove","makeFiles","_this4","fileIcon","size","makeImages","_this5","_this6","splice","frameLoad","iframe","_this7","set","get","fn","$on","onClose","console","log","makeFooter","$props","node","_this8","$nextTick","_this9","$refs","frame","contentWindow","mounted","closeModal","v2","initial","is","arg","Undef","Element","_typeof","nodeType","trueArray","hasProperty","rule","k","forEach","t","functional","ctx","slot","slotName","treeData","setStatus","checked","$forceUpdate","_data","$set","id","list","on","parseFile","file","url","getFileName","split","pop","createUpload","uploadType","uploadList","showUploadList","defaultFileList","upload","every","status","o","isDisabled","makeProgress","percent","percentage","hideInfo","$scopedSlots","vm","showProgress","makeUpload","isShow","display","imgUpIcon","files","handleCancel","$watch","deep","createGroup","rules","expand","button","max","min","syncDisabled","fontSize","onBeforeAdd","len","cacheRule","cacheValue","formRule","$f","expandRule","total","addRule","setValue","removeRule","subForm","_value","cache","JSON","stringify","input","formData","form","coverValue","emit","copyRules","submitBtn","resetBtn","add$f","$delete","add","del","addIcon","delIcon","removeIcon","makeIcon","emitEvent","args","$form","Type","group","str","checkbox","radio","select","tree","target","Vue","$del","extend","$FormCreate","FormCreate","componentName","model","provide","$pfc","inject","extendOption","api","destroyed","validate","renderRule","ctxInject","updateValue","formCreate","_refresh","_renderRule","_updateValue","handler","initOptions","refresh","$handle","reloadRule","beforeCreate","$options","propsData","mergeProps","objects","_normalMerge","_toArrayMerge","_functionalMerge","propsMerge","arrA","arrB","event","hook","fn1","fn2","keyAttrs","arrayAttrs","normalAttrs","attrs","deepExtend","origin","mode","isArr","clone","nst","_clone","getRule","__json","__origin","__ctrl","deepCopy","format","msg","tip","warn","err","error","logError","PREFIX","SUFFIX","$T","$TX","FUNCTION","toJson","obj","space","_isVue","__emit","makeFn","eval","parseFn","trim","flag","replace","__inject","parseJson","json","parse","enumerable","writable","configurable","copyRule","mergeRule","merge","array","normal","mergeGlobal","funcProxy","that","proxy","defineProperties","byCtx","__fc__","__origin__","invoke","def","toLine","line","toLocaleLowerCase","substr","uniqueId","Math","random","Date","now","deepSet","idx","to","baseRule","hidden","creatorFactory","init","maker","Creator","appendProto","setProp","constructor","commonMaker","create","make","createTmp","template","makerFactory","factory","copy","Api","tidyFields","fields","getCtxs","$render","clearCache","allSubForm","subs","sub","getFieldCtx","appendData","getValue","deferSyncValue","ctxs","fieldCtx","removeField","getCtx","rm","destroy","$el","parentNode","removeChild","$destroy","append","after","child","sort","root","prepend","state","hiddenStatus","displayStatus","component","nameCtx","bind","updateOptions","fc","onSubmit","sync","deleted","clearCacheAll","refreshOptions","$manager","hideForm","hide","changeStatus","clearChangeStatus","updateRule","updateRules","mergeRules","updateValidate","updateValidates","validates","refreshValidate","resetFields","defaultValue","refreshControl","method","el","exec","trigger","getSubForm","nextTick","bus","$once","nextRefresh","changeValue","changeField","useCache","Render","initCache","use","parent","setCache","vnode","getCache","toCase","lower","toLocaleUpperCase","toLowerCase","useRender","initRender","tempList","clearOrgChildren","initOrgChildren","orgChildren","parser","loadChildren","vn","$h","$createElement","beforeRender","renderList","renderSlot","renderName","renderId","renderField","container","renderCtx","makeVm","getInjectData","global","cacheConfig","originType","trueType","setOptions","optionsTo","setTempProps","injectProp","injectKeys","renderTemp","compile","parseSide","side","renderSides","temp","prefix","suffix","cacheFlag","_type","none","renderChildren","initProp","tidyRule","ctxProp","makeWrap","item","addSubForm","custom","mergeProp","onMounted","getFormData","callback","expression","__rule__","effect","isRm","rmCtx","defaultRender","vNode","alias","aliasMap","_this10","handle","CreateNode","useInject","Handler","parseInjectEvent","injectEvent","parseEventLst","parseEvent","parseEmit","emitPrefix","emitKey","eventName","eventInject","fieldKey","_inject","self","_fn","watching","loading","unshift","EVENT","usePage","page","first","limit","getLimit","parseInt","pageEnd","pageLoad","pageFn","loadRule","ceil","clearNextTick","clearTimeout","bindNextTick","setTimeout","loadedId","RuleContext","wrapRef","linkOn","ctrlRule","payload","updateType","updateKey","useLoader","parseRule","_rule","fullRule","appendValue","loadFn","loadCtrl","control","ctrl","syncProp","pre","fapi","cycleLoad","_loadRule","syncForm","isRepeat","ruleEffect","repeat","isCopy","isInit","check","isCtrl","bindParser","setCtx","_preIndex","preIndex","r","updated","refreshUpdate","defineProperty","valueHandle","useCtrl","controls","getCtrl","handleFn","findCtrl","isHidden","reverse","ruleCon","ctrlCtx","_reloadRule","initData","reloading","nextReload","useInput","toValue","formValue","setFlag","setFormData","syncValue","valueChange","isQuote","isChange","toEmpty","toFormValue","deferSyncFn","refreshRule","appendLink","link","effectData","clearEffectData","setParser","unwatch","un","unlink","watchTo","watchCtx","rmCtrl","$api","_rm","noWatch","getType","BaseParser","useContext","getNameCtx","setIdCtx","rmIdCtx","isMounted","getParser","parsers","noWatchFn","rmSub","watchEffect","useLifecycle","_mounted","lifecycle","useEffect","useProvider","ps","providers","_c","getComponent","onEffect","provider","used","_used","emitEffect","getEffect","attr","p","getProp","clearProp","arr","components","manager","extendApi","getError","action","xhr","getBody","text","responseText","response","fetch","XMLHttpRequest","onerror","onError","onload","onSuccess","open","dataType","FormData","setRequestHeader","withCredentials","headers","send","__init","parseProp","domProps","innerHTML","CreateNodeFactory","setVm","tag","isReservedTag","nativeOn","Node","context","nodes","createManager","proto","CustomManager","Manager","mergeOptionsRule","$r","mergeOptions","tidyOptions","getDefaultOptions","$fetch","loaded","run","parseOpt","body","message","_vue","window","_parseProp","nameProp","_getEl","querySelector","mountForm","$vm","$data","$mount","exportAttrs","FormCreateFactory","fragment","directives","globalConfig","directive","register","componentAlias","base","formCreateParser","$vnode","install","_opt","$parent","useAttr","version","ui","mount","remove","Handle","isSub","_installedFormCreate","$formCreate","timeStampToDate","timeStamp","date","startDate","isRange","includes","multiple","_toValue","formatDate","separator","parseDate","parseValue","time","idate","autosize","minRows","rows","sliderRange","range","parseFloat","scopedSlots","_","col","span","row","datePicker","slider","iswitch","rate","cascader","colorPicker","timePicker","inputNumber","formItem","autoComplete","object","iviewConfig","resetBtnType","resetBtnIcon","infoIcon","info","placement","wordWrap","getConfig","inline","labelPosition","labelWidth","showMessage","autocomplete","gutter","innerText","show","click","tidy","isFalse","tidyBool","validateField","clearValidateState","fItem","validateMessage","validateState","wrap","setSize","submit","preventDefault","className","makeFormBtn","makeRow","uni","isTitle","_col","makeInfo","makeCol","titleProp","infoProp","titleFn","align","makeSubmitBtn","makeResetBtn","marginLeft","fApi","names","useAlias","auto","number","color","useUpload","types","image","uploadFileOne","uploadImageOne","m","uploadImage","uploadFile","useTree","useTimePicker","timeRange","useSelect","selectMultiple","selectOne","useFrame","frameInputs","frameFiles","frameImages","frameInputOne","frameFileOne","frameImageOne","frameInput","frameFile","frameImage","tidyBtnProp","btn","forms","validFn","clearSub","clearSubValidateState","submitBtnProps","resetBtnProps","successFn","failFn","makers","ivuFormCreate","process"],"mappings":"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"}
|