@visactor/vrender-core 0.18.0-alpha.1 → 0.18.0-alpha.3

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.
@@ -0,0 +1,2 @@
1
+ import type { IPointLike } from '@visactor/vutils';
2
+ export declare function flatten_simplify(points: IPointLike[], tolerance: number, highestQuality: boolean): IPointLike[];
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ function simplifyRadialDist(points, sqTolerance) {
4
+ let deltaX, deltaY, lastX = points[0].x, lastY = points[0].y;
5
+ const newPoints = [ points[0] ];
6
+ for (let i = 1, len = points.length; i < len; i++) deltaX = points[i].x - lastX,
7
+ deltaY = points[i].y - lastY, deltaX * deltaX + deltaY * deltaY > sqTolerance && (lastX = points[i].x,
8
+ lastY = points[i].y, newPoints.push(points[i]));
9
+ return points[points.length - 1].x === lastX && points[points.length - 1].y === lastY || newPoints.push(points[points.length - 1]),
10
+ newPoints;
11
+ }
12
+
13
+ function simplifyDPStep(points, startIdx, endIdx, sqTolerance, simplified) {
14
+ let maxSqDist = sqTolerance, nextIdx = startIdx;
15
+ const startX = points[startIdx].x, startY = points[startIdx].y, vecX2 = points[endIdx].x - startX, vecY2 = points[endIdx].y - startY, sqLength = vecX2 * vecX2 + vecY2 * vecY2;
16
+ let area, sqArea, sqDistance, vecX1, vecY1;
17
+ for (let i = startIdx + 1, len = endIdx - 1; i < len; i++) vecX1 = points[i].x - startX,
18
+ vecY1 = points[i].y - startY, area = vecX1 * vecY2 - vecX2 * vecY1, sqArea = area * area,
19
+ sqDistance = sqArea / sqLength, sqDistance > maxSqDist && (maxSqDist = sqDistance,
20
+ nextIdx = i);
21
+ maxSqDist > sqTolerance && (nextIdx - startIdx > 2 && simplifyDPStep(points, startIdx, nextIdx, sqTolerance, simplified),
22
+ simplified.push(points[nextIdx], points[nextIdx + 1]), endIdx - nextIdx > 2 && simplifyDPStep(points, nextIdx, endIdx, sqTolerance, simplified));
23
+ }
24
+
25
+ function simplifyDouglasPeucker(points, sqTolerance) {
26
+ const lastIdx = points.length - 1, simplified = [ points[0] ];
27
+ return simplifyDPStep(points, 0, lastIdx, sqTolerance, simplified), simplified.push(points[lastIdx]),
28
+ simplified;
29
+ }
30
+
31
+ function flatten_simplify(points, tolerance, highestQuality) {
32
+ if (points.length <= 10) return points;
33
+ const sqTolerance = void 0 !== tolerance ? tolerance * tolerance : 1;
34
+ return points = simplifyDouglasPeucker(points = highestQuality ? points : simplifyRadialDist(points, sqTolerance), sqTolerance);
35
+ }
36
+
37
+ Object.defineProperty(exports, "__esModule", {
38
+ value: !0
39
+ }), exports.flatten_simplify = void 0, exports.flatten_simplify = flatten_simplify;
40
+ //# sourceMappingURL=simplify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/common/simplify.ts"],"names":[],"mappings":"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","file":"simplify.js","sourcesContent":["/*\n 优化自simplify-js: https://github.com/mourner/simplify-js\n (c) 2017, Vladimir Agafonkin\n Simplify.js, a high-performance JS polyline simplification library\n mourner.github.io/simplify-js\n*/\n\nimport type { IPointLike } from '@visactor/vutils';\n\n// basic distance-based simplification\nfunction simplifyRadialDist(points: IPointLike[], sqTolerance: number): IPointLike[] {\n let lastX = points[0].x;\n let lastY = points[0].y;\n let deltaX;\n let deltaY;\n const newPoints: IPointLike[] = [points[0]];\n for (let i = 1, len = points.length; i < len; i++) {\n deltaX = points[i].x - lastX;\n deltaY = points[i].y - lastY;\n if (deltaX * deltaX + deltaY * deltaY > sqTolerance) {\n lastX = points[i].x;\n lastY = points[i].y;\n newPoints.push(points[i]);\n }\n }\n if (points[points.length - 1].x !== lastX || points[points.length - 1].y !== lastY) {\n newPoints.push(points[points.length - 1]);\n }\n return newPoints;\n}\nfunction simplifyDPStep(\n points: IPointLike[],\n startIdx: number,\n endIdx: number,\n sqTolerance: number,\n simplified: IPointLike[]\n) {\n let maxSqDist = sqTolerance;\n let nextIdx = startIdx;\n const startX = points[startIdx].x;\n const startY = points[startIdx].y;\n const endX = points[endIdx].x;\n const endY = points[endIdx].y;\n const vecX2 = endX - startX;\n const vecY2 = endY - startY;\n const sqLength = vecX2 * vecX2 + vecY2 * vecY2;\n let area;\n let sqArea;\n let sqDistance;\n // 计算距离startIdx到endIdx最长的distance\n let vecX1;\n let vecY1;\n for (let i = startIdx + 1, len = endIdx - 1; i < len; i++) {\n vecX1 = points[i].x - startX;\n vecY1 = points[i].y - startY;\n // axb = x1y2 - x2y1\n area = vecX1 * vecY2 - vecX2 * vecY1;\n sqArea = area * area;\n sqDistance = sqArea / sqLength;\n if (sqDistance > maxSqDist) {\n maxSqDist = sqDistance;\n nextIdx = i;\n }\n }\n if (maxSqDist > sqTolerance) {\n if (nextIdx - startIdx > 2) {\n simplifyDPStep(points, startIdx, nextIdx, sqTolerance, simplified);\n }\n simplified.push(points[nextIdx], points[nextIdx + 1]);\n if (endIdx - nextIdx > 2) {\n simplifyDPStep(points, nextIdx, endIdx, sqTolerance, simplified);\n }\n }\n}\n// simplification using Ramer-Douglas-Peucker algorithm\n// https://karthaus.nl/rdp/\nfunction simplifyDouglasPeucker(points: IPointLike[], sqTolerance: number): IPointLike[] {\n const lastIdx = points.length - 1;\n const simplified = [points[0]];\n simplifyDPStep(points, 0, lastIdx, sqTolerance, simplified);\n simplified.push(points[lastIdx]);\n return simplified;\n}\n// both algorithms combined for awesome performance\nexport function flatten_simplify(points: IPointLike[], tolerance: number, highestQuality: boolean): IPointLike[] {\n if (points.length <= 10) {\n return points;\n }\n const sqTolerance = tolerance !== undefined ? tolerance * tolerance : 1;\n points = highestQuality ? points : simplifyRadialDist(points, sqTolerance);\n points = simplifyDouglasPeucker(points, sqTolerance);\n return points;\n}\n"]}
@@ -160,4 +160,4 @@ const calculateLineHeight = (lineHeight, fontSize) => {
160
160
  };
161
161
 
162
162
  exports.calculateLineHeight = calculateLineHeight;
