diff --git a/docs/renderers/Form/Combo.md b/docs/renderers/Form/Combo.md index 28edc9411..573725ce4 100644 --- a/docs/renderers/Form/Combo.md +++ b/docs/renderers/Form/Combo.md @@ -2,32 +2,34 @@ 组合模式,支持自由组合多个表单项。当设置成单选时数据格式为对象,当设置成多选时数据格式为数组,数组成员是对象(flat 模式可以直接是某个表单单项的数值)。 -- `type` 请设置成 `combo` -- `multiple` 默认为 `false` 配置是否为多选模式 -- `controls` 配置组合成员,所有成员都是横向展示,可以是任意 [FormItem](./FormItem.md) -- `controls[x].columnClassName` 列的类名,可以用它配置列宽度。默认平均分配。 -- `controls[x].unique` 设置当前列值是否唯一,即不允许重复选择。 -- `maxLength` 当 multiple 为 true 的时候启用,设置可以最大项数。 -- `flat` 默认为 `false`, 是否将结果扁平化(去掉 name),只有当 controls 的 length 为 1 且 multiple 为 true 的时候才有效。 -- `joinValues` 默认为 `true` 当扁平化开启的时候,是否用分隔符的形式发送给后端,否则采用 array 的方式。 -- `delimiter` 当扁平化开启并且 joinValues 为 true 时,用什么分隔符。 -- `multiLine` 默认是横着展示一排,设置以后竖着展示 -- `addable` 是否可新增。 -- `removable` 是否可删除 -- `deleteApi` 如果配置了,则删除前会发送一个 api,请求成功才完成删除! -- `deleteConfirmText` 默认为 `确认要删除?`,当配置 `deleteApi` 才生效!删除时用来做用户确认! -- `draggable` 默认为 `false`, 是否可以拖动排序, 需要注意的是当启用拖动排序的时候,会多一个\$id 字段 -- `draggableTip` 可拖拽的提示文字,默认为:`"可通过拖动每行中的【交换】按钮进行顺序调整"` -- `addButtonText` 新增按钮文字,默认为 `"新增"`。 -- `minLength` 限制最小长度。 -- `maxLength` 限制最大长度。 -- `scaffold` 单组表单项初始值。默认为 `{}`。 -- `canAccessSuperData` 指定是否可以自动获取上层的数据并映射到表单项上,默认是`false`。 -- `conditions` 数组的形式包含所有条件的渲染类型,单个数组内的`test` 为判断条件,数组内的`controls`为符合该条件后渲染的`schema` -- `typeSwitchable` 是否可切换条件,配合`conditions`使用 -- `formClassName` 单组表单项的类名 -- `noBorder` 单组表单项是否有边框 -- **还有更多通用配置请参考** [FormItem](./FormItem.md) +- `type` 请设置成 `combo` +- `multiple` 默认为 `false` 配置是否为多选模式 +- `controls` 配置组合成员,所有成员都是横向展示,可以是任意 [FormItem](./FormItem.md) +- `controls[x].columnClassName` 列的类名,可以用它配置列宽度。默认平均分配。 +- `controls[x].unique` 设置当前列值是否唯一,即不允许重复选择。 +- `maxLength` 当 multiple 为 true 的时候启用,设置可以最大项数。 +- `flat` 默认为 `false`, 是否将结果扁平化(去掉 name),只有当 controls 的 length 为 1 且 multiple 为 true 的时候才有效。 +- `joinValues` 默认为 `true` 当扁平化开启的时候,是否用分隔符的形式发送给后端,否则采用 array 的方式。 +- `delimiter` 当扁平化开启并且 joinValues 为 true 时,用什么分隔符。 +- `multiLine` 默认是横着展示一排,设置以后竖着展示 +- `addable` 是否可新增。 +- `removable` 是否可删除 +- `deleteApi` 如果配置了,则删除前会发送一个 api,请求成功才完成删除! +- `deleteConfirmText` 默认为 `确认要删除?`,当配置 `deleteApi` 才生效!删除时用来做用户确认! +- `draggable` 默认为 `false`, 是否可以拖动排序, 需要注意的是当启用拖动排序的时候,会多一个\$id 字段 +- `draggableTip` 可拖拽的提示文字,默认为:`"可通过拖动每行中的【交换】按钮进行顺序调整"` +- `addButtonText` 新增按钮文字,默认为 `"新增"`。 +- `minLength` 限制最小长度。 +- `maxLength` 限制最大长度。 +- `scaffold` 单组表单项初始值。默认为 `{}`。 +- `canAccessSuperData` 指定是否可以自动获取上层的数据并映射到表单项上,默认是`false`。 +- `conditions` 数组的形式包含所有条件的渲染类型,单个数组内的`test` 为判断条件,数组内的`controls`为符合该条件后渲染的`schema` +- `typeSwitchable` 是否可切换条件,配合`conditions`使用 +- `formClassName` 单组表单项的类名 +- `noBorder` 单组表单项是否有边框 +- `strictMode` 默认为严格模式,设置为 false 时,当其他表单项更新是,里面的表单项也可以及时获取,否则不会。 +- `syncFields` 配置同步字段。只有 strictMode 为 false 时有效。如果 combo 层级比较深,底层的获取外层的数据可能不同步。但是给 combo 配置这个属性就能同步下来。输入格式:`["os"]` +- **还有更多通用配置请参考** [FormItem](./FormItem.md) #### 单行模式 @@ -222,14 +224,13 @@ } ``` -- `conditions` Array 数组,每个成员是一种类型 - - `conditions[x].label` 类型名称 - - `conditions[x].test` 表达式,目标成员数据是否属于这个类型? - - `conditions[x].scaffold` 初始数据,当新增的时候直接使用此数据。 - - `conditions[x].controls` 该类型的表单设置。 +- `conditions` Array 数组,每个成员是一种类型 +- `conditions[x].label` 类型名称 +- `conditions[x].test` 表达式,目标成员数据是否属于这个类型? +- `conditions[x].scaffold` 初始数据,当新增的时候直接使用此数据。 +- `conditions[x].controls` 该类型的表单设置。 - `typeSwitchable` 类型是否允许切换,如果设置成 true 会多一个类型切换的按钮。 - #### Tabs 模式 默认成员是一个一个排列的,如果数据比较多优点让人眼花缭乱。所以 Combo 支持了 tabs 的排列方式。 diff --git a/docs/renderers/Form/Image.md b/docs/renderers/Form/Image.md index 1d0ca19fd..3f162c6f4 100644 --- a/docs/renderers/Form/Image.md +++ b/docs/renderers/Form/Image.md @@ -2,30 +2,26 @@ 图片格式输入,默认 amis 会直接存储在 FEX 的 hiphoto 里面,提交到 form 是直接的图片 url。 -- `type` 请设置成 `image` -- `reciever` 默认 `/api/upload` 如果想自己存储,请设置此选项。 -- `multiple` 是否多选。 -- `maxLength` 默认没有限制,当设置后,一次只允许上传指定数量文件。 -- `joinValues` 多选时是否将多个值用 `delimiter` 连接起来。 -- `extractValue` 默认为 `false`, `joinValues`设置为`false`时生效, 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。 -- `delimiter` 连接符,默认是 `,`, 多选时且 `joinValues` 为 `true` 时用来连接值。 -- `autoUpload` 是否选择完就自动开始上传?默认为 `true` -- `compress` 默认 `true` 如果想默认压缩请开启。 -- `compressOptions` - - `maxWidth` 设置最大宽度。 - - `maxHeight` 设置最大高度。 -- `showCompressOptions` 默认为 false, 开启后,允许用户输入压缩选项。 -- `crop` 用来设置是否支持裁剪。 - - `aspectRatio` 浮点型,默认 `1` 即 `1:1`,如果要设置 `16:9` 请设置 `1.7777777777777777` 即 `16 / 9`。 -- `limit` 限制图片大小,超出不让上传。 - - `width` 限制图片宽度。 - - `height` 限制图片高度。 - - `minWidth` 限制图片最小宽度。 - - `minHeight` 限制图片最小高度。 - - `maxWidth` 限制图片最大宽度。 - - `maxHeight` 限制图片最大高度。 - - `aspectRatio` 限制图片宽高比,格式为浮点型数字,默认 `1` 即 `1:1`,如果要设置 `16:9` 请设置 `1.7777777777777777` 即 `16 / 9`。。 -- **还有更多通用配置请参考** [FormItem](./FormItem.md) +- `type` 请设置成 `image` +- `reciever` 默认 `/api/upload` 如果想自己存储,请设置此选项。 +- `multiple` 是否多选。 +- `maxLength` 默认没有限制,当设置后,一次只允许上传指定数量文件。 +- `joinValues` 多选时是否将多个值用 `delimiter` 连接起来。 +- `extractValue` 默认为 `false`, `joinValues`设置为`false`时生效, 开启后将选中的选项 value 的值封装为数组,作为当前表单项的值。 +- `delimiter` 连接符,默认是 `,`, 多选时且 `joinValues` 为 `true` 时用来连接值。 +- `autoUpload` 是否选择完就自动开始上传?默认为 `true` +- `maxSize` 默认没有限制,当设置后,文件大小大于此值将不允许上传。 +- `crop` 用来设置是否支持裁剪。 + - `aspectRatio` 浮点型,默认 `1` 即 `1:1`,如果要设置 `16:9` 请设置 `1.7777777777777777` 即 `16 / 9`。 +- `limit` 限制图片大小,超出不让上传。 + - `width` 限制图片宽度。 + - `height` 限制图片高度。 + - `minWidth` 限制图片最小宽度。 + - `minHeight` 限制图片最小高度。 + - `maxWidth` 限制图片最大宽度。 + - `maxHeight` 限制图片最大高度。 + - `aspectRatio` 限制图片宽高比,格式为浮点型数字,默认 `1` 即 `1:1`,如果要设置 `16:9` 请设置 `1.7777777777777777` 即 `16 / 9`。 如果不想限制比率,请设置空字符串。 +- **还有更多通用配置请参考** [FormItem](./FormItem.md) ```schema:height="250" scope="form-item" { diff --git a/fis-conf.js b/fis-conf.js index 402b637b3..552d4dd6c 100644 --- a/fis-conf.js +++ b/fis-conf.js @@ -4,645 +4,679 @@ const path = require('path'); const package = require('./package.json'); const parserMarkdown = require('./build/md-parser'); -fis.get('project.ignore').push( - 'public/**', - 'gh-pages/**', - '.*/**' -); +fis.get('project.ignore').push('public/**', 'gh-pages/**', '.*/**'); // 配置只编译哪些文件。 fis.set('project.files', [ - 'scss/**.scss', - '/examples/*.html', - '/examples/*.tpl', - '/src/**.html', - 'mock/**' + 'scss/**.scss', + '/examples/*.html', + '/examples/*.tpl', + '/src/**.html', + 'mock/**' ]); fis.match('/mock/**', { - useCompile: false + useCompile: false }); fis.match('mod.js', { - useCompile: false + useCompile: false }); fis.match('*.scss', { - parser: fis.plugin('node-sass', { - sourceMap: true - }), - rExt: '.css' + parser: fis.plugin('node-sass', { + sourceMap: true + }), + rExt: '.css' }); fis.match('/src/icons/**.svg', { - rExt: '.js', - isJsXLike: true, - isJsLike: true, - isMod: true, - parser: [ - fis.plugin('svgr', { - svgProps: { - className: "icon" - }, - prettier: false, - dimensions: false - }), - fis.plugin('typescript', { - importHelpers: true, - esModuleInterop: true, - experimentalDecorators: true, - sourceMap: false - }) - ] -}) + rExt: '.js', + isJsXLike: true, + isJsLike: true, + isMod: true, + parser: [ + fis.plugin('svgr', { + svgProps: { + className: 'icon' + }, + prettier: false, + dimensions: false + }), + fis.plugin('typescript', { + importHelpers: true, + esModuleInterop: true, + experimentalDecorators: true, + sourceMap: false + }) + ] +}); fis.match('_*.scss', { - release: false + release: false }); fis.match('/node_modules/**.js', { - isMod: true + isMod: true }); fis.match('/docs/**.md', { - rExt: 'js', - parser: [parserMarkdown, function(contents, file) { - return contents.replace(/\bhref=\\('|")(.+?)\\\1/g, function(_, quota, link) { - if (/\.md($|#)/.test(link) && !/^https?\:/.test(link)) { - let parts = link.split('#'); - parts[0] = parts[0].replace('.md', ''); + rExt: 'js', + parser: [ + parserMarkdown, + function(contents, file) { + return contents.replace(/\bhref=\\('|")(.+?)\\\1/g, function( + _, + quota, + link + ) { + if (/\.md($|#)/.test(link) && !/^https?\:/.test(link)) { + let parts = link.split('#'); + parts[0] = parts[0].replace('.md', ''); - if (parts[0][0] !== '/') { - parts[0] = path.resolve(path.dirname(file.subpath), parts[0]); - } + if (parts[0][0] !== '/') { + parts[0] = path.resolve(path.dirname(file.subpath), parts[0]); + } - return 'href=\\' + quota + parts.join('#') + '\\' + quota; - } + return 'href=\\' + quota + parts.join('#') + '\\' + quota; + } - return _; - }); - }], - isMod: true + return _; + }); + } + ], + isMod: true }); -fis.on('compile:parser', function (file) { - if (file.subpath === '/src/index.tsx') { - file.setContent(file.getContent().replace('@version', package.version)); - } +fis.on('compile:parser', function(file) { + if (file.subpath === '/src/index.tsx') { + file.setContent(file.getContent().replace('@version', package.version)); + } +}); + +fis.match('monaco-editor/esm/**.js', { + parser: fis.plugin('typescript', { + importHelpers: true, + esModuleInterop: true, + experimentalDecorators: true, + sourceMap: false + }), + preprocessor: fis.plugin('js-require-css') }); fis.match('{*.ts,*.jsx,*.tsx,/src/**.js,/src/**.ts}', { - parser: [fis.plugin('typescript', { - importHelpers: true, - esModuleInterop: true, - experimentalDecorators: true, - sourceMap: true + parser: [ + fis.plugin('typescript', { + importHelpers: true, + esModuleInterop: true, + experimentalDecorators: true, + sourceMap: true }), - function (content) { - return content.replace(/\b[a-zA-Z_0-9$]+\.__uri\s*\(/g, '__uri(') - }], - preprocessor: fis.plugin('js-require-css'), - isMod: true, - rExt: '.js' + function(content) { + return content.replace(/\b[a-zA-Z_0-9$]+\.__uri\s*\(/g, '__uri('); + } + ], + preprocessor: fis.plugin('js-require-css'), + isMod: true, + rExt: '.js' }); fis.match('*.html:jsx', { - parser: fis.plugin('typescript'), - rExt: '.js', - isMod: false -}); - -fis.match('monaco-editor/**.js', { - isMod: false, - standard: null -}); - -fis.match('/node_modules/monaco-editor/min/(**)', { - standard: false, - isMod: false, - packTo: null, - optimizer: false, - postprocessor: function (content, file) { - if (!file.isJsLike || /worker/.test(file.basename)) { - return content; - } - - content = content.replace(/\bself\.require\b/g, 'require || self.require'); - - return '(function(define, require) {\n' + content - + '\n})(this.monacaAmd && this.monacaAmd.define || this.define, this.monacaAmd && this.monacaAmd.require);'; - } -}); -fis.match('/node_modules/monaco-editor/min/**/loader.js', { - postprocessor: function (content) { - return '(function(self) {\n' + content + '\n}).call(this.monacaAmd || (this.monacaAmd = {}));'; - } + parser: fis.plugin('typescript'), + rExt: '.js', + isMod: false }); fis.hook('node_modules', { - shimProcess: false, - shimGlobal: false, - shimBuffer: false + shimProcess: false, + shimGlobal: false, + shimBuffer: false }); fis.hook('commonjs', { - extList: ['.js', '.jsx', '.tsx', '.ts'] + extList: ['.js', '.jsx', '.tsx', '.ts'] }); -fis.match('::package', { - postpackager: fis.plugin('loader', { - useInlineMap: false, - resourceType: 'mod' - }) -}) +fis.media('dev').match('::package', { + prepackager: fis.plugin('stand-alone-pack', { + '/pkg/editor.worker.js': 'monaco-editor/esm/vs/editor/editor.worker.js', + '/pkg/json.worker.js': 'monaco-editor/esm/vs/language/json/json.worker', + '/pkg/css.worker.js': 'monaco-editor/esm/vs/language/css/css.worker', + '/pkg/html.worker.js': 'monaco-editor/esm/vs/language/html/html.worker', + '/pkg/ts.worker.js': 'monaco-editor/esm/vs/language/typescript/ts.worker', -fis - .media('dev') - .match('/node_modules/**.js', { - packTo: '/pkg/npm.js' - }) - .match('monaco-editor/**.js', { - packTo: null - }); + // 替换这些文件里面的路径引用。 + // 如果不配置,源码中对于打包文件的引用是不正确的。 + 'replaceFiles': ['src/components/Editor.tsx'] + }), + postpackager: fis.plugin('loader', { + useInlineMap: false, + resourceType: 'mod' + }) +}); + +fis.media('dev').match('/node_modules/**.js', { + packTo: '/pkg/npm.js' +}); if (fis.project.currentMedia() === 'publish') { - const publishEnv = fis.media('publish'); - publishEnv.get('project.ignore').push( - 'lib/**' - ); - publishEnv.set('project.files', [ - '/scss/**', - '/src/**' - ]); + const publishEnv = fis.media('publish'); + publishEnv.get('project.ignore').push('lib/**'); + publishEnv.set('project.files', ['/scss/**', '/src/**']); - publishEnv.match('/scss/(**)', { - release: '/$1', - relative: true - }); + publishEnv.match('/scss/(**)', { + release: '/$1', + relative: true + }); - publishEnv.match('/src/(**)', { - release: '/$1', - relative: true - }); + publishEnv.match('/src/(**)', { + release: '/$1', + relative: true + }); - publishEnv.match('/node_modules/monaco-editor/min/(**)', { - release: '/thirds/monaco-editor/$1' - }); + publishEnv.match('/src/**.{jsx,tsx,js,ts}', { + parser: [ + fis.plugin('typescript', { + importHelpers: true, + sourceMap: true, + experimentalDecorators: true, + esModuleInterop: true + }), + function(contents) { + return contents.replace( + /(?:\w+\.)?\b__uri\s*\(\s*('|")(.*?)\1\s*\)/g, + function(_, quote, value) { + let str = quote + value + quote; + return ( + '(function(){try {return __uri(' + + str + + ')} catch(e) {return ' + + str + + '}})()' + ); + } + ); + } + ] + }); - publishEnv.match('/src/**.{jsx,tsx,js,ts}', { - parser: [ - fis.plugin('typescript', { - importHelpers: true, - sourceMap: true, - experimentalDecorators: true, - esModuleInterop: true - }), - function (contents) { - return contents.replace(/(?:\w+\.)?\b__uri\s*\(\s*('|")(.*?)\1\s*\)/g, function (_, quote, value) { - let str = quote + value + quote; - return '(function(){try {return __uri(' + str + ')} catch(e) {return ' + str + '}})()'; - }); - } - ] - }); + publishEnv.match('_*.scss', { + release: false + }); - publishEnv.match('_*.scss', { - release: false - }); - - publishEnv.match('*', { - deploy: fis.plugin('local-deliver', { - to: fis.get('options.d') || fis.get('options.desc') || './lib' - }) - }); - publishEnv.match('/src/**.{jsx,tsx,js,ts,svg}', { - isMod: false, - standard: false - }); - - publishEnv.match('/src/components/Editor.tsx', { - standard: 'builtin' - }); - - publishEnv.match('/src/**.{jsx,tsx,js,ts}', { - postprocessor: function (content, file) { - return content.replace(/^''/mg, '').replace(/\/\/# sourceMappingURL=\//g, '//# sourceMappingURL=./'); - } - }); - publishEnv.match('*.scss', { - postprocessor: function (content, file) { - return content.replace(/\/\*# sourceMappingURL=\//g, '/*# sourceMappingURL=./'); - } - }); - publishEnv.match('::package', { - postpackager: function (ret) { - Object.keys(ret.src).forEach(function (subpath) { - var file = ret.src[subpath]; - if (!file.isText()) { - return; - } - var content = file.getContent(); - if (subpath === '/src/components/Editor.tsx') { - content = content - .replace('require("node_modules/tslib/tslib")', 'require("tslib")') - .replace('require("node_modules/react/index")', 'require("react")') - .replace('require("node_modules/classnames/index")', 'require("classnames")') - .replace('require("src/themes/default.ts")', 'require("../themes/default.js")') - .replace('require("src/theme.tsx")', 'require("../theme.js")') - .replace(/('|")(\.\.\/thirds.*?)\1/g, function (_, quote, value) { - return '__uri(' + quote + value + quote + ')'; - }); - } else if (subpath === '/src/components/icons.tsx') { - content = content - .replace(/\.svg/g, ".js") - } else { - content = content.replace(/@require\s+(?:\.\.\/)?node_modules\//g, '@require '); - } - file.setContent(content); - }); - } - }); - // publishEnv.unhook('node_modules'); - publishEnv.hook('relative'); -} else if (fis.project.currentMedia() === 'publish-sdk') { - const env = fis.media('publish-sdk'); - - env.get('project.ignore').push( - 'sdk/**' - ); - env.set('project.files', [ - 'examples/sdk-placeholder.html' - ]); - - env.match('/{examples,scss}/(**)', { - release: '/$1', - }); - - env.match('*.map', { - release: false - }); - - env.match('/node_modules/(**)', { - release: '/thirds/$1' - }); - - env.match('/node_modules/(*)/dist/(**)', { - release: '/thirds/$1/$2' - }); - - env.match('/node_modules/monaco-editor/min/(**)', { - release: '/thirds/monaco-editor/$1' - }); - - env.match('*.scss', { - parser: fis.plugin('node-sass', { - sourceMap: false - }) - }); - - env.match('{*.ts,*.jsx,*.tsx,/src/**.js,/src/**.ts}', { - parser: [fis.plugin('typescript', { - importHelpers: true, - esModuleInterop: true, - experimentalDecorators: true, - sourceMap: false - }), - - function (content) { - return content.replace(/\b[a-zA-Z_0-9$]+\.__uri\s*\(/g, '__uri(') - }], - preprocessor: fis.plugin('js-require-css'), - isMod: true, - rExt: '.js' - }); - - env.match('/examples/sdk-mod.js', { - isMod: false - }); - - env.match('*.{js,jsx,ts,tsx}', { - optimizer: fis.plugin('uglify-js'), - moduleId: function (m, path) { - return fis.util.md5('amis-sdk' + path); - }, - }); - - env.match('/src/icons/**.svg', { - optimizer: fis.plugin('uglify-js'), - moduleId: function (m, path) { - return fis.util.md5('amis-sdk' + path); - }, - }); - - env.match('src/components/Editor.tsx', { - release: '/ide.js' - }); - - env.match('::package', { - packager: fis.plugin('deps-pack', { - 'sdk.js': [ - 'examples/sdk-mod.js', - 'examples/embed.tsx', - 'examples/embed.tsx:deps', - '!monaco-editor/**', - '!flv.js/**', - '!hls.js/**', - '!froala-editor/**', - '!src/components/RichText.tsx', - '!jquery/**', - '!zrender/**', - '!echarts/**', - '!docsearch.js/**', - ], - - 'rich-text.js': [ - 'src/components/RichText.tsx', - 'froala-editor/**', - 'jquery/**', - ], - - 'echarts.js': [ - 'zrender/**', - 'echarts/**', - ], - - 'rest.js': [ - '*.js', - '!monaco-editor/**', - '!flv.js/**', - '!hls.js/**', - '!froala-editor/**', - '!src/components/RichText.tsx', - '!jquery/**', - '!zrender/**', - '!echarts/**', - ], - }), - postpackager: [ - fis.plugin('loader', { - useInlineMap: false, - resourceType: 'mod' - }), - - require('./build/embed-packager') - ] - }); - - env.match('monaco-editor/**.js', { - isMod: false, - standard: null, - optimizer: null, - packTo: null - }); - - fis.on('compile:optimizer', function (file) { - if (file.isJsLike && file.isMod) { - var contents = file.getContent(); - - if (file.subpath === '/src/components/Editor.tsx') { - contents = contents.replace(/function\snoJsExt\(raw\)\s\{/, function() { - return `var _path = ''; - try { - throw new Error() - } catch (e) { - _path = (/((?:https?|file)\:.*)$/.test(e.stack) && RegExp.$1).replace(/\\/[^\\/]*$/, ''); - } - function noJsExt(raw) {`; - }) - .replace(/('|")(\.\/thirds.*?)\1/g, function(_, quote, value) { - return `_path + ${quote}${value.substring(1)}${quote}`; - }); - } - - if (typeof contents === 'string' && contents.substring(0, 7) === 'define(') { - contents = 'amis.' + contents; - - contents = contents.replace('function(require, exports, module)', 'function(require, exports, module, define)'); - - file.setContent(contents); - } - } - }); - - env.match('/examples/loader.ts', { - isMod: false - }); - - env.match('*', { - domain: '.', - deploy: [ - fis.plugin('skip-packed'), - function(_, modified, total, callback) { - var i = modified.length - 1; - var file; - - while ((file = modified[i--])) { - if (file.skiped || /\.map$/.test(file.subpath)) { - modified.splice(i + 1, 1); - } - } - - i = total.length - 1; - while ((file = total[i--])) { - if (file.skiped || /\.map$/.test(file.subpath)) { - total.splice(i + 1, 1); - } - } - - callback(); - }, - fis.plugin('local-deliver', { - to: './sdk' - }) - ] - }); -} else if (fis.project.currentMedia() === 'gh-pages') { - const ghPages = fis.media('gh-pages'); - - ghPages.match('/docs/**.md', { - rExt: 'js', - isMod: true, - useHash: true, - parser: [parserMarkdown, function(contents, file) { - return contents.replace(/\bhref=\\('|")(.+?)\\\1/g, function(_, quota, link) { - if (/\.md($|#)/.test(link) && !/^https?\:/.test(link)) { - let parts = link.split('#'); - parts[0] = parts[0].replace('.md', ''); - - if (parts[0][0] !== '/') { - parts[0] = path.resolve(path.dirname(file.subpath), parts[0]); - } - - return 'href=\\' + quota + '/amis' + parts.join('#') + '\\' + quota; - } - - return _; - }); - }], - }); - - ghPages.match('/node_modules/(**)', { - release: '/n/$1' - }); - - ghPages.match('/examples/(**)', { - release: '/$1' - }); - - ghPages.match('/{examples,docs}/**', { - preprocessor: function(contents, file) { - if (!file.isText() || typeof contents !== 'string') { - return contents; - } - - return contents - .replace(/(\\?(?:'|"))((?:get|post|delete|put)\:)?\/api\/mock2?/ig, function(_, qutoa, method) { - return qutoa + (method || '') + 'https://houtai.baidu.com/api/mock2'; - }) - .replace(/(\\?(?:'|"))((?:get|post|delete|put)\:)?\/api\/sample/ig, function(_, qutoa, method) { - return qutoa + (method || '') + 'https://houtai.baidu.com/api/sample'; - }); - } + publishEnv.match('*', { + deploy: fis.plugin('local-deliver', { + to: fis.get('options.d') || fis.get('options.desc') || './lib' }) - - ghPages.match('mock/**.{json,js,conf}', { - release: false - }); - - ghPages.match('::package', { - packager: fis.plugin('deps-pack', { - 'pkg/npm.js': [ - '/examples/mod.js', - 'node_modules/**.js', - '!monaco-editor/**', - '!flv.js/**', - '!hls.js/**', - '!amis/lib/editor/**', - '!froala-editor/**', - '!amis/lib/components/RichText.js', - '!jquery/**', - '!zrender/**', - '!echarts/**', - ], - 'pkg/rich-text.js': [ - 'amis/lib/components/RichText.js', - 'froala-editor/**', - 'jquery/**' - ], - 'pkg/echarts.js': [ - 'zrender/**', - 'echarts/**' - ], - 'pkg/api-mock.js': [ - 'mock/*.ts' - ], - 'pkg/app.js': [ - '/examples/components/App.jsx', - '/examples/components/App.jsx:deps' - ], - 'pkg/rest.js': [ - '**.{js,jsx,ts,tsx}', - '!static/mod.js', - '!monaco-editor/**', - '!echarts/**', - '!flv.js/**', - '!hls.js/**', - '!froala-editor/**', - '!jquery/**', - '!amis/lib/components/RichText.js', - '!zrender/**', - '!echarts/**', - ], + }); + publishEnv.match('/src/**.{jsx,tsx,js,ts,svg}', { + isMod: false, + standard: false + }); - 'pkg/npm.css': [ - 'node_modules/*/**.css', - '!monaco-editor/**', - ], + publishEnv.match('/src/**.{jsx,tsx,js,ts}', { + postprocessor: function(content, file) { + return content + .replace(/^''/gm, '') + .replace(/\/\/# sourceMappingURL=\//g, '//# sourceMappingURL=./'); + } + }); + publishEnv.match('*.scss', { + postprocessor: function(content, file) { + return content.replace( + /\/\*# sourceMappingURL=\//g, + '/*# sourceMappingURL=./' + ); + } + }); + publishEnv.match('::package', { + postpackager: function(ret) { + Object.keys(ret.src).forEach(function(subpath) { + var file = ret.src[subpath]; + if (!file.isText()) { + return; + } + var content = file.getContent(); + if (subpath === '/src/components/icons.tsx') { + content = content.replace(/\.svg/g, '.js'); + } else { + content = content.replace( + /@require\s+(?:\.\.\/)?node_modules\//g, + '@require ' + ); + } + file.setContent(content); + }); + } + }); + // publishEnv.unhook('node_modules'); + publishEnv.hook('relative'); +} else if (fis.project.currentMedia() === 'publish-sdk') { + const env = fis.media('publish-sdk'); - // css 打包 - 'pkg/style.css': [ - '*.scss', - '*.css', - '!monaco-editor/**', - '!/scss/themes/*.scss', - // 要切换主题,不能打在一起。'/scss/*.scss', - '!/examples/style.scss', - '/examples/style.scss', // 让它在最下面 - ] - }), + env.get('project.ignore').push('sdk/**'); + env.set('project.files', ['examples/sdk-placeholder.html']); - postpackager: [fis.plugin('loader', { - useInlineMap: false, - resourceType: 'mod' - }), function(ret) { - const indexHtml = ret.src['/examples/index.html']; - const appJs = ret.src['/examples/components/App.jsx']; - const DocJs = ret.src['/examples/components/Doc.jsx']; + env.match('/{examples,scss}/(**)', { + release: '/$1' + }); - const pages = []; - const source = [appJs.getContent(), DocJs.getContent()].join('\n'); - source.replace(/\bpath\b\s*\:\s*('|")(.*?)\1/g, function(_, qutoa, path) { - if (path === "*") { - return; - } - - pages.push(path.replace(/^\//, '')); - return _; - }); - - const contents = indexHtml.getContent(); - pages.forEach(function(path) { - const file = fis.file(fis.project.getProjectPath(), '/examples/' + path + '.html'); - file.setContent(contents); - ret.pkg[file.getId()] = file; - }); - }] - }); - - ghPages.match('*.{css,less,scss}', { - optimizer: fis.plugin('clean-css'), - useHash: true - }); - - ghPages.match('::image', { - useHash: true - }); - - ghPages.match('*.{js,ts,tsx,jsx}', { - optimizer: fis.plugin('uglify-js'), - useHash: true - }); - - ghPages.match('*.map', { - release: false, - url: 'null', - useHash: false - }); - ghPages.match('{*.jsx,*.tsx,*.ts}', { - moduleId: function (m, path) { - return fis.util.md5('amis' + path); - }, - parser: fis.plugin('typescript', { - sourceMap: false, - importHelpers: true, - esModuleInterop: true - }) - }); - ghPages.match('*', { - domain: 'https://bce.bdstatic.com/fex/amis-gh-pages', - deploy: [ - fis.plugin('skip-packed'), - fis.plugin('local-deliver', { - to: './gh-pages' - }) - ] - }); - ghPages.match('{*.min.js,monaco-editor/**.js}', { - optimizer: null - }); - ghPages.match('monaco-editor/(**)', { - useHash: false, - release: '/n/monaco-editor/0.17.1/$1' - }); + env.match('*.map', { + release: false + }); + + env.match('/node_modules/(**)', { + release: '/thirds/$1' + }); + + env.match('/node_modules/(*)/dist/(**)', { + release: '/thirds/$1/$2' + }); + + env.match('*.scss', { + parser: fis.plugin('node-sass', { + sourceMap: false + }) + }); + + env.match('{*.ts,*.jsx,*.tsx,/src/**.js,/src/**.ts}', { + parser: [ + fis.plugin('typescript', { + importHelpers: true, + esModuleInterop: true, + experimentalDecorators: true, + sourceMap: false + }), + + function(content) { + return content.replace(/\b[a-zA-Z_0-9$]+\.__uri\s*\(/g, '__uri('); + } + ], + preprocessor: fis.plugin('js-require-css'), + isMod: true, + rExt: '.js' + }); + + env.match('/examples/sdk-mod.js', { + isMod: false + }); + + env.match('*.{js,jsx,ts,tsx}', { + optimizer: fis.plugin('uglify-js'), + moduleId: function(m, path) { + return fis.util.md5('amis-sdk' + path); + } + }); + + env.match('/src/icons/**.svg', { + optimizer: fis.plugin('uglify-js'), + moduleId: function(m, path) { + return fis.util.md5('amis-sdk' + path); + } + }); + + env.match('::package', { + packager: fis.plugin('deps-pack', { + 'sdk.js': [ + 'examples/sdk-mod.js', + 'examples/embed.tsx', + 'examples/embed.tsx:deps', + '!monaco-editor/**', + '!flv.js/**', + '!hls.js/**', + '!froala-editor/**', + '!src/components/RichText.tsx', + '!jquery/**', + '!zrender/**', + '!echarts/**', + '!docsearch.js/**' + ], + + 'rich-text.js': [ + 'src/components/RichText.tsx', + 'froala-editor/**', + 'jquery/**' + ], + + 'charts.js': ['zrender/**', 'echarts/**'], + + 'editor.js': [ + 'monaco-editor/esm/vs/editor/editor.main.js', + 'monaco-editor/esm/vs/editor/editor.main.js:deps' + ], + + 'rest.js': [ + '*.js', + '!monaco-editor/**', + '!flv.js/**', + '!hls.js/**', + '!froala-editor/**', + '!src/components/RichText.tsx', + '!jquery/**', + '!zrender/**', + '!echarts/**' + ] + }), + postpackager: [ + fis.plugin('loader', { + useInlineMap: false, + resourceType: 'mod' + }), + + require('./build/embed-packager') + ] + }); + + fis.on('compile:optimizer', function(file) { + if (file.isJsLike && file.isMod) { + var contents = file.getContent(); + + // 替换 worker 地址的路径,让 sdk 加载同目录下的文件。 + // 如果 sdk 和 worker 不是部署在一个地方,请通过指定 MonacoEnvironment.getWorkerUrl + if (file.subpath === '/src/components/Editor.tsx') { + contents = contents.replace( + /function\sfilterUrl\(url\)\s\{\s*return\s*url;/m, + function() { + return `var _path = ''; + try { + throw new Error() + } catch (e) { + _path = (/((?:https?|file)\:.*)$/.test(e.stack) && RegExp.$1).replace(/\\/[^\\/]*$/, ''); + } + function filterUrl(url) { + return _path + url.substring(1);`; + } + ); + } + + if ( + typeof contents === 'string' && + contents.substring(0, 7) === 'define(' + ) { + contents = 'amis.' + contents; + + contents = contents.replace( + 'function(require, exports, module)', + 'function(require, exports, module, define)' + ); + + file.setContent(contents); + } + } + }); + + env.match('/examples/loader.ts', { + isMod: false + }); + + env.match('::packager', { + prepackager: [ + fis.plugin('stand-alone-pack', { + '/pkg/editor.worker.js': 'monaco-editor/esm/vs/editor/editor.worker.js', + '/pkg/json.worker.js': 'monaco-editor/esm/vs/language/json/json.worker', + '/pkg/css.worker.js': 'monaco-editor/esm/vs/language/css/css.worker', + '/pkg/html.worker.js': 'monaco-editor/esm/vs/language/html/html.worker', + '/pkg/ts.worker.js': + 'monaco-editor/esm/vs/language/typescript/ts.worker', + + // 替换这些文件里面的路径引用。 + // 如果不配置,源码中对于打包文件的引用是不正确的。 + 'replaceFiles': ['src/components/Editor.tsx'] + }), + function(ret) { + const root = fis.project.getProjectPath(); + [ + '/pkg/editor.worker.js', + '/pkg/json.worker.js', + '/pkg/css.worker.js', + '/pkg/html.worker.js', + '/pkg/ts.worker.js' + ].forEach(function(pkgFile) { + const packedFile = fis.file.wrap(path.join(root, pkgFile)); + const file = ret.pkg[packedFile.subpath]; + let contents = file.getContent(); + + contents = contents.replace(/amis\.define/g, 'define'); + file.setContent(contents); + }); + } + ] + }); + + env.match('*', { + domain: '.', + deploy: [ + fis.plugin('skip-packed'), + function(_, modified, total, callback) { + var i = modified.length - 1; + var file; + + while ((file = modified[i--])) { + if (file.skiped || /\.map$/.test(file.subpath)) { + modified.splice(i + 1, 1); + } + } + + i = total.length - 1; + while ((file = total[i--])) { + if (file.skiped || /\.map$/.test(file.subpath)) { + total.splice(i + 1, 1); + } + } + + callback(); + }, + fis.plugin('local-deliver', { + to: './sdk' + }) + ] + }); +} else if (fis.project.currentMedia() === 'gh-pages') { + const ghPages = fis.media('gh-pages'); + + ghPages.match('/docs/**.md', { + rExt: 'js', + isMod: true, + useHash: true, + parser: [ + parserMarkdown, + function(contents, file) { + return contents.replace(/\bhref=\\('|")(.+?)\\\1/g, function( + _, + quota, + link + ) { + if (/\.md($|#)/.test(link) && !/^https?\:/.test(link)) { + let parts = link.split('#'); + parts[0] = parts[0].replace('.md', ''); + + if (parts[0][0] !== '/') { + parts[0] = path.resolve(path.dirname(file.subpath), parts[0]); + } + + return 'href=\\' + quota + '/amis' + parts.join('#') + '\\' + quota; + } + + return _; + }); + } + ] + }); + + ghPages.match('/node_modules/(**)', { + release: '/n/$1' + }); + + ghPages.match('/examples/(**)', { + release: '/$1' + }); + + ghPages.match('/{examples,docs}/**', { + preprocessor: function(contents, file) { + if (!file.isText() || typeof contents !== 'string') { + return contents; + } + + return contents + .replace( + /(\\?(?:'|"))((?:get|post|delete|put)\:)?\/api\/mock2?/gi, + function(_, qutoa, method) { + return ( + qutoa + (method || '') + 'https://houtai.baidu.com/api/mock2' + ); + } + ) + .replace( + /(\\?(?:'|"))((?:get|post|delete|put)\:)?\/api\/sample/gi, + function(_, qutoa, method) { + return ( + qutoa + (method || '') + 'https://houtai.baidu.com/api/sample' + ); + } + ); + } + }); + + ghPages.match('mock/**.{json,js,conf}', { + release: false + }); + + ghPages.match('::package', { + packager: fis.plugin('deps-pack', { + 'pkg/npm.js': [ + '/examples/mod.js', + 'node_modules/**.js', + '!monaco-editor/**', + '!flv.js/**', + '!hls.js/**', + '!froala-editor/**', + '!amis/lib/components/RichText.js', + '!jquery/**', + '!zrender/**', + '!echarts/**' + ], + 'pkg/rich-text.js': [ + 'amis/lib/components/RichText.js', + 'froala-editor/**', + 'jquery/**' + ], + 'pkg/charts.js': ['zrender/**', 'echarts/**'], + 'pkg/api-mock.js': ['mock/*.ts'], + 'pkg/app.js': [ + '/examples/components/App.jsx', + '/examples/components/App.jsx:deps' + ], + + 'pkg/editor.js': [ + 'monaco-editor/esm/vs/editor/editor.main.js', + 'monaco-editor/esm/vs/editor/editor.main.js:deps' + ], + + 'pkg/rest.js': [ + '**.{js,jsx,ts,tsx}', + '!static/mod.js', + '!monaco-editor/**', + '!echarts/**', + '!flv.js/**', + '!hls.js/**', + '!froala-editor/**', + '!jquery/**', + '!amis/lib/components/RichText.js', + '!zrender/**', + '!echarts/**' + ], + + 'pkg/npm.css': ['node_modules/*/**.css', '!monaco-editor/**'], + + // css 打包 + 'pkg/style.css': [ + '*.scss', + '*.css', + '!/scss/themes/*.scss', + // 要切换主题,不能打在一起。'/scss/*.scss', + '!/examples/style.scss', + '/examples/style.scss' // 让它在最下面 + ] + }), + + postpackager: [ + fis.plugin('loader', { + useInlineMap: false, + resourceType: 'mod' + }), + function(ret) { + const indexHtml = ret.src['/examples/index.html']; + const appJs = ret.src['/examples/components/App.jsx']; + const DocJs = ret.src['/examples/components/Doc.jsx']; + + const pages = []; + const source = [appJs.getContent(), DocJs.getContent()].join('\n'); + source.replace(/\bpath\b\s*\:\s*('|")(.*?)\1/g, function( + _, + qutoa, + path + ) { + if (path === '*') { + return; + } + + pages.push(path.replace(/^\//, '')); + return _; + }); + + const contents = indexHtml.getContent(); + pages.forEach(function(path) { + const file = fis.file( + fis.project.getProjectPath(), + '/examples/' + path + '.html' + ); + file.setContent(contents); + ret.pkg[file.getId()] = file; + }); + } + ] + }); + + ghPages.match('*.{css,less,scss}', { + optimizer: fis.plugin('clean-css'), + useHash: true + }); + + ghPages.match('::image', { + useHash: true + }); + + ghPages.match('*.{js,ts,tsx,jsx}', { + optimizer: fis.plugin('uglify-js'), + useHash: true + }); + + ghPages.match('*.map', { + release: false, + url: 'null', + useHash: false + }); + ghPages.match('{*.jsx,*.tsx,*.ts}', { + moduleId: function(m, path) { + return fis.util.md5('amis' + path); + }, + parser: fis.plugin('typescript', { + sourceMap: false, + importHelpers: true, + esModuleInterop: true + }) + }); + ghPages.match('*', { + domain: 'https://bce.bdstatic.com/fex/amis-gh-pages', + deploy: [ + fis.plugin('skip-packed'), + fis.plugin('local-deliver', { + to: './gh-pages' + }) + ] + }); + ghPages.match('{*.min.js}', { + optimizer: null + }); } diff --git a/gh-pages/audio.html b/gh-pages/audio.html index 1a275fd88..8c83093d9 100644 --- a/gh-pages/audio.html +++ b/gh-pages/audio.html @@ -9,7 +9,7 @@ - + @@ -24,11 +24,11 @@
- - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + \n\n\n
文档内容有误?欢迎大家一起来编写,文档地址:/docs/renderers/Form/Color.md
", + "html": "

