From c5b891fbaf65fa6517a09a2e218a16399a84be5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E7=8B=B8?= Date: Fri, 11 Feb 2022 18:12:57 +0800 Subject: [PATCH 1/5] feat: add TagGuide --- packages/f2/src/components/guide/index.tsx | 4 +- .../f2/src/components/guide/views/Tag.tsx | 223 ++++++++++++++++++ .../f2/src/components/guide/withGuide.tsx | 42 +++- packages/f2/src/components/index.ts | 1 + .../f2/test/components/guide/type.test.tsx | 16 ++ 5 files changed, 283 insertions(+), 3 deletions(-) create mode 100644 packages/f2/src/components/guide/views/Tag.tsx diff --git a/packages/f2/src/components/guide/index.tsx b/packages/f2/src/components/guide/index.tsx index 95d4b137b..1b3305c17 100644 --- a/packages/f2/src/components/guide/index.tsx +++ b/packages/f2/src/components/guide/index.tsx @@ -5,6 +5,7 @@ import LineGuideView from './views/Line'; import ArcGuideView from './views/Arc'; import RectGuideView from './views/Rect'; import ImageGuideView from './views/Image'; +import TagGuideView from './views/Tag'; const DefaultGuideView = () => null; const TextGuide = withGuide(TextGuideView); @@ -13,7 +14,8 @@ const LineGuide = withGuide(LineGuideView); const ArcGuide = withGuide(ArcGuideView); const RectGuide = withGuide(RectGuideView); const ImageGuide = withGuide(ImageGuideView); +const TagGuide = withGuide(TagGuideView) export default withGuide(DefaultGuideView); -export { withGuide, TextGuide, PointGuide, ArcGuide, LineGuide, RectGuide, ImageGuide }; +export { withGuide, TextGuide, PointGuide, ArcGuide, LineGuide, RectGuide, ImageGuide, TagGuide }; diff --git a/packages/f2/src/components/guide/views/Tag.tsx b/packages/f2/src/components/guide/views/Tag.tsx new file mode 100644 index 000000000..550d6ac5b --- /dev/null +++ b/packages/f2/src/components/guide/views/Tag.tsx @@ -0,0 +1,223 @@ +import { jsx } from '../../../jsx'; +import { Style } from '../../../types'; + +type BBox = { + width: number; + height: number; + minX: number; + minY: number; + maxX: number; + maxY: number; +}; + +interface TagGuideProps { + points?: { x: number; y: number }[] | null; + canvasWidth?: number; + canvasHeight?: number; + guideBBox?: BBox; + offsetX?: number; + offsetY?: number; + autoAdjust?: boolean; + /** + * 箭头的方向 + */ + direct?: string; + /** + * 箭头的边长 + */ + side?: number; + /** + * 文字内容 + */ + content?: string; + /** + * 背景样式设置,见 group 绘图属性 + */ + background?: any; + /** + * 文字样式 + */ + textStyle?: any; +} + +const defaultProps: TagGuideProps = { + offsetX: 0, + offsetY: 0, + points: [], + direct: 'tl', + side: 6, + autoAdjust: true, +}; + +const defaultStyle = { + container: { + fill: '#1677FF', + radius: 2, + padding: [3, 5], + }, + text: { + fontSize: '22px' as `${number}px`, + fill: '#fff', + }, + arrow: { + fill: '#1677FF', + }, +}; + +export default (props: TagGuideProps) => { + const cfg = { ...defaultProps, ...props }; + const { + points, + content, + offsetX, + offsetY, + direct, + side, + autoAdjust, + canvasWidth, + canvasHeight, + guideBBox, + background, + textStyle, + } = cfg; + const { x, y } = points[0] || {}; + const { width: guideWidth, height: guideHeight } = guideBBox || {}; + + let posX = x + (offsetX || 0); + let posY = y + (offsetY || 0); + + const _getDirect = (point) => { + let newDirect = direct; + const { x, y } = point; + + let vertical = newDirect[0]; + let horizontal = newDirect[1]; + + // adjust for vertical direction + if (vertical === 't' && y - side - guideHeight < 0) { + vertical = 'b'; + } else if (vertical === 'b' && y + side + guideHeight > canvasHeight) { + vertical = 't'; + } + // adjust for horizontal direction + const diff = vertical === 'c' ? side : 0; + if (horizontal === 'l' && x - diff - guideWidth < 0) { + horizontal = 'r'; + } else if (horizontal === 'r' && x + diff + guideWidth > canvasWidth) { + horizontal = 'l'; + } else if (horizontal === 'c') { + if (guideWidth / 2 + x + diff > canvasWidth) { + horizontal = 'l'; + } else if (x - guideWidth / 2 - diff < 0) { + horizontal = 'r'; + } + } + + newDirect = vertical + horizontal; + return newDirect; + }; + + const _getArrowPoints = (direct) => { + let arrowPoints = []; + const { minX, minY } = guideBBox || {}; + if (direct === 'tl') { + arrowPoints = [ + { x: minX, y: minY - 1 }, // 这个 1 是为了防止出现白边 + { x: minX, y: minY + side }, + { x: minX - side - 1, y: minY - 1 }, + ]; + posX -= (guideWidth || 0); + posY = posY - (guideHeight || 0) - side; + } else if (direct === 'cl') { + arrowPoints = [ + { x: minX - 1, y: minY - 1 - side / 2 }, + { x: minX - 1, y: minY + 1 + side / 2 }, + { x: minX + side, y: minY }, + ]; + posX = posX - (guideWidth || 0) - side; + posY -= (guideHeight / 2 || 0); + } else if (direct === 'bl') { + arrowPoints = [ + { x: minX, y: -side + minY }, + { x: minX - side - 1, y: minY + 1 }, + { x: minX, y: minY + 1 }, + ]; + posX = posX - (guideWidth || 0); + posY += side; + } else if (direct === 'bc') { + arrowPoints = [ + { x: guideWidth / 2 + minX, y: -side + minY }, + { x: (guideWidth - side) / 2 + minX - 1, y: minY + 1 }, + { x: (guideWidth + side) / 2 + minX + 1, y: minY + 1 }, + ]; + } else if (direct === 'br') { + arrowPoints = [ + { x: minX, y: minY - side }, + { x: minX, y: minY + 1 }, + { x: minX + side + 1, y: minY + 1 }, + ]; + posY += side; + } else if (direct === 'cr') { + arrowPoints = [ + { x: minX - side, y: minY }, + { x: minX + 1, y: minY - 1 - side / 2 }, + { x: minX + 1, y: minY + 1 + side / 2 }, + ]; + posX += side; + posY -= (guideHeight / 2 || 0); + } else if (direct === 'tr') { + arrowPoints = [ + { x: minX, y: minY + side }, + { x: minX, y: minY - 1 }, + { x: side + minX + 1, y: minY - 1 }, + ]; + posY = posY - (guideHeight || 0) - side; + } else if (direct === 'tc') { + arrowPoints = [ + { x: minX - 1 - side / 2, y: minY - 1 }, + { x: minX + 1 + side / 2, y: minY - 1 }, + { x: minX, y: minY + side }, + ]; + posX -= (guideWidth / 2 || 0); + posY = posY - (guideHeight || 0) - side; + } + + return arrowPoints; + }; + + const dr = autoAdjust ? _getDirect(points[0]) : direct; + const arrowPoints = _getArrowPoints(dr); + + return ( + + + {guideBBox && ( + + )} + + ); +}; diff --git a/packages/f2/src/components/guide/withGuide.tsx b/packages/f2/src/components/guide/withGuide.tsx index 21e74f118..eb4176bac 100644 --- a/packages/f2/src/components/guide/withGuide.tsx +++ b/packages/f2/src/components/guide/withGuide.tsx @@ -3,6 +3,7 @@ import Component from '../../base/component'; import { isString, isNil } from '@antv/util'; import { Ref } from '../../types'; import Chart from '../../chart'; +import { renderShape } from '../../base/diff'; function isInBBox(bbox, point) { const { minX, maxX, minY, maxY } = bbox; @@ -19,6 +20,12 @@ export default (View) => { super(props); // 创建ref this.triggerRef = {}; + this.state = {}; + } + + willMount() { + super.willMount(); + this.getGuideBBox(); } didMount() { @@ -38,6 +45,24 @@ export default (View) => { }); } + getGuideBBox() { + const shape = renderShape(this, this.render(), false); + const { x, y, width, height } = shape.get('attrs'); + // getBBox 没有包含 padding 所以这里手动计算 bbox + const bbox = { + minX: x, + minY: y, + maxX: x + width, + maxY: y + height, + width, + height, + }; + this.setState({ + guideBBox: bbox, + }); + shape.destroy(); + } + // 解析record里的模板字符串,如min、max、50%... parseReplaceStr(value, scale) { const replaceMap = { min: 0, max: 1, median: 0.5 }; @@ -86,13 +111,26 @@ export default (View) => { } render() { - const { props } = this; + const { props, context } = this; const { coord, records = [] } = props; + const { width, height } = context; const points = this.convertPoints(records); const theme = this.getGuideTheme(); + const { guideWidth, guideHeight, guideBBox } = this.state; return ( - + ); } }; diff --git a/packages/f2/src/components/index.ts b/packages/f2/src/components/index.ts index ac75b0372..5728c69a5 100644 --- a/packages/f2/src/components/index.ts +++ b/packages/f2/src/components/index.ts @@ -14,6 +14,7 @@ export { ArcGuide, RectGuide, ImageGuide, + TagGuide, } from './guide'; export { default as Tooltip, withTooltip, TooltipView } from './tooltip'; export { default as Treemap, withTreemap, TreemapView } from './treemap'; diff --git a/packages/f2/test/components/guide/type.test.tsx b/packages/f2/test/components/guide/type.test.tsx index 2de63610e..d26afa40f 100644 --- a/packages/f2/test/components/guide/type.test.tsx +++ b/packages/f2/test/components/guide/type.test.tsx @@ -7,6 +7,7 @@ import { PointGuide, ArcGuide, RectGuide, + TagGuide, Interval, Line, Axis, @@ -252,4 +253,19 @@ describe('Guide', () => { const canvas = new Canvas(props); canvas.render(); }); + + it('TagGuide', () => { + const context = createContext('TagGuide'); + const { props } = ( + + + + + + + ); + + const canvas = new Canvas(props); + canvas.render(); + }); }); From 262611818c4b9a8677d66cd78a5e7d1afcf590b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E7=8B=B8?= Date: Tue, 15 Feb 2022 18:55:07 +0800 Subject: [PATCH 2/5] =?UTF-8?q?feat:=20=E5=AF=BC=E5=87=BA=20graphic=20?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=91=BD=E5=90=8D=E7=A9=BA=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../f2/src/components/guide/views/Tag.tsx | 14 +----- packages/f2/src/types.ts | 45 +++++++----------- .../type-test-tsx-guide-tag-guide-1-snap.png | Bin 0 -> 7922 bytes .../f2/test/components/guide/type.test.tsx | 9 ++-- packages/graphic/src/index.ts | 4 +- 5 files changed, 27 insertions(+), 45 deletions(-) create mode 100644 packages/f2/test/components/guide/__image_snapshots__/type-test-tsx-guide-tag-guide-1-snap.png diff --git a/packages/f2/src/components/guide/views/Tag.tsx b/packages/f2/src/components/guide/views/Tag.tsx index 550d6ac5b..1d0af0096 100644 --- a/packages/f2/src/components/guide/views/Tag.tsx +++ b/packages/f2/src/components/guide/views/Tag.tsx @@ -1,20 +1,10 @@ import { jsx } from '../../../jsx'; -import { Style } from '../../../types'; - -type BBox = { - width: number; - height: number; - minX: number; - minY: number; - maxX: number; - maxY: number; -}; - +import type { Types } from '@antv/f2-graphic'; interface TagGuideProps { points?: { x: number; y: number }[] | null; canvasWidth?: number; canvasHeight?: number; - guideBBox?: BBox; + guideBBox?: Types.BBox; offsetX?: number; offsetY?: number; autoAdjust?: boolean; diff --git a/packages/f2/src/types.ts b/packages/f2/src/types.ts index d65ab361f..fb8983723 100644 --- a/packages/f2/src/types.ts +++ b/packages/f2/src/types.ts @@ -1,20 +1,7 @@ import { AxisTypes } from './components/axis/types'; -import type { - Point, - CircleAttrs as CircleGraphicAttrs, - RectAttrs as RectGraphicAttrs, - LineAttrs as LineGraphicAttrs, - PolygonAttrs as PolygonGraphicAttrs, - PolylineAttrs as PolylineGraphicAttrs, - ArcAttrs as ArcGraphicAttrs, - SectorAttrs as SectorGraphicAttrs, - TextAttrs as TextGraphicAttrs, - CustomAttrs as CustomGraphicAttrs, - MarkerAttrs as MarkerGraphicAttrs, - ImageAttrs as ImageGraphicAttrs, -} from '@antv/f2-graphic'; - -type PX_FIELD_NAME = +import type { Types } from '@antv/f2-graphic'; + +type PX_FIELD_NAME = 'lineWidth' | 'lineDash' | 'x' @@ -49,9 +36,9 @@ export type { AxisTypes } type SupportPx = { [k in keyof T]: k extends PX_FIELD_NAME ? - T[k] extends number ? number | pxstr : + T[k] extends number ? number | pxstr : T[k] extends number[] ? number[] | pxstr[] : - T[k] extends Point[] ? PxPoint[] : T[k] + T[k] extends Types.Point[] ? PxPoint[] : T[k] :T[k]; } @@ -107,57 +94,57 @@ export type ElementType = | (new (props: Props, context?: any) => any); -export type CircleAttrs = Partial>; +export type CircleAttrs = Partial>; export interface CircleProps extends IntrinsicElementsProps { attrs?: CircleAttrs; } -export type RectAttrs = Partial>; +export type RectAttrs = Partial>; export interface RectProps extends IntrinsicElementsProps { attrs?: RectAttrs; } -export type LineAttrs = Partial>; +export type LineAttrs = Partial>; export interface LineProps extends IntrinsicElementsProps { attrs?: LineAttrs; } -export type PolygonAttrs = Partial>; +export type PolygonAttrs = Partial>; export interface PolygonProps extends IntrinsicElementsProps { attrs?: PolygonAttrs; } -export type PolylineAttrs = Partial>; +export type PolylineAttrs = Partial>; export interface PolylineProps extends IntrinsicElementsProps { attrs?: PolylineAttrs; } -export type ArcAttrs = Partial> +export type ArcAttrs = Partial> export interface ArcProps extends IntrinsicElementsProps { attrs?: ArcAttrs; } -export type SectorAttrs = Partial>; +export type SectorAttrs = Partial>; export interface SectorProps extends IntrinsicElementsProps { attrs?: SectorAttrs; } -export type TextAttrs = Partial>; +export type TextAttrs = Partial>; export interface TextProps extends IntrinsicElementsProps { attrs?: TextAttrs; } -export type CustomAttrs = Partial>; +export type CustomAttrs = Partial>; export interface CustomProps extends IntrinsicElementsProps { attrs?: CustomAttrs } -export type MarkerAttrs = Partial>; +export type MarkerAttrs = Partial>; export interface MarkerProps extends IntrinsicElementsProps { attrs?: MarkerAttrs; } -export type ImageAttrs = Partial>; +export type ImageAttrs = Partial>; export interface ImageProps extends IntrinsicElementsProps { attrs?: ImageAttrs; } diff --git a/packages/f2/test/components/guide/__image_snapshots__/type-test-tsx-guide-tag-guide-1-snap.png b/packages/f2/test/components/guide/__image_snapshots__/type-test-tsx-guide-tag-guide-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..99aca38ec75b447adeebc7cfdc2fda7fce79ed90 GIT binary patch literal 7922 zcmeHMYgiL!77pW}0R<+|3J4)wWD!9S5KwN3a*0+16dM9nNI}3B6cLdCxvG^B1bnb! zRTODma5X|S1r(7)pireiE6c6rmLPXXNVx<8Av?6#XZLw_f9(JKn{U1|=bQ6==e+Mb zXRZVV5VbV7XrfRktpodgj-XHg8HG}-MXyKhI3-n{K%q=t9PrtDlo~$O%jDck32l^4 zgxi?DaWv{AWn^7@Z5-+1!h66~6oK#-U6;Xg23NA8449kTig&rQ;;e$&ih8`sC& z|B+rVj#UfQ8J}K%!}`l0qTgnNbL#HJKvPxku+Xb1t)p$eDy?*8u&8WBePV=G__Azd zsnNY8w)OIK7D^2O(U2+O{->0ap3R^Cam_+*nsJW-f6lN7JeJ_g^~uI-mITU+b!%qq z7&UhLrt#fthAhF^4XeIZpKk_$$AGh%EjqqEG_G`J!9S z+Sruavlf6VAk_(}QchJv2zsbM0VxC(Y_F1siiZ$BRe{1^pgIZ6 z-P0>rno9{_3FL?rnOIUt&w;}v%0!FwR|k;@rVhI)ylD)$i0lq|!FK-r5(K1~q)y(XGN3dq2i?koX- zxPboMxrZpPG>s2Z=#7`*7;sVD_@W0{q^)Ei@sSQ?Cw=LTR0ob*ez-w@hzyb zj+~#1NZTf|PMQ$}?5IVdC~etUWhO!m2|=Wj$Ys3atLAxP(X>&TflPDyBR! z_~f?P^xO^It|nKgE$vzS;5lihpNAy9ggH-7@W-FMB-l>5rE7W(1Cb3ajR5c+a6^zb zw}?qd4XuwF{KzNQt70MAD=oD?wDp^s;N%YHHVJ*~S6J^dj9)og|1pkS&6FBqTq7J6 zyqkO{QEB@1+#TG!pcoK+0@2c>w>c>G*91#$xbhu5g@ltHM8GbaGi7m@lDo! zX}BvbvYu~CiyhCC`7ICecQ77kS^4zvp-3Lzjn+8z58^zQv-P^68jz~SzESyXE5Xz( zNP}a6O_ArrzeTtz?vD=QgOgXjz~IOWt&RyVy+nOwCTX?$eQt_!QMx#@D>Y8Uj@9db z{mH&t7}IMXL*!6vcK|#BVA*pVNzU^rXN;9svV5Y>sej8;3DY86-UG{4mS+v{)5Y)x ze&VP_@6s?_g0~bYl+aT}>ycbrZk|69;d>;)zPEWO_9emDbrbLO{i+wEF-C!~fkouf z4ovz=Vw&(GvtfKgzpk`h=}x2Un3HN}&}qnvRP+7@qK|?g$+syV#r{syIF8cHs2LBm z%chED{`S&oHr(Cl)HC0075+OhFt=-FW1A8`QU%+4QAY=RWWQkodkqq2O3cG$4{#Us z$wd0nCgejz7a||JmSaYs=dME`vf4ei%Bx-M@1brD~gX`LCf zcP>e?XSvblCkB;1?>)(jaAkOis&efZ51cCeXrj!qLdCm#FrM!|_akGy&6^X5qi_Oc z=!vZcv>$yGn6Ngo5Wh&1+q|-$%%uvo+9I?}#yXkDoawbo`uxp_E#+A^CGu{#JEbm$ zAA{Q`|JhYf$K%d|Hc9vGRTP`U61@GS8#zJUhhRs-3b}p=@2I$Qp(KJn8lhn~cY!Z! z!|302Qna{BzF7(0!_(QOkdF8+3vEgymwILWm=SS+r+C+YtD(x{CW*sNo43Tymu)f` z?!1fS;ro}x{RQ;O2_D~>{!!gzC%ds&a9c6cUDoYjpPF7DD-Ogz6KoG!Ege0GyvNE0 z0P~R2k+(iJ4+vY(al?%*gxbDZm_YqYTS= z|1$1BHyf}?9>DnVBw=@#6i8N{lD}S1MBp3r)H@t%7aajm+X}%WtyMfCIdOkAIYucz z>;|LQ2M`q0_+Kc9=FG`ksCEEI3MNpV6jyYbpD{)w2s&_Rp174T@DKnd9{Q~Rw|q

1d{`*9B?#un?PU=j3#>zO ztZ-chOJO?4g>^0;xZ$ga1}TU(CL(L>PU9&KYjE-f!`Q)>8D`<-VP%yCoraCizvveW zpA8iV<1`@C=@V+~p#aE~YYu#tlGB-k(I?hBg}hhKXO50!z@F(TS_$Np!vTmg6htDH zeu(8WKtJ0^lrQ{cGAq7sPv35z_*QZ3O9#=ZrSn=L5BS9k{$oj6h-)sQsE?@wV8;!? zfij${=c%i$*_btV$uMQ_4ZK05xW|CbtX+(?6C3vh@Vea{jer2 z(a^(<@!byLkoWQrhk=RO4d-<#I|5}NBRv9gD8h%&Y61`@GXy?6pTiSW4eTWL$OWas z+Gu0R!PWPUL>TRdlURR53#+>*8y1#@zbwoi8M$gCnxuDbO0kzY(>#&(0cjs{x|bd~ zX+S6S$m3B)Z*fgO&+pPUC$IxW+SEe;_z3BcY>x?K32vil6H!LywT+G(4Zgl5;r=#LZYE_IA@XcNrB}u0 znzpzmu1f+t1erqiSCd@4)>UC&MXGgM_lL%cCgPA4{mEJ<2A6?YjO5`In74;2Ypm Ix{q?t<8 literal 0 HcmV?d00001 diff --git a/packages/f2/test/components/guide/type.test.tsx b/packages/f2/test/components/guide/type.test.tsx index d26afa40f..eefa67e8f 100644 --- a/packages/f2/test/components/guide/type.test.tsx +++ b/packages/f2/test/components/guide/type.test.tsx @@ -13,7 +13,7 @@ import { Axis, Point, } from '../../../src/components'; -import { createContext } from '../../util'; +import { createContext, delay } from '../../util'; const data = [ { type: 'a', genre: 'Sports', sold: 5 }, @@ -254,18 +254,21 @@ describe('Guide', () => { canvas.render(); }); - it('TagGuide', () => { + it('TagGuide', async () => { const context = createContext('TagGuide'); const { props } = ( - + ); const canvas = new Canvas(props); canvas.render(); + + await delay(100); + expect(context).toMatchImageSnapshot(); }); }); diff --git a/packages/graphic/src/index.ts b/packages/graphic/src/index.ts index a1d996ac8..6339f6fc4 100644 --- a/packages/graphic/src/index.ts +++ b/packages/graphic/src/index.ts @@ -35,4 +35,6 @@ export { Smooth, BBox, }; -export * from './types'; + +import * as Types from './types'; +export { Types }; From d034288d734393f9348e8ee99b88de24bac3f3da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E7=8B=B8?= Date: Wed, 16 Feb 2022 10:16:48 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DtagGuide=20snapsho?= =?UTF-8?q?t=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../type-test-tsx-guide-tag-guide-1-snap.png | Bin 7922 -> 15816 bytes .../f2/test/components/guide/type.test.tsx | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/f2/test/components/guide/__image_snapshots__/type-test-tsx-guide-tag-guide-1-snap.png b/packages/f2/test/components/guide/__image_snapshots__/type-test-tsx-guide-tag-guide-1-snap.png index 99aca38ec75b447adeebc7cfdc2fda7fce79ed90..259b764f29ce6530c888e09c3ef55533a64da0a6 100644 GIT binary patch literal 15816 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%0AAp_ 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 literal 7922 zcmeHMYgiL!77pW}0R<+|3J4)wWD!9S5KwN3a*0+16dM9nNI}3B6cLdCxvG^B1bnb! zRTODma5X|S1r(7)pireiE6c6rmLPXXNVx<8Av?6#XZLw_f9(JKn{U1|=bQ6==e+Mb zXRZVV5VbV7XrfRktpodgj-XHg8HG}-MXyKhI3-n{K%q=t9PrtDlo~$O%jDck32l^4 zgxi?DaWv{AWn^7@Z5-+1!h66~6oK#-U6;Xg23NA8449kTig&rQ;;e$&ih8`sC& z|B+rVj#UfQ8J}K%!}`l0qTgnNbL#HJKvPxku+Xb1t)p$eDy?*8u&8WBePV=G__Azd zsnNY8w)OIK7D^2O(U2+O{->0ap3R^Cam_+*nsJW-f6lN7JeJ_g^~uI-mITU+b!%qq z7&UhLrt#fthAhF^4XeIZpKk_$$AGh%EjqqEG_G`J!9S z+Sruavlf6VAk_(}QchJv2zsbM0VxC(Y_F1siiZ$BRe{1^pgIZ6 z-P0>rno9{_3FL?rnOIUt&w;}v%0!FwR|k;@rVhI)ylD)$i0lq|!FK-r5(K1~q)y(XGN3dq2i?koX- zxPboMxrZpPG>s2Z=#7`*7;sVD_@W0{q^)Ei@sSQ?Cw=LTR0ob*ez-w@hzyb zj+~#1NZTf|PMQ$}?5IVdC~etUWhO!m2|=Wj$Ys3atLAxP(X>&TflPDyBR! z_~f?P^xO^It|nKgE$vzS;5lihpNAy9ggH-7@W-FMB-l>5rE7W(1Cb3ajR5c+a6^zb zw}?qd4XuwF{KzNQt70MAD=oD?wDp^s;N%YHHVJ*~S6J^dj9)og|1pkS&6FBqTq7J6 zyqkO{QEB@1+#TG!pcoK+0@2c>w>c>G*91#$xbhu5g@ltHM8GbaGi7m@lDo! zX}BvbvYu~CiyhCC`7ICecQ77kS^4zvp-3Lzjn+8z58^zQv-P^68jz~SzESyXE5Xz( zNP}a6O_ArrzeTtz?vD=QgOgXjz~IOWt&RyVy+nOwCTX?$eQt_!QMx#@D>Y8Uj@9db z{mH&t7}IMXL*!6vcK|#BVA*pVNzU^rXN;9svV5Y>sej8;3DY86-UG{4mS+v{)5Y)x ze&VP_@6s?_g0~bYl+aT}>ycbrZk|69;d>;)zPEWO_9emDbrbLO{i+wEF-C!~fkouf z4ovz=Vw&(GvtfKgzpk`h=}x2Un3HN}&}qnvRP+7@qK|?g$+syV#r{syIF8cHs2LBm z%chED{`S&oHr(Cl)HC0075+OhFt=-FW1A8`QU%+4QAY=RWWQkodkqq2O3cG$4{#Us z$wd0nCgejz7a||JmSaYs=dME`vf4ei%Bx-M@1brD~gX`LCf zcP>e?XSvblCkB;1?>)(jaAkOis&efZ51cCeXrj!qLdCm#FrM!|_akGy&6^X5qi_Oc z=!vZcv>$yGn6Ngo5Wh&1+q|-$%%uvo+9I?}#yXkDoawbo`uxp_E#+A^CGu{#JEbm$ zAA{Q`|JhYf$K%d|Hc9vGRTP`U61@GS8#zJUhhRs-3b}p=@2I$Qp(KJn8lhn~cY!Z! z!|302Qna{BzF7(0!_(QOkdF8+3vEgymwILWm=SS+r+C+YtD(x{CW*sNo43Tymu)f` z?!1fS;ro}x{RQ;O2_D~>{!!gzC%ds&a9c6cUDoYjpPF7DD-Ogz6KoG!Ege0GyvNE0 z0P~R2k+(iJ4+vY(al?%*gxbDZm_YqYTS= z|1$1BHyf}?9>DnVBw=@#6i8N{lD}S1MBp3r)H@t%7aajm+X}%WtyMfCIdOkAIYucz z>;|LQ2M`q0_+Kc9=FG`ksCEEI3MNpV6jyYbpD{)w2s&_Rp174T@DKnd9{Q~Rw|q

1d{`*9B?#un?PU=j3#>zO ztZ-chOJO?4g>^0;xZ$ga1}TU(CL(L>PU9&KYjE-f!`Q)>8D`<-VP%yCoraCizvveW zpA8iV<1`@C=@V+~p#aE~YYu#tlGB-k(I?hBg}hhKXO50!z@F(TS_$Np!vTmg6htDH zeu(8WKtJ0^lrQ{cGAq7sPv35z_*QZ3O9#=ZrSn=L5BS9k{$oj6h-)sQsE?@wV8;!? zfij${=c%i$*_btV$uMQ_4ZK05xW|CbtX+(?6C3vh@Vea{jer2 z(a^(<@!byLkoWQrhk=RO4d-<#I|5}NBRv9gD8h%&Y61`@GXy?6pTiSW4eTWL$OWas z+Gu0R!PWPUL>TRdlURR53#+>*8y1#@zbwoi8M$gCnxuDbO0kzY(>#&(0cjs{x|bd~ zX+S6S$m3B)Z*fgO&+pPUC$IxW+SEe;_z3BcY>x?K32vil6H!LywT+G(4Zgl5;r=#LZYE_IA@XcNrB}u0 znzpzmu1f+t1erqiSCd@4)>UC&MXGgM_lL%cCgPA4{mEJ<2A6?YjO5`In74;2Ypm Ix{q?t<8 diff --git a/packages/f2/test/components/guide/type.test.tsx b/packages/f2/test/components/guide/type.test.tsx index eefa67e8f..1ca6c5a37 100644 --- a/packages/f2/test/components/guide/type.test.tsx +++ b/packages/f2/test/components/guide/type.test.tsx @@ -257,7 +257,7 @@ describe('Guide', () => { it('TagGuide', async () => { const context = createContext('TagGuide'); const { props } = ( - + @@ -268,7 +268,7 @@ describe('Guide', () => { const canvas = new Canvas(props); canvas.render(); - await delay(100); + await delay(500); expect(context).toMatchImageSnapshot(); }); }); From a1be0cf04f073a72aad5400de1a8638191679b3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E7=8B=B8?= Date: Wed, 16 Feb 2022 10:36:48 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DtagGuide=20snapsho?= =?UTF-8?q?t=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../type-test-tsx-guide-tag-guide-1-snap.png | Bin 15816 -> 6052 bytes .../f2/test/components/guide/type.test.tsx | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/f2/test/components/guide/__image_snapshots__/type-test-tsx-guide-tag-guide-1-snap.png b/packages/f2/test/components/guide/__image_snapshots__/type-test-tsx-guide-tag-guide-1-snap.png index 259b764f29ce6530c888e09c3ef55533a64da0a6..469d28e7f070a66513e1c789f484702908741e75 100644 GIT binary patch literal 6052 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 literal 15816 zcmeIZWmuGL*ES3zNGK(xAYssTlWKCGbr*?Ulbi z(mF?`oIvaTR@0B4QHwPa4041}f_P|NKLt z>-)w3`BV_uWiP_pcOi%fLCy*OkO)@({UR+g`xAnsocn3*dBR8JoXD>4EdTxL|1~jb z3&slJJ5xOhO=+5O^b4>3<=&syaL5Q66;oxp4eO6nF!+bvk)ugfx>cH_b~A3T;B`A^ zx$t)*A!30{_Z)tLij9T8=xp9f{w2gcE{S$!MY6g3APRGRAM|V z-gvzu;zC^X1lZ4_ zQSBLm{nRi=M9%Pxlg_W3rS1wY{aCHJax)u2VMt8%LYodYtCXlNP4jIbc3&;YR-Bdi zs;P1BbVr?0vb!WBr-iE?BzSVp*fYV!-;`CQYZ|eUcFE#W`zosBQ)Ar3WlkfG&tNM? zE|Dx|&B^GG;jC4*97?aZC!iHG%J`dQ=&R#oOr+&u(ORf;^8YT0qprH}XZ4X{y93z| z;gqy1z#BUF1TMk{(Fz1-=63d?jxX_v>ZjmRv0e)jOU3#jb*gxU8Y0Jeu&H9+KP;gIT8X4%zFwBI9QAhhA1a zk*c3Qkd!B!PLqITr_EhG(wbMH%-*+I%7aN1zOvxBk)Yy{k3#4xPfRip>|l&ifwbyo zTn^qgjOUl0qRV-fYF3k0(J}*4azj%x*#F5dt6NMD`vvS(2k_&J#J#Hq_!oY}K5Jl^ z_98c|VWSEqT==ReP{L@|+ma)}fscI!WUcu#qfc7htp(i1JiundjPs8PCSfUf)g`o3 zP-p1MWzU#IoOI)ei`oNIukWgtEV!KW#bAZST7%7)@2s$jUOnvaH9WP>TD?E~1G7Fu zVYtR*Blp+(E?=$s=F)#>JlbT&)39WAz;-A}Q06%i@e8#Rgx5VIS0Ftu%$JpDoX2P^ zw6)*7utqw1l31YF^`78gWu1EX;wZo!Wx6-+ull6*blvVL+UhBnfoQ_h#f-Xy_+Q>g znri^>uH;`@lhv4sSYTn`v=AqMf1j}CogSyj_UmTK`4#sy;}tZ=hla)cam6lG{4*R4 zbPdiS#AKacrfg;Ug3s;*R$yFeAwY(AD5|GT3Zeg*OyLP(8+9(=OG_H~hyB-R1oCDu zmitt08T6bMo&%W~e|;el*|>bACery8PUV4jRsLY&)-KLS=<}yKCQgg~v{+I?L|=Z1 zZ2Y#A;(_d6_ZG+_EqLG9D9Tu~szi)n8b=UbO-!kvIICC5F_N^dUHKZ#NZc6T6h~qB zoRyCXR%ZUK?4oZ5&Gj}KRg%fS8ab)j!@pc27I?;Y?-F4Ham2l$y;rLkSMMtI4S}T} zXR^OvKz2p;oG(TYBp*iVLm3dSR#hf7$6CFh9 zb+a}7fyupe^eKUU{h%OmlUoDIu$N?OAf`Ds2G7rEA78>rv7*Ir2RUtPvxR3S3U3i3 z^q*>-4qh{LOEUm+>KtPyVpYv2qYE#rZkitnh{-WKNR%BXhP z<=QzCF<=s1w06X>Ni>7#I@?!Z-^JoXl87!vgBh%s`*=Vvczz;C*IFS}@&!+qSSq1}q#XMcsbRpR*}cL@(dKdw;a z3T#u)=_VExX6@IR@S*t`4rzF8J{SMzb|T$TwAE*Bm>R=TkKBNhA78Y9chn$@@oe@n z*qN@F^GeL@1wu&`&maipVm0<$hx@oRmfNncCQgGV+0E-Ar%--}IzoTt3NaD<=baIB`fvm5bhY}chfBdv6a!HoJcpa&OqCPxYa?e9Rru2B zz>4SpSyB8g`Hqi^hDztxqfaaC3!Em*c_MtFLGQ)?rlzxq$=uF9Q-g86{W*WYjhEjM<<%SD)^RK3)SZ91#^i16f zJavr7RVD%Pm7H*thZd*F=B@Z&;#{Y#)Z5G4y;#KI?KC&sE)1 zlq-`tF4msWOv9zUW~KpNaAOh42ruDd_{el%89&om<0*=j*u$-~7Y(v&Tu{z6=CU!nrtb-Bpz^5?79hrVM@PSbSKMZpuq$!- zxjcqX%x8|qw#RjdB%o=YP0)zn1?cj7F99)TM}a7k{Bh?UnnYv0l60YMG%&q7O0Pz* z4(!#>WF<=o^W1bPou9qSJ#f@2cR5;p7x<}nOxE11H`RiOhy{q{^GRVjUj+#w;I=QIDAk8qN#eKMFoonL9!^c zm2B1GvD&1s-jm?wWr~=}3q1);nTpeuoM1o0bRet;=Xa#J2kcMe8Ea+ zxwme7B~(BS5}b9Uu=LzWa~F;*tvq^~s8Kyhcqcoz*221e5OgGX-p&4XtlOL{+gnz~ z*S#Wed)T+ek7k3gG^Rd4bpLtxXKfI#E8PyW0pz}45Fqm)NzL8o8#t$n?9LxJ5M)4! zH7Xw~ss9ZIJss|hHSVV1)vl=|p0Kh>xM&&uIhutl1bnizXM|6c(nUG}*i^<$zUf;;7{4jVe08q_spXOJHej*h%PFza_xsk%tkyv~W5VM#w%5s7&9j zDp_*2s?V;U82eD5v=R{x0tCBzHYKd;lvCS+dy&38 z+dxNFwuD{5|E{W$ZX}ITL+G^D&?8Q})+kh}$C1{IeWyyw>o8ot9oVYyUM(T{V4xa+ zgV)%vWAwp-@0*A5?k z#R}M2@VY$h7Q2( zLAcnW4MB=6%Y54IacxM`6kho8k#?o%!*AfX-zDk!;iBBO4q&yF7^%Q=>uEV}gZghB z#3rMQ+7rSTfV!TYj+21R$C{f~Xm6Z1FDpuB+EbxqRx@KV@^xqsAYb?ih_3Ma6R^*G*`vz{ zdf;l(-236vgGx>km?=|QkgO-vbr>;EJCo+5=taOZnfLw{fl|I2Y z5v5<|`>iLu*8J1)e}E4x+pc#Id373gZe4QV{#e<(pD`9!g#;IVyeJ{c{?rJ3V5+y@ z8r~=4Oa$eTT%4J#*Iw^Vdrp9_L($6p*@r+dakAzuFj$Ud02tS=?3BYbQy&{CmmRtI zr_2ZqfL_HzUn#=EvlIYDcb&;9dwe6nDqQ|nye=FOPW=o_ZNR>N(_x?>5!9uNn7noT zEH#=#=EFbh###f@gR%12df-v|pK1vn&_mkDww>ubyfStBv)=g?v|rDQydVW|mou_v zY0zCTLcrC;RKlb9n#LZZefnOM<7J+;(c1p+X!J!T_(|V^RjM%7*yO32a`M*hyXnvj z!Ps_sAz%>OkL{=-lu-rBMT4~Mb(Ub6uqE5>DfzVxoL&9d)0@n|I2zZ1}BaDMXOKV308hyFWq$M&BJULn?hZ~mvxl`K= z2Tz4jV(aUPc7q`B-JDmHq6@YI8YrarFbALVlL=(5s(dzw(zf~pwEsLxe3VNA} z7#bkASW95q5Y3a6O@KOamQ2PQ00owvSay64gDSt^AAC0l7j5ro7h3NOt35FpIlvmy z1($#fYI*@a<2mgz-{YZz_u~Bro=v$k4JW(|F0$l5&jyL$R@4hiIE-j%v@-|LjxJ7<-FvSzSCX1)B5JKFjE(Lr$e`aN;mAX-X%W6~^m6B1BA4g*Uyu{x z5Eequ2h8LjLp#dgvlKtpP%WRs9_YSe=t;9AWjMC1CFKy~>#WgEX8#fAW3aR~@Y~>S zs2#|c1^0WmBambywaR!3VZA^L?;>i)*^fzkDIO|+F7GQ`B6C;wBUxlVAZ5gP&-1&n znXI4-ewM_kVgPni-DgA|lh-3HTDbx$Q+HjuF&gF=)KZ1)B(*L6jo^d`c&&N-_B*mk zjm{1Bv5@_fKaP@|df$+%>wqAsag|z`2q=4zV|}`EV{9t+b<4Oz>uBGPD;Gvzj~V+? z9w{XU=z8z1RBLx;ywaz~M;8GTg;~=O#*e~3%_I-S@=tzl$o8wnp4aZTs}MKY|0`Tr6Bse|Z;E%$2^`?=mcI0J z{jS0);67lQdkQvuxtH!#`HVfp*jjV5AmU^G;dlcDQnv<|VaWwbcHBcK>cX^x`(+F3Sagl5} z=*?0YMK)~Rz=>|eHqOwt+{9bqOuS#RZ>=Y*m_MFfK1SiEm)Xk5j`A?pd~J0%)h@TAt;bsvhe9xxr&f#{*7P2ruY+{<{VJ(FlJgc~n8L7X z;vRlOUO8QE#}~sl>x-~V7b=*JVfWwP_|TevEbX%G!g^xz(rW&a5L;l;3Yiq{y=>lb z3nN&+5P|MI{Gr69ub~6w+5y`?Y&~ zW!HYMd}8R4)j{sKaGY7=;c`Z4GMgM8okO4hQpNmF^GM+P-}BzSIUYZim5$d?HfoXv zog=d!Uj&UtXivvHj|_Nf>QX%Udr^CaslJ_7Lc!uBQ1-cOSHM533t!C$@*J7YKQPI6 z(+Da>{o&zA&TOsl7&o>{w$k3U!yG#|iSE35k?#;7+Yw#)vff9YwyeYR@gfzKW@OMP zr|v#=AJakmD93yyc1QzIdyZc_8>%jP-L~)nhv1&LiXq4yl`N!*9ZCx_f>Z9i(pFtP?DHSaOtVgj)qq5C)G@QvS-os**5TDo27s#%`d&)&b+T{g?%uh}0x z%e%0KS}P06piRjDeFv|A*C3pEBKpY<2LlQ{u$DMGcjeieez>KAhQQ>R-HW(fni%Kb zArA`3I3^R0W3mz({o=Mq&F}o_V?9qpTz0E?_xza7W5GD~1r{39#eI*y|+3BrMD+c3q_b9V?g^)hm%odp?fs zy8bubdUpC+ZlJQRplTm&%XR)zup51vKIXZxl;4cSyq8NpxpI@_ZkN4ZbcVDD|Kpvd zN2PKv>VEFr-OzS<@(Mdsk~YB{oC++{I`@MV2=673_qLkxXEbjtqsmrRl>^UG8PLc{ z1f(Z_PVVS@ygj>n^KQ#rrA8lb#&vvi#rGY|&snEOT3@^EX-gZz6`yv*tIv1r+ZED> zx$S-$TmQU5E@lom20tBr1pTl`h8t=ARgY;(*8P_zSx$4x40{ z=i|{u0r&OsLtz}cQoqmOdQDi*lS1MiV+Z1{YO0^RR(r`8D|*nxRF1MN`2X)uVR&~X zY28>FpETo7bEnEg0zdXmw@OA%6#r~bk4B~H#{Gj=OKs+*GgM_Ar8E}~r}L2snvg4|w(Yat*X=zTXE0=^b3x z>AvCi@A!7QZC|lDe!N}eR!YNrxW}w!e(+^EquO^P+06f!*l!BM;V%3BoO?royyNNi z`o~Xjw|4AHMr8vU#rNy@5&eL!6gNrOp}o`G<$)OUe375*EJvwNWfb2YfLF%JF1IwVM(s(g`yh0)JNWj+8iErS2{#j>^O zPixIZ#2Sck4LzwS+B;Fu<{NUCoEqlHGKvtTVFg(G0DtEmC#6n}rk~2Wl9?v{!ehkD zcMs@M5hbByj11jwe2x-MTuAs^c zj$dro3n|H+J?@gTX}U=45ca4}P6%#NGzbvL;Y;;Nxw7y0;p>#cp9)^HQP3b%0AAp_ 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 diff --git a/packages/f2/test/components/guide/type.test.tsx b/packages/f2/test/components/guide/type.test.tsx index 1ca6c5a37..31ab12da5 100644 --- a/packages/f2/test/components/guide/type.test.tsx +++ b/packages/f2/test/components/guide/type.test.tsx @@ -257,7 +257,7 @@ describe('Guide', () => { it('TagGuide', async () => { const context = createContext('TagGuide'); const { props } = ( - + From b7b372f959e888e85f1b85acdf0789b6e5c67961 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E7=8B=B8?= Date: Wed, 16 Feb 2022 11:37:46 +0800 Subject: [PATCH 5/5] fix: ts error --- packages/f2/src/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/f2/src/types.ts b/packages/f2/src/types.ts index fb8983723..91eb03fac 100644 --- a/packages/f2/src/types.ts +++ b/packages/f2/src/types.ts @@ -114,7 +114,7 @@ export interface PolygonProps extends IntrinsicElementsProps { attrs?: PolygonAttrs; } -export type PolylineAttrs = Partial>; +export type PolylineAttrs = Partial>; export interface PolylineProps extends IntrinsicElementsProps { attrs?: PolylineAttrs; }