@visactor/vchart-extension 2.1.0-alpha.14 → 2.1.0-alpha.15

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 (85) hide show
  1. package/build/index.js +1960 -0
  2. package/build/index.min.js +2 -2
  3. package/cjs/charts/image-cloud/series/image-cloud.d.ts +138 -0
  4. package/cjs/charts/storyline/index.d.ts +4 -0
  5. package/cjs/charts/storyline/index.js +22 -0
  6. package/cjs/charts/storyline/index.js.map +1 -0
  7. package/cjs/charts/storyline/interface.d.ts +59 -0
  8. package/cjs/charts/storyline/interface.js +6 -0
  9. package/cjs/charts/storyline/interface.js.map +1 -0
  10. package/cjs/charts/storyline/layout.d.ts +53 -0
  11. package/cjs/charts/storyline/layout.js +215 -0
  12. package/cjs/charts/storyline/layout.js.map +1 -0
  13. package/cjs/charts/storyline/layouts/bowl.d.ts +5 -0
  14. package/cjs/charts/storyline/layouts/bowl.js +286 -0
  15. package/cjs/charts/storyline/layouts/bowl.js.map +1 -0
  16. package/cjs/charts/storyline/layouts/clock.d.ts +5 -0
  17. package/cjs/charts/storyline/layouts/clock.js +233 -0
  18. package/cjs/charts/storyline/layouts/clock.js.map +1 -0
  19. package/cjs/charts/storyline/layouts/common.d.ts +87 -0
  20. package/cjs/charts/storyline/layouts/common.js +287 -0
  21. package/cjs/charts/storyline/layouts/common.js.map +1 -0
  22. package/cjs/charts/storyline/layouts/default.d.ts +4 -0
  23. package/cjs/charts/storyline/layouts/default.js +179 -0
  24. package/cjs/charts/storyline/layouts/default.js.map +1 -0
  25. package/cjs/charts/storyline/layouts/dome.d.ts +5 -0
  26. package/cjs/charts/storyline/layouts/dome.js +286 -0
  27. package/cjs/charts/storyline/layouts/dome.js.map +1 -0
  28. package/cjs/charts/storyline/layouts/landscape.d.ts +4 -0
  29. package/cjs/charts/storyline/layouts/landscape.js +254 -0
  30. package/cjs/charts/storyline/layouts/landscape.js.map +1 -0
  31. package/cjs/charts/storyline/layouts/portrait.d.ts +4 -0
  32. package/cjs/charts/storyline/layouts/portrait.js +241 -0
  33. package/cjs/charts/storyline/layouts/portrait.js.map +1 -0
  34. package/cjs/charts/storyline/storyline-transformer.d.ts +4 -0
  35. package/cjs/charts/storyline/storyline-transformer.js +62 -0
  36. package/cjs/charts/storyline/storyline-transformer.js.map +1 -0
  37. package/cjs/charts/storyline/storyline.d.ts +16 -0
  38. package/cjs/charts/storyline/storyline.js +36 -0
  39. package/cjs/charts/storyline/storyline.js.map +1 -0
  40. package/cjs/components/map-label/map-label.d.ts +52 -0
  41. package/cjs/index.d.ts +1 -0
  42. package/cjs/index.js +5 -5
  43. package/cjs/index.js.map +1 -1
  44. package/esm/charts/image-cloud/series/image-cloud.d.ts +138 -0
  45. package/esm/charts/storyline/index.d.ts +4 -0
  46. package/esm/charts/storyline/index.js +8 -0
  47. package/esm/charts/storyline/index.js.map +1 -0
  48. package/esm/charts/storyline/interface.d.ts +59 -0
  49. package/esm/charts/storyline/interface.js +2 -0
  50. package/esm/charts/storyline/interface.js.map +1 -0
  51. package/esm/charts/storyline/layout.d.ts +53 -0
  52. package/esm/charts/storyline/layout.js +205 -0
  53. package/esm/charts/storyline/layout.js.map +1 -0
  54. package/esm/charts/storyline/layouts/bowl.d.ts +5 -0
  55. package/esm/charts/storyline/layouts/bowl.js +278 -0
  56. package/esm/charts/storyline/layouts/bowl.js.map +1 -0
  57. package/esm/charts/storyline/layouts/clock.d.ts +5 -0
  58. package/esm/charts/storyline/layouts/clock.js +227 -0
  59. package/esm/charts/storyline/layouts/clock.js.map +1 -0
  60. package/esm/charts/storyline/layouts/common.d.ts +87 -0
  61. package/esm/charts/storyline/layouts/common.js +255 -0
  62. package/esm/charts/storyline/layouts/common.js.map +1 -0
  63. package/esm/charts/storyline/layouts/default.d.ts +4 -0
  64. package/esm/charts/storyline/layouts/default.js +172 -0
  65. package/esm/charts/storyline/layouts/default.js.map +1 -0
  66. package/esm/charts/storyline/layouts/dome.d.ts +5 -0
  67. package/esm/charts/storyline/layouts/dome.js +278 -0
  68. package/esm/charts/storyline/layouts/dome.js.map +1 -0
  69. package/esm/charts/storyline/layouts/landscape.d.ts +4 -0
  70. package/esm/charts/storyline/layouts/landscape.js +250 -0
  71. package/esm/charts/storyline/layouts/landscape.js.map +1 -0
  72. package/esm/charts/storyline/layouts/portrait.d.ts +4 -0
  73. package/esm/charts/storyline/layouts/portrait.js +238 -0
  74. package/esm/charts/storyline/layouts/portrait.js.map +1 -0
  75. package/esm/charts/storyline/storyline-transformer.d.ts +4 -0
  76. package/esm/charts/storyline/storyline-transformer.js +61 -0
  77. package/esm/charts/storyline/storyline-transformer.js.map +1 -0
  78. package/esm/charts/storyline/storyline.d.ts +16 -0
  79. package/esm/charts/storyline/storyline.js +29 -0
  80. package/esm/charts/storyline/storyline.js.map +1 -0
  81. package/esm/components/map-label/map-label.d.ts +52 -0
  82. package/esm/index.d.ts +1 -0
  83. package/esm/index.js +2 -0
  84. package/esm/index.js.map +1 -1
  85. package/package.json +8 -8
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.StorylineChartSpecTransformer = void 0;
6
+
7
+ const vchart_1 = require("@visactor/vchart"), common_1 = require("./layouts/common"), clock_1 = require("./layouts/clock"), default_1 = require("./layouts/default"), landscape_1 = require("./layouts/landscape"), portrait_1 = require("./layouts/portrait"), dome_1 = require("./layouts/dome"), bowl_1 = require("./layouts/bowl");
8
+
9
+ class StorylineChartSpecTransformer extends vchart_1.CommonChartSpecTransformer {
10
+ transformSpec(spec) {
11
+ var _a;
12
+ applyDefaultPadding(spec);
13
+ const storylineSpec = Object.assign(Object.assign({}, spec), {
14
+ data: [ ...null !== (_a = spec.data) && void 0 !== _a ? _a : [] ]
15
+ });
16
+ spec.type = "common", spec.data = [], spec.series = [], spec.axes = [], spec.customMark = buildStorylineMarks(storylineSpec),
17
+ delete spec.layout, delete spec.title, super.transformSpec(spec);
18
+ }
19
+ }
20
+
21
+ exports.StorylineChartSpecTransformer = StorylineChartSpecTransformer;
22
+
23
+ const applyDefaultPadding = spec => {
24
+ var _a, _b, _c, _d;
25
+ const DEFAULT_OTHER = 20, p = spec.padding;
26
+ if (null != p) if ("number" != typeof p) if (Array.isArray(p)) {
27
+ const [t = DEFAULT_OTHER, r = DEFAULT_OTHER, b, l = DEFAULT_OTHER] = p;
28
+ spec.padding = [ t, r, null != b ? b : 100, l ];
29
+ } else "object" == typeof p && (spec.padding = {
30
+ top: null !== (_a = p.top) && void 0 !== _a ? _a : DEFAULT_OTHER,
31
+ right: null !== (_b = p.right) && void 0 !== _b ? _b : DEFAULT_OTHER,
32
+ bottom: null !== (_c = p.bottom) && void 0 !== _c ? _c : 100,
33
+ left: null !== (_d = p.left) && void 0 !== _d ? _d : DEFAULT_OTHER
34
+ }); else spec.padding = [ p, p, Math.max(p, 100), p ]; else spec.padding = [ DEFAULT_OTHER, DEFAULT_OTHER, 100, DEFAULT_OTHER ];
35
+ }, buildStorylineMarks = spec => {
36
+ var _a;
37
+ const lineMark = buildLineMark(spec), blockMarks = (null !== (_a = spec.data) && void 0 !== _a ? _a : []).map(((block, index) => buildBlockMark(spec, block, index)));
38
+ if ((0, common_1.isLandscape)(spec)) return [ ...blockMarks, lineMark ].filter(Boolean);
39
+ if ((0, common_1.isPortrait)(spec)) return [ lineMark, ...blockMarks ].filter(Boolean);
40
+ if ((0, common_1.isDome)(spec)) {
41
+ return [ (0, dome_1.buildDomeCenterImageMark)(spec), (0, dome_1.buildDomeArcMark)(spec), ...blockMarks ].filter(Boolean);
42
+ }
43
+ if ((0, common_1.isBowl)(spec)) {
44
+ return [ (0, bowl_1.buildBowlCenterImageMark)(spec), (0, bowl_1.buildBowlArcMark)(spec), ...blockMarks ].filter(Boolean);
45
+ }
46
+ if ((0, common_1.isClock)(spec)) {
47
+ const ringsMark = (0, clock_1.buildClockArcMark)(spec), centerImageMark = (0, clock_1.buildClockCenterImageMark)(spec);
48
+ return [ ringsMark, ...blockMarks, centerImageMark ].filter(Boolean);
49
+ }
50
+ return [ lineMark, ...blockMarks ].filter(Boolean);
51
+ }, buildLineMark = spec => {
52
+ var _a, _b, _c;
53
+ return !1 === (null === (_a = spec.line) || void 0 === _a ? void 0 : _a.visible) || (null !== (_c = null === (_b = spec.data) || void 0 === _b ? void 0 : _b.length) && void 0 !== _c ? _c : 0) <= 1 ? null : (0,
54
+ common_1.isLandscape)(spec) ? (0, landscape_1.buildLandscapeConnectingCurve)(spec) : (0,
55
+ common_1.isPortrait)(spec) ? (0, portrait_1.buildPortraitAxisMark)(spec) : (0, default_1.buildDefaultLineMark)(spec);
56
+ }, buildBlockMark = (spec, block, index) => (0, common_1.isLandscape)(spec) ? (0,
57
+ landscape_1.buildLandscapeBlockMark)(spec, block, index) : (0, common_1.isPortrait)(spec) ? (0,
58
+ portrait_1.buildPortraitBlockMark)(spec, block, index) : (0, common_1.isDome)(spec) ? (0,
59
+ dome_1.buildDomeBlockMark)(spec, block, index) : (0, common_1.isBowl)(spec) ? (0,
60
+ bowl_1.buildBowlBlockMark)(spec, block, index) : (0, common_1.isClock)(spec) ? (0,
61
+ clock_1.buildClockBlockMark)(spec, block, index) : (0, default_1.buildDefaultBlockMark)(spec, block, index);
62
+ //# sourceMappingURL=storyline-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/charts/storyline/storyline-transformer.ts"],"names":[],"mappings":"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","file":"storyline-transformer.js","sourcesContent":["import { CommonChartSpecTransformer, type IExtensionGroupMarkSpec } from '@visactor/vchart';\nimport type { IStorylineBlock, IStorylineSpec } from './interface';\nimport { isBowl, isClock, isDome, isLandscape, isPortrait } from './layouts/common';\nimport { buildClockArcMark, buildClockBlockMark, buildClockCenterImageMark } from './layouts/clock';\nimport { buildDefaultBlockMark, buildDefaultLineMark } from './layouts/default';\nimport { buildLandscapeBlockMark, buildLandscapeConnectingCurve } from './layouts/landscape';\nimport { buildPortraitAxisMark, buildPortraitBlockMark } from './layouts/portrait';\nimport { buildDomeArcMark, buildDomeBlockMark, buildDomeCenterImageMark } from './layouts/dome';\nimport { buildBowlArcMark, buildBowlBlockMark, buildBowlCenterImageMark } from './layouts/bowl';\n\nexport class StorylineChartSpecTransformer extends CommonChartSpecTransformer<any> {\n transformSpec(spec: any): void {\n applyDefaultPadding(spec);\n const storylineSpec = {\n ...spec,\n data: [...(spec.data ?? [])]\n } as IStorylineSpec;\n\n spec.type = 'common' as any;\n spec.data = [];\n spec.series = [];\n spec.axes = [];\n spec.customMark = buildStorylineMarks(storylineSpec);\n delete spec.layout;\n delete spec.title;\n super.transformSpec(spec as any);\n }\n}\n\n/**\n * 图表默认 padding:所有 storyline 布局底部默认留 100px,\n * 给 dome 的 centerImage / 其它布局的引导线留出呼吸空间。\n * 用户在 spec.padding 中显式指定的值会被保留,仅在缺省时生效。\n */\nconst applyDefaultPadding = (spec: any) => {\n const DEFAULT_BOTTOM = 100;\n const DEFAULT_OTHER = 20;\n const p = spec.padding;\n if (p === undefined || p === null) {\n spec.padding = [DEFAULT_OTHER, DEFAULT_OTHER, DEFAULT_BOTTOM, DEFAULT_OTHER];\n return;\n }\n if (typeof p === 'number') {\n spec.padding = [p, p, Math.max(p, DEFAULT_BOTTOM), p];\n return;\n }\n if (Array.isArray(p)) {\n const [t = DEFAULT_OTHER, r = DEFAULT_OTHER, b, l = DEFAULT_OTHER] = p;\n spec.padding = [t, r, b ?? DEFAULT_BOTTOM, l];\n return;\n }\n if (typeof p === 'object') {\n spec.padding = {\n top: p.top ?? DEFAULT_OTHER,\n right: p.right ?? DEFAULT_OTHER,\n bottom: p.bottom ?? DEFAULT_BOTTOM,\n left: p.left ?? DEFAULT_OTHER\n };\n }\n};\n\nconst buildStorylineMarks = (spec: IStorylineSpec) => {\n const lineMark = buildLineMark(spec);\n const blockMarks = (spec.data ?? []).map((block, index) => buildBlockMark(spec, block, index));\n // landscape:连接曲线绘制在所有 block 之上,避免被 image 遮挡\n if (isLandscape(spec)) {\n return [...blockMarks, lineMark].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // portrait:lineMark 是中轴 rect,作为底层背景先绘制\n if (isPortrait(spec)) {\n return [lineMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // dome:先绘制 centerImage(最底层视觉锚点),再绘制贯穿 block 的弧线,最后绘制 block;\n // dome 不绘制 block 之间默认的连接线\n if (isDome(spec)) {\n const centerImageMark = buildDomeCenterImageMark(spec);\n const arcMark = buildDomeArcMark(spec);\n return [centerImageMark, arcMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // bowl:dome 的上下镜像 —— centerImage 贴顶,弧线 + block 在下方\n if (isBowl(spec)) {\n const centerImageMark = buildBowlCenterImageMark(spec);\n const arcMark = buildBowlArcMark(spec);\n return [centerImageMark, arcMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n // clock:辐射式信息盘 —— 圆环骨架 + 径向分隔线 → centerImage(盘心)→ blocks(楔形 + 外圈文字)\n if (isClock(spec)) {\n const ringsMark = buildClockArcMark(spec);\n const centerImageMark = buildClockCenterImageMark(spec);\n return [ringsMark, ...blockMarks, centerImageMark].filter(Boolean) as IExtensionGroupMarkSpec[];\n }\n return [lineMark, ...blockMarks].filter(Boolean) as IExtensionGroupMarkSpec[];\n};\n\nconst buildLineMark = (spec: IStorylineSpec): IExtensionGroupMarkSpec | null => {\n if (spec.line?.visible === false || (spec.data?.length ?? 0) <= 1) {\n return null;\n }\n if (isLandscape(spec)) {\n return buildLandscapeConnectingCurve(spec);\n }\n if (isPortrait(spec)) {\n return buildPortraitAxisMark(spec);\n }\n return buildDefaultLineMark(spec);\n};\n\nconst buildBlockMark = (spec: IStorylineSpec, block: IStorylineBlock, index: number): IExtensionGroupMarkSpec => {\n if (isLandscape(spec)) {\n return buildLandscapeBlockMark(spec, block, index);\n }\n if (isPortrait(spec)) {\n return buildPortraitBlockMark(spec, block, index);\n }\n if (isDome(spec)) {\n return buildDomeBlockMark(spec, block, index);\n }\n if (isBowl(spec)) {\n return buildBowlBlockMark(spec, block, index);\n }\n if (isClock(spec)) {\n return buildClockBlockMark(spec, block, index);\n }\n\n return buildDefaultBlockMark(spec, block, index);\n};\n"]}
@@ -0,0 +1,16 @@
1
+ import { BaseChart, VChart } from '@visactor/vchart';
2
+ import type { IStorylineSpec } from './interface';
3
+ import { StorylineChartSpecTransformer } from './storyline-transformer';
4
+ export declare class StorylineChart<T extends IStorylineSpec = IStorylineSpec> extends BaseChart<Omit<T, 'data' | 'title' | 'layout'>> {
5
+ type: string;
6
+ static type: string;
7
+ static readonly view: string;
8
+ _spec: T;
9
+ static readonly transformerConstructor: typeof StorylineChartSpecTransformer;
10
+ readonly transformerConstructor: typeof StorylineChartSpecTransformer;
11
+ init(): void;
12
+ protected isValid(): boolean;
13
+ }
14
+ export declare const registerStorylineChart: (option?: {
15
+ VChart?: typeof VChart;
16
+ }) => void;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.registerStorylineChart = exports.StorylineChart = void 0;
6
+
7
+ const vchart_1 = require("@visactor/vchart"), storyline_transformer_1 = require("./storyline-transformer");
8
+
9
+ class StorylineChart extends vchart_1.BaseChart {
10
+ constructor() {
11
+ super(...arguments), this.type = "storyline", this.transformerConstructor = storyline_transformer_1.StorylineChartSpecTransformer;
12
+ }
13
+ init() {
14
+ this.isValid() && super.init();
15
+ }
16
+ isValid() {
17
+ var _a, _b;
18
+ const {data: data} = this._spec;
19
+ return !!Array.isArray(data) || (null === (_b = (_a = this._option).onError) || void 0 === _b || _b.call(_a, "Data is required and should be an array for storyline chart"),
20
+ !1);
21
+ }
22
+ }
23
+
24
+ exports.StorylineChart = StorylineChart, StorylineChart.type = "storyline", StorylineChart.view = "singleDefault",
25
+ StorylineChart.transformerConstructor = storyline_transformer_1.StorylineChartSpecTransformer;
26
+
27
+ const registerStorylineChart = option => {
28
+ (0, vchart_1.registerCommonChart)(), (0, vchart_1.registerCustomMark)(), (0, vchart_1.registerGroupMark)(),
29
+ (0, vchart_1.registerRectMark)(), (0, vchart_1.registerTextMark)(), (0, vchart_1.registerImageMark)(),
30
+ (0, vchart_1.registerLineMark)(), (0, vchart_1.registerPathMark)(), (0, vchart_1.registerArcMark)();
31
+ const vchartConstructor = (null == option ? void 0 : option.VChart) || vchart_1.VChart;
32
+ vchartConstructor && vchartConstructor.useChart([ StorylineChart ]);
33
+ };
34
+
35
+ exports.registerStorylineChart = registerStorylineChart;
36
+ //# sourceMappingURL=storyline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/charts/storyline/storyline.ts"],"names":[],"mappings":";;;AAAA,6CAY0B;AAE1B,mEAAwE;AAExE,MAAa,cAA0D,SAAQ,kBAE9E;IAFD;;QAGE,SAAI,GAAG,WAAW,CAAC;QAOV,2BAAsB,GAAG,qDAA6B,CAAC;IAiBlE,CAAC;IAfC,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB,OAAO;SACR;QACD,KAAK,CAAC,IAAI,EAAE,CAAC;IACf,CAAC;IAES,OAAO;;QACf,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxB,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,OAAO,mDAAG,6DAA6D,CAAC,CAAC;YACtF,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;;AA1BH,wCA2BC;AAvBQ,mBAAI,GAAG,WAAW,CAAC;AACV,mBAAI,GAAW,eAAe,CAAC;AAI/B,qCAAsB,GAAG,qDAA6B,CAAC;AAoBlE,MAAM,sBAAsB,GAAG,CAAC,MAAmC,EAAE,EAAE;IAC5E,IAAA,4BAAmB,GAAE,CAAC;IACtB,IAAA,2BAAkB,GAAE,CAAC;IACrB,IAAA,0BAAiB,GAAE,CAAC;IACpB,IAAA,yBAAgB,GAAE,CAAC;IACnB,IAAA,yBAAgB,GAAE,CAAC;IACnB,IAAA,0BAAiB,GAAE,CAAC;IACpB,IAAA,yBAAgB,GAAE,CAAC;IACnB,IAAA,yBAAgB,GAAE,CAAC;IACnB,IAAA,wBAAe,GAAE,CAAC;IAElB,MAAM,iBAAiB,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,eAAM,CAAC;IACnD,IAAI,iBAAiB,EAAE;QACrB,iBAAiB,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;KAC9C;AACH,CAAC,CAAC;AAfW,QAAA,sBAAsB,0BAejC","file":"storyline.js","sourcesContent":["import {\n BaseChart,\n VChart,\n registerArcMark,\n registerCommonChart,\n registerCustomMark,\n registerGroupMark,\n registerImageMark,\n registerLineMark,\n registerPathMark,\n registerRectMark,\n registerTextMark\n} from '@visactor/vchart';\nimport type { IStorylineSpec } from './interface';\nimport { StorylineChartSpecTransformer } from './storyline-transformer';\n\nexport class StorylineChart<T extends IStorylineSpec = IStorylineSpec> extends BaseChart<\n Omit<T, 'data' | 'title' | 'layout'>\n> {\n type = 'storyline';\n static type = 'storyline';\n static readonly view: string = 'singleDefault';\n\n declare _spec: T;\n\n static readonly transformerConstructor = StorylineChartSpecTransformer;\n readonly transformerConstructor = StorylineChartSpecTransformer;\n\n init() {\n if (!this.isValid()) {\n return;\n }\n super.init();\n }\n\n protected isValid() {\n const { data } = this._spec;\n if (!Array.isArray(data)) {\n this._option.onError?.('Data is required and should be an array for storyline chart');\n return false;\n }\n return true;\n }\n}\n\nexport const registerStorylineChart = (option?: { VChart?: typeof VChart }) => {\n registerCommonChart();\n registerCustomMark();\n registerGroupMark();\n registerRectMark();\n registerTextMark();\n registerImageMark();\n registerLineMark();\n registerPathMark();\n registerArcMark();\n\n const vchartConstructor = option?.VChart || VChart;\n if (vchartConstructor) {\n vchartConstructor.useChart([StorylineChart]);\n }\n};\n"]}
@@ -0,0 +1,52 @@
1
+ import { type IGraphic, type IGroup, type IRect as IRectGraphic, MarkPoint } from '@visactor/vchart';
2
+ import type { Maybe } from '@visactor/vchart';
3
+ import { LayoutZIndex, VChart, BaseComponent } from '@visactor/vchart';
4
+ import type { IRect, IPoint, Datum, IModelSpecInfo, PanEventParam, ICartesianSeries, IGeoSeries } from '@visactor/vchart';
5
+ import type { IPairInfo } from './layout';
6
+ import type { IMapLabelSpec, MapLabelSceneNodeMap } from './type';
7
+ import { MapLabelSpecTransformer } from './map-label-transformer';
8
+ export declare class MapLabelComponent extends BaseComponent<IMapLabelSpec> {
9
+ static type: string;
10
+ type: string;
11
+ name: string;
12
+ static specKey: string;
13
+ specKey: string;
14
+ static readonly transformerConstructor: any;
15
+ readonly transformerConstructor: typeof MapLabelSpecTransformer;
16
+ layoutType: 'none';
17
+ layoutZIndex: LayoutZIndex;
18
+ protected nameField: string;
19
+ protected valueField?: string;
20
+ protected _series: ICartesianSeries | IGeoSeries;
21
+ protected _map: any[];
22
+ protected _longitudeField: string;
23
+ protected _latitudeField: string;
24
+ protected _markerComponents: MarkPoint[];
25
+ private _activeDatum;
26
+ static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]>;
27
+ setAttrFromSpec(): void;
28
+ created(): void;
29
+ initRelatedInfo(): void;
30
+ initData(): void;
31
+ initEvent(): void;
32
+ handlePan(e: PanEventParam): void;
33
+ handleZoom(): void;
34
+ private _updateDatum;
35
+ dataToPosition(datum: any): IPoint;
36
+ updateLayoutAttribute(): void;
37
+ protected _updateMarkerLayoutAttribute(): void;
38
+ protected _evaluateMarker(data: Datum, index: number): {
39
+ pairInfo: IPairInfo;
40
+ contentMarks: Partial<Record<import("./type").IMapLabelNodes, IGraphic<Partial<import("@visactor/vrender-core").IGraphicAttribute>>>>;
41
+ };
42
+ protected _layoutMarkers(positionedRects: IRect[], contentMarks: MapLabelSceneNodeMap[]): void;
43
+ protected _renderMarkers(): void;
44
+ protected _layoutLabels(rects: IPairInfo[]): IRectGraphic[];
45
+ private _isRelativeModel;
46
+ private _isRelativeSeries;
47
+ protected _getNeedClearVRenderComponents(): IGraphic[];
48
+ getVRenderComponents(): IGroup[];
49
+ }
50
+ export declare const registerMapLabel: (option?: {
51
+ VChart?: typeof VChart;
52
+ }) => void;
package/cjs/index.d.ts CHANGED
@@ -17,6 +17,7 @@ export * from './charts/pictogram';
17
17
  export * from './charts/image-cloud';
