From 1240887eb24947ebf374d84cf1b8f43be23c156d Mon Sep 17 00:00:00 2001 From: liaoxuezhi Date: Sat, 13 Jul 2019 20:43:15 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E5=88=86=E6=8E=A7=E4=BB=B6=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E5=8F=96=E5=80=BC=E9=BB=98=E8=AE=A4=E4=B8=8D=E8=B5=B0?= =?UTF-8?q?=20html=20=E8=BD=AC=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderers/Form/DiffEditor.tsx | 4 ++-- src/renderers/Image.tsx | 2 +- src/renderers/QRCode.tsx | 2 +- src/renderers/Video.tsx | 2 +- src/renderers/Wizard.tsx | 9 --------- src/utils/tpl-builtin.ts | 2 +- src/utils/tpl.ts | 6 +++--- 7 files changed, 9 insertions(+), 18 deletions(-) diff --git a/src/renderers/Form/DiffEditor.tsx b/src/renderers/Form/DiffEditor.tsx index 20de7f08..bef55926 100644 --- a/src/renderers/Form/DiffEditor.tsx +++ b/src/renderers/Form/DiffEditor.tsx @@ -96,7 +96,7 @@ export class DiffEditor extends React.Component{ if (this.originalEditor && diffValue && (diffValue !== prevProps.diffValue || data !== prevProps.data)) { this.originalEditor.getModel().setValue(/^\$(?:([a-z0-9_.]+)|{.+})$/.test(diffValue as string) - ? filter(normalizeValue(diffValue || ''), data) : normalizeValue(diffValue)); + ? filter(normalizeValue(diffValue || ''), data, '| raw') : normalizeValue(diffValue)); } if (this.modifiedEditor && value && value !== prevProps.value && !this.state.focused) { @@ -127,7 +127,7 @@ export class DiffEditor extends React.Component{ this.editor.setModel({ original: this.monaco.editor.createModel(/^\$(?:([a-z0-9_.]+)|{.+})$/.test(diffValue as string) - ? filter(normalizeValue(diffValue || ''), data) : normalizeValue(diffValue), language), + ? filter(normalizeValue(diffValue || ''), data, '| raw') : normalizeValue(diffValue), language), modified: this.monaco.editor.createModel(normalizeValue(value), language) }); diff --git a/src/renderers/Image.tsx b/src/renderers/Image.tsx index 516c7e2f..b84c3f5f 100644 --- a/src/renderers/Image.tsx +++ b/src/renderers/Image.tsx @@ -33,7 +33,7 @@ export class ImageField extends React.Component { src, } = this.props; - const finnalSrc = src ? filter(src, data) : ''; + const finnalSrc = src ? filter(src, data, '| raw') : ''; let value = this.props.value; return ( diff --git a/src/renderers/QRCode.tsx b/src/renderers/QRCode.tsx index 91724523..074c68b2 100644 --- a/src/renderers/QRCode.tsx +++ b/src/renderers/QRCode.tsx @@ -39,7 +39,7 @@ export default class QRCode extends React.Component {
{value ? ( { let source = this.props.src || (name && data && (data as any)[name]) || (amisConfig && amisConfig.value); const videoState = this.state.videoState; let highlight = videoState.duration && minVideoDuration && videoState.duration < minVideoDuration; - let src = filter(source, data); + let src = filter(source, data, '| raw'); let sourceNode; if ((src && /\.flv(?:$|\?)/.test(src) && isLive) || videoType === 'video/x-flv') { diff --git a/src/renderers/Wizard.tsx b/src/renderers/Wizard.tsx index f2e72c63..7bb7e6c9 100644 --- a/src/renderers/Wizard.tsx +++ b/src/renderers/Wizard.tsx @@ -1,5 +1,4 @@ import React from 'react'; -import PropTypes from 'prop-types'; import Scoped, {ScopedContext, IScopedContext} from '../Scoped'; import {Renderer, RendererProps} from '../factory'; import {ServiceStore, IServiceStore} from '../store/service'; @@ -11,14 +10,6 @@ import {createObject, until, isVisible} from '../utils/helper'; import {isApiOutdated, isEffectiveApi} from '../utils/api'; import {IFormStore} from '../store/form'; -export type TabProps = Schema & { - title?: string; // 标题 - icon?: string; - hash?: string; // 通过 hash 来控制当前选择 - tab: Schema; - className: string; -}; - export interface WizardProps extends RendererProps { store: IServiceStore; readOnly?: boolean; diff --git a/src/utils/tpl-builtin.ts b/src/utils/tpl-builtin.ts index f41e2e02..d7e9d49f 100644 --- a/src/utils/tpl-builtin.ts +++ b/src/utils/tpl-builtin.ts @@ -463,5 +463,5 @@ export function dataMapping(to: any, from: PlainObject): any { reigsterTplEnginer("builtin", { test: str => !!~str.indexOf("$"), - compile: (str: string, data: object) => tokenize(str, data) + compile: (str: string, data: object, defaultFilter = '| html') => tokenize(str, data, defaultFilter) }); diff --git a/src/utils/tpl.ts b/src/utils/tpl.ts index 473bb543..5e2d93d3 100644 --- a/src/utils/tpl.ts +++ b/src/utils/tpl.ts @@ -1,6 +1,6 @@ export interface Enginer { test: (tpl:string) => boolean; - compile: (tpl:string, data:object) => string; + compile: (tpl:string, data:object, ...rest:Array) => string; } const enginers:{ @@ -11,7 +11,7 @@ export function reigsterTplEnginer(name:string, enginer:Enginer) { enginers[name] = enginer; } -export function filter(tpl: string, data: object = {}): string { +export function filter(tpl: string, data: object = {}, ...rest:Array): string { if (!tpl || typeof tpl !== 'string') { return ''; } @@ -20,7 +20,7 @@ export function filter(tpl: string, data: object = {}): string { for (let i = 0, len = keys.length; i < len; i++) { let enginer = enginers[keys[i]]; if (enginer.test(tpl)) { - return enginer.compile(tpl, data); + return enginer.compile(tpl, data, ...rest); } }