@visactor/vrender-components 0.20.11-alpha.0 → 0.20.11-alpha.2

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.
@@ -9,22 +9,16 @@ const vutils_1 = require("@visactor/vutils"), util_1 = require("./util");
9
9
  function autoWrap(labels, config) {
10
10
  const {limitLength: limitLength, axisLength: axisLength, ellipsis: ellipsis = "...", orient: orient} = config;
11
11
  if ((0, vutils_1.isEmpty)(labels) || !(0, vutils_1.isValidNumber)(limitLength)) return;
12
- let verticalLimitLength = axisLength / labels.length;
13
- labels.forEach(((label, index) => {
14
- var _a, _b, _c, _d, _e;
12
+ const verticalLimitLength = axisLength / labels.length;
13
+ labels.forEach((label => {
14
+ var _a;
15
15
  const angle = label.attribute.angle, isHorizontal = (0, util_1.isAngleHorizontal)(angle), isVertical = (0,
16
16
  util_1.isAngleVertical)(angle), isX = "top" === orient || "bottom" === orient;
17
17
  if (isX) {
18
18
  if (isVertical && Math.floor(label.AABBBounds.height()) <= limitLength) return;
19
- if (isHorizontal) {
20
- const minGap = getLabelMinGap(label.attribute.x, null === (_a = labels[index + 1]) || void 0 === _a ? void 0 : _a.attribute.x, null === (_b = labels[index - 1]) || void 0 === _b ? void 0 : _b.attribute.x);
21
- (0, vutils_1.isValidNumber)(minGap) && (verticalLimitLength = (0, vutils_1.min)(verticalLimitLength, minGap));
22
- }
19
+ if (isHorizontal && Math.floor(label.AABBBounds.width()) <= verticalLimitLength) return;
23
20
  } else {
24
- if (isVertical) {
25
- const minGap = getLabelMinGap(label.attribute.y, null === (_c = labels[index + 1]) || void 0 === _c ? void 0 : _c.attribute.y, null === (_d = labels[index - 1]) || void 0 === _d ? void 0 : _d.attribute.y);
26
- (0, vutils_1.isValidNumber)(minGap) && (verticalLimitLength = (0, vutils_1.min)(verticalLimitLength, minGap));
27
- }
21
+ if (isVertical && Math.floor(label.AABBBounds.height()) <= verticalLimitLength) return;
28
22
  if (isHorizontal && Math.floor(label.AABBBounds.width()) <= limitLength) return;
29
23
  }
30
24
  let limitLabelLength = null, heightLimit = null;
@@ -33,19 +27,12 @@ function autoWrap(labels, config) {
33
27
  heightLimit = limitLength) : (limitLabelLength = limitLength, heightLimit = verticalLimitLength),
34
28
  label.setAttributes({
35
29
  maxLineWidth: limitLabelLength,
36
- ellipsis: null !== (_e = label.attribute.ellipsis) && void 0 !== _e ? _e : ellipsis,
30
+ ellipsis: null !== (_a = label.attribute.ellipsis) && void 0 !== _a ? _a : ellipsis,
37
31
  whiteSpace: "normal",
38
32
  heightLimit: heightLimit
39
33
  });
40
34
  }));
41
35
  }
42
36
 
43
- function getLabelMinGap(current, next, prev) {
44
- let minGap;
45
- return (0, vutils_1.isValidNumber)(next) && (minGap = Math.abs(next - current)),
46
- (0, vutils_1.isValidNumber)(prev) && (minGap = (0, vutils_1.isValidNumber)(minGap) ? Math.min(Math.abs(current - prev), minGap) : Math.abs(current - prev)),
47
- minGap;
48
- }
49
-
50
37
  exports.autoWrap = autoWrap;
51
38
  //# sourceMappingURL=auto-wrap.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/axis/overlap/auto-wrap.ts"],"names":[],"mappings":"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","file":"auto-wrap.js","sourcesContent":["import type { IText } from '@visactor/vrender-core';\nimport { isEmpty, isValidNumber, min } from '@visactor/vutils';\nimport { isAngleHorizontal, isAngleVertical } from './util';\n\ntype WrapConfig = {\n orient: string;\n limitLength: number;\n axisLength: number;\n ellipsis?: string;\n};\n\nexport function autoWrap(labels: IText[], config: WrapConfig) {\n const { limitLength, axisLength, ellipsis = '...', orient } = config;\n if (isEmpty(labels) || !isValidNumber(limitLength)) {\n return;\n }\n\n let verticalLimitLength = axisLength / labels.length;\n\n labels.forEach((label, index) => {\n const angle = label.attribute.angle;\n\n const isHorizontal = isAngleHorizontal(angle);\n const isVertical = isAngleVertical(angle);\n const isX = orient === 'top' || orient === 'bottom';\n\n if (isX) {\n if (isVertical && Math.floor(label.AABBBounds.height()) <= limitLength) {\n return;\n }\n if (isHorizontal) {\n const curLabelX = label.attribute.x;\n const nextLabelX = labels[index + 1]?.attribute.x;\n const lastLabelX = labels[index - 1]?.attribute.x;\n const minGap = getLabelMinGap(curLabelX, nextLabelX, lastLabelX);\n if (isValidNumber(minGap)) {\n verticalLimitLength = min(verticalLimitLength, minGap);\n }\n }\n } else {\n if (isVertical) {\n const curLabelY = label.attribute.y;\n const nextLabelY = labels[index + 1]?.attribute.y;\n const lastLabelY = labels[index - 1]?.attribute.y;\n const minGap = getLabelMinGap(curLabelY, nextLabelY, lastLabelY);\n if (isValidNumber(minGap)) {\n verticalLimitLength = min(verticalLimitLength, minGap);\n }\n }\n if (isHorizontal && Math.floor(label.AABBBounds.width()) <= limitLength) {\n return;\n }\n }\n\n let limitLabelLength = null;\n let heightLimit = null;\n\n if (isX) {\n if (isVertical) {\n limitLabelLength = limitLength;\n heightLimit = verticalLimitLength;\n } else {\n limitLabelLength = verticalLimitLength;\n heightLimit = limitLength;\n }\n } else {\n if (isVertical) {\n limitLabelLength = verticalLimitLength;\n heightLimit = limitLength;\n } else {\n limitLabelLength = limitLength;\n heightLimit = verticalLimitLength;\n }\n }\n label.setAttributes({\n maxLineWidth: limitLabelLength,\n ellipsis: label.attribute.ellipsis ?? ellipsis,\n whiteSpace: 'normal',\n heightLimit\n });\n });\n}\n\nfunction getLabelMinGap(current: number, next?: number, prev?: number) {\n let minGap;\n if (isValidNumber(next)) {\n minGap = Math.abs(next - current);\n }\n\n if (isValidNumber(prev)) {\n if (isValidNumber(minGap)) {\n minGap = Math.min(Math.abs(current - prev), minGap);\n } else {\n minGap = Math.abs(current - prev);\n }\n }\n\n return minGap;\n}\n"]}
1
+ {"version":3,"sources":["../src/axis/overlap/auto-wrap.ts"],"names":[],"mappings":";;;AACA,6CAA0D;AAC1D,iCAA4D;AAS5D,SAAgB,QAAQ,CAAC,MAAe,EAAE,MAAkB;IAC1D,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACrE,IAAI,IAAA,gBAAO,EAAC,MAAM,CAAC,IAAI,CAAC,IAAA,sBAAa,EAAC,WAAW,CAAC,EAAE;QAClD,OAAO;KACR;IAED,MAAM,mBAAmB,GAAG,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IAEvD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;QAEpC,MAAM,YAAY,GAAG,IAAA,wBAAiB,EAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,IAAA,sBAAe,EAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAC;QAEpD,IAAI,GAAG,EAAE;YACP,IAAI,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,WAAW,EAAE;gBACtE,OAAO;aACR;YACD,IAAI,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,mBAAmB,EAAE;gBAC/E,OAAO;aACR;SACF;aAAM;YACL,IAAI,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,mBAAmB,EAAE;gBAC9E,OAAO;aACR;YACD,IAAI,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,WAAW,EAAE;gBACvE,OAAO;aACR;SACF;QAED,IAAI,gBAAgB,GAAG,IAAI,CAAC;QAC5B,IAAI,WAAW,GAAG,IAAI,CAAC;QAEvB,IAAI,GAAG,EAAE;YACP,IAAI,UAAU,EAAE;gBACd,gBAAgB,GAAG,WAAW,CAAC;gBAC/B,WAAW,GAAG,mBAAmB,CAAC;aACnC;iBAAM;gBACL,gBAAgB,GAAG,mBAAmB,CAAC;gBACvC,WAAW,GAAG,WAAW,CAAC;aAC3B;SACF;aAAM;YACL,IAAI,UAAU,EAAE;gBACd,gBAAgB,GAAG,mBAAmB,CAAC;gBACvC,WAAW,GAAG,WAAW,CAAC;aAC3B;iBAAM;gBACL,gBAAgB,GAAG,WAAW,CAAC;gBAC/B,WAAW,GAAG,mBAAmB,CAAC;aACnC;SACF;QAED,KAAK,CAAC,aAAa,CAAC;YAClB,YAAY,EAAE,gBAAgB;YAC9B,QAAQ,EAAE,MAAA,KAAK,CAAC,SAAS,CAAC,QAAQ,mCAAI,QAAQ;YAC9C,UAAU,EAAE,QAAQ;YACpB,WAAW;SACZ,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AA3DD,4BA2DC","file":"auto-wrap.js","sourcesContent":["import type { IText } from '@visactor/vrender-core';\nimport { isEmpty, isValidNumber } from '@visactor/vutils';\nimport { isAngleHorizontal, isAngleVertical } from './util';\n\ntype WrapConfig = {\n orient: string;\n limitLength: number;\n axisLength: number;\n ellipsis?: string;\n};\n\nexport function autoWrap(labels: IText[], config: WrapConfig) {\n const { limitLength, axisLength, ellipsis = '...', orient } = config;\n if (isEmpty(labels) || !isValidNumber(limitLength)) {\n return;\n }\n\n const verticalLimitLength = axisLength / labels.length;\n\n labels.forEach(label => {\n const angle = label.attribute.angle;\n\n const isHorizontal = isAngleHorizontal(angle);\n const isVertical = isAngleVertical(angle);\n const isX = orient === 'top' || orient === 'bottom';\n\n if (isX) {\n if (isVertical && Math.floor(label.AABBBounds.height()) <= limitLength) {\n return;\n }\n if (isHorizontal && Math.floor(label.AABBBounds.width()) <= verticalLimitLength) {\n return;\n }\n } else {\n if (isVertical && Math.floor(label.AABBBounds.height()) <= verticalLimitLength) {\n return;\n }\n if (isHorizontal && Math.floor(label.AABBBounds.width()) <= limitLength) {\n return;\n }\n }\n\n let limitLabelLength = null;\n let heightLimit = null;\n\n if (isX) {\n if (isVertical) {\n limitLabelLength = limitLength;\n heightLimit = verticalLimitLength;\n } else {\n limitLabelLength = verticalLimitLength;\n heightLimit = limitLength;\n }\n } else {\n if (isVertical) {\n limitLabelLength = verticalLimitLength;\n heightLimit = limitLength;\n } else {\n limitLabelLength = limitLength;\n heightLimit = verticalLimitLength;\n }\n }\n\n label.setAttributes({\n maxLineWidth: limitLabelLength,\n ellipsis: label.attribute.ellipsis ?? ellipsis,\n whiteSpace: 'normal',\n heightLimit\n });\n });\n}\n"]}
package/cjs/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const version = "0.20.11-alpha.0";
1
+ export declare const version = "0.20.11-alpha.2";
2
2
  export * from './core/base';
3
3
  export * from './core/type';
4
4
  export * from './scrollbar';
@@ -26,4 +26,5 @@ 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';
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.20.11-alpha.0", __exportStar(require("./core/base"), exports),
20
+ }), exports.version = void 0, exports.version = "0.20.11-alpha.2", __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,5 @@ __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);
34
+ __exportStar(require("./weather"), exports), __exportStar(require("./util"), exports);
35
35
  //# 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,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,yCAAuB","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"0.20.11-alpha.0\";\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';\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","file":"index.js","sourcesContent":["// 导出版本号\nexport const version = \"0.20.11-alpha.2\";\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';\n"]}
