@visactor/vrender-components 0.12.0 → 0.12.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.
Files changed (55) hide show
  1. package/cjs/axis/base.d.ts +5 -5
  2. package/cjs/axis/base.js +1 -2
  3. package/cjs/axis/base.js.map +1 -1
  4. package/cjs/axis/circle.d.ts +5 -5
  5. package/cjs/axis/circle.js +2 -2
  6. package/cjs/axis/circle.js.map +1 -1
  7. package/cjs/axis/line.d.ts +5 -6
  8. package/cjs/axis/line.js +3 -2
  9. package/cjs/axis/line.js.map +1 -1
  10. package/cjs/index.d.ts +1 -1
  11. package/cjs/index.js +1 -1
  12. package/cjs/index.js.map +1 -1
  13. package/cjs/label/base.d.ts +6 -5
  14. package/cjs/label/base.js +5 -18
  15. package/cjs/label/base.js.map +1 -1
  16. package/cjs/label/type.d.ts +0 -3
  17. package/cjs/label/type.js.map +1 -1
  18. package/cjs/legend/discrete/discrete.d.ts +1 -1
  19. package/cjs/legend/discrete/discrete.js +54 -41
  20. package/cjs/legend/discrete/discrete.js.map +1 -1
  21. package/cjs/pager/pager.d.ts +2 -2
  22. package/cjs/pager/pager.js +4 -2
  23. package/cjs/pager/pager.js.map +1 -1
  24. package/cjs/util/matrix.d.ts +5 -2
  25. package/cjs/util/matrix.js +24 -11
  26. package/cjs/util/matrix.js.map +1 -1
  27. package/dist/index.js +58 -167
  28. package/dist/index.min.js +1 -1
  29. package/es/axis/base.d.ts +5 -5
  30. package/es/axis/base.js +1 -2
  31. package/es/axis/base.js.map +1 -1
  32. package/es/axis/circle.d.ts +5 -5
  33. package/es/axis/circle.js +2 -3
  34. package/es/axis/circle.js.map +1 -1
  35. package/es/axis/line.d.ts +5 -6
  36. package/es/axis/line.js +3 -3
  37. package/es/axis/line.js.map +1 -1
  38. package/es/index.d.ts +1 -1
  39. package/es/index.js +1 -1
  40. package/es/index.js.map +1 -1
  41. package/es/label/base.d.ts +6 -5
  42. package/es/label/base.js +5 -18
  43. package/es/label/base.js.map +1 -1
  44. package/es/label/type.d.ts +0 -3
  45. package/es/label/type.js.map +1 -1
  46. package/es/legend/discrete/discrete.d.ts +1 -1
  47. package/es/legend/discrete/discrete.js +54 -41
  48. package/es/legend/discrete/discrete.js.map +1 -1
  49. package/es/pager/pager.d.ts +2 -2
  50. package/es/pager/pager.js +4 -2
  51. package/es/pager/pager.js.map +1 -1
  52. package/es/util/matrix.d.ts +5 -2
  53. package/es/util/matrix.js +19 -3
  54. package/es/util/matrix.js.map +1 -1
  55. package/package.json +5 -6
@@ -1,6 +1,6 @@
1
- import { ISymbol, IText } from '@visactor/vrender';
1
+ import type { ISymbol, IText } from '@visactor/vrender';
2
2
  import { AbstractComponent } from '../core/base';
