@visactor/vrender-components 0.21.8 → 0.22.0-vstory.1

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.
Files changed (80) hide show
  1. package/cjs/axis/util.js +2 -1
  2. package/cjs/brush/type.js +1 -2
  3. package/cjs/core/base.d.ts +1 -0
  4. package/cjs/core/base.js +3 -3
  5. package/cjs/core/base.js.map +1 -1
  6. package/cjs/index.d.ts +3 -1
  7. package/cjs/index.js +3 -2
  8. package/cjs/index.js.map +1 -1
  9. package/cjs/interface.d.ts +2 -1
  10. package/cjs/interface.js.map +1 -1
  11. package/cjs/label-item/index.d.ts +2 -0
  12. package/cjs/label-item/index.js +21 -0
  13. package/cjs/label-item/index.js.map +1 -0
  14. package/cjs/label-item/label-item.d.ts +29 -0
  15. package/cjs/label-item/label-item.js +265 -0
  16. package/cjs/label-item/label-item.js.map +1 -0
  17. package/cjs/label-item/register.d.ts +1 -0
  18. package/cjs/label-item/register.js +15 -0
  19. package/cjs/label-item/register.js.map +1 -0
  20. package/cjs/label-item/type.d.ts +31 -0
  21. package/cjs/label-item/type.js +6 -0
  22. package/cjs/label-item/type.js.map +1 -0
  23. package/cjs/poptip/poptip.d.ts +14 -2
  24. package/cjs/poptip/poptip.js +137 -51
  25. package/cjs/poptip/poptip.js.map +1 -1
  26. package/cjs/poptip/type.d.ts +6 -0
  27. package/cjs/poptip/type.js.map +1 -1
  28. package/cjs/weather/index.d.ts +1 -0
  29. package/cjs/weather/index.js +21 -0
  30. package/cjs/weather/index.js.map +1 -0
  31. package/cjs/weather/register.d.ts +1 -0
  32. package/cjs/weather/register.js +14 -0
  33. package/cjs/weather/register.js.map +1 -0
  34. package/cjs/weather/type.d.ts +24 -0
  35. package/cjs/weather/type.js +6 -0
  36. package/cjs/weather/type.js.map +1 -0
  37. package/cjs/weather/weather-box.d.ts +13 -0
  38. package/cjs/weather/weather-box.js +129 -0
  39. package/cjs/weather/weather-box.js.map +1 -0
  40. package/dist/index.es.js +5771 -4892
  41. package/es/axis/util.js +2 -1
  42. package/es/brush/type.js +1 -2
  43. package/es/core/base.d.ts +1 -0
  44. package/es/core/base.js +4 -3
  45. package/es/core/base.js.map +1 -1
  46. package/es/index.d.ts +3 -1
  47. package/es/index.js +5 -1
  48. package/es/index.js.map +1 -1
  49. package/es/interface.d.ts +2 -1
  50. package/es/interface.js.map +1 -1
  51. package/es/label-item/index.d.ts +2 -0
  52. package/es/label-item/index.js +4 -0
  53. package/es/label-item/index.js.map +1 -0
  54. package/es/label-item/label-item.d.ts +29 -0
  55. package/es/label-item/label-item.js +263 -0
  56. package/es/label-item/label-item.js.map +1 -0
  57. package/es/label-item/register.d.ts +1 -0
  58. package/es/label-item/register.js +6 -0
  59. package/es/label-item/register.js.map +1 -0
  60. package/es/label-item/type.d.ts +31 -0
  61. package/es/label-item/type.js +2 -0
  62. package/es/label-item/type.js.map +1 -0
  63. package/es/poptip/poptip.d.ts +14 -2
  64. package/es/poptip/poptip.js +136 -49
  65. package/es/poptip/poptip.js.map +1 -1
  66. package/es/poptip/type.d.ts +6 -0
  67. package/es/poptip/type.js.map +1 -1
  68. package/es/weather/index.d.ts +1 -0
  69. package/es/weather/index.js +2 -0
  70. package/es/weather/index.js.map +1 -0
  71. package/es/weather/register.d.ts +1 -0
  72. package/es/weather/register.js +6 -0
  73. package/es/weather/register.js.map +1 -0
  74. package/es/weather/type.d.ts +24 -0
  75. package/es/weather/type.js +2 -0
  76. package/es/weather/type.js.map +1 -0
  77. package/es/weather/weather-box.d.ts +13 -0
  78. package/es/weather/weather-box.js +127 -0
  79. package/es/weather/weather-box.js.map +1 -0
  80. package/package.json +3 -3
package/cjs/axis/util.js CHANGED
@@ -104,4 +104,5 @@ exports.getAxisBreakSymbolAttrs = getAxisBreakSymbolAttrs, exports.getElMap = ge
104
104
  exports.getVerticalCoord = getVerticalCoord, exports.getCircleVerticalVector = getCircleVerticalVector,
105
105
  exports.angleLabelOrientAttribute = angleLabelOrientAttribute, exports.getPolarAngleLabelPosition = getPolarAngleLabelPosition,
106
106
  exports.getCirclePoints = getCirclePoints, exports.getPolygonPath = getPolygonPath,
107
- exports.textIntersect = textIntersect, exports.hasOverlap = hasOverlap;
107
+ exports.textIntersect = textIntersect, exports.hasOverlap = hasOverlap;
108
+ //# sourceMappingURL=util.js.map
package/cjs/brush/type.js CHANGED
@@ -8,5 +8,4 @@ Object.defineProperty(exports, "__esModule", {
8
8
  IOperateType.drawStart = "drawStart", IOperateType.drawEnd = "drawEnd", IOperateType.drawing = "drawing",
9
9
  IOperateType.moving = "moving", IOperateType.moveStart = "moveStart", IOperateType.moveEnd = "moveEnd",
10
10
  IOperateType.brushClear = "brushClear";
11
- }(IOperateType = exports.IOperateType || (exports.IOperateType = {}));
12
- //# sourceMappingURL=type.js.map
11
+ }(IOperateType = exports.IOperateType || (exports.IOperateType = {}));
@@ -6,6 +6,7 @@ export declare abstract class AbstractComponent<T extends IGroupGraphicAttribute
6
6
  attribute: Partial<T>;
7
7
  protected mode?: '2d' | '3d';
8
8
  protected skipDefault?: boolean;
9
+ protected _skipRenderAttributes: string[];
9
10
  constructor(attributes: T, options?: ComponentOptions);
10
11
  setAttribute(key: string, value: any, forceUpdateTag?: boolean | undefined, context?: ISetAttributeContext): void;
11
12
  setAttributes(params: Partial<T>, forceUpdateTag?: boolean | undefined, context?: ISetAttributeContext): void;