163
- //# sourceMappingURL=utils.js.map
163
+ //# sourceMappingURL=utils.js.map
@@ -209,7 +209,7 @@ exports.DefaultArcAttribute = Object.assign(Object.assign({}, exports.DefaultAtt
209
209
  }), exports.DefaultTextAttribute = Object.assign(Object.assign(Object.assign({}, exports.DefaultAttribute), exports.DefaultTextStyle), {
210
210
  strokeBoundsBuffer: 0,
211
211
  keepDirIn3d: !0
212
- }), exports.DefaultRichTextAttribute = Object.assign(Object.assign(Object.assign({}, exports.DefaultAttribute), exports.DefaultTextStyle), {
212
+ }), exports.DefaultRichTextAttribute = Object.assign(Object.assign({}, exports.DefaultAttribute), {
213
213
  width: 300,
214
214
  height: 300,
215
215
  ellipsis: !0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/config.ts"],"names":[],"mappings":"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","file":"config.js","sourcesContent":["// 存放公共属性\nimport { Logger, Matrix, pi2 } from '@visactor/vutils';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport type {\n IArcGraphicAttribute,\n IAreaGraphicAttribute,\n IGraphicAttribute,\n ICircleGraphicAttribute,\n IFillStyle,\n IGlyphGraphicAttribute,\n IGroupGraphicAttribute,\n IImageGraphicAttribute,\n ILineGraphicAttribute,\n IPathGraphicAttribute,\n IPolygonGraphicAttribute,\n IRect3dGraphicAttribute,\n IRectGraphicAttribute,\n IStrokeStyle,\n IGraphicStyle,\n ISymbolGraphicAttribute,\n ITextAttribute,\n ITextGraphicAttribute,\n IRichTextGraphicAttribute,\n ITransform,\n RichTextWordBreak,\n RichTextVerticalDirection,\n RichTextGlobalAlignType,\n RichTextGlobalBaselineType,\n IRichTextIconGraphicAttribute,\n IConnectedStyle,\n ILayout,\n IDebugType,\n IPickStyle\n} from '../interface';\n\nexport const DefaultLayout: ILayout = {\n alignSelf: 'auto'\n};\n\nexport const DefaultTransform: ITransform = {\n x: 0,\n y: 0,\n z: 0,\n dx: 0,\n dy: 0,\n dz: 0,\n scrollX: 0,\n scrollY: 0,\n scaleX: 1,\n scaleY: 1,\n scaleZ: 1,\n angle: 0,\n alpha: 0,\n beta: 0,\n scaleCenter: [0, 0],\n anchor: [0, 0],\n anchor3d: [0, 0],\n postMatrix: new Matrix()\n};\n\nexport const DefaultFillStyle: IFillStyle = {\n fillOpacity: 1,\n fill: false,\n shadowBlur: 0,\n shadowColor: 'black',\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\n\nconst commonStroke: Omit<IStrokeStyle, 'outerBorder' | 'innerBorder'> = {\n strokeOpacity: 1,\n lineDash: [],\n lineDashOffset: 0,\n lineWidth: 1,\n lineCap: 'butt',\n lineJoin: 'miter',\n miterLimit: 10,\n strokeBoundsBuffer: 2,\n stroke: false\n};\n\nexport const DefaultStrokeStyle: IStrokeStyle = {\n outerBorder: { ...commonStroke, distance: 0 },\n innerBorder: { ...commonStroke, distance: 0 },\n ...commonStroke\n};\n\nexport const DefaultTextStyle: Required<ITextAttribute> = {\n text: '',\n maxLineWidth: Infinity,\n textAlign: 'left',\n textBaseline: 'alphabetic',\n fontSize: 16,\n // @ts-ignore\n fontFamily: `PingFang SC,Microsoft Yahei,system-ui,-apple-system,segoe ui,\n Roboto,Helvetica,Arial,sans-serif, apple color emoji,segoe ui emoji,segoe ui symbol`,\n fontWeight: '',\n ellipsis: '…',\n fontVariant: '',\n fontStyle: '',\n lineHeight: undefined,\n underline: 0,\n lineThrough: 0,\n scaleIn3d: false,\n direction: 'horizontal',\n wordBreak: 'break-all',\n ignoreBuf: false,\n verticalMode: 0,\n wrap: false,\n whiteSpace: 'no-wrap',\n heightLimit: Infinity,\n lineClamp: Infinity,\n suffixPosition: 'end',\n disableAutoClipedPoptip: undefined\n};\n\nexport const DefaultPickStyle: IPickStyle = {\n pickStrokeBuffer: 0\n};\n\nexport const DefaultStyle: IGraphicStyle = {\n opacity: 1,\n background: null,\n backgroundCornerRadius: 0,\n texture: null,\n textureColor: 'black',\n textureSize: 10,\n texturePadding: 2,\n backgroundMode: 'no-repeat',\n backgroundFit: true,\n blur: 0,\n cursor: null,\n html: null,\n ...DefaultFillStyle,\n ...DefaultStrokeStyle,\n ...DefaultLayout,\n ...DefaultPickStyle\n};\n\nexport const DefaultConnectAttribute: Required<IConnectedStyle> = {\n connectedType: 'none',\n // connectedStyle: {\n // stroke: DefaultStrokeStyle.stroke,\n // strokeOpacity: DefaultStrokeStyle.strokeOpacity,\n // lineDash: DefaultStrokeStyle.lineDash,\n // lineDashOffset: DefaultStrokeStyle.lineDashOffset,\n // lineCap: DefaultStrokeStyle.lineCap,\n // lineJoin: DefaultStrokeStyle.lineJoin,\n // lineWidth: DefaultStrokeStyle.lineWidth,\n // fill: DefaultFillStyle.fill,\n // fillOpacity: DefaultFillStyle.fillOpacity\n // },\n connectedStyle: {}, // 默认全都继承父属性\n connectedX: NaN,\n connectedY: NaN\n} as IConnectedStyle;\n\nexport const DefaultDebugAttribute: Required<IDebugType> = {\n _debug_bounds: false\n};\n\nexport const DefaultAttribute: Required<IGraphicAttribute> = {\n strokeSeg: null,\n pickable: true,\n childrenPickable: true,\n fillPickable: true,\n strokePickable: true,\n visible: true,\n zIndex: 0,\n layout: null,\n boundsPadding: 0,\n pickMode: 'accurate',\n customPickShape: null,\n boundsMode: 'accurate',\n keepDirIn3d: true,\n shadowRootIdx: 1,\n globalZIndex: 1,\n globalCompositeOperation: '',\n overflow: 'hidden',\n ...DefaultDebugAttribute,\n ...DefaultStyle,\n ...DefaultTransform\n};\n\nexport function addAttributeToPrototype(obj: Record<string, any>, c: any, keys: string[]) {\n keys.forEach(key => {\n c.prototype[key] = obj[key];\n });\n}\nexport function rewriteProto(obj: Record<string, any>, c: Record<string, any>) {\n Object.setPrototypeOf(obj, c);\n}\n\nexport const DefaultArcAttribute: Required<IArcGraphicAttribute> = {\n ...DefaultAttribute,\n startAngle: 0,\n endAngle: pi2,\n innerRadius: 0,\n outerRadius: 1,\n cornerRadius: 0,\n padRadius: 0,\n padAngle: 0,\n cap: false,\n forceShowCap: false\n};\n\nexport const DefaultAreaAttribute: Required<IAreaGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultConnectAttribute,\n points: [],\n segments: [],\n curveType: 'linear',\n clipRange: 1,\n closePath: false\n};\n\nexport const DefaultCircleAttribute: Required<ICircleGraphicAttribute> = {\n ...DefaultAttribute,\n radius: 1,\n startAngle: 0,\n endAngle: pi2\n};\n\nexport const DefaultGroupAttribute: Required<IGroupGraphicAttribute> = {\n ...DefaultAttribute,\n width: 0,\n height: 0,\n cornerRadius: 0,\n path: [],\n clip: false,\n visibleAll: true,\n display: 'relative',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n alignContent: 'flex-start'\n};\n\nexport const DefaultGlyphAttribute: Required<IGlyphGraphicAttribute> = {\n ...DefaultAttribute,\n path: '',\n width: 0,\n height: 0,\n cornerRadius: 0,\n clip: false\n};\n\nexport const DefaultLineAttribute: Required<ILineGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultConnectAttribute,\n points: [],\n segments: [],\n curveType: 'linear',\n clipRange: 1,\n clipRangeByDimension: 'default',\n closePath: false\n};\n\nexport const DefaultPathAttribute: Required<IPathGraphicAttribute> = {\n ...DefaultAttribute,\n path: new CustomPath2D(),\n customPath: () => {\n Logger.getInstance().warn('空函数');\n }\n};\n\nexport const DefaultPolygonAttribute: Required<IPolygonGraphicAttribute> = {\n ...DefaultAttribute,\n points: [],\n cornerRadius: 0,\n closePath: true\n};\n\nexport const DefaultRectAttribute: Required<IRectGraphicAttribute> = {\n ...DefaultAttribute,\n width: 0,\n height: 0,\n x1: 0,\n y1: 0,\n strokeBoundsBuffer: 0,\n cornerRadius: 0\n};\n\nexport const DefaultRect3dAttribute: Required<IRect3dGraphicAttribute> = {\n ...DefaultAttribute,\n width: 0,\n height: 0,\n x1: 0,\n y1: 0,\n cornerRadius: 0,\n length: 0\n};\n\nexport const DefaultSymbolAttribute: Required<ISymbolGraphicAttribute> = {\n ...DefaultAttribute,\n symbolType: 'circle',\n size: 10, // 外接**正方形**的边长\n keepDirIn3d: true\n};\n\nexport const DefaultTextAttribute: Required<ITextGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultTextStyle,\n strokeBoundsBuffer: 0,\n keepDirIn3d: true\n};\n\nexport const DefaultRichTextAttribute: Required<IRichTextGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultTextStyle,\n width: 300,\n height: 300,\n ellipsis: true,\n wordBreak: 'break-word' as RichTextWordBreak,\n verticalDirection: 'top' as RichTextVerticalDirection,\n textAlign: 'left' as RichTextGlobalAlignType,\n textBaseline: 'top' as RichTextGlobalBaselineType,\n layoutDirection: 'horizontal',\n textConfig: [],\n maxHeight: undefined,\n maxWidth: undefined,\n singleLine: false\n};\n\nexport const DefaultImageAttribute: Required<IImageGraphicAttribute> = {\n repeatX: 'no-repeat',\n repeatY: 'no-repeat',\n image: '',\n width: 0,\n height: 0,\n ...DefaultAttribute,\n fill: true,\n cornerRadius: 0\n};\n\nexport const DefaultRichTextIconAttribute: Required<IRichTextIconGraphicAttribute> = {\n ...DefaultImageAttribute,\n backgroundShowMode: 'never',\n backgroundWidth: 0,\n backgroundHeight: 0,\n textAlign: 'left',\n textBaseline: 'middle',\n direction: 'horizontal',\n margin: 0,\n id: '',\n\n width: 20,\n height: 20,\n backgroundFill: 'rgba(101, 117, 168, 0.1)',\n backgroundFillOpacity: 1,\n backgroundStroke: false,\n backgroundStrokeOpacity: 1,\n backgroundRadius: 4,\n opacity: 1\n};\n"]}
1
+ {"version":3,"sources":["../src/graphic/config.ts"],"names":[],"mappings":"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","file":"config.js","sourcesContent":["// 存放公共属性\nimport { Logger, Matrix, pi2 } from '@visactor/vutils';\nimport { CustomPath2D } from '../common/custom-path2d';\nimport type {\n IArcGraphicAttribute,\n IAreaGraphicAttribute,\n IGraphicAttribute,\n ICircleGraphicAttribute,\n IFillStyle,\n IGlyphGraphicAttribute,\n IGroupGraphicAttribute,\n IImageGraphicAttribute,\n ILineGraphicAttribute,\n IPathGraphicAttribute,\n IPolygonGraphicAttribute,\n IRect3dGraphicAttribute,\n IRectGraphicAttribute,\n IStrokeStyle,\n IGraphicStyle,\n ISymbolGraphicAttribute,\n ITextAttribute,\n ITextGraphicAttribute,\n IRichTextGraphicAttribute,\n ITransform,\n RichTextWordBreak,\n RichTextVerticalDirection,\n RichTextGlobalAlignType,\n RichTextGlobalBaselineType,\n IRichTextIconGraphicAttribute,\n IConnectedStyle,\n ILayout,\n IDebugType,\n IPickStyle\n} from '../interface';\n\nexport const DefaultLayout: ILayout = {\n alignSelf: 'auto'\n};\n\nexport const DefaultTransform: ITransform = {\n x: 0,\n y: 0,\n z: 0,\n dx: 0,\n dy: 0,\n dz: 0,\n scrollX: 0,\n scrollY: 0,\n scaleX: 1,\n scaleY: 1,\n scaleZ: 1,\n angle: 0,\n alpha: 0,\n beta: 0,\n scaleCenter: [0, 0],\n anchor: [0, 0],\n anchor3d: [0, 0],\n postMatrix: new Matrix()\n};\n\nexport const DefaultFillStyle: IFillStyle = {\n fillOpacity: 1,\n fill: false,\n shadowBlur: 0,\n shadowColor: 'black',\n shadowOffsetX: 0,\n shadowOffsetY: 0\n};\n\nconst commonStroke: Omit<IStrokeStyle, 'outerBorder' | 'innerBorder'> = {\n strokeOpacity: 1,\n lineDash: [],\n lineDashOffset: 0,\n lineWidth: 1,\n lineCap: 'butt',\n lineJoin: 'miter',\n miterLimit: 10,\n strokeBoundsBuffer: 2,\n stroke: false\n};\n\nexport const DefaultStrokeStyle: IStrokeStyle = {\n outerBorder: { ...commonStroke, distance: 0 },\n innerBorder: { ...commonStroke, distance: 0 },\n ...commonStroke\n};\n\nexport const DefaultTextStyle: Required<ITextAttribute> = {\n text: '',\n maxLineWidth: Infinity,\n textAlign: 'left',\n textBaseline: 'alphabetic',\n fontSize: 16,\n // @ts-ignore\n fontFamily: `PingFang SC,Microsoft Yahei,system-ui,-apple-system,segoe ui,\n Roboto,Helvetica,Arial,sans-serif, apple color emoji,segoe ui emoji,segoe ui symbol`,\n fontWeight: '',\n ellipsis: '…',\n fontVariant: '',\n fontStyle: '',\n lineHeight: undefined,\n underline: 0,\n lineThrough: 0,\n scaleIn3d: false,\n direction: 'horizontal',\n wordBreak: 'break-all',\n ignoreBuf: false,\n verticalMode: 0,\n wrap: false,\n whiteSpace: 'no-wrap',\n heightLimit: Infinity,\n lineClamp: Infinity,\n suffixPosition: 'end',\n disableAutoClipedPoptip: undefined\n};\n\nexport const DefaultPickStyle: IPickStyle = {\n pickStrokeBuffer: 0\n};\n\nexport const DefaultStyle: IGraphicStyle = {\n opacity: 1,\n background: null,\n backgroundCornerRadius: 0,\n texture: null,\n textureColor: 'black',\n textureSize: 10,\n texturePadding: 2,\n backgroundMode: 'no-repeat',\n backgroundFit: true,\n blur: 0,\n cursor: null,\n html: null,\n ...DefaultFillStyle,\n ...DefaultStrokeStyle,\n ...DefaultLayout,\n ...DefaultPickStyle\n};\n\nexport const DefaultConnectAttribute: Required<IConnectedStyle> = {\n connectedType: 'none',\n // connectedStyle: {\n // stroke: DefaultStrokeStyle.stroke,\n // strokeOpacity: DefaultStrokeStyle.strokeOpacity,\n // lineDash: DefaultStrokeStyle.lineDash,\n // lineDashOffset: DefaultStrokeStyle.lineDashOffset,\n // lineCap: DefaultStrokeStyle.lineCap,\n // lineJoin: DefaultStrokeStyle.lineJoin,\n // lineWidth: DefaultStrokeStyle.lineWidth,\n // fill: DefaultFillStyle.fill,\n // fillOpacity: DefaultFillStyle.fillOpacity\n // },\n connectedStyle: {}, // 默认全都继承父属性\n connectedX: NaN,\n connectedY: NaN\n} as IConnectedStyle;\n\nexport const DefaultDebugAttribute: Required<IDebugType> = {\n _debug_bounds: false\n};\n\nexport const DefaultAttribute: Required<IGraphicAttribute> = {\n strokeSeg: null,\n pickable: true,\n childrenPickable: true,\n fillPickable: true,\n strokePickable: true,\n visible: true,\n zIndex: 0,\n layout: null,\n boundsPadding: 0,\n pickMode: 'accurate',\n customPickShape: null,\n boundsMode: 'accurate',\n keepDirIn3d: true,\n shadowRootIdx: 1,\n globalZIndex: 1,\n globalCompositeOperation: '',\n overflow: 'hidden',\n ...DefaultDebugAttribute,\n ...DefaultStyle,\n ...DefaultTransform\n};\n\nexport function addAttributeToPrototype(obj: Record<string, any>, c: any, keys: string[]) {\n keys.forEach(key => {\n c.prototype[key] = obj[key];\n });\n}\nexport function rewriteProto(obj: Record<string, any>, c: Record<string, any>) {\n Object.setPrototypeOf(obj, c);\n}\n\nexport const DefaultArcAttribute: Required<IArcGraphicAttribute> = {\n ...DefaultAttribute,\n startAngle: 0,\n endAngle: pi2,\n innerRadius: 0,\n outerRadius: 1,\n cornerRadius: 0,\n padRadius: 0,\n padAngle: 0,\n cap: false,\n forceShowCap: false\n};\n\nexport const DefaultAreaAttribute: Required<IAreaGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultConnectAttribute,\n points: [],\n segments: [],\n curveType: 'linear',\n clipRange: 1,\n closePath: false\n};\n\nexport const DefaultCircleAttribute: Required<ICircleGraphicAttribute> = {\n ...DefaultAttribute,\n radius: 1,\n startAngle: 0,\n endAngle: pi2\n};\n\nexport const DefaultGroupAttribute: Required<IGroupGraphicAttribute> = {\n ...DefaultAttribute,\n width: 0,\n height: 0,\n cornerRadius: 0,\n path: [],\n clip: false,\n visibleAll: true,\n display: 'relative',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'flex-start',\n alignItems: 'flex-start',\n alignContent: 'flex-start'\n};\n\nexport const DefaultGlyphAttribute: Required<IGlyphGraphicAttribute> = {\n ...DefaultAttribute,\n path: '',\n width: 0,\n height: 0,\n cornerRadius: 0,\n clip: false\n};\n\nexport const DefaultLineAttribute: Required<ILineGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultConnectAttribute,\n points: [],\n segments: [],\n curveType: 'linear',\n clipRange: 1,\n clipRangeByDimension: 'default',\n closePath: false\n};\n\nexport const DefaultPathAttribute: Required<IPathGraphicAttribute> = {\n ...DefaultAttribute,\n path: new CustomPath2D(),\n customPath: () => {\n Logger.getInstance().warn('空函数');\n }\n};\n\nexport const DefaultPolygonAttribute: Required<IPolygonGraphicAttribute> = {\n ...DefaultAttribute,\n points: [],\n cornerRadius: 0,\n closePath: true\n};\n\nexport const DefaultRectAttribute: Required<IRectGraphicAttribute> = {\n ...DefaultAttribute,\n width: 0,\n height: 0,\n x1: 0,\n y1: 0,\n strokeBoundsBuffer: 0,\n cornerRadius: 0\n};\n\nexport const DefaultRect3dAttribute: Required<IRect3dGraphicAttribute> = {\n ...DefaultAttribute,\n width: 0,\n height: 0,\n x1: 0,\n y1: 0,\n cornerRadius: 0,\n length: 0\n};\n\nexport const DefaultSymbolAttribute: Required<ISymbolGraphicAttribute> = {\n ...DefaultAttribute,\n symbolType: 'circle',\n size: 10, // 外接**正方形**的边长\n keepDirIn3d: true\n};\n\nexport const DefaultTextAttribute: Required<ITextGraphicAttribute> = {\n ...DefaultAttribute,\n ...DefaultTextStyle,\n strokeBoundsBuffer: 0,\n keepDirIn3d: true\n};\n\nexport const DefaultRichTextAttribute: Required<IRichTextGraphicAttribute> = {\n ...DefaultAttribute,\n width: 300,\n height: 300,\n ellipsis: true,\n wordBreak: 'break-word' as RichTextWordBreak,\n verticalDirection: 'top' as RichTextVerticalDirection,\n textAlign: 'left' as RichTextGlobalAlignType,\n textBaseline: 'top' as RichTextGlobalBaselineType,\n layoutDirection: 'horizontal',\n textConfig: [],\n maxHeight: undefined,\n maxWidth: undefined,\n singleLine: false\n};\n\nexport const DefaultImageAttribute: Required<IImageGraphicAttribute> = {\n repeatX: 'no-repeat',\n repeatY: 'no-repeat',\n image: '',\n width: 0,\n height: 0,\n ...DefaultAttribute,\n fill: true,\n cornerRadius: 0\n};\n\nexport const DefaultRichTextIconAttribute: Required<IRichTextIconGraphicAttribute> = {\n ...DefaultImageAttribute,\n backgroundShowMode: 'never',\n backgroundWidth: 0,\n backgroundHeight: 0,\n textAlign: 'left',\n textBaseline: 'middle',\n direction: 'horizontal',\n margin: 0,\n id: '',\n\n width: 20,\n height: 20,\n backgroundFill: 'rgba(101, 117, 168, 0.1)',\n backgroundFillOpacity: 1,\n backgroundStroke: false,\n backgroundStrokeOpacity: 1,\n backgroundRadius: 4,\n opacity: 1\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import { type AABBBounds, type OBBBounds } from '@visactor/vutils';
2
- import type { IRichText, IRichTextCharacter, RichTextGlobalAlignType, RichTextGlobalBaselineType, RichTextVerticalDirection, RichTextWordBreak, IRichTextGraphicAttribute, IRichTextImageCharacter, IRichTextParagraphCharacter, IStage, ILayer, IRichTextIcon, EventPoint } from '../interface';
2
+ import type { IRichText, IRichTextCharacter, RichTextGlobalAlignType, RichTextGlobalBaselineType, RichTextVerticalDirection, RichTextWordBreak, IRichTextGraphicAttribute, IStage, ILayer, IRichTextIcon, EventPoint } from '../interface';
3
3
  import { Graphic } from './graphic';
4
4
  import Frame from './richtext/frame';
5
5
  export declare class RichText extends Graphic<IRichTextGraphicAttribute> implements IRichText {
@@ -69,49 +69,6 @@ export declare class RichText extends Graphic<IRichTextGraphicAttribute> impleme
69
69
  protected needUpdateTags(keys: string[]): boolean;
70
70
  protected needUpdateTag(key: string): boolean;
71
71
  getFrameCache(): Frame;
72
- combinedStyleToCharacter(config: IRichTextImageCharacter | IRichTextParagraphCharacter): {
73
- lineHeight?: string | number;
74
- textAlign?: CanvasTextAlign;
75
- textBaseline?: CanvasTextBaseline;
76
- direction?: import("../interface").RichTextLayoutDirectionType;
77
- text: string | number;
78
- fontSize: any;
79
- fontFamily: any;
80
- fill: any;
81
- stroke: any;
82
- fontWeight: any;
83
- fontStyle: any;
84
- textDecoration?: import("../interface").RichTextTextDecoration;
85
- script?: import("../interface").RichTextScript;
86
- underline?: boolean;
87
- lineThrough?: boolean;
88
- } | {
89
- lineHeight?: string | number;
90
- textAlign?: CanvasTextAlign;
91
- textBaseline?: CanvasTextBaseline;
92
- direction?: import("../interface").RichTextLayoutDirectionType;
93
- image: string | HTMLImageElement | HTMLCanvasElement;
94
- width: number;
95
- height: number;
96
- backgroundShowMode?: "always" | "hover";
97
- backgroundFill?: boolean | import("../interface").IColor;
98
- backgroundFillOpacity?: number;
99
- backgroundStroke?: boolean | import("../interface").IColor;
100
- backgroundStrokeOpacity?: number;
101
- backgroundRadius?: number;
102
- backgroundWidth?: number;
103
- backgroundHeight?: number;
104
- id?: string;
105
- margin?: number | number[];
106
- funcType?: string;
107
- hoverImage?: string | HTMLImageElement | HTMLCanvasElement;
108
- fill: any;
109
- stroke: any;
110
- fontSize: any;
111
- fontFamily: any;
112
- fontStyle: any;
113
- fontWeight: any;
114
- };
115
72
  doUpdateFrameCache(): void;
116
73
  clone(): RichText;
117
74
  setStage(stage?: IStage, layer?: ILayer): void;
@@ -111,22 +111,11 @@ class RichText extends graphic_1.Graphic {
111
111
  return this.shouldUpdateShape() && (this.doUpdateFrameCache(), this.clearUpdateShapeTag()),
112
112
  this._frameCache;
113
113
  }
114
- combinedStyleToCharacter(config) {
115
- const {fill: fill, stroke: stroke, fontSize: fontSize, fontFamily: fontFamily, fontStyle: fontStyle, fontWeight: fontWeight} = this.attribute;
116
- return Object.assign({
117
- fill: fill,
118
- stroke: stroke,
119
- fontSize: fontSize,
120
- fontFamily: fontFamily,
121
- fontStyle: fontStyle,
122
- fontWeight: fontWeight
123
- }, config);
124
- }
125
114
  doUpdateFrameCache() {
126
115
  var _a;
127
116
  const {textConfig: textConfig = [], maxWidth: maxWidth, maxHeight: maxHeight, width: width, height: height, ellipsis: ellipsis, wordBreak: wordBreak, verticalDirection: verticalDirection, textAlign: textAlign, textBaseline: textBaseline, layoutDirection: layoutDirection, singleLine: singleLine} = this.attribute, paragraphs = [];
128
117
  for (let i = 0; i < textConfig.length; i++) if ("image" in textConfig[i]) {
129
- const config = this.combinedStyleToCharacter(textConfig[i]), iconCache = config.id && this._frameCache && this._frameCache.icons && this._frameCache.icons.get(config.id);
118
+ const config = textConfig[i], iconCache = config.id && this._frameCache && this._frameCache.icons && this._frameCache.icons.get(config.id);
130
119
  if (iconCache) paragraphs.push(iconCache); else {
131
120
  const icon = new icon_1.RichTextIcon(config);
132
121
  icon.successCallback = () => {
@@ -135,7 +124,7 @@ class RichText extends graphic_1.Graphic {
135
124
  }, icon.richtextId = config.id, paragraphs.push(icon);
136
125
  }
137
126
  } else {
138
- const richTextConfig = this.combinedStyleToCharacter(textConfig[i]);
127
+ const richTextConfig = textConfig[i];
139
128
  if ((0, vutils_1.isNumber)(richTextConfig.text) && (richTextConfig.text = `${richTextConfig.text}`),
140
129
  richTextConfig.text && richTextConfig.text.includes("\n")) {
141
130
  const textParts = richTextConfig.text.split("\n");
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/graphic/richtext.ts"],"names":[],"mappings":"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","file":"richtext.js","sourcesContent":["import { isNumber, type AABBBounds, type OBBBounds } from '@visactor/vutils';\nimport type {\n IRichText,\n IRichTextCharacter,\n RichTextGlobalAlignType,\n RichTextGlobalBaselineType,\n RichTextVerticalDirection,\n RichTextWordBreak,\n IRichTextGraphicAttribute,\n IRichTextImageCharacter,\n IRichTextParagraphCharacter,\n IStage,\n ILayer,\n IRichTextIcon,\n EventPoint\n} from '../interface';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport { DefaultRichTextAttribute } from './config';\nimport Frame from './richtext/frame';\nimport Paragraph from './richtext/paragraph';\nimport Wrapper from './richtext/wrapper';\nimport { getTheme } from './theme';\nimport { RichTextIcon } from './richtext/icon';\nimport type { FederatedMouseEvent } from '../event';\nimport { application } from '../application';\nimport { parsePadding } from '../common/utils';\nimport { RICHTEXT_NUMBER_TYPE } from './constants';\n\nconst RICHTEXT_UPDATE_TAG_KEY = [\n 'width',\n 'height',\n 'ellipsis',\n 'wordBreak',\n 'verticalDirection',\n 'maxHeight',\n 'maxWidth',\n 'textAlign',\n 'textBaseline',\n 'textConfig',\n 'layoutDirection',\n ...GRAPHIC_UPDATE_TAG_KEY\n];\n\nexport class RichText extends Graphic<IRichTextGraphicAttribute> implements IRichText {\n type: 'richtext' = 'richtext';\n\n _frameCache: Frame; // 富文本布局画布\n _currentHoverIcon: IRichTextIcon | null = null;\n\n static NOWORK_ANIMATE_ATTR = {\n ellipsis: 1,\n wordBreak: 1,\n verticalDirection: 1,\n textAlign: 1,\n textBaseline: 1,\n textConfig: 1,\n layoutDirection: 1,\n ...NOWORK_ANIMATE_ATTR\n };\n\n constructor(params?: IRichTextGraphicAttribute) {\n super(params);\n this.numberType = RICHTEXT_NUMBER_TYPE;\n }\n\n get width(): number {\n return this.attribute.width ?? DefaultRichTextAttribute.width;\n }\n set width(w: number) {\n if (this.attribute.width === w) {\n return;\n }\n this.attribute.width = w;\n this.addUpdateShapeAndBoundsTag();\n }\n get height(): number {\n return this.attribute.height ?? DefaultRichTextAttribute.height;\n }\n set height(h: number) {\n if (this.attribute.height === h) {\n return;\n }\n this.attribute.height = h;\n this.addUpdateShapeAndBoundsTag();\n }\n get maxWidth(): number | undefined {\n return this.attribute.maxWidth;\n }\n set maxWidth(mw: number | undefined) {\n if (this.attribute.maxWidth === mw) {\n return;\n }\n this.attribute.maxWidth = mw;\n this.addUpdateShapeAndBoundsTag();\n }\n get maxHeight(): number | undefined {\n return this.attribute.maxHeight;\n }\n set maxHeight(mh: number | undefined) {\n if (this.attribute.maxHeight === mh) {\n return;\n }\n this.attribute.maxHeight = mh;\n this.addUpdateShapeAndBoundsTag();\n }\n get ellipsis(): boolean | string {\n return this.attribute.ellipsis ?? DefaultRichTextAttribute.ellipsis;\n }\n set ellipsis(e: boolean | string) {\n if (this.attribute.ellipsis === e) {\n return;\n }\n this.attribute.ellipsis = e;\n this.addUpdateShapeAndBoundsTag();\n }\n get wordBreak(): RichTextWordBreak {\n return this.attribute.wordBreak ?? DefaultRichTextAttribute.wordBreak;\n }\n set wordBreak(wb: RichTextWordBreak) {\n if (this.attribute.wordBreak === wb) {\n return;\n }\n this.attribute.wordBreak = wb;\n this.addUpdateShapeAndBoundsTag();\n }\n get verticalDirection(): RichTextVerticalDirection {\n return this.attribute.verticalDirection ?? DefaultRichTextAttribute.verticalDirection;\n }\n set verticalDirection(vd: RichTextVerticalDirection) {\n if (this.attribute.verticalDirection === vd) {\n return;\n }\n this.attribute.verticalDirection = vd;\n this.addUpdateShapeAndBoundsTag();\n }\n get textAlign(): RichTextGlobalAlignType {\n return this.attribute.textAlign ?? DefaultRichTextAttribute.textAlign;\n }\n set textAlign(align: RichTextGlobalAlignType) {\n if (this.attribute.textAlign === align) {\n return;\n }\n this.attribute.textAlign = align;\n this.addUpdateShapeAndBoundsTag();\n }\n get textBaseline(): RichTextGlobalBaselineType {\n return this.attribute.textBaseline ?? DefaultRichTextAttribute.textBaseline;\n }\n set textBaseline(baseline: RichTextGlobalBaselineType) {\n if (this.attribute.textBaseline === baseline) {\n return;\n }\n this.attribute.textBaseline = baseline;\n this.addUpdateShapeAndBoundsTag();\n }\n get textConfig(): IRichTextCharacter[] {\n return this.attribute.textConfig ?? DefaultRichTextAttribute.textConfig;\n }\n set textConfig(config: IRichTextCharacter[]) {\n this.attribute.textConfig = config;\n this.addUpdateShapeAndBoundsTag();\n }\n\n protected doUpdateAABBBounds(): AABBBounds {\n const richTextTheme = getTheme(this).richtext;\n this._AABBBounds.clear();\n const attribute = this.attribute;\n const bounds = application.graphicService.updateRichTextAABBBounds(\n attribute,\n getTheme(this).richtext,\n this._AABBBounds,\n this\n ) as AABBBounds;\n\n const { boundsPadding = richTextTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n getDefaultAttribute(name: string) {\n return DefaultRichTextAttribute[name];\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, RICHTEXT_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, RICHTEXT_UPDATE_TAG_KEY);\n }\n getFrameCache(): Frame {\n if (this.shouldUpdateShape()) {\n this.doUpdateFrameCache();\n this.clearUpdateShapeTag();\n }\n return this._frameCache;\n }\n combinedStyleToCharacter(config: IRichTextImageCharacter | IRichTextParagraphCharacter) {\n const { fill, stroke, fontSize, fontFamily, fontStyle, fontWeight } = this.attribute as any;\n return { fill, stroke, fontSize, fontFamily, fontStyle, fontWeight, ...config };\n }\n doUpdateFrameCache() {\n // 1. 测量,生成paragraph\n const {\n textConfig = [],\n maxWidth,\n maxHeight,\n width,\n height,\n ellipsis,\n wordBreak,\n verticalDirection,\n textAlign,\n textBaseline,\n layoutDirection,\n singleLine\n } = this.attribute;\n const paragraphs: (Paragraph | RichTextIcon)[] = [];\n\n for (let i = 0; i < textConfig.length; i++) {\n if ('image' in textConfig[i]) {\n const config = this.combinedStyleToCharacter(\n textConfig[i] as IRichTextImageCharacter\n ) as IRichTextImageCharacter;\n // 直接创建icon Mark\n const iconCache =\n config.id && this._frameCache && this._frameCache.icons && this._frameCache.icons.get(config.id);\n if (iconCache) {\n paragraphs.push(iconCache as RichTextIcon);\n } else {\n const icon = new RichTextIcon(config);\n icon.successCallback = () => {\n this.addUpdateBoundTag();\n this.stage?.renderNextFrame();\n };\n icon.richtextId = config.id;\n paragraphs.push(icon);\n }\n } else {\n const richTextConfig = this.combinedStyleToCharacter(\n textConfig[i] as IRichTextParagraphCharacter\n ) as IRichTextParagraphCharacter;\n if (isNumber(richTextConfig.text)) {\n richTextConfig.text = `${richTextConfig.text}`;\n }\n if (richTextConfig.text && richTextConfig.text.includes('\\n')) {\n // 如果有文字内有换行符,将该段文字切为多段,并在后一段加入newLine标记\n const textParts = richTextConfig.text.split('\\n');\n for (let j = 0; j < textParts.length; j++) {\n paragraphs.push(new Paragraph(textParts[j], j !== 0, richTextConfig));\n }\n } else if (richTextConfig.text) {\n paragraphs.push(new Paragraph(richTextConfig.text, false, richTextConfig));\n }\n }\n }\n\n // 2. 布局,生成frame\n // const frameHeight =\n // typeof maxHeight === 'number' && (!height || height > maxHeight) // height = 0或height>maxHeight,使用maxHeight布局\n // ? maxHeight\n // : height;\n // const frameWidth =\n // typeof maxWidth === 'number' && (!width || width > maxWidth) // height = 0或height>maxWidth,使用maxWidth布局\n // ? maxWidth\n // : width;\n\n const maxWidthFinite = typeof maxWidth === 'number' && Number.isFinite(maxWidth) && maxWidth > 0;\n const maxHeightFinite = typeof maxHeight === 'number' && Number.isFinite(maxHeight) && maxHeight > 0;\n\n const richTextWidthEnable =\n typeof width === 'number' &&\n Number.isFinite(width) &&\n width > 0 &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (!maxWidthFinite || width <= maxWidth);\n const richTextHeightEnable =\n typeof height === 'number' &&\n Number.isFinite(height) &&\n height > 0 &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (!maxHeightFinite || height <= maxHeight);\n\n const frameWidth = richTextWidthEnable ? width : maxWidthFinite ? maxWidth : 0;\n const frameHeight = richTextHeightEnable ? height : maxHeightFinite ? maxHeight : 0;\n\n const frame = new Frame(\n 0,\n 0,\n frameWidth || 0,\n frameHeight || 0,\n ellipsis,\n wordBreak,\n verticalDirection,\n textAlign,\n textBaseline,\n layoutDirection || 'horizontal',\n // typeof maxWidth === 'number' && (!width || width > maxWidth),\n // typeof maxHeight === 'number' && (!height || height > maxHeight),\n !richTextWidthEnable && maxWidthFinite,\n !richTextHeightEnable && maxHeightFinite,\n singleLine || false,\n this._frameCache?.icons\n );\n const wrapper = new Wrapper(frame);\n for (let i = 0; i < paragraphs.length; i++) {\n wrapper.deal(paragraphs[i]);\n }\n\n wrapper.send(); // 最后一行手动输出\n\n // 如果对应的配置宽度不可用,那么需要额外进行一次对齐\n const directionEnable = frame.layoutDirection === 'horizontal' ? richTextWidthEnable : richTextHeightEnable;\n if (!directionEnable) {\n // 使用实际宽度\n const frameSize = frame.getActualSizeWidthEllipsis();\n let offsetSize = frame.layoutDirection === 'horizontal' ? frameSize.width : frameSize.height;\n // 如果最大值可用\n if (frame.layoutDirection === 'horizontal' ? maxWidthFinite : maxHeightFinite) {\n // 取2者中的较小值\n offsetSize = Math.min(\n offsetSize,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n frame.layoutDirection === 'horizontal' ? maxWidth : maxHeight\n );\n }\n\n frame.lines.forEach(function (l) {\n l.calcOffset(offsetSize, false);\n });\n }\n\n this._frameCache = frame;\n\n // this.bindIconEvent();\n }\n\n clone() {\n return new RichText({ ...this.attribute });\n }\n\n setStage(stage?: IStage, layer?: ILayer) {\n super.setStage(stage, layer);\n const frameCache = this.getFrameCache();\n // for (let i = 0; i < frameCache.icons.length; i++) {\n // const icon = frameCache.icons[i];\n // icon.setStage(stage, layer);\n // }\n frameCache.icons.forEach(icon => {\n icon.setStage(stage, layer);\n });\n }\n\n // richtext绑定icon交互事件,供外部调用\n bindIconEvent() {\n this.addEventListener('pointermove', (e: FederatedMouseEvent) => {\n const pickedIcon = this.pickIcon(e.global);\n if (pickedIcon && pickedIcon === this._currentHoverIcon) {\n // do nothing\n } else if (pickedIcon) {\n this._currentHoverIcon?.setHoverState(false);\n this._currentHoverIcon = pickedIcon;\n this._currentHoverIcon.setHoverState(true);\n this.stage?.setCursor(pickedIcon.attribute.cursor);\n this.stage?.renderNextFrame();\n } else if (!pickedIcon && this._currentHoverIcon) {\n this._currentHoverIcon.setHoverState(false);\n this._currentHoverIcon = null;\n this.stage?.setCursor();\n // console.log('setCursor()');\n\n this.stage?.renderNextFrame();\n }\n });\n\n this.addEventListener('pointerleave', (e: FederatedMouseEvent) => {\n if (this._currentHoverIcon) {\n this._currentHoverIcon.setHoverState(false);\n this._currentHoverIcon = null;\n this.stage?.setCursor();\n this.stage?.renderNextFrame();\n }\n });\n }\n\n pickIcon(point: EventPoint): IRichTextIcon | undefined {\n const frameCache = this.getFrameCache();\n const { e: x, f: y } = this.globalTransMatrix;\n // for (let i = 0; i < frameCache.icons.length; i++) {\n // const icon = frameCache.icons[i];\n // if (icon.containsPoint(point.x - x, point.y - y)) {\n // return icon;\n // }\n // }\n let pickIcon: IRichTextIcon | undefined;\n frameCache.icons.forEach(icon => {\n if (icon.AABBBounds.containsPoint({ x: point.x - x, y: point.y - y })) {\n pickIcon = icon;\n\n pickIcon.globalX = (pickIcon.attribute.x ?? 0) + x;\n pickIcon.globalY = (pickIcon.attribute.y ?? 0) + y;\n }\n });\n\n return pickIcon;\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return RichText.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createRichText(attributes: IRichTextGraphicAttribute): IRichText {\n return new RichText(attributes);\n}\n"]}
1
+ {"version":3,"sources":["../src/graphic/richtext.ts"],"names":[],"mappings":"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","file":"richtext.js","sourcesContent":["import { isNumber, type AABBBounds, type OBBBounds } from '@visactor/vutils';\nimport type {\n IRichText,\n IRichTextCharacter,\n RichTextGlobalAlignType,\n RichTextGlobalBaselineType,\n RichTextVerticalDirection,\n RichTextWordBreak,\n IRichTextGraphicAttribute,\n IRichTextImageCharacter,\n IRichTextParagraphCharacter,\n IStage,\n ILayer,\n IRichTextIcon,\n EventPoint\n} from '../interface';\nimport { Graphic, GRAPHIC_UPDATE_TAG_KEY, NOWORK_ANIMATE_ATTR } from './graphic';\nimport { DefaultRichTextAttribute } from './config';\nimport Frame from './richtext/frame';\nimport Paragraph from './richtext/paragraph';\nimport Wrapper from './richtext/wrapper';\nimport { getTheme } from './theme';\nimport { RichTextIcon } from './richtext/icon';\nimport type { FederatedMouseEvent } from '../event';\nimport { application } from '../application';\nimport { parsePadding } from '../common/utils';\nimport { RICHTEXT_NUMBER_TYPE } from './constants';\n\nconst RICHTEXT_UPDATE_TAG_KEY = [\n 'width',\n 'height',\n 'ellipsis',\n 'wordBreak',\n 'verticalDirection',\n 'maxHeight',\n 'maxWidth',\n 'textAlign',\n 'textBaseline',\n 'textConfig',\n 'layoutDirection',\n ...GRAPHIC_UPDATE_TAG_KEY\n];\n\nexport class RichText extends Graphic<IRichTextGraphicAttribute> implements IRichText {\n type: 'richtext' = 'richtext';\n\n _frameCache: Frame; // 富文本布局画布\n _currentHoverIcon: IRichTextIcon | null = null;\n\n static NOWORK_ANIMATE_ATTR = {\n ellipsis: 1,\n wordBreak: 1,\n verticalDirection: 1,\n textAlign: 1,\n textBaseline: 1,\n textConfig: 1,\n layoutDirection: 1,\n ...NOWORK_ANIMATE_ATTR\n };\n\n constructor(params?: IRichTextGraphicAttribute) {\n super(params);\n this.numberType = RICHTEXT_NUMBER_TYPE;\n }\n\n get width(): number {\n return this.attribute.width ?? DefaultRichTextAttribute.width;\n }\n set width(w: number) {\n if (this.attribute.width === w) {\n return;\n }\n this.attribute.width = w;\n this.addUpdateShapeAndBoundsTag();\n }\n get height(): number {\n return this.attribute.height ?? DefaultRichTextAttribute.height;\n }\n set height(h: number) {\n if (this.attribute.height === h) {\n return;\n }\n this.attribute.height = h;\n this.addUpdateShapeAndBoundsTag();\n }\n get maxWidth(): number | undefined {\n return this.attribute.maxWidth;\n }\n set maxWidth(mw: number | undefined) {\n if (this.attribute.maxWidth === mw) {\n return;\n }\n this.attribute.maxWidth = mw;\n this.addUpdateShapeAndBoundsTag();\n }\n get maxHeight(): number | undefined {\n return this.attribute.maxHeight;\n }\n set maxHeight(mh: number | undefined) {\n if (this.attribute.maxHeight === mh) {\n return;\n }\n this.attribute.maxHeight = mh;\n this.addUpdateShapeAndBoundsTag();\n }\n get ellipsis(): boolean | string {\n return this.attribute.ellipsis ?? DefaultRichTextAttribute.ellipsis;\n }\n set ellipsis(e: boolean | string) {\n if (this.attribute.ellipsis === e) {\n return;\n }\n this.attribute.ellipsis = e;\n this.addUpdateShapeAndBoundsTag();\n }\n get wordBreak(): RichTextWordBreak {\n return this.attribute.wordBreak ?? DefaultRichTextAttribute.wordBreak;\n }\n set wordBreak(wb: RichTextWordBreak) {\n if (this.attribute.wordBreak === wb) {\n return;\n }\n this.attribute.wordBreak = wb;\n this.addUpdateShapeAndBoundsTag();\n }\n get verticalDirection(): RichTextVerticalDirection {\n return this.attribute.verticalDirection ?? DefaultRichTextAttribute.verticalDirection;\n }\n set verticalDirection(vd: RichTextVerticalDirection) {\n if (this.attribute.verticalDirection === vd) {\n return;\n }\n this.attribute.verticalDirection = vd;\n this.addUpdateShapeAndBoundsTag();\n }\n get textAlign(): RichTextGlobalAlignType {\n return this.attribute.textAlign ?? DefaultRichTextAttribute.textAlign;\n }\n set textAlign(align: RichTextGlobalAlignType) {\n if (this.attribute.textAlign === align) {\n return;\n }\n this.attribute.textAlign = align;\n this.addUpdateShapeAndBoundsTag();\n }\n get textBaseline(): RichTextGlobalBaselineType {\n return this.attribute.textBaseline ?? DefaultRichTextAttribute.textBaseline;\n }\n set textBaseline(baseline: RichTextGlobalBaselineType) {\n if (this.attribute.textBaseline === baseline) {\n return;\n }\n this.attribute.textBaseline = baseline;\n this.addUpdateShapeAndBoundsTag();\n }\n get textConfig(): IRichTextCharacter[] {\n return this.attribute.textConfig ?? DefaultRichTextAttribute.textConfig;\n }\n set textConfig(config: IRichTextCharacter[]) {\n this.attribute.textConfig = config;\n this.addUpdateShapeAndBoundsTag();\n }\n\n protected doUpdateAABBBounds(): AABBBounds {\n const richTextTheme = getTheme(this).richtext;\n this._AABBBounds.clear();\n const attribute = this.attribute;\n const bounds = application.graphicService.updateRichTextAABBBounds(\n attribute,\n getTheme(this).richtext,\n this._AABBBounds,\n this\n ) as AABBBounds;\n\n const { boundsPadding = richTextTheme.boundsPadding } = attribute;\n const paddingArray = parsePadding(boundsPadding);\n if (paddingArray) {\n bounds.expand(paddingArray);\n }\n\n this.clearUpdateBoundTag();\n return bounds;\n }\n\n protected tryUpdateOBBBounds(): OBBBounds {\n throw new Error('暂不支持');\n }\n\n getDefaultAttribute(name: string) {\n return DefaultRichTextAttribute[name];\n }\n\n protected needUpdateTags(keys: string[]): boolean {\n return super.needUpdateTags(keys, RICHTEXT_UPDATE_TAG_KEY);\n }\n protected needUpdateTag(key: string): boolean {\n return super.needUpdateTag(key, RICHTEXT_UPDATE_TAG_KEY);\n }\n getFrameCache(): Frame {\n if (this.shouldUpdateShape()) {\n this.doUpdateFrameCache();\n this.clearUpdateShapeTag();\n }\n return this._frameCache;\n }\n doUpdateFrameCache() {\n // 1. 测量,生成paragraph\n const {\n textConfig = [],\n maxWidth,\n maxHeight,\n width,\n height,\n ellipsis,\n wordBreak,\n verticalDirection,\n textAlign,\n textBaseline,\n layoutDirection,\n singleLine\n } = this.attribute;\n const paragraphs: (Paragraph | RichTextIcon)[] = [];\n\n for (let i = 0; i < textConfig.length; i++) {\n if ('image' in textConfig[i]) {\n const config = textConfig[i] as IRichTextImageCharacter;\n // 直接创建icon Mark\n const iconCache =\n config.id && this._frameCache && this._frameCache.icons && this._frameCache.icons.get(config.id);\n if (iconCache) {\n paragraphs.push(iconCache as RichTextIcon);\n } else {\n const icon = new RichTextIcon(config);\n icon.successCallback = () => {\n this.addUpdateBoundTag();\n this.stage?.renderNextFrame();\n };\n icon.richtextId = config.id;\n paragraphs.push(icon);\n }\n } else {\n const richTextConfig = textConfig[i] as IRichTextParagraphCharacter;\n if (isNumber(richTextConfig.text)) {\n richTextConfig.text = `${richTextConfig.text}`;\n }\n if (richTextConfig.text && richTextConfig.text.includes('\\n')) {\n // 如果有文字内有换行符,将该段文字切为多段,并在后一段加入newLine标记\n const textParts = richTextConfig.text.split('\\n');\n for (let j = 0; j < textParts.length; j++) {\n paragraphs.push(new Paragraph(textParts[j], j !== 0, richTextConfig));\n }\n } else if (richTextConfig.text) {\n paragraphs.push(new Paragraph(richTextConfig.text, false, richTextConfig));\n }\n }\n }\n\n // 2. 布局,生成frame\n // const frameHeight =\n // typeof maxHeight === 'number' && (!height || height > maxHeight) // height = 0或height>maxHeight,使用maxHeight布局\n // ? maxHeight\n // : height;\n // const frameWidth =\n // typeof maxWidth === 'number' && (!width || width > maxWidth) // height = 0或height>maxWidth,使用maxWidth布局\n // ? maxWidth\n // : width;\n\n const maxWidthFinite = typeof maxWidth === 'number' && Number.isFinite(maxWidth) && maxWidth > 0;\n const maxHeightFinite = typeof maxHeight === 'number' && Number.isFinite(maxHeight) && maxHeight > 0;\n\n const richTextWidthEnable =\n typeof width === 'number' &&\n Number.isFinite(width) &&\n width > 0 &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (!maxWidthFinite || width <= maxWidth);\n const richTextHeightEnable =\n typeof height === 'number' &&\n Number.isFinite(height) &&\n height > 0 &&\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n (!maxHeightFinite || height <= maxHeight);\n\n const frameWidth = richTextWidthEnable ? width : maxWidthFinite ? maxWidth : 0;\n const frameHeight = richTextHeightEnable ? height : maxHeightFinite ? maxHeight : 0;\n\n const frame = new Frame(\n 0,\n 0,\n frameWidth || 0,\n frameHeight || 0,\n ellipsis,\n wordBreak,\n verticalDirection,\n textAlign,\n textBaseline,\n layoutDirection || 'horizontal',\n // typeof maxWidth === 'number' && (!width || width > maxWidth),\n // typeof maxHeight === 'number' && (!height || height > maxHeight),\n !richTextWidthEnable && maxWidthFinite,\n !richTextHeightEnable && maxHeightFinite,\n singleLine || false,\n this._frameCache?.icons\n );\n const wrapper = new Wrapper(frame);\n for (let i = 0; i < paragraphs.length; i++) {\n wrapper.deal(paragraphs[i]);\n }\n\n wrapper.send(); // 最后一行手动输出\n\n // 如果对应的配置宽度不可用,那么需要额外进行一次对齐\n const directionEnable = frame.layoutDirection === 'horizontal' ? richTextWidthEnable : richTextHeightEnable;\n if (!directionEnable) {\n // 使用实际宽度\n const frameSize = frame.getActualSizeWidthEllipsis();\n let offsetSize = frame.layoutDirection === 'horizontal' ? frameSize.width : frameSize.height;\n // 如果最大值可用\n if (frame.layoutDirection === 'horizontal' ? maxWidthFinite : maxHeightFinite) {\n // 取2者中的较小值\n offsetSize = Math.min(\n offsetSize,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n frame.layoutDirection === 'horizontal' ? maxWidth : maxHeight\n );\n }\n\n frame.lines.forEach(function (l) {\n l.calcOffset(offsetSize, false);\n });\n }\n\n this._frameCache = frame;\n\n // this.bindIconEvent();\n }\n\n clone() {\n return new RichText({ ...this.attribute });\n }\n\n setStage(stage?: IStage, layer?: ILayer) {\n super.setStage(stage, layer);\n const frameCache = this.getFrameCache();\n // for (let i = 0; i < frameCache.icons.length; i++) {\n // const icon = frameCache.icons[i];\n // icon.setStage(stage, layer);\n // }\n frameCache.icons.forEach(icon => {\n icon.setStage(stage, layer);\n });\n }\n\n // richtext绑定icon交互事件,供外部调用\n bindIconEvent() {\n this.addEventListener('pointermove', (e: FederatedMouseEvent) => {\n const pickedIcon = this.pickIcon(e.global);\n if (pickedIcon && pickedIcon === this._currentHoverIcon) {\n // do nothing\n } else if (pickedIcon) {\n this._currentHoverIcon?.setHoverState(false);\n this._currentHoverIcon = pickedIcon;\n this._currentHoverIcon.setHoverState(true);\n this.stage?.setCursor(pickedIcon.attribute.cursor);\n this.stage?.renderNextFrame();\n } else if (!pickedIcon && this._currentHoverIcon) {\n this._currentHoverIcon.setHoverState(false);\n this._currentHoverIcon = null;\n this.stage?.setCursor();\n // console.log('setCursor()');\n\n this.stage?.renderNextFrame();\n }\n });\n\n this.addEventListener('pointerleave', (e: FederatedMouseEvent) => {\n if (this._currentHoverIcon) {\n this._currentHoverIcon.setHoverState(false);\n this._currentHoverIcon = null;\n this.stage?.setCursor();\n this.stage?.renderNextFrame();\n }\n });\n }\n\n pickIcon(point: EventPoint): IRichTextIcon | undefined {\n const frameCache = this.getFrameCache();\n const { e: x, f: y } = this.globalTransMatrix;\n // for (let i = 0; i < frameCache.icons.length; i++) {\n // const icon = frameCache.icons[i];\n // if (icon.containsPoint(point.x - x, point.y - y)) {\n // return icon;\n // }\n // }\n let pickIcon: IRichTextIcon | undefined;\n frameCache.icons.forEach(icon => {\n if (icon.AABBBounds.containsPoint({ x: point.x - x, y: point.y - y })) {\n pickIcon = icon;\n\n pickIcon.globalX = (pickIcon.attribute.x ?? 0) + x;\n pickIcon.globalY = (pickIcon.attribute.y ?? 0) + y;\n }\n });\n\n return pickIcon;\n }\n\n getNoWorkAnimateAttr(): Record<string, number> {\n return RichText.NOWORK_ANIMATE_ATTR;\n }\n}\n\nexport function createRichText(attributes: IRichTextGraphicAttribute): IRichText {\n return new RichText(attributes);\n}\n"]}
package/cjs/index.d.ts CHANGED
@@ -27,6 +27,7 @@ export * from './common/utils';
27
27
  export * from './common/shape/arc';
28
28
  export * from './common/shape/rect';
29
29
  export * from './common/matrix';
30
+ export * from './common/simplify';
30
31
  export * from './common/path-svg';
31
32
  export * from './common/render-curve';
32
33
  export * from './common/render-area';
package/cjs/index.js CHANGED
@@ -31,14 +31,14 @@ __exportStar(require("./common/custom-path2d"), exports), __exportStar(require("
31
31
  __exportStar(require("./common/canvas-utils"), exports), __exportStar(require("./common/contribution-provider"), exports),
32
32
  __exportStar(require("./common/generator"), exports), __exportStar(require("./common/utils"), exports),
33
33
  __exportStar(require("./common/shape/arc"), exports), __exportStar(require("./common/shape/rect"), exports),
34
- __exportStar(require("./common/matrix"), exports), __exportStar(require("./common/path-svg"), exports),
35
- __exportStar(require("./common/render-curve"), exports), __exportStar(require("./common/render-area"), exports),
36
- __exportStar(require("./common/render-command-list"), exports), __exportStar(require("./common/sort"), exports),
37
- __exportStar(require("./common/morphing-utils"), exports), __exportStar(require("./common/split-path"), exports),
38
- __exportStar(require("./common/enums"), exports), __exportStar(require("./common/generator"), exports),
39
- __exportStar(require("./plugins/constants"), exports), __exportStar(require("./allocator/matrix-allocate"), exports),
40
- __exportStar(require("./allocator/canvas-allocate"), exports), __exportStar(require("./allocator/graphic-allocate"), exports),
41
- __exportStar(require("./animate/default-ticker"), exports);
34
+ __exportStar(require("./common/matrix"), exports), __exportStar(require("./common/simplify"), exports),
35
+ __exportStar(require("./common/path-svg"), exports), __exportStar(require("./common/render-curve"), exports),
36
+ __exportStar(require("./common/render-area"), exports), __exportStar(require("./common/render-command-list"), exports),
37
+ __exportStar(require("./common/sort"), exports), __exportStar(require("./common/morphing-utils"), exports),
38
+ __exportStar(require("./common/split-path"), exports), __exportStar(require("./common/enums"), exports),
39
+ __exportStar(require("./common/generator"), exports), __exportStar(require("./plugins/constants"), exports),
40
+ __exportStar(require("./allocator/matrix-allocate"), exports), __exportStar(require("./allocator/canvas-allocate"), exports),
41
+ __exportStar(require("./allocator/graphic-allocate"), exports), __exportStar(require("./animate/default-ticker"), exports);
42
42
 
43
43
  var util_1 = require("./canvas/util");
44
44
 
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,qBAAmB;AAEnB,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,4EAA0D;AAC1D,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB;AACzB,4CAA0B;AAC1B,2DAAyC;AACzC,iDAA+B;AAG/B,gDAA8B;AAC9B,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,mDAAiC;AACjC,wDAAsC;AACtC,iEAA+C;AAC/C,qDAAmC;AACnC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AACpC,kDAAgC;AAEhC,oDAAkC;AAClC,wDAAsC;AACtC,uDAAqC;AACrC,+DAA6C;AAC7C,gDAA8B;AAC9B,0DAAwC;AACxC,sDAAoC;AACpC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AACpC,8DAA4C;AAC5C,8DAA4C;AAC5C,+DAA6C;AAE7C,2DAAyC;AACzC,sCAAwD;AAA/C,kGAAA,UAAU,OAAA;AAAE,mGAAA,WAAW,OAAA;AAChC,+CAA6B;AAC7B,0DAAwC;AACxC,8CAA4B;AAC5B,gDAA8B;AAC9B,8CAA4B;AAE5B,2EAAyD;AACzD,4EAA0D;AAC1D,4EAA0D;AAC1D,4EAA0D;AAC1D,8EAA4D;AAC5D,8EAA4D;AAC5D,4EAA0D;AAC1D,4EAA0D;AAC1D,+EAA6D;AAC7D,6EAA2D;AAC3D,gFAA8D;AAC9D,6EAA2D;AAC3D,8EAA4D;AAC5D,6EAA2D;AAC3D,iFAA+D;AAE/D,0DAAwC;AACxC,4DAA0C;AAC1C,2DAAyC;AACzC,6DAA2C;AAC3C,4DAA0C;AAC1C,4DAA0C;AAC1C,4DAA0C;AAC1C,2DAAyC;AACzC,2DAAyC;AACzC,8DAA4C;AAC5C,gEAA8C;AAC9C,2DAAyC;AACzC,6DAA2C;AAC3C,+DAA6C;AAC7C,6DAA2C;AAC3C,2DAAyC;AACzC,iEAA+C;AAC/C,+DAA6C","file":"index.js","sourcesContent":["// import 'core-js/proposals/reflect-metadata';\nimport './modules';\n\nexport * from './container';\nexport * from './core/global';\nexport * from './graphic';\nexport * from './modules';\nexport * from './create';\nexport * from './event';\nexport * from './interface';\nexport * from './render';\nexport * from './render/contributions/render/base-render';\nexport * from './canvas';\nexport * from './core';\nexport * from './picker';\nexport * from './animate';\nexport * from './resource-loader/loader';\nexport * from './color-string';\n\n/* export common */\nexport * from './common/text';\nexport * from './common/bezier-utils';\nexport * from './common/bounds-context';\nexport * from './common/seg-context';\nexport * from './common/custom-path2d';\nexport * from './common/segment';\nexport * from './common/canvas-utils';\nexport * from './common/contribution-provider';\nexport * from './common/generator';\nexport * from './common/utils';\nexport * from './common/shape/arc';\nexport * from './common/shape/rect';\nexport * from './common/matrix';\n\nexport * from './common/path-svg';\nexport * from './common/render-curve';\nexport * from './common/render-area';\nexport * from './common/render-command-list';\nexport * from './common/sort';\nexport * from './common/morphing-utils';\nexport * from './common/split-path';\nexport * from './common/enums';\nexport * from './common/generator';\nexport * from './plugins/constants';\nexport * from './allocator/matrix-allocate';\nexport * from './allocator/canvas-allocate';\nexport * from './allocator/graphic-allocate';\n\nexport * from './animate/default-ticker';\nexport { wrapCanvas, wrapContext } from './canvas/util';\nexport * from './common/xml';\nexport * from './common/inversify-lite';\nexport * from './constants';\nexport * from './application';\nexport * from './env-check';\n\nexport * from './render/contributions/render/arc-module';\nexport * from './render/contributions/render/rect-module';\nexport * from './render/contributions/render/line-module';\nexport * from './render/contributions/render/area-module';\nexport * from './render/contributions/render/symbol-module';\nexport * from './render/contributions/render/circle-module';\nexport * from './render/contributions/render/text-module';\nexport * from './render/contributions/render/path-module';\nexport * from './render/contributions/render/polygon-module';\nexport * from './render/contributions/render/glyph-module';\nexport * from './render/contributions/render/richtext-module';\nexport * from './render/contributions/render/image-module';\nexport * from './render/contributions/render/rect3d-module';\nexport * from './render/contributions/render/arc3d-module';\nexport * from './render/contributions/render/pyramid3d-module';\n\nexport * from './register/register-arc';\nexport * from './register/register-arc3d';\nexport * from './register/register-area';\nexport * from './register/register-circle';\nexport * from './register/register-glyph';\nexport * from './register/register-group';\nexport * from './register/register-image';\nexport * from './register/register-line';\nexport * from './register/register-path';\nexport * from './register/register-polygon';\nexport * from './register/register-pyramid3d';\nexport * from './register/register-rect';\nexport * from './register/register-rect3d';\nexport * from './register/register-richtext';\nexport * from './register/register-symbol';\nexport * from './register/register-text';\nexport * from './register/register-shadowRoot';\nexport * from './register/register-wraptext';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,qBAAmB;AAEnB,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,4EAA0D;AAC1D,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB;AACzB,4CAA0B;AAC1B,2DAAyC;AACzC,iDAA+B;AAG/B,gDAA8B;AAC9B,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC;AACvC,mDAAiC;AACjC,wDAAsC;AACtC,iEAA+C;AAC/C,qDAAmC;AACnC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AACpC,kDAAgC;AAChC,oDAAkC;AAElC,oDAAkC;AAClC,wDAAsC;AACtC,uDAAqC;AACrC,+DAA6C;AAC7C,gDAA8B;AAC9B,0DAAwC;AACxC,sDAAoC;AACpC,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AACpC,8DAA4C;AAC5C,8DAA4C;AAC5C,+DAA6C;AAE7C,2DAAyC;AACzC,sCAAwD;AAA/C,kGAAA,UAAU,OAAA;AAAE,mGAAA,WAAW,OAAA;AAChC,+CAA6B;AAC7B,0DAAwC;AACxC,8CAA4B;AAC5B,gDAA8B;AAC9B,8CAA4B;AAE5B,2EAAyD;AACzD,4EAA0D;AAC1D,4EAA0D;AAC1D,4EAA0D;AAC1D,8EAA4D;AAC5D,8EAA4D;AAC5D,4EAA0D;AAC1D,4EAA0D;AAC1D,+EAA6D;AAC7D,6EAA2D;AAC3D,gFAA8D;AAC9D,6EAA2D;AAC3D,8EAA4D;AAC5D,6EAA2D;AAC3D,iFAA+D;AAE/D,0DAAwC;AACxC,4DAA0C;AAC1C,2DAAyC;AACzC,6DAA2C;AAC3C,4DAA0C;AAC1C,4DAA0C;AAC1C,4DAA0C;AAC1C,2DAAyC;AACzC,2DAAyC;AACzC,8DAA4C;AAC5C,gEAA8C;AAC9C,2DAAyC;AACzC,6DAA2C;AAC3C,+DAA6C;AAC7C,6DAA2C;AAC3C,2DAAyC;AACzC,iEAA+C;AAC/C,+DAA6C","file":"index.js","sourcesContent":["// import 'core-js/proposals/reflect-metadata';\nimport './modules';\n\nexport * from './container';\nexport * from './core/global';\nexport * from './graphic';\nexport * from './modules';\nexport * from './create';\nexport * from './event';\nexport * from './interface';\nexport * from './render';\nexport * from './render/contributions/render/base-render';\nexport * from './canvas';\nexport * from './core';\nexport * from './picker';\nexport * from './animate';\nexport * from './resource-loader/loader';\nexport * from './color-string';\n\n/* export common */\nexport * from './common/text';\nexport * from './common/bezier-utils';\nexport * from './common/bounds-context';\nexport * from './common/seg-context';\nexport * from './common/custom-path2d';\nexport * from './common/segment';\nexport * from './common/canvas-utils';\nexport * from './common/contribution-provider';\nexport * from './common/generator';\nexport * from './common/utils';\nexport * from './common/shape/arc';\nexport * from './common/shape/rect';\nexport * from './common/matrix';\nexport * from './common/simplify';\n\nexport * from './common/path-svg';\nexport * from './common/render-curve';\nexport * from './common/render-area';\nexport * from './common/render-command-list';\nexport * from './common/sort';\nexport * from './common/morphing-utils';\nexport * from './common/split-path';\nexport * from './common/enums';\nexport * from './common/generator';\nexport * from './plugins/constants';\nexport * from './allocator/matrix-allocate';\nexport * from './allocator/canvas-allocate';\nexport * from './allocator/graphic-allocate';\n\nexport * from './animate/default-ticker';\nexport { wrapCanvas, wrapContext } from './canvas/util';\nexport * from './common/xml';\nexport * from './common/inversify-lite';\nexport * from './constants';\nexport * from './application';\nexport * from './env-check';\n\nexport * from './render/contributions/render/arc-module';\nexport * from './render/contributions/render/rect-module';\nexport * from './render/contributions/render/line-module';\nexport * from './render/contributions/render/area-module';\nexport * from './render/contributions/render/symbol-module';\nexport * from './render/contributions/render/circle-module';\nexport * from './render/contributions/render/text-module';\nexport * from './render/contributions/render/path-module';\nexport * from './render/contributions/render/polygon-module';\nexport * from './render/contributions/render/glyph-module';\nexport * from './render/contributions/render/richtext-module';\nexport * from './render/contributions/render/image-module';\nexport * from './render/contributions/render/rect3d-module';\nexport * from './render/contributions/render/arc3d-module';\nexport * from './render/contributions/render/pyramid3d-module';\n\nexport * from './register/register-arc';\nexport * from './register/register-arc3d';\nexport * from './register/register-area';\nexport * from './register/register-circle';\nexport * from './register/register-glyph';\nexport * from './register/register-group';\nexport * from './register/register-image';\nexport * from './register/register-line';\nexport * from './register/register-path';\nexport * from './register/register-polygon';\nexport * from './register/register-pyramid3d';\nexport * from './register/register-rect';\nexport * from './register/register-rect3d';\nexport * from './register/register-richtext';\nexport * from './register/register-symbol';\nexport * from './register/register-text';\nexport * from './register/register-shadowRoot';\nexport * from './register/register-wraptext';\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interface/graphic/richText.ts"],"names":[],"mappings":"","file":"richText.js","sourcesContent":["import type { IColor } from '../color';\nimport type { IContext2d } from '../context';\nimport type { IGraphicAttribute, IGraphic } from '../graphic';\nimport type { IImage, IImageGraphicAttribute } from './image';\nimport type { ITextGraphicAttribute } from './text';\n\nexport type IRichTextAttribute = {\n width: number;\n height: number;\n ellipsis: boolean | string;\n wordBreak: RichTextWordBreak;\n verticalDirection: RichTextVerticalDirection;\n maxHeight: number;\n maxWidth: number;\n textAlign: RichTextGlobalAlignType;\n textBaseline: RichTextGlobalBaselineType;\n layoutDirection: RichTextLayoutDirectionType;\n textConfig: IRichTextCharacter[];\n singleLine: boolean;\n};\n\nexport type IRichTextGraphicAttribute = Partial<IGraphicAttribute> & Partial<IRichTextAttribute>;\n\nexport type RichTextWordBreak = 'break-word' | 'break-all';\nexport type RichTextVerticalDirection = 'top' | 'middle' | 'bottom';\nexport type RichTextGlobalAlignType = 'left' | 'right' | 'center';\nexport type RichTextGlobalBaselineType = 'top' | 'middle' | 'bottom';\nexport type RichTextLayoutDirectionType = 'horizontal' | 'vertical';\nexport type RichTextFontStyle = 'normal' | 'italic' | 'oblique';\nexport type RichTextTextDecoration = 'none' | 'underline' | 'line-through';\n// export type RichTextTextAlign = 'left' | 'right' | 'center';\nexport type RichTextScript = 'normal' | 'sub' | 'super';\n\nexport type IRichTextBasicCharacter = {\n lineHeight?: number | string;\n textAlign?: CanvasTextAlign; // left, right, center\n textBaseline?: CanvasTextBaseline;\n direction?: RichTextLayoutDirectionType;\n};\n\nexport type IRichTextParagraphCharacter = IRichTextBasicCharacter & {\n text: string | number;\n fontSize?: number;\n fontFamily?: string;\n fill?: IColor | boolean;\n stroke?: IColor | boolean;\n fontWeight?: string;\n // lineHeight?: number;\n fontStyle?: RichTextFontStyle; // normal, italic, oblique\n textDecoration?: RichTextTextDecoration; // none, underline, line-through\n // textAlign?: RichTextTextAlign; // left, right, center\n script?: RichTextScript; // normal, sub, super\n underline?: boolean;\n lineThrough?: boolean;\n // direction?: RichTextLayoutDirectionType;\n};\n\nexport type IRichTextImageCharacter = IRichTextBasicCharacter & {\n // 图片基础属性\n image: string | HTMLImageElement | HTMLCanvasElement;\n width: number;\n height: number;\n\n // hover相关属性\n // backgroundShow?: boolean; // 是否显示background\n backgroundShowMode?: 'always' | 'hover';\n backgroundFill?: boolean | IColor; // 背景矩形填充颜色\n backgroundFillOpacity?: number; // 背景矩形填充透明度\n backgroundStroke?: boolean | IColor; // 背景矩形边框颜色\n backgroundStrokeOpacity?: number; // 背景矩形边框透明度\n backgroundRadius?: number; // 背景矩形圆角\n // background size 同时控制了该icon的响应范围\n backgroundWidth?: number;\n backgroundHeight?: number;\n\n // 唯一标识符\n id?: string;\n\n // lineHeight?: number;\n // textAlign?: RichTextTextAlign; // left, right, center\n // direction?: RichTextLayoutDirectionType;\n margin?: number | number[];\n\n funcType?: string;\n hoverImage?: string | HTMLImageElement | HTMLCanvasElement;\n};\n\nexport type IRichTextCharacter = IRichTextParagraphCharacter | IRichTextImageCharacter;\n\nexport type IRichTextIconGraphicAttribute = IImageGraphicAttribute & {\n id?: string;\n backgroundShowMode?: 'always' | 'hover' | 'never';\n backgroundFill?: boolean | IColor; // 背景矩形填充颜色\n backgroundFillOpacity?: number; // 背景矩形填充透明度\n backgroundStroke?: boolean | IColor; // 背景矩形边框颜色\n backgroundStrokeOpacity?: number; // 背景矩形边框透明度\n backgroundRadius?: number; // 背景矩形圆角\n backgroundWidth?: number;\n backgroundHeight?: number;\n\n // lineHeight?: number;\n textAlign?: CanvasTextAlign; // left, right, center\n textBaseline?: CanvasTextBaseline;\n direction?: RichTextLayoutDirectionType;\n\n margin?: number | number[];\n\n // backgroundShow?: boolean;\n};\n\nexport interface IRichTextParagraph {\n text: string;\n ascent: number;\n descent: number;\n width: number;\n height: number;\n lineHeight: number;\n fontSize: number;\n length: number;\n newLine: boolean;\n character: IRichTextParagraphCharacter;\n left: number;\n top: number;\n direction?: 'horizontal' | 'vertical';\n widthOrigin?: number;\n heightOrigin?: number;\n textBaseline?: CanvasTextBaseline;\n ellipsis: 'normal' | 'add' | 'replace' | 'hide';\n ellipsisWidth: number;\n ellipsisOtherParagraphWidth: number;\n verticalEllipsis?: boolean;\n updateWidth: () => void;\n draw: (ctx: IContext2d, baseline: number, deltaLeft: number, isLineFirst: boolean, textAlign: string) => void;\n getWidthWithEllips: (direction: string) => number;\n}\n\nexport interface IRichTextLine {\n left: number;\n top: number;\n width: number;\n height: number;\n baseline: number;\n ascent: number;\n descent: number;\n paragraphs: (IRichTextParagraph | IRichTextIcon)[];\n actualWidth: number;\n blankWidth: number;\n textAlign: string;\n direction: 'horizontal' | 'vertical';\n directionKey: {\n width: string;\n height: string;\n left: string;\n x: string;\n y: string;\n };\n draw: (\n ctx: IContext2d,\n lastLine: boolean,\n x: number,\n y: number,\n drawIcon: (icon: IRichTextIcon, context: IContext2d, x: number, y: number, baseline: number) => void\n ) => void;\n getWidthWithEllips: () => number;\n}\n\nexport interface IRichTextFrame {\n left: number;\n top: number;\n bottom: number;\n right: number;\n width: number;\n height: number;\n actualHeight: number;\n ellipsis: boolean | string;\n wordBreak: 'break-word' | 'break-all';\n verticalDirection: 'top' | 'middle' | 'bottom';\n lines: IRichTextLine[];\n globalAlign: 'left' | 'center' | 'right' | 'start' | 'end';\n globalBaseline: 'top' | 'middle' | 'bottom';\n layoutDirection: 'horizontal' | 'vertical';\n directionKey: {\n width: string;\n height: string;\n left: string;\n top: string;\n bottom: string;\n };\n isWidthMax: boolean;\n isHeightMax: boolean;\n singleLine: boolean;\n icons: Map<string, IRichTextIcon>;\n draw: (\n ctx: IContext2d,\n drawIcon: (icon: IRichTextIcon, context: IContext2d, x: number, y: number, baseline: number) => void\n ) => boolean;\n getActualSize: () => {\n width: number;\n height: number;\n };\n getRawActualSize: () => {\n width: number;\n height: number;\n };\n getActualSizeWidthEllipsis: () => {\n width: number;\n height: number;\n };\n}\n\nexport interface IRichText extends IGraphic<IRichTextGraphicAttribute> {\n getFrameCache: () => IRichTextFrame;\n}\n\nexport interface IRichTextIcon extends IImage {\n attribute: IRichTextIconGraphicAttribute;\n richtextId?: string;\n globalX?: number;\n globalY?: number;\n\n _x: number;\n _y: number;\n _hovered: boolean;\n _marginArray: [number, number, number, number];\n\n setHoverState: (hovered: boolean) => void;\n}\n"]}
1
+ {"version":3,"sources":["../src/interface/graphic/richText.ts"],"names":[],"mappings":"","file":"richText.js","sourcesContent":["import type { IColor } from '../color';\nimport type { IContext2d } from '../context';\nimport type { IGraphicAttribute, IGraphic } from '../graphic';\nimport type { IImage, IImageGraphicAttribute } from './image';\n\nexport type IRichTextAttribute = {\n width: number;\n height: number;\n ellipsis: boolean | string;\n wordBreak: RichTextWordBreak;\n verticalDirection: RichTextVerticalDirection;\n maxHeight: number;\n maxWidth: number;\n textAlign: RichTextGlobalAlignType;\n textBaseline: RichTextGlobalBaselineType;\n layoutDirection: RichTextLayoutDirectionType;\n textConfig: IRichTextCharacter[];\n singleLine: boolean;\n};\n\nexport type IRichTextGraphicAttribute = Partial<IGraphicAttribute> & Partial<IRichTextAttribute>;\n\nexport type RichTextWordBreak = 'break-word' | 'break-all';\nexport type RichTextVerticalDirection = 'top' | 'middle' | 'bottom';\nexport type RichTextGlobalAlignType = 'left' | 'right' | 'center';\nexport type RichTextGlobalBaselineType = 'top' | 'middle' | 'bottom';\nexport type RichTextLayoutDirectionType = 'horizontal' | 'vertical';\nexport type RichTextFontStyle = 'normal' | 'italic' | 'oblique';\nexport type RichTextTextDecoration = 'none' | 'underline' | 'line-through';\n// export type RichTextTextAlign = 'left' | 'right' | 'center';\nexport type RichTextScript = 'normal' | 'sub' | 'super';\n\nexport type IRichTextBasicCharacter = {\n lineHeight?: number | string;\n textAlign?: CanvasTextAlign; // left, right, center\n textBaseline?: CanvasTextBaseline;\n direction?: RichTextLayoutDirectionType;\n};\n\nexport type IRichTextParagraphCharacter = IRichTextBasicCharacter & {\n text: string | number;\n fontSize?: number;\n fontFamily?: string;\n fill?: IColor | boolean;\n stroke?: IColor | boolean;\n fontWeight?: string;\n // lineHeight?: number;\n fontStyle?: RichTextFontStyle; // normal, italic, oblique\n textDecoration?: RichTextTextDecoration; // none, underline, line-through\n // textAlign?: RichTextTextAlign; // left, right, center\n script?: RichTextScript; // normal, sub, super\n underline?: boolean;\n lineThrough?: boolean;\n // direction?: RichTextLayoutDirectionType;\n};\n\nexport type IRichTextImageCharacter = IRichTextBasicCharacter & {\n // 图片基础属性\n image: string | HTMLImageElement | HTMLCanvasElement;\n width: number;\n height: number;\n\n // hover相关属性\n // backgroundShow?: boolean; // 是否显示background\n backgroundShowMode?: 'always' | 'hover';\n backgroundFill?: boolean | IColor; // 背景矩形填充颜色\n backgroundFillOpacity?: number; // 背景矩形填充透明度\n backgroundStroke?: boolean | IColor; // 背景矩形边框颜色\n backgroundStrokeOpacity?: number; // 背景矩形边框透明度\n backgroundRadius?: number; // 背景矩形圆角\n // background size 同时控制了该icon的响应范围\n backgroundWidth?: number;\n backgroundHeight?: number;\n\n // 唯一标识符\n id?: string;\n\n // lineHeight?: number;\n // textAlign?: RichTextTextAlign; // left, right, center\n // direction?: RichTextLayoutDirectionType;\n margin?: number | number[];\n\n funcType?: string;\n hoverImage?: string | HTMLImageElement | HTMLCanvasElement;\n};\n\nexport type IRichTextCharacter = IRichTextParagraphCharacter | IRichTextImageCharacter;\n\nexport type IRichTextIconGraphicAttribute = IImageGraphicAttribute & {\n id?: string;\n backgroundShowMode?: 'always' | 'hover' | 'never';\n backgroundFill?: boolean | IColor; // 背景矩形填充颜色\n backgroundFillOpacity?: number; // 背景矩形填充透明度\n backgroundStroke?: boolean | IColor; // 背景矩形边框颜色\n backgroundStrokeOpacity?: number; // 背景矩形边框透明度\n backgroundRadius?: number; // 背景矩形圆角\n backgroundWidth?: number;\n backgroundHeight?: number;\n\n // lineHeight?: number;\n textAlign?: CanvasTextAlign; // left, right, center\n textBaseline?: CanvasTextBaseline;\n direction?: RichTextLayoutDirectionType;\n\n margin?: number | number[];\n\n // backgroundShow?: boolean;\n};\n\nexport interface IRichTextParagraph {\n text: string;\n ascent: number;\n descent: number;\n width: number;\n height: number;\n lineHeight: number;\n fontSize: number;\n length: number;\n newLine: boolean;\n character: IRichTextParagraphCharacter;\n left: number;\n top: number;\n direction?: 'horizontal' | 'vertical';\n widthOrigin?: number;\n heightOrigin?: number;\n textBaseline?: CanvasTextBaseline;\n ellipsis: 'normal' | 'add' | 'replace' | 'hide';\n ellipsisWidth: number;\n ellipsisOtherParagraphWidth: number;\n verticalEllipsis?: boolean;\n updateWidth: () => void;\n draw: (ctx: IContext2d, baseline: number, deltaLeft: number, isLineFirst: boolean, textAlign: string) => void;\n getWidthWithEllips: (direction: string) => number;\n}\n\nexport interface IRichTextLine {\n left: number;\n top: number;\n width: number;\n height: number;\n baseline: number;\n ascent: number;\n descent: number;\n paragraphs: (IRichTextParagraph | IRichTextIcon)[];\n actualWidth: number;\n blankWidth: number;\n textAlign: string;\n direction: 'horizontal' | 'vertical';\n directionKey: {\n width: string;\n height: string;\n left: string;\n x: string;\n y: string;\n };\n draw: (\n ctx: IContext2d,\n lastLine: boolean,\n x: number,\n y: number,\n drawIcon: (icon: IRichTextIcon, context: IContext2d, x: number, y: number, baseline: number) => void\n ) => void;\n getWidthWithEllips: () => number;\n}\n\nexport interface IRichTextFrame {\n left: number;\n top: number;\n bottom: number;\n right: number;\n width: number;\n height: number;\n actualHeight: number;\n ellipsis: boolean | string;\n wordBreak: 'break-word' | 'break-all';\n verticalDirection: 'top' | 'middle' | 'bottom';\n lines: IRichTextLine[];\n globalAlign: 'left' | 'center' | 'right' | 'start' | 'end';\n globalBaseline: 'top' | 'middle' | 'bottom';\n layoutDirection: 'horizontal' | 'vertical';\n directionKey: {\n width: string;\n height: string;\n left: string;\n top: string;\n bottom: string;\n };\n isWidthMax: boolean;\n isHeightMax: boolean;\n singleLine: boolean;\n icons: Map<string, IRichTextIcon>;\n draw: (\n ctx: IContext2d,\n drawIcon: (icon: IRichTextIcon, context: IContext2d, x: number, y: number, baseline: number) => void\n ) => boolean;\n getActualSize: () => {\n width: number;\n height: number;\n };\n getRawActualSize: () => {\n width: number;\n height: number;\n };\n getActualSizeWidthEllipsis: () => {\n width: number;\n height: number;\n };\n}\n\nexport interface IRichText extends IGraphic<IRichTextGraphicAttribute> {\n getFrameCache: () => IRichTextFrame;\n}\n\nexport interface IRichTextIcon extends IImage {\n attribute: IRichTextIconGraphicAttribute;\n richtextId?: string;\n globalX?: number;\n globalY?: number;\n\n _x: number;\n _y: number;\n _hovered: boolean;\n _marginArray: [number, number, number, number];\n\n setHoverState: (hovered: boolean) => void;\n}\n"]}
@@ -55,10 +55,8 @@ let DefaultCanvasAreaRender = class extends base_render_1.BaseRender {
55
55
  }
56
56
  drawLinearAreaHighPerformance(area, context, fill, stroke, fillOpacity, strokeOpacity, offsetX, offsetY, areaAttribute, drawContext, params, fillCb, strokeCb) {
57
57
  var _a, _b, _c, _d, _e;
58
- const {points: points} = area.attribute;
59
- if (points.length < 2) return;
60
58
  context.beginPath();
61
- const z = null !== (_a = this.z) && void 0 !== _a ? _a : 0, startP = points[0];
59
+ const z = null !== (_a = this.z) && void 0 !== _a ? _a : 0, {points: points} = area.attribute, startP = points[0];
62
60
  context.moveTo(startP.x + offsetX, startP.y + offsetY, z);
63
61
  for (let i = 1; i < points.length; i++) {
64
62
  const p = points[i];
@@ -191,7 +189,6 @@ let DefaultCanvasAreaRender = class extends base_render_1.BaseRender {
191
189
  }
192
190
  _drawSegmentItem(context, cache, fill, fillOpacity, stroke, strokeOpacity, attribute, defaultAttribute, clipRange, offsetX, offsetY, offsetZ, area, drawContext, connect, fillCb, strokeCb) {
193
191
  var _a, _b, _c, _d;
194
- if (!(cache && cache.top && cache.bottom && cache.top.curves && cache.top.curves.length && cache.bottom.curves && cache.bottom.curves.length)) return;
195
192
  let {connectedType: connectedType, connectedX: connectedX, connectedY: connectedY, connectedStyle: connectedStyle} = attribute;
196
193
  const da = [];
197
194
  if (connect && ((0, vutils_1.isArray)(defaultAttribute) ? (connectedType = null !== (_a = null != connectedType ? connectedType : defaultAttribute[0].connectedType) && void 0 !== _a ? _a : defaultAttribute[1].connectedType,
@@ -203,6 +200,7 @@ let DefaultCanvasAreaRender = class extends base_render_1.BaseRender {
203
200
  "connect" !== connectedType && "zero" !== connectedType && (connectedType = "none"),
204
201
  (0, vutils_1.isArray)(defaultAttribute) ? defaultAttribute.forEach((i => da.push(i))) : da.push(defaultAttribute),
205
202
  da.push(attribute)), connect && "none" === connectedType) return !1;
203
+ if (!cache) return;
206
204
  context.beginPath();
207
205
  const {points: points, segments: segments} = area.attribute;
208
206
  let endP, startP, direction = enums_1.Direction.ROW;