@@ -0,0 +1 @@
1
+ export * from './weather-box';
@@ -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("./weather-box"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/weather/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B","file":"index.js","sourcesContent":["export * from './weather-box';\n"]}
@@ -0,0 +1 @@
1
+ export declare function loadWeatherComponent(): void;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.loadWeatherComponent = void 0;
6
+
7
+ const vrender_kits_1 = require("@visactor/vrender-kits");
8
+
9
+ function loadWeatherComponent() {
10
+ (0, vrender_kits_1.registerGroup)(), (0, vrender_kits_1.registerSymbol)();
11
+ }
12
+
13
+ exports.loadWeatherComponent = loadWeatherComponent;
14
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/weather/register.ts"],"names":[],"mappings":";;;AAAA,yDAAuE;AAEvE,SAAgB,oBAAoB;IAClC,IAAA,4BAAa,GAAE,CAAC;IAChB,IAAA,6BAAc,GAAE,CAAC;AACnB,CAAC;AAHD,oDAGC","file":"register.js","sourcesContent":["import { registerGroup, registerSymbol } from '@visactor/vrender-kits';\n\nexport function loadWeatherComponent() {\n registerGroup();\n registerSymbol();\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import type { IGroupGraphicAttribute } from '@visactor/vrender-core';
2
+ export interface IWeatherBoxAttrs extends IGroupGraphicAttribute {
3
+ rainIconPath?: string;
4
+ snowIconPath?: string;
5
+ windIconPath?: string;
6
+ width: number;
7
+ height: number;
8
+ rainSizeRange?: [number, number];
9
+ snowSizeRange?: [number, number];
10
+ windSize?: number;
11
+ rainSpeed?: number;
12
+ snowSpeed?: number;
13
+ windSpeed?: number;
14
+ rainRatio?: number;
15
+ rainCountThreshold?: number;
16
+ snowRatio?: number;
17
+ snowCountThreshold?: number;
18
+ windRatio?: number;
19
+ rainStyle?: {
20
+ background?: string;
21
+ };
22
+ snowStyle?: {
23
+ background?: string;
24
+ };
25
+ rainSnowStyle?: {
26
+ background?: string;
27
+ };
28
+ defaultStyle?: {
29
+ background?: string;
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/weather/type.ts"],"names":[],"mappings":"","file":"type.js","sourcesContent":["import type { IGroupGraphicAttribute } from '@visactor/vrender-core';\n\nexport interface IWeatherBoxAttrs extends IGroupGraphicAttribute {\n rainIconPath?: string;\n snowIconPath?: string;\n windIconPath?: string;\n width: number;\n height: number;\n rainSizeRange?: [number, number];\n snowSizeRange?: [number, number];\n windSize?: number;\n rainSpeed?: number;\n snowSpeed?: number;\n windSpeed?: number;\n\n rainRatio?: number;\n rainCountThreshold?: number;\n snowRatio?: number;\n snowCountThreshold?: number;\n windRatio?: number;\n\n rainStyle?: {\n background?: string;\n };\n snowStyle?: {\n background?: string;\n };\n rainSnowStyle?: {\n background?: string;\n };\n defaultStyle?: {\n background?: string;\n };\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import { AbstractComponent } from '../core/base';
2
+ import type { IWeatherBoxAttrs } from './type';
3
+ import type { ComponentOptions } from '../interface';
4
+ import type { IGroup } from '@visactor/vrender-core';
5
+ export declare class WeatherBox extends AbstractComponent<Required<IWeatherBoxAttrs>> {
6
+ name: string;
7
+ static defaultAttributes: Partial<IWeatherBoxAttrs>;
8
+ constructor(attributes: IWeatherBoxAttrs, options?: ComponentOptions);
9
+ protected render(): void;
10
+ protected generateWind(windRatio: number, windIconPath: string, group: IGroup, size: number, speed: number): void;
11
+ protected generateRainOrSnow(type: string, ratio: number, threshold: number, windRatio: number, group: IGroup, path: string, windAngle: number, sizeRange: [number, number], speed: number): void;
12
+ }
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: !0
5
+ }), exports.WeatherBox = void 0;
6
+
7
+ const base_1 = require("../core/base"), vutils_1 = require("@visactor/vutils");
8
+
9
+ function random() {
10
+ return Math.random();
11
+ }
12
+
13
+ function createUniformRandom(count) {
14
+ const result = [], step = 1 / count;
15
+ for (let i = 0; i < count; i++) result.push((random() - .5) * step / 2 + step * i);
16
+ result.sort((() => Math.random() - .5));
17
+ let idx = 0;
18
+ return function(i) {
19
+ return idx > count - 1 && (idx = 0), void 0 === i && (i = idx, idx++), result[i];
20
+ };
21
+ }
22
+
23
+ class WeatherBox extends base_1.AbstractComponent {
24
+ constructor(attributes, options) {
25
+ super((null == options ? void 0 : options.skipDefault) ? attributes : (0, vutils_1.merge)({}, WeatherBox.defaultAttributes, attributes)),
26
+ this.name = "weatherBox";
27
+ }
28
+ render() {
29
+ const {rainRatio: rainRatio, rainIconPath: rainIconPath, snowRatio: snowRatio, snowIconPath: snowIconPath, rainCountThreshold: rainCountThreshold, snowCountThreshold: snowCountThreshold, windRatio: windRatio, rainSizeRange: rainSizeRange, snowSizeRange: snowSizeRange, rainSpeed: rainSpeed, snowSpeed: snowSpeed, width: width, height: height, rainSnowStyle: rainSnowStyle, rainStyle: rainStyle, snowStyle: snowStyle, defaultStyle: defaultStyle, windIconPath: windIconPath, windSize: windSize, windSpeed: windSpeed} = this.attribute;
30
+ this.attribute.background = rainRatio && snowRatio ? null == rainSnowStyle ? void 0 : rainSnowStyle.background : rainRatio ? null == rainStyle ? void 0 : rainStyle.background : snowRatio ? null == snowStyle ? void 0 : snowStyle.background : null == defaultStyle ? void 0 : defaultStyle.background,
31
+ this.attribute.clip = !0;
32
+ const windAngle = -windRatio * Math.PI / 4, rainGroup = this.createOrUpdateChild("rain-container", {
33
+ zIndex: 1,
34
+ width: width,
35
+ height: height
36
+ }, "group");
37
+ rainRatio > 0 && this.generateRainOrSnow("rain", rainRatio, rainCountThreshold, windRatio, rainGroup, rainIconPath, windAngle, rainSizeRange, rainSpeed);
38
+ const snowGroup = this.createOrUpdateChild("snow-container", {
39
+ zIndex: 1,
40
+ width: width,
41
+ height: height
42
+ }, "group");
43
+ snowRatio > 0 && this.generateRainOrSnow("snow", snowRatio, snowCountThreshold, windRatio, snowGroup, snowIconPath, windAngle, snowSizeRange, snowSpeed);
44
+ const windGroup = this.createOrUpdateChild("wind-container", {
45
+ zIndex: 0,
46
+ width: width,
47
+ height: height
48
+ }, "group");
49
+ windRatio > 0 && this.generateWind(windRatio, windIconPath, windGroup, windSize, windSpeed);
50
+ }
51
+ generateWind(windRatio, windIconPath, group, size, speed) {
52
+ const {width: width, height: height} = group.attribute, duration = speed / 4 * 1e3;
53
+ group.createOrUpdateChild("wind", {
54
+ x: (width - size) / 2,
55
+ y: (height - size) / 2,
56
+ symbolType: windIconPath,
57
+ size: size,
58
+ fill: "white",
59
+ opacity: 0
60
+ }, "symbol").animate().to({
61
+ opacity: 1
62
+ }, duration, "linear").to({
63
+ opacity: 0
64
+ }, duration, "linear").loop(1 / 0);
65
+ }
66
+ generateRainOrSnow(type, ratio, threshold, windRatio, group, path, windAngle, sizeRange, speed) {
67
+ let {width: width} = group.attribute;
68
+ const {height: height} = group.attribute;
69
+ let maxCount = Math.round(ratio * threshold);
70
+ windRatio > 0 && (maxCount *= Math.round(1 + windRatio)), width *= Math.round(1 + windRatio);
71
+ const uniformRandomX = createUniformRandom(maxCount), uniformRandomY = createUniformRandom(maxCount);
72
+ for (let i = 0; i < maxCount; i++) {
73
+ const x = uniformRandomX(), y = uniformRandomY(), size = sizeRange[0] + random() * (sizeRange[1] - sizeRange[0]), startX = x * width - (windAngle ? height * Math.tan(Math.abs(windAngle)) : 0), startY = -y * height, particle = group.createOrUpdateChild(`${type}-${i}`, {
74
+ x: startX,
75
+ y: startY,
76
+ symbolType: path,
77
+ size: size,
78
+ fill: "white",
79
+ angle: windAngle
80
+ }, "symbol"), duration = 1 / speed / 2 * (1 + y) * 1e3;
81
+ let endX = x * width;
82
+ "rain" === type && windAngle && (endX = startX + (1 + y) * height * Math.tan(Math.abs(windAngle))),
83
+ particle.animate().to({
84
+ x: endX,
85
+ y: height
86
+ }, duration, "linear").loop(1 / 0);
87
+ }
88
+ }
89
+ }
90
+
91
+ exports.WeatherBox = WeatherBox, WeatherBox.defaultAttributes = {
92
+ snowIconPath: "M512 64c24.7 0 44.8 20.1 44.8 44.8v43.1l29.3-15.5c21.9-11.6 49-3.2 60.5 18.7s3.2 49-18.7 60.5l-71.2 37.6v85.2c32 8.2 60.6 25.1 83.1 48l73.8-42.6-3-80.4c-0.9-24.7 18.4-45.5 43.1-46.4 24.7-0.9 45.5 18.4 46.4 43.1l1.2 33.1 37.3-21.5c21.4-12.4 48.8-5 61.2 16.4 12.4 21.4 5 48.8-16.4 61.2l-37.3 21.5 28.1 17.6c21 13.2 27.3 40.8 14.1 61.8-13.2 20.9-40.8 27.3-61.8 14.1l-68.2-42.8-73.6 42.5c4.2 15.3 6.5 31.4 6.5 48s-2.3 32.7-6.5 48l73.8 42.6 68.2-42.8c20.9-13.2 48.6-6.8 61.8 14.1 13.2 21 6.8 48.6-14.1 61.8l-28.1 17.6 37.3 21.5c21.4 12.4 28.8 39.8 16.4 61.2-12.4 21.4-39.8 28.8-61.2 16.4l-37.3-21.5-1.2 33.1c-0.9 24.7-21.7 44-46.4 43.1-24.7-0.9-44-21.7-43.1-46.4l3-80.4-73.8-42.6c-22.5 22.9-51 39.8-83.1 48v85.2l71.2 37.6c21.9 11.6 30.2 38.7 18.7 60.5-11.6 21.9-38.7 30.2-60.5 18.7L557 872.2v43.1c0 24.7-20.1 44.8-44.8 44.8-24.7 0-44.8-20.1-44.8-44.8v-43.1l-29.3 15.5c-21.9 11.6-49 3.2-60.5-18.7-11.6-21.9-3.2-49 18.7-60.5l71.2-37.6v-85.2c-32-8.2-60.6-25.1-83.1-48l-73.8 42.6 3 80.4c0.9 24.7-18.4 45.5-43.1 46.4-24.7 0.9-45.5-18.4-46.4-43.1l-1.2-33.1-37.3 21.5c-21.4 12.4-48.8 5-61.2-16.4s-5-48.8 16.4-61.2l37.3-21.5-28.1-17.6c-21-13.2-27.3-40.8-14.1-61.8 13.2-20.9 40.8-27.3 61.8-14.1l68.2 42.8 73.8-42.6c-4.2-15.3-6.5-31.4-6.5-48s2.3-32.7 6.5-48l-73.8-42.6-68.2 42.8c-21 13.2-48.6 6.8-61.8-14.1-13.2-21-6.8-48.6 14.1-61.8l28.1-17.6-37.3-21.5C119 336.8 111.7 309.4 124 288c12.4-21.4 39.8-28.8 61.2-16.4l37.3 21.5 1.2-33.1c0.9-24.7 21.7-44 46.4-43.1 24.7 0.9 44 21.7 43.1 46.4l-3 80.4 73.8 42.6c22.5-22.9 51-39.8 83.1-48v-85.2L396 215.6c-21.9-11.6-30.2-38.7-18.7-60.5 11.6-21.9 38.7-30.2 60.5-18.7l29.3 15.5v-43.1C467.2 84.1 487.3 64 512 64z m0 537.6c49.5 0 89.6-40.1 89.6-89.6s-40.1-89.6-89.6-89.6-89.6 40.1-89.6 89.6 40.1 89.6 89.6 89.6z",
93
+ rainIconPath: "M802.94208 583.04c19.328 38.016 29.056 78.336 29.056 120.96a313.216 313.216 0 0 1-44.032 161.536 324.48 324.48 0 0 1-114.56 114.944c-23.552 13.696-49.024 24.32-76.416 32-27.264 7.68-55.68 11.52-84.992 11.52-29.44 0-57.6-3.84-84.992-11.52a331.136 331.136 0 0 1-76.544-32 337.536 337.536 0 0 1-65.024-49.92 337.536 337.536 0 0 1-49.92-65.024 331.136 331.136 0 0 1-32-76.544A313.216 313.216 0 0 1 191.99808 704c0-42.24 9.344-82.56 28.032-120.448L509.43808 0l293.504 583.04z",
94
+ windIconPath: "M686.624 143.072h-150.816a40.352 40.352 0 1 0 0 80.608h150.816a80.672 80.672 0 1 1 0 161.184H226.624a40.352 40.352 0 1 0 0 80.608h460a161.344 161.344 0 1 0 0-322.4z m168.768 725.344h-126.72a40.352 40.352 0 1 1 0-80.576h126.56a80.672 80.672 0 1 0 0-161.184H42.176a40.352 40.352 0 1 1 0-80.608h813.056a161.344 161.344 0 1 1 0 322.368z",
95
+ windRatio: 0,
96
+ rainRatio: 0,
97
+ snowRatio: 0,
98
+ rainCountThreshold: 10,
99
+ snowCountThreshold: 10,
100
+ rainSizeRange: [ 5, 10 ],
101
+ snowSizeRange: [ 5, 13 ],
102
+ windSize: 30,
103
+ rainSpeed: 1,
104
+ snowSpeed: .5,
105
+ windSpeed: 1,
106
+ rainStyle: {
107
+ background: "rgb(135, 160, 225)"
108
+ },
109
+ snowStyle: {
110
+ background: "rgb(64, 68, 144)"
111
+ },
112
+ rainSnowStyle: {
113
+ background: "rgb(130, 190, 210)"
114
+ },
115
+ defaultStyle: {
116
+ background: "rgb(184, 206, 239)"
117
+ }
118
+ };
119
+ //# sourceMappingURL=weather-box.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/weather/weather-box.ts"],"names":[],"mappings":"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","file":"weather-box.js","sourcesContent":["import { AbstractComponent } from '../core/base';\nimport type { IWeatherBoxAttrs } from './type';\nimport type { ComponentOptions } from '../interface';\nimport { merge } from '@visactor/vutils';\nimport type { IGroup, ISymbol } from '@visactor/vrender-core';\nimport { IGraphic } from '@visactor/vrender-core';\n\n// todo 后续可能做成有随机数种子的伪随机,这样可以保证每次都生成一样的随机数\nfunction random() {\n return Math.random();\n}\n\nfunction createUniformRandom(count: number) {\n const result: number[] = [];\n const step = 1 / count;\n for (let i = 0; i < count; i++) {\n result.push(((random() - 0.5) * step) / 2 + step * i);\n }\n result.sort(() => Math.random() - 0.5);\n let idx = 0;\n return function (i?: number) {\n if (idx > count - 1) {\n idx = 0;\n }\n if (i === void 0) {\n i = idx;\n idx++;\n }\n return result[i];\n };\n}\n\nexport class WeatherBox extends AbstractComponent<Required<IWeatherBoxAttrs>> {\n name: string = 'weatherBox';\n\n static defaultAttributes: Partial<IWeatherBoxAttrs> = {\n snowIconPath:\n 'M512 64c24.7 0 44.8 20.1 44.8 44.8v43.1l29.3-15.5c21.9-11.6 49-3.2 60.5 18.7s3.2 49-18.7 60.5l-71.2 37.6v85.2c32 8.2 60.6 25.1 83.1 48l73.8-42.6-3-80.4c-0.9-24.7 18.4-45.5 43.1-46.4 24.7-0.9 45.5 18.4 46.4 43.1l1.2 33.1 37.3-21.5c21.4-12.4 48.8-5 61.2 16.4 12.4 21.4 5 48.8-16.4 61.2l-37.3 21.5 28.1 17.6c21 13.2 27.3 40.8 14.1 61.8-13.2 20.9-40.8 27.3-61.8 14.1l-68.2-42.8-73.6 42.5c4.2 15.3 6.5 31.4 6.5 48s-2.3 32.7-6.5 48l73.8 42.6 68.2-42.8c20.9-13.2 48.6-6.8 61.8 14.1 13.2 21 6.8 48.6-14.1 61.8l-28.1 17.6 37.3 21.5c21.4 12.4 28.8 39.8 16.4 61.2-12.4 21.4-39.8 28.8-61.2 16.4l-37.3-21.5-1.2 33.1c-0.9 24.7-21.7 44-46.4 43.1-24.7-0.9-44-21.7-43.1-46.4l3-80.4-73.8-42.6c-22.5 22.9-51 39.8-83.1 48v85.2l71.2 37.6c21.9 11.6 30.2 38.7 18.7 60.5-11.6 21.9-38.7 30.2-60.5 18.7L557 872.2v43.1c0 24.7-20.1 44.8-44.8 44.8-24.7 0-44.8-20.1-44.8-44.8v-43.1l-29.3 15.5c-21.9 11.6-49 3.2-60.5-18.7-11.6-21.9-3.2-49 18.7-60.5l71.2-37.6v-85.2c-32-8.2-60.6-25.1-83.1-48l-73.8 42.6 3 80.4c0.9 24.7-18.4 45.5-43.1 46.4-24.7 0.9-45.5-18.4-46.4-43.1l-1.2-33.1-37.3 21.5c-21.4 12.4-48.8 5-61.2-16.4s-5-48.8 16.4-61.2l37.3-21.5-28.1-17.6c-21-13.2-27.3-40.8-14.1-61.8 13.2-20.9 40.8-27.3 61.8-14.1l68.2 42.8 73.8-42.6c-4.2-15.3-6.5-31.4-6.5-48s2.3-32.7 6.5-48l-73.8-42.6-68.2 42.8c-21 13.2-48.6 6.8-61.8-14.1-13.2-21-6.8-48.6 14.1-61.8l28.1-17.6-37.3-21.5C119 336.8 111.7 309.4 124 288c12.4-21.4 39.8-28.8 61.2-16.4l37.3 21.5 1.2-33.1c0.9-24.7 21.7-44 46.4-43.1 24.7 0.9 44 21.7 43.1 46.4l-3 80.4 73.8 42.6c22.5-22.9 51-39.8 83.1-48v-85.2L396 215.6c-21.9-11.6-30.2-38.7-18.7-60.5 11.6-21.9 38.7-30.2 60.5-18.7l29.3 15.5v-43.1C467.2 84.1 487.3 64 512 64z m0 537.6c49.5 0 89.6-40.1 89.6-89.6s-40.1-89.6-89.6-89.6-89.6 40.1-89.6 89.6 40.1 89.6 89.6 89.6z',\n rainIconPath:\n 'M802.94208 583.04c19.328 38.016 29.056 78.336 29.056 120.96a313.216 313.216 0 0 1-44.032 161.536 324.48 324.48 0 0 1-114.56 114.944c-23.552 13.696-49.024 24.32-76.416 32-27.264 7.68-55.68 11.52-84.992 11.52-29.44 0-57.6-3.84-84.992-11.52a331.136 331.136 0 0 1-76.544-32 337.536 337.536 0 0 1-65.024-49.92 337.536 337.536 0 0 1-49.92-65.024 331.136 331.136 0 0 1-32-76.544A313.216 313.216 0 0 1 191.99808 704c0-42.24 9.344-82.56 28.032-120.448L509.43808 0l293.504 583.04z',\n windIconPath:\n 'M686.624 143.072h-150.816a40.352 40.352 0 1 0 0 80.608h150.816a80.672 80.672 0 1 1 0 161.184H226.624a40.352 40.352 0 1 0 0 80.608h460a161.344 161.344 0 1 0 0-322.4z m168.768 725.344h-126.72a40.352 40.352 0 1 1 0-80.576h126.56a80.672 80.672 0 1 0 0-161.184H42.176a40.352 40.352 0 1 1 0-80.608h813.056a161.344 161.344 0 1 1 0 322.368z',\n windRatio: 0,\n rainRatio: 0,\n snowRatio: 0,\n rainCountThreshold: 10,\n snowCountThreshold: 10,\n rainSizeRange: [5, 10],\n snowSizeRange: [5, 13],\n windSize: 30,\n rainSpeed: 1,\n snowSpeed: 0.5,\n windSpeed: 1,\n rainStyle: {\n background: 'rgb(135, 160, 225)'\n },\n snowStyle: {\n background: 'rgb(64, 68, 144)'\n },\n rainSnowStyle: {\n background: 'rgb(130, 190, 210)'\n },\n defaultStyle: {\n background: 'rgb(184, 206, 239)'\n }\n };\n\n constructor(attributes: IWeatherBoxAttrs, options?: ComponentOptions) {\n super(options?.skipDefault ? attributes : merge({}, WeatherBox.defaultAttributes, attributes));\n }\n\n protected render(): void {\n const {\n rainRatio,\n rainIconPath,\n snowRatio,\n snowIconPath,\n rainCountThreshold,\n snowCountThreshold,\n windRatio,\n rainSizeRange,\n snowSizeRange,\n rainSpeed,\n snowSpeed,\n width,\n height,\n rainSnowStyle,\n rainStyle,\n snowStyle,\n defaultStyle,\n windIconPath,\n windSize,\n windSpeed\n } = this.attribute as IWeatherBoxAttrs;\n\n if (rainRatio && snowRatio) {\n this.attribute.background = rainSnowStyle?.background;\n } else if (rainRatio) {\n this.attribute.background = rainStyle?.background;\n } else if (snowRatio) {\n this.attribute.background = snowStyle?.background;\n } else {\n this.attribute.background = defaultStyle?.background;\n }\n this.attribute.clip = true;\n\n // 计算风速导致的偏转角度\n const windAngle = (-windRatio * Math.PI) / 4;\n\n const rainGroup = this.createOrUpdateChild('rain-container', { zIndex: 1, width, height }, 'group') as IGroup;\n if (rainRatio > 0) {\n this.generateRainOrSnow(\n 'rain',\n rainRatio,\n rainCountThreshold,\n windRatio,\n rainGroup,\n rainIconPath,\n windAngle,\n rainSizeRange,\n rainSpeed\n );\n }\n const snowGroup = this.createOrUpdateChild('snow-container', { zIndex: 1, width, height }, 'group') as IGroup;\n if (snowRatio > 0) {\n this.generateRainOrSnow(\n 'snow',\n snowRatio,\n snowCountThreshold,\n windRatio,\n snowGroup,\n snowIconPath,\n windAngle,\n snowSizeRange,\n snowSpeed\n );\n }\n\n const windGroup = this.createOrUpdateChild('wind-container', { zIndex: 0, width, height }, 'group') as IGroup;\n if (windRatio > 0) {\n this.generateWind(windRatio, windIconPath, windGroup, windSize, windSpeed);\n }\n }\n\n protected generateWind(windRatio: number, windIconPath: string, group: IGroup, size: number, speed: number) {\n const { width, height } = group.attribute;\n\n const wind = group.createOrUpdateChild(\n `wind`,\n {\n x: (width - size) / 2,\n y: (height - size) / 2,\n symbolType: windIconPath,\n size,\n fill: 'white',\n opacity: 0\n },\n 'symbol'\n ) as ISymbol;\n\n const duration = (speed / 4) * 1000;\n\n wind.animate().to({ opacity: 1 }, duration, 'linear').to({ opacity: 0 }, duration, 'linear').loop(Infinity);\n }\n\n protected generateRainOrSnow(\n type: string,\n ratio: number,\n threshold: number,\n windRatio: number,\n group: IGroup,\n path: string,\n windAngle: number,\n sizeRange: [number, number],\n speed: number\n ) {\n let { width } = group.attribute;\n const { height } = group.attribute;\n let maxCount = Math.round(ratio * threshold);\n // 由于风速,雨雪粒子会偏转,所以需要增加粒子数量\n if (windRatio > 0) {\n maxCount = maxCount * Math.round(1 + windRatio);\n }\n width = width * Math.round(1 + windRatio);\n const uniformRandomX = createUniformRandom(maxCount);\n const uniformRandomY = createUniformRandom(maxCount);\n for (let i = 0; i < maxCount; i++) {\n const x = uniformRandomX();\n const y = uniformRandomY();\n const size = sizeRange[0] + random() * (sizeRange[1] - sizeRange[0]);\n\n const deltaX = windAngle ? height * Math.tan(Math.abs(windAngle)) : 0;\n const startX = x * width - deltaX;\n const startY = -y * height;\n const particle = group.createOrUpdateChild(\n `${type}-${i}`,\n {\n x: startX,\n y: startY,\n symbolType: path,\n size,\n fill: 'white',\n angle: windAngle\n },\n 'symbol'\n ) as ISymbol;\n const duration = (1 / speed / 2) * (1 + y) * 1000;\n let endX = x * width;\n if (type === 'rain' && windAngle) {\n endX = startX + (1 + y) * height * Math.tan(Math.abs(windAngle));\n }\n particle.animate().to({ x: endX, y: height }, duration, 'linear').loop(Infinity);\n }\n }\n}\n"]}