package/cjs/core/base.js CHANGED
@@ -8,7 +8,7 @@ const vrender_core_1 = require("@visactor/vrender-core"), vutils_1 = require("@v
8
8
 
9
9
  class AbstractComponent extends vrender_core_1.Group {
10
10
  constructor(attributes, options) {
11
- super(attributes), (null == options ? void 0 : options.mode) && (this.mode = options.mode,
11
+ super(attributes), this._skipRenderAttributes = GROUP_ATTRIBUTES, (null == options ? void 0 : options.mode) && (this.mode = options.mode,
12
12
  this.setMode(options.mode)), (null == options ? void 0 : options.skipDefault) && (this.skipDefault = !0),
13
13
  this.setTheme({
14
14
  common: {
@@ -25,7 +25,7 @@ class AbstractComponent extends vrender_core_1.Group {
25
25
  if (params) return this._setAttributes(params, forceUpdateTag);
26
26
  (0, vutils_1.isPlainObject)(this.attribute[key]) && (0, vutils_1.isPlainObject)(value) && !(0,
27
27
  vutils_1.isFunction)(this.attribute[key]) && !(0, vutils_1.isFunction)(value) ? (0,
28
- vutils_1.merge)(this.attribute[key], value) : this.attribute[key] = value, GROUP_ATTRIBUTES.includes(key) || this.render(),
28
+ vutils_1.merge)(this.attribute[key], value) : this.attribute[key] = value, this._skipRenderAttributes.includes(key) || this.render(),
29
29
  this.valid = this.isValid(), this.updateShapeAndBoundsTagSetted() || !forceUpdateTag && !this.needUpdateTag(key) ? this.addUpdateBoundTag() : this.addUpdateShapeAndBoundsTag(),
30
30
  this.addUpdatePositionTag(), this.onAttributeUpdate();
31
31
  }
@@ -35,7 +35,7 @@ class AbstractComponent extends vrender_core_1.Group {
35
35
  }
36
36
  _setAttributes(params, forceUpdateTag) {
37
37
  const keys = Object.keys(params);
38
- this._mergeAttributes(params, keys), keys.every((key => GROUP_ATTRIBUTES.includes(key))) || this.render(),
38
+ this._mergeAttributes(params, keys), keys.every((key => this._skipRenderAttributes.includes(key))) || this.render(),
39
39
  this.valid = this.isValid(), this.updateShapeAndBoundsTagSetted() || !forceUpdateTag && !this.needUpdateTags(keys) ? this.addUpdateBoundTag() : this.addUpdateShapeAndBoundsTag(),
40
40
  this.addUpdatePositionTag(), this.onAttributeUpdate();
41
41
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["/**\n * @description 组件基类\n */\nimport type { IGroupGraphicAttribute, ISetAttributeContext } from '@visactor/vrender-core';\nimport { Group, CustomEvent } from '@visactor/vrender-core';\nimport type { Dict } from '@visactor/vutils';\nimport { merge, isFunction, isPlainObject, isNil } from '@visactor/vutils';\nimport type { ComponentOptions } from '../interface';\n\nconst GROUP_ATTRIBUTES = [\n 'x',\n 'y',\n 'dx',\n 'dy',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor',\n 'postMatrix',\n 'visible',\n 'clip',\n 'pickable',\n 'childrenPickable',\n 'zIndex',\n 'cursor'\n];\n\nexport abstract class AbstractComponent<T extends IGroupGraphicAttribute = IGroupGraphicAttribute> extends Group {\n declare attribute: Partial<T>;\n\n protected mode?: '2d' | '3d';\n\n protected skipDefault?: boolean;\n\n constructor(attributes: T, options?: ComponentOptions) {\n super(attributes);\n\n if (options?.mode) {\n this.mode = options.mode;\n\n this.setMode(options.mode);\n }\n\n if (options?.skipDefault) {\n this.skipDefault = true;\n }\n // 组件需要精准 bounds,所以将这个 strokeBoundsBuffer 设置为 0,否则会影响包围盒的获取\n this.setTheme({\n common: {\n strokeBoundsBuffer: 0\n }\n });\n this.attribute = attributes;\n // 这里调用渲染和事件绑定逻辑\n this.onSetStage(() => {\n this.render();\n this.bindEvents();\n });\n }\n\n /**\n * @override\n * 更新单个属性值\n * @param key\n * @param value\n * @param forceUpdateTag\n */\n setAttribute(key: string, value: any, forceUpdateTag?: boolean | undefined, context?: ISetAttributeContext): void {\n const params =\n this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate({ [key]: value }, this.attribute, key, context);\n if (params) {\n return this._setAttributes(params as Partial<T>, forceUpdateTag);\n }\n\n // overwrite when previous or next attribute is function\n if (\n isPlainObject(this.attribute[key]) &&\n isPlainObject(value) &&\n !isFunction(this.attribute[key]) &&\n !isFunction(value)\n ) {\n merge(this.attribute[key], value);\n } else {\n this.attribute[key] = value;\n }\n\n // HACK: 待优化\n if (!GROUP_ATTRIBUTES.includes(key as string)) {\n this.render();\n }\n\n this.valid = this.isValid();\n if (!this.updateShapeAndBoundsTagSetted() && (forceUpdateTag || this.needUpdateTag(key as string))) {\n this.addUpdateShapeAndBoundsTag();\n } else {\n this.addUpdateBoundTag();\n }\n this.addUpdatePositionTag();\n this.onAttributeUpdate();\n }\n\n setAttributes(params: Partial<T>, forceUpdateTag?: boolean | undefined, context?: ISetAttributeContext): void {\n params =\n (this.onBeforeAttributeUpdate &&\n (this.onBeforeAttributeUpdate(params, this.attribute, null, context) as Partial<T>)) ||\n params;\n return this._setAttributes(params, forceUpdateTag);\n }\n\n // @ts-ignore\n _setAttributes(params: Partial<T>, forceUpdateTag?: boolean | undefined): void {\n const keys = Object.keys(params) as (keyof T)[];\n this._mergeAttributes(params, keys);\n\n // HACK: 待优化\n if (!keys.every(key => GROUP_ATTRIBUTES.includes(key as string))) {\n this.render();\n }\n\n this.valid = this.isValid();\n // 没有设置shape&bounds的tag\n if (!this.updateShapeAndBoundsTagSetted() && (forceUpdateTag || this.needUpdateTags(keys as string[]))) {\n this.addUpdateShapeAndBoundsTag();\n } else {\n this.addUpdateBoundTag();\n }\n this.addUpdatePositionTag();\n this.onAttributeUpdate();\n }\n\n protected _mergeAttributes(params: Partial<T>, keys?: (keyof T)[]) {\n if (isNil(keys)) {\n keys = Object.keys(params) as (keyof T)[];\n }\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i] as keyof Partial<T>;\n // overwrite when previous or next attribute is function\n if (isPlainObject(this.attribute[key]) && !isFunction(this.attribute[key]) && !isFunction(params[key])) {\n merge(this.attribute[key], params[key]);\n } else {\n this.attribute[key] = params[key];\n }\n }\n }\n\n protected bindEvents() {\n // please override\n }\n\n protected abstract render(): void;\n\n // 图形元素 id\n protected _getNodeId(id: string) {\n return `${this.id ?? this._uid}-${this.name}-${id}`;\n }\n\n // 用于 emit 组件自己的事件\n protected _dispatchEvent(eventName: string, details?: Dict<any>) {\n // 封装事件\n const changeEvent = new CustomEvent(eventName, details);\n // FIXME: 需要在 vrender 的事件系统支持\n // @ts-ignore\n changeEvent.manager = this.stage?.eventSystem.manager;\n\n this.dispatchEvent(changeEvent);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/base.ts"],"names":[],"mappings":"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","file":"base.js","sourcesContent":["/**\n * @description 组件基类\n */\nimport type { IGroupGraphicAttribute, ISetAttributeContext } from '@visactor/vrender-core';\nimport { Group, CustomEvent } from '@visactor/vrender-core';\nimport type { Dict } from '@visactor/vutils';\nimport { merge, isFunction, isPlainObject, isNil } from '@visactor/vutils';\nimport type { ComponentOptions } from '../interface';\n\nconst GROUP_ATTRIBUTES = [\n 'x',\n 'y',\n 'dx',\n 'dy',\n 'scaleX',\n 'scaleY',\n 'angle',\n 'anchor',\n 'postMatrix',\n 'visible',\n 'clip',\n 'pickable',\n 'childrenPickable',\n 'zIndex',\n 'cursor'\n];\n\nexport abstract class AbstractComponent<T extends IGroupGraphicAttribute = IGroupGraphicAttribute> extends Group {\n declare attribute: Partial<T>;\n\n protected mode?: '2d' | '3d';\n\n protected skipDefault?: boolean;\n\n protected _skipRenderAttributes: string[] = GROUP_ATTRIBUTES;\n\n constructor(attributes: T, options?: ComponentOptions) {\n super(attributes);\n\n if (options?.mode) {\n this.mode = options.mode;\n\n this.setMode(options.mode);\n }\n\n if (options?.skipDefault) {\n this.skipDefault = true;\n }\n // 组件需要精准 bounds,所以将这个 strokeBoundsBuffer 设置为 0,否则会影响包围盒的获取\n this.setTheme({\n common: {\n strokeBoundsBuffer: 0\n }\n });\n this.attribute = attributes;\n // 这里调用渲染和事件绑定逻辑\n this.onSetStage(() => {\n this.render();\n this.bindEvents();\n });\n }\n\n /**\n * @override\n * 更新单个属性值\n * @param key\n * @param value\n * @param forceUpdateTag\n */\n setAttribute(key: string, value: any, forceUpdateTag?: boolean | undefined, context?: ISetAttributeContext): void {\n const params =\n this.onBeforeAttributeUpdate && this.onBeforeAttributeUpdate({ [key]: value }, this.attribute, key, context);\n if (params) {\n return this._setAttributes(params as Partial<T>, forceUpdateTag);\n }\n\n // overwrite when previous or next attribute is function\n if (\n isPlainObject(this.attribute[key]) &&\n isPlainObject(value) &&\n !isFunction(this.attribute[key]) &&\n !isFunction(value)\n ) {\n merge(this.attribute[key], value);\n } else {\n this.attribute[key] = value;\n }\n\n // HACK: 待优化\n if (!this._skipRenderAttributes.includes(key as string)) {\n this.render();\n }\n\n this.valid = this.isValid();\n if (!this.updateShapeAndBoundsTagSetted() && (forceUpdateTag || this.needUpdateTag(key as string))) {\n this.addUpdateShapeAndBoundsTag();\n } else {\n this.addUpdateBoundTag();\n }\n this.addUpdatePositionTag();\n this.onAttributeUpdate();\n }\n\n setAttributes(params: Partial<T>, forceUpdateTag?: boolean | undefined, context?: ISetAttributeContext): void {\n params =\n (this.onBeforeAttributeUpdate &&\n (this.onBeforeAttributeUpdate(params, this.attribute, null, context) as Partial<T>)) ||\n params;\n return this._setAttributes(params, forceUpdateTag);\n }\n\n // @ts-ignore\n _setAttributes(params: Partial<T>, forceUpdateTag?: boolean | undefined): void {\n const keys = Object.keys(params) as (keyof T)[];\n this._mergeAttributes(params, keys);\n\n // HACK: 待优化\n if (!keys.every(key => this._skipRenderAttributes.includes(key as string))) {\n this.render();\n }\n\n this.valid = this.isValid();\n // 没有设置shape&bounds的tag\n if (!this.updateShapeAndBoundsTagSetted() && (forceUpdateTag || this.needUpdateTags(keys as string[]))) {\n this.addUpdateShapeAndBoundsTag();\n } else {\n this.addUpdateBoundTag();\n }\n this.addUpdatePositionTag();\n this.onAttributeUpdate();\n }\n\n protected _mergeAttributes(params: Partial<T>, keys?: (keyof T)[]) {\n if (isNil(keys)) {\n keys = Object.keys(params) as (keyof T)[];\n }\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i] as keyof Partial<T>;\n // overwrite when previous or next attribute is function\n if (isPlainObject(this.attribute[key]) && !isFunction(this.attribute[key]) && !isFunction(params[key])) {\n merge(this.attribute[key], params[key]);\n } else {\n this.attribute[key] = params[key];\n }\n }\n }\n\n protected bindEvents() {\n // please override\n }\n\n protected abstract render(): void;\n\n // 图形元素 id\n protected _getNodeId(id: string) {\n return `${this.id ?? this._uid}-${this.name}-${id}`;\n }\n\n // 用于 emit 组件自己的事件\n protected _dispatchEvent(eventName: string, details?: Dict<any>) {\n // 封装事件\n const changeEvent = new CustomEvent(eventName, details);\n // FIXME: 需要在 vrender 的事件系统支持\n // @ts-ignore\n changeEvent.manager = this.stage?.eventSystem.manager;\n\n this.dispatchEvent(changeEvent);\n }\n}\n"]}
package/cjs/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const version = "0.21.8";
1
+ export declare const version = "0.22.0-vstory.1";
2
2
  export * from './core/base';
3
3
  export * from './core/type';
4
4
  export * from './scrollbar';
@@ -26,5 +26,7 @@ export * from './jsx';
26
26
  export * from './checkbox';
27
27
  export * from './radio';
28
28
  export * from './empty-tip';
29
+ export * from './weather';
29
30
  export * from './util';
30
31
  export * from './switch';
32
+ export * from './label-item';
package/cjs/index.js CHANGED
@@ -17,7 +17,7 @@ var __createBinding = this && this.__createBinding || (Object.create ? function(
17
17
 
18
18
  Object.defineProperty(exports, "__esModule", {
19
19
  value: !0
20
- }), exports.version = void 0, exports.version = "0.21.8", __exportStar(require("./core/base"), exports),
20
+ }), exports.version = void 0, exports.version = "0.22.0-vstory.1", __exportStar(require("./core/base"), exports),
21
21
  __exportStar(require("./core/type"), exports), __exportStar(require("./scrollbar"), exports),
22
22
  __exportStar(require("./tag"), exports), __exportStar(require("./poptip"), exports),
23
23
  __exportStar(require("./crosshair"), exports), __exportStar(require("./label"), exports),
@@ -31,5 +31,6 @@ __exportStar(require("./brush"), exports), __exportStar(require("./tooltip"), ex
31
31
  __exportStar(require("./timeline"), exports), __exportStar(require("./interface"), exports),
32
32
  __exportStar(require("./jsx"), exports), __exportStar(require("./checkbox"), exports),
33
33
  __exportStar(require("./radio"), exports), __exportStar(require("./empty-tip"), exports),
34
- __exportStar(require("./util"), exports), __exportStar(require("./switch"), exports);
34
+ __exportStar(require("./weather"), exports), __exportStar(require("./util"), exports),
35
+ __exportStar(require("./switch"), exports), __exportStar(require("./label-item"), exports);
35
36
  //# sourceMappingURL=index.js.map
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,QAAQ,CAAC;AAEhC,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,wCAAsB;AACtB,2CAAyB;AACzB,8CAA4B;AAC5B,0CAAwB;AACxB,yCAAuB;AACvB,8CAA4B;AAC5B,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,6CAA2B;AAC3B,8CAA4B;AAC5B,wCAAsB;AACtB,6CAA2B;AAC3B,0CAAwB;AACxB,8CAA4B;AAC5B,yCAAuB;AACvB,2CAAyB","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"0.21.8\";\n\nexport * from './core/base';\nexport * from './core/type';\nexport * from './scrollbar';\nexport * from './tag';\nexport * from './poptip';\nexport * from './crosshair';\nexport * from './label';\nexport * from './axis';\nexport * from './axis/grid';\nexport * from './segment';\nexport * from './data-zoom';\nexport * from './marker';\nexport * from './pager';\nexport * from './legend';\nexport * from './title';\nexport * from './indicator';\nexport * from './slider';\nexport * from './link-path';\nexport * from './player';\nexport * from './brush';\nexport * from './tooltip';\nexport * from './timeline';\nexport * from './interface';\nexport * from './jsx';\nexport * from './checkbox';\nexport * from './radio';\nexport * from './empty-tip';\nexport * from './util';\nexport * from './switch';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACa,QAAA,OAAO,GAAG,iBAAiB,CAAC;AAEzC,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,wCAAsB;AACtB,2CAAyB;AACzB,8CAA4B;AAC5B,0CAAwB;AACxB,yCAAuB;AACvB,8CAA4B;AAC5B,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,2CAAyB;AACzB,0CAAwB;AACxB,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,4CAA0B;AAC1B,6CAA2B;AAC3B,8CAA4B;AAC5B,wCAAsB;AACtB,6CAA2B;AAC3B,0CAAwB;AACxB,8CAA4B;AAC5B,4CAA0B;AAC1B,yCAAuB;AACvB,2CAAyB;AACzB,+CAA6B","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"0.22.0-vstory.1\";\n\nexport * from './core/base';\nexport * from './core/type';\nexport * from './scrollbar';\nexport * from './tag';\nexport * from './poptip';\nexport * from './crosshair';\nexport * from './label';\nexport * from './axis';\nexport * from './axis/grid';\nexport * from './segment';\nexport * from './data-zoom';\nexport * from './marker';\nexport * from './pager';\nexport * from './legend';\nexport * from './title';\nexport * from './indicator';\nexport * from './slider';\nexport * from './link-path';\nexport * from './player';\nexport * from './brush';\nexport * from './tooltip';\nexport * from './timeline';\nexport * from './interface';\nexport * from './jsx';\nexport * from './checkbox';\nexport * from './radio';\nexport * from './empty-tip';\nexport * from './weather';\nexport * from './util';\nexport * from './switch';\nexport * from './label-item';\n"]}
@@ -1,4 +1,4 @@
1
- import type { ICustomPath2D, IGraphicAttribute, IGroup, IRectGraphicAttribute } from '@visactor/vrender-core';
1
+ import type { ICustomPath2D, IGraphicAttribute, IGroup, IRectGraphicAttribute, ITimeline } from '@visactor/vrender-core';
2
2
  export type Direction = 'horizontal' | 'vertical';
3
3
  export type OrientType = 'top' | 'right' | 'bottom' | 'left';
4
4
  export type BackgroundAttributes = {
@@ -9,4 +9,5 @@ export type IDelayType = 'debounce' | 'throttle';
9
9
  export interface ComponentOptions {
10
10
  skipDefault?: boolean;
11
11
  mode?: '2d' | '3d';
12
+ timeline?: ITimeline;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { ICustomPath2D, IGraphicAttribute, IGroup, IRectGraphicAttribute } from '@visactor/vrender-core';\n\nexport type Direction = 'horizontal' | 'vertical';\n\nexport type OrientType = 'top' | 'right' | 'bottom' | 'left';\n\nexport type BackgroundAttributes = {\n /**\n * 是否绘制背景层\n */\n visible: boolean;\n /**\n * 自定义路径\n * @since 0.19.19\n */\n customShape?: (container: IGroup, attrs: Partial<IGraphicAttribute>, path: ICustomPath2D) => ICustomPath2D;\n} & Partial<IRectGraphicAttribute>;\n\nexport type IDelayType = 'debounce' | 'throttle';\n\nexport interface ComponentOptions {\n /** skip default attributes of component */\n skipDefault?: boolean;\n /** the mode of component, only axis support 3d mode now */\n mode?: '2d' | '3d';\n}\n"]}
1
+ {"version":3,"sources":["../src/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type {\n ICustomPath2D,\n IGraphicAttribute,\n IGroup,\n IRectGraphicAttribute,\n ITimeline\n} from '@visactor/vrender-core';\nimport type { TextContent } from './core/type';\n\nexport type Direction = 'horizontal' | 'vertical';\n\nexport type OrientType = 'top' | 'right' | 'bottom' | 'left';\n\nexport type BackgroundAttributes = {\n /**\n * 是否绘制背景层\n */\n visible: boolean;\n /**\n * 自定义路径\n * @since 0.19.19\n */\n customShape?: (container: IGroup, attrs: Partial<IGraphicAttribute>, path: ICustomPath2D) => ICustomPath2D;\n} & Partial<IRectGraphicAttribute>;\n\nexport type IDelayType = 'debounce' | 'throttle';\n\nexport interface ComponentOptions {\n /** skip default attributes of component */\n skipDefault?: boolean;\n /** the mode of component, only axis support 3d mode now */\n mode?: '2d' | '3d';\n /* 传递一个独立的timeline */\n timeline?: ITimeline;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export * from './label-item';
2
+ export * from './type';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ var __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {
4
+ void 0 === k2 && (k2 = k);
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ desc && !("get" in desc ? !m.__esModule : desc.writable || desc.configurable) || (desc = {
7
+ enumerable: !0,
8
+ get: function() {
9
+ return m[k];
10
+ }
11
+ }), Object.defineProperty(o, k2, desc);
12
+ } : function(o, m, k, k2) {
13
+ void 0 === k2 && (k2 = k), o[k2] = m[k];
14
+ }), __exportStar = this && this.__exportStar || function(m, exports) {
15
+ for (var p in m) "default" === p || Object.prototype.hasOwnProperty.call(exports, p) || __createBinding(exports, m, p);
16
+ };
17
+
18
+ Object.defineProperty(exports, "__esModule", {
19
+ value: !0
20
+ }), __exportStar(require("./label-item"), exports), __exportStar(require("./type"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/label-item/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,yCAAuB","file":"index.js","sourcesContent":["export * from './label-item';\nexport * from './type';\n"]}
@@ -0,0 +1,29 @@
1
+ import { AbstractComponent } from '../core/base';
2
+ import type { IStoryLabelItemAttrs } from './type';
3
+ import type { ComponentOptions } from '../interface';
4
+ export declare class StoryLabelItem extends AbstractComponent<Required<IStoryLabelItemAttrs>> {
5
+ name: 'labelItem';
6
+ private _line?;
7
+ private _symbolStart;
8
+ private _symbolEnd;
9
+ private _symbolStartOuter;
10
+ private _titleTop;
11
+ private _titleBottom;
12
+ private _titleTopPanel;
13
+ private _titleBottomPanel;
14
+ static defaultAttributes: Partial<IStoryLabelItemAttrs>;
15
+ constructor(attributes: IStoryLabelItemAttrs, options?: ComponentOptions);
16
+ protected render(): void;
17
+ appearAnimate(animateConfig: {
18
+ duration?: number;
19
+ easing?: string;
20
+ symbolStartOuterType?: 'scale' | 'clipRange';
21
+ titleType?: 'typewriter' | 'move';
22
+ titlePanelType?: 'scale' | 'stroke';
23
+ }): void;
24
+ disappearAnimate(animateConfig: {
25
+ duration?: number;
26
+ easing?: string;
27
+ mode?: 'scale' | 'default';
28
+ }): void;
29
+ }
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.StoryLabelItem = void 0;
6
+
7
+ const vrender_core_1 = require("@visactor/vrender-core"), base_1 = require("../core/base"), vutils_1 = require("@visactor/vutils");
8
+
9
+ class StoryLabelItem extends base_1.AbstractComponent {
10
+ constructor(attributes, options) {
11
+ super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, StoryLabelItem.defaultAttributes, attributes));
12
+ }
13
+ render() {
14
+ const {contentOffsetX: contentOffsetX, contentOffsetY: contentOffsetY, lineStyle: lineStyle, symbolStartStyle: symbolStartStyle, symbolEndStyle: symbolEndStyle, symbolStartOuterStyle: symbolStartOuterStyle, titleTop: titleTopText, titleBottom: titleBottomText, titleTopStyle: titleTopStyle, titleBottomStyle: titleBottomStyle, titleSpace: titleSpace, titleTopPanelStyle: titleTopPanelStyle, titleBottomPanelStyle: titleBottomPanelStyle, theme: theme} = this.attribute, group = this.createOrUpdateChild("label-item-container", {
15
+ x: 0,
16
+ y: 0,
17
+ zIndex: 1
18
+ }, "group"), symbolStart = group.createOrUpdateChild("label-item-symbol-start", Object.assign({
19
+ x: 0,
20
+ y: 0
21
+ }, symbolStartStyle), "symbol"), symbolEnd = group.createOrUpdateChild("label-item-symbol-end", Object.assign({
22
+ x: contentOffsetX,
23
+ y: contentOffsetY
24
+ }, symbolEndStyle), "symbol"), symbolStartOut = group.createOrUpdateChild("label-item-symbol-start-out", Object.assign({
25
+ x: 0,
26
+ y: 0
27
+ }, symbolStartOuterStyle), "symbol"), spaceW = titleSpace[0], spaceH = titleSpace[1], titleTopGroup = group.createOrUpdateChild("label-item-title-top-group", {
28
+ x: contentOffsetX,
29
+ y: contentOffsetY,
30
+ clip: !0
31
+ }, "group"), titleTop = titleTopGroup.createOrUpdateChild("label-item-title-top", Object.assign(Object.assign({
32
+ x: spaceW,
33
+ y: -spaceH,
34
+ text: titleTopText
35
+ }, titleTopStyle), {
36
+ textBaseline: "bottom",
37
+ textAlign: "left",
38
+ zIndex: 10
39
+ }), "text"), titleTopBounds = titleTop.AABBBounds;
40
+ contentOffsetX > 0 && titleTopGroup.setAttributes({
41
+ x: contentOffsetX - titleTopBounds.width() - 2 * spaceW
42
+ }), titleTopGroup.setAttributes({
43
+ width: titleTopBounds.width() + 2 * spaceW,
44
+ height: -titleTopBounds.height() - 2 * spaceH
45
+ });
46
+ const titleTopPanel = titleTopGroup.createOrUpdateChild("label-item-title-top-panel", Object.assign(Object.assign({}, titleTopPanelStyle), {
47
+ x: titleTopPanelStyle.padding.left,
48
+ y: (titleTopGroup.attribute.height > 0 ? 0 : titleTopGroup.attribute.height) + titleTopPanelStyle.padding.top,
49
+ width: titleTopGroup.attribute.width - titleTopPanelStyle.padding.left - titleTopPanelStyle.padding.right,
50
+ height: (titleTopGroup.attribute.height > 0 ? 1 : -1) * titleTopGroup.attribute.height - titleTopPanelStyle.padding.bottom - titleTopPanelStyle.padding.top,
51
+ scaleCenter: [ titleTopGroup.attribute.width / 2, titleTopGroup.attribute.height / 2 ]
52
+ }), "rect");
53
+ this._titleTopPanel = titleTopPanel;
54
+ const titleBottomGroup = group.createOrUpdateChild("label-item-title-bottom-group", {
55
+ x: contentOffsetX,
56
+ y: contentOffsetY,
57
+ clip: !0
58
+ }, "group"), titleBottom = titleBottomGroup.createOrUpdateChild("label-item-title-bottom", Object.assign(Object.assign({
59
+ x: spaceW,
60
+ y: spaceH,
61
+ text: titleBottomText
62
+ }, titleBottomStyle), {
63
+ textBaseline: "top",
64
+ textAlign: "left",
65
+ zIndex: 10
66
+ }), "text"), titleBottomBounds = titleBottom.AABBBounds;
67
+ contentOffsetX > 0 && titleBottomGroup.setAttributes({
68
+ x: contentOffsetX - titleBottomBounds.width() - 2 * spaceW
69
+ }), titleBottomGroup.setAttributes({
70
+ width: titleBottomBounds.width() + 2 * spaceW,
71
+ height: titleTopBounds.height() + 2 * spaceH
72
+ });
73
+ const titleBottomPanel = titleBottomGroup.createOrUpdateChild("label-item-title-bottom-panel", Object.assign(Object.assign({}, titleBottomPanelStyle), {
74
+ x: titleBottomPanelStyle.padding.left,
75
+ y: (titleBottomGroup.attribute.height > 0 ? 0 : titleBottomGroup.attribute.height) + titleBottomPanelStyle.padding.top,
76
+ width: titleBottomGroup.attribute.width - titleBottomPanelStyle.padding.left - titleBottomPanelStyle.padding.right,
77
+ height: (titleBottomGroup.attribute.height > 0 ? 1 : -1) * titleBottomGroup.attribute.height - titleBottomPanelStyle.padding.bottom - titleBottomPanelStyle.padding.top,
78
+ scaleCenter: [ titleBottomGroup.attribute.width / 2, titleBottomGroup.attribute.height / 2 ]
79
+ }), "rect");
80
+ this._titleBottomPanel = titleBottomPanel;
81
+ const maxTextWidth = Math.max(titleTop.AABBBounds.width(), titleBottom.AABBBounds.width()) + 2 * spaceW, points = [ {
82
+ x: 0,
83
+ y: 0
84
+ }, contentOffsetX > 0 ? {
85
+ x: contentOffsetX - maxTextWidth,
86
+ y: contentOffsetY
87
+ } : {
88
+ x: contentOffsetX + maxTextWidth,
89
+ y: contentOffsetY
90
+ }, {
91
+ x: contentOffsetX,
92
+ y: contentOffsetY
93
+ } ];
94
+ if ("simple" === theme) {
95
+ points.pop();
96
+ const p = points[1];
97
+ symbolEnd.setAttributes(p);
98
+ }
99
+ const line = group.createOrUpdateChild("label-item-line", Object.assign(Object.assign({
100
+ x: 0,
101
+ y: 0
102
+ }, lineStyle), {
103
+ points: points
104
+ }), "line");
105
+ this._symbolEnd = symbolEnd, this._symbolStart = symbolStart, this._symbolStartOuter = symbolStartOut,
106
+ this._titleTop = titleTop, this._titleBottom = titleBottom, this._line = line;
107
+ }
108
+ appearAnimate(animateConfig) {
109
+ const {duration: duration = 1e3, easing: easing = "quadOut", symbolStartOuterType: symbolStartOuterType = "scale", titleType: titleType = "typewriter", titlePanelType: titlePanelType = "scale"} = animateConfig, symbolTime = duration / 10;
110
+ let symbolStartOuterFrom, symbolStartOuterTo;
111
+ if (this._symbolStart.setAttributes({
112
+ scaleX: 0,
113
+ scaleY: 0
114
+ }), this._symbolStart.animate().to({
115
+ scaleX: 1,
116
+ scaleY: 1
117
+ }, 5 * symbolTime, easing), "scale" === symbolStartOuterType ? (symbolStartOuterFrom = {
118
+ scaleX: 0,
119
+ scaleY: 0
120
+ }, symbolStartOuterTo = {
121
+ scaleX: 1,
122
+ scaleY: 1
123
+ }) : (symbolStartOuterFrom = {
124
+ clipRange: 0
125
+ }, symbolStartOuterTo = {
126
+ clipRange: 1
127
+ }), this._symbolStartOuter.setAttributes(symbolStartOuterFrom), this._symbolStartOuter.animate().to(symbolStartOuterTo, 5 * symbolTime, easing),
128
+ this._symbolEnd.setAttributes({
129
+ scaleX: 0,
130
+ scaleY: 0
131
+ }), this._symbolEnd.animate().wait(8 * symbolTime).to({
132
+ scaleX: 1,
133
+ scaleY: 1
134
+ }, 2 * symbolTime, easing), this._line.setAttributes({
135
+ clipRange: 0
136
+ }), this._line.animate().to({
137
+ clipRange: 1
138
+ }, 9 * symbolTime, easing), "typewriter" === titleType) {
139
+ const titleTopText = this._titleTop.attribute.text;
140
+ this._titleTop.setAttributes({
141
+ text: ""
142
+ }), this._titleTop.animate().wait(5 * symbolTime).play(new vrender_core_1.InputText({
143
+ text: ""
144
+ }, {
145
+ text: titleTopText
146
+ }, 4 * symbolTime, "linear"));
147
+ const titleBottomText = this._titleBottom.attribute.text;
148
+ this._titleBottom.setAttributes({
149
+ text: ""
150
+ }), this._titleBottom.animate().wait(5 * symbolTime).play(new vrender_core_1.InputText({
151
+ text: ""
152
+ }, {
153
+ text: titleBottomText
154
+ }, 4 * symbolTime, "linear"));
155
+ } else this._titleTop.setAttributes({
156
+ dy: this._titleTop.AABBBounds.height() + 10
157
+ }), this._titleTop.animate().wait(5 * symbolTime).to({
158
+ dy: 0
159
+ }, 4 * symbolTime, "linear"), this._titleBottom.setAttributes({
160
+ dy: -(10 + this._titleBottom.AABBBounds.height())
161
+ }), this._titleBottom.animate().wait(5 * symbolTime).to({
162
+ dy: 0
163
+ }, 4 * symbolTime, "linear");
164
+ "scale" === titlePanelType ? [ this._titleTopPanel, this._titleBottomPanel ].forEach((panel => {
165
+ const scaleX = panel.attribute.scaleX;
166
+ panel.setAttributes({
167
+ scaleX: 0
168
+ }), panel.animate().to({
169
+ scaleX: scaleX
170
+ }, duration, "circInOut");
171
+ })) : "stroke" === titlePanelType && [ this._titleTopPanel, this._titleBottomPanel ].forEach((panel => {
172
+ const b = panel.AABBBounds, totalLen = 2 * (b.width() + b.height());
173
+ panel.setAttributes({
174
+ lineDash: [ 0, 10 * totalLen ]
175
+ }), panel.animate().to({
176
+ lineDash: [ totalLen, 10 * totalLen ]
177
+ }, duration, "quadOut");
178
+ }));
179
+ }
180
+ disappearAnimate(animateConfig) {
181
+ if ("scale" === animateConfig.mode) {
182
+ const {duration: duration = 1e3, easing: easing = "quadOut"} = animateConfig;
183
+ this.animate().to({
184
+ scaleX: 0,
185
+ scaleY: 0
186
+ }, duration, easing);
187
+ } else {
188
+ const {duration: duration = 1e3, easing: easing = "quadOut"} = animateConfig;
189
+ this._line.animate().to({
190
+ clipRange: 0
191
+ }, duration, easing), this._symbolStart.animate().wait(duration / 2).to({
192
+ scaleX: 0,
193
+ scaleY: 0
194
+ }, duration / 2, easing), this._symbolEnd.animate().to({
195
+ scaleX: 0,
196
+ scaleY: 0
197
+ }, duration, easing), this._titleTop.animate().to({
198
+ dy: this._titleTop.AABBBounds.height() + 10
199
+ }, duration / 2, easing), this._titleBottom.animate().to({
200
+ dy: -(10 + this._titleBottom.AABBBounds.height())
201
+ }, duration / 2, easing), this._symbolStartOuter.animate().wait(duration / 2).to({
202
+ clipRange: 0
203
+ }, duration / 2, easing), this._titleTopPanel.animate().to({
204
+ scaleX: 0
205
+ }, duration, "circInOut"), this._titleBottomPanel.animate().to({
206
+ scaleX: 0
207
+ }, duration, "circInOut");
208
+ }
209
+ }
210
+ }
211
+
212
+ exports.StoryLabelItem = StoryLabelItem, StoryLabelItem.defaultAttributes = {
213
+ contentOffsetX: 100,
214
+ contentOffsetY: -60,
215
+ titleTopStyle: {
216
+ fontSize: 12,
217
+ fill: "white"
218
+ },
219
+ titleBottomStyle: {
220
+ fontSize: 12,
221
+ fill: "white"
222
+ },
223
+ lineStyle: {
224
+ stroke: "white",
225
+ lineWidth: 1
226
+ },
227
+ symbolStartStyle: {
228
+ symbolType: "circle",
229
+ size: 3,
230
+ fill: "white"
231
+ },
232
+ symbolEndStyle: {
233
+ symbolType: "circle",
234
+ size: 3,
235
+ fill: "white"
236
+ },
237
+ symbolStartOuterStyle: {
238
+ symbolType: "M0.5,0A0.5,0.5,0,1,1,-0.5,0A0.5,0.5,0,1,1,0.5,0",
239
+ size: 8,
240
+ stroke: "white"
241
+ },
242
+ titleSpace: [ 2, 2 ],
243
+ titleTopPanelStyle: {
244
+ visible: !1,
245
+ padding: {
246
+ left: 0,
247
+ right: 0,
248
+ bottom: 2,
249
+ top: 2
250
+ },
251
+ cornerRadius: 3
252
+ },
253
+ titleBottomPanelStyle: {
254
+ visible: !1,
255
+ padding: {
256
+ left: 0,
257
+ right: 0,
258
+ bottom: 2,
259
+ top: 2
260
+ },
261
+ cornerRadius: 3
262
+ },
263
+ theme: "default"
264
+ };
265
+ //# sourceMappingURL=label-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/label-item/label-item.ts"],"names":[],"mappings":"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","file":"label-item.js","sourcesContent":["import type {\n IGroup,\n ILine,\n ILineGraphicAttribute,\n IRect,\n ISymbol,\n ISymbolGraphicAttribute,\n IText\n} from '@visactor/vrender-core';\nimport { ILineAttribute, InputText, ISymbolAttribute } from '@visactor/vrender-core';\nimport { AbstractComponent } from '../core/base';\nimport type { IStoryLabelItemAttrs } from './type';\nimport type { ComponentOptions } from '../interface';\nimport { max, merge } from '@visactor/vutils';\n\nexport class StoryLabelItem extends AbstractComponent<Required<IStoryLabelItemAttrs>> {\n name: 'labelItem';\n private _line?: ILine;\n private _symbolStart: ISymbol;\n private _symbolEnd: ISymbol;\n private _symbolStartOuter: ISymbol;\n private _titleTop: IText;\n private _titleBottom: IText;\n private _titleTopPanel: IRect;\n private _titleBottomPanel: IRect;\n\n static defaultAttributes: Partial<IStoryLabelItemAttrs> = {\n // 内容在X上的偏移量\n contentOffsetX: 100,\n // 内容在Y上的偏移量\n contentOffsetY: -60,\n titleTopStyle: {\n fontSize: 12,\n fill: 'white'\n },\n titleBottomStyle: {\n fontSize: 12,\n fill: 'white'\n },\n lineStyle: {\n stroke: 'white',\n lineWidth: 1\n } as ILineGraphicAttribute,\n // 线段开始端点的样式\n symbolStartStyle: {\n symbolType: 'circle',\n size: 3,\n fill: 'white'\n } as Partial<ISymbolGraphicAttribute>,\n // 线段结束端点的样式\n symbolEndStyle: {\n symbolType: 'circle',\n size: 3,\n fill: 'white'\n } as Partial<ISymbolGraphicAttribute>,\n // 线段开始端点外面包裹symbol的样式\n symbolStartOuterStyle: {\n symbolType: 'M0.5,0A0.5,0.5,0,1,1,-0.5,0A0.5,0.5,0,1,1,0.5,0',\n size: 8,\n stroke: 'white'\n } as Partial<ISymbolGraphicAttribute>,\n titleSpace: [2, 2],\n titleTopPanelStyle: {\n visible: false,\n padding: { left: 0, right: 0, bottom: 2, top: 2 },\n cornerRadius: 3\n },\n titleBottomPanelStyle: {\n visible: false,\n padding: { left: 0, right: 0, bottom: 2, top: 2 },\n cornerRadius: 3\n },\n // 默认和简约两套主题\n theme: 'default'\n };\n\n constructor(attributes: IStoryLabelItemAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, StoryLabelItem.defaultAttributes, attributes));\n }\n\n protected render(): void {\n const {\n contentOffsetX,\n contentOffsetY,\n lineStyle,\n symbolStartStyle,\n symbolEndStyle,\n symbolStartOuterStyle,\n titleTop: titleTopText,\n titleBottom: titleBottomText,\n titleTopStyle,\n titleBottomStyle,\n titleSpace,\n titleTopPanelStyle,\n titleBottomPanelStyle,\n theme\n } = this.attribute;\n\n const group = this.createOrUpdateChild('label-item-container', { x: 0, y: 0, zIndex: 1 }, 'group') as IGroup;\n\n const symbolStart = group.createOrUpdateChild(\n 'label-item-symbol-start',\n { x: 0, y: 0, ...symbolStartStyle },\n 'symbol'\n ) as ISymbol;\n const symbolEnd = group.createOrUpdateChild(\n 'label-item-symbol-end',\n { x: contentOffsetX, y: contentOffsetY, ...symbolEndStyle },\n 'symbol'\n ) as ISymbol;\n const symbolStartOut = group.createOrUpdateChild(\n 'label-item-symbol-start-out',\n { x: 0, y: 0, ...symbolStartOuterStyle },\n 'symbol'\n ) as ISymbol;\n\n const spaceW = titleSpace[0];\n const spaceH = titleSpace[1];\n // 逻辑:group占满,title在group内做偏移\n const titleTopGroup = group.createOrUpdateChild(\n 'label-item-title-top-group',\n { x: contentOffsetX, y: contentOffsetY, clip: true },\n 'group'\n ) as IGroup;\n const titleTop = titleTopGroup.createOrUpdateChild(\n 'label-item-title-top',\n {\n x: spaceW,\n y: -spaceH,\n text: titleTopText,\n ...titleTopStyle,\n textBaseline: 'bottom',\n textAlign: 'left',\n zIndex: 10\n },\n 'text'\n ) as IText;\n const titleTopBounds = titleTop.AABBBounds;\n if (contentOffsetX > 0) {\n titleTopGroup.setAttributes({ x: contentOffsetX - titleTopBounds.width() - spaceW * 2 });\n }\n titleTopGroup.setAttributes({\n width: titleTopBounds.width() + spaceW * 2,\n height: -titleTopBounds.height() - spaceH * 2\n });\n // 添加panel\n const titleTopPanel = titleTopGroup.createOrUpdateChild(\n 'label-item-title-top-panel',\n {\n ...titleTopPanelStyle,\n x: titleTopPanelStyle.padding.left,\n y: (titleTopGroup.attribute.height > 0 ? 0 : titleTopGroup.attribute.height) + titleTopPanelStyle.padding.top,\n width: titleTopGroup.attribute.width - titleTopPanelStyle.padding.left - titleTopPanelStyle.padding.right,\n height:\n (titleTopGroup.attribute.height > 0 ? 1 : -1) * titleTopGroup.attribute.height -\n titleTopPanelStyle.padding.bottom -\n titleTopPanelStyle.padding.top,\n scaleCenter: [titleTopGroup.attribute.width / 2, titleTopGroup.attribute.height / 2]\n },\n 'rect'\n ) as IRect;\n this._titleTopPanel = titleTopPanel;\n\n const titleBottomGroup = group.createOrUpdateChild(\n 'label-item-title-bottom-group',\n { x: contentOffsetX, y: contentOffsetY, clip: true },\n 'group'\n ) as IGroup;\n const titleBottom = titleBottomGroup.createOrUpdateChild(\n 'label-item-title-bottom',\n {\n x: spaceW,\n y: spaceH,\n text: titleBottomText,\n ...titleBottomStyle,\n textBaseline: 'top',\n textAlign: 'left',\n zIndex: 10\n },\n 'text'\n ) as IText;\n const titleBottomBounds = titleBottom.AABBBounds;\n if (contentOffsetX > 0) {\n titleBottomGroup.setAttributes({ x: contentOffsetX - titleBottomBounds.width() - spaceW * 2 });\n }\n titleBottomGroup.setAttributes({\n width: titleBottomBounds.width() + spaceW * 2,\n height: titleTopBounds.height() + spaceH * 2\n });\n // 添加panel\n const titleBottomPanel = titleBottomGroup.createOrUpdateChild(\n 'label-item-title-bottom-panel',\n {\n ...titleBottomPanelStyle,\n x: titleBottomPanelStyle.padding.left,\n y:\n (titleBottomGroup.attribute.height > 0 ? 0 : titleBottomGroup.attribute.height) +\n titleBottomPanelStyle.padding.top,\n width:\n titleBottomGroup.attribute.width - titleBottomPanelStyle.padding.left - titleBottomPanelStyle.padding.right,\n height:\n (titleBottomGroup.attribute.height > 0 ? 1 : -1) * titleBottomGroup.attribute.height -\n titleBottomPanelStyle.padding.bottom -\n titleBottomPanelStyle.padding.top,\n scaleCenter: [titleBottomGroup.attribute.width / 2, titleBottomGroup.attribute.height / 2]\n },\n 'rect'\n ) as IRect;\n this._titleBottomPanel = titleBottomPanel;\n\n const maxTextWidth = Math.max(titleTop.AABBBounds.width(), titleBottom.AABBBounds.width()) + spaceW * 2;\n const points = [\n { x: 0, y: 0 },\n contentOffsetX > 0\n ? { x: contentOffsetX - maxTextWidth, y: contentOffsetY }\n : { x: contentOffsetX + maxTextWidth, y: contentOffsetY },\n { x: contentOffsetX, y: contentOffsetY }\n ];\n // simple风格,不绘制终点,同时文字也要居中\n if (theme === 'simple') {\n points.pop();\n const p = points[1];\n symbolEnd.setAttributes(p);\n }\n const line = group.createOrUpdateChild('label-item-line', { x: 0, y: 0, ...lineStyle, points }, 'line') as ILine;\n\n this._symbolEnd = symbolEnd;\n this._symbolStart = symbolStart;\n this._symbolStartOuter = symbolStartOut;\n this._titleTop = titleTop;\n this._titleBottom = titleBottom;\n this._line = line;\n }\n\n appearAnimate(animateConfig: {\n duration?: number;\n easing?: string;\n symbolStartOuterType?: 'scale' | 'clipRange';\n titleType?: 'typewriter' | 'move';\n titlePanelType?: 'scale' | 'stroke';\n }) {\n const {\n duration = 1000,\n easing = 'quadOut',\n symbolStartOuterType = 'scale',\n titleType = 'typewriter',\n titlePanelType = 'scale'\n } = animateConfig;\n const symbolTime = duration / 10;\n this._symbolStart.setAttributes({ scaleX: 0, scaleY: 0 });\n this._symbolStart.animate().to({ scaleX: 1, scaleY: 1 }, symbolTime * 5, easing as any);\n\n let symbolStartOuterFrom: ISymbolGraphicAttribute;\n let symbolStartOuterTo: ISymbolGraphicAttribute;\n if (symbolStartOuterType === 'scale') {\n symbolStartOuterFrom = { scaleX: 0, scaleY: 0 };\n symbolStartOuterTo = { scaleX: 1, scaleY: 1 };\n } else {\n symbolStartOuterFrom = { clipRange: 0 };\n symbolStartOuterTo = { clipRange: 1 };\n }\n this._symbolStartOuter.setAttributes(symbolStartOuterFrom);\n this._symbolStartOuter.animate().to(symbolStartOuterTo, symbolTime * 5, easing as any);\n\n this._symbolEnd.setAttributes({ scaleX: 0, scaleY: 0 });\n this._symbolEnd\n .animate()\n .wait(symbolTime * 8)\n .to({ scaleX: 1, scaleY: 1 }, symbolTime * 2, easing as any);\n\n this._line.setAttributes({ clipRange: 0 });\n this._line.animate().to({ clipRange: 1 }, symbolTime * 9, easing as any);\n\n if (titleType === 'typewriter') {\n const titleTopText = this._titleTop.attribute.text as string;\n this._titleTop.setAttributes({ text: '' });\n this._titleTop\n .animate()\n .wait(symbolTime * 5)\n .play(new InputText({ text: '' }, { text: titleTopText }, symbolTime * 4, 'linear'));\n\n const titleBottomText = this._titleBottom.attribute.text as string;\n this._titleBottom.setAttributes({ text: '' });\n this._titleBottom\n .animate()\n .wait(symbolTime * 5)\n .play(new InputText({ text: '' }, { text: titleBottomText }, symbolTime * 4, 'linear'));\n } else {\n this._titleTop.setAttributes({ dy: this._titleTop.AABBBounds.height() + 10 });\n this._titleTop\n .animate()\n .wait(symbolTime * 5)\n .to({ dy: 0 }, symbolTime * 4, 'linear');\n\n this._titleBottom.setAttributes({ dy: -(10 + this._titleBottom.AABBBounds.height()) });\n this._titleBottom\n .animate()\n .wait(symbolTime * 5)\n .to({ dy: 0 }, symbolTime * 4, 'linear');\n }\n\n if (titlePanelType === 'scale') {\n [this._titleTopPanel, this._titleBottomPanel].forEach(panel => {\n const scaleX = panel.attribute.scaleX;\n panel.setAttributes({ scaleX: 0 });\n panel.animate().to({ scaleX }, duration, 'circInOut');\n });\n } else if (titlePanelType === 'stroke') {\n [this._titleTopPanel, this._titleBottomPanel].forEach(panel => {\n const b = panel.AABBBounds;\n const totalLen = (b.width() + b.height()) * 2;\n panel.setAttributes({ lineDash: [0, totalLen * 10] });\n panel.animate().to({ lineDash: [totalLen, totalLen * 10] }, duration, 'quadOut');\n });\n }\n }\n\n disappearAnimate(animateConfig: { duration?: number; easing?: string; mode?: 'scale' | 'default' }) {\n if (animateConfig.mode === 'scale') {\n const { duration = 1000, easing = 'quadOut' } = animateConfig;\n this.animate().to({ scaleX: 0, scaleY: 0 }, duration, easing as any);\n } else {\n const { duration = 1000, easing = 'quadOut' } = animateConfig;\n this._line.animate().to({ clipRange: 0 }, duration, easing as any);\n this._symbolStart\n .animate()\n .wait(duration / 2)\n .to({ scaleX: 0, scaleY: 0 }, duration / 2, easing as any);\n this._symbolEnd.animate().to({ scaleX: 0, scaleY: 0 }, duration, easing as any);\n this._titleTop.animate().to({ dy: this._titleTop.AABBBounds.height() + 10 }, duration / 2, easing as any);\n this._titleBottom\n .animate()\n .to({ dy: -(10 + this._titleBottom.AABBBounds.height()) }, duration / 2, easing as any);\n this._symbolStartOuter\n .animate()\n .wait(duration / 2)\n .to({ clipRange: 0 }, duration / 2, easing as any);\n this._titleTopPanel.animate().to({ scaleX: 0 }, duration, 'circInOut');\n this._titleBottomPanel.animate().to({ scaleX: 0 }, duration, 'circInOut');\n }\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare function loadLabelItemComponent(): void;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.loadLabelItemComponent = void 0;
6
+
7
+ const vrender_kits_1 = require("@visactor/vrender-kits");
8
+
9
+ function loadLabelItemComponent() {
10
+ (0, vrender_kits_1.registerGroup)(), (0, vrender_kits_1.registerText)(), (0, vrender_kits_1.registerSymbol)(),
11
+ (0, vrender_kits_1.registerLine)();
12
+ }
13
+
14
+ exports.loadLabelItemComponent = loadLabelItemComponent;
15
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/label-item/register.ts"],"names":[],"mappings":";;;AAAA,yDAAmG;AAEnG,SAAgB,sBAAsB;IACpC,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,2BAAY,GAAE,CAAC;IACf,IAAA,6BAAc,GAAE,CAAC;IACjB,IAAA,2BAAY,GAAE,CAAC;AACjB,CAAC;AALD,wDAKC","file":"register.js","sourcesContent":["import { registerGroup, registerSymbol, registerLine, registerText } from '@visactor/vrender-kits';\n\nexport function loadLabelItemComponent() {\n registerGroup();\n registerText();\n registerSymbol();\n registerLine();\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import type { IGroupGraphicAttribute, ILineGraphicAttribute, IRectGraphicAttribute, ISymbolGraphicAttribute, ITextGraphicAttribute } from '@visactor/vrender-core';
2
+ export interface IStoryLabelItemAttrs extends IGroupGraphicAttribute {
3
+ contentOffsetX: number;
4
+ contentOffsetY: number;
5
+ lineStyle?: ILineGraphicAttribute;
6
+ symbolStartStyle?: ISymbolGraphicAttribute;
7
+ symbolEndStyle?: ISymbolGraphicAttribute;
8
+ symbolStartOuterStyle?: ISymbolGraphicAttribute;
9
+ theme?: 'default' | 'simple';
10
+ titleTop?: string | string[];
11
+ titleBottom?: string | string[];
12
+ titleTopStyle?: ITextGraphicAttribute;
13
+ titleBottomStyle?: ITextGraphicAttribute;
14
+ titleSpace?: [number, number];
15
+ titleTopPanelStyle?: IRectGraphicAttribute & {
16
+ padding: {
17
+ left: number;
18
+ right: number;
19
+ top: number;
20
+ bottom: number;
21
+ };
22
+ };
23
+ titleBottomPanelStyle?: IRectGraphicAttribute & {
24
+ padding: {
25
+ left: number;
26
+ right: number;
27
+ top: number;
28
+ bottom: number;
29
+ };
30
+ };
31
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ });
6
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/label-item/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type {\n IGroupGraphicAttribute,\n ILineGraphicAttribute,\n IRectGraphicAttribute,\n ISymbolGraphicAttribute,\n ITextGraphicAttribute\n} from '@visactor/vrender-core';\nimport { ILineAttribute, ISymbolAttribute } from '@visactor/vrender-core';\n\nexport interface IStoryLabelItemAttrs extends IGroupGraphicAttribute {\n // 内容在X上的偏移量\n contentOffsetX: number;\n // 内容在Y上的偏移量\n contentOffsetY: number;\n lineStyle?: ILineGraphicAttribute;\n // 线段开始端点的样式\n symbolStartStyle?: ISymbolGraphicAttribute;\n // 线段结束端点的样式\n symbolEndStyle?: ISymbolGraphicAttribute;\n // 线段开始端点外面包裹symbol的样式\n symbolStartOuterStyle?: ISymbolGraphicAttribute;\n // 默认和简约两套主题\n theme?: 'default' | 'simple';\n // 顶部文字内容\n titleTop?: string | string[];\n // 底部文字内容\n titleBottom?: string | string[];\n // 顶部文字样式\n titleTopStyle?: ITextGraphicAttribute;\n // 底部文字样式\n titleBottomStyle?: ITextGraphicAttribute;\n // 水平和垂直方向的边距\n titleSpace?: [number, number];\n // 顶部的panel\n titleTopPanelStyle?: IRectGraphicAttribute & {\n padding: { left: number; right: number; top: number; bottom: number };\n };\n // 底部的panel\n titleBottomPanelStyle?: IRectGraphicAttribute & {\n padding: { left: number; right: number; top: number; bottom: number };\n };\n}\n"]}