3
- import { PagerAttributes } from './type';
3
+ import type { PagerAttributes } from './type';
4
4
  export declare class Pager extends AbstractComponent<Required<PagerAttributes>> {
5
5
  name: string;
6
6
  private _current;
@@ -73,7 +73,8 @@ class Pager extends base_1.AbstractComponent {
73
73
  let {preShape: preShape, nextShape: nextShape} = handler;
74
74
  preShape || (preShape = isHorizontal ? "triangleLeft" : "triangleUp"), nextShape || (nextShape = isHorizontal ? "triangleRight" : "triangleDown");
75
75
  const preHandler = (0, vrender_1.createSymbol)(Object.assign(Object.assign({
76
- strokeBoundsBuffer: 0
76
+ strokeBoundsBuffer: 0,
77
+ pickMode: "imprecise"
77
78
  }, handlerStyle), {
78
79
  x: 0,
79
80
  y: 0,
@@ -96,7 +97,8 @@ class Pager extends base_1.AbstractComponent {
96
97
  }, textStyle));
97
98
  this.text = text, container.add(text);
98
99
  const nextHandler = (0, vrender_1.createSymbol)(Object.assign(Object.assign({
99
- strokeBoundsBuffer: 0
100
+ strokeBoundsBuffer: 0,
101
+ pickMode: "imprecise"
100
102
  }, handlerStyle), {
101
103
  x: isHorizontal ? handlerSizeX + 2 * handlerSpace + maxTextWidth : 0,
102
104
  y: isHorizontal ? 0 : handlerSizeY + 2 * handlerSpace + maxTextHeight,
@@ -1 +1 @@
1
- {"version":3,"sources":["pager/pager.ts"],"names":[],"mappings":"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","file":"pager.js","sourcesContent":["/**\n * @description 翻页器\n */\nimport {\n createGroup,\n createSymbol,\n createText,\n ISymbol,\n IText,\n FederatedPointerEvent,\n CustomEvent\n} from '@visactor/vrender';\nimport { merge, normalizePadding, get, isNumber } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport { measureTextSize } from '../util';\nimport { PagerAttributes } from './type';\n\nconst DEFAULT_HANDLER_STYLE: PagerAttributes['handler'] = {\n space: 8,\n style: {\n fill: 'rgb(47, 69, 84)',\n cursor: 'pointer',\n size: 15\n },\n state: {\n disable: {\n fill: 'rgb(170, 170, 170)',\n cursor: 'not-allowed'\n },\n hover: {}\n }\n};\n\nexport class Pager extends AbstractComponent<Required<PagerAttributes>> {\n name = 'pager';\n\n private _current = 1;\n getCurrent() {\n return this._current;\n }\n\n private _total!: number;\n preHandler!: ISymbol | null;\n nextHandler!: ISymbol | null;\n text!: IText | null;\n\n static defaultAttributes: Partial<PagerAttributes> = {\n handler: DEFAULT_HANDLER_STYLE,\n textStyle: {\n fill: 'rgb(51, 51, 51)',\n fontSize: 12\n }\n };\n\n constructor(attributes: PagerAttributes) {\n super(merge({}, Pager.defaultAttributes, attributes));\n }\n\n protected render() {\n this._reset();\n const {\n layout = 'horizontal',\n handler = DEFAULT_HANDLER_STYLE,\n total,\n defaultCurrent = 1,\n textStyle,\n padding = 0\n } = this.attribute;\n\n this._current = defaultCurrent;\n const parsedPadding = normalizePadding(padding);\n const isHorizontal = layout === 'horizontal';\n\n const container = createGroup({\n x: 0,\n y: 0\n });\n\n const handlerStyle = handler.style || {};\n const handlerSize = handlerStyle.size || 15;\n const handlerSpace = handler.space ?? 8;\n const handlerState = handler.state || {};\n\n let { preShape, nextShape } = handler;\n if (!preShape) {\n preShape = isHorizontal ? 'triangleLeft' : 'triangleUp';\n }\n if (!nextShape) {\n nextShape = isHorizontal ? 'triangleRight' : 'triangleDown';\n }\n\n const preHandler = createSymbol({\n strokeBoundsBuffer: 0,\n ...handlerStyle,\n x: 0,\n y: 0,\n symbolType: preShape,\n size: handlerSize\n });\n preHandler.states = handlerState;\n preHandler.name = 'preHandler';\n this.preHandler = preHandler;\n container.add(preHandler);\n\n // 获取文本的最大长度,如果不固定的话随着文本的变化整体会发生抖动\n const { width: maxTextWidth, height: maxTextHeight } = measureTextSize(`${total}/${total}`, {\n textAlign: 'center',\n textBaseline: 'middle',\n ...textStyle\n });\n\n const handlerSizeX = isNumber(handlerSize) ? handlerSize : handlerSize[0];\n const handlerSizeY = isNumber(handlerSize) ? handlerSize : handlerSize[1];\n\n const text = createText({\n x: isHorizontal ? handlerSizeX / 2 + handlerSpace + maxTextWidth / 2 : 0,\n y: isHorizontal ? 0 : handlerSizeY / 2 + handlerSpace + maxTextHeight / 2,\n text: `${defaultCurrent}/${total}`,\n textAlign: 'center',\n textBaseline: 'middle',\n lineHeight: textStyle?.fontSize,\n ...textStyle\n });\n this.text = text;\n container.add(text);\n\n const nextHandler = createSymbol({\n strokeBoundsBuffer: 0,\n ...handlerStyle,\n x: isHorizontal ? handlerSizeX + handlerSpace * 2 + maxTextWidth : 0,\n y: isHorizontal ? 0 : handlerSizeY + handlerSpace * 2 + maxTextHeight,\n symbolType: nextShape,\n size: handlerSize\n });\n nextHandler.name = 'nextHandler';\n nextHandler.states = handlerState;\n this.nextHandler = nextHandler;\n\n container.add(nextHandler);\n\n if (this._total === 1) {\n preHandler.addState('disable');\n nextHandler.addState('disable');\n } else if (this._current === 1) {\n preHandler.addState('disable');\n } else if (this._current === total) {\n nextHandler.addState('disable');\n }\n\n const containerBounds = container.AABBBounds;\n const width = containerBounds.width();\n const height = containerBounds.height();\n\n container.translateTo(0 - containerBounds.x1 + parsedPadding[3], 0 - containerBounds.y1 + parsedPadding[0]);\n this.add(container);\n\n this.attribute.width = width + parsedPadding[1] + parsedPadding[3];\n this.attribute.height = height + parsedPadding[0] + parsedPadding[2];\n\n this._bindEvents();\n }\n\n private _bindEvents(): void {\n if (this.preHandler) {\n this.preHandler.addEventListener('pointerenter', this._onHover as EventListenerOrEventListenerObject);\n this.preHandler.addEventListener('pointerleave', this._onUnHover as EventListenerOrEventListenerObject);\n this.preHandler.addEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n\n if (this.nextHandler) {\n this.nextHandler.addEventListener('pointerenter', this._onHover as EventListenerOrEventListenerObject);\n this.nextHandler.addEventListener('pointerleave', this._onUnHover as EventListenerOrEventListenerObject);\n this.nextHandler.addEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n }\n\n private _onHover = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as ISymbol;\n if (!target.hasState('disable')) {\n target.addState('hover');\n }\n };\n\n private _onUnHover = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as ISymbol;\n target.removeState('hover');\n };\n\n private _onClick = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as ISymbol;\n if (target.name === 'preHandler') {\n if (this._current === 1) {\n return;\n }\n this._current -= 1;\n if (this._current === 1) {\n target.addState('disable');\n } else {\n target.removeState('disable');\n }\n const changeEvent = new CustomEvent('toPrev', {\n current: this._current,\n total: this._total,\n direction: 'pre'\n });\n // FIXME: 需要在 vrender 的事件系统支持\n // @ts-ignore\n changeEvent.manager = this.stage?.eventSystem.manager;\n this.dispatchEvent(changeEvent);\n }\n\n if (target.name === 'nextHandler') {\n if (this._current === this._total) {\n return;\n }\n this._current += 1;\n\n if (this._current === this._total) {\n target.addState('disable');\n } else {\n target.removeState('disable');\n }\n\n const changeEvent = new CustomEvent('toNext', {\n current: this._current,\n total: this._total,\n direction: 'next'\n });\n // FIXME: 需要在 vrender 的事件系统支持\n // @ts-ignore\n changeEvent.manager = this.stage?.eventSystem.manager;\n this.dispatchEvent(changeEvent);\n }\n\n if (this._current > 1) {\n (this.preHandler as ISymbol).removeState('disable');\n }\n if (this._current < this._total) {\n (this.nextHandler as ISymbol).removeState('disable');\n }\n\n (this.text as IText).setAttribute('text', `${this._current}/${this._total}`);\n };\n\n private _reset() {\n this.removeAllChild();\n this._current = 1;\n this._total = this.attribute.total as number;\n this.preHandler = this.nextHandler = this.text = null;\n }\n}\n"]}
1
+ {"version":3,"sources":["pager/pager.ts"],"names":[],"mappings":";;;AAKA,+CAAuF;AACvF,6CAAqE;AACrE,uCAAiD;AACjD,kCAA0C;AAG1C,MAAM,qBAAqB,GAA+B;IACxD,KAAK,EAAE,CAAC;IACR,KAAK,EAAE;QACL,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,EAAE;KACT;IACD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,aAAa;SACtB;QACD,KAAK,EAAE,EAAE;KACV;CACF,CAAC;AAEF,MAAa,KAAM,SAAQ,wBAA4C;IAIrE,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAeD,YAAY,UAA2B;QACrC,KAAK,CAAC,IAAA,cAAK,EAAC,EAAE,EAAE,KAAK,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;QArBxD,SAAI,GAAG,OAAO,CAAC;QAEP,aAAQ,GAAG,CAAC,CAAC;QA8Ib,aAAQ,GAAG,CAAC,CAAwB,EAAE,EAAE;YAC9C,MAAM,MAAM,GAAG,CAAC,CAAC,MAA4B,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBAC/B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAC1B;QACH,CAAC,CAAC;QAEM,eAAU,GAAG,CAAC,CAAwB,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,CAAC,CAAC,MAA4B,CAAC;YAC9C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC,CAAC;QAEM,aAAQ,GAAG,CAAC,CAAwB,EAAE,EAAE;;YAC9C,MAAM,MAAM,GAAG,CAAC,CAAC,MAA4B,CAAC;YAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE;gBAChC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;oBACvB,OAAO;iBACR;gBACD,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;gBACnB,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;oBACvB,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;iBAC5B;qBAAM;oBACL,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;iBAC/B;gBACD,MAAM,WAAW,GAAG,IAAI,qBAAW,CAAC,QAAQ,EAAE;oBAC5C,OAAO,EAAE,IAAI,CAAC,QAAQ;oBACtB,KAAK,EAAE,IAAI,CAAC,MAAM;oBAClB,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC;gBAGH,WAAW,CAAC,OAAO,GAAG,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,CAAC,OAAO,CAAC;gBACtD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;aACjC;YAED,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE;gBACjC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,EAAE;oBACjC,OAAO;iBACR;gBACD,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;gBAEnB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,EAAE;oBACjC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;iBAC5B;qBAAM;oBACL,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;iBAC/B;gBAED,MAAM,WAAW,GAAG,IAAI,qBAAW,CAAC,QAAQ,EAAE;oBAC5C,OAAO,EAAE,IAAI,CAAC,QAAQ;oBACtB,KAAK,EAAE,IAAI,CAAC,MAAM;oBAClB,SAAS,EAAE,MAAM;iBAClB,CAAC,CAAC;gBAGH,WAAW,CAAC,OAAO,GAAG,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,CAAC,OAAO,CAAC;gBACtD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;aACjC;YAED,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE;gBACpB,IAAI,CAAC,UAAsB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;aACrD;YACD,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE;gBAC9B,IAAI,CAAC,WAAuB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;aACtD;YAEA,IAAI,CAAC,IAAc,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC;IA5LF,CAAC;IAES,MAAM;;QACd,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,MAAM,EACJ,MAAM,GAAG,YAAY,EACrB,OAAO,GAAG,qBAAqB,EAC/B,KAAK,EACL,cAAc,GAAG,CAAC,EAClB,SAAS,EACT,OAAO,GAAG,CAAC,EACZ,GAAG,IAAI,CAAC,SAAS,CAAC;QAEnB,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAA,yBAAgB,EAAC,OAAO,CAAC,CAAC;QAChD,MAAM,YAAY,GAAG,MAAM,KAAK,YAAY,CAAC;QAE7C,MAAM,SAAS,GAAG,IAAA,qBAAW,EAAC;YAC5B,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;SACL,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACzC,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,MAAA,OAAO,CAAC,KAAK,mCAAI,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAEzC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QACtC,IAAI,CAAC,QAAQ,EAAE;YACb,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;SACzD;QACD,IAAI,CAAC,SAAS,EAAE;YACd,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC;SAC7D;QAED,MAAM,UAAU,GAAG,IAAA,sBAAY,gCAC7B,kBAAkB,EAAE,CAAC,EACrB,QAAQ,EAAE,WAAW,IAClB,YAAY,KACf,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,UAAU,EAAE,QAAQ,EACpB,IAAI,EAAE,WAAW,IACjB,CAAC;QACH,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC;QACjC,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAG1B,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,sBAAe,EAAC,GAAG,KAAK,IAAI,KAAK,EAAE,kBACxF,SAAS,EAAE,QAAQ,EACnB,YAAY,EAAE,QAAQ,IACnB,SAAS,EACZ,CAAC;QAEH,MAAM,YAAY,GAAG,IAAA,iBAAQ,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,IAAA,iBAAQ,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAE1E,MAAM,IAAI,GAAG,IAAA,oBAAU,kBACrB,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EACxE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,aAAa,GAAG,CAAC,EACzE,IAAI,EAAE,GAAG,cAAc,IAAI,KAAK,EAAE,EAClC,SAAS,EAAE,QAAQ,EACnB,YAAY,EAAE,QAAQ,EACtB,UAAU,EAAE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,IAC5B,SAAS,EACZ,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEpB,MAAM,WAAW,GAAG,IAAA,sBAAY,gCAC9B,kBAAkB,EAAE,CAAC,EACrB,QAAQ,EAAE,WAAW,IAClB,YAAY,KACf,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,EACpE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,YAAY,GAAG,CAAC,GAAG,aAAa,EACrE,UAAU,EAAE,SAAS,EACrB,IAAI,EAAE,WAAW,IACjB,CAAC;QACH,WAAW,CAAC,IAAI,GAAG,aAAa,CAAC;QACjC,WAAW,CAAC,MAAM,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE3B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC/B,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SACjC;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;YAC9B,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SAChC;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;YAClC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;SACjC;QAED,MAAM,eAAe,GAAG,SAAS,CAAC,UAAU,CAAC;QAC7C,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QAExC,SAAS,CAAC,WAAW,CAAC,CAAC,GAAG,eAAe,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEpB,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAErE,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,QAA8C,CAAC,CAAC;YACtG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,UAAgD,CAAC,CAAC;YACxG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,QAA8C,CAAC,CAAC;SACtG;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,QAA8C,CAAC,CAAC;YACvG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,UAAgD,CAAC,CAAC;YACzG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,QAA8C,CAAC,CAAC;SACvG;IACH,CAAC;IAsEO,MAAM;QACZ,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAe,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACxD,CAAC;;AA1NH,sBA2NC;AA9MQ,uBAAiB,GAA6B;IACnD,OAAO,EAAE,qBAAqB;IAC9B,SAAS,EAAE;QACT,IAAI,EAAE,iBAAiB;QACvB,QAAQ,EAAE,EAAE;KACb;CACF,CAAC","file":"pager.js","sourcesContent":["/**\n * @description 翻页器\n */\nimport type { ISymbol, IText, FederatedPointerEvent } from '@visactor/vrender';\n// eslint-disable-next-line no-duplicate-imports\nimport { createGroup, createSymbol, createText, CustomEvent } from '@visactor/vrender';\nimport { merge, normalizePadding, isNumber } from '@visactor/vutils';\nimport { AbstractComponent } from '../core/base';\nimport { measureTextSize } from '../util';\nimport type { PagerAttributes } from './type';\n\nconst DEFAULT_HANDLER_STYLE: PagerAttributes['handler'] = {\n space: 8,\n style: {\n fill: 'rgb(47, 69, 84)',\n cursor: 'pointer',\n size: 15\n },\n state: {\n disable: {\n fill: 'rgb(170, 170, 170)',\n cursor: 'not-allowed'\n },\n hover: {}\n }\n};\n\nexport class Pager extends AbstractComponent<Required<PagerAttributes>> {\n name = 'pager';\n\n private _current = 1;\n getCurrent() {\n return this._current;\n }\n\n private _total!: number;\n preHandler!: ISymbol | null;\n nextHandler!: ISymbol | null;\n text!: IText | null;\n\n static defaultAttributes: Partial<PagerAttributes> = {\n handler: DEFAULT_HANDLER_STYLE,\n textStyle: {\n fill: 'rgb(51, 51, 51)',\n fontSize: 12\n }\n };\n\n constructor(attributes: PagerAttributes) {\n super(merge({}, Pager.defaultAttributes, attributes));\n }\n\n protected render() {\n this._reset();\n const {\n layout = 'horizontal',\n handler = DEFAULT_HANDLER_STYLE,\n total,\n defaultCurrent = 1,\n textStyle,\n padding = 0\n } = this.attribute;\n\n this._current = defaultCurrent;\n const parsedPadding = normalizePadding(padding);\n const isHorizontal = layout === 'horizontal';\n\n const container = createGroup({\n x: 0,\n y: 0\n });\n\n const handlerStyle = handler.style || {};\n const handlerSize = handlerStyle.size || 15;\n const handlerSpace = handler.space ?? 8;\n const handlerState = handler.state || {};\n\n let { preShape, nextShape } = handler;\n if (!preShape) {\n preShape = isHorizontal ? 'triangleLeft' : 'triangleUp';\n }\n if (!nextShape) {\n nextShape = isHorizontal ? 'triangleRight' : 'triangleDown';\n }\n\n const preHandler = createSymbol({\n strokeBoundsBuffer: 0,\n pickMode: 'imprecise',\n ...handlerStyle,\n x: 0,\n y: 0,\n symbolType: preShape,\n size: handlerSize\n });\n preHandler.states = handlerState;\n preHandler.name = 'preHandler';\n this.preHandler = preHandler;\n container.add(preHandler);\n\n // 获取文本的最大长度,如果不固定的话随着文本的变化整体会发生抖动\n const { width: maxTextWidth, height: maxTextHeight } = measureTextSize(`${total}/${total}`, {\n textAlign: 'center',\n textBaseline: 'middle',\n ...textStyle\n });\n\n const handlerSizeX = isNumber(handlerSize) ? handlerSize : handlerSize[0];\n const handlerSizeY = isNumber(handlerSize) ? handlerSize : handlerSize[1];\n\n const text = createText({\n x: isHorizontal ? handlerSizeX / 2 + handlerSpace + maxTextWidth / 2 : 0,\n y: isHorizontal ? 0 : handlerSizeY / 2 + handlerSpace + maxTextHeight / 2,\n text: `${defaultCurrent}/${total}`,\n textAlign: 'center',\n textBaseline: 'middle',\n lineHeight: textStyle?.fontSize,\n ...textStyle\n });\n this.text = text;\n container.add(text);\n\n const nextHandler = createSymbol({\n strokeBoundsBuffer: 0,\n pickMode: 'imprecise',\n ...handlerStyle,\n x: isHorizontal ? handlerSizeX + handlerSpace * 2 + maxTextWidth : 0,\n y: isHorizontal ? 0 : handlerSizeY + handlerSpace * 2 + maxTextHeight,\n symbolType: nextShape,\n size: handlerSize\n });\n nextHandler.name = 'nextHandler';\n nextHandler.states = handlerState;\n this.nextHandler = nextHandler;\n\n container.add(nextHandler);\n\n if (this._total === 1) {\n preHandler.addState('disable');\n nextHandler.addState('disable');\n } else if (this._current === 1) {\n preHandler.addState('disable');\n } else if (this._current === total) {\n nextHandler.addState('disable');\n }\n\n const containerBounds = container.AABBBounds;\n const width = containerBounds.width();\n const height = containerBounds.height();\n\n container.translateTo(0 - containerBounds.x1 + parsedPadding[3], 0 - containerBounds.y1 + parsedPadding[0]);\n this.add(container);\n\n this.attribute.width = width + parsedPadding[1] + parsedPadding[3];\n this.attribute.height = height + parsedPadding[0] + parsedPadding[2];\n\n this._bindEvents();\n }\n\n private _bindEvents(): void {\n if (this.preHandler) {\n this.preHandler.addEventListener('pointerenter', this._onHover as EventListenerOrEventListenerObject);\n this.preHandler.addEventListener('pointerleave', this._onUnHover as EventListenerOrEventListenerObject);\n this.preHandler.addEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n\n if (this.nextHandler) {\n this.nextHandler.addEventListener('pointerenter', this._onHover as EventListenerOrEventListenerObject);\n this.nextHandler.addEventListener('pointerleave', this._onUnHover as EventListenerOrEventListenerObject);\n this.nextHandler.addEventListener('pointerdown', this._onClick as EventListenerOrEventListenerObject);\n }\n }\n\n private _onHover = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as ISymbol;\n if (!target.hasState('disable')) {\n target.addState('hover');\n }\n };\n\n private _onUnHover = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as ISymbol;\n target.removeState('hover');\n };\n\n private _onClick = (e: FederatedPointerEvent) => {\n const target = e.target as unknown as ISymbol;\n if (target.name === 'preHandler') {\n if (this._current === 1) {\n return;\n }\n this._current -= 1;\n if (this._current === 1) {\n target.addState('disable');\n } else {\n target.removeState('disable');\n }\n const changeEvent = new CustomEvent('toPrev', {\n current: this._current,\n total: this._total,\n direction: 'pre'\n });\n // FIXME: 需要在 vrender 的事件系统支持\n // @ts-ignore\n changeEvent.manager = this.stage?.eventSystem.manager;\n this.dispatchEvent(changeEvent);\n }\n\n if (target.name === 'nextHandler') {\n if (this._current === this._total) {\n return;\n }\n this._current += 1;\n\n if (this._current === this._total) {\n target.addState('disable');\n } else {\n target.removeState('disable');\n }\n\n const changeEvent = new CustomEvent('toNext', {\n current: this._current,\n total: this._total,\n direction: 'next'\n });\n // FIXME: 需要在 vrender 的事件系统支持\n // @ts-ignore\n changeEvent.manager = this.stage?.eventSystem.manager;\n this.dispatchEvent(changeEvent);\n }\n\n if (this._current > 1) {\n (this.preHandler as ISymbol).removeState('disable');\n }\n if (this._current < this._total) {\n (this.nextHandler as ISymbol).removeState('disable');\n }\n\n (this.text as IText).setAttribute('text', `${this._current}/${this._total}`);\n };\n\n private _reset() {\n this.removeAllChild();\n this._current = 1;\n this._total = this.attribute.total as number;\n this.preHandler = this.nextHandler = this.text = null;\n }\n}\n"]}
@@ -1,4 +1,7 @@
1
- import { vec2 } from 'gl-matrix';
2
- export { vec2 };
1
+ export type Vector2 = [number, number];
2
+ export declare function scale(vector: Vector2, scale: number): number[];
3
+ export declare function length(vector: Vector2): number;
4
+ export declare function normalize(vector: Vector2): number[];
5
+ export declare function angle(vector1: Vector2, vector2: Vector2): number;
3
6
  export declare function direction(v1: number[], v2: number[]): number;
4
7
  export declare function angleTo(v1: [number, number], v2: [number, number], direct: boolean): number;
@@ -1,24 +1,37 @@
1
1
  "use strict";
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: !0
5
- }), exports.angleTo = exports.direction = exports.vec2 = void 0;
3
+ function scale(vector, scale) {
4
+ return [ vector[0] * scale, vector[1] * scale ];
5
+ }
6
+
7
+ function length(vector) {
8
+ const [x, y] = vector;
9
+ return Math.sqrt(x * x + y * y);
10
+ }
6
11
 
7
- const gl_matrix_1 = require("gl-matrix");
12
+ function normalize(vector) {
13
+ const [x, y] = vector;
14
+ let len = x * x + y * y;
15
+ return len > 0 && (len = 1 / Math.sqrt(len)), [ vector[0] * len, vector[1] * len ];
16
+ }
17
+
18
+ function angle(vector1, vector2) {
19
+ const [x1, y1] = vector1, [x2, y2] = vector2, mag = Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2)), cosine = mag && (x1 * x2 + y1 * y2) / mag;
20
+ return Math.acos(Math.min(Math.max(cosine, -1), 1));
21
+ }
8
22
 
9
23
  function direction(v1, v2) {
10
24
  return v1[0] * v2[1] - v2[0] * v1[1];
11
25
  }
12
26
 
13
27
  function angleTo(v1, v2, direct) {
14
- const ang = gl_matrix_1.vec2.angle(v1, v2), angleLargeThanPI = direction(v1, v2) >= 0;
28
+ const ang = angle(v1, v2), angleLargeThanPI = direction(v1, v2) >= 0;
15
29
  return direct ? angleLargeThanPI ? 2 * Math.PI - ang : ang : angleLargeThanPI ? ang : 2 * Math.PI - ang;
16
30
  }
17
31
 
18
- Object.defineProperty(exports, "vec2", {
19
- enumerable: !0,
20
- get: function() {
21
- return gl_matrix_1.vec2;
22
- }
23
- }), exports.direction = direction, exports.angleTo = angleTo;
32
+ Object.defineProperty(exports, "__esModule", {
33
+ value: !0
34
+ }), exports.angleTo = exports.direction = exports.angle = exports.normalize = exports.length = exports.scale = void 0,
35
+ exports.scale = scale, exports.length = length, exports.normalize = normalize, exports.angle = angle,
36
+ exports.direction = direction, exports.angleTo = angleTo;
24
37
  //# sourceMappingURL=matrix.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["util/matrix.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAExB,qFAFA,gBAAI,OAEA;AAQb,SAAgB,SAAS,CAAC,EAAY,EAAE,EAAY;IAClD,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC;AAFD,8BAEC;AAQD,SAAgB,OAAO,CAAC,EAAoB,EAAE,EAAoB,EAAE,MAAe;IACjF,MAAM,GAAG,GAAG,gBAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/B,MAAM,gBAAgB,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,MAAM,EAAE;QACV,IAAI,gBAAgB,EAAE;YACpB,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;SAC1B;QACD,OAAO,GAAG,CAAC;KACZ;IAED,IAAI,gBAAgB,EAAE;QACpB,OAAO,GAAG,CAAC;KACZ;IACD,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3B,CAAC;AAdD,0BAcC","file":"matrix.js","sourcesContent":["import { vec2 } from 'gl-matrix';\n\nexport { vec2 };\n\n/**\n * 向量 v1 到 向量 v2 夹角的方向\n * @param {Array} v1 向量\n * @param {Array} v2 向量\n * @return {Boolean} >= 0 顺时针 < 0 逆时针\n */\nexport function direction(v1: number[], v2: number[]): number {\n return v1[0] * v2[1] - v2[0] * v1[1];\n}\n\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nexport function angleTo(v1: [number, number], v2: [number, number], direct: boolean): number {\n const ang = vec2.angle(v1, v2);\n const angleLargeThanPI = direction(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n"]}
1
+ {"version":3,"sources":["util/matrix.ts"],"names":[],"mappings":";;;AAKA,SAAgB,KAAK,CAAC,MAAe,EAAE,KAAa;IAClD,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;AAChD,CAAC;AAFD,sBAEC;AAKD,SAAgB,MAAM,CAAC,MAAe;IACpC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AAHD,wBAGC;AAKD,SAAgB,SAAS,CAAC,MAAe;IACvC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;IACtB,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,GAAG,GAAG,CAAC,EAAE;QACX,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC1B;IACD,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC5C,CAAC;AAPD,8BAOC;AAKD,SAAgB,KAAK,CAAC,OAAgB,EAAE,OAAgB;IACtD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC;IAChD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAND,sBAMC;AAQD,SAAgB,SAAS,CAAC,EAAY,EAAE,EAAY;IAClD,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC;AAFD,8BAEC;AAQD,SAAgB,OAAO,CAAC,EAAoB,EAAE,EAAoB,EAAE,MAAe;IACjF,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1B,MAAM,gBAAgB,GAAG,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,MAAM,EAAE;QACV,IAAI,gBAAgB,EAAE;YACpB,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;SAC1B;QACD,OAAO,GAAG,CAAC;KACZ;IAED,IAAI,gBAAgB,EAAE;QACpB,OAAO,GAAG,CAAC;KACZ;IACD,OAAO,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3B,CAAC;AAdD,0BAcC","file":"matrix.js","sourcesContent":["export type Vector2 = [number, number];\n\n/**\n * Scales a vec2 by a scalar number\n */\nexport function scale(vector: Vector2, scale: number) {\n return [vector[0] * scale, vector[1] * scale];\n}\n\n/**\n * Calculates the length of a vec2\n */\nexport function length(vector: Vector2) {\n const [x, y] = vector;\n return Math.sqrt(x * x + y * y);\n}\n\n/**\n * Normalize a vec2\n */\nexport function normalize(vector: Vector2) {\n const [x, y] = vector;\n let len = x * x + y * y;\n if (len > 0) {\n len = 1 / Math.sqrt(len);\n }\n return [vector[0] * len, vector[1] * len];\n}\n\n/**\n * Get the angle between two 2D vectors\n */\nexport function angle(vector1: Vector2, vector2: Vector2) {\n const [x1, y1] = vector1;\n const [x2, y2] = vector2;\n const mag = Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2));\n const cosine = mag && (x1 * x2 + y1 * y2) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n\n/**\n * 向量 v1 到 向量 v2 夹角的方向\n * @param {Array} v1 向量\n * @param {Array} v2 向量\n * @return {Boolean} >= 0 顺时针 < 0 逆时针\n */\nexport function direction(v1: number[], v2: number[]): number {\n return v1[0] * v2[1] - v2[0] * v1[1];\n}\n\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nexport function angleTo(v1: [number, number], v2: [number, number], direct: boolean): number {\n const ang = angle(v1, v2);\n const angleLargeThanPI = direction(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n"]}
package/dist/index.js CHANGED
@@ -436,143 +436,28 @@
436
436
  return '#' + vutils.ColorUtil.rgbToHex(r, g, b);
437
437
  }
438
438
 
439
- /**
440
- * Common utilities
441
- * @module glMatrix
442
- */
443
- var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;
444
- if (!Math.hypot) Math.hypot = function () {
445
- var y = 0,
446
- i = arguments.length;
447
- while (i--) {
448
- y += arguments[i] * arguments[i];
449
- }
450
- return Math.sqrt(y);
451
- };
452
-
453
- /**
454
- * 2 Dimensional Vector
455
- * @module vec2
456
- */
457
-
458
- /**
459
- * Creates a new, empty vec2
460
- *
461
- * @returns {vec2} a new 2D vector
462
- */
463
-
464
- function create() {
465
- var out = new ARRAY_TYPE(2);
466
- if (ARRAY_TYPE != Float32Array) {
467
- out[0] = 0;
468
- out[1] = 0;
469
- }
470
- return out;
439
+ function scale(vector, scale) {
440
+ return [vector[0] * scale, vector[1] * scale];
471
441
  }
472
- /**
473
- * Scales a vec2 by a scalar number
474
- *
475
- * @param {vec2} out the receiving vector
476
- * @param {ReadonlyVec2} a the vector to scale
477
- * @param {Number} b amount to scale the vector by
478
- * @returns {vec2} out
479
- */
480
-
481
- function scale(out, a, b) {
482
- out[0] = a[0] * b;
483
- out[1] = a[1] * b;
484
- return out;
485
- }
486
- /**
487
- * Calculates the length of a vec2
488
- *
489
- * @param {ReadonlyVec2} a vector to calculate length of
490
- * @returns {Number} length of a
491
- */
492
-
493
- function length(a) {
494
- var x = a[0],
495
- y = a[1];
496
- return Math.hypot(x, y);
442
+ function length(vector) {
443
+ const [x, y] = vector;
444
+ return Math.sqrt(x * x + y * y);
497
445
  }
498
- /**
499
- * Normalize a vec2
500
- *
501
- * @param {vec2} out the receiving vector
502
- * @param {ReadonlyVec2} a vector to normalize
503
- * @returns {vec2} out
504
- */
505
-
506
- function normalize(out, a) {
507
- var x = a[0],
508
- y = a[1];
509
- var len = x * x + y * y;
510
- if (len > 0) {
511
- //TODO: evaluate use of glm_invsqrt here?
512
- len = 1 / Math.sqrt(len);
513
- }
514
- out[0] = a[0] * len;
515
- out[1] = a[1] * len;
516
- return out;
446
+ function normalize(vector) {
447
+ const [x, y] = vector;
448
+ let len = x * x + y * y;
449
+ if (len > 0) {
450
+ len = 1 / Math.sqrt(len);
451
+ }
452
+ return [vector[0] * len, vector[1] * len];
517
453
  }
518
- /**
519
- * Get the angle between two 2D vectors
520
- * @param {ReadonlyVec2} a The first operand
521
- * @param {ReadonlyVec2} b The second operand
522
- * @returns {Number} The angle in radians
523
- */
524
-
525
- function angle(a, b) {
526
- var x1 = a[0],
527
- y1 = a[1],
528
- x2 = b[0],
529
- y2 = b[1],
530
- // mag is the product of the magnitudes of a and b
531
- mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),
532
- // mag &&.. short circuits if mag == 0
533
- cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1
534
-
535
- return Math.acos(Math.min(Math.max(cosine, -1), 1));
454
+ function angle(vector1, vector2) {
455
+ const [x1, y1] = vector1;
456
+ const [x2, y2] = vector2;
457
+ const mag = Math.sqrt((x1 * x1 + y1 * y1) * (x2 * x2 + y2 * y2));
458
+ const cosine = mag && (x1 * x2 + y1 * y2) / mag;
459
+ return Math.acos(Math.min(Math.max(cosine, -1), 1));
536
460
  }
537
- /**
538
- * Perform some operation over an array of vec2s.
539
- *
540
- * @param {Array} a the array of vectors to iterate over
541
- * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed
542
- * @param {Number} offset Number of elements to skip at the beginning of the array
543
- * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array
544
- * @param {Function} fn Function to call for each vector in the array
545
- * @param {Object} [arg] additional argument to pass to fn
546
- * @returns {Array} a
547
- * @function
548
- */
549
-
550
- (function () {
551
- var vec = create();
552
- return function (a, stride, offset, count, fn, arg) {
553
- var i, l;
554
- if (!stride) {
555
- stride = 2;
556
- }
557
- if (!offset) {
558
- offset = 0;
559
- }
560
- if (count) {
561
- l = Math.min(count * stride + offset, a.length);
562
- } else {
563
- l = a.length;
564
- }
565
- for (i = offset; i < l; i += stride) {
566
- vec[0] = a[i];
567
- vec[1] = a[i + 1];
568
- fn(vec, vec, arg);
569
- a[i] = vec[0];
570
- a[i + 1] = vec[1];
571
- }
572
- return a;
573
- };
574
- })();
575
-
576
461
  function direction(v1, v2) {
577
462
  return v1[0] * v2[1] - v2[0] * v1[1];
578
463
  }
@@ -1412,15 +1297,12 @@
1412
1297
  if (canPlace(bmpTool, bitmap, text.AABBBounds, clampForce)) {
1413
1298
  if (!checkBounds) {
1414
1299
  bitmap.setRange(boundToRange(bmpTool, text.AABBBounds, true));
1415
- result.push({
1416
- ...text.attribute,
1417
- _insideGraphic: canPlaceInside(text.AABBBounds, baseMark?.AABBBounds)
1418
- });
1300
+ result.push({ ...text.attribute });
1419
1301
  continue;
1420
1302
  }
1421
1303
  if (checkBounds && baseMark?.AABBBounds && canPlaceInside(text.AABBBounds, baseMark?.AABBBounds)) {
1422
1304
  bitmap.setRange(boundToRange(bmpTool, text.AABBBounds, true));
1423
- result.push({ ...text.attribute, _insideGraphic: true, _computedBound: text.AABBBounds });
1305
+ result.push({ ...text.attribute });
1424
1306
  continue;
1425
1307
  }
1426
1308
  }
@@ -1431,19 +1313,12 @@
1431
1313
  result.push({
1432
1314
  ...text.attribute,
1433
1315
  x: hasPlace.x,
1434
- y: hasPlace.y,
1435
- _insideGraphic: canPlaceInside(text.AABBBounds, baseMark?.AABBBounds)
1316
+ y: hasPlace.y
1436
1317
  });
1437
1318
  break;
1438
1319
  }
1439
1320
  }
1440
- !hasPlace &&
1441
- !hideOnHit &&
1442
- result.push({
1443
- ...text.attribute,
1444
- _insideGraphic: canPlaceInside(text.AABBBounds, baseMark?.AABBBounds),
1445
- _computedBound: text.AABBBounds
1446
- });
1321
+ !hasPlace && !hideOnHit && result.push({ ...text.attribute });
1447
1322
  }
1448
1323
  if (vutils.isFunction(this.onAfterLabelOverlap)) {
1449
1324
  this.onAfterLabelOverlap(bitmap);
@@ -1600,12 +1475,7 @@
1600
1475
  if (!label) {
1601
1476
  continue;
1602
1477
  }
1603
- let isInside = label._insideGraphic;
1604
- if (isInside === undefined) {
1605
- const text = vrender.createText(label);
1606
- text.update();
1607
- isInside = canPlaceInside(text.AABBBounds, this._relationMap.get(label._relatedIndex)?.AABBBounds);
1608
- }
1478
+ const isInside = canPlaceInside(vrender.createText(label).AABBBounds, this._relationMap.get(label._relatedIndex)?.AABBBounds);
1609
1479
  if (label.stroke && label.lineWidth > 0) {
1610
1480
  label.fill = labelSmartInvert(label.fill, label.stroke, this.attribute.smartInvert?.textType, this.attribute.smartInvert?.contrastRatiosThreshold, this.attribute.smartInvert?.alternativeColors);
1611
1481
  }
@@ -2540,11 +2410,11 @@
2540
2410
  container.add(axisTitle);
2541
2411
  }
2542
2412
  renderGrid(container) {
2543
- this._renderGridByType('grid', container);
2544
2413
  const { visible } = this.attribute.subGrid || {};
2545
2414
  if (visible) {
2546
2415
  this._renderGridByType('subGrid', container);
2547
2416
  }
2417
+ this._renderGridByType('grid', container);
2548
2418
  }
2549
2419
  getVerticalCoord(point, offset, inside) {
2550
2420
  const vector = this.getVerticalVector(offset, inside, point);
@@ -2788,9 +2658,9 @@
2788
2658
  getVerticalVector(offset, inside = false) {
2789
2659
  const { verticalFactor = 1 } = this.attribute;
2790
2660
  const axisVector = this.getRelativeVector();
2791
- const normalize$1 = normalize([0, 0], axisVector);
2792
- const verticalVector = [normalize$1[1], normalize$1[0] * -1];
2793
- return scale([0, 0], verticalVector, offset * (inside ? 1 : -1) * verticalFactor);
2661
+ const normalizedAxisVector = normalize(axisVector);
2662
+ const verticalVector = [normalizedAxisVector[1], normalizedAxisVector[0] * -1];
2663
+ return scale(verticalVector, offset * (inside ? 1 : -1) * verticalFactor);
2794
2664
  }
2795
2665
  getTitleAttribute() {
2796
2666
  const { position = 'middle', space = 4, textStyle = {}, autoRotate = true, shape, background, state, ...restAttrs } = this.attribute.title;
@@ -3087,8 +2957,7 @@
3087
2957
  const { inside: axisInside = false } = this.attribute;
3088
2958
  const { center } = this.attribute;
3089
2959
  const vector = [point.x - center.x, point.y - center.y];
3090
- scale(vector, vector, ((inside ? -1 : 1) * (axisInside ? -1 : 1) * offset) / length(vector));
3091
- return vector;
2960
+ return scale(vector, ((inside ? -1 : 1) * (axisInside ? -1 : 1) * offset) / length(vector));
3092
2961
  }
3093
2962
  getRelativeVector(point) {
3094
2963
  const { center } = this.attribute;
@@ -4945,6 +4814,7 @@
4945
4814
  }
4946
4815
  const preHandler = vrender.createSymbol({
4947
4816
  strokeBoundsBuffer: 0,
4817
+ pickMode: 'imprecise',
4948
4818
  ...handlerStyle,
4949
4819
  x: 0,
4950
4820
  y: 0,
@@ -4975,6 +4845,7 @@
4975
4845
  container.add(text);
4976
4846
  const nextHandler = vrender.createSymbol({
4977
4847
  strokeBoundsBuffer: 0,
4848
+ pickMode: 'imprecise',
4978
4849
  ...handlerStyle,
4979
4850
  x: isHorizontal ? handlerSizeX + handlerSpace * 2 + maxTextWidth : 0,
4980
4851
  y: isHorizontal ? 0 : handlerSizeY + handlerSpace * 2 + maxTextHeight,
@@ -5358,11 +5229,21 @@
5358
5229
  this._itemMaxWidth = Math.max(itemWidth, this._itemMaxWidth);
5359
5230
  if (isHorizontal) {
5360
5231
  maxPages = maxRow;
5361
- if (vutils.isValid(maxWidth) && maxWidth < startX + itemWidth) {
5362
- doWrap = true;
5363
- startX = 0;
5364
- startY += itemHeight + spaceRow;
5365
- pages += 1;
5232
+ if (vutils.isValid(maxWidth)) {
5233
+ if (itemWidth >= maxWidth) {
5234
+ doWrap = true;
5235
+ if (index > 0) {
5236
+ startX = 0;
5237
+ startY += itemHeight + spaceRow;
5238
+ pages += 1;
5239
+ }
5240
+ }
5241
+ else if (maxWidth < startX + itemWidth) {
5242
+ doWrap = true;
5243
+ startX = 0;
5244
+ startY += itemHeight + spaceRow;
5245
+ pages += 1;
5246
+ }
5366
5247
  }
5367
5248
  if (index > 0) {
5368
5249
  itemGroup.setAttributes({
@@ -5391,10 +5272,11 @@
5391
5272
  }
5392
5273
  itemsContainer.add(itemGroup);
5393
5274
  });
5275
+ let pagerRendered = false;
5394
5276
  if (doWrap && autoPage && pages > maxPages) {
5395
- this._renderPager(isHorizontal);
5277
+ pagerRendered = this._renderPager(isHorizontal);
5396
5278
  }
5397
- else {
5279
+ if (!pagerRendered) {
5398
5280
  itemsContainer.setAttribute('y', this._title ? this._title.AABBBounds.height() + vutils.get(this.attribute, 'title.space', 8) : 0);
5399
5281
  this._innerView.add(itemsContainer);
5400
5282
  }
@@ -5570,6 +5452,10 @@
5570
5452
  this._innerView.add(pagerComp);
5571
5453
  pageHeight = (maxRow - 1) * spaceRow + this._itemHeight * maxRow;
5572
5454
  pageWidth = maxWidth - pagerComp.AABBBounds.width() - pagerSpace;
5455
+ if (pageWidth <= 0) {
5456
+ this._innerView.removeChild(pagerComp);
5457
+ return false;
5458
+ }
5573
5459
  itemsContainer.getChildren().forEach((item, index) => {
5574
5460
  const { width, height } = item.attribute;
5575
5461
  if (pageWidth < startX + width) {
@@ -5601,6 +5487,10 @@
5601
5487
  this._innerView.add(pagerComp);
5602
5488
  pageWidth = this._itemMaxWidth * maxCol + (maxCol - 1) * spaceCol;
5603
5489
  pageHeight = maxHeight - pagerComp.AABBBounds.height() - pagerSpace - renderStartY;
5490
+ if (pageHeight <= 0) {
5491
+ this._innerView.removeChild(pagerComp);
5492
+ return false;
5493
+ }
5604
5494
  itemsContainer.getChildren().forEach((item, index) => {
5605
5495
  const { height } = item.attribute;
5606
5496
  if (pageHeight < startY + height) {
@@ -5660,6 +5550,7 @@
5660
5550
  };
5661
5551
  this._pager.addEventListener('toPrev', onPaging);
5662
5552
  this._pager.addEventListener('toNext', onPaging);
5553
+ return true;
5663
5554
  }
5664
5555
  _onHover = (e) => {
5665
5556
  const target = e.target;
@@ -8733,7 +8624,7 @@
8733
8624
  }
8734
8625
  }
8735
8626
 
8736
- const version = "0.12.0";
8627
+ const version = "0.12.2";
8737
8628
 
8738
8629
  exports.AbstractComponent = AbstractComponent;
8739
8630
  exports.BasePlayer = BasePlayer;