Color

颜色选择器。

\n\n
\n\n\n
文档内容有误?欢迎大家一起来编写,文档地址:/docs/renderers/Form/Color.md
", "toc": { "label": "目录", "type": "toc", diff --git a/gh-pages/docs/renderers/Form/Combo.html b/gh-pages/docs/renderers/Form/Combo.html index 1a275fd88..8c83093d9 100644 --- a/gh-pages/docs/renderers/Form/Combo.html +++ b/gh-pages/docs/renderers/Form/Combo.html @@ -9,7 +9,7 @@ - + @@ -24,11 +24,11 @@
- - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + \n\n\n
文档内容有误?欢迎大家一起来编写,文档地址:/docs/renderers/Form/Tabs.md
", + "toc": { + "label": "目录", + "type": "toc", + "children": [ + { + "label": "Tabs(FormItem)", + "fragment": "tabs-formitem-", + "fullPath": "#tabs-formitem-", + "level": 3 + } + ], + "level": 0 + } + }; + +}); diff --git a/gh-pages/docs/renderers/Form/Tabs_fa24b38.js b/gh-pages/docs/renderers/Form/Tabs_fa24b38.js deleted file mode 100644 index 641d3f3b6..000000000 --- a/gh-pages/docs/renderers/Form/Tabs_fa24b38.js +++ /dev/null @@ -1,20 +0,0 @@ -define('docs/renderers/Form/Tabs.md', function(require, exports, module) { - - module.exports = { - "html": "