18
18
  export * from './charts/candlestick';
19
19
  export * from './charts/timeline';
20
+ export * from './charts/storyline';
20
21
  export * from './components/series-break';
21
22
  export * from './components/bar-link';
22
23
  export * from './components/series-label';
package/cjs/index.js CHANGED
@@ -36,8 +36,8 @@ Object.defineProperty(exports, "register3DPlugin", {
36
36
  }
37
37
  }), __exportStar(require("./charts/pictogram"), exports), __exportStar(require("./charts/image-cloud"), exports),
38
38
  __exportStar(require("./charts/candlestick"), exports), __exportStar(require("./charts/timeline"), exports),
39
- __exportStar(require("./components/series-break"), exports), __exportStar(require("./components/bar-link"), exports),
40
- __exportStar(require("./components/series-label"), exports), __exportStar(require("./components/map-label"), exports),
41
- __exportStar(require("./components/regression-line"), exports), __exportStar(require("./components/scatter-regression-line"), exports),
42
- __exportStar(require("./components/bar-regression-line"), exports), __exportStar(require("./components/histogram-regression-line"), exports),
43
- __exportStar(require("./components/extension-mark-sync-state"), exports);
39
+ __exportStar(require("./charts/storyline"), exports), __exportStar(require("./components/series-break"), exports),
40
+ __exportStar(require("./components/bar-link"), exports), __exportStar(require("./components/series-label"), exports),
41
+ __exportStar(require("./components/map-label"), exports), __exportStar(require("./components/regression-line"), exports),
42
+ __exportStar(require("./components/scatter-regression-line"), exports), __exportStar(require("./components/bar-regression-line"), exports),
43
+ __exportStar(require("./components/histogram-regression-line"), exports), __exportStar(require("./components/extension-mark-sync-state"), exports);
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mEAAiD;AACjD,qEAAmD;AACnD,6DAA2C;AAC3C,uFAAqE;AACrE,qFAAmE;AACnE,yFAAuE;AAEvE,kDAAgC;AAChC,qDAAmC;AACnC,wDAAsC;AACtC,kDAAgC;AAChC,mEAAiD;AACjD,yDAAuC;AACvC,mDAAiC;AACjC,2DAAyC;AACzC,6CAAsD;AAA7C,0GAAA,gBAAgB,OAAA;AACzB,qDAAmC;AACnC,uDAAqC;AACrC,uDAAqC;AACrC,oDAAkC;AAElC,4DAA0C;AAC1C,wDAAsC;AACtC,4DAA0C;AAC1C,yDAAuC;AACvC,+DAA6C;AAC7C,uEAAqD;AACrD,mEAAiD;AACjD,yEAAuD;AACvD,yEAAuD","file":"index.js","sourcesContent":["export * from './charts/ranking-bar/ranking-bar';\nexport * from './charts/ranking-list/ranking-list';\nexport * from './charts/conversion-funnel';\nexport * from './charts/sequence-scatter-link/sequence-scatter-link';\nexport * from './charts/sequence-scatter-kde/sequence-scatter-kde';\nexport * from './charts/sequence-scatter-pixel/sequence-scatter-pixel';\n\nexport * from './charts/bar-3d';\nexport * from './charts/funnel-3d';\nexport * from './charts/histogram-3d';\nexport * from './charts/pie-3d';\nexport * from './charts/combination-candlestick';\nexport * from './charts/word-cloud-3d';\nexport * from './charts/axis-3d';\nexport * from './charts/range-column-3d';\nexport { register3DPlugin } from './charts/3d/plugin';\nexport * from './charts/pictogram';\nexport * from './charts/image-cloud';\nexport * from './charts/candlestick';\nexport * from './charts/timeline';\n\nexport * from './components/series-break';\nexport * from './components/bar-link';\nexport * from './components/series-label';\nexport * from './components/map-label';\nexport * from './components/regression-line';\nexport * from './components/scatter-regression-line';\nexport * from './components/bar-regression-line';\nexport * from './components/histogram-regression-line';\nexport * from './components/extension-mark-sync-state';\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mEAAiD;AACjD,qEAAmD;AACnD,6DAA2C;AAC3C,uFAAqE;AACrE,qFAAmE;AACnE,yFAAuE;AAEvE,kDAAgC;AAChC,qDAAmC;AACnC,wDAAsC;AACtC,kDAAgC;AAChC,mEAAiD;AACjD,yDAAuC;AACvC,mDAAiC;AACjC,2DAAyC;AACzC,6CAAsD;AAA7C,0GAAA,gBAAgB,OAAA;AACzB,qDAAmC;AACnC,uDAAqC;AACrC,uDAAqC;AACrC,oDAAkC;AAClC,qDAAmC;AAEnC,4DAA0C;AAC1C,wDAAsC;AACtC,4DAA0C;AAC1C,yDAAuC;AACvC,+DAA6C;AAC7C,uEAAqD;AACrD,mEAAiD;AACjD,yEAAuD;AACvD,yEAAuD","file":"index.js","sourcesContent":["export * from './charts/ranking-bar/ranking-bar';\nexport * from './charts/ranking-list/ranking-list';\nexport * from './charts/conversion-funnel';\nexport * from './charts/sequence-scatter-link/sequence-scatter-link';\nexport * from './charts/sequence-scatter-kde/sequence-scatter-kde';\nexport * from './charts/sequence-scatter-pixel/sequence-scatter-pixel';\n\nexport * from './charts/bar-3d';\nexport * from './charts/funnel-3d';\nexport * from './charts/histogram-3d';\nexport * from './charts/pie-3d';\nexport * from './charts/combination-candlestick';\nexport * from './charts/word-cloud-3d';\nexport * from './charts/axis-3d';\nexport * from './charts/range-column-3d';\nexport { register3DPlugin } from './charts/3d/plugin';\nexport * from './charts/pictogram';\nexport * from './charts/image-cloud';\nexport * from './charts/candlestick';\nexport * from './charts/timeline';\nexport * from './charts/storyline';\n\nexport * from './components/series-break';\nexport * from './components/bar-link';\nexport * from './components/series-label';\nexport * from './components/map-label';\nexport * from './components/regression-line';\nexport * from './components/scatter-regression-line';\nexport * from './components/bar-regression-line';\nexport * from './components/histogram-regression-line';\nexport * from './components/extension-mark-sync-state';\n"]}
@@ -0,0 +1,138 @@
1
+ import type { IImageCloudSeriesSpec } from './interface';
2
+ import { ImageCloudMarkNameEnum } from './constant';
3
+ import type { IPoint } from '@visactor/vchart';
4
+ import { createImage } from '@visactor/vchart';
5
+ import type { Datum, IImageMark, IMark, IRectMark } from '@visactor/vchart';
6
+ import { BaseSeries } from '@visactor/vchart';
7
+ export declare class ImageCloudSeries<T extends IImageCloudSeriesSpec> extends BaseSeries<T> {
8
+ static readonly type: string;
9
+ type: string;
10
+ static readonly mark: {
11
+ image: {
12
+ name: ImageCloudMarkNameEnum;
13
+ type: import("@visactor/vchart").MarkTypeEnum;
14
+ };
15
+ imageMask: {
16
+ name: ImageCloudMarkNameEnum;
17
+ type: import("@visactor/vchart").MarkTypeEnum;
18
+ };
19
+ label?: import("@visactor/vchart").ISeriesMarkInfo;
20
+ point?: import("@visactor/vchart").ISeriesMarkInfo;
21
+ line?: import("@visactor/vchart").ISeriesMarkInfo;
22
+ area?: import("@visactor/vchart").ISeriesMarkInfo;
23
+ bar?: import("@visactor/vchart").ISeriesMarkInfo;
24
+ boxPlot?: import("@visactor/vchart").ISeriesMarkInfo;
25
+ outlier?: import("@visactor/vchart").ISeriesMarkInfo;
26
+ circlePacking?: import("@visactor/vchart").ISeriesMarkInfo;
27
+ group?: import("@visactor/vchart").ISeriesMarkInfo;
28
+ gridBackground?: import("@visactor/vchart").ISeriesMarkInfo;
29
+ grid?: import("@visactor/vchart").ISeriesMarkInfo;
30
+ dot?: import("@visactor/vchart").ISeriesMarkInfo;
31
+ title?: import("@visactor/vchart").ISeriesMarkInfo;
32
+ subTitle?: import("@visactor/vchart").ISeriesMarkInfo;
33
+ symbol?: import("@visactor/vchart").ISeriesMarkInfo;
34
+ funnel?: import("@visactor/vchart").ISeriesMarkInfo;
35
+ transform?: import("@visactor/vchart").ISeriesMarkInfo;
36
+ transformLabel?: import("@visactor/vchart").ISeriesMarkInfo;
37
+ outerLabel?: import("@visactor/vchart").ISeriesMarkInfo;
38
+ outerLabelLine?: import("@visactor/vchart").ISeriesMarkInfo;
39
+ pin?: import("@visactor/vchart").ISeriesMarkInfo;
40
+ pinBackground?: import("@visactor/vchart").ISeriesMarkInfo;
41
+ pointer?: import("@visactor/vchart").ISeriesMarkInfo;
42
+ segment?: import("@visactor/vchart").ISeriesMarkInfo;
43
+ track?: import("@visactor/vchart").ISeriesMarkInfo;
44
+ cell?: import("@visactor/vchart").ISeriesMarkInfo;
45
+ cellBackground?: import("@visactor/vchart").ISeriesMarkInfo;
46
+ link?: import("@visactor/vchart").ISeriesMarkInfo;
47
+ arrow?: import("@visactor/vchart").ISeriesMarkInfo;
48
+ pie?: import("@visactor/vchart").ISeriesMarkInfo;
49
+ labelLine?: import("@visactor/vchart").ISeriesMarkInfo;
50
+ progress?: import("@visactor/vchart").ISeriesMarkInfo;
51
+ minLabel?: import("@visactor/vchart").ISeriesMarkInfo;
52
+ maxLabel?: import("@visactor/vchart").ISeriesMarkInfo;
53
+ rose?: import("@visactor/vchart").ISeriesMarkInfo;
54
+ node?: import("@visactor/vchart").ISeriesMarkInfo;
55
+ sunburst?: import("@visactor/vchart").ISeriesMarkInfo;
56
+ nonLeaf?: import("@visactor/vchart").ISeriesMarkInfo;
57
+ leaf?: import("@visactor/vchart").ISeriesMarkInfo;
58
+ nonLeafLabel?: import("@visactor/vchart").ISeriesMarkInfo;
59
+ leaderLine?: import("@visactor/vchart").ISeriesMarkInfo;
60
+ stackLabel?: import("@visactor/vchart").ISeriesMarkInfo;
61
+ word?: import("@visactor/vchart").ISeriesMarkInfo;
62
+ fillingWord?: import("@visactor/vchart").ISeriesMarkInfo;
63
+ wordMask?: import("@visactor/vchart").ISeriesMarkInfo;
64
+ nodePoint?: import("@visactor/vchart").ISeriesMarkInfo;
65
+ ripplePoint?: import("@visactor/vchart").ISeriesMarkInfo;
66
+ centerPoint?: import("@visactor/vchart").ISeriesMarkInfo;
67
+ centerLabel?: import("@visactor/vchart").ISeriesMarkInfo;
68
+ barBackground?: import("@visactor/vchart").ISeriesMarkInfo;
69
+ lineLabel?: import("@visactor/vchart").ISeriesMarkInfo;
70
+ areaLabel?: import("@visactor/vchart").ISeriesMarkInfo;
71
+ liquidGroup?: import("@visactor/vchart").ISeriesMarkInfo;
72
+ liquid?: import("@visactor/vchart").ISeriesMarkInfo;
73
+ liquidBackground?: import("@visactor/vchart").ISeriesMarkInfo;
74
+ liquidOutline?: import("@visactor/vchart").ISeriesMarkInfo;
75
+ circle?: import("@visactor/vchart").ISeriesMarkInfo;
76
+ overlap?: import("@visactor/vchart").ISeriesMarkInfo;
77
+ overlapLabel?: import("@visactor/vchart").ISeriesMarkInfo;
78
+ };
79
+ protected _urlField: string;
80
+ protected _nameField?: string;
81
+ protected _valueField?: string;
82
+ setValueField(field: string): void;
83
+ protected _imageMark?: IImageMark;
84
+ protected _maskMark?: IRectMark;
85
+ setAttrFromSpec(): void;
86
+ initMark(): void;
87
+ initMarkStyle(): void;
88
+ protected _initImageMarkStyle(): void;
89
+ protected isFillingImage(datum: Datum): boolean;
90
+ protected _initMaskMarkStyle(): void;
91
+ protected initTooltip(): void;
92
+ protected _imageCloudTransformOption(): {
93
+ size: () => number[];
94
+ image: {
95
+ field: string;
96
+ };
97
+ weight: {
98
+ field: string;
99
+ };
100
+ imageConfig: {
101
+ imageSize: number;
102
+ imageSizeRange: [number, number];
103
+ padding: number;
104
+ };
105
+ ratio: number;
106
+ mask: string | import("@visactor/vchart").TextShapeMask | import("@visactor/vchart").GeometricMaskShape;
107
+ maskConfig: {
108
+ visible?: boolean;
109
+ threshold?: number;
110
+ invert?: boolean;
111
+ removeWhiteBorder?: boolean;
112
+ style?: Partial<import("@visactor/vchart").IImageMarkSpec>;
113
+ };
114
+ layoutConfig: import("@visactor/vchart").LayoutConfigType;
115
+ createCanvas: (params: import("@visactor/vrender-core").ICreateCanvasParams) => any;
116
+ createImage: typeof createImage;
117
+ onUpdateMaskCanvas: (inputImage?: HTMLCanvasElement, maskImage?: HTMLCanvasElement) => void;
118
+ onLayoutFinished: () => void;
119
+ };
120
+ protected _buildMarkAttributeContext(): void;
121
+ initAnimation(): void;
122
+ getDimensionField(): string[];
123
+ getMeasureField(): string[];
124
+ getStatisticFields(): {
125
+ key: string;
126
+ operations: Array<'max' | 'min' | 'values'>;
127
+ }[];
128
+ getActiveMarks(): IMark[];
129
+ getMarkData(datum: Datum): any;
130
+ getGroupFields(): string[];
131
+ dataToPosition(data: Datum): IPoint | null;
132
+ dataToPositionX(data: Datum): number | null;
133
+ dataToPositionY(data: Datum): number | null;
134
+ valueToPosition(value1: any, value2?: any): null;
135
+ getStackGroupFields(): string[];
136
+ getStackValueField(): string;
137
+ }
138
+ export declare const registerImageCloudSeries: () => void;
@@ -0,0 +1,4 @@
1
+ export * from './interface';
2
+ export * from './layout';
3
+ export * from './storyline';
4
+ export * from './storyline-transformer';
@@ -0,0 +1,8 @@
1
+ export * from "./interface";
2
+
3
+ export * from "./layout";
4
+
5
+ export * from "./storyline";
6
+
7
+ export * from "./storyline-transformer";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/charts/storyline/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC","file":"index.js","sourcesContent":["export * from './interface';\nexport * from './layout';\nexport * from './storyline';\nexport * from './storyline-transformer';\n"]}
@@ -0,0 +1,59 @@
1
+ import type { IChartSpec, IComposedTextMarkSpec, IImageMarkSpec, IMarkSpec, IPathMarkSpec, IRectMarkSpec, ITextMarkSpec, StringOrNumber } from '@visactor/vchart';
2
+ export type StorylineLayoutType = 'clock' | 'bowl' | 'dome' | 'left-wing' | 'right-wing' | 'landscape' | 'portrait' | 'up-ladder' | 'down-ladder' | 'pulse' | 'spiral';
3
+ export type StorylineImagePosition = 'top' | 'left' | 'right' | 'bottom';
4
+ export type StorylineLineType = 'line' | 'polyline' | 'curve';
5
+ export interface IStorylineBlock {
6
+ id?: StringOrNumber;
7
+ title?: string;
8
+ content?: string | string[];
9
+ image?: string | HTMLImageElement | HTMLCanvasElement;
10
+ datum?: unknown;
11
+ }
12
+ export interface IStorylineLayoutOptions {
13
+ type: StorylineLayoutType;
14
+ padding?: number | [number, number, number, number];
15
+ radiusRatio?: number;
16
+ startAngle?: number;
17
+ endAngle?: number;
18
+ }
19
+ export interface IStorylineBlockSpec {
20
+ width?: number;
21
+ widthRatio?: number;
22
+ minWidth?: number;
23
+ maxWidth?: number;
24
+ height?: number;
25
+ padding?: number | [number, number, number, number];
26
+ gap?: number;
27
+ style?: Partial<IRectMarkSpec>;
28
+ }
29
+ export interface IStorylineImageSpec extends IMarkSpec<IImageMarkSpec> {
30
+ width?: number;
31
+ height?: number;
32
+ position?: StorylineImagePosition;
33
+ gap?: number;
34
+ }
35
+ export interface IStorylineCenterImageSpec extends IMarkSpec<IImageMarkSpec> {
36
+ width?: number;
37
+ height?: number;
38
+ visible?: boolean;
39
+ image?: string | HTMLImageElement | HTMLCanvasElement;
40
+ }
41
+ export interface IStorylineLineSpec extends IMarkSpec<IPathMarkSpec> {
42
+ visible?: boolean;
43
+ type?: StorylineLineType;
44
+ showArrow?: boolean;
45
+ arrowSize?: number;
46
+ distance?: number;
47
+ }
48
+ export interface IStorylineSpec extends Omit<IChartSpec, 'type' | 'data' | 'series' | 'title' | 'layout'> {
49
+ type: 'storyline';
50
+ data: IStorylineBlock[];
51
+ layout?: StorylineLayoutType | IStorylineLayoutOptions;
52
+ block?: IStorylineBlockSpec;
53
+ title?: IMarkSpec<ITextMarkSpec>;
54
+ content?: IMarkSpec<IComposedTextMarkSpec>;
55
+ image?: IStorylineImageSpec;
56
+ centerImage?: IStorylineCenterImageSpec;
57
+ line?: IStorylineLineSpec;
58
+ themeColor?: string;
59
+ }
@@ -0,0 +1,2 @@
1
+ export { };
2
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/charts/storyline/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type {\n IChartSpec,\n IComposedTextMarkSpec,\n IImageMarkSpec,\n IMarkSpec,\n IPathMarkSpec,\n IRectMarkSpec,\n ITextMarkSpec,\n StringOrNumber\n} from '@visactor/vchart';\n\nexport type StorylineLayoutType =\n | 'clock'\n | 'bowl'\n | 'dome'\n | 'left-wing'\n | 'right-wing'\n | 'landscape'\n | 'portrait'\n | 'up-ladder'\n | 'down-ladder'\n | 'pulse'\n | 'spiral';\n\nexport type StorylineImagePosition = 'top' | 'left' | 'right' | 'bottom';\nexport type StorylineLineType = 'line' | 'polyline' | 'curve';\n\nexport interface IStorylineBlock {\n id?: StringOrNumber;\n title?: string;\n content?: string | string[];\n image?: string | HTMLImageElement | HTMLCanvasElement;\n datum?: unknown;\n}\n\nexport interface IStorylineLayoutOptions {\n type: StorylineLayoutType;\n /**\n * 边缘留白,支持单值或 [top, right, bottom, left]。\n */\n padding?: number | [number, number, number, number];\n /**\n * 对 circular/arc 布局生效,控制半径占可用空间的比例。\n */\n radiusRatio?: number;\n /**\n * 对 circular/arc 布局生效,角度单位为度。\n */\n startAngle?: number;\n /**\n * 对 circular/arc 布局生效,角度单位为度。\n */\n endAngle?: number;\n}\n\nexport interface IStorylineBlockSpec {\n width?: number;\n widthRatio?: number;\n minWidth?: number;\n maxWidth?: number;\n height?: number;\n padding?: number | [number, number, number, number];\n gap?: number;\n style?: Partial<IRectMarkSpec>;\n}\n\nexport interface IStorylineImageSpec extends IMarkSpec<IImageMarkSpec> {\n width?: number;\n height?: number;\n position?: StorylineImagePosition;\n gap?: number;\n}\n\nexport interface IStorylineCenterImageSpec extends IMarkSpec<IImageMarkSpec> {\n width?: number;\n height?: number;\n visible?: boolean;\n image?: string | HTMLImageElement | HTMLCanvasElement;\n}\n\nexport interface IStorylineLineSpec extends IMarkSpec<IPathMarkSpec> {\n visible?: boolean;\n type?: StorylineLineType;\n showArrow?: boolean;\n arrowSize?: number;\n /**\n * 连接线和 block 边缘之间的距离。\n */\n distance?: number;\n}\n\nexport interface IStorylineSpec extends Omit<IChartSpec, 'type' | 'data' | 'series' | 'title' | 'layout'> {\n type: 'storyline';\n data: IStorylineBlock[];\n layout?: StorylineLayoutType | IStorylineLayoutOptions;\n block?: IStorylineBlockSpec;\n title?: IMarkSpec<ITextMarkSpec>;\n content?: IMarkSpec<IComposedTextMarkSpec>;\n image?: IStorylineImageSpec;\n centerImage?: IStorylineCenterImageSpec;\n line?: IStorylineLineSpec;\n themeColor?: string;\n}\n"]}
@@ -0,0 +1,53 @@
1
+ import type { IStorylineBlock, IStorylineLayoutOptions, StorylineLayoutType } from './interface';
2
+ export interface StorylineSize {
3
+ width: number;
4
+ height: number;
5
+ }
6
+ export interface StorylinePadding {
7
+ top: number;
8
+ right: number;
9
+ bottom: number;
10
+ left: number;
11
+ }
12
+ export interface StorylinePoint {
13
+ x: number;
14
+ y: number;
15
+ }
16
+ export interface StorylineBlockPosition extends StorylinePoint, StorylineSize {
17
+ id: string | number;
18
+ index: number;
19
+ datum: IStorylineBlock;
20
+ center: StorylinePoint;
21
+ }
22
+ export interface StorylineLinkPosition {
23
+ from: StorylineBlockPosition;
24
+ to: StorylineBlockPosition;
25
+ start: StorylinePoint;
26
+ end: StorylinePoint;
27
+ points: StorylinePoint[];
28
+ }
29
+ export interface StorylineCircleGuide {
30
+ center: StorylinePoint;
31
+ radius: number;
32
+ }
33
+ export interface StorylineLayoutResult {
34
+ blocks: StorylineBlockPosition[];
35
+ links: StorylineLinkPosition[];
36
+ circleGuide?: StorylineCircleGuide;
37
+ }
38
+ export interface StorylineComputeOptions {
39
+ layout: StorylineLayoutType | IStorylineLayoutOptions | undefined;
40
+ viewBox: StorylineSize;
41
+ block: StorylineSize;
42
+ gap?: number;
43
+ padding?: number | [number, number, number, number];
44
+ lineDistance?: number;
45
+ }
46
+ export declare const normalizePadding: (padding?: number | [
47
+ number,
48
+ number,
49
+ number,
50
+ number
51
+ ]) => StorylinePadding;
52
+ export declare const normalizeLayout: (layout?: StorylineLayoutType | IStorylineLayoutOptions) => IStorylineLayoutOptions;
53
+ export declare const computeStorylineLayout: (data: IStorylineBlock[], options: StorylineComputeOptions) => StorylineLayoutResult;