Tabs(FormItem)

多个输入框也可以通过选项卡来分组。

\n\n
\n\n\n
文档内容有误?欢迎大家一起来编写,文档地址:/docs/renderers/Form/Tabs.md
", - "toc": { - "label": "目录", - "type": "toc", - "children": [ - { - "label": "Tabs(FormItem)", - "fragment": "tabs-formitem-", - "fullPath": "#tabs-formitem-", - "level": 3 - } - ], - "level": 0 - } - }; - -}); diff --git a/gh-pages/docs/renderers/Form/Tag.html b/gh-pages/docs/renderers/Form/Tag.html index 1a275fd88..8c83093d9 100644 --- a/gh-pages/docs/renderers/Form/Tag.html +++ b/gh-pages/docs/renderers/Form/Tag.html @@ -9,7 +9,7 @@ - + @@ -24,11 +24,11 @@
- - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + \n\n\n
文档内容有误?欢迎大家一起来编写,文档地址:/docs/renderers/Tabs.md
", + "toc": { + "label": "目录", + "type": "toc", + "children": [ + { + "label": "Tabs", + "fragment": "tabs", + "fullPath": "#tabs", + "level": 2 + } + ], + "level": 0 + } + }; + +}); diff --git a/gh-pages/docs/renderers/Tabs_cb8d10a.js b/gh-pages/docs/renderers/Tabs_cb8d10a.js deleted file mode 100644 index 6f3db99c3..000000000 --- a/gh-pages/docs/renderers/Tabs_cb8d10a.js +++ /dev/null @@ -1,20 +0,0 @@ -define('docs/renderers/Tabs.md', function(require, exports, module) { - - module.exports = { - "html": "

Tabs

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
属性名类型默认值说明
typestring"tabs"指定为 Tabs 渲染器
classNamestring外层 Dom 的类名
tabsClassNamestringTabs Dom 的类名
tabsArraytabs 内容
tabs[x].titlestringTab 标题
tabs[x].iconiconTab 的图标
tabs[x].tabContainer内容区
tabs[x].hashstring设置以后将跟 url 的 hash 对应
tabs[x].reloadboolean设置以后内容每次都会重新渲染,对于 crud 的重新拉取很有用
tabs[x].unmountOnExitboolean每次退出都会销毁当前tab栏内容
tabs[x].classNamestring"bg-white b-l b-r b-b wrapper-md"Tab 区域样式
\n
\n\n\n
文档内容有误?欢迎大家一起来编写,文档地址:/docs/renderers/Tabs.md
", - "toc": { - "label": "目录", - "type": "toc", - "children": [ - { - "label": "Tabs", - "fragment": "tabs", - "fullPath": "#tabs", - "level": 2 - } - ], - "level": 0 - } - }; - -}); diff --git a/gh-pages/docs/renderers/Tasks.html b/gh-pages/docs/renderers/Tasks.html index 1a275fd88..8c83093d9 100644 --- a/gh-pages/docs/renderers/Tasks.html +++ b/gh-pages/docs/renderers/Tasks.html @@ -9,7 +9,7 @@ - + @@ -24,11 +24,11 @@
- - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + - - - - + + + + + ",u=c.removeChild(c.firstChild)):"string"==typeof c.is?u=u.createElement(s,{is:c.is}):(u=u.createElement(s),"select"===s&&(s=u,c.multiple?s.multiple=!0:c.size&&(s.size=c.size))):u=u.createElementNS(o,s),c=u,c[Ko]=n,c[$o]=a,Nu(c,t,!1,!1),t.stateNode=c,s=i,n=a;var f=l,d=$t(s,n);switch(s){case"iframe":case"object":case"embed":Ut("load",c),l=n;break;case"video":case"audio":for(l=0;la.tailExpiration&&l>1&&(t.effectTag|=64,i=!0,ml(a,!1),t.expirationTime=t.childExpirationTime=l-1);a.isBackwards?(c.sibling=t.child,t.child=c):(l=a.last,null!==l?l.sibling=c:t.child=c,a.last=c)}if(null!==a.tail){0===a.tailExpiration&&(a.tailExpiration=rc()+500),l=a.tail,a.rendering=l,a.tail=l.sibling,a.lastEffect=t.lastEffect,l.sibling=null,a=kc.current,a=i?1&a|2:1&a,Mn(kc,a,t),t=l;break e}break;case 20:break;case 21:break;default:throw Error(r(156,t.tag))}t=null}if(a=cs,1===ss||1!==a.childExpirationTime){for(i=0,l=a.child;null!==l;)n=l.expirationTime,c=l.childExpirationTime,n>i&&(i=n),c>i&&(i=c),l=l.sibling;a.childExpirationTime=i}if(null!==t)return t;null!==e&&0===(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=cs.firstEffect),null!==cs.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=cs.firstEffect),e.lastEffect=cs.lastEffect),1e?t:e}function Zl(e){var t=Wn();return jn(99,Jl.bind(null,e,t)),null}function Jl(e,t){do ta();while(null!==Ss);if((os&(Jc|es))!==Gc)throw Error(r(327));var n=e.finishedWork,l=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(r(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var a=Gl(n);if(e.firstPendingTime=a,l<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:l<=e.firstSuspendedTime&&(e.firstSuspendedTime=l-1),l<=e.lastPingedTime&&(e.lastPingedTime=0),l<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===us&&(cs=us=null,ss=0),1u&&(s=u,u=o,o=s),s=Zt(w,o),f=Zt(w,u),s&&f&&(1!==x.rangeCount||x.anchorNode!==s.node||x.anchorOffset!==s.offset||x.focusNode!==f.node||x.focusOffset!==f.offset)&&(E=E.createRange(),E.setStart(s.node,s.offset),x.removeAllRanges(),o>u?(x.addRange(E),x.extend(f.node,f.offset)):(E.setEnd(f.node,f.offset),x.addRange(E)))))),E=[];for(x=w;x=x.parentNode;)1===x.nodeType&&E.push({element:x,left:x.scrollLeft,top:x.scrollTop});for("function"==typeof w.focus&&w.focus(),w=0;w97?97:Cs;return Cs=90,jn(e,na)}}function na(){if(null===Ss)return!1;var e=Ss;if(Ss=null,(os&(Jc|es))!==Gc)throw Error(r(331));var t=os;for(os|=es,e=e.current.firstEffect;null!==e;){try{var n=e;if(0!==(512&n.effectTag))switch(n.tag){case 0:case 11:case 15:wl(128,0,n),wl(0,64,n)}}catch(l){if(null===e)throw Error(r(330));la(e,l)}n=e.nextEffect,e.nextEffect=null,e=n}return os=t,Qn(),!0}function ra(e,t,n){t=gl(n,t),t=Nl(e,t,1073741823),ar(e,t),e=Ul(e,1073741823),null!==e&&Dl(e)}function la(e,t){if(3===e.tag)ra(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){ra(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===xs||!xs.has(r))){e=gl(t,e),e=zl(n,e,1073741823),ar(n,e),n=Ul(n,1073741823),null!==n&&Dl(n);break}}n=n.return}}function aa(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),us===e&&ss===n?fs===as||fs===ls&&1073741823===ps&&rc()-yst||(e.lastPingedTime=n,e.finishedExpirationTime===n&&(e.finishedExpirationTime=0,e.finishedWork=null),Dl(e)))}function ia(e,t){var n=e.stateNode;null!==n&&n.delete(t),t=0,0===t&&(t=Ml(),t=Il(t,e,null)),e=Ul(e,t),null!==e&&Dl(e)}function oa(e){if("undefined"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);Ms=function(e){try{t.onCommitFiberRoot(n,e,void 0,64===(64&e.current.effectTag))}catch(r){}},Is=function(e){try{t.onCommitFiberUnmount(n,e)}catch(r){}}}catch(r){}return!0}function ua(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childExpirationTime=this.expirationTime=0,this.alternate=null}function ca(e,t,n,r){return new ua(e,t,n,r)}function sa(e){return e=e.prototype,!(!e||!e.isReactComponent)}function fa(e){if("function"==typeof e)return sa(e)?1:0;if(void 0!==e&&null!==e){if(e=e.$$typeof,e===ui)return 11;if(e===fi)return 14}return 2}function da(e,t){var n=e.alternate;return null===n?(n=ca(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.effectTag=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childExpirationTime=e.childExpirationTime,n.expirationTime=e.expirationTime,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{expirationTime:t.expirationTime,firstContext:t.firstContext,responders:t.responders},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function pa(e,t,n,l,a,i){var o=2;if(l=e,"function"==typeof e)sa(e)&&(o=1);else if("string"==typeof e)o=5;else e:switch(e){case ni:return ma(n.children,a,i,t);case oi:o=8,a|=7;break;case ri:o=8,a|=1;break;case li:return e=ca(12,n,t,8|a),e.elementType=li,e.type=li,e.expirationTime=i,e;case ci:return e=ca(13,n,t,a),e.type=ci,e.elementType=ci,e.expirationTime=i,e;case si:return e=ca(19,n,t,a),e.elementType=si,e.expirationTime=i,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case ai:o=10;break e;case ii:o=9;break e;case ui:o=11;break e;case fi:o=14;break e;case di:o=16,l=null;break e}throw Error(r(130,null==e?e:typeof e,""))}return t=ca(o,n,t,a),t.elementType=e,t.type=l,t.expirationTime=i,t}function ma(e,t,n,r){return e=ca(7,e,r,t),e.expirationTime=n,e}function ha(e,t,n){return e=ca(6,e,null,t),e.expirationTime=n,e}function ga(e,t,n){return t=ca(4,null!==e.children?e.children:[],e.key,t),t.expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function va(e,t,n){this.tag=t,this.current=null,this.containerInfo=e,this.pingCache=this.pendingChildren=null,this.finishedExpirationTime=0,this.finishedWork=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=90,this.lastExpiredTime=this.lastPingedTime=this.nextKnownPendingLevel=this.lastSuspendedTime=this.firstSuspendedTime=this.firstPendingTime=0}function ya(e,t){var n=e.firstSuspendedTime;return e=e.lastSuspendedTime,0!==n&&n>=t&&t>=e}function ba(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;t>n&&(e.firstSuspendedTime=t),(r>t||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function ka(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function wa(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function Ea(e,t,n,l){var a=t.current,i=Ml(),o=sc.suspense;i=Il(i,a,o);e:if(n){n=n._reactInternalFiber;t:{if(tt(n)!==n||1!==n.tag)throw Error(r(170));var u=n;do{switch(u.tag){case 3:u=u.stateNode.context;break t;case 1:if(On(u.type)){u=u.stateNode.__reactInternalMemoizedMergedChildContext;break t}}u=u.return}while(null!==u);throw Error(r(171))}if(1===n.tag){var c=n.type;if(On(c)){n=Rn(n,c,u);break e}}n=u}else n=Fu;return null===t.context?t.context=n:t.pendingContext=n,t=rr(i,o),t.payload={element:e},l=void 0===l?null:l,null!==l&&(t.callback=l),ar(a,t),Ol(a,i),i}function xa(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function Ta(e,t){e=e.memoizedState,null!==e&&null!==e.dehydrated&&e.retryTime